forked from fanruan/fineui
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.
203 lines
5.1 KiB
203 lines
5.1 KiB
/** |
|
* Created by GUY on 2015/8/10. |
|
* @class BI.ButtonTree |
|
* @extends BI.ButtonGroup |
|
*/ |
|
import { shortcut, Widget, extend, isArray, each, isFunction, deepContains, concat, any, contains } from "../../core"; |
|
import { ButtonGroup } from "./group.button"; |
|
|
|
@shortcut() |
|
export class ButtonTree extends ButtonGroup { |
|
static xtype = "bi.button_tree"; |
|
|
|
static EVENT_CHANGE = "EVENT_CHANGE"; |
|
|
|
_defaultConfig() { |
|
return extend(super._defaultConfig(arguments), { |
|
baseCls: "bi-button-tree", |
|
}); |
|
} |
|
|
|
setNotSelectedValue(v) { |
|
v = isArray(v) ? v : [v]; |
|
each(this.buttons, (i, item) => { |
|
if (!isFunction(item.setSelected)) { |
|
item.setNotSelectedValue(v); |
|
|
|
return; |
|
} |
|
if (deepContains(v, item.getValue())) { |
|
item.setSelected(false); |
|
} else { |
|
item.setSelected(true); |
|
} |
|
}); |
|
} |
|
|
|
setEnabledValue(v) { |
|
v = isArray(v) ? v : [v]; |
|
each(this.buttons, (i, item) => { |
|
if (isFunction(item.setEnabledValue)) { |
|
item.setEnabledValue(v); |
|
|
|
return; |
|
} |
|
if (deepContains(v, item.getValue())) { |
|
item.setEnable(true); |
|
} else { |
|
item.setEnable(false); |
|
} |
|
}); |
|
} |
|
|
|
setValue(v) { |
|
v = isArray(v) ? v : [v]; |
|
each(this.buttons, (i, item) => { |
|
if (!isFunction(item.setSelected)) { |
|
item.setValue(v); |
|
|
|
return; |
|
} |
|
if (deepContains(v, item.getValue())) { |
|
item.setSelected(true); |
|
} else { |
|
item.setSelected(false); |
|
} |
|
}); |
|
} |
|
|
|
getNotSelectedValue() { |
|
let v = []; |
|
each(this.buttons, (i, item) => { |
|
if (item.isEnabled() && !isFunction(item.setSelected)) { |
|
v = concat(v, item.getNotSelectedValue()); |
|
|
|
return; |
|
} |
|
if (item.isEnabled() && item.isSelected && !item.isSelected()) { |
|
v.push(item.getValue()); |
|
} |
|
}); |
|
|
|
return v; |
|
} |
|
|
|
getValue() { |
|
let v = []; |
|
each(this.buttons, (i, item) => { |
|
if (item.isEnabled() && !isFunction(item.setSelected)) { |
|
v = concat(v, item.getValue()); |
|
|
|
return; |
|
} |
|
if (item.isEnabled() && item.isSelected && item.isSelected()) { |
|
v.push(item.getValue()); |
|
} |
|
}); |
|
|
|
return v; |
|
} |
|
|
|
getSelectedButtons() { |
|
let btns = []; |
|
each(this.buttons, (i, item) => { |
|
if (item.isEnabled() && !isFunction(item.setSelected)) { |
|
btns = btns.concat(item.getSelectedButtons()); |
|
|
|
return; |
|
} |
|
if (item.isSelected && item.isSelected()) { |
|
btns.push(item); |
|
} |
|
}); |
|
|
|
return btns; |
|
} |
|
|
|
getNotSelectedButtons() { |
|
let btns = []; |
|
each(this.buttons, (i, item) => { |
|
if (item.isEnabled() && !isFunction(item.setSelected)) { |
|
btns = btns.concat(item.getNotSelectedButtons()); |
|
|
|
return; |
|
} |
|
if (item.isSelected && !item.isSelected()) { |
|
btns.push(item); |
|
} |
|
}); |
|
|
|
return btns; |
|
} |
|
|
|
// 获取所有的叶子节点 |
|
getAllLeaves() { |
|
let leaves = []; |
|
each(this.buttons, (i, item) => { |
|
if (item.isEnabled() && !isFunction(item.setSelected)) { |
|
leaves = leaves.concat(item.getAllLeaves()); |
|
|
|
return; |
|
} |
|
if (item.isEnabled()) { |
|
leaves.push(item); |
|
} |
|
}); |
|
|
|
return leaves; |
|
} |
|
|
|
getIndexByValue(value) { |
|
let index = -1; |
|
any(this.buttons, (i, item) => { |
|
const vs = item.getValue(); |
|
if (item.isEnabled() && (vs === value || contains(vs, value))) { |
|
index = i; |
|
|
|
return true; |
|
} |
|
}); |
|
|
|
return index; |
|
} |
|
|
|
getNodeById(id) { |
|
let node; |
|
any(this.buttons, (i, item) => { |
|
if (item.isEnabled()) { |
|
if (item.attr("id") === id) { |
|
node = item; |
|
|
|
return true; |
|
} else if (isFunction(item.getNodeById)) { |
|
node = item.getNodeById(id); |
|
if (node) { |
|
return true; |
|
} |
|
} |
|
} |
|
}); |
|
|
|
return node; |
|
} |
|
|
|
getNodeByValue(value) { |
|
let node; |
|
any(this.buttons, (i, item) => { |
|
if (item.isEnabled()) { |
|
if (isFunction(item.getNodeByValue)) { |
|
node = item.getNodeByValue(value); |
|
if (node) { |
|
return true; |
|
} |
|
} else if (item.attr("value") === value) { |
|
node = item; |
|
|
|
return true; |
|
} |
|
} |
|
}); |
|
|
|
return node; |
|
} |
|
}
|
|
|