/* 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 ';
f = this.Chart.vpvDrillObj.columns[z];
if( f.desc ) {
pt += f.desc;
}
else {
if( f.expression != null ) {
sp = f.expression.split(_mSeparator)
exp = sp[sp.length-1]
}
else {
exp = ' ';
}
pt += exp;
}
}
if( !Empty(pt) ) pt+= ' > ';
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 ';
f = this.Chart.vpvDrillObj.columns[z];
if( f.desc ) {
pt += f.desc;
}
else {
if( f.expression != null ) {
sp = f.expression.split(_mSeparator)
exp = sp[sp.length-1]
}
else {
exp = ' ';
}
pt += exp;
}
}
zvalue = '';
mitem = {}
mitem.id = 'drillUpColumn'
mitem.title = dexp + ' : ' + pt + zvalue
mitem.action = 'javascript:'+this.formid+'.ChartDrillUpColumn()';
mitem.image = { fontFamily:'icons8_win10', value: "", size: "20px"}
children.push(mitem)
}
return children
}
this._makeDrillColumnsMenuChildren_down = function(item) {
var combo, c, zvalue, z, pt = '', f, sp, exp, dexp, children = [], mitem;
if( this.Chart.vpvPivotUI.opts.columns.length-1 > 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 ';
f = this.Chart.vpvDrillObj.columns[z];
if( f.desc ) {
pt += f.desc;
}
else {
if( f.expression != null ) {
sp = f.expression.split(_mSeparator)
exp = sp[sp.length-1]
}
else {
exp = ' ';
}
pt += exp;
}
}
if( !Empty(pt) ) pt+= ' > ';
combo = document.getElementById(this.Chart.ctrlid + '_ztchart_comboCursor');
zvalue = item.multidimCurrentKey;
if( combo ) {
z, c;
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 ' + this.vpvPivotUI.opts.rows[i+1].desc;
}
this.title = FormatMsg('MSG_VIEW') + ' [ ' + this.vpvPivotUI.opts.columns[0].desc;
for( i=0; i ' + this.vpvPivotUI.opts.columns[i+1].desc;
}
this.title += ' ]';
this.makePropertyName();
}
this.pvCheckDrawPivotOpts = function (drawOpts, vpvthis) {
function _fIsNotUndefined(o) {
return (o !== undefined)
}
var isValid = true;
var updRowsF = [], updRowsO = [];
var updColsF = [], updColsO = [];
var i, k;
if (drawOpts.columns == undefined) {
drawOpts.columns = [];
}
if (drawOpts.rows == undefined) {
drawOpts.rows = [];
}
if (drawOpts.columns.length == 0) {
drawOpts.columns.push(vpvthis.opts.columns[0])
}
for(i=drawOpts.rows.length-1; 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