Skip to main content

widget: prod changes


 
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

Popular posts from this blog

Get URL Parameter - server side script (portal or classic UI)

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }

ServiceNow - script include: build up the results as a JSON object (array) - example 2

function call var sCurrentGroupMembers = new <script_include> (). getGroupMembers ( group_sysid ); gs . print ( 'sCurrentGroupMembers:' + sCurrentGroupMembers ); var oGroupMembers = JSON . parse ( sCurrentGroupMembers ); gs . print ( JSON . stringify ( oGroupMembers . users )); oNewGroupMember = JSON . parse ( group_members ); var oGroupConfig = getGroupDeltas ( oGroupMembers . users , oNewGroupMember ); gs . print ( JSON . stringify ( oGroupConfig . remove )); gs . print ( JSON . stringify ( oGroupConfig . add )) output : *** Script: sCurrentGroupMembers: {"manager":"3b2649efdb0f8c10cc0652f3f39xxxxx", "email":"", "type":"33a2226edb99c340edfc7cbdae96xxxx", "description":"Created for xyz", "users":[{"user":"3b2649efdb0f8c10cc0652f3f396xxxx"},{"user":"856a8f71db3d73041b4ffc45ae96196a"},{"user":"3752771