- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-29-2023 05:58 AM
Hi All,
I have requirement:
variable Name - Type
1)Duration - Duration
2)Due -Date/Time
Automatically fill the Due field by calculating the Duration mention + Current Date&Time
For understanding:
If suppose Duration selected as 7 Days 1 hour 30 min
If current time is populate by calculation current date time + 7 Days 1 hour 30 min
please find the below field will be available on the form like below
How can I achieve this . Please let us know.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-29-2023 07:05 AM
Hi @Sirri
Let's define an OnChange Client Script for the Duration variable. Then pass the duration to an AJAX Script Include, in which we will convert to second > initiate GlideDateTime > add the seconds > return the date time value.
Sample below.
#Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading) {
return;
}
if (newValue === '') {
g_form.clearValue('due_date');
}
var ga = new GlideAjax('CLIncidentUtilsAJAX');
ga.addParam('sysparm_name', 'calculateDueDate');
ga.addParam('sysparm_duration', newValue);
ga.getXMLAnswer(function(response) {
g_form.setValue('due_date', response);
});
}
#AJAX Script Include
var CLIncidentUtilsAJAX = Class.create();
CLIncidentUtilsAJAX.prototype = Object.extendsObject(AbstractAjaxProcessor, {
calculateDueDate: function(){
var gd = new GlideDuration(this.getParameter('sysparm_duration'));
var second = gd.getNumericValue() / 1000;
var gdt = new GlideDateTime();
gdt.addSeconds(second);
return gdt.getValue();
},
type: 'CLIncidentUtilsAJAX'
});
Cheers,
Tai Vu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-29-2023 07:50 AM
Hi@Tai Vu ,
Thank you, please let us know why I'm getting time different
please see below snip you will get an idea. I have selected duration 7 hours but in due date i'm getting 22 hours . But current time is 7 hr 46 min. Please let us know If still I want to modify any thing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-29-2023 08:08 AM
Hi @Sirri
It's because the difference between user's timezone and the system timezone (UTC by default).
let's change the line return from the function in the script include.
From
return gdt.getValue();
To
return gdt.getDisplayValue();
Cheers,
Tai Vu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-29-2023 07:05 AM
Hi @Sirri
Let's define an OnChange Client Script for the Duration variable. Then pass the duration to an AJAX Script Include, in which we will convert to second > initiate GlideDateTime > add the seconds > return the date time value.
Sample below.
#Client Script
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading) {
return;
}
if (newValue === '') {
g_form.clearValue('due_date');
}
var ga = new GlideAjax('CLIncidentUtilsAJAX');
ga.addParam('sysparm_name', 'calculateDueDate');
ga.addParam('sysparm_duration', newValue);
ga.getXMLAnswer(function(response) {
g_form.setValue('due_date', response);
});
}
#AJAX Script Include
var CLIncidentUtilsAJAX = Class.create();
CLIncidentUtilsAJAX.prototype = Object.extendsObject(AbstractAjaxProcessor, {
calculateDueDate: function(){
var gd = new GlideDuration(this.getParameter('sysparm_duration'));
var second = gd.getNumericValue() / 1000;
var gdt = new GlideDateTime();
gdt.addSeconds(second);
return gdt.getValue();
},
type: 'CLIncidentUtilsAJAX'
});
Cheers,
Tai Vu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-29-2023 07:50 AM
Hi@Tai Vu ,
Thank you, please let us know why I'm getting time different
please see below snip you will get an idea. I have selected duration 7 hours but in due date i'm getting 22 hours . But current time is 7 hr 46 min. Please let us know If still I want to modify any thing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-29-2023 08:08 AM
Hi @Sirri
It's because the difference between user's timezone and the system timezone (UTC by default).
let's change the line return from the function in the script include.
From
return gdt.getValue();
To
return gdt.getDisplayValue();
Cheers,
Tai Vu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-29-2023 08:36 AM