oak-frontend-base/lib/components/query/web.js

280 lines
15 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var jsx_runtime_1 = require("react/jsx-runtime");
var antd_1 = require("antd");
var money_1 = require("oak-domain/lib/utils/money");
var Entity_1 = require("oak-domain/lib/types/Entity");
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
var weekday_1 = tslib_1.__importDefault(require("dayjs/plugin/weekday"));
var localeData_1 = tslib_1.__importDefault(require("dayjs/plugin/localeData"));
dayjs_1.default.extend(weekday_1.default);
dayjs_1.default.extend(localeData_1.default);
var lodash_1 = require("oak-domain/lib/utils/lodash");
var assert_1 = require("oak-domain/lib/utils/assert");
var utils_1 = require("./utils");
var foreignKeyFilter_1 = tslib_1.__importDefault(require("../foreignKeyFilter"));
function Render(props) {
var _a = props.data, entity = _a.entity, column = _a.column, oakFullpath = _a.oakFullpath;
var _b = props.methods, t = _b.t, addNamedFilter = _b.addNamedFilter, removeNamedFilterByName = _b.removeNamedFilterByName, refresh = _b.refresh, getNamedFilter = _b.getNamedFilter, getRefByAttr = _b.getRefByAttr;
var name = (0, utils_1.getFilterName)(column);
var filter = getNamedFilter(name);
var _c = column.type, type = _c === void 0 ? 'text' : _c, op = column.op, attr = column.attr, label = column.label, _d = column.transformValue, transformValue = _d === void 0 ? function (column, filter) { return (0, lodash_1.get)(filter, (0, utils_1.getOp)(column), ''); } : _d, _e = column.transformFilter, transformFilter = _e === void 0 ? function (column, value) { return (0, lodash_1.set)({}, (0, utils_1.getOp)(column), value); } : _e, placeholder = column.placeholder;
var params = getRefByAttr(entity, attr);
if (!params) {
return null;
}
var entity2 = params.entity, attr2 = params.attr, attrType = params.attrType, entityI18n = params.entityI18n, attrI18n = params.attrI18n, attribute = params.attribute;
var _label = '';
if (label && label.indexOf(':') === -1) {
_label = label;
}
else if (['$text'].includes(attr2)) {
_label = t("attr.".concat(attr2));
}
else if (Entity_1.initinctiveAttributes.includes(attr2)) {
_label = t("attr.".concat(attr2));
}
else {
_label = t("".concat(entityI18n, ":attr.").concat(attrI18n));
}
var deleteFilter = function (interval) {
removeNamedFilterByName(name);
};
var setFilterAndResetFilter = function (value, getFilter) {
if (value === '' ||
value === undefined ||
value === null ||
(value === null || value === void 0 ? void 0 : value.length) === 0) {
removeNamedFilterByName(name);
return;
}
var filter2 = typeof getFilter === 'function'
? getFilter()
: transformFilter(column, value);
addNamedFilter({
filter: filter2,
'#name': name,
});
};
var V;
if (attrType === '$text') {
var ops = ['$search'];
if (op) {
(0, assert_1.assert)(ops.includes(op), assertMessage(attr, attrType, op, ops));
}
var _f = column.transformFilter, transformFilter_1 = _f === void 0 ? function (column, value) {
return (0, lodash_1.set)({}, (0, utils_1.getOp2)(column, '$search'), value);
} : _f, _g = column.transformValue, transformValue_1 = _g === void 0 ? function (column, filter) { return (0, lodash_1.get)(filter, (0, utils_1.getOp2)(column, '$search'), ''); } : _g;
var _value_1 = transformValue_1(column, filter);
return ((0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: _label }, { children: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(antd_1.Input, { placeholder: placeholder || t('placeholder.input'), value: _value_1, onChange: function (e) {
var val = e.target.value;
setFilterAndResetFilter(val, function () {
return transformFilter_1(column, val);
});
}, allowClear: true, onPressEnter: function () { } }) }) })));
}
var _value = transformValue(column, filter);
switch (attrType) {
case 'money': {
var ops = ['$eq', '$ne', '$gt', '$gte', '$lt', '$lte'];
var moneyVal_1 = _value ? (0, money_1.ToYuan)(_value) : '';
V = ((0, jsx_runtime_1.jsx)(antd_1.Input, { placeholder: placeholder || t('placeholder.input'), value: moneyVal_1, onChange: function (e) {
var val = e.target.value;
var val2 = /^(-?[1-9]\d*(\.\d*[1-9])?)|(-?0\.\d*[1-9])$/.test(val) ? (0, money_1.ToCent)(Number(val)) : moneyVal_1;
setFilterAndResetFilter(val2);
}, allowClear: true, onPressEnter: function () { } }));
break;
}
case 'float': {
var ops = ['$eq', '$ne', '$gt', '$gte', '$lt', '$lte'];
V = ((0, jsx_runtime_1.jsx)(antd_1.Input, { placeholder: placeholder || t('placeholder.input'), value: _value, onChange: function (e) {
var val = e.target.value;
setFilterAndResetFilter(val);
}, allowClear: true, onPressEnter: function () { } }));
break;
}
case 'integer':
case 'int': {
var ops = ['$eq', '$ne', '$gt', '$gte', '$lt', '$lte'];
if (op) {
(0, assert_1.assert)(ops.includes(op), assertMessage(attr, attrType, op, ops));
}
V = ((0, jsx_runtime_1.jsx)(antd_1.Input, { placeholder: placeholder || t('placeholder.input'), value: _value, onChange: function (e) {
var val = e.target.value;
setFilterAndResetFilter(val);
}, allowClear: true, onPressEnter: function () { } }));
break;
}
case 'char':
case 'varchar': {
var ops = [
'$eq',
'$ne',
'$endsWith',
'$includes',
'$startsWith',
];
if (op) {
(0, assert_1.assert)(ops.includes(op), assertMessage(attr, attrType, op, ops));
}
V = ((0, jsx_runtime_1.jsx)(antd_1.Input, { placeholder: placeholder || t('placeholder.input'), value: _value, onChange: function (e) {
var val = e.target.value;
setFilterAndResetFilter(val);
}, allowClear: true, onPressEnter: function () { } }));
break;
}
case 'boolean': {
var text2 = void 0;
switch (_value) {
case true: {
text2 = t('tip.yes');
break;
}
case false: {
text2 = t('tip.no');
break;
}
default: {
text2 = t('tip.unselected');
break;
}
}
V = ((0, jsx_runtime_1.jsx)(antd_1.Button, tslib_1.__assign({ onClick: function () {
var val;
if (_value === true) {
val = false;
}
else if (_value === false) {
val = '';
}
else {
val = true;
}
setFilterAndResetFilter(val);
} }, { children: text2 })));
break;
}
case 'enum': {
var ops = ['$in', '$nin', '$eq', '$ne'];
if (op) {
(0, assert_1.assert)(ops.includes(op), assertMessage(attr, attrType, op, ops));
}
var enumeration = attribute === null || attribute === void 0 ? void 0 : attribute.enumeration;
var selectProps = column.selectProps;
var _h = selectProps || {}, options = _h.options, _j = _h.transformInOption, transformInOption = _j === void 0 ? function (option) { return (typeof option === 'object' ? option.value : option); } : _j, // 根据
_k = _h.transformOutOption, // 根据
transformOutOption = _k === void 0 ? function (option) { return (typeof option === 'object' ? option.label : option); } : _k;
var options2 = options ||
(enumeration === null || enumeration === void 0 ? void 0 : enumeration.map(function (ele) { return ({
label: t("".concat(entityI18n, ":v.").concat(attrI18n, ".").concat(ele)),
value: ele,
}); }));
if (op && ['$in', '$nin'].includes(op)) {
var _l = column.transformValue, transformValue_2 = _l === void 0 ? function (column, filter) {
return (0, lodash_1.get)(filter, (0, utils_1.getOp)(column), []);
} : _l;
var selectValue = transformValue_2(column, filter);
V = ((0, jsx_runtime_1.jsx)(antd_1.Select, { mode: "multiple", allowClear: true, placeholder: placeholder || t('placeholder.select'), value: selectValue, onChange: function (value) {
setFilterAndResetFilter(value);
}, options: (options2 === null || options2 === void 0 ? void 0 : options2.length) > 0 ? options2 : [], onClear: function () {
deleteFilter();
} }));
}
else {
V = ((0, jsx_runtime_1.jsx)(antd_1.Select, { allowClear: true, placeholder: placeholder || t('placeholder.select'), value: _value, onChange: function (value) {
setFilterAndResetFilter(value);
}, options: (options2 === null || options2 === void 0 ? void 0 : options2.length) > 0 ? options2 : [], onClear: function () {
deleteFilter();
} }));
}
break;
}
case 'datetime': {
var dateProps = column.dateProps;
var _m = dateProps || {}, _o = _m.range, range = _o === void 0 ? false : _o, _p = _m.showTime, showTime = _p === void 0 ? false : _p;
var unitOfTime_1 = 'day';
if (range) {
var ops = ['$between'];
(0, assert_1.assert)(op, '选择时间范围,算子必须传入');
(0, assert_1.assert)(ops.includes(op), assertMessage(attr, attrType, op, ops));
var _q = column.transformValue, transformValue_3 = _q === void 0 ? function (column, filter) {
return (0, lodash_1.get)(filter, "".concat((0, utils_1.getOp)(column)), []);
} : _q, _r = column.transformFilter, transformFilter_2 = _r === void 0 ? function (column, value) {
var startTime = (0, dayjs_1.default)(value[0])
.startOf(unitOfTime_1)
.valueOf();
var endTime = (0, dayjs_1.default)(value[1])
.endOf(unitOfTime_1)
.valueOf();
return (0, lodash_1.set)({}, (0, utils_1.getOp)(column), [startTime, endTime]);
} : _r;
var dateValues = transformValue_3(column, filter);
var _s = tslib_1.__read(dateValues, 2), startTime = _s[0], endTIme = _s[1];
V = ((0, jsx_runtime_1.jsx)(antd_1.DatePicker.RangePicker, { showTime: showTime, value: [
startTime ? (0, dayjs_1.default)(startTime) : '',
endTIme ? (0, dayjs_1.default)(endTIme) : '',
], onChange: function (dates, dateStrings) {
setFilterAndResetFilter(dates, function () {
return transformFilter_2(column, dates);
});
} }));
}
else {
var ops = ['$between', '$gt', '$gte', '$lt', '$lte'];
if (op) {
(0, assert_1.assert)(ops.includes(op), assertMessage(attr, attrType, op, ops));
}
var _t = column.transformFilter, transformFilter_3 = _t === void 0 ? function (column, value) {
var startTime = (0, dayjs_1.default)(value)
.startOf(unitOfTime_1)
.valueOf();
var endTime = (0, dayjs_1.default)(value)
.endOf(unitOfTime_1)
.valueOf();
if (column.op === '$between') {
var values2 = [startTime, endTime];
return (0, lodash_1.set)({}, (0, utils_1.getOp)(column), values2);
}
if (column.op === '$gt' || column.op === '$gte') {
return (0, lodash_1.set)({}, (0, utils_1.getOp)(column), startTime);
}
if (column.op === '$lt' || column.op === '$lte') {
return (0, lodash_1.set)({}, (0, utils_1.getOp)(column), endTime);
}
return (0, lodash_1.set)({}, (0, utils_1.getOp)(column), (0, dayjs_1.default)(value).valueOf());
} : _t, _u = column.transformValue, transformValue_4 = _u === void 0 ? function (column, filter) {
if (column.op === '$between') {
return (0, lodash_1.get)(filter, "".concat((0, utils_1.getOp)(column), ".0"), null);
}
return (0, lodash_1.get)(filter, (0, utils_1.getOp)(column), null);
} : _u;
var dateValue = transformValue_4(column, filter);
V = ((0, jsx_runtime_1.jsx)(antd_1.DatePicker, { format: "YYYY-MM-DD", showTime: showTime, value: dateValue ? (0, dayjs_1.default)(dateValue) : null, onChange: function (date, dateString) {
setFilterAndResetFilter(date, function () {
return transformFilter_3(column, date);
});
} }));
}
break;
}
case 'ref': {
var ops = ['$in', '$nin', '$eq', '$ne'];
if (op) {
(0, assert_1.assert)(ops.includes(op), assertMessage(attr, attrType, op, ops));
}
V = ((0, jsx_runtime_1.jsx)(foreignKeyFilter_1.default, { formItem: false, entity: entity, oakPath: oakFullpath, column: column }));
break;
}
default: {
(0, assert_1.assert)(false, "\u7C7B\u578B\u3010".concat(attrType, "\u3011\u6682\u4E0D\u652F\u6301"));
break;
}
}
return ((0, jsx_runtime_1.jsx)(antd_1.Form.Item, tslib_1.__assign({ label: _label }, { children: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: V }) })));
}
exports.default = Render;
function assertMessage(attr, attrType, op, ops) {
return "attr\u4E3A\u3010".concat(attr, "\u3011, \u4F20\u5165\u7684\u7B97\u5B50\u3010").concat(op, "\u3011\u4E0D\u652F\u6301\uFF0C\u7C7B\u578B\u3010").concat(attrType, "\u3011\u53EA\u652F\u6301\u3010").concat(JSON.stringify(ops), "\u3011");
}