Service Portal Widget to display Catalog Tasks for RITM.
Can add to Standard Ticket Config Page for Requested Item.
(code works but could use some cleanup before using)

HTML
<div ng-if="data.canRead && data.isRITM && data.validStage" >
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<div ng-if="data.canRead && data.isRITM && data.validStage" class="panel b">
<div class="panel-body">
<div class="row">
<table style="table-layout: fixed; width: 100%" class="table">
<thead>
<tr>
<th ng-if="data.hasTasks2">${Task Number}</th>
<th ng-if="data.hasTasks2">${Task Short Description}</th>
<th ng-if="data.hasTasks2">${State}</th>
<th ng-if="data.hasTasks2">${Assignment Group}</th>
<th ng-if="data.hasTasks2">${Agent working on the task}</th>
<th ng-if="data.hasTasks2">${Agent's Phone Number}</th>
<th ng-if="data.noTasks2">Tasks will be created when request is approved. Please check back soon.</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="task in data.tasks2">
<td>{{task.number}}</td>
<td>{{task.short_description}}</td>
<td>{{task.state}}</td>
<td>{{task.assignment_group}}</td>
<td>{{task.assigned_to}}</td>
<td>{{task.phone}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
Client Script
function() { /* widget controller */ var c = this;}
Server Script
(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */
var gr = $sp.getRecord();
data.canRead = gr.canRead();
data.isRITM = gr.getTableName() == 'sc_req_item' ;
data.stage = gr.stage.toString();
data.validStage = true;
data.hasTasks = true;
data.hasTasks2 = true;
if (!data.canRead)
return;
//Tasks
var tsk2 = new GlideRecord('sc_task');
tsk2.addQuery('request_item', gr.getUniqueValue());
//tsk.addActiveQuery();
tsk2.query();
data.tasks2 = [];
while(tsk2.next()){
var temp2 = {};
temp2.number = tsk2.number.toString();
temp2.short_description = tsk2.short_description.toString();
temp2.assigned_to = tsk2.assigned_to.getDisplayValue();
temp2.phone = tsk2.assigned_to.phone.getDisplayValue();
temp2.state = tsk2.state.getDisplayValue();
temp2.assignment_group = tsk2.assignment_group.getDisplayValue();
temp2.sys_id = tsk2.sys_id.toString();
data.tasks2.push(temp2);
}
if (data.tasks2 <1){
data.hasTasks2 = false;
data.noTasks2 = true;
}
})();

Leave a comment