Guyi 5 years ago
parent
commit
26f65efb1d
  1. 1
      changelog.md
  2. 79
      src/case/button/node/__test__/node.arrow.test.js
  3. 66
      src/case/button/node/__test__/node.first.plus.test.js
  4. 66
      src/case/button/node/__test__/node.icon.arrow.test.js
  5. 66
      src/case/button/node/__test__/node.last.plus.test.js
  6. 66
      src/case/button/node/__test__/node.mid.plus.test.js
  7. 73
      src/case/button/node/__test__/node.multilayer.icon.arrow.test.js
  8. 66
      src/case/button/node/__test__/node.plus.test.js
  9. 18
      src/case/editor/__test__/editor.clear.test.js
  10. 3
      src/case/editor/editor.clear.js
  11. 7
      src/case/linersegment/linear.segment.js
  12. 4
      src/component/treevaluechooser/combo.listtreevaluechooser.js
  13. 4
      src/component/treevaluechooser/combo.treevaluechooser.insert.js
  14. 4
      src/component/treevaluechooser/combo.treevaluechooser.js
  15. 101
      src/core/__test__/alias.test.js
  16. 131
      src/core/__test__/base.test.js
  17. 2
      src/core/alias.js
  18. 2
      src/core/base.js
  19. 8
      src/less/core/utils/common.less
  20. 9
      src/widget/date/calendar/picker.year.js
  21. 8
      src/widget/multiselect/multiselect.combo.js
  22. 8
      src/widget/multiselect/multiselect.combo.nobar.js
  23. 8
      src/widget/multiselect/multiselect.insert.combo.js
  24. 8
      src/widget/multiselect/multiselect.insert.combo.nobar.js
  25. 2
      src/widget/multitree/multi.tree.combo.js
  26. 2
      typescript/base/combination/group.button.ts
  27. 9
      typescript/base/pane.ts
  28. 4
      typescript/core/base.ts

1
changelog.md

@ -1,5 +1,6 @@
# 更新日志 # 更新日志
2.0(2020-05) 2.0(2020-05)
- 填加bi-user-select-enable和bi-user-select-disable通用类名
- 修复树系列多层半选状态下,勾选祖先节点,后代节点不受影响的问题 - 修复树系列多层半选状态下,勾选祖先节点,后代节点不受影响的问题
- 修复上传控件多个title问题 - 修复上传控件多个title问题

79
src/case/button/node/__test__/node.arrow.test.js

