framework4js
Version:
Framework-for-js is a better Javascript's framework
164 lines (159 loc) • 5.53 kB
JavaScript
;
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;