From 0c7ebfa2baa1313e82d068ff5baabecd1e0f6264 Mon Sep 17 00:00:00 2001 From: fangxiang Date: Mon, 28 Nov 2022 14:10:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E9=9C=B8=E5=AE=9A=E5=88=B6VideoWall?= =?UTF-8?q?=E5=AE=AB=E6=A0=BC=E6=A8=AA=E5=B1=8F=E7=AB=96=E5=B1=8F=E6=88=90?= =?UTF-8?q?=E6=AF=94=E4=BE=8B=E6=98=BE=E7=A4=BA=20about=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E4=BB=8E=E5=B7=A5=E5=85=B7=E6=A0=8Fother=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E5=88=B0system=20system=E5=A2=9E=E5=8A=A0user?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 +- public/media_control_client_product.js | 5 +- public/new_icon/network_setting.png | Bin 4718 -> 3671 bytes public/new_icon/timing_task.png | Bin 1831 -> 2036 bytes src/common/ClientConnection.ts | 20 + src/components/SystemSettingDialog.vue | 425 ++++++++++++++++++- src/components/custom/ISVVideoWallDialog.vue | 106 +++-- src/entities/ApplicationConfigEntity.ts | 2 + src/i18n/en-US/index.ts | 7 + src/i18n/zh-CN/index.ts | 6 + src/pages/TopToolBar.vue | 1 + src/pages/custom/ISVTopToolBar.vue | 59 +-- yarn.lock | 8 +- 13 files changed, 538 insertions(+), 105 deletions(-) diff --git a/package.json b/package.json index b038358..7264846 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "media_player_client", - "version": "1.5.5", + "version": "1.5.6", "description": "A Quasar Framework app", "productName": "MediaPlayerClient", "author": "fangxiang ", @@ -22,7 +22,7 @@ "reconnecting-websocket": "^4.4.0", "sortablejs": "^1.15.0", "to": "^0.2.9", - "ts-md5": "^1.2.11", + "ts-md5": "^1.3.1", "update": "^0.7.4", "v-viewer": "^3.0.9", "vue": "^3.0.0", diff --git a/public/media_control_client_product.js b/public/media_control_client_product.js index e3fa936..0a5a8ac 100644 --- a/public/media_control_client_product.js +++ b/public/media_control_client_product.js @@ -1,2 +1,3 @@ -// window.media_control_client_product = "LED_PLAYER"; -window.media_control_client_product = "SPECIAL_VIDEO"; +window.media_control_client_product = "LED_PLAYER"; +// window.media_control_client_product = "SPECIAL_VIDEO"; +// window.media_control_client_product = "RK_3568"; diff --git a/public/new_icon/network_setting.png b/public/new_icon/network_setting.png index c8549ff5f4d340f27e2a261e469be2a58de17dd5..2a0e1f3b2941851f58a626c3b1e70cad203805d5 100644 GIT binary patch delta 1208 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 diff --git a/public/new_icon/timing_task.png b/public/new_icon/timing_task.png index ca0f24b50e4bcd055d75ebef4cd951ed4a032cdf..e55d75c518774f318ee12535f4e1975b66360266 100644 GIT binary patch delta 249 zcmZ3^_l19g1ryu0jaHpZe1?X)MiwE4##W{lRz_x%FEYua3;koNR7o~YwM`FiF%+N=ZuAH8V{zNiC6^CseVwF qzqN_)_8*}R=V`BtPfreK+auDE5ObqG^_>b(BZH@_pUXO@geCy+olwvK delta 116 zcmeyuznpJ^1rzJbjaHpZlk-@`Cf{Td2h(iKg_F%$)i%#%He{MSn=R6SiACu*0|Ubo zPZ!6KjC*fq?v^}kz|k`EOn23?GcDQTC)E$i^0zke-Toug;XLj2zY~*H*!PI2#{7C7 TsJrqrP$Pq @@ -98,6 +100,21 @@ :label="$t('output board setting')" :disable="loading" /> + + @@ -772,26 +789,6 @@ /> - - - - - - @@ -1022,6 +1019,229 @@ + + + + + + + + {{ + $t("user name") + ":" + }} + + + + + + {{ + $t("old password") + ":" + }} + + + + + + + + {{ + $t("new password") + ":" + }} + + + + + + + + + + + + + + + + + + + + {{ $t("product name") }}: + + + {{ $t("TV splicing box") }} + + + + + {{ $t("copyright") }}: + + + {{ $t("guangdong chuangxian jishu") }} LTD. + + + + {{ $t("client version") }}: + + + {{ client_version.version }} + + + + {{ $t("server version") }}: + + + {{ server_version }} + + + +
+ + {{ $t("server commit hash") }}: + + + {{ server_commit_hash }} + + + + {{ $t("server branch name") }}: + + + {{ server_branch_name }} + + + + {{ $t("server build date") }}: + + + {{ server_build_date }} + + + + {{ $t("kernel version") }}: + + + {{ kernel_version }} + + + + {{ $t("rootfs version") }}: + + + {{ rootfs_version }} + + +
+ + + + + + + + + + + + +
+
+
+
+
@@ -1101,6 +1321,18 @@ width: 20%; } +.width_5_5 { + width: 30%; +} + +.width_5_5_5 { + width: 35%; +} + +.width_5_6 { + width: 40%; +} + ._panel { padding: 3px; height: 60vh; @@ -1129,6 +1361,10 @@ import { AdvancedIpAddressEntity } from "src/entities/AdvancedIpAddressEntity"; import { EDeviceAttribute } from "src/entities/EDeviceAttribute"; +import version from "../../package.json"; + +import { Md5 } from "ts-md5"; + const _time_zones = [ "UTC-12(Central Pacific)", "UTC-11(Central Pacific)", @@ -1265,6 +1501,7 @@ export default defineComponent({ let other_form: Ref = ref(null); let graphics_form: Ref = ref(null); let output_board_form: Ref = ref(null); + const user_form: Ref = ref(null); let output_board_wall_row = ref(2); let output_board_wall_col = ref(2); @@ -1281,6 +1518,16 @@ export default defineComponent({ const timing_tasks: Ref = ref([]); + let click_count = ref(0); + const target_click_count = ref(30); + let client_version = ref(version); + let server_version = ref("unknow"); + let server_commit_hash = ref("unknow"); + let server_build_date = ref("unknow"); + let server_branch_name = ref("unknow"); + let kernel_version = ref("unknow"); + let rootfs_version = ref("unknow"); + const refresh_network = () => { const config = GlobalData.getInstance()?.applicationConfig; if (config) { @@ -1691,8 +1938,87 @@ export default defineComponent({ case "output_board": output_board_form.value.submit(); break; + case "user": + user_form.value.submit(); + break; } }; + + const applyUser = async () => { + loading.value = true; + console.log("zzz"); + const request = new Protocol.SetOutputBoardSettingRequestEntity(); + request.wall_col = parseInt(output_board_wall_col.value.toString()); + request.wall_row = parseInt(output_board_wall_row.value.toString()); + request.splicing = output_board_splicing.value == $t.t("on"); + request.vertical_blanking = parseInt( + output_board_vertical_blanking.value.toString() + ); + request.horizon_blanking = parseInt( + output_board_horizon_blanking.value.toString() + ); + request.rotate = parseInt(output_board_rotate.value.toString()); + request.volume = parseInt(output_board_volume.value.toString()); + request.mute = output_board_mute.value == $t.t("on"); + request.output_board_resolution = output_board_resolution.value; + + let success = false; + try { + const appconfig = GlobalData.getInstance().applicationConfig; + if ( + user_name.value.trim().length > 0 && + old_password.value.trim().length > 0 && + new_password.value.trim().length > 0 && + appconfig + ) { + const old_pwd = Md5.hashStr(old_password.value.trim()).toLowerCase(); + const new_pwd = Md5.hashStr(new_password.value.trim()).toLowerCase(); + if ( + appconfig.password && + appconfig.password.toLowerCase() == old_pwd + ) { + if (user_name.value.trim() != appconfig.user_name) { + GlobalData.getInstance() + .getCurrentClient() + ?.setUserName(user_name.value.trim()); + } + + if (new_pwd != old_pwd) { + GlobalData.getInstance().getCurrentClient()?.setPassword(new_pwd); + } + success = true; + } else { + $q.notify({ + color: "negative", + icon: "warning", + message: + $t.t("edit user or password") + + $t.t(" ") + + $t.t("fail") + + ", " + + $t.t("old password error") + + "!", + position: "top", + timeout: 2500, + }); + loading.value = false; + return; + } + } + } catch {} + $q.notify({ + color: success ? "positive" : "negative", + icon: success ? "done" : "warning", + message: + $t.t("edit user or password") + + (success ? $t.t("success") : $t.t("fail")) + + "!", + position: "top", + timeout: 2500, + }); + loading.value = false; + }; + const restoreOutputBoard = () => { GlobalData.getInstance().getCurrentClient()?.restoreOutputBoard(); }; @@ -1710,6 +2036,31 @@ export default defineComponent({ } }; + const user_name = ref( + GlobalData.getInstance().applicationConfig?.user_name ?? "admin" + ); + const old_password = ref(""); + const show_old_password = ref(false); + const new_password = ref(""); + const show_new_password = ref(false); + + watch( + () => tab.value, + (newV, oldV) => { + if (newV == "user") { + user_name.value = + GlobalData.getInstance().applicationConfig?.user_name ?? "admin"; + old_password.value = ""; + new_password.value = ""; + show_old_password.value = false; + show_new_password.value = false; + } + if (newV != "about") { + click_count.value = 0; + } + } + ); + return { show_dialog, e_week_Days: ref(EWeekDays), @@ -1761,7 +2112,22 @@ export default defineComponent({ other_form, graphics_form, output_board_form, + user_form, mirroring_output, + click_count, + target_click_count, + client_version, + server_version, + server_commit_hash, + server_build_date, + server_branch_name, + kernel_version, + rootfs_version, + user_name, + old_password, + new_password, + show_new_password, + show_old_password, refresh_all, apply, restoreOutputBoard, @@ -1769,6 +2135,7 @@ export default defineComponent({ applyGraphics, applyOther, applyOutputBoard, + applyUser, loga(a: any) { console.log(a); }, @@ -1785,8 +2152,26 @@ export default defineComponent({ }); refresh_all(); + + try { + GlobalData.getInstance() + .getCurrentClient() + ?.getBuildInfo() + ?.then((build_info) => { + if (build_info) { + server_version.value = build_info.version; + server_commit_hash.value = build_info.commit_hash; + server_build_date.value = build_info.build_date; + server_branch_name.value = build_info.branch_name; + kernel_version.value = build_info.kernel_version; + rootfs_version.value = build_info.rootfs_version; + } + }); + // console.log(build_info); + } catch {} }, resetData() { + click_count.value = 0; loading.value = false; tab.value = "network"; }, diff --git a/src/components/custom/ISVVideoWallDialog.vue b/src/components/custom/ISVVideoWallDialog.vue index 3240d33..4f70327 100644 --- a/src/components/custom/ISVVideoWallDialog.vue +++ b/src/components/custom/ISVVideoWallDialog.vue @@ -98,33 +98,32 @@ - -
+ +
-
+
-   HI: {{ (row - 1) * preview_cols + col }} +   HDMI Port: + {{ (row - 1) * preview_cols + col }}
(row - 1) * preview_cols + col - 1 " > -   SI: +   Splice Index: {{ (outputs[(row - 1) * preview_cols + col - 1] .output_index ?? (row - 1) * preview_cols + col) + 1 @@ -219,12 +218,21 @@