@bigfishtv/cockpit
Version:
218 lines (177 loc) • 7.77 kB
JavaScript
;
exports.__esModule = true;
exports.default = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _class, _temp, _initialiseProps;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactForms = require('@bigfishtv/react-forms');
var _set2 = require('lodash/set');
var _set3 = _interopRequireDefault(_set2);
var _Modal = require('./Modal');
var _Modal2 = _interopRequireDefault(_Modal);
var _Button = require('../button/Button');
var _Button2 = _interopRequireDefault(_Button);
var _Field = require('../form/Field');
var _Field2 = _interopRequireDefault(_Field);
var _CheckboxGroup = require('../input/CheckboxGroup');
var _CheckboxGroup2 = _interopRequireDefault(_CheckboxGroup);
var _DateTimeInput = require('../input/DateTimeInput');
var _DateTimeInput2 = _interopRequireDefault(_DateTimeInput);
var _SwitchInput = require('../input/SwitchInput');
var _SwitchInput2 = _interopRequireDefault(_SwitchInput);
var _timeUtils = require('../../utils/timeUtils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var SectionsPublishModal = (_temp = _class = function (_Component) {
_inherits(SectionsPublishModal, _Component);
function SectionsPublishModal(props) {
_classCallCheck(this, SectionsPublishModal);
var _this = _possibleConstructorReturn(this, _Component.call(this, props));
_initialiseProps.call(_this);
var value = {
publish_date: props.formValue.value.publish_date,
expiry_date: props.formValue.value.expiry_date,
enabled: props.formValue.value.enabled
};
_this.state = {
paths: [props.formValue.keyPath.join('.')],
formValue: (0, _reactForms.createValue)({ value: value, onChange: _this.onChange })
};
var relativeKeyPath = props.formValue.keyPath.slice(0, -2);
_this.sectionOptions = props.sections.map(function (_ref) {
var section = _ref.section,
sectionType = _ref.sectionType,
index = _ref.index;
var enabled = section.enabled,
publish_date = section.publish_date,
expiry_date = section.expiry_date;
console.log(publish_date, expiry_date, (0, _timeUtils.inTimeRange)(publish_date, expiry_date));
var textColor = '';
var subtitle = '';
if (!enabled) textColor = 'text-error';else if (publish_date || expiry_date) textColor = (0, _timeUtils.inTimeRange)(publish_date, expiry_date) ? 'text-success' : 'text-warning';
if (publish_date && !expiry_date) subtitle = 'From ' + (0, _timeUtils.formatDate)(publish_date);else if (!publish_date && expiry_date) subtitle = 'Until ' + (0, _timeUtils.formatDate)(expiry_date);else if (publish_date && expiry_date) subtitle = 'From ' + (0, _timeUtils.getTimeRange)(section.publish_date, section.expiry_date);
return {
value: [].concat(relativeKeyPath, [sectionType.property, index]).join('.'),
text: _react2.default.createElement(
'span',
{ className: textColor },
section.title || section.name || section.label || sectionType.title + ' Section',
subtitle && _react2.default.createElement(
'small',
null,
_react2.default.createElement(
'strong',
null,
_react2.default.createElement('br', null),
subtitle
)
)
)
};
});
return _this;
}
SectionsPublishModal.prototype.render = function render() {
var _this2 = this;
var _props = this.props,
title = _props.title,
multiple = _props.multiple;
return _react2.default.createElement(
_Modal2.default,
{
size: 'large',
title: title,
onClose: function onClose() {
return _this2.props.closeModal();
},
ModalActions: function ModalActions(props) {
return _react2.default.createElement(
'div',
null,
_react2.default.createElement(_Button2.default, { text: 'Save', style: 'primary', onClick: _this2.handleSubmit }),
_react2.default.createElement(_Button2.default, { text: 'Cancel', onClick: _this2.handleClose })
);
} },
_react2.default.createElement(
'div',
{ className: 'flex' },
multiple && _react2.default.createElement(
'div',
{ className: 'flex-1-1-auto', style: { overflow: 'auto', maxHeight: 465 } },
_react2.default.createElement(
'div',
{ className: 'form-field' },
_react2.default.createElement(
'label',
null,
'Update the following sections:'
),
_react2.default.createElement(_CheckboxGroup2.default, {
options: this.sectionOptions,
value: this.state.paths,
onChange: function onChange(paths) {
return _this2.setState({ paths: paths });
}
})
)
),
_react2.default.createElement(
'div',
{ className: 'flex-1-0-auto', style: multiple ? { width: 120 } : {} },
_react2.default.createElement(
_reactForms.Fieldset,
{ formValue: this.state.formValue },
_react2.default.createElement(_Field2.default, { select: 'enabled', label: 'Published', Input: _SwitchInput2.default }),
_react2.default.createElement(
_Field2.default,
{ select: 'publish_date' },
_react2.default.createElement(_DateTimeInput2.default, { maxDate: this.state.formValue.value.expiry_date })
),
_react2.default.createElement(
_Field2.default,
{ select: 'expiry_date' },
_react2.default.createElement(_DateTimeInput2.default, { minDate: this.state.formValue.value.publish_date })
)
)
)
)
);
};
return SectionsPublishModal;
}(_react.Component), _class.defaultProps = {
title: 'Update Section(s) Publish Settings',
multiple: true
}, _initialiseProps = function _initialiseProps() {
var _this3 = this;
this.onChange = function (formValue) {
return _this3.setState({ formValue: formValue });
};
this.handleSubmit = function () {
var value = _this3.state.formValue.value;
var rootFormValue = _this3.props.formValue.root;
var newRootValue = rootFormValue.value;
for (var _iterator = _this3.state.paths, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref2;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref2 = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref2 = _i.value;
}
var path = _ref2;
var item = rootFormValue.select(path).value || {};
(0, _set3.default)(newRootValue, path, _extends({}, item, value));
}
rootFormValue.update(newRootValue);
_this3.handleClose();
};
this.handleClose = function () {
_this3.props.closeModal();
};
}, _temp);
exports.default = SectionsPublishModal;