Scripts de champs utiles
Cas d’utilisation courants des scripts de personnalisation de champ.
Pour plus d'informations, consultez Référence de l’API de serveur.
Renseigner automatiquement un champ
L’exemple suivant montre comment utiliser un script client pour remplir automatiquement une brève description basée sur la sous-catégorie sélectionnée.
Dans ce cas, si la table contient un enregistrement avec Sous-catégorie = Mot de passe et Description brève = Réinitialisation du mot de passe. Lorsque l’utilisateur sélectionne la sous-catégorie de mot de passe sur le formulaire Incident, un script client recherche l’enregistrement correspondant et définit la description brève comme Réinitialisation du mot de passe.
- Type = onChange
- Table name = incident
- Field name = Sous-catégorie
function onChange(control, oldValue, newValue, isLoading){
if(isLoading){return;}
var newrec = gel('sys_row');
//Check if new record
if (newrec.value == -1) {
var lookup = new GlideRecord('u_short_desc_lookup');
lookup.addQuery('u_subcategory', g_form.getValue('subcategory'));
lookup.query();
var temp; //temp var - reusable
if(lookup.next()){
temp = lookup.u_short_description;
if(null != temp) {
//Set the form value from lookup if there is a lookup value
g_form.setValue('short_description', temp);
} else {
g_form.setValue('short_description',"");
}
} else {
//If a lookup record does not exist based on lookup.addQuery
//Then set to UNDEFINED or NULL depending on type
g_form.setValue('short_description',"");
}
}
}Désactiver les balises HTML dans les descriptions
doit();
function doit(){
var desc = current.description.toString();
var shdesc = current.short_description.toString();
if(desc.indexOf('script>')>-1|| shdesc.indexOf('script>')>-1){
desc = desc.replace(/<script>/g,"(script)");
current.description = desc.replace(/<\/script>/g,"(\/script)");
shdesc = shdesc.replace(/<script>/g,"(script)");
current.short_description = shdesc.replace(/<\/script>/g,"(\/script)");}
}Éliminer les espaces de début et de fin dans les champs
doit();
function doit(){
var now_GR =new GlideRecord('sys_user');
gr.query();
while(gr.next()){
if((gr.first_name.toString().length!= gr.first_name.toString().trim().length)||(gr.last_name.toString().length!= gr.last_name.toString().trim().length)){
gr.first_name= gr.first_name.toString().trim();
gr.last_name= gr.last_name.toString().trim();
gr.autoSysFields(false);
gr.update();}}
}Faire clignoter une étiquette de champ
g_form.flash("incident.number","#FFFACD",0);- tablename.fieldname
- Couleur RVB ou couleur CSS acceptable comme « bleu » ou « tomate »
- Nombre entier qui détermine la durée de clignotement de l’étiquette :
- 2 pour un flash de 1 seconde
- 0 pour un flash de 2 secondes
- -2 pour un flash de 3 secondes
- -4 pour un flash de 4 secondes
Mettre une étiquette de champ en gras
function onLoad(){
var l = g_form.getLabel('incident.short_description');
l.style.fontWeight = 'bold';}Mettre les champs en lecture seule
- État de l’incident
- Impact
- Urgence
- Priorité
- Élément de configuration
- Affecté à
function onLoad(){
var incidentState = g_form.getValue('incident_state');
if( incidentState == '6'|| incidentState == '7'){
g_form.setReadonly('incident_state',true);
g_form.setReadonly('impact',true);
g_form.setReadonly('urgency',true);
g_form.setReadonly('priority',true);
g_form.setReadonly('cmdb_ci',true);
g_form.setReadonly('assigned_to',true);}}Définir la date/l’heure actuelles dans le champ
Vous pouvez définir des valeurs de date et d’heure dans les scripts clients et les script includes.
- Script client
- Vous pouvez utiliser les deux lignes suivantes pour définir la date et l’heure actuelles dans un champ de date/heure. Cette approche contourne le problème de l’obtention de la valeur dans le format et le fuseau horaire appropriés.
var ajax = new GlideAjax('MyDateTimeAjax'); ajax.addParam('sysparm_name','nowDateTime'); ajax.getXML(function(){ g_form.setValue('put your field name here', ajax.getAnswer());}); - Script Include du système
// Be sure the "Client callable" checkbox is checked var MyDateTimeAjax = Class.create(); MyDateTimeAjax.prototype = Object.extendsObject(AbstractAjaxProcessor,{ nowDateTime:function(){ return gs.nowDateTime();}});
Activer/désactiver le champ de minuteur par nom de champ
function toggleTimerByFieldName(fieldName){
//Step 1: Find the timer object
//timeObjectName: the timer objects name as it would normally be referenced
//timeObjectHidden: the hidden input node in the field td
//timeObjectParent: the parent td node containing the field and it's constituent nodes
//timeObjectFields: anchor tag with onclick to stop timer
var timeObjectName = fieldName;
var timeObjectHidden = gel(timeObjectName);
//Step 2: simulate click stop button
var timeObjectParent;
var timeObjectFields;
//verify that we got the correct object
if(timeObjectHidden.type=="hidden"){
//Get Parent td node
timeObjectParent = timeObjectHidden.parentNode;
//Get input fields
timeObjectFields = timeObjectParent.getElementsByTagName("input");
//simulate click of stop button
var timerTestString ="paused";
var timerImg;
//loop through input objects looking for the pause timer object
for(var elIt=0; elIt < timeObjectFields.length; elIt++){
if(timeObjectFields[elIt].id.match(timerTestString)){
if(timeObjectFields[elIt].value=="false"){
timeObjectFields[elIt].value="true";
timerImg = timeObjectParent.getElementsByTagName("img")[0];
timerImg.src="images/timer_start.gifx";}
elseif(timeObjectFields[elIt].value=="true"){
timeObjectFields[elIt].value="false";
timerImg = timeObjectParent.getElementsByTagName("img")[0];
timerImg.src="images/timer_stop.gifx";}}}}}Modifier la valeur du champ GlideDateTime
L’exemple suivant utilise un script côté serveur pour accéder à un GlideDateTime champ.
//You first need a GlideDateTime object
//this can be from instantiating a new object "var gdt = new GlideDateTime()"
//or getting the object from a GlideDateTime field
//getting the field value (for example: var gdt = current.start_date)
//only returns the string value, not the object
//to get the object use var gdt = current.start_date.getGlideObject();
//now gdt is a GlideDateTime object
var gdt = current.start_date.getGlideObject();
//All methods can use negative values to subtract intervals
//add 1 hour (60 mins * 60 secs)
gdt.addSecondsLocalTime(3600);
//add 1 day
gdt.addDaysLocalTime(1);
//subtract 1 day
gdt.addDaysLocalTime(-1);
//add 3 weeks
gdt.addWeeksLocalTime(3);
//subtract 6 months.
gdt.addMonthsLocalTime(-6);
//add 1 year, representing the date and time using the UTC timezone instead of the local user's timezone.
gdt.addYearsUTC(1);