Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
software:tim:javascript:filter [2014/05/22 16:33] fabian.tagsold angelegt |
software:tim:javascript:filter [2021/07/01 09:52] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====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. | ||
- | |||
- | <code javascript> | ||
- | (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)); | ||
- | </code> |