From b0476cfb5b4f5da694e6c6056f2cc37e0246d73e Mon Sep 17 00:00:00 2001 From: Matthew Nickson Date: Thu, 2 Jun 2022 13:46:44 +0100 Subject: [PATCH] Added JSDoc for src/pages/* Signed-off-by: Matthew Nickson --- src/pages/AddStatusPage.vue | 1 + src/pages/Details.vue | 15 +++++++++++++ src/pages/EditMonitor.vue | 23 ++++++++++++++++---- src/pages/ManageStatusPage.vue | 5 +++++ src/pages/NotFound.vue | 1 + src/pages/Settings.vue | 15 +++++++++++-- src/pages/Setup.vue | 4 ++++ src/pages/StatusPage.vue | 39 ++++++++++++++++++++++++++++++---- 8 files changed, 93 insertions(+), 10 deletions(-) diff --git a/src/pages/AddStatusPage.vue b/src/pages/AddStatusPage.vue index e0200177e..230894ff4 100644 --- a/src/pages/AddStatusPage.vue +++ b/src/pages/AddStatusPage.vue @@ -51,6 +51,7 @@ export default { }; }, methods: { + /** Submit form data to add new status page */ async submit() { this.processing = true; diff --git a/src/pages/Details.vue b/src/pages/Details.vue index d40561fe0..f5728d661 100644 --- a/src/pages/Details.vue +++ b/src/pages/Details.vue @@ -289,39 +289,47 @@ export default { }, methods: { + /** Request a test notification be sent for this monitor */ testNotification() { this.$root.getSocket().emit("testNotification", this.monitor.id); toast.success("Test notification is requested."); }, + /** Show dialog to confirm pause */ pauseDialog() { this.$refs.confirmPause.show(); }, + /** Resume this monitor */ resumeMonitor() { this.$root.getSocket().emit("resumeMonitor", this.monitor.id, (res) => { this.$root.toastRes(res); }); }, + /** Request that this monitor is paused */ pauseMonitor() { this.$root.getSocket().emit("pauseMonitor", this.monitor.id, (res) => { this.$root.toastRes(res); }); }, + /** Show dialog to confirm deletion */ deleteDialog() { this.$refs.confirmDelete.show(); }, + /** Show dialog to confirm clearing events */ clearEventsDialog() { this.$refs.confirmClearEvents.show(); }, + /** Show dialog to confirm clearing heartbeats */ clearHeartbeatsDialog() { this.$refs.confirmClearHeartbeats.show(); }, + /** Request that this monitor is deleted */ deleteMonitor() { this.$root.deleteMonitor(this.monitor.id, (res) => { if (res.ok) { @@ -333,6 +341,7 @@ export default { }); }, + /** Request that this monitors events are cleared */ clearEvents() { this.$root.clearEvents(this.monitor.id, (res) => { if (! res.ok) { @@ -341,6 +350,7 @@ export default { }); }, + /** Request that this monitors heartbeats are cleared */ clearHeartbeats() { this.$root.clearHeartbeats(this.monitor.id, (res) => { if (! res.ok) { @@ -349,6 +359,11 @@ export default { }); }, + /** + * Return the correct title for the ping stat + * @param {boolean} [average=false] Is the statistic an average? + * @returns {string} Title formated dependant on monitor type + */ pingTitle(average = false) { let translationPrefix = ""; if (average) { diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 1cb3684be..0b196ae25 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -522,6 +522,7 @@ export default { this.dnsresolvetypeOptions = dnsresolvetypeOptions; }, methods: { + /** Initialize the edit monitor form */ init() { if (this.isAdd) { @@ -578,6 +579,10 @@ export default { }, + /** + * Validate form input + * @returns {boolean} Is the form input valid? + */ isInputValid() { if (this.monitor.body) { try { @@ -598,6 +603,10 @@ export default { return true; }, + /** + * Submit the form data for processing + * @returns {void} + */ async submit() { this.processing = true; @@ -642,14 +651,20 @@ export default { } }, - // Added a Notification Event - // Enable it if the notification is added in EditMonitor.vue + /** + * Added a Notification Event + * Enable it if the notification is added in EditMonitor.vue + * @param {number} id ID of notification to add + */ addedNotification(id) { this.monitor.notificationIDList[id] = true; }, - // Added a Proxy Event - // Enable it if the proxy is added in EditMonitor.vue + /** + * Added a Proxy Event + * Enable it if the proxy is added in EditMonitor.vue + * @param {number} id ID of proxy to add + */ addedProxy(id) { this.monitor.proxyId = id; }, diff --git a/src/pages/ManageStatusPage.vue b/src/pages/ManageStatusPage.vue index c3360375c..275fd4900 100644 --- a/src/pages/ManageStatusPage.vue +++ b/src/pages/ManageStatusPage.vue @@ -51,6 +51,11 @@ export default { }, methods: { + /** + * Get the correct URL for the icon + * @param {string} icon Path for icon + * @returns {string} Correctly formatted path including port numbers + */ icon(icon) { if (icon === "/icon.svg") { return icon; diff --git a/src/pages/NotFound.vue b/src/pages/NotFound.vue index 410c16a81..6fb7e2a77 100644 --- a/src/pages/NotFound.vue +++ b/src/pages/NotFound.vue @@ -44,6 +44,7 @@ export default { }, methods: { + /** Go back 1 in browser history */ goBack() { history.back(); } diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 11d3a1be3..c118226c9 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -118,13 +118,17 @@ export default { methods: { - // For desktop only, mobile do nothing + /** + * Load the general settings page + * For desktop only, mobile do nothing + */ loadGeneralPage() { if (!this.currentPage && !this.$root.isMobile) { this.$router.push("/settings/general"); } }, + /** Load settings from server */ loadSettings() { this.$root.getSocket().emit("getSettings", (res) => { this.settings = res.data; @@ -149,9 +153,16 @@ export default { }); }, + /** + * Callback for saving settings + * @callback saveSettingsCB + * @param {Object} res Result of operation + */ + /** * Save Settings - * @param currentPassword (Optional) Only need for disableAuth to true + * @param {saveSettingsCB} [callback] + * @param {string} [currentPassword] Only need for disableAuth to true */ saveSettings(callback, currentPassword) { this.$root.getSocket().emit("setSettings", this.settings, currentPassword, (res) => { diff --git a/src/pages/Setup.vue b/src/pages/Setup.vue index ab5952167..08347b8e1 100644 --- a/src/pages/Setup.vue +++ b/src/pages/Setup.vue @@ -71,6 +71,10 @@ export default { }); }, methods: { + /** + * Submit form data for processing + * @returns {void} + */ submit() { this.processing = true; diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index fbcbf9e8e..1d6481417 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -332,6 +332,7 @@ export default { }, props: { + /** Override for the status page slug */ overrideSlug: { type: String, required: false, @@ -582,10 +583,16 @@ export default { } }, + /** + * Provide syntax highlighting for CSS + * @param {string} code Text to highlight + * @returns {string} + */ highlighter(code) { return highlight(code, languages.css); }, + /** Update the heartbeat list and update favicon if neccessary */ updateHeartbeatList() { // If editMode, it will use the data from websocket. if (! this.editMode) { @@ -614,6 +621,7 @@ export default { } }, + /** Enable editing mode */ edit() { if (this.hasToken) { this.$root.initSocketIO(true); @@ -622,6 +630,7 @@ export default { } }, + /** Save the status page */ save() { let startTime = new Date(); this.config.slug = this.config.slug.trim().toLowerCase(); @@ -649,10 +658,12 @@ export default { }); }, + /** Show dialog confirming deletion */ deleteDialog() { this.$refs.confirmDelete.show(); }, + /** Request deletion of this status page */ deleteStatusPage() { this.$root.getSocket().emit("deleteStatusPage", this.slug, (res) => { if (res.ok) { @@ -664,10 +675,16 @@ export default { }); }, + /** + * Returns label for a specifed monitor + * @param {Object} monitor Object representing monitor + * @returns {string} + */ monitorSelectorLabel(monitor) { return `${monitor.name}`; }, + /** Add a group to the status page */ addGroup() { let groupName = this.$t("Untitled Group"); @@ -681,27 +698,32 @@ export default { }); }, + /** Add a domain to the status page */ addDomainField() { this.config.domainNameList.push(""); }, + /** Discard changes to status page */ discard() { location.href = "/status/" + this.slug; }, /** - * Crop Success + * Set URL of new image after successful crop operation + * @param {string} imgDataUrl URL of image in data:// format */ cropSuccess(imgDataUrl) { this.imgDataUrl = imgDataUrl; }, + /** Show image crop dialog if in edit mode */ showImageCropUploadMethod() { if (this.editMode) { this.showImageCropUpload = true; } }, + /** Create an incident for this status page */ createIncident() { this.enableEditIncidentMode = true; @@ -716,6 +738,7 @@ export default { }; }, + /** Post the incident to the status page */ postIncident() { if (this.incident.title === "" || this.incident.content === "") { toast.error(this.$t("Please input title and content")); @@ -735,14 +758,13 @@ export default { }, - /** - * Click Edit Button - */ + /** Click Edit Button */ editIncident() { this.enableEditIncidentMode = true; this.previousIncident = Object.assign({}, this.incident); }, + /** Cancel creation or editing of incident */ cancelIncident() { this.enableEditIncidentMode = false; @@ -752,16 +774,25 @@ export default { } }, + /** Unpin the incident */ unpinIncident() { this.$root.getSocket().emit("unpinIncident", this.slug, () => { this.incident = null; }); }, + /** + * Get the relative time difference of a date from now + * @returns {string} + */ dateFromNow(date) { return dayjs.utc(date).fromNow(); }, + /** + * Remove a domain from the status page + * @param {number} index Index of domain to remove + */ removeDomain(index) { this.config.domainNameList.splice(index, 1); },