mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-01-04 02:17:29 -08:00
6bece8796e
* ✨ feat: json-query monitor added Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> * 🐛 fix: import warning error Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> * 🐛 fix: br tag and remove comment Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> * 🐛 fix: supporting compare string with other types Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> * 🐛 fix: switch to a better lib for json query Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> * 🐛 fix: better description on json query and using `v-html` in jsonQueryDescription element to fix `a` tags Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> * 🐛 fix: result variable in error message Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> * 🐛 fix: typos in json query description Co-authored-by: Frank Elsinga <frank@elsinga.de> * 📝 docs: `HTTP(s) Json Query` added to monitor list in `README.md` Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> * 🐛 fix: needed white space in `README.md` Co-authored-by: Frank Elsinga <frank@elsinga.de> * Nostr dm notifications (#3051) * Add nostr DM notification provider * require crypto for node 18 compatibility * remove whitespace Co-authored-by: Frank Elsinga <frank@elsinga.de> * move closer to where it is used * simplify success or failure logic * don't clobber the non-alert msg * Update server/notification-providers/nostr.js Co-authored-by: Frank Elsinga <frank@elsinga.de> * polyfills required for node <= 18 * resolve linter warnings * missing comma --------- Co-authored-by: Frank Elsinga <frank@elsinga.de> * Drop nostr * Rebuild package-lock.json * Lint --------- Signed-off-by: Muhammed Hussein Karimi <info@karimi.dev> Co-authored-by: Frank Elsinga <frank@elsinga.de> Co-authored-by: zappityzap <128872140+zappityzap@users.noreply.github.com> Co-authored-by: Louis Lam <louislam@users.noreply.github.com>
124 lines
4.4 KiB
Vue
124 lines
4.4 KiB
Vue
<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
|
|
*/
|
|
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
|
|
*/
|
|
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=false] Should the presence of the sendUrl
|
|
* property be ignored. This will only work in edit mode.
|
|
* @returns {boolean}
|
|
*/
|
|
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>
|