ming-demo3
Version:
mdf metaui web
422 lines (372 loc) • 16.6 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _baseui = require("@mdf/baseui");
var _moment = _interopRequireDefault(require("moment"));
var _row = _interopRequireDefault(require("./row"));
var _col = _interopRequireDefault(require("./col"));
var _label = _interopRequireDefault(require("./label"));
var RadioButton = _baseui.Radio.Button;
var RadioGroup = _baseui.Radio.Group;
var PredicateDatePicker = function (_Component) {
(0, _inherits2["default"])(PredicateDatePicker, _Component);
function PredicateDatePicker(props) {
var _this;
(0, _classCallCheck2["default"])(this, PredicateDatePicker);
_this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(PredicateDatePicker).call(this, props));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "disabledStartDate", function (startValue) {
var _this$state = _this.state,
endValue = _this$state.endValue,
format = _this$state.format,
endSuffix = _this$state.endSuffix;
if (!startValue || !endValue) return false;
var endDate = (0, _moment["default"])(endValue.format(format) + endSuffix, format + ' HH:mm:ss');
return startValue.valueOf() > endDate.valueOf();
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "disabledEndDate", function (endValue) {
var _this$state2 = _this.state,
startValue = _this$state2.startValue,
format = _this$state2.format,
startSuffix = _this$state2.startSuffix;
if (!endValue || !startValue) return false;
var startDate = (0, _moment["default"])(startValue.format(format) + startSuffix, format + ' HH:mm:ss');
return endValue.valueOf() < startDate.valueOf();
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onStartChange", function (value) {
var _this$state3 = _this.state,
format = _this$state3.format,
startSuffix = _this$state3.startSuffix,
endSuffix = _this$state3.endSuffix,
endValue = _this$state3.endValue;
var value1 = value && value.format(format) + startSuffix || null;
var value2 = endValue && endValue.format(format) + endSuffix || null;
_this.setModelValue(value1, null);
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onEndChange", function (value) {
var _this$state4 = _this.state,
startValue = _this$state4.startValue,
format = _this$state4.format,
startSuffix = _this$state4.startSuffix,
endSuffix = _this$state4.endSuffix;
var value1 = startValue && startValue.format(format) + startSuffix || null;
var value2 = value && value.format(format) + endSuffix || null;
var predicateValue = _this.fitPredicateValue(startValue, value);
_this.setModelValue(value1, value2, predicateValue);
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleStartOpenChange", function (open) {
var endValue = _this.state.endValue;
if (!open) _this.setState({
endOpen: true
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleEndOpenChange", function (open) {
_this.setState({
endOpen: open
});
});
var cStyle = props.cStyle;
var config = null;
if (cStyle) {
try {
config = JSON.parse(cStyle);
} catch (e) {
config = {};
}
}
_this.state = Object.assign({
predicateValue: null,
startValue: null,
endValue: null,
endOpen: false,
format: 'YYYY-MM-DD',
startSuffix: ' 00:00:00',
endSuffix: ' 23:59:59'
}, config);
return _this;
}
(0, _createClass2["default"])(PredicateDatePicker, [{
key: "componentDidMount",
value: function componentDidMount() {
if (this.props.model) this.props.model.addListener(this);
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate() {
if (this.props.model) this.props.model.addListener(this);
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
if (this.props.model) this.props.model.removeListener(this);
}
}, {
key: "setListenerState",
value: function setListenerState(params) {
var valueField = params.valueField,
textField = params.textField,
value = params.value,
dataSource = params.dataSource,
defaultValue = params.defaultValue;
this.valueField = valueField;
this.textField = textField;
delete params.valueField;
delete params.textField;
delete params.value;
this.setState(params);
if (defaultValue === false) {
this.setValue(value && value[valueField] || value);
} else {
this.setValue(cb.utils.isEmpty(value) ? dataSource && dataSource.length && dataSource[0][valueField] : value[valueField] || value);
}
}
}, {
key: "setValue",
value: function setValue(value) {
if (cb.utils.isEmpty(value)) {
this.setState({
predicateValue: null,
startValue: null,
endValue: null
});
} else if ((0, _typeof2["default"])(value) === 'object') {
var value1 = value.value1,
value2 = value.value2,
predicateValue = value.predicateValue;
var startValue = value1 && (0, _moment["default"])(value1) || null,
endValue = value2 && (0, _moment["default"])(value2) || null;
if (startValue && endValue && cb.utils.isEmpty(predicateValue)) predicateValue = this.fitPredicateValue(startValue, endValue);
this.setState({
predicateValue: predicateValue,
startValue: startValue,
endValue: endValue
});
} else {
this.onPredicateChange(value);
}
}
}, {
key: "onPredicateChange",
value: function onPredicateChange(predicateValue) {
var _this$state5 = this.state,
format = _this$state5.format,
startSuffix = _this$state5.startSuffix,
endSuffix = _this$state5.endSuffix;
if (!isNaN(Number(predicateValue)) && Number(predicateValue) < -1) {
this.setModelValue((0, _moment["default"])().subtract(-Number(predicateValue) - 1, 'day').format(format) + startSuffix, (0, _moment["default"])().format(format) + endSuffix, predicateValue);
} else {
switch (predicateValue) {
case '0':
var today = (0, _moment["default"])().format(format);
this.setModelValue(today + startSuffix, today + endSuffix, predicateValue);
break;
case '-1':
var yesterday = (0, _moment["default"])().subtract(1, 'days').format(format);
this.setModelValue(yesterday + startSuffix, yesterday + endSuffix, predicateValue);
break;
case '7':
{
var daystoNextMonday = 7 - ((0, _moment["default"])().isoWeekday() - 1);
var nextWeekStart = (0, _moment["default"])().add('days', daystoNextMonday);
var nextWeekEnd = (0, _moment["default"])().add('days', daystoNextMonday + 6);
this.setModelValue(nextWeekStart.format(format) + startSuffix, nextWeekEnd.format(format) + endSuffix, predicateValue);
break;
}
case '30':
{
var nextMonthStart = (0, _moment["default"])().add('month', 1).format('YYYY-MM') + '-01';
var nextMonthEnd = (0, _moment["default"])(nextMonthStart).add('month', 1).add('days', -1).format(format);
this.setModelValue(nextMonthStart + startSuffix, nextMonthEnd + endSuffix, predicateValue);
break;
}
case '90':
{
var nowquarter = (0, _moment["default"])().quarter();
var nowyear = (0, _moment["default"])().year();
var nextQuarterStart;
var nextQuarterEnd;
switch (nowquarter) {
case 1:
nextQuarterStart = nowyear + '-04-01';
nextQuarterEnd = nowyear + '-06-30';
break;
case 2:
nextQuarterStart = nowyear + '-07-01';
nextQuarterEnd = nowyear + '-09-30';
break;
case 3:
nextQuarterStart = nowyear + '-10-01';
nextQuarterEnd = nowyear + '-12-31';
break;
default:
nextQuarterStart = nowyear + 1 + '-01-01';
nextQuarterEnd = nowyear + 1 + '-03-31';
}
this.setModelValue(nextQuarterStart + startSuffix, nextQuarterEnd + endSuffix, predicateValue);
break;
}
case '365':
{
var nextYearStart = (0, _moment["default"])().add('year', 1).format('YYYY') + '-01-01';
var nextYearEnd = (0, _moment["default"])(nextYearStart).add('year', 1).add('days', -1).format(format);
this.setModelValue(nextYearStart + startSuffix, nextYearEnd + endSuffix, predicateValue);
break;
}
}
}
}
}, {
key: "setModelValue",
value: function setModelValue(value1, value2, predicateValue) {
this.props.model.setValue({
value1: value1,
value2: value2,
predicateValue: predicateValue
}, true);
}
}, {
key: "fitPredicateValue",
value: function fitPredicateValue(startValue, endValue) {
var format = this.state.format;
var startString = startValue && startValue.format(format);
var endString = endValue && endValue.format(format);
if (!startString || !endString) return;
var today = (0, _moment["default"])().format(format);
if (startString === today && endString === today) return '0';
var yesterday = (0, _moment["default"])().subtract(1, 'days').format(format);
if (startString === yesterday && endString === yesterday) return '-1';
if (endString === today) {
var _difftime = (0, _moment["default"])(endString + 'T23:59:59') - startValue;
var _day = (_difftime / 1000 + 1) / 24 / 60 / 60;
return '-' + _day;
}
var daystoNextMonday = 7 - ((0, _moment["default"])().isoWeekday() - 1);
var nextWeekStart = (0, _moment["default"])().add('days', daystoNextMonday).format(format);
var nextWeekEnd = (0, _moment["default"])().add('days', daystoNextMonday + 6).format(format);
if (startString === nextWeekStart && endString === nextWeekEnd) return '7';
var nextMonthStart = (0, _moment["default"])().add('month', 1).format('YYYY-MM') + '-01';
var nextMonthEnd = (0, _moment["default"])(nextMonthStart).add('month', 1).add('days', -1).format(format);
if (startString === nextMonthStart && endString === nextMonthEnd) return '30';
var nowquarter = (0, _moment["default"])().quarter();
var nowyear = (0, _moment["default"])().year();
var nextQuarterStart;
var nextQuarterEnd;
switch (nowquarter) {
case 1:
nextQuarterStart = nowyear + '-04-01';
nextQuarterEnd = nowyear + '-06-30';
break;
case 2:
nextQuarterStart = nowyear + '-07-01';
nextQuarterEnd = nowyear + '-09-30';
break;
case 3:
nextQuarterStart = nowyear + '-10-01';
nextQuarterEnd = nowyear + '-12-31';
break;
default:
nextQuarterStart = nowyear + 1 + '-01-01';
nextQuarterEnd = nowyear + 1 + '-03-31';
}
if (startString === nextQuarterStart && endString === nextQuarterEnd) return '90';
var nextYearStart = (0, _moment["default"])().add('year', 1).format('YYYY') + '-01-01';
var nextYearEnd = (0, _moment["default"])(nextYearStart).add('year', 1).add('days', -1).format(format);
if (startString === nextYearStart && endString === nextYearEnd) return '365';
return null;
}
}, {
key: "baseControl",
value: function baseControl() {
var _this2 = this;
var dataSource = this.state.dataSource;
if (!dataSource || !dataSource.length) return null;
var valueField = this.valueField,
textField = this.textField;
var options = [];
dataSource.forEach(function (item) {
options.push(_react["default"].createElement(RadioButton, {
value: item[valueField]
}, item[textField]));
});
var _this$state6 = this.state,
predicateValue = _this$state6.predicateValue,
startValue = _this$state6.startValue,
endValue = _this$state6.endValue,
endOpen = _this$state6.endOpen;
var isInPanel = this.props.isInPanel ? this.props.isInPanel : false;
var isInDesign = this.props.isInDesign ? this.props.isInDesign : false;
var panelType = this.props.panelType || 0;
return _react["default"].createElement(_row["default"], {
className: "m-b-10"
}, _react["default"].createElement("div", {
style: {
"float": 'left'
},
className: "m-r-10"
}, _react["default"].createElement(RadioGroup, {
value: predicateValue,
onChange: function onChange(e) {
return _this2.onPredicateChange(e.target.value);
}
}, options)), isInPanel == false || isInDesign == true ? _react["default"].createElement("div", {
style: {
"float": 'left'
},
className: "query-scheme-date"
}, _react["default"].createElement(_row["default"], {
colCount: 3
}, _react["default"].createElement(_col["default"], {
span: 1,
className: "m-r-10"
}, _react["default"].createElement(_baseui.DatePicker, {
disabledDate: this.disabledStartDate,
value: startValue,
onChange: this.onStartChange,
onOpenChange: this.handleStartOpenChange
})), _react["default"].createElement("div", {
style: {
"float": 'left'
},
className: "m-r-10" + (panelType == 3 ? " basic-predicate-to " : "")
}, "\u81F3"), _react["default"].createElement(_col["default"], {
span: 1
}, _react["default"].createElement(_baseui.DatePicker, {
disabledDate: this.disabledEndDate,
value: endValue,
onChange: this.onEndChange,
open: endOpen,
onOpenChange: this.handleEndOpenChange
})))) : "");
}
}, {
key: "render",
value: function render() {
var cShowCaption = this.props.cShowCaption;
var control = this.baseControl();
var isInPanel = this.props.isInPanel ? this.props.isInPanel : false;
var isInDesign = this.props.isInDesign ? this.props.isInDesign : false;
return _react["default"].createElement("div", {
className: 'basic-predicate-data-picker ' + (this.state.classname || '')
}, cShowCaption && (isInPanel == false || isInDesign == true) ? _react["default"].createElement(_label["default"], {
isInFilterJSX: true,
control: control,
title: cShowCaption
}) : control);
}
}]);
return PredicateDatePicker;
}(_react.Component);
exports["default"] = PredicateDatePicker;
//# sourceMappingURL=predicatedatepicker.js.map