From 532ad3044cb3e0b7e7771863c2d871f45b1e22b5 Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Thu, 2 Sep 2021 21:55:25 +0800 Subject: [PATCH 01/18] Add space to pushbullet and lunasea notifications Start changes regarding standardization of notification messages --- server/notification.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/notification.js b/server/notification.js index 472012af..9417e733 100644 --- a/server/notification.js +++ b/server/notification.js @@ -491,7 +491,7 @@ class Notification { if (heartbeatJSON["status"] == 0) { let downdata = { - "title": "UptimeKuma Alert:" + monitorJSON["name"], + "title": "UptimeKuma Alert: " + monitorJSON["name"], "body": "[🔴 Down]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], } await axios.post(lunaseadevice, downdata) @@ -500,7 +500,7 @@ class Notification { if (heartbeatJSON["status"] == 1) { let updata = { - "title": "UptimeKuma Alert:" + monitorJSON["name"], + "title": "UptimeKuma Alert: " + monitorJSON["name"], "body": "[✅ Up]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], } await axios.post(lunaseadevice, updata) @@ -530,14 +530,14 @@ class Notification { } else if (heartbeatJSON["status"] == 0) { let downdata = { "type": "note", - "title": "UptimeKuma Alert:" + monitorJSON["name"], + "title": "UptimeKuma Alert: " + monitorJSON["name"], "body": "[🔴 Down]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], } await axios.post(pushbulletUrl, downdata, config) } else if (heartbeatJSON["status"] == 1) { let updata = { "type": "note", - "title": "UptimeKuma Alert:" + monitorJSON["name"], + "title": "UptimeKuma Alert: " + monitorJSON["name"], "body": "[✅ Up]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], } await axios.post(pushbulletUrl, updata, config) From dca5c59982f35a2dc29b1e61f25da198f28cfb30 Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Sat, 4 Sep 2021 18:24:43 +0800 Subject: [PATCH 02/18] Update lunasea body content Co-authored-by: Adam Stachowicz --- server/notification.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification.js b/server/notification.js index 9417e733..fb132ced 100644 --- a/server/notification.js +++ b/server/notification.js @@ -492,7 +492,7 @@ class Notification { if (heartbeatJSON["status"] == 0) { let downdata = { "title": "UptimeKuma Alert: " + monitorJSON["name"], - "body": "[🔴 Down]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], + "body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], } await axios.post(lunaseadevice, downdata) return okMsg; From 3bf380c684a902b8c5f5d1f6a76536fa0ca5c98d Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Sat, 4 Sep 2021 18:26:10 +0800 Subject: [PATCH 03/18] Update lunasea "up" body content Co-authored-by: Adam Stachowicz --- server/notification.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification.js b/server/notification.js index fb132ced..274f99cb 100644 --- a/server/notification.js +++ b/server/notification.js @@ -501,7 +501,7 @@ class Notification { if (heartbeatJSON["status"] == 1) { let updata = { "title": "UptimeKuma Alert: " + monitorJSON["name"], - "body": "[✅ Up]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], + "body": "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], } await axios.post(lunaseadevice, updata) return okMsg; From d346afd33bb2e349c4f8f08fb3b6d201bab208e2 Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Sat, 4 Sep 2021 18:26:38 +0800 Subject: [PATCH 04/18] Update pushbullet up body Co-authored-by: Adam Stachowicz --- server/notification.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification.js b/server/notification.js index 274f99cb..fecc639c 100644 --- a/server/notification.js +++ b/server/notification.js @@ -538,7 +538,7 @@ class Notification { let updata = { "type": "note", "title": "UptimeKuma Alert: " + monitorJSON["name"], - "body": "[✅ Up]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], + "body": "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], } await axios.post(pushbulletUrl, updata, config) } From 9c32adfb55bb629bf32b665afb1bece1c9e36da1 Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Sat, 4 Sep 2021 18:26:44 +0800 Subject: [PATCH 05/18] Update pushbullet down body Co-authored-by: Adam Stachowicz --- server/notification.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification.js b/server/notification.js index fecc639c..b9eba5a0 100644 --- a/server/notification.js +++ b/server/notification.js @@ -531,7 +531,7 @@ class Notification { let downdata = { "type": "note", "title": "UptimeKuma Alert: " + monitorJSON["name"], - "body": "[🔴 Down]" + heartbeatJSON["msg"] + "\nTime (UTC):" + heartbeatJSON["time"], + "body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], } await axios.post(pushbulletUrl, downdata, config) } else if (heartbeatJSON["status"] == 1) { From 6ae279c7f387ffe79a9341eaa9c11e9257d2989f Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Sat, 4 Sep 2021 11:06:06 +0800 Subject: [PATCH 06/18] Move title generation to notification class --- server/model/monitor.js | 11 +---------- server/notification.js | 14 +++++++++++++- server/server.js | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 19f21d92..126d59b1 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -270,18 +270,9 @@ class Monitor extends BeanModel { this.id, ]) - let text; - if (bean.status === UP) { - text = "✅ Up" - } else { - text = "🔴 Down" - } - - let msg = `[${this.name}] [${text}] ${bean.msg}`; - for (let notification of notificationList) { try { - await Notification.send(JSON.parse(notification.config), msg, await this.toJSON(), bean.toJSON()) + await Notification.send(JSON.parse(notification.config), this.name, await this.toJSON(), bean.toJSON()) } catch (e) { console.error("Cannot send notification to " + notification.name); console.log(e); diff --git a/server/notification.js b/server/notification.js index b9eba5a0..42c4627d 100644 --- a/server/notification.js +++ b/server/notification.js @@ -15,9 +15,21 @@ class Notification { * @returns {Promise} Successful msg * Throw Error with fail msg */ - static async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + static async send(notification, monitorName = null, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully. "; + let msg = `[${notification.name}] Testing`; + // heartbeatJSON is only defined if we're not testing + if(heartbeatJSON) { + let text; + if (heartbeatJSON["status"] === 1) { + text = "✅ Up" + } else { + text = "🔴 Down" + } + msg = `[${monitorName}] [${text}] ${heartbeatJSON["msg"]}`; + } + if (notification.type === "telegram") { try { await axios.get(`https://api.telegram.org/bot${notification.telegramBotToken}/sendMessage`, { diff --git a/server/server.js b/server/server.js index 39191de7..8f4516dc 100644 --- a/server/server.js +++ b/server/server.js @@ -552,7 +552,7 @@ let indexHTML = fs.readFileSync("./dist/index.html").toString(); try { checkLogin(socket) - let msg = await Notification.send(notification, notification.name + " Testing") + let msg = await Notification.send(notification) callback({ ok: true, From e9cd9be03abc36f0d6b03df38fcc726a7acfa057 Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Sat, 4 Sep 2021 11:09:34 +0800 Subject: [PATCH 07/18] Use constants for UP/DOWN through notifications class --- server/notification.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/server/notification.js b/server/notification.js index 42c4627d..520d78dd 100644 --- a/server/notification.js +++ b/server/notification.js @@ -4,6 +4,8 @@ const FormData = require("form-data"); const nodemailer = require("nodemailer"); const child_process = require("child_process"); +const { UP, DOWN } = require("../src/util"); + class Notification { /** @@ -22,7 +24,7 @@ class Notification { // heartbeatJSON is only defined if we're not testing if(heartbeatJSON) { let text; - if (heartbeatJSON["status"] === 1) { + if (heartbeatJSON["status"] === UP) { text = "✅ Up" } else { text = "🔴 Down" @@ -121,7 +123,7 @@ class Notification { } // If heartbeatJSON is not null, we go into the normal alerting loop. - if (heartbeatJSON["status"] == 0) { + if (heartbeatJSON["status"] == DOWN) { let discorddowndata = { username: discordDisplayName, embeds: [{ @@ -151,7 +153,7 @@ class Notification { await axios.post(notification.discordWebhookUrl, discorddowndata) return okMsg; - } else if (heartbeatJSON["status"] == 1) { + } else if (heartbeatJSON["status"] == UP) { let discordupdata = { username: discordDisplayName, embeds: [{ @@ -355,7 +357,7 @@ class Notification { const mattermostIconEmoji = notification.mattermosticonemo; const mattermostIconUrl = notification.mattermosticonurl; - if (heartbeatJSON["status"] == 0) { + if (heartbeatJSON["status"] == DOWN) { let mattermostdowndata = { username: mattermostUserName, text: "Uptime Kuma Alert", @@ -399,7 +401,7 @@ class Notification { mattermostdowndata ); return okMsg; - } else if (heartbeatJSON["status"] == 1) { + } else if (heartbeatJSON["status"] == UP) { let mattermostupdata = { username: mattermostUserName, text: "Uptime Kuma Alert", @@ -501,7 +503,7 @@ class Notification { return okMsg; } - if (heartbeatJSON["status"] == 0) { + if (heartbeatJSON["status"] == DOWN) { let downdata = { "title": "UptimeKuma Alert: " + monitorJSON["name"], "body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], @@ -510,7 +512,7 @@ class Notification { return okMsg; } - if (heartbeatJSON["status"] == 1) { + if (heartbeatJSON["status"] == UP) { let updata = { "title": "UptimeKuma Alert: " + monitorJSON["name"], "body": "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], @@ -539,14 +541,14 @@ class Notification { "body": "Testing Successful.", } await axios.post(pushbulletUrl, testdata, config) - } else if (heartbeatJSON["status"] == 0) { + } else if (heartbeatJSON["status"] == DOWN) { let downdata = { "type": "note", "title": "UptimeKuma Alert: " + monitorJSON["name"], "body": "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"], } await axios.post(pushbulletUrl, downdata, config) - } else if (heartbeatJSON["status"] == 1) { + } else if (heartbeatJSON["status"] == UP) { let updata = { "type": "note", "title": "UptimeKuma Alert: " + monitorJSON["name"], @@ -578,7 +580,7 @@ class Notification { ] } await axios.post(lineAPIUrl, testMessage, config) - } else if (heartbeatJSON["status"] == 0) { + } else if (heartbeatJSON["status"] == DOWN) { let downMessage = { "to": notification.lineUserID, "messages": [ @@ -589,7 +591,7 @@ class Notification { ] } await axios.post(lineAPIUrl, downMessage, config) - } else if (heartbeatJSON["status"] == 1) { + } else if (heartbeatJSON["status"] == UP) { let upMessage = { "to": notification.lineUserID, "messages": [ From b0acda52f9b6b47aedb3ce1b05ea78d73c6b7be0 Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Sat, 4 Sep 2021 11:27:18 +0800 Subject: [PATCH 08/18] Add time to smtp body content --- server/notification.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/server/notification.js b/server/notification.js index 520d78dd..beb1ff9d 100644 --- a/server/notification.js +++ b/server/notification.js @@ -94,7 +94,7 @@ class Notification { } } else if (notification.type === "smtp") { - return await Notification.smtp(notification, msg) + return await Notification.smtp(notification, msg, heartbeatJSON) } else if (notification.type === "discord") { try { @@ -648,7 +648,7 @@ class Notification { await R.trash(bean) } - static async smtp(notification, msg) { + static async smtp(notification, msg, heartbeatJSON = null) { const config = { host: notification.smtpHost, @@ -666,12 +666,17 @@ class Notification { let transporter = nodemailer.createTransport(config); + let bodyTextContent = msg; + if(heartbeatJSON) { + bodyTextContent = `${msg}\nTime (UTC): ${heartbeatJSON["time"]}`; + } + // send mail with defined transport object await transporter.sendMail({ from: `"Uptime Kuma" <${notification.smtpFrom}>`, to: notification.smtpTo, subject: msg, - text: msg, + text: bodyTextContent, }); return "Sent Successfully."; From 41d32bb9dde554794613df002696841d6dceab1f Mon Sep 17 00:00:00 2001 From: Domenic Horner Date: Sat, 4 Sep 2021 20:08:18 +0800 Subject: [PATCH 09/18] Undo parm changes --- server/model/monitor.js | 11 ++++++++++- server/notification.js | 14 +------------- server/server.js | 2 +- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 126d59b1..19f21d92 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -270,9 +270,18 @@ class Monitor extends BeanModel { this.id, ]) + let text; + if (bean.status === UP) { + text = "✅ Up" + } else { + text = "🔴 Down" + } + + let msg = `[${this.name}] [${text}] ${bean.msg}`; + for (let notification of notificationList) { try { - await Notification.send(JSON.parse(notification.config), this.name, await this.toJSON(), bean.toJSON()) + await Notification.send(JSON.parse(notification.config), msg, await this.toJSON(), bean.toJSON()) } catch (e) { console.error("Cannot send notification to " + notification.name); console.log(e); diff --git a/server/notification.js b/server/notification.js index beb1ff9d..f78401d9 100644 --- a/server/notification.js +++ b/server/notification.js @@ -17,21 +17,9 @@ class Notification { * @returns {Promise} Successful msg * Throw Error with fail msg */ - static async send(notification, monitorName = null, monitorJSON = null, heartbeatJSON = null) { + static async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully. "; - let msg = `[${notification.name}] Testing`; - // heartbeatJSON is only defined if we're not testing - if(heartbeatJSON) { - let text; - if (heartbeatJSON["status"] === UP) { - text = "✅ Up" - } else { - text = "🔴 Down" - } - msg = `[${monitorName}] [${text}] ${heartbeatJSON["msg"]}`; - } - if (notification.type === "telegram") { try { await axios.get(`https://api.telegram.org/bot${notification.telegramBotToken}/sendMessage`, { diff --git a/server/server.js b/server/server.js index 8f4516dc..39191de7 100644 --- a/server/server.js +++ b/server/server.js @@ -552,7 +552,7 @@ let indexHTML = fs.readFileSync("./dist/index.html").toString(); try { checkLogin(socket) - let msg = await Notification.send(notification) + let msg = await Notification.send(notification, notification.name + " Testing") callback({ ok: true, From 2a34e41d8c47ec2739cae0590ee891747a102b22 Mon Sep 17 00:00:00 2001 From: Levi Date: Sat, 4 Sep 2021 15:59:49 +0200 Subject: [PATCH 10/18] Improved Swedish translation --- src/languages/sv-SE.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index 50296889..751a4063 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -1,14 +1,14 @@ export default { - languageName: "Swedish", + languageName: "Svenska", checkEverySecond: "Uppdatera var {0} sekund.", - "Avg.": "Genomsnitt ", + "Avg.": "Genomsnittligt ", retriesDescription: "Max antal försök innan tjänsten markeras som nere och en notis skickas", ignoreTLSError: "Ignorera TLS/SSL-fel för webbsidor med HTTPS", upsideDownModeDescription: "Vänd upp och ner på statusen. Om tjänsten är nåbar visas den som NERE.", maxRedirectDescription: "Max antal omdirigeringar att följa. Välj 0 för att avaktivera omdirigeringar.", acceptedStatusCodesDescription: "Välj statuskoder som räknas som lyckade.", passwordNotMatchMsg: "Det bekräftade lösenordet stämmer ej överens.", - notificationDescription: "Vänligen lägg till en notistjänst till övervakaren.", + notificationDescription: "Vänligen lägg till en notistjänst till dina övervakare.", keywordDescription: "Sök efter nyckelord i ren HTML eller JSON-svar. Sökningen är skiftkänslig.", pauseDashboardHome: "Pausa", deleteMonitorMsg: "Är du säker på att du vill ta bort den här övervakningen?", @@ -36,7 +36,7 @@ export default { Pause: "Paus", Name: "Namn", Status: "Status", - DateTime: "DatumTid", + DateTime: "Datum & Tid", Message: "Meddelande", "No important events": "Inga viktiga händelser", Resume: "Återuppta", @@ -44,17 +44,17 @@ export default { Delete: "Ta bort", Current: "Nuvarande", Uptime: "Drifttid", - "Cert Exp.": "Certifikatsutgång", + "Cert Exp.": "Certifikat utgår", days: "dagar", day: "dag", - "-day": "-dag", + "-day": " dagar", hour: "timme", - "-hour": "-timme", + "-hour": " timmar", Response: "Svar", Ping: "Ping", "Monitor Type": "Övervakningstyp", Keyword: "Nyckelord", - "Friendly Name": "Vänligt Namn", + "Friendly Name": "Namn", URL: "URL", Hostname: "Värdnamn", Port: "Port", @@ -67,14 +67,14 @@ export default { Save: "Spara", Notifications: "Notiser", "Not available, please setup.": "Ej tillgänglig, vänligen konfigurera.", - "Setup Notification": "Konfigurera Notis", + "Setup Notification": "Ny Notistjänst", Light: "Ljust", Dark: "Mörkt", - Auto: "Automatisk", + Auto: "Automatiskt", "Theme - Heartbeat Bar": "Tema - Heartbeat Bar", Normal: "Normal", Bottom: "Botten", - None: "Ingen", + None: "Tomt", Timezone: "Tidszon", "Search Engine Visibility": "Synlighet på Sökmotorer", "Allow indexing": "Tillåt indexering", From d35b205fcc41be66a654085c01698656c9ce5443 Mon Sep 17 00:00:00 2001 From: Levi Date: Sat, 4 Sep 2021 16:01:41 +0200 Subject: [PATCH 11/18] Update & Improve Swedish Translation --- src/languages/sv-SE.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index 751a4063..276a3a36 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -107,6 +107,6 @@ export default { "Last Result": "Senaste resultat", "Create your admin account": "Skapa ditt administratörskonto", "Repeat Password": "Upprepa Lösenord", - respTime: "Resp. Time (ms)", - notAvailableShort: "N/A" + respTime: "Svarstid (ms)", + notAvailableShort: "Ej Tillg." } From f1a151b4a1e1b3aaadb7b035eda938833117bd06 Mon Sep 17 00:00:00 2001 From: Levi Date: Sat, 4 Sep 2021 16:03:34 +0200 Subject: [PATCH 12/18] Update & Improve Swedish Translation --- src/languages/sv-SE.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index 276a3a36..8aa4e155 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -33,7 +33,7 @@ export default { Down: "Nere", Pending: "Pågående", Unknown: "Okänt", - Pause: "Paus", + Pause: "Pausa", Name: "Namn", Status: "Status", DateTime: "Datum & Tid", From cc25787878c37655ea6ce0cfe4d4fb1e3f224252 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Sat, 4 Sep 2021 23:32:46 +0800 Subject: [PATCH 13/18] improve heartbeat bar rendering in different dpi --- src/components/HeartbeatBar.vue | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/components/HeartbeatBar.vue b/src/components/HeartbeatBar.vue index 33b003db..f49b8756 100644 --- a/src/components/HeartbeatBar.vue +++ b/src/components/HeartbeatBar.vue @@ -124,9 +124,27 @@ export default { }, mounted() { if (this.size === "small") { - this.beatWidth = 5.6; - this.beatMargin = 2.4; - this.beatHeight = 16 + this.beatHeight = 16; + + // Handle strange render problem in different DPI. + if (window.devicePixelRatio === 1.25) { + this.beatWidth = 5.6; + this.beatMargin = 2.4; + + } else if (window.devicePixelRatio === 1.75) { + this.beatWidth = 5.7; + this.beatMargin = 2.4; + + } else if (window.devicePixelRatio === 2.25) { + this.beatWidth = 5.8; + this.beatMargin = 2.4; + + } else { + // 100%, 150%, 200% ... + this.beatWidth = 6; + this.beatMargin = 2; + } + } window.addEventListener("resize", this.resize); From ffbdf97478d72496b9ae235b8de35a9ac751cf93 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Sun, 5 Sep 2021 00:08:24 +0800 Subject: [PATCH 14/18] improve heartbeat bar rendering in different dpi --- src/components/HeartbeatBar.vue | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/components/HeartbeatBar.vue b/src/components/HeartbeatBar.vue index f49b8756..04d046bd 100644 --- a/src/components/HeartbeatBar.vue +++ b/src/components/HeartbeatBar.vue @@ -31,7 +31,7 @@ export default { beatWidth: 10, beatHeight: 30, hoverScale: 1.5, - beatMargin: 3, // Odd number only, even = blurry + beatMargin: 4, move: false, maxBeat: -1, } @@ -122,29 +122,26 @@ export default { this.$root.heartbeatList[this.monitorId] = []; } }, + mounted() { if (this.size === "small") { + this.beatWidth = 5; this.beatHeight = 16; + this.beatMargin = 2; + } - // Handle strange render problem in different DPI. - if (window.devicePixelRatio === 1.25) { - this.beatWidth = 5.6; - this.beatMargin = 2.4; + // Suddenly, have an idea how to handle it universally. + // If the pixel * ratio != Integer, then it causes render issue, round it to solve it!! + const actualWidth = this.beatWidth * window.devicePixelRatio; + const actualMargin = this.beatMargin * window.devicePixelRatio; - } else if (window.devicePixelRatio === 1.75) { - this.beatWidth = 5.7; - this.beatMargin = 2.4; - - } else if (window.devicePixelRatio === 2.25) { - this.beatWidth = 5.8; - this.beatMargin = 2.4; - - } else { - // 100%, 150%, 200% ... - this.beatWidth = 6; - this.beatMargin = 2; - } + if (! Number.isInteger(actualWidth)) { + this.beatWidth = Math.round(actualWidth) / window.devicePixelRatio; + console.log(this.beatWidth); + } + if (! Number.isInteger(actualMargin)) { + this.beatMargin = Math.round(actualMargin) / window.devicePixelRatio; } window.addEventListener("resize", this.resize); From 5837c353b7689c573f03fe843ccc007f872e1335 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Sun, 5 Sep 2021 02:47:31 +0800 Subject: [PATCH 15/18] change the default theme to auto from light --- src/mixins/theme.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mixins/theme.js b/src/mixins/theme.js index 44e37532..b149e111 100644 --- a/src/mixins/theme.js +++ b/src/mixins/theme.js @@ -11,7 +11,7 @@ export default { mounted() { // Default Light if (! this.userTheme) { - this.userTheme = "light"; + this.userTheme = "auto"; } // Default Heartbeat Bar From 9952463350907aaf03ab9d944876145b4c96bc47 Mon Sep 17 00:00:00 2001 From: Misly <60405462+Misly16@users.noreply.github.com> Date: Sat, 4 Sep 2021 20:38:53 +0000 Subject: [PATCH 16/18] Add Polish Locale --- src/languages/pl.js | 112 +++++++++++++++++++++++++++++++++++++++++ src/main.js | 2 + src/pages/Settings.vue | 5 ++ 3 files changed, 119 insertions(+) create mode 100644 src/languages/pl.js diff --git a/src/languages/pl.js b/src/languages/pl.js new file mode 100644 index 00000000..9e16011b --- /dev/null +++ b/src/languages/pl.js @@ -0,0 +1,112 @@ +export default { + languageName: "Polski", + checkEverySecond: "sprawdzaj co {0} sekund.", + "Avg.": "Średnia. ", + retriesDescription: "Maksymalna liczba ponownych prób, zanim usługa zostanie oznaczona jako offline i zostanie wysłane powiadomienie.", + ignoreTLSError: "Ignoruj błąd TLS/SSL dla stron HTTPS.", + upsideDownModeDescription: "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest niedostępna.", + maxRedirectDescription: "Maksymalna liczba przekierowań do naśladowania. Ustaw na 0, aby wyłączyć przekierowania.", + acceptedStatusCodesDescription: "Wybierz kody stanu, które są uważane za udaną odpowiedź.", + passwordNotMatchMsg: "Powtórzone hasło nie jest takie samo.", + notificationDescription: "Dodaj powiadomienie do monitorów, aby one działały.", + keywordDescription: "Wyszukaj słowo kluczowe w html lub JSON i wielkość liter ma znaczenie.", + pauseDashboardHome: "pauza", + deleteMonitorMsg: "Czy na pewno chcesz usunąć ten monitor?", + deleteNotificationMsg: "Czy na pewno chcesz usunąć to powiadomienie ze wszystkich monitorów?", + resoverserverDescription: "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w dowolnym momencie.", + rrtypeDescription: "Wybierz typ RR-Type który chcesz monitorować.", + pauseMonitorMsg: "Czy na pewno chcesz wstrzymać?", + Settings: "Ustawienia", + Dashboard: "Panel", + "New Update": "Nowa aktualizacja", + Language: "Język", + Appearance: "Wygląd", + Theme: "Motyw", + General: "Ogólne", + Version: "Versja", + "Check Update On GitHub": "Sprawdź aktualizację na GitHub.", + List: "Lista", + Add: "Dodaj", + "Add New Monitor": "Dodaj Nowy Monitor", + "Quick Stats": "Szybkie statystyki", + Up: "Online", + Down: "Offline", + Pending: "Oczekujący", + Unknown: "Nieznane", + Pause: "Pauza", + Name: "Nazwa", + Status: "Status", + DateTime: "Data i godzina", + Message: "Wiadomość", + "No important events": "Brak ważnych wydarzeń.", + Resume: "Wznów", + Edit: "Edytuj", + Delete: "Usuń", + Current: "aktualny", + Uptime: "czas pracy", + "Cert Exp.": "Wygaśnięcie certyfikatu.", + days: "dni", + day: "dzień", + "-day": "-dzień", + hour: "godzina", + "-hour": "-godzina", + Response: "odpowiedź", + Ping: "Ping", + "Monitor Type": "Typ monitora", + Keyword: "słowo kluczowe", + "Friendly Name": "Przyjazne imię", + URL: "URL", + Hostname: "Hostname", + Port: "Port", + "Heartbeat Interval": "Interwał bicia serca", + Retries: "Prób", + Advanced: "Zaawansowane", + "Upside Down Mode": "Tryb do góry nogami", + "Max. Redirects": "Maks. Przekierowania", + "Accepted Status Codes": "Akceptowane kody statusu", + Save: "Zapisz", + Notifications: "Powiadomienia", + "Not available, please setup.": "Niedostępne, proszę skonfigurować.", + "Setup Notification": "Powiadomienie konfiguracji", + Light: "Jasny", + Dark: "Ciemny", + Auto: "Automatyczny", + "Theme - Heartbeat Bar": "Motyw - pasek bicia serca", + Normal: "Normalne", + Bottom: "Na dole", + None: "Nic", + Timezone: "Strefa czasowa", + "Search Engine Visibility": "Widoczność w wyszukiwarce", + "Allow indexing": "Zezwól na indeksowanie", + "Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony", + "Change Password": "Zmień hasło", + "Current Password": "Aktualne hasło", + "New Password": "Nowe hasło", + "Repeat New Password": "Powtórz nowe hasło", + "Update Password": "Zaktualizuj hasło", + "Disable Auth": "Wyłącz autoryzację", + "Enable Auth": "Włącz autoryzację ", + Logout: "Wyloguj się", + Leave: "Opuść", + "I understand, please disable": "Rozumiem, proszę wyłączyć", + Confirm: "Potwierdź", + Yes: "Tak", + No: "Nie", + Username: "Nazwa użytkownika", + Password: "Hasło", + "Remember me": "Zapamiętaj mnie", + Login: "Zaloguj sie", + "No Monitors, please": "Proszę bez monitorów", + "add one": "dodaj jeden", + "Notification Type": "Typ powiadomienia", + Email: "Email", + Test: "Test", + "Certificate Info": "Informacje o certyfikacie", + "Resolver Server": "Server resolver", + "Resource Record Type": "Typ rekordu zasobów", + "Last Result": "Ostatni rekord", + "Create your admin account": "Utwórz swoje konto administratora", + "Repeat Password": "Powtórz hasło", + respTime: "Odp. Czas (ms)", + notAvailableShort: "N/A" +} diff --git a/src/main.js b/src/main.js index 8f5e0a91..7ad9db08 100644 --- a/src/main.js +++ b/src/main.js @@ -37,6 +37,7 @@ import svSE from "./languages/sv-SE"; import koKR from "./languages/ko-KR"; import ruRU from "./languages/ru-RU"; import zhCN from "./languages/zh-CN"; +import pl from "./languages/pl" const routes = [ { @@ -114,6 +115,7 @@ const languageList = { "ko-KR": koKR, "ru-RU": ruRU, "zh-CN": zhCN, + "pl": pl, }; const i18n = createI18n({ diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 70564213..83384ca8 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -213,6 +213,11 @@

이 기능은 Cloudflare Access와 같은 서드파티 인증을 Uptime Kuma 앞에 둔 사용자를 위한 기능이에요.

신중하게 사용하세요.

+ From 1b8b33c4c3e585b002570bf903d883f6ca42cb1e Mon Sep 17 00:00:00 2001 From: Ponkhy Date: Sun, 5 Sep 2021 15:40:35 +0200 Subject: [PATCH 17/18] Added set language to the Setup.vue --- src/languages/de-DE.js | 3 ++- src/languages/en.js | 3 ++- src/pages/Setup.vue | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 76c355a3..1f8eb055 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -108,5 +108,6 @@ export default { "Repeat Password": "Wiederhole das Passwort", "Resource Record Type": "Resource Record Type", respTime: "Antw. Zeit (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Erstellen", } diff --git a/src/languages/en.js b/src/languages/en.js index f0e4ae96..6a4f5e2f 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Create your admin account", "Repeat Password": "Repeat Password", respTime: "Resp. Time (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create", } diff --git a/src/pages/Setup.vue b/src/pages/Setup.vue index 756aff36..dbff8683 100644 --- a/src/pages/Setup.vue +++ b/src/pages/Setup.vue @@ -14,6 +14,15 @@

+ + +
+ +
@@ -29,7 +38,7 @@ @@ -49,6 +58,11 @@ export default { repeatPassword: "", } }, + watch: { + "$i18n.locale"() { + localStorage.locale = this.$i18n.locale; + }, + }, mounted() { this.$root.getSocket().emit("needSetup", (needSetup) => { if (! needSetup) { From 899b33b3a966017a17cd5e3c45c5044fa4554015 Mon Sep 17 00:00:00 2001 From: LouisLam Date: Mon, 6 Sep 2021 01:31:05 +0800 Subject: [PATCH 18/18] add language missing keys --- src/languages/da-DK.js | 3 ++- src/languages/es-ES.js | 3 ++- src/languages/fr.js | 3 ++- src/languages/ja.js | 3 ++- src/languages/ko-KR.js | 3 ++- src/languages/nl-NL.js | 3 ++- src/languages/pl.js | 3 ++- src/languages/ru-RU.js | 3 ++- src/languages/sr-latn.js | 3 ++- src/languages/sr.js | 3 ++- src/languages/sv-SE.js | 3 ++- src/languages/zh-CN.js | 3 ++- src/languages/zh-HK.js | 3 ++- 13 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 713eecfe..050f31e4 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -108,5 +108,6 @@ export default { "Repeat Password": "Gentag adgangskoden", "Resource Record Type": "Resource Record Type", respTime: "Resp. Time (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js index 96ce923e..4079991e 100644 --- a/src/languages/es-ES.js +++ b/src/languages/es-ES.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Crea tu cuenta de administrador", "Repeat Password": "Repetir contraseña", respTime: "Tiempo de resp. (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/fr.js b/src/languages/fr.js index e4f999dc..4019b74d 100644 --- a/src/languages/fr.js +++ b/src/languages/fr.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Créez votre compte administrateur", "Repeat Password": "Répéter le mot de passe", respTime: "Temps de réponse (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/ja.js b/src/languages/ja.js index 23de640c..51181cdf 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Create your admin account", "Repeat Password": "Repeat Password", respTime: "Resp. Time (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index 8493193c..49a510f6 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "관리자 계정 만들기", "Repeat Password": "비밀번호 재입력", respTime: "응답 시간 (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index 60c5089c..0ab73bb9 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Maak uw beheerdersaccount aan", "Repeat Password": "Herhaal wachtwoord", respTime: "resp. tijd (ms)", - notAvailableShort: "N.v.t." + notAvailableShort: "N.v.t.", + Create: "Create" } diff --git a/src/languages/pl.js b/src/languages/pl.js index 9e16011b..25f76430 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Utwórz swoje konto administratora", "Repeat Password": "Powtórz hasło", respTime: "Odp. Czas (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index f42f9c25..96f6efab 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Создайте аккаунт администратора", "Repeat Password": "Повторите пароль", respTime: "Resp. Time (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js index aa7d95cf..defc7821 100644 --- a/src/languages/sr-latn.js +++ b/src/languages/sr-latn.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Naprivi administratorski nalog", "Repeat Password": "Ponovite lozinku", respTime: "Vreme odg. (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/sr.js b/src/languages/sr.js index 0bd08403..d333210f 100644 --- a/src/languages/sr.js +++ b/src/languages/sr.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Наприви администраторски налог", "Repeat Password": "Поновите лозинку", respTime: "Време одг. (мс)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index 8aa4e155..d0015432 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "Skapa ditt administratörskonto", "Repeat Password": "Upprepa Lösenord", respTime: "Svarstid (ms)", - notAvailableShort: "Ej Tillg." + notAvailableShort: "Ej Tillg.", + Create: "Create" } diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index d179a91a..e47bd70a 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "创建管理员账号", "Repeat Password": "重复密码", respTime: "Resp. Time (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "Create" } diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index 4bcc5029..6dfc726e 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -108,5 +108,6 @@ export default { "Create your admin account": "製作你的管理員帳號", "Repeat Password": "重複密碼", respTime: "反應時間 (ms)", - notAvailableShort: "N/A" + notAvailableShort: "N/A", + Create: "建立" }