fastlion-amis
Version:
一种MIS页面生成工具
88 lines (87 loc) • 4.64 kB
JavaScript
;
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