UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

105 lines (102 loc) 15.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.TOOLTIP_MINUS_SIGN = exports.NEGATIVE_SIGNS = exports.BRUSH_CONFIG = void 0; exports.findFieldsToShow = findFieldsToShow; exports.getTooltipDisplayDeltaValue = getTooltipDisplayDeltaValue; exports.getTooltipDisplayValue = getTooltipDisplayValue; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/constants/src"); var _src2 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/utils/src"); var _src3 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/common-utils/src"); // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project /** * Minus sign used in tooltip formatting. * \u2212 or \u002D is the minus sign that d3-format uses for decimal number formatting * d3-format 2.0 uses \u002D */ var TOOLTIP_MINUS_SIGN = exports.TOOLTIP_MINUS_SIGN = "\u2212"; // both are posible negative signs var NEGATIVE_SIGNS = exports.NEGATIVE_SIGNS = ["-", "\u2212"]; var BRUSH_CONFIG = exports.BRUSH_CONFIG = { range: [0, 50] }; function findFieldsToShow(_ref) { var fields = _ref.fields, id = _ref.id, maxDefaultTooltips = _ref.maxDefaultTooltips; // first find default tooltip fields for trips var fieldsToShow = _src.DEFAULT_TOOLTIP_FIELDS.reduce(function (prev, curr) { if (fields.find(function (_ref2) { var name = _ref2.name; return curr.name === name; })) { // @ts-ignore prev.push(curr); } return prev; }, []); return (0, _defineProperty2["default"])({}, id, fieldsToShow.length ? fieldsToShow : autoFindTooltipFields(fields, maxDefaultTooltips)); } function autoFindTooltipFields(fields, maxDefaultTooltips) { var ptFields = _mergeFieldPairs(_src.TRIP_POINT_FIELDS); // filter out the default fields that contains lat and lng and any geometry var fieldsToShow = fields.filter(function (_ref4) { var name = _ref4.name, type = _ref4.type; return name.replace(/[_,.]+/g, ' ').trim().split(' ').every(function (seg) { return !ptFields.includes(seg); }) && type !== _src.ALL_FIELD_TYPES.geojson && type !== _src.ALL_FIELD_TYPES.geoarrow && type !== 'object'; }); return fieldsToShow.slice(0, maxDefaultTooltips).map(function (_ref5) { var name = _ref5.name; return { name: name, format: null }; }); } function _mergeFieldPairs(pairs) { return pairs.reduce(function (prev, pair) { return [].concat((0, _toConsumableArray2["default"])(prev), (0, _toConsumableArray2["default"])(pair)); }, []); } function getTooltipDisplayDeltaValue(_ref6) { var field = _ref6.field, value = _ref6.value, primaryValue = _ref6.primaryValue, compareType = _ref6.compareType; var displayDeltaValue = null; if ( // comparison mode only works for numeric field field.type === _src.ALL_FIELD_TYPES.integer || field.type === _src.ALL_FIELD_TYPES.real) { if ((0, _src2.isNumber)(primaryValue) && (0, _src2.isNumber)(value)) { var deltaValue = compareType === _src.COMPARE_TYPES.RELATIVE ? value / primaryValue - 1 : value - primaryValue; var deltaFormat = compareType === _src.COMPARE_TYPES.RELATIVE ? _src.TOOLTIP_FORMATS.DECIMAL_PERCENT_FULL_2[_src.TOOLTIP_KEY] : field.displayFormat || _src.TOOLTIP_FORMATS.DECIMAL_DECIMAL_FIXED_3[_src.TOOLTIP_KEY]; displayDeltaValue = (0, _src2.getFormatter)(deltaFormat, field)(deltaValue); // safely cast string displayDeltaValue = (0, _src2.defaultFormatter)(displayDeltaValue); var deltaFirstChar = displayDeltaValue.charAt(0); if (deltaFirstChar !== '+' && !NEGATIVE_SIGNS.includes(deltaFirstChar)) { displayDeltaValue = "+".concat(displayDeltaValue); } } else { displayDeltaValue = TOOLTIP_MINUS_SIGN; } } return displayDeltaValue; } function getTooltipDisplayValue(_ref7) { var item = _ref7.item, field = _ref7.field, value = _ref7.value; if (!(0, _src3.notNullorUndefined)(value)) { return ''; } return item !== null && item !== void 0 && item.format ? (0, _src2.getFormatter)(item === null || item === void 0 ? void 0 : item.format, field)(value) : field.displayFormat ? (0, _src2.getFormatter)(field.displayFormat, field)(value) : (0, _src2.parseFieldValue)(value, field.type); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3JjIiwicmVxdWlyZSIsIl9zcmMyIiwiX3NyYzMiLCJUT09MVElQX01JTlVTX1NJR04iLCJleHBvcnRzIiwiTkVHQVRJVkVfU0lHTlMiLCJCUlVTSF9DT05GSUciLCJyYW5nZSIsImZpbmRGaWVsZHNUb1Nob3ciLCJfcmVmIiwiZmllbGRzIiwiaWQiLCJtYXhEZWZhdWx0VG9vbHRpcHMiLCJmaWVsZHNUb1Nob3ciLCJERUZBVUxUX1RPT0xUSVBfRklFTERTIiwicmVkdWNlIiwicHJldiIsImN1cnIiLCJmaW5kIiwiX3JlZjIiLCJuYW1lIiwicHVzaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJsZW5ndGgiLCJhdXRvRmluZFRvb2x0aXBGaWVsZHMiLCJwdEZpZWxkcyIsIl9tZXJnZUZpZWxkUGFpcnMiLCJUUklQX1BPSU5UX0ZJRUxEUyIsImZpbHRlciIsIl9yZWY0IiwidHlwZSIsInJlcGxhY2UiLCJ0cmltIiwic3BsaXQiLCJldmVyeSIsInNlZyIsImluY2x1ZGVzIiwiQUxMX0ZJRUxEX1RZUEVTIiwiZ2VvanNvbiIsImdlb2Fycm93Iiwic2xpY2UiLCJtYXAiLCJfcmVmNSIsImZvcm1hdCIsInBhaXJzIiwicGFpciIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUiLCJfcmVmNiIsImZpZWxkIiwidmFsdWUiLCJwcmltYXJ5VmFsdWUiLCJjb21wYXJlVHlwZSIsImRpc3BsYXlEZWx0YVZhbHVlIiwiaW50ZWdlciIsInJlYWwiLCJpc051bWJlciIsImRlbHRhVmFsdWUiLCJDT01QQVJFX1RZUEVTIiwiUkVMQVRJVkUiLCJkZWx0YUZvcm1hdCIsIlRPT0xUSVBfRk9STUFUUyIsIkRFQ0lNQUxfUEVSQ0VOVF9GVUxMXzIiLCJUT09MVElQX0tFWSIsImRpc3BsYXlGb3JtYXQiLCJERUNJTUFMX0RFQ0lNQUxfRklYRURfMyIsImdldEZvcm1hdHRlciIsImRlZmF1bHRGb3JtYXR0ZXIiLCJkZWx0YUZpcnN0Q2hhciIsImNoYXJBdCIsImdldFRvb2x0aXBEaXNwbGF5VmFsdWUiLCJfcmVmNyIsIml0ZW0iLCJub3ROdWxsb3JVbmRlZmluZWQiLCJwYXJzZUZpZWxkVmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVkdWNlcnMvc3JjL2ludGVyYWN0aW9uLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfVE9PTFRJUF9GSUVMRFMsXG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVFJJUF9QT0lOVF9GSUVMRFMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9LRVksXG4gIENPTVBBUkVfVFlQRVNcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge0ZpZWxkLCBUb29sdGlwRmllbGQsIENvbXBhcmVUeXBlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7cGFyc2VGaWVsZFZhbHVlLCBnZXRGb3JtYXR0ZXIsIGlzTnVtYmVyLCBkZWZhdWx0Rm9ybWF0dGVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5cbi8qKlxuICogTWludXMgc2lnbiB1c2VkIGluIHRvb2x0aXAgZm9ybWF0dGluZy5cbiAqIFxcdTIyMTIgb3IgXFx1MDAyRCBpcyB0aGUgbWludXMgc2lnbiB0aGF0IGQzLWZvcm1hdCB1c2VzIGZvciBkZWNpbWFsIG51bWJlciBmb3JtYXR0aW5nXG4gKiBkMy1mb3JtYXQgMi4wIHVzZXMgXFx1MDAyRFxuICovXG5leHBvcnQgY29uc3QgVE9PTFRJUF9NSU5VU19TSUdOID0gJ1xcdTIyMTInO1xuLy8gYm90aCBhcmUgcG9zaWJsZSBuZWdhdGl2ZSBzaWduc1xuZXhwb3J0IGNvbnN0IE5FR0FUSVZFX1NJR05TID0gWydcXHUwMDJEJywgJ1xcdTIyMTInXTtcblxuZXhwb3J0IGNvbnN0IEJSVVNIX0NPTkZJRzoge1xuICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbn0gPSB7XG4gIHJhbmdlOiBbMCwgNTBdXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZEZpZWxkc1RvU2hvdyh7XG4gIGZpZWxkcyxcbiAgaWQsXG4gIG1heERlZmF1bHRUb29sdGlwc1xufToge1xuICBmaWVsZHM6IEZpZWxkW107XG4gIGlkOiBzdHJpbmc7XG4gIG1heERlZmF1bHRUb29sdGlwczogbnVtYmVyO1xufSk6IHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nW107XG59IHtcbiAgLy8gZmlyc3QgZmluZCBkZWZhdWx0IHRvb2x0aXAgZmllbGRzIGZvciB0cmlwc1xuICBjb25zdCBmaWVsZHNUb1Nob3cgPSBERUZBVUxUX1RPT0xUSVBfRklFTERTLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgIGlmIChmaWVsZHMuZmluZCgoe25hbWV9KSA9PiBjdXJyLm5hbWUgPT09IG5hbWUpKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBwcmV2LnB1c2goY3Vycik7XG4gICAgfVxuICAgIHJldHVybiBwcmV2O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBbaWRdOiBmaWVsZHNUb1Nob3cubGVuZ3RoID8gZmllbGRzVG9TaG93IDogYXV0b0ZpbmRUb29sdGlwRmllbGRzKGZpZWxkcywgbWF4RGVmYXVsdFRvb2x0aXBzKVxuICB9O1xufVxuXG5mdW5jdGlvbiBhdXRvRmluZFRvb2x0aXBGaWVsZHMoZmllbGRzLCBtYXhEZWZhdWx0VG9vbHRpcHMpIHtcbiAgY29uc3QgcHRGaWVsZHMgPSBfbWVyZ2VGaWVsZFBhaXJzKFRSSVBfUE9JTlRfRklFTERTKTtcbiAgLy8gZmlsdGVyIG91dCB0aGUgZGVmYXVsdCBmaWVsZHMgdGhhdCBjb250YWlucyBsYXQgYW5kIGxuZyBhbmQgYW55IGdlb21ldHJ5XG4gIGNvbnN0IGZpZWxkc1RvU2hvdyA9IGZpZWxkcy5maWx0ZXIoXG4gICAgKHtuYW1lLCB0eXBlfSkgPT5cbiAgICAgIG5hbWVcbiAgICAgICAgLnJlcGxhY2UoL1tfLC5dKy9nLCAnICcpXG4gICAgICAgIC50cmltKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLmV2ZXJ5KHNlZyA9PiAhcHRGaWVsZHMuaW5jbHVkZXMoc2VnKSkgJiZcbiAgICAgIHR5cGUgIT09IEFMTF9GSUVMRF9UWVBFUy5nZW9qc29uICYmXG4gICAgICB0eXBlICE9PSBBTExfRklFTERfVFlQRVMuZ2VvYXJyb3cgJiZcbiAgICAgIHR5cGUgIT09ICdvYmplY3QnXG4gICk7XG5cbiAgcmV0dXJuIGZpZWxkc1RvU2hvdy5zbGljZSgwLCBtYXhEZWZhdWx0VG9vbHRpcHMpLm1hcCgoe25hbWV9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBmb3JtYXQ6IG51bGxcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gX21lcmdlRmllbGRQYWlycyhwYWlycykge1xuICByZXR1cm4gcGFpcnMucmVkdWNlKChwcmV2LCBwYWlyKSA9PiBbLi4ucHJldiwgLi4ucGFpcl0sIFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBEaXNwbGF5RGVsdGFWYWx1ZSh7XG4gIGZpZWxkLFxuICB2YWx1ZSxcbiAgcHJpbWFyeVZhbHVlLFxuICBjb21wYXJlVHlwZVxufToge1xuICBmaWVsZDogRmllbGQ7XG4gIHZhbHVlOiBhbnk7XG4gIHByaW1hcnlWYWx1ZTogYW55O1xuICBjb21wYXJlVHlwZT86IENvbXBhcmVUeXBlO1xufSk6IHN0cmluZyB8IG51bGwge1xuICBsZXQgZGlzcGxheURlbHRhVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmIChcbiAgICAvLyBjb21wYXJpc29uIG1vZGUgb25seSB3b3JrcyBmb3IgbnVtZXJpYyBmaWVsZFxuICAgIGZpZWxkLnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyIHx8XG4gICAgZmllbGQudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnJlYWxcbiAgKSB7XG4gICAgaWYgKGlzTnVtYmVyKHByaW1hcnlWYWx1ZSkgJiYgaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICBjb25zdCBkZWx0YVZhbHVlID1cbiAgICAgICAgY29tcGFyZVR5cGUgPT09IENPTVBBUkVfVFlQRVMuUkVMQVRJVkUgPyB2YWx1ZSAvIHByaW1hcnlWYWx1ZSAtIDEgOiB2YWx1ZSAtIHByaW1hcnlWYWx1ZTtcbiAgICAgIGNvbnN0IGRlbHRhRm9ybWF0ID1cbiAgICAgICAgY29tcGFyZVR5cGUgPT09IENPTVBBUkVfVFlQRVMuUkVMQVRJVkVcbiAgICAgICAgICA/IFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX1BFUkNFTlRfRlVMTF8yW1RPT0xUSVBfS0VZXVxuICAgICAgICAgIDogZmllbGQuZGlzcGxheUZvcm1hdCB8fCBUT09MVElQX0ZPUk1BVFMuREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzNbVE9PTFRJUF9LRVldO1xuXG4gICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IGdldEZvcm1hdHRlcihkZWx0YUZvcm1hdCwgZmllbGQpKGRlbHRhVmFsdWUpO1xuXG4gICAgICAvLyBzYWZlbHkgY2FzdCBzdHJpbmdcbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gZGVmYXVsdEZvcm1hdHRlcihkaXNwbGF5RGVsdGFWYWx1ZSk7XG4gICAgICBjb25zdCBkZWx0YUZpcnN0Q2hhciA9IGRpc3BsYXlEZWx0YVZhbHVlLmNoYXJBdCgwKTtcblxuICAgICAgaWYgKGRlbHRhRmlyc3RDaGFyICE9PSAnKycgJiYgIU5FR0FUSVZFX1NJR05TLmluY2x1ZGVzKGRlbHRhRmlyc3RDaGFyKSkge1xuICAgICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IGArJHtkaXNwbGF5RGVsdGFWYWx1ZX1gO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IFRPT0xUSVBfTUlOVVNfU0lHTjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzcGxheURlbHRhVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwRGlzcGxheVZhbHVlKHtcbiAgaXRlbSxcbiAgZmllbGQsXG4gIHZhbHVlXG59OiB7XG4gIGl0ZW06IFRvb2x0aXBGaWVsZCB8IHVuZGVmaW5lZDtcbiAgZmllbGQ6IEZpZWxkO1xuICB2YWx1ZTogYW55O1xufSk6IHN0cmluZyB7XG4gIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJldHVybiBpdGVtPy5mb3JtYXRcbiAgICA/IGdldEZvcm1hdHRlcihpdGVtPy5mb3JtYXQsIGZpZWxkKSh2YWx1ZSlcbiAgICA6IGZpZWxkLmRpc3BsYXlGb3JtYXRcbiAgICA/IGdldEZvcm1hdHRlcihmaWVsZC5kaXNwbGF5Rm9ybWF0LCBmaWVsZCkodmFsdWUpXG4gICAgOiBwYXJzZUZpZWxkVmFsdWUodmFsdWUsIGZpZWxkLnR5cGUpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxJQUFBLEdBQUFDLE9BQUE7QUFVQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFkQTtBQUNBOztBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNRyxrQkFBa0IsR0FBQUMsT0FBQSxDQUFBRCxrQkFBQSxHQUFHLFFBQVE7QUFDMUM7QUFDTyxJQUFNRSxjQUFjLEdBQUFELE9BQUEsQ0FBQUMsY0FBQSxHQUFHLENBQUMsR0FBUSxFQUFFLFFBQVEsQ0FBQztBQUUzQyxJQUFNQyxZQUVaLEdBQUFGLE9BQUEsQ0FBQUUsWUFBQSxHQUFHO0VBQ0ZDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ2YsQ0FBQztBQUVNLFNBQVNDLGdCQUFnQkEsQ0FBQUMsSUFBQSxFQVU5QjtF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