function created(): void {
let filterElement: HTMLElement = document.querySelector('.e-filter-input');
let dropDownObj: DropDownList = getComponent(filterElement, 'dropdownlist') as DropDownList;
dropDownObj.beforeOpen = beforeOpen.bind(this,filterElement);
}
function change(args: any): void {
let qbID: string = qryBldrObj.element.id + "_";
let ruleElem: HTMLElement = document.getElementById(qbID + args.ruleID);
if (args.type === "insertRule") {
fieldChange(ruleElem);
}
}
function fieldChange(elem: HTMLElement): void {
if (elem) {
let ddlgrp: NodeListOf<Element> = elem.querySelectorAll("input[id *= 'filterkey']");
for (let i: number = 0; i < ddlgrp.length; i++) {
let ddlObj: DropDownList = getComponent(ddlgrp[i] as HTMLElement, "dropdownlist") as DropDownList;
ddlObj.beforeOpen = beforeOpen.bind(this,ddlgrp[i] as HTMLElement);
}
}
}
function beforeOpen(value: HTMLElement) {
let resultvalue: RuleModel = qryBldrObj.rule;
//let resultvalue: RuleModel = qryBldrObj.getGroup(value); unique field type within the group.
let rules: RuleModel[] = resultvalue.rules;
let fieldValue = qryBldrObj.columns;
let fieldData: any = extend([], fieldValue, [], false);
let field = fieldData;
result(rules, value, field, true);
let ddlObj: DropDownList = getComponent(value as HTMLElement, "dropdownlist") as DropDownList;
ddlObj.dataSource = field;
}
function result(rules: RuleModel[], value: HTMLElement, field: any, isGroupAllowed: boolean) {
let rule: any = qryBldrObj.getRule(value);
for (let i: number = 0; i < rules.length; i++) {
if (rules[i].rules) {
result(rules[i].rules, value, field, isGroupAllowed)
} else {
for (let j: number = 0; j < field.length; j++) {
if (rules[i].field === field[j].field && rule.field !== field[j].field) {
field.splice(j,1);
}
}
}
}
}
|