mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-05-24 07:42:35 +02:00
Fixed the issue that clicking the Settings button on the edit status page was invalid
This commit is contained in:
parent
436ac1b2ca
commit
853e84178e
2 changed files with 182 additions and 170 deletions
|
@ -72,11 +72,17 @@ export default {
|
|||
* @returns {void}
|
||||
*/
|
||||
show(group, monitor) {
|
||||
// Check if monitor exists and has required properties
|
||||
if (!monitor || !monitor.id) {
|
||||
console.error("Invalid monitor object", monitor);
|
||||
return;
|
||||
}
|
||||
|
||||
this.monitor = {
|
||||
id: monitor.element.id,
|
||||
name: monitor.element.name,
|
||||
monitor_index: monitor.index,
|
||||
group_index: group.index,
|
||||
id: monitor.id,
|
||||
name: monitor.name,
|
||||
monitor_index: monitor.index || 0,
|
||||
group_index: group.index || 0,
|
||||
isClickAble: this.showLink(monitor),
|
||||
};
|
||||
|
||||
|
@ -103,12 +109,18 @@ export default {
|
|||
* @returns {boolean} Should the link be shown?
|
||||
*/
|
||||
showLink(monitor, ignoreSendUrl = false) {
|
||||
if (!monitor || !monitor.id) {
|
||||
return 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 this.$root.monitorList[monitor.id].type === "http" ||
|
||||
this.$root.monitorList[monitor.id].type === "keyword" ||
|
||||
this.$root.monitorList[monitor.id].type === "json-query";
|
||||
}
|
||||
return monitor.element.sendUrl && monitor.element.url && monitor.element.url !== "https://" && !this.editMode;
|
||||
return monitor.sendUrl && monitor.url && monitor.url !== "https://" && !this.editMode;
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -86,15 +86,15 @@
|
|||
<div class="shadow-box">
|
||||
<!-- Group Title and Search Bar -->
|
||||
<div class="group-header">
|
||||
<h2 class="group-title">
|
||||
<font-awesome-icon v-if="editMode && showGroupDrag" icon="arrows-alt-v" class="action drag me-3" />
|
||||
<font-awesome-icon v-if="editMode" icon="times" class="action remove me-3" @click="removeGroup(group.index)" />
|
||||
<Editable v-model="group.element.name" :contenteditable="editMode" tag="span" data-testid="group-name" />
|
||||
</h2>
|
||||
<h2 class="group-title">
|
||||
<font-awesome-icon v-if="editMode && showGroupDrag" icon="arrows-alt-v" class="action drag me-3" />
|
||||
<font-awesome-icon v-if="editMode" icon="times" class="action remove me-3" @click="removeGroup(group.index)" />
|
||||
<Editable v-model="group.element.name" :contenteditable="editMode" tag="span" data-testid="group-name" />
|
||||
</h2>
|
||||
|
||||
<!-- Group Search Box -->
|
||||
<div v-if="!editMode && group.element && group.element.monitorList && group.element.monitorList.length > 0"
|
||||
class="search-container">
|
||||
class="search-container">
|
||||
<div class="search-input-wrapper">
|
||||
<input
|
||||
type="text"
|
||||
|
@ -117,7 +117,7 @@
|
|||
|
||||
<!-- Group Sort Button Bar -->
|
||||
<div v-if="!editMode && group.element && group.element.monitorList && group.element.monitorList.length > 0"
|
||||
class="sort-bar">
|
||||
class="sort-bar">
|
||||
<div class="sort-controls">
|
||||
<span class="sort-label me-2">
|
||||
{{ $t("Sort By") }}:
|
||||
|
@ -191,70 +191,70 @@
|
|||
<!-- Monitor List -->
|
||||
<div class="monitor-list-container">
|
||||
<div v-if="!group.element || !group.element.monitorList || group.element.monitorList.length === 0" class="text-center no-monitor-msg">
|
||||
{{ $t("No Monitors") }}
|
||||
{{ $t("No Monitors") }}
|
||||
</div>
|
||||
<div v-else-if="getFilteredMonitorList(group.element).length === 0" class="text-center no-monitor-msg">
|
||||
{{ $t("No services found") }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Monitor List -->
|
||||
<Draggable
|
||||
<!-- Monitor List -->
|
||||
<Draggable
|
||||
v-if="group.element && group.element.monitorList && group.element.monitorList.length > 0"
|
||||
v-model="group.element.monitorList"
|
||||
class="monitor-list"
|
||||
group="same-group"
|
||||
:disabled="!editMode"
|
||||
:animation="100"
|
||||
item-key="id"
|
||||
>
|
||||
v-model="group.element.monitorList"
|
||||
class="monitor-list"
|
||||
group="same-group"
|
||||
:disabled="!editMode"
|
||||
:animation="100"
|
||||
item-key="id"
|
||||
>
|
||||
<template #item="{ element: monitor, index: monitorIndex }">
|
||||
<div v-if="shouldShowMonitor(monitor, group.element)" class="item" data-testid="monitor">
|
||||
<div class="row">
|
||||
<div class="col-9 col-md-8 small-padding">
|
||||
<div class="info">
|
||||
<font-awesome-icon v-if="editMode" icon="arrows-alt-v" class="action drag me-3" />
|
||||
<div class="row">
|
||||
<div class="col-9 col-md-8 small-padding">
|
||||
<div class="info">
|
||||
<font-awesome-icon v-if="editMode" icon="arrows-alt-v" class="action drag me-3" />
|
||||
<font-awesome-icon v-if="editMode" icon="times" class="action remove me-3" @click="removeMonitor(group.index, monitorIndex)" />
|
||||
|
||||
<Uptime :monitor="monitor" type="24" :pill="true" />
|
||||
<a
|
||||
v-if="showLink(monitor)"
|
||||
<a
|
||||
v-if="showLink(monitor)"
|
||||
:href="monitor.url"
|
||||
class="item-name"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
data-testid="monitor-name"
|
||||
>
|
||||
class="item-name"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
data-testid="monitor-name"
|
||||
>
|
||||
{{ monitor.name }}
|
||||
</a>
|
||||
</a>
|
||||
<p v-else class="item-name" data-testid="monitor-name"> {{ monitor.name }} </p>
|
||||
|
||||
<span
|
||||
title="Setting"
|
||||
>
|
||||
<span
|
||||
title="Setting"
|
||||
>
|
||||
<font-awesome-icon
|
||||
v-if="editMode"
|
||||
:class="{'link-active': true, 'btn-link': true}"
|
||||
icon="cog" class="action me-3"
|
||||
@click="$refs.monitorSettingDialog.show(group.element, monitor)"
|
||||
@click="$refs.monitorSettingDialog.show(group, monitor)"
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="extra-info">
|
||||
<div v-if="showCertificateExpiry && monitor.certExpiryDaysRemaining">
|
||||
<Tag :item="{name: $t('Cert Exp.'), value: formattedCertExpiryMessage(monitor), color: certExpiryColor(monitor)}" :size="'sm'" />
|
||||
</div>
|
||||
<div v-if="showTags">
|
||||
<div class="extra-info">
|
||||
<div v-if="showCertificateExpiry && monitor.certExpiryDaysRemaining">
|
||||
<Tag :item="{name: $t('Cert Exp.'), value: formattedCertExpiryMessage(monitor), color: certExpiryColor(monitor)}" :size="'sm'" />
|
||||
</div>
|
||||
<div v-if="showTags">
|
||||
<Tag v-for="tag in monitor.tags" :key="tag" :item="tag" :size="'sm'" data-testid="monitor-tag" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div :key="$root.userHeartbeatBar" class="col-3 col-md-4">
|
||||
<HeartbeatBar size="mid" :monitor-id="monitor.id" />
|
||||
</div>
|
||||
</div>
|
||||
<div :key="$root.userHeartbeatBar" class="col-3 col-md-4">
|
||||
<HeartbeatBar size="mid" :monitor-id="monitor.id" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</Draggable>
|
||||
</template>
|
||||
</Draggable>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -326,12 +326,12 @@ export default {
|
|||
},
|
||||
hasPublicGroups() {
|
||||
return this.$root &&
|
||||
this.$root.publicGroupList &&
|
||||
Array.isArray(this.$root.publicGroupList) &&
|
||||
this.$root.publicGroupList.length > 0 &&
|
||||
this.$root.publicGroupList.some(group =>
|
||||
group && group.monitorList && group.monitorList.length > 0
|
||||
);
|
||||
this.$root.publicGroupList &&
|
||||
Array.isArray(this.$root.publicGroupList) &&
|
||||
this.$root.publicGroupList.length > 0 &&
|
||||
this.$root.publicGroupList.some(group =>
|
||||
group && group.monitorList && group.monitorList.length > 0
|
||||
);
|
||||
},
|
||||
filteredMonitorList() {
|
||||
if (!this.searchText || !this.monitorList) {
|
||||
|
@ -391,7 +391,7 @@ export default {
|
|||
},
|
||||
// Watch for changes in uptimeList to re-apply sort
|
||||
'$root.uptimeList': {
|
||||
handler() {
|
||||
handler() {
|
||||
if (this.$root && this.$root.publicGroupList) {
|
||||
this.$root.publicGroupList.forEach(group => {
|
||||
if (group) {
|
||||
|
@ -546,8 +546,8 @@ export default {
|
|||
|
||||
// Search name, URL and description fields
|
||||
return (monitor.name && monitor.name.toLowerCase().includes(keyword)) ||
|
||||
(monitor.url && monitor.url.toLowerCase().includes(keyword)) ||
|
||||
(monitor.description && monitor.description.toLowerCase().includes(keyword));
|
||||
(monitor.url && monitor.url.toLowerCase().includes(keyword)) ||
|
||||
(monitor.description && monitor.description.toLowerCase().includes(keyword));
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue