UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

348 lines (283 loc) 11.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.LovCodeStore = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _tslib = require("tslib"); var _isNil = _interopRequireDefault(require("lodash/isNil")); var _mobx = require("mobx"); var _utils = require("../utils"); var _DataSet = _interopRequireDefault(require("../data-set/DataSet")); var _axios = _interopRequireDefault(require("../axios")); var _enum = require("../data-set/enum"); var _enum2 = require("../enum"); var _utils2 = require("./utils"); var _utils3 = require("../data-set/utils"); function getFieldType(conditionFieldType) { switch (conditionFieldType) { case _enum2.LovFieldType.INT: return _enum.FieldType.number; case _enum2.LovFieldType.TEXT: return _enum.FieldType.string; case _enum2.LovFieldType.DATE: return _enum.FieldType.date; case _enum2.LovFieldType.DATETIME: return _enum.FieldType.dateTime; case _enum2.LovFieldType.POPUP: return _enum.FieldType.object; default: return conditionFieldType || _enum.FieldType.string; } } function generateConditionField(fields, _ref) { var conditionField = _ref.conditionField, conditionFieldType = _ref.conditionFieldType, conditionFieldName = _ref.conditionFieldName, gridFieldName = _ref.gridFieldName, display = _ref.display, conditionFieldLovCode = _ref.conditionFieldLovCode, conditionFieldSelectCode = _ref.conditionFieldSelectCode, conditionFieldSelectUrl = _ref.conditionFieldSelectUrl, conditionFieldSelectTf = _ref.conditionFieldSelectTf, conditionFieldSelectVf = _ref.conditionFieldSelectVf, conditionFieldRequired = _ref.conditionFieldRequired, fieldProps = _ref.fieldProps; if (conditionField === 'Y') { var name = conditionFieldName || gridFieldName; var field = (0, _objectSpread2["default"])({ name: name, type: getFieldType(conditionFieldType), label: display, lovCode: conditionFieldLovCode || undefined, lookupCode: conditionFieldSelectCode || undefined, lookupUrl: conditionFieldSelectUrl || undefined, textField: conditionFieldSelectTf || undefined, valueField: conditionFieldSelectVf || undefined, required: conditionFieldRequired || undefined }, fieldProps); fields.push(field); if (conditionFieldType === _enum2.LovFieldType.POPUP) { var aliasName = "__lov__".concat(name); field.name = aliasName; fields.push({ name: name, bind: "".concat(aliasName, ".").concat(conditionFieldSelectVf) }); } } } function generateGridField(fields, _ref2) { var gridField = _ref2.gridField, gridFieldName = _ref2.gridFieldName, display = _ref2.display, fieldProps = _ref2.fieldProps; if (gridField === 'Y') { fields.push((0, _objectSpread2["default"])({ name: gridFieldName, label: display }, fieldProps)); } } var LovCodeStore = /*#__PURE__*/function () { function LovCodeStore() { (0, _classCallCheck2["default"])(this, LovCodeStore); this.pendings = {}; this.init(); } (0, _createClass2["default"])(LovCodeStore, [{ key: "getAxios", value: function getAxios(field) { return (0, _utils2.getGlobalConfig)('axios', field) || _axios["default"]; } }, { key: "init", value: function init() { this.lovCodes = _mobx.observable.map(); } }, { key: "getDefineAxiosConfig", value: function getDefineAxiosConfig(code, field, record) { var lovDefineAxiosConfig = field && field.get('lovDefineAxiosConfig', record) || (0, _utils2.getGlobalConfig)('lovDefineAxiosConfig', field); var config = (0, _utils2.processAxiosConfig)(lovDefineAxiosConfig, code, field); return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, config), {}, { url: config.url || this.getConfigUrl(code, field, record), method: config.method || 'post' }); } }, { key: "getConfig", value: function getConfig(code) { return this.lovCodes.get(code); } }, { key: "fetchConfig", value: function () { var _fetchConfig = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(code, field, record) { var _this = this; var config, axiosConfig, pending; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: config = this.getConfig(code); // SSR do not fetch the lookup if (!(!config && typeof window !== 'undefined')) { _context.next = 14; break; } axiosConfig = this.getDefineAxiosConfig(code, field, record); if (!axiosConfig) { _context.next = 14; break; } _context.prev = 4; pending = this.pendings[code] || this.getAxios(field)(axiosConfig); this.pendings[code] = pending; _context.next = 9; return pending; case 9: config = _context.sent; (0, _mobx.runInAction)(function () { if (config) { _this.lovCodes.set(code, config); } }); case 11: _context.prev = 11; delete this.pendings[code]; return _context.finish(11); case 14: return _context.abrupt("return", config); case 15: case "end": return _context.stop(); } } }, _callee, this, [[4,, 11, 14]]); })); function fetchConfig(_x, _x2, _x3) { return _fetchConfig.apply(this, arguments); } return fetchConfig; }() // lovCode 作为key 缓存了 ds }, { key: "getLovDataSet", value: function getLovDataSet(code, field, dataSetProps, record) { var config = this.getConfig(code); if (config) { var lovPageSize = config.lovPageSize, lovItems = config.lovItems, parentIdField = config.parentIdField, idField = config.idField, treeFlag = config.treeFlag, configDataSetProps = config.dataSetProps; var valueField = field ? field.get('valueField', record) : config.valueField; var dsProps = { transport: { read: this.getQueryAxiosConfig(code, field, config, record) }, primaryKey: valueField, cacheSelection: true }; if (!(0, _isNil["default"])(lovPageSize) && !isNaN(Number(lovPageSize))) { dsProps.pageSize = Number(lovPageSize); } else { dsProps.paging = false; } if (treeFlag === 'Y' && parentIdField && idField) { dsProps.parentField = parentIdField; dsProps.idField = idField; } if (lovItems && lovItems.length) { var _lovItems$sort$reduce = lovItems.sort(function (_ref3, _ref4) { var conditionFieldSequence = _ref3.conditionFieldSequence; var conditionFieldSequence2 = _ref4.conditionFieldSequence; return conditionFieldSequence - conditionFieldSequence2; }).reduce(function (obj, configItem) { generateConditionField(obj.querys, configItem); generateGridField(obj.fields, configItem); return obj; }, { querys: [], fields: [] }), querys = _lovItems$sort$reduce.querys, fields = _lovItems$sort$reduce.fields; if (querys.length) { dsProps.queryFields = querys; } if (fields.length) { dsProps.fields = fields; } } return new _DataSet["default"]((0, _utils3.mergeDataSetProps)((0, _utils3.mergeDataSetProps)(dsProps, configDataSetProps), dataSetProps)); } (0, _utils.warning)(false, "LOV: code<".concat(code, "> is not exists")); return undefined; } }, { key: "getConfigUrl", value: function getConfigUrl(code, field, record) { var lovDefineUrl = field && field.get('lovDefineUrl', record) || (0, _utils2.getGlobalConfig)('lovDefineUrl', field); if (typeof lovDefineUrl === 'function') { return lovDefineUrl(code); } return lovDefineUrl; } }, { key: "getQueryAxiosConfig", value: function getQueryAxiosConfig(code, field, config, record) { var _this2 = this; return function (props) { var lovQueryAxiosConfig = field && field.get('lovQueryAxiosConfig', record) || (0, _utils2.getGlobalConfig)('lovQueryAxiosConfig', field); var lovQueryUrl = _this2.getQueryUrl(code, field, props, record); var axiosConfig = (0, _utils2.processAxiosConfig)(lovQueryAxiosConfig, code, config, props, lovQueryUrl); return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, axiosConfig), {}, { url: axiosConfig.url || lovQueryUrl, method: axiosConfig.method || 'post' }); }; } }, { key: "getQueryUrl", value: function getQueryUrl(code, field, props, record) { var config = this.getConfig(code); if (config) { var customUrl = config.customUrl; if (customUrl) { return customUrl; } } var lovQueryUrl = field && field.get('lovQueryUrl', record) || (0, _utils2.getGlobalConfig)('lovQueryUrl', field); if (typeof lovQueryUrl === 'function') { return lovQueryUrl(code, config, props); } return lovQueryUrl; } }, { key: "clearCache", value: function clearCache(codes) { var _this3 = this; if (codes) { codes.forEach(function (code) { _this3.lovCodes["delete"](code); }); } else { this.lovCodes.clear(); } } }]); return LovCodeStore; }(); exports.LovCodeStore = LovCodeStore; (0, _tslib.__decorate)([_mobx.observable], LovCodeStore.prototype, "lovCodes", void 0); (0, _tslib.__decorate)([_mobx.action], LovCodeStore.prototype, "init", null); (0, _tslib.__decorate)([_mobx.action], LovCodeStore.prototype, "clearCache", null); var _default = new LovCodeStore(); exports["default"] = _default; //# sourceMappingURL=LovCodeStore.js.map