@datarailsshared/dr_renderer 1.2.211-dragons → 1.2.213-rocket
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/dr_pivottable.js +2 -8
- package/src/highcharts_renderer.js +111 -69
- package/src/novix_renderer.js +5 -8
- package/src/pivot.css +8 -24
package/package.json
CHANGED
package/src/dr_pivottable.js
CHANGED
|
@@ -2421,14 +2421,8 @@ let initDRPivotTable = function($, window, document) {
|
|
|
2421
2421
|
if (colAttrs.length > 0 && colKeys.length > 0) {
|
|
2422
2422
|
colHeaders = processKeys(colKeys, "pvtColLabel", 'cols', colAttrs);
|
|
2423
2423
|
}
|
|
2424
|
-
var tableClasses =
|
|
2425
|
-
|
|
2426
|
-
tableClasses.push('newPvtTable');
|
|
2427
|
-
}
|
|
2428
|
-
if (!pivotData.aggregator().uniq) {
|
|
2429
|
-
tableClasses.push('numbers-to-right');
|
|
2430
|
-
}
|
|
2431
|
-
result = createElement("table", tableClasses.join(' ') , null, {
|
|
2424
|
+
var tableClasses = useNewUx && opts.chartOptions.table_options.use_new_table_design ? 'pvtTable newPvtTable' : 'pvtTable';
|
|
2425
|
+
result = createElement("table", tableClasses , null, {
|
|
2432
2426
|
style: "display: none;"
|
|
2433
2427
|
});
|
|
2434
2428
|
|
|
@@ -87,10 +87,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
87
87
|
EXCEL_VIEWER: 'excel_viewer',
|
|
88
88
|
};
|
|
89
89
|
|
|
90
|
-
highchartsRenderer.VIRTUAL_FIELDS = {
|
|
91
|
-
WATERFALL_VARIANCE: 'DR_WATERFALL_VARIANCE',
|
|
92
|
-
};
|
|
93
|
-
|
|
94
90
|
highchartsRenderer.highcharts_theme = {
|
|
95
91
|
"colors": highchartsRenderer.defaults_colors,
|
|
96
92
|
"chart": {
|
|
@@ -1343,11 +1339,15 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
1343
1339
|
return chart_series;
|
|
1344
1340
|
}
|
|
1345
1341
|
|
|
1346
|
-
highchartsRenderer.ptCreateWaterfallBreakdownSeries = function (pivotData, additionOptions, opts) {
|
|
1342
|
+
highchartsRenderer.ptCreateWaterfallBreakdownSeries = function (pivotData, onlyNumbers, additionOptions, opts) {
|
|
1347
1343
|
const colorOptions = opts.breakdown_options.colors;
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1344
|
+
var chart_series = [],
|
|
1345
|
+
row_n_keys = pivotData.getRowKeys(),
|
|
1346
|
+
col_n_keys = pivotData.getColKeys();
|
|
1347
|
+
|
|
1348
|
+
if (row_n_keys.length === 0) {
|
|
1349
|
+
row_n_keys.push([]);
|
|
1350
|
+
}
|
|
1351
1351
|
|
|
1352
1352
|
let resultObject = {
|
|
1353
1353
|
data: [],
|
|
@@ -1363,48 +1363,60 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
1363
1363
|
};
|
|
1364
1364
|
resultObject = highchartsRenderer.getDataLabelsOptions(additionOptions, resultObject);
|
|
1365
1365
|
|
|
1366
|
+
const breakdownValues = [];
|
|
1366
1367
|
lodash.forEach(col_n_keys, function(col_n_value, col_index) {
|
|
1368
|
+
breakdownValues.push([]);
|
|
1369
|
+
lodash.forEach(row_n_keys, function (row_n_value, row_index) {
|
|
1370
|
+
var agg = pivotData.getAggregator(row_n_value, col_n_value);
|
|
1371
|
+
var val = agg.value();
|
|
1367
1372
|
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
isTotal: true,
|
|
1376
|
-
color: colorOptions.total,
|
|
1377
|
-
});
|
|
1373
|
+
if (val != null && $.isNumeric(val)) {
|
|
1374
|
+
val = parseFloat(val);
|
|
1375
|
+
} else if (onlyNumbers) {
|
|
1376
|
+
val = NaN;
|
|
1377
|
+
} else {
|
|
1378
|
+
val = 0;
|
|
1379
|
+
}
|
|
1378
1380
|
|
|
1379
|
-
|
|
1380
|
-
lodash.forEach(row_n_keys, function (row_n_value) {
|
|
1381
|
-
const agg = pivotData.getAggregator(row_n_value, col_n_value);
|
|
1382
|
-
let val = agg.value();
|
|
1381
|
+
breakdownValues[col_index][row_index] = val;
|
|
1383
1382
|
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
const tmoobj = {};
|
|
1387
|
-
const key = lodash.isArray(row_n_value) ? row_n_value[0] : row_n_value;
|
|
1388
|
-
tmoobj.name = lodash.unescape(key);
|
|
1383
|
+
if (col_index) {
|
|
1384
|
+
const value = val - breakdownValues[col_index - 1][row_index];
|
|
1389
1385
|
|
|
1386
|
+
if (value) {
|
|
1387
|
+
var tmoobj = {};
|
|
1388
|
+
var key = row_n_value;
|
|
1389
|
+
if (lodash.isArray(row_n_value)) {
|
|
1390
|
+
key = row_n_value[0];
|
|
1391
|
+
}
|
|
1392
|
+
tmoobj.name = lodash.unescape(key);
|
|
1393
|
+
|
|
1390
1394
|
if (tmoobj.name) {
|
|
1391
1395
|
tmoobj.name = tmoobj.name.replace('DR_Others', highchartsRenderer.getOthersName(opts));
|
|
1392
1396
|
}
|
|
1397
|
+
|
|
1393
1398
|
if (lodash.isEmpty(String(tmoobj.name))) {
|
|
1394
1399
|
tmoobj.name = lodash.unescape(col_n_value);
|
|
1395
1400
|
tmoobj.visible = false;
|
|
1396
1401
|
}
|
|
1397
|
-
|
|
1398
|
-
tmoobj.y = val;
|
|
1402
|
+
tmoobj.y = value;
|
|
1399
1403
|
tmoobj.colKeys = [lodash.unescape(col_n_keys[col_index - 1]), lodash.unescape(col_n_value)];
|
|
1400
1404
|
resultObject.data.push(tmoobj);
|
|
1401
1405
|
}
|
|
1406
|
+
}
|
|
1407
|
+
});
|
|
1402
1408
|
|
|
1403
|
-
|
|
1404
|
-
|
|
1409
|
+
resultObject.data.push({
|
|
1410
|
+
y: pivotData.colTotals[col_n_value].sum,
|
|
1411
|
+
name: lodash.unescape(col_n_value).replace('DR_Others', highchartsRenderer.getOthersName(opts)),
|
|
1412
|
+
isSum: !!col_index,
|
|
1413
|
+
isTotal: true,
|
|
1414
|
+
color: colorOptions.total,
|
|
1415
|
+
});
|
|
1405
1416
|
});
|
|
1406
1417
|
|
|
1407
1418
|
chart_series.push(resultObject);
|
|
1419
|
+
|
|
1408
1420
|
opts.chart_series = [];
|
|
1409
1421
|
if (!lodash.isEqual(row_n_keys, EMPTY_ROW_N_KEYS)) {
|
|
1410
1422
|
chart_series.forEach(series => {
|
|
@@ -3178,8 +3190,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
3178
3190
|
? opts.chartOptions
|
|
3179
3191
|
: highchartsRenderer.getDefaultValueForChart(highchartsRenderer.CHART_TYPES.WATERFALL_BREAKDOWN);
|
|
3180
3192
|
|
|
3181
|
-
pivotData.colKeys = lodash.map(lodash.keys(pivotData.colTotals), key => [key]);
|
|
3182
|
-
|
|
3183
3193
|
chartOptions.chart = {
|
|
3184
3194
|
type: 'waterfall',
|
|
3185
3195
|
zoomType: additionOptions && additionOptions.chart && additionOptions.chart.zoom_type ? additionOptions.chart.zoom_type : 'None',
|
|
@@ -3230,7 +3240,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
3230
3240
|
chartOptions.colors = opts.paletteOptions.dashboardPalette.colors;
|
|
3231
3241
|
}
|
|
3232
3242
|
chartOptions.series = highchartsRenderer
|
|
3233
|
-
.ptCreateWaterfallBreakdownSeries(pivotData, additionOptions, opts);
|
|
3243
|
+
.ptCreateWaterfallBreakdownSeries(pivotData, null, additionOptions, opts);
|
|
3234
3244
|
|
|
3235
3245
|
chartOptions = highchartsRenderer.prepareAxisX(chartOptions, additionOptions, pivotData.getColKeys());
|
|
3236
3246
|
chartOptions.plotOptions = {
|
|
@@ -4366,7 +4376,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4366
4376
|
title: 'Data Conflict',
|
|
4367
4377
|
text: `Please adjust your dashboard's reference date and filter selections as \
|
|
4368
4378
|
the quantity of data doesn't match the chart's ${ minCategories }-${ maxCategories } value limit.`,
|
|
4369
|
-
class:
|
|
4379
|
+
class: 'nodata',
|
|
4370
4380
|
}
|
|
4371
4381
|
return highchartsRenderer.getNoDataResult(options.rendererOptions, true);
|
|
4372
4382
|
}
|
|
@@ -4955,28 +4965,12 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
4955
4965
|
}
|
|
4956
4966
|
});
|
|
4957
4967
|
|
|
4958
|
-
// add virtual fields to rows if required
|
|
4959
|
-
let rows = widgetOptions.rows;
|
|
4960
|
-
if (!lodash.get(widgetOptions, 'rows.length') && widgetOptions.options.breakdown_options) {
|
|
4961
|
-
rows = [
|
|
4962
|
-
{
|
|
4963
|
-
id: -1,
|
|
4964
|
-
name: highchartsRenderer.VIRTUAL_FIELDS.WATERFALL_VARIANCE,
|
|
4965
|
-
type: 'Text',
|
|
4966
|
-
},
|
|
4967
|
-
];
|
|
4968
|
-
}
|
|
4969
|
-
|
|
4970
4968
|
// fill rows fields
|
|
4971
|
-
lodash.forEach(rows, function (valObj) {
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
if (fieldOb) {
|
|
4977
|
-
legendFields.push(fieldOb);
|
|
4978
|
-
lodash.remove(fields, {id: fieldOb.id});
|
|
4979
|
-
}
|
|
4969
|
+
lodash.forEach(widgetOptions.rows, function (valObj) {
|
|
4970
|
+
fieldOb = lodash.find(fields, {id: valObj.id});
|
|
4971
|
+
if (fieldOb) {
|
|
4972
|
+
legendFields.push(fieldOb);
|
|
4973
|
+
lodash.remove(fields, {id: fieldOb.id});
|
|
4980
4974
|
}
|
|
4981
4975
|
});
|
|
4982
4976
|
|
|
@@ -5103,22 +5097,71 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
5103
5097
|
highchartsRenderer.addTemplateDataToCalcModel = function (selectedTemplate, calcModelOptions) {
|
|
5104
5098
|
highchartsRenderer.setWidgetFieldsToTemplate(selectedTemplate);
|
|
5105
5099
|
|
|
5106
|
-
|
|
5107
|
-
|
|
5108
|
-
|
|
5100
|
+
const scenarioName = 'scenario';
|
|
5101
|
+
const fields = highchartsRenderer.objectCopyJsonMethod(selectedTemplate.fields);
|
|
5102
|
+
const fieldScenarioAlias = _.find(fields, field => (field.alias || '').toLowerCase() === scenarioName)
|
|
5103
|
+
const fieldScenario = _.find(fields, field => (field.name || '').toLowerCase() === scenarioName)
|
|
5104
|
+
const filters = calcModelOptions.config && calcModelOptions.config.filters;
|
|
5109
5105
|
|
|
5110
|
-
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5106
|
+
const filterFields = [];
|
|
5107
|
+
const valueFields = [];
|
|
5108
|
+
const dateFields = [];
|
|
5109
|
+
const dataTypeFields = [];
|
|
5110
|
+
const dataSeriesFields = [];
|
|
5111
|
+
|
|
5112
|
+
let scenarioField = lodash.get(calcModelOptions, 'config.scenario', undefined) || fieldScenarioAlias || fieldScenario;
|
|
5113
|
+
let fieldOb;
|
|
5114
|
+
|
|
5115
|
+
const fillData = (fieldsArr, destinationArr) => {
|
|
5116
|
+
lodash.forEach(fieldsArr, function (valObj) {
|
|
5117
|
+
fieldOb = lodash.find(fields, { id: valObj.id });
|
|
5118
|
+
if (fieldOb) {
|
|
5119
|
+
destinationArr.push(fieldOb);
|
|
5120
|
+
lodash.remove(fields, { id: fieldOb.id });
|
|
5121
|
+
}
|
|
5122
|
+
});
|
|
5123
|
+
}
|
|
5124
|
+
|
|
5125
|
+
lodash.forEach(filters, function (filterObj) {
|
|
5126
|
+
fieldOb = lodash.find(fields, { id: filterObj.id });
|
|
5127
|
+
if (fieldOb && filterObj.values && filterObj.values.datetype && filterObj.values.datetype === 'list') {
|
|
5128
|
+
filterObj.values = filterObj.values.val
|
|
5129
|
+
} else if (fieldOb && filterObj.values && filterObj.values.datetype && filterObj.values.datetype !== 'list') {
|
|
5130
|
+
fieldOb.values = filterObj.values;
|
|
5131
|
+
} else if (fieldOb && filterObj.values && filterObj.values.type === 'advanced') {
|
|
5132
|
+
fieldOb.values = filterObj.values;
|
|
5133
|
+
}
|
|
5134
|
+
if (fieldOb && filterObj.values && filterObj.values instanceof Array) {
|
|
5135
|
+
if (filterObj.is_excluded == true) {
|
|
5136
|
+
fieldOb.excludes = filterObj.values;
|
|
5137
|
+
} else {
|
|
5138
|
+
fieldOb.includes = filterObj.values;
|
|
5139
|
+
}
|
|
5140
|
+
}
|
|
5141
|
+
if (filterObj.allow_nulls && fieldOb) {
|
|
5142
|
+
fieldOb.allow_nulls = filterObj.allow_nulls;
|
|
5116
5143
|
}
|
|
5117
5144
|
});
|
|
5118
5145
|
|
|
5146
|
+
const storedGroupByFields = lodash.get(calcModelOptions, 'config.group_by', []);
|
|
5147
|
+
const storedDateFields = [lodash.get(calcModelOptions, 'config.date_field', undefined)].filter(f => !!f);
|
|
5148
|
+
const storedAggFields = [lodash.get(calcModelOptions, 'config.agg_field', undefined)].filter(f => !!f);
|
|
5149
|
+
const storedDataTypeFields = [lodash.get(calcModelOptions, 'config.data_type_field', undefined)].filter(f => !!f);
|
|
5150
|
+
|
|
5151
|
+
fillData(storedGroupByFields, dataSeriesFields);
|
|
5152
|
+
fillData(storedDateFields, dateFields);
|
|
5153
|
+
fillData(storedAggFields, valueFields);
|
|
5154
|
+
fillData(storedDataTypeFields, dataTypeFields);
|
|
5155
|
+
fillData(filters, filterFields);
|
|
5156
|
+
|
|
5119
5157
|
calcModelOptions.pivot = {
|
|
5120
5158
|
fieldsArray: fields,
|
|
5121
|
-
selectedFieldsArray:
|
|
5159
|
+
selectedFieldsArray: dataSeriesFields,
|
|
5160
|
+
filtersArray: filterFields,
|
|
5161
|
+
scenarioField,
|
|
5162
|
+
dateFields,
|
|
5163
|
+
dataTypeFields,
|
|
5164
|
+
valueFields
|
|
5122
5165
|
};
|
|
5123
5166
|
}
|
|
5124
5167
|
|
|
@@ -7944,7 +7987,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
7944
7987
|
};
|
|
7945
7988
|
|
|
7946
7989
|
highchartsRenderer.createDateFromString = function (dateString, format) {
|
|
7947
|
-
if (
|
|
7990
|
+
if ((format && !highchartsRenderer.isDateFormat(dateString, format)) || !highchartsRenderer.isDate(dateString)) {
|
|
7948
7991
|
return null;
|
|
7949
7992
|
}
|
|
7950
7993
|
const utcDate = format
|
|
@@ -8098,7 +8141,6 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8098
8141
|
filter.is_excluded = false;
|
|
8099
8142
|
} else {
|
|
8100
8143
|
filter = highchartsRenderer.createDrillDownFilterObject(widget, widget.cols[0], colKey[0]);
|
|
8101
|
-
filters.push(filter);
|
|
8102
8144
|
}
|
|
8103
8145
|
filter.values = [];
|
|
8104
8146
|
for (let i = 0; i < colKey.length; i++) {
|
|
@@ -8701,7 +8743,7 @@ let getHighchartsRenderer = function ($, document, Highcharts, default_colors, h
|
|
|
8701
8743
|
rows = [];
|
|
8702
8744
|
} else {
|
|
8703
8745
|
rows = cols;
|
|
8704
|
-
cols = [
|
|
8746
|
+
cols = [];
|
|
8705
8747
|
}
|
|
8706
8748
|
return { rows, cols };
|
|
8707
8749
|
}
|
package/src/novix_renderer.js
CHANGED
|
@@ -28,6 +28,8 @@ let initNovixRenderer = function($, window, document, Handsontable){
|
|
|
28
28
|
const delim = " , ";
|
|
29
29
|
const subtotal = "subtotalDatarailsPlaceholder";
|
|
30
30
|
const replaceValue = "SubTotals";
|
|
31
|
+
const useNewUx = document.ReportHippo && document.ReportHippo && document.ReportHippo.user &&
|
|
32
|
+
document.ReportHippo.user.organization.settings && document.ReportHippo.user.organization.settings.use_new_ux;
|
|
31
33
|
|
|
32
34
|
$.pivotUtilities.novix_renderers = {
|
|
33
35
|
|
|
@@ -887,14 +889,9 @@ let initNovixRenderer = function($, window, document, Handsontable){
|
|
|
887
889
|
|
|
888
890
|
// inject the widgetId to the class name so we can separate the tables by it
|
|
889
891
|
// look for the search side on line 653 "opts.$el.find(".widget-id-" + opts.widgetId);"
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
}
|
|
894
|
-
if (!pvtData.aggregator().uniq) {
|
|
895
|
-
tableClasses.push('numbers-to-right');
|
|
896
|
-
}
|
|
897
|
-
return `<div class='${tableClasses.join(' ')}' style='overflow:auto'></div>`;
|
|
892
|
+
return `<div class='novixPivot widget-id-${opts.widgetId} ${
|
|
893
|
+
useNewUx && opts.chartOptions.table_options.use_new_table_design ? 'handsontable-new' : ''
|
|
894
|
+
}' style='overflow:auto'></div>`;
|
|
898
895
|
}
|
|
899
896
|
|
|
900
897
|
};
|
package/src/pivot.css
CHANGED
|
@@ -29,6 +29,9 @@ table.pvtTable tbody tr th > i {
|
|
|
29
29
|
font-size: 10px;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
table.pvtTable .pvtColLabel {text-align: center;}
|
|
33
|
+
table.pvtTable .pvtTotalLabel {text-align: right;}
|
|
34
|
+
|
|
32
35
|
table.pvtTable tbody tr td {
|
|
33
36
|
color: #3D3D3D;
|
|
34
37
|
padding: 5px;
|
|
@@ -260,6 +263,11 @@ table.pvtTable.newPvtTable tbody tr td.rowTotal {
|
|
|
260
263
|
background-color: #dfe6ec !important;
|
|
261
264
|
border-color: #ffffff !important;
|
|
262
265
|
}
|
|
266
|
+
table.pvtTable.newPvtTable .pvtColLabel,
|
|
267
|
+
table.pvtTable.newPvtTable .pvtTotalLabel,
|
|
268
|
+
table.pvtTable.newPvtTable .pvtTotalLabel.rowTotal {
|
|
269
|
+
text-align: left;
|
|
270
|
+
}
|
|
263
271
|
|
|
264
272
|
table.pvtTable.newPvtTable tbody tr th .fa {
|
|
265
273
|
padding: 2px;
|
|
@@ -400,27 +408,3 @@ table.pvtTable.newPvtTable tbody tr td:hover:after {
|
|
|
400
408
|
top: 4px;
|
|
401
409
|
font-size: 12px;
|
|
402
410
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
/* Table cells alignment */
|
|
406
|
-
table.pvtTable .pvtColLabel {text-align: center;}
|
|
407
|
-
table.pvtTable .pvtTotalLabel {text-align: right;}
|
|
408
|
-
|
|
409
|
-
table.pvtTable.newPvtTable .pvtColLabel,
|
|
410
|
-
table.pvtTable.newPvtTable .pvtTotalLabel,
|
|
411
|
-
table.pvtTable.newPvtTable .pvtTotalLabel.rowTotal {
|
|
412
|
-
text-align: left;
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
table.pvtTable thead tr th.pvtColLabel,
|
|
416
|
-
table.pvtTable thead tr th.pvtTotalLabel {
|
|
417
|
-
text-align: center !important;
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
table.pvtTable.numbers-to-right tbody tr td.pvtVal,
|
|
421
|
-
table.pvtTable.numbers-to-right tbody tr td.rowTotal.rowTotal,
|
|
422
|
-
table.pvtTable.numbers-to-right tbody tr td.pvtGrandTotal {
|
|
423
|
-
text-align: right !important;
|
|
424
|
-
padding-right: 9px;
|
|
425
|
-
line-height: 15px;
|
|
426
|
-
}
|