From cf98b9ba08d2fbe041b1c90203f194b9b444da2d Mon Sep 17 00:00:00 2001 From: fangxiang Date: Fri, 29 Jul 2022 11:00:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BD=AE=E8=AF=A2=E3=80=81?= =?UTF-8?q?=E9=A2=84=E6=A1=88=E5=86=85=E5=AE=B9=E6=97=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E5=88=97=E8=A1=A8=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/TableAddRowHelper.ts | 37 +++++++++++++++++++++++++ src/components/PlanDialog.vue | 32 +++++++++++++++++---- src/components/PollingSettingDialog.vue | 34 ++++++++++++++++++++--- 3 files changed, 93 insertions(+), 10 deletions(-) create mode 100644 src/common/TableAddRowHelper.ts diff --git a/src/common/TableAddRowHelper.ts b/src/common/TableAddRowHelper.ts new file mode 100644 index 0000000..b6977ad --- /dev/null +++ b/src/common/TableAddRowHelper.ts @@ -0,0 +1,37 @@ +export interface ShowProupParam { + refs: any; + ref_name: string; + delay: number; + count: number; + max_count: number; +} + +export class TableAddRowHelper { + private timer_handler: any = null; + + showProup(param: ShowProupParam) { + if (this.timer_handler) { + clearTimeout(this.timer_handler); + this.timer_handler = null; + } + this.show_proup(param); + } + + private show_proup = (param: ShowProupParam) => { + this.timer_handler = setTimeout(() => { + param.count += param.delay; + if (param.count > param.max_count) { + console.log("errrrrrrrrr"); + return; + } + if (param.refs) { + const dom = param.refs[param.ref_name]; + if (dom) { + dom.show(); + } else { + this.show_proup(param); + } + } + }, param.delay); + }; +} diff --git a/src/components/PlanDialog.vue b/src/components/PlanDialog.vue index 41fcc30..21856e4 100644 --- a/src/components/PlanDialog.vue +++ b/src/components/PlanDialog.vue @@ -146,7 +146,10 @@ {{ props.pageIndex + 1 }}
- + {{ $t("delete row") }} - + {{ $t("add row") }} @@ -406,14 +416,18 @@ import { useI18n } from "vue-i18n"; import { StringKeyValueEntity } from "src/entities/StringKeyValueEntity"; import { PlanEntity } from "src/entities/PlanEntity"; import { EWeekDays } from "src/entities/EWeekDays"; +import { TableAddRowHelper } from "src/common/TableAddRowHelper"; const __MIN_DELAY = 10; +const __DEFAULT_DELAY = 60; class TableRow { uuid = ""; delay = __MIN_DELAY; } +const table_add_row_helper = new TableAddRowHelper(); + export default defineComponent({ name: "ComponentPlanDialog", @@ -729,13 +743,19 @@ export default defineComponent({ addRow(insert_flag: boolean = false) { const item = { uuid: GlobalData.getInstance().modes[0].uuid, - delay: __MIN_DELAY, + delay: __DEFAULT_DELAY, }; - if (insert_flag) { datas.value.splice(current_index + 1, 0, item); } else { datas.value.push(item); + table_add_row_helper.showProup({ + refs: (this).$refs, + ref_name: "popup_edit" + (datas.value.length - 1), + delay: 5, + count: 0, + max_count: 5000, + }); } }, onContextMenu( diff --git a/src/components/PollingSettingDialog.vue b/src/components/PollingSettingDialog.vue index 84c12ba..d50f5c7 100644 --- a/src/components/PollingSettingDialog.vue +++ b/src/components/PollingSettingDialog.vue @@ -72,6 +72,7 @@ :rows-per-page-options="[0]" :virtual-scroll-sticky-size-start="48" @row-contextmenu="onContextMenu" + ref="polling_table" >