${translations.page.modules.arch}
diff --git a/webroot/js/modal/language.js b/webroot/js/modal/language.js
deleted file mode 100644
index a77ec57..0000000
--- a/webroot/js/modal/language.js
+++ /dev/null
@@ -1,24 +0,0 @@
-const button = document.getElementById('lang_switcher')
-const target = document.getElementById('lang_modal')
-const close_button = document.getElementById('lang_modal_close')
-
-let sys_module_mode = localStorage.getItem('/cache/modal/language/state')
-sys_module_mode = setData('closed')
-
-button.addEventListener('click', () => {
- target.style.top = '0%'
-
- sys_module_mode = setData('opened')
-})
-
-close_button.addEventListener('click', () => {
- target.style.top = '100%'
-
- sys_module_mode = setData('closed')
-})
-
-function setData(mode) {
- localStorage.setItem('/cache/modal/language/state', mode)
-
- return mode
-}
\ No newline at end of file
diff --git a/webroot/js/navbar.js b/webroot/js/navbar.js
index 760bb70..e375acc 100644
--- a/webroot/js/navbar.js
+++ b/webroot/js/navbar.js
@@ -5,9 +5,19 @@ document.getElementById(`nibg_home`).classList.toggle('show')
document.querySelectorAll('[name=navbutton]').forEach((element) => {
element.addEventListener('click', (event) => {
+ let smallPagePass = false
const value = event.target.value
const previous = !localStorage.getItem('/cache/navbar/previous') ? setData('home') : localStorage.getItem('/cache/navbar/previous')
- if (previous === value) return;
+
+ const small_panel = localStorage.getItem('/cache/page/small/previous')
+
+ if (small_panel && small_panel.length !== 0) {
+ document.getElementById(`small_panel_${small_panel}`).classList.remove('show')
+ localStorage.removeItem('/cache/page/small/previous')
+ smallPagePass = true
+ }
+
+ if (previous === value && !smallPagePass) return;
/* INFO: Disable icon on old state */
const pre_input = document.getElementById(`n_${previous}`)
diff --git a/webroot/js/smallPage/language.js b/webroot/js/smallPage/language.js
new file mode 100644
index 0000000..61cb08a
--- /dev/null
+++ b/webroot/js/smallPage/language.js
@@ -0,0 +1,49 @@
+import {
+ avaliableLanguages,
+ getTranslations,
+ setNewLanguage
+} from '../language.js'
+import { smallPageDisabler } from '../smallPageDesabler.js'
+
+const lang_list = document.getElementById('lang_modal_list')
+const page_toggle = document.getElementById('lang_page_toggle')
+const page_close = document.getElementById('sp_lang_close')
+
+page_toggle.addEventListener('click', () => {
+ const previous = !localStorage.getItem('/cache/navbar/previous') ? setData('home') : localStorage.getItem('/cache/navbar/previous')
+ document.getElementById(`panel_${previous}`).classList.remove('show')
+ document.getElementById('small_panel_language').classList.toggle('show')
+ localStorage.setItem('/cache/page/small/previous', 'language')
+})
+
+page_close.addEventListener('click', () => smallPageDisabler('language', 'settings'))
+
+let index = 0
+
+function setAvaliableLanguage() {
+ const langKey = avaliableLanguages[index]
+
+ index += 1
+
+ getTranslations(langKey).then((data) => {
+ lang_list.innerHTML += `
+
+ `
+ })
+ .finally(() => {
+ if (index !== avaliableLanguages.length) setAvaliableLanguage()
+ })
+}
+setAvaliableLanguage()
+
+document.addEventListener('click', async (event) => {
+ const getLangLocate = event.target.getAttribute('lang-data')
+ if (!getLangLocate || typeof getLangLocate !== 'string') return
+
+ smallPageDisabler('language', 'settings')
+ await setNewLanguage(getLangLocate)
+
+ localStorage.setItem('/system/language', getLangLocate)
+}, false)
\ No newline at end of file
diff --git a/webroot/js/smallPage/theme.js b/webroot/js/smallPage/theme.js
new file mode 100644
index 0000000..a5d2d8e
--- /dev/null
+++ b/webroot/js/smallPage/theme.js
@@ -0,0 +1,65 @@
+import { smallPageDisabler } from '../smallPageDesabler.js'
+import { setDark } from '../themes/dark.js'
+import { setLight } from '../themes/light.js'
+
+const page_toggle = document.getElementById('theme_page_toggle')
+
+let sys_theme = localStorage.getItem('/system/theme')
+if (!sys_theme) sys_theme = setData('dark')
+
+if (sys_theme == "system") {
+ const isDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
+ if (!isDark) setLight()
+} else if (sys_theme === 'light') setLight(true)
+
+document.getElementById('sp_theme_close').addEventListener('click', () => smallPageDisabler('theme', 'settings'))
+
+page_toggle.addEventListener('click', () => {
+ const previous = !localStorage.getItem('/cache/navbar/previous') ? setData('home') : localStorage.getItem('/cache/navbar/previous')
+ document.getElementById(`panel_${previous}`).classList.remove('show')
+ document.getElementById('small_panel_theme').classList.toggle('show')
+ localStorage.setItem('/cache/page/small/previous', 'theme')
+})
+
+document.addEventListener('click', async (event) => {
+ const getSystemTheme = event.target.getAttribute('theme-data')
+ if (!getSystemTheme || typeof getSystemTheme !== 'string') return
+
+ switch (getSystemTheme) {
+ case 'dark':
+ setDark(true)
+ break
+ case 'light':
+ setLight(true)
+ break
+ case 'system':
+ const isDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
+ if (isDark) setDark()
+ else setLight()
+ break
+ }
+
+ smallPageDisabler('theme', 'settings')
+
+ localStorage.setItem('/system/theme', getSystemTheme)
+}, false)
+
+window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
+ if (sys_theme !== "system") return
+ const newColorScheme = event.matches ? "dark" : "light";
+
+ switch (newColorScheme) {
+ case 'dark':
+ setDark()
+ break
+ case 'light':
+ setLight()
+ break
+ }
+});
+
+function setData(mode) {
+ localStorage.setItem('/system/theme', mode)
+
+ return mode
+}
\ No newline at end of file
diff --git a/webroot/js/smallPageDesabler.js b/webroot/js/smallPageDesabler.js
new file mode 100644
index 0000000..939c11e
--- /dev/null
+++ b/webroot/js/smallPageDesabler.js
@@ -0,0 +1,23 @@
+export function smallPageDisabler(page_name, new_page) {
+ document.getElementById(`small_panel_${page_name}`).classList.remove('show')
+ localStorage.removeItem('/cache/page/small/previous')
+
+ const previous = localStorage.getItem('/cache/navbar/previous')
+
+ /* INFO: Disable icon on old state */
+ const pre_input = document.getElementById(`n_${previous}`)
+ const pre_background = document.getElementById(`nibg_${previous}`)
+
+ pre_input.removeAttribute('checked')
+ pre_background.classList.remove('show')
+
+ /* INFO: Enable icon on new state */
+ const curr_input = document.getElementById(`n_${new_page}`)
+ const i_background = document.getElementById(`nibg_${new_page}`)
+
+ document.getElementById(`panel_${new_page}`).classList.toggle('show')
+ curr_input.setAttribute('checked', '')
+ i_background.classList.toggle('show')
+
+ localStorage.setItem('/cache/navbar/previous', 'settings')
+}
\ No newline at end of file
diff --git a/webroot/js/theme.js b/webroot/js/theme.js
deleted file mode 100644
index e4f5b1a..0000000
--- a/webroot/js/theme.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { setDark } from './themes/dark.js'
-import { setLight } from './themes/light.js'
-
-const button = document.getElementById('theme_switcher')
-
-let sys_theme = localStorage.getItem('/system/theme')
-if (!sys_theme) sys_theme = setData('dark')
-
-if (sys_theme === 'light') {
- button.setAttribute('checked', '')
-
- setLight()
-}
-
-button.addEventListener('click', () => {
- button.checked ? setLight() : setDark()
-})
-
-function setData(mode) {
- localStorage.setItem('/system/theme', mode)
-
- return mode
-}
\ No newline at end of file
diff --git a/webroot/js/themes/dark.js b/webroot/js/themes/dark.js
index 31996c5..e28d559 100644
--- a/webroot/js/themes/dark.js
+++ b/webroot/js/themes/dark.js
@@ -7,8 +7,10 @@ const close_icons = document.getElementsByClassName('close_icon')
const expand_icons = document.getElementsByClassName('expander')
const copy_button = document.getElementById('errorh_copy')
const clearall_button = document.getElementById('errorh_clear_all')
+const sp_lang_close = document.getElementById('sp_lang_close')
+const sp_theme_close = document.getElementById('sp_theme_close')
-export function setDark() {
+export function setDark(chooseSet) {
rootCss.style.setProperty('--background', '#181c20')
rootCss.style.setProperty('--font', '#ffffff')
rootCss.style.setProperty('--desc', '#c9c9c9')
@@ -18,7 +20,7 @@ export function setDark() {
rootCss.style.setProperty('--icon-bc', '#313a3f')
rootCss.style.setProperty('--button', 'var(--background)')
- setData('dark')
+ if (chooseSet) setData('dark')
for (const close_icon of close_icons) {
close_icon.innerHTML = '

'
@@ -30,6 +32,8 @@ export function setDark() {
copy_button.innerHTML = '

'
clearall_button.innerHTML = '

'
+ sp_lang_close.innerHTML = '

'
+ sp_theme_close.innerHTML = '

'
setDarkNav()
}
diff --git a/webroot/js/themes/light.js b/webroot/js/themes/light.js
index e04d9ae..b86ca1a 100644
--- a/webroot/js/themes/light.js
+++ b/webroot/js/themes/light.js
@@ -3,6 +3,7 @@ import {
light_expand_icon,
light_copy_icon,
light_clear_icon,
+ light_page_exit_icon,
} from './lightIcon.js'
import { setLightNav } from './lightNavbar.js'
@@ -13,8 +14,10 @@ const close_icons = document.getElementsByClassName('close_icon')
const expand_icons = document.getElementsByClassName('expander')
const copy_button = document.getElementById('errorh_copy')
const clearall_button = document.getElementById('errorh_clear_all')
+const sp_lang_close = document.getElementById('sp_lang_close')
+const sp_theme_close = document.getElementById('sp_theme_close')
-export function setLight() {
+export function setLight(chooseSet) {
rootCss.style.setProperty('--background', '#eff1f6')
rootCss.style.setProperty('--font', '#181c20')
rootCss.style.setProperty('--desc', '#484d53')
@@ -24,7 +27,7 @@ export function setLight() {
rootCss.style.setProperty('--icon-bc', '#c9c9c9')
rootCss.style.setProperty('--button', '#b3b3b3')
- setData('light')
+ if (chooseSet) setData('light')
for (const close_icon of close_icons) {
close_icon.innerHTML = light_close_icon
@@ -36,6 +39,8 @@ export function setLight() {
copy_button.innerHTML = light_copy_icon
clearall_button.innerHTML = light_clear_icon
+ sp_lang_close.innerHTML = light_page_exit_icon
+ sp_theme_close.innerHTML = light_page_exit_icon
setLightNav()
}
diff --git a/webroot/js/themes/lightIcon.js b/webroot/js/themes/lightIcon.js
index 27f2c46..fc342ef 100644
--- a/webroot/js/themes/lightIcon.js
+++ b/webroot/js/themes/lightIcon.js
@@ -22,4 +22,9 @@ export const light_clear_icon = `
+`
+export const light_page_exit_icon = `
+
`
\ No newline at end of file
diff --git a/webroot/js/translate/action.js b/webroot/js/translate/action.js
index c3b7fc2..281fca5 100644
--- a/webroot/js/translate/action.js
+++ b/webroot/js/translate/action.js
@@ -3,17 +3,19 @@ export function translateActionPage(old_translations, new_translations) {
document.getElementById('panel_actions_header').innerHTML = new_translations.page.action.header
/* INFO: daemon32 small card */
+ document.getElementById('daemon32_title').innerHTML = new_translations.page.action.monitor["32"]
if (document.getElementById('daemon32_stop_button')) { /* INFO: Not all devices have 32-bit support */
document.getElementById('daemon32_stop_button').innerHTML = new_translations.page.action.daemonButton.stop
document.getElementById('daemon32_start_button').innerHTML = new_translations.page.action.daemonButton.start
- document.getElementById('daemon32_exit_button').innerHTML = new_translations.page.action.daemonButton.exit
+ document.getElementById('daemon32_pause_button').innerHTML = new_translations.page.action.daemonButton.pause
}
/* INFO: daemon64 small card */
+ document.getElementById('daemon64_title').innerHTML = new_translations.page.action.monitor["64"]
if (document.getElementById('daemon64_stop_button')) { /* INFO: Not all devices have 64-bit support */
document.getElementById('daemon64_stop_button').innerHTML = new_translations.page.action.daemonButton.stop
document.getElementById('daemon64_start_button').innerHTML = new_translations.page.action.daemonButton.start
- document.getElementById('daemon64_exit_button').innerHTML = new_translations.page.action.daemonButton.exit
+ document.getElementById('daemon64_pause_button').innerHTML = new_translations.page.action.daemonButton.pause
}
/* INFO: daemon32 status card */
diff --git a/webroot/lang/en_US.json b/webroot/lang/en_US.json
index db4285e..03e8360 100644
--- a/webroot/lang/en_US.json
+++ b/webroot/lang/en_US.json
@@ -12,6 +12,17 @@
"header": "Choose your new language"
}
},
+ "smallPage": {
+ "language": {
+ "header": "Choose your new language"
+ },
+ "theme": {
+ "header": "Choose your new theme",
+ "dark": "Dark",
+ "light": "Light",
+ "system": "System Based"
+ }
+ },
"page": {
"home": {
"header": "Home",
@@ -40,7 +51,11 @@
"daemonButton": {
"start": "Start",
"stop": "Stop",
- "exit": "Exit"
+ "pause": "Pause"
+ },
+ "monitor": {
+ "32": "Monitor (32 bit)",
+ "64": "Monitor (64 bit)"
},
"status": {
"unknown": "Unknown",
@@ -55,8 +70,8 @@
"description": "This option will enable system font in current WebUI. NOTE: May not be compatible with FlipFont"
},
"theme": {
- "header": "Enable light theme",
- "description": "This option will enable light theme for WebUI"
+ "header": "System theme",
+ "description": "Choose your system theme for current WebUI"
},
"language": {
"header": "Change language",
diff --git a/webroot/lang/ja_JP.json b/webroot/lang/ja_JP.json
index 21c59dd..154518e 100644
--- a/webroot/lang/ja_JP.json
+++ b/webroot/lang/ja_JP.json
@@ -7,9 +7,17 @@
"logs": {
"header": "Error History",
"placeholder": "No error log recorded here!"
- },
+ }
+ },
+ "smallPage": {
"language": {
"header": "言語を選択してください"
+ },
+ "theme": {
+ "header": "Choose your new theme",
+ "dark": "Dark",
+ "light": "Light",
+ "system": "System Based"
}
},
"page": {
@@ -40,7 +48,11 @@
"daemonButton": {
"start": "スタート",
"stop": "ストップ",
- "exit": "終了"
+ "pause": "Pause"
+ },
+ "monitor": {
+ "32": "Monitor (32 bit)",
+ "64": "Monitor (64 bit)"
},
"status": {
"unknown": "Unknown",
@@ -55,8 +67,8 @@
"description": "This option will enable system font in current WebUI. NOTE: May not be compatible with FlipFont"
},
"theme": {
- "header": "Enable light theme",
- "description": "This option will enable light theme for WebUI"
+ "header": "System theme",
+ "description": "Choose your system theme for current WebUI"
},
"language": {
"header": "Change language",
diff --git a/webroot/lang/pt_BR.json b/webroot/lang/pt_BR.json
index 925abd9..a842730 100644
--- a/webroot/lang/pt_BR.json
+++ b/webroot/lang/pt_BR.json
@@ -1,5 +1,5 @@
{
- "langName": "Português (Brasil)",
+ "langName": "🇧🇷 Português (Brasil)",
"global": {
"unknown": "Desconhecido"
},
@@ -7,9 +7,17 @@
"logs": {
"header": "Histórico de erros",
"placeholder": "Nenhum erro foi salvo aqui!"
- },
+ }
+ },
+ "smallPage": {
"language": {
"header": "Escolha sua nova língua"
+ },
+ "theme": {
+ "header": "Choose your new theme",
+ "dark": "Dark",
+ "light": "Light",
+ "system": "System Based"
}
},
"page": {
@@ -40,7 +48,11 @@
"daemonButton": {
"start": "Iniciar",
"stop": "Parar",
- "exit": "Sair"
+ "pause": "Pausar"
+ },
+ "monitor": {
+ "32": "Monitor (32 bit)",
+ "64": "Monitor (64 bit)"
},
"status": {
"unknown": "Desconhecido",
@@ -55,8 +67,8 @@
"description": "Esta opção irá usar a fonte do sistema na atual WebUI. Observação: Talvez não seja compatível com o FlipFont"
},
"theme": {
- "header": "Usar o tema claro",
- "description": "Esta opção ira abilitar o tema claro para a WebUI"
+ "header": "System theme",
+ "description": "Choose your system theme for current WebUI"
},
"language": {
"header": "Alterar a língua",
diff --git a/webroot/lang/ro_RO.json b/webroot/lang/ro_RO.json
index 9d1281e..dad9827 100644
--- a/webroot/lang/ro_RO.json
+++ b/webroot/lang/ro_RO.json
@@ -7,9 +7,17 @@
"logs": {
"header": "Error History",
"placeholder": "No error log recorded here!"
- },
+ }
+ },
+ "smallPage": {
"language": {
"header": "Alegeți limba prestabilită"
+ },
+ "theme": {
+ "header": "Choose your new theme",
+ "dark": "Dark",
+ "light": "Light",
+ "system": "System Based"
}
},
"page": {
@@ -40,7 +48,11 @@
"daemonButton": {
"start": "Start",
"stop": "Stop",
- "exit": "Ieșire"
+ "pause": "Pause"
+ },
+ "monitor": {
+ "32": "Monitor (32 bit)",
+ "64": "Monitor (64 bit)"
},
"status": {
"unknown": "Unknown",
@@ -55,8 +67,8 @@
"description": "This option will enable system font in current WebUI. NOTE: May not be compatible with FlipFont"
},
"theme": {
- "header": "Enable light theme",
- "description": "This option will enable light theme for WebUI"
+ "header": "System theme",
+ "description": "Choose your system theme for current WebUI"
},
"language": {
"header": "Change language",
diff --git a/webroot/lang/ru_RU.json b/webroot/lang/ru_RU.json
index d8be793..d85fb3e 100644
--- a/webroot/lang/ru_RU.json
+++ b/webroot/lang/ru_RU.json
@@ -7,9 +7,17 @@
"logs": {
"header": "Error History",
"placeholder": "No error log recorded here!"
- },
+ }
+ },
+ "smallPage": {
"language": {
"header": "Выберите Ваш новый язык"
+ },
+ "theme": {
+ "header": "Choose your new theme",
+ "dark": "Dark",
+ "light": "Light",
+ "system": "System Based"
}
},
"page": {
@@ -40,7 +48,11 @@
"daemonButton": {
"start": "Старт",
"stop": "Пауза",
- "exit": "Стоп"
+ "pause": "Pause"
+ },
+ "monitor": {
+ "32": "Monitor (32 bit)",
+ "64": "Monitor (64 bit)"
},
"status": {
"unknown": "Unknown",
@@ -55,8 +67,8 @@
"description": "This option will enable system font in current WebUI. NOTE: May not be compatible with FlipFont"
},
"theme": {
- "header": "Enable light theme",
- "description": "This option will enable light theme for WebUI"
+ "header": "System theme",
+ "description": "Choose your system theme for current WebUI"
},
"language": {
"header": "Change language",
diff --git a/webroot/lang/vi_VN.json b/webroot/lang/vi_VN.json
index 95f5d84..a9a54a9 100644
--- a/webroot/lang/vi_VN.json
+++ b/webroot/lang/vi_VN.json
@@ -7,9 +7,17 @@
"logs": {
"header": "Lịch sử lỗi",
"placeholder": "Không có lỗi nào đã được ghi lại ở đây!"
- },
+ }
+ },
+ "smallPage": {
"language": {
"header": "Chọn ngôn ngữ mới của bạn"
+ },
+ "theme": {
+ "header": "Chọn giao diện mới của bạn",
+ "dark": "Tối",
+ "light": "Sáng",
+ "system": "Theo hệ thống"
}
},
"page": {
@@ -40,7 +48,11 @@
"daemonButton": {
"start": "Chạy",
"stop": "Dừng",
- "exit": "Thoát"
+ "pause": "Tạm Dừng"
+ },
+ "monitor": {
+ "32": "Trình chạy (32 bit)",
+ "64": "Trình chạy (64 bit)"
},
"status": {
"unknown": "Không xác định",
@@ -55,8 +67,8 @@
"description": "Tuỳ chọn này sẽ cho phép người dùng sử dụng phông chữ của hệ thống. LƯU Ý: Có thể sẽ không tương thích với FlipFont"
},
"theme": {
- "header": "Sử dụng chế độ sáng",
- "description": "Tuỳ chọn này sẽ bật chế độ sáng cho WebUI"
+ "header": "Giao diện hệ thống",
+ "description": "Chọn giao diện cho WebUI hiện tại của bạn"
},
"language": {
"header": "Thay đổi ngôn ngữ",
diff --git a/webroot/lang/zh_CN.json b/webroot/lang/zh_CN.json
index c665ee7..34b8ab4 100644
--- a/webroot/lang/zh_CN.json
+++ b/webroot/lang/zh_CN.json
@@ -7,9 +7,17 @@
"logs": {
"header": "Error History",
"placeholder": "No error log recorded here!"
- },
+ }
+ },
+ "smallPage": {
"language": {
"header": "选择你的语言"
+ },
+ "theme": {
+ "header": "Choose your new theme",
+ "dark": "Dark",
+ "light": "Light",
+ "system": "System Based"
}
},
"page": {
@@ -40,7 +48,11 @@
"daemonButton": {
"start": "启动",
"stop": "停止",
- "exit": "退出"
+ "pause": "Pause"
+ },
+ "monitor": {
+ "32": "Monitor (32 bit)",
+ "64": "Monitor (64 bit)"
},
"status": {
"unknown": "Unknown",
@@ -55,8 +67,8 @@
"description": "This option will enable system font in current WebUI. NOTE: May not be compatible with FlipFont"
},
"theme": {
- "header": "Enable light theme",
- "description": "This option will enable light theme for WebUI"
+ "header": "System theme",
+ "description": "Choose your system theme for current WebUI"
},
"language": {
"header": "Change language",
diff --git a/webroot/lang/zh_TW.json b/webroot/lang/zh_TW.json
index 66f6bfd..6422ce9 100644
--- a/webroot/lang/zh_TW.json
+++ b/webroot/lang/zh_TW.json
@@ -7,9 +7,17 @@
"logs": {
"header": "Error History",
"placeholder": "No error log recorded here!"
- },
+ }
+ },
+ "smallPage": {
"language": {
"header": "選擇你的語言"
+ },
+ "theme": {
+ "header": "Choose your new theme",
+ "dark": "Dark",
+ "light": "Light",
+ "system": "System Based"
}
},
"page": {
@@ -40,7 +48,11 @@
"daemonButton": {
"start": "啟動",
"stop": "停止",
- "exit": "退出"
+ "pause": "Pause"
+ },
+ "monitor": {
+ "32": "Monitor (32 bit)",
+ "64": "Monitor (64 bit)"
},
"status": {
"unknown": "Unknown",
@@ -55,8 +67,8 @@
"description": "This option will enable system font in current WebUI. NOTE: May not be compatible with FlipFont"
},
"theme": {
- "header": "Enable light theme",
- "description": "This option will enable light theme for WebUI"
+ "header": "System theme",
+ "description": "Choose your system theme for current WebUI"
},
"language": {
"header": "Change language",