ntopng/http_src/vue/modal-edit-device-exclusion.vue
2024-12-30 12:37:54 +01:00

119 lines
3.4 KiB
Vue

<!-- (C) 2022 - ntop.org -->
<template>
<modal @showed="showed()" ref="modal_id">
<template v-slot:title>
<template v-if="edit_all == false">
{{ title }}
</template>
<template v-else>
{{ title_edit_all }}
</template>
</template>
<template v-slot:body>
<template v-if="edit_all == false">
<div class="form-group mb-3 row">
<label class="col-form-label col-sm-4">{{ _i18n('edit_check.device_alias') }}</label>
<div class="col-sm-7">
<input type="text" name="custom_name" class="form-control" :placeholder="custom_name_placeholder"
v-model="input_mac_address_name">
</div>
</div>
</template>
<div class="form-group mb-3 row">
<label class="col-form-label col-sm-4">{{ _i18n('edit_check.device_status') }}</label>
<div class="col-sm-7">
<SelectSearch v-model:selected_option="input_device_status" :options="device_status_list">
</SelectSearch>
</div>
</div>
<div class="form-group mb-3 row">
<label class="col-form-label col-sm-4 pt-2">{{ _i18n('edit_check.trigger_device_disconnected_alert') }}</label>
<div class="form-switch col-sm-7 pt-2 ps-3">
<input type="checkbox" class="form-check-input ms-0" v-model="input_trigger_alerts">
</div>
<small class="col-form-label">{{ _i18n('edit_check.trigger_device_disconnected_alert_descr') }}</small>
</div>
</template>
<template v-slot:footer>
<button type="button" @click="edit_" class="btn btn-primary">{{ _i18n('edit') }}</button>
</template>
</modal>
</template>
<script setup>
import { ref, onMounted, computed, watch } from "vue";
import { default as modal } from "./modal.vue";
import { default as SelectSearch } from "./select-search.vue";
const input_mac_address_name = ref("");
const input_device_status = ref("");
const input_trigger_alerts = ref("");
const custom_name_placeholder = ref(i18n('if_stats_config.custom_name'));
const modal_id = ref(null);
const emit = defineEmits(['edit']);
const showed = () => { };
const props = defineProps({
title: String,
title_edit_all: String,
});
const _i18n = (t) => i18n(t);
const device_status_list = ref([
{ id: "allowed", value: "allowed", label: _i18n('edit_check.authorized') },
{ id: "denied", value: "denied", label: _i18n('edit_check.unauthorized') },
])
const edit_all = ref(false);
const show = (row) => {
if (row != null) {
let tmp_device_status = null;
device_status_list.value.forEach((item) => {
if (item.id == row.status) {
tmp_device_status = item;
}
});
input_device_status.value = tmp_device_status;
input_mac_address_name.value = row.mac_address.mac;
input_trigger_alerts.value = row.trigger_alert || false;
edit_all.value = false;
} else {
input_device_status.value = device_status_list.value[0];
edit_all.value = true;
}
modal_id.value.show();
};
const edit_ = () => {
if (edit_all.value == false)
emit('edit', { mac_alias: input_mac_address_name.value, mac_status: input_device_status.value.value, trigger_alerts: input_trigger_alerts.value });
else
emit('edit', { mac_status: input_device_status.value.value, trigger_alerts: input_trigger_alerts.value, mac_alias: 'all', });
close();
};
const close = () => {
modal_id.value.close();
};
defineExpose({ show, close });
onMounted(() => {
});
</script>
<style scoped></style>