fineui是帆软报表和BI产品线所使用的前端框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

8025 lines
239 KiB

/**
* 可以改变图标的button
*
* Created by GUY on 2016/2/2.
*
* @class BI.IconChangeButton
* @extends BI.Single
*/
BI.IconChangeButton = BI.inherit(BI.Single, {
_defaultConfig: function () {
var conf = BI.IconChangeButton.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: "bi-icon-change-button",
iconClass: "",
iconWidth: null,
iconHeight: null,
stopEvent: false,
stopPropagation: false,
selected: false,
once: false, //点击一次选中有效,再点无效
forceSelected: false, //点击即选中, 选中了就不会被取消
forceNotSelected: false, //无论怎么点击都不会被选中
disableSelected: false, //使能选中
shadow: false,
isShadowShowingOnSelected: false, //选中状态下是否显示阴影
trigger: null,
handler: BI.emptyFn
})
},
_init: function () {
BI.IconChangeButton.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.button = BI.createWidget({
type: "bi.icon_button",
element: this,
cls: o.iconClass,
height: o.height,
iconWidth: o.iconWidth,
iconHeight: o.iconHeight,
stopEvent: o.stopEvent,
stopPropagation: o.stopPropagation,
selected: o.selected,
once: o.once,
forceSelected: o.forceSelected,
forceNotSelected: o.forceNotSelected,
disableSelected: o.disableSelected,
shadow: o.shadow,
isShadowShowingOnSelected: o.isShadowShowingOnSelected,
trigger: o.trigger,
handler: o.handler
});
this.button.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.button.on(BI.IconButton.EVENT_CHANGE, function () {
self.fireEvent(BI.IconChangeButton.EVENT_CHANGE, arguments);
});
},
isSelected: function () {
return this.button.isSelected();
},
setSelected: function (b) {
this.button.setSelected(b);
},
setIcon: function (cls) {
var o = this.options;
if (o.iconClass !== cls) {
this.element.removeClass(o.iconClass).addClass(cls);
o.iconClass = cls;
}
},
setEnable: function (b) {
BI.IconChangeButton.superclass.setEnable.apply(this, arguments);
this.button.setEnable(b);
}
});
BI.IconChangeButton.EVENT_CHANGE = "IconChangeButton.EVENT_CHANGE";
$.shortcut("bi.icon_change_button", BI.IconChangeButton);/**
* guy
* @extends BI.Single
* @type {*|void|Object}
*/
BI.HalfIconButton = BI.inherit(BI.IconButton, {
_defaultConfig: function() {
var conf = BI.HalfIconButton.superclass._defaultConfig.apply(this,arguments);
return BI.extend(conf, {
extraCls: "bi-half-icon-button check-half-select-icon",
height: 16,
width: 16,
iconWidth: 16,
iconHeight: 16,
selected: false
})
},
_init : function() {
BI.HalfIconButton.superclass._init.apply(this, arguments);
},
doClick: function(){
BI.HalfIconButton.superclass.doClick.apply(this, arguments);
if(this.isValid()){
this.fireEvent(BI.HalfIconButton.EVENT_CHANGE);
}
}
});
BI.HalfIconButton.EVENT_CHANGE = "HalfIconButton.EVENT_CHANGE";
$.shortcut("bi.half_icon_button", BI.HalfIconButton);/**
* 统一的trigger图标按钮
*
* Created by GUY on 2015/9/16.
* @class BI.TriggerIconButton
* @extends BI.IconButton
*/
BI.TriggerIconButton = BI.inherit(BI.IconButton, {
_defaultConfig: function () {
var conf = BI.TriggerIconButton.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-trigger-icon-button",
extraCls: "pull-down-font"
});
},
_init: function () {
BI.TriggerIconButton.superclass._init.apply(this, arguments);
},
doClick: function () {
BI.TriggerIconButton.superclass.doClick.apply(this, arguments);
if (this.isValid()) {
this.fireEvent(BI.TriggerIconButton.EVENT_CHANGE, this);
}
}
});
BI.TriggerIconButton.EVENT_CHANGE = "TriggerIconButton.EVENT_CHANGE";
$.shortcut("bi.trigger_icon_button", BI.TriggerIconButton);/**
* guy
* 复选框item
* @type {*|void|Object}
*/
BI.MultiSelectItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function() {
return BI.extend(BI.MultiSelectItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-multi-select-item",
height: 25,
logic: {
dynamic: false
}
})
},
_init : function() {
BI.MultiSelectItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.checkbox"
});
this.text = BI.createWidget({
type: "bi.label",
cls: "list-item-text",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
rgap: o.rgap,
text: o.text,
keyword: o.keyword,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function(type){
if(type === BI.Events.CLICK) {
self.setSelected(self.isSelected());
}
});
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection("left", {
type: "bi.center_adapt",
items: [this.checkbox],
width: 36
} ,this.text)
}))));
},
doRedMark: function(){
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function(){
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function(){
BI.MultiSelectItem.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isSelected());
},
setSelected: function(v){
BI.MultiSelectItem.superclass.setSelected.apply(this, arguments);
this.checkbox.setSelected(v);
}
});
$.shortcut("bi.multi_select_item", BI.MultiSelectItem);/**
* Created by GUY on 2016/2/2.
*
* @class BI.SingleSelectIconTextItem
* @extends BI.BasicButton
*/
BI.SingleSelectIconTextItem = BI.inherit(BI.Single, {
_defaultConfig: function () {
return BI.extend(BI.SingleSelectIconTextItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-single-select-icon-text-item bi-list-item-active",
iconClass: "",
hgap: 10,
height: 25
})
},
_init: function () {
BI.SingleSelectIconTextItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.text = BI.createWidget({
type: "bi.icon_text_item",
element: this,
cls: o.iconClass,
once: o.once,
selected: o.selected,
height: o.height,
iconHeight: o.iconHeight,
iconWidth: o.iconWidth,
text: o.text,
keyword: o.keyword,
value: o.value,
py: o.py
});
this.text.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
},
isSelected: function () {
return this.text.isSelected();
},
setSelected: function (b) {
this.text.setSelected(b);
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.SingleSelectIconTextItem.superclass.doClick.apply(this, arguments);
}
});
$.shortcut("bi.single_select_icon_text_item", BI.SingleSelectIconTextItem);/**
* guy
* 复选框item
* @type {*|void|Object}
*/
BI.SingleSelectItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
return BI.extend(BI.SingleSelectItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-single-select-item bi-list-item-active",
hgap: 10,
height: 25
})
},
_init: function () {
BI.SingleSelectItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.text = BI.createWidget({
type: "bi.label",
element: this,
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
keyword: o.keyword,
value: o.value,
py: o.py
});
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.SingleSelectItem.superclass.doClick.apply(this, arguments);
},
setSelected: function (v) {
BI.SingleSelectItem.superclass.setSelected.apply(this, arguments);
}
});
$.shortcut("bi.single_select_item", BI.SingleSelectItem);/**
* guy
* 单选框item
* @type {*|void|Object}
*/
BI.SingleSelectRadioItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
return BI.extend(BI.SingleSelectRadioItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-single-select-radio-item bi-list-item-active",
logic: {
dynamic: false
},
hgap: 10,
height: 25
})
},
_init: function () {
BI.SingleSelectRadioItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.radio = BI.createWidget({
type: "bi.radio"
});
this.radio.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self.setSelected(!self.isSelected());
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.text = BI.createWidget({
type: "bi.label",
cls: "list-item-text",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
keyword: o.keyword,
value: o.value,
py: o.py
});
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection("left", {
type: "bi.center_adapt",
items: [this.radio],
width: 36
}, this.text)
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.SingleSelectRadioItem.superclass.doClick.apply(this, arguments);
this.radio.setSelected(this.isSelected());
},
setSelected: function (v) {
BI.SingleSelectRadioItem.superclass.setSelected.apply(this, arguments);
this.radio.setSelected(v);
}
});
$.shortcut("bi.single_select_radio_item", BI.SingleSelectRadioItem);/**
* Created by roy on 15/10/16.
*/
BI.ArrowNode = BI.inherit(BI.NodeButton, {
_defaultConfig: function () {
var conf = BI.ArrowNode.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-arrow-group-node bi-list-item",
logic: {
dynamic: false
},
id: "",
pId: "",
open: false,
height: 25
});
},
_init: function () {
var self = this, o = this.options;
BI.ArrowNode.superclass._init.apply(this, arguments);
this.checkbox = BI.createWidget({
type: "bi.arrow_tree_group_node_checkbox",
iconWidth: 13,
iconHeight: 13
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self.setSelected(self.isSelected());
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
width: 25,
el: this.checkbox
}, this.text);
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.ArrowNode.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isOpened());
},
setValue: function (v) {
this.text.setValue(v);
},
setOpened: function (v) {
BI.ArrowNode.superclass.setOpened.apply(this, arguments);
this.checkbox.setSelected(v);
}
});
$.shortcut("bi.arrow_group_node", BI.ArrowNode);/**
* 加号表示的组节点
* Created by GUY on 2015/9/6.
* @class BI.FirstPlusGroupNode
* @extends BI.NodeButton
*/
BI.FirstPlusGroupNode = BI.inherit(BI.NodeButton, {
_defaultConfig: function () {
var conf = BI.FirstPlusGroupNode.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-first-plus-group-node bi-list-item",
logic: {
dynamic: false
},
id: "",
pId: "",
open: false,
height: 25
})
},
_init: function () {
BI.FirstPlusGroupNode.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.first_tree_node_checkbox",
stopPropagation: true
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
if (this.isSelected()) {
self.triggerExpand();
} else {
self.triggerCollapse();
}
}
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
width: 25,
el: this.checkbox
}, this.text);
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.FirstPlusGroupNode.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isSelected());
},
setOpened: function (v) {
BI.FirstPlusGroupNode.superclass.setOpened.apply(this, arguments);
if (BI.isNotNull(this.checkbox)) {
this.checkbox.setSelected(v);
}
}
});
$.shortcut("bi.first_plus_group_node", BI.FirstPlusGroupNode);/**
* Created by User on 2016/3/31.
*/
/**
* > + icon + 文本
* @class BI.IconArrowNode
* @extends BI.NodeButton
*/
BI.IconArrowNode = BI.inherit(BI.NodeButton, {
_defaultConfig: function () {
var conf = BI.IconArrowNode.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-icon-arrow-node bi-list-item",
logic: {
dynamic: false
},
id: "",
pId: "",
open: false,
height: 25,
iconHeight: 13,
iconWidth: 13,
iconCls: ""
})
},
_init: function () {
BI.IconArrowNode.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.tree_group_node_checkbox",
width: 23,
stopPropagation: true
});
var icon = BI.createWidget({
type: "bi.center_adapt",
cls: o.iconCls,
width: 23,
items: [{
type: "bi.icon",
height: o.iconHeight,
width: o.iconWidth
}]
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
if (this.isSelected()) {
self.triggerExpand();
} else {
self.triggerCollapse();
}
}
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
width: 25,
el: this.checkbox
}, {
width: 23,
el: icon
}, this.text);
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.IconArrowNode.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isSelected());
},
setOpened: function (v) {
BI.IconArrowNode.superclass.setOpened.apply(this, arguments);
if (BI.isNotNull(this.checkbox)) {
this.checkbox.setSelected(v);
}
}
});
$.shortcut("bi.icon_arrow_node", BI.IconArrowNode);/**
* 加号表示的组节点
* Created by GUY on 2015/9/6.
* @class BI.LastPlusGroupNode
* @extends BI.NodeButton
*/
BI.LastPlusGroupNode = BI.inherit(BI.NodeButton, {
_defaultConfig: function () {
var conf = BI.LastPlusGroupNode.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-last-plus-group-node bi-list-item",
logic: {
dynamic: false
},
id: "",
pId: "",
open: false,
height: 25
})
},
_init: function () {
BI.LastPlusGroupNode.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.last_tree_node_checkbox",
stopPropagation: true
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if(type === BI.Events.CLICK) {
if (this.isSelected()) {
self.triggerExpand();
} else {
self.triggerCollapse();
}
}
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
width: 25,
el: this.checkbox
}, this.text);
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.LastPlusGroupNode.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isSelected());
},
setOpened: function (v) {
BI.LastPlusGroupNode.superclass.setOpened.apply(this, arguments);
if (BI.isNotNull(this.checkbox)) {
this.checkbox.setSelected(v);
}
}
});
$.shortcut("bi.last_plus_group_node", BI.LastPlusGroupNode);/**
* 加号表示的组节点
* Created by GUY on 2015/9/6.
* @class BI.MidPlusGroupNode
* @extends BI.NodeButton
*/
BI.MidPlusGroupNode = BI.inherit(BI.NodeButton, {
_defaultConfig: function () {
var conf = BI.MidPlusGroupNode.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-mid-plus-group-node bi-list-item",
logic: {
dynamic: false
},
id: "",
pId: "",
open: false,
height: 25
})
},
_init: function () {
BI.MidPlusGroupNode.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.mid_tree_node_checkbox",
stopPropagation: true
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
if (this.isSelected()) {
self.triggerExpand();
} else {
self.triggerCollapse();
}
}
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
width: 25,
el: this.checkbox
}, this.text);
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.MidPlusGroupNode.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isSelected());
},
setOpened: function (v) {
BI.MidPlusGroupNode.superclass.setOpened.apply(this, arguments);
if (BI.isNotNull(this.checkbox)) {
this.checkbox.setSelected(v);
}
}
});
$.shortcut("bi.mid_plus_group_node", BI.MidPlusGroupNode);BI.MultiLayerIconArrowNode = BI.inherit(BI.NodeButton, {
_defaultConfig: function () {
var conf = BI.MultiLayerIconArrowNode.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
extraCls: "bi-multilayer-icon-arrow-node bi-list-item",
layer: 0,//第几层级
id: "",
pId: "",
open: false,
height: 25,
iconHeight: 13,
iconWidth: 13,
iconCls: ""
})
},
_init: function () {
BI.MultiLayerIconArrowNode.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.node = BI.createWidget({
type: "bi.icon_arrow_node",
iconCls: o.iconCls,
logic: {
dynamic: true
},
id: o.id,
pId: o.pId,
open: o.open,
height: o.height,
iconHeight: o.iconHeight,
iconWidth: o.iconWidth,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.node.on(BI.Controller.EVENT_CHANGE, function (type) {
self.setSelected(self.isSelected());
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
var items = [];
BI.count(0, o.layer, function () {
items.push({
type: "bi.layout",
width: 13,
height: o.height
})
});
items.push(this.node);
BI.createWidget({
type: "bi.td",
element: this,
columnSize: BI.makeArray(o.layer, 13),
items: [items]
})
},
isOnce: function () {
return true;
},
doRedMark: function () {
this.node.doRedMark.apply(this.node, arguments);
},
unRedMark: function () {
this.node.unRedMark.apply(this.node, arguments);
},
isSelected: function () {
return this.node.isSelected();
},
setSelected: function (b) {
BI.MultiLayerIconArrowNode.superclass.setSelected.apply(this, arguments);
this.node.setSelected(b);
},
doClick: function () {
BI.NodeButton.superclass.doClick.apply(this, arguments);
this.node.setSelected(this.isSelected());
},
setOpened: function (v) {
BI.MultiLayerIconArrowNode.superclass.setOpened.apply(this, arguments);
this.node.setOpened(v);
}
});
$.shortcut("bi.multilayer_icon_arrow_node", BI.MultiLayerIconArrowNode);/**
* 加号表示的组节点
* Created by GUY on 2015/9/6.
* @class BI.PlusGroupNode
* @extends BI.NodeButton
*/
BI.PlusGroupNode = BI.inherit(BI.NodeButton, {
_defaultConfig: function () {
var conf = BI.PlusGroupNode.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-plus-group-node bi-list-item",
logic: {
dynamic: false
},
id: "",
pId: "",
open: false,
height: 25
})
},
_init: function () {
BI.PlusGroupNode.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.tree_node_checkbox"
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self.setSelected(self.isSelected());
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
width: 25,
el: this.checkbox
}, this.text);
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.PlusGroupNode.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isSelected());
},
setOpened: function (v) {
BI.PlusGroupNode.superclass.setOpened.apply(this, arguments);
if (this.checkbox) {
this.checkbox.setSelected(v);
}
}
});
$.shortcut("bi.plus_group_node", BI.PlusGroupNode);/**
* 三角号表示的组节点
* Created by GUY on 2015/9/6.
* @class BI.TriangleGroupNode
* @extends BI.NodeButton
*/
BI.TriangleGroupNode = BI.inherit(BI.NodeButton, {
_defaultConfig: function () {
var conf = BI.TriangleGroupNode.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-triangle-group-node bi-list-item",
logic: {
dynamic: false
},
id: "",
pId: "",
open: false,
height: 25
})
},
_init: function () {
BI.TriangleGroupNode.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
iconWidth: 13,
iconHeight: 13,
type: "bi.tree_group_node_checkbox"
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py,
keyword: o.keyword
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self.setSelected(self.isSelected());
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
width: 25,
el: this.checkbox
}, this.text);
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doClick: function () {
BI.TriangleGroupNode.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isOpened());
},
setOpened: function (v) {
BI.TriangleGroupNode.superclass.setOpened.apply(this, arguments);
this.checkbox.setSelected(v);
},
setText: function(text){
BI.TriangleGroupNode.superclass.setText.apply(this, arguments);
this.text.setText(text);
}
});
$.shortcut("bi.triangle_group_node", BI.TriangleGroupNode);/**
* guy
* 复选框item
* @type {*|void|Object}
*/
BI.FirstTreeLeafItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
return BI.extend(BI.FirstTreeLeafItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-first-tree-leaf-item bi-list-item-active",
logic: {
dynamic: false
},
id: "",
pId: "",
layer: 0,
height: 25
})
},
_init: function () {
BI.FirstTreeLeafItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.checkbox"
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self.setSelected(self.isSelected());
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : {
width: 13,
el: {
type: "bi.layout",
cls: "base-line-conn-background",
width: 13,
height: o.height
}
}), {
width: 25,
el: {
type: "bi.layout",
cls: "mid-line-conn-background",
width: 25,
height: o.height
}
}, {
el: this.text
});
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function () {
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function () {
this.text.unHighLight.apply(this.text, arguments);
},
getId: function () {
return this.options.id;
},
getPId: function () {
return this.options.pId;
},
doClick: function () {
BI.FirstTreeLeafItem.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isSelected());
},
setSelected: function (v) {
BI.FirstTreeLeafItem.superclass.setSelected.apply(this, arguments);
this.checkbox.setSelected(v);
}
});
$.shortcut("bi.first_tree_leaf_item", BI.FirstTreeLeafItem);BI.IconTreeLeafItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
return BI.extend(BI.IconTreeLeafItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-icon-tree-leaf-item bi-list-item-active",
logic: {
dynamic: false
},
height: 25,
iconWidth: 16,
iconHeight: 16,
iconCls: ""
})
},
_init: function () {
BI.IconTreeLeafItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
var icon = BI.createWidget({
type: "bi.center_adapt",
width: 23,
cls: o.iconCls,
items: [{
type: "bi.icon",
width: o.iconWidth,
height: o.iconHeight
}]
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, {
width: 23,
el: icon
}, {
el: this.text
});
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function () {
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function () {
this.text.unHighLight.apply(this.text, arguments);
},
getId: function () {
return this.options.id;
},
getPId: function () {
return this.options.pId;
},
doClick: function () {
BI.IconTreeLeafItem.superclass.doClick.apply(this, arguments);
},
setSelected: function (v) {
BI.IconTreeLeafItem.superclass.setSelected.apply(this, arguments);
}
});
$.shortcut("bi.icon_tree_leaf_item", BI.IconTreeLeafItem);/**
* guy
* 复选框item
* @type {*|void|Object}
*/
BI.LastTreeLeafItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
return BI.extend(BI.LastTreeLeafItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-last-tree-leaf-item bi-list-item-active",
logic: {
dynamic: false
},
id: "",
pId: "",
layer: 0,
height: 25
})
},
_init: function () {
BI.LastTreeLeafItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.checkbox"
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self.setSelected(self.isSelected());
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : {
width: 13,
el: {
type: "bi.layout",
cls: "base-line-conn-background",
width: 13,
height: o.height
}
}), {
width: 25,
el: {
type: "bi.layout",
cls: "mid-line-conn-background",
width: 25,
height: o.height
}
}, {
el: this.text
});
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function () {
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function () {
this.text.unHighLight.apply(this.text, arguments);
},
getId: function () {
return this.options.id;
},
getPId: function () {
return this.options.pId;
},
doClick: function () {
BI.LastTreeLeafItem.superclass.doClick.apply(this, arguments);
// this.checkbox.setSelected(this.isSelected());
},
setSelected: function (v) {
BI.LastTreeLeafItem.superclass.setSelected.apply(this, arguments);
// this.checkbox.setSelected(v);
}
});
$.shortcut("bi.last_tree_leaf_item", BI.LastTreeLeafItem);/**
* guy
* 复选框item
* @type {*|void|Object}
*/
BI.MidTreeLeafItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
return BI.extend(BI.MidTreeLeafItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-mid-tree-leaf-item bi-list-item-active",
logic: {
dynamic: false
},
id: "",
pId: "",
layer: 0,
height: 25
})
},
_init: function () {
BI.MidTreeLeafItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.checkbox"
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self.setSelected(self.isSelected());
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left);
var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : {
width: 13,
el: {
type: "bi.layout",
cls: "base-line-conn-background",
width: 13,
height: o.height
}
}), {
width: 25,
el: {
type: "bi.layout",
cls: "mid-line-conn-background",
width: 25,
height: o.height
}
}, {
el: this.text
});
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(type, BI.extend(o.logic, {
items: items
}))));
},
doRedMark: function () {
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function () {
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function () {
this.text.unHighLight.apply(this.text, arguments);
},
getId: function () {
return this.options.id;
},
getPId: function () {
return this.options.pId;
},
doClick: function () {
BI.MidTreeLeafItem.superclass.doClick.apply(this, arguments);
this.checkbox.setSelected(this.isSelected());
},
setSelected: function (v) {
BI.MidTreeLeafItem.superclass.setSelected.apply(this, arguments);
this.checkbox.setSelected(v);
}
});
$.shortcut("bi.mid_tree_leaf_item", BI.MidTreeLeafItem);/**
* @class BI.MultiLayerIconTreeLeafItem
* @extends BI.BasicButton
*/
BI.MultiLayerIconTreeLeafItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
return BI.extend(BI.MultiLayerIconTreeLeafItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-multilayer-icon-tree-leaf-item bi-list-item-active",
layer: 0,
height: 25,
iconCls: "",
iconHeight: 14,
iconWidth: 12
})
},
_init: function () {
BI.MultiLayerIconTreeLeafItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.item = BI.createWidget({
type: "bi.icon_tree_leaf_item",
iconCls: o.iconCls,
logic: {
dynamic: true
},
id: o.id,
pId: o.pId,
isFront: true,
height: o.height,
hgap: o.hgap,
text: o.text,
value: o.value,
py: o.py,
iconWidth: o.iconWidth,
iconHeight: o.iconHeight
});
this.item.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {//本身实现click功能
return;
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
var items = [];
BI.count(0, o.layer, function () {
items.push({
type: "bi.layout",
width: 13,
height: o.height
})
});
items.push(this.item);
BI.createWidget({
type: "bi.td",
element: this,
columnSize: BI.makeArray(o.layer, 13),
items: [items]
});
},
doRedMark: function () {
this.item.doRedMark.apply(this.item, arguments);
},
unRedMark: function () {
this.item.unRedMark.apply(this.item, arguments);
},
doHighLight: function () {
this.item.doHighLight.apply(this.item, arguments);
},
unHighLight: function () {
this.item.unHighLight.apply(this.item, arguments);
},
getId: function () {
return this.options.id;
},
getPId: function () {
return this.options.pId;
},
doClick: function () {
BI.MultiLayerIconTreeLeafItem.superclass.doClick.apply(this, arguments);
this.item.setSelected(this.isSelected());
},
setSelected: function (v) {
BI.MultiLayerIconTreeLeafItem.superclass.setSelected.apply(this, arguments);
this.item.setSelected(v);
},
getValue: function(){
return this.options.value;
}
});
$.shortcut("bi.multilayer_icon_tree_leaf_item", BI.MultiLayerIconTreeLeafItem);/**
* 树叶子节点
* Created by GUY on 2015/9/6.
* @class BI.TreeTextLeafItem
* @extends BI.BasicButton
*/
BI.TreeTextLeafItem = BI.inherit(BI.BasicButton, {
_defaultConfig: function() {
return BI.extend(BI.TreeTextLeafItem.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-tree-text-leaf-item bi-list-item-active",
id: "",
pId: "",
height: 25,
hgap: 0,
lgap: 0,
rgap: 0
})
},
_init : function() {
BI.TreeTextLeafItem.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
lgap: o.lgap,
rgap: o.hgap,
text: o.text,
value: o.value,
py: o.py
});
BI.createWidget({
type: "bi.htape",
element: this,
items: [{
el: this.text
}]
})
},
doRedMark: function(){
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function(){
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function(){
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function(){
this.text.unHighLight.apply(this.text, arguments);
},
getId: function(){
return this.options.id;
},
getPId: function(){
return this.options.pId;
}
});
$.shortcut("bi.tree_text_leaf_item", BI.TreeTextLeafItem);/**
* Created by GUY on 2015/8/28.
* @class BI.Calendar
* @extends BI.Widget
*/
BI.Calendar = BI.inherit(BI.Widget, {
_defaultConfig: function () {
var conf = BI.Calendar.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: "bi-calendar",
logic: {
dynamic: false
},
min: '1900-01-01', //最小日期
max: '2099-12-31', //最大日期
year: 2015,
month: 7, //7表示八月
day: 25
})
},
_dateCreator: function (Y, M, D) {
var self = this, o = this.options, log = {}, De = new Date();
var mins = o.min.match(/\d+/g);
var maxs = o.max.match(/\d+/g);
Y < (mins[0] | 0) && (Y = (mins[0] | 0));
Y > (maxs[0] | 0) && (Y = (maxs[0] | 0));
De.setFullYear(Y, M, D);
log.ymd = [De.getFullYear(), De.getMonth(), De.getDate()];
Date._MD[1] = Date.isLeap(log.ymd[0]) ? 29 : 28;
De.setFullYear(log.ymd[0], log.ymd[1], 1);
log.FDay = De.getDay();
log.PDay = Date._MD[M === 0 ? 11 : M - 1] - log.FDay + 1;
log.NDay = 1;
var items = [];
BI.each(BI.range(42), function (i) {
var td = {}, YY = log.ymd[0], MM = log.ymd[1] + 1, DD;
if (i < log.FDay) {
td.lastMonth = true;
DD = i + log.PDay;
MM === 1 && (YY -= 1);
MM = MM === 1 ? 12 : MM - 1;
} else if (i >= log.FDay && i < log.FDay + Date._MD[log.ymd[1]]) {
DD = i - log.FDay + 1;
if (i - log.FDay + 1 === log.ymd[2]) {
td.currentDay = true;
}
} else {
td.nextMonth = true;
DD = log.NDay++;
MM === 12 && (YY += 1);
MM = MM === 12 ? 1 : MM + 1;
}
if (Date.checkVoid(YY, MM, DD, mins, maxs)[0]) {
td.disabled = true;
}
td.text = DD;
items.push(td);
})
return items;
},
_init: function () {
BI.Calendar.superclass._init.apply(this, arguments);
var self = this, o = this.options;
var items = BI.map(Date._SDN.slice(0, 7), function (i, value) {
return {
type: "bi.label",
height: 25,
text: value
}
})
var title = BI.createWidget({
type: "bi.button_group",
height: 25,
items: items
})
var days = this._dateCreator(o.year, o.month, o.day);
items = [];
items.push(days.slice(0, 7));
items.push(days.slice(7, 14));
items.push(days.slice(14, 21));
items.push(days.slice(21, 28));
items.push(days.slice(28, 35));
items.push(days.slice(35, 42));
items = BI.map(items, function (i, item) {
return BI.map(item, function (j, td) {
return BI.extend(td, {
type: "bi.text_item",
cls: "bi-list-item-active",
textAlign: "center",
whiteSpace: "normal",
once: false,
forceSelected: true,
height: 25,
value: o.year + "-" + o.month + "-" + td.text,
disabled: td.lastMonth || td.nextMonth || td.disabled
//selected: td.currentDay
});
});
});
this.days = BI.createWidget({
type: "bi.button_group",
items: BI.createItems(items, {}),
layouts: [BI.LogicFactory.createLogic("table", BI.extend({}, o.logic, {
columns: 7,
rows: 6,
columnSize: [1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7],
rowSize: 25
}))]
});
this.days.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
})
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic("vertical", BI.extend({}, o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection("top", title, this.days)
}))));
},
isFrontDate: function () {
var o = this.options, c = this._const;
var Y = o.year, M = o.month, De = new Date(), day = De.getDay();
Y = Y | 0;
De.setFullYear(Y, M, 1);
var newDate = De.getOffsetDate(-1 * (day + 1));
return !!Date.checkVoid(newDate.getFullYear(), newDate.getMonth(), newDate.getDate(), o.min, o.max)[0];
},
isFinalDate: function () {
var o = this.options, c = this._const;
var Y = o.year, M = o.month, De = new Date(), day = De.getDay();
Y = Y | 0;
De.setFullYear(Y, M, 1);
var newDate = De.getOffsetDate(42 - day);
return !!Date.checkVoid(newDate.getFullYear(), newDate.getMonth(), newDate.getDate(), o.min, o.max)[0];
},
setValue: function (ob) {
this.days.setValue([ob.year + "-" + ob.month + "-" + ob.day]);
},
getValue: function () {
var date = this.days.getValue()[0].match(/\d+/g);
return {
year: date[0] | 0,
month: date[1] | 0,
day: date[2] | 0
}
}
});
BI.extend(BI.Calendar, {
getPageByDateJSON: function (json) {
var year = new Date().getFullYear();
var month = new Date().getMonth();
var page = (json.year - year) * 12;
page += json.month - month;
return page;
}
});
$.shortcut("bi.calendar", BI.Calendar);/**
* Created by GUY on 2015/8/28.
* @class BI.YearCalendar
* @extends BI.Widget
*/
BI.YearCalendar = BI.inherit(BI.Widget, {
_defaultConfig: function () {
var conf = BI.YearCalendar.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: "bi-year-calendar",
logic: {
dynamic: false
},
min: '1900-01-01', //最小日期
max: '2099-12-31', //最大日期
year: null
})
},
_yearCreator: function (Y) {
var o = this.options;
Y = Y | 0;
var start = BI.YearCalendar.getStartYear(Y);
var items = [];
BI.each(BI.range(BI.YearCalendar.INTERVAL), function (i) {
var td = {};
if (Date.checkVoid(start + i, 1, 1, o.min, o.max)[0]) {
td.disabled = true;
}
td.text = start + i;
items.push(td);
});
return items;
},
_init: function () {
BI.YearCalendar.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.currentYear = new Date().getFullYear();
var years = this._yearCreator(o.year || this.currentYear);
//纵向排列年
var len = years.length, tyears = BI.makeArray(len, "");
var map = [0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11];
BI.each(years, function (i, y) {
tyears[i] = years[map[i]];
});
var items = [];
items.push(tyears.slice(0, 2));
items.push(tyears.slice(2, 4));
items.push(tyears.slice(4, 6));
items.push(tyears.slice(6, 8));
items.push(tyears.slice(8, 10));
items.push(tyears.slice(10, 12));
items = BI.map(items, function (i, item) {
return BI.map(item, function (j, td) {
return BI.extend(td, {
type: "bi.text_item",
cls: "bi-list-item-active",
textAlign: "center",
whiteSpace: "normal",
once: false,
forceSelected: true,
height: 23,
width: 38,
value: td.text,
disabled: td.disabled
});
});
});
this.years = BI.createWidget({
type: "bi.button_group",
items: BI.createItems(items, {}),
layouts: [BI.LogicFactory.createLogic("table", BI.extend({}, o.logic, {
columns: 2,
rows: 6,
columnSize: [1 / 2, 1 / 2],
rowSize: 25
})), {
type: "bi.center_adapt",
vgap: 1
}]
});
this.years.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic("vertical", BI.extend({}, o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection("top", this.years)
}))));
},
isFrontYear: function () {
var o = this.options;
var Y = o.year;
Y = Y | 0;
return !!Date.checkVoid(BI.YearCalendar.getStartYear(Y) - 1, 1, 1, o.min, o.max)[0];
},
isFinalYear: function () {
var o = this.options, c = this._const;
var Y = o.year;
Y = Y | 0;
return !!Date.checkVoid(BI.YearCalendar.getEndYear(Y) + 1, 1, 1, o.min, o.max)[0];
},
setValue: function (val) {
this.years.setValue([val]);
},
getValue: function () {
return this.years.getValue()[0];
}
});
//类方法
BI.extend(BI.YearCalendar, {
INTERVAL: 12,
//获取显示的第一年
getStartYear: function (year) {
var cur = new Date().getFullYear();
return year - ((year - cur + 3) % BI.YearCalendar.INTERVAL + 12) % BI.YearCalendar.INTERVAL;
},
getEndYear: function (year) {
return BI.YearCalendar.getStartYear(year) + BI.YearCalendar.INTERVAL;
},
getPageByYear: function (year) {
var cur = new Date().getFullYear();
year = BI.YearCalendar.getStartYear(year);
return (year - cur + 3) / BI.YearCalendar.INTERVAL;
}
});
$.shortcut("bi.year_calendar", BI.YearCalendar);/**
* 绘制一些较复杂的canvas
*
* Created by GUY on 2015/11/24.
* @class BI.ComplexCanvas
* @extends BI.Widget
*/
BI.ComplexCanvas = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.ComplexCanvas.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-complex-canvas"
})
},
_init: function () {
BI.ComplexCanvas.superclass._init.apply(this, arguments);
var o = this.options;
this.canvas = BI.createWidget({
type: "bi.canvas",
element: this,
width: o.width,
height: o.height
});
},
//绘制树枝节点
branch: function (x0, y0, x1, y1, x2, y2) {
var self = this, args = [].slice.call(arguments);
if (args.length <= 5) {
return this.canvas.line.apply(this.canvas, arguments);
}
var options;
if (BI.isOdd(args.length)) {
options = BI.last(args);
args = BI.initial(args);
}
args = [].slice.call(args, 2);
var odd = BI.filter(args, function (i) {
return i % 2 === 0;
});
var even = BI.filter(args, function (i) {
return i % 2 !== 0;
});
options || (options = {});
var offset = options.offset || 20;
if ((y0 > y1 && y0 > y2) || (y0 < y1 && y0 < y2)) {
if (y0 > y1 && y0 > y2) {
var y = Math.max.apply(this, even) + offset;
} else {
var y = Math.min.apply(this, even) - offset;
}
var minx = Math.min.apply(this, odd);
var minix = BI.indexOf(odd, minx);
var maxx = Math.max.apply(this, odd);
var maxix = BI.indexOf(odd, maxx);
this.canvas.line(minx, even[minix], minx, y, maxx, y, maxx, even[maxix], options);
BI.each(odd, function (i, dot) {
if (i !== maxix && i !== minix) {
self.canvas.line(dot, even[i], dot, y, options);
}
});
this.canvas.line(x0, y, x0, y0, options);
return;
}
if ((x0 > x1 && x0 > x2) || (x0 < x1 && x0 < x2)) {
if (x0 > x1 && x0 > x2) {
var x = Math.max.apply(this, odd) + offset;
} else {
var x = Math.min.apply(this, odd) - offset;
}
var miny = Math.min.apply(this, even);
var miniy = BI.indexOf(even, miny);
var maxy = Math.max.apply(this, even);
var maxiy = BI.indexOf(even, maxy);
this.canvas.line(odd[miniy], miny, x, miny, x, maxy, odd[maxiy], maxy, options);
BI.each(even, function (i, dot) {
if (i !== miniy && i !== maxiy) {
self.canvas.line(odd[i], dot, x, dot, options);
}
});
this.canvas.line(x, y0, x0, y0, options);
return;
}
},
stroke: function (callback) {
this.canvas.stroke(callback);
}
});
$.shortcut("bi.complex_canvas", BI.ComplexCanvas);/**
* Created by roy on 15/10/16.
* 上箭头与下箭头切换的树节点
*/
BI.ArrowTreeGroupNodeCheckbox=BI.inherit(BI.IconButton,{
_defaultConfig:function(){
return BI.extend(BI.ArrowTreeGroupNodeCheckbox.superclass._defaultConfig.apply(this,arguments),{
extraCls:"bi-arrow-tree-group-node",
iconWidth: 13,
iconHeight: 13
});
},
_init:function(){
BI.ArrowTreeGroupNodeCheckbox.superclass._init.apply(this,arguments);
},
setSelected: function(v){
BI.ArrowTreeGroupNodeCheckbox.superclass.setSelected.apply(this, arguments);
if(v) {
this.element.removeClass("column-next-page-h-font").addClass("column-pre-page-h-font");
} else {
this.element.removeClass("column-pre-page-h-font").addClass("column-next-page-h-font");
}
}
});
$.shortcut("bi.arrow_tree_group_node_checkbox",BI.ArrowTreeGroupNodeCheckbox);/**
* 十字型的树节点
* @class BI.CheckingMarkNode
* @extends BI.IconButton
*/
BI.CheckingMarkNode = BI.inherit(BI.IconButton, {
_defaultConfig: function() {
return BI.extend( BI.CheckingMarkNode.superclass._defaultConfig.apply(this, arguments), {
extraCls: "check-mark-font",
iconWidth: 13,
iconHeight: 13
});
},
_init:function() {
BI.CheckingMarkNode.superclass._init.apply(this, arguments);
this.setSelected(this.options.selected);
},
setSelected: function(v){
BI.CheckingMarkNode.superclass.setSelected.apply(this, arguments);
if(v===true) {
this.element.addClass("check-mark-font");
} else {
this.element.removeClass("check-mark-font");
}
}
});
$.shortcut("bi.checking_mark_node", BI.CheckingMarkNode);/**
* 十字型的树节点
* @class BI.FirstTreeNodeCheckbox
* @extends BI.IconButton
*/
BI.FirstTreeNodeCheckbox = BI.inherit(BI.IconButton, {
_defaultConfig: function() {
return BI.extend( BI.FirstTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
extraCls: "tree-collapse-icon-type2",
iconWidth: 25,
iconHeight: 25
});
},
_init:function() {
BI.FirstTreeNodeCheckbox.superclass._init.apply(this, arguments);
},
setSelected: function(v){
BI.FirstTreeNodeCheckbox.superclass.setSelected.apply(this, arguments);
if(v===true) {
this.element.addClass("tree-expand-icon-type2");
} else {
this.element.removeClass("tree-expand-icon-type2");
}
}
});
$.shortcut("bi.first_tree_node_checkbox", BI.FirstTreeNodeCheckbox);/**
* 十字型的树节点
* @class BI.LastTreeNodeCheckbox
* @extends BI.IconButton
*/
BI.LastTreeNodeCheckbox = BI.inherit(BI.IconButton, {
_defaultConfig: function() {
return BI.extend( BI.LastTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
extraCls: "tree-collapse-icon-type4",
iconWidth: 25,
iconHeight: 25
});
},
_init:function() {
BI.LastTreeNodeCheckbox.superclass._init.apply(this, arguments);
},
setSelected: function(v){
BI.LastTreeNodeCheckbox.superclass.setSelected.apply(this, arguments);
if(v===true) {
this.element.addClass("tree-expand-icon-type3");
} else {
this.element.removeClass("tree-expand-icon-type3");
}
}
});
$.shortcut("bi.last_tree_node_checkbox", BI.LastTreeNodeCheckbox);/**
* 十字型的树节点
* @class BI.MidTreeNodeCheckbox
* @extends BI.IconButton
*/
BI.MidTreeNodeCheckbox = BI.inherit(BI.IconButton, {
_defaultConfig: function() {
return BI.extend( BI.MidTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
extraCls: "tree-collapse-icon-type3",
iconWidth: 25,
iconHeight: 25
});
},
_init:function() {
BI.MidTreeNodeCheckbox.superclass._init.apply(this, arguments);
},
setSelected: function(v){
BI.MidTreeNodeCheckbox.superclass.setSelected.apply(this, arguments);
if(v===true) {
this.element.addClass("tree-expand-icon-type3");
} else {
this.element.removeClass("tree-expand-icon-type3");
}
}
});
$.shortcut("bi.mid_tree_node_checkbox", BI.MidTreeNodeCheckbox);/**
* 三角形的树节点
* Created by GUY on 2015/9/6.
* @class BI.TreeGroupNodeCheckbox
* @extends BI.IconButton
*/
BI.TreeGroupNodeCheckbox = BI.inherit(BI.IconButton, {
_defaultConfig: function() {
return BI.extend( BI.TreeGroupNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
extraCls: "tree-node-triangle-collapse-font",
iconWidth: 13,
iconHeight: 13
});
},
_init:function() {
BI.TreeGroupNodeCheckbox.superclass._init.apply(this, arguments);
},
setSelected: function(v){
BI.TreeGroupNodeCheckbox.superclass.setSelected.apply(this, arguments);
if(v) {
this.element.removeClass("tree-node-triangle-collapse-font").addClass("tree-node-triangle-expand-font");
} else {
this.element.removeClass("tree-node-triangle-expand-font").addClass("tree-node-triangle-collapse-font");
}
}
});
$.shortcut("bi.tree_group_node_checkbox", BI.TreeGroupNodeCheckbox);/**
* 十字型的树节点
* @class BI.TreeNodeCheckbox
* @extends BI.IconButton
*/
BI.TreeNodeCheckbox = BI.inherit(BI.IconButton, {
_defaultConfig: function() {
return BI.extend( BI.TreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), {
extraCls: "tree-collapse-icon-type1",
iconWidth: 25,
iconHeight: 25
});
},
_init:function() {
BI.TreeNodeCheckbox.superclass._init.apply(this, arguments);
},
setSelected: function(v){
BI.TreeNodeCheckbox.superclass.setSelected.apply(this, arguments);
if(v) {
this.element.addClass("tree-expand-icon-type1");
} else {
this.element.removeClass("tree-expand-icon-type1");
}
}
});
$.shortcut("bi.tree_node_checkbox", BI.TreeNodeCheckbox);/**
* 简单选色控件按钮
*
* Created by GUY on 2015/11/16.
* @class BI.ColorPickerButton
* @extends BI.BasicButton
*/
BI.ColorPickerButton = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
var conf = BI.ColorPickerButton.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-color-picker-button"
})
},
_init: function () {
BI.ColorPickerButton.superclass._init.apply(this, arguments);
var self = this, o = this.options;
if (o.value) {
this.element.css("background-color", o.value);
var name = this.getName();
this.element.hover(function () {
self._createMask();
if (self.isEnabled()) {
BI.Maskers.show(name);
}
}, function () {
if (!self.isSelected()) {
BI.Maskers.hide(name);
}
});
}
},
_createMask: function () {
var o = this.options, name = this.getName();
if (this.isEnabled() && !BI.Maskers.has(name)) {
var w = BI.Maskers.make(name, this, {
offset: {
left: -1,
top: -1,
right: -1,
bottom: -1
}
});
w.element.addClass("color-picker-button-mask").css("background-color", o.value);
}
},
setSelected: function (b) {
BI.ColorPickerButton.superclass.setSelected.apply(this, arguments);
if (!!b) {
this._createMask();
}
BI.Maskers[!!b ? "show" : "hide"](this.getName());
}
});
BI.ColorPickerButton.EVENT_CHANGE = "ColorPickerButton.EVENT_CHANGE";
$.shortcut("bi.color_picker_button", BI.ColorPickerButton);/**
* 简单选色控件
*
* Created by GUY on 2015/11/16.
* @class BI.ColorPicker
* @extends BI.Widget
*/
BI.ColorPicker = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.ColorPicker.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-color-picker",
items: null
})
},
_items: [
[{
value: "#ff0000"
}, {
value: "#ffff02"
}, {
value: "#00ff00"
}, {
value: "#00ffff"
}, {
value: "#0000ff"
}, {
value: "#ff02ff"
}, {
value: "#ffffff"
}, {
value: "#e6e6e6"
}, {
value: "#cccccc"
}, {
value: "#b3b3b3"
}, {
value: "#999999"
}, {
value: "#808080"
}, {
value: "#666666"
}, {
value: "#4d4d4d"
}, {
value: "#333333"
}, {
value: "#1a1a1a"
}],
[{
value: "#ea9b5e"
}, {
value: "#ebb668"
}, {
value: "#efca69"
}, {
value: "#faf4a2"
}, {
value: "#c9da73"
}, {
value: "#b6d19c"
}, {
value: "#86be85"
}, {
value: "#87c5c3"
}, {
value: "#75bfec"
}, {
value: "#85a9e0"
}, {
value: "#8890d3"
}, {
value: "#a484b9"
}, {
value: "#b48bbf"
}, {
value: "#ba8dc6"
}, {
value: "#e697c8"
}, {
value: "#e49da0"
}],
[{
value: "#df6a18"
}, {
value: "#df8d04"
}, {
value: "#efb500"
}, {
value: "#faf201"
}, {
value: "#b2cc23"
}, {
value: "#7dbd2f"
}, {
value: "#48a754"
}, {
value: "#27acaa"
}, {
value: "#09abe9"
}, {
value: "#357bcc"
}, {
value: "#4d67c1"
}, {
value: "#5b4aa5"
}, {
value: "#7e52a5"
}, {
value: "#a057a4"
}, {
value: "#d1689c"
}, {
value: "#d66871"
}],
[{
value: "#d12d02"
}, {
value: "#db6700"
}, {
value: "#ee9106"
}, {
value: "#f7ed02"
}, {
value: "#92b801"
}, {
value: "#37a600"
}, {
value: "#289100"
}, {
value: "#1a9589"
}, {
value: "#0292e0"
}, {
value: "#005dbb"
}, {
value: "#005eb4"
}, {
value: "#0041a3"
}, {
value: "#00217f"
}, {
value: "#811e89"
}, {
value: "#cd2a7c"
}, {
value: "#cd324a"
}]
],
_init: function () {
BI.ColorPicker.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.colors = BI.createWidget({
type: "bi.button_group",
element: this,
items: BI.createItems(o.items || this._items, {
type: "bi.color_picker_button",
once: false
}),
layouts: [{
type: "bi.grid"
}]
});
this.colors.on(BI.ButtonGroup.EVENT_CHANGE, function () {
self.fireEvent(BI.ColorPicker.EVENT_CHANGE, arguments);
})
},
populate: function(items){
var args =[].slice.call(arguments);
args[0] = BI.createItems(items, {
type: "bi.color_picker_button",
once: false
});
this.colors.populate.apply(this.colors, args);
},
setValue: function (color) {
this.colors.setValue(color);
},
getValue: function () {
return this.colors.getValue();
}
});
BI.ColorPicker.EVENT_CHANGE = "ColorPicker.EVENT_CHANGE";
$.shortcut("bi.color_picker", BI.ColorPicker);/**
* 简单选色控件
*
* Created by GUY on 2015/11/16.
* @class BI.ColorPickerEditor
* @extends BI.Widget
*/
BI.ColorPickerEditor = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.ColorPickerEditor.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-color-picker-editor",
width: 190,
height: 20
})
},
_init: function () {
BI.ColorPickerEditor.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.colorShow = BI.createWidget({
type: "bi.layout",
cls: "color-picker-editor-display",
height: 20
});
var RGB = BI.createWidgets(BI.createItems([{text: "R"}, {text: "G"}, {text: "B"}], {
type: "bi.label",
cls: "color-picker-editor-label",
width: 10,
height: 20
}));
var checker = function (v) {
return BI.isNumeric(v) && (v | 0) >= 0 && (v | 0) <= 255;
};
var Ws = BI.createWidgets([{}, {}, {}], {
type: "bi.small_text_editor",
cls: "color-picker-editor-input",
validationChecker: checker,
errorText: BI.i18nText("BI-Color_Picker_Error_Text"),
value: 255,
width: 35,
height: 20
});
BI.each(Ws, function (i, w) {
w.on(BI.TextEditor.EVENT_CHANGE, function () {
if (self.R.isValid() && self.G.isValid() && self.B.isValid()) {
self.colorShow.element.css("background-color", self.getValue());
self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE);
}
});
});
this.R = Ws[0];
this.G = Ws[1];
this.B = Ws[2];
BI.createWidget({
type: "bi.htape",
element: this,
items: [{
el: this.colorShow,
width: 'fill'
}, {
el: RGB[0],
lgap: 10,
width: 20
}, {
el: this.R,
width: 35
}, {
el: RGB[1],
lgap: 10,
width: 20
}, {
el: this.G,
width: 35
}, {
el: RGB[2],
lgap: 10,
width: 20
}, {
el: this.B,
width: 35
}]
})
},
setValue: function (color) {
color || (color = "#000000");
this.colorShow.element.css("background-color", color);
var json = BI.DOM.rgb2json(BI.DOM.hex2rgb(color));
this.R.setValue(json.r);
this.G.setValue(json.g);
this.B.setValue(json.b);
},
getValue: function () {
return BI.DOM.rgb2hex(BI.DOM.json2rgb({
r: this.R.getValue(),
g: this.G.getValue(),
b: this.B.getValue()
}))
}
});
BI.ColorPickerEditor.EVENT_CHANGE = "ColorPickerEditor.EVENT_CHANGE";
$.shortcut("bi.color_picker_editor", BI.ColorPickerEditor);/**
* guy
* 记录内容的输入框
* @class BI.RecordEditor
* @extends BI.Single
*/
BI.RecordEditor = BI.inherit(BI.Single, {
_defaultConfig: function() {
var conf = BI.RecordEditor.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf , {
baseCls: (conf.baseCls || "") + " bi-record-editor",
hgap: 4,
vgap: 2,
lgap: 0,
rgap: 0,
tgap: 0,
bgap: 0,
validationChecker: BI.emptyFn,
quitChecker: BI.emptyFn,
allowBlank: true,
watermark: "",
errorText: "",
height: 30
})
},
_init : function() {
BI.RecordEditor.superclass._init.apply(this, arguments);
this.contents = [];
var self = this, o = this.options;
this.editor = BI.createWidget({
type: "bi.editor",
height: o.height,
hgap: o.hgap,
vgap: o.vgap,
lgap: o.lgap,
rgap: o.rgap,
tgap: o.tgap,
bgap: o.bgap,
value: o.value,
validationChecker: o.validationChecker,
quitChecker: o.quitChecker,
mouseOut: o.mouseOut,
allowBlank : o.allowBlank,
watermark: o.watermark,
errorText: o.errorText
});
this.textContainer = BI.createWidget({
type: "bi.vertical_adapt",
hgap: 2,
height: o.height
});
this.editor.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_FOCUS, function(){
self._checkInputState();
self.fireEvent(BI.RecordEditor.EVENT_FOCUS, arguments);
});
this.editor.on(BI.Editor.EVENT_BLUR, function(){
self._checkInputState();
self.fireEvent(BI.RecordEditor.EVENT_BLUR, arguments);
});
this.editor.on(BI.Editor.EVENT_CLICK, function(){
self.fireEvent(BI.RecordEditor.EVENT_CLICK, arguments);
});
this.editor.on(BI.Editor.EVENT_CHANGE, function(){
self.fireEvent(BI.RecordEditor.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_KEY_DOWN, function(v){
self.fireEvent(BI.RecordEditor.EVENT_KEY_DOWN, arguments);
});
this.editor.on(BI.Editor.EVENT_VALID, function(){
self.fireEvent(BI.RecordEditor.EVENT_VALID, arguments);
});
this.editor.on(BI.Editor.EVENT_SPACE, function(){
self.fireEvent(BI.RecordEditor.EVENT_SPACE, arguments);
});
this.editor.on(BI.Editor.EVENT_CONFIRM, function(){
self.setValue(self.getValue());
self.editor.isValid() && self.editor.setValue("");
self.fireEvent(BI.RecordEditor.EVENT_CONFIRM, arguments);
});
this.editor.on(BI.Editor.EVENT_START, function(){
self.fireEvent(BI.RecordEditor.EVENT_START, arguments);
});
this.editor.on(BI.Editor.EVENT_PAUSE, function(){
self.fireEvent(BI.RecordEditor.EVENT_PAUSE, arguments);
});
this.editor.on(BI.Editor.EVENT_STOP, function(){
self.fireEvent(BI.RecordEditor.EVENT_STOP, arguments);
});
this.editor.on(BI.Editor.EVENT_ENTER, function () {
self.fireEvent(BI.RecordEditor.EVENT_ENTER, arguments);
});
this.editor.on(BI.Editor.EVENT_BACKSPACE, function(){
self._checkInputState();
});
this.editor.on(BI.Editor.EVENT_REMOVE, function(){
if(!BI.isEmpty(self.contents)){
self.contents.pop().destroy();
self.setValue(self.getValue());
self._adjustInputWidth();
}
});
this.editor.on(BI.Editor.EVENT_ERROR, function(){
self.fireEvent(BI.RecordEditor.EVENT_ERROR, arguments);
});
this.editor.on(BI.Editor.EVENT_RESTRICT, function(){
self.fireEvent(BI.RecordEditor.EVENT_RESTRICT, arguments);
});
this.editor.on(BI.Editor.EVENT_EMPTY, function(){
self.fireEvent(BI.RecordEditor.EVENT_EMPTY, arguments);
});
BI.createWidget({
type: "bi.inline",
element: this,
items: [this.textContainer, this.editor]
});
BI.Resizers.add(this.getName(), BI.bind(this._adjustInputWidth, this));
this._adjustInputWidth();
},
_adjustInputWidth: function(){
BI.nextTick(BI.bind(function(){
this.editor.element.css("width", this.element.width() - this.textContainer.element.outerWidth() - 10);
}, this));
},
_checkInputState: function(){
if(BI.isEmpty(this.contents)){
this.editor.enableWarterMark();
} else {
this.editor.disableWarterMark();
}
},
focus: function(){
this.editor.focus();
},
blur: function(){
this.editor.blur();
},
isValid : function() {
return this.editor.isValid();
},
setErrorText: function(text){
this.editor.setErrorText(text);
},
getErrorText: function(){
return this.editor.getErrorText();
},
isEditing: function () {
return this.editor.isEditing();
},
getLastValidValue: function () {
return this.editor.getLastValidValue();
},
setValue: function (k) {
this.editor.setValue(k);
},
getValue: function () {
return this.editor.getValue();
},
getState: function(){
var values = BI.map(this.contents, function(i, lb){
return lb.getText();
});
if(BI.isNotEmptyString(this.editor.getValue())){
return values.concat([this.editor.getValue()]);
}
return values;
},
setState: function(v){
BI.StateEditor.superclass.setValue.apply(this, arguments);
v = BI.isArray(v) ? v : (v == "" ? [] : [v]);
var contents = this.contents = [];
BI.each(v, function(i, lb){
contents.push(BI.createWidget({
type: "bi.label",
height: 25,
cls: "record-editor-text",
text: lb
}))
});
this.textContainer.empty();
this.textContainer.populate(contents);
this.editor.isValid() && this.editor.setValue("");
this._checkInputState();
this._adjustInputWidth();
},
destroy: function(){
BI.Resizers.remove(this.getName());
BI.RecordEditor.superclass.destroy.apply(this, arguments);
}
});
BI.RecordEditor.EVENT_CHANGE = "EVENT_CHANGE";
BI.RecordEditor.EVENT_FOCUS = "EVENT_FOCUS";
BI.RecordEditor.EVENT_BLUR = "EVENT_BLUR";
BI.RecordEditor.EVENT_CLICK = "EVENT_CLICK";
BI.RecordEditor.EVENT_KEY_DOWN = "EVENT_KEY_DOWN";
BI.RecordEditor.EVENT_START = "EVENT_START";
BI.RecordEditor.EVENT_PAUSE = "EVENT_PAUSE";
BI.RecordEditor.EVENT_STOP = "EVENT_STOP";
BI.RecordEditor.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.RecordEditor.EVENT_VALID = "EVENT_VALID";
BI.RecordEditor.EVENT_ERROR = "EVENT_ERROR";
BI.RecordEditor.EVENT_ENTER = "EVENT_ENTER";
BI.RecordEditor.EVENT_RESTRICT = "EVENT_RESTRICT";
BI.RecordEditor.EVENT_SPACE = "EVENT_SPACE";
BI.RecordEditor.EVENT_EMPTY = "EVENT_EMPTY";
$.shortcut("bi.record_editor", BI.RecordEditor);/**
* 带标记的文本框
* Created by GUY on 2016/1/25.
* @class BI.ShelterEditor
* @extends BI.Single
*/
BI.ShelterEditor = BI.inherit(BI.Single, {
_defaultConfig: function () {
var conf = BI.ShelterEditor.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-shelter-editor",
hgap: 4,
vgap: 2,
lgap: 0,
rgap: 0,
tgap: 0,
bgap: 0,
validationChecker: BI.emptyFn,
quitChecker: BI.emptyFn,
mouseOut: false,
allowBlank: true,
watermark: "",
errorText: "",
height: 30,
textAlign: "left"
})
},
_init: function () {
BI.ShelterEditor.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.editor = BI.createWidget({
type: "bi.editor",
height: o.height,
hgap: o.hgap,
vgap: o.vgap,
lgap: o.lgap,
rgap: o.rgap,
tgap: o.tgap,
bgap: o.bgap,
value: o.value,
validationChecker: o.validationChecker,
quitChecker: o.quitChecker,
mouseOut: o.mouseOut,
allowBlank: o.allowBlank,
watermark: o.watermark,
errorText: o.errorText
});
this.text = BI.createWidget({
type: "bi.text_button",
cls: "shelter-editor-text",
textAlign: o.textAlign,
height: o.height,
hgap: 4
});
BI.createWidget({
type: "bi.absolute",
element: this,
items: [{
el: this.text,
left: 0,
right: 0,
top: 0,
bottom: 0
}]
});
this.text.on(BI.Controller.EVENT_CHANGE, function () {
arguments[2] = self;
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.text.on(BI.TextButton.EVENT_CHANGE, function () {
self.fireEvent(BI.ShelterEditor.EVENT_CLICK_LABEL);
});
this.editor.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_FOCUS, function () {
self.fireEvent(BI.ShelterEditor.EVENT_FOCUS, arguments);
});
this.editor.on(BI.Editor.EVENT_BLUR, function () {
self.fireEvent(BI.ShelterEditor.EVENT_BLUR, arguments);
});
this.editor.on(BI.Editor.EVENT_CLICK, function () {
self.fireEvent(BI.ShelterEditor.EVENT_CLICK, arguments);
});
this.editor.on(BI.Editor.EVENT_CHANGE, function () {
self.fireEvent(BI.ShelterEditor.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_KEY_DOWN, function (v) {
self.fireEvent(BI.ShelterEditor.EVENT_KEY_DOWN, arguments);
});
this.editor.on(BI.Editor.EVENT_VALID, function () {
self.fireEvent(BI.ShelterEditor.EVENT_VALID, arguments);
});
this.editor.on(BI.Editor.EVENT_CONFIRM, function () {
self._showHint();
self._checkText();
self.fireEvent(BI.ShelterEditor.EVENT_CONFIRM, arguments);
});
this.editor.on(BI.Editor.EVENT_START, function () {
self.fireEvent(BI.ShelterEditor.EVENT_START, arguments);
});
this.editor.on(BI.Editor.EVENT_PAUSE, function () {
self.fireEvent(BI.ShelterEditor.EVENT_PAUSE, arguments);
});
this.editor.on(BI.Editor.EVENT_STOP, function () {
self.fireEvent(BI.ShelterEditor.EVENT_STOP, arguments);
});
this.editor.on(BI.Editor.EVENT_SPACE, function () {
self.fireEvent(BI.ShelterEditor.EVENT_SPACE, arguments);
});
this.editor.on(BI.Editor.EVENT_ERROR, function () {
self._checkText();
self.fireEvent(BI.ShelterEditor.EVENT_ERROR, arguments);
});
this.editor.on(BI.Editor.EVENT_ENTER, function () {
self.fireEvent(BI.ShelterEditor.EVENT_ENTER, arguments);
});
this.editor.on(BI.Editor.EVENT_RESTRICT, function () {
self.fireEvent(BI.ShelterEditor.EVENT_RESTRICT, arguments);
});
this.editor.on(BI.Editor.EVENT_EMPTY, function () {
self.fireEvent(BI.ShelterEditor.EVENT_EMPTY, arguments);
});
BI.createWidget({
type: "bi.vertical",
scrolly: false,
element: this,
items: [this.editor]
});
this._showHint();
self._checkText();
},
_checkText: function () {
var o = this.options;
if (this.editor.getValue() === "") {
this.text.setValue(o.watermark || "");
this.text.element.addClass("bi-water-mark");
} else {
this.text.setValue(this.editor.getValue());
this.text.element.removeClass("bi-water-mark");
}
},
_showInput: function () {
this.editor.visible();
this.text.invisible();
},
_showHint: function () {
this.editor.invisible();
this.text.visible();
},
focus: function () {
this._showInput();
this.editor.focus();
},
blur: function () {
this.editor.blur();
this._showHint();
this._checkText();
},
doRedMark: function () {
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) {
return;
}
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function () {
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) {
return;
}
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function () {
this.text.unHighLight.apply(this.text, arguments);
},
isValid: function () {
return this.editor.isValid();
},
setErrorText: function (text) {
this.editor.setErrorText(text);
},
getErrorText: function () {
return this.editor.getErrorText();
},
isEditing: function () {
return this.editor.isEditing();
},
getLastValidValue: function () {
return this.editor.getLastValidValue();
},
setValue: function (k) {
this.editor.setValue(k);
this._checkText();
},
getValue: function () {
return this.editor.getValue();
},
getState: function () {
return this.text.getValue();
},
setState: function (v) {
this._showHint();
this.text.setValue(v);
}
});
BI.ShelterEditor.EVENT_CHANGE = "EVENT_CHANGE";
BI.ShelterEditor.EVENT_FOCUS = "EVENT_FOCUS";
BI.ShelterEditor.EVENT_BLUR = "EVENT_BLUR";
BI.ShelterEditor.EVENT_CLICK = "EVENT_CLICK";
BI.ShelterEditor.EVENT_KEY_DOWN = "EVENT_KEY_DOWN";
BI.ShelterEditor.EVENT_CLICK_LABEL = "EVENT_CLICK_LABEL";
BI.ShelterEditor.EVENT_START = "EVENT_START";
BI.ShelterEditor.EVENT_PAUSE = "EVENT_PAUSE";
BI.ShelterEditor.EVENT_STOP = "EVENT_STOP";
BI.ShelterEditor.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.ShelterEditor.EVENT_VALID = "EVENT_VALID";
BI.ShelterEditor.EVENT_ERROR = "EVENT_ERROR";
BI.ShelterEditor.EVENT_ENTER = "EVENT_ENTER";
BI.ShelterEditor.EVENT_RESTRICT = "EVENT_RESTRICT";
BI.ShelterEditor.EVENT_SPACE = "EVENT_SPACE";
BI.ShelterEditor.EVENT_EMPTY = "EVENT_EMPTY";
$.shortcut("bi.shelter_editor", BI.ShelterEditor);/**
* 带标记的文本框
* Created by GUY on 2015/8/28.
* @class BI.SignEditor
* @extends BI.Single
*/
BI.SignEditor = BI.inherit(BI.Single, {
_defaultConfig: function () {
var conf = BI.SignEditor.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-sign-editor",
hgap: 4,
vgap: 2,
lgap: 0,
rgap: 0,
tgap: 0,
bgap: 0,
validationChecker: BI.emptyFn,
quitChecker: BI.emptyFn,
mouseOut: false,
allowBlank: true,
watermark: "",
errorText: "",
height: 30
})
},
_init: function () {
BI.SignEditor.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.editor = BI.createWidget({
type: "bi.editor",
height: o.height,
hgap: o.hgap,
vgap: o.vgap,
lgap: o.lgap,
rgap: o.rgap,
tgap: o.tgap,
bgap: o.bgap,
value: o.value,
validationChecker: o.validationChecker,
quitChecker: o.quitChecker,
mouseOut: o.mouseOut,
allowBlank: o.allowBlank,
watermark: o.watermark,
errorText: o.errorText
});
this.text = BI.createWidget({
type: "bi.text_button",
cls: "sign-editor-text",
textAlign: "left",
height: o.height,
hgap: 4,
handler: function () {
self._showInput();
self.editor.focus();
self.editor.selectAll();
}
});
this.text.on(BI.TextButton.EVENT_CHANGE, function () {
BI.nextTick(function () {
self.fireEvent(BI.SignEditor.EVENT_CLICK_LABEL)
});
});
BI.createWidget({
type: "bi.absolute",
element: this,
items: [{
el: this.text,
left: 0,
right: 0,
top: 0,
bottom: 0
}]
});
this.editor.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_FOCUS, function () {
self.fireEvent(BI.SignEditor.EVENT_FOCUS, arguments);
});
this.editor.on(BI.Editor.EVENT_BLUR, function () {
self.fireEvent(BI.SignEditor.EVENT_BLUR, arguments);
});
this.editor.on(BI.Editor.EVENT_CLICK, function () {
self.fireEvent(BI.SignEditor.EVENT_CLICK, arguments);
});
this.editor.on(BI.Editor.EVENT_CHANGE, function () {
self.fireEvent(BI.SignEditor.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_KEY_DOWN, function (v) {
self.fireEvent(BI.SignEditor.EVENT_KEY_DOWN, arguments);
});
this.editor.on(BI.Editor.EVENT_VALID, function () {
self.fireEvent(BI.SignEditor.EVENT_VALID, arguments);
});
this.editor.on(BI.Editor.EVENT_CONFIRM, function () {
self._showHint();
self._checkText();
self.fireEvent(BI.SignEditor.EVENT_CONFIRM, arguments);
});
this.editor.on(BI.Editor.EVENT_START, function () {
self.fireEvent(BI.SignEditor.EVENT_START, arguments);
});
this.editor.on(BI.Editor.EVENT_PAUSE, function () {
self.fireEvent(BI.SignEditor.EVENT_PAUSE, arguments);
});
this.editor.on(BI.Editor.EVENT_STOP, function () {
self.fireEvent(BI.SignEditor.EVENT_STOP, arguments);
});
this.editor.on(BI.Editor.EVENT_SPACE, function () {
self.fireEvent(BI.SignEditor.EVENT_SPACE, arguments);
});
this.editor.on(BI.Editor.EVENT_ERROR, function () {
self._checkText();
self.fireEvent(BI.SignEditor.EVENT_ERROR, arguments);
});
this.editor.on(BI.Editor.EVENT_ENTER, function () {
self.fireEvent(BI.SignEditor.EVENT_ENTER, arguments);
});
this.editor.on(BI.Editor.EVENT_RESTRICT, function () {
self.fireEvent(BI.SignEditor.EVENT_RESTRICT, arguments);
});
this.editor.on(BI.Editor.EVENT_EMPTY, function () {
self.fireEvent(BI.SignEditor.EVENT_EMPTY, arguments);
});
BI.createWidget({
type: "bi.vertical",
scrolly: false,
element: this,
items: [this.editor]
});
this._showHint();
self._checkText();
},
_checkText: function () {
var o = this.options;
if (this.editor.getValue() === "") {
this.text.setValue(o.watermark || "");
this.text.element.addClass("bi-water-mark");
} else {
this.text.setValue(this.editor.getValue());
this.text.element.removeClass("bi-water-mark");
}
},
_showInput: function () {
this.editor.visible();
this.text.invisible();
},
_showHint: function () {
this.editor.invisible();
this.text.visible();
},
focus: function () {
this._showInput();
this.editor.focus();
},
blur: function () {
this.editor.blur();
this._showHint();
this._checkText();
},
doRedMark: function () {
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) {
return;
}
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function () {
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) {
return;
}
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function () {
this.text.unHighLight.apply(this.text, arguments);
},
isValid: function () {
return this.editor.isValid();
},
setValid: function(v){
BI.SignEditor.superclass.setValid.apply(this, arguments);
this.editor.setValid(v);
},
setErrorText: function (text) {
this.editor.setErrorText(text);
},
getErrorText: function () {
return this.editor.getErrorText();
},
isEditing: function () {
return this.editor.isEditing();
},
getLastValidValue: function () {
return this.editor.getLastValidValue();
},
setValue: function (k) {
this.editor.setValue(k);
this._checkText();
},
getValue: function () {
return this.editor.getValue();
},
getState: function () {
return this.text.getValue();
},
setState: function (v) {
this._showHint();
this.text.setValue(v);
}
});
BI.SignEditor.EVENT_CHANGE = "EVENT_CHANGE";
BI.SignEditor.EVENT_FOCUS = "EVENT_FOCUS";
BI.SignEditor.EVENT_BLUR = "EVENT_BLUR";
BI.SignEditor.EVENT_CLICK = "EVENT_CLICK";
BI.SignEditor.EVENT_KEY_DOWN = "EVENT_KEY_DOWN";
BI.SignEditor.EVENT_CLICK_LABEL = "EVENT_CLICK_LABEL";
BI.SignEditor.EVENT_START = "EVENT_START";
BI.SignEditor.EVENT_PAUSE = "EVENT_PAUSE";
BI.SignEditor.EVENT_STOP = "EVENT_STOP";
BI.SignEditor.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.SignEditor.EVENT_VALID = "EVENT_VALID";
BI.SignEditor.EVENT_ERROR = "EVENT_ERROR";
BI.SignEditor.EVENT_ENTER = "EVENT_ENTER";
BI.SignEditor.EVENT_RESTRICT = "EVENT_RESTRICT";
BI.SignEditor.EVENT_SPACE = "EVENT_SPACE";
BI.SignEditor.EVENT_EMPTY = "EVENT_EMPTY";
$.shortcut("bi.sign_editor", BI.SignEditor);/**
* guy
* 记录状态的输入框
* @class BI.StateEditor
* @extends BI.Single
*/
BI.StateEditor = BI.inherit(BI.Single, {
_defaultConfig: function () {
var conf = BI.StateEditor.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-state-editor",
hgap: 4,
vgap: 2,
lgap: 0,
rgap: 0,
tgap: 0,
bgap: 0,
validationChecker: BI.emptyFn,
quitChecker: BI.emptyFn,
mouseOut: false,
allowBlank: true,
watermark: "",
errorText: "",
height: 30
})
},
_init: function () {
BI.StateEditor.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.editor = BI.createWidget({
type: "bi.editor",
height: o.height,
hgap: o.hgap,
vgap: o.vgap,
lgap: o.lgap,
rgap: o.rgap,
tgap: o.tgap,
bgap: o.bgap,
value: o.value,
validationChecker: o.validationChecker,
quitChecker: o.quitChecker,
mouseOut: o.mouseOut,
allowBlank: o.allowBlank,
watermark: o.watermark,
errorText: o.errorText
});
this.text = BI.createWidget({
type: "bi.text_button",
cls: "state-editor-infinite-text",
textAlign: "left",
height: o.height,
text: BI.i18nText("BI-Unrestricted"),
hgap: 4,
handler: function () {
self._showInput();
self.editor.focus();
self.editor.setValue("");
}
});
this.text.on(BI.TextButton.EVENT_CHANGE, function () {
BI.nextTick(function () {
self.fireEvent(BI.StateEditor.EVENT_CLICK_LABEL);
});
});
BI.createWidget({
type: "bi.absolute",
element: this,
items: [{
el: this.text,
left: 0,
right: 0,
top: 0,
bottom: 0
}]
});
this.editor.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_FOCUS, function () {
self.fireEvent(BI.StateEditor.EVENT_FOCUS, arguments);
});
this.editor.on(BI.Editor.EVENT_BLUR, function () {
self.fireEvent(BI.StateEditor.EVENT_BLUR, arguments);
});
this.editor.on(BI.Editor.EVENT_CLICK, function () {
self.fireEvent(BI.StateEditor.EVENT_CLICK, arguments);
});
this.editor.on(BI.Editor.EVENT_CHANGE, function () {
self.fireEvent(BI.StateEditor.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_KEY_DOWN, function (v) {
self.fireEvent(BI.StateEditor.EVENT_KEY_DOWN, arguments);
});
this.editor.on(BI.Editor.EVENT_VALID, function () {
self.fireEvent(BI.StateEditor.EVENT_VALID, arguments);
});
this.editor.on(BI.Editor.EVENT_CONFIRM, function () {
self._showHint();
self.fireEvent(BI.StateEditor.EVENT_CONFIRM, arguments);
});
this.editor.on(BI.Editor.EVENT_START, function () {
self.fireEvent(BI.StateEditor.EVENT_START, arguments);
});
this.editor.on(BI.Editor.EVENT_PAUSE, function () {
self.fireEvent(BI.StateEditor.EVENT_PAUSE, arguments);
});
this.editor.on(BI.Editor.EVENT_STOP, function () {
self.fireEvent(BI.StateEditor.EVENT_STOP, arguments);
});
this.editor.on(BI.Editor.EVENT_SPACE, function () {
self.fireEvent(BI.StateEditor.EVENT_SPACE, arguments);
});
this.editor.on(BI.Editor.EVENT_ERROR, function () {
self.fireEvent(BI.StateEditor.EVENT_ERROR, arguments);
});
this.editor.on(BI.Editor.EVENT_ENTER, function () {
self.fireEvent(BI.StateEditor.EVENT_ENTER, arguments);
});
this.editor.on(BI.Editor.EVENT_RESTRICT, function () {
self.fireEvent(BI.StateEditor.EVENT_RESTRICT, arguments);
});
this.editor.on(BI.Editor.EVENT_EMPTY, function () {
self.fireEvent(BI.StateEditor.EVENT_EMPTY, arguments);
});
BI.createWidget({
type: "bi.vertical",
scrolly: false,
element: this,
items: [this.editor]
});
this._showHint();
},
doRedMark: function () {
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) {
return;
}
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function () {
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) {
return;
}
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function () {
this.text.unHighLight.apply(this.text, arguments);
},
focus: function () {
this._showInput();
this.editor.focus();
},
blur: function () {
this.editor.blur();
this._showHint();
},
_showInput: function () {
this.editor.visible();
this.text.invisible();
},
_showHint: function () {
this.editor.invisible();
this.text.visible();
},
isValid: function () {
return this.editor.isValid();
},
setErrorText: function (text) {
this.editor.setErrorText(text);
},
getErrorText: function () {
return this.editor.getErrorText();
},
isEditing: function () {
return this.editor.isEditing();
},
getLastValidValue: function () {
return this.editor.getLastValidValue();
},
setValue: function (k) {
this.editor.setValue(k);
},
getValue: function () {
return this.editor.getValue();
},
getState: function () {
return this.editor.getValue().match(/[^\s]+/g);
},
setState: function (v) {
BI.StateEditor.superclass.setValue.apply(this, arguments);
if (BI.isNumber(v)) {
if (v === BI.Selection.All) {
this.text.setText(BI.i18nText("BI-Select_All"));
this.text.element.removeClass("state-editor-infinite-text");
} else if (v === BI.Selection.Multi) {
this.text.setText(BI.i18nText("BI-Select_Part"));
this.text.element.removeClass("state-editor-infinite-text");
} else {
this.text.setText(BI.i18nText("BI-Unrestricted"));
this.text.element.addClass("state-editor-infinite-text");
}
return;
}
if (!BI.isArray(v) || v.length === 1) {
this.text.setText(v);
this.text.setTitle(v);
this.text.element.removeClass("state-editor-infinite-text");
} else if (BI.isEmpty(v)) {
this.text.setText(BI.i18nText("BI-Unrestricted"));
this.text.element.addClass("state-editor-infinite-text");
} else {
this.text.setText(BI.i18nText("BI-Select_Part"));
this.text.element.removeClass("state-editor-infinite-text");
}
}
});
BI.StateEditor.EVENT_CHANGE = "EVENT_CHANGE";
BI.StateEditor.EVENT_FOCUS = "EVENT_FOCUS";
BI.StateEditor.EVENT_BLUR = "EVENT_BLUR";
BI.StateEditor.EVENT_CLICK = "EVENT_CLICK";
BI.StateEditor.EVENT_KEY_DOWN = "EVENT_KEY_DOWN";
BI.StateEditor.EVENT_CLICK_LABEL = "EVENT_CLICK_LABEL";
BI.StateEditor.EVENT_START = "EVENT_START";
BI.StateEditor.EVENT_PAUSE = "EVENT_PAUSE";
BI.StateEditor.EVENT_STOP = "EVENT_STOP";
BI.StateEditor.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.StateEditor.EVENT_VALID = "EVENT_VALID";
BI.StateEditor.EVENT_ERROR = "EVENT_ERROR";
BI.StateEditor.EVENT_ENTER = "EVENT_ENTER";
BI.StateEditor.EVENT_RESTRICT = "EVENT_RESTRICT";
BI.StateEditor.EVENT_SPACE = "EVENT_SPACE";
BI.StateEditor.EVENT_EMPTY = "EVENT_EMPTY";
$.shortcut("bi.state_editor", BI.StateEditor);/**
* 无限制-已选择状态输入框
* Created by GUY on 2016/5/18.
* @class BI.SimpleStateEditor
* @extends BI.Single
*/
BI.SimpleStateEditor = BI.inherit(BI.Single, {
_defaultConfig: function () {
var conf = BI.SimpleStateEditor.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-simple-state-editor",
hgap: 4,
vgap: 2,
lgap: 0,
rgap: 0,
tgap: 0,
bgap: 0,
validationChecker: BI.emptyFn,
quitChecker: BI.emptyFn,
mouseOut: false,
allowBlank: true,
watermark: "",
errorText: "",
height: 30
})
},
_init: function () {
BI.SimpleStateEditor.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.editor = BI.createWidget({
type: "bi.editor",
height: o.height,
hgap: o.hgap,
vgap: o.vgap,
lgap: o.lgap,
rgap: o.rgap,
tgap: o.tgap,
bgap: o.bgap,
value: o.value,
validationChecker: o.validationChecker,
quitChecker: o.quitChecker,
mouseOut: o.mouseOut,
allowBlank: o.allowBlank,
watermark: o.watermark,
errorText: o.errorText
});
this.text = BI.createWidget({
type: "bi.text_button",
cls: "state-editor-infinite-text",
textAlign: "left",
height: o.height,
text: BI.i18nText("BI-Unrestricted"),
hgap: 4,
handler: function () {
self._showInput();
self.editor.focus();
self.editor.setValue("");
}
});
this.text.on(BI.TextButton.EVENT_CHANGE, function () {
BI.nextTick(function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_CLICK_LABEL);
});
});
BI.createWidget({
type: "bi.absolute",
element: this,
items: [{
el: this.text,
left: 0,
right: 0,
top: 0,
bottom: 0
}]
});
this.editor.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_FOCUS, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_FOCUS, arguments);
});
this.editor.on(BI.Editor.EVENT_BLUR, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_BLUR, arguments);
});
this.editor.on(BI.Editor.EVENT_CLICK, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_CLICK, arguments);
});
this.editor.on(BI.Editor.EVENT_CHANGE, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_CHANGE, arguments);
});
this.editor.on(BI.Editor.EVENT_KEY_DOWN, function (v) {
self.fireEvent(BI.SimpleStateEditor.EVENT_KEY_DOWN, arguments);
});
this.editor.on(BI.Editor.EVENT_VALID, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_VALID, arguments);
});
this.editor.on(BI.Editor.EVENT_CONFIRM, function () {
self._showHint();
self.fireEvent(BI.SimpleStateEditor.EVENT_CONFIRM, arguments);
});
this.editor.on(BI.Editor.EVENT_START, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_START, arguments);
});
this.editor.on(BI.Editor.EVENT_PAUSE, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_PAUSE, arguments);
});
this.editor.on(BI.Editor.EVENT_STOP, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_STOP, arguments);
});
this.editor.on(BI.Editor.EVENT_SPACE, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_SPACE, arguments);
});
this.editor.on(BI.Editor.EVENT_ERROR, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_ERROR, arguments);
});
this.editor.on(BI.Editor.EVENT_ENTER, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_ENTER, arguments);
});
this.editor.on(BI.Editor.EVENT_RESTRICT, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_RESTRICT, arguments);
});
this.editor.on(BI.Editor.EVENT_EMPTY, function () {
self.fireEvent(BI.SimpleStateEditor.EVENT_EMPTY, arguments);
});
BI.createWidget({
type: "bi.vertical",
scrolly: false,
element: this,
items: [this.editor]
});
this._showHint();
},
doRedMark: function () {
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) {
return;
}
this.text.doRedMark.apply(this.text, arguments);
},
unRedMark: function () {
this.text.unRedMark.apply(this.text, arguments);
},
doHighLight: function () {
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) {
return;
}
this.text.doHighLight.apply(this.text, arguments);
},
unHighLight: function () {
this.text.unHighLight.apply(this.text, arguments);
},
focus: function () {
this._showInput();
this.editor.focus();
},
blur: function () {
this.editor.blur();
this._showHint();
},
_showInput: function () {
this.editor.visible();
this.text.invisible();
},
_showHint: function () {
this.editor.invisible();
this.text.visible();
},
isValid: function () {
return this.editor.isValid();
},
setErrorText: function (text) {
this.editor.setErrorText(text);
},
getErrorText: function () {
return this.editor.getErrorText();
},
isEditing: function () {
return this.editor.isEditing();
},
getLastValidValue: function () {
return this.editor.getLastValidValue();
},
setValue: function (k) {
this.editor.setValue(k);
},
getValue: function () {
return this.editor.getValue();
},
getState: function () {
return this.editor.getValue().match(/[^\s]+/g);
},
setState: function (v) {
BI.SimpleStateEditor.superclass.setValue.apply(this, arguments);
if (BI.isNumber(v)) {
if (v === BI.Selection.All) {
this.text.setText(BI.i18nText("BI-Aleady_Selected"));
this.text.element.removeClass("state-editor-infinite-text");
} else if (v === BI.Selection.Multi) {
this.text.setText(BI.i18nText("BI-Aleady_Selected"));
this.text.element.removeClass("state-editor-infinite-text");
} else {
this.text.setText(BI.i18nText("BI-Unrestricted"));
this.text.element.addClass("state-editor-infinite-text");
}
return;
}
if (!BI.isArray(v) || v.length === 1) {
this.text.setText(v);
this.text.setTitle(v);
this.text.element.removeClass("state-editor-infinite-text");
} else if (BI.isEmpty(v)) {
this.text.setText(BI.i18nText("BI-Unrestricted"));
this.text.element.addClass("state-editor-infinite-text");
} else {
this.text.setText(BI.i18nText("BI-Aleady_Selected"));
this.text.element.removeClass("state-editor-infinite-text");
}
}
});
BI.SimpleStateEditor.EVENT_CHANGE = "EVENT_CHANGE";
BI.SimpleStateEditor.EVENT_FOCUS = "EVENT_FOCUS";
BI.SimpleStateEditor.EVENT_BLUR = "EVENT_BLUR";
BI.SimpleStateEditor.EVENT_CLICK = "EVENT_CLICK";
BI.SimpleStateEditor.EVENT_KEY_DOWN = "EVENT_KEY_DOWN";
BI.SimpleStateEditor.EVENT_CLICK_LABEL = "EVENT_CLICK_LABEL";
BI.SimpleStateEditor.EVENT_START = "EVENT_START";
BI.SimpleStateEditor.EVENT_PAUSE = "EVENT_PAUSE";
BI.SimpleStateEditor.EVENT_STOP = "EVENT_STOP";
BI.SimpleStateEditor.EVENT_CONFIRM = "EVENT_CONFIRM";
BI.SimpleStateEditor.EVENT_VALID = "EVENT_VALID";
BI.SimpleStateEditor.EVENT_ERROR = "EVENT_ERROR";
BI.SimpleStateEditor.EVENT_ENTER = "EVENT_ENTER";
BI.SimpleStateEditor.EVENT_RESTRICT = "EVENT_RESTRICT";
BI.SimpleStateEditor.EVENT_SPACE = "EVENT_SPACE";
BI.SimpleStateEditor.EVENT_EMPTY = "EVENT_EMPTY";
$.shortcut("bi.simple_state_editor", BI.SimpleStateEditor);/**
* 倒立的Branch
* @class BI.HandStandBranchExpander
* @extend BI.Widget
* create by young
*/
BI.HandStandBranchExpander = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.HandStandBranchExpander.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-handstand-branch-expander",
direction: BI.Direction.Top,
logic: {
dynamic: true
},
el: {type: "bi.label"},
popup: {}
})
},
_init: function () {
BI.HandStandBranchExpander.superclass._init.apply(this, arguments);
var o = this.options;
this._initExpander();
this._initBranchView();
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(BI.LogicFactory.createLogicTypeByDirection(o.direction), BI.extend({}, o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection(o.direction, {
type: "bi.center_adapt",
items: [this.expander]
}, this.branchView)
}))));
},
_initExpander: function () {
var self = this, o = this.options;
this.expander = BI.createWidget(o.el);
this.expander.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
},
_initBranchView: function () {
var self = this, o = this.options;
this.branchView = BI.createWidget(o.popup, {});
this.branchView.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
},
populate: function (items) {
this.branchView.populate.apply(this.branchView, arguments);
},
getValue: function () {
return this.branchView.getValue();
}
});
BI.HandStandBranchExpander.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.handstand_branch_expander", BI.HandStandBranchExpander);/**
* @class BI.BranchExpander
* @extend BI.Widget
* create by young
*/
BI.BranchExpander = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.BranchExpander.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-branch-expander",
direction: BI.Direction.Left,
logic: {
dynamic: true
},
el: {},
popup: {}
})
},
_init: function () {
BI.BranchExpander.superclass._init.apply(this, arguments);
var o = this.options;
this._initExpander();
this._initBranchView();
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(BI.LogicFactory.createLogicTypeByDirection(o.direction), BI.extend({}, o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection(o.direction, this.expander, this.branchView)
}))));
},
_initExpander: function () {
var self = this, o = this.options;
this.expander = BI.createWidget(o.el, {
type: "bi.label",
width: 30,
height: "100%"
});
this.expander.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
},
_initBranchView: function () {
var self = this, o = this.options;
this.branchView = BI.createWidget(o.popup, {});
this.branchView.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
},
populate: function (items) {
this.branchView.populate.apply(this.branchView, arguments);
},
getValue: function () {
return this.branchView.getValue();
}
});
BI.BranchExpander.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.branch_expander", BI.BranchExpander);/**
* 有确定取消按钮的弹出层
* @class BI.BarFloatSection
* @extends BI.FloatSection
* @abstract
*/
BI.BarFloatSection = BI.inherit(BI.FloatSection, {
_defaultConfig: function () {
return BI.extend(BI.BarFloatSection.superclass._defaultConfig.apply(this, arguments), {
btns: [BI.i18nText(BI.i18nText("BI-Sure")), BI.i18nText("BI-Cancel")]
})
},
_init: function () {
BI.BarFloatSection.superclass._init.apply(this, arguments);
var self = this;
var flatten = ["_init", "_defaultConfig", "_vessel", "_render", "getName", "listenEnd", "local", "refresh", "load", "change"];
flatten = BI.makeObject(flatten, true);
BI.each(this.constructor.caller.caller.caller.caller.prototype, function (key) {
if (flatten[key]) {
return;
}
var f = self[key];
if (BI.isFunction(f)) {
self[key] = BI.bind(function () {
if (this.model._start === true) {
this._F.push({f: f, arg: arguments});
return;
}
return f.apply(this, arguments);
}, self);
}
})
},
rebuildSouth: function (south) {
var self = this, o = this.options;
this.sure = BI.createWidget({
type: 'bi.button',
text: this.options.btns[0],
height: 30,
value: 0,
handler: function (v) {
self.end();
self.close(v);
}
});
this.cancel = BI.createWidget({
type: 'bi.button',
text: this.options.btns[1],
height: 30,
value: 1,
level: 'ignore',
handler: function (v) {
self.close(v);
}
});
BI.createWidget({
type: 'bi.right_vertical_adapt',
element: south,
hgap: 5,
items: [this.cancel, this.sure]
});
}
});
/**
* 有确定取消按钮的弹出层
* @class BI.BarPopoverSection
* @extends BI.PopoverSection
* @abstract
*/
BI.BarPopoverSection = BI.inherit(BI.PopoverSection, {
_defaultConfig: function () {
return BI.extend(BI.BarPopoverSection.superclass._defaultConfig.apply(this, arguments), {
btns: [BI.i18nText(BI.i18nText("BI-Sure")), BI.i18nText(BI.i18nText("BI-Cancel"))]
})
},
_init: function () {
BI.BarPopoverSection.superclass._init.apply(this, arguments);
},
rebuildSouth: function (south) {
var self = this;
this.sure = BI.createWidget({
type: 'bi.button',
text: this.options.btns[0],
height: 30,
value: 0,
handler: function (v) {
self.end();
self.close(v);
}
});
this.cancel = BI.createWidget({
type: 'bi.button',
text: this.options.btns[1],
height: 30,
value: 1,
level: 'ignore',
handler: function (v) {
self.close(v);
}
});
BI.createWidget({
type: 'bi.right_vertical_adapt',
element: south,
hgap: 5,
items: [this.cancel, this.sure]
});
}
});/**
* 下拉框弹出层的多选版本toolbar带有若干按钮, zIndex在1000w
* @class BI.MultiPopupView
* @extends BI.Widget
*/
BI.MultiPopupView = BI.inherit(BI.PopupView, {
_defaultConfig: function () {
var conf = BI.MultiPopupView.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-multi-list-view",
buttons: [BI.i18nText("BI-Sure")]
})
},
_init: function () {
BI.MultiPopupView.superclass._init.apply(this, arguments);
},
_createToolBar: function () {
var o = this.options, self = this;
if (o.buttons.length === 0) {
return;
}
var text = []; //构造[{text:content},……]
BI.each(o.buttons, function (idx, item) {
text.push({
text: item,
value: idx
})
});
this.buttongroup = BI.createWidget({
type: "bi.button_group",
cls: "list-view-toolbar",
height: 30,
items: BI.createItems(text, {
type: "bi.text_button",
once: false,
shadow: true,
isShadowShowingOnSelected: true
}),
layouts: [{
type: "bi.center",
hgap: 0,
vgap: 0
}]
});
this.buttongroup.on(BI.ButtonGroup.EVENT_CHANGE, function (value, obj) {
self.fireEvent(BI.MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON, value, obj);
});
return this.buttongroup;
}
});
BI.MultiPopupView.EVENT_CHANGE = "EVENT_CHANGE";
BI.MultiPopupView.EVENT_CLICK_TOOLBAR_BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON";
$.shortcut("bi.multi_popup_view", BI.MultiPopupView);/**
* 可以理解为MultiPopupView和Panel两个面板的结合体
* @class BI.PopupPanel
* @extends BI.MultiPopupView
*/
BI.PopupPanel = BI.inherit(BI.MultiPopupView, {
_defaultConfig: function () {
var conf = BI.PopupPanel.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-popup-panel",
title: ""
})
},
_init: function () {
BI.PopupPanel.superclass._init.apply(this, arguments);
},
_createTool: function () {
var self = this, o = this.options;
var close = BI.createWidget({
type: "bi.icon_button",
cls: "close-h-font",
width: 25,
height: 25
});
close.on(BI.IconButton.EVENT_CHANGE, function () {
self.setVisible(false);
self.fireEvent(BI.PopupPanel.EVENT_CLOSE);
});
return BI.createWidget({
type: "bi.htape",
cls: "popup-panel-title",
height: 25,
items: [{
el: {
type: "bi.label",
textAlign: "left",
text: o.title,
height: 25,
lgap: 10
}
}, {
el: close,
width: 25
}]
});
}
});
BI.PopupPanel.EVENT_CHANGE = "EVENT_CHANGE";
BI.PopupPanel.EVENT_CLOSE = "EVENT_CLOSE";
BI.PopupPanel.EVENT_CLICK_TOOLBAR_BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON";
$.shortcut("bi.popup_panel", BI.PopupPanel);/**
* list面板
*
* Created by GUY on 2015/10/30.
* @class BI.ListPane
* @extends BI.Pane
*/
BI.ListPane = BI.inherit(BI.Pane, {
_defaultConfig: function () {
var conf = BI.ListPane.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-list-pane",
logic: {
dynamic: true
},
lgap: 0,
rgap: 0,
tgap: 0,
bgap: 0,
vgap: 0,
hgap: 0,
items: [],
itemsCreator: BI.emptyFn,
hasNext: BI.emptyFn,
onLoaded: BI.emptyFn,
el: {
type: "bi.button_group"
}
})
},
_init: function () {
BI.ListPane.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.button_group = BI.createWidget(o.el, {
type: "bi.button_group",
chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE,
behaviors: {},
items: o.items,
itemsCreator: function (op, calback) {
if (op.times === 1) {
self.empty();
BI.nextTick(function () {
self.loading()
});
}
o.itemsCreator(op, function () {
calback.apply(self, arguments);
op.times === 1 && BI.nextTick(function () {
self.loaded();
});
});
},
hasNext: o.hasNext,
layouts: [{
type: "bi.vertical"
}]
});
this.button_group.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
if (type === BI.Events.CLICK) {
self.fireEvent(BI.ListPane.EVENT_CHANGE, value, obj);
}
});
this.check();
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Top), BI.extend({
scrolly: true,
lgap: o.lgap,
rgap: o.rgap,
tgap: o.tgap,
bgap: o.bgap,
vgap: o.vgap,
hgap: o.hgap
}, o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Top, this.button_group)
}))));
},
hasPrev: function () {
return this.button_group.hasPrev && this.button_group.hasPrev();
},
hasNext: function () {
return this.button_group.hasNext && this.button_group.hasNext();
},
prependItems: function (items) {
this.options.items = items.concat(this.options.items);
this.button_group.prependItems.apply(this.button_group, arguments);
this.check();
},
addItems: function (items) {
this.options.items = this.options.items.concat(items);
this.button_group.addItems.apply(this.button_group, arguments);
this.check();
},
populate: function (items) {
var self = this, o = this.options;
if (arguments.length === 0 && (BI.isFunction(this.button_group.attr("itemsCreator")))) {//接管loader的populate方法
this.button_group.attr("itemsCreator").apply(this, [{times: 1}, function () {
if (arguments.length === 0) {
throw new Error("参数不能为空");
}
self.populate.apply(self, arguments);
}]);
return;
}
BI.ListPane.superclass.populate.apply(this, arguments);
this.button_group.populate.apply(this.button_group, arguments);
},
empty: function () {
this.button_group.empty();
},
doBehavior: function () {
this.button_group.doBehavior.apply(this.button_group, arguments);
},
setNotSelectedValue: function () {
this.button_group.setNotSelectedValue.apply(this.button_group, arguments);
},
getNotSelectedValue: function () {
return this.button_group.getNotSelectedValue();
},
setValue: function () {
this.button_group.setValue.apply(this.button_group, arguments);
},
getValue: function () {
return this.button_group.getValue.apply(this.button_group, arguments);
},
getAllButtons: function () {
return this.button_group.getAllButtons();
},
getAllLeaves: function () {
return this.button_group.getAllLeaves();
},
getSelectedButtons: function () {
return this.button_group.getSelectedButtons();
},
getNotSelectedButtons: function () {
return this.button_group.getNotSelectedButtons();
},
getIndexByValue: function (value) {
return this.button_group.getIndexByValue(value);
},
getNodeById: function (id) {
return this.button_group.getNodeById(id);
},
getNodeByValue: function (value) {
return this.button_group.getNodeByValue(value);
}
});
BI.ListPane.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.list_pane", BI.ListPane);/**
* 带有标题栏的pane
* @class BI.Panel
* @extends BI.Widget
*/
BI.Panel = BI.inherit(BI.Widget,{
_defaultConfig : function(){
return BI.extend(BI.Panel.superclass._defaultConfig.apply(this,arguments),{
baseCls: "bi-panel",
title:"",
titleButtons:[],
el:{},
logic:{
dynamic: false
}
});
},
_init:function(){
BI.Panel.superclass._init.apply(this,arguments);
var o = this.options;
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic("vertical", BI.extend(o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection("top", this._createTitle()
,this.options.el)
}))));
},
_createTitle:function(){
var self = this, o = this.options;
this.text = BI.createWidget({
type: "bi.label",
cls: "panel-title-text",
text: o.title,
height: 30
});
this.button_group = BI.createWidget({
type:"bi.button_group",
items: o.titleButtons,
layouts: [{
type: "bi.center_adapt",
lgap:10
}]
});
this.button_group.on(BI.Controller.EVENT_CHANGE, function(){
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.button_group.on(BI.ButtonGroup.EVENT_CHANGE, function(value, obj){
self.fireEvent(BI.Panel.EVENT_CHANGE, value, obj);
});
return {
el: {
type: "bi.left_right_vertical_adapt",
cls: "panel-title",
height: 30,
items: {
left: [this.text],
right: [this.button_group]
},
lhgap: 10,
rhgap: 10
},
height: 30
};
},
setTitle: function(title){
this.text.setValue(title);
}
});
BI.Panel.EVENT_CHANGE = "Panel.EVENT_CHANGE";
$.shortcut("bi.panel",BI.Panel);/**
* 选择列表
*
* Created by GUY on 2015/11/1.
* @class BI.SelectList
* @extends BI.Widget
*/
BI.SelectList = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.SelectList.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-select-list",
direction: BI.Direction.Top,//toolbar的位置
logic: {
dynamic: true
},
items: [],
itemsCreator: BI.emptyFn,
hasNext: BI.emptyFn,
onLoaded: BI.emptyFn,
toolbar: {
type: "bi.multi_select_bar"
},
el: {
type: "bi.list_pane"
}
})
},
_init: function () {
BI.SelectList.superclass._init.apply(this, arguments);
var self = this, o = this.options;
//全选
this.toolbar = BI.createWidget(o.toolbar);
this.toolbar.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) {
var isAllSelected = this.isSelected();
if (type === BI.Events.CLICK) {
self.setAllSelected(isAllSelected);
self.fireEvent(BI.SelectList.EVENT_CHANGE, value, obj);
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.list = BI.createWidget(o.el, {
type: "bi.list_pane",
items: o.items,
itemsCreator: function (op, callback) {
op.times === 1 && self.toolbar.setVisible(false);
o.itemsCreator(op, function (items) {
callback.apply(self, arguments);
if (op.times === 1) {
self.toolbar.setVisible(items && items.length > 0);
self.toolbar.setEnable(items && items.length > 0);
}
self._checkAllSelected();
});
},
onLoaded: o.onLoaded,
hasNext: o.hasNext
});
this.list.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) {
if (type === BI.Events.CLICK) {
self._checkAllSelected();
self.fireEvent(BI.SelectList.EVENT_CHANGE, value, obj);
}
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
BI.createWidget(BI.extend({
element: this
}, BI.LogicFactory.createLogic(BI.LogicFactory.createLogicTypeByDirection(o.direction), BI.extend({
scrolly: true
}, o.logic, {
items: BI.LogicFactory.createLogicItemsByDirection(o.direction, this.toolbar, this.list)
}))));
if (o.items.length <= 0) {
this.toolbar.setVisible(false);
this.toolbar.setEnable(false);
}
},
_checkAllSelected: function () {
var selectLength = this.list.getValue().length;
var notSelectLength = this.getAllLeaves().length - selectLength;
var hasNext = this.list.hasNext();
var isAlreadyAllSelected = this.toolbar.isSelected();
var isHalf = selectLength > 0 && (notSelectLength > 0 || (!isAlreadyAllSelected && hasNext));
isHalf = isHalf || (notSelectLength > 0 && hasNext && isAlreadyAllSelected);
this.toolbar.setHalfSelected(isHalf);
!isHalf && this.toolbar.setSelected(selectLength > 0 && notSelectLength <= 0 && (!hasNext || isAlreadyAllSelected));
},
setAllSelected: function (v) {
BI.each(this.getAllButtons(), function (i, btn) {
(btn.setSelected || btn.setAllSelected).apply(btn, [v]);
});
this.toolbar.setSelected(v);
this.toolbar.setHalfSelected(false);
},
setToolBarVisible: function (b) {
this.toolbar.setVisible(b);
},
isAllSelected: function () {
return this.toolbar.isSelected();
},
hasPrev: function () {
return this.list.hasPrev();
},
hasNext: function () {
return this.list.hasNext();
},
prependItems: function (items) {
this.list.prependItems.apply(this.list, arguments);
},
addItems: function (items) {
this.list.addItems.apply(this.list, arguments);
},
setValue: function (data) {
var selectAll = data.type === BI.ButtonGroup.CHOOSE_TYPE_ALL;
this.setAllSelected(selectAll);
this.list[selectAll ? "setNotSelectedValue" : "setValue"](data.value);
this._checkAllSelected();
},
getValue: function () {
if (this.isAllSelected() === false) {
return {
type: BI.ButtonGroup.CHOOSE_TYPE_MULTI,
value: this.list.getValue(),
assist: this.list.getNotSelectedValue()
};
} else {
return {
type: BI.ButtonGroup.CHOOSE_TYPE_ALL,
value: this.list.getNotSelectedValue(),
assist: this.list.getValue()
};
}
},
empty: function () {
this.list.empty();
},
populate: function (items) {
this.toolbar.setVisible(!BI.isEmptyArray(items));
this.toolbar.setEnable(!BI.isEmptyArray(items));
this.list.populate.apply(this.list, arguments);
this._checkAllSelected();
},
resetHeight: function (h) {
var toolHeight = ( this.toolbar.element.outerHeight() || 25) * ( this.toolbar.isVisible() ? 1 : 0);
this.list.resetHeight ? this.list.resetHeight(h - toolHeight) :
this.list.element.css({"max-height": h - toolHeight + "px"})
},
doBehavior: function () {
this.list.doBehavior.apply(this.list, arguments);
},
setNotSelectedValue: function () {
this.list.setNotSelectedValue.apply(this.list, arguments);
this._checkAllSelected();
},
getNotSelectedValue: function () {
return this.list.getNotSelectedValue();
},
getAllButtons: function () {
return this.list.getAllButtons();
},
getAllLeaves: function () {
return this.list.getAllLeaves();
},
getSelectedButtons: function () {
return this.list.getSelectedButtons();
},
getNotSelectedButtons: function () {
return this.list.getNotSelectedButtons();
},
getIndexByValue: function (value) {
return this.list.getIndexByValue(value);
},
getNodeById: function (id) {
return this.list.getNodeById(id);
},
getNodeByValue: function (value) {
return this.list.getNodeByValue(value);
}
});
BI.SelectList.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.select_list", BI.SelectList);/**
* Created by roy on 15/11/6.
*/
BI.LazyLoader = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.LazyLoader.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-lazy-loader",
el: {}
})
},
_init: function () {
var self = this, o = this.options;
BI.LazyLoader.superclass._init.apply(this, arguments);
var all = o.items.length;
this.loader = BI.createWidget({
type: "bi.loader",
element: this,
//下面是button_group的属性
el: o.el,
itemsCreator: function (options, populate) {
populate(self._getNextItems(options));
},
hasNext: function (option) {
return option.count < all;
}
});
this.loader.on(BI.Loader.EVENT_CHANGE, function (obj) {
self.fireEvent(BI.LazyLoader.EVENT_CHANGE, obj)
})
},
_getNextItems: function (options) {
var self = this, o = this.options;
var lastNum = o.items.length - BICst.PAGE_COUNT * (options.times - 1);
var lastItems = BI.last(o.items, lastNum);
var nextItems = BI.first(lastItems, BICst.PAGE_COUNT);
return nextItems;
},
populate: function (items) {
this.loader.populate(items);
},
addItems: function (items) {
this.loader.addItems(items);
},
empty: function () {
this.loader.empty();
},
doBehavior: function () {
this.loader.doBehavior();
},
setNotSelectedValue: function () {
this.loader.setNotSelectedValue.apply(this.loader, arguments);
},
getNotSelectedValue: function () {
return this.loader.getNotSelectedValue();
},
setValue: function () {
this.loader.setValue.apply(this.loader, arguments);
},
getValue: function () {
return this.loader.getValue.apply(this.loader, arguments);
},
getAllButtons: function () {
return this.loader.getAllButtons();
},
getAllLeaves: function () {
return this.loader.getAllLeaves();
},
getSelectedButtons: function () {
return this.loader.getSelectedButtons();
},
getNotSelectedButtons: function () {
return this.loader.getNotSelectedButtons();
},
getIndexByValue: function (value) {
return this.loader.getIndexByValue(value);
},
getNodeById: function (id) {
return this.loader.getNodeById(id);
},
getNodeByValue: function (value) {
return this.loader.getNodeByValue(value);
}
});
BI.LazyLoader.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.lazy_loader", BI.LazyLoader);/**
* 恶心的加载控件 为解决排序问题引入的控件
*
* Created by GUY on 2015/11/12.
* @class BI.ListLoader
* @extends BI.Widget
*/
BI.ListLoader = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.ListLoader.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-list-loader",
isDefaultInit: true,//是否默认初始化数据
//下面是button_group的属性
el: {
type: "bi.button_group"
},
items: [],
itemsCreator: BI.emptyFn,
onLoaded: BI.emptyFn,
//下面是分页信息
count: false,
next: {},
hasNext: BI.emptyFn
})
},
_nextLoad: function () {
var self = this, o = this.options;
this.next.setLoading();
o.itemsCreator.apply(this, [{times: ++this.times}, function () {
self.next.setLoaded();
self.addItems.apply(self, arguments);
}]);
},
_init: function () {
BI.ListLoader.superclass._init.apply(this, arguments);
var self = this, o = this.options;
if (o.itemsCreator === false) {
o.next = false;
}
this.button_group = BI.createWidget(o.el, {
type: "bi.button_group",
element: this,
chooseType: 0,
items: o.items,
behaviors: {},
layouts: [{
type: "bi.vertical"
}]
});
this.button_group.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
if (type === BI.Events.CLICK) {
self.fireEvent(BI.ListLoader.EVENT_CHANGE, obj);
}
});
if (o.next !== false) {
this.next = BI.createWidget(BI.extend({
type: "bi.loading_bar"
}, o.next));
this.next.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self._nextLoad();
}
})
}
BI.createWidget({
type: "bi.vertical",
element: this,
items: [this.next]
});
o.isDefaultInit && BI.isEmpty(o.items) && BI.nextTick(BI.bind(function () {
this.populate();
}, this));
if (BI.isNotEmptyArray(o.items)) {
this.populate(o.items);
}
},
hasNext: function () {
var o = this.options;
if (BI.isNumber(o.count)) {
return this.count < o.count;
}
return !!o.hasNext.apply(this, [{
times: this.times,
count: this.count
}])
},
addItems: function (items) {
this.count += items.length;
if (BI.isObject(this.next)) {
if (this.hasNext()) {
this.options.items = this.options.items.concat(items);
this.next.setLoaded();
} else {
this.next.setEnd();
}
}
this.button_group.addItems.apply(this.button_group, arguments);
this.next.element.appendTo(this.element);
},
populate: function (items) {
var self = this, o = this.options;
if (arguments.length === 0 && (BI.isFunction(o.itemsCreator))) {
o.itemsCreator.apply(this, [{times: 1}, function () {
if (arguments.length === 0) {
throw new Error("参数不能为空");
}
self.populate.apply(self, arguments);
o.onLoaded();
}]);
return;
}
this.options.items = items;
this.times = 1;
this.count = 0;
this.count += items.length;
if (BI.isObject(this.next)) {
if (this.hasNext()) {
this.next.setLoaded();
} else {
this.next.invisible();
}
}
BI.DOM.hang([this.next]);
this.button_group.populate.apply(this.button_group, arguments);
this.next.element.appendTo(this.element);
},
empty: function () {
BI.DOM.hang([this.next]);
this.button_group.empty();
this.next.element.appendTo(this.element);
BI.each([this.next], function (i, ob) {
ob && ob.setVisible(false);
});
},
doBehavior: function () {
this.button_group.doBehavior.apply(this.button_group, arguments);
},
setNotSelectedValue: function () {
this.button_group.setNotSelectedValue.apply(this.button_group, arguments);
},
getNotSelectedValue: function () {
return this.button_group.getNotSelectedValue();
},
setValue: function () {
this.button_group.setValue.apply(this.button_group, arguments);
},
getValue: function () {
return this.button_group.getValue.apply(this.button_group, arguments);
},
getAllButtons: function () {
return this.button_group.getAllButtons();
},
getAllLeaves: function () {
return this.button_group.getAllLeaves();
},
getSelectedButtons: function () {
return this.button_group.getSelectedButtons();
},
getNotSelectedButtons: function () {
return this.button_group.getNotSelectedButtons();
},
getIndexByValue: function (value) {
return this.button_group.getIndexByValue(value);
},
getNodeById: function (id) {
return this.button_group.getNodeById(id);
},
getNodeByValue: function (value) {
return this.button_group.getNodeByValue(value);
}
});
BI.ListLoader.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.list_loader", BI.ListLoader);/**
* Created by GUY on 2016/4/29.
*
* @class BI.SortList
* @extends BI.Widget
*/
BI.SortList = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.SortList.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-sort-list",
isDefaultInit: true,//是否默认初始化数据
//下面是button_group的属性
el: {
type: "bi.button_group"
},
items: [],
itemsCreator: BI.emptyFn,
onLoaded: BI.emptyFn,
//下面是分页信息
count: false,
next: {},
hasNext: BI.emptyFn
//containment: this.element,
//connectWith: ".bi-sort-list",
})
},
_init: function () {
BI.SortList.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.loader = BI.createWidget({
type: "bi.list_loader",
element: this,
isDefaultInit: o.isDefaultInit,
el: o.el,
items: this._formatItems(o.items),
itemsCreator: function (op, callback) {
o.itemsCreator(op, function (items) {
callback(self._formatItems(items));
});
},
onLoaded: o.onLoaded,
count: o.count,
next: o.next,
hasNext: o.hasNext
});
this.loader.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
if (type === BI.Events.CLICK) {
self.fireEvent(BI.SortList.EVENT_CHANGE, value, obj);
}
});
this.loader.element.sortable({
containment: o.containment || this.element,
connectWith: o.connectWith || ".bi-sort-list",
items: ".sort-item",
cursor: "drag",
tolerance: "intersect",
placeholder: {
element: function ($currentItem) {
var holder = BI.createWidget({
type: "bi.label",
cls: "bi-sortable-holder",
height: $currentItem.outerHeight()
});
holder.element.css({
"margin-left": $currentItem.css("margin-left"),
"margin-right": $currentItem.css("margin-right"),
"margin-top": $currentItem.css("margin-top"),
"margin-bottom": $currentItem.css("margin-bottom"),
"margin": $currentItem.css("margin")
});
return holder.element;
},
update: function () {
}
},
start: function (event, ui) {
},
stop: function (event, ui) {
self.fireEvent(BI.SortList.EVENT_CHANGE);
},
over: function (event, ui) {
}
});
},
_formatItems: function (items) {
BI.each(items, function (i, item) {
item = BI.stripEL(item);
item.cls = item.cls ? item.cls + " sort-item" : "sort-item";
item.attributes = {
sorted: item.value
};
});
return items;
},
hasNext: function () {
return this.loader.hasNext();
},
addItems: function (items) {
this.loader.addItems(items);
},
populate: function (items) {
this.loader.populate.apply(this.loader, arguments);
},
empty: function () {
this.loader.empty();
},
doBehavior: function () {
this.loader.doBehavior.apply(this.loader, arguments);
},
setNotSelectedValue: function () {
this.loader.setNotSelectedValue.apply(this.loader, arguments);
},
getNotSelectedValue: function () {
return this.loader.getNotSelectedValue();
},
setValue: function () {
this.loader.setValue.apply(this.loader, arguments);
},
getValue: function () {
return this.loader.getValue();
},
getAllButtons: function () {
return this.loader.getAllButtons();
},
getAllLeaves: function () {
return this.loader.getAllLeaves();
},
getSelectedButtons: function () {
return this.loader.getSelectedButtons();
},
getNotSelectedButtons: function () {
return this.loader.getNotSelectedButtons();
},
getIndexByValue: function (value) {
return this.loader.getIndexByValue(value);
},
getNodeById: function (id) {
return this.loader.getNodeById(id);
},
getNodeByValue: function (value) {
return this.loader.getNodeByValue(value);
},
getSortedValues: function () {
return this.loader.element.sortable("toArray", {attribute: "sorted"});
}
});
BI.SortList.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.sort_list", BI.SortList);/**
* 有总页数的分页控件
*
* Created by GUY on 2015/9/8.
* @class BI.AllPagger
* @extends BI.Widget
*/
BI.AllPagger = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.AllPagger.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-all-pager",
width: 96,
height: 25,
pages: 1, //必选项
curr: 1 //初始化当前页, pages为数字时可用
})
},
_init: function () {
BI.AllPagger.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.editor = BI.createWidget({
type: "bi.small_text_editor",
cls: "pager-editor",
validationChecker: function (v) {
return BI.isPositiveInteger(v);
},
hgap: 4,
vgap: 0,
value: o.curr,
errorText: BI.i18nText("BI-Please_Input_Integer"),
width: 30,
height: o.height - 2
});
this.pager = BI.createWidget({
type: "bi.pager",
width: 36,
layouts: [{
type: "bi.horizontal",
hgap: 1,
vgap: 1
}],
dynamicShow: false,
pages: o.pages,
curr: o.curr,
groups: 0,
first: false,
last: false,
prev: {
type: "bi.icon_button",
value: "prev",
title: BI.i18nText("BI-Previous_Page"),
warningTitle: BI.i18nText("BI-Current_Is_First_Page"),
height: o.height - 2,
cls: "all-pager-prev column-pre-page-h-font"
},
next: {
type: "bi.icon_button",
value: "next",
title: BI.i18nText("BI-Next_Page"),
warningTitle: BI.i18nText("BI-Current_Is_Last_Page"),
height: o.height - 2,
cls: "all-pager-next column-next-page-h-font"
},
hasPrev: o.hasPrev,
hasNext: o.hasNext,
firstPage: o.firstPage,
lastPage: o.lastPage
});
this.editor.on(BI.TextEditor.EVENT_CONFIRM, function () {
self.pager.setValue(BI.parseInt(self.editor.getValue()));
self.fireEvent(BI.AllPagger.EVENT_CHANGE);
});
this.pager.on(BI.Pager.EVENT_CHANGE, function () {
self.fireEvent(BI.AllPagger.EVENT_CHANGE);
});
this.pager.on(BI.Pager.EVENT_AFTER_POPULATE, function () {
self.editor.setValue(self.pager.getCurrentPage());
});
this.allPages = BI.createWidget({
type: "bi.label",
width: 30,
title: o.pages,
text: "/" + o.pages
});
BI.createWidget({
type: "bi.center_adapt",
element: this,
columnSize: [30, "", 36],
items: [this.editor, this.allPages, this.pager]
})
},
setAllPages: function (v) {
this.allPages.setText("/" + v);
this.allPages.setTitle(v);
this.pager.setAllPages(v);
},
setValue: function (v) {
this.pager.setValue(v);
},
getCurrentPage: function () {
return this.pager.getCurrentPage();
},
hasPrev: function () {
return this.pager.hasPrev();
},
hasNext: function () {
return this.pager.hasNext();
},
populate: function () {
this.pager.populate();
}
});
BI.AllPagger.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.all_pager", BI.AllPagger);/**
* 显示页码的分页控件
*
* Created by GUY on 2016/6/30.
* @class BI.DirectionPager
* @extends BI.Widget
*/
BI.DirectionPager = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.DirectionPager.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-direction-pager",
width: 108,
height: 25,
horizontal: {
pages: false, //总页数
curr: 1, //初始化当前页, pages为数字时可用
hasPrev: BI.emptyFn,
hasNext: BI.emptyFn,
firstPage: 1,
lastPage: BI.emptyFn
},
vertical: {
pages: false, //总页数
curr: 1, //初始化当前页, pages为数字时可用
hasPrev: BI.emptyFn,
hasNext: BI.emptyFn,
firstPage: 1,
lastPage: BI.emptyFn
}
})
},
_init: function () {
BI.DirectionPager.superclass._init.apply(this, arguments);
var self = this, o = this.options;
var v = o.vertical, h = o.horizontal;
this._createVPager();
this._createHPager();
BI.createWidget({
type: "bi.absolute",
scrollable: false,
element: this,
items: [{
el: this.vpager,
top: 0,
left: -19
}, {
el: this.vlabel,
top: 0,
left: 16
}, {
el: this.hpager,
top: 0,
right: -19
}, {
el: this.hlabel,
top: 0,
right: 16
}]
});
},
_createVPager: function () {
var self = this, o = this.options;
var v = o.vertical;
this.vlabel = BI.createWidget({
type: "bi.label",
width: 20,
height: o.height,
value: v.curr,
title: v.curr
});
this.vpager = BI.createWidget({
type: "bi.pager",
width: 72,
layouts: [{
type: "bi.horizontal",
lgap: 20,
vgap: 1
}],
dynamicShow: false,
pages: v.pages,
curr: v.curr,
groups: 0,
first: false,
last: false,
prev: {
type: "bi.icon_button",
value: "prev",
title: BI.i18nText("BI-Up_Page"),
warningTitle: BI.i18nText("BI-Current_Is_First_Page"),
height: o.height - 2,
iconWidth: o.height - 2,
iconHeight: o.height - 2,
cls: "direction-pager-prev column-pre-page-h-font"
},
next: {
type: "bi.icon_button",
value: "next",
title: BI.i18nText("BI-Down_Page"),
warningTitle: BI.i18nText("BI-Current_Is_Last_Page"),
height: o.height - 2,
iconWidth: o.height - 2,
iconHeight: o.height - 2,
cls: "direction-pager-next column-next-page-h-font"
},
hasPrev: v.hasPrev,
hasNext: v.hasNext,
firstPage: v.firstPage,
lastPage: v.lastPage
});
this.vpager.on(BI.Pager.EVENT_CHANGE, function () {
self.fireEvent(BI.DirectionPager.EVENT_CHANGE);
});
this.vpager.on(BI.Pager.EVENT_AFTER_POPULATE, function () {
self.vlabel.setValue(this.getCurrentPage());
});
},
_createHPager: function () {
var self = this, o = this.options;
var h = o.horizontal;
this.hlabel = BI.createWidget({
type: "bi.label",
width: 20,
height: o.height,
value: h.curr,
title: h.curr
});
this.hpager = BI.createWidget({
type: "bi.pager",
width: 72,
layouts: [{
type: "bi.horizontal",
rgap: 20,
vgap: 1
}],
dynamicShow: false,
pages: h.pages,
curr: h.curr,
groups: 0,
first: false,
last: false,
prev: {
type: "bi.icon_button",
value: "prev",
title: BI.i18nText("BI-Left_Page"),
warningTitle: BI.i18nText("BI-Current_Is_First_Page"),
height: o.height - 2,
iconWidth: o.height - 2,
iconHeight: o.height - 2,
cls: "direction-pager-prev row-pre-page-h-font"
},
next: {
type: "bi.icon_button",
value: "next",
title: BI.i18nText("BI-Right_Page"),
warningTitle: BI.i18nText("BI-Current_Is_Last_Page"),
height: o.height - 2,
iconWidth: o.height - 2,
iconHeight: o.height - 2,
cls: "direction-pager-next row-next-page-h-font"
},
hasPrev: h.hasPrev,
hasNext: h.hasNext,
firstPage: h.firstPage,
lastPage: h.lastPage
});
this.hpager.on(BI.Pager.EVENT_CHANGE, function () {
self.fireEvent(BI.DirectionPager.EVENT_CHANGE);
});
this.hpager.on(BI.Pager.EVENT_AFTER_POPULATE, function () {
self.hlabel.setValue(this.getCurrentPage());
});
},
getVPage: function () {
return this.vpager.getCurrentPage();
},
getHPage: function () {
return this.hpager.getCurrentPage();
},
setVPage: function (v) {
this.vpager.setValue(v);
this.vlabel.setValue(v);
this.vlabel.setTitle(v);
},
setHPage: function (v) {
this.hpager.setValue(v);
this.hlabel.setValue(v);
this.hlabel.setTitle(v);
},
hasVNext: function () {
return this.vpager.hasNext();
},
hasHNext: function () {
return this.hpager.hasNext();
},
hasVPrev: function () {
return this.vpager.hasPrev();
},
hasHPrev: function () {
return this.hpager.hasPrev();
},
setHPagerVisible: function (b) {
this.hpager.setVisible(b);
this.hlabel.setVisible(b);
},
setVPagerVisible: function (b) {
this.vpager.setVisible(b);
this.vlabel.setVisible(b);
},
populate: function () {
this.vpager.populate();
this.hpager.populate();
},
refresh: function () {
this.vpager.refresh();
this.hpager.refresh();
}
});
BI.DirectionPager.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.direction_pager", BI.DirectionPager);/**
* 显示页码的分页控件
*
* Created by GUY on 2016/2/17.
* @class BI.NumberPager
* @extends BI.Widget
*/
BI.NumberPager = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.NumberPager.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-number-pager",
width: 95,
height: 25,
pages: false, //总页数
curr: 1, //初始化当前页, pages为数字时可用
hasPrev: BI.emptyFn,
hasNext: BI.emptyFn,
firstPage: 1,
lastPage: BI.emptyFn
})
},
_init: function () {
BI.NumberPager.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.currentPage = o.curr;
this.label = BI.createWidget({
type: "bi.label",
height: o.height - 2,
value: this.currentPage
});
this.pager = BI.createWidget({
type: "bi.pager",
width: 36,
layouts: [{
type: "bi.horizontal",
hgap: 1,
vgap: 1
}],
dynamicShow: false,
pages: o.pages,
curr: o.curr,
groups: 0,
first: false,
last: false,
prev: {
type: "bi.icon_button",
value: "prev",
title: BI.i18nText("BI-Previous_Page"),
warningTitle: BI.i18nText("BI-Current_Is_First_Page"),
height: o.height - 2,
iconWidth: o.height - 2,
iconHeight: o.height - 2,
cls: "number-pager-prev column-pre-page-h-font"
},
next: {
type: "bi.icon_button",
value: "next",
title: BI.i18nText("BI-Next_Page"),
warningTitle: BI.i18nText("BI-Current_Is_Last_Page"),
height: o.height - 2,
iconWidth: o.height - 2,
iconHeight: o.height - 2,
cls: "number-pager-next column-next-page-h-font"
},
hasPrev: o.hasPrev,
hasNext: o.hasNext,
firstPage: o.firstPage,
lastPage: o.lastPage
});
this.pager.on(BI.Pager.EVENT_CHANGE, function () {
if (self.getCurrentPage() !== self.pager.getCurrentPage()) {
self.currentPage = self.pager.getCurrentPage();
self.fireEvent(BI.NumberPager.EVENT_CHANGE);
}
});
this.pager.on(BI.Pager.EVENT_AFTER_POPULATE, function () {
self.label.setValue(self.pager.getCurrentPage());
});
BI.createWidget({
type: "bi.center_adapt",
element: this,
columnSize: [20, "", 20, 36],
items: [{type: "bi.label", text: "第"}, this.label, {type: "bi.label", text: "页"}, this.pager]
})
},
getCurrentPage: function () {
return this.currentPage;
},
hasPrev: function () {
return this.pager.hasPrev();
},
hasNext: function () {
return this.pager.hasNext();
},
setValue: function (v) {
this.currentPage = v;
this.pager.setValue(v);
},
populate: function () {
this.pager.populate();
}
});
BI.NumberPager.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.number_pager", BI.NumberPager);/**
* 可以跳转的分页控件
*
* Created by GUY on 2015/9/8.
* @class BI.SkipPager
* @extends BI.Widget
*/
BI.SkipPager = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.SkipPager.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-skip-pager",
width: 110,
height: 25,
pages: false, //总页数
curr: 1, //初始化当前页, pages为数字时可用
hasPrev: BI.emptyFn,
hasNext: BI.emptyFn,
firstPage: 1,
lastPage: BI.emptyFn
})
},
_init: function () {
BI.SkipPager.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.currentPage = o.curr;
this.editor = BI.createWidget({
type: "bi.small_text_editor",
validationChecker: function (v) {
return BI.isPositiveInteger(v);
},
hgap: 4,
vgap: 0,
value: o.curr,
errorText: BI.i18nText("BI-Please_Input_Integer"),
width: 30,
height: o.height - 2
});
this.pager = BI.createWidget({
type: "bi.pager",
layouts: [{
type: "bi.horizontal",
hgap: 1,
vgap: 1
}],
dynamicShow: false,
pages: o.pages,
curr: o.curr,
groups: 0,
first: false,
last: false,
prev: {
type: "bi.icon_button",
value: "prev",
title: BI.i18nText("BI-Previous_Page"),
warningTitle: BI.i18nText("BI-Current_Is_First_Page"),
height: o.height - 2,
cls: "number-pager-prev column-pre-page-h-font"
},
next: {
type: "bi.icon_button",
value: "next",
title: BI.i18nText("BI-Next_Page"),
warningTitle: BI.i18nText("BI-Current_Is_Last_Page"),
height: o.height - 2,
cls: "number-pager-next column-next-page-h-font"
},
hasPrev: o.hasPrev,
hasNext: o.hasNext,
firstPage: o.firstPage,
lastPage: o.lastPage
});
this.editor.on(BI.TextEditor.EVENT_CONFIRM, function () {
self.pager.setValue(self.editor.getValue());
});
this.pager.on(BI.Pager.EVENT_CHANGE, function () {
if (self.getCurrentPage() !== self.pager.getCurrentPage()) {
self.currentPage = self.pager.getCurrentPage();
self.fireEvent(BI.SkipPager.EVENT_CHANGE);
}
});
this.pager.on(BI.Pager.EVENT_AFTER_POPULATE, function () {
self.editor.setValue(self.pager.getCurrentPage());
});
BI.createWidget({
type: "bi.center_adapt",
element: this,
items: [{type: "bi.label", text: "第"}, this.editor, {type: "bi.label", text: "页"}, this.pager]
})
},
getCurrentPage: function () {
return this.currentPage;
},
setValue: function(v){
this.currentPage = v;
this.pager.setValue(v);
},
populate: function () {
this.pager.populate();
}
});
BI.SkipPager.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.skip_pager", BI.SkipPager);/**
* 分段控件使用的button
*
* Created by GUY on 2015/9/7.
* @class BI.SegmentButton
* @extends BI.BasicButton
*/
BI.SegmentButton = BI.inherit(BI.BasicButton, {
_defaultConfig: function() {
var conf = BI.SegmentButton.superclass._defaultConfig.apply(this, arguments);
return BI.extend( conf, {
baseCls : (conf.baseCls ||"")+' bi-segment-button',
shadow: true,
readonly: true,
hgap: 10
})
},
_init:function() {
BI.SegmentButton.superclass._init.apply(this, arguments);
var opts = this.options, self = this;
//if (BI.isNumber(opts.height) && BI.isNull(opts.lineHeight)) {
// this.element.css({lineHeight : (opts.height - 2) + 'px'});
//}
this.text = BI.createWidget({
type: "bi.label",
element: this,
height: opts.height-2,
whiteSpace: opts.whiteSpace,
text: opts.text,
value: opts.value,
hgap: opts.hgap
})
},
setSelected: function(){
BI.SegmentButton.superclass.setSelected.apply(this, arguments);
},
setText : function(text) {
BI.SegmentButton.superclass.setText.apply(this, arguments);
this.text.setText(text);
},
destroy : function() {
BI.SegmentButton.superclass.destroy.apply(this, arguments);
}
});
$.shortcut('bi.segment_button', BI.SegmentButton);/**
* 单选按钮组
*
* Created by GUY on 2015/9/7.
* @class BI.Segment
* @extends BI.Widget
*/
BI.Segment = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.Segment.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-segment",
items: [],
height: 30
});
},
_init: function () {
BI.Segment.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.buttonGroup = BI.createWidget({
element: this,
type: "bi.button_group",
items: BI.createItems(o.items, {
type: "bi.segment_button",
height: o.height - 2,
whiteSpace: o.whiteSpace
}),
layout: [
{
type: "bi.center"
}
]
})
this.buttonGroup.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments)
});
this.buttonGroup.on(BI.ButtonGroup.EVENT_CHANGE, function (value, obj) {
self.fireEvent(BI.Segment.EVENT_CHANGE, value, obj)
})
},
setValue: function (v) {
this.buttonGroup.setValue(v);
},
setEnabledValue: function (v) {
this.buttonGroup.setEnabledValue(v);
},
setEnable: function (v) {
this.buttonGroup.setEnable(v);
},
getValue: function () {
return this.buttonGroup.getValue();
}
});
BI.Segment.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut('bi.segment', BI.Segment);/**
*
* 层级树状结构的表格
*
* Created by GUY on 2016/8/12.
* @class BI.DynamicSummaryLayerTreeTable
* @extends BI.Widget
*/
BI.DynamicSummaryLayerTreeTable = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.DynamicSummaryLayerTreeTable.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-dynamic-summary-layer-tree-table",
logic: { //冻结的页面布局逻辑
dynamic: false
},
isNeedResize: false,//是否需要调整列宽
isResizeAdapt: true,//是否需要在调整列宽或区域宽度的时候它们自适应变化
isNeedFreeze: false,//是否需要冻结单元格
freezeCols: [], //冻结的列号,从0开始,isNeedFreeze为tree时生效
isNeedMerge: true,//是否需要合并单元格
mergeCols: [],
mergeRule: function (row1, row2) { //合并规则, 默认相等时合并
return BI.isEqual(row1, row2);
},
columnSize: [],
headerRowSize: 25,
footerRowSize: 25,
rowSize: 25,
regionColumnSize: false,
header: [],
footer: false,
items: [],
//交叉表头
crossHeader: [],
crossItems: []
})
},
_getVDeep: function () {
return this.options.crossHeader.length;//纵向深度
},
_getHDeep: function () {
var o = this.options;
return Math.max(o.mergeCols.length, o.freezeCols.length, BI.TableTree.maxDeep(o.items) - 1);
},
_createHeader: function (vDeep) {
var self = this, o = this.options;
var header = o.header || [], crossHeader = o.crossHeader || [];
var items = BI.DynamicSummaryTreeTable.formatCrossItems(o.crossItems, vDeep);
var result = [];
BI.each(items, function (row, node) {
var c = [crossHeader[row]];
result.push(c.concat(node || []));
});
var newHeader = this._formatColumns(header);
var deep = this._getHDeep();
if (deep <= 0) {
newHeader.unshift({
cls: "layer-tree-table-title",
text: BI.i18nText("BI-Row_Header")
});
} else {
newHeader[0] = {
cls: "layer-tree-table-title",
text: BI.i18nText("BI-Row_Header")
};
}
result.push(newHeader);
return result;
},
_formatItems: function (nodes, deep) {
var self = this, o = this.options;
var result = [];
function track(node, layer) {
node.type || (node.type = "bi.layer_tree_table_cell");
node.layer = layer;
var next = [node];
next = next.concat(node.values || []);
if (next.length > 0) {
result.push(next);
}
if (BI.isNotEmptyArray(node.children)) {
BI.each(node.children, function (index, child) {
track(child, layer + 1);
});
}
}
BI.each(nodes, function (i, node) {
BI.each(node.children, function (j, c) {
track(c, 0);
});
if (BI.isArray(node.values)) {
var next = [{cls: "summary-cell last", text: BI.i18nText("BI-Summary_Values")}].concat(node.values);
result.push(next)
}
});
return BI.DynamicSummaryTreeTable.formatSummaryItems(result, o.crossItems, deep);
},
_formatCols: function (cols, deep) {
deep = deep || this._getHDeep();
cols = this._formatColumns(cols);
return BI.map(cols, function (i, c) {
return c - (deep - 1);
})
},
_formatColumns: function (columns, deep) {
if (BI.isNotEmptyArray(columns)) {
deep = deep || this._getHDeep();
return columns.slice(Math.max(0, deep - 1));
}
return columns;
},
_init: function () {
BI.DynamicSummaryLayerTreeTable.superclass._init.apply(this, arguments);
var self = this, o = this.options;
var deep = this._getHDeep();
var vDeep = this._getVDeep();
var header = this._createHeader(vDeep);
var items = this._formatItems(o.items, deep);
this.table = BI.createWidget({
type: "bi.table_view",
element: this,
logic: o.logic,
isNeedResize: o.isNeedResize,
isResizeAdapt: o.isResizeAdapt,
isNeedFreeze: o.isNeedFreeze,
freezeCols: this._formatCols(o.freezeCols, deep),
isNeedMerge: o.isNeedMerge,
mergeCols: [],
mergeRule: o.mergeRule,
columnSize: this._formatColumns(o.columnSize, deep),
headerRowSize: o.headerRowSize,
footerRowSize: o.footerRowSize,
rowSize: o.rowSize,
regionColumnSize: o.regionColumnSize,
header: header,
footer: this._formatColumns(o.footer, deep),
items: items
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_INIT, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_INIT, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_SCROLL, function () {
self.fireEvent(BI.Table.EVENT_TABLE_SCROLL, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_COLUMN_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE, arguments);
});
},
resize: function () {
this.table.resize();
},
setColumnSize: function (columnSize) {
columnSize = this._formatColumns(columnSize);
this.table.setColumnSize(columnSize);
},
getColumnSize: function () {
var columnSize = this.table.getColumnSize();
var deep = this._getHDeep();
var pre = [];
if (deep > 0) {
pre = BI.makeArray(deep - 1, 0);
}
return pre.concat(columnSize);
},
getCalculateColumnSize: function () {
var columnSize = this.table.getCalculateColumnSize();
var deep = this._getHDeep();
var pre = [];
if (deep > 0) {
pre = BI.makeArray(deep - 1, "");
}
return pre.concat(columnSize);
},
setHeaderColumnSize: function (columnSize) {
columnSize = this._formatColumns(columnSize);
this.table.setHeaderColumnSize(columnSize);
},
setRegionColumnSize: function (columnSize) {
this.table.setRegionColumnSize(columnSize);
},
getRegionColumnSize: function () {
return this.table.getRegionColumnSize();
},
getCalculateRegionColumnSize: function () {
return this.table.getCalculateRegionColumnSize();
},
getCalculateRegionRowSize: function () {
return this.table.getCalculateRegionRowSize();
},
getClientRegionColumnSize: function () {
return this.table.getClientRegionColumnSize();
},
getScrollRegionColumnSize: function () {
return this.table.getScrollRegionColumnSize();
},
getScrollRegionRowSize: function () {
return this.table.getScrollRegionRowSize();
},
hasVerticalScroll: function () {
return this.table.hasVerticalScroll();
},
setVerticalScroll: function (scrollTop) {
this.table.setVerticalScroll(scrollTop);
},
setLeftHorizontalScroll: function (scrollLeft) {
this.table.setLeftHorizontalScroll(scrollLeft);
},
setRightHorizontalScroll: function (scrollLeft) {
this.table.setRightHorizontalScroll(scrollLeft);
},
getVerticalScroll: function () {
return this.table.getVerticalScroll();
},
getLeftHorizontalScroll: function () {
return this.table.getLeftHorizontalScroll();
},
getRightHorizontalScroll: function () {
return this.table.getRightHorizontalScroll();
},
getColumns: function () {
return this.table.getColumns();
},
attr: function (key, value) {
var self = this;
if (BI.isObject(key)) {
BI.each(key, function (k, v) {
self.attr(k, v);
});
return;
}
BI.DynamicSummaryLayerTreeTable.superclass.attr.apply(this, arguments);
switch (key) {
case "columnSize":
case "footer":
value = this._formatColumns(value);
break;
case "freezeCols":
value = value.length > 0 ? [0] : [];
break;
case "mergeCols":
value = value.length > 0 ? [0] : [];
break;
}
this.table.attr.apply(this.table, [key, value]);
},
populate: function (items, header, crossItems, crossHeader) {
var o = this.options;
o.items = items || [];
if (header) {
o.header = header;
}
if (crossItems) {
o.crossItems = crossItems;
}
if (crossHeader) {
o.crossHeader = crossHeader;
}
var deep = this._getHDeep();
var vDeep = this._getVDeep();
var header = this._createHeader(vDeep);
items = this._formatItems(o.items, deep);
this.table.populate(items, header);
},
destroy: function () {
this.table.destroy();
BI.DynamicSummaryLayerTreeTable.superclass.destroy.apply(this, arguments);
}
});
$.shortcut("bi.dynamic_summary_layer_tree_table", BI.DynamicSummaryLayerTreeTable);/**
*
* 树状结构的表格
*
* Created by GUY on 2015/8/12.
* @class BI.DynamicSummaryTreeTable
* @extends BI.Widget
*/
BI.DynamicSummaryTreeTable = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.DynamicSummaryTreeTable.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-dynamic-summary-tree-table",
logic: { //冻结的页面布局逻辑
dynamic: false
},
isNeedResize: false,//是否需要调整列宽
isResizeAdapt: true,//是否需要在调整列宽或区域宽度的时候它们自适应变化
isNeedFreeze: false,//是否需要冻结单元格
freezeCols: [], //冻结的列号,从0开始,isNeedFreeze为tree时生效
isNeedMerge: true,//是否需要合并单元格
mergeCols: [],
mergeRule: function (row1, row2) { //合并规则, 默认相等时合并
return BI.isEqual(row1, row2);
},
columnSize: [],
headerRowSize: 25,
footerRowSize: 25,
rowSize: 25,
regionColumnSize: false,
header: [],
footer: false,
items: [],
//交叉表头
crossHeader: [],
crossItems: []
})
},
_createHeader: function (deep, vDeep) {
var self = this, o = this.options;
var header = o.header || [], crossHeader = o.crossHeader || [];
var items = BI.DynamicSummaryTreeTable.formatCrossItems(o.crossItems, vDeep);
var result = [];
BI.each(items, function (row, node) {
var c = [];
for (var i = 0; i < deep; i++) {
c.push(crossHeader[row]);
}
result.push(c.concat(node || []));
});
result.push(header);
return result;
},
_getVDeep: function () {
return this.options.crossHeader.length;//纵向深度
},
_getHDeep: function () {
var o = this.options;
return Math.max(o.mergeCols.length, o.freezeCols.length, BI.TableTree.maxDeep(o.items) - 1);
},
_init: function () {
BI.DynamicSummaryTreeTable.superclass._init.apply(this, arguments);
var self = this, o = this.options;
var deep = this._getHDeep();
var vDeep = this._getVDeep();
var header = this._createHeader(deep, vDeep);
var items = BI.DynamicSummaryTreeTable.formatItems(o.items, deep);
items = BI.DynamicSummaryTreeTable.formatSummaryItems(items, o.crossItems, deep);
this.table = BI.createWidget({
type: "bi.table_view",
element: this,
logic: o.logic,
isNeedResize: o.isNeedResize,
isResizeAdapt: o.isResizeAdapt,
isNeedFreeze: o.isNeedFreeze,
freezeCols: o.freezeCols,
isNeedMerge: o.isNeedMerge,
mergeCols: o.mergeCols,
mergeRule: o.mergeRule,
columnSize: o.columnSize,
headerRowSize: o.headerRowSize,
footerRowSize: o.footerRowSize,
rowSize: o.rowSize,
regionColumnSize: o.regionColumnSize,
header: header,
footer: o.footer,
items: items
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_INIT, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_INIT, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_SCROLL, function () {
self.fireEvent(BI.Table.EVENT_TABLE_SCROLL, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_COLUMN_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE, arguments);
});
},
resize: function () {
this.table.resize();
},
setColumnSize: function (columnSize) {
this.table.setColumnSize(columnSize);
},
getColumnSize: function () {
return this.table.getColumnSize();
},
getCalculateColumnSize: function () {
return this.table.getCalculateColumnSize();
},
setHeaderColumnSize: function (columnSize) {
this.table.setHeaderColumnSize(columnSize);
},
setRegionColumnSize: function (columnSize) {
this.table.setRegionColumnSize(columnSize);
},
getRegionColumnSize: function () {
return this.table.getRegionColumnSize();
},
getCalculateRegionColumnSize: function () {
return this.table.getCalculateRegionColumnSize();
},
getCalculateRegionRowSize: function () {
return this.table.getCalculateRegionRowSize();
},
getClientRegionColumnSize: function () {
return this.table.getClientRegionColumnSize();
},
getScrollRegionColumnSize: function () {
return this.table.getScrollRegionColumnSize();
},
getScrollRegionRowSize: function () {
return this.table.getScrollRegionRowSize();
},
hasVerticalScroll: function () {
return this.table.hasVerticalScroll();
},
setVerticalScroll: function (scrollTop) {
this.table.setVerticalScroll(scrollTop);
},
setLeftHorizontalScroll: function (scrollLeft) {
this.table.setLeftHorizontalScroll(scrollLeft);
},
setRightHorizontalScroll: function (scrollLeft) {
this.table.setRightHorizontalScroll(scrollLeft);
},
getVerticalScroll: function () {
return this.table.getVerticalScroll();
},
getLeftHorizontalScroll: function () {
return this.table.getLeftHorizontalScroll();
},
getRightHorizontalScroll: function () {
return this.table.getRightHorizontalScroll();
},
getColumns: function () {
return this.table.getColumns();
},
attr: function () {
BI.DynamicSummaryTreeTable.superclass.attr.apply(this, arguments);
this.table.attr.apply(this.table, arguments);
},
populate: function (items, header, crossItems, crossHeader) {
var o = this.options;
o.items = items || [];
if (header) {
o.header = header;
}
if (crossItems) {
o.crossItems = crossItems;
}
if (crossHeader) {
o.crossHeader = crossHeader;
}
var deep = this._getHDeep();
var vDeep = this._getVDeep();
var header = this._createHeader(deep, vDeep);
items = BI.DynamicSummaryTreeTable.formatItems(o.items, deep);
items = BI.DynamicSummaryTreeTable.formatSummaryItems(items, o.crossItems, deep);
this.table.populate(items, header);
},
destroy: function () {
this.table.destroy();
BI.DynamicSummaryTreeTable.superclass.destroy.apply(this, arguments);
}
});
BI.extend(BI.DynamicSummaryTreeTable, {
formatItems: function (nodes, deep, isCross) {
var self = this;
var result = [];
function track(store, node) {
var next;
if (BI.isArray(node.children)) {
BI.each(node.children, function (index, child) {
var next;
if (store != -1) {
next = BI.clone(store);
next.push(node);
} else {
next = [];
}
track(next, child);
});
if (store != -1) {
next = BI.clone(store);
next.push(node);
} else {
next = [];
}
if ((store == -1 || node.children.length > 1) && BI.isNotEmptyArray(node.values)) {
var cls = store === -1 ? " last" : "";
var id = BI.UUID();
for (var i = next.length; i < deep; i++) {
next.push({text: BI.i18nText("BI-Summary_Values"), tag: id, cls: "summary-cell" + cls});
}
if (!isCross) {
next = next.concat(node.values);
}
if (next.length > 0) {
if (!isCross) {
result.push(next);
} else {
for (var k = 0, l = node.values.length; k < l; k++) {
result.push(next);
}
}
}
}
return;
}
if (store != -1) {
next = BI.clone(store);
for (var i = next.length; i < deep; i++) {
next.push(node);
}
} else {
next = [];
}
if (!isCross && BI.isArray(node.values)) {
next = next.concat(node.values);
}
if (isCross && BI.isArray(node.values)) {
for (var i = 0, len = node.values.length; i < len - 1; i++) {
if (next.length > 0) {
result.push(next);
}
}
}
if (next.length > 0) {
result.push(next);
}
}
BI.each(nodes, function (i, node) {
track(-1, node);
});
//填充空位
BI.each(result, function (i, line) {
var last = BI.last(line);
for (var i = line.length; i < deep; i++) {
line.push(last);
}
});
return result;
},
formatCrossItems: function (nodes, deep) {
var items = BI.DynamicSummaryTreeTable.formatItems(nodes, deep, true);
return BI.unzip(items);
},
formatSummaryItems: function (items, crossItems, deep) {
//求纵向需要去除的列
var cols = [];
var leaf = 0;
function track(node) {
if (BI.isArray(node.children)) {
BI.each(node.children, function (index, child) {
track(child);
});
if (BI.isNotEmptyArray(node.values)) {
leaf++;
if (node.children.length === 1) {
cols.push(leaf - 1 + deep);
}
}
return;
}
leaf++;
}
BI.each(crossItems, function (i, node) {
track(node);
});
if (cols.length > 0) {
BI.each(items, function (i, node) {
BI.removeAt(node, cols);
})
}
return items;
}
});
$.shortcut("bi.dynamic_summary_tree_table", BI.DynamicSummaryTreeTable);/**
* Created by GUY on 2016/5/7.
* @class BI.LayerTreeTableCell
* @extends BI.Single
*/
BI.LayerTreeTableCell = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.LayerTreeTableCell.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-layer-tree-table-cell",
layer: 0,
text: ""
})
},
_init: function () {
BI.LayerTreeTableCell.superclass._init.apply(this, arguments);
var o = this.options;
BI.createWidget({
type: "bi.label",
element: this,
textAlign: "left",
whiteSpace: "nowrap",
height: o.height,
text: o.text,
value: o.value,
lgap: 5 + 30 * o.layer,
rgap: 5
})
}
});
$.shortcut("bi.layer_tree_table_cell", BI.LayerTreeTableCell);/**
*
* 层级树状结构的表格
*
* Created by GUY on 2016/5/7.
* @class BI.LayerTreeTable
* @extends BI.Widget
*/
BI.LayerTreeTable = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.LayerTreeTable.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-layer-tree-table",
logic: { //冻结的页面布局逻辑
dynamic: false
},
isNeedResize: false,//是否需要调整列宽
isResizeAdapt: true,//是否需要在调整列宽或区域宽度的时候它们自适应变化
isNeedFreeze: false,//是否需要冻结单元格
freezeCols: [], //冻结的列号,从0开始,isNeedFreeze为tree时生效
isNeedMerge: true,//是否需要合并单元格
mergeCols: [],
mergeRule: function (row1, row2) { //合并规则, 默认相等时合并
return BI.isEqual(row1, row2);
},
columnSize: [],
headerRowSize: 25,
footerRowSize: 25,
rowSize: 25,
regionColumnSize: false,
header: [],
footer: false,
items: [],
//交叉表头
crossHeader: [],
crossItems: []
})
},
_getVDeep: function () {
return this.options.crossHeader.length;//纵向深度
},
_getHDeep: function () {
var o = this.options;
return Math.max(o.mergeCols.length, o.freezeCols.length, BI.TableTree.maxDeep(o.items) - 1);
},
_createHeader: function (vDeep) {
var self = this, o = this.options;
var header = o.header || [], crossHeader = o.crossHeader || [];
var items = BI.TableTree.formatCrossItems(o.crossItems, vDeep);
var result = [];
BI.each(items, function (row, node) {
var c = [crossHeader[row]];
result.push(c.concat(node || []));
});
var newHeader = this._formatColumns(header);
var deep = this._getHDeep();
if (deep <= 0) {
newHeader.unshift({
cls: "layer-tree-table-title",
text: BI.i18nText("BI-Row_Header")
});
} else {
newHeader[0] = {
cls: "layer-tree-table-title",
text: BI.i18nText("BI-Row_Header")
};
}
result.push(newHeader);
return result;
},
_formatItems: function (nodes) {
var self = this;
var result = [];
function track(node, layer) {
node.type || (node.type = "bi.layer_tree_table_cell");
node.layer = layer;
var next = [node];
next = next.concat(node.values || []);
if (next.length > 0) {
result.push(next);
}
if (BI.isNotEmptyArray(node.children)) {
BI.each(node.children, function (index, child) {
track(child, layer + 1);
});
}
}
BI.each(nodes, function (i, node) {
BI.each(node.children, function (j, c) {
track(c, 0);
});
if (BI.isArray(node.values)) {
var next = [{cls: "summary-cell last", text: BI.i18nText("BI-Summary_Values")}].concat(node.values);
result.push(next)
}
});
return result;
},
_formatCols: function (cols, deep) {
deep = deep || this._getHDeep();
cols = this._formatColumns(cols);
return BI.map(cols, function (i, c) {
return c - (deep - 1);
})
},
_formatColumns: function (columns, deep) {
if (BI.isNotEmptyArray(columns)) {
deep = deep || this._getHDeep();
return columns.slice(Math.max(0, deep - 1));
}
return columns;
},
_init: function () {
BI.LayerTreeTable.superclass._init.apply(this, arguments);
var self = this, o = this.options;
var deep = this._getHDeep();
var vDeep = this._getVDeep();
var header = this._createHeader(vDeep);
var items = this._formatItems(o.items);
this.table = BI.createWidget({
type: "bi.table_view",
element: this,
logic: o.logic,
isNeedResize: o.isNeedResize,
isResizeAdapt: o.isResizeAdapt,
isNeedFreeze: o.isNeedFreeze,
freezeCols: this._formatCols(o.freezeCols, deep),
isNeedMerge: o.isNeedMerge,
mergeCols: [],
mergeRule: o.mergeRule,
columnSize: this._formatColumns(o.columnSize, deep),
headerRowSize: o.headerRowSize,
footerRowSize: o.footerRowSize,
rowSize: o.rowSize,
regionColumnSize: o.regionColumnSize,
header: header,
footer: this._formatColumns(o.footer, deep),
items: items
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_INIT, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_INIT, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_SCROLL, function () {
self.fireEvent(BI.Table.EVENT_TABLE_SCROLL, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_BEFORE_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_REGION_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_BEFORE_COLUMN_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_COLUMN_RESIZE, arguments);
});
this.table.on(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE, function () {
self.fireEvent(BI.Table.EVENT_TABLE_AFTER_COLUMN_RESIZE, arguments);
});
},
resize: function () {
this.table.resize();
},
setColumnSize: function (columnSize) {
columnSize = this._formatColumns(columnSize);
this.table.setColumnSize(columnSize);
},
getColumnSize: function () {
var columnSize = this.table.getColumnSize();
var deep = this._getHDeep();
var pre = [];
if (deep > 0) {
pre = BI.makeArray(deep - 1, 0);
}
return pre.concat(columnSize);
},
getCalculateColumnSize: function () {
var columnSize = this.table.getCalculateColumnSize();
var deep = this._getHDeep();
var pre = [];
if (deep > 0) {
pre = BI.makeArray(deep - 1, "");
}
return pre.concat(columnSize);
},
setHeaderColumnSize: function (columnSize) {
columnSize = this._formatColumns(columnSize);
this.table.setHeaderColumnSize(columnSize);
},
setRegionColumnSize: function (columnSize) {
this.table.setRegionColumnSize(columnSize);
},
getRegionColumnSize: function () {
return this.table.getRegionColumnSize();
},
getCalculateRegionColumnSize: function () {
return this.table.getCalculateRegionColumnSize();
},
getCalculateRegionRowSize: function () {
return this.table.getCalculateRegionRowSize();
},
getClientRegionColumnSize: function () {
return this.table.getClientRegionColumnSize();
},
getScrollRegionColumnSize: function () {
return this.table.getScrollRegionColumnSize();
},
getScrollRegionRowSize: function () {
return this.table.getScrollRegionRowSize();
},
hasVerticalScroll: function () {
return this.table.hasVerticalScroll();
},
setVerticalScroll: function (scrollTop) {
this.table.setVerticalScroll(scrollTop);
},
setLeftHorizontalScroll: function (scrollLeft) {
this.table.setLeftHorizontalScroll(scrollLeft);
},
setRightHorizontalScroll: function (scrollLeft) {
this.table.setRightHorizontalScroll(scrollLeft);
},
getVerticalScroll: function () {
return this.table.getVerticalScroll();
},
getLeftHorizontalScroll: function () {
return this.table.getLeftHorizontalScroll();
},
getRightHorizontalScroll: function () {
return this.table.getRightHorizontalScroll();
},
getColumns: function () {
return this.table.getColumns();
},
attr: function (key, value) {
var self = this;
if (BI.isObject(key)) {
BI.each(key, function (k, v) {
self.attr(k, v);
});
return;
}
BI.LayerTreeTable.superclass.attr.apply(this, arguments);
switch (key) {
case "columnSize":
case "footer":
value = this._formatColumns(value);
break;
case "freezeCols":
value = value.length > 0 ? [0] : [];
break;
case "mergeCols":
value = value.length > 0 ? [0] : [];
break;
}
this.table.attr.apply(this.table, [key, value]);
},
populate: function (items, header, crossItems, crossHeader) {
var o = this.options;
o.items = items || [];
if (header) {
o.header = header;
}
if (crossItems) {
o.crossItems = crossItems;
}
if (crossHeader) {
o.crossHeader = crossHeader;
}
var vDeep = this._getVDeep();
var header = this._createHeader(vDeep);
items = this._formatItems(o.items);
this.table.populate(items, header);
},
destroy: function () {
this.table.destroy();
BI.LayerTreeTable.superclass.destroy.apply(this, arguments);
}
});
$.shortcut("bi.layer_tree_table", BI.LayerTreeTable);/**
* 分页table
*
* Created by GUY on 2015/9/8.
* @class BI.Tabler
* @extends BI.Widget
*/
BI.Tabler = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.Tabler.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-tabler",
pager: {},
layouts: [{
type: "bi.float_center_adapt"
}],
tabler: {
isNeedFreeze: false,//是否需要冻结单元格
freezeCols: [], //冻结的列号,从0开始,isNeedFreeze为tree时生效
isNeedMerge: true,//是否需要合并单元格
mergeRule: function (row1, row2) { //合并规则, 默认相等时合并
return BI.isEqual(row1, row2);
},
columnSize: [],
rowSize: 37,
header: [],
items: [],
//交叉表头
crossHeader: [],
crossItems: []
}
})
},
_init: function () {
BI.Tabler.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.pager = BI.createWidget(o.pager, {
type: "bi.pager"
});
var creater = BI.createWidget({
type: "bi.button_tree",
items: [{
el: this.pager
}],
layouts: o.layouts
})
this.pager.on(BI.Controller.EVENT_CHANGE, function (type) {
if (type === BI.Events.CLICK) {
self.fireEvent(BI.Tabler.EVENT_CHANGE);
}
});
this.container = BI.createWidget({
type: "bi.layout"
})
BI.createWidget({
type: "bi.vtape",
element: this,
items: [{
el: this.container
}, {
el: creater,
height: 40
}]
});
this.populate();
},
getCurrentPage: function () {
return this.pager.getValue();
},
populate: function (opt) {
var o = this.options;
this.container.empty();
BI.extend(o.tabler, opt);
this.table = BI.createWidget(this.options.tabler, {
type: "bi.table_tree",
element: this.container
});
}
});
BI.Tabler.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.tabler", BI.Tabler);/**
* guy
* 气泡提示
* @class BI.Bubble
* @extends BI.Tip
* @type {*|void|Object}
*/
BI.Bubble = BI.inherit(BI.Tip, {
_defaultConfig: function() {
return BI.extend(BI.Bubble.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-bubble",
direction: "top",
text: "",
height: 35
})
},
_init : function() {
BI.Bubble.superclass._init.apply(this, arguments);
var fn = function (e) {
e.stopPropagation();
e.stopEvent();
return false;
};
this.element.bind({"click": fn, "mousedown": fn, "mouseup": fn, "mouseover": fn, "mouseenter": fn, "mouseleave": fn, "mousemove": fn});
BI.createWidget({
type: "bi.left",
element: this,
items: [this["_" + this.options.direction]()]
})
},
_createBubbleText: function(){
return (this.text = BI.createWidget({
type: "bi.label",
cls: "bubble-text",
text: this.options.text,
hgap: 10,
height: 30
}));
},
_top: function(){
return BI.createWidget({
type: "bi.vertical",
items: [{
el: this._createBubbleText(),
height: 30
}, {
el: {
type: "bi.layout"
},
height: 3
}]
})
},
_bottom: function(){
return BI.createWidget({
type: "bi.vertical",
items: [{
el: {
type: "bi.layout"
},
height: 3
}, {
el: this._createBubbleText(),
height: 30
}]
})
},
_left: function(){
return BI.createWidget({
type: "bi.right",
items: [{
el: {
type: "bi.layout",
width: 3,
height: 30
}
}, {
el: this._createBubbleText()
}]
})
},
_right: function(){
return BI.createWidget({
type: "bi.inline",
items: [{
el: {
type: "bi.layout",
width: 3,
height: 30
}
}, {
el: this._createBubbleText()
}]
})
},
setText: function(text){
this.text.setText(text);
}
});
$.shortcut("bi.bubble", BI.Bubble);/**
* toast提示
*
* Created by GUY on 2015/9/7.
* @class BI.Toast
* @extends BI.Tip
*/
BI.Toast = BI.inherit(BI.Tip, {
_const: {
minWidth: 200,
hgap: 20
},
_defaultConfig: function () {
return BI.extend(BI.Toast.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-toast",
text: "",
level: "success",//success或warning
height: 30
})
},
_init: function () {
BI.Toast.superclass._init.apply(this, arguments);
var o = this.options;
this.element.css({
minWidth: this._const.minWidth + "px"
})
this.element.addClass("toast-" + o.level);
var fn = function (e) {
e.stopPropagation();
e.stopEvent();
return false;
};
this.element.bind({"click": fn, "mousedown": fn, "mouseup": fn, "mouseover": fn, "mouseenter": fn, "mouseleave": fn, "mousemove": fn});
this.text = BI.createWidget({
type: "bi.label",
element: this,
text: o.text,
height: 30,
hgap: this._const.hgap
})
},
setWidth: function(width){
this.element.width(width);
},
setText: function (text) {
this.text.setText(text);
}
});
$.shortcut("bi.toast", BI.Toast);/**
* toast提示
*
* Created by GUY on 2015/9/7.
* @class BI.Tooltip
* @extends BI.Tip
*/
BI.Tooltip = BI.inherit(BI.Tip, {
_const: {
hgap: 10
},
_defaultConfig: function () {
return BI.extend(BI.Tooltip.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-tooltip",
text: "",
level: "success",//success或warning
height: 20
})
},
_init: function () {
BI.Tooltip.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.element.addClass("tooltip-" + o.level);
var fn = function (e) {
e.stopPropagation();
e.stopEvent();
return false;
};
this.element.bind({"click": fn, "mousedown": fn, "mouseup": fn, "mouseover": fn, "mouseenter": fn, "mouseleave": fn, "mousemove": fn});
this.text = BI.createWidget({
type: "bi.label",
element: this,
textAlign: "left",
whiteSpace: "normal",
text: o.text,
textHeight: 20,
hgap: this._const.hgap
});
},
setWidth: function(width){
this.element.width(width - 2 * this._const.hgap);
},
setText: function (text) {
this.text.setText(text);
},
setLevel: function (level) {
this.element.removeClass("tooltip-success").removeClass("tooltip-warning");
this.element.addClass("tooltip-" + level);
}
});
$.shortcut("bi.tooltip", BI.Tooltip);/**
* guy
* 复选导航条
* Created by GUY on 2015/8/25.
* @class BI.MultiSelectBar
* @extends BI.BasicButton
*/
BI.MultiSelectBar = BI.inherit(BI.BasicButton, {
_defaultConfig: function () {
return BI.extend(BI.MultiSelectBar.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-multi-select-bar",
height: 25,
text: BI.i18nText('BI-Select_All'),
isAllCheckedBySelectedValue: BI.emptyFn,
onCheck: BI.emptyFn,
isHalfCheckedBySelectedValue: function (selectedValues) {
return selectedValues.length > 0;
}
})
},
_init: function () {
BI.MultiSelectBar.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.checkbox = BI.createWidget({
type: "bi.checkbox",
stopPropagation: true,
handler: function () {
self.setSelected(self.isSelected());
o.onCheck.call(self, self.isSelected());
}
});
this.half = BI.createWidget({
type: "bi.half_icon_button",
stopPropagation: true,
handler: function () {
self.setSelected(true);
o.onCheck.call(self, self.isSelected());
}
});
this.checkbox.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.CLICK, self.isSelected(), self);
});
this.half.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.CLICK, self.isSelected(), self);
});
this.half.on(BI.HalfIconButton.EVENT_CHANGE, function () {
self.fireEvent(BI.MultiSelectBar.EVENT_CHANGE, self.isSelected(), self);
});
this.checkbox.on(BI.Checkbox.EVENT_CHANGE, function () {
self.fireEvent(BI.MultiSelectBar.EVENT_CHANGE, self.isSelected(), self);
});
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
whiteSpace: "nowrap",
textHeight: o.height,
height: o.height,
hgap: o.hgap,
text: o.text,
keyword: o.keyword,
value: o.value,
py: o.py
});
BI.createWidget({
type: "bi.htape",
element: this,
items: [{
width: 36,
el: {
type: "bi.center_adapt",
items: [this.checkbox, this.half]
}
}, {
el: this.text
}]
});
this.half.invisible();
},
doClick: function () {
var isHalf = this.isHalfSelected(), isSelected = this.isSelected();
if (isHalf === true) {
this.setSelected(true);
} else {
this.setSelected(!isSelected);
}
if (this.isValid()) {
this.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.CLICK, this.getValue(), this);
this.options.onCheck.call(this, this.isSelected());
this.fireEvent(BI.MultiSelectBar.EVENT_CHANGE, this.isSelected(), this);
}
},
setSelected: function (v) {
this.checkbox.setSelected(v);
this.setHalfSelected(false);
},
setHalfSelected: function (b) {
this._half = !!b;
if (b === true) {
this.half.visible();
this.checkbox.invisible();
} else {
this.half.invisible();
this.checkbox.visible();
}
},
isHalfSelected: function () {
return !!this._half;
},
isSelected: function () {
return this.checkbox.isSelected();
},
setValue: function (selectedValues) {
BI.MultiSelectBar.superclass.setValue.apply(this, arguments);
var isAllChecked = this.options.isAllCheckedBySelectedValue.apply(this, arguments);
this.setSelected(isAllChecked);
!isAllChecked && this.setHalfSelected(this.options.isHalfCheckedBySelectedValue.apply(this, arguments));
},
setEnable: function (b) {
BI.MultiSelectBar.superclass.setEnable.apply(this, arguments);
this.checkbox.setEnable(b);
this.half.setEnable(b);
this.text.setEnable(b);
}
});
BI.MultiSelectBar.EVENT_CHANGE = "MultiSelectBar.EVENT_CHANGE";
$.shortcut("bi.multi_select_bar", BI.MultiSelectBar);/**
* @class BI.HandStandBranchTree
* @extends BI.Widget
* create by young
* 横向分支的树
*/
BI.HandStandBranchTree = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.HandStandBranchTree.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-handstand-branch-tree",
expander: {},
el: {},
items: []
})
},
_init: function () {
BI.HandStandBranchTree.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.branchTree = BI.createWidget({
type: "bi.custom_tree",
element: this,
expander: BI.extend({
type: "bi.handstand_branch_expander",
el: {},
popup: {
type: "bi.custom_tree"
}
}, o.expander),
el: BI.extend({
type: "bi.button_tree",
chooseType: BI.ButtonGroup.CHOOSE_TYPE_MULTI,
layouts: [{
type: "bi.horizontal_adapt"
}]
}, o.el),
items: this.options.items
});
this.branchTree.on(BI.CustomTree.EVENT_CHANGE, function(){
self.fireEvent(BI.HandStandBranchTree.EVENT_CHANGE, arguments);
});
this.branchTree.on(BI.Controller.EVENT_CHANGE, function(){
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
},
populate: function () {
this.branchTree.populate.apply(this.branchTree, arguments);
},
getValue: function () {
return this.branchTree.getValue();
}
});
BI.HandStandBranchTree.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.handstand_branch_tree", BI.HandStandBranchTree);/**
* @class BI.BranchTree
* @extends BI.Widget
* create by young
* 横向分支的树
*/
BI.BranchTree = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.BranchTree.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-branch-tree",
expander: {},
el: {},
items: []
})
},
_init: function () {
BI.BranchTree.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.branchTree = BI.createWidget({
type: "bi.custom_tree",
element: this,
expander: BI.extend({
type: "bi.branch_expander",
el: {},
popup: {
type: "bi.custom_tree"
}
}, o.expander),
el: BI.extend({
type: "bi.button_tree",
chooseType: BI.ButtonGroup.CHOOSE_TYPE_MULTI,
layouts: [{
type: "bi.vertical"
}]
}, o.el),
items: this.options.items
});
this.branchTree.on(BI.CustomTree.EVENT_CHANGE, function(){
self.fireEvent(BI.BranchTree.EVENT_CHANGE, arguments);
});
this.branchTree.on(BI.Controller.EVENT_CHANGE, function(){
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
},
populate: function () {
this.branchTree.populate.apply(this.branchTree, arguments);
},
getValue: function () {
return this.branchTree.getValue();
}
});
BI.BranchTree.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.branch_tree", BI.BranchTree);/**
* guy
* 异步树
* @class BI.DisplayTree
* @extends BI.TreeView
*/
BI.DisplayTree = BI.inherit(BI.TreeView, {
_defaultConfig: function () {
return BI.extend(BI.DisplayTree.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-display-tree"
})
},
_init: function () {
BI.DisplayTree.superclass._init.apply(this, arguments);
},
//配置属性
_configSetting: function () {
var setting = {
view: {
selectedMulti: false,
dblClickExpand: false,
showIcon: false,
showTitle: false
},
data: {
key: {
title: "title",
name: "text"
},
simpleData: {
enable: true
}
},
callback: {
beforeCollapse: beforeCollapse
}
};
function beforeCollapse(treeId, treeNode) {
return false;
}
return setting;
},
initTree: function (nodes, setting) {
var setting = setting || this._configSetting();
this.nodes = $.fn.zTree.init(this.tree.element, setting, nodes);
},
destroy: function () {
BI.DisplayTree.superclass.destroy.apply(this, arguments);
}
});
BI.DisplayTree.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.display_tree", BI.DisplayTree);/**
* guy
* 二级树
* @class BI.LevelTree
* @extends BI.Single
*/
BI.LevelTree = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.LevelTree.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-level-tree",
el: {
chooseType: 0
},
expander: {},
items: []
})
},
_init: function () {
BI.LevelTree.superclass._init.apply(this, arguments);
this.initTree(this.options.items);
},
_formatItems: function (nodes, layer) {
var self = this;
BI.each(nodes, function (i, node) {
var extend = {layer: layer};
if (!BI.isKey(node.id)) {
node.id = BI.UUID();
}
if (node.isParent === true || BI.isNotEmptyArray(node.children)) {
switch (i) {
case 0 :
extend.type = "bi.first_plus_group_node";
break;
case nodes.length - 1 :
extend.type = "bi.last_plus_group_node";
break;
default :
extend.type = "bi.mid_plus_group_node";
break;
}
BI.defaults(node, extend);
self._formatItems(node.children, layer + 1);
} else {
switch (i) {
case nodes.length - 1:
extend.type = "bi.last_tree_leaf_item";
break;
default :
extend.type = "bi.mid_tree_leaf_item";
}
BI.defaults(node, extend);
}
});
return nodes;
},
_assertId: function (sNodes) {
BI.each(sNodes, function (i, node) {
if (!BI.isKey(node.id)) {
node.id = BI.UUID();
}
});
},
//构造树结构,
initTree: function (nodes) {
var self = this, o = this.options;
this.empty();
this._assertId(nodes);
this.tree = BI.createWidget({
type: "bi.custom_tree",
element: this,
expander: BI.extend({
el: {},
popup: {
type: "bi.custom_tree"
}
}, o.expander),
items: this._formatItems(BI.Tree.transformToTreeFormat(nodes), 0),
el: BI.extend({
type: "bi.button_tree",
chooseType: 0,
layouts: [{
type: "bi.vertical"
}]
}, o.el)
});
this.tree.on(BI.Controller.EVENT_CHANGE, function (type) {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
if (type === BI.Events.CLICK) {
self.fireEvent(BI.LevelTree.EVENT_CHANGE, arguments);
}
})
},
//生成树方法
stroke: function (nodes) {
this.tree.stroke.apply(this.tree, arguments);
},
populate: function (items) {
items = this._formatItems(BI.Tree.transformToTreeFormat(items), 0);
this.tree.populate(items);
},
doBehavior: function () {
this.tree.doBehavior.apply(this.tree, arguments);
},
setValue: function (v) {
this.tree.setValue(v);
},
getValue: function () {
return this.tree.getValue();
},
getAllLeaves: function () {
return this.tree.getAllLeaves();
},
getNodeById: function (id) {
return this.tree.getNodeById(id);
},
getNodeByValue: function (id) {
return this.tree.getNodeByValue(id);
}
});
BI.LevelTree.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.level_tree", BI.LevelTree);/**
* 简单的多选树
*
* Created by GUY on 2016/2/16.
* @class BI.SimpleTreeView
* @extends BI.Widget
*/
BI.SimpleTreeView = BI.inherit(BI.Widget, {
_defaultConfig: function () {
return BI.extend(BI.SimpleTreeView.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-simple-tree",
itemsCreator: BI.emptyFn,
items: null
})
},
_init: function () {
BI.SimpleTreeView.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.structure = new BI.Tree();
this.tree = BI.createWidget({
type: "bi.tree",
element: this,
itemsCreator: function (op, callback) {
var fn = function (items) {
callback({
items: items
});
self.structure.initTree(BI.Tree.transformToTreeFormat(items));
};
if (BI.isNotNull(o.items)) {
fn(o.items);
} else {
o.itemsCreator(op, fn);
}
}
});
this.tree.on(BI.TreeView.EVENT_CHANGE, function () {
self.fireEvent(BI.SimpleTreeView.EVENT_CHANGE, arguments);
});
if (BI.isNotEmptyArray(o.items)) {
this.populate();
}
},
populate: function (items, keyword) {
if (items) {
this.options.items = items;
}
this.tree.stroke({
keyword: keyword
});
},
setValue: function (v) {
v || (v = []);
var self = this, map = {};
var selected = [];
BI.each(v, function (i, val) {
var node = self.structure.search(val, "value");
if (node) {
var p = node;
p = p.getParent();
if (p) {
if (!map[p.value]) {
map[p.value] = 0;
}
map[p.value]++;
}
while (p && p.getChildrenLength() <= map[p.value]) {
selected.push(p.value);
p = p.getParent();
if (p) {
if (!map[p.value]) {
map[p.value] = 0;
}
map[p.value]++;
}
}
}
});
this.tree.setValue(BI.makeObject(v.concat(selected)));
},
_getValue: function () {
var self = this, result = [], val = this.tree.getValue();
var track = function (nodes) {
BI.each(nodes, function (key, node) {
if (BI.isEmpty(node)) {
result.push(key);
} else {
track(node);
}
})
};
track(val);
return result;
},
empty: function () {
this.tree.empty();
},
getValue: function () {
var self = this, result = [], val = this._getValue();
BI.each(val, function (i, key) {
var target = self.structure.search(key, "value");
if (target) {
self.structure._traverse(target, function (node) {
if (node.isLeaf()) {
result.push(node.value);
}
})
}
});
return result;
}
});
BI.SimpleTreeView.EVENT_CHANGE = "EVENT_CHANGE";
$.shortcut("bi.simple_tree", BI.SimpleTreeView);
/**
* 文本输入框trigger
*
* Created by GUY on 2015/9/15.
* @class BI.EditorTrigger
* @extends BI.Trigger
*/
BI.EditorTrigger = BI.inherit(BI.Trigger, {
_const: {
hgap: 4
},
_defaultConfig: function () {
var conf = BI.EditorTrigger.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-editor-trigger",
height: 30,
validationChecker: BI.emptyFn,
quitChecker: BI.emptyFn,
allowBlank: false,
watermark: "",
errorText: "",
triggerWidth: 30
});
},
_init: function () {
this.options.height -= 2;
BI.EditorTrigger.superclass._init.apply(this, arguments);
var self = this, o = this.options, c = this._const;
this.editor = BI.createWidget({
type: "bi.sign_editor",
height: o.height,
value: o.value,
validationChecker: o.validationChecker,
quitChecker: o.quitChecker,
mouseOut: false,
allowBlank: o.allowBlank,
watermark: o.watermark,
errorText: o.errorText
});
this.editor.on(BI.Controller.EVENT_CHANGE, function () {
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments);
});
this.editor.on(BI.SignEditor.EVENT_CHANGE, function () {
self.fireEvent(BI.EditorTrigger.EVENT_CHANGE, arguments);
});
BI.createWidget({
element: this,
type: 'bi.htape',
items: [
{
el: this.editor
}, {
el: {
type: "bi.trigger_icon_button",
width: o.triggerWidth
},
width: o.triggerWidth
}
]
});
},
getValue: function () {
return this.editor.getValue();
},
setValue: function (value) {
this.editor.setValue(value);
},
setText: function (text) {
this.editor.setState(text);
}
});
BI.EditorTrigger.EVENT_CHANGE = "BI.EditorTrigger.EVENT_CHANGE";
$.shortcut("bi.editor_trigger", BI.EditorTrigger);/**
* 图标按钮trigger
*
* Created by GUY on 2015/10/8.
* @class BI.IconTrigger
* @extends BI.Trigger
*/
BI.IconTrigger = BI.inherit(BI.Trigger, {
_defaultConfig: function () {
return BI.extend(BI.IconTrigger.superclass._defaultConfig.apply(this, arguments), {
extraCls: "bi-icon-trigger",
el: {},
height: 30
});
},
_init: function () {
var o = this.options;
BI.IconTrigger.superclass._init.apply(this, arguments);
this.iconButton = BI.createWidget(o.el, {
type: "bi.trigger_icon_button",
element: this,
width: o.width,
height: o.height
});
}
});
$.shortcut('bi.icon_trigger', BI.IconTrigger);/**
* 文字trigger
*
* Created by GUY on 2015/9/15.
* @class BI.TextTrigger
* @extends BI.Trigger
*/
BI.TextTrigger = BI.inherit(BI.Trigger, {
_const: {
hgap: 4,
triggerWidth: 30
},
_defaultConfig: function () {
var conf = BI.TextTrigger.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-text-trigger",
height: 30
});
},
_init: function () {
BI.TextTrigger.superclass._init.apply(this, arguments);
var self = this, o = this.options, c = this._const;
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
height: o.height,
text: o.text,
hgap: c.hgap
});
this.trigerButton = BI.createWidget({
type: "bi.trigger_icon_button",
width: c.triggerWidth
});
BI.createWidget({
element: this,
type: 'bi.htape',
items: [
{
el: this.text
}, {
el: this.trigerButton,
width: c.triggerWidth
}
]
});
},
setEnable: function (v) {
BI.TextTrigger.superclass.setEnable.apply(this, arguments);
this.trigerButton.setEnable(v);
this.text.setEnable(v);
},
setValue: function (value) {
this.text.setValue(value);
},
setText: function (text) {
this.text.setText(text);
}
});
$.shortcut("bi.text_trigger", BI.TextTrigger);/**
* 选择字段trigger
*
* Created by GUY on 2015/9/15.
* @class BI.SelectTextTrigger
* @extends BI.Trigger
*/
BI.SelectTextTrigger = BI.inherit(BI.Trigger, {
_defaultConfig: function () {
return BI.extend(BI.SelectTextTrigger.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-select-text-trigger",
height: 24
});
},
_init: function () {
this.options.height -= 2;
BI.SelectTextTrigger.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.trigger = BI.createWidget({
type: "bi.text_trigger",
element: this,
height: o.height
});
if (BI.isKey(o.text)) {
this.setValue(o.text);
}
},
setValue: function (vals) {
var o = this.options;
vals = BI.isArray(vals) ? vals : [vals];
var result = [];
var items = BI.Tree.transformToArrayFormat(this.options.items);
BI.each(items, function (i, item) {
if (BI.deepContains(vals, item.value)) {
result.push(item.text || item.value);
}
});
if (result.length > 0) {
this.trigger.element.removeClass("bi-water-mark");
this.trigger.setText(result.join(","));
} else {
this.trigger.element.addClass("bi-water-mark");
this.trigger.setText(o.text);
}
},
populate: function (items) {
this.options.items = items;
}
});
$.shortcut("bi.select_text_trigger", BI.SelectTextTrigger);/**
* 选择字段trigger小一号的
*
* @class BI.SmallSelectTextTrigger
* @extends BI.Trigger
*/
BI.SmallSelectTextTrigger = BI.inherit(BI.Trigger, {
_defaultConfig: function () {
return BI.extend(BI.SmallSelectTextTrigger.superclass._defaultConfig.apply(this, arguments), {
baseCls: "bi-small-select-text-trigger",
height: 20
});
},
_init: function () {
this.options.height -= 2;
BI.SmallSelectTextTrigger.superclass._init.apply(this, arguments);
var self = this, o = this.options;
this.trigger = BI.createWidget({
type: "bi.small_text_trigger",
element: this,
height: o.height - 2
});
if (BI.isKey(o.text)) {
this.setValue(o.text);
}
},
setValue: function (vals) {
var o = this.options;
vals = BI.isArray(vals) ? vals : [vals];
var result = [];
var items = BI.Tree.transformToArrayFormat(this.options.items);
BI.each(items, function (i, item) {
if (BI.deepContains(vals, item.value)) {
result.push(item.text || item.value);
}
});
if (result.length > 0) {
this.trigger.element.removeClass("bi-water-mark");
this.trigger.setText(result.join(","));
} else {
this.trigger.element.addClass("bi-water-mark");
this.trigger.setText(o.text);
}
},
populate: function (items) {
this.options.items = items;
}
});
$.shortcut("bi.small_select_text_trigger", BI.SmallSelectTextTrigger);/**
* 文字trigger(右边小三角小一号的) ==
*
* @class BI.SmallTextTrigger
* @extends BI.Trigger
*/
BI.SmallTextTrigger = BI.inherit(BI.Trigger, {
_const: {
hgap: 4,
triggerWidth: 20
},
_defaultConfig: function () {
var conf = BI.SmallTextTrigger.superclass._defaultConfig.apply(this, arguments);
return BI.extend(conf, {
baseCls: (conf.baseCls || "") + " bi-text-trigger",
height: 20
});
},
_init: function () {
BI.SmallTextTrigger.superclass._init.apply(this, arguments);
var self = this, o = this.options, c = this._const;
this.text = BI.createWidget({
type: "bi.label",
textAlign: "left",
height: o.height,
text: o.text,
hgap: c.hgap
});
this.trigerButton = BI.createWidget({
type: "bi.trigger_icon_button",
width: c.triggerWidth
});
BI.createWidget({
element: this,
type: 'bi.htape',
items: [
{
el: this.text
}, {
el: this.trigerButton,
width: c.triggerWidth
}
]
});
},
setEnable: function (v) {
BI.SmallTextTrigger.superclass.setEnable.apply(this, arguments);
this.trigerButton.setEnable(v);
this.text.setEnable(v);
},
setValue: function (value) {
this.text.setValue(value);
},
setText: function (text) {
this.text.setText(text);
}
});
$.shortcut("bi.small_text_trigger", BI.SmallTextTrigger);