diff --git a/package.json b/package.json index 46812b6..797ec0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "media_player_client", - "version": "1.4.12", + "version": "1.4.13", "description": "A Quasar Framework app", "productName": "MediaPlayerClient", "author": "fangxiang ", @@ -10,7 +10,7 @@ }, "dependencies": { "@quasar/cli": "^1.3.2", - "@quasar/extras": "^1.13.4", + "@quasar/extras": "^1.14.0", "@tinymce/tinymce-vue": "4", "@types/element-resize-detector": "^1.1.3", "autoprefixer": "^10.4.2", @@ -18,7 +18,7 @@ "core-js": "^3.21.0", "element-resize-detector": "^1.2.4", "qrcode.vue": "^3.3.3", - "quasar": "^2.6.2", + "quasar": "^2.7.1", "reconnecting-websocket": "^4.4.0", "sortablejs": "^1.15.0", "to": "^0.2.9", diff --git a/src/App.vue b/src/App.vue index 655f706..e406161 100644 --- a/src/App.vue +++ b/src/App.vue @@ -31,6 +31,17 @@ export default defineComponent({ document.title = $t.t("title"); + // 导入对应的quasar 语言包 + try { + { + import("quasar/lang/" + $t.locale.value).then((lang) => { + $q.lang.set(lang.default); + }); + } + } catch (e) { + console.log(e); + } + window.onresize = (evt: any) => EventBus.getInstance().emit(EventNamesDefine.WindowResize, evt); diff --git a/src/boot/i18n.ts b/src/boot/i18n.ts index 666d532..9a7a085 100644 --- a/src/boot/i18n.ts +++ b/src/boot/i18n.ts @@ -4,8 +4,6 @@ import { Cookies } from "quasar"; import messages from "src/i18n"; -console.log(); - let language = Cookies.get("language"); // 如果 cookie 中没有语言信息,则使用服务器给的语言 diff --git a/src/components/CenterControlButtonDialog.vue b/src/components/CenterControlButtonDialog.vue index 8ced2f3..8d89bbd 100644 --- a/src/components/CenterControlButtonDialog.vue +++ b/src/components/CenterControlButtonDialog.vue @@ -253,7 +253,7 @@ export default defineComponent({ if (item.length > 4) { return false; } - if (!/^0[xX]?[A-Fa-f0-9]/.test(item)) { + if (!/^0[xX][A-Fa-f0-9]{1,2}/.test(item)) { return false; } } diff --git a/src/components/ModeTree.vue b/src/components/ModeTree.vue index 4bb3347..e1c2220 100644 --- a/src/components/ModeTree.vue +++ b/src/components/ModeTree.vue @@ -9,6 +9,7 @@ -
-
- {{ props.value }}{{ $t("s") }} - - - - - -
-
- + {{ props.pageIndex + 1 }} +
+
+ + - - - - - {{ - modes.find( - (element) => - element && element.uuid == props.row.value - )?.name ?? "" - }} -
+ >({{ prop.node.item_data?.number }}) + +   {{ prop.node.name }} +
+ +
+ + + + {{ + modes.find( + (element) => element && element.uuid == props.value + )?.name ?? "" + }} + +
+ {{ props.value }}{{ $t("s") }} + + + + +
{{ $t(props.value) }} @@ -393,6 +388,11 @@ import { EWeekDays } from "src/entities/EWeekDays"; const __MIN_DELAY = 10; +class TableRow { + uuid = ""; + delay = __MIN_DELAY; +} + export default defineComponent({ name: "ComponentPlanDialog", @@ -408,22 +408,29 @@ export default defineComponent({ let uuid = ref(""); const selected: any = ref(null); let loading = ref(false); - let datas: Ref = ref([]); + let datas: Ref = ref([]); let modes = ref(GlobalData.getInstance().modes); const columns = [ { align: "left", - name: "key", + name: "index", required: true, - label: $t.t("operator"), - field: "key", + label: $t.t("No."), sortable: false, }, { align: "left", - name: "value", - label: $t.t("operator value"), - field: "value", + name: "uuid", + required: true, + label: $t.t("signal source"), + field: "uuid", + sortable: false, + }, + { + align: "left", + name: "delay", + label: $t.t("delay"), + field: "delay", sortable: false, }, ]; @@ -459,15 +466,26 @@ export default defineComponent({ const requestAddPlan = async () => { let entity = new PlanEntity(); - for (let i = 1; i < datas.value.length; i += 2) { - if (parseInt(datas.value[i].value) < __MIN_DELAY) { - datas.value[i].value = __MIN_DELAY.toString(); + + const __datas: StringKeyValueEntity[] = []; + + for (const item of datas.value) { + if (item) { + __datas.push({ + key: "operator_call_mode", + value: item.uuid, + }); + __datas.push({ + key: "param_delay", + value: item.delay.toString(), + }); } } + entity.group_uuid = selected.value; entity.uuid = uuid.value; entity.name = name.value ?? ""; - entity.datas = datas.value; + entity.datas = __datas; entity.time_ = time_.value; entity.timing_cycle = timing_cycle.value == $t.t("enable"); entity.week_days = EWeekDays.EWeekNone; @@ -497,15 +515,26 @@ export default defineComponent({ const requestEditPlan = async () => { let entity = new PlanEntity(); - for (let i = 1; i < datas.value.length; i += 2) { - if (parseInt(datas.value[i].value) < __MIN_DELAY) { - datas.value[i].value = __MIN_DELAY.toString(); + + const __datas: StringKeyValueEntity[] = []; + + for (const item of datas.value) { + if (item) { + __datas.push({ + key: "operator_call_mode", + value: item.uuid, + }); + __datas.push({ + key: "param_delay", + value: item.delay.toString(), + }); } } + entity.group_uuid = selected.value; entity.uuid = uuid.value; entity.name = name.value ?? ""; - entity.datas = datas.value; + entity.datas = __datas; entity.time_ = time_.value; entity.timing_cycle = timing_cycle.value == $t.t("enable"); entity.week_days = EWeekDays.EWeekNone; @@ -562,6 +591,7 @@ export default defineComponent({ console.log(a); }, showDialog(options: any) { + let __datas: StringKeyValueEntity[] = []; if (options) { type.value = options.type ?? 1; time_.value = "09:00:00"; @@ -577,39 +607,43 @@ export default defineComponent({ timing_cycle.value = options.data?.item_data?.timing_cycle ? $t.t("enable") : $t.t("disable"); - datas.value = JSON.parse( + __datas = JSON.parse( JSON.stringify(options.data?.item_data?.datas ?? []) ); } else { name.value = options.data?.name ?? $t.t("new plan 1"); selected.value = options.data?.uuid ?? null; uuid.value = options.data?.uuid ?? null; - datas.value = options.data?.item_data?.datas ?? []; + __datas = options.data?.item_data?.datas ?? []; } modes.value = GlobalData.getInstance().modes; - let temp = []; + datas.value = []; + let auto_removed = false; for ( let i = 0; - i < - (datas.value.length % 2 - ? datas.value.length - 1 - : datas.value.length); + i < (__datas.length % 2 ? __datas.length - 1 : __datas.length); i += 2 ) { - const item = datas.value[i]; + const uuid_item = __datas[i]; + const delay_item = __datas[i + 1]; - if (item && item.key.startsWith("operator_")) { + if (uuid_item && uuid_item.key.startsWith("operator_")) { const item_value = GlobalData.getInstance().modes.find( - (element) => element && element.uuid == item.value + (element) => element && element.uuid == uuid_item.value ); + const delay = parseInt(delay_item.value); if (item_value) { - temp.push(datas.value[i]); - temp.push(datas.value[i + 1]); + datas.value.push({ + uuid: uuid_item.value, + delay: isNaN(delay) ? __MIN_DELAY : delay, + }); } + } else { + auto_removed = true; } } - if (temp.length != datas.value.length) { + if (auto_removed) { $q.notify({ type: "warning", message: $t.t("auto delete unknow mode success"), @@ -617,7 +651,6 @@ export default defineComponent({ timeout: 1500, }); } - datas.value = temp; // format time { @@ -634,9 +667,9 @@ export default defineComponent({ } } - for (let i = 1; i < datas.value.length; i += 2) { - if (parseInt(datas.value[i].value) < __MIN_DELAY) { - datas.value[i].value = __MIN_DELAY.toString(); + for (const item of datas.value) { + if (item.delay < __MIN_DELAY) { + item.delay = __MIN_DELAY; } } @@ -665,16 +698,17 @@ export default defineComponent({ treeNodesFilter(node: any, filter: any) { return node.is_group; }, - addRow() { - datas.value.push({ - key: "operator_call_mode", - value: GlobalData.getInstance().modes[0].uuid, - }); + addRow(insert_flag: boolean = false) { + const item = { + uuid: GlobalData.getInstance().modes[0].uuid, + delay: __MIN_DELAY, + }; - datas.value.push({ - key: "param_delay", - value: __MIN_DELAY.toString(), - }); + if (insert_flag) { + datas.value.splice(current_index + 1, 0, item); + } else { + datas.value.push(item); + } }, onContextMenu( evt: PointerEvent, diff --git a/src/components/PlanTree.vue b/src/components/PlanTree.vue index e526baf..4bccca3 100644 --- a/src/components/PlanTree.vue +++ b/src/components/PlanTree.vue @@ -9,6 +9,7 @@ - + -
-
- {{ props.value }}{{ $t("s") }} - - - - - -
-
- + {{ props.pageIndex + 1 }} +
+
+ + - - - - - {{ - signals.find( - (element) => - element && element.uuid == props.row.value - )?.name ?? "" - }} -
+ + + + {{ + signals.find( + (element) => + element && element.uuid == props.row.uuid + )?.name ?? "" + }}
-
- {{ $t(props.value) }} +
+ {{ props.value }}{{ $t("s") }} + + + + +
+
UNKNOW
@@ -173,7 +169,7 @@ flat :label="$t('add row')" color="primary" - @click="addRow" + @click="addRow(false)" /> {{ $t("delete row") }} - + {{ $t("add row") }} @@ -236,6 +232,11 @@ import { Common } from "src/common/Common"; const __MIN_DELAY = 10; +class TableRow { + uuid = ""; + delay = __MIN_DELAY; +} + export default defineComponent({ name: "ComponentPollingSettingDialog", @@ -248,24 +249,31 @@ export default defineComponent({ let show_dialog = ref(false); let loading = ref(false); - let datas: Ref = ref([]); + let datas: Ref = ref([]); let signals = ref(GlobalData.getInstance().signal_source); let polling_name = ref(""); const columns = [ { align: "left", - name: "key", + name: "index", required: true, - label: $t.t("operator"), - field: "key", + label: $t.t("No."), sortable: false, }, { align: "left", - name: "value", - label: $t.t("operator value"), - field: "value", + name: "uuid", + required: true, + label: $t.t("signal source"), + field: "uuid", + sortable: false, + }, + { + align: "left", + name: "delay", + label: $t.t("delay"), + field: "delay", sortable: false, }, ]; @@ -293,8 +301,18 @@ export default defineComponent({ show_dialog.value = true; if (options) { datas.value = []; - for (const item of options) { - datas.value.push(item); + if (options.length % 2) { + options.splice(options.length - 1, 1); + } + for (let i = 0; i < options.length; i += 2) { + const item_signal = options[i]; + const item_delay = options[i + 1]; + if (item_signal && item_delay) { + datas.value.push({ + uuid: item_signal.value, + delay: parseInt(item_delay.value), + }); + } } } polling_name.value = name ?? $t.t("new polling"); @@ -306,13 +324,25 @@ export default defineComponent({ _resolve = null; } _resolve = resolve; + show_dialog.value = true; if (options) { datas.value = []; - for (const item of options) { - datas.value.push(item); + + for ( + let i = 0; + i < (options.length % 2 ? options.length - 1 : options.length); + i += 2 + ) { + const item_signal = options[i]; + const item_delay = options[i + 1]; + if (item_signal && item_delay) { + datas.value.push({ + uuid: item_signal.value, + delay: parseInt(item_delay.value), + }); + } } - signals.value = GlobalData.getInstance().signal_source; } polling_name.value = name ?? $t.t("new polling"); }); @@ -324,16 +354,17 @@ export default defineComponent({ _resolve = null; } }, - addRow() { - datas.value.push({ - key: "operator_play_signal_source", - value: GlobalData.getInstance().signal_source[0].uuid, - }); + addRow(insert_flag: boolean = false) { + const item = { + uuid: GlobalData.getInstance().signal_source[0].uuid, + delay: __MIN_DELAY, + }; + if (insert_flag) { + datas.value.splice(current_index + 1, 0, item); + } else { + datas.value.push(item); + } - datas.value.push({ - key: "param_delay", - value: __MIN_DELAY.toString(), - }); signals.value = GlobalData.getInstance().signal_source; }, onContextMenu( @@ -352,19 +383,29 @@ export default defineComponent({ }, deleteRow() { if (datas.value.length > current_index) { - const start = Math.floor(current_index / 2); - if (!isNaN(start)) { - datas.value.splice(start, 2); - } + datas.value.splice(current_index, 1); } }, async onSubmit() { loading.value = true; try { + let __datas: StringKeyValueEntity[] = []; + for (const item of datas.value) { + if (item) { + __datas.push({ + key: "operator_play_signal_source", + value: item.uuid, + }); + __datas.push({ + key: "param_delay", + value: item.delay.toString(), + }); + } + } if (_resolve) { _resolve({ name: polling_name.value, - datas: datas.value, + datas: __datas, }); _resolve = null; } diff --git a/src/components/PollingTree.vue b/src/components/PollingTree.vue index 1995eea..6cee365 100644 --- a/src/components/PollingTree.vue +++ b/src/components/PollingTree.vue @@ -8,8 +8,9 @@