@splunk/visualization-encoding-parsers 25.7.2 → 25.8.1
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/AreaParser.js +3 -4
- package/AreaParser.js.map +1 -1
- package/BarParser.js +1 -3
- package/BarParser.js.map +1 -1
- package/Base.js +84 -181
- package/Base.js.map +1 -1
- package/BubbleParser.js +1 -3
- package/BubbleParser.js.map +1 -1
- package/ChoroplethParser.js +1 -1
- package/ChoroplethParser.js.map +1 -1
- package/ColumnParser.js +3 -4
- package/ColumnParser.js.map +1 -1
- package/FillerGaugeParser.js +1 -3
- package/FillerGaugeParser.js.map +1 -1
- package/LineParser.js +3 -4
- package/LineParser.js.map +1 -1
- package/MarkerGaugeParser.js +1 -3
- package/MarkerGaugeParser.js.map +1 -1
- package/PieParser.js +0 -3
- package/PieParser.js.map +1 -1
- package/PunchcardParser.js +1 -7
- package/PunchcardParser.js.map +1 -1
- package/ScatterParser.js +1 -3
- package/ScatterParser.js.map +1 -1
- package/ShapeParser.js +1 -4
- package/ShapeParser.js.map +1 -1
- package/SingleValueIconParser.js +3 -6
- package/SingleValueIconParser.js.map +1 -1
- package/SingleValueParser.js +1 -5
- package/SingleValueParser.js.map +1 -1
- package/SingleValueRadialParser.js +1 -5
- package/SingleValueRadialParser.js.map +1 -1
- package/TableParser.js +1 -5
- package/TableParser.js.map +1 -1
- package/errorMsgs.js.map +1 -1
- package/package.json +3 -3
package/Base.js
CHANGED
|
@@ -240,55 +240,46 @@ var find_default = /*#__PURE__*/__webpack_require__.n(find_);
|
|
|
240
240
|
var format_hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
241
241
|
var rangeFormat = function rangeFormat(value) {
|
|
242
242
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
243
|
+
ranges = _ref.ranges,
|
|
244
|
+
values = _ref.values;
|
|
246
245
|
if (Array.isArray(ranges) && Array.isArray(values) && !Number.isNaN(value)) {
|
|
247
246
|
var floatVal = parseFloat(value);
|
|
248
|
-
|
|
249
247
|
for (var i = 0; i < ranges.length; i += 1) {
|
|
250
248
|
// bad range value
|
|
251
249
|
if (Number.isNaN(Number(ranges[i]))) {
|
|
252
250
|
// Could not format value: Ranges are required to be numbers. Falling back to original value
|
|
253
251
|
return value;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
252
|
+
}
|
|
253
|
+
// value is less than the range limit
|
|
257
254
|
if (floatVal <= parseFloat(ranges[i])) {
|
|
258
255
|
var valueIndex = Math.min(i, values.length - 1); // correct the index if there are more range items than values
|
|
259
|
-
|
|
260
256
|
if (values[valueIndex]) {
|
|
261
257
|
return values[valueIndex];
|
|
262
258
|
}
|
|
263
259
|
}
|
|
264
260
|
}
|
|
265
|
-
|
|
266
261
|
if (floatVal > parseFloat(ranges[ranges.length - 1])) {
|
|
267
262
|
return values[values.length - 1];
|
|
268
263
|
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
|
|
264
|
+
}
|
|
265
|
+
// Could not format value: Ranges and Value are required to be numbers
|
|
272
266
|
return value;
|
|
273
267
|
};
|
|
274
268
|
var categoryFormat = function categoryFormat(value, _ref2) {
|
|
275
269
|
var categories = _ref2.categories,
|
|
276
|
-
|
|
277
|
-
|
|
270
|
+
values = _ref2.values;
|
|
278
271
|
if (!(Array.isArray(categories) && Array.isArray(values) && categories.length === values.length)) {
|
|
279
272
|
// Could not format value: categories & values should be arrays of the same length. Falling back to original value
|
|
280
273
|
return value;
|
|
281
274
|
}
|
|
282
|
-
|
|
283
275
|
var valueIndex = categories.indexOf(value);
|
|
284
|
-
|
|
285
276
|
if (valueIndex > -1) {
|
|
286
277
|
return values[valueIndex];
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
|
|
278
|
+
}
|
|
279
|
+
// Could not format value: Category does not exist. Falling back to original value
|
|
290
280
|
return value;
|
|
291
281
|
};
|
|
282
|
+
|
|
292
283
|
/**
|
|
293
284
|
* based on a range configuration this formatter maps the value to a value specified in a range.
|
|
294
285
|
* the range fitting follows this criteria: `range.from <= value < range.to` so the `to` value is not included
|
|
@@ -301,27 +292,27 @@ var categoryFormat = function categoryFormat(value, _ref2) {
|
|
|
301
292
|
* @param {object} formatConfig
|
|
302
293
|
* @param {Object[]} formatConfig.ranges
|
|
303
294
|
*/
|
|
304
|
-
|
|
305
295
|
var rangeValueFormat = function rangeValueFormat(value, _ref3) {
|
|
306
296
|
var _ref3$ranges = _ref3.ranges,
|
|
307
|
-
|
|
297
|
+
ranges = _ref3$ranges === void 0 ? [] : _ref3$ranges;
|
|
308
298
|
var floatValue = parseFloat(value);
|
|
309
|
-
|
|
310
299
|
if (Number.isNaN(Number(value))) {
|
|
311
300
|
return value;
|
|
312
301
|
}
|
|
313
|
-
|
|
314
302
|
for (var i = 0; i < ranges.length; i += 1) {
|
|
315
|
-
if (
|
|
316
|
-
|
|
317
|
-
|
|
303
|
+
if (
|
|
304
|
+
// open upper bound: value is bigger than or equal to open upper bound start (from)
|
|
305
|
+
i === 0 && format_hasOwnProperty.call(ranges[i], 'from') && floatValue >= ranges[i].from ||
|
|
306
|
+
// inbetween: value falls into from - to range
|
|
307
|
+
floatValue >= ranges[i].from && floatValue < ranges[i].to ||
|
|
308
|
+
// open lower bound: value is smaller than or equal to open lower bound end (to)
|
|
318
309
|
i === ranges.length - 1 && format_hasOwnProperty.call(ranges[i], 'to') && floatValue < ranges[i].to) {
|
|
319
310
|
return ranges[i].value;
|
|
320
311
|
}
|
|
321
312
|
}
|
|
322
|
-
|
|
323
313
|
return value;
|
|
324
314
|
};
|
|
315
|
+
|
|
325
316
|
/**
|
|
326
317
|
* this formatter maps the value to a value specified in a list of potential matches .
|
|
327
318
|
* if the value passed is a match for what is provided in `matches[i].match`, we return that mapped value `matches[i].value`.
|
|
@@ -334,12 +325,11 @@ var rangeValueFormat = function rangeValueFormat(value, _ref3) {
|
|
|
334
325
|
* @param {Object[]} formatConfig.matches
|
|
335
326
|
* @param {object} formatConfig.defaultValue
|
|
336
327
|
*/
|
|
337
|
-
|
|
338
328
|
var format_matchValueFormat = function matchValueFormat(value, _ref4) {
|
|
339
329
|
var _ref4$matches = _ref4.matches,
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
330
|
+
matches = _ref4$matches === void 0 ? [] : _ref4$matches,
|
|
331
|
+
_ref4$defaultValue = _ref4.defaultValue,
|
|
332
|
+
defaultValue = _ref4$defaultValue === void 0 ? undefined : _ref4$defaultValue;
|
|
343
333
|
var defaultResult = isUndefined_default()(defaultValue) ? value : defaultValue;
|
|
344
334
|
var matchResult = find_default()(matches, function (match) {
|
|
345
335
|
return match.match && match.match === value;
|
|
@@ -349,6 +339,7 @@ var format_matchValueFormat = function matchValueFormat(value, _ref4) {
|
|
|
349
339
|
var NON_NUMERIC_RANGE_ERROR = 'Could not format value: Ranges are required to be numbers. Falling back to first color';
|
|
350
340
|
var VALUES_AND_RANGES_HAVE_DIFFERENT_LENGTH = 'gradient ranges and values must have the same number of elements';
|
|
351
341
|
var INVALID_VALUE = 'Could not format value for gradient:';
|
|
342
|
+
|
|
352
343
|
/**
|
|
353
344
|
* based on ranges and values this formatter maps the value to an interpolated color
|
|
354
345
|
*
|
|
@@ -359,38 +350,31 @@ var INVALID_VALUE = 'Could not format value for gradient:';
|
|
|
359
350
|
* @param {string[]} data the data to be formatted
|
|
360
351
|
* @param errorHandler function
|
|
361
352
|
*/
|
|
362
|
-
|
|
363
353
|
var format_colorGradientFormat = function colorGradientFormat(value, _ref5, data, errorHandler) {
|
|
364
354
|
var ranges = _ref5.ranges,
|
|
365
|
-
|
|
355
|
+
values = _ref5.values;
|
|
366
356
|
var colorValues = values;
|
|
367
357
|
var colorRanges = ranges;
|
|
368
|
-
|
|
369
358
|
function errorColor() {
|
|
370
359
|
return colorValues ? external_chroma_js_default()(colorValues[0]).hex().toUpperCase() : '#000';
|
|
371
360
|
}
|
|
372
|
-
|
|
373
361
|
if (!Number.isNaN(Number(value))) {
|
|
374
362
|
// set default values for gradient colors if values not explicit
|
|
375
363
|
if (!colorValues) {
|
|
376
364
|
colorValues = ['white', 'red'];
|
|
377
365
|
}
|
|
378
|
-
|
|
379
366
|
if (colorValues.length === 1) {
|
|
380
367
|
colorValues.unshift('white'); // force color bin to have a lower bound color
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
|
|
368
|
+
}
|
|
369
|
+
// set default values for ranges if ranges not explicit
|
|
384
370
|
if (!ranges) {
|
|
385
371
|
if (data && data.length > 0) {
|
|
386
372
|
var min = data.length > 0 ? Math.min.apply(null, data) : undefined;
|
|
387
373
|
var max = data.length > 0 ? Math.max.apply(null, data) : undefined;
|
|
388
374
|
colorRanges = [min];
|
|
389
|
-
|
|
390
375
|
for (var i = 1; i < colorValues.length - 1; i += 1) {
|
|
391
376
|
colorRanges.push(min + i * (max - min) / (colorValues.length - 1));
|
|
392
377
|
}
|
|
393
|
-
|
|
394
378
|
colorRanges.push(max);
|
|
395
379
|
} else {
|
|
396
380
|
colorRanges = [0, 1]; // no data values, so just make the range from zero to 1
|
|
@@ -404,23 +388,22 @@ var format_colorGradientFormat = function colorGradientFormat(value, _ref5, data
|
|
|
404
388
|
colorRanges.sort(function (a, b) {
|
|
405
389
|
return a - b;
|
|
406
390
|
}); // force ascending order of range stops
|
|
407
|
-
|
|
408
391
|
if (colorRanges.length !== colorValues.length) {
|
|
409
392
|
errorHandler(VALUES_AND_RANGES_HAVE_DIFFERENT_LENGTH);
|
|
410
393
|
return errorColor();
|
|
411
394
|
}
|
|
395
|
+
var floatVal = parseFloat(value);
|
|
412
396
|
|
|
413
|
-
|
|
414
|
-
|
|
397
|
+
// don't let value be outside the allowed range
|
|
415
398
|
if (floatVal > parseFloat(colorRanges[colorRanges.length - 1])) {
|
|
416
399
|
return external_chroma_js_default()(colorValues[colorValues.length - 1]).hex().toUpperCase(); // high end
|
|
417
400
|
}
|
|
418
401
|
|
|
419
402
|
if (floatVal < parseFloat(colorRanges[0])) {
|
|
420
403
|
return external_chroma_js_default()(colorValues[0]).hex().toUpperCase(); // low end
|
|
421
|
-
}
|
|
422
|
-
|
|
404
|
+
}
|
|
423
405
|
|
|
406
|
+
// find the color gradient range that the value is inside
|
|
424
407
|
for (var _i = 1; _i < colorRanges.length; _i += 1) {
|
|
425
408
|
// bad range value
|
|
426
409
|
if (Number.isNaN(Number(colorRanges[_i]))) {
|
|
@@ -428,14 +411,13 @@ var format_colorGradientFormat = function colorGradientFormat(value, _ref5, data
|
|
|
428
411
|
errorHandler(NON_NUMERIC_RANGE_ERROR);
|
|
429
412
|
return errorColor();
|
|
430
413
|
}
|
|
431
|
-
|
|
432
414
|
var upperVal = colorRanges[_i];
|
|
433
|
-
|
|
434
415
|
if (floatVal <= upperVal) {
|
|
435
416
|
// if value is inside the bin
|
|
436
417
|
var lowerVal = colorRanges[_i - 1];
|
|
437
|
-
var tau = (value - lowerVal) / (upperVal - lowerVal);
|
|
418
|
+
var tau = (value - lowerVal) / (upperVal - lowerVal);
|
|
438
419
|
|
|
420
|
+
// deal with special case when the upper and lower and bounds of the colorRange is equal
|
|
439
421
|
if (upperVal === lowerVal) {
|
|
440
422
|
if (value === 0) {
|
|
441
423
|
// user prolly expects lower end of color range if value is zero
|
|
@@ -450,9 +432,8 @@ var format_colorGradientFormat = function colorGradientFormat(value, _ref5, data
|
|
|
450
432
|
return external_chroma_js_default.a.scale([lowerColor, upperColor])(tau).hex().toUpperCase();
|
|
451
433
|
}
|
|
452
434
|
}
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
|
|
435
|
+
}
|
|
436
|
+
// eslint-disable-next-line
|
|
456
437
|
errorHandler("".concat(INVALID_VALUE, " ").concat(value));
|
|
457
438
|
return errorColor();
|
|
458
439
|
};
|
|
@@ -468,10 +449,10 @@ var newFormatterErrorHandler = function newFormatterErrorHandler(maxErrors, hand
|
|
|
468
449
|
if (errorCount < maxErrors) {
|
|
469
450
|
handlerFunc(msg);
|
|
470
451
|
}
|
|
471
|
-
|
|
472
452
|
errorCount += 1;
|
|
473
453
|
};
|
|
474
454
|
};
|
|
455
|
+
|
|
475
456
|
/**
|
|
476
457
|
* returns a formatter function based on a format config
|
|
477
458
|
* @param {Object} formatCfg formatter config
|
|
@@ -480,50 +461,44 @@ var newFormatterErrorHandler = function newFormatterErrorHandler(maxErrors, hand
|
|
|
480
461
|
* @param {string[]|number[]} formatCfg.categories an array of categories. categories are used for a 1:1 mapping to values. requires formatCfg.values
|
|
481
462
|
* @param {number[]} data the data to be formatted
|
|
482
463
|
*/
|
|
483
|
-
|
|
484
464
|
var getFormatter = function getFormatter(data) {
|
|
485
465
|
var formatCfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
486
|
-
|
|
487
466
|
if (formatCfg.type) {
|
|
488
467
|
if (formatters[formatCfg.type]) {
|
|
489
468
|
// @TODO(pwied):
|
|
490
469
|
// future: should formatters have prepare stage where params are validated
|
|
491
470
|
// and additional formatting context is generated (e.g. min & max value)
|
|
492
471
|
return function (value) {
|
|
493
|
-
return formatters[formatCfg.type](value, formatCfg, data,
|
|
472
|
+
return formatters[formatCfg.type](value, formatCfg, data,
|
|
473
|
+
// eslint-disable-next-line no-console
|
|
494
474
|
newFormatterErrorHandler(MAX_LOGGED_FORMATTER_ERRORS, function (msg) {
|
|
495
475
|
return console.warn(msg);
|
|
496
476
|
}));
|
|
497
477
|
};
|
|
498
478
|
}
|
|
499
|
-
|
|
500
479
|
return function (value) {
|
|
501
480
|
return value;
|
|
502
481
|
};
|
|
503
|
-
}
|
|
482
|
+
}
|
|
483
|
+
// @TODO(pwied):
|
|
504
484
|
// - remove post beta deadline
|
|
505
485
|
// - move to formatters with type option
|
|
506
486
|
// - leaving it here for now because Choropleth builds on it
|
|
507
|
-
|
|
508
|
-
|
|
509
487
|
var ranges = formatCfg.ranges,
|
|
510
|
-
|
|
511
|
-
|
|
488
|
+
values = formatCfg.values;
|
|
512
489
|
if (values) {
|
|
513
490
|
if (ranges) {
|
|
514
491
|
return function (value) {
|
|
515
492
|
return rangeFormat(value, formatCfg);
|
|
516
493
|
};
|
|
517
494
|
}
|
|
518
|
-
|
|
519
495
|
if (formatCfg.categories) {
|
|
520
496
|
return function (value) {
|
|
521
497
|
return categoryFormat(value, formatCfg);
|
|
522
498
|
};
|
|
523
499
|
}
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
|
|
500
|
+
}
|
|
501
|
+
// eslint-disable-next-line
|
|
527
502
|
console.warn('Could not find a formatter. Falling back to identity fn');
|
|
528
503
|
return function (value) {
|
|
529
504
|
return value;
|
|
@@ -536,6 +511,7 @@ var isFinite_default = /*#__PURE__*/__webpack_require__.n(isFinite_);
|
|
|
536
511
|
// CONCATENATED MODULE: ./src/util/types.js
|
|
537
512
|
|
|
538
513
|
|
|
514
|
+
|
|
539
515
|
/**
|
|
540
516
|
* getDataTypeForPoint
|
|
541
517
|
* naive implementation of checking for the data type of a single data point
|
|
@@ -545,23 +521,20 @@ var isFinite_default = /*#__PURE__*/__webpack_require__.n(isFinite_);
|
|
|
545
521
|
* @param {any} dataPoint
|
|
546
522
|
* @return {string} type
|
|
547
523
|
*/
|
|
548
|
-
|
|
549
524
|
var types_getDataTypeForPoint = function getDataTypeForPoint(dataPoint) {
|
|
550
525
|
if (isFinite_default()(+dataPoint) && isNumber_default()(+dataPoint)) {
|
|
551
526
|
return 'number';
|
|
552
527
|
}
|
|
553
|
-
|
|
554
528
|
if (!Number.isNaN(Date.parse(dataPoint))) {
|
|
555
529
|
return 'time';
|
|
556
530
|
}
|
|
557
|
-
|
|
558
531
|
if (typeof dataPoint === 'string') {
|
|
559
532
|
return 'string';
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
|
|
533
|
+
}
|
|
534
|
+
// nulls, objects, etc
|
|
563
535
|
return 'unknown';
|
|
564
536
|
};
|
|
537
|
+
|
|
565
538
|
/**
|
|
566
539
|
* inferDataTypeFromSample
|
|
567
540
|
* based on a number of data points this function determines the data type for all of them
|
|
@@ -570,7 +543,6 @@ var types_getDataTypeForPoint = function getDataTypeForPoint(dataPoint) {
|
|
|
570
543
|
* @param {Array} dataSample an array of arbitrary size containing data points of any data type
|
|
571
544
|
* @return {string} type the most common type in the sample
|
|
572
545
|
*/
|
|
573
|
-
|
|
574
546
|
var inferDataTypeFromSample = function inferDataTypeFromSample(dataSample) {
|
|
575
547
|
var typeMatches = {
|
|
576
548
|
time: 0,
|
|
@@ -591,6 +563,7 @@ var inferDataTypeFromSample = function inferDataTypeFromSample(dataSample) {
|
|
|
591
563
|
});
|
|
592
564
|
return returnType;
|
|
593
565
|
};
|
|
566
|
+
|
|
594
567
|
/**
|
|
595
568
|
* based on a data array (e.g. one data column) this function returns a tiny sample of it
|
|
596
569
|
* @TODO: very naive approach. there's papers with more advanced techniques but for now this should be very fast
|
|
@@ -598,55 +571,39 @@ var inferDataTypeFromSample = function inferDataTypeFromSample(dataSample) {
|
|
|
598
571
|
* @param {Array} data to draw a sample from
|
|
599
572
|
* @return {Array} a sample of the passed data
|
|
600
573
|
*/
|
|
601
|
-
|
|
602
574
|
var drawSample = function drawSample(data) {
|
|
603
575
|
if (data.length > 2) {
|
|
604
576
|
return [data[0], data[Math.floor(data.length / 2)], data[data.length - 1]];
|
|
605
577
|
}
|
|
606
|
-
|
|
607
578
|
if (data.length === 2) {
|
|
608
579
|
return [data[0], data[1]];
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
|
|
580
|
+
}
|
|
581
|
+
// small enough to check everything
|
|
612
582
|
return data;
|
|
613
583
|
};
|
|
614
584
|
// CONCATENATED MODULE: ./src/Base.js
|
|
615
585
|
|
|
616
586
|
|
|
617
587
|
|
|
618
|
-
|
|
619
588
|
function ownKeys(object, enumerableOnly) {
|
|
620
589
|
var keys = Object.keys(object);
|
|
621
|
-
|
|
622
590
|
if (Object.getOwnPropertySymbols) {
|
|
623
591
|
var symbols = Object.getOwnPropertySymbols(object);
|
|
624
|
-
|
|
592
|
+
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
625
593
|
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
626
|
-
});
|
|
627
|
-
keys.push.apply(keys, symbols);
|
|
594
|
+
})), keys.push.apply(keys, symbols);
|
|
628
595
|
}
|
|
629
|
-
|
|
630
596
|
return keys;
|
|
631
597
|
}
|
|
632
|
-
|
|
633
598
|
function _objectSpread(target) {
|
|
634
599
|
for (var i = 1; i < arguments.length; i++) {
|
|
635
|
-
var source = arguments[i]
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
} else if (Object.getOwnPropertyDescriptors) {
|
|
642
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
643
|
-
} else {
|
|
644
|
-
ownKeys(Object(source)).forEach(function (key) {
|
|
645
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
646
|
-
});
|
|
647
|
-
}
|
|
600
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
601
|
+
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
602
|
+
defineProperty_default()(target, key, source[key]);
|
|
603
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
604
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
605
|
+
});
|
|
648
606
|
}
|
|
649
|
-
|
|
650
607
|
return target;
|
|
651
608
|
}
|
|
652
609
|
|
|
@@ -655,8 +612,6 @@ function _objectSpread(target) {
|
|
|
655
612
|
|
|
656
613
|
|
|
657
614
|
|
|
658
|
-
|
|
659
|
-
|
|
660
615
|
var getDataForDataSourceType = function getDataForDataSourceType(data, dataSourceType) {
|
|
661
616
|
if (!dataSourceType || !data[dataSourceType] || !data[dataSourceType].data) {
|
|
662
617
|
// @TODO: warn about datasource type not being found
|
|
@@ -665,7 +620,6 @@ var getDataForDataSourceType = function getDataForDataSourceType(data, dataSourc
|
|
|
665
620
|
columns: []
|
|
666
621
|
};
|
|
667
622
|
}
|
|
668
|
-
|
|
669
623
|
return data[dataSourceType].data;
|
|
670
624
|
};
|
|
671
625
|
/*
|
|
@@ -673,20 +627,16 @@ var getDataForDataSourceType = function getDataForDataSourceType(data, dataSourc
|
|
|
673
627
|
* @param {String} fieldIndexRangeStr '0:', '0:5', ':5'
|
|
674
628
|
* @returns {Object} info about parsed range if there is any
|
|
675
629
|
*/
|
|
676
|
-
|
|
677
|
-
|
|
678
630
|
var Base_parseFieldRangeReference = function parseFieldRangeReference(fieldIndexRangeStr) {
|
|
679
631
|
if (!fieldIndexRangeStr || fieldIndexRangeStr.indexOf(':') === -1) {
|
|
680
632
|
return {
|
|
681
633
|
isFieldIndexRange: false
|
|
682
634
|
};
|
|
683
635
|
}
|
|
684
|
-
|
|
685
636
|
var _fieldIndexRangeStr$s = fieldIndexRangeStr.split(':'),
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
637
|
+
_fieldIndexRangeStr$s2 = slicedToArray_default()(_fieldIndexRangeStr$s, 2),
|
|
638
|
+
fromFieldIndexStr = _fieldIndexRangeStr$s2[0],
|
|
639
|
+
toFieldIndexStr = _fieldIndexRangeStr$s2[1];
|
|
690
640
|
return {
|
|
691
641
|
isFieldIndexRange: true,
|
|
692
642
|
fromFieldIndex: Number.isNaN(Number(fromFieldIndexStr)) || !fromFieldIndexStr ? 0 : Number(fromFieldIndexStr),
|
|
@@ -698,7 +648,6 @@ var Base_parseFieldRangeReference = function parseFieldRangeReference(fieldIndex
|
|
|
698
648
|
* @param {String} fieldReferenceStr 'primary[1][123]'
|
|
699
649
|
* @returns {Object} { fieldIndex: 1, columnIndex: 123, isFieldIndexRange: true, fromFieldIndexRange: 0, toFieldIndexRange: 3 }
|
|
700
650
|
*/
|
|
701
|
-
|
|
702
651
|
var parseIndexBasedFieldReference = function parseIndexBasedFieldReference(fieldReferenceStr) {
|
|
703
652
|
var indices = fieldReferenceStr.replace(/^[A-Za-z0-9]+/, '').replace(/\[/g, '').replace(/\]/g, ',').split(',');
|
|
704
653
|
var dataSourceName = fieldReferenceStr.match(/^[A-Za-z0-9]+/)[0];
|
|
@@ -709,12 +658,12 @@ var parseIndexBasedFieldReference = function parseIndexBasedFieldReference(field
|
|
|
709
658
|
columnIndex: Number.isNaN(Number(indices[1])) || !indices[1] ? null : Number(indices[1])
|
|
710
659
|
}, fieldRange);
|
|
711
660
|
};
|
|
661
|
+
|
|
712
662
|
/*
|
|
713
663
|
* parse fieldReferenceStr to get field name and column index for user defined encoding. e.g. 'primary.color[123]'
|
|
714
664
|
* @param {String} fieldReferenceStr 'primary.color[123]'
|
|
715
665
|
* @returns {Object} { fieldName: 'color', columnIndex: 123 }
|
|
716
666
|
*/
|
|
717
|
-
|
|
718
667
|
var parseNameBasedFieldReference = function parseNameBasedFieldReference(fieldReferenceStr) {
|
|
719
668
|
var dataSourceName = fieldReferenceStr.match(/^[A-Za-z0-9]+/)[0];
|
|
720
669
|
var fieldNameStr = fieldReferenceStr.split('.')[1];
|
|
@@ -727,54 +676,42 @@ var parseNameBasedFieldReference = function parseNameBasedFieldReference(fieldRe
|
|
|
727
676
|
columnIndex: columnIndex
|
|
728
677
|
};
|
|
729
678
|
};
|
|
730
|
-
|
|
731
679
|
var Base_getDataForIndexBasedFieldReference = function getDataForIndexBasedFieldReference(data, fieldReferenceStr) {
|
|
732
680
|
var fields = data.fields,
|
|
733
|
-
|
|
734
|
-
|
|
681
|
+
columns = data.columns;
|
|
735
682
|
var _parseIndexBasedField = parseIndexBasedFieldReference(fieldReferenceStr),
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
683
|
+
dataSourceName = _parseIndexBasedField.dataSourceName,
|
|
684
|
+
isFieldIndexRange = _parseIndexBasedField.isFieldIndexRange,
|
|
685
|
+
fromFieldIndex = _parseIndexBasedField.fromFieldIndex,
|
|
686
|
+
toFieldIndex = _parseIndexBasedField.toFieldIndex,
|
|
687
|
+
fieldIndex = _parseIndexBasedField.fieldIndex,
|
|
688
|
+
columnIndex = _parseIndexBasedField.columnIndex;
|
|
743
689
|
if (isFieldIndexRange) {
|
|
744
690
|
var dataForRange = [];
|
|
745
|
-
|
|
746
691
|
if (fromFieldIndex > -1) {
|
|
747
692
|
var endIndex = toFieldIndex > -1 ? Math.min(fields.length - 1, toFieldIndex) : fields.length + toFieldIndex;
|
|
748
|
-
|
|
749
693
|
for (var i = fromFieldIndex; i <= endIndex; i += 1) {
|
|
750
694
|
dataForRange.push(getDataForIndexBasedFieldReference(data, "".concat(dataSourceName, "[").concat(i, "][").concat(columnIndex, "]")));
|
|
751
695
|
}
|
|
752
|
-
|
|
753
696
|
return dataForRange;
|
|
754
697
|
}
|
|
755
698
|
}
|
|
756
|
-
|
|
757
699
|
if (isNumber_default()(fieldIndex)) {
|
|
758
700
|
var isNegative = fieldIndex < 0;
|
|
759
701
|
var absoluteIndex = Math.abs(fieldIndex);
|
|
760
|
-
|
|
761
702
|
if (isNegative && absoluteIndex > fields.length || !isNegative && fieldIndex > fields.length - 1) {
|
|
762
703
|
// The field index is out of bounds
|
|
763
704
|
return {};
|
|
764
705
|
}
|
|
765
|
-
|
|
766
706
|
var correctedFieldIndex = isNegative ? fields.length - absoluteIndex : fieldIndex;
|
|
767
707
|
var fieldName = typeof_default()(fields[correctedFieldIndex]) === 'object' ? fields[correctedFieldIndex].name : fields[correctedFieldIndex];
|
|
768
708
|
var fieldData;
|
|
769
|
-
|
|
770
709
|
if (isNumber_default()(columnIndex)) {
|
|
771
710
|
var isNegativeColumnIndex = columnIndex < 0;
|
|
772
|
-
|
|
773
711
|
if (isNegativeColumnIndex && columnIndex < -columns[correctedFieldIndex].length || columnIndex >= columns[correctedFieldIndex].length) {
|
|
774
712
|
// The column index is out of bounds
|
|
775
713
|
return {};
|
|
776
714
|
}
|
|
777
|
-
|
|
778
715
|
var correctColumnIndex = isNegativeColumnIndex ? columns[correctedFieldIndex].length + columnIndex : columnIndex;
|
|
779
716
|
fieldData = columns[correctedFieldIndex].map(function () {
|
|
780
717
|
return columns[correctedFieldIndex][correctColumnIndex];
|
|
@@ -782,41 +719,31 @@ var Base_getDataForIndexBasedFieldReference = function getDataForIndexBasedField
|
|
|
782
719
|
} else {
|
|
783
720
|
fieldData = columns[correctedFieldIndex];
|
|
784
721
|
}
|
|
785
|
-
|
|
786
722
|
return {
|
|
787
723
|
fieldName: fieldName,
|
|
788
724
|
data: fieldData
|
|
789
725
|
};
|
|
790
726
|
}
|
|
791
|
-
|
|
792
727
|
return {};
|
|
793
728
|
};
|
|
794
|
-
|
|
795
729
|
var Base_getDataForNameBasedFieldReference = function getDataForNameBasedFieldReference(data, fieldReferenceStr) {
|
|
796
730
|
var fields = data.fields,
|
|
797
|
-
|
|
798
|
-
|
|
731
|
+
columns = data.columns;
|
|
799
732
|
var _parseNameBasedFieldR = parseNameBasedFieldReference(fieldReferenceStr),
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
733
|
+
fieldName = _parseNameBasedFieldR.fieldName,
|
|
734
|
+
columnIndex = _parseNameBasedFieldR.columnIndex; // <datasource>.<fieldname>[0]
|
|
804
735
|
if (fieldName) {
|
|
805
736
|
var fieldIndex = findIndex_default()(fields, function (field) {
|
|
806
737
|
return typeof_default()(field) === 'object' ? field.name === fieldName : field === fieldName;
|
|
807
738
|
});
|
|
808
|
-
|
|
809
739
|
if (fieldIndex > -1) {
|
|
810
740
|
var fieldData;
|
|
811
|
-
|
|
812
741
|
if (isNumber_default()(columnIndex)) {
|
|
813
742
|
var isNegativeColumnIndex = columnIndex < 0;
|
|
814
|
-
|
|
815
743
|
if (isNegativeColumnIndex && columnIndex < -columns[fieldIndex].length || columnIndex >= columns[fieldIndex].length) {
|
|
816
744
|
// The column index is out of bounds
|
|
817
745
|
return {};
|
|
818
746
|
}
|
|
819
|
-
|
|
820
747
|
var correctColumnIndex = isNegativeColumnIndex ? columns[fieldIndex].length + columnIndex : columnIndex;
|
|
821
748
|
fieldData = columns[fieldIndex].map(function () {
|
|
822
749
|
return columns[fieldIndex][correctColumnIndex];
|
|
@@ -824,100 +751,80 @@ var Base_getDataForNameBasedFieldReference = function getDataForNameBasedFieldRe
|
|
|
824
751
|
} else {
|
|
825
752
|
fieldData = columns[fieldIndex];
|
|
826
753
|
}
|
|
827
|
-
|
|
828
754
|
return {
|
|
829
755
|
fieldName: fieldName,
|
|
830
756
|
data: fieldData
|
|
831
757
|
};
|
|
832
|
-
}
|
|
833
|
-
|
|
834
|
-
|
|
758
|
+
}
|
|
759
|
+
// eslint-disable-next-line
|
|
835
760
|
console.warn("field '".concat(fieldName, "' not available."));
|
|
836
761
|
return {};
|
|
837
762
|
}
|
|
838
|
-
|
|
839
763
|
return {};
|
|
840
764
|
};
|
|
841
|
-
|
|
842
765
|
var Base_getDataForFieldReference = function getDataForFieldReference(dataSources, fieldReference) {
|
|
843
766
|
var fieldReferenceStr = fieldReference;
|
|
844
767
|
var formatValue;
|
|
845
|
-
|
|
846
768
|
if (Array.isArray(fieldReference) && !fieldReference.isDefault) {
|
|
847
769
|
return fieldReference.map(function (ref) {
|
|
848
770
|
return getDataForFieldReference(dataSources, ref);
|
|
849
771
|
});
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
|
|
772
|
+
}
|
|
773
|
+
// if the reference is a default and there is multiple default fields to fall back
|
|
853
774
|
if (fieldReference.isDefault && Array.isArray(fieldReference.field)) {
|
|
854
775
|
// iterate through all defaults and check whether the data type matches the expected type
|
|
855
776
|
for (var i = 0; i < fieldReference.field.length; i += 1) {
|
|
856
777
|
fieldReferenceStr = fieldReference.field[i];
|
|
857
778
|
var dataFromDefault = getDataForFieldReference(dataSources, fieldReferenceStr);
|
|
858
|
-
|
|
859
779
|
if (Array.isArray(dataFromDefault.data)) {
|
|
860
780
|
var type = inferDataTypeFromSample(drawSample(dataFromDefault.data));
|
|
861
|
-
|
|
862
781
|
if (fieldReference.type.indexOf(type) > -1) {
|
|
863
782
|
return dataFromDefault;
|
|
864
783
|
}
|
|
865
784
|
}
|
|
866
|
-
}
|
|
867
|
-
|
|
785
|
+
}
|
|
786
|
+
// if none of the defaults matched the data type use the last default
|
|
868
787
|
}
|
|
869
788
|
|
|
870
789
|
if (typeof_default()(fieldReference) === 'object') {
|
|
871
790
|
var field = fieldReference.field;
|
|
872
|
-
|
|
873
791
|
if (field && !Array.isArray(field)) {
|
|
874
792
|
fieldReferenceStr = field;
|
|
875
793
|
}
|
|
876
794
|
}
|
|
877
|
-
|
|
878
795
|
var indexBasedRegx = /^[A-Za-z0-9_]+\[.*\].*$/;
|
|
879
796
|
var nameBasedRegx = /^[A-Za-z0-9_]+\..*$/;
|
|
880
797
|
var isIndexBasedReference = indexBasedRegx.test(fieldReferenceStr);
|
|
881
798
|
var isNameBasedReference = nameBasedRegx.test(fieldReferenceStr);
|
|
882
|
-
|
|
883
799
|
if (!isIndexBasedReference && !isNameBasedReference) {
|
|
884
800
|
// Unable to parse the encoding. Please verify the encoding format is correct
|
|
885
801
|
return {};
|
|
886
802
|
}
|
|
887
|
-
|
|
888
803
|
var dataSourceType = fieldReferenceStr.match(/^(.*?)(\.|\[)/)[1];
|
|
889
804
|
var data = getDataForDataSourceType(dataSources, dataSourceType);
|
|
890
805
|
var fieldData;
|
|
891
|
-
|
|
892
806
|
if (isIndexBasedReference) {
|
|
893
807
|
fieldData = Base_getDataForIndexBasedFieldReference(data, fieldReferenceStr);
|
|
894
808
|
} else {
|
|
895
809
|
fieldData = Base_getDataForNameBasedFieldReference(data, fieldReferenceStr);
|
|
896
810
|
}
|
|
897
|
-
|
|
898
811
|
if (typeof_default()(fieldReference) === 'object') {
|
|
899
812
|
var format = fieldReference.format;
|
|
900
|
-
|
|
901
813
|
if (format) {
|
|
902
814
|
formatValue = getFormatter(fieldData.data, format);
|
|
903
815
|
}
|
|
904
816
|
}
|
|
905
|
-
|
|
906
817
|
if (formatValue && !isEmpty_default()(fieldData)) {
|
|
907
818
|
return {
|
|
908
819
|
fieldName: fieldData.fieldName,
|
|
909
820
|
data: fieldData.data.map(formatValue)
|
|
910
821
|
};
|
|
911
822
|
}
|
|
912
|
-
|
|
913
823
|
return fieldData;
|
|
914
824
|
};
|
|
915
|
-
|
|
916
825
|
var Base_mergeEncoding = function mergeEncoding(defaultEncoding) {
|
|
917
826
|
var userDefinedEncoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
918
|
-
|
|
919
827
|
var mergedEncoding = _objectSpread({}, userDefinedEncoding);
|
|
920
|
-
|
|
921
828
|
Object.keys(defaultEncoding).forEach(function (key) {
|
|
922
829
|
if (isEmpty_default()(userDefinedEncoding[key]) && defaultEncoding[key].isRequired && defaultEncoding[key].default) {
|
|
923
830
|
mergedEncoding[key] = typeof_default()(defaultEncoding[key].default) === 'object' && !Array.isArray(defaultEncoding[key].default) ? _objectSpread(_objectSpread({}, defaultEncoding[key].default), {}, {
|
|
@@ -941,26 +848,25 @@ var Base_parse = function parse(dataSources) {
|
|
|
941
848
|
}
|
|
942
849
|
};
|
|
943
850
|
Object.keys(encoding).forEach(function (key) {
|
|
944
|
-
var fieldReference = clone_default()(encoding[key]);
|
|
851
|
+
var fieldReference = clone_default()(encoding[key]);
|
|
945
852
|
|
|
853
|
+
// handle the case for encoding field reference, for example fill: 'encoding.trend'
|
|
946
854
|
if (typeof_default()(fieldReference) === 'object' && fieldReference.field && fieldReference.field.indexOf('encoding') === 0) {
|
|
947
|
-
var replacedKey = fieldReference.field.split('.')[1];
|
|
948
|
-
// `encoding.z` if `z` is not a valid field in encoding
|
|
855
|
+
var replacedKey = fieldReference.field.split('.')[1];
|
|
949
856
|
|
|
857
|
+
// return for the below invalid cases
|
|
858
|
+
// `encoding.z` if `z` is not a valid field in encoding
|
|
950
859
|
if (!encoding[replacedKey]) {
|
|
951
860
|
// eslint-disable-next-line
|
|
952
861
|
console.warn("".concat(key, " field cannot refer to 'encoding.").concat(replacedKey, "'."));
|
|
953
|
-
}
|
|
954
|
-
|
|
955
|
-
|
|
862
|
+
}
|
|
863
|
+
// if `z` is an object configuration in encoding simply extract the field when refering `encoding.z`
|
|
956
864
|
var field = typeof_default()(encoding[replacedKey]) === 'object' ? encoding[replacedKey].field : encoding[replacedKey];
|
|
957
865
|
fieldReference = _objectSpread(_objectSpread({}, fieldReference), {}, {
|
|
958
866
|
field: field
|
|
959
867
|
});
|
|
960
868
|
}
|
|
961
|
-
|
|
962
869
|
var dataForFieldReference = Base_getDataForFieldReference(dataSources, fieldReference);
|
|
963
|
-
|
|
964
870
|
if (Array.isArray(dataForFieldReference)) {
|
|
965
871
|
parsedOutput[key] = dataForFieldReference.map(function (entry) {
|
|
966
872
|
return entry.data;
|
|
@@ -969,19 +875,16 @@ var Base_parse = function parse(dataSources) {
|
|
|
969
875
|
return entry.fieldName;
|
|
970
876
|
}); // eslint-disable-line no-underscore-dangle
|
|
971
877
|
// eslint-disable-next-line no-underscore-dangle
|
|
972
|
-
|
|
973
878
|
parsedOutput._meta.types[key] = dataForFieldReference.map(function (entry) {
|
|
974
879
|
return inferDataTypeFromSample(drawSample(entry.data));
|
|
975
880
|
});
|
|
976
881
|
} else {
|
|
977
882
|
var fieldName = dataForFieldReference.fieldName,
|
|
978
|
-
|
|
979
|
-
|
|
883
|
+
data = dataForFieldReference.data;
|
|
980
884
|
if (fieldName) {
|
|
981
885
|
parsedOutput[key] = data;
|
|
982
886
|
parsedOutput._meta.fieldNames[key] = fieldName; // eslint-disable-line no-underscore-dangle
|
|
983
887
|
// eslint-disable-next-line no-underscore-dangle
|
|
984
|
-
|
|
985
888
|
parsedOutput._meta.types[key] = inferDataTypeFromSample(drawSample(data));
|
|
986
889
|
}
|
|
987
890
|
}
|