|
<div class="col-lg-12 control-section">
<ejs-querybuilder id="querybuilder" width="73%" rule="ViewBag.rule" created="Created" separator="." ruleChange="updateRule" actionBegin="actionBegin">
<e-querybuilder-columns>
<e-querybuilder-column field="EmployeeID" label="Employee ID" type="number"></e-querybuilder-column>
<e-querybuilder-column field="FirstName" label="First Name" type="string"></e-querybuilder-column>
<e-querybuilder-column field="LastName" label="Last Name" type="string"></e-querybuilder-column>
<e-querybuilder-column field="Address" label="Address" type="string" ruleTemplate="#QueryBuilderTemplate"></e-querybuilder-column>
</e-querybuilder-columns>
</ejs-querybuilder>
</div>
<div class="col-lg-4 property-section">
<table id="property" title="Properties" class="querybuilder-property">
<tr>
<td colspan="2">
<textarea id='ruleContent' readonly=true> </textarea>
</td>
</tr>
</table>
</div>
<script id="QueryBuilderTemplate" type="text/x-template">
<div class="e-rule e-rule-template">
<div class="e-rule-filter e-custom-filter">
<input id = ${ruleID}_filterkey class='e-filter-input'>
<input id = ${ruleID}_filterkey1 class='e-filter-input'>
</div>
<div class="e-rule-operator e-operator">
<input id = ${ruleID}_operatorkey class='e-operator-input'>
</div>
<div class="e-rule-value e-value e-custom-value">
<input id = ${ruleID}_valuekey0 class='e-value-input'>
</div>
<div class="e-rule-value-delete">
<button class="e-removerule e-rule-delete e-css e-btn e-small e-round">
<span class="e-btn-icon e-icons e-delete-icon"/>
</button>
</div>
</div>
</script>
<script>
var customOperator = [
{ value: 'equal', key: 'Equal' },
{ value: 'notequal', key: 'Not Equal' },
{ value: 'in', key: 'In' },
{ value: 'notin', key: 'Not In' }
];
var employeeData = [
{
'EmployeeID': 1,
'LastName': 'Davolio',
'FirstName': 'Nancy',
'Address': {
'No': '1',
'StreetName': '17th Avenue',
'City': 'Seattle',
'Country': 'USA'
}
},
{
'EmployeeID': 2,
'LastName': 'Fuller',
'FirstName': 'Andrew',
'Address': {
'No': '2',
'StreetName': '18th Avenue',
'City': 'Tacoma',
'Country': 'USA'
}
},
{
'EmployeeID': 3,
'LastName': 'Leverling',
'FirstName': 'Janet',
'Address': {
'No': '1',
'StreetName': '19th Avenue',
'City': 'Kirkland',
'Country': 'USA'
}
},
{
'EmployeeID': 4,
'LastName': 'Peacock',
'FirstName': 'Margaret',
'Address': {
'No': '1',
'StreetName': '17th Avenue',
'City': 'Redmond',
'Country': 'USA'
}
},
{
'EmployeeID': 5,
'LastName': 'Buchanan',
'FirstName': 'Steven',
'Address': {
'No': '1',
'StreetName': '17th Avenue',
'City': 'London',
'Country': 'UK'
}
}
];
function Created() {
var qryBldrObj = ej.base.getComponent(document.getElementById("querybuilder"), 'query-builder');
qryBldrObj.dataSource = employeeData;
}
function actionBegin(args) {
var qryBldrObj = ej.base.getComponent(document.getElementById("querybuilder"), 'query-builder');
ruleID = args.ruleID;
if (args.requestType === 'template-create') {
var fieldColl = args.rule.field.split('.');
var elem = document.getElementById(args.ruleID + "_filterkey");
if (!elem.classList.contains("e-dropdownlist")) {
fieldObj = new ej.dropdowns.DropDownList({
dataSource: qryBldrObj.columns,
fields: args.fields,
value: fieldColl[0],
change: function (e) {
qryBldrObj.notifyChange(e.value, e.element, 'field');
}
});
createSubField(fieldObj, args);
createOperator(args);
createValue(args);
fieldObj.appendTo('#' + args.ruleID + '_filterkey');
fieldObj1.appendTo('#' + args.ruleID + '_filterkey1');
operatorObj.appendTo('#' + args.ruleID + '_operatorkey');
textboxObj.appendTo('#' + args.ruleID + '_valuekey0');
}
}
}
var element = document.getElementById('ruleContent');
function updateRule(args) {
element.textContent = JSON.stringify(args.rule, null, 4);
}
function createSubField(fieldObj, actionBeginArgs) {
var qryBldrObj = ej.base.getComponent(document.getElementById("querybuilder"), 'query-builder');
var elem = document.getElementById(actionBeginArgs.ruleID + "_filterkey1");
var fieldColl = actionBeginArgs.rule.field.split('.');
var ds = ['No', 'StreetName', 'City', 'Country'];
if (!elem.classList.contains("e-dropdownlist")) {
fieldObj1 = new ej.dropdowns.DropDownList({
dataSource: ds,
value: fieldColl[1],
change: function (e) {
qryBldrObj.notifyChange('Address.' + e.value, e.element, 'field');
}
});
}
}
function createOperator(actionBeginArgs) {
var qryBldrObj = ej.base.getComponent(document.getElementById("querybuilder"), 'query-builder');
var elem = document.getElementById(actionBeginArgs.ruleID + "_operatorkey");
if (!elem.classList.contains("e-dropdownlist")) {
operatorObj = new ej.dropdowns.DropDownList({
dataSource: customOperator,
fields: { text: "key", value: "value" },
value: actionBeginArgs.rule.operator,
change: function (e) {
qryBldrObj.notifyChange(e.value, e.element, 'operator');
}
});
}
}
function createValue(actionBeginArgs) {
var qryBldrObj = ej.base.getComponent(document.getElementById("querybuilder"), 'query-builder');
var elem = document.getElementById(actionBeginArgs.ruleID + "_valuekey0");
if (!elem.classList.contains("e-textbox")) {
textboxObj = new ej.inputs.TextBox({
floatLabelType: 'Auto',
change: function (e) {
qryBldrObj.notifyChange(e.value, e.container.getElementsByTagName("input")[0], 'value');
}
});
}
}
</script>
|