From 81188c43cea2a22aa25a8b013d95b76027078a0f Mon Sep 17 00:00:00 2001 From: Yurii Nazarenko Date: Sun, 7 Apr 2024 17:13:06 +0200 Subject: [PATCH] Added debugger page. Fix localization --- Makefile | 2 +- src/app/rr-manager.js | 211 +++++++++++++++++++++++++++-- src/app/texts/chs/strings | 1 + src/app/texts/enu/strings | 2 + src/app/texts/fre/strings | 4 - src/app/texts/{kor => krn}/strings | 1 + src/app/texts/rus/strings | 59 ++++++++ src/app/texts/ukr/strings | 4 - 8 files changed, 265 insertions(+), 19 deletions(-) delete mode 100644 src/app/texts/fre/strings rename src/app/texts/{kor => krn}/strings (99%) create mode 100644 src/app/texts/rus/strings delete mode 100644 src/app/texts/ukr/strings diff --git a/Makefile b/Makefile index 6d4ee04..75723f2 100644 --- a/Makefile +++ b/Makefile @@ -86,7 +86,7 @@ rr-manager_extra_install: install -m 644 src/app/help/$${language}/simpleapp_index.html $(STAGING_DIR)/app/help/$${language}/simpleapp_index.html; \ done install -m 755 -d $(STAGING_DIR)/app/texts - for language in enu fre chs kor; do \ + for language in enu rus chs krn; do \ install -m 755 -d $(STAGING_DIR)/app/texts/$${language}; \ install -m 644 src/app/texts/$${language}/strings $(STAGING_DIR)/app/texts/$${language}/strings; \ done diff --git a/src/app/rr-manager.js b/src/app/rr-manager.js index c30751f..5f5dc79 100644 --- a/src/app/rr-manager.js +++ b/src/app/rr-manager.js @@ -65,6 +65,12 @@ Ext.define('SYNOCOMMUNITY.RRManager.AppWindow', { fn: "SYNOCOMMUNITY.RRManager.Setting.Main", // help: "setting.html", }, + { + text: this._V('ui', 'tab_debug'), + iconCls: "icon-debug", + fn: "SYNOCOMMUNITY.RRManager.Debug.Main", + // help: "setting.html", + }, ]; }, @@ -1012,15 +1018,10 @@ Ext.define("SYNOCOMMUNITY.RRManager.Overview.HealthPanel", { btnStyle: 'green', text: this._V('ui', 'upload_file_dialog_title'), handler: this.showUpdateUploadDialog.bind(this) - },{ + }, { xtype: 'syno_displayfield', value: 'Get NetworkInfo', width: 140 - }, { - xtype: 'syno_button', - btnStyle: 'green', - text: 'Get NetworkInfo', - handler: this.getNetworkInfo.bind(this) }] }, ], @@ -1029,10 +1030,6 @@ Ext.define("SYNOCOMMUNITY.RRManager.Overview.HealthPanel", { ] }); }, - getNetworkInfo: async function () { - var result = await this.callCustomScript('getNetworkInfo.cgi'); - debugger; - }, fillConfig: function (e) { this.poolLinkId = Ext.id(); this.iconTemplate = this.createIconTpl(); @@ -2461,4 +2458,198 @@ Ext.define("SYNOCOMMUNITY.RRManager.Setting.SynoInfoTab", { minWidth: Ext.MessageBox.minWidth }) } +}); + + +//Settings tab +Ext.define("SYNOCOMMUNITY.RRManager.Debug.Main", { + extend: "SYNO.SDS.Utils.TabPanel", + API: {}, + constructor: function (e) { + (this.appWin = e.appWin), + (this.owner = e.owner), + this.callParent([this.fillConfig(e)]); + }, + _prefix: '/webman/3rdparty/rr-manager/', + callCustomScript: function (scriptName) { + + return new Promise((resolve, reject) => { + Ext.Ajax.request({ + url: `${this._prefix}${scriptName}`, + method: 'GET', + timeout: 60000, + headers: { + 'Content-Type': 'text/html' + }, + success: function (response) { + // if response text is string need to decode it + if (typeof response?.responseText === 'string') { + resolve(Ext.decode(response?.responseText)); + } else { + resolve(response?.responseText); + } + }, + failure: function (result) { + if (typeof result?.responseText === 'string' && result?.responseText && !result?.responseText.startsWith('<')) { + var response = Ext.decode(result?.responseText); + reject(response?.error); + } + else { + reject('Failed with status: ' + result?.status); + } + } + }); + }); + }, + fillConfig: function (e) { + this.generalTab = new SYNOCOMMUNITY.RRManager.Debug.GeneralTab({ + appWin: this.appWin, + owner: this, + itemId: "GeneralTab", + }); + + const tabs = [this.generalTab]; + + const settingsConfig = { + title: "Settings", + autoScroll: true, + useDefaultBtn: true, + labelWidth: 200, + fieldWidth: 240, + activeTab: 0, + deferredRender: false, + items: tabs, + listeners: { + activate: this.updateAllForm, + scope: this + }, + }; + + return Ext.apply(settingsConfig, e); + }, + loadAllForms: function (e) { + this.items.each((t) => { + if (Ext.isFunction(t.loadForm)) { + if (t.itemId == "SynoInfoTab") { + t.loadForm(e.synoinfo); + } else { + t.loadForm(e); + } + } + }); + }, + updateEnv: function (e) { + }, + updateAllForm: async function () { + this.setStatusBusy(); + try { + const e = await this.getConf(); + this.loadAllForms(e), this.updateEnv(e); + } catch (e) { + SYNO.Debug(e); + } + this.clearStatusBusy(); + }, + getConf: function () { + return this.callCustomScript('getNetworkInfo.cgi') + }, + setConf: function () { + var user_config = this.getParams(); + var rrConfigJson = localStorage.getItem("rrConfig"); + var rrConfigOrig = JSON.parse(rrConfigJson); + rrConfigOrig.user_config = user_config; + localStorage.setItem("rrConfig", JSON.stringify(rrConfigOrig)); + + return this.appWin.handleFileUpload(user_config); + } +}); + +Ext.define("SYNOCOMMUNITY.RRManager.Debug.GeneralTab", { + extend: "SYNO.SDS.Utils.FormPanel", + constructor: function (e) { + this.getConf = e.owner.getConf.bind(e.owner); + this.callParent([this.fillConfig(e)]) + }, + fillConfig: function (e) { + this.suspendLcwPrompt = !1; + const t = { + title: "General", + name: 'debugGeneral', + id: 'debugGeneral', + items: [new SYNO.ux.FieldSet({ + title: 'CMD Line', + collapsible: true, + collapsed: false, + name: 'cmdLine', + id: 'cmdLine', + columns: 2, + items: [], + }), new SYNO.ux.FieldSet({ + title: 'Ethernet Interfaces', + collapsible: true, + name: 'ethernetInterfaces', + id: 'ethernetInterfaces', + columns: 2, + items: [], + }), new SYNO.ux.FieldSet({ + title: 'Syno Mac Addresses', + collapsible: true, + name: 'macAdresses', + id: 'macAdresses', + columns: 2, + items: [], + }) + ] + }; + return Ext.apply(t, e), + t + }, + initEvents: function () { + this.mon(this, "activate", this.onActivate, this) + }, + onActivate: function () { + this.getConf().then((e) => { + var config = e.result; + var cmdLineFieldSet = Ext.getCmp('cmdLine'); + Object.keys(config.bootParameters).forEach((key) => { + cmdLineFieldSet.add( + { + fieldLabel: key, + name: key, + xtype: 'syno_displayfield', + value: config.bootParameters[key] + }); + }); + cmdLineFieldSet.doLayout(); + + var ethernetInterfacesFieldSet = Ext.getCmp('ethernetInterfaces'); + config.ethernetInterfaces.forEach((eth) => { + ethernetInterfacesFieldSet.add( + { + fieldLabel: eth.interface, + name: eth.interface, + xtype: 'syno_displayfield', + value: `MAC: ${eth.address}, Status: ${eth.operstate}, Speed: ${eth.speed}, Duplex: ${eth.duplex}` + }); + }); + ethernetInterfacesFieldSet.doLayout(); + + var macAdressesFieldSet = Ext.getCmp('macAdresses'); + config.syno_mac_addresses.forEach((mac_address, index) => { + macAdressesFieldSet.add( + { + fieldLabel: `Mac ${index}`, + columns: 2, + xtype: 'syno_displayfield', + value: mac_address + }); + }); + + var debugGeneral = Ext.getCmp('debugGeneral'); + debugGeneral.doLayout(); + }); + }, + loadForm: function (e) { + // this.getForm().setValues(e); + } }); \ No newline at end of file diff --git a/src/app/texts/chs/strings b/src/app/texts/chs/strings index e7c25c8..13f7749 100644 --- a/src/app/texts/chs/strings +++ b/src/app/texts/chs/strings @@ -8,6 +8,7 @@ greetings_text = "Welcome to RR Manager!" tab_general = "设置" tab_addons = "Addons" tab_configuration = "配置" +tab_debug = "调试" lb_select_update_file = "请选择 update 文件: " upload_update_file_form_validation_invalid_msg = "请选择 update/updateAll 文件后开始上传。" diff --git a/src/app/texts/enu/strings b/src/app/texts/enu/strings index f515451..ebad67f 100644 --- a/src/app/texts/enu/strings +++ b/src/app/texts/enu/strings @@ -8,6 +8,8 @@ greetings_text = "Welcome to RR Manager!" tab_general = "General" tab_addons = "Addons" tab_configuration = "Configuration" +tab_debug = "Debug" + lb_select_update_file = "Please select the update file:" upload_update_file_form_validation_invalid_msg = "Please select the update/updateAll file before start uploading." diff --git a/src/app/texts/fre/strings b/src/app/texts/fre/strings deleted file mode 100644 index 29052ea..0000000 --- a/src/app/texts/fre/strings +++ /dev/null @@ -1,4 +0,0 @@ -[app] -app_name = "RR Manager" -description = "Application RR Manager" -index_title = "Aide" diff --git a/src/app/texts/kor/strings b/src/app/texts/krn/strings similarity index 99% rename from src/app/texts/kor/strings rename to src/app/texts/krn/strings index 6ff48a0..7d37d75 100644 --- a/src/app/texts/kor/strings +++ b/src/app/texts/krn/strings @@ -8,6 +8,7 @@ greetings_text = "RR 매니저에 오신 것을 환영합니다!" tab_general = "일반" tab_addons = "애드온" tab_configuration = "설정" +tab_debug = "디버그" lb_select_update_file = "업데이트 파일을 선택하세요:" upload_update_file_form_validation_invalid_msg = "업로드를 시작하기 전에 update/updaeAll 파일을 선택하세요." diff --git a/src/app/texts/rus/strings b/src/app/texts/rus/strings new file mode 100644 index 0000000..dd461a1 --- /dev/null +++ b/src/app/texts/rus/strings @@ -0,0 +1,59 @@ +[app] +app_name = "RR Manager" +description = "RR Manager" +index_title = "Документація допомоги" + +[ui] +greetings_text = "Ласкаво просимо до RR Manager!" +tab_general = "Загальне" +tab_addons = "Додатки" +tab_configuration = "Конфігурація" +tab_debug = "Відлагодження" + +lb_select_update_file = "Будь ласка, виберіть файл оновлення:" +upload_update_file_form_validation_invalid_msg = "Будь ласка, виберіть файл оновлення/оновленняВсіх перед початком завантаження." +alt_confirm = "Підтвердити" +update_rr_progress_msg = "Оновлення RR у процесі: {0}. Статус: {1}." +update_rr_completed = "RR успішно оновлено. Будь ласка, перезавантажте NAS." +update_rr_error_msg = "Не вдалося оновити RR. Код статусу: {0}, Причина: {1}" +update_rr_confirmation = "Поточна версія RR: {0}. Версія файлу оновлення: {1}" +update_rr_confirmation_title = "Підтвердження оновлення" +confirm_system_clean_up_msg = "Бажаєте запустити скрипт очищення системного розділу?" +confirm_system_clean_up_title = "Підтвердження очищення системи" + +unable_update_rr_msg = "Не вдалося оновити RR: {0}. Будь ласка, завантажте файл та спробуйте знову." +upload_file_dialog_title = "Завантажити файл" + +select_file = "Вибрати файл" +loading_text = "Завантаження..." +system_info = "🖥️Інформація про систему:" + +rr_actions = "Дії RR Loader" +required_tasks_is_missing = "В системі відсутні наступні необхідні задачі {0}. Це потребуватиме введення вашого паролю. Бажаєте створити їх?" +tasks_created_msg = "Задачі успішно створено. Будь ласка, перезапустіть додаток RR Manager." +share_notfound_msg = "Увага! Папка {0} не знайдена. Будь ласка, створіть спільний доступ/папку та перезапустіть додаток." +required_components_missing_title = "Відсутні необхідні компоненти" +required_components_missing_spinner_msg = "Схоже, що деякі задачі відсутні в системі: {0}. Будь ласка, завершіть процес входу перед початком використання RR Manager." +file_uploading_succesfull_msg = "Файл успішно завантажено. Бажаєте запустити процедуру оновлення?" +update_confirm_title = "Підтвердження оновлення" +uploading_file = "Завантаження файлу..." +save_addons_changes = "Зберегти зміни додатків" + +rr_config_applied="Конфігурація RR успішно застосована. Будь ласка, перезавантажте NAS для застосування змін." +checking_dependencies_loader="Перевірка залежностей..." +file_uploading_failed_msg="Помилка завантаження файлу." +completed="Завершено:" + +section_rr_actions="Дії RR" +run_update="Запустити оновлення" + +frm_validation_fill_required_fields="Будь ласка, заповніть необхідні поля." +frm_validation_no_change="Немає змін для збереження" + +save_addons_btn="Зберегти додатки" + +col_system="Система" +col_installed="Встановлено" +col_version="Версія" +col_name="Назва" +col_description="Опис" \ No newline at end of file diff --git a/src/app/texts/ukr/strings b/src/app/texts/ukr/strings deleted file mode 100644 index 1fa0f82..0000000 --- a/src/app/texts/ukr/strings +++ /dev/null @@ -1,4 +0,0 @@ -[app] -app_name = "RR Manager" -description = "RR Manager - налаштування RR без перезапуску." -index_title = "Документація"