iep-ui
Version:
An enterprise-class UI design language and Vue-based implementation
196 lines (166 loc) • 5.55 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.rangeDateTime = undefined;
var _vueTypes = require('../_util/vue-types');
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _configConsumerProps = require('../config-provider/configConsumerProps');
var _momentUtil = require('../_util/moment-util');
var _Panel = require('./Panel');
var _Panel2 = _interopRequireDefault(_Panel);
var _rkWebDragdealer = require('rk-web-dragdealer');
var _rkWebDragdealer2 = _interopRequireDefault(_rkWebDragdealer);
var _momentRange = require('moment-range');
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _lodash = require('lodash');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
_moment2['default'].locale('zh-cn');
var rangeDateTime = exports.rangeDateTime = function rangeDateTime(start, end) {
var interval = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'days';
var momentRange = (0, _momentRange.extendMoment)(_moment2['default']);
var range = momentRange.range(start, end);
return Array.from(range.by(interval));
};
exports['default'] = {
name: 'AAirQualityTrendChartAqi',
props: {
date: _momentUtil.TimesType,
axis: _vueTypes2['default'].array.def(function () {
return [];
}),
time: _vueTypes2['default'].array.def(function () {
return [];
}),
data: _vueTypes2['default'].array.def(function () {
return [];
}),
colors: _vueTypes2['default'].array.def(function () {
return ['#3dcd1a', '#f1bb1e', '#e51d30', '#f15b1e', '#f1bb1e', '#3dcd1a', '#3dcd1a', '#f1bb1e', '#3dcd1a'];
}),
mode: _vueTypes2['default'].oneOf(['air', 'water']).def('air')
},
inject: {
configProvider: { 'default': function _default() {
return _configConsumerProps.ConfigConsumerProps;
} }
},
data: function data() {
return {
isMove: false,
left: 0,
width: 0,
block: 0,
title: '',
rangeDate: []
};
},
watch: {
date: {
handler: function handler(e) {
this.rangeDate = rangeDateTime(e[0], e[1]);
this.title = (0, _moment2['default'])(e[0]).format('MM-DD') + '\u81F3' + (0, _moment2['default'])(e[1]).format('MM-DD') + '\u65E5\u5747\u8D8B\u52BF';
},
immediate: true,
deep: true
}
},
mounted: function mounted() {
if (this.$refs.panel) {
this.width = this.$refs.panel.clientWidth;
}
this.initSlider();
},
methods: {
initSlider: function initSlider() {
var _this = this;
new _rkWebDragdealer2['default'](this.$refs.progress, {
animationCallback: function animationCallback(x, y) {
_this.block = x * (_this.width / 3) * _this.rangeDate.length;
_this.$refs.panelWrapper.style.transform = 'translateX(-' + (x <= 0 ? _this.block : _this.block - _this.width / 3) + 'px)';
}
});
}
},
render: function render() {
var _this2 = this;
var h = arguments[0];
var customizePrefixCls = this.prefixCls,
$props = this.$props;
var getPrefixCls = this.configProvider.getPrefixCls;
var prefixCls = getPrefixCls('air-quality-trend-chart-aqi', customizePrefixCls);
var data = $props.data,
axis = $props.axis,
time = $props.time,
mode = $props.mode;
var dateVNodes = this.rangeDate.map(function (item, index) {
return h(
'div',
{ 'class': prefixCls + '-header-progress-label-item' },
[(0, _moment2['default'])(item).format('MM-DD')]
);
});
var panelVNodes = this.rangeDate.map(function (item, index) {
return h(
_Panel2['default'],
{
attrs: {
prefixCls: prefixCls,
mode: mode,
time: time,
axis: axis,
data: !(0, _lodash.isEmpty)(data) ? data[index] : {},
date: (0, _moment2['default'])(item).format('MM-DD'),
week: (0, _moment2['default'])(item).format('dddd')
},
style: { width: _this2.width / 3 + 'px' }
},
[index]
);
});
var color = 'linear-gradient(90.00deg, ' + this.colors.map(function (item, index) {
return item + ' ' + _this2.colors.length / 100 * index * 100 + '%';
}).toString() + ')';
if (this.$refs.progress) {
this.$refs.progress.style.background = color;
}
return h(
'div',
{ 'class': prefixCls, ref: 'panel' },
[h(
'div',
{ 'class': prefixCls + '-title' },
[this.title]
), h(
'div',
{ 'class': prefixCls + '-header' },
[h(
'div',
{ 'class': prefixCls + '-header-label' },
['\u7A7A\u6C14\u8D28\u91CF']
), h(
'div',
{ 'class': prefixCls + '-header-progress' },
[h(
'div',
{ 'class': prefixCls + '-header-progress-label' },
[dateVNodes]
), h(
'div',
{ 'class': prefixCls + '-header-progress-core', ref: 'progress' },
[h('div', { 'class': prefixCls + '-header-progress-default' }), h('div', { 'class': prefixCls + '-header-progress-mark handle', ref: 'slider' })]
)]
)]
), h(
'div',
{ 'class': prefixCls + '-footer' },
[h(
'div',
{ 'class': prefixCls + '-footer-core', ref: 'panelWrapper' },
[panelVNodes]
)]
)]
);
}
};
;