qt-public-ui
Version:
新设计规范下业务组件库
161 lines (160 loc) • 5.08 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import variable from '../../theme/g2.var';
export { default as i18n } from './i18n';
export var assert = function assert(condition, message) {
if (!condition) return;
if (message instanceof Error) {
throw message;
} else {
throw new Error(message);
}
};
export var checkEmpty = function checkEmpty(value, defaultValue) {
return [null, false, undefined, '', NaN].includes(value) ? defaultValue : value;
};
// 仅判断字面量是否为空
export var notEmpty = function notEmpty(value) {
if ([null, false, undefined, '', NaN].includes(value)) {
return false;
}
if (typeof value === 'object') {
return Object.keys(value).length !== 0;
}
return true;
};
var numberWithCommas = function numberWithCommas(x) {
if (x === null || x === undefined) return '-';
var parts = x.toString().split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
if (parts[1] === '00') {
// 当value是整数时,不需要保留两位小数
parts.splice(1, 1);
}
return parts.join('.');
};
export var formatValue = function formatValue(type, defaultValue) {
if (type === void 0) {
type = 'string';
}
if (defaultValue === void 0) {
defaultValue = '-';
}
return function (value) {
var checkedVal = checkEmpty(value, defaultValue);
if (checkedVal === defaultValue) return checkedVal;
switch (type) {
case 'string':
return checkedVal;
case 'number':
return numberWithCommas(checkedVal);
case 'decimal':
return checkedVal.toFixed(2);
case 'percent':
return numberWithCommas(checkedVal) + "%";
case 'decimal_percent':
return numberWithCommas(checkedVal.toFixed(2)) + "%";
default:
return checkedVal;
}
};
};
export var emptyFun = function emptyFun() {};
export var getCycleColor = function getCycleColor(name) {
var colorList = variable[name] || [];
var index = 0;
return {
next: function next() {
if (index >= colorList.length) index = 0;
return colorList[index++];
},
reset: function reset() {
index = 0;
}
};
};
export var removeProperty = function removeProperty(target) {
if (Array.isArray(target)) {
return target.map(function (tar) {
return removeProperty(tar);
});
}
var _result = _extends({}, target);
for (var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
keys[_key - 1] = arguments[_key];
}
keys.forEach(function (key) {
delete _result[key];
});
return _result;
};
export var getCeaseDiff = function getCeaseDiff(value, prevValue) {
if (value === void 0) {
value = [];
}
if (prevValue === void 0) {
prevValue = [];
}
var operator = value.length < prevValue.length ? 'delete' : 'add';
var diff = '';
if (operator === 'delete') {
diff = prevValue.find(function (prev) {
return !value.includes(prev);
}) || '';
} else {
diff = value.find(function (val) {
return !prevValue.includes(val);
}) || '';
}
return [diff, operator];
};
export var loadScript = function loadScript(url, cb) {
var el = document.createElement('script');
el.charset = 'utf-8';
el.onload = function () {
el.onload = null;
cb && cb();
};
document.querySelectorAll('head')[0].appendChild(el);
el.src = url;
};
export function formartBiz(num) {
return parseFloat(String(Number.isNaN(num) ? 0 : num)).toLocaleString();
}
export var getPopupContainer = function getPopupContainer(triggerNode) {
var currentEle = triggerNode;
while (currentEle && currentEle.parentElement) {
var computedStyle = getComputedStyle(currentEle.parentElement);
if (/^(auto)|(scroll)$/.test(computedStyle.getPropertyValue('overflow-y')) && currentEle.parentElement.scrollHeight > currentEle.parentElement.clientHeight) {
if (computedStyle.getPropertyValue('position') === 'static') {
currentEle.parentElement.style.position = 'relative';
}
return currentEle.parentElement;
} else {
currentEle = currentEle.parentElement;
}
}
return document.body;
};
export var getTextWidthAndHeight = function getTextWidthAndHeight(text, fontSize, fontFamily) {
var text_span = document.createElement('span');
var result = {
width: 0,
height: 0
};
result.width = text_span.offsetWidth;
result.height = text_span.offsetHeight;
text_span.style.visibility = 'hidden';
text_span.style.fontSize = fontSize || '12px';
text_span.style.fontFamily = fontFamily || 'Alibaba-PuHuiTi-Regular';
text_span.style.display = 'inline-block';
document.body.appendChild(text_span);
if (typeof text_span.textContent !== 'undefined') {
text_span.textContent = text;
} else {
text_span.innerText = text;
}
result.width = parseFloat(window.getComputedStyle(text_span).width) - result.width;
result.height = parseFloat(window.getComputedStyle(text_span).height) - result.height;
document.body.removeChild(text_span);
return result;
};