@ -0,0 +1,79 @@
/**
* @author Kobi
* @date 2020/5/12
*/
describe("test node.arrow", function () {
/**
* test_author_kobi
**/
it("doRedMark 和 unRedMark", function () {
var widget = BI.Test.createWidget({
type: "bi.arrow_group_node",
text: "要标红的AAA",
});
widget.doRedMark("AAA");
expect(widget.element.find(".bi-keyword-red-mark").length).to.not.equal(0);
widget.unRedMark();
expect(widget.element.find(".bi-keyword-red-mark").length).to.equal(0);
widget.destroy();
});
/**
* test_author_kobi
**/
it("doClick", function (done) {
var widget = BI.Test.createWidget({
type: "bi.arrow_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".expander-down-font").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".expander-right-font").length).to.not.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
/**
* test_author_kobi
**/
it("点击图标", function (done) {
var widget = BI.Test.createWidget({
type: "bi.arrow_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".expander-down-font").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".expander-right-font").length).to.not.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
/**
* test_author_kobi
**/
it("setText", function () {
var widget = BI.Test.createWidget({
type: "bi.arrow_group_node",
text: "AAA",
});
widget.setText("BBB");
expect(widget.element.find(".bi-text").text()).to.equal("BBB");
widget.destroy();
});
});

66
src/case/button/node/__test__/node.first.plus.test.js

@ -0,0 +1,66 @@
/**
* @author Kobi
* @date 2020/5/12
*/
describe("test node.first.plus", function () {
/**
* test_author_kobi
**/
it("doRedMark 和 unRedMark", function () {
var widget = BI.Test.createWidget({
type: "bi.first_plus_group_node",
text: "要标红的AAA",
});
widget.doRedMark("AAA");
expect(widget.element.find(".bi-keyword-red-mark").length).to.not.equal(0);
widget.unRedMark();
expect(widget.element.find(".bi-keyword-red-mark").length).to.equal(0);
widget.destroy();
});
/**
* test_author_kobi
**/
it("doClick", function (done) {
var widget = BI.Test.createWidget({
type: "bi.first_plus_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".tree-expand-icon-type2").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".tree-expand-icon-type2").length).to.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
/**
* test_author_kobi
**/
it("点击图标", function (done) {
var widget = BI.Test.createWidget({
type: "bi.first_plus_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".tree-expand-icon-type2").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".tree-expand-icon-type2").length).to.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
});

66
src/case/button/node/__test__/node.icon.arrow.test.js

@ -0,0 +1,66 @@
/**
* @author Kobi
* @date 2020/5/12
*/
describe("test node.icon.arrow", function () {
/**
* test_author_kobi
**/
it("doRedMark 和 unRedMark", function () {
var widget = BI.Test.createWidget({
type: "bi.icon_arrow_node",
text: "要标红的AAA",
});
widget.doRedMark("AAA");
expect(widget.element.find(".bi-keyword-red-mark").length).to.not.equal(0);
widget.unRedMark();
expect(widget.element.find(".bi-keyword-red-mark").length).to.equal(0);
widget.destroy();
});
/**
* test_author_kobi
**/
it("doClick", function (done) {
var widget = BI.Test.createWidget({
type: "bi.icon_arrow_node",
text: "AAA",
});
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".expander-down-font").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".expander-right-font").length).to.not.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
/**
* test_author_kobi
**/
it("点击图标", function (done) {
var widget = BI.Test.createWidget({
type: "bi.icon_arrow_node",
text: "AAA",
});
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".expander-down-font").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".expander-right-font").length).to.not.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
});

66
src/case/button/node/__test__/node.last.plus.test.js

@ -0,0 +1,66 @@
/**
* @author Kobi
* @date 2020/5/12
*/
describe("test node.last.plus", function () {
/**
* test_author_kobi
**/
it("doRedMark 和 unRedMark", function () {
var widget = BI.Test.createWidget({
type: "bi.last_plus_group_node",
text: "要标红的AAA",
});
widget.doRedMark("AAA");
expect(widget.element.find(".bi-keyword-red-mark").length).to.not.equal(0);
widget.unRedMark();
expect(widget.element.find(".bi-keyword-red-mark").length).to.equal(0);
widget.destroy();
});
/**
* test_author_kobi
**/
it("doClick", function (done) {
var widget = BI.Test.createWidget({
type: "bi.last_plus_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".tree-expand-icon-type4").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".tree-expand-icon-type4").length).to.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
/**
* test_author_kobi
**/
it("点击图标", function (done) {
var widget = BI.Test.createWidget({
type: "bi.last_plus_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".tree-expand-icon-type4").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".tree-expand-icon-type4").length).to.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
});

66
src/case/button/node/__test__/node.mid.plus.test.js

@ -0,0 +1,66 @@
/**
* @author Kobi
* @date 2020/5/12
*/
describe("test node.mid.plus", function () {
/**
* test_author_kobi
**/
it("doRedMark 和 unRedMark", function () {
var widget = BI.Test.createWidget({
type: "bi.mid_plus_group_node",
text: "要标红的AAA",
});
widget.doRedMark("AAA");
expect(widget.element.find(".bi-keyword-red-mark").length).to.not.equal(0);
widget.unRedMark();
expect(widget.element.find(".bi-keyword-red-mark").length).to.equal(0);
widget.destroy();
});
/**
* test_author_kobi
**/
it("doClick", function (done) {
var widget = BI.Test.createWidget({
type: "bi.mid_plus_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".tree-expand-icon-type3").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".tree-expand-icon-type3").length).to.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
/**
* test_author_kobi
**/
it("点击图标", function (done) {
var widget = BI.Test.createWidget({
type: "bi.mid_plus_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".tree-expand-icon-type3").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".tree-expand-icon-type3").length).to.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
});

73
src/case/button/node/__test__/node.multilayer.icon.arrow.test.js

@ -0,0 +1,73 @@
/**
* @author Kobi
* @date 2020/5/12
*/
describe("test node.multilayer.icon.arrow", function () {
/**
* test_author_kobi
**/
it("doRedMark 和 unRedMark", function () {
var widget = BI.Test.createWidget({
type: "bi.multilayer_icon_arrow_node",
text: "要标红的AAA",
layer: 3,
});
expect(widget.isOnce()).to.equal(true);
widget.doRedMark("AAA");
expect(widget.element.find(".bi-keyword-red-mark").length).to.not.equal(0);
widget.unRedMark();
expect(widget.element.find(".bi-keyword-red-mark").length).to.equal(0);
widget.destroy();
});
/**
* test_author_kobi
**/
it("isSelected 和 setSelected", function () {
var widget = BI.Test.createWidget({
type: "bi.multilayer_icon_arrow_node",
text: "AAA",
layer: 3,
});
widget.setSelected(true);
expect(widget.element.find(".active").length).to.not.equal(0);
expect(widget.isSelected()).to.equal(true);
widget.destroy();
});
/**
* test_author_kobi
**/
it("doClick", function (done) {
var widget = BI.Test.createWidget({
type: "bi.multilayer_icon_arrow_node",
text: "AAA",
layer: 3,
});
BI.nextTick(function () {
widget.element.click();
expect(widget.isSelected()).to.equal(true);
widget.destroy();
done();
});
});
/**
* test_author_kobi
**/
it("点击图标", function (done) {
var widget = BI.Test.createWidget({
type: "bi.multilayer_icon_arrow_node",
text: "AAA",
layer: 3,
});
BI.nextTick(function () {
widget.node.element.click();
expect(widget.element.find(".expander-down-font").length).to.not.equal(0);
widget.destroy();
done();
});
});
});

66
src/case/button/node/__test__/node.plus.test.js

@ -0,0 +1,66 @@
/**
* @author Kobi
* @date 2020/5/12
*/
describe("test node.plus", function () {
/**
* test_author_kobi
**/
it("doRedMark 和 unRedMark", function () {
var widget = BI.Test.createWidget({
type: "bi.plus_group_node",
text: "要标红的AAA",
});
widget.doRedMark("AAA");
expect(widget.element.find(".bi-keyword-red-mark").length).to.not.equal(0);
widget.unRedMark();
expect(widget.element.find(".bi-keyword-red-mark").length).to.equal(0);
widget.destroy();
});
/**
* test_author_kobi
**/
it("doClick", function (done) {
var widget = BI.Test.createWidget({
type: "bi.plus_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".tree-expand-icon-type1").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.element.click();
expect(widget.element.find(".tree-expand-icon-type1").length).to.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
/**
* test_author_kobi
**/
it("点击图标", function (done) {
var widget = BI.Test.createWidget({
type: "bi.plus_group_node",
text: "AAA",
});
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".tree-expand-icon-type1").length).to.not.equal(0);
BI.delay(function () {
BI.nextTick(function () {
widget.checkbox.element.click();
expect(widget.element.find(".tree-expand-icon-type1").length).to.equal(0);
widget.destroy();
done();
});
}, 300);
});
});
});

18
src/case/editor/__test__/editor.clear.test.js

@ -89,4 +89,22 @@ describe("clear_editor", function () {
editor.destroy(); editor.destroy();
}); });
/**
* test_author_windy
*/
it("getValue1", function () {
var editor = BI.Test.createWidget({
type: "bi.clear_editor",
width: 300,
value: "12346 7890",
watermark: "添加合法性判断",
errorText: "长度必须大于4",
validationChecker: function () {
return this.getValue().length > 4;
}
});
expect(editor.getValue()).to.equal("12346 7890");
editor.destroy();
});
}); });

3
src/case/editor/editor.clear.js

@ -144,8 +144,7 @@ BI.ClearEditor = BI.inherit(BI.Widget, {
getValue: function () { getValue: function () {
if (this.isValid()) { if (this.isValid()) {
var res = this.editor.getValue().match(/[\S]+/g); return this.editor.getValue();
return BI.isNull(res) ? "" : res[res.length - 1];
} }
}, },

7
src/case/linersegment/linear.segment.js

@ -3,6 +3,9 @@ BI.LinearSegment = BI.inherit(BI.Widget, {
props: { props: {
baseCls: "bi-linear-segment bi-split-bottom", baseCls: "bi-linear-segment bi-split-bottom",
items: [], items: [],
layouts: [{
type: "bi.center"
}],
height: 29 height: 29
}, },
@ -14,9 +17,7 @@ BI.LinearSegment = BI.inherit(BI.Widget, {
type: "bi.linear_segment_button", type: "bi.linear_segment_button",
height: o.height - 1 height: o.height - 1
}), }),
layout: [{ layouts: o.layouts,
type: "bi.center"
}],
listeners: [{ listeners: [{
eventName: "__EVENT_CHANGE__", eventName: "__EVENT_CHANGE__",
action: function () { action: function () {

4
src/component/treevaluechooser/combo.listtreevaluechooser.js

@ -52,8 +52,8 @@ BI.ListTreeValueChooserInsertCombo = BI.inherit(BI.AbstractListTreeValueChooser,
} }
}, { }, {
eventName: BI.MultiTreeListCombo.EVENT_CLICK_ITEM, eventName: BI.MultiTreeListCombo.EVENT_CLICK_ITEM,
action: function () { action: function (v) {
self.fireEvent(BI.ListTreeValueChooserInsertCombo.EVENT_CLICK_ITEM); self.fireEvent(BI.ListTreeValueChooserInsertCombo.EVENT_CLICK_ITEM, v);
} }
}, { }, {
eventName: BI.MultiTreeListCombo.EVENT_SEARCHING, eventName: BI.MultiTreeListCombo.EVENT_SEARCHING,

4
src/component/treevaluechooser/combo.treevaluechooser.insert.js

@ -51,8 +51,8 @@ BI.TreeValueChooserInsertCombo = BI.inherit(BI.AbstractTreeValueChooser, {
} }
}, { }, {
eventName: BI.MultiTreeInsertCombo.EVENT_CLICK_ITEM, eventName: BI.MultiTreeInsertCombo.EVENT_CLICK_ITEM,
action: function () { action: function (v) {
self.fireEvent(BI.TreeValueChooserInsertCombo.EVENT_CLICK_ITEM); self.fireEvent(BI.TreeValueChooserInsertCombo.EVENT_CLICK_ITEM, v);
} }
}, { }, {
eventName: BI.MultiTreeInsertCombo.EVENT_SEARCHING, eventName: BI.MultiTreeInsertCombo.EVENT_SEARCHING,

4
src/component/treevaluechooser/combo.treevaluechooser.js

@ -51,8 +51,8 @@ BI.TreeValueChooserCombo = BI.inherit(BI.AbstractTreeValueChooser, {
} }
}, { }, {
eventName: BI.MultiTreeCombo.EVENT_CLICK_ITEM, eventName: BI.MultiTreeCombo.EVENT_CLICK_ITEM,
action: function () { action: function (v) {
self.fireEvent(BI.TreeValueChooserCombo.EVENT_CLICK_ITEM); self.fireEvent(BI.TreeValueChooserCombo.EVENT_CLICK_ITEM, v);
} }
}, { }, {
eventName: BI.MultiTreeCombo.EVENT_SEARCHING, eventName: BI.MultiTreeCombo.EVENT_SEARCHING,

101
src/core/__test__/alias.test.js

@ -31,4 +31,105 @@ describe("aliasFunctionTest", function () {
expect(encodeString).to.equal("tableName120"); expect(encodeString).to.equal("tableName120");
expect(BI.decodeURIComponent(encodeString)).to.equal(targetString); expect(BI.decodeURIComponent(encodeString)).to.equal(targetString);
}); });
/**
* test_author_kobi
**/
it("cjkEncode 和 cjkDecode ", function () {
expect(BI.cjkEncode("测试")).to.eql("[6d4b][8bd5]");
expect(BI.cjkEncode(123)).to.eql(123);
expect(BI.cjkDecode("[6d4b][8bd5]")).to.eql("测试");
expect(BI.cjkDecode("6d4b 8bd5")).to.eql("6d4b 8bd5");
expect(BI.cjkDecode(null)).to.eql("");
});
/**
* test_author_kobi
**/
it("jsonEncode 和 jsonDecode", function () {
var jsonString = '{"a":1,"b":"测\\"试","c":[5,6],"d":null,"e":false}';
var obj = {
a: 1,
b: '测"试',
c: [5, 6],
d: null,
e: false,
};
expect(BI.jsonEncode(obj)).to.eql(jsonString);
expect(BI.jsonDecode(jsonString)).to.eql(obj);
expect(BI.jsonEncode({ a: function(){return 1} })).to.eql('{"a":function(){return 1}}');
expect(BI.jsonDecode("{__time__:878313600000}")).to.eql(new Date(878313600000));
});
/**
* test_author_kobi
**/
it("getEncodeURL", function () {
expect(BI.getEncodeURL("design/{tableName}/{fieldName}",{tableName: "A", fieldName: "a"})).to.eql("design/A/a");
});
/**
* test_author_kobi
**/
it("contentFormat", function () {
expect(BI.contentFormat("", "DTyyyy-MM-dd")).to.eql("");
expect(BI.contentFormat(878313600000, "")).to.eql("878313600000");
expect(BI.contentFormat("test", "T")).to.eql("test");
expect(BI.contentFormat(878313600000, "E")).to.eql("9E11");
expect(BI.contentFormat(1000.23456789, "0,000.####")).to.eql("1,000.2346");
expect(BI.contentFormat(879051600000, "DTyyyy-MM-dd")).to.eql("1997-11-09");
expect(BI.contentFormat(879051600000, "DTyyyy-MM-dd HH:mm:ss a")).to.eql("1997-11-09 13:00:00 pm");
expect(BI.contentFormat(879051600000, "DTyyyy-MM-dd hh:mm:ss a")).to.eql("1997-11-09 01:00:00 pm");
expect(BI.contentFormat(879051600000, "DTyyy-M-d H:m:s a")).to.eql("97-11-9 13:0:0 pm");
expect(BI.contentFormat(879048000000, "DTyyy-M-d h:m:s a")).to.eql("97-11-9 12:0:0 pm");
});
/**
* test_author_kobi
**/
it("parseFmt", function () {
expect(BI.parseFmt("yyyy-MM-dd HH:mm:ss")).to.eql("%Y-%X-%d %H:%M:%S");
expect(BI.parseFmt("yyyy-MM-d hh:mm:ss")).to.eql("%Y-%X-%e %I:%M:%S");
expect(BI.parseFmt("")).to.eql("");
});
/**
* test_author_kobi
**/
it("str2Date", function () {
expect(BI.str2Date('2013-12-12', 'yyyy-MM-dd')).to.eql(new Date(2013, 11, 12));
expect(BI.str2Date('2013-12-12', 123)).to.eql(null);
});
/**
* test_author_kobi
**/
it("object2Number", function () {
expect(BI.object2Number(null)).to.eql(0);
expect(BI.object2Number(123)).to.eql(123);
expect(BI.object2Number("1.23")).to.eql(1.23);
expect(BI.object2Number({ a: 2 })).to.eql(NaN);
});
/**
* test_author_kobi
**/
it("object2Date", function () {
expect(BI.object2Date(null)).to.eql(new Date());
expect(BI.object2Date(new Date(1997, 10, 9))).to.eql(new Date(1997, 10, 9));
expect(BI.object2Date(879051600000)).to.eql(new Date(879051600000));
expect(BI.object2Time("1997-11-09")).to.eql(new Date(1997, 10, 9));
expect(BI.object2Date({ a: 2 })).to.eql(new Date());
});
/**
* test_author_kobi
**/
it("object2Time", function () {
expect(BI.object2Time(null)).to.eql(new Date());
expect(BI.object2Time(new Date(1997, 11, 9))).to.eql(new Date(1997, 11, 9));
expect(BI.object2Time("1997-11-09 13:00:00")).to.eql(new Date(1997, 10, 9, 13, 0, 0));
expect(BI.object2Time("13:00:00")).to.eql(new Date(1970, 0, 1, 13, 0, 0));
});
}); });

131
src/core/__test__/base.test.js

@ -285,7 +285,7 @@ describe("baseFunctionTest", function () {
it("number", function () { it("number", function () {
expect(BI.parseSafeInt(9007199254740992)).to.equal(9007199254740991); expect(BI.parseSafeInt(9007199254740992)).to.equal(9007199254740991);
expect(BI.isNegativeInteger(-3)).to.equal(true); expect(BI.isNegativeInteger(-3)).to.equal(true);
expect(BI.isFloat(1.2)).to.equal(false); expect(BI.isFloat(1.2)).to.equal(true);
expect(BI.isOdd(1)).to.equal(true); expect(BI.isOdd(1)).to.equal(true);
expect(BI.isOdd("a")).to.equal(false); expect(BI.isOdd("a")).to.equal(false);
expect(BI.isEven("a")).to.equal(false); expect(BI.isEven("a")).to.equal(false);
@ -304,7 +304,132 @@ describe("baseFunctionTest", function () {
expect(BI.camelize("background-color")).to.equal("backgroundColor"); expect(BI.camelize("background-color")).to.equal("backgroundColor");
expect(BI.escape("'\\")).to.equal("\\'\\\\"); expect(BI.escape("'\\")).to.equal("\\'\\\\");
expect(BI.leftPad("123", 5, "0")).to.equal("00123"); expect(BI.leftPad("123", 5, "0")).to.equal("00123");
var cls = 'my-class', text = 'Some text'; const cls = "my-class", text = "Some text";
expect(BI.format('<div class="{0}">{1}</div>', cls, text)).to.equal('<div class="my-class">Some text</div>'); expect(BI.format("<div class=\"{0}\">{1}</div>", cls, text)).to.equal("<div class=\"my-class\">Some text</div>");
});
/**
* test_author_kobi
**/
it("checkDateVoid", function () {
const minDate = "1900-02-02";
const maxDate = "2099-11-29";
expect(BI.checkDateVoid(1899, 2, 2, minDate, maxDate)).to.eql(["y"]);
expect(BI.checkDateVoid(2100, 2, 2, minDate, maxDate)).to.eql(["y", 1]);
expect(BI.checkDateVoid(1900, 1, 2, minDate, maxDate)).to.eql(["m"]);
expect(BI.checkDateVoid(2099, 12, 2, minDate, maxDate)).to.eql(["m", 1]);
expect(BI.checkDateVoid(1900, 2, 1, minDate, maxDate)).to.eql(["d"]);
expect(BI.checkDateVoid(2099, 11, 30, minDate, maxDate)).to.eql(["d", 1]);
});
/**
* test_author_kobi
**/
it("parseDateTime", function () {
expect(BI.parseDateTime("19971109", "%y%x%d")).to.eql(BI.getDate(1997, 10, 9));
expect(BI.parseDateTime("12:34:56", "%H:%M:%S")).to.eql(BI.getDate(1935, 0, 25, 12, 34, 56));
expect(BI.parseDateTime("1997-11-09 3:23:23 pm", "%y-%x-%d %H:%M:%S %P")).to.eql(BI.getDate(1997, 10, 9, 15, 23, 23));
expect(BI.parseDateTime("1997-11-09 15:23:23 am", "%y-%x-%d %H:%M:%S %P")).to.eql(BI.getDate(1997, 10, 9, 3, 23, 23));
expect(BI.parseDateTime("a-b-c d:e:f", "%y-%x-%d %H:%M:%S").toString()).to.eql(BI.getDate().toString());
});
/**
* test_author_kobi
**/
it("getDate 和 getTime", function () {
expect(BI.getDate().toString()).to.eql(new Date().toString());
expect(BI.getDate(1997)).to.eql(new Date(1997));
expect(BI.getDate(1997, 10)).to.eql(new Date(1997, 10));
expect(BI.getDate(1997, 10, 9)).to.eql(new Date(1997, 10, 9));
expect(BI.getDate(1997, 10, 9, 12)).to.eql(new Date(1997, 10, 9, 12));
expect(BI.getDate(1997, 10, 9, 12, 34)).to.eql(new Date(1997, 10, 9, 12, 34));
expect(BI.getDate(1997, 10, 9, 12, 34, 56)).to.eql(new Date(1997, 10, 9, 12, 34, 56));
expect(BI.getDate(1997, 10, 9, 12, 34, 56, 78)).to.eql(new Date(1997, 10, 9, 12, 34, 56, 78));
expect(BI.getTime()).to.eql(new Date().getTime());
expect(BI.getTime(1997)).to.eql(new Date(1997).getTime());
expect(BI.getTime(1997, 10)).to.eql(new Date(1997, 10).getTime());
expect(BI.getTime(1997, 10, 9)).to.eql(new Date(1997, 10, 9).getTime());
expect(BI.getTime(1997, 10, 9, 12)).to.eql(new Date(1997, 10, 9, 12).getTime());
expect(BI.getTime(1997, 10, 9, 12, 34)).to.eql(new Date(1997, 10, 9, 12, 34).getTime());
expect(BI.getTime(1997, 10, 9, 12, 34, 56)).to.eql(new Date(1997, 10, 9, 12, 34, 56).getTime());
expect(BI.getTime(1997, 10, 9, 12, 34, 56, 78)).to.eql(new Date(1997, 10, 9, 12, 34, 56, 78).getTime());
});
/**
* test_author_kobi
**/
it("数字相关方法补充", function () {
const iteratee = function (a, b) {
return a > b ? a : b;
};
expect(BI.isNaturalNumber(1.25)).to.eql(false);
expect(BI.isPositiveInteger(-15)).to.eql(false);
expect(BI.isNegativeInteger(+15)).to.eql(false);
expect(BI.isFloat(15)).to.eql(false);
expect(BI.sum([4, 3, 2, 1], iteratee)).to.eql(12);
});
/**
* test_author_kobi
**/
it("集合相关方法补充", function () {
const array = [{
user: "barney",
active: true,
}, {
user: "fred",
active: false,
}, {
user: "pebbles",
active: false,
}];
expect(BI.backEvery(array, (index, value) => value.user === "kobi")).to.eql(false);
expect(BI.backFind(array, ["active", false])).to.eql(array[2]);
expect(BI.abc2Int("ABCD999")).to.eql(0);
expect(BI.int2Abc(0)).to.eql("");
expect(BI.int2Abc(26)).to.eql("Z");
});
/**
* test_author_kobi
**/
it("数组相关方法补充", function () {
expect(BI.makeArrayByArray([], 5)).to.eql([]);
expect(BI.uniq(null, true, (a, b) => a > b)).to.eql([]);
});
/**
* test_author_kobi
**/
it("对象相关方法补充", function () {
var obj = {
a: 1,
b: 2,
c: 3,
};
expect(BI.has(obj, [])).to.eql(false);
expect(BI.has(obj, ["a", "b"])).to.eql(true);
expect(BI.freeze("1")).to.eql("1");
});
/**
* test_author_kobi
**/
it("deep方法补充", function () {
var obj = {
a: 1,
b: 2,
c: {
d: 3,
e: {
f: 4,
},
},
};
expect(BI.isDeepMatch(null, { d: 3, e: { f: 4 } })).to.eql(false);
expect(BI.isDeepMatch(obj, { d: 3, e: { f: 5 } })).to.eql(false);
expect(BI.deepIndexOf(obj, { d: 3, e: { f: 5 } })).to.eql(-1);
expect(BI.deepRemove(obj, { d: 3, e: { f: 4 } })).to.eql(true);
expect(BI.deepWithout(obj, { d: 3, e: { f: 4 } })).to.eql({ a: 1, b: 2 });
}); });
}); });

2
src/core/alias.js

@ -617,7 +617,7 @@
* BI.getEncodeURL("design/{tableName}/{fieldName}",{tableName: "A", fieldName: "a"}) // design/A/a * BI.getEncodeURL("design/{tableName}/{fieldName}",{tableName: "A", fieldName: "a"}) // design/A/a
*/ */
BI.getEncodeURL = function (urlTemplate, param) { BI.getEncodeURL = function (urlTemplate, param) {
return urlTemplate.replaceAll("\\{(.*?)\\}", function (ori, str) { return BI.replaceAll(urlTemplate, "\\{(.*?)\\}", function (ori, str) {
return BI.encodeURIComponent(BI.isObject(param) ? param[str] : param); return BI.encodeURIComponent(BI.isObject(param) ? param[str] : param);
}); });
}; };

2
src/core/base.js

@ -825,7 +825,7 @@ if (!_global.BI) {
}, },
isFloat: function (number) { isFloat: function (number) {
if (/^([+-]?)\\d*\\.\\d+$/.test(number)) { if (/^([+-]?)\d*\.\d+$/.test(number)) {
return true; return true;
} }
return false; return false;

8
src/less/core/utils/common.less

@ -1218,3 +1218,11 @@ textarea {
} }
} }
} }
.bi-user-select-enable {
.user-select-enable();
}
.bi-user-select-disable {
.user-select-disable();
}

9
src/widget/date/calendar/picker.year.js

@ -50,7 +50,8 @@ BI.YearPicker = BI.inherit(BI.Widget, {
type: "bi.year_date_combo", type: "bi.year_date_combo",
min: o.min, min: o.min,
behaviors: o.behaviors, behaviors: o.behaviors,
max: o.max max: o.max,
width: 50
}); });
this.year.on(BI.YearDateCombo.EVENT_CHANGE, function () { this.year.on(BI.YearDateCombo.EVENT_CHANGE, function () {
self.setValue(self.year.getValue()); self.setValue(self.year.getValue());
@ -68,15 +69,9 @@ BI.YearPicker = BI.inherit(BI.Widget, {
width: 25 width: 25
}, { }, {
type: "bi.center_adapt", type: "bi.center_adapt",
items: [{
el: {
type: "bi.horizontal_float",
width: 50,
items: [{ items: [{
el: this.year el: this.year
}] }]
}
}]
}, { }, {
el: { el: {
type: "bi.center_adapt", type: "bi.center_adapt",

8
src/widget/multiselect/multiselect.combo.js

@ -189,7 +189,7 @@ BI.MultiSelectCombo = BI.inherit(BI.Single, {
this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () {
this.setValue(self.storeValue); this.setValue(self.storeValue);
BI.nextTick(function () { BI.nextTick(function () {
self.populate(); self._populate();
}); });
}); });
// 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件 // 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件
@ -421,6 +421,10 @@ BI.MultiSelectCombo = BI.inherit(BI.Single, {
this.popup.setStartValue(value); this.popup.setStartValue(value);
}, },
_populate: function () {
this.combo.populate.apply(this.combo, arguments);
},
setValue: function (v) { setValue: function (v) {
this.storeValue = v || {}; this.storeValue = v || {};
this._assertValue(this.storeValue); this._assertValue(this.storeValue);
@ -433,7 +437,7 @@ BI.MultiSelectCombo = BI.inherit(BI.Single, {
}, },
populate: function () { populate: function () {
this.combo.populate.apply(this.combo, arguments); this._populate.apply(this, arguments);
this.numberCounter.populateSwitcher.apply(this.numberCounter, arguments); this.numberCounter.populateSwitcher.apply(this.numberCounter, arguments);
} }
}); });

8
src/widget/multiselect/multiselect.combo.nobar.js

@ -178,7 +178,7 @@ BI.MultiSelectNoBarCombo = BI.inherit(BI.Single, {
this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () {
this.setValue(self.storeValue); this.setValue(self.storeValue);
BI.nextTick(function () { BI.nextTick(function () {
self.populate(); self._populate();
}); });
}); });
// 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件 // 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件
@ -414,6 +414,10 @@ BI.MultiSelectNoBarCombo = BI.inherit(BI.Single, {
this.popup.setStartValue(value); this.popup.setStartValue(value);
}, },
_populate: function () {
this.combo.populate.apply(this.combo, arguments);
},
setValue: function (v) { setValue: function (v) {
this.storeValue = { this.storeValue = {
type: BI.Selection.Multi, type: BI.Selection.Multi,
@ -428,7 +432,7 @@ BI.MultiSelectNoBarCombo = BI.inherit(BI.Single, {
}, },
populate: function () { populate: function () {
this.combo.populate.apply(this.combo, arguments); this._populate.apply(this, arguments);
this.numberCounter.populateSwitcher.apply(this.numberCounter, arguments); this.numberCounter.populateSwitcher.apply(this.numberCounter, arguments);
} }
}); });

8
src/widget/multiselect/multiselect.insert.combo.js

@ -185,7 +185,7 @@ BI.MultiSelectInsertCombo = BI.inherit(BI.Single, {
this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () {
this.setValue(self.storeValue); this.setValue(self.storeValue);
BI.nextTick(function () { BI.nextTick(function () {
self.populate(); self._populate();
}); });
}); });
// 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件 // 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件
@ -439,6 +439,10 @@ BI.MultiSelectInsertCombo = BI.inherit(BI.Single, {
this.popup.setStartValue(value); this.popup.setStartValue(value);
}, },
_populate: function () {
this.combo.populate.apply(this.combo, arguments);
},
setValue: function (v) { setValue: function (v) {
this.storeValue = v || {}; this.storeValue = v || {};
this._assertValue(this.storeValue); this._assertValue(this.storeValue);
@ -451,7 +455,7 @@ BI.MultiSelectInsertCombo = BI.inherit(BI.Single, {
}, },
populate: function () { populate: function () {
this.combo.populate.apply(this.combo, arguments); this._populate.apply(this, arguments);
this.numberCounter.populateSwitcher.apply(this.numberCounter, arguments); this.numberCounter.populateSwitcher.apply(this.numberCounter, arguments);
} }
}); });

8
src/widget/multiselect/multiselect.insert.combo.nobar.js

@ -180,7 +180,7 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, {
this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () {
this.setValue(self.storeValue); this.setValue(self.storeValue);
BI.nextTick(function () { BI.nextTick(function () {
self.populate(); self._populate();
}); });
}); });
// 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件 // 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件
@ -434,6 +434,10 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, {
this.popup.setStartValue(value); this.popup.setStartValue(value);
}, },
_populate: function () {
this.combo.populate.apply(this.combo, arguments);
},
setValue: function (v) { setValue: function (v) {
this.storeValue = { this.storeValue = {
type: BI.Selection.Multi, type: BI.Selection.Multi,
@ -448,7 +452,7 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, {
}, },
populate: function () { populate: function () {
this.combo.populate.apply(this.combo, arguments); this._populate.apply(this, arguments);
this.numberCounter.populateSwitcher.apply(this.numberCounter, arguments); this.numberCounter.populateSwitcher.apply(this.numberCounter, arguments);
} }
}); });

2
src/widget/multitree/multi.tree.combo.js

@ -181,7 +181,7 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, {
}; };
this.getSearcher().setState(checked ? BI.Selection.Multi : BI.Selection.None); this.getSearcher().setState(checked ? BI.Selection.Multi : BI.Selection.None);
self.numberCounter.setButtonChecked(val); self.numberCounter.setButtonChecked(val);
self.fireEvent(BI.MultiTreeCombo.EVENT_CLICK_ITEM); self.fireEvent(BI.MultiTreeCombo.EVENT_CLICK_ITEM, self.combo.getValue());
}); });
this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () {

2
typescript/base/combination/group.button.ts

@ -9,7 +9,7 @@ export interface _ButtonGroup extends _Widget {
removeItems(values: any): void; removeItems(values: any): void;
populate(items?: any): void; populate(items?: any, ...args: any[]): void;
setNotSelectedValue(v: any): void; setNotSelectedValue(v: any): void;

9
typescript/base/pane.ts

@ -1,10 +1,11 @@
import { _Widget } from "../core/widget"; import { _Widget } from "../core/widget";
export interface _Pane extends _Widget { export interface _Pane extends _Widget {
_assertTip: (..._args: any[]) => void; _assertTip(..._args: any[]): void;
loading: (..._args: any[]) => void; loading(..._args: any[]): void;
loaded: (..._args: any[]) => void; loaded(..._args: any[]): void;
check: (..._args: any[]) => void; check(..._args: any[]): void;
populate(...args: any[]): void;
} }
export interface _PaneStatic { export interface _PaneStatic {

4
typescript/core/base.ts

@ -329,9 +329,9 @@ export interface _base {
isEven: (value: string|number) => boolean; isEven: (value: string|number) => boolean;
sum: (array: any[], iteratee: Function, context: any) => number; sum: (array: any[], iteratee?: Function, context?: any) => number;
average: (array: any[], iteratee: Function, context: any) => number; average: (array: any[], iteratee?: Function, context?: any) => number;
trim: (string?: string, chars?: string) => string; trim: (string?: string, chars?: string) => string;

Loading…
Cancel
Save