UNPKG

choerodon-ui

Version:

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

1,314 lines (1,097 loc) 36.7 kB
import _regeneratorRuntime from "@babel/runtime/regenerator"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _extends from "@babel/runtime/helpers/extends"; import _objectSpread from "@babel/runtime/helpers/objectSpread2"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; import queryString from 'querystringify'; import moment, { isDate, isMoment } from 'moment'; import { isArrayLike } from 'mobx'; import isBoolean from 'lodash/isBoolean'; import isObject from 'lodash/isObject'; import isString from 'lodash/isString'; import isArray from 'lodash/isArray'; import isNumber from 'lodash/isNumber'; import warning from '../../../es/_util/warning'; import { getConfig } from '../../../es/configure'; import isNil from 'lodash/isNil'; import _isEmpty from 'lodash/isEmpty'; // import XLSX from 'xlsx'; import { BooleanValue, DataToJSON, FieldType, RecordStatus, SortOrder } from './enum'; import isEmpty from '../_util/isEmpty'; import * as ObjectChainValue from '../_util/ObjectChainValue'; import localeContext, { $l } from '../locale-context'; import formatString from '../formatter/formatString'; import { parseNumber } from '../number-field/utils'; import { treeReduce } from '../_util/treeUtils'; export var defaultTextField = 'meaning'; export var defaultValueField = 'value'; export function useNormal(dataToJSON) { return [DataToJSON.normal, DataToJSON['normal-self']].includes(dataToJSON); } export function useAll(dataToJSON) { return [DataToJSON.all, DataToJSON['all-self']].includes(dataToJSON); } export function useSelected(dataToJSON) { return [DataToJSON.selected, DataToJSON['selected-self']].includes(dataToJSON); } export function useCascade(dataToJSON) { return [DataToJSON.dirty, DataToJSON['dirty-field'], DataToJSON.selected, DataToJSON.all, DataToJSON.normal].includes(dataToJSON); } export function useDirty(dataToJSON) { return [DataToJSON.dirty, DataToJSON['dirty-self']].includes(dataToJSON); } export function useDirtyField(dataToJSON) { return [DataToJSON['dirty-field'], DataToJSON['dirty-field-self']].includes(dataToJSON); } export function append(url, suffix) { if (suffix) { return url + queryString.stringify(suffix, url.indexOf('?') === -1); } return url; } export function getOrderFields(fields) { return _toConsumableArray(fields.values()).filter(function (_ref) { var order = _ref.order; return order; }); } function processOneToJSON(value, field) { var checkRange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; if (!isEmpty(value)) { var range = field.get('range'); if (range && checkRange) { if (isArrayLike(range)) { if (isObject(value)) { var _value; var _range = _slicedToArray(range, 2), start = _range[0], end = _range[1]; value = (_value = {}, _defineProperty(_value, start, processOneToJSON(value[start], field, false)), _defineProperty(_value, end, processOneToJSON(value[end], field, false)), _value); } } else if (isArrayLike(value)) { value = [processOneToJSON(value[0], field, false), processOneToJSON(value[1], field, false)]; } } else { if (isDate(value)) { value = moment(value); } if (isMoment(value)) { var _getConfig = getConfig('formatter'), jsonDate = _getConfig.jsonDate; value = jsonDate ? value.format(jsonDate) : +value; } if (field.type === FieldType.json) { value = JSON.stringify(value); } } } return value; } export function processToJSON(value, field) { if (!isEmpty(value)) { var multiple = field.get('multiple'); var range = field.get('range'); if (isArrayLike(value) && (multiple || !range)) { value = value.map(function (v) { return processOneToJSON(v, field); }); if (isString(multiple)) { return value.join(multiple); } return value; } return processOneToJSON(value, field); } return value; } export function arrayMove(array, from, to) { var startIndex = to < 0 ? array.length + to : to; var item = array.splice(from, 1)[0]; array.splice(startIndex, 0, item); } function processOne(value, field) { var checkRange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; if (!isEmpty(value)) { var range = field.get('range'); if (range && checkRange) { if (isArrayLike(range)) { if (isObject(value)) { var _range2 = _slicedToArray(range, 2), start = _range2[0], end = _range2[1]; value[start] = processOne(value[start], field, false); value[end] = processOne(value[end], field, false); } } else if (isArrayLike(value)) { value[0] = processOne(value[0], field, false); value[1] = processOne(value[1], field, false); } } else if (value instanceof Date) { value = moment(value); } else if (!isObject(value)) { value = formatString(value, { trim: field.get('trim'), format: field.get('format') }); switch (field.type) { case FieldType["boolean"]: { var trueValue = field.get(BooleanValue.trueValue); var falseValue = field.get(BooleanValue.falseValue); if (value !== trueValue) { value = falseValue; } break; } case FieldType.number: case FieldType.currency: if (!isNaN(value)) { value = parseNumber(value, field.get('precision')); } else { value = undefined; } break; case FieldType.string: case FieldType.intl: case FieldType.email: case FieldType.url: value = String(value); break; case FieldType.date: case FieldType.dateTime: case FieldType.time: case FieldType.week: case FieldType.month: case FieldType.year: { var _getConfig2 = getConfig('formatter'), jsonDate = _getConfig2.jsonDate; value = jsonDate ? moment(value, jsonDate) : moment(value); break; } case FieldType.json: value = JSON.parse(value); break; default: } } } return value; } export function processValue(value, field, isCreated) { if (field) { var multiple = field.get('multiple'); var range = field.get('range'); if (multiple && field.type !== FieldType.attachment) { if (isEmpty(value)) { if (isCreated) { // for defaultValue value = undefined; } else { value = []; } } else if (!isArray(value)) { if (isString(multiple) && isString(value)) { value = value.split(multiple); } else { value = [value]; } } } if (isArray(value) && (multiple || !range)) { return value.map(function (item) { return processOne(item, field); }); } return processOne(value, field); } return value; } // 处理单个range var processRangeToText = function processRangeToText(resultValue, field) { return resultValue.map(function (item) { var valueRange = isMoment(item) ? item.format() : isObject(item) ? item[field.get('textField')] : item.toString(); return valueRange; }).join("~"); }; export function processExportValue(value, field) { if (field) { var multiple = field.get('multiple'); var range = field.get('range'); if (multiple) { if (isEmpty(value)) { value = []; } else if (!isArray(value)) { if (isString(multiple) && isString(value)) { value = value.split(multiple); } else { value = [value]; } } } if (isArray(value) && (multiple || !range)) { if (field && !_isEmpty(field.lookup)) { return value.map(function (item) { return field.getText(processOne(item, field)); }).join(','); } return value.map(function (item) { var itemValue = processOne(item, field); if (field && field.get('textField') && itemValue && isObject(itemValue)) { return itemValue[field.get('textField')]; } return itemValue; }).join(','); } if (isArray(value) && multiple && range) { if (field && !_isEmpty(field.lookup)) { return value.map(function (item) { return field.getText(processRangeToText(processOne(item, field), field)); }).join(','); } return value.map(function (item) { return processRangeToText(processOne(item, field), field); }).join(','); } if (field && !_isEmpty(field.lookup)) { return field.getText(processOne(value, field)); } var resultValue = processOne(value, field); if (isMoment(resultValue)) { return resultValue.format(); } if (field && field.get('textField') && resultValue && isObject(resultValue)) { if (range && isArrayLike(resultValue)) { return processRangeToText(resultValue, field); } return resultValue[field.get('textField')]; } return resultValue; } return value; } /** * 实现如果名字是带有属性含义`.`找到能够导出的值 * @param dataItem 一行数据 * @param name 对应的fieldname * @param isBind 是否是从绑定获取值 */ export function getSplitValue(dataItem, name) { var isBind = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var nameArray = name.split('.'); if (nameArray.length > 1) { var levelValue = dataItem; for (var i = 0; i < nameArray.length; i++) { if (!isObject(levelValue)) { break; } if (isBind || i !== 0) { levelValue = levelValue[nameArray[i]]; } } return levelValue; } if (isBind) { return dataItem ? dataItem[name] : undefined; } return dataItem; } export function childrenInfoForDelete(json, children) { return Object.keys(children).reduce(function (data, name) { var child = children[name]; if (child) { data[name] = [childrenInfoForDelete({}, child.children)]; } return data; }, json); } export function sortTree(children, orderField) { if (orderField && children.length > 0) { var name = orderField.name, order = orderField.order; var m = Number.MIN_SAFE_INTEGER; children.sort(function (record1, record2) { var a = record1.get(name) || m; var b = record2.get(name) || m; if (isString(a) || isString(b)) { return order === SortOrder.asc ? String(a).localeCompare(String(b)) : String(b).localeCompare(String(a)); } return order === SortOrder.asc ? a - b : b - a; }); } return children; } // 获取单个页面能够展示的数据 export function sliceTree(idField, parentField, allData, pageSize) { if (allData.length) { var rootMap = new Map(); var itemMap = new Map(); allData.forEach(function (item) { var id = item[idField]; if (!isNil(id)) { var node = { item: item, children: [] }; itemMap.set(id, node); rootMap.set(id, node); } }); _toConsumableArray(itemMap.entries()).forEach(function (_ref2) { var _ref3 = _slicedToArray(_ref2, 2), key = _ref3[0], node = _ref3[1]; var parent = itemMap.get(node.item[parentField]); if (parent) { parent.children.push(node); rootMap["delete"](key); } }); return treeReduce(_toConsumableArray(rootMap.values()).slice(0, pageSize), function (previousValue, node) { return previousValue.concat(node.item); }, []); } return []; } export function checkParentByInsert(_ref4) { var parent = _ref4.parent; if (parent && !parent.current) { throw new Error($l('DataSet', 'cannot_add_record_when_head_no_current')); } } function getValueType(value) { return isBoolean(value) ? FieldType["boolean"] : isNumber(value) ? FieldType.number : isString(value) ? FieldType.string : isMoment(value) ? FieldType.date : isObject(value) ? FieldType.object : FieldType.auto; } export function getBaseType(type) { switch (type) { case FieldType.number: case FieldType.currency: return FieldType.number; case FieldType.dateTime: case FieldType.time: case FieldType.week: case FieldType.month: case FieldType.year: return FieldType.date; case FieldType.intl: case FieldType.url: case FieldType.email: return FieldType.string; default: return type; } } export function checkFieldType(value, field) { if (process.env.NODE_ENV !== 'production' && !isEmpty(value)) { var fieldType = getBaseType(field.type); if (fieldType !== FieldType.auto) { if (isArrayLike(value)) { return value.every(function (item) { return checkFieldType(item, field); }); } var valueType = field.type === FieldType["boolean"] && [field.get(BooleanValue.trueValue), field.get(BooleanValue.falseValue)].includes(value) ? FieldType["boolean"] : getValueType(value); if (fieldType !== FieldType.reactNode && fieldType !== valueType) { warning(false, "Value type error: The value<".concat(value, ">'s type is ").concat(valueType, ", but the field<").concat(field.name, ">'s type is ").concat(fieldType, ".")); return false; } } } return true; } var iframe; /** * 目前定义为服务端请求的方法 * @param url 导出地址 * @param data 导出传递参数 * @param method 默认post请求 */ export function doExport(url, data) { var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'post'; if (!iframe) { iframe = document.createElement('iframe'); iframe.id = '_export_window'; iframe.name = '_export_window'; iframe.style.cssText = 'position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;display:none'; document.body.appendChild(iframe); } var form = document.createElement('form'); form.target = '_export_window'; form.method = method; form.action = url; var s = document.createElement('input'); s.id = '_request_data'; s.type = 'hidden'; s.name = '_request_data'; s.value = JSON.stringify(data); form.appendChild(s); document.body.appendChild(form); form.submit(); document.body.removeChild(form); } function throwCycleBindingFields() { var map = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map(); var keys = _toConsumableArray(map.keys()); throw new Error("DataSet: Cycle binding fields[".concat(_toConsumableArray(keys).join(' -> '), " -> ").concat(keys[0], "].")); } function getChainFieldNamePrivate(record, fieldName) { var linkedMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Map(); var init = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; var field = record.getField(fieldName); if (field) { var bind = field.get('bind'); if (bind) { if (linkedMap.has(fieldName)) { throwCycleBindingFields(linkedMap); } linkedMap.set(fieldName, field); var names = bind.split('.'); if (names.length > 0) { if (names.length === 1) { return getChainFieldNamePrivate(record, bind, linkedMap); } return names.reduce(function (chainFieldName, name) { return [getChainFieldNamePrivate(record, chainFieldName, linkedMap, false), name].join('.'); }); } } } else if (init && fieldName.indexOf('.') > -1) { return fieldName.split('.').reduce(function (chainFieldName, name) { return [getChainFieldNamePrivate(record, chainFieldName, linkedMap, false), name].join('.'); }); } return fieldName; } export function getChainFieldName(record, fieldName) { return getChainFieldNamePrivate(record, fieldName); } export function findBindTargetFields(myField, fields, deep) { var bindFields = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map(); var bind = myField.get('bind'); if (bind) { _toConsumableArray(fields.entries()).some(function (_ref5) { var _ref6 = _slicedToArray(_ref5, 2), fieldName = _ref6[0], field = _ref6[1]; if (field !== myField) { if (bind === fieldName || bind.startsWith("".concat(fieldName, "."))) { if (bindFields.has(fieldName)) { throwCycleBindingFields(bindFields); } bindFields.set(fieldName, field); if (deep) { findBindTargetFields(field, fields, deep, bindFields); } return true; } } return false; }); } return _toConsumableArray(bindFields.values()); } export function findBindFields(myField, fields, deep) { var bindFields = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map(); var name = myField.name; _toConsumableArray(fields.entries()).forEach(function (_ref7) { var _ref8 = _slicedToArray(_ref7, 2), fieldName = _ref8[0], field = _ref8[1]; if (field !== myField) { var bind = field.get('bind'); if (bind && (bind === name || bind.startsWith("".concat(name, ".")))) { if (bindFields.has(fieldName)) { throwCycleBindingFields(bindFields); } bindFields.set(fieldName, field); if (deep) { findBindFields(field, fields, deep, bindFields); } } } }); return _toConsumableArray(bindFields.values()); } export function findBindField(myField, chainFieldName, record) { return _toConsumableArray(record.fields.values()).find(function (field) { var fieldName = field.name; if (fieldName !== myField) { var bind = field.get('bind'); if (bind) { return chainFieldName === getChainFieldName(record, fieldName); } } return false; }); } function numberSorter(a, b) { return a - b; } function stringSorter(a, b) { return String(a || '').localeCompare(String(b || '')); } export function getFieldSorter(field) { var name = field.name; switch (field.type) { case FieldType.number: case FieldType.currency: case FieldType.date: case FieldType.dateTime: case FieldType.week: case FieldType.month: case FieldType.year: case FieldType.time: return field.order === SortOrder.asc ? function (a, b) { return numberSorter(a.get(name), b.get(name)); } : function (a, b) { return numberSorter(b.get(name), a.get(name)); }; default: return field.order === SortOrder.asc ? function (a, b) { return stringSorter(a.get(name), b.get(name)); } : function (a, b) { return stringSorter(b.get(name), a.get(name)); }; } } export function generateRecordJSONData(array, record, dataToJSON) { var normal = useNormal(dataToJSON); var json = normal ? !record.isRemoved && record.toData() : record.toJSONData(); if (json && (normal || useAll(dataToJSON) || !useDirty(dataToJSON) && !useDirtyField(dataToJSON) || json.__dirty)) { delete json.__dirty; array.push(json); } } export function prepareSubmitData(records, dataToJSON) { var created = []; var updated = []; var destroyed = []; function storeWith(status) { switch (status) { case RecordStatus.add: return created; case RecordStatus["delete"]: return destroyed; default: return updated; } } records.forEach(function (record) { return generateRecordJSONData(storeWith(record.status), record, dataToJSON); }); return [created, updated, destroyed]; } function defaultAxiosConfigAdapter(config) { return config; } function generateConfig(config, dataSet, data, params, options) { if (isString(config)) { return { url: config }; } if (typeof config === 'function') { return config(_objectSpread({}, options, { data: data, dataSet: dataSet, params: params })); } return config; } export function axiosConfigAdapter(type, dataSet, data, params, options) { var newConfig = { data: data, params: params, method: 'post' }; var _ref9 = getConfig('transport') || {}, globalConfig = _ref9[type], _ref9$adapter = _ref9.adapter, globalAdapter = _ref9$adapter === void 0 ? defaultAxiosConfigAdapter : _ref9$adapter; var _dataSet$transport = dataSet.transport, config = _dataSet$transport[type], adapter = _dataSet$transport.adapter; if (globalConfig) { _extends(newConfig, generateConfig(globalConfig, dataSet, data, params, options)); } if (config) { _extends(newConfig, generateConfig(config, dataSet, data, params, options)); } if (newConfig.data && newConfig.method && newConfig.method.toLowerCase() === 'get') { newConfig.params = _objectSpread({}, newConfig.params, {}, newConfig.data); } return (adapter || globalAdapter)(newConfig, type) || newConfig; } // 查询顶层父亲节点 export function findRootParent(children) { if (children.parent) { return findRootParent(children.parent); } return children; } export function prepareForSubmit(type, data, configs, dataSet) { if (data.length) { var newConfig = axiosConfigAdapter(type, dataSet, data); if (newConfig.url) { configs.push(newConfig); } else { return data; } } return []; } export function generateResponseData(item, dataKey) { if (item) { if (isArray(item)) { return item; } if (isObject(item)) { if (dataKey) { var result = ObjectChainValue.get(item, dataKey); if (result === undefined) { return [item]; } if (isArray(result)) { return result; } if (isObject(result)) { return [result]; } } else { return [item]; } } } return []; } export function getRecordValue(record, cb, fieldName) { if (fieldName) { if (isArrayLike(fieldName)) { return fieldName.reduce(function (value, key) { value[key] = getRecordValue(record, cb, key); return value; }, {}); } var chainFieldName = getChainFieldName(record, fieldName); var dataSet = record.dataSet; if (dataSet) { var checkField = dataSet.props.checkField; if (checkField && chainFieldName === getChainFieldName(record, checkField)) { var field = record.getField(checkField); var trueValue = field ? field.get(BooleanValue.trueValue) : true; var falseValue = field ? field.get(BooleanValue.falseValue) : false; var children = record.children; if (children) { return children.every(function (child) { return cb(child, checkField) === trueValue; }) ? trueValue : falseValue; } } } return ObjectChainValue.get(record.data, chainFieldName); } } export function processIntlField(name, fieldProps, callback, dataSet) { if (fieldProps.type === FieldType.intl) { var transformRequest = fieldProps.transformRequest; var tlsKey = getConfig('tlsKey'); var supports = localeContext.supports; var languages = Object.keys(supports); languages.forEach(function (language) { return callback("".concat(tlsKey, ".").concat(name, ".").concat(language), { type: FieldType.string, label: "".concat(supports[language]), transformRequest: transformRequest, computedProps: { bind: function bind(_ref10) { var record = _ref10.record; if (record) { var tls = record.get(tlsKey) || {}; if (name in tls && (dataSet ? dataSet.lang : localeContext.locale.lang) === language) { return name; } } } } }); }); } return callback(name, fieldProps); } export function findBindFieldBy(myField, fields, prop) { var value = myField.get(prop); var myName = myField.name; return _toConsumableArray(fields.values()).find(function (field) { var bind = field.get('bind'); return bind && bind === "".concat(myName, ".").concat(value); }); } export function getLimit(limit, record) { if (isString(limit) && record.getField(limit)) { return record.get(limit); } return limit; } export function adapterDataToJSON(isSelected, noCascade) { if (isSelected) { if (noCascade) { return DataToJSON['selected-self']; } return DataToJSON.selected; } if (noCascade) { return DataToJSON['dirty-self']; } return undefined; } export function generateData(records) { var dirty = false; var data = records.reduce(function (list, record) { if (record.isRemoved) { dirty = true; } else { var d = record.toData(); if (d.__dirty) { dirty = true; } delete d.__dirty; list.push(d); } return list; }, []); return { dirty: dirty, data: data }; } export function generateJSONData(ds, records) { var dataToJSON = ds.dataToJSON; var data = []; records.forEach(function (record) { return generateRecordJSONData(data, record, dataToJSON); }); return { dirty: data.length > 0, data: data }; } export function getUniqueFieldNames(dataSet) { var keys = []; _toConsumableArray(dataSet.fields.entries()).forEach(function (_ref11) { var _ref12 = _slicedToArray(_ref11, 2), key = _ref12[0], field = _ref12[1]; if (field.get('unique')) { keys.push(key); } }); return keys; } export function getUniqueKeysAndPrimaryKey(dataSet) { if (dataSet) { var keys = getUniqueFieldNames(dataSet); var primaryKey = dataSet.props.primaryKey; if (primaryKey) { keys.push(primaryKey); } return keys; } return []; } export function isDirtyRecord(record) { return record.status !== RecordStatus.sync || record.dirty; } export function getSpliceRecord(records, inserts, fromRecord) { if (fromRecord) { if (inserts.includes(fromRecord)) { return getSpliceRecord(records, inserts, records[records.indexOf(fromRecord) + 1]); } return fromRecord; } } // bugs in react native export function fixAxiosConfig(config) { var method = config.method; if (method && method.toLowerCase() === 'get') { delete config.data; } return config; } var EMPTY_GROUP_KEY = '__empty_group__'; export function normalizeGroups(groups, records) { var optGroups = []; var restRecords = []; records.forEach(function (record) { var previousGroup; groups.every(function (key) { var label = record.get(key); if (label !== undefined) { if (!previousGroup) { previousGroup = optGroups.find(function (item) { return item.value === label; }); if (!previousGroup) { previousGroup = { name: key, value: label, records: [], subGroups: [] }; optGroups.push(previousGroup); } } else { var _previousGroup = previousGroup, subGroups = _previousGroup.subGroups; previousGroup = subGroups.find(function (item) { return item.value === label; }); if (!previousGroup) { previousGroup = { name: key, value: label, records: [], subGroups: [] }; subGroups.push(previousGroup); } } return true; } return false; }); if (previousGroup) { var _previousGroup2 = previousGroup, groupRecords = _previousGroup2.records; groupRecords.push(record); } else { restRecords.push(record); } }); if (restRecords.length) { optGroups.push({ name: EMPTY_GROUP_KEY, value: undefined, records: restRecords, subGroups: [] }); } return optGroups; } /** * * @param data 导出需要导出的数据 * @param excelname 导出表单的名字 */ export function exportExcel(data, excelName) { import('xlsx').then(function (XLSX) { var ws = XLSX.utils.json_to_sheet(data, { skipHeader: true }); /* 新建空workbook,然后加入worksheet */ var wb = XLSX.utils.book_new(); /* 新建book */ XLSX.utils.book_append_sheet(wb, ws); /* 生成xlsx文件(book,sheet数据,sheet命名) */ XLSX.writeFile(wb, "".concat(excelName, ".xlsx")); /* 写文件(book,xlsx文件名称) */ }); } export function getSortedFields(fields) { var normalFields = []; var objectBindFields = []; var bindFields = []; var transformResponseField = []; var dynamicFields = []; var dynamicObjectBindFields = []; var dynamicBindFields = []; _toConsumableArray(fields.entries()).forEach(function (entry) { var _entry = _slicedToArray(entry, 2), field = _entry[1]; var dynamicProps = field.get('computedProps') || field.get('dynamicProps'); if (dynamicProps) { if (dynamicProps.bind) { if (field.type === FieldType.object) { dynamicObjectBindFields.push(entry); } else { dynamicBindFields.push(entry); } } else { dynamicFields.push(entry); } } else { var bind = field.get('bind'); if (bind) { var targetNames = bind.split('.'); targetNames.pop(); if (targetNames.some(function (targetName) { var target = fields.get(targetName); return target && (target.get('computedProps') || target.get('dynamicProps')); })) { if (field.type === FieldType.object) { dynamicObjectBindFields.push(entry); } else { dynamicBindFields.push(entry); } } else if (field.get('transformResponse')) { transformResponseField.push(entry); } else if (field.type === FieldType.object) { objectBindFields.push(entry); } else { bindFields.push(entry); } } else { normalFields.push(entry); } } }); return [].concat(normalFields, objectBindFields, bindFields, transformResponseField, dynamicFields, dynamicObjectBindFields, dynamicBindFields); } export function concurrentPromise(_x, _x2) { return _concurrentPromise.apply(this, arguments); } function _concurrentPromise() { _concurrentPromise = _asyncToGenerator( /*#__PURE__*/ _regeneratorRuntime.mark(function _callee2(promiseLoaders, cancelFnc) { var promiseLoadersLength, fail; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: promiseLoadersLength = promiseLoaders.length; fail = false; return _context2.abrupt("return", new Promise(function (resolve, reject) { var resulet = Array(promiseLoadersLength).fill(null); // 依次执行promise // 最大并发数 var maxConcurrent = Math.min(5, promiseLoadersLength); var currentPromiseIndex = 0; var execPromise = /*#__PURE__*/ function () { var _ref13 = _asyncToGenerator( /*#__PURE__*/ _regeneratorRuntime.mark(function _callee(getPromise, index) { var res, _promiseLoaders$curre; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!fail) { _context.next = 2; break; } return _context.abrupt("return"); case 2: if (!cancelFnc(resulet.filter(Boolean).length)) { _context.next = 6; break; } fail = true; reject(); return _context.abrupt("return"); case 6: _context.prev = 6; _context.next = 9; return getPromise(); case 9: res = _context.sent; _context.next = 17; break; case 12: _context.prev = 12; _context.t0 = _context["catch"](6); fail = true; reject(_context.t0); return _context.abrupt("return"); case 17: resulet[index] = res; // 判断是否完结 if (!(currentPromiseIndex === promiseLoadersLength - 1 && resulet.every(Boolean))) { _context.next = 21; break; } resolve(resulet); return _context.abrupt("return"); case 21: // 执行下一个promise if (currentPromiseIndex < promiseLoadersLength - 1) { ++currentPromiseIndex; execPromise((_promiseLoaders$curre = promiseLoaders[currentPromiseIndex]) === null || _promiseLoaders$curre === void 0 ? void 0 : _promiseLoaders$curre.getPromise, currentPromiseIndex); } case 22: case "end": return _context.stop(); } } }, _callee, null, [[6, 12]]); })); return function execPromise(_x3, _x4) { return _ref13.apply(this, arguments); }; }(); // 初始化执行 for (var i = 0; i < maxConcurrent; i++) { var _promiseLoaders$i; execPromise((_promiseLoaders$i = promiseLoaders[i]) === null || _promiseLoaders$i === void 0 ? void 0 : _promiseLoaders$i.getPromise, i); } currentPromiseIndex = maxConcurrent - 1; })); case 3: case "end": return _context2.stop(); } } }, _callee2); })); return _concurrentPromise.apply(this, arguments); } export function treeSelect(dataSet, record, selected) { dataSet.select(record); if (record.isSelected) { selected.push(record); var children = record.children; if (children) { children.forEach(function (child) { return treeSelect(dataSet, child, selected); }); } } } export function treeUnSelect(dataSet, record, unSelected) { dataSet.unSelect(record); if (!record.isSelected) { unSelected.push(record); var children = record.children; if (children) { children.forEach(function (child) { return treeUnSelect(dataSet, child, unSelected); }); } } } export function treeSelectParent(dataSet, record, selected) { var parent = record.parent; if (parent && !parent.isSelected) { dataSet.select(parent); selected.push(parent); treeSelectParent(dataSet, parent, selected); } } export function treeUnSelectParent(dataSet, record, unSelected) { var parent = record.parent; if (parent && parent.isSelected) { var children = parent.children; if (children && children.every(function (child) { return !child.isSelected; })) { dataSet.unSelect(parent); unSelected.push(parent); treeUnSelectParent(dataSet, parent, unSelected); } } } export function getIf(target, propName, defaultValue) { var value = target[propName]; if (value === undefined) { target[propName] = typeof defaultValue === 'function' ? defaultValue() : defaultValue; return target[propName]; } return value; } //# sourceMappingURL=utils.js.map