UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

88 lines (87 loc) 4.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NumberFieldRenderer = exports.NumberField = void 0; var tslib_1 = require("tslib"); var react_1 = tslib_1.__importDefault(require("react")); var factory_1 = require("../factory"); var helper_1 = require("../utils/helper"); var Select_1 = require("../components/Select"); var tpl_builtin_1 = require("../utils/tpl-builtin"); var utils_1 = require("../utils/utils"); var setting_1 = require("../utils/setting"); var NumberField = /** @class */ (function (_super) { tslib_1.__extends(NumberField, _super); function NumberField() { return _super !== null && _super.apply(this, arguments) || this; } NumberField.prototype.render = function () { var _a; var _b = this.props, placeholder = _b.placeholder, kilobitSeparator = _b.kilobitSeparator, precision = _b.precision, prefix = _b.prefix, affix = _b.affix, suffix = _b.suffix, percent = _b.percent, unitOptions = _b.unitOptions, className = _b.className, style = _b.style, cx = _b.classnames, __ = _b.translate, _c = _b.showUppercase, showUppercase = _c === void 0 ? 0 : _c; var viewValue = (react_1.default.createElement("span", { className: "text-muted" }, placeholder)); var value = ((_a = this.props) === null || _a === void 0 ? void 0 : _a.isFieldTable) ? (0, helper_1.getPropValue)(this.props) : this.props.value; var unit = ''; if (typeof value === 'string' && unitOptions && unitOptions.length) { var units = (0, Select_1.normalizeOptions)(unitOptions).map(function (v) { return v.value; }); unit = units.find(function (item) { return value.endsWith(item); }) || ''; if (unit) { value = value.replace(unit, ''); } } if (typeof value === 'number' || typeof value === 'string') { // 设置了精度,但是原始数据是字符串,需要转成 float 之后再处理 if (typeof value === 'string' && precision) { value = (0, tpl_builtin_1.stripNumber)(parseFloat(value)); } if (isNaN(value)) { viewValue = false; } else if (percent) { // 如果是百分比展示 value = parseFloat(value) || 0; var decimals = typeof percent === 'number' ? percent : 0; var whole = value * 100; var multiplier = Math.pow(10, decimals); value = (Math.round(whole * multiplier) / multiplier).toFixed(decimals) + '%'; viewValue = react_1.default.createElement("span", null, value); } else { if (typeof value === 'number' && precision) { value = value.toFixed(precision); } if (kilobitSeparator && showUppercase === 0) { value = (0, helper_1.numberFormatter)(value, precision); } if (!Number.isNaN(+value)) { value = (0, utils_1.translateNumber)(value, showUppercase); } viewValue = react_1.default.createElement("span", null, value); } } viewValue = !viewValue ? (react_1.default.createElement("span", { className: "text-danger" }, __('Number.invalid'))) : (react_1.default.createElement(react_1.default.Fragment, null, prefix, viewValue, unit, affix !== null && affix !== void 0 ? affix : suffix)); return (react_1.default.createElement("span", { className: cx('NumberField', className), style: style }, (value != 0 && !value) ? react_1.default.createElement("span", { className: "text-muted" }, placeholder) : viewValue)); }; NumberField.defaultProps = { placeholder: setting_1.UserSetting.tableEmptyValueSetting, kilobitSeparator: false }; return NumberField; }(react_1.default.Component)); exports.NumberField = NumberField; var NumberFieldRenderer = /** @class */ (function (_super) { tslib_1.__extends(NumberFieldRenderer, _super); function NumberFieldRenderer() { return _super !== null && _super.apply(this, arguments) || this; } NumberFieldRenderer = tslib_1.__decorate([ (0, factory_1.Renderer)({ type: 'number' }) ], NumberFieldRenderer); return NumberFieldRenderer; }(NumberField)); exports.NumberFieldRenderer = NumberFieldRenderer; //# sourceMappingURL=./renderers/Number.js.map