ze-react-component-library
Version:
ZeroETP React Component Library
157 lines (136 loc) • 4.85 kB
JavaScript
var __assign = this && this.__assign || function () {
__assign = Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
}
return t;
};
return __assign.apply(this, arguments);
};
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
}
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
import React, { Suspense, lazy, useContext, useState } from "react";
import { useRequest } from "@umijs/hooks";
import { findPropByName, getNameProperty } from "zeroetp-api-sdk";
import { requestLogicform } from "../request";
import { BetaSchemaForm } from "@ant-design/pro-form";
import pivotData from "../util/pivotData";
var ZEGrid = /*#__PURE__*/lazy(function () {
return import("../ZEGrid");
}); // Helper Functions
import _ from "underscore";
import moment from "moment";
import { formatWithProperty } from "../util";
import { ProProvider } from "@ant-design/pro-provider";
import ObjectFormRenderItem from "../components/ObjectFormRenderItem";
var helperFunctions = {
_: _,
moment: moment,
pivotData: pivotData,
formatWithProperty: formatWithProperty
};
var CustomRender = function CustomRender(_a) {
var _b;
var _c = _a.renderArgs,
renderArgs = _c === void 0 ? [] : _c;
var _ = renderArgs[0],
props = renderArgs[1],
dom = renderArgs[2];
var logicform = props === null || props === void 0 ? void 0 : props.fieldProps.logicform;
var propName = (_b = props === null || props === void 0 ? void 0 : props.fieldProps) === null || _b === void 0 ? void 0 : _b.propName;
var data = useRequest(function () {
return logicform ? requestLogicform(logicform) : Promise.resolve();
}).data;
if (!data) {
return dom;
}
return /*#__PURE__*/React.createElement(ObjectFormRenderItem, {
schema: data.schema,
props: props,
showTotal: true,
queryProperty: propName ? findPropByName(data.schema, propName) : getNameProperty(data.schema)
});
};
var getValueTypes = function getValueTypes() {
return {
select: {
renderFormItem: function renderFormItem(text, props, dom) {
return /*#__PURE__*/React.createElement(CustomRender, {
renderArgs: [text, props, dom]
});
}
}
};
};
var ZEReport = function ZEReport(_a) {
var initialLogicform = _a.initialLogicform,
dataToGrid = _a.dataToGrid,
_logicforms = _a.logicforms,
_filtersFunc = _a.filters,
title = _a.title,
gridProps = __rest(_a, ["initialLogicform", "dataToGrid", "logicforms", "filters", "title"]);
var initialFilterValues = {};
var filters = _filtersFunc ? _filtersFunc(helperFunctions, initialLogicform) : [];
filters.forEach(function (f) {
if (f.initialValue && f.dataIndex) {
initialFilterValues[f.dataIndex] = f.initialValue;
}
});
var values = useContext(ProProvider);
var _b = useState(initialFilterValues),
filterValues = _b[0],
setFilterValues = _b[1];
var _c = useRequest(function () {
var logicforms;
if (_logicforms instanceof Array) {
logicforms = _logicforms;
} else {
logicforms = _logicforms(filterValues, helperFunctions, initialLogicform);
}
return Promise.all(logicforms.map(function (d) {
return requestLogicform(d);
}));
}, {
refreshDeps: [_logicforms, filterValues, initialLogicform],
initialData: [],
formatResult: function formatResult(res) {
return res;
}
}),
data = _c.data,
loading = _c.loading;
return /*#__PURE__*/React.createElement(Suspense, {
fallback: /*#__PURE__*/React.createElement("strong", null, "\u52A0\u8F7D\u4E2D...")
}, /*#__PURE__*/React.createElement(ProProvider.Provider, {
value: __assign(__assign({}, values), {
valueTypeMap: getValueTypes()
})
}, /*#__PURE__*/React.createElement(ZEGrid, __assign({}, gridProps, {
data: dataToGrid(data, filterValues, helperFunctions),
loading: loading,
exportFileName: gridProps.exportFileName || title,
controls: /*#__PURE__*/React.createElement(BetaSchemaForm, {
layoutType: "QueryFilter",
columns: filters,
labelAlign: "left",
size: "small",
submitter: false,
onValuesChange: function onValuesChange(values) {
console.log(values);
setFilterValues(__assign(__assign({}, filterValues), values));
}
})
}))));
};
export default ZEReport;