UNPKG

framework4js

Version:

Framework-for-js is a better Javascript's framework

164 lines (159 loc) 5.53 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); /** * Class Transformer 转换器 * NewTransformer extends Transformer -> constructor(){super(data,payload)} */ var Transformer = /*#__PURE__*/function () { /** * Method constructor * @param {*} data * @param {*} payload * @returns */ function Transformer(data) { var payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; (0, _classCallCheck2["default"])(this, Transformer); // data this._data = data; // payload this._payload = payload; } /** * Method transform * 转换方法 * @param {Object|String|Number} data * @returns */ (0, _createClass2["default"])(Transformer, [{ key: "transform", value: function transform(data) { return data; } /** * Method create * 创建新数据 * @return {Array/Object|String|Number|*} */ }, { key: "create", value: function create(callback) { var _this = this; if (Array.isArray(this._data)) { return this._data.map(function (item, index) { if (typeof callback === 'function') { return callback(item, index); } return _this.transform(item); }); } else { if (typeof callback === 'function') { return callback(this._data, 0); } return this.transform(this._data); } } /** * 格式化数字 * @param {String|Number} number 待处理数字 * @param {Number} places 小数点位数 -1为原样保留 * @param {String} thousand 千位字符串 默认为空 * @param {String} decimal 小数点替换字符 默认为. * @return {String|Number} */ }, { key: "formatNumber", value: function formatNumber() { var number = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var places = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1; var thousand = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; var decimal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.'; // 只处理正常数字 if (typeof number !== 'string' && typeof number !== 'number') { number = 0; } // 得到正常的数字 number = isNaN(parseFloat(number)) ? 0 : number; var numSplit = number.toString().split('.'); // 为-1时为保留当前数字的自带有效位数 places = !isNaN(Math.abs(parseInt(places))) && parseInt(places) !== -1 ? Math.abs(parseInt(places)) : -1; // 保留原有小数点位数 if (numSplit[1] && places === -1) { places = numSplit[1].length; } else if (!numSplit[1] && places === -1) { places = 0; } // 千位标记 thousand = typeof thousand == 'string' ? thousand : ','; // 小数点标记 decimal = decimal || '.'; // 符号 var negative = number < 0 ? '-' : ''; var i, j; // 10进制 i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10).toString(); j = (j = i.length) > 3 ? j % 3 : 0; // 处理后数据 return negative + (j ? i.substr(0, j) + thousand : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : ''); } /** * formatDate 日期格式化 * @param {string|number} timestamp * @returns */ }, { key: "formatDate", value: function formatDate() { var timestamp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now(); // 参数不是数字说明发过来的已经是格式化的时间 if (typeof timestamp === 'string') { var formatDate = new Date(timestamp); if (!isNaN(formatDate)) { // 返回不带毫秒的时间戳 return this.formatDate(Date.parse(formatDate)); } return this.formatDate(); } var date = new Date(timestamp); var Y = date.getFullYear(); var M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1; var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); var h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours(); var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds(); // 星期 var weekIndex = date.getDay(); var weeks = { '0': '日', '1': '一', '2': '二', '3': '三', '4': '四', '5': '五', '6': '六' }; var ap = date.getHours() >= 0 && h < 12 ? 'AM' : 'PM'; var apCn = date.getHours() >= 0 && h < 12 ? '上午' : '下午'; // 返回JSON格式时间 return { Y: Y.toString(), M: M.toString(), D: D.toString(), h: h.toString(), m: m.toString(), s: s.toString(), week: weeks[weekIndex], ap: ap, apCn: apCn }; } }]); return Transformer; }(); exports["default"] = Transformer;