Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

escalation button visibility

Evan2
Kilo Guru

Hi All,

 

I have created a widget "Escalate" to trigger escalations through email. But as per requirement I have to make it vidible if-

 

  • Incident is not updated since last 4 days
  • State is not cancelled(8), resolved(6) & closed(7).
  • It should be visible only to caller or opened by user.

I tried doing that and its working partially. It is visible now for every state and after just submitting the incident.

Please find below the script for widget i have tried and help me to fix this.

 

HTML

 

<div>
<!-- your widget template -->
<div class="panel b" ng-if="data.showWidget">
<div class="panel-heading bg-primary">Actions</div>
<div class="panel-body">
<button type="button" class="btn btn-primary btn-block" ng-click="c.openModalEscalate()" ng-if="data.showEsc">Escalate</button>
</div>
<script type="text/ng-template" id="modalEscalate">

<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">Do you want to escalate?</h4>
</div>
<div class="panel-body wrapper-xl">
<form name="modalEscalate" ng-submit="c.uiAction('esc')">
<input class="btn btn-primary" type="Submit" />

<button class="btn btn-primary" ng-click="c.closeModal()">${Close}</button>

</form>
</div>
</div>

</script>
</div>
</div>

 

Server script

 

(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */
// Get table & sys_id
data.table = input.table || $sp.getParameter("table");
data.sys_id = input.sys_id || $sp.getParameter("sys_id");

// Valid GlideRecord
var gr = new GlideRecord(data.table);
if (!gr.isValid())
return;

// Valid sys_id
//
if (!gr.get(data.sys_id))
return;

//Button Visibility
if(data.table == 'incident'|| data.table == 'sc_request'||data.table == 'sc_req_item' ||data.table == 'sc_task' && gr.active == true && (gr.caller_id == gs.getUserID() || gr.opened_by == gs.getUserID()) && gr.incident_state != 6 || gr.incident_state != 7 ||gr.incident_state != 8 ){
data.showWidget = true;
data.showEsc = true;

}
else {
data.showWidget = false;
data.showEsc = false;
}

//input
if (input && input.action) {
var action = input.action;

//Incident table
if (data.table == 'incident') {

if (action == 'esc') {
// gs.addInfoMessage("Incident Escalated-1");
gr.setValue('u_incident_esc', 'true');
gr.comments = "Ticket Escalated";
// gs.addInfoMessage("Incident Escalated-2");
gr.update();
//gs.addInfoMessage("Incident Escalated-3");
gs.eventQueue('incidentEscalation', gr, gr.assigned_to.manager);
gs.addInfoMessage("Incident Escalated");
}
}
}

})();

 

 

Client controller

 

api.controller=function($uibModal, $scope, spUtil) {
/* widget controller */
var c = this;



// c.openModalEscalate = function() {
// c.data.action = "esc";
// c.server.update().then(function() {
// c.data.action = undefined;
// })

// }

c.uiAction = function(action) {
c.data.action = action;
c.server.update().then(function() {
c.data.action = undefined;
});
c.modalInstance.close();
};
c.openModalEscalate = function() {
c.modalInstance = $uibModal.open({
templateUrl: 'modalEscalate',
scope: $scope
});
};
c.closeModal = function() {
c.modalInstance.close();
};

};

 

 

find_real_file.png

 

Please help me to apply all the above visibility conditions.

 

Regards,

Kumar nandan

5 REPLIES 5

Tapish Sharma1
Kilo Sage

Hi- Replace your //Button Visibility to below code

if(data.table == 'incident'|| data.table == 'sc_request'||data.table == 'sc_req_item' ||data.table == 'sc_task' && gr.active == true && (gr.caller_id == gs.getUserID() || gr.opened_by == gs.getUserID()) && gr.incident_state != '6' || gr.incident_state != '7' ||gr.incident_state != '8' ){
data.showWidget = true;
data.showEsc = true;

 

Kindly mark helpful/correct if this resolved your query

Hi Tapish

 

I believe the part you have mentioned is identical.

 

Regards,

Kumar Nandan

Hi Evan you need to put the state values in "".Thats the difference

 

Kindly mark helpful/correct if this resolved your query

Hi Tapish,

I tried your script but its not working still issue persists even after resolving the incident.