summaryrefslogtreecommitdiffstats
path: root/src/components/MonitorSettingDialog.vue
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/MonitorSettingDialog.vue')
-rw-r--r--src/components/MonitorSettingDialog.vue125
1 files changed, 125 insertions, 0 deletions
diff --git a/src/components/MonitorSettingDialog.vue b/src/components/MonitorSettingDialog.vue
new file mode 100644
index 0000000..e6b2cd1
--- /dev/null
+++ b/src/components/MonitorSettingDialog.vue
@@ -0,0 +1,125 @@
+<template>
+ <div ref="MonitorSettingDialog" class="modal fade" tabindex="-1">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title">
+ {{ $t("Monitor Setting", [monitor.name]) }}
+ </h5>
+ <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" />
+ </div>
+ <div class="modal-body">
+ <div class="my-3 form-check">
+ <input id="show-clickable-link" v-model="monitor.isClickAble" class="form-check-input" type="checkbox" @click="toggleLink(monitor.group_index, monitor.monitor_index)" />
+ <label class="form-check-label" for="show-clickable-link">
+ {{ $t("Show Clickable Link") }}
+ </label>
+ <div class="form-text">
+ {{ $t("Show Clickable Link Description") }}
+ </div>
+ </div>
+
+ <button
+ class="btn btn-primary btn-add-group me-2"
+ @click="$refs.badgeGeneratorDialog.show(monitor.id, monitor.name)"
+ >
+ <font-awesome-icon icon="certificate" />
+ {{ $t("Open Badge Generator") }}
+ </button>
+ </div>
+
+ <div class="modal-footer">
+ <button type="submit" class="btn btn-danger" data-bs-dismiss="modal">
+ {{ $t("Close") }}
+ </button>
+ </div>
+ </div>
+ </div>
+ </div>
+ <BadgeGeneratorDialog ref="badgeGeneratorDialog" />
+</template>
+
+<script lang="ts">
+import { Modal } from "bootstrap";
+import BadgeGeneratorDialog from "./BadgeGeneratorDialog.vue";
+
+export default {
+ components: {
+ BadgeGeneratorDialog
+ },
+ props: {},
+ emits: [],
+ data() {
+ return {
+ monitor: {
+ id: null,
+ name: null,
+ },
+ };
+ },
+
+ computed: {},
+
+ mounted() {
+ this.MonitorSettingDialog = new Modal(this.$refs.MonitorSettingDialog);
+ },
+
+ methods: {
+ /**
+ * Setting monitor
+ * @param {object} group Data of monitor
+ * @param {object} monitor Data of monitor
+ * @returns {void}
+ */
+ show(group, monitor) {
+ this.monitor = {
+ id: monitor.element.id,
+ name: monitor.element.name,
+ monitor_index: monitor.index,
+ group_index: group.index,
+ isClickAble: this.showLink(monitor),
+ };
+
+ this.MonitorSettingDialog.show();
+ },
+
+ /**
+ * Toggle the value of sendUrl
+ * @param {number} groupIndex Index of group monitor is member of
+ * @param {number} index Index of monitor within group
+ * @returns {void}
+ */
+ toggleLink(groupIndex, index) {
+ this.$root.publicGroupList[groupIndex].monitorList[index].sendUrl = !this.$root.publicGroupList[groupIndex].monitorList[index].sendUrl;
+ },
+
+ /**
+ * Should a link to the monitor be shown?
+ * Attempts to guess if a link should be shown based upon if
+ * sendUrl is set and if the URL is default or not.
+ * @param {object} monitor Monitor to check
+ * @param {boolean} ignoreSendUrl Should the presence of the sendUrl
+ * property be ignored. This will only work in edit mode.
+ * @returns {boolean} Should the link be shown?
+ */
+ showLink(monitor, ignoreSendUrl = false) {
+ // We must check if there are any elements in monitorList to
+ // prevent undefined errors if it hasn't been loaded yet
+ if (this.$parent.editMode && ignoreSendUrl && Object.keys(this.$root.monitorList).length) {
+ return this.$root.monitorList[monitor.element.id].type === "http" || this.$root.monitorList[monitor.element.id].type === "keyword" || this.$root.monitorList[monitor.element.id].type === "json-query";
+ }
+ return monitor.element.sendUrl && monitor.element.url && monitor.element.url !== "https://" && !this.editMode;
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+@import "../assets/vars.scss";
+
+.dark {
+ .modal-dialog .form-text, .modal-dialog p {
+ color: $dark-font-color;
+ }
+}
+</style>