HTML
___________________________
<!--span option:-->
<h1>ServiceNow Production Changes</h1>
<h2>Listed in order of most recent</h2>
<h3>{{c.numberOfTickets}} change requests</h3>
<div style="border: 2px solid black">
<div ng-repeat="item in c.chgsList" ng-class="'color' + ($index % 2)">
<span><b><a href="change_request.do?sysparm_query=number={{item.number}}">{{item.number}}</a></b></span><span>{{item.short_description}}</span><span> (deployed on: {{item.start_date}})</span>
<span class="formattxt">{{item.description}}</span>
<br/><br/>
</div>
</div>
<!--table option:--><!--
<div class="chgwrap" >
<h1>ServiceNow Production Changes</h1>
<h2>Listed in order of most recent</h2>
<table class='chg'>
<tr ng-repeat="item in c.chgsList" ng-class="'color' + ($index % 2)">
<td class='chg'>
<a href="change_request.do?sysparm_query=number={{item.number}}">{{item.number}}</a>{{item.short_description}}</b>
</td>
<td class='chg2'><div style="width: 800px">
{{item.description}}</div>
</td>
</tr>
</table>
</div> -->
___________________________
CSS
___________________________
//**SPAN OPTION CSS**
div.color0 {
background-color: #cfe0e8;
border: solid thin;
}
div.color1 {
background-color: #daebe8;
border: solid thin;
}
span.formattxt{
white-space: pre; /* whitespace style deals with \n and converts to <br>*/
white-space:pre-wrap;
white-space:-moz-pre-wrap;
white-space:-pre-wrap;
white-space:-o-pre-wrap;
word-wrap:break-word
}
//**TABLE OPTION CSS**
/*tr.color0 {
background-color: #cfe0e8;
border: solid thin;
}
tr.color1 {
background-color: #daebe8;
border: solid thin;
}
div.chgwrap {
width: 80%;
}
table.chg{
width: 80%;
border: 2px solid black;
}
td.chg {
vertical-align:top;
padding-top: 20px;
border: solid thin;
}
td.chg2 {
vertical-align:top
border: solid thin;
white-space: pre; // whitespace style deals with \n and converts to <br>
white-space:pre-wrap;
white-space:-moz-pre-wrap;
white-space:-pre-wrap;
white-space:-o-pre-wrap;
word-wrap:break-word
}*/
___________________________
client script
___________________________
function($scope) {
/* widget controller */
var c = this;
populateSNChgList(c);
//--credits:
//https://docs.servicenow.com/bundle/london-servicenow-platform/page/build/service-portal/concept/adv-widget-tutorial.html
//https://stackoverflow.com/questions/12179455/how-to-assign-alternate-class-to-rows-in-angular-js
//https://stackoverflow.com/questions/13964735/angularjs-newline-filter-with-no-other-html
}
populateSNChgList = function(c) {
//console.log("message", 'run the op');
c.server.get({
action: "get_chgs",
msg : "Checking for ServiceNow changes..."
}).then(function(r){
c.chgsList=r.data.chgsList;
});
}
___________________________
server script
___________________________
(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */
data.chgsList=[];
data.chgsListCount=0;
//data.chgsList='';
if (input && input.action === "get_chgs"){
data.chgsList=getSNChgs();
data.chgsListCount=data.chgsList.length;
}
function getSNChgs(){
var lnBrk='\n';
var results=[];
var gr= new GlideRecord('change_request');
gr.addQuery('cmdb_ci=57c1157f4f02d200b98034828110c70d^ORshort_descriptionLIKEServiceNow');//--ServiceNow
gr.addQuery('state','3');
gr.orderByDesc('number');
gr.query();
while(gr.next()){
var chgTicket={};
var stDate=gr.start_date.split(' ');
//chgTicket.title=gr.number + ' - Change Title: ' + gr.short_description + '; deployment date: ' + stDate[0];
$sp.getRecordDisplayValues(chgTicket, gr, 'number,short_description,sys_id,start_date');
var sDesc=lnBrk+'Change description: ' + lnBrk + gr.description;
chgTicket.description= sDesc;
results.push(chgTicket);
}
return results;
}
})();
Comments
Post a Comment