diff --git a/src/widget/collapse/collapse.js b/src/widget/collapse/collapse.js index 4111a23ce..5c7b1c5ac 100644 --- a/src/widget/collapse/collapse.js +++ b/src/widget/collapse/collapse.js @@ -1,11 +1,23 @@ -import { shortcut, Widget, map, extend, isFunction, contains, each, isKey, isNotEmptyArray } from "@/core"; +import { + VerticalLayout, + shortcut, + Widget, + map, + extend, + isFunction, + contains, + each, + isKey, + isNotEmptyArray +} from "@/core"; +import { ArrowNode } from "@/case"; import { Expander } from "@/base"; @shortcut() export class Collapse extends Widget { - static xtype = "bi.collapse" + static xtype = "bi.collapse"; - static EVENT_EXPAND = "EVENT_EXPAND" + static EVENT_EXPAND = "EVENT_EXPAND"; props = { baseCls: "bi-collapse", @@ -30,10 +42,9 @@ export class Collapse extends Widget { this.expanders = {}; return { - type: "bi.vertical", + type: VerticalLayout.xtype, cls: collapseCls, items: this._getItems(this.options.items), - }; } @@ -44,46 +55,58 @@ export class Collapse extends Widget { const isActive = contains(this._getCurrentValue(o.value), item.value); const cls = o.ghost || index === 0 ? "" : "bi-border-top"; - const el = extend({ - type: "bi.arrow_group_node", - height: 30, - text: item.text, - value: item.value, - open: isActive, - }, item.el); - - const popup = extend({ - animation: o.openMotion.animation, - animationDuring: o.openMotion.animationDuring, - }, item.popup); - - return extend({ - type: "bi.expander", - cls, - isDefaultInit: o.isDefaultInit, - trigger: o.trigger, - listeners: [{ - eventName: Expander.EVENT_EXPAND, - action: () => { - this._hideOtherExpander(item.value); - this.fireEvent(Collapse.EVENT_EXPAND, item.value); - }, - }], - }, item, { - el, - popup, - ref: _ref => { - isFunction(item.ref) && item.ref(_ref); - this.expanders[item.value] = _ref; + const el = extend( + { + type: ArrowNode.xtype, + height: 30, + text: item.text, + value: item.value, + open: isActive, }, - }); + item.el + ); + + const popup = extend( + { + animation: o.openMotion.animation, + animationDuring: o.openMotion.animationDuring, + }, + item.popup + ); + + return extend( + { + type: Expander.xtype, + cls, + isDefaultInit: o.isDefaultInit, + trigger: o.trigger, + listeners: [ + { + eventName: Expander.EVENT_EXPAND, + action: () => { + this._hideOtherExpander(item.value); + this.fireEvent(Collapse.EVENT_EXPAND, item.value); + }, + } + ], + }, + item, + { + el, + popup, + ref: _ref => { + isFunction(item.ref) && item.ref(_ref); + this.expanders[item.value] = _ref; + }, + } + ); }); } _hideOtherExpander(expandKey) { if (this.options.accordion) { each(this.expanders, (key, expander) => { - key !== (`${expandKey}`) && expander.hideView(); + key !== `${expandKey}` && expander.hideView(); }); } } diff --git a/src/widget/date/calendar/combo.month.date.js b/src/widget/date/calendar/combo.month.date.js index 565745c4e..cb01f09d2 100644 --- a/src/widget/date/calendar/combo.month.date.js +++ b/src/widget/date/calendar/combo.month.date.js @@ -1,6 +1,7 @@ -import { shortcut, extend, createWidget } from "@/core"; -import { Trigger, Combo } from "@/base"; +import { DateTriangleTrigger } from "./trigger.triangle.date"; import { MonthPopup } from "./popup.month"; +import { Combo, Trigger } from "@/base"; +import { VerticalLayout, shortcut, extend, createWidget } from "@/core"; /** * 日期控件中的月份下拉框 @@ -11,9 +12,9 @@ import { MonthPopup } from "./popup.month"; */ @shortcut() export class MonthDateCombo extends Trigger { - static xtype = "bi.month_date_combo" + static xtype = "bi.month_date_combo"; - static EVENT_CHANGE = "EVENT_CHANGE" + static EVENT_CHANGE = "EVENT_CHANGE"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -28,11 +29,11 @@ export class MonthDateCombo extends Trigger { const o = this.options; this.trigger = createWidget({ - type: "bi.date_triangle_trigger", + type: DateTriangleTrigger.xtype, }); this.popup = createWidget({ - type: "bi.month_popup", + type: MonthPopup.xtype, allowMonths: o.allowMonths, behaviors: o.behaviors, }); @@ -44,7 +45,7 @@ export class MonthDateCombo extends Trigger { }); this.combo = createWidget({ - type: "bi.combo", + type: Combo.xtype, offsetStyle: "center", container: o.container, element: this, @@ -55,7 +56,7 @@ export class MonthDateCombo extends Trigger { minWidth: 100, stopPropagation: false, el: { - type: "bi.vertical", + type: VerticalLayout.xtype, hgap: 6, vgap: 5, items: [this.popup], diff --git a/src/widget/date/calendar/combo.year.date.js b/src/widget/date/calendar/combo.year.date.js index b3f883b12..5cd38b3b8 100644 --- a/src/widget/date/calendar/combo.year.date.js +++ b/src/widget/date/calendar/combo.year.date.js @@ -1,6 +1,7 @@ -import { shortcut, extend, createWidget } from "@/core"; -import { Trigger, Combo } from "@/base"; +import { DateTriangleTrigger } from "./trigger.triangle.date"; import { YearPopup } from "./popup.year"; +import { Combo, Trigger } from "@/base"; +import { shortcut, extend, createWidget } from "@/core"; /** * 年份下拉框 @@ -11,10 +12,10 @@ import { YearPopup } from "./popup.year"; */ @shortcut() export class YearDateCombo extends Trigger { - static xtype = "bi.year_date_combo" + static xtype = "bi.year_date_combo"; - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -32,11 +33,11 @@ export class YearDateCombo extends Trigger { const o = this.options; this.trigger = createWidget({ - type: "bi.date_triangle_trigger", + type: DateTriangleTrigger.xtype, }); this.popup = createWidget({ - type: "bi.year_popup", + type: YearPopup.xtype, behaviors: o.behaviors, min: o.min, max: o.max, @@ -50,7 +51,7 @@ export class YearDateCombo extends Trigger { }); this.combo = createWidget({ - type: "bi.combo", + type: Combo.xtype, offsetStyle: "center", element: this, container: o.container, diff --git a/src/widget/date/calendar/picker.date.js b/src/widget/date/calendar/picker.date.js index a5a23ae11..d73b4aa29 100644 --- a/src/widget/date/calendar/picker.date.js +++ b/src/widget/date/calendar/picker.date.js @@ -1,7 +1,23 @@ -import { shortcut, Widget, extend, createWidget, contains, isNull, getDate, filter, range, checkDateVoid, parseDateTime, parseInt, print } from "@/core"; import { IconButton } from "@/base"; import { YearDateCombo } from "./combo.year.date"; import { MonthDateCombo } from "./combo.month.date"; +import { + HTapeLayout, + CenterAdaptLayout, + shortcut, + Widget, + extend, + createWidget, + contains, + isNull, + getDate, + filter, + range, + checkDateVoid, + parseDateTime, + parseInt, + print +} from "@/core"; /** * Created by GUY on 2015/9/7. @@ -10,10 +26,10 @@ import { MonthDateCombo } from "./combo.month.date"; */ @shortcut() export class DatePicker extends Widget { - static xtype = "bi.date_picker" + static xtype = "bi.date_picker"; - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; _defaultConfig() { const conf = super._defaultConfig(...arguments); @@ -32,7 +48,7 @@ export class DatePicker extends Widget { this._year = getDate().getFullYear(); this._month = getDate().getMonth() + 1; this.left = createWidget({ - type: "bi.icon_button", + type: IconButton.xtype, cls: "pre-page-h-font", width: 24, height: 24, @@ -40,13 +56,13 @@ export class DatePicker extends Widget { this.left.on(IconButton.EVENT_CHANGE, () => { if (this._month === 1) { this.setValue({ - year: (this.year.getValue() - 1) || (getDate().getFullYear() - 1), + year: this.year.getValue() - 1 || getDate().getFullYear() - 1, month: 12, }); } else { this.setValue({ year: this.year.getValue() || getDate().getFullYear(), - month: (this.month.getValue() - 1) || getDate().getMonth(), + month: this.month.getValue() - 1 || getDate().getMonth(), }); } this.fireEvent(DatePicker.EVENT_CHANGE); @@ -55,7 +71,7 @@ export class DatePicker extends Widget { }); this.right = createWidget({ - type: "bi.icon_button", + type: IconButton.xtype, cls: "next-page-h-font", width: 24, height: 24, @@ -64,13 +80,13 @@ export class DatePicker extends Widget { this.right.on(IconButton.EVENT_CHANGE, () => { if (this._month === 12) { this.setValue({ - year: (this.year.getValue() + 1) || (getDate().getFullYear() + 1), + year: this.year.getValue() + 1 || getDate().getFullYear() + 1, month: 1, }); } else { this.setValue({ year: this.year.getValue() || getDate().getFullYear(), - month: (this.month.getValue() + 1) || (getDate().getMonth() + 2), + month: this.month.getValue() + 1 || getDate().getMonth() + 2, }); } this.fireEvent(DatePicker.EVENT_CHANGE); @@ -79,7 +95,7 @@ export class DatePicker extends Widget { }); this.year = createWidget({ - type: "bi.year_date_combo", + type: YearDateCombo.xtype, behaviors: o.behaviors, min: o.min, max: o.max, @@ -95,7 +111,7 @@ export class DatePicker extends Widget { this.fireEvent(DatePicker.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); }); this.month = createWidget({ - type: "bi.month_date_combo", + type: MonthDateCombo.xtype, behaviors: o.behaviors, allowMonths: this._getAllowMonths(), }); @@ -111,27 +127,31 @@ export class DatePicker extends Widget { }); createWidget({ - type: "bi.htape", + type: HTapeLayout.xtype, element: this, - items: [{ - el: { - type: "bi.center_adapt", - items: [this.left], + items: [ + { + el: { + type: CenterAdaptLayout.xtype, + items: [this.left], + }, + width: 24, }, - width: 24, - }, { - el: { - type: "bi.center_adapt", - hgap: 10, - items: [this.year, this.month], + { + el: { + type: CenterAdaptLayout.xtype, + hgap: 10, + items: [this.year, this.month], + }, }, - }, { - el: { - type: "bi.center_adapt", - items: [this.right], + { + el: { + type: CenterAdaptLayout.xtype, + items: [this.right], + }, + width: 24, }, - width: 24, - }], + ], }); this.setValue({ year: this._year, @@ -147,7 +167,7 @@ export class DatePicker extends Widget { month = defaultMonth || allowMonth[0]; } this.month.setValue(month); - + return month; } diff --git a/src/widget/date/calendar/picker.year.js b/src/widget/date/calendar/picker.year.js index cced43639..71342bed2 100644 --- a/src/widget/date/calendar/picker.year.js +++ b/src/widget/date/calendar/picker.year.js @@ -1,17 +1,17 @@ -import { shortcut, Widget, extend, createWidget, getDate, parseDateTime } from "@/core"; -import { IconButton } from "@/base"; import { YearDateCombo } from "./combo.year.date"; +import { HTapeLayout, CenterAdaptLayout, shortcut, Widget, extend, createWidget, getDate, parseDateTime } from "@/core"; +import { IconButton } from "@/base"; @shortcut() export class YearPicker extends Widget { - static xtype = "bi.year_picker" + static xtype = "bi.year_picker"; - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; _defaultConfig() { const conf = super._defaultConfig(...arguments); - + return extend(conf, { baseCls: "bi-year-picker", behaviors: {}, @@ -53,7 +53,7 @@ export class YearPicker extends Widget { }); this.year = createWidget({ - type: "bi.year_date_combo", + type: YearDateCombo.xtype, min: o.min, behaviors: o.behaviors, max: o.max, @@ -68,26 +68,32 @@ export class YearPicker extends Widget { }); createWidget({ - type: "bi.htape", + type: HTapeLayout.xtype, element: this, - items: [{ - el: { - type: "bi.center_adapt", - items: [this.left], + items: [ + { + el: { + type: CenterAdaptLayout.xtype, + items: [this.left], + }, + width: 25, }, - width: 25, - }, { - type: "bi.center_adapt", - items: [{ - el: this.year, - }], - }, { - el: { - type: "bi.center_adapt", - items: [this.right], + { + type: CenterAdaptLayout.xtype, + items: [ + { + el: this.year, + }, + ], }, - width: 25, - }], + { + el: { + type: CenterAdaptLayout.xtype, + items: [this.right], + }, + width: 25, + }, + ], }); this.setValue(this._year); } @@ -96,7 +102,7 @@ export class YearPicker extends Widget { const o = this.options; const valid = this._year > parseDateTime(o.min, "%Y-%X-%d").getFullYear(); this.left.setEnable(valid); - + return valid; } @@ -104,7 +110,7 @@ export class YearPicker extends Widget { const o = this.options; const valid = this._year < parseDateTime(o.max, "%Y-%X-%d").getFullYear(); this.right.setEnable(valid); - + return valid; } diff --git a/src/widget/date/calendar/popup.calendar.date.js b/src/widget/date/calendar/popup.calendar.date.js index a3180e334..df5d81a43 100644 --- a/src/widget/date/calendar/popup.calendar.date.js +++ b/src/widget/date/calendar/popup.calendar.date.js @@ -1,7 +1,18 @@ -import { shortcut, Widget, createWidget, bind, getDate, each, isNotEmptyString } from "@/core"; -import { Navigation } from "@/base"; import { Calendar } from "@/case"; import { DatePicker } from "./picker.date"; +import { Navigation } from "@/base"; +import { + VerticalLayout, + AbsoluteLayout, + Layout, + shortcut, + Widget, + createWidget, + bind, + getDate, + each, + isNotEmptyString +} from "@/core"; /** * Created by GUY on 2015/9/7. @@ -10,7 +21,7 @@ import { DatePicker } from "./picker.date"; */ @shortcut() export class DateCalendarPopup extends Widget { - static xtype = "bi.date_calendar_popup" + static xtype = "bi.date_calendar_popup"; props = { baseCls: "bi-date-calendar-popup", @@ -19,14 +30,13 @@ export class DateCalendarPopup extends Widget { selectedTime: null, }; - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" - + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; _createNav(v) { const date = Calendar.getDateJSONByPage(v); const calendar = createWidget({ - type: "bi.calendar", + type: Calendar.xtype, logic: { dynamic: true, }, @@ -37,7 +47,7 @@ export class DateCalendarPopup extends Widget { // BI-45616 此处为确定当前应该展示哪个年月对应的Calendar, day不是关键数据, 给1号就可 day: 1, }); - + return calendar; } @@ -54,7 +64,7 @@ export class DateCalendarPopup extends Widget { day: this._day, }; this.datePicker = createWidget({ - type: "bi.date_picker", + type: DatePicker.xtype, behaviors: o.behaviors, min: o.min, max: o.max, @@ -65,13 +75,11 @@ export class DateCalendarPopup extends Widget { logic: { dynamic: true, }, - type: "bi.navigation", + type: Navigation.xtype, tab: this.datePicker, cardCreator: bind(this._createNav, this), - afterCardCreated () { - - }, + afterCardCreated() {}, afterCardShow: () => { this.calendar.setValue(this.selectedTime); @@ -94,26 +102,33 @@ export class DateCalendarPopup extends Widget { this.fireEvent(DateCalendarPopup.EVENT_CHANGE); }); - return [{ - type: "bi.vertical", - items: [{ - el: this.calendar, - hgap: 12, - bgap: 7, - }], - }, { - type: "bi.absolute", - items: [{ - el: { - type: "bi.layout", - cls: "bi-split-top", - }, - height: 1, - top: 40, - left: 0, - right: 0, - }], - }]; + return [ + { + type: VerticalLayout.xtype, + items: [ + { + el: this.calendar, + hgap: 12, + bgap: 7, + } + ], + }, + { + type: AbsoluteLayout.xtype, + items: [ + { + el: { + type: Layout.xtype, + cls: "bi-split-top", + }, + height: 1, + top: 40, + left: 0, + right: 0, + } + ], + } + ]; } _checkMin() { diff --git a/src/widget/date/calendar/popup.month.js b/src/widget/date/calendar/popup.month.js index 2c859c660..32c3b6f5a 100644 --- a/src/widget/date/calendar/popup.month.js +++ b/src/widget/date/calendar/popup.month.js @@ -1,4 +1,20 @@ -import { shortcut, Widget, extend, Controller, createWidget, Events, createItems, toPix, map, contains, getDate, LogicFactory, parseInt } from "@/core"; +import { ButtonGroup, TextItem } from "@/base"; +import { + CenterAdaptLayout, + shortcut, + Widget, + extend, + Controller, + createWidget, + Events, + createItems, + toPix, + map, + contains, + getDate, + LogicFactory, + parseInt +} from "@/core"; /** * 月份展示面板 @@ -9,9 +25,9 @@ import { shortcut, Widget, extend, Controller, createWidget, Events, createItems */ @shortcut() export class MonthPopup extends Widget { - static xtype = "bi.month_popup" + static xtype = "bi.month_popup"; - static EVENT_CHANGE = "EVENT_CHANGE" + static EVENT_CHANGE = "EVENT_CHANGE"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -27,21 +43,30 @@ export class MonthPopup extends Widget { this.selectedMonth = getDate().getMonth() + 1; this.month = createWidget({ - type: "bi.button_group", + type: ButtonGroup.xtype, element: this, behaviors: o.behaviors, items: createItems(this._getItems(o.allowMonths), {}), - layouts: [LogicFactory.createLogic("table", extend({ - dynamic: true, - }, { - columns: 2, - rows: 6, - columnSize: [1 / 2, 1 / 2], - rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, - })), { - type: "bi.center_adapt", - vgap: 2, - }], + layouts: [ + LogicFactory.createLogic( + "table", + extend( + { + dynamic: true, + }, + { + columns: 2, + rows: 6, + columnSize: [1 / 2, 1 / 2], + rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, + } + ) + ), + { + type: CenterAdaptLayout.xtype, + vgap: 2, + } + ], value: o.value, }); @@ -66,21 +91,23 @@ export class MonthPopup extends Widget { items.push(month.slice(6, 8)); items.push(month.slice(8, 10)); items.push(month.slice(10, 12)); - items = map(items, (i, item) => map(item, (j, td) => { - return { - type: "bi.text_item", - cls: "bi-border-radius bi-list-item-select", - textAlign: "center", - whiteSpace: "nowrap", - once: false, - forceSelected: true, - height: toPix(BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, 1), - width: 30, - value: td, - text: td, - disabled: !contains(m, td), - }; - })); + items = map(items, (i, item) => + map(item, (j, td) => { + return { + type: TextItem.xtype, + cls: "bi-border-radius bi-list-item-select", + textAlign: "center", + whiteSpace: "nowrap", + once: false, + forceSelected: true, + height: toPix(BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, 1), + width: 30, + value: td, + text: td, + disabled: !contains(m, td), + }; + }) + ); Widget.popContext(); return items; diff --git a/src/widget/date/calendar/popup.year.js b/src/widget/date/calendar/popup.year.js index 872f35a73..a835bfb7d 100644 --- a/src/widget/date/calendar/popup.year.js +++ b/src/widget/date/calendar/popup.year.js @@ -1,6 +1,18 @@ -import { shortcut, Widget, extend, createWidget, isKey, Controller, bind, isNotNull, isNotEmptyString, getDate, parseInt } from "@/core"; -import { Navigation } from "@/base"; import { YearCalendar } from "@/case"; +import { IconButton, Navigation } from "@/base"; +import { + shortcut, + Widget, + extend, + createWidget, + isKey, + Controller, + bind, + isNotNull, + isNotEmptyString, + getDate, + parseInt +} from "@/core"; /** * 年份展示面板 @@ -11,9 +23,9 @@ import { YearCalendar } from "@/case"; */ @shortcut() export class YearPopup extends Widget { - static xtype = "bi.year_popup" + static xtype = "bi.year_popup"; - static EVENT_CHANGE = "EVENT_CHANGE" + static EVENT_CHANGE = "EVENT_CHANGE"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -29,7 +41,7 @@ export class YearPopup extends Widget { y = this._year; const calendar = createWidget({ - type: "bi.year_calendar", + type: YearCalendar.xtype, behaviors: o.behaviors, min: o.min, max: o.max, @@ -39,7 +51,7 @@ export class YearPopup extends Widget { year: y + v * 12, }); calendar.setValue(this._year); - + return calendar; } @@ -50,7 +62,7 @@ export class YearPopup extends Widget { this.selectedYear = this._year = getDate().getFullYear(); this.backBtn = createWidget({ - type: "bi.icon_button", + type: IconButton.xtype, cls: "pre-page-h-font", width: 24, height: 24, @@ -58,7 +70,7 @@ export class YearPopup extends Widget { }); this.preBtn = createWidget({ - type: "bi.icon_button", + type: IconButton.xtype, cls: "next-page-h-font", width: 24, height: 24, @@ -66,7 +78,7 @@ export class YearPopup extends Widget { }); this.navigation = createWidget({ - type: "bi.navigation", + type: Navigation.xtype, element: this, single: true, logic: { diff --git a/src/widget/date/calendar/trigger.triangle.date.js b/src/widget/date/calendar/trigger.triangle.date.js index d79b0e431..d1b013618 100644 --- a/src/widget/date/calendar/trigger.triangle.date.js +++ b/src/widget/date/calendar/trigger.triangle.date.js @@ -1,5 +1,5 @@ -import { shortcut, extend, createWidget } from "@/core"; -import { Trigger } from "@/base"; +import { Label, IconLabel, Trigger } from "@/base"; +import { VerticalAdaptLayout, shortcut, extend, createWidget } from "@/core"; /** * 日期控件中的年份或月份trigger @@ -10,7 +10,7 @@ import { Trigger } from "@/base"; */ @shortcut() export class DateTriangleTrigger extends Trigger { - static xtype = "bi.date_triangle_trigger" + static xtype = "bi.date_triangle_trigger"; _const = { height: 24, @@ -30,7 +30,7 @@ export class DateTriangleTrigger extends Trigger { const o = this.options, c = this._const; this.text = createWidget({ - type: "bi.label", + type: Label.xtype, cls: "list-item-text", textAlign: "right", text: o.text, @@ -39,15 +39,18 @@ export class DateTriangleTrigger extends Trigger { }); createWidget({ - type: "bi.vertical_adapt", + type: VerticalAdaptLayout.xtype, element: this, - items: [{ - el: this.text, - rgap: 5, - }, { - type: "bi.icon_label", - width: 16, - }], + items: [ + { + el: this.text, + rgap: 5, + }, + { + type: IconLabel.xtype, + width: 16, + } + ], }); } @@ -67,7 +70,5 @@ export class DateTriangleTrigger extends Trigger { return this.item.getText(); } - getKey() { - - } + getKey() {} } diff --git a/src/widget/datepane/card.static.datepane.js b/src/widget/datepane/card.static.datepane.js index a6a469437..44c506080 100644 --- a/src/widget/datepane/card.static.datepane.js +++ b/src/widget/datepane/card.static.datepane.js @@ -1,18 +1,31 @@ -import { shortcut, Widget, extend, createWidget, bind, isNull, each, isNotEmptyString, getDate, getMonthDays } from "@/core"; import { DatePicker, DateCalendarPopup } from "../date/calendar"; -import { Calendar } from "@/case"; import { Navigation } from "@/base"; +import { + VTapeLayout, + AbsoluteLayout, + Layout, + shortcut, + Widget, + extend, + createWidget, + bind, + isNull, + each, + isNotEmptyString, + getDate, + getMonthDays +} from "@/core"; +import { Calendar } from "@/case"; @shortcut() export class StaticDatePaneCard extends Widget { static xtype = "bi.static_date_pane_card"; - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = - "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; _defaultConfig() { const conf = super._defaultConfig(...arguments); - + return extend(conf, { baseCls: "bi-date-pane", min: "1900-01-01", // 最小日期 @@ -35,16 +48,14 @@ export class StaticDatePaneCard extends Widget { }; this.datePicker = createWidget({ - type: "bi.date_picker", + type: DatePicker.xtype, behaviors: o.behaviors, min: o.min, max: o.max, }); this.datePicker.on(DatePicker.EVENT_CHANGE, () => { const value = this.datePicker.getValue(); - const monthDay = getMonthDays( - getDate(value.year, value.month - 1, 1) - ); + const monthDay = getMonthDays(getDate(value.year, value.month - 1, 1)); let day = this.selectedTime.day || 0; if (day > monthDay) { day = monthDay; @@ -54,27 +65,20 @@ export class StaticDatePaneCard extends Widget { month: value.month, }; day !== 0 && (this.selectedTime.day = day); - this.calendar.setSelect( - Calendar.getPageByDateJSON(this.selectedTime) - ); + this.calendar.setSelect(Calendar.getPageByDateJSON(this.selectedTime)); this.calendar.setValue(this.selectedTime); day !== 0 && this.fireEvent(DateCalendarPopup.EVENT_CHANGE); }); - this.datePicker.on( - DatePicker.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, - () => { - this.fireEvent( - StaticDatePaneCard.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW - ); - } - ); + this.datePicker.on(DatePicker.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, () => { + this.fireEvent(StaticDatePaneCard.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + }); this.calendar = createWidget({ direction: "custom", // logic: { // dynamic: false // }, - type: "bi.navigation", + type: Navigation.xtype, tab: this.datePicker, cardCreator: bind(this._createNav, this), }); @@ -87,7 +91,7 @@ export class StaticDatePaneCard extends Widget { this.setValue(o.selectedTime); createWidget({ - type: "bi.vtape", + type: VTapeLayout.xtype, element: this, items: [ { @@ -100,12 +104,12 @@ export class StaticDatePaneCard extends Widget { }); createWidget({ - type: "bi.absolute", + type: AbsoluteLayout.xtype, element: this, items: [ { el: { - type: "bi.layout", + type: Layout.xtype, cls: "bi-split-top", }, height: 1, @@ -120,7 +124,7 @@ export class StaticDatePaneCard extends Widget { _createNav(v) { const date = Calendar.getDateJSONByPage(v); const calendar = createWidget({ - type: "bi.calendar", + type: Calendar.xtype, logic: { dynamic: false, }, @@ -130,13 +134,13 @@ export class StaticDatePaneCard extends Widget { month: date.month, day: this.selectedTime.day, }); - + return calendar; } _getNewCurrentDate() { const today = getDate(); - + return { year: today.getFullYear(), month: today.getMonth() + 1, diff --git a/src/widget/datepane/datepane.js b/src/widget/datepane/datepane.js index e3bc64684..a98d87325 100644 --- a/src/widget/datepane/datepane.js +++ b/src/widget/datepane/datepane.js @@ -1,6 +1,20 @@ -import { shortcut, Widget, createItems, i18nText, isEmptyObject, isNull, isEmptyString, isNotEmptyObject, getDate } from "@/core"; -import { ButtonGroup, TextButton } from "@/base"; -import { DynamicDateHelper, DynamicDateCombo, DynamicDatePopup } from "../dynamicdate"; +import { + VTapeLayout, + CenterLayout, + shortcut, + Widget, + createItems, + i18nText, + isEmptyObject, + isNull, + isEmptyString, + isNotEmptyObject, + getDate +} from "@/core"; +import { LinearSegment } from "@/case"; +import { Tab, TextButton, ButtonGroup } from "@/base"; +import { StaticDatePaneCard } from "./card.static.datepane"; +import { DynamicDateCard, DynamicDateHelper, DynamicDateCombo, DynamicDatePopup } from "../dynamicdate"; @shortcut() export class DynamicDatePane extends Widget { @@ -16,140 +30,167 @@ export class DynamicDatePane extends Widget { minDate: "1900-01-01", maxDate: "2099-12-31", supportDynamic: true, - } + }; render() { const o = this.options; - + return { - type: "bi.vtape", - items: [{ - el: { - type: "bi.linear_segment", - invisible: !o.supportDynamic, - cls: "bi-split-bottom", - height: 30, - items: createItems([{ - text: i18nText("BI-Multi_Date_YMD"), - value: DynamicDatePane.Static, - }, { - text: i18nText("BI-Basic_Dynamic_Title"), - value: DynamicDatePane.Dynamic, - }], { - textAlign: "center", - }), - listeners: [{ - eventName: ButtonGroup.EVENT_CHANGE, - action: () => { - let date; - const value = this.switcher.getValue()[0]; - this.dateTab.setSelect(value); - switch (value) { - case DynamicDatePane.Static: - date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); - this.ymd.setValue({ - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - }); - break; - case DynamicDatePane.Dynamic: - this.dynamicPane.setValue({ - year: 0, - }); - break; - default: - break; + type: VTapeLayout.xtype, + items: [ + { + el: { + type: LinearSegment.xtype, + invisible: !o.supportDynamic, + cls: "bi-split-bottom", + height: 30, + items: createItems( + [ + { + text: i18nText("BI-Multi_Date_YMD"), + value: DynamicDatePane.Static, + }, + { + text: i18nText("BI-Basic_Dynamic_Title"), + value: DynamicDatePane.Dynamic, + } + ], + { + textAlign: "center", } - this.fireEvent(DynamicDatePane.EVENT_CHANGE); - }, - }], - ref: _ref => { - this.switcher = _ref; - }, - }, - height: o.supportDynamic ? 30 : 0, - }, { - type: "bi.tab", - ref: _ref => { - this.dateTab = _ref; - }, - showIndex: DynamicDatePane.Static, - cardCreator: v => { - switch (v) { - case DynamicDatePane.Static: - return { - type: "bi.static_date_pane_card", - min: o.minDate, - max: o.maxDate, - behaviors: o.behaviors, - listeners: [{ - eventName: "EVENT_CHANGE", + ), + listeners: [ + { + eventName: ButtonGroup.EVENT_CHANGE, action: () => { + let date; + const value = this.switcher.getValue()[0]; + this.dateTab.setSelect(value); + switch (value) { + case DynamicDatePane.Static: + date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); + this.ymd.setValue({ + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + }); + break; + case DynamicDatePane.Dynamic: + this.dynamicPane.setValue({ + year: 0, + }); + break; + default: + break; + } this.fireEvent(DynamicDatePane.EVENT_CHANGE); }, - }, { - eventName: "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW", - action: () => { - this.fireEvent(DynamicDatePane.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); - }, - }], - ref: _ref => { - this.ymd = _ref; - }, - }; - case DynamicDatePane.Dynamic: - default: - return { - type: "bi.vtape", - items: [{ - type: "bi.dynamic_date_card", + } + ], + ref: _ref => { + this.switcher = _ref; + }, + }, + height: o.supportDynamic ? 30 : 0, + }, + { + type: Tab.xtype, + ref: _ref => { + this.dateTab = _ref; + }, + showIndex: DynamicDatePane.Static, + cardCreator: v => { + switch (v) { + case DynamicDatePane.Static: + return { + type: StaticDatePaneCard.xtype, min: o.minDate, max: o.maxDate, + behaviors: o.behaviors, + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this.fireEvent(DynamicDatePane.EVENT_CHANGE); + }, + }, + { + eventName: "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW", + action: () => { + this.fireEvent(DynamicDatePane.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + }, + } + ], ref: _ref => { - this.dynamicPane = _ref; + this.ymd = _ref; }, - }, { - el: { - type: "bi.center", - items: [{ - type: "bi.text_button", - cls: "bi-high-light bi-border-top", - shadow: true, - text: i18nText("BI-Basic_Clear"), - textHeight: 23, - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - this.setValue(); - this.fireEvent(DynamicDatePane.EVENT_CHANGE); - }, - }], - }, { - type: "bi.text_button", - cls: "bi-border-left bi-high-light bi-border-top", - textHeight: 23, - shadow: true, - text: i18nText("BI-Basic_OK"), - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - const type = this.dateTab.getSelect(); - if (type === DynamicDateCombo.Dynamic) { - this.dynamicPane.checkValidation(true) && this.fireEvent(DynamicDatePopup.EVENT_CHANGE); - } else { - this.fireEvent(DynamicDatePane.EVENT_CHANGE); + }; + case DynamicDatePane.Dynamic: + default: + return { + type: VTapeLayout.xtype, + items: [ + { + type: DynamicDateCard.xtype, + min: o.minDate, + max: o.maxDate, + ref: _ref => { + this.dynamicPane = _ref; + }, + }, + { + el: { + type: CenterLayout.xtype, + items: [ + { + type: TextButton.xtype, + cls: "bi-high-light bi-border-top", + shadow: true, + text: i18nText("BI-Basic_Clear"), + textHeight: 23, + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + this.setValue(); + this.fireEvent(DynamicDatePane.EVENT_CHANGE); + }, + } + ], + }, + { + type: TextButton.xtype, + cls: "bi-border-left bi-high-light bi-border-top", + textHeight: 23, + shadow: true, + text: i18nText("BI-Basic_OK"), + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + const type = this.dateTab.getSelect(); + if (type === DynamicDateCombo.Dynamic) { + this.dynamicPane.checkValidation(true) && + this.fireEvent( + DynamicDatePopup.EVENT_CHANGE + ); + } else { + this.fireEvent(DynamicDatePane.EVENT_CHANGE); + } + }, + } + ], } - }, - }], - }], - }, - height: 24, - }], - }; - } - }, - }], + ], + }, + height: 24, + } + ], + }; + } + }, + } + ], }; } @@ -212,7 +253,7 @@ export class DynamicDatePane extends Widget { getValue() { const type = this.dateTab.getSelect(); - + return { type, value: type === DynamicDatePane.Static ? this.dateTab.getValue() : this.dynamicPane.getValue(), diff --git a/src/widget/datetime/datetime.combo.js b/src/widget/datetime/datetime.combo.js index 1d279cb39..86c02131c 100644 --- a/src/widget/datetime/datetime.combo.js +++ b/src/widget/datetime/datetime.combo.js @@ -1,10 +1,11 @@ -import { shortcut, extend, getDate, isNotNull, createWidget } from "@/core"; -import { Single, Combo, IconButton } from "@/base"; +import { DateTimeTrigger } from "./datetime.trigger"; import { DateTimePopup } from "./datetime.popup"; +import { Combo, IconButton, Single } from "@/base"; +import { HTapeLayout, shortcut, extend, getDate, isNotNull, createWidget } from "@/core"; @shortcut() export class DateTimeCombo extends Single { - static xtype = "bi.date_time_combo" + static xtype = "bi.date_time_combo"; constants = { popupHeight: 290, @@ -14,14 +15,16 @@ export class DateTimeCombo extends Single { iconWidth: 24, }; - static EVENT_CANCEL = "EVENT_CANCEL" - static EVENT_CONFIRM = "EVENT_CONFIRM" - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" + static EVENT_CANCEL = "EVENT_CANCEL"; + static EVENT_CONFIRM = "EVENT_CONFIRM"; + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; _defaultConfig(conf) { return extend(super._defaultConfig(...arguments), { - baseCls: `bi-date-time-combo bi-focus-shadow ${conf.simple ? "bi-border-bottom" : "bi-border bi-border-radius"}`, + baseCls: `bi-date-time-combo bi-focus-shadow ${ + conf.simple ? "bi-border-bottom" : "bi-border bi-border-radius" + }`, width: 200, height: 24, minDate: "1900-01-01", @@ -33,16 +36,18 @@ export class DateTimeCombo extends Single { super._init(...arguments); const opts = this.options; const date = getDate(); - this.storeValue = isNotNull(opts.value) ? opts.value : { - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - hour: date.getHours(), - minute: date.getMinutes(), - second: date.getSeconds(), - }; + this.storeValue = isNotNull(opts.value) + ? opts.value + : { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds(), + }; this.trigger = createWidget({ - type: "bi.date_time_trigger", + type: DateTimeTrigger.xtype, height: opts.height, min: opts.minDate, max: opts.maxDate, @@ -50,7 +55,7 @@ export class DateTimeCombo extends Single { }); this.popup = createWidget({ - type: "bi.date_time_popup", + type: DateTimePopup.xtype, behaviors: opts.behaviors, min: opts.minDate, max: opts.maxDate, @@ -70,7 +75,7 @@ export class DateTimeCombo extends Single { this.fireEvent(DateTimeCombo.EVENT_CONFIRM); }); this.combo = createWidget({ - type: "bi.combo", + type: Combo.xtype, container: opts.container, toggle: false, isNeedAdjustHeight: false, @@ -83,7 +88,7 @@ export class DateTimeCombo extends Single { stopPropagation: false, }, // DEC-4250 和复选下拉一样,点击不收起 - hideChecker (e) { + hideChecker(e) { return triggerBtn.element.find(e.target).length === 0; }, }); @@ -93,7 +98,7 @@ export class DateTimeCombo extends Single { }); const triggerBtn = createWidget({ - type: "bi.icon_button", + type: IconButton.xtype, cls: "bi-trigger-icon-button date-font", width: this.constants.iconWidth, height: opts.height, @@ -107,7 +112,7 @@ export class DateTimeCombo extends Single { }); createWidget({ - type: "bi.htape", + type: HTapeLayout.xtype, columnSize: ["", this.constants.iconWidth], element: this, items: [this.combo, triggerBtn], diff --git a/src/widget/datetime/datetime.popup.js b/src/widget/datetime/datetime.popup.js index bafe42b11..999e10779 100644 --- a/src/widget/datetime/datetime.popup.js +++ b/src/widget/datetime/datetime.popup.js @@ -1,14 +1,26 @@ -import { shortcut, Widget, extend, createWidget, i18nText, isNull, getDate } from "@/core"; import { TextButton } from "@/base"; import { DateCalendarPopup } from "../date/calendar"; +import { + GridLayout, + VTapeLayout, + CenterAdaptLayout, + shortcut, + Widget, + extend, + createWidget, + i18nText, + isNull, + getDate +} from "@/core"; +import { DynamicDateTimeSelect } from "../dynamicdatetime"; @shortcut() export class DateTimePopup extends Widget { - static xtype = "bi.date_time_popup" + static xtype = "bi.date_time_popup"; - static BUTTON_OK_EVENT_CHANGE = "BUTTON_OK_EVENT_CHANGE" - static BUTTON_CANCEL_EVENT_CHANGE = "BUTTON_CANCEL_EVENT_CHANGE" - static CALENDAR_EVENT_CHANGE = "CALENDAR_EVENT_CHANGE" + static BUTTON_OK_EVENT_CHANGE = "BUTTON_OK_EVENT_CHANGE"; + static BUTTON_CANCEL_EVENT_CHANGE = "BUTTON_CANCEL_EVENT_CHANGE"; + static CALENDAR_EVENT_CHANGE = "CALENDAR_EVENT_CHANGE"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -22,7 +34,7 @@ export class DateTimePopup extends Widget { super._init(...arguments); const opts = this.options; this.cancelButton = createWidget({ - type: "bi.text_button", + type: TextButton.xtype, cls: "multidate-popup-button bi-border-top bi-border-right", shadow: true, text: i18nText("BI-Basic_Cancel"), @@ -32,7 +44,7 @@ export class DateTimePopup extends Widget { }); this.okButton = createWidget({ - type: "bi.text_button", + type: TextButton.xtype, cls: "multidate-popup-button bi-border-top", shadow: true, text: i18nText("BI-Basic_OK"), @@ -42,7 +54,7 @@ export class DateTimePopup extends Widget { }); this.dateCombo = createWidget({ - type: "bi.date_calendar_popup", + type: DateCalendarPopup.xtype, behaviors: opts.behaviors, min: this.options.min, max: this.options.max, @@ -52,32 +64,36 @@ export class DateTimePopup extends Widget { }); this.dateButton = createWidget({ - type: "bi.grid", - items: [ - [this.cancelButton, this.okButton] - ], + type: GridLayout.xtype, + items: [[this.cancelButton, this.okButton]], }); createWidget({ element: this, - type: "bi.vtape", - items: [{ - el: this.dateCombo, - }, { - el: { - type: "bi.center_adapt", - cls: "bi-split-top", - items: [{ - type: "bi.dynamic_date_time_select", - ref: _ref => { - this.timeSelect = _ref; - }, - }], + type: VTapeLayout.xtype, + items: [ + { + el: this.dateCombo, }, - height: 50, - }, { - el: this.dateButton, - height: 30, - }], + { + el: { + type: CenterAdaptLayout.xtype, + cls: "bi-split-top", + items: [ + { + type: DynamicDateTimeSelect.xtype, + ref: _ref => { + this.timeSelect = _ref; + }, + } + ], + }, + height: 50, + }, + { + el: this.dateButton, + height: 30, + } + ], }); this.setValue(opts.value); } @@ -112,10 +128,13 @@ export class DateTimePopup extends Widget { } getValue() { - return extend({ - year: this.dateCombo.getValue().year, - month: this.dateCombo.getValue().month, - day: this.dateCombo.getValue().day, - }, this.timeSelect.getValue()); + return extend( + { + year: this.dateCombo.getValue().year, + month: this.dateCombo.getValue().month, + day: this.dateCombo.getValue().day, + }, + this.timeSelect.getValue() + ); } } diff --git a/src/widget/datetime/datetime.trigger.js b/src/widget/datetime/datetime.trigger.js index c8ea49714..cdbd7896c 100644 --- a/src/widget/datetime/datetime.trigger.js +++ b/src/widget/datetime/datetime.trigger.js @@ -1,19 +1,9 @@ -import { - shortcut, - extend, - createWidget, - isNull, - getDate, - print -} from "@/core"; -import { - Trigger -} from "@/base"; - +import { Label, Trigger } from "@/base"; +import { HTapeLayout, shortcut, extend, createWidget, isNull, getDate, print } from "@/core"; @shortcut() export class DateTimeTrigger extends Trigger { - static xtype = "bi.date_time_trigger" + static xtype = "bi.date_time_trigger"; _const = { hgap: 4, @@ -35,7 +25,7 @@ export class DateTimeTrigger extends Trigger { const o = this.options, c = this._const; this.text = createWidget({ - type: "bi.label", + type: Label.xtype, textAlign: "left", height: o.height, width: o.width, @@ -43,14 +33,17 @@ export class DateTimeTrigger extends Trigger { }); createWidget({ - type: "bi.htape", + type: HTapeLayout.xtype, element: this, - items: [{ - el: this.text, - }, { - el: createWidget(), - width: this._const.iconWidth, - }], + items: [ + { + el: this.text, + }, + { + el: createWidget(), + width: this._const.iconWidth, + } + ], }); this.setValue(o.value); } diff --git a/src/widget/datetimepane/card.static.datetimepane.js b/src/widget/datetimepane/card.static.datetimepane.js index 910ed91f8..e30a76a6a 100644 --- a/src/widget/datetimepane/card.static.datetimepane.js +++ b/src/widget/datetimepane/card.static.datetimepane.js @@ -1,18 +1,32 @@ -import { shortcut, Widget, extend, getDate, createWidget, bind, isNull, each, isNotEmptyString, getMonthDays } from "@/core"; import { DatePicker, DateCalendarPopup } from "../date/calendar"; -import { Calendar } from "@/case"; import { Navigation } from "@/base"; +import { + VTapeLayout, + AbsoluteLayout, + Layout, + shortcut, + Widget, + extend, + getDate, + createWidget, + bind, + isNull, + each, + isNotEmptyString, + getMonthDays +} from "@/core"; +import { Calendar } from "@/case"; import { DynamicDateTimeSelect } from "../dynamicdatetime/dynamicdatetime.timeselect"; @shortcut() export class StaticDateTimePaneCard extends Widget { - static xtype = "bi.static_date_time_pane_card" + static xtype = "bi.static_date_time_pane_card"; - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; _defaultConfig() { const conf = super._defaultConfig(...arguments); - + return extend(conf, { baseCls: "bi-date-time-pane", min: "1900-01-01", // 最小日期 @@ -35,7 +49,7 @@ export class StaticDateTimePaneCard extends Widget { }; this.datePicker = createWidget({ - type: "bi.date_picker", + type: DatePicker.xtype, behaviors: o.behaviors, min: o.min, max: o.max, @@ -66,7 +80,7 @@ export class StaticDateTimePaneCard extends Widget { // logic: { // dynamic: false // }, - type: "bi.navigation", + type: Navigation.xtype, tab: this.datePicker, cardCreator: bind(this._createNav, this), }); @@ -78,44 +92,52 @@ export class StaticDateTimePaneCard extends Widget { }); createWidget({ - type: "bi.vtape", + type: VTapeLayout.xtype, element: this, hgap: 10, - items: [{ - el: this.datePicker, - height: 40, - }, this.calendar, { - el: { - type: "bi.dynamic_date_time_select", - cls: "bi-split-top", - ref: _ref => { - this.timeSelect = _ref; - }, - listeners: [{ - eventName: DynamicDateTimeSelect.EVENT_CONFIRM, - action: () => { - this.selectedTime = extend(this.calendar.getValue(), this.timeSelect.getValue()); - this.fireEvent("EVENT_CHANGE"); + items: [ + { + el: this.datePicker, + height: 40, + }, + this.calendar, + { + el: { + type: DynamicDateTimeSelect.xtype, + cls: "bi-split-top", + ref: (_ref) => { + this.timeSelect = _ref; }, - }], + listeners: [ + { + eventName: DynamicDateTimeSelect.EVENT_CONFIRM, + action: () => { + this.selectedTime = extend(this.calendar.getValue(), this.timeSelect.getValue()); + this.fireEvent("EVENT_CHANGE"); + }, + }, + ], + }, + height: 40, }, - height: 40, - }], + ], }); createWidget({ - type: "bi.absolute", + type: AbsoluteLayout.xtype, element: this, - items: [{ - el: { - type: "bi.layout", - cls: "bi-split-top", + items: [ + { + el: { + type: Layout.xtype, + cls: "bi-split-top", + }, + height: 1, + top: 40, + left: 0, + right: 0, }, - height: 1, - top: 40, - left: 0, - right: 0, - }], + ], }); this.setValue(o.selectedTime); } @@ -123,7 +145,7 @@ export class StaticDateTimePaneCard extends Widget { _createNav(v) { const date = Calendar.getDateJSONByPage(v); const calendar = createWidget({ - type: "bi.calendar", + type: Calendar.xtype, logic: { dynamic: false, }, @@ -133,13 +155,13 @@ export class StaticDateTimePaneCard extends Widget { month: date.month, day: this.selectedTime.day, }); - + return calendar; } _getNewCurrentDate() { const today = getDate(); - + return { year: today.getFullYear(), month: today.getMonth() + 1, diff --git a/src/widget/datetimepane/datetimepane.js b/src/widget/datetimepane/datetimepane.js index f806b0f4d..9bad2963e 100644 --- a/src/widget/datetimepane/datetimepane.js +++ b/src/widget/datetimepane/datetimepane.js @@ -1,17 +1,31 @@ -import { shortcut, Widget, createItems, i18nText, isNull, isEmptyObject, isEmptyString, isNotEmptyObject, getDate } from "@/core"; -import { ButtonGroup, TextButton } from "@/base"; +import { + VTapeLayout, + CenterLayout, + shortcut, + Widget, + createItems, + i18nText, + isNull, + isEmptyObject, + isEmptyString, + isNotEmptyObject, + getDate +} from "@/core"; +import { LinearSegment } from "@/case"; +import { Tab, TextButton, ButtonGroup } from "@/base"; +import { StaticDateTimePaneCard } from "./card.static.datetimepane"; +import { DynamicDateCard, DynamicDateCombo, DynamicDateHelper } from "../dynamicdate"; import { DynamicDatePane } from "../datepane"; -import { DynamicDateCombo, DynamicDateHelper } from "../dynamicdate"; @shortcut() export class DynamicDateTimePane extends Widget { - static xtype = "bi.dynamic_date_time_pane" + static xtype = "bi.dynamic_date_time_pane"; - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; - static Static = 1 - static Dynamic = 2 + static Static = 1; + static Dynamic = 2; props = { baseCls: "bi-dynamic-date-pane", @@ -22,136 +36,163 @@ export class DynamicDateTimePane extends Widget { render() { const o = this.options; - + return { - type: "bi.vtape", - items: [{ - el: { - type: "bi.linear_segment", - invisible: !o.supportDynamic, - cls: "bi-split-bottom", - height: 30, - items: createItems([{ - text: i18nText("BI-Multi_Date_YMD"), - value: DynamicDateTimePane.Static, - }, { - text: i18nText("BI-Basic_Dynamic_Title"), - value: DynamicDateTimePane.Dynamic, - }], { - textAlign: "center", - }), - listeners: [{ - eventName: ButtonGroup.EVENT_CHANGE, - action: () => { - const value = this.switcher.getValue()[0]; - let date; - this.dateTab.setSelect(value); - switch (value) { - case DynamicDateTimePane.Static: - date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); - this.ymd.setValue({ - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - }); - break; - case DynamicDateTimePane.Dynamic: - this.dynamicPane.setValue({ - year: 0, - }); - break; - default: - break; + type: VTapeLayout.xtype, + items: [ + { + el: { + type: LinearSegment.xtype, + invisible: !o.supportDynamic, + cls: "bi-split-bottom", + height: 30, + items: createItems( + [ + { + text: i18nText("BI-Multi_Date_YMD"), + value: DynamicDateTimePane.Static, + }, + { + text: i18nText("BI-Basic_Dynamic_Title"), + value: DynamicDateTimePane.Dynamic, + } + ], + { + textAlign: "center", } - this.fireEvent(DynamicDateTimePane.EVENT_CHANGE); - }, - }], - ref: _ref => { - this.switcher = _ref; - }, - }, - height: o.supportDynamic ? 30 : 0, - }, { - type: "bi.tab", - ref: _ref => { - this.dateTab = _ref; - }, - showIndex: DynamicDateTimePane.Static, - cardCreator: v => { - switch (v) { - case DynamicDateTimePane.Static: - return { - type: "bi.static_date_time_pane_card", - min: o.minDate, - max: o.maxDate, - behaviors: o.behaviors, - listeners: [{ - eventName: "EVENT_CHANGE", + ), + listeners: [ + { + eventName: ButtonGroup.EVENT_CHANGE, action: () => { + const value = this.switcher.getValue()[0]; + let date; + this.dateTab.setSelect(value); + switch (value) { + case DynamicDateTimePane.Static: + date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); + this.ymd.setValue({ + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + }); + break; + case DynamicDateTimePane.Dynamic: + this.dynamicPane.setValue({ + year: 0, + }); + break; + default: + break; + } this.fireEvent(DynamicDateTimePane.EVENT_CHANGE); }, - }, { - eventName: "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW", - action: () => { - this.fireEvent(DynamicDateTimePane.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); - }, - }], - ref: _ref => { - this.ymd = _ref; - }, - }; - case DynamicDateTimePane.Dynamic: - default: - return { - type: "bi.vtape", - items: [{ - type: "bi.dynamic_date_card", + } + ], + ref: _ref => { + this.switcher = _ref; + }, + }, + height: o.supportDynamic ? 30 : 0, + }, + { + type: Tab.xtype, + ref: _ref => { + this.dateTab = _ref; + }, + showIndex: DynamicDateTimePane.Static, + cardCreator: v => { + switch (v) { + case DynamicDateTimePane.Static: + return { + type: StaticDateTimePaneCard.xtype, min: o.minDate, max: o.maxDate, + behaviors: o.behaviors, + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this.fireEvent(DynamicDateTimePane.EVENT_CHANGE); + }, + }, + { + eventName: "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW", + action: () => { + this.fireEvent(DynamicDateTimePane.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + }, + } + ], ref: _ref => { - this.dynamicPane = _ref; + this.ymd = _ref; }, - }, { - el: { - type: "bi.center", - items: [{ - type: "bi.text_button", - cls: "bi-high-light bi-border-top", - shadow: true, - text: i18nText("BI-Basic_Clear"), - textHeight: 23, - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - this.setValue(); - this.fireEvent(DynamicDatePane.EVENT_CHANGE); - }, - }], - }, { - type: "bi.text_button", - cls: "bi-border-left bi-high-light bi-border-top", - textHeight: 23, - shadow: true, - text: i18nText("BI-Basic_OK"), - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - const type = this.dateTab.getSelect(); - if (type === DynamicDateCombo.Dynamic) { - this.dynamicPane.checkValidation(true) && this.fireEvent(DynamicDatePane.EVENT_CHANGE); - } else { - this.fireEvent(DynamicDatePane.EVENT_CHANGE); + }; + case DynamicDateTimePane.Dynamic: + default: + return { + type: VTapeLayout.xtype, + items: [ + { + type: DynamicDateCard.xtype, + min: o.minDate, + max: o.maxDate, + ref: _ref => { + this.dynamicPane = _ref; + }, + }, + { + el: { + type: CenterLayout.xtype, + items: [ + { + type: TextButton.xtype, + cls: "bi-high-light bi-border-top", + shadow: true, + text: i18nText("BI-Basic_Clear"), + textHeight: 23, + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + this.setValue(); + this.fireEvent(DynamicDatePane.EVENT_CHANGE); + }, + } + ], + }, + { + type: TextButton.xtype, + cls: "bi-border-left bi-high-light bi-border-top", + textHeight: 23, + shadow: true, + text: i18nText("BI-Basic_OK"), + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + const type = this.dateTab.getSelect(); + if (type === DynamicDateCombo.Dynamic) { + this.dynamicPane.checkValidation(true) && + this.fireEvent( + DynamicDatePane.EVENT_CHANGE + ); + } else { + this.fireEvent(DynamicDatePane.EVENT_CHANGE); + } + }, + } + ], } - }, - }], - }], - }, - height: 24, - }], - }; - } - }, - }], + ], + }, + height: 24, + } + ], + }; + } + }, + } + ], }; } diff --git a/src/widget/downlist/combo.downlist.js b/src/widget/downlist/combo.downlist.js index eb4c9e636..4b8a9294b 100644 --- a/src/widget/downlist/combo.downlist.js +++ b/src/widget/downlist/combo.downlist.js @@ -3,7 +3,6 @@ import { DownListPopup } from "./popup.downlist"; import { Combo } from "@/base"; import { IconTrigger } from "@/case"; - function transformItems(items) { if (!items) return items; let result = cloneDeep(items); @@ -26,7 +25,7 @@ function transformItems(items) { } }); }); - + return result; } @@ -93,21 +92,14 @@ export class DownListCombo extends Widget { { eventName: DownListPopup.EVENT_CHANGE, action: value => { - this.fireEvent( - DownListCombo.EVENT_CHANGE, - value - ); + this.fireEvent(DownListCombo.EVENT_CHANGE, value); this.downlistcombo.hideView(); }, }, { eventName: DownListPopup.EVENT_SON_VALUE_CHANGE, action: (value, fatherValue) => { - this.fireEvent( - DownListCombo.EVENT_SON_VALUE_CHANGE, - value, - fatherValue - ); + this.fireEvent(DownListCombo.EVENT_SON_VALUE_CHANGE, value, fatherValue); this.downlistcombo.hideView(); }, } diff --git a/src/widget/downlist/group.downlist.js b/src/widget/downlist/group.downlist.js index 2d06f83e0..ee1109938 100644 --- a/src/widget/downlist/group.downlist.js +++ b/src/widget/downlist/group.downlist.js @@ -1,62 +1,56 @@ -import { - shortcut, - Widget, - extend, - createWidget, - Controller, - Events -} from "@/core"; +import { ButtonTree } from "@/base"; +import { VerticalLayout, shortcut, Widget, extend, createWidget, Controller, Events } from "@/core"; @shortcut() export class DownListGroup extends Widget { - static xtype = "bi.down_list_group"; - - constants = { iconCls: "check-mark-ha-font" }; - - static EVENT_CHANGE = "EVENT_CHANGE"; - - _defaultConfig() { - return extend(super._defaultConfig(...arguments), { - baseCls: "bi-down-list-group", - items: [ - { - el: {}, - } - ], - }); - } - - _init() { - super._init(...arguments); - const o = this.options; - - this.downlistgroup = createWidget({ - element: this, - type: "bi.button_tree", - items: o.items, - chooseType: 0, // 0单选,1多选 - layouts: [ - { - type: "bi.vertical", - hgap: 0, - vgap: 0, - } - ], - value: o.value, - }); - this.downlistgroup.on(Controller.EVENT_CHANGE, (type, ...args) => { - this.fireEvent(Controller.EVENT_CHANGE, type, ...args); - if (type === Events.CLICK) { - this.fireEvent(DownListGroup.EVENT_CHANGE, type, ...args); - } - }); - } - - getValue() { - return this.downlistgroup.getValue(); - } - - setValue(v) { - this.downlistgroup.setValue(v); - } + static xtype = "bi.down_list_group"; + + constants = { iconCls: "check-mark-ha-font" }; + + static EVENT_CHANGE = "EVENT_CHANGE"; + + _defaultConfig() { + return extend(super._defaultConfig(...arguments), { + baseCls: "bi-down-list-group", + items: [ + { + el: {}, + } + ], + }); + } + + _init() { + super._init(...arguments); + const o = this.options; + + this.downlistgroup = createWidget({ + element: this, + type: ButtonTree.xtype, + items: o.items, + chooseType: 0, // 0单选,1多选 + layouts: [ + { + type: VerticalLayout.xtype, + hgap: 0, + vgap: 0, + } + ], + value: o.value, + }); + this.downlistgroup.on(Controller.EVENT_CHANGE, (type, ...args) => { + this.fireEvent(Controller.EVENT_CHANGE, type, ...args); + if (type === Events.CLICK) { + this.fireEvent(DownListGroup.EVENT_CHANGE, type, ...args); + } + }); + } + + getValue() { + return this.downlistgroup.getValue(); + } + + setValue(v) { + this.downlistgroup.setValue(v); + } } diff --git a/src/widget/downlist/index.js b/src/widget/downlist/index.js index 07a86df06..f27a18682 100644 --- a/src/widget/downlist/index.js +++ b/src/widget/downlist/index.js @@ -1,5 +1,5 @@ -export { DownListGroup } from "./group.downlist"; -export { DownListItem } from "./item.downlist"; -export { DownListGroupItem } from "./item.downlistgroup"; -export { DownListPopup } from "./popup.downlist"; -export { DownListCombo } from "./combo.downlist"; +export { DownListGroup } from "./group.downlist"; +export { DownListItem } from "./item.downlist"; +export { DownListGroupItem } from "./item.downlistgroup"; +export { DownListPopup } from "./popup.downlist"; +export { DownListCombo } from "./combo.downlist"; diff --git a/src/widget/downlist/item.downlist.js b/src/widget/downlist/item.downlist.js index 1a1598490..2adf328c1 100644 --- a/src/widget/downlist/item.downlist.js +++ b/src/widget/downlist/item.downlist.js @@ -1,125 +1,121 @@ -import { shortcut, extend, createWidget, isPlainObject, LogicFactory, Direction } from "@/core"; -import { BasicButton } from "@/base"; +import { Label, Icon, BasicButton } from "@/base"; +import { CenterAdaptLayout, shortcut, extend, createWidget, isPlainObject, LogicFactory, Direction } from "@/core"; @shortcut() export class DownListItem extends BasicButton { - static xtype = "bi.down_list_item"; - - static EVENT_CHANGE = "EVENT_CHANGE"; - - _defaultConfig() { - const conf = super._defaultConfig(...arguments); - - return extend(conf, { - baseCls: "bi-down-list-item bi-list-item-active", - cls: "", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, - logic: { - dynamic: true, - }, - selected: false, - iconHeight: null, - iconWidth: null, - textHgap: 0, - textVgap: 0, - textLgap: 0, - textRgap: 0, - }); - } - - _init() { - super._init(...arguments); - const o = this.options; - this.text = createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height, - }); - - const icon = isPlainObject(o.icon) - ? o.icon - : { - type: "bi.icon", - width: o.iconWidth, - height: o.iconHeight, - }; - - this.icon = createWidget({ - type: "bi.center_adapt", - width: 36, - height: o.height, - items: [ - { - el: icon, - } - ], - }); - - createWidget( - extend( - { - element: this, - }, - LogicFactory.createLogic( - LogicFactory.createLogicTypeByDirection(Direction.Left), - extend(o.logic, { - items: LogicFactory.createLogicItemsByDirection( - Direction.Left, - this.icon, - this.text - ), - }) - ) - ) - ); - } - - setValue() { - if (!this.isReadOnly()) { - this.text.setValue(...arguments); - } - } - - getValue() { - return this.text.getValue(); - } - - setText() { - this.text.setText(...arguments); - } - - getText() { - return this.text.getText(); - } - - doClick() { - super.doClick(...arguments); - if (this.isValid()) { - this.fireEvent(DownListItem.EVENT_CHANGE, this.getValue(), this); - } - } - - doRedMark() { - this.text.doRedMark(...arguments); - } - - unRedMark() { - this.text.unRedMark(...arguments); - } - - doHighLight() { - this.text.doHighLight(...arguments); - } - - unHighLight() { - this.text.unHighLight(...arguments); - } + static xtype = "bi.down_list_item"; + + static EVENT_CHANGE = "EVENT_CHANGE"; + + _defaultConfig() { + const conf = super._defaultConfig(...arguments); + + return extend(conf, { + baseCls: "bi-down-list-item bi-list-item-active", + cls: "", + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + logic: { + dynamic: true, + }, + selected: false, + iconHeight: null, + iconWidth: null, + textHgap: 0, + textVgap: 0, + textLgap: 0, + textRgap: 0, + }); + } + + _init() { + super._init(...arguments); + const o = this.options; + this.text = createWidget({ + type: Label.xtype, + cls: "list-item-text", + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height, + }); + + const icon = isPlainObject(o.icon) + ? o.icon + : { + type: Icon.xtype, + width: o.iconWidth, + height: o.iconHeight, + }; + + this.icon = createWidget({ + type: CenterAdaptLayout.xtype, + width: 36, + height: o.height, + items: [ + { + el: icon, + } + ], + }); + + createWidget( + extend( + { + element: this, + }, + LogicFactory.createLogic( + LogicFactory.createLogicTypeByDirection(Direction.Left), + extend(o.logic, { + items: LogicFactory.createLogicItemsByDirection(Direction.Left, this.icon, this.text), + }) + ) + ) + ); + } + + setValue() { + if (!this.isReadOnly()) { + this.text.setValue(...arguments); + } + } + + getValue() { + return this.text.getValue(); + } + + setText() { + this.text.setText(...arguments); + } + + getText() { + return this.text.getText(); + } + + doClick() { + super.doClick(...arguments); + if (this.isValid()) { + this.fireEvent(DownListItem.EVENT_CHANGE, this.getValue(), this); + } + } + + doRedMark() { + this.text.doRedMark(...arguments); + } + + unRedMark() { + this.text.unRedMark(...arguments); + } + + doHighLight() { + this.text.doHighLight(...arguments); + } + + unHighLight() { + this.text.unHighLight(...arguments); + } } diff --git a/src/widget/downlist/item.downlistgroup.js b/src/widget/downlist/item.downlistgroup.js index d2c9d14a7..8bc1d6094 100644 --- a/src/widget/downlist/item.downlistgroup.js +++ b/src/widget/downlist/item.downlistgroup.js @@ -1,4 +1,7 @@ +import { Label, IconButton, BasicButton } from "@/base"; import { + CenterAdaptLayout, + HorizontalFillLayout, shortcut, extend, createWidget, @@ -10,132 +13,130 @@ import { first, BlankSplitChar } from "@/core"; -import { BasicButton } from "@/base"; @shortcut() export class DownListGroupItem extends BasicButton { - static xtype = "bi.down_list_group_item"; - - static EVENT_CHANGE = "EVENT_CHANGE"; - - _defaultConfig() { - const conf = super._defaultConfig(...arguments); - - return extend(conf, { - baseCls: `${conf.baseCls || ""} bi-down-list-group-item`, - logic: { - dynamic: false, - }, - // invalid: true, - iconCls1: "dot-e-font", - icon: "", - iconCls2: "pull-right-e-font", - }); - } - - render() { - const o = this.options; - this.text = createWidget({ - type: "bi.label", - cls: "list-group-item-text", - textAlign: "left", - text: o.text, - value: o.value, - height: o.height, - }); - - if (isPlainObject(o.icon)) { - this.icon1 = createWidget({ - width: 36, - height: o.height, - type: "bi.center_adapt", - items: [o.icon], - }); - } else { - this.icon1 = createWidget({ - type: "bi.icon_button", - cls: o.iconCls1, - width: 36, - height: o.height, - iconHeight: o.iconHeight, - iconWidth: 36, - disableSelected: true, - selected: this._digest(o.value), - }); - } - - this.icon2 = createWidget({ - type: "bi.icon_button", - cls: o.iconCls2, - width: 24, - forceNotSelected: true, - }); - - this.element.hover( - () => { - if (this.isEnabled()) { - this.hover(); - } - }, - () => { - if (this.isEnabled()) { - this.dishover(); - } - } - ); - - return { - type: "bi.horizontal_fill", - columnSize: [36, "fill", 24], - items: [this.icon1, this.text, this.icon2], - }; - } - - _getLevel() { - const child = first(this.options.childValues); - - return isNotNull(child) ? (`${child}`).split(BlankSplitChar).length : 0; - } - - _digest(v) { - const o = this.options; - v = isArray(v) ? v : [v]; - const level = this._getLevel(); - - return any(v, (idx, value) => contains( - o.childValues, - (`${value}`).split(BlankSplitChar).slice(0, level).join(BlankSplitChar) - )); - } - - hover() { - super.hover(...arguments); - this.icon1.element.addClass("hover"); - this.icon2.element.addClass("hover"); - } - - dishover() { - super.dishover(...arguments); - this.icon1.element.removeClass("hover"); - this.icon2.element.removeClass("hover"); - } - - doClick() { - super.doClick(...arguments); - if (this.isValid()) { - this.fireEvent(DownListGroupItem.EVENT_CHANGE, this.getValue()); - } - } - - doRedMark() { - this.text.doRedMark(...arguments); - } - - unRedMark() { - this.text.unRedMark(...arguments); - } - - setValue(v) { - this.icon1.setSelected && this.icon1.setSelected(this._digest(v)); - } + static xtype = "bi.down_list_group_item"; + + static EVENT_CHANGE = "EVENT_CHANGE"; + + _defaultConfig() { + const conf = super._defaultConfig(...arguments); + + return extend(conf, { + baseCls: `${conf.baseCls || ""} bi-down-list-group-item`, + logic: { + dynamic: false, + }, + // invalid: true, + iconCls1: "dot-e-font", + icon: "", + iconCls2: "pull-right-e-font", + }); + } + + render() { + const o = this.options; + this.text = createWidget({ + type: Label.xtype, + cls: "list-group-item-text", + textAlign: "left", + text: o.text, + value: o.value, + height: o.height, + }); + + if (isPlainObject(o.icon)) { + this.icon1 = createWidget({ + width: 36, + height: o.height, + type: CenterAdaptLayout.xtype, + items: [o.icon], + }); + } else { + this.icon1 = createWidget({ + type: IconButton.xtype, + cls: o.iconCls1, + width: 36, + height: o.height, + iconHeight: o.iconHeight, + iconWidth: 36, + disableSelected: true, + selected: this._digest(o.value), + }); + } + + this.icon2 = createWidget({ + type: IconButton.xtype, + cls: o.iconCls2, + width: 24, + forceNotSelected: true, + }); + + this.element.hover( + () => { + if (this.isEnabled()) { + this.hover(); + } + }, + () => { + if (this.isEnabled()) { + this.dishover(); + } + } + ); + + return { + type: HorizontalFillLayout.xtype, + columnSize: [36, "fill", 24], + items: [this.icon1, this.text, this.icon2], + }; + } + + _getLevel() { + const child = first(this.options.childValues); + + return isNotNull(child) ? `${child}`.split(BlankSplitChar).length : 0; + } + + _digest(v) { + const o = this.options; + v = isArray(v) ? v : [v]; + const level = this._getLevel(); + + return any(v, (idx, value) => + contains(o.childValues, `${value}`.split(BlankSplitChar).slice(0, level).join(BlankSplitChar)) + ); + } + + hover() { + super.hover(...arguments); + this.icon1.element.addClass("hover"); + this.icon2.element.addClass("hover"); + } + + dishover() { + super.dishover(...arguments); + this.icon1.element.removeClass("hover"); + this.icon2.element.removeClass("hover"); + } + + doClick() { + super.doClick(...arguments); + if (this.isValid()) { + this.fireEvent(DownListGroupItem.EVENT_CHANGE, this.getValue()); + } + } + + doRedMark() { + this.text.doRedMark(...arguments); + } + + unRedMark() { + this.text.unRedMark(...arguments); + } + + setValue(v) { + this.icon1.setSelected && this.icon1.setSelected(this._digest(v)); + } } diff --git a/src/widget/downlist/popup.downlist.js b/src/widget/downlist/popup.downlist.js index 9ca7e0edd..984e78273 100644 --- a/src/widget/downlist/popup.downlist.js +++ b/src/widget/downlist/popup.downlist.js @@ -1,4 +1,7 @@ +import { ButtonTree, Pane } from "@/base"; import { + VerticalLayout, + Layout, shortcut, extend, createWidget, @@ -13,320 +16,315 @@ import { some, deepClone } from "@/core"; -import { Pane, ButtonTree } from "@/base"; +import { DownListGroup } from "./group.downlist"; @shortcut() export class DownListPopup extends Pane { - static xtype = "bi.down_list_popup"; + static xtype = "bi.down_list_popup"; - constants = { - nextIcon: "pull-right-e-font", - height: 24, - iconHeight: 12, - iconWidth: 12, - hgap: 0, - vgap: 0, - border: 1, - }; + constants = { + nextIcon: "pull-right-e-font", + height: 24, + iconHeight: 12, + iconWidth: 12, + hgap: 0, + vgap: 0, + border: 1, + }; - static EVENT_CHANGE = "EVENT_CHANGE"; - static EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; - _defaultConfig() { - const conf = super._defaultConfig(...arguments); - - return extend(conf, { - baseCls: "bi-down-list-popup", - items: [], - chooseType: Selection.Multi, - }); - } + _defaultConfig() { + const conf = super._defaultConfig(...arguments); - _init() { - super._init(...arguments); - this.singleValues = []; - this.childValueMap = {}; - this.fatherValueMap = {}; - this.items = []; - const o = this.options, - children = this._createPopupItems(o.items); - this.popup = createWidget({ - type: "bi.button_tree", - items: createItems( - children, - {}, - { - adjustLength: -2, - } - ), - layouts: [ - { - type: "bi.vertical", - hgap: this.constants.hgap, - vgap: this.constants.vgap, - } - ], - value: this._digest(o.value), - chooseType: o.chooseType, - }); + return extend(conf, { + baseCls: "bi-down-list-popup", + items: [], + chooseType: Selection.Multi, + }); + } - this.popup.on(ButtonTree.EVENT_CHANGE, (value, object) => { - let changedValue = value; - if (isNotNull(this.childValueMap[value])) { - changedValue = this.childValueMap[value]; - this.fireEvent( - DownListPopup.EVENT_SON_VALUE_CHANGE, - changedValue, - this.fatherValueMap[value] - ); - } else { - this.fireEvent(DownListPopup.EVENT_CHANGE, changedValue, object); - } + _init() { + super._init(...arguments); + this.singleValues = []; + this.childValueMap = {}; + this.fatherValueMap = {}; + this.items = []; + const o = this.options, + children = this._createPopupItems(o.items); + this.popup = createWidget({ + type: ButtonTree.xtype, + items: createItems( + children, + {}, + { + adjustLength: -2, + } + ), + layouts: [ + { + type: VerticalLayout.xtype, + hgap: this.constants.hgap, + vgap: this.constants.vgap, + } + ], + value: this._digest(o.value), + chooseType: o.chooseType, + }); - if (!contains(this.singleValues, changedValue)) { - const item = this.getValue(); - const result = []; - each(item, (i, valueObject) => { - if (valueObject.value !== changedValue) { - result.push(valueObject); - } - }); - this.setValue(result); - } - }); + this.popup.on(ButtonTree.EVENT_CHANGE, (value, object) => { + let changedValue = value; + if (isNotNull(this.childValueMap[value])) { + changedValue = this.childValueMap[value]; + this.fireEvent(DownListPopup.EVENT_SON_VALUE_CHANGE, changedValue, this.fatherValueMap[value]); + } else { + this.fireEvent(DownListPopup.EVENT_CHANGE, changedValue, object); + } - createWidget({ - type: "bi.vertical", - element: this, - items: [this.popup], - vgap: 5, - }); - } + if (!contains(this.singleValues, changedValue)) { + const item = this.getValue(); + const result = []; + each(item, (i, valueObject) => { + if (valueObject.value !== changedValue) { + result.push(valueObject); + } + }); + this.setValue(result); + } + }); - _createPopupItems(items) { - const result = []; - // 不能修改populate进来的item的引用 - each(items, (i, it) => { - const item_done = { - type: "bi.down_list_group", - items: [], - }; + createWidget({ + type: VerticalLayout.xtype, + element: this, + items: [this.popup], + vgap: 5, + }); + } - const storeItem = []; + _createPopupItems(items) { + const result = []; + // 不能修改populate进来的item的引用 + each(items, (i, it) => { + const item_done = { + type: DownListGroup.xtype, + items: [], + }; - each(it, (i, sourceItem) => { - const item = extend({}, sourceItem); - if (isNotEmptyArray(sourceItem.children) && !isEmpty(sourceItem.el)) { - item.type = "bi.combo_group"; - // popup未初始化返回的是options中的value, 在经过buttontree的getValue concat之后,无法区分值来自options - // 还是item自身, 这边控制defaultInit为true来避免这个问题 - item.isDefaultInit = true; - item.cls = "down-list-group"; - item.trigger = "hover"; - item.isNeedAdjustWidth = false; - item.el = sourceItem.el; - item.el.title = sourceItem.el.title || sourceItem.el.text; - item.el.type = "bi.down_list_group_item"; - item.el.logic = { - dynamic: true, - }; - item.el.height = - sourceItem.el.height || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT; - item.el.iconCls2 = this.constants.nextIcon; - item.popup = { - lgap: 1, - el: { - type: "bi.button_tree", - chooseType: 0, - layouts: [ - { - type: "bi.vertical", - } - ], - }, - innerVgap: 5, - maxHeight: 378, - }; - this._createChildren(item, sourceItem); - } else { - item.type = sourceItem.type || "bi.down_list_item"; - item.title = sourceItem.title || sourceItem.text; - item.textRgap = 10; - item.isNeedAdjustWidth = false; - item.logic = { - dynamic: true, - }; - } - const el_done = {}; - el_done.el = item; - item_done.items.push(el_done); - storeItem.push(item); - }); - if (this._isGroup(item_done.items)) { - each(item_done.items, (i, item) => { - this.singleValues.push(item.el.value); - }); - } + const storeItem = []; - result.push(item_done); - this.items.push(storeItem); - if (this._needSpliter(i, items.length)) { - const spliter_container = createWidget({ - type: "bi.vertical", - items: [ - { - el: { - type: "bi.layout", - cls: "bi-down-list-spliter bi-split-top cursor-pointer", - height: 0, - }, - } - ], - cls: "bi-down-list-spliter-container cursor-pointer", - vgap: 5, - hgap: 12, - }); - result.push(spliter_container); - } - }); - - return result; - } + each(it, (i, sourceItem) => { + const item = extend({}, sourceItem); + if (isNotEmptyArray(sourceItem.children) && !isEmpty(sourceItem.el)) { + item.type = "bi.combo_group"; + // popup未初始化返回的是options中的value, 在经过buttontree的getValue concat之后,无法区分值来自options + // 还是item自身, 这边控制defaultInit为true来避免这个问题 + item.isDefaultInit = true; + item.cls = "down-list-group"; + item.trigger = "hover"; + item.isNeedAdjustWidth = false; + item.el = sourceItem.el; + item.el.title = sourceItem.el.title || sourceItem.el.text; + item.el.type = "bi.down_list_group_item"; + item.el.logic = { + dynamic: true, + }; + item.el.height = sourceItem.el.height || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT; + item.el.iconCls2 = this.constants.nextIcon; + item.popup = { + lgap: 1, + el: { + type: ButtonTree.xtype, + chooseType: 0, + layouts: [ + { + type: VerticalLayout.xtype, + } + ], + }, + innerVgap: 5, + maxHeight: 378, + }; + this._createChildren(item, sourceItem); + } else { + item.type = sourceItem.type || "bi.down_list_item"; + item.title = sourceItem.title || sourceItem.text; + item.textRgap = 10; + item.isNeedAdjustWidth = false; + item.logic = { + dynamic: true, + }; + } + const el_done = {}; + el_done.el = item; + item_done.items.push(el_done); + storeItem.push(item); + }); + if (this._isGroup(item_done.items)) { + each(item_done.items, (i, item) => { + this.singleValues.push(item.el.value); + }); + } - _createChildren(targetItem, sourceItem) { - targetItem.el.childValues = []; - targetItem.items = targetItem.children = []; - each(sourceItem.children, (i, child) => { - const item = extend({}, child); - const fatherValue = deepClone(targetItem.el.value); - const childValue = deepClone(item.value); - this.singleValues.push(item.value); - item.type = item.type || "bi.down_list_item"; - item.extraCls = " child-down-list-item"; - item.title = item.title || item.text; - item.textRgap = 10; - item.isNeedAdjustWidth = false; - item.logic = { - dynamic: true, - }; - item.father = fatherValue; - item.childValue = item.value; - this.fatherValueMap[this._createChildValue(fatherValue, childValue)] = - fatherValue; - this.childValueMap[this._createChildValue(fatherValue, childValue)] = - childValue; - item.value = this._createChildValue(fatherValue, childValue); - targetItem.el.childValues.push(item.value); - targetItem.items.push(item); - }); - } + result.push(item_done); + this.items.push(storeItem); + if (this._needSpliter(i, items.length)) { + const spliter_container = createWidget({ + type: VerticalLayout.xtype, + items: [ + { + el: { + type: Layout.xtype, + cls: "bi-down-list-spliter bi-split-top cursor-pointer", + height: 0, + }, + } + ], + cls: "bi-down-list-spliter-container cursor-pointer", + vgap: 5, + hgap: 12, + }); + result.push(spliter_container); + } + }); - _isGroup(i) { - return i.length > 1; - } + return result; + } - _needSpliter(i, itemLength) { - return i < itemLength - 1; - } + _createChildren(targetItem, sourceItem) { + targetItem.el.childValues = []; + targetItem.items = targetItem.children = []; + each(sourceItem.children, (i, child) => { + const item = extend({}, child); + const fatherValue = deepClone(targetItem.el.value); + const childValue = deepClone(item.value); + this.singleValues.push(item.value); + item.type = item.type || "bi.down_list_item"; + item.extraCls = " child-down-list-item"; + item.title = item.title || item.text; + item.textRgap = 10; + item.isNeedAdjustWidth = false; + item.logic = { + dynamic: true, + }; + item.father = fatherValue; + item.childValue = item.value; + this.fatherValueMap[this._createChildValue(fatherValue, childValue)] = fatherValue; + this.childValueMap[this._createChildValue(fatherValue, childValue)] = childValue; + item.value = this._createChildValue(fatherValue, childValue); + targetItem.el.childValues.push(item.value); + targetItem.items.push(item); + }); + } - _createChildValue(fatherValue, childValue) { - return fatherValue + BI.BlankSplitChar + childValue; - } + _isGroup(i) { + return i.length > 1; + } - _digest(valueItem) { - const valueArray = []; - each(valueItem, (i, item) => { - let value; - if (isNotNull(item.childValue)) { - value = this._createChildValue(item.value, item.childValue); - } else { - value = item.value; - } - valueArray.push(value); - }); - - return valueArray; - } + _needSpliter(i, itemLength) { + return i < itemLength - 1; + } - _checkValues(values) { - const value = []; - each(this.items, (idx, itemGroup) => { - each(itemGroup, (id, item) => { - if (isNotNull(item.children)) { - const childValues = map(item.children, "value"); - const v = joinValue(childValues, values[idx]); - if (isNotEmptyString(v)) { - value.push(v); - } - } else { - if (item.value === values[idx][0]) { - value.push(values[idx][0]); - } - } - }); - }); - - return value; + _createChildValue(fatherValue, childValue) { + return fatherValue + BI.BlankSplitChar + childValue; + } - function joinValue(sources, targets) { - let value = ""; - some(sources, (idx, s) => some(targets, (id, t) => { - if (s === t) { - value = s; - - return true; - } - })); - - return value; - } - } + _digest(valueItem) { + const valueArray = []; + each(valueItem, (i, item) => { + let value; + if (isNotNull(item.childValue)) { + value = this._createChildValue(item.value, item.childValue); + } else { + value = item.value; + } + valueArray.push(value); + }); - populate(items) { - super.populate(...arguments); - this.items = []; - this.childValueMap = {}; - this.fatherValueMap = {}; - this.singleValues = []; - const children = this._createPopupItems(items); - const popupItem = createItems( - children, - {}, - { - adjustLength: -2, - } - ); - this.popup.populate(popupItem); - } + return valueArray; + } - setValue(valueItem) { - this.popup.setValue(this._digest(valueItem)); - } + _checkValues(values) { + const value = []; + each(this.items, (idx, itemGroup) => { + each(itemGroup, (id, item) => { + if (isNotNull(item.children)) { + const childValues = map(item.children, "value"); + const v = joinValue(childValues, values[idx]); + if (isNotEmptyString(v)) { + value.push(v); + } + } else { + if (item.value === values[idx][0]) { + value.push(values[idx][0]); + } + } + }); + }); - _getValue() { - const v = []; - each(this.popup.getAllButtons(), (i, item) => { - i % 2 === 0 && v.push(item.getValue()); - }); - - return v; - } + return value; - getValue() { - const result = []; - const values = this._checkValues(this._getValue()); - each(values, (i, value) => { - const valueItem = {}; - if (isNotNull(this.childValueMap[value])) { - const fartherValue = this.fatherValueMap[value]; - valueItem.childValue = this.childValueMap[value]; - valueItem.value = fartherValue; - } else { - valueItem.value = value; - } - result.push(valueItem); - }); - - return result; - } + function joinValue(sources, targets) { + let value = ""; + some(sources, (idx, s) => + some(targets, (id, t) => { + if (s === t) { + value = s; + + return true; + } + }) + ); + + return value; + } + } + + populate(items) { + super.populate(...arguments); + this.items = []; + this.childValueMap = {}; + this.fatherValueMap = {}; + this.singleValues = []; + const children = this._createPopupItems(items); + const popupItem = createItems( + children, + {}, + { + adjustLength: -2, + } + ); + this.popup.populate(popupItem); + } + + setValue(valueItem) { + this.popup.setValue(this._digest(valueItem)); + } + + _getValue() { + const v = []; + each(this.popup.getAllButtons(), (i, item) => { + i % 2 === 0 && v.push(item.getValue()); + }); + + return v; + } + + getValue() { + const result = []; + const values = this._checkValues(this._getValue()); + each(values, (i, value) => { + const valueItem = {}; + if (isNotNull(this.childValueMap[value])) { + const fartherValue = this.fatherValueMap[value]; + valueItem.childValue = this.childValueMap[value]; + valueItem.value = fartherValue; + } else { + valueItem.value = value; + } + result.push(valueItem); + }); + + return result; + } } diff --git a/src/widget/dynamicdate/dynamicdate.caculate.js b/src/widget/dynamicdate/dynamicdate.caculate.js index e94718d82..245471cfd 100644 --- a/src/widget/dynamicdate/dynamicdate.caculate.js +++ b/src/widget/dynamicdate/dynamicdate.caculate.js @@ -1,53 +1,86 @@ -import { isNotNull, parseInt, getDate, i18nText, size, getOffsetQuarter, getOffsetMonth, getOffsetDate, getLastDateOfMonth, getWeekStartDate, getWeekEndDate, getQuarterStartDate, getQuarterEndDate, print } from "@/core"; +import { + isNotNull, + parseInt, + getDate, + i18nText, + size, + getOffsetQuarter, + getOffsetMonth, + getOffsetDate, + getLastDateOfMonth, + getWeekStartDate, + getWeekEndDate, + getQuarterStartDate, + getQuarterEndDate, + print +} from "@/core"; import { DynamicDateCard } from "./dynamicdate.card"; export const DynamicDateHelper = { - getCalculation (obj) { + getCalculation(obj) { const date = getDate(); return this.getCalculationByDate(date, obj); }, - getDescription (obj) { + getDescription(obj) { let value = ""; let endText = ""; if (isNotNull(obj.year)) { if (parseInt(obj.year) !== 0) { - value += Math.abs(obj.year) + i18nText("BI-Basic_Year") + (obj.year < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.year) + + i18nText("BI-Basic_Year") + + (obj.year < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = getPositionText(i18nText("BI-Basic_Year"), obj.position); } if (isNotNull(obj.quarter)) { if (parseInt(obj.quarter) !== 0) { - value += Math.abs(obj.quarter) + i18nText("BI-Basic_Single_Quarter") + (obj.quarter < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.quarter) + + i18nText("BI-Basic_Single_Quarter") + + (obj.quarter < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = getPositionText(i18nText("BI-Basic_Single_Quarter"), obj.position); } if (isNotNull(obj.month)) { if (parseInt(obj.month) !== 0) { - value += Math.abs(obj.month) + i18nText("BI-Basic_Month") + (obj.month < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.month) + + i18nText("BI-Basic_Month") + + (obj.month < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = getPositionText(i18nText("BI-Basic_Month"), obj.position); } if (isNotNull(obj.week)) { if (parseInt(obj.week) !== 0) { - value += Math.abs(obj.week) + i18nText("BI-Basic_Week") + (obj.week < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.week) + + i18nText("BI-Basic_Week") + + (obj.week < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = getPositionText(i18nText("BI-Basic_Week"), obj.position); } if (isNotNull(obj.day)) { if (parseInt(obj.day) !== 0) { - value += Math.abs(obj.day) + i18nText("BI-Basic_Day") + (obj.day < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.day) + + i18nText("BI-Basic_Day") + + (obj.day < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = size(obj) === 1 ? getPositionText(i18nText("BI-Basic_Month"), obj.position) : ""; } if (isNotNull(obj.workDay) && parseInt(obj.workDay) !== 0) { - value += Math.abs(obj.workDay) + i18nText("BI-Basic_Work_Day") + (obj.workDay < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.workDay) + + i18nText("BI-Basic_Work_Day") + + (obj.workDay < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } - + return value + endText; - function getPositionText (baseText, position) { + function getPositionText(baseText, position) { switch (position) { case DynamicDateCard.OFFSET.BEGIN: return baseText + i18nText("BI-Basic_Begin_Start"); @@ -60,9 +93,9 @@ export const DynamicDateHelper = { } }, - getCalculationByDate (date, obj) { + getCalculationByDate(date, obj) { if (isNotNull(obj.year)) { - date = getDate((date.getFullYear() + parseInt(obj.year)), date.getMonth(), date.getDate()); + date = getDate(date.getFullYear() + parseInt(obj.year), date.getMonth(), date.getDate()); } if (isNotNull(obj.quarter)) { date = getOffsetQuarter(date, parseInt(obj.quarter)); @@ -97,23 +130,29 @@ export const DynamicDateHelper = { return getDate(date.getFullYear(), date.getMonth(), date.getDate()); }, - getBeginDate (date, obj) { + getBeginDate(date, obj) { if (isNotNull(obj.day)) { - return obj.position === DynamicDateCard.OFFSET.BEGIN ? getDate(date.getFullYear(), date.getMonth(), 1) : getDate(date.getFullYear(), date.getMonth(), (getLastDateOfMonth(date)).getDate()); + return obj.position === DynamicDateCard.OFFSET.BEGIN + ? getDate(date.getFullYear(), date.getMonth(), 1) + : getDate(date.getFullYear(), date.getMonth(), getLastDateOfMonth(date).getDate()); } if (isNotNull(obj.week)) { return obj.position === DynamicDateCard.OFFSET.BEGIN ? getWeekStartDate(date) : getWeekEndDate(date); } if (isNotNull(obj.month)) { - return obj.position === DynamicDateCard.OFFSET.BEGIN ? getDate(date.getFullYear(), date.getMonth(), 1) : getDate(date.getFullYear(), date.getMonth(), (getLastDateOfMonth(date)).getDate()); + return obj.position === DynamicDateCard.OFFSET.BEGIN + ? getDate(date.getFullYear(), date.getMonth(), 1) + : getDate(date.getFullYear(), date.getMonth(), getLastDateOfMonth(date).getDate()); } if (isNotNull(obj.quarter)) { return obj.position === DynamicDateCard.OFFSET.BEGIN ? getQuarterStartDate(date) : getQuarterEndDate(date); } if (isNotNull(obj.year)) { - return obj.position === DynamicDateCard.OFFSET.BEGIN ? getDate(date.getFullYear(), 0, 1) : getDate(date.getFullYear(), 11, 31); + return obj.position === DynamicDateCard.OFFSET.BEGIN + ? getDate(date.getFullYear(), 0, 1) + : getDate(date.getFullYear(), 11, 31); } - + return date; }, }; diff --git a/src/widget/dynamicdate/dynamicdate.card.js b/src/widget/dynamicdate/dynamicdate.card.js index 4b0ce2649..e70d2bdd1 100644 --- a/src/widget/dynamicdate/dynamicdate.card.js +++ b/src/widget/dynamicdate/dynamicdate.card.js @@ -1,12 +1,33 @@ -import { shortcut, Widget, i18nText, createItems, each, isNotNull, map, has, bind, last, extend, checkDateVoid, isNull, isNotEmptyString, parseDateTime, any } from "@/core"; -import { ButtonGroup, Bubbles } from "@/base"; -import { MultiSelectItem } from "@/case"; +import { + VerticalLayout, + FloatLeftLayout, + VerticalAdaptLayout, + shortcut, + Widget, + i18nText, + createItems, + each, + isNotNull, + map, + has, + bind, + last, + extend, + checkDateVoid, + isNull, + isNotEmptyString, + parseDateTime, + any +} from "@/core"; +import { Label, ButtonGroup, Bubbles } from "@/base"; +import { MultiSelectItem, TextValueCombo } from "@/case"; +import { DynamicDateParamItem } from "./dynamicdate.param.item"; import { DynamicDateHelper } from "./dynamicdate.caculate"; @shortcut() export class DynamicDateCard extends Widget { static xtype = "bi.dynamic_date_card"; - + static TYPE = { YEAR: 1, QUARTER: 2, @@ -27,132 +48,168 @@ export class DynamicDateCard extends Widget { render() { this.position = DynamicDateCard.OFFSET.CURRENT; - + return { - type: "bi.vertical", - items: [{ - el: { - type: "bi.label", - text: i18nText("BI-Multi_Date_Relative_Current_Time"), - textAlign: "left", - lgap: 10, - }, - tgap: 10, - bgap: 5, - }, { - type: "bi.button_group", - ref: _ref => { - this.checkgroup = _ref; + type: VerticalLayout.xtype, + items: [ + { + el: { + type: Label.xtype, + text: i18nText("BI-Multi_Date_Relative_Current_Time"), + textAlign: "left", + lgap: 10, + }, + tgap: 10, + bgap: 5, }, - chooseType: ButtonGroup.CHOOSE_TYPE_MULTI, - lgap: 4, - value: [DynamicDateCard.TYPE.YEAR], - items: createItems([{ - text: i18nText("BI-Basic_Year"), - value: DynamicDateCard.TYPE.YEAR, - }, { - text: i18nText("BI-Basic_Single_Quarter"), - value: DynamicDateCard.TYPE.QUARTER, - }, { - text: i18nText("BI-Basic_Month"), - value: DynamicDateCard.TYPE.MONTH, - }, { - text: i18nText("BI-Basic_Week"), - value: DynamicDateCard.TYPE.WEEK, - }, { - text: i18nText("BI-Basic_Day"), - value: DynamicDateCard.TYPE.DAY, - }], { - type: "bi.multi_select_item", - logic: { - dynamic: true, + { + type: ButtonGroup.xtype, + ref: _ref => { + this.checkgroup = _ref; }, - iconWrapperWidth: 26, - }), - layouts: [{ - type: "bi.left", - rgap: 4, - }], - listeners: [{ - eventName: ButtonGroup.EVENT_CHANGE, - action: () => { - const value = this.checkgroup.getValue(); - if (value.length !== 0) { - this.workDayBox.setSelected(false); - } - - const plainValue = {}; - each(this.resultPane.getAllButtons(), (idx, button) => { - const value = button.getValue(); - if (isNotNull(value.dateType)) { - plainValue[value.dateType] = { - value: value.value, - offset: value.offset, - }; - } - }); - this.resultPane.populate(this._getParamJson(map(this.checkgroup.getValue(), (idx, v) => { - const obj = { - dateType: v, - }; - if (has(plainValue, v)) { - obj.value = plainValue[v].value; - obj.offset = plainValue[v].offset; + chooseType: ButtonGroup.CHOOSE_TYPE_MULTI, + lgap: 4, + value: [DynamicDateCard.TYPE.YEAR], + items: createItems( + [ + { + text: i18nText("BI-Basic_Year"), + value: DynamicDateCard.TYPE.YEAR, + }, + { + text: i18nText("BI-Basic_Single_Quarter"), + value: DynamicDateCard.TYPE.QUARTER, + }, + { + text: i18nText("BI-Basic_Month"), + value: DynamicDateCard.TYPE.MONTH, + }, + { + text: i18nText("BI-Basic_Week"), + value: DynamicDateCard.TYPE.WEEK, + }, + { + text: i18nText("BI-Basic_Day"), + value: DynamicDateCard.TYPE.DAY, } - - return obj; - }))); - this.position = DynamicDateCard.OFFSET.CURRENT; - this.fireEvent("EVENT_CHANGE"); - }, - }], - }, { - type: "bi.vertical_adapt", - lgap: 2, - items: [{ - el: { - type: "bi.multi_select_item", - iconWrapperWidth: 26, - ref: _ref => { - this.workDayBox = _ref; - }, - logic: { - dynamic: true, - }, - text: i18nText("BI-Basic_Work_Day"), - value: DynamicDateCard.TYPE.WORK_DAY, - listeners: [{ - eventName: MultiSelectItem.EVENT_CHANGE, + ], + { + type: MultiSelectItem.xtype, + logic: { + dynamic: true, + }, + iconWrapperWidth: 26, + } + ), + layouts: [ + { + type: FloatLeftLayout.xtype, + rgap: 4, + } + ], + listeners: [ + { + eventName: ButtonGroup.EVENT_CHANGE, action: () => { - if (this.workDayBox.isSelected()) { - this.checkgroup.setValue(); + const value = this.checkgroup.getValue(); + if (value.length !== 0) { + this.workDayBox.setSelected(false); } - this.resultPane.populate(this.workDayBox.isSelected() ? this._getParamJson([{ - dateType: DynamicDateCard.TYPE.WORK_DAY, - }]) : []); + + const plainValue = {}; + each(this.resultPane.getAllButtons(), (idx, button) => { + const value = button.getValue(); + if (isNotNull(value.dateType)) { + plainValue[value.dateType] = { + value: value.value, + offset: value.offset, + }; + } + }); + this.resultPane.populate( + this._getParamJson( + map(this.checkgroup.getValue(), (idx, v) => { + const obj = { + dateType: v, + }; + if (has(plainValue, v)) { + obj.value = plainValue[v].value; + obj.offset = plainValue[v].offset; + } + + return obj; + }) + ) + ); this.position = DynamicDateCard.OFFSET.CURRENT; this.fireEvent("EVENT_CHANGE"); }, - }], - }, - }], - ref: _ref => { - this.workDay = _ref; + } + ], }, - }, { - type: "bi.button_group", - items: this._getParamJson([{ - dateType: DynamicDateCard.TYPE.YEAR, - }]), - ref: _ref => { - this.resultPane = _ref; + { + type: VerticalAdaptLayout.xtype, + lgap: 2, + items: [ + { + el: { + type: MultiSelectItem.xtype, + iconWrapperWidth: 26, + ref: _ref => { + this.workDayBox = _ref; + }, + logic: { + dynamic: true, + }, + text: i18nText("BI-Basic_Work_Day"), + value: DynamicDateCard.TYPE.WORK_DAY, + listeners: [ + { + eventName: MultiSelectItem.EVENT_CHANGE, + action: () => { + if (this.workDayBox.isSelected()) { + this.checkgroup.setValue(); + } + this.resultPane.populate( + this.workDayBox.isSelected() + ? this._getParamJson([ + { + dateType: DynamicDateCard.TYPE.WORK_DAY, + } + ]) + : [] + ); + this.position = DynamicDateCard.OFFSET.CURRENT; + this.fireEvent("EVENT_CHANGE"); + }, + } + ], + }, + } + ], + ref: _ref => { + this.workDay = _ref; + }, }, - layouts: [{ - type: "bi.vertical", - bgap: 10, - hgap: 10, - }], - }], + { + type: ButtonGroup.xtype, + items: this._getParamJson([ + { + dateType: DynamicDateCard.TYPE.YEAR, + } + ]), + ref: _ref => { + this.resultPane = _ref; + }, + layouts: [ + { + type: VerticalLayout.xtype, + bgap: 10, + hgap: 10, + } + ], + } + ], }; } @@ -160,22 +217,25 @@ export class DynamicDateCard extends Widget { const items = map(values, (idx, value) => { return { el: { - type: "bi.dynamic_date_param_item", + type: DynamicDateParamItem.xtype, validationChecker: bind(this._checkDate, this), dateType: value.dateType, value: value.value, offset: value.offset, - listeners: [{ - eventName: "EVENT_CHANGE", - action: () => { - this.fireEvent("EVENT_CHANGE"); - }, - }, { - eventName: "EVENT_INPUT_CHANGE", - action () { - Bubbles.hide("dynamic-date-error"); + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this.fireEvent("EVENT_CHANGE"); + }, }, - }], + { + eventName: "EVENT_INPUT_CHANGE", + action() { + Bubbles.hide("dynamic-date-error"); + }, + } + ], }, tgap: idx === 0 ? 5 : 0, }; @@ -185,7 +245,7 @@ export class DynamicDateCard extends Widget { const comboItems = this._getText(DynamicDateCard.TYPE.MONTH); comboItems[0].text = i18nText("BI-Basic_Empty"); items.push({ - type: "bi.text_value_combo", + type: TextValueCombo.xtype, height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, items: comboItems, container: null, @@ -193,19 +253,25 @@ export class DynamicDateCard extends Widget { ref: _ref => { this.textValueCombo = _ref; }, - listeners: [{ - eventName: "EVENT_CHANGE", - action: () => { - this.position = this.textValueCombo.getValue()[0]; - this.textValueCombo.setValue(this.position); - this.fireEvent("EVENT_CHANGE"); - }, - }], + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this.position = this.textValueCombo.getValue()[0]; + this.textValueCombo.setValue(this.position); + this.fireEvent("EVENT_CHANGE"); + }, + } + ], }); } else { - if (values.length !== 0 && last(values).dateType !== DynamicDateCard.TYPE.DAY && last(values).dateType !== DynamicDateCard.TYPE.WORK_DAY) { + if ( + values.length !== 0 && + last(values).dateType !== DynamicDateCard.TYPE.DAY && + last(values).dateType !== DynamicDateCard.TYPE.WORK_DAY + ) { items.push({ - type: "bi.text_value_combo", + type: TextValueCombo.xtype, height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, container: null, items: this._getText(last(values).dateType), @@ -213,14 +279,16 @@ export class DynamicDateCard extends Widget { ref: _ref => { this.textValueCombo = _ref; }, - listeners: [{ - eventName: "EVENT_CHANGE", - action: () => { - this.position = this.textValueCombo.getValue()[0]; - this.textValueCombo.setValue(this.position); - this.fireEvent("EVENT_CHANGE"); - }, - }], + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this.position = this.textValueCombo.getValue()[0]; + this.textValueCombo.setValue(this.position); + this.fireEvent("EVENT_CHANGE"); + }, + } + ], }); } } @@ -238,50 +306,66 @@ export class DynamicDateCard extends Widget { _getText(lastValue) { switch (lastValue) { case DynamicDateCard.TYPE.YEAR: - return [{ - text: i18nText("BI-Basic_Current_Day"), - value: DynamicDateCard.OFFSET.CURRENT, - }, { - text: i18nText("BI-Basic_Year_Begin"), - value: DynamicDateCard.OFFSET.BEGIN, - }, { - text: i18nText("BI-Basic_Year_End"), - value: DynamicDateCard.OFFSET.END, - }]; + return [ + { + text: i18nText("BI-Basic_Current_Day"), + value: DynamicDateCard.OFFSET.CURRENT, + }, + { + text: i18nText("BI-Basic_Year_Begin"), + value: DynamicDateCard.OFFSET.BEGIN, + }, + { + text: i18nText("BI-Basic_Year_End"), + value: DynamicDateCard.OFFSET.END, + } + ]; case DynamicDateCard.TYPE.QUARTER: - return [{ - text: i18nText("BI-Basic_Current_Day"), - value: DynamicDateCard.OFFSET.CURRENT, - }, { - text: i18nText("BI-Basic_Quarter_Begin"), - value: DynamicDateCard.OFFSET.BEGIN, - }, { - text: i18nText("BI-Basic_Quarter_End"), - value: DynamicDateCard.OFFSET.END, - }]; + return [ + { + text: i18nText("BI-Basic_Current_Day"), + value: DynamicDateCard.OFFSET.CURRENT, + }, + { + text: i18nText("BI-Basic_Quarter_Begin"), + value: DynamicDateCard.OFFSET.BEGIN, + }, + { + text: i18nText("BI-Basic_Quarter_End"), + value: DynamicDateCard.OFFSET.END, + } + ]; case DynamicDateCard.TYPE.MONTH: - return [{ - text: i18nText("BI-Basic_Current_Day"), - value: DynamicDateCard.OFFSET.CURRENT, - }, { - text: i18nText("BI-Basic_Month_Begin"), - value: DynamicDateCard.OFFSET.BEGIN, - }, { - text: i18nText("BI-Basic_Month_End"), - value: DynamicDateCard.OFFSET.END, - }]; + return [ + { + text: i18nText("BI-Basic_Current_Day"), + value: DynamicDateCard.OFFSET.CURRENT, + }, + { + text: i18nText("BI-Basic_Month_Begin"), + value: DynamicDateCard.OFFSET.BEGIN, + }, + { + text: i18nText("BI-Basic_Month_End"), + value: DynamicDateCard.OFFSET.END, + } + ]; case DynamicDateCard.TYPE.WEEK: default: - return [{ - text: i18nText("BI-Basic_Current_Day"), - value: DynamicDateCard.OFFSET.CURRENT, - }, { - text: i18nText("BI-Basic_Week_Begin"), - value: DynamicDateCard.OFFSET.BEGIN, - }, { - text: i18nText("BI-Basic_Week_End"), - value: DynamicDateCard.OFFSET.END, - }]; + return [ + { + text: i18nText("BI-Basic_Current_Day"), + value: DynamicDateCard.OFFSET.CURRENT, + }, + { + text: i18nText("BI-Basic_Week_Begin"), + value: DynamicDateCard.OFFSET.BEGIN, + }, + { + text: i18nText("BI-Basic_Week_End"), + value: DynamicDateCard.OFFSET.END, + } + ]; } } @@ -297,22 +381,22 @@ export class DynamicDateCard extends Widget { const valueMap = {}; switch (value.dateType) { case DynamicDateCard.TYPE.YEAR: - valueMap.year = (value.offset === 0 ? -value.value : +value.value); + valueMap.year = value.offset === 0 ? -value.value : +value.value; break; case DynamicDateCard.TYPE.QUARTER: - valueMap.quarter = (value.offset === 0 ? -value.value : +value.value); + valueMap.quarter = value.offset === 0 ? -value.value : +value.value; break; case DynamicDateCard.TYPE.MONTH: - valueMap.month = (value.offset === 0 ? -value.value : +value.value); + valueMap.month = value.offset === 0 ? -value.value : +value.value; break; case DynamicDateCard.TYPE.WEEK: - valueMap.week = (value.offset === 0 ? -value.value : +value.value); + valueMap.week = value.offset === 0 ? -value.value : +value.value; break; case DynamicDateCard.TYPE.DAY: - valueMap.day = (value.offset === 0 ? -value.value : +value.value); + valueMap.day = value.offset === 0 ? -value.value : +value.value; break; case DynamicDateCard.TYPE.WORK_DAY: - valueMap.workDay = (value.offset === 0 ? -value.value : +value.value); + valueMap.workDay = value.offset === 0 ? -value.value : +value.value; break; default: break; @@ -320,7 +404,7 @@ export class DynamicDateCard extends Widget { if (isNull(value.dateType)) { valueMap.position = this.position || DynamicDateCard.OFFSET.CURRENT; } - + return valueMap; } @@ -382,7 +466,7 @@ export class DynamicDateCard extends Widget { } if (this.workDayBox.isSelected()) { const value = buttons[0].getValue(); - valueMap.workDay = (value.offset === 0 ? -value.value : +value.value); + valueMap.workDay = value.offset === 0 ? -value.value : +value.value; } return valueMap; @@ -393,7 +477,8 @@ export class DynamicDateCard extends Widget { const start = parseDateTime(o.min, "%Y-%X-%d"); const end = parseDateTime(o.max, "%Y-%X-%d"); - return i18nText("BI-Basic_Date_Range_Error", + return i18nText( + "BI-Basic_Date_Range_Error", start.getFullYear(), start.getMonth() + 1, start.getDate(), diff --git a/src/widget/dynamicdate/dynamicdate.combo.js b/src/widget/dynamicdate/dynamicdate.combo.js index ddd793132..88958fced 100644 --- a/src/widget/dynamicdate/dynamicdate.combo.js +++ b/src/widget/dynamicdate/dynamicdate.combo.js @@ -1,33 +1,45 @@ -import { shortcut, getDate, toPix, isEqual, isNotEmptyString, isEmptyString, isNotNull, isNotEmptyObject, checkDateVoid } from "@/core"; -import { Single, Combo } from "@/base"; +import { + AbsoluteLayout, + HorizontalFillLayout, + shortcut, + getDate, + toPix, + isEqual, + isNotEmptyString, + isEmptyString, + isNotNull, + isNotEmptyObject, + checkDateVoid, +} from "@/core"; +import { Combo, IconButton, Single } from "@/base"; import { DynamicDateTrigger } from "./dynamicdate.trigger"; import { DynamicDatePopup } from "./dynamicdate.popup"; @shortcut() export class DynamicDateCombo extends Single { - static xtype = "bi.dynamic_date_combo" + static xtype = "bi.dynamic_date_combo"; - static EVENT_KEY_DOWN = "EVENT_KEY_DOWN" - static EVENT_CONFIRM = "EVENT_CONFIRM" - static EVENT_FOCUS = "EVENT_FOCUS" - static EVENT_BLUR = "EVENT_BLUR" - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_VALID = "EVENT_VALID" - static EVENT_ERROR = "EVENT_ERROR" - static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" + static EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; + static EVENT_CONFIRM = "EVENT_CONFIRM"; + static EVENT_FOCUS = "EVENT_FOCUS"; + static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_VALID = "EVENT_VALID"; + static EVENT_ERROR = "EVENT_ERROR"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; static Static = 1; static Dynamic = 2; - + constants = { popupHeight: 259, popupWidth: 270, comboAdjustHeight: 1, border: 1, iconWidth: 24, - } + }; props = { baseCls: "bi-dynamic-date-combo", @@ -56,200 +68,222 @@ export class DynamicDateCombo extends Single { const border = opts.simple ? 1 : 2; return { - type: "bi.absolute", - items: [{ - el: { - type: "bi.combo", - cls: `${opts.simple ? "bi-border-bottom" : "bi-border bi-border-radius"} bi-focus-shadow`, - container: opts.container, - ref: _ref => { - this.combo = _ref; - }, - toggle: false, - isNeedAdjustHeight: opts.isNeedAdjustHeight, - isNeedAdjustWidth: opts.isNeedAdjustWidth, - destroyWhenHide: true, + type: AbsoluteLayout.xtype, + items: [ + { el: { - type: "bi.horizontal_fill", - columnSize: [this.constants.iconWidth, "fill"], - height: toPix(opts.height, border), - items: [{ - el: { - type: "bi.icon_button", - cls: "bi-trigger-icon-button date-change-h-font", - width: toPix(opts.height, border), - height: toPix(opts.height, border), - ref: _ref => { - this.changeIcon = _ref; - }, - }, - }, { - type: "bi.dynamic_date_trigger", - simple: opts.simple, - min: opts.minDate, - max: opts.maxDate, - format: opts.format, - allowEdit: opts.allowEdit, - watermark: opts.watermark, - iconWidth: toPix(opts.height, border), + type: Combo.xtype, + cls: `${opts.simple ? "bi-border-bottom" : "bi-border bi-border-radius"} bi-focus-shadow`, + container: opts.container, + ref: (_ref) => { + this.combo = _ref; + }, + toggle: false, + isNeedAdjustHeight: opts.isNeedAdjustHeight, + isNeedAdjustWidth: opts.isNeedAdjustWidth, + destroyWhenHide: true, + el: { + type: HorizontalFillLayout.xtype, + columnSize: [this.constants.iconWidth, "fill"], height: toPix(opts.height, border), - value: opts.value, - ref: _ref => { - this.trigger = _ref; - }, - listeners: [{ - eventName: DynamicDateTrigger.EVENT_KEY_DOWN, - action: (...args) => { - if (this.combo.isViewVisible()) { - this.combo.hideView(); - } - this.fireEvent(DynamicDateCombo.EVENT_KEY_DOWN, ...args); - }, - }, { - eventName: DynamicDateTrigger.EVENT_STOP, - action: () => { - if (!this.combo.isViewVisible()) { - this.combo.showView(); - } - }, - }, { - eventName: DynamicDateTrigger.EVENT_FOCUS, - action: () => { - this.storeTriggerValue = this.trigger.getKey(); - if (!this.combo.isViewVisible()) { - this.combo.showView(); - } - this.fireEvent(DynamicDateCombo.EVENT_FOCUS); - }, - }, { - eventName: DynamicDateTrigger.EVENT_BLUR, - action: () => { - this.fireEvent(DynamicDateCombo.EVENT_BLUR); - }, - }, { - eventName: DynamicDateTrigger.EVENT_ERROR, - action: () => { - this.storeValue = { - type: DynamicDateCombo.Static, - value: { - year: date.getFullYear(), - month: date.getMonth() + 1, + items: [ + { + el: { + type: IconButton.xtype, + cls: "bi-trigger-icon-button date-change-h-font", + width: toPix(opts.height, border), + height: toPix(opts.height, border), + ref: (_ref) => { + this.changeIcon = _ref; }, - }; - this.combo.element.addClass("error"); - this.fireEvent(DynamicDateCombo.EVENT_ERROR); - }, - }, { - eventName: DynamicDateTrigger.EVENT_VALID, - action: () => { - this.storeValue = this.trigger.getValue(); - this.combo.element.removeClass("error"); - this.fireEvent(DynamicDateCombo.EVENT_VALID); - }, - }, { - eventName: DynamicDateTrigger.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDateCombo.EVENT_CHANGE); - }, - }, { - eventName: DynamicDateTrigger.EVENT_CONFIRM, - action: () => { - const dateStore = this.storeTriggerValue; - const dateObj = this.trigger.getKey(); - if (this.combo.isViewVisible() || isEqual(dateObj, dateStore)) { - return; - } - if (isNotEmptyString(dateObj) && !isEqual(dateObj, dateStore)) { - this.storeValue = this.trigger.getValue(); - this.setValue(this.trigger.getValue()); - } else if (isEmptyString(dateObj)) { - this.storeValue = null; - this.trigger.setValue(); - } - this._checkDynamicValue(this.storeValue); - this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); - }, - }], - }], - }, - adjustLength: this.constants.comboAdjustHeight, - popup: { - el: { - type: "bi.dynamic_date_popup", - width: opts.isNeedAdjustWidth ? opts.width : undefined, - supportDynamic: opts.supportDynamic, - behaviors: opts.behaviors, - min: opts.minDate, - max: opts.maxDate, - ref: _ref => { - this.popup = _ref; - }, - listeners: [{ - eventName: DynamicDatePopup.BUTTON_CLEAR_EVENT_CHANGE, - action: () => { - this.setValue(); - this.combo.hideView(); - this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); + }, }, - }, { - eventName: DynamicDatePopup.BUTTON_lABEL_EVENT_CHANGE, - action: () => { - const date = getDate(); - this.setValue({ - type: DynamicDateCombo.Static, - value: { - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), + { + type: DynamicDateTrigger.xtype, + simple: opts.simple, + min: opts.minDate, + max: opts.maxDate, + format: opts.format, + allowEdit: opts.allowEdit, + watermark: opts.watermark, + iconWidth: toPix(opts.height, border), + height: toPix(opts.height, border), + value: opts.value, + ref: (_ref) => { + this.trigger = _ref; + }, + listeners: [ + { + eventName: DynamicDateTrigger.EVENT_KEY_DOWN, + action: (...args) => { + if (this.combo.isViewVisible()) { + this.combo.hideView(); + } + this.fireEvent(DynamicDateCombo.EVENT_KEY_DOWN, ...args); + }, }, - }); - this.combo.hideView(); - this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); - }, - }, { - eventName: DynamicDatePopup.BUTTON_OK_EVENT_CHANGE, - action: () => { - const value = this.popup.getValue(); - if (this._checkValue(value)) { - this.setValue(value); - } - this.combo.hideView(); - this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); + { + eventName: DynamicDateTrigger.EVENT_STOP, + action: () => { + if (!this.combo.isViewVisible()) { + this.combo.showView(); + } + }, + }, + { + eventName: DynamicDateTrigger.EVENT_FOCUS, + action: () => { + this.storeTriggerValue = this.trigger.getKey(); + if (!this.combo.isViewVisible()) { + this.combo.showView(); + } + this.fireEvent(DynamicDateCombo.EVENT_FOCUS); + }, + }, + { + eventName: DynamicDateTrigger.EVENT_BLUR, + action: () => { + this.fireEvent(DynamicDateCombo.EVENT_BLUR); + }, + }, + { + eventName: DynamicDateTrigger.EVENT_ERROR, + action: () => { + this.storeValue = { + type: DynamicDateCombo.Static, + value: { + year: date.getFullYear(), + month: date.getMonth() + 1, + }, + }; + this.combo.element.addClass("error"); + this.fireEvent(DynamicDateCombo.EVENT_ERROR); + }, + }, + { + eventName: DynamicDateTrigger.EVENT_VALID, + action: () => { + this.storeValue = this.trigger.getValue(); + this.combo.element.removeClass("error"); + this.fireEvent(DynamicDateCombo.EVENT_VALID); + }, + }, + { + eventName: DynamicDateTrigger.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDateCombo.EVENT_CHANGE); + }, + }, + { + eventName: DynamicDateTrigger.EVENT_CONFIRM, + action: () => { + const dateStore = this.storeTriggerValue; + const dateObj = this.trigger.getKey(); + if (this.combo.isViewVisible() || isEqual(dateObj, dateStore)) { + return; + } + if (isNotEmptyString(dateObj) && !isEqual(dateObj, dateStore)) { + this.storeValue = this.trigger.getValue(); + this.setValue(this.trigger.getValue()); + } else if (isEmptyString(dateObj)) { + this.storeValue = null; + this.trigger.setValue(); + } + this._checkDynamicValue(this.storeValue); + this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); + }, + }, + ], }, - }, { - eventName: DynamicDatePopup.EVENT_CHANGE, - action: () => { - this.setValue(this.popup.getValue()); - this.combo.hideView(); - this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); + ], + }, + adjustLength: this.constants.comboAdjustHeight, + popup: { + el: { + type: DynamicDatePopup.xtype, + width: opts.isNeedAdjustWidth ? opts.width : undefined, + supportDynamic: opts.supportDynamic, + behaviors: opts.behaviors, + min: opts.minDate, + max: opts.maxDate, + ref: (_ref) => { + this.popup = _ref; }, - }, { - eventName: DynamicDatePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + listeners: [ + { + eventName: DynamicDatePopup.BUTTON_CLEAR_EVENT_CHANGE, + action: () => { + this.setValue(); + this.combo.hideView(); + this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); + }, + }, + { + eventName: DynamicDatePopup.BUTTON_lABEL_EVENT_CHANGE, + action: () => { + const date = getDate(); + this.setValue({ + type: DynamicDateCombo.Static, + value: { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + }, + }); + this.combo.hideView(); + this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); + }, + }, + { + eventName: DynamicDatePopup.BUTTON_OK_EVENT_CHANGE, + action: () => { + const value = this.popup.getValue(); + if (this._checkValue(value)) { + this.setValue(value); + } + this.combo.hideView(); + this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); + }, + }, + { + eventName: DynamicDatePopup.EVENT_CHANGE, + action: () => { + this.setValue(this.popup.getValue()); + this.combo.hideView(); + this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); + }, + }, + { + eventName: DynamicDatePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + action: () => { + this.fireEvent(DynamicDateCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + }, + }, + ], + }, + }, + // // DEC-4250 和复选下拉一样,点击triggerBtn不默认收起 + // hideChecker: function (e) { + // return self.triggerBtn.element.find(e.target).length === 0; + // }, + listeners: [ + { + eventName: Combo.EVENT_BEFORE_POPUPVIEW, action: () => { - this.fireEvent(DynamicDateCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + this.popup.setMinDate(opts.minDate); + this.popup.setMaxDate(opts.maxDate); + this.popup.setValue(this.storeValue); + this.fireEvent(DynamicDateCombo.EVENT_BEFORE_POPUPVIEW); }, - }], - }, + }, + ], }, - // // DEC-4250 和复选下拉一样,点击triggerBtn不默认收起 - // hideChecker: function (e) { - // return self.triggerBtn.element.find(e.target).length === 0; - // }, - listeners: [{ - eventName: Combo.EVENT_BEFORE_POPUPVIEW, - action: () => { - this.popup.setMinDate(opts.minDate); - this.popup.setMaxDate(opts.maxDate); - this.popup.setValue(this.storeValue); - this.fireEvent(DynamicDateCombo.EVENT_BEFORE_POPUPVIEW); - }, - }], + top: 0, + left: 0, + right: 0, + bottom: 0, }, - top: 0, - left: 0, - right: 0, - bottom: 0, - }], + ], }; } @@ -263,16 +297,16 @@ export class DynamicDateCombo extends Single { type = v.type; } switch (type) { - case DynamicDateCombo.Dynamic: - this.changeIcon.setVisible(true); - // this.comboWrapper.attr("items")[0].width = o.height - this.options.simple ? 1 : 2; - // this.comboWrapper.resize(); - break; - default: - // this.comboWrapper.attr("items")[0].width = 0; - // this.comboWrapper.resize(); - this.changeIcon.setVisible(false); - break; + case DynamicDateCombo.Dynamic: + this.changeIcon.setVisible(true); + // this.comboWrapper.attr("items")[0].width = o.height - this.options.simple ? 1 : 2; + // this.comboWrapper.resize(); + break; + default: + // this.comboWrapper.attr("items")[0].width = 0; + // this.comboWrapper.resize(); + this.changeIcon.setVisible(false); + break; } } @@ -280,20 +314,18 @@ export class DynamicDateCombo extends Single { const o = this.options; let value; switch (v.type) { - case DynamicDateCombo.Dynamic: - return isNotEmptyObject(v.value); - case DynamicDateCombo.Static: - value = v.value || {}; + case DynamicDateCombo.Dynamic: + return isNotEmptyObject(v.value); + case DynamicDateCombo.Static: + value = v.value || {}; - return !checkDateVoid(value.year, value.month, value.day, o.minDate, o.maxDate)[0]; - default: - return true; + return !checkDateVoid(value.year, value.month, value.day, o.minDate, o.maxDate)[0]; + default: + return true; } } - _defaultState() { - - } + _defaultState() {} setMinDate(minDate) { const o = this.options; diff --git a/src/widget/dynamicdate/dynamicdate.param.item.js b/src/widget/dynamicdate/dynamicdate.param.item.js index a0fe36814..3ab6561dd 100644 --- a/src/widget/dynamicdate/dynamicdate.param.item.js +++ b/src/widget/dynamicdate/dynamicdate.param.item.js @@ -1,19 +1,20 @@ -import { shortcut, Widget, toPix, isNaturalNumber, i18nText } from "@/core"; -import { DynamicDateCard } from "./dynamicdate.card"; +import { HTapeLayout, shortcut, Widget, toPix, isNaturalNumber, i18nText } from "@/core"; import { SignEditor, TextValueCombo } from "@/case"; +import { Label } from "@/base"; +import { DynamicDateCard } from "./dynamicdate.card"; @shortcut() export class DynamicDateParamItem extends Widget { - static xtype = "bi.dynamic_date_param_item" + static xtype = "bi.dynamic_date_param_item"; - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_INPUT_CHANGE = "EVENT_INPUT_CHANGE" + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_INPUT_CHANGE = "EVENT_INPUT_CHANGE"; props() { return { baseCls: "bi-dynamic-date-param-item", dateType: DynamicDateCard.TYPE.YEAR, - validationChecker () { + validationChecker() { return true; }, value: 0, @@ -24,67 +25,79 @@ export class DynamicDateParamItem extends Widget { render() { const o = this.options; - + return { - type: "bi.htape", - items: [{ - el: { - type: "bi.sign_editor", - cls: "bi-border bi-focus-shadow bi-border-radius", - height: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 2), - validationChecker (v) { - return isNaturalNumber(v); - }, - value: o.value, - ref: _ref => { - this.editor = _ref; - }, - errorText () { - return i18nText("BI-Please_Input_Natural_Number"); - }, - allowBlank: false, - listeners: [{ - eventName: SignEditor.EVENT_CONFIRM, - action: () => { - this.fireEvent(DynamicDateParamItem.EVENT_CHANGE); + type: HTapeLayout.xtype, + items: [ + { + el: { + type: SignEditor.xtype, + cls: "bi-border bi-focus-shadow bi-border-radius", + height: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 2), + validationChecker(v) { + return isNaturalNumber(v); }, - }, { - eventName: SignEditor.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDateParamItem.EVENT_INPUT_CHANGE); + value: o.value, + ref: _ref => { + this.editor = _ref; }, - }], - }, - width: 60, - }, { - el: { - type: "bi.label", - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, - text: this._getText(), + errorText() { + return i18nText("BI-Please_Input_Natural_Number"); + }, + allowBlank: false, + listeners: [ + { + eventName: SignEditor.EVENT_CONFIRM, + action: () => { + this.fireEvent(DynamicDateParamItem.EVENT_CHANGE); + }, + }, + { + eventName: SignEditor.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDateParamItem.EVENT_INPUT_CHANGE); + }, + } + ], + }, + width: 60, }, - width: o.dateType === DynamicDateCard.TYPE.WORK_DAY ? 60 : 20, - }, { - type: "bi.text_value_combo", - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, - items: [{ - text: i18nText("BI-Basic_Front"), - value: 0, - }, { - text: i18nText("BI-Basic_Behind"), - value: 1, - }], - ref: _ref => { - this.offsetCombo = _ref; + { + el: { + type: Label.xtype, + height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + text: this._getText(), + }, + width: o.dateType === DynamicDateCard.TYPE.WORK_DAY ? 60 : 20, }, - container: null, - value: o.offset, - listeners: [{ - eventName: TextValueCombo.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDateParamItem.EVENT_CHANGE); + { + type: TextValueCombo.xtype, + height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + items: [ + { + text: i18nText("BI-Basic_Front"), + value: 0, + }, + { + text: i18nText("BI-Basic_Behind"), + value: 1, + } + ], + ref: _ref => { + this.offsetCombo = _ref; }, - }], - }], + container: null, + value: o.offset, + listeners: [ + { + eventName: TextValueCombo.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDateParamItem.EVENT_CHANGE); + }, + } + ], + } + ], }; } @@ -111,7 +124,7 @@ export class DynamicDateParamItem extends Widget { text = i18nText("BI-Basic_Work_Day"); break; } - + return text; } diff --git a/src/widget/dynamicdate/dynamicdate.popup.js b/src/widget/dynamicdate/dynamicdate.popup.js index 4e8a8d157..253c4a210 100644 --- a/src/widget/dynamicdate/dynamicdate.popup.js +++ b/src/widget/dynamicdate/dynamicdate.popup.js @@ -1,16 +1,33 @@ -import { shortcut, Widget, createWidget, i18nText, toPix, createItems, isNull, isEmptyObject, isEmptyString, getDate, checkDateVoid, print } from "@/core"; -import { DynamicDateCombo } from "./dynamicdate.combo"; +import { + VerticalLayout, + GridLayout, + shortcut, + Widget, + createWidget, + i18nText, + toPix, + createItems, + isNull, + isEmptyObject, + isEmptyString, + getDate, + checkDateVoid, + print +} from "@/core"; import { TextButton, Tab } from "@/base"; +import { LinearSegment } from "@/case"; +import { DynamicDateCard } from "./dynamicdate.card"; import { DateCalendarPopup } from "../date/calendar"; +import { DynamicDateCombo } from "./dynamicdate.combo"; import { DynamicDateHelper } from "./dynamicdate.caculate"; @shortcut() export class DynamicDatePopup extends Widget { - static xtype = "bi.dynamic_date_popup" + static xtype = "bi.dynamic_date_popup"; constants = { tabHeight: 40, - } + }; props = { baseCls: "bi-dynamic-date-popup", @@ -18,11 +35,11 @@ export class DynamicDatePopup extends Widget { supportDynamic: true, }; - static EVENT_CHANGE = "EVENT_CHANGE" - static BUTTON_OK_EVENT_CHANGE = "BUTTON_OK_EVENT_CHANGE" - static BUTTON_lABEL_EVENT_CHANGE = "BUTTON_lABEL_EVENT_CHANGE" - static BUTTON_CLEAR_EVENT_CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" + static EVENT_CHANGE = "EVENT_CHANGE"; + static BUTTON_OK_EVENT_CHANGE = "BUTTON_OK_EVENT_CHANGE"; + static BUTTON_lABEL_EVENT_CHANGE = "BUTTON_lABEL_EVENT_CHANGE"; + static BUTTON_CLEAR_EVENT_CHANGE = "BUTTON_CLEAR_EVENT_CHANGE"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; _init() { super._init(...arguments); @@ -32,72 +49,86 @@ export class DynamicDatePopup extends Widget { }; createWidget({ element: this, - type: "bi.vertical", - items: [{ - el: this._getTabJson(), - }, { - el: { - type: "bi.grid", - items: [ - [{ - type: "bi.text_button", - cls: "bi-high-light bi-split-top", - shadow: true, - text: i18nText("BI-Basic_Clear"), - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDatePopup.BUTTON_CLEAR_EVENT_CHANGE); - }, - }], - }, { - type: "bi.text_button", - cls: "bi-split-left bi-split-right bi-high-light bi-split-top", - shadow: true, - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), - text: i18nText("BI-Multi_Date_Today"), - disabled: this._checkTodayValid(), - ref: _ref => { - this.todayButton = _ref; - }, - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDatePopup.BUTTON_lABEL_EVENT_CHANGE); + type: VerticalLayout.xtype, + items: [ + { + el: this._getTabJson(), + }, + { + el: { + type: GridLayout.xtype, + items: [ + [ + { + type: TextButton.xtype, + cls: "bi-high-light bi-split-top", + shadow: true, + text: i18nText("BI-Basic_Clear"), + textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDatePopup.BUTTON_CLEAR_EVENT_CHANGE); + }, + } + ], }, - }], - }, { - type: "bi.text_button", - cls: "bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), - shadow: true, - text: i18nText("BI-Basic_OK"), - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - const type = this.dateTab.getSelect(); - if (type === DynamicDateCombo.Dynamic) { - this.dynamicPane.checkValidation(true) && this.fireEvent(DynamicDatePopup.BUTTON_OK_EVENT_CHANGE); - } else { - this.fireEvent(DynamicDatePopup.BUTTON_OK_EVENT_CHANGE); - } + { + type: TextButton.xtype, + cls: "bi-split-left bi-split-right bi-high-light bi-split-top", + shadow: true, + textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + text: i18nText("BI-Multi_Date_Today"), + disabled: this._checkTodayValid(), + ref: _ref => { + this.todayButton = _ref; + }, + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDatePopup.BUTTON_lABEL_EVENT_CHANGE); + }, + } + ], }, - }], - }] - ], - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, - }, - }], + { + type: TextButton.xtype, + cls: "bi-high-light bi-split-top", + textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + shadow: true, + text: i18nText("BI-Basic_OK"), + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + const type = this.dateTab.getSelect(); + if (type === DynamicDateCombo.Dynamic) { + this.dynamicPane.checkValidation(true) && + this.fireEvent(DynamicDatePopup.BUTTON_OK_EVENT_CHANGE); + } else { + this.fireEvent(DynamicDatePopup.BUTTON_OK_EVENT_CHANGE); + } + }, + } + ], + } + ] + ], + height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + }, + } + ], }); this.setValue(opts.value); } _getTabJson() { const o = this.options; - + return { - type: "bi.tab", + type: Tab.xtype, logic: { dynamic: true, }, @@ -105,32 +136,40 @@ export class DynamicDatePopup extends Widget { this.dateTab = _ref; }, tab: { - type: "bi.linear_segment", + type: LinearSegment.xtype, invisible: !o.supportDynamic, cls: "bi-split-bottom", height: this.constants.tabHeight, - items: createItems([{ - text: i18nText("BI-Multi_Date_YMD"), - value: DynamicDateCombo.Static, - }, { - text: i18nText("BI-Basic_Dynamic_Title"), - value: DynamicDateCombo.Dynamic, - }], { - textAlign: "center", - }), + items: createItems( + [ + { + text: i18nText("BI-Multi_Date_YMD"), + value: DynamicDateCombo.Static, + }, + { + text: i18nText("BI-Basic_Dynamic_Title"), + value: DynamicDateCombo.Dynamic, + } + ], + { + textAlign: "center", + } + ), }, cardCreator: v => { switch (v) { case DynamicDateCombo.Dynamic: return { - type: "bi.dynamic_date_card", + type: DynamicDateCard.xtype, cls: "dynamic-date-pane", - listeners: [{ - eventName: "EVENT_CHANGE", - action: () => { - this._setInnerValue(this.year, v); - }, - }], + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this._setInnerValue(this.year, v); + }, + } + ], min: this.options.min, max: this.options.max, ref: _ref => { @@ -140,56 +179,61 @@ export class DynamicDatePopup extends Widget { case DynamicDateCombo.Static: default: return { - type: "bi.date_calendar_popup", + type: DateCalendarPopup.xtype, behaviors: o.behaviors, min: this.options.min, max: this.options.max, - listeners: [{ - eventName: DateCalendarPopup.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDatePopup.EVENT_CHANGE); - }, - }, { - eventName: DateCalendarPopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, - action: () => { - this.fireEvent(DynamicDatePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + listeners: [ + { + eventName: DateCalendarPopup.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDatePopup.EVENT_CHANGE); + }, }, - }], + { + eventName: DateCalendarPopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + action: () => { + this.fireEvent(DynamicDatePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + }, + } + ], ref: _ref => { this.ymd = _ref; }, }; } }, - listeners: [{ - eventName: Tab.EVENT_CHANGE, - action: () => { - const v = this.dateTab.getSelect(); - let date; - switch (v) { - case DynamicDateCombo.Static: - date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); - this.ymd.setValue({ - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - }); - this._setInnerValue(); - break; - case DynamicDateCombo.Dynamic: - default: - if (this.storeValue && this.storeValue.type === DynamicDateCombo.Dynamic) { - this.dynamicPane.setValue(this.storeValue.value); - } else { - this.dynamicPane.setValue({ - year: 0, + listeners: [ + { + eventName: Tab.EVENT_CHANGE, + action: () => { + const v = this.dateTab.getSelect(); + let date; + switch (v) { + case DynamicDateCombo.Static: + date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); + this.ymd.setValue({ + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), }); + this._setInnerValue(); + break; + case DynamicDateCombo.Dynamic: + default: + if (this.storeValue && this.storeValue.type === DynamicDateCombo.Dynamic) { + this.dynamicPane.setValue(this.storeValue.value); + } else { + this.dynamicPane.setValue({ + year: 0, + }); + } + this._setInnerValue(); + break; } - this._setInnerValue(); - break; - } - }, - }], + }, + } + ], }; } @@ -212,7 +256,7 @@ export class DynamicDatePopup extends Widget { _checkTodayValid() { const o = this.options; const today = getDate(); - + return !!checkDateVoid(today.getFullYear(), today.getMonth() + 1, today.getDate(), o.min, o.max)[0]; } diff --git a/src/widget/dynamicdate/dynamicdate.trigger.js b/src/widget/dynamicdate/dynamicdate.trigger.js index adad56bf7..7cef929b4 100644 --- a/src/widget/dynamicdate/dynamicdate.trigger.js +++ b/src/widget/dynamicdate/dynamicdate.trigger.js @@ -1,13 +1,32 @@ -import { shortcut, i18nText, createWidget, isKey, checkDateLegal, parseDateTime, bind, isNotNull, isNotEmptyString, isEqual, isEmptyObject, getDate, isEmptyString, isNull, each, checkDateVoid, print } from "@/core"; -import { Trigger } from "@/base"; import { SignEditor } from "@/case"; +import { + HTapeLayout, + AbsoluteLayout, + shortcut, + i18nText, + createWidget, + isKey, + checkDateLegal, + parseDateTime, + bind, + isNotNull, + isNotEmptyString, + isEqual, + isEmptyObject, + getDate, + isEmptyString, + isNull, + each, + checkDateVoid, + print +} from "@/core"; +import { IconButton, Text, Trigger } from "@/base"; import { DynamicDateCombo } from "./dynamicdate.combo"; import { DynamicDateHelper } from "./dynamicdate.caculate"; - @shortcut() export class DynamicDateTrigger extends Trigger { - static xtype = "bi.dynamic_date_trigger" + static xtype = "bi.dynamic_date_trigger"; _const = { hgap: 4, @@ -19,16 +38,16 @@ export class DynamicDateTrigger extends Trigger { iconWidth: 24, }; - static EVENT_BLUR = "EVENT_BLUR" - static EVENT_FOCUS = "EVENT_FOCUS" - static EVENT_START = "EVENT_START" - static EVENT_STOP = "EVENT_STOP" - static EVENT_CONFIRM = "EVENT_CONFIRM" - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_VALID = "EVENT_VALID" - static EVENT_ERROR = "EVENT_ERROR" - static EVENT_TRIGGER_CLICK = "EVENT_TRIGGER_CLICK" - static EVENT_KEY_DOWN = "EVENT_KEY_DOWN" + static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_FOCUS = "EVENT_FOCUS"; + static EVENT_START = "EVENT_START"; + static EVENT_STOP = "EVENT_STOP"; + static EVENT_CONFIRM = "EVENT_CONFIRM"; + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_VALID = "EVENT_VALID"; + static EVENT_ERROR = "EVENT_ERROR"; + static EVENT_TRIGGER_CLICK = "EVENT_TRIGGER_CLICK"; + static EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; props() { return { @@ -49,21 +68,25 @@ export class DynamicDateTrigger extends Trigger { c = this._const; this.storeTriggerValue = ""; this.editor = createWidget({ - type: "bi.sign_editor", + type: SignEditor.xtype, simple: o.simple, height: o.height, validationChecker: v => { const formatStr = this._getStandardDateStr(v); const date = formatStr.match(/\d+/g); !isKey(o.format) && this._autoAppend(v, date); - - return this._dateCheck(formatStr) && checkDateLegal(formatStr) && this._checkVoid({ - year: date[0] | 0, - month: date[1] | 0, - day: date[2] | 0, - }); + + return ( + this._dateCheck(formatStr) && + checkDateLegal(formatStr) && + this._checkVoid({ + year: date[0] | 0, + month: date[1] | 0, + day: date[2] | 0, + }) + ); }, - quitChecker () { + quitChecker() { return false; }, hgap: c.hgap, @@ -74,11 +97,14 @@ export class DynamicDateTrigger extends Trigger { let str = ""; if (!isKey(o.format)) { if (!this._dateCheck(v)) { - str = this.editor.isEditing() ? i18nText("BI-Date_Trigger_Error_Text") : i18nText("BI-Year_Trigger_Invalid_Text"); + str = this.editor.isEditing() + ? i18nText("BI-Date_Trigger_Error_Text") + : i18nText("BI-Year_Trigger_Invalid_Text"); } else { const start = parseDateTime(o.min, "%Y-%X-%d"); const end = parseDateTime(o.max, "%Y-%X-%d"); - str = i18nText("BI-Basic_Date_Range_Error", + str = i18nText( + "BI-Basic_Date_Range_Error", start.getFullYear(), start.getMonth() + 1, start.getDate(), @@ -144,34 +170,40 @@ export class DynamicDateTrigger extends Trigger { this.fireEvent(DynamicDateTrigger.EVENT_CHANGE); }); createWidget({ - type: "bi.htape", + type: HTapeLayout.xtype, element: this, columnSize: ["", this._const.iconWidth], - items: [{ - el: this.editor, - }, { - el: { - type: "bi.icon_button", - cls: "bi-trigger-icon-button date-font", - width: this._const.iconWidth, - }, - width: this._const.iconWidth, - }], - }); - !o.allowEdit && createWidget({ - type: "bi.absolute", - element: this, - items: [{ - el: { - type: "bi.text", - title: bind(this._getTitle, this), + items: [ + { + el: this.editor, }, - left: 0, - right: o.iconWidth, - top: 0, - bottom: 0, - }], + { + el: { + type: IconButton.xtype, + cls: "bi-trigger-icon-button date-font", + width: this._const.iconWidth, + }, + width: this._const.iconWidth, + } + ], }); + !o.allowEdit && + createWidget({ + type: AbsoluteLayout.xtype, + element: this, + items: [ + { + el: { + type: Text.xtype, + title: bind(this._getTitle, this), + }, + left: 0, + right: o.iconWidth, + top: 0, + bottom: 0, + } + ], + }); this.setValue(o.value); } @@ -189,15 +221,15 @@ export class DynamicDateTrigger extends Trigger { date = getDate(); date = DynamicDateHelper.getCalculation(value); dateStr = print(date, this._getFormatString()); - - return isEmptyString(text) ? dateStr : (`${text}:${dateStr}`); + + return isEmptyString(text) ? dateStr : `${text}:${dateStr}`; case DynamicDateCombo.Static: default: if (isNull(value) || isNull(value.day)) { return ""; } - - return print(getDate(value.year, (value.month - 1), value.day), this._getFormatString()); + + return print(getDate(value.year, value.month - 1, value.day), this._getFormatString()); } } @@ -248,10 +280,12 @@ export class DynamicDateTrigger extends Trigger { } _dateCheck(date) { - return print(parseDateTime(date, "%Y-%x-%d"), "%Y-%x-%d") === date || + return ( + print(parseDateTime(date, "%Y-%x-%d"), "%Y-%x-%d") === date || print(parseDateTime(date, "%Y-%X-%d"), "%Y-%X-%d") === date || print(parseDateTime(date, "%Y-%x-%e"), "%Y-%x-%e") === date || - print(parseDateTime(date, "%Y-%X-%e"), "%Y-%X-%e") === date; + print(parseDateTime(date, "%Y-%X-%e"), "%Y-%X-%e") === date + ); } _checkVoid(obj) { @@ -280,16 +314,20 @@ export class DynamicDateTrigger extends Trigger { _yearCheck(v) { const date = print(parseDateTime(v, this._getFormatString()), this._const.compareFormat); - + return print(parseDateTime(v, "%Y"), "%Y") === v && date >= this.options.min && date <= this.options.max; } _monthCheck(v) { const date = parseDateTime(v, this._getFormatString()); const dateStr = print(date, this._const.compareFormat); - - return (date.getMonth() >= 0 && (print(parseDateTime(v, "%Y-%X"), "%Y-%X") === v || - print(parseDateTime(v, "%Y-%x"), "%Y-%x") === v)) && dateStr >= this.options.min && dateStr <= this.options.max; + + return ( + date.getMonth() >= 0 && + (print(parseDateTime(v, "%Y-%X"), "%Y-%X") === v || print(parseDateTime(v, "%Y-%x"), "%Y-%x") === v) && + dateStr >= this.options.min && + dateStr <= this.options.max + ); } _setInnerValue(date) { @@ -322,7 +360,7 @@ export class DynamicDateTrigger extends Trigger { this.editor.setState(""); this.editor.setValue(""); } else { - const dateStr = print(getDate(value.year, (value.month - 1), value.day), this._getFormatString()); + const dateStr = print(getDate(value.year, value.month - 1, value.day), this._getFormatString()); this.editor.setState(dateStr); this.editor.setValue(dateStr); } diff --git a/src/widget/dynamicdatetime/dynamicdatetime.combo.js b/src/widget/dynamicdatetime/dynamicdatetime.combo.js index 0d88cf567..f5c2858ef 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.combo.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.combo.js @@ -1,15 +1,27 @@ -import { shortcut, getDate, toPix, isEqual, isNotEmptyString, isEmptyString, isNotNull, isNotEmptyObject, checkDateVoid } from "@/core"; -import { Single, Combo } from "@/base"; +import { + AbsoluteLayout, + HorizontalFillLayout, + shortcut, + getDate, + toPix, + isEqual, + isNotEmptyString, + isEmptyString, + isNotNull, + isNotEmptyObject, + checkDateVoid +} from "@/core"; +import { Combo, IconButton, Single } from "@/base"; import { DynamicDateTimeTrigger } from "./dynamicdatetime.trigger"; import { DynamicDateTimePopup } from "./dynamicdatetime.popup"; import { DynamicDateCombo } from "../dynamicdate"; @shortcut() export class DynamicDateTimeCombo extends Single { - static xtype = "bi.dynamic_date_time_combo" + static xtype = "bi.dynamic_date_time_combo"; - static Static = 1 - static Dynamic = 2 + static Static = 1; + static Dynamic = 2; constants = { popupHeight: 259, @@ -17,7 +29,7 @@ export class DynamicDateTimeCombo extends Single { comboAdjustHeight: 1, border: 1, iconWidth: 24, - } + }; props = { baseCls: "bi-dynamic-date--time-combo", @@ -34,16 +46,15 @@ export class DynamicDateTimeCombo extends Single { isNeedAdjustWidth: false, }; - static EVENT_KEY_DOWN = "EVENT_KEY_DOWN" - static EVENT_CONFIRM = "EVENT_CONFIRM" - static EVENT_FOCUS = "EVENT_FOCUS" - static EVENT_BLUR = "EVENT_BLUR" - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_VALID = "EVENT_VALID" - static EVENT_ERROR = "EVENT_ERROR" - static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" - + static EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; + static EVENT_CONFIRM = "EVENT_CONFIRM"; + static EVENT_FOCUS = "EVENT_FOCUS"; + static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_VALID = "EVENT_VALID"; + static EVENT_ERROR = "EVENT_ERROR"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; _init() { super._init(...arguments); @@ -57,208 +68,231 @@ export class DynamicDateTimeCombo extends Single { const border = opts.simple ? 1 : 2; return { - type: "bi.absolute", - items: [{ - el: { - type: "bi.combo", - cls: `${opts.simple ? "bi-border-bottom" : "bi-border bi-border-radius"} bi-focus-shadow`, - destroyWhenHide: true, - container: opts.container, - ref: _ref => { - this.combo = _ref; - }, - toggle: false, - isNeedAdjustHeight: opts.isNeedAdjustHeight, - isNeedAdjustWidth: opts.isNeedAdjustWidth, + type: AbsoluteLayout.xtype, + items: [ + { el: { - type: "bi.horizontal_fill", - columnSize: [this.constants.iconWidth, "fill"], - height: toPix(opts.height, border), - items: [{ - el: { - type: "bi.icon_button", - cls: "bi-trigger-icon-button date-change-h-font", - width: this.constants.iconWidth, - height: toPix(opts.height, border), - ref: _ref => { - this.changeIcon = _ref; - }, - }, - }, { - type: "bi.dynamic_date_time_trigger", - simple: opts.simple, - min: opts.minDate, - max: opts.maxDate, - allowEdit: opts.allowEdit, - watermark: opts.watermark, - format: opts.format, - iconWidth: this.constants.iconWidth, + type: Combo.xtype, + cls: `${opts.simple ? "bi-border-bottom" : "bi-border bi-border-radius"} bi-focus-shadow`, + destroyWhenHide: true, + container: opts.container, + ref: (_ref) => { + this.combo = _ref; + }, + toggle: false, + isNeedAdjustHeight: opts.isNeedAdjustHeight, + isNeedAdjustWidth: opts.isNeedAdjustWidth, + el: { + type: HorizontalFillLayout.xtype, + columnSize: [this.constants.iconWidth, "fill"], height: toPix(opts.height, border), - value: opts.value, - ref: _ref => { - this.trigger = _ref; - }, - listeners: [{ - eventName: DynamicDateTimeTrigger.EVENT_KEY_DOWN, - action: (...args) => { - if (this.combo.isViewVisible()) { - this.combo.hideView(); - } - this.fireEvent(DynamicDateTimeCombo.EVENT_KEY_DOWN, ...args); - }, - }, { - eventName: DynamicDateTimeTrigger.EVENT_STOP, - action: () => { - if (!this.combo.isViewVisible()) { - this.combo.showView(); - } - }, - }, { - eventName: DynamicDateTimeTrigger.EVENT_TRIGGER_CLICK, - action: () => { - this.combo.toggle(); - }, - }, { - eventName: DynamicDateTimeTrigger.EVENT_FOCUS, - action: () => { - this.storeTriggerValue = this.trigger.getKey(); - if (!this.combo.isViewVisible()) { - this.combo.showView(); - } - this.fireEvent(DynamicDateTimeCombo.EVENT_FOCUS); - }, - }, { - eventName: DynamicDateTimeTrigger.EVENT_BLUR, - action: () => { - this.fireEvent(DynamicDateTimeCombo.EVENT_BLUR); - }, - }, { - eventName: DynamicDateTimeTrigger.EVENT_ERROR, - action: () => { - this.storeValue = { - type: DynamicDateTimeCombo.Static, - value: { - year: date.getFullYear(), - month: date.getMonth() + 1, + items: [ + { + el: { + type: IconButton.xtype, + cls: "bi-trigger-icon-button date-change-h-font", + width: this.constants.iconWidth, + height: toPix(opts.height, border), + ref: (_ref) => { + this.changeIcon = _ref; }, - }; - this.combo.element.addClass("error"); - this.fireEvent(DynamicDateTimeCombo.EVENT_ERROR); - }, - }, { - eventName: DynamicDateTimeTrigger.EVENT_VALID, - action: () => { - this.storeValue = this.trigger.getValue(); - this.combo.element.removeClass("error"); - this.fireEvent(DynamicDateTimeCombo.EVENT_VALID); - }, - }, { - eventName: DynamicDateTimeTrigger.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDateTimeCombo.EVENT_CHANGE); + }, }, - }, { - eventName: DynamicDateTimeTrigger.EVENT_CONFIRM, - action: () => { - const dateStore = this.storeTriggerValue; - const dateObj = this.trigger.getKey(); - if (this.combo.isViewVisible() || isEqual(dateObj, dateStore)) { - return; - } - if (isNotEmptyString(dateObj) && !isEqual(dateObj, dateStore)) { - this.storeValue = this.trigger.getValue(); - this.setValue(this.trigger.getValue()); - } else if (isEmptyString(dateObj)) { - this.storeValue = null; - this.trigger.setValue(); - } - this._checkDynamicValue(this.storeValue); - this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); - }, - }], - }], - }, - adjustLength: this.constants.comboAdjustHeight, - popup: { - el: { - type: "bi.dynamic_date_time_popup", - width: opts.isNeedAdjustWidth ? opts.width : undefined, - supportDynamic: opts.supportDynamic, - behaviors: opts.behaviors, - min: opts.minDate, - max: opts.maxDate, - ref: _ref => { - this.popup = _ref; - }, - listeners: [{ - eventName: DynamicDateTimePopup.BUTTON_CLEAR_EVENT_CHANGE, - action: () => { - this.setValue(); - this.combo.hideView(); - this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); - }, - }, { - eventName: DynamicDateTimePopup.BUTTON_lABEL_EVENT_CHANGE, - action: () => { - const date = getDate(); - this.setValue({ - type: DynamicDateTimeCombo.Static, - value: { - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - hour: 0, - minute: 0, - second: 0, + { + type: DynamicDateTimeTrigger.xtype, + simple: opts.simple, + min: opts.minDate, + max: opts.maxDate, + allowEdit: opts.allowEdit, + watermark: opts.watermark, + format: opts.format, + iconWidth: this.constants.iconWidth, + height: toPix(opts.height, border), + value: opts.value, + ref: (_ref) => { + this.trigger = _ref; + }, + listeners: [ + { + eventName: DynamicDateTimeTrigger.EVENT_KEY_DOWN, + action: (...args) => { + if (this.combo.isViewVisible()) { + this.combo.hideView(); + } + this.fireEvent(DynamicDateTimeCombo.EVENT_KEY_DOWN, ...args); + }, }, - }); - this.combo.hideView(); - this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); - }, - }, { - eventName: DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE, - action: () => { - const value = this.popup.getValue(); - if (this._checkValue(value)) { - this.setValue(value); - } - this.combo.hideView(); - this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); + { + eventName: DynamicDateTimeTrigger.EVENT_STOP, + action: () => { + if (!this.combo.isViewVisible()) { + this.combo.showView(); + } + }, + }, + { + eventName: DynamicDateTimeTrigger.EVENT_TRIGGER_CLICK, + action: () => { + this.combo.toggle(); + }, + }, + { + eventName: DynamicDateTimeTrigger.EVENT_FOCUS, + action: () => { + this.storeTriggerValue = this.trigger.getKey(); + if (!this.combo.isViewVisible()) { + this.combo.showView(); + } + this.fireEvent(DynamicDateTimeCombo.EVENT_FOCUS); + }, + }, + { + eventName: DynamicDateTimeTrigger.EVENT_BLUR, + action: () => { + this.fireEvent(DynamicDateTimeCombo.EVENT_BLUR); + }, + }, + { + eventName: DynamicDateTimeTrigger.EVENT_ERROR, + action: () => { + this.storeValue = { + type: DynamicDateTimeCombo.Static, + value: { + year: date.getFullYear(), + month: date.getMonth() + 1, + }, + }; + this.combo.element.addClass("error"); + this.fireEvent(DynamicDateTimeCombo.EVENT_ERROR); + }, + }, + { + eventName: DynamicDateTimeTrigger.EVENT_VALID, + action: () => { + this.storeValue = this.trigger.getValue(); + this.combo.element.removeClass("error"); + this.fireEvent(DynamicDateTimeCombo.EVENT_VALID); + }, + }, + { + eventName: DynamicDateTimeTrigger.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDateTimeCombo.EVENT_CHANGE); + }, + }, + { + eventName: DynamicDateTimeTrigger.EVENT_CONFIRM, + action: () => { + const dateStore = this.storeTriggerValue; + const dateObj = this.trigger.getKey(); + if (this.combo.isViewVisible() || isEqual(dateObj, dateStore)) { + return; + } + if (isNotEmptyString(dateObj) && !isEqual(dateObj, dateStore)) { + this.storeValue = this.trigger.getValue(); + this.setValue(this.trigger.getValue()); + } else if (isEmptyString(dateObj)) { + this.storeValue = null; + this.trigger.setValue(); + } + this._checkDynamicValue(this.storeValue); + this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); + }, + }, + ], }, - }, { - eventName: DynamicDateTimePopup.EVENT_CHANGE, - action: () => { - this.setValue(this.popup.getValue()); - this.combo.hideView(); - this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); + ], + }, + adjustLength: this.constants.comboAdjustHeight, + popup: { + el: { + type: DynamicDateTimePopup.xtype, + width: opts.isNeedAdjustWidth ? opts.width : undefined, + supportDynamic: opts.supportDynamic, + behaviors: opts.behaviors, + min: opts.minDate, + max: opts.maxDate, + ref: (_ref) => { + this.popup = _ref; }, - }, { - eventName: DynamicDateTimePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + listeners: [ + { + eventName: DynamicDateTimePopup.BUTTON_CLEAR_EVENT_CHANGE, + action: () => { + this.setValue(); + this.combo.hideView(); + this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); + }, + }, + { + eventName: DynamicDateTimePopup.BUTTON_lABEL_EVENT_CHANGE, + action: () => { + const date = getDate(); + this.setValue({ + type: DynamicDateTimeCombo.Static, + value: { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: 0, + minute: 0, + second: 0, + }, + }); + this.combo.hideView(); + this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); + }, + }, + { + eventName: DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE, + action: () => { + const value = this.popup.getValue(); + if (this._checkValue(value)) { + this.setValue(value); + } + this.combo.hideView(); + this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); + }, + }, + { + eventName: DynamicDateTimePopup.EVENT_CHANGE, + action: () => { + this.setValue(this.popup.getValue()); + this.combo.hideView(); + this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); + }, + }, + { + eventName: DynamicDateTimePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + action: () => { + this.fireEvent(DynamicDateTimeCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + }, + }, + ], + }, + }, + listeners: [ + { + eventName: Combo.EVENT_BEFORE_POPUPVIEW, action: () => { - this.fireEvent(DynamicDateTimeCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + this.popup.setMinDate(opts.minDate); + this.popup.setMaxDate(opts.maxDate); + this.popup.setValue(this.storeValue); + this.fireEvent(DynamicDateTimeCombo.EVENT_BEFORE_POPUPVIEW); }, - }], - }, + }, + ], + // // DEC-4250 和复选下拉一样,点击不收起 + // hideChecker: function (e) { + // return self.triggerBtn.element.find(e.target).length === 0; + // } }, - listeners: [{ - eventName: Combo.EVENT_BEFORE_POPUPVIEW, - action: () => { - this.popup.setMinDate(opts.minDate); - this.popup.setMaxDate(opts.maxDate); - this.popup.setValue(this.storeValue); - this.fireEvent(DynamicDateTimeCombo.EVENT_BEFORE_POPUPVIEW); - }, - }], - // // DEC-4250 和复选下拉一样,点击不收起 - // hideChecker: function (e) { - // return self.triggerBtn.element.find(e.target).length === 0; - // } + top: 0, + left: 0, + right: 0, + bottom: 0, }, - top: 0, - left: 0, - right: 0, - bottom: 0, - }], + ], }; } @@ -272,16 +306,16 @@ export class DynamicDateTimeCombo extends Single { type = v.type; } switch (type) { - case DynamicDateTimeCombo.Dynamic: - this.changeIcon.setVisible(true); - // this.comboWrapper.attr("items")[0].width = o.height - (this.options.simple ? 1 : 2); - // this.comboWrapper.resize(); - break; - default: - // this.comboWrapper.attr("items")[0].width = 0; - // this.comboWrapper.resize(); - this.changeIcon.setVisible(false); - break; + case DynamicDateTimeCombo.Dynamic: + this.changeIcon.setVisible(true); + // this.comboWrapper.attr("items")[0].width = o.height - (this.options.simple ? 1 : 2); + // this.comboWrapper.resize(); + break; + default: + // this.comboWrapper.attr("items")[0].width = 0; + // this.comboWrapper.resize(); + this.changeIcon.setVisible(false); + break; } } @@ -289,12 +323,12 @@ export class DynamicDateTimeCombo extends Single { const o = this.options; const value = v.value || {}; switch (v.type) { - case DynamicDateCombo.Dynamic: - return isNotEmptyObject(v.value); - case DynamicDateCombo.Static: - return !checkDateVoid(value.year, value.month, value.day, o.minDate, o.maxDate)[0]; - default: - return true; + case DynamicDateCombo.Dynamic: + return isNotEmptyObject(v.value); + case DynamicDateCombo.Static: + return !checkDateVoid(value.year, value.month, value.day, o.minDate, o.maxDate)[0]; + default: + return true; } } diff --git a/src/widget/dynamicdatetime/dynamicdatetime.popup.js b/src/widget/dynamicdatetime/dynamicdatetime.popup.js index a69aaabb1..a5f184e0c 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.popup.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.popup.js @@ -1,17 +1,35 @@ -import { shortcut, Widget, createWidget, toPix, i18nText, createItems, print, isNull, isEmptyObject, isEmptyString, getDate, checkDateVoid, extend } from "@/core"; -import { DynamicDateCombo, DynamicDateHelper } from "../dynamicdate"; +import { + VerticalLayout, + GridLayout, + shortcut, + Widget, + createWidget, + toPix, + i18nText, + createItems, + print, + isNull, + isEmptyObject, + isEmptyString, + getDate, + checkDateVoid, + extend +} from "@/core"; import { TextButton, Tab } from "@/base"; +import { LinearSegment } from "@/case"; +import { DynamicDateCard, DynamicDateCombo, DynamicDateHelper } from "../dynamicdate"; import { DateCalendarPopup } from "../date/calendar"; +import { DynamicDateTimeSelect } from "./dynamicdatetime.timeselect"; import { DynamicDateTimeCombo } from "./dynamicdatetime.combo"; @shortcut() export class DynamicDateTimePopup extends Widget { - static xtype = "bi.dynamic_date_time_popup" + static xtype = "bi.dynamic_date_time_popup"; constants = { tabHeight: 40, buttonHeight: 24, - } + }; props = { baseCls: "bi-dynamic-date-time-popup", @@ -19,11 +37,11 @@ export class DynamicDateTimePopup extends Widget { supportDynamic: true, }; - static EVENT_CHANGE = "EVENT_CHANGE" - static BUTTON_OK_EVENT_CHANGE = "BUTTON_OK_EVENT_CHANGE" - static BUTTON_lABEL_EVENT_CHANGE = "BUTTON_lABEL_EVENT_CHANGE" - static BUTTON_CLEAR_EVENT_CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" - static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW" + static EVENT_CHANGE = "EVENT_CHANGE"; + static BUTTON_OK_EVENT_CHANGE = "BUTTON_OK_EVENT_CHANGE"; + static BUTTON_lABEL_EVENT_CHANGE = "BUTTON_lABEL_EVENT_CHANGE"; + static BUTTON_CLEAR_EVENT_CHANGE = "BUTTON_CLEAR_EVENT_CHANGE"; + static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; _init() { super._init(...arguments); @@ -33,72 +51,86 @@ export class DynamicDateTimePopup extends Widget { }; createWidget({ element: this, - type: "bi.vertical", - items: [{ - el: this._getTabJson(), - }, { - el: { - type: "bi.grid", - items: [ - [{ - type: "bi.text_button", - cls: "bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), - shadow: true, - text: i18nText("BI-Basic_Clear"), - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDateTimePopup.BUTTON_CLEAR_EVENT_CHANGE); + type: VerticalLayout.xtype, + items: [ + { + el: this._getTabJson(), + }, + { + el: { + type: GridLayout.xtype, + items: [ + [ + { + type: TextButton.xtype, + cls: "bi-high-light bi-split-top", + textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + shadow: true, + text: i18nText("BI-Basic_Clear"), + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDateTimePopup.BUTTON_CLEAR_EVENT_CHANGE); + }, + } + ], }, - }], - }, { - type: "bi.text_button", - cls: "bi-split-left bi-split-right bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), - shadow: true, - text: i18nText("BI-Multi_Date_Today"), - disabled: this._checkTodayValid(), - ref: _ref => { - this.todayButton = _ref; - }, - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - this.fireEvent(DynamicDateTimePopup.BUTTON_lABEL_EVENT_CHANGE); + { + type: TextButton.xtype, + cls: "bi-split-left bi-split-right bi-high-light bi-split-top", + textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + shadow: true, + text: i18nText("BI-Multi_Date_Today"), + disabled: this._checkTodayValid(), + ref: _ref => { + this.todayButton = _ref; + }, + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + this.fireEvent(DynamicDateTimePopup.BUTTON_lABEL_EVENT_CHANGE); + }, + } + ], }, - }], - }, { - type: "bi.text_button", - cls: "bi-high-light bi-split-top", - textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), - shadow: true, - text: i18nText("BI-Basic_OK"), - listeners: [{ - eventName: TextButton.EVENT_CHANGE, - action: () => { - const type = this.dateTab.getSelect(); - if (type === DynamicDateCombo.Dynamic) { - this.dynamicPane.checkValidation(true) && this.fireEvent(DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE); - } else { - this.fireEvent(DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE); - } - }, - }], - }] - ], - height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, - }, - }], + { + type: TextButton.xtype, + cls: "bi-high-light bi-split-top", + textHeight: toPix(BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, 1), + shadow: true, + text: i18nText("BI-Basic_OK"), + listeners: [ + { + eventName: TextButton.EVENT_CHANGE, + action: () => { + const type = this.dateTab.getSelect(); + if (type === DynamicDateCombo.Dynamic) { + this.dynamicPane.checkValidation(true) && + this.fireEvent(DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE); + } else { + this.fireEvent(DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE); + } + }, + } + ], + } + ] + ], + height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT, + }, + } + ], }); this.setValue(opts.value); } _getTabJson() { const o = this.options; - + return { - type: "bi.tab", + type: Tab.xtype, logic: { dynamic: true, }, @@ -106,32 +138,40 @@ export class DynamicDateTimePopup extends Widget { this.dateTab = _ref; }, tab: { - type: "bi.linear_segment", + type: LinearSegment.xtype, invisible: !o.supportDynamic, cls: "bi-split-bottom", height: this.constants.tabHeight, - items: createItems([{ - text: i18nText("BI-Multi_Date_YMD"), - value: DynamicDateCombo.Static, - }, { - text: i18nText("BI-Basic_Dynamic_Title"), - value: DynamicDateCombo.Dynamic, - }], { - textAlign: "center", - }), + items: createItems( + [ + { + text: i18nText("BI-Multi_Date_YMD"), + value: DynamicDateCombo.Static, + }, + { + text: i18nText("BI-Basic_Dynamic_Title"), + value: DynamicDateCombo.Dynamic, + } + ], + { + textAlign: "center", + } + ), }, cardCreator: v => { switch (v) { case DynamicDateCombo.Dynamic: return { - type: "bi.dynamic_date_card", + type: DynamicDateCard.xtype, cls: "dynamic-date-pane", - listeners: [{ - eventName: "EVENT_CHANGE", - action: () => { - this._setInnerValue(this.year, v); - }, - }], + listeners: [ + { + eventName: "EVENT_CHANGE", + action: () => { + this._setInnerValue(this.year, v); + }, + } + ], ref: _ref => { this.dynamicPane = _ref; }, @@ -141,63 +181,70 @@ export class DynamicDateTimePopup extends Widget { case DynamicDateCombo.Static: default: return { - type: "bi.vertical", - items: [{ - type: "bi.date_calendar_popup", - behaviors: o.behaviors, - min: this.options.min, - max: this.options.max, - ref: _ref => { - this.ymd = _ref; - }, - listeners: [{ - eventName: DateCalendarPopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, - action: () => { - this.fireEvent(DynamicDateTimePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); - }, - }], - }, { - el: { - type: "bi.dynamic_date_time_select", - cls: "bi-split-top", + type: VerticalLayout.xtype, + items: [ + { + type: DateCalendarPopup.xtype, + behaviors: o.behaviors, + min: this.options.min, + max: this.options.max, ref: _ref => { - this.timeSelect = _ref; + this.ymd = _ref; }, - height: 40, + listeners: [ + { + eventName: DateCalendarPopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + action: () => { + this.fireEvent(DynamicDateTimePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + }, + } + ], }, - }], + { + el: { + type: DynamicDateTimeSelect.xtype, + cls: "bi-split-top", + ref: _ref => { + this.timeSelect = _ref; + }, + height: 40, + }, + } + ], }; } }, - listeners: [{ - eventName: Tab.EVENT_CHANGE, - action: () => { - const v = this.dateTab.getSelect(); - const date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); - switch (v) { - case DynamicDateCombo.Static: - this.ymd.setValue({ - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - }); - this.timeSelect.setValue(); - this._setInnerValue(); - break; - case DynamicDateCombo.Dynamic: - default: - if (this.storeValue && this.storeValue.type === DynamicDateCombo.Dynamic) { - this.dynamicPane.setValue(this.storeValue.value); - } else { - this.dynamicPane.setValue({ - year: 0, + listeners: [ + { + eventName: Tab.EVENT_CHANGE, + action: () => { + const v = this.dateTab.getSelect(); + const date = DynamicDateHelper.getCalculation(this.dynamicPane.getValue()); + switch (v) { + case DynamicDateCombo.Static: + this.ymd.setValue({ + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), }); + this.timeSelect.setValue(); + this._setInnerValue(); + break; + case DynamicDateCombo.Dynamic: + default: + if (this.storeValue && this.storeValue.type === DynamicDateCombo.Dynamic) { + this.dynamicPane.setValue(this.storeValue.value); + } else { + this.dynamicPane.setValue({ + year: 0, + }); + } + this._setInnerValue(); + break; } - this._setInnerValue(); - break; - } - }, - }], + }, + } + ], }; } @@ -220,7 +267,7 @@ export class DynamicDateTimePopup extends Widget { _checkTodayValid() { const o = this.options; const today = getDate(); - + return !!checkDateVoid(today.getFullYear(), today.getMonth() + 1, today.getDate(), o.min, o.max)[0]; } @@ -276,10 +323,13 @@ export class DynamicDateTimePopup extends Widget { getValue() { const type = this.dateTab.getSelect(); - + return { type, - value: type === DynamicDateTimeCombo.Static ? extend(this.ymd.getValue(), this.timeSelect.getValue()) : this.dynamicPane.getValue(), + value: + type === DynamicDateTimeCombo.Static + ? extend(this.ymd.getValue(), this.timeSelect.getValue()) + : this.dynamicPane.getValue(), }; } } diff --git a/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js b/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js index 00f21b78c..475092cb5 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js @@ -1,15 +1,28 @@ -import { shortcut, Widget, isNaturalNumber, parseInt, isNumeric, i18nText, isNull, isEmptyString } from "@/core"; +import { + CenterAdaptLayout, + VerticalAdaptLayout, + shortcut, + Widget, + isNaturalNumber, + parseInt, + isNumeric, + i18nText, + isNull, + isEmptyString +} from "@/core"; +import { NumberEditor } from "../numbereditor/number.editor"; +import { Label } from "@/base"; import { SignEditor } from "@/case"; @shortcut() export class DynamicDateTimeSelect extends Widget { - static xtype = "bi.dynamic_date_time_select" + static xtype = "bi.dynamic_date_time_select"; - static HOUR = 1 - static MINUTE = 2 - static SECOND = 3 + static HOUR = 1; + static MINUTE = 2; + static SECOND = 3; - static EVENT_CONFIRM = "EVENT_CONFIRM" + static EVENT_CONFIRM = "EVENT_CONFIRM"; props = { baseCls: "bi-date-time-select", @@ -17,111 +30,133 @@ export class DynamicDateTimeSelect extends Widget { render() { return { - type: "bi.center_adapt", - items: [{ - type: "bi.vertical_adapt", - items: [{ - el: { - type: "bi.number_editor", - ref: _ref => { - this.hour = _ref; - }, - validationChecker (v) { - return isNaturalNumber(v) && parseInt(v) < 24; + type: CenterAdaptLayout.xtype, + items: [ + { + type: VerticalAdaptLayout.xtype, + items: [ + { + el: { + type: NumberEditor.xtype, + ref: _ref => { + this.hour = _ref; + }, + validationChecker(v) { + return isNaturalNumber(v) && parseInt(v) < 24; + }, + errorText(v) { + if (isNumeric(v)) { + return i18nText("BI-Basic_Input_From_To_Number", "\"00-23\""); + } + + return i18nText("BI-Numerical_Interval_Input_Data"); + }, + listeners: [ + { + eventName: SignEditor.EVENT_CONFIRM, + action: () => { + const value = this.hour.getValue(); + this._checkHour(value); + this.hour.setValue(this._formatValueToDoubleDigit(value)); + this.fireEvent(DynamicDateTimeSelect.EVENT_CONFIRM); + }, + }, + { + eventName: SignEditor.EVENT_CHANGE, + action: () => { + const value = this._autoSwitch( + this.hour.getValue(), + DynamicDateTimeSelect.HOUR + ); + this.hour.setValue(value); + }, + } + ], + width: 60, + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + }, }, - errorText (v) { - if (isNumeric(v)) { - return i18nText("BI-Basic_Input_From_To_Number", "\"00-23\""); - } - - return i18nText("BI-Numerical_Interval_Input_Data"); + { + type: Label.xtype, + text: ":", + width: 20, }, - listeners: [{ - eventName: SignEditor.EVENT_CONFIRM, - action: () => { - const value = this.hour.getValue(); - this._checkHour(value); - this.hour.setValue(this._formatValueToDoubleDigit(value)); - this.fireEvent(DynamicDateTimeSelect.EVENT_CONFIRM); + { + type: NumberEditor.xtype, + ref: _ref => { + this.minute = _ref; }, - }, { - eventName: SignEditor.EVENT_CHANGE, - action: () => { - const value = this._autoSwitch(this.hour.getValue(), DynamicDateTimeSelect.HOUR); - this.hour.setValue(value); + validationChecker(v) { + return isNaturalNumber(v) && parseInt(v) < 60; }, - }], - width: 60, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, - }, - }, { - type: "bi.label", - text: ":", - width: 20, - }, { - type: "bi.number_editor", - ref: _ref => { - this.minute = _ref; - }, - validationChecker (v) { - return isNaturalNumber(v) && parseInt(v) < 60; - }, - errorText (v) { - if (isNumeric(v)) { - return i18nText("BI-Basic_Input_From_To_Number", "\"00-59\""); - } - - return i18nText("BI-Numerical_Interval_Input_Data"); - }, - listeners: [{ - eventName: SignEditor.EVENT_CONFIRM, - action: () => { - const value = this.minute.getValue(); - this._checkMinute(value); - this.minute.setValue(this._formatValueToDoubleDigit(value), DynamicDateTimeSelect.MINUTE); - this.fireEvent(DynamicDateTimeSelect.EVENT_CONFIRM); + errorText(v) { + if (isNumeric(v)) { + return i18nText("BI-Basic_Input_From_To_Number", "\"00-59\""); + } + + return i18nText("BI-Numerical_Interval_Input_Data"); + }, + listeners: [ + { + eventName: SignEditor.EVENT_CONFIRM, + action: () => { + const value = this.minute.getValue(); + this._checkMinute(value); + this.minute.setValue( + this._formatValueToDoubleDigit(value), + DynamicDateTimeSelect.MINUTE + ); + this.fireEvent(DynamicDateTimeSelect.EVENT_CONFIRM); + }, + }, + { + eventName: SignEditor.EVENT_CHANGE, + action: () => { + const value = this._autoSwitch(this.getValue(), DynamicDateTimeSelect.MINUTE); + this.minute.setValue(value); + }, + } + ], + width: 60, + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, }, - }, { - eventName: SignEditor.EVENT_CHANGE, - action: () => { - const value = this._autoSwitch(this.getValue(), DynamicDateTimeSelect.MINUTE); - this.minute.setValue(value); + { + type: Label.xtype, + text: ":", + width: 20, }, - }], - width: 60, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, - }, { - type: "bi.label", - text: ":", - width: 20, - }, { - type: "bi.number_editor", - ref: _ref => { - this.second = _ref; - }, - validationChecker (v) { - return isNaturalNumber(v) && parseInt(v) < 60; - }, - errorText (v) { - if (isNumeric(v)) { - return i18nText("BI-Basic_Input_From_To_Number", "\"00-59\""); + { + type: NumberEditor.xtype, + ref: _ref => { + this.second = _ref; + }, + validationChecker(v) { + return isNaturalNumber(v) && parseInt(v) < 60; + }, + errorText(v) { + if (isNumeric(v)) { + return i18nText("BI-Basic_Input_From_To_Number", "\"00-59\""); + } + + return i18nText("BI-Numerical_Interval_Input_Data"); + }, + listeners: [ + { + eventName: SignEditor.EVENT_CONFIRM, + action: () => { + const value = this.second.getValue(); + this._checkSecond(value); + this.second.setValue(this._formatValueToDoubleDigit(value)); + this.fireEvent(DynamicDateTimeSelect.EVENT_CONFIRM); + }, + } + ], + width: 60, + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, } - - return i18nText("BI-Numerical_Interval_Input_Data"); - }, - listeners: [{ - eventName: SignEditor.EVENT_CONFIRM, - action: () => { - const value = this.second.getValue(); - this._checkSecond(value); - this.second.setValue(this._formatValueToDoubleDigit(value)); - this.fireEvent(DynamicDateTimeSelect.EVENT_CONFIRM); - }, - }], - width: 60, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, - }], - }], + ], + } + ], }; } @@ -176,7 +211,7 @@ export class DynamicDateTimeSelect extends Widget { break; } } - + return value; } @@ -188,7 +223,7 @@ export class DynamicDateTimeSelect extends Widget { if (value < 10) { value = `0${value}`; } - + return value; } @@ -197,7 +232,7 @@ export class DynamicDateTimeSelect extends Widget { v.hour = this._formatValueToDoubleDigit(v.hour) || "00"; v.minute = this._formatValueToDoubleDigit(v.minute) || "00"; v.second = this._formatValueToDoubleDigit(v.second) || "00"; - + return v; } diff --git a/src/widget/dynamicdatetime/dynamicdatetime.trigger.js b/src/widget/dynamicdatetime/dynamicdatetime.trigger.js index 82e6a1a83..c28ae707c 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.trigger.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.trigger.js @@ -1,11 +1,34 @@ -import { shortcut, i18nText, createWidget, isKey, checkDateLegal, parseDateTime, bind, isNotNull, isNotEmptyString, isEqual, isEmptyObject, isEmptyString, isNull, getDate, each, isNumeric, checkDateVoid, parseInt, size, print } from "@/core"; -import { Trigger } from "@/base"; import { SignEditor } from "@/case"; +import { + HTapeLayout, + AbsoluteLayout, + shortcut, + i18nText, + createWidget, + isKey, + checkDateLegal, + parseDateTime, + bind, + isNotNull, + isNotEmptyString, + isEqual, + isEmptyObject, + isEmptyString, + isNull, + getDate, + each, + isNumeric, + checkDateVoid, + parseInt, + size, + print +} from "@/core"; +import { IconButton, Text, Trigger } from "@/base"; import { DynamicDateCombo, DynamicDateCard, DynamicDateHelper } from "../dynamicdate"; @shortcut() export class DynamicDateTimeTrigger extends Trigger { - static xtype = "bi.dynamic_date_time_trigger" + static xtype = "bi.dynamic_date_time_trigger"; _const = { hgap: 4, @@ -17,16 +40,16 @@ export class DynamicDateTimeTrigger extends Trigger { iconWidth: 24, }; - static EVENT_BLUR = "EVENT_BLUR" - static EVENT_FOCUS = "EVENT_FOCUS" - static EVENT_START = "EVENT_START" - static EVENT_STOP = "EVENT_STOP" - static EVENT_CONFIRM = "EVENT_CONFIRM" - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_VALID = "EVENT_VALID" - static EVENT_ERROR = "EVENT_ERROR" - static EVENT_TRIGGER_CLICK = "EVENT_TRIGGER_CLICK" - static EVENT_KEY_DOWN = "EVENT_KEY_DOWN" + static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_FOCUS = "EVENT_FOCUS"; + static EVENT_START = "EVENT_START"; + static EVENT_STOP = "EVENT_STOP"; + static EVENT_CONFIRM = "EVENT_CONFIRM"; + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_VALID = "EVENT_VALID"; + static EVENT_ERROR = "EVENT_ERROR"; + static EVENT_TRIGGER_CLICK = "EVENT_TRIGGER_CLICK"; + static EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; props() { return { @@ -47,21 +70,25 @@ export class DynamicDateTimeTrigger extends Trigger { c = this._const; this.storeTriggerValue = ""; this.editor = createWidget({ - type: "bi.sign_editor", + type: SignEditor.xtype, simple: o.simple, height: o.height, validationChecker: v => { const formatStr = this._getStandardDateStr(v); const date = formatStr.match(/\d+/g); !isKey(o.format) && this._autoAppend(v, date); - - return this._dateCheck(formatStr) && checkDateLegal(formatStr) && this._checkVoid({ - year: date[0] | 0, - month: date[1] | 0, - day: date[2] | 0, - }); + + return ( + this._dateCheck(formatStr) && + checkDateLegal(formatStr) && + this._checkVoid({ + year: date[0] | 0, + month: date[1] | 0, + day: date[2] | 0, + }) + ); }, - quitChecker () { + quitChecker() { return false; }, hgap: c.hgap, @@ -72,11 +99,14 @@ export class DynamicDateTimeTrigger extends Trigger { let str = ""; if (!isKey(o.format)) { if (!this._dateCheck(v)) { - str = this.editor.isEditing() ? i18nText("BI-Date_Trigger_Error_Text") : i18nText("BI-Year_Trigger_Invalid_Text"); + str = this.editor.isEditing() + ? i18nText("BI-Date_Trigger_Error_Text") + : i18nText("BI-Year_Trigger_Invalid_Text"); } else { const start = parseDateTime(o.min, "%Y-%X-%d"); const end = parseDateTime(o.max, "%Y-%X-%d"); - str = i18nText("BI-Basic_Date_Range_Error", + str = i18nText( + "BI-Basic_Date_Range_Error", start.getFullYear(), start.getMonth() + 1, start.getDate(), @@ -140,34 +170,40 @@ export class DynamicDateTimeTrigger extends Trigger { this.fireEvent(DynamicDateTimeTrigger.EVENT_CHANGE); }); createWidget({ - type: "bi.htape", + type: HTapeLayout.xtype, element: this, columnSize: ["", this._const.iconWidth], - items: [{ - el: this.editor, - }, { - el: { - type: "bi.icon_button", - cls: "bi-trigger-icon-button date-font", + items: [ + { + el: this.editor, }, - width: o.iconWidth, - }], + { + el: { + type: IconButton.xtype, + cls: "bi-trigger-icon-button date-font", + }, + width: o.iconWidth, + } + ], }); - !o.allowEdit && createWidget({ - type: "bi.absolute", - element: this, - items: [{ - el: { - type: "bi.text", - title: bind(this._getTitle, this), - }, - left: 0, - right: o.iconWidth, - top: 0, - bottom: 0, - }], - }); + !o.allowEdit && + createWidget({ + type: AbsoluteLayout.xtype, + element: this, + items: [ + { + el: { + type: Text.xtype, + title: bind(this._getTitle, this), + }, + left: 0, + right: o.iconWidth, + top: 0, + bottom: 0, + } + ], + }); this.setValue(o.value); } @@ -185,15 +221,24 @@ export class DynamicDateTimeTrigger extends Trigger { switch (type) { case DynamicDateCombo.Dynamic: - return isEmptyString(text) ? dateStr : (`${text}:${dateStr}`); + return isEmptyString(text) ? dateStr : `${text}:${dateStr}`; case DynamicDateCombo.Static: default: if (isNull(value) || isNull(value.day)) { return ""; } - - return print(getDate(value.year, (value.month - 1), value.day, value.hour || 0, value.minute || 0, - value.second || 0), this._getFormatString()); + + return print( + getDate( + value.year, + value.month - 1, + value.day, + value.hour || 0, + value.minute || 0, + value.second || 0 + ), + this._getFormatString() + ); } } @@ -251,7 +296,7 @@ export class DynamicDateTimeTrigger extends Trigger { if (isNotEmptyString(suffixString)) { dateString += ` ${suffixString}`; } - + return dateString; } @@ -260,15 +305,16 @@ export class DynamicDateTimeTrigger extends Trigger { } _dateCheck(date) { - return print(parseDateTime(date, "%Y-%x-%d %H:%M:%S"), "%Y-%x-%d %H:%M:%S") === date || + return ( + print(parseDateTime(date, "%Y-%x-%d %H:%M:%S"), "%Y-%x-%d %H:%M:%S") === date || print(parseDateTime(date, "%Y-%X-%d %H:%M:%S"), "%Y-%X-%d %H:%M:%S") === date || print(parseDateTime(date, "%Y-%x-%e %H:%M:%S"), "%Y-%x-%e %H:%M:%S") === date || print(parseDateTime(date, "%Y-%X-%e %H:%M:%S"), "%Y-%X-%e %H:%M:%S") === date || - print(parseDateTime(date, "%Y-%x-%d"), "%Y-%x-%d") === date || print(parseDateTime(date, "%Y-%X-%d"), "%Y-%X-%d") === date || print(parseDateTime(date, "%Y-%x-%e"), "%Y-%x-%e") === date || - print(parseDateTime(date, "%Y-%X-%e"), "%Y-%X-%e") === date; + print(parseDateTime(date, "%Y-%X-%e"), "%Y-%X-%e") === date + ); } _checkVoid(obj) { @@ -297,16 +343,20 @@ export class DynamicDateTimeTrigger extends Trigger { _yearCheck(v) { const date = print(parseDateTime(v, "%Y-%X-%d"), "%Y-%X-%d"); - + return print(parseDateTime(v, "%Y"), "%Y") === v && date >= this.options.min && date <= this.options.max; } _monthCheck(v) { const date = parseDateTime(v, "%Y-%X-%d"); const dateStr = print(date, "%Y-%X-%d"); - - return (date.getMonth() > 0 && (print(parseDateTime(v, "%Y-%X"), "%Y-%X") === v || - print(parseDateTime(v, "%Y-%x"), "%Y-%x") === v)) && dateStr >= this.options.min && dateStr <= this.options.max; + + return ( + date.getMonth() > 0 && + (print(parseDateTime(v, "%Y-%X"), "%Y-%X") === v || print(parseDateTime(v, "%Y-%x"), "%Y-%x") === v) && + dateStr >= this.options.min && + dateStr <= this.options.max + ); } _setInnerValue(date) { @@ -320,38 +370,56 @@ export class DynamicDateTimeTrigger extends Trigger { let endText = ""; if (isNotNull(obj.year)) { if (parseInt(obj.year) !== 0) { - value += Math.abs(obj.year) + i18nText("BI-Basic_Year") + (obj.year < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.year) + + i18nText("BI-Basic_Year") + + (obj.year < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = getPositionText(i18nText("BI-Basic_Year"), obj.position); } if (isNotNull(obj.quarter)) { if (parseInt(obj.quarter) !== 0) { - value += Math.abs(obj.quarter) + i18nText("BI-Basic_Single_Quarter") + (obj.quarter < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.quarter) + + i18nText("BI-Basic_Single_Quarter") + + (obj.quarter < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = getPositionText(i18nText("BI-Basic_Single_Quarter"), obj.position); } if (isNotNull(obj.month)) { if (parseInt(obj.month) !== 0) { - value += Math.abs(obj.month) + i18nText("BI-Basic_Month") + (obj.month < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.month) + + i18nText("BI-Basic_Month") + + (obj.month < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = getPositionText(i18nText("BI-Basic_Month"), obj.position); } if (isNotNull(obj.week)) { if (parseInt(obj.week) !== 0) { - value += Math.abs(obj.week) + i18nText("BI-Basic_Week") + (obj.week < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.week) + + i18nText("BI-Basic_Week") + + (obj.week < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = getPositionText(i18nText("BI-Basic_Week"), obj.position); } if (isNotNull(obj.day)) { if (parseInt(obj.day) !== 0) { - value += Math.abs(obj.day) + i18nText("BI-Basic_Day") + (obj.day < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.day) + + i18nText("BI-Basic_Day") + + (obj.day < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } endText = size(obj) === 1 ? getPositionText(i18nText("BI-Basic_Month"), obj.position) : ""; } if (isNotNull(obj.workDay) && parseInt(obj.workDay) !== 0) { - value += Math.abs(obj.workDay) + i18nText("BI-Basic_Work_Day") + (obj.workDay < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); + value += + Math.abs(obj.workDay) + + i18nText("BI-Basic_Work_Day") + + (obj.workDay < 0 ? i18nText("BI-Basic_Front") : i18nText("BI-Basic_Behind")); } - + return value + endText; function getPositionText(baseText, position) { @@ -400,8 +468,17 @@ export class DynamicDateTimeTrigger extends Trigger { this.editor.setState(""); this.editor.setValue(""); } else { - const dateStr = print(getDate(value.year, (value.month - 1), value.day, value.hour || 0, value.minute || 0, - value.second || 0), this._getFormatString()); + const dateStr = print( + getDate( + value.year, + value.month - 1, + value.day, + value.hour || 0, + value.minute || 0, + value.second || 0 + ), + this._getFormatString() + ); this.editor.setState(dateStr); this.editor.setValue(dateStr); } diff --git a/src/widget/editor/editor.search.js b/src/widget/editor/editor.search.js index aef7cff33..00909258f 100644 --- a/src/widget/editor/editor.search.js +++ b/src/widget/editor/editor.search.js @@ -1,35 +1,50 @@ -import { shortcut, Widget, extend, i18nText, emptyFn, createWidget, toPix, isKey, Controller, Events, HTapeLayout, isEndWithBlank } from "@/core"; +import { + shortcut, + Widget, + extend, + i18nText, + emptyFn, + createWidget, + toPix, + isKey, + Controller, + Events, + HTapeLayout, + isEndWithBlank +} from "@/core"; import { IconButton, Editor, IconLabel } from "@/base"; @shortcut() export class SearchEditor extends Widget { - static xtype = "bi.search_editor" - - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_FOCUS = "EVENT_FOCUS" - static EVENT_BLUR = "EVENT_BLUR" - static EVENT_CLICK = "EVENT_CLICK" - static EVENT_KEY_DOWN = "EVENT_KEY_DOWN" - static EVENT_SPACE = "EVENT_SPACE" - static EVENT_BACKSPACE = "EVENT_BACKSPACE" - static EVENT_CLEAR = "EVENT_CLEAR" - static EVENT_START = "EVENT_START" - static EVENT_PAUSE = "EVENT_PAUSE" - static EVENT_STOP = "EVENT_STOP" - static EVENT_CONFIRM = "EVENT_CONFIRM" - static EVENT_CHANGE_CONFIRM = "EVENT_CHANGE_CONFIRM" - static EVENT_VALID = "EVENT_VALID" - static EVENT_ERROR = "EVENT_ERROR" - static EVENT_ENTER = "EVENT_ENTER" - static EVENT_RESTRICT = "EVENT_RESTRICT" - static EVENT_REMOVE = "EVENT_REMOVE" - static EVENT_EMPTY = "EVENT_EMPTY" + static xtype = "bi.search_editor"; + + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_FOCUS = "EVENT_FOCUS"; + static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_CLICK = "EVENT_CLICK"; + static EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; + static EVENT_SPACE = "EVENT_SPACE"; + static EVENT_BACKSPACE = "EVENT_BACKSPACE"; + static EVENT_CLEAR = "EVENT_CLEAR"; + static EVENT_START = "EVENT_START"; + static EVENT_PAUSE = "EVENT_PAUSE"; + static EVENT_STOP = "EVENT_STOP"; + static EVENT_CONFIRM = "EVENT_CONFIRM"; + static EVENT_CHANGE_CONFIRM = "EVENT_CHANGE_CONFIRM"; + static EVENT_VALID = "EVENT_VALID"; + static EVENT_ERROR = "EVENT_ERROR"; + static EVENT_ENTER = "EVENT_ENTER"; + static EVENT_RESTRICT = "EVENT_RESTRICT"; + static EVENT_REMOVE = "EVENT_REMOVE"; + static EVENT_EMPTY = "EVENT_EMPTY"; _defaultConfig(config) { const conf = super._defaultConfig(...arguments); - + return extend(conf, { - baseCls: `bi-search-editor bi-focus-shadow ${config.simple ? "bi-border-bottom" : "bi-border bi-border-radius"}`, + baseCls: `bi-search-editor bi-focus-shadow ${ + config.simple ? "bi-border-bottom" : "bi-border bi-border-radius" + }`, height: 24, errorText: "", watermark: i18nText("BI-Basic_Search"), @@ -72,20 +87,21 @@ export class SearchEditor extends Widget { element: this, height: toPix(o.height, o.simple ? 1 : 2), type: HTapeLayout.xtype, - items: [{ - el: { - type: IconLabel.xtype, - cls: "search-font", + items: [ + { + el: { + type: IconLabel.xtype, + cls: "search-font", + }, + width: 24, + }, + { + el: this.editor, }, - width: 24, - }, - { - el: this.editor, - }, - { - el: this.clear, - width: 24, - } + { + el: this.clear, + width: 24, + } ], }); this.editor.on(Controller.EVENT_CHANGE, (...args) => { @@ -115,7 +131,6 @@ export class SearchEditor extends Widget { this.fireEvent(SearchEditor.EVENT_BACKSPACE); }); - this.editor.on(Editor.EVENT_VALID, () => { this.fireEvent(SearchEditor.EVENT_VALID); }); @@ -185,7 +200,7 @@ export class SearchEditor extends Widget { if (isEndWithBlank(val)) { return keywords.concat([" "]); } - + return keywords; } diff --git a/src/widget/editor/editor.search.small.js b/src/widget/editor/editor.search.small.js index 890a1499f..90e44de8d 100644 --- a/src/widget/editor/editor.search.small.js +++ b/src/widget/editor/editor.search.small.js @@ -3,11 +3,11 @@ import { SearchEditor } from "./editor.search"; @shortcut() export class SmallSearchEditor extends SearchEditor { - static xtype = "bi.small_search_editor" + static xtype = "bi.small_search_editor"; _defaultConfig() { const conf = super._defaultConfig(...arguments); - + return extend(conf, { baseCls: `${conf.baseCls || ""} bi-small-search-editor`, height: 20, diff --git a/src/widget/editor/editor.text.js b/src/widget/editor/editor.text.js index 8841eb339..ba87a3a5a 100644 --- a/src/widget/editor/editor.text.js +++ b/src/widget/editor/editor.text.js @@ -3,30 +3,30 @@ import { Editor } from "@/base"; @shortcut() export class TextEditor extends Widget { - static xtype = "bi.text_editor" + static xtype = "bi.text_editor"; - static EVENT_CHANGE = "EVENT_CHANGE" - static EVENT_FOCUS = "EVENT_FOCUS" - static EVENT_BLUR = "EVENT_BLUR" - static EVENT_CLICK = "EVENT_CLICK" - static EVENT_KEY_DOWN = "EVENT_KEY_DOWN" - static EVENT_SPACE = "EVENT_SPACE" - static EVENT_BACKSPACE = "EVENT_BACKSPACE" - static EVENT_START = "EVENT_START" - static EVENT_PAUSE = "EVENT_PAUSE" - static EVENT_STOP = "EVENT_STOP" - static EVENT_CONFIRM = "EVENT_CONFIRM" - static EVENT_CHANGE_CONFIRM = "EVENT_CHANGE_CONFIRM" - static EVENT_VALID = "EVENT_VALID" - static EVENT_ERROR = "EVENT_ERROR" - static EVENT_ENTER = "EVENT_ENTER" - static EVENT_RESTRICT = "EVENT_RESTRICT" - static EVENT_REMOVE = "EVENT_REMOVE" - static EVENT_EMPTY = "EVENT_EMPTY" + static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_FOCUS = "EVENT_FOCUS"; + static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_CLICK = "EVENT_CLICK"; + static EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; + static EVENT_SPACE = "EVENT_SPACE"; + static EVENT_BACKSPACE = "EVENT_BACKSPACE"; + static EVENT_START = "EVENT_START"; + static EVENT_PAUSE = "EVENT_PAUSE"; + static EVENT_STOP = "EVENT_STOP"; + static EVENT_CONFIRM = "EVENT_CONFIRM"; + static EVENT_CHANGE_CONFIRM = "EVENT_CHANGE_CONFIRM"; + static EVENT_VALID = "EVENT_VALID"; + static EVENT_ERROR = "EVENT_ERROR"; + static EVENT_ENTER = "EVENT_ENTER"; + static EVENT_RESTRICT = "EVENT_RESTRICT"; + static EVENT_REMOVE = "EVENT_REMOVE"; + static EVENT_EMPTY = "EVENT_EMPTY"; _defaultConfig(config) { const conf = super._defaultConfig(...arguments); - + return extend(conf, { extraCls: `bi-text-editor bi-focus-shadow ${config.simple ? "bi-border-bottom" : "bi-border"}`, hgap: 4, @@ -97,7 +97,6 @@ export class TextEditor extends Widget { this.fireEvent(TextEditor.EVENT_BACKSPACE); }); - this.editor.on(Editor.EVENT_VALID, () => { this.element.removeClass("error"); this.fireEvent(TextEditor.EVENT_VALID); diff --git a/src/widget/editor/editor.text.small.js b/src/widget/editor/editor.text.small.js index 0d79c8c22..5f574fe0f 100644 --- a/src/widget/editor/editor.text.small.js +++ b/src/widget/editor/editor.text.small.js @@ -3,11 +3,11 @@ import { TextEditor } from "./editor.text"; @shortcut() export class SmallTextEditor extends TextEditor { - static xtype = "bi.small_text_editor" + static xtype = "bi.small_text_editor"; _defaultConfig() { const conf = super._defaultConfig(...arguments); - + return extend(conf, { baseCls: `${conf.baseCls || ""} bi-small-text-editor`, height: 20, diff --git a/src/widget/intervalslider/index.js b/src/widget/intervalslider/index.js index 2a99c23bd..cee9fd741 100644 --- a/src/widget/intervalslider/index.js +++ b/src/widget/intervalslider/index.js @@ -1,2 +1,2 @@ -export { AccurateCalculationModel } from "./model.accuratecalculation"; -export { IntervalSlider } from "./intervalslider"; +export { AccurateCalculationModel } from "./model.accuratecalculation"; +export { IntervalSlider } from "./intervalslider"; diff --git a/src/widget/intervalslider/intervalslider.js b/src/widget/intervalslider/intervalslider.js index bd0121523..ab8732ee2 100644 --- a/src/widget/intervalslider/intervalslider.js +++ b/src/widget/intervalslider/intervalslider.js @@ -1,4 +1,6 @@ import { + VerticalFillLayout, + HorizontalLayout, shortcut, createWidget, toPix, @@ -32,7 +34,7 @@ export class IntervalSlider extends Single { SLIDER_WIDTH: 30, SLIDER_HEIGHT: 30, TRACK_HEIGHT: 24, - } + }; props = { baseCls: "bi-interval-slider bi-slider-track", digit: false, @@ -84,9 +86,7 @@ export class IntervalSlider extends Single { }); this.labelOne.element.hover( () => { - this.labelOne.element - .removeClass("bi-border") - .addClass("bi-border"); + this.labelOne.element.removeClass("bi-border").addClass("bi-border"); }, () => { this.labelOne.element.removeClass("bi-border"); @@ -100,12 +100,7 @@ export class IntervalSlider extends Single { const significantPercent = parseFloat(percent.toFixed(1)); // 分成1000份 this._setSliderOnePosition(significantPercent); this._setBlueTrack(); - this._checkLabelPosition( - oldValueOne, - this.valueTwo, - this.valueOne, - this.valueTwo - ); + this._checkLabelPosition(oldValueOne, this.valueTwo, this.valueOne, this.valueTwo); this.fireEvent(IntervalSlider.EVENT_CHANGE); }); @@ -120,9 +115,7 @@ export class IntervalSlider extends Single { }); this.labelTwo.element.hover( () => { - this.labelTwo.element - .removeClass("bi-border") - .addClass("bi-border"); + this.labelTwo.element.removeClass("bi-border").addClass("bi-border"); }, () => { this.labelTwo.element.removeClass("bi-border"); @@ -136,12 +129,7 @@ export class IntervalSlider extends Single { const significantPercent = parseFloat(percent.toFixed(1)); this._setSliderTwoPosition(significantPercent); this._setBlueTrack(); - this._checkLabelPosition( - this.valueOne, - oldValueTwo, - this.valueOne, - this.valueTwo - ); + this._checkLabelPosition(this.valueOne, oldValueTwo, this.valueOne, this.valueTwo); this.fireEvent(IntervalSlider.EVENT_CHANGE); }); @@ -156,7 +144,7 @@ export class IntervalSlider extends Single { this._setVisible(false); return { - type: "bi.vertical_fill", + type: VerticalFillLayout.xtype, rowSize: [30, 30], items: [ this._createLabelWrapper(), @@ -165,7 +153,7 @@ export class IntervalSlider extends Single { items: [ { el: { - type: "bi.horizontal", + type: HorizontalLayout.xtype, horizontalAlign: "stretch", verticalAlign: "middle", columnSize: ["fill"], @@ -198,22 +186,12 @@ export class IntervalSlider extends Single { this._setSliderOnePosition(significantPercent); this.labelOne.setValue(v); this.valueOne = v; - this._checkLabelPosition( - oldValueOne, - oldValueTwo, - v, - this.valueTwo - ); + this._checkLabelPosition(oldValueOne, oldValueTwo, v, this.valueTwo); } else { this._setSliderTwoPosition(significantPercent); this.labelTwo.setValue(v); this.valueTwo = v; - this._checkLabelPosition( - oldValueOne, - oldValueTwo, - this.valueOne, - v - ); + this._checkLabelPosition(oldValueOne, oldValueTwo, this.valueOne, v); } this._setBlueTrack(); } @@ -221,9 +199,7 @@ export class IntervalSlider extends Single { _rePosBySizeAfterStop(size, isLeft) { const percent = (size * 100) / this._getGrayTrackLength(); const significantPercent = parseFloat(percent.toFixed(1)); - isLeft - ? this._setSliderOnePosition(significantPercent) - : this._setSliderTwoPosition(significantPercent); + isLeft ? this._setSliderOnePosition(significantPercent) : this._setSliderTwoPosition(significantPercent); } _draggable(widget, isLeft) { @@ -232,7 +208,7 @@ export class IntervalSlider extends Single { offset = 0, defaultSize = 0; const mouseMoveTracker = new MouseMoveTracker( - (deltaX => { + deltaX => { if (mouseMoveTracker.isDragging()) { startDrag = true; offset += deltaX; @@ -240,8 +216,8 @@ export class IntervalSlider extends Single { widget.element.addClass("dragging"); this._rePosBySizeAfterMove(size, isLeft); } - }), - (() => { + }, + () => { if (startDrag === true) { size = optimizeSize(size); this._rePosBySizeAfterStop(size, isLeft); @@ -253,7 +229,7 @@ export class IntervalSlider extends Single { widget.element.removeClass("dragging"); mouseMoveTracker.releaseMouseMoves(); this.fireEvent(IntervalSlider.EVENT_CHANGE); - }), + }, window ); widget.element.on("mousedown", function (event) { @@ -270,7 +246,7 @@ export class IntervalSlider extends Single { _createLabelWrapper() { const c = this._constant; - + return { el: { type: VerticalLayout.xtype, @@ -308,7 +284,7 @@ export class IntervalSlider extends Single { _createSliderWrapper() { return { el: { - type: "bi.horizontal", + type: HorizontalLayout.xtype, horizontalAlign: "stretch", verticalAlign: "middle", items: [ @@ -340,7 +316,7 @@ export class IntervalSlider extends Single { _createTrackWrapper() { return createWidget({ - type: "bi.horizontal", + type: HorizontalLayout.xtype, cls: "track-wrapper", horizontalAlign: "stretch", verticalAlign: "middle", @@ -375,7 +351,7 @@ export class IntervalSlider extends Single { const o = this.options; let valid = false; // 像90.这样的既不属于整数又不属于小数,是不合法的值 - let dotText = (`${v}`).split(".")[1]; + let dotText = `${v}`.split(".")[1]; // eslint-disable-next-line no-empty if (isEmptyString(dotText)) { } else { @@ -390,7 +366,7 @@ export class IntervalSlider extends Single { } } } - + return valid; } @@ -421,9 +397,7 @@ export class IntervalSlider extends Single { (oldValueOne <= oldValueTwo && valueOne > valueTwo) || (oldValueOne >= oldValueTwo && valueOne < valueTwo) ) { - const isSliderOneLeft = - parseFloat(this.labelOne.getValue()) < - parseFloat(this.labelTwo.getValue()); + const isSliderOneLeft = parseFloat(this.labelOne.getValue()) < parseFloat(this.labelTwo.getValue()); this._resetLabelPosition(!isSliderOneLeft); } } @@ -475,11 +449,7 @@ export class IntervalSlider extends Single { } _setErrorText() { - const errorText = i18nText( - "BI-Basic_Please_Enter_Number_Between", - this.min, - this.max - ); + const errorText = i18nText("BI-Basic_Please_Enter_Number_Between", this.min, this.max); this.labelOne.setErrorText(errorText); this.labelTwo.setErrorText(errorText); } @@ -500,27 +470,13 @@ export class IntervalSlider extends Single { const mul = this.calculation.accurateMultiplication(sub, percent); const div = this.calculation.accurateDivisionTenExponent(mul, 2); if (this.precision < 0) { - const value = parseFloat( - this.calculation.accurateAddition(div, this.min) - ); - const reduceValue = Math.round( - this.calculation.accurateDivisionTenExponent( - value, - -this.precision - ) - ); - - return this.calculation.accurateMultiplication( - reduceValue, - Math.pow(10, -this.precision) - ); + const value = parseFloat(this.calculation.accurateAddition(div, this.min)); + const reduceValue = Math.round(this.calculation.accurateDivisionTenExponent(value, -this.precision)); + + return this.calculation.accurateMultiplication(reduceValue, Math.pow(10, -this.precision)); } - - return parseFloat( - this.calculation - .accurateAddition(div, this.min) - .toFixed(this.precision) - ); + + return parseFloat(this.calculation.accurateAddition(div, this.min).toFixed(this.precision)); } _getPercentByValue(v) { @@ -541,11 +497,11 @@ export class IntervalSlider extends Single { arr = pre.split("e"); const decimalPartLength = size(arr[0].split(".")[1]); const sciencePartLength = parseInt(arr[1].substring(1)); - + return decimalPartLength - sciencePartLength; } arr = pre.split("."); - + return arr.length > 1 ? arr[1].length : 0; } @@ -556,20 +512,16 @@ export class IntervalSlider extends Single { if (value >= this.max) { return this.max; } - + return value; } _setEnable(b) { super._setEnable.apply(this, [b]); if (b) { - this.blueTrack.element - .removeClass("disabled-blue-track") - .addClass("blue-track"); + this.blueTrack.element.removeClass("disabled-blue-track").addClass("blue-track"); } else { - this.blueTrack.element - .removeClass("blue-track") - .addClass("disabled-blue-track"); + this.blueTrack.element.removeClass("blue-track").addClass("disabled-blue-track"); } } @@ -577,7 +529,7 @@ export class IntervalSlider extends Single { if (this.valueOne <= this.valueTwo) { return { min: this.valueOne, max: this.valueTwo }; } - + return { min: this.valueTwo, max: this.valueOne }; } @@ -602,22 +554,14 @@ export class IntervalSlider extends Single { const o = this.options; let valueOne = parseFloat(v.min); let valueTwo = parseFloat(v.max); - valueOne = - o.digit === false - ? valueOne - : parseFloat(valueOne.toFixed(o.digit)); - valueTwo = - o.digit === false - ? valueTwo - : parseFloat(valueTwo.toFixed(o.digit)); + valueOne = o.digit === false ? valueOne : parseFloat(valueOne.toFixed(o.digit)); + valueTwo = o.digit === false ? valueTwo : parseFloat(valueTwo.toFixed(o.digit)); if (!isNaN(valueOne) && !isNaN(valueTwo)) { if (this._checkValidation(valueOne)) { - this.valueOne = - this.valueOne <= this.valueTwo ? valueOne : valueTwo; + this.valueOne = this.valueOne <= this.valueTwo ? valueOne : valueTwo; } if (this._checkValidation(valueTwo)) { - this.valueTwo = - this.valueOne <= this.valueTwo ? valueTwo : valueOne; + this.valueTwo = this.valueOne <= this.valueTwo ? valueTwo : valueOne; } if (valueOne < this.min) { this.valueOne = this.min; @@ -648,20 +592,9 @@ export class IntervalSlider extends Single { (isNumeric(this.valueOne) || isNotEmptyString(this.valueOne)) && (isNumeric(this.valueTwo) || isNotEmptyString(this.valueTwo)) ) { - this.labelOne.setValue( - o.digit === false - ? this.valueOne - : parseFloat(this.valueOne).toFixed(o.digit) - ); - this.labelTwo.setValue( - o.digit === false - ? this.valueTwo - : parseFloat(this.valueTwo).toFixed(o.digit) - ); - this._setAllPosition( - this._getPercentByValue(this.valueOne), - this._getPercentByValue(this.valueTwo) - ); + this.labelOne.setValue(o.digit === false ? this.valueOne : parseFloat(this.valueOne).toFixed(o.digit)); + this.labelTwo.setValue(o.digit === false ? this.valueTwo : parseFloat(this.valueTwo).toFixed(o.digit)); + this._setAllPosition(this._getPercentByValue(this.valueOne), this._getPercentByValue(this.valueTwo)); } else { this.labelOne.setValue(this.min); this.labelTwo.setValue(this.max); diff --git a/src/widget/intervalslider/model.accuratecalculation.js b/src/widget/intervalslider/model.accuratecalculation.js index fcc944e78..3d423faa5 100644 --- a/src/widget/intervalslider/model.accuratecalculation.js +++ b/src/widget/intervalslider/model.accuratecalculation.js @@ -16,7 +16,7 @@ export class AccurateCalculationModel extends Widget { for (let i = 0; i < n; i++) { magnitude += "0"; } - + return parseInt(magnitude); } @@ -24,8 +24,7 @@ export class AccurateCalculationModel extends Widget { if (stringNumber1.numDecimalLength === stringNumber2.numDecimalLength) { return; } - let magnitudeDiff = - stringNumber1.numDecimalLength - stringNumber2.numDecimalLength; + let magnitudeDiff = stringNumber1.numDecimalLength - stringNumber2.numDecimalLength; let needAddZero; if (magnitudeDiff > 0) { needAddZero = stringNumber2; @@ -54,7 +53,7 @@ export class AccurateCalculationModel extends Widget { numDecimal = numStrArray[1]; numDecimalLength = numStrArray[1].length; } - + return { numInteger, numDecimal, @@ -67,27 +66,16 @@ export class AccurateCalculationModel extends Widget { const stringNumber1 = this._stringNumberFactory(num1); const stringNumber2 = this._stringNumberFactory(num2); // 整数部分计算 - let integerResult = - parseInt(stringNumber1.numInteger) - - parseInt(stringNumber2.numInteger); + let integerResult = parseInt(stringNumber1.numInteger) - parseInt(stringNumber2.numInteger); // 小数部分 this._formatDecimal(stringNumber1, stringNumber2); - const decimalMaxLength = getDecimalMaxLength( - stringNumber1, - stringNumber2 - ); + const decimalMaxLength = getDecimalMaxLength(stringNumber1, stringNumber2); let decimalResultTemp; let decimalResult; - if ( - parseInt(stringNumber1.numDecimal) >= - parseInt(stringNumber2.numDecimal) - ) { - decimalResultTemp = ( - parseInt(stringNumber1.numDecimal) - - parseInt(stringNumber2.numDecimal) - ).toString(); + if (parseInt(stringNumber1.numDecimal) >= parseInt(stringNumber2.numDecimal)) { + decimalResultTemp = (parseInt(stringNumber1.numDecimal) - parseInt(stringNumber2.numDecimal)).toString(); decimalResult = addZero(decimalResultTemp, decimalMaxLength); } else { // 否则借位 @@ -101,14 +89,14 @@ export class AccurateCalculationModel extends Widget { decimalResult = addZero(decimalResultTemp, decimalMaxLength); } const result = `${integerResult}.${decimalResult}`; - + return parseFloat(result); function getDecimalMaxLength(num1, num2) { if (num1.numDecimal.length >= num2.numDecimal.length) { return num1.numDecimal.length; } - + return num2.numDecimal.length; } @@ -117,7 +105,7 @@ export class AccurateCalculationModel extends Widget { for (let i = 0; i < diff; i++) { resultTemp = `0${resultTemp}`; } - + return resultTemp; } } @@ -127,30 +115,22 @@ export class AccurateCalculationModel extends Widget { const stringNumber1 = this._stringNumberFactory(num1); const stringNumber2 = this._stringNumberFactory(num2); // 整数部分计算 - let integerResult = - parseInt(stringNumber1.numInteger) + - parseInt(stringNumber2.numInteger); + let integerResult = parseInt(stringNumber1.numInteger) + parseInt(stringNumber2.numInteger); // 小数部分 this._formatDecimal(stringNumber1, stringNumber2); - let decimalResult = ( - parseInt(stringNumber1.numDecimal) + - parseInt(stringNumber2.numDecimal) - ).toString(); + let decimalResult = (parseInt(stringNumber1.numDecimal) + parseInt(stringNumber2.numDecimal)).toString(); if (decimalResult !== "0") { if (decimalResult.length <= stringNumber1.numDecimal.length) { - decimalResult = addZero( - decimalResult, - stringNumber1.numDecimal.length - ); + decimalResult = addZero(decimalResult, stringNumber1.numDecimal.length); } else { integerResult++; // 进一 decimalResult = decimalResult.slice(1); } } const result = `${integerResult}.${decimalResult}`; - + return parseFloat(result); function addZero(resultTemp, length) { @@ -158,7 +138,7 @@ export class AccurateCalculationModel extends Widget { for (let i = 0; i < diff; i++) { resultTemp = `0${resultTemp}`; } - + return resultTemp; } } @@ -168,33 +148,25 @@ export class AccurateCalculationModel extends Widget { const stringNumber1 = this._stringNumberFactory(num1); const stringNumber2 = this._stringNumberFactory(num2); // 整数部分计算 - const integerResult = - parseInt(stringNumber1.numInteger) * - parseInt(stringNumber2.numInteger); + const integerResult = parseInt(stringNumber1.numInteger) * parseInt(stringNumber2.numInteger); // num1的小数和num2的整数 const dec1Int2 = this._accurateDivisionTenExponent( - parseInt(stringNumber1.numDecimal) * - parseInt(stringNumber2.numInteger), + parseInt(stringNumber1.numDecimal) * parseInt(stringNumber2.numInteger), stringNumber1.numDecimalLength ); // num1的整数和num2的小数 const int1dec2 = this._accurateDivisionTenExponent( - parseInt(stringNumber1.numInteger) * - parseInt(stringNumber2.numDecimal), + parseInt(stringNumber1.numInteger) * parseInt(stringNumber2.numDecimal), stringNumber2.numDecimalLength ); // 小数*小数 const dec1dec2 = this._accurateDivisionTenExponent( - parseInt(stringNumber1.numDecimal) * - parseInt(stringNumber2.numDecimal), + parseInt(stringNumber1.numDecimal) * parseInt(stringNumber2.numDecimal), stringNumber1.numDecimalLength + stringNumber2.numDecimalLength ); return this._accurateAddition( - this._accurateAddition( - this._accurateAddition(integerResult, dec1Int2), - int1dec2 - ), + this._accurateAddition(this._accurateAddition(integerResult, dec1Int2), int1dec2), dec1dec2 ); } @@ -204,18 +176,14 @@ export class AccurateCalculationModel extends Widget { const stringNumber = this._stringNumberFactory(num); let integerResult, partDecimalResult; if (stringNumber.numInteger.length > n) { - integerResult = stringNumber.numInteger.slice( - 0, - stringNumber.numInteger.length - n - ); + integerResult = stringNumber.numInteger.slice(0, stringNumber.numInteger.length - n); partDecimalResult = stringNumber.numInteger.slice(-n); } else { integerResult = "0"; partDecimalResult = addZero(stringNumber.numInteger, n); } - const result = - `${integerResult}.${partDecimalResult}${stringNumber.numDecimal}`; - + const result = `${integerResult}.${partDecimalResult}${stringNumber.numDecimal}`; + return parseFloat(result); function addZero(resultTemp, length) { @@ -223,7 +191,7 @@ export class AccurateCalculationModel extends Widget { for (let i = 0; i < diff; i++) { resultTemp = `0${resultTemp}`; } - + return resultTemp; } } @@ -233,7 +201,7 @@ export class AccurateCalculationModel extends Widget { if (num1 >= num2) { return this._accurateSubtraction(num1, num2); } - + return -this._accurateSubtraction(num2, num1); } if (num1 >= 0 && num2 < 0) { @@ -246,7 +214,7 @@ export class AccurateCalculationModel extends Widget { if (num1 >= num2) { return this._accurateSubtraction(-num2, -num1); } - + return this._accurateSubtraction(-num1, -num2); } } @@ -285,7 +253,7 @@ export class AccurateCalculationModel extends Widget { if (num1 >= 0) { return this._accurateDivisionTenExponent(num1, n); } - + return -this._accurateDivisionTenExponent(-num1, n); } } diff --git a/src/widget/multilayerdownlist/combo.downlist.js b/src/widget/multilayerdownlist/combo.downlist.js index 281e2fc0f..815238e80 100644 --- a/src/widget/multilayerdownlist/combo.downlist.js +++ b/src/widget/multilayerdownlist/combo.downlist.js @@ -1,5 +1,5 @@ -import { shortcut, Widget, extend, createWidget } from "@/core"; import { MultiLayerDownListPopup } from "./popup.downlist"; +import { shortcut, Widget, extend, createWidget } from "@/core"; import { Combo } from "@/base"; import { IconTrigger } from "@/case"; @@ -29,13 +29,13 @@ export class MultiLayerDownListCombo extends Widget { super._init(...arguments); const o = this.options; this.popupview = createWidget({ - type: "bi.multi_layer_down_list_popup", + type: MultiLayerDownListPopup.xtype, items: o.items, chooseType: o.chooseType, value: o.value, }); - this.popupview.on(MultiLayerDownListPopup.EVENT_CHANGE, value => { + this.popupview.on(MultiLayerDownListPopup.EVENT_CHANGE, (value) => { this.fireEvent(MultiLayerDownListCombo.EVENT_CHANGE, value); this.downlistcombo.hideView(); }); diff --git a/src/widget/multilayerdownlist/popup.downlist.js b/src/widget/multilayerdownlist/popup.downlist.js index b8abc5cf9..edbd95dff 100644 --- a/src/widget/multilayerdownlist/popup.downlist.js +++ b/src/widget/multilayerdownlist/popup.downlist.js @@ -40,7 +40,7 @@ export class MultiLayerDownListPopup extends Pane { _defaultConfig() { const conf = super._defaultConfig(...arguments); - + return extend(conf, { baseCls: "bi-down-list-popup", items: [], @@ -82,7 +82,7 @@ export class MultiLayerDownListPopup extends Pane { if (isNotNull(self.childValueMap[value])) { changedValue = self.childValueMap[value]; const fatherValue = self.fatherValueMap[value]; - const fatherArrayValue = (`${fatherValue}`).split(BlankSplitChar); + const fatherArrayValue = `${fatherValue}`.split(BlankSplitChar); self.fireEvent( MultiLayerDownListPopup.EVENT_SON_VALUE_CHANGE, changedValue, @@ -193,7 +193,7 @@ export class MultiLayerDownListPopup extends Pane { result.push(spliter_container); } }); - + return result; } @@ -252,7 +252,7 @@ export class MultiLayerDownListPopup extends Pane { if (isArray(fatherValue)) { fValue = fatherValue.join(BlankSplitChar); } - + return fValue + BlankSplitChar + childValue; } @@ -268,7 +268,7 @@ export class MultiLayerDownListPopup extends Pane { } valueArray.push(value); }); - + return valueArray; } @@ -289,19 +289,21 @@ export class MultiLayerDownListPopup extends Pane { } }); }); - + return value; function joinValue(sources, targets) { let value = ""; - some(sources, (idx, s) => some(targets, (id, t) => { - if (s === t) { - value = s; - - return true; - } - })); - + some(sources, (idx, s) => + some(targets, (id, t) => { + if (s === t) { + value = s; + + return true; + } + }) + ); + return value; } @@ -314,7 +316,7 @@ export class MultiLayerDownListPopup extends Pane { } else { children.push(item.value); } - + return children; } } @@ -346,7 +348,7 @@ export class MultiLayerDownListPopup extends Pane { each(this.popup.getAllButtons(), (i, item) => { i % 2 === 0 && v.push(item.getValue()); }); - + return v; } @@ -359,14 +361,14 @@ export class MultiLayerDownListPopup extends Pane { if (isNotNull(self.childValueMap[value])) { const fartherValue = self.fatherValueMap[value]; valueItem.childValue = self.childValueMap[value]; - const fatherArrayValue = (`${fartherValue}`).split(BlankSplitChar); + const fatherArrayValue = `${fartherValue}`.split(BlankSplitChar); valueItem.value = fatherArrayValue.length > 1 ? fatherArrayValue : fartherValue; } else { valueItem.value = value; } result.push(valueItem); }); - + return result; } } diff --git a/src/widget/multilayerselecttree/multilayerselecttree.combo.js b/src/widget/multilayerselecttree/multilayerselecttree.combo.js index 834a4fb40..f12c54d55 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.combo.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.combo.js @@ -1,14 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - isKey, - toPix, - AbsoluteLayout, - nextTick, - isArray -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, isKey, toPix, AbsoluteLayout, nextTick, isArray } from "@/core"; import { SingleTreeTrigger } from "../singletree/singletree.trigger"; import { MultiLayerSelectTreePopup } from "./multilayerselecttree.popup"; import { Combo } from "@/base"; @@ -121,8 +111,7 @@ export class MultiLayerSelectTreeCombo extends Widget { itemsCreator: o.itemsCreator, items: o.items, ref(_ref) { - self.trigger && - self.trigger.getSearcher().setAdapter(_ref); + self.trigger && self.trigger.getSearcher().setAdapter(_ref); }, listeners: [ { @@ -130,13 +119,8 @@ export class MultiLayerSelectTreeCombo extends Widget { action() { self.setValue(this.getValue()); self.combo.hideView(); - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_CHANGE - ); - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_CLICK_ITEM, - self.combo.getValue() - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_CHANGE); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_CLICK_ITEM, self.combo.getValue()); }, } ], @@ -157,9 +141,7 @@ export class MultiLayerSelectTreeCombo extends Widget { { eventName: Combo.EVENT_BEFORE_POPUPVIEW, action() { - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_BEFORE_POPUPVIEW - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_BEFORE_POPUPVIEW); }, } ], @@ -198,45 +180,32 @@ export class MultiLayerSelectTreeCombo extends Widget { action() { self.setValue(this.getValue()); self.combo.hideView(); - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_CHANGE - ); - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_CLICK_ITEM, - self.combo.getValue() - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_CHANGE); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_CLICK_ITEM, self.combo.getValue()); }, }, { eventName: MultiLayerSelectTreeTrigger.EVENT_FOCUS, action() { - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_FOCUS - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_FOCUS); }, }, { eventName: MultiLayerSelectTreeTrigger.EVENT_BLUR, action() { - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_BLUR - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_BLUR); }, }, { eventName: MultiLayerSelectTreeTrigger.EVENT_SEARCHING, action() { - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_SEARCHING - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_SEARCHING); }, }, { eventName: MultiLayerSelectTreeTrigger.EVENT_STOP, action() { - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_STOP - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_STOP); }, }, { @@ -245,9 +214,7 @@ export class MultiLayerSelectTreeCombo extends Widget { const value = self.trigger.getSearcher().getKeyword(); self.combo.setValue([value]); self.combo.hideView(); - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_CHANGE - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_CHANGE); }, } ], @@ -259,9 +226,8 @@ export class MultiLayerSelectTreeCombo extends Widget { // 通过container参数将popup放置于popover之外解决此问题, 其他下拉控件由于元素少或者有分页,所以 // 卡顿不明显, 先在此做尝试, 并在FineUI特殊处理待解决文档中标记跟踪 return o.container && - self.trigger.getSearcher().isSearching() && - self.trigger.getSearcher().getView().element.find(e.target) - .length > 0 + self.trigger.getSearcher().isSearching() && + self.trigger.getSearcher().getView().element.find(e.target).length > 0 ? false : self.triggerBtn?.element.find(e.target).length === 0; }, @@ -275,9 +241,7 @@ export class MultiLayerSelectTreeCombo extends Widget { { eventName: Combo.EVENT_BEFORE_POPUPVIEW, action() { - self.fireEvent( - MultiLayerSelectTreeCombo.EVENT_BEFORE_POPUPVIEW - ); + self.fireEvent(MultiLayerSelectTreeCombo.EVENT_BEFORE_POPUPVIEW); }, } ], @@ -321,9 +285,7 @@ export class MultiLayerSelectTreeCombo extends Widget { } getSearcher() { - return this.trigger - ? this.trigger.getSearcher() - : this.textTrigger.getTextor(); + return this.trigger ? this.trigger.getSearcher() : this.textTrigger.getTextor(); } clear() { @@ -339,9 +301,7 @@ export class MultiLayerSelectTreeCombo extends Widget { } setTipType(v) { - this.trigger - ? this.trigger.setTipType(v) - : this.textTrigger.setTipType(v); + this.trigger ? this.trigger.setTipType(v) : this.textTrigger.setTipType(v); } populate(items) { @@ -361,8 +321,6 @@ export class MultiLayerSelectTreeCombo extends Widget { } setWaterMark(v) { - this.trigger - ? this.trigger.setWaterMark(v) - : this.textTrigger.setWaterMark(v); + this.trigger ? this.trigger.setWaterMark(v) : this.textTrigger.setWaterMark(v); } } diff --git a/src/widget/multilayerselecttree/multilayerselecttree.insert.search.pane.js b/src/widget/multilayerselecttree/multilayerselecttree.insert.search.pane.js index 058493c12..f21c07112 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.insert.search.pane.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.insert.search.pane.js @@ -59,9 +59,7 @@ export class MultiLayerSelectTreeInsertSearchPane extends Widget { { eventName: MultiLayerSelectLevelTree.EVENT_CHANGE, action() { - self.fireEvent( - MultiLayerSelectTreeInsertSearchPane.EVENT_CHANGE - ); + self.fireEvent(MultiLayerSelectTreeInsertSearchPane.EVENT_CHANGE); }, } ], @@ -84,10 +82,7 @@ export class MultiLayerSelectTreeInsertSearchPane extends Widget { self.addNotMatchTip = _ref; }, handler() { - self.fireEvent( - MultiLayerSelectTreeInsertSearchPane.EVENT_ADD_ITEM, - o.keywordGetter() - ); + self.fireEvent(MultiLayerSelectTreeInsertSearchPane.EVENT_ADD_ITEM, o.keywordGetter()); }, }, this.tree @@ -98,10 +93,7 @@ export class MultiLayerSelectTreeInsertSearchPane extends Widget { setKeyword(keyword) { const showTip = isEmptyArray(this.tree.getAllLeaves()); this.addNotMatchTip.setVisible(showTip); - showTip && - this.addNotMatchTip.setText( - i18nText("BI-Basic_Click_To_Add_Text", keyword) - ); + showTip && this.addNotMatchTip.setText(i18nText("BI-Basic_Click_To_Add_Text", keyword)); } getValue() { diff --git a/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js b/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js index a307ffb2c..dc621d9e6 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js @@ -66,11 +66,7 @@ export class MultiLayerSelectLevelTree extends Pane { } node.keyword = node.keyword || keyword; extend.pNode = pNode; - if ( - node.isParent === true || - node.parent === true || - isNotEmptyArray(node.children) - ) { + if (node.isParent === true || node.parent === true || isNotEmptyArray(node.children)) { extend.type = BasicTreeNode.xtype; extend.selectable = true; defaults(node, extend); @@ -112,10 +108,10 @@ export class MultiLayerSelectLevelTree extends Pane { items: this._formatItems(Tree.transformToTreeFormat(nodes), 0), itemsCreator(op, callback) { op.times === 1 && - !op.node && - nextTick(() => { - self.loading(); - }); + !op.node && + nextTick(() => { + self.loading(); + }); o.itemsCreator(op, ob => { hasNext = ob.hasNext; op.times === 1 && !op.node && self._populate(ob.items); @@ -128,10 +124,10 @@ export class MultiLayerSelectLevelTree extends Pane { ); self.setValue(self.storeValue); op.times === 1 && - !op.node && - nextTick(() => { - self.loaded(); - }); + !op.node && + nextTick(() => { + self.loaded(); + }); }); }, value: o.value, @@ -141,10 +137,7 @@ export class MultiLayerSelectLevelTree extends Pane { isDefaultInit: o.itemsCreator !== emptyFn, el: { type: ButtonTree.xtype, - chooseType: - o.chooseType === Selection.None - ? Selection.None - : Selection.Default, // 不使用buttontree内部getValue逻辑 + chooseType: o.chooseType === Selection.None ? Selection.None : Selection.Default, // 不使用buttontree内部getValue逻辑 behaviors: o.behaviors, layouts: [ { @@ -161,10 +154,7 @@ export class MultiLayerSelectLevelTree extends Pane { self.fireEvent(Controller.EVENT_CHANGE, arguments); if (type === Events.CLICK) { self.setValue(value); - self.fireEvent( - MultiLayerSelectLevelTree.EVENT_CHANGE, - arguments - ); + self.fireEvent(MultiLayerSelectLevelTree.EVENT_CHANGE, arguments); } }); @@ -184,9 +174,7 @@ export class MultiLayerSelectLevelTree extends Pane { this._populate(nodes); isNull(nodes) ? this.tree.populate() - : this.tree.populate( - this._formatItems(Tree.transformToTreeFormat(nodes), 0) - ); + : this.tree.populate(this._formatItems(Tree.transformToTreeFormat(nodes), 0)); } setValue(v) { @@ -199,11 +187,7 @@ export class MultiLayerSelectLevelTree extends Pane { } getValue() { - return isArray(this.storeValue) - ? this.storeValue - : isNull(this.storeValue) - ? [] - : [this.storeValue]; + return isArray(this.storeValue) ? this.storeValue : isNull(this.storeValue) ? [] : [this.storeValue]; } getAllLeaves() { diff --git a/src/widget/multilayerselecttree/multilayerselecttree.popup.js b/src/widget/multilayerselecttree/multilayerselecttree.popup.js index d5a781d4a..e16b341ff 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.popup.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.popup.js @@ -1,14 +1,4 @@ -import { - shortcut, - Widget, - extend, - i18nText, - emptyFn, - createWidget, - Controller, - VerticalLayout, - isArray -} from "@/core"; +import { shortcut, Widget, extend, i18nText, emptyFn, createWidget, Controller, VerticalLayout, isArray } from "@/core"; import { MultiLayerSelectLevelTree } from "./multilayerselecttree.leveltree"; @shortcut() diff --git a/src/widget/multilayerselecttree/multilayerselecttree.trigger.js b/src/widget/multilayerselecttree/multilayerselecttree.trigger.js index 36ce295a2..3dc982964 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.trigger.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.trigger.js @@ -75,9 +75,7 @@ export class MultiLayerSelectTreeTrigger extends Trigger { self.editor = this; }, defaultText: o.defaultText, - text: isKey(o.value) - ? this._digest(o.value) - : o.text, + text: isKey(o.value) ? this._digest(o.value) : o.text, value: o.value, height: o.height, tipText: "", @@ -86,25 +84,19 @@ export class MultiLayerSelectTreeTrigger extends Trigger { { eventName: StateEditor.EVENT_FOCUS, action() { - self.fireEvent( - MultiLayerSelectTreeTrigger.EVENT_FOCUS - ); + self.fireEvent(MultiLayerSelectTreeTrigger.EVENT_FOCUS); }, }, { eventName: StateEditor.EVENT_BLUR, action() { - self.fireEvent( - MultiLayerSelectTreeTrigger.EVENT_BLUR - ); + self.fireEvent(MultiLayerSelectTreeTrigger.EVENT_BLUR); }, }, { eventName: StateEditor.EVENT_CHANGE, action() { - self.fireEvent( - MultiLayerSelectTreeTrigger.EVENT_SEARCHING - ); + self.fireEvent(MultiLayerSelectTreeTrigger.EVENT_SEARCHING); }, } ], @@ -126,15 +118,10 @@ export class MultiLayerSelectTreeTrigger extends Trigger { cls: "bi-card", listeners: [ { - eventName: - MultiLayerSelectTreeInsertSearchPane.EVENT_ADD_ITEM, + eventName: MultiLayerSelectTreeInsertSearchPane.EVENT_ADD_ITEM, action() { - self.options.text = self - .getSearcher() - .getKeyword(); - self.fireEvent( - MultiLayerSelectTreeTrigger.EVENT_ADD_ITEM - ); + self.options.text = self.getSearcher().getKeyword(); + self.fireEvent(MultiLayerSelectTreeTrigger.EVENT_ADD_ITEM); }, } ], @@ -146,8 +133,7 @@ export class MultiLayerSelectTreeTrigger extends Trigger { const keyword = obj.keyword; if (o.itemsCreator === BI.emptyFn) { callback(self._getSearchItems(keyword)); - o.allowInsertValue && - self.popup.setKeyword(keyword); + o.allowInsertValue && self.popup.setKeyword(keyword); } else { callback(); } @@ -156,9 +142,7 @@ export class MultiLayerSelectTreeTrigger extends Trigger { { eventName: Searcher.EVENT_CHANGE, action() { - self.fireEvent( - MultiLayerSelectTreeTrigger.EVENT_CHANGE - ); + self.fireEvent(MultiLayerSelectTreeTrigger.EVENT_CHANGE); }, } ], @@ -184,12 +168,7 @@ export class MultiLayerSelectTreeTrigger extends Trigger { const items = []; this.tree.traverse(node => { const find = Func.getSearchResult( - self.tree.isRoot(node) - ? [] - : concat( - [node.text], - o.allowSearchValue ? [node.value] : [] - ), + self.tree.isRoot(node) ? [] : concat([node.text], o.allowSearchValue ? [node.value] : []), keyword ); if (find.find.length > 0 || find.match.length > 0) { diff --git a/src/widget/multilayersingletree/multilayersingletree.combo.js b/src/widget/multilayersingletree/multilayersingletree.combo.js index 058939d7d..ea0695257 100644 --- a/src/widget/multilayersingletree/multilayersingletree.combo.js +++ b/src/widget/multilayersingletree/multilayersingletree.combo.js @@ -1,14 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - isKey, - toPix, - AbsoluteLayout, - nextTick, - isArray -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, isKey, toPix, AbsoluteLayout, nextTick, isArray } from "@/core"; import { SingleTreeTrigger } from "../singletree/singletree.trigger"; import { MultiLayerSingleTreePopup } from "./multilayersingletree.popup"; import { Combo } from "@/base"; @@ -47,9 +37,7 @@ export class MultiLayerSingleTreeCombo extends Widget { o = this.options; const cls = - (o.simple - ? "bi-border-bottom bi-focus-shadow " - : "bi-border bi-border-radius bi-focus-shadow ") + + (o.simple ? "bi-border-bottom bi-focus-shadow " : "bi-border bi-border-radius bi-focus-shadow ") + (isKey(o.status) ? `status-${o.status}` : ""); const baseConfig = this._getBaseConfig(); @@ -121,8 +109,7 @@ export class MultiLayerSingleTreeCombo extends Widget { itemsCreator: o.itemsCreator, items: o.items, ref(_ref) { - self.trigger && - self.trigger.getSearcher().setAdapter(_ref); + self.trigger && self.trigger.getSearcher().setAdapter(_ref); }, listeners: [ { @@ -130,9 +117,7 @@ export class MultiLayerSingleTreeCombo extends Widget { action() { self.setValue(this.getValue()); self.combo.hideView(); - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_CHANGE - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_CHANGE); }, } ], @@ -153,9 +138,7 @@ export class MultiLayerSingleTreeCombo extends Widget { { eventName: Combo.EVENT_BEFORE_POPUPVIEW, action() { - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_BEFORE_POPUPVIEW - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_BEFORE_POPUPVIEW); }, } ], @@ -193,41 +176,31 @@ export class MultiLayerSingleTreeCombo extends Widget { action() { self.setValue(this.getValue()); self.combo.hideView(); - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_CHANGE - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_CHANGE); }, }, { eventName: MultiLayerSingleTreeTrigger.EVENT_FOCUS, action() { - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_FOCUS - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_FOCUS); }, }, { eventName: MultiLayerSingleTreeTrigger.EVENT_BLUR, action() { - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_BLUR - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_BLUR); }, }, { eventName: MultiLayerSingleTreeTrigger.EVENT_SEARCHING, action() { - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_SEARCHING - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_SEARCHING); }, }, { eventName: MultiLayerSingleTreeTrigger.EVENT_STOP, action() { - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_STOP - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_STOP); }, }, { @@ -236,9 +209,7 @@ export class MultiLayerSingleTreeCombo extends Widget { const value = self.trigger.getSearcher().getKeyword(); self.combo.setValue([value]); self.combo.hideView(); - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_CHANGE - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_CHANGE); }, } ], @@ -250,9 +221,8 @@ export class MultiLayerSingleTreeCombo extends Widget { // 通过container参数将popup放置于popover之外解决此问题, 其他下拉控件由于元素少或者有分页,所以 // 卡顿不明显, 先在此做尝试, 并在FineUI特殊处理待解决文档中标记跟踪 return o.container && - self.trigger.getSearcher().isSearching() && - self.trigger.getSearcher().getView().element.find(e.target) - .length > 0 + self.trigger.getSearcher().isSearching() && + self.trigger.getSearcher().getView().element.find(e.target).length > 0 ? false : self.triggerBtn?.element.find(e.target).length === 0; }, @@ -266,9 +236,7 @@ export class MultiLayerSingleTreeCombo extends Widget { { eventName: Combo.EVENT_BEFORE_POPUPVIEW, action() { - self.fireEvent( - MultiLayerSingleTreeCombo.EVENT_BEFORE_POPUPVIEW - ); + self.fireEvent(MultiLayerSingleTreeCombo.EVENT_BEFORE_POPUPVIEW); }, } ], @@ -303,9 +271,7 @@ export class MultiLayerSingleTreeCombo extends Widget { } getSearcher() { - return this.trigger - ? this.trigger.getSearcher() - : this.textTrigger.getTextor(); + return this.trigger ? this.trigger.getSearcher() : this.textTrigger.getTextor(); } setValue(v) { @@ -326,9 +292,7 @@ export class MultiLayerSingleTreeCombo extends Widget { } setTipType(v) { - this.trigger - ? this.trigger.setTipType(v) - : this.textTrigger.setTipType(v); + this.trigger ? this.trigger.setTipType(v) : this.textTrigger.setTipType(v); } populate(items) { diff --git a/src/widget/multilayersingletree/multilayersingletree.insert.search.pane.js b/src/widget/multilayersingletree/multilayersingletree.insert.search.pane.js index eb7a6d2a3..e00b66ea7 100644 --- a/src/widget/multilayersingletree/multilayersingletree.insert.search.pane.js +++ b/src/widget/multilayersingletree/multilayersingletree.insert.search.pane.js @@ -59,9 +59,7 @@ export class MultiLayerSingleTreeInsertSearchPane extends Widget { { eventName: MultiLayerSingleLevelTree.EVENT_CHANGE, action() { - self.fireEvent( - MultiLayerSingleTreeInsertSearchPane.EVENT_CHANGE - ); + self.fireEvent(MultiLayerSingleTreeInsertSearchPane.EVENT_CHANGE); }, } ], @@ -84,10 +82,7 @@ export class MultiLayerSingleTreeInsertSearchPane extends Widget { self.addNotMatchTip = _ref; }, handler() { - self.fireEvent( - MultiLayerSingleTreeInsertSearchPane.EVENT_ADD_ITEM, - o.keywordGetter() - ); + self.fireEvent(MultiLayerSingleTreeInsertSearchPane.EVENT_ADD_ITEM, o.keywordGetter()); }, }, this.tree @@ -98,10 +93,7 @@ export class MultiLayerSingleTreeInsertSearchPane extends Widget { setKeyword(keyword) { const showTip = isEmptyArray(this.tree.getAllLeaves()); this.addNotMatchTip.setVisible(showTip); - showTip && - this.addNotMatchTip.setText( - i18nText("BI-Basic_Click_To_Add_Text", keyword) - ); + showTip && this.addNotMatchTip.setText(i18nText("BI-Basic_Click_To_Add_Text", keyword)); } getValue() { diff --git a/src/widget/multilayersingletree/multilayersingletree.leveltree.js b/src/widget/multilayersingletree/multilayersingletree.leveltree.js index 06213988c..0553a3521 100644 --- a/src/widget/multilayersingletree/multilayersingletree.leveltree.js +++ b/src/widget/multilayersingletree/multilayersingletree.leveltree.js @@ -66,11 +66,7 @@ export class MultiLayerSingleLevelTree extends Pane { } node.keyword = node.keyword || keyword; extend.pNode = pNode; - if ( - node.isParent === true || - node.parent === true || - isNotEmptyArray(node.children) - ) { + if (node.isParent === true || node.parent === true || isNotEmptyArray(node.children)) { extend.type = BasicTreeNode.xtype; extend.selectable = false; defaults(node, extend); @@ -112,10 +108,10 @@ export class MultiLayerSingleLevelTree extends Pane { value: o.value, itemsCreator(op, callback) { op.times === 1 && - !op.node && - nextTick(() => { - self.loading(); - }); + !op.node && + nextTick(() => { + self.loading(); + }); o.itemsCreator(op, ob => { hasNext = ob.hasNext; op.times === 1 && !op.node && self._populate(ob.items); @@ -128,10 +124,10 @@ export class MultiLayerSingleLevelTree extends Pane { ); self.setValue(self.storeValue); op.times === 1 && - !op.node && - nextTick(() => { - self.loaded(); - }); + !op.node && + nextTick(() => { + self.loaded(); + }); }); }, @@ -140,10 +136,7 @@ export class MultiLayerSingleLevelTree extends Pane { isDefaultInit: o.itemsCreator !== emptyFn, el: { type: ButtonTree.xtype, - chooseType: - o.chooseType === Selection.None - ? Selection.None - : Selection.Default, // 不使用buttontree内部getValue逻辑 + chooseType: o.chooseType === Selection.None ? Selection.None : Selection.Default, // 不使用buttontree内部getValue逻辑 behaviors: o.behaviors, layouts: [ { @@ -180,9 +173,7 @@ export class MultiLayerSingleLevelTree extends Pane { this._populate(nodes); isNull(nodes) ? this.tree.populate() - : this.tree.populate( - this._formatItems(Tree.transformToTreeFormat(nodes), 0) - ); + : this.tree.populate(this._formatItems(Tree.transformToTreeFormat(nodes), 0)); } setValue(v) { @@ -195,11 +186,7 @@ export class MultiLayerSingleLevelTree extends Pane { } getValue() { - return isArray(this.storeValue) - ? this.storeValue - : isNull(this.storeValue) - ? [] - : [this.storeValue]; + return isArray(this.storeValue) ? this.storeValue : isNull(this.storeValue) ? [] : [this.storeValue]; } getAllLeaves() { diff --git a/src/widget/multilayersingletree/multilayersingletree.popup.js b/src/widget/multilayersingletree/multilayersingletree.popup.js index 7e61cb184..760ad3743 100644 --- a/src/widget/multilayersingletree/multilayersingletree.popup.js +++ b/src/widget/multilayersingletree/multilayersingletree.popup.js @@ -1,14 +1,4 @@ -import { - shortcut, - Widget, - extend, - i18nText, - emptyFn, - createWidget, - Controller, - VerticalLayout, - isArray -} from "@/core"; +import { shortcut, Widget, extend, i18nText, emptyFn, createWidget, Controller, VerticalLayout, isArray } from "@/core"; import { MultiLayerSingleLevelTree } from "./multilayersingletree.leveltree"; @shortcut() diff --git a/src/widget/multilayersingletree/multilayersingletree.trigger.js b/src/widget/multilayersingletree/multilayersingletree.trigger.js index 0deeae1d5..51407adbd 100644 --- a/src/widget/multilayersingletree/multilayersingletree.trigger.js +++ b/src/widget/multilayersingletree/multilayersingletree.trigger.js @@ -75,9 +75,7 @@ export class MultiLayerSingleTreeTrigger extends Trigger { self.editor = this; }, defaultText: o.defaultText, - text: isKey(o.value) - ? this._digest(o.value) - : o.text, + text: isKey(o.value) ? this._digest(o.value) : o.text, value: o.value, height: o.height, tipText: "", @@ -86,25 +84,19 @@ export class MultiLayerSingleTreeTrigger extends Trigger { { eventName: StateEditor.EVENT_FOCUS, action() { - self.fireEvent( - MultiLayerSingleTreeTrigger.EVENT_FOCUS - ); + self.fireEvent(MultiLayerSingleTreeTrigger.EVENT_FOCUS); }, }, { eventName: StateEditor.EVENT_BLUR, action() { - self.fireEvent( - MultiLayerSingleTreeTrigger.EVENT_BLUR - ); + self.fireEvent(MultiLayerSingleTreeTrigger.EVENT_BLUR); }, }, { eventName: StateEditor.EVENT_CHANGE, action() { - self.fireEvent( - MultiLayerSingleTreeTrigger.EVENT_SEARCHING - ); + self.fireEvent(MultiLayerSingleTreeTrigger.EVENT_SEARCHING); }, } ], @@ -126,15 +118,10 @@ export class MultiLayerSingleTreeTrigger extends Trigger { cls: "bi-card", listeners: [ { - eventName: - MultiLayerSingleTreeInsertSearchPane.EVENT_ADD_ITEM, + eventName: MultiLayerSingleTreeInsertSearchPane.EVENT_ADD_ITEM, action() { - self.options.text = self - .getSearcher() - .getKeyword(); - self.fireEvent( - MultiLayerSingleTreeTrigger.EVENT_ADD_ITEM - ); + self.options.text = self.getSearcher().getKeyword(); + self.fireEvent(MultiLayerSingleTreeTrigger.EVENT_ADD_ITEM); }, } ], @@ -146,8 +133,7 @@ export class MultiLayerSingleTreeTrigger extends Trigger { const keyword = obj.keyword; if (o.itemsCreator === BI.emptyFn) { callback(self._getSearchItems(keyword)); - o.allowInsertValue && - self.popup.setKeyword(keyword); + o.allowInsertValue && self.popup.setKeyword(keyword); } else { callback(); } @@ -156,9 +142,7 @@ export class MultiLayerSingleTreeTrigger extends Trigger { { eventName: Searcher.EVENT_CHANGE, action() { - self.fireEvent( - MultiLayerSingleTreeTrigger.EVENT_CHANGE - ); + self.fireEvent(MultiLayerSingleTreeTrigger.EVENT_CHANGE); }, } ], @@ -184,12 +168,7 @@ export class MultiLayerSingleTreeTrigger extends Trigger { const items = []; this.tree.traverse(node => { const find = Func.getSearchResult( - self.tree.isRoot(node) - ? [] - : concat( - [node.text], - o.allowSearchValue ? [node.value] : [] - ), + self.tree.isRoot(node) ? [] : concat([node.text], o.allowSearchValue ? [node.value] : []), keyword ); if (find.find.length > 0 || find.match.length > 0) { diff --git a/src/widget/multiselect/check/multiselect.check.pane.js b/src/widget/multiselect/check/multiselect.check.pane.js index 6043caf71..6bcbc1c93 100644 --- a/src/widget/multiselect/check/multiselect.check.pane.js +++ b/src/widget/multiselect/check/multiselect.check.pane.js @@ -6,7 +6,8 @@ import { createWidget, map, i18nText, - VerticalAdaptLayout, VTapeLayout + VerticalAdaptLayout, + VTapeLayout } from "@/core"; import { TextButton, Label } from "@/base"; import { DisplaySelectedList } from "./multiselect.display"; diff --git a/src/widget/multiselect/check/multiselect.display.js b/src/widget/multiselect/check/multiselect.display.js index db52ee8b7..3254e4898 100644 --- a/src/widget/multiselect/check/multiselect.display.js +++ b/src/widget/multiselect/check/multiselect.display.js @@ -1,11 +1,4 @@ -import { - shortcut, - extend, - emptyFn, - createWidget, - VerticalLayout, - createItems -} from "@/core"; +import { shortcut, extend, emptyFn, createWidget, VerticalLayout, createItems } from "@/core"; import { Pane, ButtonGroup, Loader, IconTextItem } from "@/base"; import { ListPane } from "@/case"; @@ -51,7 +44,7 @@ export class DisplaySelectedList extends Pane { } ], }, - itemsCreator (options, callback) { + itemsCreator(options, callback) { if (options.times === 1) { cacheItems = []; } @@ -61,7 +54,7 @@ export class DisplaySelectedList extends Pane { cacheItems = cacheItems.slice(100); self.hasNext = cacheItems.length > 0; callback(self._createItems(renderedItems)); - + return; } @@ -70,15 +63,12 @@ export class DisplaySelectedList extends Pane { const firstItemsCount = 100 + (ob.items.length % 100); if (ob.items.length > 100) { cacheItems = ob.items.slice(firstItemsCount); - self.hasNext = - firstItemsCount !== ob.items.length; + self.hasNext = firstItemsCount !== ob.items.length; } - callback( - self._createItems(ob.items.slice(0, firstItemsCount)) - ); + callback(self._createItems(ob.items.slice(0, firstItemsCount))); }); }, - hasNext () { + hasNext() { return self.hasNext; }, }); diff --git a/src/widget/multiselect/loader.js b/src/widget/multiselect/loader.js index 98b61d890..c63ee1c77 100644 --- a/src/widget/multiselect/loader.js +++ b/src/widget/multiselect/loader.js @@ -1,3 +1,4 @@ +import { LoadingBar, ButtonGroup, Loader } from "@/base"; import { shortcut, Widget, @@ -17,7 +18,6 @@ import { isArray, each } from "@/core"; -import { ButtonGroup, Loader } from "@/base"; @shortcut() export class MultiSelectInnerLoader extends Widget { @@ -103,21 +103,18 @@ export class MultiSelectInnerLoader extends Widget { ], value: o.value, }); - this.button_group.on( - Controller.EVENT_CHANGE, - function (type, value, obj) { - if (type === Events.CLICK) { - const node = self.cachGroup.getNodeByValue(value); - if (node) { - node.setSelected(obj.isSelected()); - } - } - self.fireEvent(Controller.EVENT_CHANGE, arguments); - if (type === Events.CLICK) { - self.fireEvent(Loader.EVENT_CHANGE, obj); + this.button_group.on(Controller.EVENT_CHANGE, function (type, value, obj) { + if (type === Events.CLICK) { + const node = self.cachGroup.getNodeByValue(value); + if (node) { + node.setSelected(obj.isSelected()); } } - ); + self.fireEvent(Controller.EVENT_CHANGE, arguments); + if (type === Events.CLICK) { + self.fireEvent(Loader.EVENT_CHANGE, obj); + } + }); const renderEngine = Widget._renderEngine; Widget.registerRenderEngine(BI.Element.renderEngine); @@ -140,7 +137,7 @@ export class MultiSelectInnerLoader extends Widget { this.next = createWidget( extend( { - type: "bi.loading_bar", + type: LoadingBar.xtype, }, o.next ) @@ -159,12 +156,12 @@ export class MultiSelectInnerLoader extends Widget { }); o.isDefaultInit && - isEmpty(o.items) && - nextTick( - bind(function () { - o.isDefaultInit && isEmpty(o.items) && this._populate(); - }, this) - ); + isEmpty(o.items) && + nextTick( + bind(function () { + o.isDefaultInit && isEmpty(o.items) && this._populate(); + }, this) + ); } hasNext() { @@ -218,10 +215,7 @@ export class MultiSelectInnerLoader extends Widget { return false; } - this.options.items = (items || []).slice( - 0, - 100 + ((items || []).length % 100) - ); + this.options.items = (items || []).slice(0, 100 + ((items || []).length % 100)); this.times = 1; this.count = 0; this.count += items.length; @@ -247,11 +241,7 @@ export class MultiSelectInnerLoader extends Widget { Widget.registerRenderEngine(BI.Element.renderEngine); this.cachGroup.populate.call(this.cachGroup, items, keyword); Widget.registerRenderEngine(renderEngine); - this.button_group.populate.call( - this.button_group, - items.slice(0, firstItemsCount), - keyword - ); + this.button_group.populate.call(this.button_group, items.slice(0, firstItemsCount), keyword); } } diff --git a/src/widget/multiselect/multiselect.combo.js b/src/widget/multiselect/multiselect.combo.js index a9efd6a3b..7fded29b9 100644 --- a/src/widget/multiselect/multiselect.combo.js +++ b/src/widget/multiselect/multiselect.combo.js @@ -1,3 +1,4 @@ +import { MultiSelectPopupView } from "./multiselect.popup.view"; import { shortcut, extend, @@ -23,12 +24,11 @@ import { values, filter, contains, - isNull + isNull, } from "@/core"; import { Single, Combo } from "@/base"; import { TriggerIconButton } from "@/case"; import { MultiSelectTrigger } from "./multiselect.trigger"; -import { MultiSelectPopupView } from "./multiselect.popup.view"; import { MultiSelectCheckSelectedSwitcher } from "./trigger/switcher.checkselected"; @shortcut() @@ -125,28 +125,25 @@ export class MultiSelectCombo extends Single { self._setStartValue(""); self.fireEvent(MultiSelectCombo.EVENT_STOP); }); - this.trigger.on( - MultiSelectTrigger.EVENT_SEARCHING, - keywords => { - const lastKeyword = last(keywords); - keywords = initial(keywords || []); - if (keywords.length > 0) { - self._joinKeywords(keywords, () => { - if (BI.endWith(lastKeyword, BI.BlankSplitChar)) { - self.combo.setValue(self.storeValue); - assertShowValue(); - self.combo.populate(); - self._setStartValue(""); - } else { - self.combo.setValue(self.storeValue); - assertShowValue(); - } - self._dataChange = true; - }); - } - self.fireEvent(MultiSelectCombo.EVENT_SEARCHING); + this.trigger.on(MultiSelectTrigger.EVENT_SEARCHING, (keywords) => { + const lastKeyword = last(keywords); + keywords = initial(keywords || []); + if (keywords.length > 0) { + self._joinKeywords(keywords, () => { + if (BI.endWith(lastKeyword, BI.BlankSplitChar)) { + self.combo.setValue(self.storeValue); + assertShowValue(); + self.combo.populate(); + self._setStartValue(""); + } else { + self.combo.setValue(self.storeValue); + assertShowValue(); + } + self._dataChange = true; + }); } - ); + self.fireEvent(MultiSelectCombo.EVENT_SEARCHING); + }); this.trigger.on(MultiSelectTrigger.EVENT_CHANGE, function (value, obj) { if (obj instanceof BI.MultiSelectBar) { @@ -162,14 +159,11 @@ export class MultiSelectCombo extends Single { } self._dataChange = true; }); - this.trigger.on( - MultiSelectTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW, - () => { - // counter的值随点击项的改变而改变, 点击counter的时候不需要setValue(counter会请求刷新计数) - // 只需要更新查看面板的selectedValue用以请求已选数据 - self.numberCounter.updateSelectedValue(self.storeValue); - } - ); + this.trigger.on(MultiSelectTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW, () => { + // counter的值随点击项的改变而改变, 点击counter的时候不需要setValue(counter会请求刷新计数) + // 只需要更新查看面板的selectedValue用以请求已选数据 + self.numberCounter.updateSelectedValue(self.storeValue); + }); this.trigger.on(MultiSelectTrigger.EVENT_COUNTER_CLICK, () => { if (!self.combo.isViewVisible()) { self.combo.showView(); @@ -184,7 +178,7 @@ export class MultiSelectCombo extends Single { el: this.trigger, adjustLength: 1, popup: { - type: "bi.multi_select_popup_view", + type: MultiSelectPopupView.xtype, ref() { self.popup = this; self.trigger.setAdapter(this); @@ -215,7 +209,7 @@ export class MultiSelectCombo extends Single { self.setValue(); self._defaultState(); }, - } + }, ], itemsCreator: o.itemsCreator, itemHeight: o.itemHeight, @@ -256,8 +250,7 @@ export class MultiSelectCombo extends Single { if (self.requesting === true) { self.wants2Quit = true; } else { - self._dataChange && - self.fireEvent(MultiSelectCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(MultiSelectCombo.EVENT_CONFIRM); } }); @@ -284,41 +277,30 @@ export class MultiSelectCombo extends Single { itemsCreator: bind(this._itemsCreator4Trigger, this), value: this.storeValue, }); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, - () => { - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } - } - ); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, - function () { - this.updateSelectedValue(self.storeValue); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, () => { + if (!self.combo.isViewVisible()) { + self.combo.showView(); } - ); + }); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, function () { + this.updateSelectedValue(self.storeValue); + }); - this.numberCounter.on(Events.VIEW, b => { + this.numberCounter.on(Events.VIEW, (b) => { nextTick(() => { // 自动调整宽度 - self.trigger.refreshPlaceHolderWidth( - b === true ? self.numberCounter.element.outerWidth() + 8 : 0 - ); + self.trigger.refreshPlaceHolderWidth(b === true ? self.numberCounter.element.outerWidth() + 8 : 0); }); }); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW, - () => { - nextTick(() => { - // 收起时自动调整宽度 - self.trigger.refreshPlaceHolderWidth(0); - }); - } - ); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW, () => { + nextTick(() => { + // 收起时自动调整宽度 + self.trigger.refreshPlaceHolderWidth(0); + }); + }); - this.trigger.element.click(e => { + this.trigger.element.click((e) => { if (self.trigger.element.find(e.target).length > 0) { self.numberCounter.hideView(); } @@ -349,7 +331,7 @@ export class MultiSelectCombo extends Single { right: o.height, top: 0, height: o.height, - } + }, ], }); } @@ -396,7 +378,7 @@ export class MultiSelectCombo extends Single { type: MultiSelectCombo.REQ_GET_ALL_DATA, keywords, }, - ob => { + (ob) => { const values = map(ob.items, "value"); digest(values); } @@ -436,8 +418,7 @@ export class MultiSelectCombo extends Single { const v = obj.value; if (isNotNull(tempMap[v])) { change = true; - self.storeValue.assist && - self.storeValue.assist.push(tempMap[v]); + self.storeValue.assist && self.storeValue.assist.push(tempMap[v]); delete tempMap[v]; } }); @@ -452,15 +433,14 @@ export class MultiSelectCombo extends Single { keywords: [this.trigger.getKey()], selectedValues: filter(this.storeValue.value, (_i, v) => !contains(res.value, v)), }, - ob => { + (ob) => { const items = map(ob.items, "value"); const selectedMap = self._makeMap(self.storeValue.value); const notSelectedMap = self._makeMap(res.value); const newItems = []; each(items, (i, item) => { if (isNotNull(selectedMap[items[i]])) { - self.storeValue.assist && - self.storeValue.assist.push(selectedMap[items[i]]); + self.storeValue.assist && self.storeValue.assist.push(selectedMap[items[i]]); delete selectedMap[items[i]]; } if (isNull(notSelectedMap[items[i]])) { @@ -481,8 +461,7 @@ export class MultiSelectCombo extends Single { function adjust() { if (self.wants2Quit === true) { - self._dataChange && - self.fireEvent(MultiSelectCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(MultiSelectCombo.EVENT_CONFIRM); self.wants2Quit = false; } self.requesting = false; @@ -506,8 +485,7 @@ export class MultiSelectCombo extends Single { each(res.assist, (i, v) => { if (isNotNull(map[v])) { change = true; - self.storeValue.assist && - self.storeValue.assist.push(map[v]); + self.storeValue.assist && self.storeValue.assist.push(map[v]); delete map[v]; } }); diff --git a/src/widget/multiselect/multiselect.combo.nobar.js b/src/widget/multiselect/multiselect.combo.nobar.js index 332858425..f1df798ad 100644 --- a/src/widget/multiselect/multiselect.combo.nobar.js +++ b/src/widget/multiselect/multiselect.combo.nobar.js @@ -23,7 +23,9 @@ import { values, filter, contains, - isNull, pushDistinct, Selection + isNull, + pushDistinct, + Selection } from "@/core"; import { Single, Combo } from "@/base"; import { MultiSelectBar, TriggerIconButton } from "@/case"; @@ -126,27 +128,24 @@ export class MultiSelectNoBarCombo extends Single { self.fireEvent(MultiSelectNoBarCombo.EVENT_STOP); }); - this.trigger.on( - MultiSelectTrigger.EVENT_SEARCHING, - keywords => { - const lastKeyword = last(keywords); - keywords = initial(keywords || []); - if (keywords.length > 0) { - self._joinKeywords(keywords, () => { - if (BI.endWith(lastKeyword, BI.BlankSplitChar)) { - self.combo.setValue(self.storeValue); - assertShowValue(); - self.combo.populate(); - self._setStartValue(""); - } else { - self.combo.setValue(self.storeValue); - assertShowValue(); - } - self._dataChange = true; - }); - } + this.trigger.on(MultiSelectTrigger.EVENT_SEARCHING, keywords => { + const lastKeyword = last(keywords); + keywords = initial(keywords || []); + if (keywords.length > 0) { + self._joinKeywords(keywords, () => { + if (BI.endWith(lastKeyword, BI.BlankSplitChar)) { + self.combo.setValue(self.storeValue); + assertShowValue(); + self.combo.populate(); + self._setStartValue(""); + } else { + self.combo.setValue(self.storeValue); + assertShowValue(); + } + self._dataChange = true; + }); } - ); + }); this.trigger.on(MultiSelectTrigger.EVENT_CHANGE, function (value, obj) { if (obj instanceof MultiSelectBar) { @@ -161,14 +160,11 @@ export class MultiSelectNoBarCombo extends Single { self._dataChange = true; self.fireEvent(MultiSelectNoBarCombo.EVENT_CLICK_ITEM); }); - this.trigger.on( - MultiSelectTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW, - () => { - // counter的值随点击项的改变而改变, 点击counter的时候不需要setValue(counter会请求刷新计数) - // 只需要更新查看面板的selectedValue用以请求已选数据 - self.numberCounter.updateSelectedValue(self.storeValue); - } - ); + this.trigger.on(MultiSelectTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW, () => { + // counter的值随点击项的改变而改变, 点击counter的时候不需要setValue(counter会请求刷新计数) + // 只需要更新查看面板的selectedValue用以请求已选数据 + self.numberCounter.updateSelectedValue(self.storeValue); + }); this.trigger.on(MultiSelectTrigger.EVENT_COUNTER_CLICK, () => { if (!self.combo.isViewVisible()) { self.combo.showView(); @@ -198,9 +194,7 @@ export class MultiSelectNoBarCombo extends Single { self._adjust(() => { assertShowValue(); }); - self.fireEvent( - MultiSelectNoBarCombo.EVENT_CLICK_ITEM - ); + self.fireEvent(MultiSelectNoBarCombo.EVENT_CLICK_ITEM); }, }, { @@ -260,8 +254,7 @@ export class MultiSelectNoBarCombo extends Single { if (self.requesting === true) { self.wants2Quit = true; } else { - self._dataChange && - self.fireEvent(MultiSelectNoBarCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(MultiSelectNoBarCombo.EVENT_CONFIRM); } }); @@ -291,39 +284,28 @@ export class MultiSelectNoBarCombo extends Single { value: o.value, }, }); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, - () => { - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } - } - ); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, - function () { - this.updateSelectedValue(self.storeValue); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, () => { + if (!self.combo.isViewVisible()) { + self.combo.showView(); } - ); + }); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, function () { + this.updateSelectedValue(self.storeValue); + }); this.numberCounter.on(Events.VIEW, b => { nextTick(() => { // 自动调整宽度 - self.trigger.refreshPlaceHolderWidth( - b === true ? self.numberCounter.element.outerWidth() + 8 : 0 - ); + self.trigger.refreshPlaceHolderWidth(b === true ? self.numberCounter.element.outerWidth() + 8 : 0); }); }); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW, - () => { - nextTick(() => { - // 收起时自动调整宽度 - self.trigger.refreshPlaceHolderWidth(0); - }); - } - ); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW, () => { + nextTick(() => { + // 收起时自动调整宽度 + self.trigger.refreshPlaceHolderWidth(0); + }); + }); this.trigger.element.click(e => { if (self.trigger.element.find(e.target).length > 0) { @@ -466,8 +448,7 @@ export class MultiSelectNoBarCombo extends Single { const v = obj.value; if (isNotNull(tempMap[v])) { change = true; - self.storeValue.assist && - self.storeValue.assist.push(tempMap[v]); + self.storeValue.assist && self.storeValue.assist.push(tempMap[v]); delete tempMap[v]; } }); @@ -489,8 +470,7 @@ export class MultiSelectNoBarCombo extends Single { const newItems = []; each(items, (i, item) => { if (isNotNull(selectedMap[items[i]])) { - self.storeValue.assist && - self.storeValue.assist.push(selectedMap[items[i]]); + self.storeValue.assist && self.storeValue.assist.push(selectedMap[items[i]]); delete selectedMap[items[i]]; } if (isNull(notSelectedMap[items[i]])) { @@ -511,8 +491,7 @@ export class MultiSelectNoBarCombo extends Single { function adjust() { if (self.wants2Quit === true) { - self._dataChange && - self.fireEvent(MultiSelectNoBarCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(MultiSelectNoBarCombo.EVENT_CONFIRM); self.wants2Quit = false; } self.requesting = false; @@ -536,8 +515,7 @@ export class MultiSelectNoBarCombo extends Single { each(res.assist, (i, v) => { if (isNotNull(map[v])) { change = true; - self.storeValue.assist && - self.storeValue.assist.push(map[v]); + self.storeValue.assist && self.storeValue.assist.push(map[v]); delete map[v]; } }); diff --git a/src/widget/multiselect/multiselect.insert.combo.js b/src/widget/multiselect/multiselect.insert.combo.js index 4d9bb5b3c..fe1599980 100644 --- a/src/widget/multiselect/multiselect.insert.combo.js +++ b/src/widget/multiselect/multiselect.insert.combo.js @@ -1,3 +1,5 @@ +import { MultiSelectInsertTrigger } from "./multiselect.insert.trigger"; +import { MultiSelectPopupView } from "./multiselect.popup.view"; import { shortcut, extend, @@ -24,11 +26,12 @@ import { values, filter, contains, - isNull, endWith, pushDistinct, Selection + isNull, + endWith, + pushDistinct, + Selection } from "@/core"; import { Single, Combo, Msg } from "@/base"; -import { MultiSelectInsertTrigger } from "./multiselect.insert.trigger"; -import { MultiSelectPopupView } from "./multiselect.popup.view"; import { MultiSelectBar, TriggerIconButton } from "@/case"; import { MultiSelectCheckSelectedSwitcher } from "./trigger/switcher.checkselected"; @@ -88,7 +91,7 @@ export class MultiSelectInsertCombo extends Single { this.requesting = false; this.trigger = createWidget({ - type: "bi.multi_select_insert_trigger", + type: MultiSelectInsertTrigger.xtype, allowEdit: o.allowEdit, height: toPix(o.height, o.simple ? 1 : 2), text: o.text, @@ -127,72 +130,54 @@ export class MultiSelectInsertCombo extends Single { }); this.trigger.on(MultiSelectInsertTrigger.EVENT_PAUSE, function () { self._addItem(assertShowValue, true); - self.fireEvent( - MultiSelectInsertCombo.EVENT_ADD_ITEM, - this.getSearcher().getKeyword() - ); + self.fireEvent(MultiSelectInsertCombo.EVENT_ADD_ITEM, this.getSearcher().getKeyword()); }); - this.trigger.on( - MultiSelectInsertTrigger.EVENT_SEARCHING, - function (keywords) { - const lastKeyword = last(keywords); - keywords = initial(keywords || []); - if (keywords.length > 0) { - self._joinKeywords(keywords, () => { - if (endWith(lastKeyword, BI.BlankSplitChar)) { - self.combo.setValue(self.storeValue); - assertShowValue(); - self.combo.populate(); - self._setStartValue(""); - } else { - self.combo.setValue(self.storeValue); - assertShowValue(); - } - self._dataChange = true; - }); - this.getSearcher().getKeywordsLength() > 2000 && - Msg.alert( - i18nText("BI-Basic_Prompt"), - i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand") - ); - } - self.fireEvent(MultiSelectInsertCombo.EVENT_SEARCHING); - } - ); - - this.trigger.on( - MultiSelectInsertTrigger.EVENT_CHANGE, - function (value, obj) { - if (obj instanceof MultiSelectBar) { - self._joinAll(this.getValue(), () => { + this.trigger.on(MultiSelectInsertTrigger.EVENT_SEARCHING, function (keywords) { + const lastKeyword = last(keywords); + keywords = initial(keywords || []); + if (keywords.length > 0) { + self._joinKeywords(keywords, () => { + if (endWith(lastKeyword, BI.BlankSplitChar)) { + self.combo.setValue(self.storeValue); assertShowValue(); - self.fireEvent(MultiSelectInsertCombo.EVENT_CLICK_ITEM); - }); - } else { - self._join(this.getValue(), () => { + self.combo.populate(); + self._setStartValue(""); + } else { + self.combo.setValue(self.storeValue); assertShowValue(); - self.fireEvent(MultiSelectInsertCombo.EVENT_CLICK_ITEM); - }); - } - self._dataChange = true; + } + self._dataChange = true; + }); + this.getSearcher().getKeywordsLength() > 2000 && + Msg.alert(i18nText("BI-Basic_Prompt"), i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand")); } - ); - this.trigger.on( - MultiSelectInsertTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW, - () => { - // counter的值随点击项的改变而改变, 点击counter的时候不需要setValue(counter会请求刷新计数) - // 只需要更新查看面板的selectedValue用以请求已选数据 - self.numberCounter.updateSelectedValue(self.storeValue); + self.fireEvent(MultiSelectInsertCombo.EVENT_SEARCHING); + }); + + this.trigger.on(MultiSelectInsertTrigger.EVENT_CHANGE, function (value, obj) { + if (obj instanceof MultiSelectBar) { + self._joinAll(this.getValue(), () => { + assertShowValue(); + self.fireEvent(MultiSelectInsertCombo.EVENT_CLICK_ITEM); + }); + } else { + self._join(this.getValue(), () => { + assertShowValue(); + self.fireEvent(MultiSelectInsertCombo.EVENT_CLICK_ITEM); + }); } - ); - this.trigger.on( - MultiSelectInsertTrigger.EVENT_COUNTER_CLICK, - () => { - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } + self._dataChange = true; + }); + this.trigger.on(MultiSelectInsertTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW, () => { + // counter的值随点击项的改变而改变, 点击counter的时候不需要setValue(counter会请求刷新计数) + // 只需要更新查看面板的selectedValue用以请求已选数据 + self.numberCounter.updateSelectedValue(self.storeValue); + }); + this.trigger.on(MultiSelectInsertTrigger.EVENT_COUNTER_CLICK, () => { + if (!self.combo.isViewVisible()) { + self.combo.showView(); } - ); + }); this.combo = createWidget({ type: Combo.xtype, @@ -202,7 +187,7 @@ export class MultiSelectInsertCombo extends Single { adjustLength: 1, container: o.container, popup: { - type: "bi.multi_select_popup_view", + type: MultiSelectPopupView.xtype, ref() { self.popup = this; self.trigger.setAdapter(this); @@ -217,9 +202,7 @@ export class MultiSelectInsertCombo extends Single { self._adjust(() => { assertShowValue(); }); - self.fireEvent( - MultiSelectInsertCombo.EVENT_CLICK_ITEM - ); + self.fireEvent(MultiSelectInsertCombo.EVENT_CLICK_ITEM); }, }, { @@ -276,8 +259,7 @@ export class MultiSelectInsertCombo extends Single { if (self.requesting === true) { self.wants2Quit = true; } else { - self._dataChange && - self.fireEvent(MultiSelectInsertCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(MultiSelectInsertCombo.EVENT_CONFIRM); } }); @@ -304,39 +286,28 @@ export class MultiSelectInsertCombo extends Single { itemsCreator: bind(this._itemsCreator4Trigger, this), value: o.value, }); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, - () => { - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } - } - ); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, - function () { - this.updateSelectedValue(self.storeValue); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, () => { + if (!self.combo.isViewVisible()) { + self.combo.showView(); } - ); + }); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, function () { + this.updateSelectedValue(self.storeValue); + }); this.numberCounter.on(Events.VIEW, b => { nextTick(() => { // 自动调整宽度 - self.trigger.refreshPlaceHolderWidth( - b === true ? self.numberCounter.element.outerWidth() + 8 : 0 - ); + self.trigger.refreshPlaceHolderWidth(b === true ? self.numberCounter.element.outerWidth() + 8 : 0); }); }); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW, - () => { - nextTick(() => { - // 收起时自动调整宽度 - self.trigger.refreshPlaceHolderWidth(0); - }); - } - ); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW, () => { + nextTick(() => { + // 收起时自动调整宽度 + self.trigger.refreshPlaceHolderWidth(0); + }); + }); this.trigger.element.click(e => { if (self.trigger.element.find(e.target).length > 0) { @@ -467,8 +438,7 @@ export class MultiSelectInsertCombo extends Single { const v = obj.value; if (isNotNull(tempMap[v])) { change = true; - self.storeValue.assist && - self.storeValue.assist.push(tempMap[v]); + self.storeValue.assist && self.storeValue.assist.push(tempMap[v]); delete tempMap[v]; } }); @@ -490,8 +460,7 @@ export class MultiSelectInsertCombo extends Single { const newItems = []; each(items, (i, item) => { if (isNotNull(selectedMap[items[i]])) { - self.storeValue.assist && - self.storeValue.assist.push(selectedMap[items[i]]); + self.storeValue.assist && self.storeValue.assist.push(selectedMap[items[i]]); delete selectedMap[items[i]]; } if (isNull(notSelectedMap[items[i]])) { @@ -512,8 +481,7 @@ export class MultiSelectInsertCombo extends Single { function adjust() { if (self.wants2Quit === true) { - self._dataChange && - self.fireEvent(MultiSelectInsertCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(MultiSelectInsertCombo.EVENT_CONFIRM); self.wants2Quit = false; } self.requesting = false; @@ -538,8 +506,7 @@ export class MultiSelectInsertCombo extends Single { each(res.assist, (i, v) => { if (isNotNull(map[v])) { change = true; - self.storeValue.assist && - self.storeValue.assist.push(map[v]); + self.storeValue.assist && self.storeValue.assist.push(map[v]); delete map[v]; } }); diff --git a/src/widget/multiselect/multiselect.insert.combo.nobar.js b/src/widget/multiselect/multiselect.insert.combo.nobar.js index b6de5dd52..b3dca3bf5 100644 --- a/src/widget/multiselect/multiselect.insert.combo.nobar.js +++ b/src/widget/multiselect/multiselect.insert.combo.nobar.js @@ -24,7 +24,10 @@ import { values, filter, contains, - isNull, endWith, pushDistinct, Selection + isNull, + endWith, + pushDistinct, + Selection } from "@/core"; import { Single, Combo, Msg } from "@/base"; import { MultiSelectInsertTrigger } from "./multiselect.insert.trigger"; @@ -116,69 +119,51 @@ export class MultiSelectInsertNoBarCombo extends Single { }); this.trigger.on(MultiSelectInsertTrigger.EVENT_PAUSE, function () { self._addItem(assertShowValue, true); - self.fireEvent( - MultiSelectInsertNoBarCombo.EVENT_ADD_ITEM, - this.getSearcher().getKeyword() - ); + self.fireEvent(MultiSelectInsertNoBarCombo.EVENT_ADD_ITEM, this.getSearcher().getKeyword()); }); - this.trigger.on( - MultiSelectInsertTrigger.EVENT_SEARCHING, - function (keywords) { - const lastKeyword = last(keywords); - keywords = initial(keywords || []); - if (keywords.length > 0) { - self._joinKeywords(keywords, () => { - if (endWith(lastKeyword, BI.BlankSplitChar)) { - self.combo.setValue(self.storeValue); - assertShowValue(); - self.combo.populate(); - self._setStartValue(""); - } else { - self.combo.setValue(self.storeValue); - assertShowValue(); - } - self._dataChange = true; - }); - this.getSearcher().getKeywordsLength() > 2000 && - Msg.alert( - i18nText("BI-Basic_Prompt"), - i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand") - ); - } - } - ); - - this.trigger.on( - MultiSelectInsertTrigger.EVENT_CHANGE, - function (value, obj) { - if (obj instanceof MultiSelectBar) { - self._joinAll(this.getValue(), () => { + this.trigger.on(MultiSelectInsertTrigger.EVENT_SEARCHING, function (keywords) { + const lastKeyword = last(keywords); + keywords = initial(keywords || []); + if (keywords.length > 0) { + self._joinKeywords(keywords, () => { + if (endWith(lastKeyword, BI.BlankSplitChar)) { + self.combo.setValue(self.storeValue); assertShowValue(); - }); - } else { - self._join(this.getValue(), () => { + self.combo.populate(); + self._setStartValue(""); + } else { + self.combo.setValue(self.storeValue); assertShowValue(); - }); - } - self._dataChange = true; + } + self._dataChange = true; + }); + this.getSearcher().getKeywordsLength() > 2000 && + Msg.alert(i18nText("BI-Basic_Prompt"), i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand")); } - ); - this.trigger.on( - MultiSelectInsertTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW, - () => { - // counter的值随点击项的改变而改变, 点击counter的时候不需要setValue(counter会请求刷新计数) - // 只需要更新查看面板的selectedValue用以请求已选数据 - self.numberCounter.updateSelectedValue(self.storeValue); + }); + + this.trigger.on(MultiSelectInsertTrigger.EVENT_CHANGE, function (value, obj) { + if (obj instanceof MultiSelectBar) { + self._joinAll(this.getValue(), () => { + assertShowValue(); + }); + } else { + self._join(this.getValue(), () => { + assertShowValue(); + }); } - ); - this.trigger.on( - MultiSelectInsertTrigger.EVENT_COUNTER_CLICK, - () => { - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } + self._dataChange = true; + }); + this.trigger.on(MultiSelectInsertTrigger.EVENT_BEFORE_COUNTER_POPUPVIEW, () => { + // counter的值随点击项的改变而改变, 点击counter的时候不需要setValue(counter会请求刷新计数) + // 只需要更新查看面板的selectedValue用以请求已选数据 + self.numberCounter.updateSelectedValue(self.storeValue); + }); + this.trigger.on(MultiSelectInsertTrigger.EVENT_COUNTER_CLICK, () => { + if (!self.combo.isViewVisible()) { + self.combo.showView(); } - ); + }); this.combo = createWidget({ type: Combo.xtype, @@ -261,8 +246,7 @@ export class MultiSelectInsertNoBarCombo extends Single { if (self.requesting === true) { self.wants2Quit = true; } else { - self._dataChange && - self.fireEvent(MultiSelectInsertNoBarCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(MultiSelectInsertNoBarCombo.EVENT_CONFIRM); } }); @@ -292,39 +276,28 @@ export class MultiSelectInsertNoBarCombo extends Single { value: o.value, }, }); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, - () => { - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } - } - ); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, - function () { - this.updateSelectedValue(self.storeValue); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, () => { + if (!self.combo.isViewVisible()) { + self.combo.showView(); } - ); + }); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, function () { + this.updateSelectedValue(self.storeValue); + }); this.numberCounter.on(Events.VIEW, b => { nextTick(() => { // 自动调整宽度 - self.trigger.refreshPlaceHolderWidth( - b === true ? self.numberCounter.element.outerWidth() + 8 : 0 - ); + self.trigger.refreshPlaceHolderWidth(b === true ? self.numberCounter.element.outerWidth() + 8 : 0); }); }); - this.numberCounter.on( - MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW, - () => { - nextTick(() => { - // 收起时自动调整宽度 - self.trigger.refreshPlaceHolderWidth(0); - }); - } - ); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW, () => { + nextTick(() => { + // 收起时自动调整宽度 + self.trigger.refreshPlaceHolderWidth(0); + }); + }); this.trigger.element.click(e => { if (self.trigger.element.find(e.target).length > 0) { @@ -455,8 +428,7 @@ export class MultiSelectInsertNoBarCombo extends Single { const v = obj.value; if (isNotNull(tempMap[v])) { change = true; - self.storeValue.assist && - self.storeValue.assist.push(tempMap[v]); + self.storeValue.assist && self.storeValue.assist.push(tempMap[v]); delete tempMap[v]; } }); @@ -478,8 +450,7 @@ export class MultiSelectInsertNoBarCombo extends Single { const newItems = []; each(items, (i, item) => { if (isNotNull(selectedMap[items[i]])) { - self.storeValue.assist && - self.storeValue.assist.push(selectedMap[items[i]]); + self.storeValue.assist && self.storeValue.assist.push(selectedMap[items[i]]); delete selectedMap[items[i]]; } if (isNull(notSelectedMap[items[i]])) { @@ -500,8 +471,7 @@ export class MultiSelectInsertNoBarCombo extends Single { function adjust() { if (self.wants2Quit === true) { - self._dataChange && - self.fireEvent(MultiSelectInsertNoBarCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(MultiSelectInsertNoBarCombo.EVENT_CONFIRM); self.wants2Quit = false; } self.requesting = false; @@ -525,8 +495,7 @@ export class MultiSelectInsertNoBarCombo extends Single { each(res.assist, (i, v) => { if (isNotNull(map[v])) { change = true; - self.storeValue.assist && - self.storeValue.assist.push(map[v]); + self.storeValue.assist && self.storeValue.assist.push(map[v]); delete map[v]; } }); diff --git a/src/widget/multiselect/multiselect.insert.trigger.js b/src/widget/multiselect/multiselect.insert.trigger.js index 9b5fd3761..b7be3abf6 100644 --- a/src/widget/multiselect/multiselect.insert.trigger.js +++ b/src/widget/multiselect/multiselect.insert.trigger.js @@ -1,12 +1,4 @@ -import { - shortcut, - extend, - emptyFn, - createWidget, - Layout, - HTapeLayout, - AbsoluteLayout -} from "@/core"; +import { shortcut, extend, emptyFn, createWidget, Layout, HTapeLayout, AbsoluteLayout } from "@/core"; import { Trigger, Text } from "@/base"; import { MultiSelectInsertSearcher } from "./trigger/searcher.multiselect.insert"; @@ -69,15 +61,9 @@ export class MultiSelectInsertTrigger extends Trigger { this.searcher.on(MultiSelectInsertSearcher.EVENT_PAUSE, () => { self.fireEvent(MultiSelectInsertTrigger.EVENT_PAUSE); }); - this.searcher.on( - MultiSelectInsertSearcher.EVENT_SEARCHING, - function () { - self.fireEvent( - MultiSelectInsertTrigger.EVENT_SEARCHING, - arguments - ); - } - ); + this.searcher.on(MultiSelectInsertSearcher.EVENT_SEARCHING, function () { + self.fireEvent(MultiSelectInsertTrigger.EVENT_SEARCHING, arguments); + }); this.searcher.on(MultiSelectInsertSearcher.EVENT_STOP, () => { self.fireEvent(MultiSelectInsertTrigger.EVENT_STOP); }); @@ -115,24 +101,24 @@ export class MultiSelectInsertTrigger extends Trigger { }); !o.allowEdit && - createWidget({ - type: AbsoluteLayout.xtype, - element: this, - items: [ - { - el: { - type: Text.xtype, - title() { - return self.searcher.getState(); + createWidget({ + type: AbsoluteLayout.xtype, + element: this, + items: [ + { + el: { + type: Text.xtype, + title() { + return self.searcher.getState(); + }, }, - }, - left: 0, - right: 24, - top: 0, - bottom: 0, - } - ], - }); + left: 0, + right: 24, + top: 0, + bottom: 0, + } + ], + }); } refreshPlaceHolderWidth(width) { diff --git a/src/widget/multiselect/multiselect.loader.js b/src/widget/multiselect/multiselect.loader.js index ed92dfc69..5d7cfe093 100644 --- a/src/widget/multiselect/multiselect.loader.js +++ b/src/widget/multiselect/multiselect.loader.js @@ -11,7 +11,10 @@ import { Controller, delay, isNotNull, - Selection, Direction, LogicFactory, pushDistinct + Selection, + Direction, + LogicFactory, + pushDistinct } from "@/core"; import { SelectList, MultiSelectBar, MultiSelectItem } from "@/case"; import { MultiSelectInnerLoader } from "./loader"; @@ -56,9 +59,7 @@ export class MultiSelectLoader extends Widget { toolbar: { type: MultiSelectBar.xtype, cls: "bi-list-item-active", - height: - this.options.itemHeight || - BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: this.options.itemHeight || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconWrapperWidth: 36, }, el: extend( @@ -74,13 +75,12 @@ export class MultiSelectLoader extends Widget { itemsCreator(op, callback) { const startValue = self._startValue; self.storeValue && - (op = extend(op || {}, { - selectedValues: - isKey(startValue) && - self.storeValue.type === Selection.Multi - ? self.storeValue.value.concat(startValue) - : self.storeValue.value, - })); + (op = extend(op || {}, { + selectedValues: + isKey(startValue) && self.storeValue.type === Selection.Multi + ? self.storeValue.value.concat(startValue) + : self.storeValue.value, + })); opts.itemsCreator(op, ob => { hasNext = ob.hasNext; let firstItems = []; @@ -92,16 +92,11 @@ export class MultiSelectLoader extends Widget { text: txt, value: v, title: txt, - selected: - self.storeValue.type === Selection.Multi, + selected: self.storeValue.type === Selection.Multi, }; }); - if ( - isKey(self._startValue) && - !contains(self.storeValue.value, self._startValue) - ) { - const txt = - opts.valueFormatter(startValue) || startValue; + if (isKey(self._startValue) && !contains(self.storeValue.value, self._startValue)) { + const txt = opts.valueFormatter(startValue) || startValue; json.unshift({ text: txt, value: startValue, @@ -111,18 +106,12 @@ export class MultiSelectLoader extends Widget { } firstItems = self._createItems(json); } - callback( - firstItems.concat(self._createItems(ob.items)), - ob.keyword || "" - ); + callback(firstItems.concat(self._createItems(ob.items)), ob.keyword || ""); if (op.times === 1 && self.storeValue) { isKey(startValue) && - (self.storeValue.type === Selection.All - ? remove(self.storeValue.value, startValue) - : pushDistinct( - self.storeValue.value, - startValue - )); + (self.storeValue.type === Selection.All + ? remove(self.storeValue.value, startValue) + : pushDistinct(self.storeValue.value, startValue)); self.setValue(self.storeValue); } op.times === 1 && self._scrollToTop(); @@ -140,9 +129,7 @@ export class MultiSelectLoader extends Widget { element: this, }, LogicFactory.createLogic( - LogicFactory.createLogicTypeByDirection( - Direction.Top - ), + LogicFactory.createLogicTypeByDirection(Direction.Top), extend( { scrolly: true, @@ -150,10 +137,7 @@ export class MultiSelectLoader extends Widget { }, opts.logic, { - items: LogicFactory.createLogicItemsByDirection( - Direction.Top, - this.button_group - ), + items: LogicFactory.createLogicItemsByDirection(Direction.Top, this.button_group), } ) ) @@ -176,9 +160,7 @@ export class MultiSelectLoader extends Widget { type: MultiSelectItem.xtype, logic: this.options.logic, cls: "bi-list-item-active", - height: - this.options.itemHeight || - BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: this.options.itemHeight || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, selected: allSelected, iconWrapperWidth: 36, ...item, diff --git a/src/widget/multiselect/multiselect.loader.nobar.js b/src/widget/multiselect/multiselect.loader.nobar.js index 55a30caa6..bf7030331 100644 --- a/src/widget/multiselect/multiselect.loader.nobar.js +++ b/src/widget/multiselect/multiselect.loader.nobar.js @@ -81,44 +81,28 @@ export class MultiSelectNoBarLoader extends Widget { itemsCreator(op, callback) { const startValue = self._startValue; self.storeValue && - (op = extend(op || {}, { - selectedValues: - isKey(startValue) && - self.storeValue.type === Selection.Multi - ? self.storeValue.value.concat( - startValue - ) - : self.storeValue.value, - })); + (op = extend(op || {}, { + selectedValues: + isKey(startValue) && self.storeValue.type === Selection.Multi + ? self.storeValue.value.concat(startValue) + : self.storeValue.value, + })); opts.itemsCreator(op, ob => { hasNext = ob.hasNext; let firstItems = []; if (op.times === 1 && self.storeValue) { - const json = map( - self.storeValue.value, - (i, v) => { - const txt = opts.valueFormatter(v) || v; - - return { - text: txt, - value: v, - title: txt, - selected: - self.storeValue.type === - Selection.Multi, - }; - } - ); - if ( - isKey(self._startValue) && - !contains( - self.storeValue.value, - self._startValue - ) - ) { - const txt = - opts.valueFormatter(startValue) || - startValue; + const json = map(self.storeValue.value, (i, v) => { + const txt = opts.valueFormatter(v) || v; + + return { + text: txt, + value: v, + title: txt, + selected: self.storeValue.type === Selection.Multi, + }; + }); + if (isKey(self._startValue) && !contains(self.storeValue.value, self._startValue)) { + const txt = opts.valueFormatter(startValue) || startValue; json.unshift({ text: txt, value: startValue, @@ -128,21 +112,12 @@ export class MultiSelectNoBarLoader extends Widget { } firstItems = self._createItems(json); } - callback( - firstItems.concat(self._createItems(ob.items)), - ob.keyword || "" - ); + callback(firstItems.concat(self._createItems(ob.items)), ob.keyword || ""); if (op.times === 1 && self.storeValue) { isKey(startValue) && - (self.storeValue.type === Selection.All - ? remove( - self.storeValue.value, - startValue - ) - : pushDistinct( - self.storeValue.value, - startValue - )); + (self.storeValue.type === Selection.All + ? remove(self.storeValue.value, startValue) + : pushDistinct(self.storeValue.value, startValue)); self.setValue(self.storeValue); } op.times === 1 && self._scrollToTop(); @@ -178,9 +153,7 @@ export class MultiSelectNoBarLoader extends Widget { type: MultiSelectItem.xtype, cls: "bi-list-item-active", logic: this.options.logic, - height: - this.options.itemHeight || - BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: this.options.itemHeight || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconWrapperWidth: 36, ...item, ...this.options.itemFormatter(item), @@ -237,6 +210,5 @@ export class MultiSelectNoBarLoader extends Widget { this.button_group.element.css({ "max-height": toPix(h) }); } - resetWidth() { - } + resetWidth() {} } diff --git a/src/widget/multiselect/multiselect.popup.view.js b/src/widget/multiselect/multiselect.popup.view.js index c16cbc196..3d935af87 100644 --- a/src/widget/multiselect/multiselect.popup.view.js +++ b/src/widget/multiselect/multiselect.popup.view.js @@ -1,11 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - createWidget, - i18nText -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, i18nText } from "@/core"; import { MultiPopupView } from "@/case"; import { MultiSelectLoader } from "./multiselect.loader"; @@ -60,23 +53,18 @@ export class MultiSelectPopupView extends Widget { this.popupView.on(MultiPopupView.EVENT_CHANGE, () => { self.fireEvent(MultiSelectPopupView.EVENT_CHANGE); }); - this.popupView.on( - MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, - index => { - switch (index) { - case 0: - self.fireEvent(MultiSelectPopupView.EVENT_CLICK_CLEAR); - break; - case 1: - self.fireEvent( - MultiSelectPopupView.EVENT_CLICK_CONFIRM - ); - break; - default: - break; - } + this.popupView.on(MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, index => { + switch (index) { + case 0: + self.fireEvent(MultiSelectPopupView.EVENT_CLICK_CLEAR); + break; + case 1: + self.fireEvent(MultiSelectPopupView.EVENT_CLICK_CONFIRM); + break; + default: + break; } - ); + }); } isAllSelected() { diff --git a/src/widget/multiselect/multiselect.popup.view.nobar.js b/src/widget/multiselect/multiselect.popup.view.nobar.js index 5a8d150d7..afd965b64 100644 --- a/src/widget/multiselect/multiselect.popup.view.nobar.js +++ b/src/widget/multiselect/multiselect.popup.view.nobar.js @@ -1,11 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - createWidget, - i18nText -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, i18nText } from "@/core"; import { MultiPopupView } from "@/case"; import { MultiSelectNoBarLoader } from "./multiselect.loader.nobar"; @@ -60,23 +53,16 @@ export class MultiSelectNoBarPopupView extends Widget { this.popupView.on(MultiPopupView.EVENT_CHANGE, () => { self.fireEvent(MultiSelectNoBarPopupView.EVENT_CHANGE); }); - this.popupView.on( - MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, - index => { - switch (index) { - case 0: - self.fireEvent( - MultiSelectNoBarPopupView.EVENT_CLICK_CLEAR - ); - break; - case 1: - self.fireEvent( - MultiSelectNoBarPopupView.EVENT_CLICK_CONFIRM - ); - break; - } + this.popupView.on(MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, index => { + switch (index) { + case 0: + self.fireEvent(MultiSelectNoBarPopupView.EVENT_CLICK_CLEAR); + break; + case 1: + self.fireEvent(MultiSelectNoBarPopupView.EVENT_CLICK_CONFIRM); + break; } - ); + }); } setStartValue(v) { diff --git a/src/widget/multiselect/multiselect.trigger.js b/src/widget/multiselect/multiselect.trigger.js index e938837c6..d0666731d 100644 --- a/src/widget/multiselect/multiselect.trigger.js +++ b/src/widget/multiselect/multiselect.trigger.js @@ -1,13 +1,4 @@ -import { - shortcut, - extend, - emptyFn, - createWidget, - isFunction, - Layout, - HTapeLayout, - AbsoluteLayout -} from "@/core"; +import { shortcut, extend, emptyFn, createWidget, isFunction, Layout, HTapeLayout, AbsoluteLayout } from "@/core"; import { Trigger, Text } from "@/base"; import { MultiSelectSearcher } from "./trigger/searcher.multiselect"; @@ -103,30 +94,30 @@ export class MultiSelectTrigger extends Trigger { }); !o.allowEdit && - createWidget({ - type: AbsoluteLayout.xtype, - element: this, - items: [ - { - el: { - type: Text.xtype, - title() { - /** 修正REPORT-73699引入,需要考虑到传递过来的值是方法的情况 */ - const state = self.searcher.getState(); - if (isFunction(state)) { - return state(); - } - - return state; + createWidget({ + type: AbsoluteLayout.xtype, + element: this, + items: [ + { + el: { + type: Text.xtype, + title() { + /** 修正REPORT-73699引入,需要考虑到传递过来的值是方法的情况 */ + const state = self.searcher.getState(); + if (isFunction(state)) { + return state(); + } + + return state; + }, }, - }, - left: 0, - right: 24, - top: 0, - bottom: 0, - } - ], - }); + left: 0, + right: 24, + top: 0, + bottom: 0, + } + ], + }); } refreshPlaceHolderWidth(width) { diff --git a/src/widget/multiselect/search/multiselect.search.insert.pane.js b/src/widget/multiselect/search/multiselect.search.insert.pane.js index ce139fee6..708af5dcd 100644 --- a/src/widget/multiselect/search/multiselect.search.insert.pane.js +++ b/src/widget/multiselect/search/multiselect.search.insert.pane.js @@ -1,12 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - createWidget, - i18nText, - Controller, VerticalFillLayout -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, i18nText, Controller, VerticalFillLayout } from "@/core"; import { Label } from "@/base"; import { MultiSelectSearchLoader } from "./multiselect.search.loader"; @@ -78,9 +70,7 @@ export class MultiSelectSearchInsertPane extends Widget { } setKeyword(keyword) { - this.addNotMatchTip.setText( - i18nText("BI-Basic_Press_Enter_To_Add_Text", keyword) - ); + this.addNotMatchTip.setText(i18nText("BI-Basic_Press_Enter_To_Add_Text", keyword)); } isAllSelected() { diff --git a/src/widget/multiselect/search/multiselect.search.loader.js b/src/widget/multiselect/search/multiselect.search.loader.js index b52361dba..e695cca98 100644 --- a/src/widget/multiselect/search/multiselect.search.loader.js +++ b/src/widget/multiselect/search/multiselect.search.loader.js @@ -77,9 +77,9 @@ export class MultiSelectSearchLoader extends Widget { }, itemsCreator(op, callback) { self.storeValue && - (op = extend(op || {}, { - selectedValues: self.storeValue.value, - })); + (op = extend(op || {}, { + selectedValues: self.storeValue.value, + })); opts.itemsCreator(op, ob => { const keyword = (ob.keyword = opts.keywordGetter()); hasNext = ob.hasNext; @@ -91,11 +91,7 @@ export class MultiSelectSearchLoader extends Widget { const context = { tipText: ob.tipText, }; - callback( - firstItems.concat(self._createItems(ob.items)), - keyword, - context - ); + callback(firstItems.concat(self._createItems(ob.items)), keyword, context); if (op.times === 1 && self.storeValue) { self.setValue(self.storeValue); } @@ -123,9 +119,7 @@ export class MultiSelectSearchLoader extends Widget { logic: { dynamic: false, }, - height: - this.options.itemHeight || - BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + height: this.options.itemHeight || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, selected: allSelected, cls: "bi-list-item-active", iconWrapperWidth: 36, diff --git a/src/widget/multiselect/search/multiselect.search.pane.js b/src/widget/multiselect/search/multiselect.search.pane.js index 0a8ead08b..1130a1243 100644 --- a/src/widget/multiselect/search/multiselect.search.pane.js +++ b/src/widget/multiselect/search/multiselect.search.pane.js @@ -1,12 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - createWidget, - Controller, - AbsoluteLayout -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, Controller, AbsoluteLayout } from "@/core"; import { MultiSelectSearchLoader } from "./multiselect.search.loader"; @shortcut() @@ -71,8 +63,7 @@ export class MultiSelectSearchPane extends Widget { return this.loader.isAllSelected(); } - hasMatched() { - } + hasMatched() {} setValue(v) { this.loader.setValue(v); diff --git a/src/widget/multiselect/trigger/button.checkselected.js b/src/widget/multiselect/trigger/button.checkselected.js index 275013a86..8254a658e 100644 --- a/src/widget/multiselect/trigger/button.checkselected.js +++ b/src/widget/multiselect/trigger/button.checkselected.js @@ -44,10 +44,7 @@ export class MultiSelectCheckSelectedButton extends Single { }); this.numberCounter.on(TextButton.EVENT_CHANGE, function () { - self.fireEvent( - MultiSelectCheckSelectedButton.EVENT_CHANGE, - arguments - ); + self.fireEvent(MultiSelectCheckSelectedButton.EVENT_CHANGE, arguments); }); this.numberCounter.element.hover( @@ -119,6 +116,5 @@ export class MultiSelectCheckSelectedButton extends Single { this._populate(this._assertValue(this.options.value)); } - getValue() { - } + getValue() {} } diff --git a/src/widget/multiselect/trigger/editor.multiselect.js b/src/widget/multiselect/trigger/editor.multiselect.js index f2e33a410..83446d7f7 100644 --- a/src/widget/multiselect/trigger/editor.multiselect.js +++ b/src/widget/multiselect/trigger/editor.multiselect.js @@ -1,13 +1,4 @@ -import { - shortcut, - Widget, - extend, - i18nText, - createWidget, - Controller, - isEmptyString, - isEmptyArray -} from "@/core"; +import { shortcut, Widget, extend, i18nText, createWidget, Controller, isEmptyString, isEmptyArray } from "@/core"; import { StateEditor } from "@/case"; import { SelectPatchEditor } from "./editor/editor.patch"; diff --git a/src/widget/multiselect/trigger/editor/editor.patch.js b/src/widget/multiselect/trigger/editor/editor.patch.js index 237109ef5..4252990b5 100644 --- a/src/widget/multiselect/trigger/editor/editor.patch.js +++ b/src/widget/multiselect/trigger/editor/editor.patch.js @@ -8,7 +8,8 @@ import { contains, isKey, Events, - trim, replaceAll + trim, + replaceAll } from "@/core"; import { Editor, TextAreaEditor } from "@/base"; import { StateEditor } from "@/case"; @@ -79,20 +80,14 @@ export class SelectPatchEditor extends Widget { { eventName: Editor.EVENT_FOCUS, action() { - self.fireEvent( - SelectPatchEditor.EVENT_FOCUS, - arguments - ); + self.fireEvent(SelectPatchEditor.EVENT_FOCUS, arguments); }, }, { eventName: Editor.EVENT_BLUR, action() { self._start = false; - self.fireEvent( - SelectPatchEditor.EVENT_BLUR, - arguments - ); + self.fireEvent(SelectPatchEditor.EVENT_BLUR, arguments); }, } ], @@ -119,18 +114,11 @@ export class SelectPatchEditor extends Widget { if ( !this._start || !isKey(this._lastValue) || - (this._pause === true && - this._trimValue(this._lastValue) !== - this._trimValue(value)) + (this._pause === true && this._trimValue(this._lastValue) !== this._trimValue(value)) ) { this._start = true; this._pause = false; - this.fireEvent( - Controller.EVENT_CHANGE, - Events.STARTEDIT, - this.getValue(), - this - ); + this.fireEvent(Controller.EVENT_CHANGE, Events.STARTEDIT, this.getValue(), this); } } if (this._trimValue(this._lastValue) !== this._trimValue(value)) { diff --git a/src/widget/multiselect/trigger/searcher.multiselect.insert.js b/src/widget/multiselect/trigger/searcher.multiselect.insert.js index a2e043a6e..542e5e799 100644 --- a/src/widget/multiselect/trigger/searcher.multiselect.insert.js +++ b/src/widget/multiselect/trigger/searcher.multiselect.insert.js @@ -1,15 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - i18nText, - createWidget, - isNotNull, - isEmptyArray, - size, - each -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, i18nText, createWidget, isNotNull, isEmptyArray, size, each } from "@/core"; import { MultiSelectEditor } from "./editor.multiselect"; import { Searcher } from "@/base"; import { MultiSelectSearchInsertPane } from "../search/multiselect.search.insert.pane"; @@ -121,9 +110,7 @@ export class MultiSelectInsertSearcher extends Widget { const keywords = this.getKeywords(); self.fireEvent( MultiSelectInsertSearcher.EVENT_SEARCHING, - keywords.length > 2000 - ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) - : keywords.slice(0, 2000) + keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000) ); }); if (isNotNull(o.value)) { @@ -146,9 +133,7 @@ export class MultiSelectInsertSearcher extends Widget { getKeywordsLength() { const keywords = this.editor.getKeywords(); - return keywords[keywords.length - 1] === BI.BlankSplitChar - ? keywords.length - 1 - : keywords.length; + return keywords[keywords.length - 1] === BI.BlankSplitChar ? keywords.length - 1 : keywords.length; } getKeyword() { @@ -184,13 +169,9 @@ export class MultiSelectInsertSearcher extends Widget { state = ""; each(ob.assist, (i, v) => { if (i === 0) { - state += - `${ - v === null ? "" : o.valueFormatter(`${v}`) || v}`; + state += `${v === null ? "" : o.valueFormatter(`${v}`) || v}`; } else { - state += - `,${ - v === null ? "" : o.valueFormatter(`${v}`) || v}`; + state += `,${v === null ? "" : o.valueFormatter(`${v}`) || v}`; } }); this.editor.setState(state); @@ -204,13 +185,9 @@ export class MultiSelectInsertSearcher extends Widget { state = ""; each(ob.value, (i, v) => { if (i === 0) { - state += - `${ - v === null ? "" : o.valueFormatter(`${v}`) || v}`; + state += `${v === null ? "" : o.valueFormatter(`${v}`) || v}`; } else { - state += - `,${ - v === null ? "" : o.valueFormatter(`${v}`) || v}`; + state += `,${v === null ? "" : o.valueFormatter(`${v}`) || v}`; } }); this.editor.setState(state); diff --git a/src/widget/multiselect/trigger/searcher.multiselect.js b/src/widget/multiselect/trigger/searcher.multiselect.js index ef23281c3..1adfff4b1 100644 --- a/src/widget/multiselect/trigger/searcher.multiselect.js +++ b/src/widget/multiselect/trigger/searcher.multiselect.js @@ -1,14 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - i18nText, - createWidget, - isNotNull, - size, - each -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, i18nText, createWidget, isNotNull, size, each } from "@/core"; import { MultiSelectEditor } from "./editor.multiselect"; import { Searcher } from "@/base"; import { MultiSelectSearchPane } from "../search/multiselect.search.pane"; @@ -175,13 +165,9 @@ export class MultiSelectSearcher extends Widget { state = ""; each(ob.assist, (i, v) => { if (i === 0) { - state += - `${ - v === null ? "" : o.valueFormatter(`${v}`) || v}`; + state += `${v === null ? "" : o.valueFormatter(`${v}`) || v}`; } else { - state += - `,${ - v === null ? "" : o.valueFormatter(`${v}`) || v}`; + state += `,${v === null ? "" : o.valueFormatter(`${v}`) || v}`; } }); this.editor.setState(state); @@ -195,13 +181,9 @@ export class MultiSelectSearcher extends Widget { state = ""; each(ob.value, (i, v) => { if (i === 0) { - state += - `${ - v === null ? "" : o.valueFormatter(`${v}`) || v}`; + state += `${v === null ? "" : o.valueFormatter(`${v}`) || v}`; } else { - state += - `,${ - v === null ? "" : o.valueFormatter(`${v}`) || v}`; + state += `,${v === null ? "" : o.valueFormatter(`${v}`) || v}`; } }); this.editor.setState(state); diff --git a/src/widget/multiselect/trigger/switcher.checkselected.js b/src/widget/multiselect/trigger/switcher.checkselected.js index 89e4e4fb0..4d5bab1da 100644 --- a/src/widget/multiselect/trigger/switcher.checkselected.js +++ b/src/widget/multiselect/trigger/switcher.checkselected.js @@ -1,12 +1,4 @@ -import { - shortcut, - Widget, - extend, - emptyFn, - createWidget, - Events, - nextTick -} from "@/core"; +import { shortcut, Widget, extend, emptyFn, createWidget, Events, nextTick } from "@/core"; import { Switcher } from "@/base"; import { MultiSelectCheckSelectedButton } from "./button.checkselected"; import { MultiSelectCheckPane } from "../check/multiselect.check.pane"; @@ -68,19 +60,13 @@ export class MultiSelectCheckSelectedSwitcher extends Widget { masker: o.masker, }); this.switcher.on(Switcher.EVENT_TRIGGER_CHANGE, () => { - self.fireEvent( - MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE - ); + self.fireEvent(MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE); }); this.switcher.on(Switcher.EVENT_BEFORE_POPUPVIEW, () => { - self.fireEvent( - MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW - ); + self.fireEvent(MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW); }); this.switcher.on(Switcher.EVENT_AFTER_HIDEVIEW, () => { - self.fireEvent( - MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW - ); + self.fireEvent(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_HIDEVIEW); }); this.switcher.on(Switcher.EVENT_AFTER_POPUPVIEW, function () { const me = this; @@ -115,8 +101,7 @@ export class MultiSelectCheckSelectedSwitcher extends Widget { this.button.setValue(v); } - getValue() { - } + getValue() {} populate(items) { this.switcher.populate.apply(this.switcher, arguments); diff --git a/src/widget/multiselectlist/multiselectlist.insert.js b/src/widget/multiselectlist/multiselectlist.insert.js index 71616ccb3..7e60d6aed 100644 --- a/src/widget/multiselectlist/multiselectlist.insert.js +++ b/src/widget/multiselectlist/multiselectlist.insert.js @@ -25,7 +25,8 @@ import { values, filter, contains, - isNull, VerticalFillLayout + isNull, + VerticalFillLayout } from "@/core"; import { Single, Searcher } from "@/base"; import { MultiSelectBar } from "@/case"; @@ -34,7 +35,6 @@ import { MultiSelectLoader } from "../multiselect/multiselect.loader"; import { MultiSelectSearchInsertPane } from "../multiselect/search/multiselect.search.insert.pane"; import { SearchEditor } from "@/widget/editor/editor.search"; - @shortcut() export class MultiSelectInsertList extends Single { static xtype = "bi.multi_select_insert_list"; @@ -62,9 +62,9 @@ export class MultiSelectInsertList extends Single { function assertShowValue() { isKey(self._startValue) && - (self.storeValue.type === Selection.All - ? remove(self.storeValue.value, self._startValue) - : pushDistinct(self.storeValue.value, self._startValue)); + (self.storeValue.type === Selection.All + ? remove(self.storeValue.value, self._startValue) + : pushDistinct(self.storeValue.value, self._startValue)); // self.trigger.setValue(self.storeValue); } @@ -152,14 +152,10 @@ export class MultiSelectInsertList extends Single { eventName: Searcher.EVENT_PAUSE, action() { let keywords = self._getKeywords(); - if ( - keywords[keywords.length - 1] === BI.BlankSplitChar - ) { + if (keywords[keywords.length - 1] === BI.BlankSplitChar) { keywords = keywords.slice(0, keywords.length - 1); } - const keyword = isEmptyArray(keywords) - ? "" - : keywords[keywords.length - 1]; + const keyword = isEmptyArray(keywords) ? "" : keywords[keywords.length - 1]; self._join( { type: Selection.Multi, @@ -167,10 +163,7 @@ export class MultiSelectInsertList extends Single { }, () => { if (self.storeValue.type === Selection.Multi) { - pushDistinct( - self.storeValue.value, - keyword - ); + pushDistinct(self.storeValue.value, keyword); } self._showAdapter(); self.adapter.setValue(self.storeValue); @@ -178,9 +171,7 @@ export class MultiSelectInsertList extends Single { assertShowValue(); self.adapter.populate(); self._setStartValue(""); - self.fireEvent( - MultiSelectInsertList.EVENT_CHANGE - ); + self.fireEvent(MultiSelectInsertList.EVENT_CHANGE); } ); self._showAdapter(); @@ -203,17 +194,13 @@ export class MultiSelectInsertList extends Single { self.adapter.setValue(self.storeValue); assertShowValue(); } - self.fireEvent( - MultiSelectInsertList.EVENT_CHANGE - ); + self.fireEvent(MultiSelectInsertList.EVENT_CHANGE); }); self._getKeywordsLength() > 2000 && - BI.Msg.alert( - i18nText("BI-Basic_Prompt"), - i18nText( - "BI-Basic_Too_Much_Value_Get_Two_Thousand" - ) - ); + BI.Msg.alert( + i18nText("BI-Basic_Prompt"), + i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand") + ); } }, }, @@ -223,16 +210,12 @@ export class MultiSelectInsertList extends Single { if (obj instanceof MultiSelectBar) { self._joinAll(this.getValue(), () => { assertShowValue(); - self.fireEvent( - MultiSelectInsertList.EVENT_CHANGE - ); + self.fireEvent(MultiSelectInsertList.EVENT_CHANGE); }); } else { self._join(this.getValue(), () => { assertShowValue(); - self.fireEvent( - MultiSelectInsertList.EVENT_CHANGE - ); + self.fireEvent(MultiSelectInsertList.EVENT_CHANGE); }); } }, @@ -279,9 +262,7 @@ export class MultiSelectInsertList extends Single { keywords = keywords.concat([BI.BlankSplitChar]); } - return keywords.length > 2000 - ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) - : keywords.slice(0, 2000); + return keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000); } _getKeywordsLength() { diff --git a/src/widget/multiselectlist/multiselectlist.insert.nobar.js b/src/widget/multiselectlist/multiselectlist.insert.nobar.js index ac21aa3b4..bac2a74ca 100644 --- a/src/widget/multiselectlist/multiselectlist.insert.nobar.js +++ b/src/widget/multiselectlist/multiselectlist.insert.nobar.js @@ -25,7 +25,8 @@ import { values, filter, contains, - isNull, VTapeLayout + isNull, + VTapeLayout } from "@/core"; import { Single, Searcher, Msg } from "@/base"; import { MultiSelectBar } from "@/case"; @@ -34,7 +35,6 @@ import { MultiSelectNoBarLoader } from "../multiselect/multiselect.loader.nobar" import { MultiSelectSearchInsertPane } from "../multiselect/search/multiselect.search.insert.pane"; import { SearchEditor } from "../editor/editor.search"; - @shortcut() export class MultiSelectInsertNoBarList extends Single { static xtype = "bi.multi_select_insert_no_bar_list"; @@ -64,9 +64,9 @@ export class MultiSelectInsertNoBarList extends Single { function assertShowValue() { isKey(self._startValue) && - (self.storeValue.type === Selection.All - ? remove(self.storeValue.value, self._startValue) - : pushDistinct(self.storeValue.value, self._startValue)); + (self.storeValue.type === Selection.All + ? remove(self.storeValue.value, self._startValue) + : pushDistinct(self.storeValue.value, self._startValue)); // self.trigger.setValue(self.storeValue); } @@ -155,14 +155,10 @@ export class MultiSelectInsertNoBarList extends Single { eventName: Searcher.EVENT_PAUSE, action() { let keywords = self._getKeywords(); - if ( - keywords[keywords.length - 1] === BI.BlankSplitChar - ) { + if (keywords[keywords.length - 1] === BI.BlankSplitChar) { keywords = keywords.slice(0, keywords.length - 1); } - const keyword = isEmptyArray(keywords) - ? "" - : keywords[keywords.length - 1]; + const keyword = isEmptyArray(keywords) ? "" : keywords[keywords.length - 1]; self._join( { type: Selection.Multi, @@ -170,10 +166,7 @@ export class MultiSelectInsertNoBarList extends Single { }, () => { if (self.storeValue.type === Selection.Multi) { - pushDistinct( - self.storeValue.value, - keyword - ); + pushDistinct(self.storeValue.value, keyword); } self._showAdapter(); self.adapter.setValue(self.storeValue); @@ -181,9 +174,7 @@ export class MultiSelectInsertNoBarList extends Single { assertShowValue(); self.adapter.populate(); self._setStartValue(""); - self.fireEvent( - MultiSelectInsertNoBarList.EVENT_CHANGE - ); + self.fireEvent(MultiSelectInsertNoBarList.EVENT_CHANGE); } ); }, @@ -205,17 +196,13 @@ export class MultiSelectInsertNoBarList extends Single { self.adapter.setValue(self.storeValue); assertShowValue(); } - self.fireEvent( - MultiSelectInsertNoBarList.EVENT_CHANGE - ); + self.fireEvent(MultiSelectInsertNoBarList.EVENT_CHANGE); }); self._getKeywordsLength() > 2000 && - Msg.alert( - i18nText("BI-Basic_Prompt"), - i18nText( - "BI-Basic_Too_Much_Value_Get_Two_Thousand" - ) - ); + Msg.alert( + i18nText("BI-Basic_Prompt"), + i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand") + ); } }, }, @@ -225,16 +212,12 @@ export class MultiSelectInsertNoBarList extends Single { if (obj instanceof MultiSelectBar) { self._joinAll(this.getValue(), () => { assertShowValue(); - self.fireEvent( - MultiSelectInsertNoBarList.EVENT_CHANGE - ); + self.fireEvent(MultiSelectInsertNoBarList.EVENT_CHANGE); }); } else { self._join(this.getValue(), () => { assertShowValue(); - self.fireEvent( - MultiSelectInsertNoBarList.EVENT_CHANGE - ); + self.fireEvent(MultiSelectInsertNoBarList.EVENT_CHANGE); }); } }, @@ -285,9 +268,7 @@ export class MultiSelectInsertNoBarList extends Single { keywords = keywords.concat([BI.BlankSplitChar]); } - return keywords.length > 2000 - ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) - : keywords.slice(0, 2000); + return keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000); } _getKeywordsLength() { diff --git a/src/widget/multiselectlist/multiselectlist.js b/src/widget/multiselectlist/multiselectlist.js index 878bc5bc0..caebd8e2f 100644 --- a/src/widget/multiselectlist/multiselectlist.js +++ b/src/widget/multiselectlist/multiselectlist.js @@ -24,7 +24,8 @@ import { values, filter, contains, - isNull, VTapeLayout + isNull, + VTapeLayout } from "@/core"; import { Searcher } from "@/base"; import { MultiSelectBar } from "@/case"; @@ -33,7 +34,6 @@ import { MultiSelectSearchPane } from "../multiselect/search/multiselect.search. import { SelectPatchEditor } from "../multiselect/trigger/editor/editor.patch"; import { SearchEditor } from "../editor/editor.search"; - @shortcut() export class MultiSelectList extends Widget { static xtype = "bi.multi_select_list"; @@ -61,9 +61,9 @@ export class MultiSelectList extends Widget { function assertShowValue() { isKey(self._startValue) && - (self.storeValue.type === Selection.All - ? remove(self.storeValue.value, self._startValue) - : pushDistinct(self.storeValue.value, self._startValue)); + (self.storeValue.type === Selection.All + ? remove(self.storeValue.value, self._startValue) + : pushDistinct(self.storeValue.value, self._startValue)); // self.trigger.setValue(self.storeValue); } @@ -365,18 +365,12 @@ export class MultiSelectList extends Widget { } function adjust() { - if ( - self.storeValue.type === Selection.All && - self.storeValue.value.length >= self._count - ) { + if (self.storeValue.type === Selection.All && self.storeValue.value.length >= self._count) { self.storeValue = { type: Selection.Multi, value: [], }; - } else if ( - self.storeValue.type === Selection.Multi && - self.storeValue.value.length >= self._count - ) { + } else if (self.storeValue.type === Selection.Multi && self.storeValue.value.length >= self._count) { self.storeValue = { type: Selection.All, value: [], @@ -421,9 +415,7 @@ export class MultiSelectList extends Widget { return this.adapter.isAllSelected(); } - resize() { - - } + resize() {} setValue(v) { this.storeValue = v || {}; diff --git a/src/widget/multiselecttree/multiselecttree.js b/src/widget/multiselecttree/multiselecttree.js index 3e77234cd..8acd50d48 100644 --- a/src/widget/multiselecttree/multiselecttree.js +++ b/src/widget/multiselecttree/multiselecttree.js @@ -1,11 +1,5 @@ -import { - shortcut, - extend, - emptyFn, - createWidget, - nextTick, - AbsoluteLayout -} from "@/core"; +import { MultiTreeSearchPane } from "../multitree/trigger/multi.tree.search.pane"; +import { VerticalFillLayout, shortcut, extend, emptyFn, createWidget, nextTick, AbsoluteLayout } from "@/core"; import { Single, Searcher } from "@/base"; import { MultiSelectTreePopup } from "./multiselecttree.popup"; @@ -47,7 +41,7 @@ export class MultiSelectTree extends Single { // 搜索中的时候用的是parttree,同adapter中的synctree不一样 this.searcherPane = createWidget({ - type: "bi.multi_tree_search_pane", + type: MultiTreeSearchPane.xtype, cls: "bi-border-left bi-border-right bi-border-bottom", keywordGetter() { return self.searcher.getKeyword(); @@ -121,7 +115,7 @@ export class MultiSelectTree extends Single { }); createWidget({ - type: "bi.vertical_fill", + type: VerticalFillLayout.xtype, element: this, items: [ { @@ -159,8 +153,7 @@ export class MultiSelectTree extends Single { this.adapter.setVisible(false); } - resize() { - } + resize() {} setSelectedValue(v) { this.storeValue.value = v || {}; diff --git a/src/widget/multiselecttree/multiselecttree.popup.js b/src/widget/multiselecttree/multiselecttree.popup.js index 805d0571c..7c67d1d6f 100644 --- a/src/widget/multiselecttree/multiselecttree.popup.js +++ b/src/widget/multiselecttree/multiselecttree.popup.js @@ -10,8 +10,7 @@ export class MultiSelectTreePopup extends Widget { _defaultConfig() { return extend(super._defaultConfig(...arguments), { - baseCls: - "bi-multi-select-tree-popup bi-border-left bi-border-right bi-border-bottom", + baseCls: "bi-multi-select-tree-popup bi-border-left bi-border-right bi-border-bottom", itemsCreator: emptyFn, }); }