- Home
- Forum
- JavaScript - EJ 2
- Display dropdown in date option, with rolling time periods.
Display dropdown in date option, with rolling time periods.
newcol.template = { create: function () { var elem =
document.createElement('input'); elem.setAttribute('type',
'text'); return elem; }, destroy: function (args) { var element =
document.getElementById(args.elementId); for (var i = 0; i <
element.ej2_instances.length; i++) { if
(element.ej2_instances[i].dropdownverification != null) { element.ej2_instances[i].destroy(); } } }, write: function (args) { //var ds = ['Cash',
'Debit Card', 'Credit Card', 'Net Banking', 'Wallet']; var dateOptions = [ { text: 'Custom',
value: 'Custom' }, { text: 'Last 24
hours', value: 'DATEADD(hh, -24, GETDATE())' }, { text: 'Last week', value: 'DATEADD(d, -7,
GETDATE())' }, { text: 'Last
month', value: 'DATEADD(m, -1, GETDATE())' }, { text: 'Last six
months', value: 'DATEADD(m, -6, GETDATE())' }, { text: 'Last twelve months',
value: 'DATEADD(m, -12, GETDATE())' } ] var newdropDownObj =
new ej.dropdowns.DropDownList({ dataSource:
dateOptions, text: args.values ? args.values :
dateOptions[1].text, fields: { value:
'value', text: 'text' }, valueTemplate:
'<div id="inputfield-' + args.elements.id +
'">${text}</div>', change: function (e) { if
(e.itemData.value == 'Custom') {
console.log('boops'); }
qryBldrObj.notifyChange(e.itemData.value, e.element); } });
newdropDownObj.dropdownverification = 'true'; newdropDownObj.appendTo('#'
+ args.elements.id); } }; |
If there is no option for a custom operator, help with this would be wonderful.
|
var filter = [
{ field: "Name", label: "Name", type: "string" },
{ field: "Range", label: "Range", type: "date", ruleTemplate: "#rangeTemplate" }
];
var qryBldrObj = new ej.querybuilder.QueryBuilder({
columns: filter,
width: "100%",
actionBegin: actionBegin
});
function actionBegin(args) {
ruleID = args.ruleID;
args.rule.operator = 'between';
if (args.requestType === "template-create") {
fieldObj = new ej.dropdowns.DropDownList({
dataSource: this.columns,
fields: args.fields,
value: args.rule.field,
change: function (e) {
qryBldrObj.notifyChange(e.value, e.element, "field");
}
});
valueObj = new ej.calendars.DateRangePicker({
presets: [
{
label: "This Week",
start: new Date(
new Date(
new Date().setDate(
new Date().getDate() - ((new Date().getDay() + 7) % 7)
)
).toDateString()
),
end: new Date(
new Date(
new Date().setDate(
new Date(
new Date().setDate(
new Date().getDate() - ((new Date().getDay() + 7) % 7)
) + 6
).getDate() + 6
)
).toDateString()
)
},
{
label: "Last Week",
start: new Date(
new Date(new Date().setDate(new Date().getDate() - 6)).toDateString()
),
end: new Date(new Date().toDateString())
},
{
label: "This Month",
start: new Date(new Date(new Date().setDate(1)).toDateString()),
end: new Date(new Date().toDateString())
},
{
label: "Last Month",
start: new Date(
new Date(
new Date(new Date().setMonth(new Date().getMonth() - 1)).setDate(1)
).toDateString()
),
end: new Date(new Date().toDateString())
}
],
format: "dd'/'MMMM'/'yyyy",
change: function (e) {
qryBldrObj.notifyChange(e.value, e.element, "value");
}
});
fieldObj.appendTo("#" + args.ruleID + "_filterkey");
valueObj.appendTo("#" + args.ruleID + "_valuekey0");
}
}
|
|
valueObj = new ej.calendars.DateRangePicker({
change: function(e) {
switch (e.daySpan) {
case 2:
e.value = ["DATEADD(hh, -24, GETDATE())", "GETDATE()"];
break; /* optional */
case 7:
e.value = ["DATEADD(d, -7, GETDATE())", "GETDATE()"];
break; /* optional */
case 28:
e.value = ["DATEADD(m, -1, GETDATE())", "GETDATE()"];
break; /* optional */
case 180:
e.value = ["DATEADD(m, -6, GETDATE())", "GETDATE()"];
break; /* optional */
case 363:
e.value = ["DATEADD(m, -12, GETDATE())", "GETDATE()"];
break; /* optional */
default:
/* Optional */
e.value = "Custom";
}
qryBldrObj.notifyChange(e.value, e.element, "value");
}
});
fieldObj.appendTo("#" + args.ruleID + "_filterkey");
valueObj.appendTo("#" + args.ruleID + "_valuekey0");
}
|
Hi David,
We have checked your reported query. We can add custom date in DateRangePicker using change event. We have prepared a sample based on your scenario as demonstrated in the below code snippet.
valueObj = new ej.calendars.DateRangePicker({change: function(e) {switch (e.daySpan) {case 2:e.value = ["DATEADD(hh, -24, GETDATE())", "GETDATE()"];break; /* optional */case 7:e.value = ["DATEADD(d, -7, GETDATE())", "GETDATE()"];break; /* optional */case 28:e.value = ["DATEADD(m, -1, GETDATE())", "GETDATE()"];break; /* optional */case 180:e.value = ["DATEADD(m, -6, GETDATE())", "GETDATE()"];break; /* optional */case 363:e.value = ["DATEADD(m, -12, GETDATE())", "GETDATE()"];break; /* optional */default:/* Optional */e.value = "Custom";}qryBldrObj.notifyChange(e.value, e.element, "value");}});fieldObj.appendTo("#" + args.ruleID + "_filterkey");valueObj.appendTo("#" + args.ruleID + "_valuekey0");}Please check the below sample.
Please get back to us, if you need further assistance.
Regards,Gayathri K
So, several issues, one you cannot save to json and load again, that's a big one for me, as when you do so it just saves out the actual value instead of the outputed value from the on change event, but even more pressing is the issue of the output this creates to the sql is not formatted to be taken by sql:
| DeliveryDate BETWEEN 'DATEADD(m, -12, GETDATE())' AND 'GETDATE()'" |
- 5 Replies
- 3 Participants
-
DH David House
- Mar 20, 2021 02:36 PM UTC
- Apr 6, 2021 11:14 AM UTC