Skip to main content

Service Portal: A widget with tabs instead of side menu, for SC Categories

[ code is not yet quite working for the sub-arrays, look at widget "SC Categories" and try to incorporate for the sub category lookups ]



HTML:

<div class="banner-blue"> <ul class="nav nav-tabs"> <li class="dropdown" ng-repeat="parentcategory in ::data.parentCats" > <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)"> {{parentcategory.title}} <span class="caret"></span> <ul class="dropdown-menu"> <li ng-repeat="childitem in c.childItems" color="black"><a color="black" href="javascript:void(0)">{{childitem.child_title}}</a></li> </ul> </a> </li> </ul> </div>








CSS:

div.banner-blue{ background-color:#145896; color:white; /*overflow:hidden;*/ width:100%; /*padding-left: 50px;*/ } a.dropdown-toggle{ color:white; } span.banner-blue{ background-color:#145896; color:white; }








client controller script

function($scope) { /* widget controller */ var c = this; c.parentCatArr=c.data.parentCats; c.childItems=[]; for (items in c.parentCatArr){ var subitems= c.parentCatArr[items].child_items; for (subitem in subitems){ var childItemsArr={}; childItemsArr.child_title=subitems[subitem].child_title+""; c.childItems.push(childItemsArr); } var childItemsArr={}; for (i = 0; i < subitems.length; i++){ //alert (subitems[i].child_title); } } }

















server script


(function() { /* populate the 'data' object */ /* e.g., data.table = $sp.getValue('table'); */ var sMsgPadder = "*********************************** MSG: "; var ga = new GlideAggregate('sc_category'); ga.addAggregate('COUNT', 'parent'); ga.addActiveQuery(); ga.addQuery('sc_catalog', '9f6ef0cddb028f80edfc7cbdae96ZZZZ');//--a catalogue ga.addNotNullQuery('parent'); ga.addHaving('COUNT', '>', 0); ga.query(); data.parentCats = []; while (ga.next()) { var objParCatsArr = {}; objParCatsArr.title = ga.getElement('parent.title') + ""; var parSYSID= ga.getElement('parent.sys_id') + ""; objParCatsArr.sys_id = parSYSID; var arrChildItems = []; var grCats = new GlideRecord('sc_category'); grCats.addQuery('parent', parSYSID); grCats.addActiveQuery(); grCats.query(); while (grCats.next()) { var objSubItem= {}; objSubItem.child_title=grCats.title+""; objSubItem.child_sys_id=grCats.sys_id+""; arrChildItems.push(objSubItem); } objParCatsArr.child_items = arrChildItems; data.parentCats.push(objParCatsArr); } })();


Comments

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){

Service Catalog: variable advanced reference qualifiers

Call a script include to apply a reference qualifier on a catalog item variable: - variable reference qualifier dependent on another variable selection, in this case a variable referencing sys_user (requested_for) On the catalog item form. variable name to apply ref qual filter : retail_equipment variable reference qualifier (on cmdb table ): javascript : new  refqual_functions (). lostStolen_getAssignedCIs (); client-callable script include ( refqual_functions)  function : lostStolen_getAssignedCIs : function (){         //--called from variable set client script, for lost/stolen request (service catalog)     gs . log ( current . variables . requested_for , 'retail_lostStolen_getAssignedCIs' );         return ( 'install_statusNOT IN8,7^owned_by=' + current . variables . requested_for );             //owned_by=1269b79937f1060041c5616043990e41^install_statusNOT IN8,7            },