Vorbelegte Filter

Es ist möglich Filter per Javascript mit Werten aus dem User Profil vorzubelegen. Um dies zu erreichen muss folgender Code in die verwendete custom.js Datei kopiert werden.

(function($){ var GADGET_NAME = 'pmprocesses'; var TAB_NAME = 'instances'; //Gibt an auf welchem Tab der vorzubelegende Filter liegt (z.B.: definitions,myStartedProcessInstances,...) var FILTER = 'name'; //Gibt an welcher Filter vorbelegt werden soll (z.B.: smartFormIndex1,smartFormIndex2,...) var SOURCE = gadget.getEntity('currentUserProfile'); //Oder gadget.getEntity('currentUser') um Werte wie Vorname, Nachname,... zu beziehen var FIELD = 'department'; //Gibt an welches Feld verwendet werden soll (z.B.: namefirst, namelast,...) var USER_PROFILE = gadget.getEntity('currentUserProfile'); var SYSTEM_PROPS = USER_PROFILE.systemConfigurationProperties; var FILTER_NAME = 'filter.' + GADGET_NAME + '.' + TAB_NAME + '.' + FILTER; var FIELD_NAME = 'fields.' + GADGET_NAME + '.' + TAB_NAME; var APPLY = true; function applyFilter(gui, value){ var callback = gui.requestMethodCallback; gui.requestMethod.filter = " ( " + FILTER + " like '%" + value + "%' ) "; gui.requestMethod(callback); gui.filters[FILTER] = {visible: false, active: true, value: value}; } function overrideUpdateMe(gui){ var old = gui.updateMe; gui.updateMe = function(){ if(this.gadget.name==GADGET_NAME && this.tabName==TAB_NAME){ var filter = this.filters[FILTER] || ''; webService.SystemManager.saveGui(FILTER_NAME, filter.value || filter); } old.bind(this)(); } } if(Gadget.CLIENTNAME=='Processmanager Client'){ $(SYSTEM_PROPS).each(function(i, e){ if(e.name==FIELD_NAME && e.value.indexOf(FILTER)===-1) APPLY = false; }); var checkExist = setInterval(function(){ var g = gadget.getGadget(GADGET_NAME); if(typeof(g)!='undefined'){ var t = g.tabView.getTab(TAB_NAME); if(typeof(t)!='undefined'){ overrideUpdateMe(t.gui); var field = SOURCE.getValue(FIELD); if(typeof(field)!='undefined' && $.trim(field)!='' && APPLY) applyFilter(t.gui, field); $(SYSTEM_PROPS).each(function(i, e){ if(e.name==FILTER_NAME && $.trim(e.value)!='' && APPLY) applyFilter(t.gui, e.value); }); clearInterval(checkExist); } } }, 300); } }(jQuery));