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

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