diff --git a/src/core/index/api.js b/src/core/index/api.js index 6f4cfb70..04d7c17a 100644 --- a/src/core/index/api.js +++ b/src/core/index/api.js @@ -313,10 +313,7 @@ async function refresh_report_list(_fetch = false, data = {}) { report_now_id = originTime.getTime(); rts_replay_timestamp = originTime.getTime(); rts_replay_time = originTime.getTime() - 5000; - let list = []; - if (report_data[i].ID.length != 0) list = list.concat(report_data[i].ID); - if (report_data[i].trem.length != 0) list = list.concat(report_data[i].trem); - replay_run(list); + replay_run(); if (storage.getItem("report_eew")) get_data({ "originTime" : originTime.getTime(), "type" : "eew-report", @@ -392,10 +389,7 @@ async function refresh_report_list(_fetch = false, data = {}) { report_now_id = originTime.getTime(); rts_replay_timestamp = originTime.getTime(); rts_replay_time = originTime.getTime() - 5000; - let list = []; - if (report_data[i].ID.length != 0) list = list.concat(report_data[i].ID); - if (report_data[i].trem.length != 0) list = list.concat(report_data[i].trem); - replay_run(list); + replay_run(); if (storage.getItem("report_eew")) get_data({ "originTime" : originTime.getTime(), "type" : "eew-report", @@ -468,7 +462,7 @@ function replay_stop() { setTimeout(() => fetch_eew(), 1500); } -function replay_run(id_list) { +function replay_run() { for (const item of document.getElementsByClassName("report_click_text fa-regular fa-circle-play fa-2x")) item.style.display = "none"; for (let i = 0; i < Object.keys(TREM.EQ_list).length; i++) { @@ -734,4 +728,9 @@ function show_screen(type) { function geoJsonMap(geojson, config, map) { if (storage.getItem("disable_geojson_vt") ?? false) return L.geoJson(geojson, config).addTo(map); else return L.geoJson.vt(geojson, config).addTo(map); +} + +function time_replay(time) { + replay_run(); + rts_replay_time = new Date(time).getTime(); } \ No newline at end of file diff --git a/src/core/index/core.js b/src/core/index/core.js index 98cf3adc..8f7ec4e8 100644 --- a/src/core/index/core.js +++ b/src/core/index/core.js @@ -38,4 +38,11 @@ function _sleep(e) { localStorage.UUID = ans.uuid; _server_init(); })(); -log("Start", 1, "log", "~"); \ No newline at end of file +log("Start", 1, "log", "~"); + +ipcMain.on("replay_start", (e, time) => { + replay_run(); + rts_replay_time = Now().getTime() - (10800 - Number(time)) * 1000; +}); + +ipcMain.on("replay_stop", () => replay_stop()); \ No newline at end of file diff --git a/src/core/index/loop.js b/src/core/index/loop.js index ee715b37..36736e34 100644 --- a/src/core/index/loop.js +++ b/src/core/index/loop.js @@ -54,7 +54,7 @@ map.onwheel = () => { }; time.onclick = () => { - if (rts_replay_timestamp) replay_stop(); + if (rts_replay_time) replay_stop(); if (TREM.report_epicenterIcon) report_off(); refresh_report_list(); time.style.cursor = ""; @@ -62,7 +62,7 @@ time.onclick = () => { setInterval(() => { setTimeout(() => { - const now = (rts_replay_time) ? new Date(rts_replay_time).getTime() : Now().getTime(); + const now = (rts_replay_time) ? rts_replay_time : Now().getTime(); if (WS) time.innerHTML = `${time_to_string(now)}`; if (Object.keys(TREM.EQ_list).length) { for (const item of document.getElementsByClassName("flash")) diff --git a/src/core/require.js b/src/core/require.js index 19147e52..7553d655 100644 --- a/src/core/require.js +++ b/src/core/require.js @@ -1,4 +1,4 @@ -const { BrowserWindow, app, shell } = require("@electron/remote"); +const { BrowserWindow, app, ipcMain, shell } = require("@electron/remote"); const fetch = require("node-fetch"); const fs = require("fs"); const { ipcRenderer } = require("electron"); diff --git a/src/core/setting/setting.js b/src/core/setting/setting.js index 4f265f2d..3e2aa541 100644 --- a/src/core/setting/setting.js +++ b/src/core/setting/setting.js @@ -220,7 +220,7 @@ function _onchange(id) { } const openURL = url => { - shell.openExternal(url); + shell.openExternal(`https://${url}`); }; for (const list of document.querySelectorAll(".list")) @@ -325,4 +325,9 @@ for (const i of plugin_list) plugin.appendChild(item); } catch (err) { log(`Unable to read plugin (${i}) >> ${err}`, 3, "main", "setting"); - } \ No newline at end of file + } + +function ipc_send(id, args) { + if (id == "replay_start") args = document.getElementById("timeline").value; + ipcRenderer.send(id, args); +} \ No newline at end of file diff --git a/src/css/setting.css b/src/css/setting.css index 4d5de89d..8197ed41 100644 --- a/src/css/setting.css +++ b/src/css/setting.css @@ -481,4 +481,8 @@ ul > li > span{ ::-webkit-scrollbar-thumb:active { background-color: rgb(255 255 255 / 8%); +} + +#timeline { + width: 100%; } \ No newline at end of file diff --git a/src/view/setting.html b/src/view/setting.html index 3228328a..fac6628f 100644 --- a/src/view/setting.html +++ b/src/view/setting.html @@ -42,8 +42,11 @@
設定所在地可以在地震發生時預估你所在區域的地震震度。
- - + + 更改位置將會自動設定距離最近的即時測站。
@@ -59,9 +62,11 @@
- + - +
@@ -76,8 +81,11 @@
- - + + 請不要隨意更改此數值。
@@ -179,7 +187,8 @@
- @@ -208,6 +217,24 @@
+
+
+
+
重播
+
重播 過去時間(3小時) 的地震紀錄。
+
+ +
+ + +
+
+
+
@@ -325,8 +352,11 @@
選擇啟用的插件,插件將在程式啟動時載入。
- - + + 使用來源不明或無法信任的插件可能會危及你的個人資訊安全,請謹慎使用。
@@ -341,7 +371,8 @@
關於 TREM Lite
-
TREM Lite 是一款開源地震速報軟體,提供給您即時的地震資訊,利用自製的測站,顯示各地的即時震度,在地震發生的第一時間取得各管道發布的強震即時警報訊息。
+
TREM Lite + 是一款開源地震速報軟體,提供給您即時的地震資訊,利用自製的測站,顯示各地的即時震度,在地震發生的第一時間取得各管道發布的強震即時警報訊息。