/* global IsAny BatchJavascript GetStyleVariable getMultichromaticRangeColorPV*/ /* exported doVPV */ var filter_map; function doVPV() { LibJavascript.RequireLibrary(ZtVWeb.SPWebRootURL + '/ZtChartFunctions.js'); var decoratorsFunctions = {}; var caption=''; var reload = true var viewHeaderFromConfig = true; var viewToolbarFromConfig = false; var advanced_suggester_active = false; var rcvNameGen = LibJavascript.AlfaKeyGen(5); var _this = this; var _listData = []; var _mSeparator = '##-##'; var _saveConfig = false; this.hasFilters = false; // indica se sono stati applicati filtri in vdm this.useMDataLevel = false; var _loadFixedFilters = null; this._copyObj = null; var securityOpts = { hidePivotFilters: _this.ConfigGridElements.Value().match(/-f/i)!=null, hideTitlePortlet: _this.ConfigGridElements.Value().match(/-h/i)!=null, hideSmallToolbar: _this.ConfigGridElements.Value().match(/-b/i)!=null, hidePrintButton: _this.ConfigGridElements.Value().match(/-p/i)!=null, hideConfigButton: _this.ConfigGridElements.Value().match(/-c/i)!=null }; this.getZoomtitlesRefsByProperty = function(propertyName, fncAction) { var decoratorId = decoratorsFunctions[propertyName], decorator = decoratorId && ZtVWeb.getPortletById(decoratorId); if (decorator) { return fncAction.call(this, decorator); } }; this.hasZoomtitlesID = function(propertyName) { return !!decoratorsFunctions[propertyName]; }; this.HideCaption=function() { var label = this.GetCurrentLabel() label.Value(''); label.Ctrl.style.display='none'; //si deve usare display='none' e non visibility='hidden' per eliminare lo spazio occupato // this.Grid.topposition=0; // this.Grid.Ctrl.style.top=0; //la griglia viene riposizionata troppo tardi e c'e un problema di render iniziale } this.ShowCaption=function() { var label = this.GetCurrentLabel() label.Ctrl.style.display=''; } this.GetCurrentCfgName = function() { var cfgname = Strtran(this.ConfigName.Value(), '0/', '') cfgname = Strtran(cfgname, '1/', '') var idx = cfgname.indexOf('__'); if (idx>-1) { cfgname = cfgname.substring(0, idx); } return cfgname; } this.GetCurrentVersion = function() { var versions = this.__cfgObj.configuration.Versions||[]; var versionname = 'default'; var cfgname = this.ConfigName.Value(); var idx = cfgname.indexOf('__'); if (idx>-1) { versionname = cfgname.substring(idx+2); if (versions.indexOf(versionname)==-1) { versionname = '';//non dovrebbe mai succedere } } return versionname; } this.GetCurrentDataObj = function() { if( this.useMDataLevel ) return this.mDataobj; return this.dataobj; } this.GetVersionsLabel=function() { // var version=''; var frag = document.createDocumentFragment(); if (this.menu_versioni) { var img = this.GetVersionsImage(); if (typeof(img)=='string' && img!='') { if (SPTheme.portalZoomVersionItemOnLabel) { var lblVersion = Strtran(this.GetCurrentVersion(), '_', ' '); var span2 = document.createElement("span"); span2.className = "SPPortalZoom_currentversion"; span2.innerText = (lblVersion == 'default' ? '' : lblVersion); frag.appendChild(span2); // version = '' + (lblVersion=='default'?'':lblVersion) + '' + version; } /** Formato JSON */ if (Left(img,1)=='{' && Right(img,1)=='}') { img = JSON.parse(img); //lo stile tutto nel css generato var span = document.createElement("span"); span.className = "SPPortalZoom_versionhandler"; frag.appendChild(span); LibJavascript.Events.addEvent(span, "click", function(e){e.stopPropagation();this.menu_versioni.OpenMenu(span);}.bind(this)); span.innerText = String.fromCharCode(img.Char); // version = ""+String.fromCharCode(img.Char)+""; } else { var image = document.createElement("img"); image.className = "SPPortalZoom_versionhandlerimage"; image.src = img; LibJavascript.Events.addEvent(image, "click", function(e){e.stopPropagation();this.menu_versioni.OpenMenu(image);}.bind(this)); frag.appendChild(image); // version = " "; } } } return frag; } var manageDocumentTitle = false; this.CaptionChanged=function(){ if (!securityOpts.hideTitlePortlet && viewHeaderFromConfig) { this.getZoomtitlesRefsByProperty('SetCaption', function(portlet) { portlet.SetCaption(caption); this.HideCaption(); }, this); } // } else { // (function(_this) { // function hideCaption() { // _this.HideCaption(); // } // // _this.raiseCaptionChange(caption, hideCaption); // _this.raiseStatusChange(EmptyString(caption)?'':"zoom"); // })(this); // } if(document.title=="" || manageDocumentTitle){ document.title = caption; manageDocumentTitle = true; } } this.SetZoomTitle=function(){ if((securityOpts.hideTitlePortlet || !viewHeaderFromConfig) && (this.hasZoomtitlesID('SetButtons') || this.hasZoomtitlesID('SetCaption'))) { function hide(portlet) { portlet.Ctrl.style.display='none'; } this.getZoomtitlesRefsByProperty('SetButtons', hide); this.getZoomtitlesRefsByProperty('SetCaption', hide); } else if(this.hasZoomtitlesID('SetButtons') || this.hasZoomtitlesID('SetCaption')) { function show(portlet) { portlet.Ctrl.style.display=''; portlet.setFormStep(); } this.getZoomtitlesRefsByProperty('SetCaption', show); this.getZoomtitlesRefsByProperty('SetButtons', function(portlet){ show(portlet); portlet.SetButtons(this.formid,this.ConfigGridElements.Value(),true/*this.autozoomCanAdd && !EmptyString(this.Grid.splinker)*/); }, this); this.CaptionChanged(); } } function setZoomTitles(portlet) { var portletId = portlet.formid, zoomId = this.formid, containerId = (this.container && this.container.formid) || ''; if(zoomId === portletId || containerId === portletId) { // salto me stesso e il mio contenitore diretto return; } if (portlet.portletname === 'SPVisualPivot' || portlet.portletname === 'SPVisualPivotOL' || (this.pageletId && this.pageletId !== portlet.pageletId) ) { // salto portlet che non appartengono alla stessa pagelet (quando questa c'e') // salto anche il portlet di zoom per evitare loop return; } addZoomtitleProp('SetButtons', portlet, zoomId); // addZoomtitleProp('Caption', portlet, zoomId); // imposizione:chi definisce SetCaption deve definire anche Caption addZoomtitleProp('SetCaption', portlet, zoomId); addZoomtitleProp('SetCssStyle', portlet, zoomId); addZoomtitleProp('SetSearchField', portlet, zoomId); addZoomtitleProp('SetLinkedConfs', portlet, zoomId); addZoomtitleProp('updateFilterButton', portlet, zoomId); addZoomtitleProp('SetActions', portlet, zoomId); addZoomtitleProp('SetOtherFields', portlet, zoomId); addZoomtitleProp('SetSaveConfig', portlet, zoomId); addZoomtitleProp('updateShowHideFieldsButton', portlet, zoomId); // addZoomtitleProp('AddField', portlet, zoomId); function addZoomtitleProp(propertyName, portletDecorator, zoomId) { var portletId = portletDecorator.formid, decoratorFunctionRef = portletDecorator[propertyName]; if (decoratorFunctionRef) { // esiste una proprieta' del decoratore con il nome desiderato if (decoratorFunctionRef.zoomDecorator) { // funzione del decoratore gia' utilizzata da altro zoom return; } if (decoratorsFunctions[propertyName]) { // funzione gia' associata ad altro decoratore return } // associazione decoratorsFunctions[propertyName] = portletId; // associo la funzionalita' al decoratore portletDecorator[propertyName].zoomDecorator = zoomId; // associo la funzionalita' esposta dal decoratore allo zoom } } } ZtVWeb.addEventListener('portletloaded', function(e) { if(!e.detail.fromParent){ // stessa finestra setZoomTitles.call(this, e.detail.portlet); } }.bind(this)); this.SearchZoomTitle=function(){ if(!Empty(this.title_pagelet_decorator_id)){ setZoomTitles.call(this, ZtVWeb.getPortletById(this.title_pagelet_decorator_id)); }else{ var portlets=ZtVWeb.getPortletsById(); Object.keys(portlets).forEach(function(portletId){ setZoomTitles.call(this, portlets[portletId]); }.bind(this)); } } this.crumbObj = function (evt, ignoreFilterMap) { function operatorWithoutValue (op) { return ['empty', 'notempty', 'currentyear', 'lastyear', 'currentmonth', 'lastmonth', 'last30days', 'last60days', 'last90days'].indexOf(op.toLowerCase()) >= 0; }; var _dataobj = this.GetCurrentDataObj(); var res = [], p_exp, p_op, op_suff = '_op', def_op = '=', p_type, type_suff = '_type', def_type = 'C', p_fixed, fixed_suff = '_fixed', p_queryP, queryP_suff = '_queryParm', p_visible, visible_suff = '_visible', p_userFilter, userFilter_suff = '_userFilter', p_picture, picture_suff = '_picture', p_defaultFilter, defaultFilter_suff = '_defaultFilter'; if(!evt) return []; for (var p in evt) { if (!evt.hasOwnProperty(p)) { continue; } if (evt[p] != null && IsA(evt[p], 'O') && !IsA(evt[p], 'D')) { res = res.concat(this.crumbObj(evt[p], ignoreFilterMap)); continue; } if ((p.match(op_suff + '$') && RTrim(p, op_suff) in evt) || (p.match(type_suff + '$') && RTrim(p, type_suff) in evt) || (Empty(evt[p]) && (p + op_suff) in evt && !operatorWithoutValue(evt[p+op_suff])) && (_dataobj.Fields_map && (p.toLowerCase() in _dataobj.Fields_map)) || (filter_map && !(p in filter_map) && !ignoreFilterMap) || p == "srcPortletId" ) continue; p_op = EmptyString(evt[p + op_suff]) ? def_op : evt[p + op_suff];//operatore p_type = EmptyString(evt[p + type_suff]) ? def_type : evt[p + type_suff];//tipo p_picture = EmptyString(evt[p + picture_suff]) ? '' : evt[p + picture_suff];//picture p_fixed = evt[p + fixed_suff] || false;//fisso p_queryP = evt[p + queryP_suff] || ""; p_visible = evt[p + visible_suff] || false;//visible p_userFilter = evt[p + userFilter_suff] || false;//filtro da moschina p_defaultFilter = evt[p + defaultFilter_suff] || false;//filtro da moschina p_exp = evt[p]; if (filter_map && !ignoreFilterMap) { p = filter_map[p]; } res.push( { field: p, operator: p_op, expression: p_exp, type: p_type, picture: p_picture, fixed: p_fixed, queryparm: p_queryP, visible: p_visible, userFilter: p_userFilter, defaultFilter: p_defaultFilter }); } return res; } this.SetFilters = function (evt, fixedFilter, onlyLoad) { var cGridPivot = this.GetCurrentPivot(); if( cGridPivot.IsOpenUiDragDrop() ) { cGridPivot.ShowHideFields(); } if( cGridPivot != null && cGridPivot.ztpivot ) cGridPivot.ztpivot = null; reload = true; this.SetInnerFilters(evt, fixedFilter, onlyLoad) } this.SetInnerFilters = function (evt, fixedFilter, onlyLoad) { var keepFixed = false, keepUserFilter = false, keepDefaultFilter = false, ignoreFilterMap = false; var filters = this.crumbObj(evt, ignoreFilterMap); var cGridPivot = this.GetCurrentPivot(); if( !cGridPivot ) return; function getFldIdx (field) { var fl = field.toLowerCase(); var p = _this._copyObj.Fields.indexOf(fl); return p; } var _dataobj = this.GetCurrentDataObj(); //rimuove i filtri precedenti if(!fixedFilter) cGridPivot.RemoveAllFilters(keepFixed, true, keepUserFilter, keepDefaultFilter); //primo parametro->false:elimina filtri fissi; secondo parametro->true:elimina filtri nascosti // eslint-disable-next-line no-cond-assign for (var i = 0, f; f = filters[i]; i++) { if (f.queryparm != "") { if (this[f.queryparm] && this[f.queryparm].Value) { this[f.queryparm].Value(f.expression); } else { this[f.queryparm] = new this.Var(f.expression); _dataobj.parms += "," + f.queryparm; } } else { var fidx; if ((fidx = getFldIdx(f.field)) != -1) { cGridPivot.AddFilter( cGridPivot.MakeFilter(f.field, f.operator, f.expression, _this._copyObj.fieldstypearray[fidx], true, f.userFilter, f.defaultFilter) , f.visible); cGridPivot.Filters[cGridPivot.Filters.length-1].picture = f.picture; } else if (this[f.field] && this[f.field].Value) { this[f.field].Value(f.expression); } } } if( onlyLoad == true ) return; cGridPivot.dispatchEvent('FiltersApplied'); if (!fixedFilter){ this.applyFilterOnDataobj(cGridPivot); } else { // quando leggo i filtri da vpv ridisegno (da controllare) + vdm zoom filter this.applyFilterOnPivot(cGridPivot); } } this.applyFilterOnDataobj = function (cGridPivot) { this.hasFilters = true; var _dataobj = this.GetCurrentDataObj(); _dataobj.queryfilter = cGridPivot.CreateFilter(); if( _dataobj.resetForNewQuery ) _dataobj.resetForNewQuery(); _dataobj.Query(); if (viewHeaderFromConfig && this.hasZoomtitlesID('updateFilterButton')) { this.getZoomtitlesRefsByProperty('updateFilterButton', function(portlet) { portlet.updateFilterButton(); }); } else { this.GetCurrentToolbar().UpdateItem('showVdm', { image:SPTheme.portalZoomFilterAppliedImage||{fontFamily:'icons8_win10', value: "", size: "20px"} }); var menuCtrl = this.GetCurrentMenu(); if( menuCtrl ) menuCtrl.UpdateItem('showVdm', { action : function() { _this.ShowVdmMask(); _this.CloseMenus(); }, image:SPTheme.portalZoomFilterAppliedImage||{fontFamily:'icons8_win10', value: "", size: "20px"} }); } } this.applyFilterOnPivot = function (ctrl) { if (!ctrl) return; ctrl.filter_change = true; this.hasFilters = true; ctrl.ApplyFilter(); if (viewHeaderFromConfig && this.hasZoomtitlesID('updateFilterButton')) { this.getZoomtitlesRefsByProperty('updateFilterButton', function(portlet) { portlet.updateFilterButton(); }); } else { this.GetCurrentToolbar().UpdateItem('showVdm', { image:SPTheme.portalZoomFilterAppliedImage||{fontFamily:'icons8_win10', value: "", size: "20px"} }); var menuCtrl = this.GetCurrentMenu(); if( menuCtrl ) menuCtrl.UpdateItem('showVdm', { image:SPTheme.portalZoomFilterAppliedImage||{fontFamily:'icons8_win10', value: "", size: "20px"} }); } } this.Chart.OperatorIndexes = this.GridPivot.OperatorIndexes = this.GridPivotB.OperatorIndexes = [ 'contains', 'like', '=', '<', '<=', '>=', '>', '<>', 'empty', 'notempty', 'currentmonth', 'currentyear', 'lastmonth', 'lastyear', 'last30days', 'last60days', 'last90days' ]; this.Chart.TypifyFilters = this.GridPivot.TypifyFilters = this.GridPivotB.TypifyFilters = function (filters, notFixed) { var Filters = []; for (var i = 0; i < filters.length;) { var o_filter = filters[i]; if (notFixed && o_filter.fixed) { i++; continue; } var operator = typeof o_filter.operator == 'string' ? o_filter.operator : o_filter.operator.op; if (!EmptyString(o_filter.expression) || operator && this.operatorWithoutValue(operator)) { var n_filter = {}; Filters.push(n_filter); n_filter.id = o_filter.id; n_filter.field = o_filter.field; n_filter.type = o_filter.type; n_filter.fixed = o_filter.fixed === 'true'; n_filter.picture = o_filter.picture; n_filter.defaultFilter = o_filter.defaultFilter; n_filter.operator = this.OperatorIndexes.indexOf( o_filter.operator ); n_filter.userFilter = o_filter.userFilter; n_filter.visible = o_filter.visible; var type = o_filter.type; var exp = o_filter.expression; var pict = o_filter.picture; if (type == 'D') { if (!IsAny(pict) || EmptyString(pict)) { pict = ZtVWeb.defaultDatePict; } if (typeof exp == 'string') { exp = ZtVWeb.valueToStr(ZtVWeb.strToValue(exp, type, pict), type); } } else if (type == 'T') { if (!IsAny(pict) || EmptyString(pict)) { pict = ZtVWeb.defaultDateTimePict; } if (typeof exp == 'string') { exp = ZtVWeb.valueToStr(ZtVWeb.strToValue(exp, type, pict), type); } } else if (type == 'N') { if (typeof exp != 'string') { } else if (isNaN(ZtVWeb.strToValue(exp, type, pict))) { exp = ZtVWeb.strToValue(exp, 'C', pict); } else { exp = ZtVWeb.strToValue(exp, type, pict); } } else if (type == 'L') { if (typeof exp == 'string') { exp = ZtVWeb.strToValue(exp, type, pict); } } n_filter.expression = exp; i++; } else if (!this._removeFilterByIndex(i, true)) { i++; } } return Filters; }; this.GridPivot.CreateFilter = this.GridPivotB.CreateFilter = function (notFixed) { // genera frase SQL notFixed = Empty(notFixed) ? false : notFixed; var json = true; var dsource = this.datasource; var _dataobj = _this.GetCurrentDataObj(); if (!this.datasource || (this.datasource.name != _dataobj.name)) dsource = _dataobj; if (dsource.CreateFilter && !dsource.jsonFilters) { return dsource.CreateFilter(this.Filters, notFixed, this); } var isXMLDataProvider = !!dsource.root; //var JsonFilters = []; var filter = '';/*, sep = '', exp, type, pict = null;*/ if (!isXMLDataProvider && json) { // Json Filters if (Empty(this.Filters)) { return ''; } return JSON.stringify(this.TypifyFilters(this.Filters, notFixed)); } /*for (var i = 0; i < this.Filters.length;) { var cur_filter = this.Filters[i]; if (notFixed && cur_filter.fixed) { i++; continue; } var operator = typeof cur_filter.operator == 'string' ? cur_filter.operator : cur_filter.operator.op; if (!EmptyString(cur_filter.expression) || operator && this.operatorWithoutValue(operator)) { if (EmptyString(cur_filter.type) && dsource.fieldstypearray != null && !EmptyString(cur_filter.field)) { var fldIdx = dsource.getFldIdx(cur_filter.field); cur_filter.type = fldIdx == -1 ? 'C' : dsource.fieldstypearray[fldIdx]; } filter += sep; var op = isXMLDataProvider && operator == '<>' ? '!=' : operator; type = cur_filter.type; if (!this.operatorWithoutValue(op)) { if (isXMLDataProvider && (op == 'contains' || op == 'like')) { if (op == 'contains') { filter += 'contains(translate(' + cur_filter.field + ",'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),translate("; } else { filter += 'starts-with(translate(' + cur_filter.field + ",'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),translate("; } } else { filter += cur_filter.field + ' '; filter += (op == 'contains' ? 'like' : op) + ' '; } pict = cur_filter.picture; exp = cur_filter.expression; if (!isXMLDataProvider) { if (type == 'D') { if (!IsAny(pict) || EmptyString(pict)) { pict = ZtVWeb.defaultDatePict; } if (typeof exp == 'string') { filter += ZtVWeb.toSQL(ZtVWeb.strToValue(exp, type, pict), type); } else { filter += ZtVWeb.toSQL(exp, type); } } else if (type == 'T') { if (!IsAny(pict) || EmptyString(pict)) { pict = ZtVWeb.defaultDateTimePict; } if (typeof exp == 'string') { filter += ZtVWeb.toSQL(ZtVWeb.strToValue(exp, type, pict), type); } else { filter += ZtVWeb.toSQL(exp, type); } } else if (type == 'N') { if (typeof exp != 'string') { filter += ZtVWeb.toSQL(exp, type); } else if (isNaN(ZtVWeb.strToValue(exp, type, pict))) { filter += ZtVWeb.toSQL(ZtVWeb.strToValue(exp, 'C', pict), 'C'); } else { filter += ZtVWeb.toSQL(ZtVWeb.strToValue(exp, type, pict), type); } } else if (type == 'L') { if (typeof exp != 'string') { filter += ZtVWeb.toSQL(exp, type); } else { filter += ZtVWeb.toSQL(ZtVWeb.strToValue(exp, type), type); } } else { filter += ZtVWeb.toSQL(exp, type, isXMLDataProvider ? '' : op); } } else { // XMLDataprovider if (exp.indexOf('"') === -1) { exp = '"' + exp + '"'; } else if (exp.indexOf("'") === -1) { exp = "'" + exp + "'"; } else { exp = 'concat("' + exp.replace(/"/g, '",\'"\',"') + '")'; } filter += exp; } if (isXMLDataProvider && (op == 'contains' || op == 'like')) { // filter+=')'; filter += ",'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'))"; } // 'currentyear', 'lastyear', 'currentmonth', 'lastmonth', 'last30days', 'last60days', 'last90days' } else if (op == 'currentyear') { filter += cur_filter.field + ' >= [FIRSTDAYCURRENTYEAR()] and ' + cur_filter.field + ' < [FIRSTDAYNEXTYEAR()]'; } else if (op == 'lastyear') { filter += cur_filter.field + ' >= [FIRSTDAYPREVYEAR()] and ' + cur_filter.field + ' < [FIRSTDAYCURRENTYEAR()]'; } else if (op == 'currentmonth') { filter += cur_filter.field + ' >= [FIRSTDAYCURRENTMONTH()] and ' + cur_filter.field + ' < [FIRSTDAYNEXTMONTH()]'; } else if (op == 'lastmonth') { filter += cur_filter.field + ' >= [FIRSTDAYPREVMONTH()] and ' + cur_filter.field + ' < [FIRSTDAYCURRENTMONTH()]'; } else if (op == 'last30days') { filter += cur_filter.field + ' >= [30DAYSBEFORE()] and ' + cur_filter.field + ' <= [CURRENTDATE' + (type == 'T' ? 'TIME' : '') + '()]'; } else if (op == 'last60days') { filter += cur_filter.field + ' >= [60DAYSBEFORE()] and ' + cur_filter.field + ' <= [CURRENTDATE' + (type == 'T' ? 'TIME' : '') + '()]'; } else if (op == 'last90days') { filter += cur_filter.field + ' >= [90DAYSBEFORE()] and ' + cur_filter.field + ' <= [CURRENTDATE' + (type == 'T' ? 'TIME' : '') + '()]'; } else { var nullExp; switch (type) { case 'D': nullExp = 'NULL'; break; case 'T': nullExp = 'NULL'; break; case 'N': nullExp = 0; break; case 'L': nullExp = false; break; case 'M': case 'C': default: if (isXMLDataProvider) { nullExp = "''"; } else { nullExp = ''; } break; } if (isXMLDataProvider) { filter = '(' + cur_filter.field + (op == 'notempty' ? '!=' : '=') + nullExp + ')'; } else if (op == 'notempty') { if (type != 'C') { if ('NULL' == nullExp) { filter += cur_filter.field + ' is not null'; } else { filter += cur_filter.field + ' <> ' + ZtVWeb.toSQL(nullExp, type) + ' and ' + cur_filter.field + ' is not null'; } } else { filter += cur_filter.field + " > ' ' and " + cur_filter.field + ' is not null'; } } else { filter += '(' + cur_filter.field + ' is null or ' + cur_filter.field + ' = ' + ZtVWeb.toSQL(nullExp, type) + ')'; } } sep = ' and '; i++; } else if (!this._removeFilterByIndex(i, true)) { i++; } }*/ return filter; } this.GetFilters = function () { var cGridPivot = this.GetCurrentPivot(); if( !cGridPivot ) return; if(!cGridPivot.Filters) return; //todo chart var filters = [], f; // eslint-disable-next-line no-cond-assign for (var i = 0, filter; filter = cGridPivot.Filters[i++];) { f = JSON.parse( JSON.stringify(filter)); f.fixed = false; filters.push(f); } return filters; } this.SetEmitters = function () { //imposta l'emitter $entity$_updateFilters var emtName = this.EmitterName.Value(); /*if(EmptyString(emtName)){ emtName=this.ConfigName.Value(); }-*/ this.$entity$_updateFilters.name = this.$entity$_updateFilters.name.replace('$entity$', emtName); this.$entity$_updateConfiguration.name = this.$entity$_updateConfiguration.name.replace('$entity$', emtName); this.$entity$_GetConfigurationField.name = this.$entity$_GetConfigurationField.name.replace('$entity$', emtName); } this.SetToolbarBox = function () { var toolbar = this.GetCurrentToolbar(); var label = this.GetCurrentLabel(); var box = this.GetCurrentBox(); if (!viewHeaderFromConfig && viewToolbarFromConfig && toolbar && !securityOpts.hideSmallToolbar) { if(box) box.Expand(); toolbar.getRenderHeight = null; label.getRenderHeight = function () { if (this.Ctrl != null) { this.Ctrl.style.height = 'auto'; var h = this.Ctrl.offsetHeight; this.lastRenderHeight = ((this.shrinkable == 'true' || h > this.minheight) ? h : null) if (toolbar && !toolbar.IsHidden() && this.lastRenderHeight < SPTheme.portalZoomToolbarElementHeight) { this.lastRenderHeight = SPTheme.portalZoomToolbarElementHeight; this.Ctrl.style.height = this.lastRenderHeight + 'px'; toolbar.Ctrl.style.height = SPTheme.portalZoomToolbarElementHeight + 'px'; } else { toolbar.Ctrl.style.height = this.lastRenderHeight + 'px'; } } else { this.lastRenderHeight = null } return this.lastRenderHeight } toolbar.setCtrlPos( toolbar.ctrl, toolbar.leftposition, toolbar.topposition, toolbar.controlwidth, SPTheme.portalZoomToolbarElementHeight, toolbar.anchor, this.width, this.height, false, false ); toolbar.IconWidth(SPTheme.portalZoomToolbarElementHeight); //} } else { if(box) box.Collapse(); } } this.GetConfigurationField = function () { var obj = {}, i; for (i = 0; i < this.__cfgObj.cols.length; i++) { if (typeof (this.__cfgObj.cols[i].type) == 'undefined') this.setColType(this.__cfgObj.cols[i]); setFieldInObj(this.__cfgObj.cols[i], obj) } for (i = 0; i < this.__cfgObj.rows.length; i++) { if (typeof (this.__cfgObj.rows[i].type) == 'undefined') this.setColType(this.__cfgObj.rows[i]); setFieldInObj(this.__cfgObj.rows[i], obj) } /*for (i = 0; i < this.__cfgObj.measures.length; i++) { if (typeof (this.__cfgObj.measures[i].type) == 'undefined') this.setColType(this.__cfgObj.measures[i]); setFieldInObj(this.__cfgObj.measures[i], obj) }*/ return obj; function setFieldInObj(fieldObj, obj) { if (!obj[fieldObj.field]) obj[fieldObj.field] = { title: fieldObj.title, type: fieldObj.type || "C", hidden: false } } } this.setColType = function (col) { var t, field; field = clearField(col.field); if (this.datasource && (t = this.datasource.getType(field)) != null) { col.type = t; } else { col.type = ZtVWeb.getTypeFromPict(col.picture); } if (col.type == 'D' && (EmptyString(col.picture) || col.picture == null)) { col.picture = ZtVWeb.defaultDatePict; } if (col.type == 'T' && (EmptyString(col.picture) || col.picture == null)) { col.picture = ZtVWeb.defaultDateTimePict; } }; /* menu functions */ this.ShowHideFields = function() { var vobj = this.GetCurrentPivot(); if( vobj && vobj.ShowHideFields) vobj.ShowHideFields(); this.CloseMenus(); var isextended = this.IsOpenUiDragDrop(); var toolbar = this.GetCurrentToolbar(); if( toolbar ) { toolbar.UpdateItem('expandreduce', { action:function() { _this.ShowHideFields(); }, title: isextended ? FormatMsg('PIVOT_HIDE_FIELDS') : FormatMsg('PIVOT_SHOW_FIELDS'), tooltip: isextended ? FormatMsg('PIVOT_HIDE_FIELDS') : FormatMsg('PIVOT_SHOW_FIELDS'), image:isextended?(SPTheme.portalZoomReduceImage||{fontFamily:'icons8_win10', value: "", size: "20px"}): (SPTheme.portalZoomExpandImage||{ fontFamily:'icons8_win10', value: "", size: "20px"}) }); } var menu = this.GetCurrentMenu() if( menu ) { menu.UpdateItem('expandreduce', { action:function() { _this.ShowHideFields(); }, title: isextended ? FormatMsg('PIVOT_HIDE_FIELDS') : FormatMsg('PIVOT_SHOW_FIELDS'), tooltip: isextended ? FormatMsg('PIVOT_HIDE_FIELDS') : FormatMsg('PIVOT_SHOW_FIELDS'), image:isextended?(SPTheme.portalZoomReduceImage||{fontFamily:'icons8_win10', value: "", size: "20px"}): (SPTheme.portalZoomExpandImage||{ fontFamily:'icons8_win10', value: "", size: "20px"}) }); } } this.IsOpenUiDragDrop = function() { var vobj = this.GetCurrentPivot(); if( vobj && vobj.IsOpenUiDragDrop) { if(reload ) return vobj.IsOpenUiDragDrop() && CharToBool(_this.__cfgObj.configuration.uiStartOpen+""); else return vobj.IsOpenUiDragDrop() } else return false; } this._initAfterReload = function() { reload = false; var pv = this.GetCurrentPivot(); if (pv) { if( viewHeaderFromConfig ) { var dMenu = pv.ctrl.getElementsByClassName('SPPortalZoomBaseMenu'); if( dMenu && dMenu[0]) dMenu[0].style.display = 'none'; } } var isextended = this.IsOpenUiDragDrop(); var toolbar = this.GetCurrentToolbar(); if (toolbar && toolbar.IsInToolbar('expandreduce') || toolbar.IsInMenu('expandreduce')) toolbar.UpdateItem('expandreduce', { title: isextended ? FormatMsg('PIVOT_HIDE_FIELDS') : FormatMsg('PIVOT_SHOW_FIELDS'), tooltip: isextended ? FormatMsg('PIVOT_HIDE_FIELDS') : FormatMsg('PIVOT_SHOW_FIELDS'), image:isextended?(SPTheme.portalZoomReduceImage||{fontFamily:'icons8_win10', value: "", size: "20px"}): (SPTheme.portalZoomExpandImage||{ fontFamily:'icons8_win10', value: "", size: "20px"}) }); if (viewHeaderFromConfig && this.hasZoomtitlesID('updateShowHideFieldsButton')) { this.getZoomtitlesRefsByProperty('updateShowHideFieldsButton', function(portlet) { portlet.updateShowHideFieldsButton(); }); } } this.GridPivot_Rendered = function () { if( reload == true) { if (this.GridPivot.uiDragDrop && CharToBool(_this.__cfgObj.configuration.uiStartOpen+"")) this.GridPivot.ShowHideFields(); this.GridPivot.pvUpdateFiltersDiv(); } this._initAfterReload() } this.Chart_Rendered = function () { if( document.getElementById(this.Chart.Ctrl.id + "_ztchart" + "_playMultiDimensional") ) document.getElementById(this.Chart.Ctrl.id + "_ztchart" + "_playMultiDimensional").style.display = 'none'; this.Chart.__forceNewSize = true; if (reload) { if (this.Chart.vpvPivotUI && this.Chart.vpvPivotUI._initOpts.uiDragDrop && CharToBool(_this.__cfgObj.configuration.uiStartOpen+"")) this.Chart.ShowHideFields(); } this._initAfterReload(); this.Chart._updateFiltersDiv(); var mydiv; //navbar tabs var combo = document.getElementById(this.Chart.ctrlid + '_ztchart_comboCursor'); if( combo ) { combo.parentNode.style.display = 'none'; var container = document.getElementById(this.Chart.ctrlid + '_ztchart_divchartcontainer'); var nav = document.getElementById(this.Chart.ctrlid + '_chartTabsNavBar'); var div; if( !nav ) { mydiv = document.createElement('div'); mydiv.setAttribute('id', this.Chart.ctrlid + '_chartTabsNavBar'); mydiv.style.margin = '1px 0 0 0'; nav = mydiv; } if( document.getElementById(this.Chart.Ctrl.id + "_ztchart" + "_menuBar") ) { var referenceNode = document.getElementById(this.Chart.Ctrl.id + "_ztchart" + "_menuBar"); container.insertBefore(nav, referenceNode.nextSibling); } else { container.prepend(nav); } nav.innerHTML = ""; div = document.createElement("div"); div.id = this.formid +'TabStrip'; nav.appendChild(div); var js = {}; js.name = 'TabStrip'; js.ctrlid = this.formid +'TabStrip' js.x = 0; js.y = 0; js.w = 100; js.h = 24; js.expandcollapse = true; var zt = new ZtVWeb.TabStripControl(this, js); zt.addToForm(this, zt) this[js.name] = zt; //zt.setCtrlPos(zt.Ctrl, js.x, js.y, js.w, js.h, js.anchor, this.Chart.Ctrl.offsetWidth, this.Chart.Ctrl.offsetHeight,false,false); var z, c , selection; var pt = '', f, sp, exp; for(z=0; z 0 ) { var l = [], i; l.push( 'Root' ); for( i=0; i=index; j-- ) { __this.Chart.vpvDrillObj.rows.pop(); draw = true; } if( draw ) { __this.Chart.pvConfigureDraw(); __this.Chart.pvDrawPivotData(); } __this.refresh_menu.CloseMenu(); } var confObj = {}; confObj.color = '#357FC4';//confObj.css_class = 'breadcrumb'; confObj.fnc = fnc; this.Chart.FillFixedBreadcrumb(l, confObj) } // if( combo ) { var item = {}; item.multidimCurrentKey = combo.value; var childrend = [], childrenu = []; childrend = childrend.concat(this._makeDrillColumnsMenuChildren_down(item)) childrenu = childrenu.concat(this._makeDrillColumnsMenuChildren_up()) if( childrend.length > 0 || childrenu.length > 0 ) { if( document.getElementById(this.Chart.Ctrl.id + "_ztchart" + "_menuBar") ) document.getElementById(this.Chart.Ctrl.id + "_ztchart" + "_menuBar").style.display = 'block'; if( document.getElementById(this.Chart.Ctrl.id + "_ztchart" + "_menu") ) document.getElementById(this.Chart.Ctrl.id + "_ztchart" + "_menu").style.display = 'block'; var menuCtrl = this.Chart.GetMenuCtrl(); if( childrend.length > 0 ) { menuCtrl.Append({ title:FormatMsg('MSG_DRILL_DOWN'), tooltip:FormatMsg('MSG_DRILL_DOWN'), children:childrend, id:'actions_down' }); } if( childrenu.length > 0 ) { menuCtrl.Append({ title:FormatMsg('MSG_DRILL_UP'), tooltip:FormatMsg('MSG_DRILL_UP'), children:childrenu, id:'actions_up' }); } } } } this.CloseMenus = function() { var menuCtrl = this.GetCurrentMenu(); if( menuCtrl ) menuCtrl.CloseMenu(); this.refresh_menu.CloseMenu(); } this.TabStrip_Click = function(tabname) { var combo = document.getElementById(this.Chart.ctrlid + '_ztchart_comboCursor'); if( combo ) { var z, c for(z=0; z 2 ) { this.ChartB.cursorType = "combo"; } else { this.ChartB.cursorType = "none"; } } /* ------- */ this.ChartB.__forceNewSize = true; this.ChartB.ctrl.style.bottom = '50%'; this.GridPivotB.ctrl.style.top = '55%'; if( (reload == true) && this.GridPivotB.uiDragDrop && CharToBool(_this.__cfgObj.configuration.uiStartOpen+"")) { this.GridPivotB.ShowHideFields(); } this._initAfterReload(); this.StaticDataProviderB.FillExtData(cData.Fields, cData.Data); } this.TabStripB_Click = function(tabname) { var combo = document.getElementById(this.ChartB.ctrlid + '_ztchart_comboCursor'); if( combo ) { var z, c for(z=0; z0) { var img,lConfAct,ii; for (ii=0; ii -1 || links.indexOf('_portlet.jsp') > -1) { opts += ',status=no,toolbar=no,menubar=no,location=no'; } window.open(links, '_blank', 'scrollbars=yes,resizable=yes' + opts); } } } } this.ChangeConfiguration = function (i) { this.LinkedConfiguration(this.__cfgObj.linkedConfs[i].configname); } this.LinkedConfiguration = function (newcfg, forceLoad) { var i; if (this.menu_versioni) this.menu_versioni.CloseMenu(); var type = ''; for( i=0; i 0 ) { url+='&pParent='+_this.formid; } else { url+='?pParent='+_this.formid; } var _dataobj = this.GetCurrentDataObj(); a.href = ZtVWeb.makeStdLink(url,_dataobj.curRec-1,this.dataobj,null,this,true); a.click(); document.body.removeChild(a); } catch(e) { alert('Error on changing configuration'); console.log(e) } return; } /* var filters=[],_filters = this.GetCurrentPivot().Filters; for (i=0; i<_filters.length; i++){ f = JSON.parse(JSON.stringify(_filters[i])); if(!f.fixed) f.userFilter = true; filters.push(f); } function setFiltersAndOrderby() { var i; var cGrid = this.GetCurrentPivot(); if (!Empty(filters)){ if (Empty(cGrid.Filters)) cGrid.Filters = filters; else { for (i=0; i 0 ) { cnf.ConfigName += "_"+cnf.User } else if( cnf.Group > 0 ) { cnf.ConfigName += "_g"+cnf.Group } return cnf; } this.GetReload = function () { return reload; } this.LoadConfiguration = function (newcfg, keepFltrOrderby, callbackBeforeQuery, forceLoad) { if (this.ConfigName.Value() == newcfg && !forceLoad) { //se ricarico la stessa configurazione non faccio nulla return; } var _dataobj = this.GetCurrentDataObj(); this.CloseMenus(); this.ConfigName.Value(newcfg); this._resetCtrl(); reload = true; this.GridPivot.SetDataProvider(null); this.GridPivotB.SetDataProvider(null); this.Chart.SetDataProvider(null); _dataobj.rowsconsumers = []; _listData = []; _dataobj.ParseParameters(); this.startVPV(); this.SearchZoomTitle(); if (typeof (callbackBeforeQuery)=='function') { callbackBeforeQuery.call(this); } this.vpv_Load(); this.SetZoomTitle(); this.SetToolbarBox(); this.$entity$_updateConfiguration.Emit(); } this._resetCtrl = function () { this.GridPivot._resetCtrl(); this.GridPivotB._resetCtrl(); // chart } this.GridPivot_UIDragDrop = function() { if (this.configModeSecurity>0 ) { _saveConfig = true; if (viewHeaderFromConfig && this.hasZoomtitlesID('SetSaveConfig')) { this.getZoomtitlesRefsByProperty('SetSaveConfig', function(portlet){ portlet.SetSaveConfig(); }, this); } else { var toolbar = this.GetCurrentToolbar(); if( toolbar ) { if( !toolbar.IsInToolbar('save') && !toolbar.IsInMenu('save') ) { toolbar.Append({ id:'save', title: FormatMsg('PIVOT_SAVE_CONFIG'), tooltip: FormatMsg('PIVOT_SAVE_CONFIG'), action:function(){ _this.SaveVersion()}, image:{ fontFamily:'icons8_win10', value: "", size: "20px"} },0) } } } } this.CloseMenus(); } this.GridPivotB_UIDragDrop = function() { this.GridPivot_UIDragDrop(); } this.Chart_UIDragDrop = function() { this.GridPivot_UIDragDrop(); } this.SaveVersion = function() { this.InnerFormId.Value(this.formid) this.custom.Value(this.__cfgObj.configuration.custom) this.versionName.Value(this.GetCurrentVersion()); if( this.__cfgObj.configuration.user_group == 'User' ) this.userCode.Value(this.__cfgObj.configuration.user); else if( this.__cfgObj.configuration.user_group == 'Group' ) this.groupCode.Value(this.__cfgObj.configuration.group); this.SPLinkPivotVersion.Link() } this.SaveConfigVersion = function(versionName, custom, usableBy, userCode, groupCode) { function retrieveOthDimensions (pivotObj) { var ret = {}; ret.odimensions = []; ret.omeasures = []; var rows = []; var columns = []; var measures = []; var odimensions = []; var omeasures = []; var idimensions = []; var imeasures = []; var i, alias; for(i=0; i= 0) continue; if( columns.indexOf(alias) >= 0) continue; if( measures.indexOf(alias) >= 0) continue; if( idimensions.indexOf(alias) >= 0) { _copy = JSON.parse(JSON.stringify(pivotObj.opts.fields[i])); if( _dobj.Fields_map[alias] != undefined ) _copy.alias = _dobj.Fields_Case[_dobj.Fields_map[alias]]; ret.odimensions.push(_copy); } else if( odimensions.indexOf(alias) >= 0) { _copy = JSON.parse(JSON.stringify(pivotObj.opts.fields[i])); if( _dobj.Fields_map[alias] != undefined ) _copy.alias = _dobj.Fields_Case[_dobj.Fields_map[alias]]; ret.odimensions.push(_copy); } else if( imeasures.indexOf(alias) >= 0) { _copy = JSON.parse(JSON.stringify(pivotObj.opts.fields[i])); if( _dobj.Fields_map[alias] != undefined ) _copy.alias = _dobj.Fields_Case[_dobj.Fields_map[alias]]; ret.omeasures.push(_copy); } else if( omeasures.indexOf(alias) >= 0) { _copy = JSON.parse(JSON.stringify(pivotObj.opts.fields[i])); if( _dobj.Fields_map[alias] != undefined ) _copy.alias = _dobj.Fields_Case[_dobj.Fields_map[alias]]; ret.omeasures.push(_copy); } } return ret; } function _convertFields( arL ) { var j, o, a; var ret = []; for( j=0; j 0) || (this.__cfgObj.odimensions.length > 0)) { _copy.odimensions = _convertFields(od.odimensions); _copy.omeasures = _convertFields(od.omeasures); } } else { _copy.configuration.othDimMeas = 'true'; _copy.odimensions = _convertFields(od.odimensions); _copy.omeasures = _convertFields(od.omeasures); } var customizationParms = "&Custom="+( custom ? custom : 'false'); if (usableBy=='user') customizationParms += "&NewUser=" + userCode; else if (usableBy=='group') customizationParms += "&NewGroup=" + groupCode; var offlinemode = false; var url = new JSURL("../servlet/SPVPVProxy?m_cAction=save"+ "&ConfigName="+cconfig+ "&vqr="+URLenc(_copy.configuration.query)+ "&obj="+ URLenc(JSON.stringify(_copy)) + "&offlinemode="+URLenc(offlinemode) + customizationParms+ "&fromFullEditor=false" + "&m_cID=" + this.savinghashparameter ,true); var output=url.Response(); try { if( !Empty(output) ) { output = JSON.parse(output); } else { output = {}; output.OK= true; } this.ConfigName.Value(cconfig) if ( !this.__cfgObj.configuration.Versions ) this.__cfgObj.configuration.Versions = []; if(( versionName != 'default' ) && (this.__cfgObj.configuration.Versions.indexOf(versionName) <0 )) this.__cfgObj.configuration.Versions.push(versionName) this._UpdateVersionsSubMenu(this.menu_versioni) if( this.GetCurrentMenu() )this._UpdateVersionsSubMenu(this.GetCurrentMenu()) this.SetZoomTitle(); } catch (e) { output.ERROR=true; output.MESSAGE='Error on save'; } } } //menu version this.GetVersionsImage=function() { if (this.menu_versioni) { var versionColumn = this.menu_versioni.GetItem("versioni"); if ( !ZtVWeb.IsMobile() && this.configModeSecurity>0 || ( this.__cfgObj && this.__cfgObj.configuration && this.__cfgObj.configuration.Versions && this.__cfgObj.configuration.Versions.length>0 ) ) { if (!versionColumn) { this.menu_versioni.Append({ id: 'versioni' },null,1); } else { this.menu_versioni.Clean('versioni'); } if (this.configModeSecurity>0 && !ZtVWeb.IsMobile()){ /*this.menu_versioni.Append({ id : 'smarteditor' , title : this.Grid.Translations['Edit_Version']||'Modifica versione' , tooltip : this.Grid.Translations['Edit_Version']||'Modifica versione' , image : SPTheme.portalZoomVersionsImage||'' , action : 'javascript:' + this.formid+".OpenSmartEditor()" },'versioni',0);*/ if (this.configModeSecurity==2) { this.menu_versioni.Append({ id : 'visualpivoteditor' , title : FormatMsg('MSG_FULL_EDITOR') , tooltip : FormatMsg('MSG_FULL_EDITOR') , image : SPTheme.portalZoomEditorImage||'' , action : 'javascript:' + this.formid+".OpenEditor()" },'versioni',1); } } this._UpdateVersionsSubMenu(this.menu_versioni); var lbl = SPTheme.portalZoomVersionList||'../visualweb/images/zoom_versions_list.png'; return lbl; } else if (versionColumn) { this.menu_versioni.Remove('versioni'); } return ""; } else { return ""; } } this.GetVersionsLabel=function() { // var version=''; var frag = document.createDocumentFragment(); if (this.menu_versioni) { var img = this.GetVersionsImage(); if (typeof(img)=='string' && img!='') { if (SPTheme.portalZoomVersionItemOnLabel) { var lblVersion = Strtran(this.GetCurrentVersion(), '_', ' '); var span2 = document.createElement("span"); span2.className = "SPPortalZoom_currentversion"; span2.innerText = (lblVersion == 'default' ? '' : lblVersion); frag.appendChild(span2); // version = '' + (lblVersion=='default'?'':lblVersion) + '' + version; } /** Formato JSON */ if (Left(img,1)=='{' && Right(img,1)=='}') { img = JSON.parse(img); //lo stile tutto nel css generato var span = document.createElement("span"); span.className = "SPPortalZoom_versionhandler"; frag.appendChild(span); LibJavascript.Events.addEvent(span, "click", function(e){e.stopPropagation();this.menu_versioni.OpenMenu(span);}.bind(this)); span.innerText = String.fromCharCode(img.Char); // version = ""+String.fromCharCode(img.Char)+""; } else { var image = document.createElement("img"); image.className = "SPPortalZoom_versionhandlerimage"; image.src = img; LibJavascript.Events.addEvent(image, "click", function(e){e.stopPropagation();this.menu_versioni.OpenMenu(image);}.bind(this)); frag.appendChild(image); // version = " "; } } } return frag; } this.ChangeVersion=function(i,forceLoad) { var vers = (i>-1 ? this.__cfgObj.configuration.Versions[i] : ""); this.CloseMenus(); if (this.menu_versioni) this.menu_versioni.CloseMenu(); this.LoadVersion(vers,forceLoad); } this.LoadVersion=function(versionName,forceLoad) { var baseCfgName = this.ConfigName.Value(); if (Empty(baseCfgName)) { baseCfgName = "default"; } var idx = baseCfgName.indexOf('__'); if (idx>-1) { baseCfgName = baseCfgName.substring(0,idx); } if (versionName=='default' || Empty(versionName)) { this.LinkedConfiguration(baseCfgName,forceLoad); } else { this.LinkedConfiguration(baseCfgName+ '__' + versionName,forceLoad); } } this.SetCaption=function(new_Caption){ if (advanced_suggester_active) { return false; // in caso di advanced_suggester non setto nessuna caption } var version = this.GetVersionsLabel(); var cpt; var addVersion = true; if (!EmptyString(new_Caption)) { caption=new_Caption; this.label.Value(ToHTML(new_Caption)); if (this.label2){ this.label2.Value(ToHTML(new_Caption)); } this.ShowCaption(); // this.Grid.topposition=1; // this.Grid.Ctrl.style.top=Max(1,this.Grid.Ctrl.offsetTop)+'px'; } else if(!EmptyString(this.Caption.Value())) { cpt=this.Caption.Value(); caption=cpt; this.label.Value(ToHTML(cpt)); if (this.label2){ this.label2.Value(ToHTML(cpt)); } this.ShowCaption(); } else if(this.__cfgObj && this.__cfgObj.configuration && !EmptyString(this.__cfgObj.configuration.caption) ) { cpt=this.__cfgObj.configuration.caption_trad || this.__cfgObj.configuration.caption; caption=cpt; this.label.Value(cpt); if (this.label2){ this.label2.Value(cpt); } this.ShowCaption(); } else { addVersion = false; caption=''; if (!viewToolbarFromConfig) this.HideCaption(); else this.ShowCaption(); } if( addVersion && version ){ this.label.Ctrltbl.appendChild(version); if (this.label2){ this.label.Ctrltbl.appendChild(version); } } this.CaptionChanged(); } this._UpdateVersionsSubMenu=function(menu) { if (menu) { this.menu_used = menu; } if (this.__cfgObj && this.__cfgObj.configuration && this.__cfgObj.configuration.Versions) { this.__cfgObj.configuration.Versions=this.__cfgObj.configuration.Versions.sort(); var versions = this.__cfgObj.configuration.Versions; var versionname = 'default'; var item = {id:'current_version',children:[],maxsubitems:0, alwaysVisible:true}; if (versions.length>0) { versionname = this.GetCurrentVersion(); } item.children.push({ title : 'default' , action : 'javascript:'+this.formid+'.ChangeVersion('+(-1)+')' , highlight : versionname==='default' }); for (var i=0;i 0 || obj.configuration.cachelevel2 > 0) this.useMDataLevel = true; else this.useMDataLevel = false; _dataobj = this.GetCurrentDataObj(); _dataobj.ChangeQuery(obj.configuration.query); /*------------recupera lista campi query*/ var cmdHash, sqlcmd; if( _dataobj._iqueries) { sqlcmd = _dataobj._iqueries[0]; cmdHash = _dataobj.cmdHash[0]; } else { sqlcmd = _dataobj.cmd; cmdHash = _dataobj.cmdHash; } var qFilter = []; qFilter.push({"ED" : true}) var addr = '../servlet/SQLDataProviderServer' + '?rows=100' + '&startrow=0' + '&count=false' + '&cmdhash=' + cmdHash + '&sqlcmd=' + URLenc(sqlcmd) + '&_sqlcmd='+ URLenc(obj.configuration.query) + '&isclientdb=false' + '&queryfilter=' + URLenc(JSON.stringify(qFilter)) ; var AllField = new JSURL(addr, true); AllField = AllField.Response(); var JSONObj = JSON.parse(AllField); if (JSONObj.ERROR) { if(!this.dispatchEvent('Error',JSONObj.ERROR)){ alert(JSONObj.ERROR); } return; } var _fields = JSONObj.Fields; var _data = JSONObj.Data; var queryprop = _data[_data.length - 1].split(','); var _fieldstypearray = queryprop[1].split(''); var i; var fields = [], lfields = [], types = []; for (i = 0; i < _fields.length; i++) { fields.push(_fields[i]); types.push(_fieldstypearray[i]); lfields.push(_fields[i].toLowerCase()); } /*------------*/ switch(vMode) { case "both": this.ZtTabs.Select('page3'); this.configurePivot(obj, this.GridPivotB); if( _listData.indexOf(this.ChartB.name + this.StaticDataProviderB.name) < 0 ) { this.ChartB.SetDataProvider(this.StaticDataProviderB); _listData.push(this.ChartB.name + this.StaticDataProviderB.name) } this.ChartB.EnableMenu(); break; case "chart": this.ZtTabs.Select('page2') this.configureChart(obj); break; default: // grid - pivot this.ZtTabs.Select('page1') this.configurePivot(obj, this.GridPivot); break; } _dataobj.Fields = lfields; _dataobj.Fields_Case = fields; _dataobj.FieldsCase_map = {}; _dataobj.Fields_map = {}; for( i=0; i 0 ) { for( i=0; i<_loadFixedFilters.length; i++ ) { obj={}; var field = _loadFixedFilters[i].field.toLowerCase(); obj[field]=_loadFixedFilters[i].expression; obj[field+'_op']=_loadFixedFilters[i].operator; obj[field+'_type']=_loadFixedFilters[i].type; obj[field+'_picture']=_loadFixedFilters[i].picture; obj[field+'_fixed']=false; obj[field+'_visible']=true; obj[field+'_queryParm']=''; ret.push(obj) } } _loadFixedFilters = null; if (CharToBool(this.__cfgObj.configuration.applyAdvancedFilter)) { this.SetInnerFilters(ret, false, true); this.ApplyAdvancedFilter(); } else if (CharToBool(this.__cfgObj.configuration.openVdmBeforeQuery)) { this.SetInnerFilters(ret, false, true); this.$entity$_updateFilters.setParms(); this.ShowVdmMask(); } else { this.SetInnerFilters(ret, false); } } this.cssFncCompare = function(value, type, value1, value2, fcolor, bcolor, fontName, fontStyle, fontSize) { var v1 = parseFloat(value1+""); var v2 = parseFloat(value2+""); var v = parseFloat(value+""); //between,notbetween,equals,notequals,more,less,moreequals,lessequals var ret = {}; if( !Empty(fcolor) ) ret.color = fcolor; if( !Empty(bcolor) ) ret.backgroundColor = bcolor; if( !Empty(fontName) ) ret.fontFamily = fontName; if( !Empty(fontStyle) ) { if (fontStyle.indexOf('italic') >= 0) ret.fontStyle = 'italic'; if (fontStyle.indexOf('bold') >= 0) ret.fontWeight = 'bold'; } if( !Empty(fontSize) ) ret.fontSize = fontSize + 'px'; var retobj = false; switch(type) { case "between": if( v>=v1 && v<=v2) retobj = true; break; case "notbetween": if(!( v>=v1 && v<=v2)) retobj = true; break; case "equals": if( v == v1 ) retobj = true; break; case "notequals": if( v != v1 ) retobj = true; break; case "more": if( v > v1 ) retobj = true; break; case "less": if( v < v1 ) retobj = true; break; case "moreequals": if( v >= v1 ) retobj = true; break; case "lessequals": if( v <= v1 ) retobj = true; break; } if( retobj ) { return ret; } } this.cssFnc2Scale = function(value, value1, value2, bcolor1, bcolor2) { var v1 = parseFloat(value1+""); var v2 = parseFloat(value2+""); var v = parseFloat(value+""); var ranges = []; if(Empty(bcolor1)) bcolor1= '#ffffff' if(Empty(bcolor2)) bcolor2= '#ffffff' ranges.push( {color: bcolor1, value:v1}) ranges.push( {color: bcolor2, value:v2}) var color = getMultichromaticRangeColorPV(ranges, v); //ztchartfunctions if( color && ( (color[0]+color[1]+color[2]) > 0)) { return {backgroundColor : 'rgba(' + color[0] +', ' + color[1] + ', ' + color[2] + ', ' + color[3]/255 + ')'} } } this.cssFnc3Scale = function(value, value1, value2, value3, bcolor1, bcolor2, bcolor3) { var v1 = parseFloat(value1+""); var v2 = parseFloat(value2+""); var v3 = parseFloat(value3+""); var v = parseFloat(value+""); var ranges = []; if(Empty(bcolor1)) bcolor1= '#ffffff' if(Empty(bcolor2)) bcolor2= '#ffffff' if(Empty(bcolor3)) bcolor3= '#ffffff' ranges.push( {color: bcolor1, value:v1}) ranges.push( {color: bcolor2, value:v2}) ranges.push( {color: bcolor3, value:v3}) var color = getMultichromaticRangeColorPV(ranges, v); //ztchartfunctions if( color && ( (color[0]+color[1]+color[2]) > 0)) { return {backgroundColor : 'rgba(' + color[0] +', ' + color[1] + ', ' + color[2] + ', ' + color[3]/255 + ')'} } } this.cssFncApplyChart = function( item ) { var p= {}; if( item.isChangeDataOrder ) { p.measure = item.keyF } else { p.measure = item.valueField; } var ret = _this.cssFncApply(item.value, p); if( ret ) return ret; else return item.color; } this.cssFncApply = function( value, pivotKeys ) { if( !pivotKeys || !pivotKeys.measure ) return; var measure = pivotKeys.measure.toLowerCase() ; var mo = this['myObj_'+measure]; var i; if( !mo) { for( i=0; i=0; j--) { cf = mo.condformats[j]; ret = null; if( cf.condType == 'compare' ) { ret = this.cssFncCompare(value, cf.vCompareType, cf.vCompare1, cf.vCompare2, cf.vFontColor, cf.vBckColor, cf.vFontName, cf.vFontStyle, cf.vFontSize) } else if( cf.condType == '2scale' ) { ret = this.cssFnc2Scale(value, cf.sCompare1, cf.sCompare2, cf.sBckColor1, cf.sBckColor2) } else if( cf.condType == '3scale' ) { ret = this.cssFnc3Scale(value, cf.sCompare1, cf.sCompare2, cf.sCompare3, cf.sBckColor1, cf.sBckColor2, cf.sBckColor3) } if( ret ) { if( toret == null ) toret = {}; toret = Object.assign( toret, ret); if( cf.stopApply == true ) { j = -1; } } } } return toret; } this.configurePivot = function(obj, GridPivotCtrl) { var _dataobj = this.GetCurrentDataObj(); if( _listData.indexOf(GridPivotCtrl.name + _dataobj.name) < 0 ) { GridPivotCtrl.SetDataProvider(_dataobj); _listData.push(GridPivotCtrl.name + _dataobj.name) } function makeFncCondFormat(measure) { if( Empty(measure.condformats) ) return ""; else { return "function:cssFncApply"; } } var i, cols = obj.cols ? obj.cols : [], rows = obj.rows ? obj.rows : [], msrs = obj.measures ? obj.measures : [], omsrs = obj.omeasures ? obj.omeasures : [], odims = obj.odimensions ? obj.odimensions : []; for (i = 0; i< cols.length; i++) { GridPivotCtrl.AddColumnField({ 'field': cols[i].field.toLowerCase(), 'title': cols[i].descrs, 'key': cols[i].keys, 'picture': cols[i].pictures, 'sorting':{'order': cols[i].sorts, 'field': cols[i].sortsfields} }) } for (i = 0; i< rows.length; i++) { GridPivotCtrl.AddRowField({ 'field': rows[i].field.toLowerCase(), 'title': rows[i].descrs, 'key': rows[i].keys, 'picture': rows[i].pictures, 'sorting':{'order': rows[i].sorts, 'field': rows[i].sortsfields} }) } for (i = 0; i< odims.length; i++) { GridPivotCtrl.AddOtherDimension({ 'field': odims[i].field.toLowerCase(), 'title': odims[i].descrs, 'key': odims[i].keys, 'picture': odims[i].pictures, 'sorting':{'order': odims[i].sorts, 'field': odims[i].sortsfields} }) } for (i = 0; i< msrs.length; i++) { GridPivotCtrl.AddMeasureField({ 'field': msrs[i].field.toLowerCase(), 'title': msrs[i].descrs, 'format_func': makeFncCondFormat(msrs[i]), 'picture': msrs[i].pictures }) this['myObj_'+ msrs[i].field.toLowerCase()] = msrs[i]; } for (i = 0; i< omsrs.length; i++) { GridPivotCtrl.AddOtherMeasure({ 'field': omsrs[i].field.toLowerCase(), 'title': omsrs[i].descrs, 'format_func': makeFncCondFormat(omsrs[i]), 'picture': omsrs[i].pictures }) this['myObj_'+ omsrs[i].field.toLowerCase()] = omsrs[i]; } GridPivotCtrl.EnableMenu(); GridPivotCtrl.SetMeasuresOptions(obj.configuration.measuresoncolumn, obj.configuration.hidemeasures, obj.configuration.measurestitle); GridPivotCtrl.EnableSortOnColumns(obj.configuration.columnsort); GridPivotCtrl.EnableSortOnRows(obj.configuration.rowsort); GridPivotCtrl.SetGrandTotals(obj.configuration.bigtotaltext, obj.configuration.rowbigtotal, obj.configuration.columnbigtotal); GridPivotCtrl.SetSubTotals(obj.configuration.subtotaltext, obj.configuration.rowsubtotal, obj.configuration.columnsubtotal); GridPivotCtrl.SetUIDragAndDrop(obj.configuration.uiDragDrop); GridPivotCtrl.SetOtherDimensions(obj.configuration.othDimMeas); GridPivotCtrl.SetPrintMode(obj.configuration.PrintMode, obj.configuration.ReportName, obj.configuration.print_outputf, obj.configuration.print_option); GridPivotCtrl.SetPrintOptions(obj.configuration.print_model, obj.configuration.print_title, obj.configuration.print_hideexport, obj.configuration.print_hidesettings, obj.configuration.print_grep, obj.configuration.print_max); GridPivotCtrl.SetCSS(this.theme, obj.configuration.css, obj.configuration.css_class); GridPivotCtrl.SetFilter(!securityOpts.hidePivotFilters && CharToBool(obj.configuration.canFilter+"")); GridPivotCtrl.SetApplyFilter(true); // in caso di filtri fissi vanno applicati ma non modificabili if( _dataobj.ChangeConfigPivot ) { _dataobj.ChangeConfigPivot(GridPivotCtrl, this.__cfgObj.configuration.cachelevel, this.__cfgObj.configuration.cachelevel2) } } this.configureChart = function(obj) { this.GridPivot._setThis(this.Chart); this.Chart.rangefunc = "function:cssFncApplyChart" this.Chart.Filters = []; this.Chart.vpvPivotUI = null; this.Chart.ztVPivotUI = null; this.Chart.vpvDivTabs = true; // es. config default //var defaultChart = Empty(obj.configuration.chartDef); this.Chart.SetChartDef(obj.configuration.chartDef); // lo fisso io in caso di default? this.Chart.SetUrlTooltip('../jsp-system/SPChartTooltipsR_portlet.jsp','default'); // this.Chart.SetOtherChartTypes('all') - wip da opzionare this.Chart.EnableMenu(); if( _listData.indexOf(this.Chart.name + this.StaticDataProviderB.name) < 0 ) { this.Chart.SetDataProvider(this.StaticDataProviderB); _listData.push(this.Chart.name + this.StaticDataProviderB.name) } LibJavascript.RequireLibrary(ZtVWeb.SPWebRootURL + '/ZtPivotData.js'); LibJavascript.RequireLibrary(ZtVWeb.SPWebRootURL + '/ZtPivotUI.js'); this.theme, obj.configuration.css var _cssFiles = []; if(!Empty(obj.configuration.css)) { _cssFiles.push(obj.configuration.css); _cssFiles.push(this.theme+ '/' +obj.configuration.css); _cssFiles.push('styles/' + obj.configuration.css); _cssFiles.push(this.theme+ '/styles/' +obj.configuration.css); } else { _cssFiles.push('styles/GridPivotObj.css'); _cssFiles.push(this.theme+ '/' +'styles/GridPivotObj.css'); } var lfiles = _cssFiles.toString(); var URL = new ZtVWeb.JSURL(ZtVWeb.SPWebRootURL + '/servlet/SPPrxycizerServlet?files=' + URLenc(lfiles), true ); var url = URL.SetUnwrapMsg(false); var output = url.Response(); if(!output.match("ACCESS DENIED")){ _cssFiles = output.split(','); } this.Chart._cssFiles = _cssFiles; } this.QueryParmsFunc = function(sep) { var _dataobj = this.GetCurrentDataObj(); sep = sep || '&'; var res = ''; if (Empty(_dataobj.parms)) { return res; } var params = _dataobj.parms.split(','); for (var i = 0; i < params.length; i++) { if( this[params[i]] ) { res += params[i] + '=' + URLenc(ZtVWeb.formatAsPrm(this[params[i]].Value())) + sep; } } return res; }; this.QueryParmsObj = function() { var _dataobj = this.GetCurrentDataObj(); var res = {}; if (Empty(_dataobj.parms)) { return res; } var params = _dataobj.parms.split(','); for (var i = 0; i < params.length; i++) { if( this[params[i]] ) { res[params[i]] = this[params[i]].Value(); } } return res; }; this.GridPivot_Click = function(event, item){ this._Link(item); } this.GridPivotB_Click = function(event, item){ this._Link(item); } this.ChartB_Click = function(event, item){ var pivotItem = this.GridPivotB.ConvertKeysToItem(item.keyF, item.multidimCurrentKey, item.valueField, item.value); this._Link(pivotItem); } this._Link = function(item) { if (Empty(this.__cfgObj.configuration.portletsrc)) return; var _dataobj = this.GetCurrentDataObj(); var p = '', i, idx, key, pa = [], linkparms = (this.__cfgObj.configuration.linkparms || ""); if( linkparms.indexOf('jsClickItem') >= 0 ) { var zoomFilters = {}; for (idx = 0; idx < item.columns.length; idx++) { var col = item.columns[idx]; key = col.key ? col.key : col.alias; zoomFilters[key] = col.value; pa.push(key) } for (idx = 0; idx < item.rows.length; idx++) { var row = item.rows[idx]; key = row.key ? row.key : row.alias; zoomFilters[key] = row.value; pa.push(key); } this.jsClickItem.Value((JSON.stringify(zoomFilters))); } else { if( item.rows ) { for( i=0; i= 0 ) f = f || ( l.indexOf("," + s + "=") >= 0 ) if( !f) { if( !Empty(p) ) p += ','; p += s; } } } } this.SPLinker.Parameters(linkparms+','+p) this.SPLinker.Link() } this.getChartMacroType = function (type) { var mtypes = { category: [ "HBAR","HBAR3D","PYRAMID","LAYEREDBARH", "PIE","PIE3D","RING","RINGPERC", /*"TREEMAP","TREEMAPBAR","TREEMAPBARH",*/"WORDCLOUD", "HSTACKBAR","HSTACKBAR3D","VSTACKBAR","VSTACKBAR3D", "LINES","AREA","STACKEDAREA","RADARLINE","RADARAREA", "VBAR","VBAR3D","PARETO","WATERF","LAYEREDBAR", "PCOORDS", "CAL" ], measure: [ "ARCDIAL","THERMO", "LIGHTS","IMAGES", "DISPLAY","COUNTER","PADDLE" ], xyz: ["SCATTER", "BUBBLE", "ASTER", "AREABAR", "VORONOI"], geo: ["GEOMAP"], hie: ["SUNB", "SUNBSTR", "TREE", "TREESTR", "CPACK", "CPACKSTR", "FORCE", "TREEMAP","TREEMAPBAR","TREEMAPBARH","MARIMEKKO"], dep: ["MATRIX", "CHORD", "FORCESTR", "SANKEY"], classif: ["BCMATRIX"] }, mkeys = Object.keys(mtypes), found = false, rt = ""; for (var t = 0; !found && t < mkeys.length; t++) { if (mtypes[mkeys[t]].indexOf(type) >= 0) { rt = mkeys[t]; found = true; } } return rt; } this.SetReceivers = function(){ //var SET_FILTER='_zoomSetFilter', var rcvSuffix="", rcvName=this.ReceiverName.Value(); function penPusher(parmsObj) { //funzione passacarte per receiver di filtro this.$entity$_zoomSetFilter.receiveFnc(parmsObj); } if(EmptyString(rcvName)){ rcvName=this.EventName.Value(); } for(var i=0,rcvs=rcvName.split(','),l=rcvs.length; i0 || ( this.__cfgObj && this.__cfgObj.configuration && this.__cfgObj.configuration.Versions && this.__cfgObj.configuration.Versions.length>0 ) ) { if (!versionColumn) { menuCtrl.Append({ id: 'versioni' , title: FormatMsg('MSG_VERSIONS') , tooltip: FormatMsg('MSG_VERSIONS') },null,1); } else { menuCtrl.Clean('versioni'); } this._UpdateVersionsSubMenu(menuCtrl); } else if (versionColumn) { menuCtrl.Remove('versioni'); } //linked // var linkedConfs = this.__cfgObj.linkedConfs; var img; if (linkedConfs && linkedConfs.length>0) { var linkedConfColumn = menuCtrl.GetItem("linkedconfiguration"); if (!linkedConfColumn) { menuCtrl.Append({ id: 'linkedconfiguration' , title: FormatMsg('MSG_VIEWS') , tooltip: FormatMsg('MSG_VIEWS') },null,2); } else { menuCtrl.Clean('linkedconfiguration'); } for (var ii=0; ii -1) { txt = txt.replace(/\|/g, ','); txt = txt.replace(/function:/g, ''); txt = 'function:'+'window'+'.'+_this.form.formid + '.' + txt; } else if(txt.indexOf('javascript:') > -1) { txt = txt.replace(/\|/g, ','); txt = txt.replace(/javascript:/g, ''); txt = 'javascript:'+'window'+'.'+ txt; } else { txt = txt.replace(/\|/g, ','); } return txt; } function _fncGetType(alias) { var j; for( j=0; j= 0 ) continue; mobj = {}; mobj.alias = _f; mobj.desc = _f mobj.type = datasource.fieldstypearray[i]; opts.fields.push(mobj); } } } var _dataobj = this.GetCurrentDataObj(); this.Chart.pivotOptions = JSON.parse(JSON.stringify(opts)); this.Chart.pivotData = new ZtVPivotData(opts, _dataobj.Fields, _dataobj.Data); this.Chart.pivotOptions.uiDragDrop = ui; this.Chart.pivotOptions.othDimMeas = oth; this.Chart.pivotOptions.canFilter = (CharToBool("" + cfg.configuration.canFilter)) var pOpts = {}; pOpts.rows = opts.rows; pOpts.columns = opts.columns; pOpts.measures = opts.measures; pOpts.fields = opts.fields; var vpvPivotUI = {}; vpvPivotUI._initOpts = this.Chart.pivotOptions; vpvPivotUI.opts = pOpts; if( !this._wKey) this._wKey = LibJavascript.CharKeyGen(5); vpvPivotUI._wKey = this._wKey; this.Chart.Ctrl.classList.add(cfg.configuration.css_class) this.Chart.Ctrl.classList.add('drillboxer') this.Chart.Ctrl.classList.add(vpvPivotUI._wKey) this.Chart.pvSetUIDragDrop(vpvPivotUI); this.Chart.pvResetDrillDownObj(); this.Chart.pvConfigureDraw(); //console.log(this.__cfgObj.arrayFilters, this.Chart.Filters) if (!Empty(this.__cfgObj.arrayFilters)) this.SetInnerFilters(this.__cfgObj.arrayFilters, true); else this.Chart.pvDrawPivotData(); } this.Chart.getColObj = function (field) { var i; if( !this.Cols ) this.Cols = []; var allFieldsObj; if( this.Cols.length > 0 ) { allFieldsObj = this.Cols; for (i = 0; i < allFieldsObj.length; i++) { if (allFieldsObj[i].field.toLowerCase() == field.toLowerCase()) { return allFieldsObj[i]; } } } else { if( this.vpvPivotUI && this.vpvPivotUI.opts && this.vpvPivotUI.opts.fields ) { allFieldsObj = this.vpvPivotUI.opts.fields; var _index = -1; for (i = 0; i < allFieldsObj.length; i++) { if(!allFieldsObj[i].field) continue; //campo con field specificato if (allFieldsObj[i].field.toLowerCase() == field.toLowerCase()) { _index = i; } allFieldsObj[i].title = allFieldsObj[i].desc; this.Cols.push(allFieldsObj[i]); } if( _index >= 0 ) return allFieldsObj[_index]; } else { var gr = _this.GetCurrentDataObj(); if( gr && gr.Fields) { allFieldsObj = gr.Fields; for (i = 0; i < allFieldsObj.length; i++) { if(!allFieldsObj[i].field) continue; //campo con field specificato if (allFieldsObj[i].field.toLowerCase() == field.toLowerCase()) { _index = i; } allFieldsObj[i].title = allFieldsObj[i].desc; this.Cols.push(allFieldsObj[i]); } if( _index >= 0 ) return allFieldsObj[_index]; } } } return null; }; this.Chart.findFieldInCols = function (field) { var i; if( this.vpvPivotUI && this.vpvPivotUI.opts && this.vpvPivotUI.opts.fields) { var allFieldsObj = this.vpvPivotUI.opts.fields; for (i = 0; i < allFieldsObj.length; i++) { if(!allFieldsObj[i].field) continue; //campo con field specificato if (allFieldsObj[i].field.toLowerCase() == field.toLowerCase()) return i; } } return null; } this.Chart.GetFilterDivPosition = function(handler) { function _fGetAbsoluteXY(itm) { if (!itm) return {'x':0,'y':0}; var x = 0, y = 0; while (itm != null) { y += itm.offsetTop; x += itm.offsetLeft; itm = itm.offsetParent; } return {'x':x,'y':y}; } if( handler ) return _fGetAbsoluteXY(handler); //return _fGetAbsoluteXY(this.htmlFLTable); } this.Chart._rowLayer = []; this.Chart.ToggleFilterAreaByExample = this.GridPivot.ToggleFilterAreaByExample; this.Chart.filterByExampleMask_IsVisible = this.GridPivot.filterByExampleMask_IsVisible; this.Chart.MakeFilter = this.GridPivot.MakeFilter; this.Chart.AddFilter = this.GridPivot.AddFilter; this.Chart.RemoveAllFilters = this.GridPivot.RemoveAllFilters; this.Chart.RemoveFilterAlias = this.GridPivot.RemoveFilterAlias; this.Chart.CreateFilter = this.GridPivot.CreateFilter; this.Chart.RefreshFiltersBar = this.GridPivot.RefreshFiltersBar; this.Chart.operatorWithoutValue = this.GridPivot.operatorWithoutValue; this.Chart._removeFilterByIndex = this.GridPivot._removeFilterByIndex; this.Chart.ToggleFilterArea = this.GridPivot.ToggleFilterArea; this.Chart.ToggleDetailFilterByExample = this.GridPivot.ToggleDetailFilterByExample; this.Chart.AvailableOperators = this.GridPivot.AvailableOperators; this.Chart.FilterAreaEmpty = this.GridPivot.FilterAreaEmpty; this.Chart.AddEmptyFilter = this.GridPivot.AddEmptyFilter; this.Chart.MakeWrapper = this.GridPivot.MakeWrapper; this.Chart.AddNewFilter = this.GridPivot.AddNewFilter; this.Chart.SetExpressionsFilters = this.GridPivot.SetExpressionsFilters; this.Chart.RemoveFilter = this.GridPivot.RemoveFilter; this.Chart.ManageKey = this.GridPivot.ManageKey; this.Chart.SetFilters = this.GridPivot.SetFilters; this.Chart.FilterByExample_custom = this.GridPivot.FilterByExample_custom; this.Chart.FilterByExample = this.GridPivot.FilterByExample; this.Chart.collectFields = this.GridPivot.collectFields; this.Chart.DisableTempFilter = this.GridPivot.DisableTempFilter; this.Chart._OutFilterByExample = this.GridPivot._OutFilterByExample; this.Chart.HoverFilterObjByExample = this.GridPivot.HoverFilterObjByExample; this.Chart.ShowFilterObjByExample = this.GridPivot.ShowFilterObjByExample; this.Chart.uiClosed = true; this.Chart.ApplyFilter = function () { if (!this.filter_change) { for (var i = 0; i < this.Filters.length;) { var operator = typeof this.Filters[i].operator == 'string' ? this.Filters[i].operator : this.Filters[i].operator.op; if (!EmptyString(this.Filters[i].expression) || operator && this.operatorWithoutValue(operator)) { i++; } else { this._removeFilterByIndex(i, true); } } } else { this.dispatchEvent('FiltersCreated'); _this.dispatchEvent('FiltersApplied'); var filter_mask = LibJavascript.DOM.Ctrl(_this.Chart.ctrlid + '_filterByExample_mask'); filter_mask.style.display = 'none'; this.pvConfigureDraw() this.pvDrawPivotData() } this.filter_change = false; } this.Chart.pvDrawPivotData = function () { var opts = this.vpvPivotUI.opts; opts.filters = this.Filters.slice(); var rowLevel = this.vpvDrillObj.rows.length + 1; var colLevel = this.vpvDrillObj.columns.length + 1; var _f = {} var i; _f.rows = []; _f.columns = []; _f.measures = []; for( i=0; i= 0 ) { this.jsClickItem.Value((JSON.stringify(zoomFilters))); } else { var keys = Object.keys(zoomFilters) for (idx = 0; idx < keys.length; idx++) { if( !Empty(p) ) p += ','; p+= (keys[idx]) + '=' + zoomFilters[keys[idx]]; } } sp = _dataobj.parms.split(','); var s, f=false; var l = "," + linkparms + "," for( idx = 0; idx= 0 ) f = f || ( l.indexOf("," + s + "=") >= 0 ) if( !f) { if( !Empty(p) ) p += ','; p += s; } } } } this.SPLinker.Parameters(linkparms+','+p) this.SPLinker.Link() } this.Chart.vpvCItem = null; this.refresh_menu.CloseMenu(); } this.ChartDrillRow = function() { if( this.Chart.vpvCItem ) { var item = this.Chart.vpvCItem; if( item.isChangeDataOrder == true ) this.Chart.DrillRow(null, !Empty(item.valueField) ? item.valueField : item.series, item.series) else this.Chart.DrillRow(null, !Empty(item.keyF) ? item.keyF : item.category, item.category) } this.Chart.vpvCItem = null; this.refresh_menu.CloseMenu(); } this.ChartDrillUpRow = function() { if( this.Chart.vpvDrillObj.rows.length > 0 ) { this.Chart.vpvDrillObj.rows.pop(); this.Chart.pvConfigureDraw(); this.Chart.pvDrawPivotData(); } this.refresh_menu.CloseMenu(); } this.ChartDrillColumn = function() { var combo = document.getElementById(this.Chart.ctrlid + '_ztchart_comboCursor'); if( this.Chart.vpvCItem ) { var item = this.Chart.vpvCItem; combo = document.getElementById(this.Chart.ctrlid + '_ztchart_comboCursor'); var zvalue = item.multidimCurrentKey; if( combo ) { var z, c; for(z=0; z 0 ) { this.Chart.vpvDrillObj.columns.pop(); this.Chart.pvConfigureDraw(); this.Chart.pvDrawPivotData(); } this.refresh_menu.CloseMenu(); } this._makeDrillColumnsMenuChildren_up = function() { var zvalue, z, pt = '', f, sp, exp, dexp, children = [], mitem; if( this.Chart.vpvDrillObj.columns.length > 0 ) { dexp = this.Chart.vpvPivotUI.opts.columns[this.Chart.vpvDrillObj.columns.length-1].desc; pt = '' for(z=0; z this.Chart.vpvDrillObj.columns.length ) { if( this.Chart.vpvDrillObj.columns.length > 0 ) dexp = this.Chart.vpvPivotUI.opts.columns[this.Chart.vpvDrillObj.columns.length].desc; else dexp = this.Chart.vpvPivotUI.opts.columns[0].desc; pt = '' for(z=0; z this.Chart.vpvDrillObj.rows.length ) { if( this.Chart.vpvDrillObj.rows.length > 0 ) dexp = this.Chart.vpvPivotUI.opts.rows[this.Chart.vpvDrillObj.rows.length].desc; else dexp = this.Chart.vpvPivotUI.opts.rows[0].desc; mitem = {} mitem.id = 'drillRow' if( item.isChangeDataOrder == true ) mitem.title = dexp + ' : ' + (!Empty(item.series) ? item.series : item.valueField) else mitem.title = dexp + ' : ' + (!Empty(item.category) ? item.category : item.keyF) mitem.action = 'javascript:'+this.formid+'.ChartDrillRow()'; mitem.image = { fontFamily:'icons8_win10', value: "", size: "20px"} children.push(mitem) } return children; } this._makeDrillRowsMenuChildren_up = function() { var dexp, children = [], mitem; if( this.Chart.vpvDrillObj.rows.length > 0 ) { dexp = this.Chart.vpvPivotUI.opts.rows[this.Chart.vpvDrillObj.rows.length-1].desc; mitem = {} mitem.id = 'drillUpRow' mitem.title = dexp + ' : ' + (this.Chart.vpvDrillObj.rows[this.Chart.vpvDrillObj.rows.length-1].desc) mitem.action = 'javascript:'+this.formid+'.ChartDrillUpRow()'; mitem.image = { fontFamily:'icons8_win10', value: "", size: "20px"} children.push(mitem) } return children; } this.Chart_Click = function(event, item){ this.Chart.vpvCItem = item; this.refresh_menu.Ctrl.style.height=''; this.refresh_menu.Ctrl.style.width=''; this.refresh_menu.Ctrl.style.top=''; this.refresh_menu.Ctrl.style.left=''; this.refresh_menu.Clean(); var childrend = [], childrenu = [], children = []; if (!Empty(this.__cfgObj.configuration.portletsrc)) { var mitem = {} mitem.id = 'clink' mitem.title = FormatMsg('MSG_OPEN_LINK') mitem.action = 'javascript:'+this.formid+'.ChartLink()'; mitem.image = { fontFamily:'icons8_win10', value: "", size: "20px"} children.push(mitem) } childrend = childrend.concat(this._makeDrillRowsMenuChildren_down(this.Chart.vpvCItem)) childrend = childrend.concat(this._makeDrillColumnsMenuChildren_down(this.Chart.vpvCItem)) childrenu = childrenu.concat(this._makeDrillRowsMenuChildren_up()) childrenu = childrenu.concat(this._makeDrillColumnsMenuChildren_up()) if( children.length > 0 ) { this.refresh_menu.Append({ title:FormatMsg('MSG_ZOOM_ACTIONS'), tooltip:FormatMsg('MSG_ZOOM_ACTIONS'), children:children, id:'actions' }); } if( childrend.length > 0 ) { this.refresh_menu.Append({ title:FormatMsg('MSG_DRILL_DOWN'), tooltip:FormatMsg('MSG_DRILL_DOWN'), children:childrend, id:'actions_down' }); } if( childrenu.length > 0 ) { this.refresh_menu.Append({ title:FormatMsg('MSG_DRILL_UP'), tooltip:FormatMsg('MSG_DRILL_UP'), children:childrenu, id:'actions_up' }); } if( children.length > 0 || childrend.length > 0 || childrenu.length > 0 ) { this.refresh_menu.Ctrl.style.display = ''; this.refresh_menu.setCtrlPos(this.refresh_menu.Ctrl,event.clientX,event.clientY,null,null,'top-left') this.refresh_menu.OpenMenu(); } } //overwrite chart pv this.Chart.pvUIFilterData = function(id, ev, alias) { if (!CharToBool(_this.__cfgObj.configuration.canFilter+"")) return; this.ToggleFilterArea(id, ev, alias); } this.Chart.pvUIRemFilterData = function(alias) { if (!CharToBool(_this.__cfgObj.configuration.canFilter+"") && !CharToBool(_this.__cfgObj.configuration.canApplyFilter+"")) return; this.RemoveFilterAlias(alias); } this.Chart.pvGetWDraw = function() { return this._wDraw; } this.Chart.pvSetWDraw = function(benable) { this._wDraw = benable; } this.Chart.pvResetAndDraw = function() { var opts = {}; opts.rows = []; opts.columns = []; opts.measures = []; var i, div, alias, o; function getDesc(alias, fields) { var i; var ret = {}; for( i=0; i=0; i--) { if(!drawOpts.rows[i]) { drawOpts.rows.splice(i, 1); } } for(i=drawOpts.columns.length-1; i>=0; i--) { if(!drawOpts.columns[i]) { drawOpts.columns.splice(i, 1); } } for(i=0; isValid && i 0) cfCols[0].style.height = cfMeas[0].offsetHeight + 'px'; } this.Chart.pvGetTranslate = function(key) { if( ZtVWeb && ZtVWeb.PivotTranslations && ZtVWeb.PivotTranslations[key]) { return ZtVWeb.PivotTranslations[key]; } return "MSG_" + key; } this.Chart._fGetHTMLAttribute = function (elem, attr) { return elem.getAttribute(attr); } this.Chart._updateFiltersDiv = function() { var filters = this.vpvPivotUI.opts.filters; if(!filters) filters = this.Filters; var l = this.Ctrl.getElementsByClassName('rem_filter'); var i, alias, f; var lalias = [], map = {}; if( filters) for( i=0; i