UNPKG

kepler.gl

Version:

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

103 lines (100 loc) 15.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getEchartsTools = getEchartsTools; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _echarts = require("@openassistant/echarts"); var _styles = require("@kepler.gl/styles"); var _actions = require("@kepler.gl/actions"); var _utils = require("./utils"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function getEchartsTools(datasets, layers, dispatch) { var _boxplot$context, _bubbleChart$context, _histogram$context, _pcp$context, _scatterplot$context; // context for tools var getValues = /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(datasetName, variableName) { var values; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: values = (0, _utils.getValuesFromDataset)(datasets, layers, datasetName, variableName); return _context.abrupt("return", values); case 2: case "end": return _context.stop(); } }, _callee); })); return function getValues(_x, _x2) { return _ref.apply(this, arguments); }; }(); var onSelected = function onSelected(datasetName, selectedIndices) { var triggerLayerReRender = function triggerLayerReRender(layer, isValid) { dispatch((0, _actions.layerSetIsValid)(layer, isValid)); }; (0, _utils.highlightRows)(datasets, layers, datasetName, selectedIndices, triggerLayerReRender); }; var theme = _styles.theme.textColor === _styles.textColorLT ? 'light' : 'dark'; // Create the boxplot tool with the getValues implementation var boxplotTool = _objectSpread(_objectSpread({}, _echarts.boxplot), {}, { context: _objectSpread(_objectSpread({}, _echarts.boxplot.context), {}, { getValues: getValues, onSelected: onSelected, config: _objectSpread(_objectSpread({}, (_boxplot$context = _echarts.boxplot.context) === null || _boxplot$context === void 0 ? void 0 : _boxplot$context.config), {}, { theme: theme }) }) }); // Create the bubble chart tool with the getValues implementation var bubbleChartTool = _objectSpread(_objectSpread({}, _echarts.bubbleChart), {}, { context: _objectSpread(_objectSpread({}, _echarts.bubbleChart.context), {}, { getValues: getValues, onSelected: onSelected, config: _objectSpread(_objectSpread({}, (_bubbleChart$context = _echarts.bubbleChart.context) === null || _bubbleChart$context === void 0 ? void 0 : _bubbleChart$context.config), {}, { theme: theme }) }) }); var histogramTool = _objectSpread(_objectSpread({}, _echarts.histogram), {}, { context: _objectSpread(_objectSpread({}, _echarts.histogram.context), {}, { getValues: getValues, onSelected: onSelected, config: _objectSpread(_objectSpread({}, (_histogram$context = _echarts.histogram.context) === null || _histogram$context === void 0 ? void 0 : _histogram$context.config), {}, { theme: theme }) }) }); var pcpTool = _objectSpread(_objectSpread({}, _echarts.pcp), {}, { context: _objectSpread(_objectSpread({}, _echarts.pcp.context), {}, { getValues: getValues, onSelected: onSelected, config: _objectSpread(_objectSpread({}, (_pcp$context = _echarts.pcp.context) === null || _pcp$context === void 0 ? void 0 : _pcp$context.config), {}, { theme: theme }) }) }); var scatterplotTool = _objectSpread(_objectSpread({}, _echarts.scatterplot), {}, { context: _objectSpread(_objectSpread({}, _echarts.scatterplot.context), {}, { getValues: getValues, onSelected: onSelected, config: _objectSpread(_objectSpread({}, (_scatterplot$context = _echarts.scatterplot.context) === null || _scatterplot$context === void 0 ? void 0 : _scatterplot$context.config), {}, { theme: theme }) }) }); return { boxplotTool: boxplotTool, bubbleChartTool: bubbleChartTool, histogramTool: histogramTool, pcpTool: pcpTool, scatterplotTool: scatterplotTool }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWNoYXJ0cyIsInJlcXVpcmUiLCJfc3R5bGVzIiwiX2FjdGlvbnMiLCJfdXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImdldEVjaGFydHNUb29scyIsImRhdGFzZXRzIiwibGF5ZXJzIiwiZGlzcGF0Y2giLCJfYm94cGxvdCRjb250ZXh0IiwiX2J1YmJsZUNoYXJ0JGNvbnRleHQiLCJfaGlzdG9ncmFtJGNvbnRleHQiLCJfcGNwJGNvbnRleHQiLCJfc2NhdHRlcnBsb3QkY29udGV4dCIsImdldFZhbHVlcyIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsImRhdGFzZXROYW1lIiwidmFyaWFibGVOYW1lIiwidmFsdWVzIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImdldFZhbHVlc0Zyb21EYXRhc2V0IiwiYWJydXB0Iiwic3RvcCIsIl94IiwiX3gyIiwib25TZWxlY3RlZCIsInNlbGVjdGVkSW5kaWNlcyIsInRyaWdnZXJMYXllclJlUmVuZGVyIiwibGF5ZXIiLCJpc1ZhbGlkIiwibGF5ZXJTZXRJc1ZhbGlkIiwiaGlnaGxpZ2h0Um93cyIsInRoZW1lIiwia2VwbGVyVGhlbWUiLCJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3JMVCIsImJveHBsb3RUb29sIiwiYm94cGxvdCIsImNvbnRleHQiLCJjb25maWciLCJidWJibGVDaGFydFRvb2wiLCJidWJibGVDaGFydCIsImhpc3RvZ3JhbVRvb2wiLCJoaXN0b2dyYW0iLCJwY3BUb29sIiwicGNwIiwic2NhdHRlcnBsb3RUb29sIiwic2NhdHRlcnBsb3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvZWNoYXJ0cy10b29scy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgYm94cGxvdCxcbiAgQm94cGxvdFRvb2wsXG4gIGJ1YmJsZUNoYXJ0LFxuICBCdWJibGVDaGFydFRvb2wsXG4gIGhpc3RvZ3JhbSxcbiAgSGlzdG9ncmFtVG9vbCxcbiAgcGNwLFxuICBQQ1BUb29sLFxuICBzY2F0dGVycGxvdCxcbiAgU2NhdHRlcnBsb3RUb29sXG59IGZyb20gJ0BvcGVuYXNzaXN0YW50L2VjaGFydHMnO1xuaW1wb3J0IHt0aGVtZSBhcyBrZXBsZXJUaGVtZSwgdGV4dENvbG9yTFR9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcbmltcG9ydCB7bGF5ZXJTZXRJc1ZhbGlkfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0Rpc3BhdGNofSBmcm9tICdyZWR1eCc7XG5cbmltcG9ydCB7Z2V0VmFsdWVzRnJvbURhdGFzZXQsIGhpZ2hsaWdodFJvd3N9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWNoYXJ0c1Rvb2xzKGRhdGFzZXRzOiBEYXRhc2V0cywgbGF5ZXJzOiBMYXllcltdLCBkaXNwYXRjaDogRGlzcGF0Y2gpIHtcbiAgLy8gY29udGV4dCBmb3IgdG9vbHNcbiAgY29uc3QgZ2V0VmFsdWVzID0gYXN5bmMgKGRhdGFzZXROYW1lOiBzdHJpbmcsIHZhcmlhYmxlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdmFsdWVzID0gZ2V0VmFsdWVzRnJvbURhdGFzZXQoZGF0YXNldHMsIGxheWVycywgZGF0YXNldE5hbWUsIHZhcmlhYmxlTmFtZSk7XG4gICAgcmV0dXJuIHZhbHVlcyBhcyBudW1iZXJbXTtcbiAgfTtcblxuICBjb25zdCBvblNlbGVjdGVkID0gKGRhdGFzZXROYW1lOiBzdHJpbmcsIHNlbGVjdGVkSW5kaWNlczogbnVtYmVyW10pID0+IHtcbiAgICBjb25zdCB0cmlnZ2VyTGF5ZXJSZVJlbmRlciA9IChsYXllcjogTGF5ZXIsIGlzVmFsaWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGRpc3BhdGNoKGxheWVyU2V0SXNWYWxpZChsYXllciwgaXNWYWxpZCkpO1xuICAgIH07XG4gICAgaGlnaGxpZ2h0Um93cyhkYXRhc2V0cywgbGF5ZXJzLCBkYXRhc2V0TmFtZSwgc2VsZWN0ZWRJbmRpY2VzLCB0cmlnZ2VyTGF5ZXJSZVJlbmRlcik7XG4gIH07XG5cbiAgY29uc3QgdGhlbWUgPSBrZXBsZXJUaGVtZS50ZXh0Q29sb3IgPT09IHRleHRDb2xvckxUID8gJ2xpZ2h0JyA6ICdkYXJrJztcblxuICAvLyBDcmVhdGUgdGhlIGJveHBsb3QgdG9vbCB3aXRoIHRoZSBnZXRWYWx1ZXMgaW1wbGVtZW50YXRpb25cbiAgY29uc3QgYm94cGxvdFRvb2w6IEJveHBsb3RUb29sID0ge1xuICAgIC4uLmJveHBsb3QsXG4gICAgY29udGV4dDoge1xuICAgICAgLi4uYm94cGxvdC5jb250ZXh0LFxuICAgICAgZ2V0VmFsdWVzLFxuICAgICAgb25TZWxlY3RlZCxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi5ib3hwbG90LmNvbnRleHQ/LmNvbmZpZyxcbiAgICAgICAgdGhlbWVcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLy8gQ3JlYXRlIHRoZSBidWJibGUgY2hhcnQgdG9vbCB3aXRoIHRoZSBnZXRWYWx1ZXMgaW1wbGVtZW50YXRpb25cbiAgY29uc3QgYnViYmxlQ2hhcnRUb29sOiBCdWJibGVDaGFydFRvb2wgPSB7XG4gICAgLi4uYnViYmxlQ2hhcnQsXG4gICAgY29udGV4dDoge1xuICAgICAgLi4uYnViYmxlQ2hhcnQuY29udGV4dCxcbiAgICAgIGdldFZhbHVlcyxcbiAgICAgIG9uU2VsZWN0ZWQsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uYnViYmxlQ2hhcnQuY29udGV4dD8uY29uZmlnLFxuICAgICAgICB0aGVtZVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBoaXN0b2dyYW1Ub29sOiBIaXN0b2dyYW1Ub29sID0ge1xuICAgIC4uLmhpc3RvZ3JhbSxcbiAgICBjb250ZXh0OiB7XG4gICAgICAuLi5oaXN0b2dyYW0uY29udGV4dCxcbiAgICAgIGdldFZhbHVlcyxcbiAgICAgIG9uU2VsZWN0ZWQsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uaGlzdG9ncmFtLmNvbnRleHQ/LmNvbmZpZyxcbiAgICAgICAgdGhlbWVcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcGNwVG9vbDogUENQVG9vbCA9IHtcbiAgICAuLi5wY3AsXG4gICAgY29udGV4dDoge1xuICAgICAgLi4ucGNwLmNvbnRleHQsXG4gICAgICBnZXRWYWx1ZXMsXG4gICAgICBvblNlbGVjdGVkLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLnBjcC5jb250ZXh0Py5jb25maWcsXG4gICAgICAgIHRoZW1lXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNjYXR0ZXJwbG90VG9vbDogU2NhdHRlcnBsb3RUb29sID0ge1xuICAgIC4uLnNjYXR0ZXJwbG90LFxuICAgIGNvbnRleHQ6IHtcbiAgICAgIC4uLnNjYXR0ZXJwbG90LmNvbnRleHQsXG4gICAgICBnZXRWYWx1ZXMsXG4gICAgICBvblNlbGVjdGVkLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLnNjYXR0ZXJwbG90LmNvbnRleHQ/LmNvbmZpZyxcbiAgICAgICAgdGhlbWVcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBib3hwbG90VG9vbCxcbiAgICBidWJibGVDaGFydFRvb2wsXG4gICAgaGlzdG9ncmFtVG9vbCxcbiAgICBwY3BUb29sLFxuICAgIHNjYXR0ZXJwbG90VG9vbFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBWUEsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBS0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQTRELFNBQUFJLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFB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bkJBLG9CQUFBLENBQXFCcUMsTUFBTTtRQUM5QlAsS0FBSyxFQUFMQTtNQUFLO0lBQ047RUFDRixFQUNGO0VBRUQsSUFBTVUsYUFBNEIsR0FBQXJELGFBQUEsQ0FBQUEsYUFBQSxLQUM3QnNELGtCQUFTO0lBQ1pMLE9BQU8sRUFBQWpELGFBQUEsQ0FBQUEsYUFBQSxLQUNGc0Qsa0JBQVMsQ0FBQ0wsT0FBTztNQUNwQmhDLFNBQVMsRUFBVEEsU0FBUztNQUNUbUIsVUFBVSxFQUFWQSxVQUFVO01BQ1ZjLE1BQU0sRUFBQWxELGFBQUEsQ0FBQUEsYUFBQSxNQUFBYyxrQkFBQSxHQUNEd0Msa0JBQVMsQ0FBQ0wsT0FBTyxjQUFBbkMsa0JBQUEsdUJBQWpCQSxrQkFBQSxDQUFtQm9DLE1BQU07UUFDNUJQLEtBQUssRUFBTEE7TUFBSztJQUNOO0VBQ0YsRUFDRjtFQUVELElBQU1ZLE9BQWdCLEdBQUF2RCxhQUFBLENBQUFBLGFBQUEsS0FDakJ3RCxZQUFHO0lBQ05QLE9BQU8sRUFBQWpELGFBQUEsQ0FBQUEsYUFBQSxLQUNGd0QsWUFBRyxDQUFDUCxPQUFPO01BQ2RoQyxTQUFTLEVBQVRBLFNBQVM7TUFDVG1CLFVBQVUsRUFBVkEsVUFBVTtNQUNWYyxNQUFNLEVBQUFsRCxhQUFBLENBQUFBLGFBQUEsTUFBQWUsWUFBQSxHQUNEeUMsWUFBRyxDQUFDUCxPQUFPLGNBQUFsQyxZQUFBLHVCQUFYQSxZQUFBLENBQWFtQyxNQUFNO1FBQ3RCUCxLQUFLLEVBQUxBO01BQUs7SUFDTjtFQUNGLEVBQ0Y7RUFFRCxJQUFNYyxlQUFnQyxHQUFBekQsYUFBQSxDQUFBQSxhQUFBLEtBQ2pDMEQsb0JBQVc7SUFDZFQsT0FBTyxFQUFBakQsYUFBQSxDQUFBQSxhQUFBLEtBQ0YwRCxvQkFBVyxDQUFDVCxPQUFPO01BQ3RCaEMsU0FBUyxFQUFUQSxTQUFTO01BQ1RtQixVQUFVLEVBQVZBLFVBQVU7TUFDVmMsTUFBTSxFQUFBbEQsYUFBQSxDQUFBQSxhQUFBLE1BQUFnQixvQkFBQSxHQUNEMEMsb0JBQVcsQ0FBQ1QsT0FBTyxjQUFBakMsb0JBQUEsdUJBQW5CQSxvQkFBQSxDQUFxQmtDLE1BQU07UUFDOUJQLEtBQUssRUFBTEE7TUFBSztJQUNOO0VBQ0YsRUFDRjtFQUVELE9BQU87SUFDTEksV0FBVyxFQUFYQSxXQUFXO0lBQ1hJLGVBQWUsRUFBZkEsZUFBZTtJQUNmRSxhQUFhLEVBQWJBLGFBQWE7SUFDYkUsT0FBTyxFQUFQQSxPQUFPO0lBQ1BFLGVBQWUsRUFBZkE7RUFDRixDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=