فراخوانی از پایگاه داده و نمایش به صورت data grid :
```js
absoluteMethodHelper.runProvider(ProviderId, Parameters).then((res) => {
// بصورت یک جیسون رشته ای میباشد که می بایست آن را پس از دریافت به جیسون تبدیل کرد res مقدار متغیر
const receive = JSON.parse(res.Content.providerResult)[0];
absoluteMethodHelper.runProvider(23, [
{ name: "Empno", value: receive.AgentID },
{ name: "Datef", value: Fdate.format("YYYY-MM-DD") },
{ name: "DateT", value: TDate.format("YYYY-MM-DD") }
]).then((res) => {
if (res.HasError === false) {
$('.table').dxDataGrid({
rtlEnabled: true,
dataSource: JSON.parse(res.Content.providerResult),
onInitialized: function () {
loadPanel.indicatorHide();
}
});
}
}).catch(() => loadPanel.indicatorHide());
}).catch(() => loadPanel.indicatorHide());
```

**فعال سازی قابلیت کلیک راست و درج ساعت های نمایش داده شده در فیلد :**

همانطور که در تصویر بالا مشاهده می کنید پس از کلیک راست بر روی زمان های نمایش داده شده می توانید آن ها را برای فیلد های از ساعت و یا تا ساعت انتخاب کنید
```js
absoluteMethodHelper.runProvider(134, [
{ name: "empno", value: AgentID },
{ name: "datef", value: Fdate.format("YYYY-MM-DD") },
{ name: "DateT", value: TDate.format("YYYY-MM-DD") }
]).then((res) => {
let addOperationColumn = true;
if (res.HasError === false) {
try {
$('.table').dxDataGrid({
rtlEnabled: true,
columnAutoWidth: true,
dataSource: JSON.parse(res.Content.providerResult),
onInitialized: function () {
loadPanel.indicatorHide();
},
commonColumnSettings: {
encodeHtml: false,
},
onCellPrepared: (event) => {
if (['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10'].includes(event.column.caption) && event.data) {
const value = event.value;
debugger;
if (!(typeof value === 'string' && value.search('-') === -1)) return;
const ctxmenu = $('
');
ctxmenu.dxContextMenu({
target: event.cellElement,
rtlEnabled: true,
dataSource: [
{ id: 'from', text: 'استفاده برای "از ساعت"' },
{ id: 'to', text: 'استفاده برای "تا ساعت"' }
],
onItemClick(e) {
switch (e.itemData.id) {
case 'from':
viewModel.data().FromTimeLeaveOrMission(value);
break;
case 'to':
viewModel.data().UntilTimeLeaveOrMission(value);
break;
}
toast.show('success', Messages.operationSucceded);
}
});
event.cellElement.append(ctxmenu);
}
}
});
loadPanel.indicatorHide();
} catch (e) {
loadPanel.indicatorHide();
}
}
}).catch(() => loadPanel.indicatorHide());
```
-----
قرار دادن فیلد های تاریخ در فرم با استفاده از Custom js :
```js
$("#from-date").gbDatePicker({
onInput: function (event) {
Fdate = event;
},
inputType: "jalali",
closePopupOnSelect: true,
rtlEnabled: true,
});
```
با استقاده از کامپوننت های موجود می توان تغییرات را بر روی این فیلد اعمال کرد به عنوان مثال rtlEnabled

**محاسبه اختلاف دو تاریخ :**
با استفاده از یک تابع اختلاف دو تاریخ را محسابه می کنیم و در صورتی که تاریخ وارد شده اول بزرگ تر از تاریخ وارد شده دومی باشد پیغام خطا می دهد
سپس در تابع دوم اختلاف تاریخ را نمایش می دهیم
```js
function calculateDateDiff() {
const from = moment(FromDateLeaveOrMission(), "jYYYY/jMM/jDD");
const to = moment(UntilDateLeaveOrMission(), "jYYYY/jMM/jDD");
if (from.unix() > to.unix()) {
return -1; // invalid dates;
}
return to.diff(from, "days") + 1;
}
function showDateDiff() {
if (FromDateLeaveOrMission() && UntilDateLeaveOrMission()) {
const diff = calculateDateDiff();
if (diff === -1) {
$("#show-date-diff").val(`تاریخ نامعتبر است`);
} else {
$("#show-date-diff").val(`${diff} روز`);
// $('#show-date-diff').html(`${diff} روز`);
}
}
}
```
**محاسبه اختلاف زمان دو فیلد و نمایش آن در فیلد html :**
ابتدا در یک تابع اختلاف زمان را محاسبه می کنیم و سپس در تابع دیگر مقدار محاسبه شده را نمایش می دهیم
```js
function calculateTimeDiff() {
const fromTime = moment(FromTimeLeaveOrMission(), 'hh:mm');
const untilTime = moment(UntilTimeLeaveOrMission(), 'hh:mm');
if (fromTime.unix() > untilTime.unix()) return -1;
const duration = moment.duration(untilTime.diff(fromTime));
return moment(`${duration.hours()}:${duration.minutes()}`, 'h:m').format('hh:mm');
}
function showTimeDiff() {
debugger;
if (FromTimeLeaveOrMission() && UntilTimeLeaveOrMission()) {
const diffTime = calculateTimeDiff();
if (diffTime === -1) {
$("#show-time-diff").val(`ساعت های انتخاب شده نا معنبر است`);
}
else {
$("#show-time-diff").val(`${diffTime}`)
}
}
}
```