//combo 選項
var Tmp_Store = Ext.create("Ext.data.Store", {
fields: ["value", "displayName"],
data: [
{ value: "", displayName: "請選擇", },
{ value: "ECNO", displayName: "EO ECN", },
{ value: "PROCWC", displayName: "生產工廠", },
{ value: "PN", displayName: "件號", },
{ value: "AMMNO", displayName: "AMM單號", },
]
}
);
//儲存combox目前選擇的項目
var selectedValues = {
s_filter1: null,
s_filter2: null,
s_filter3: null,
};
var onSelect = function (combo, records) {
myalert("onSelect !!" + combo.id);
console.log("records:", records);
var record = records[0] || records; //{"PROCWC": "生產工廠"}
console.log("record:", record);
var cur_value = record.get("value");
console.log("cur_value:", cur_value);
// 更新 selectedValues 對象
if (cur_value != '') {
selectedValues[combo.id] = cur_value;
} else {
selectedValues[combo.id] = null; //挑選到"請選擇"要清空已選中的選項
console.log("selectedValues:", selectedValues);
};
// 更新其他下拉列表的選項, store 的內容<> 目前過濾條件的挑選值 且 store 的內容<>目前挑選值
var Tmp_filter_Ary = ['s_filter1', 's_filter2', 's_filter3']; //過濾條件的 Array
Tmp_filter_Ary.forEach(function (id) {
if (id !== combo.id) {
var otherCombo = Ext.getCmp(id);
otherCombo.getStore().clearFilter(); //清除 store.filter 內容
otherCombo.getStore().filterBy(function (record) { //filterBy function , 若為 true ,則包含該選項
var Tmp_isAdd = true;
if (record.get('value') == cur_value)
Tmp_isAdd = false;
//var obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}
//var result = Object.keys(obj).map((key) => [key, obj[key]]);
//var selectedValues_Ary = Object.keys(selectedValues).map((key) => [key, selectedValues[key]]);
var selectedValues_Ary = Object.entries(selectedValues);
console.log("selectedValues_Ary: ", selectedValues_Ary);
for (i = 0; i < selectedValues_Ary.length; i++) {
if (record.get('value') == selectedValues[i])
Tmp_isAdd = false;
}
return Tmp_isAdd;
});
console.log(" selectedValues: ", selectedValues);
console.log(" id: ", id);
var Tmp_store = otherCombo.getStore();
console.log(" otherCombo.getStore()- Tmp_store", Tmp_store);
}
});
}; // end of onselection
var onExpand= function (combo) {
combo.getStore().clearFilter();
var otherSelectedValues = ['s_filter1', 's_filter2', 's_filter3'].filter(otherId => otherId !== combo.id).map(otherId => selectedValues[otherId]);
combo.getStore().filterBy(function (record) {
return !otherSelectedValues.includes(record.get('value'));
});
}
var cmp_filter1 = get_cmp_filter1("過濾條件1", "s_filter1", 80, 80, Tmp_Store);
var cmp_filter2 = get_cmp_filter1("過濾條件2", "s_filter2", 80, 80, Tmp_Store);
var cmp_filter3 = get_cmp_filter1("過濾條件3", "s_filter3", 80, 80, Tmp_Store);