UNPKG

ze-react-component-library

Version:
247 lines (180 loc) 9.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.getDefaultRepresentation = exports.representationMap = exports.chartTypes = void 0; var _table = _interopRequireDefault(require("./table")); var _value = _interopRequireDefault(require("./value")); var _bar = _interopRequireDefault(require("./bar")); var _column = _interopRequireDefault(require("./column")); var _stackedColumn = _interopRequireDefault(require("./stackedColumn")); var _line = _interopRequireDefault(require("./line")); var _pie = _interopRequireDefault(require("./pie")); var _map = _interopRequireWildcard(require("./map")); var _funnel = _interopRequireDefault(require("./funnel")); var _sheet = _interopRequireDefault(require("./sheet")); var _entity = _interopRequireDefault(require("./entity")); var _area = _interopRequireDefault(require("./area")); var _treemap = _interopRequireDefault(require("./treemap")); var _scatter = _interopRequireDefault(require("./scatter")); var _guage = _interopRequireDefault(require("./guage")); var _pareto = _interopRequireDefault(require("./pareto")); var _zeroetpApiSdk = require("zeroetp-api-sdk"); var _util = require("../../components/Chart/util"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var chartTypes = ["bar", "column", "stackedColumn", "line", "pie", "funnel", "map", "area", "treemap", "scatter", "guage", "pareto"]; exports.chartTypes = chartTypes; var representationMap = { value: _value.default, table: _table.default, sheet: _sheet.default, column: _column.default, stackedColumn: _stackedColumn.default, line: _line.default, area: _area.default, pie: _pie.default, bar: _bar.default, map: _map.default, treemap: _treemap.default, scatter: _scatter.default, funnel: _funnel.default, entity: _entity.default, guage: _guage.default, pareto: _pareto.default }; exports.representationMap = representationMap; var getDefaultRepresentation = function getDefaultRepresentation(result, pieThreshold, barFirst // 现在优先是column。这个flag就是来配置优先展示什么 ) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; if (pieThreshold === void 0) { pieThreshold = 5; } if (barFirst === void 0) { barFirst = false; } if (!result) return null; if (result.result == null) return null; if (result.returnType === "value") return "value"; var logicform = result.logicform; if (logicform.groupby) { // 同时要显示很多groupby id if (logicform._noRelationGroupby && logicform._noRelationGroupby.length < logicform.groupby.length) { return "table"; } if (!logicform.preds || logicform.preds.length === 0) { return "table"; } // 如果全部preds都是string,用table if (logicform.preds.every(function (p) { return typeof p === "string" || !p.operator; })) { return "table"; } // 如果是多维分组,直接用table if (Array.isArray(logicform.groupby)) { if (logicform.groupby.length >= 3) { return "table"; } if (logicform.groupby.length >= 2 && logicform.preds.length > 1) { return "table"; } if (logicform.groupby.length === 2 && logicform.preds.length === 1) { return "stackedColumn"; } } // 👇是一维分组的逻辑 var groupbyItem_1 = logicform.groupby; if (Array.isArray(logicform.groupby)) { groupbyItem_1 = logicform.groupby[0]; } var groupbyProp = void 0; if (_typeof(groupbyItem_1) === "object" && "_id" in groupbyItem_1) { groupbyProp = (0, _zeroetpApiSdk.findPropByName)(result.schema, groupbyItem_1._id); } else if (typeof groupbyItem_1 === "string") { groupbyProp = (0, _zeroetpApiSdk.findPropByName)(result.schema, groupbyItem_1); } // Schema指定的representation if ((_a = groupbyProp.ui) === null || _a === void 0 ? void 0 : _a.representation) { return (_b = groupbyProp.ui) === null || _b === void 0 ? void 0 : _b.representation; } // 如果是geo,并且是同一个level,那么用地图 if (groupbyItem_1.level && (groupbyProp === null || groupbyProp === void 0 ? void 0 : groupbyProp.schema) && (groupbyProp === null || groupbyProp === void 0 ? void 0 : groupbyProp.ref) === "geo" && logicform.groupby.length === 1) { if (groupbyItem_1.level === "省市") { // 目前仅支持到省市开始的level return "map"; } else if (groupbyItem_1.level === "城市" || groupbyItem_1.level === "区县") { // 要保证所有数据都在同一个上层level中 var hierarchIndex = groupbyProp.schema.hierarchy.findIndex(function (h) { return h.name === groupbyItem_1.level; }); var prevCodeLength_1 = (0, _zeroetpApiSdk.getHierarchyCodeLength)(groupbyProp.schema, groupbyProp.schema.hierarchy[hierarchIndex - 1].name); var prevCodeSet_1 = new Set(); result.result.forEach(function (r) { prevCodeSet_1.add(r._id.substring(0, prevCodeLength_1)); }); if (prevCodeSet_1.size === 1) { return "map"; } } } if ((0, _map.isMapValid)(result)) { return "map"; } // 看下第一个pred的property有没有ui.representation if ((_d = (_c = result.columnProperties[result.logicform.groupby.length]) === null || _c === void 0 ? void 0 : _c.ui) === null || _d === void 0 ? void 0 : _d.representation) { return (_f = (_e = result.columnProperties[result.logicform.groupby.length]) === null || _e === void 0 ? void 0 : _e.ui) === null || _f === void 0 ? void 0 : _f.representation; } // console.log("result", result); // 如果是categorical的,并且数量没到pieThreshold,用pie if ((groupbyProp === null || groupbyProp === void 0 ? void 0 : groupbyProp.is_categorical) && Array.isArray(result.result) && result.result.length <= pieThreshold && result.logicform.groupby.length === 1 && // 只需允许有一个维度 result.columnProperties.length === 2 && // 只需允许有一个pred result.columnProperties[1].is_additive && // 不是百分比类型的,而是绝对值类型的 !result.logicform.limit // 不能有排名意图 ) { return "pie"; } // 如果是timestamp,用line if ((groupbyProp === null || groupbyProp === void 0 ? void 0 : groupbyProp.type) === "timestamp" && !(0, _util.canUseDualAxis)(result)) { return "line"; } // 如果operator是pie,那么 if (result.logicform.groupby.length === 1 && // 只需允许有一个维度 ((_g = result.logicform.preds) === null || _g === void 0 ? void 0 : _g.length) === 1 && // 只需允许有一个pred result.logicform.preds[0].operator === "$percentage" // 百分比 ) { return "pie"; } // 如果是排名意图的,用bar if (result.logicform.groupby.length === 1 && // 只允许有一个维度 result.logicform.sort && result.logicform.limit > 0 && ((_h = result.logicform.preds) === null || _h === void 0 ? void 0 : _h.length) === 1 // 只允许有一个指标 ) { return "bar"; } if (barFirst) { return "bar"; } return "column"; } if ((_j = logicform.preds) === null || _j === void 0 ? void 0 : _j.find(function (p) { return p.operator === "$ent"; })) { return "entity"; } // pattern for entity if (result.schema.type === "entity" && result.result.length === 1 && !((_k = logicform.preds) === null || _k === void 0 ? void 0 : _k.find(function (p) { return p.operator; }))) { return "entity"; } if (logicform.entity_id) { return "entity"; } if (_scatter.default.valid(result) && (logicform.limit === -1 || logicform.limit > 100) // 这个条件有点硬编码,这个是为了不让普通的simple table进来的一个办法 ) { return "scatter"; } if ((_l = logicform.preds) === null || _l === void 0 ? void 0 : _l.find(function (p) { return p.operator; })) { return "value"; } return "table"; }; exports.getDefaultRepresentation = getDefaultRepresentation; var representations = Object.values(representationMap).filter(function (f) { return !f.hideInMenu; }); var _default = representations; exports.default = _default;