/** * @Author: Young * @CreationDate 2017-11-06 10:32 * @Description */ ;(function () { var model = Fix.define({ groups: [{ id: "27a9c8bf159e99e", name: "功能数据", packages: [{ id: "82a96a4b03ac17e6", name: "通信行业", type: 1, tables: [{ id: "品类", name: "品类", connName: "BIDemo", fields: [{ id: "sd2ad2f343ca23", name: "类别", type: 32, enable: true, usable: true }, { id: "f34ds34aw2345w", name: "描述", type: 32, enable: true, usable: true }] }] }] }, { id: "das2dw24214sa4", name: "样式数据", packages: [{ id: "hi23i1o34a34we", name: "零售行业", type: 1, tables: [{ id: "销售记录", name: "销售记录", connName: "BIDemo", fields: [{ id: "wr213d24t345", name: "分类", type: 16, enable: true, usable: true }, { id: "faw134r24al344", name: "金额", type: 32, enable: true, usable: true }] }] }, { id: "fwr124f3453fa", name: "地产行业", tables: [{ id: "开发商名称", name: "开发商名称", connName: "BIDemo", fields: [{ id: "sa13f345fg356", name: "编号", type: 32, enable: true, usable: true }, { id: "ad2r24tt232a22", name: "名称", type: 16, enable: true, usable: true }] }, { id: "楼盘", name: "楼盘", connName: "BIDemo", fields: [{ id: "hfe3345fg356", name: "编号", type: 32, enable: true, usable: true }, { id: "kl224tt232a22", name: "名称", type: 16, enable: true, usable: true }] }] }] }], fineIndexUpdate: { needUpdate: false, lastUpdate: 1509953199062 } }); Demo.FixScene = BI.inherit(BI.Widget, { constant: { TAB1: 1, TAB2: 2 }, _store: function () { return model; }, watch: { "groups.*.name": function () { this.fineIndexTab.setText("FineIndex更新(******* 分组名变化 需要更新 *******)"); this.model.fineIndexUpdate.needUpdate = true; }, "groups.*.packages.*.name": function () { this.fineIndexTab.setText("FineIndex更新(******* 业务包名变化 需要更新 *******)"); this.model.fineIndexUpdate.needUpdate = true; }, "groups.*.packages.*.tables.*.name": function () { this.fineIndexTab.setText("FineIndex更新(******* 表名变化 需要更新 *******)"); this.model.fineIndexUpdate.needUpdate = true; }, "groups.*.packages.*.tables.*.fields.*.name": function () { this.fineIndexTab.setText("FineIndex更新(******* 字段名变化 需要更新 *******)"); this.model.fineIndexUpdate.needUpdate = true; }, "fineIndexUpdate.needUpdate": function (needUpdate) { !needUpdate && this.fineIndexTab.setText("FineIndex更新"); } }, render: function () { var self = this; return { type: "bi.tab", defaultShowIndex: this.constant.TAB1, single: true, tab: { type: "bi.button_group", items: BI.createItems([{ text: "业务包管理", value: this.constant.TAB1 }, { text: "FineIndex更新", value: this.constant.TAB2, ref: function (ref) { self.fineIndexTab = ref; } }], { type: "bi.text_button", cls: "bi-list-item-active", height: 50 }), height: 50 }, cardCreator: BI.bind(this.cardCreator, this) } }, cardCreator: function (v) { switch (v) { case this.constant.TAB1: return { type: "demo.fix_scene_data_manager", data: this.model }; case this.constant.TAB2: return { type: "demo.fix_scene_fine_index_update" } } } }); BI.shortcut("demo.fix_scene", Demo.FixScene); Demo.FixSceneDataManager = BI.inherit(BI.Widget, { _store: function () { return this.options.data; }, watch: { "*.name": function () { } }, render: function () { var items = []; BI.each(this.model.groups, function (i, group) { items.push({ type: "demo.fix_scene_group", group: group }); }); return { type: "bi.vertical", items: [{ type: "bi.left", items: BI.createItems([{ text: "分组名" }, { text: "业务包名" }, { text: "表名" }, { text: "字段名" }], { type: "bi.label", cls: "layout-bg1", width: 150 }), }, { type: "bi.vertical", items: items }], vgap: 20, hgap: 20 } } }); BI.shortcut("demo.fix_scene_data_manager", Demo.FixSceneDataManager); Demo.FixSceneGroup = BI.inherit(BI.Widget, { props: { group: {} }, _store: function () { return this.options.group; }, render: function () { var self = this; var items = []; BI.each(this.model.packages, function (i, child) { items.push({ type: "demo.fix_scene_package", pack: child }); }); return { type: "bi.left", items: [{ type: "bi.sign_editor", cls: "bi-border-bottom", width: 100, height: 30, value: this.model.name, listeners: [{ eventName: BI.SignEditor.EVENT_CHANGE, action: function () { self.model.name = this.getValue(); } }] }, { type: "bi.vertical", items: items }], hgap: 20 } } }); BI.shortcut("demo.fix_scene_group", Demo.FixSceneGroup); Demo.FixScenePackage = BI.inherit(BI.Widget, { props: { pack: {} }, _store: function () { return this.options.pack; }, render: function () { var self = this; var items = []; BI.each(this.model.tables, function (i, child) { items.push({ type: "demo.fix_scene_table", table: child }) }); return { type: "bi.left", items: [{ type: "bi.sign_editor", cls: "bi-border-bottom", width: 100, height: 30, value: this.model.name, listeners: [{ eventName: BI.SignEditor.EVENT_CHANGE, action: function () { self.model.name = this.getValue(); } }] }, { type: "bi.vertical", items: items }], hgap: 20 } } }); BI.shortcut("demo.fix_scene_package", Demo.FixScenePackage); Demo.FixSceneTable = BI.inherit(BI.Widget, { props: { table: {} }, _store: function () { return this.options.table; }, render: function () { var self = this; var items = []; BI.each(this.model.fields, function (i, child) { items.push({ type: "demo.fix_scene_field", field: child }); }); return { type: "bi.left", items: [{ type: "bi.sign_editor", cls: "bi-border-bottom", width: 100, height: 30, value: this.model.name, listeners: [{ eventName: BI.SignEditor.EVENT_CHANGE, action: function () { self.model.name = this.getValue(); } }] }, { type: "bi.vertical", items: items }], hgap: 20 } } }); BI.shortcut("demo.fix_scene_table", Demo.FixSceneTable); Demo.FixSceneField = BI.inherit(BI.Widget, { props: { field: {} }, _store: function () { return this.options.field; }, render: function () { var self = this; return { type: "bi.center_adapt", items: [{ type: "bi.sign_editor", cls: "bi-border-bottom", width: 100, height: 30, value: this.model.name, listeners: [{ eventName: BI.SignEditor.EVENT_CHANGE, action: function () { self.model.name = this.getValue(); } }] }] } } }); BI.shortcut("demo.fix_scene_field", Demo.FixSceneField); Demo.FixSceneFineIndexUpdateStore = BI.inherit(Fix.VM, { _init: function () { this.fineIndexUpdate = model.fineIndexUpdate; }, computed: { text: function () { return "立即更新(上次更新时间:" + BI.date2Str(new Date(this.fineIndexUpdate.lastUpdate), "yyyy-MM-dd HH:mm:ss") + ")"; }, needUpdate: function () { return this.fineIndexUpdate.needUpdate; } }, actions: { updateFineIndex: function () { this.fineIndexUpdate.needUpdate = false; this.fineIndexUpdate.lastUpdate = new Date().getTime(); } } }); Demo.FixSceneFineIndexUpdate = BI.inherit(BI.Widget, { _store: function () { return new Demo.FixSceneFineIndexUpdateStore(); }, watch: { "needUpdate": function () { this.button.setEnable(this.model.needUpdate) }, "text": function () { this.button.setText(this.model.text); } }, render: function () { var self = this; return { type: "bi.center_adapt", items: [{ type: "bi.button", text: this.model.text, disabled: !this.model.needUpdate, height: 30, width: 360, handler: function () { self.store.updateFineIndex(); }, ref: function (ref) { self.button = ref; } }] } } }); BI.shortcut("demo.fix_scene_fine_index_update", Demo.FixSceneFineIndexUpdate); })();