poi-plugin-lock-reminder
Version:
A poi plugin for reminding to lock new kanmusu.
192 lines (165 loc) • 8.26 kB
JavaScript
"use strict";
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _moment = _interopRequireDefault(require("moment"));
var _reactRedux = require("react-redux");
var _lodash = require("lodash");
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _core = require("@blueprintjs/core");
var _reactI18next = require("react-i18next");
var _selectors = require("views/utils/selectors");
var _selectors2 = require("./selectors");
var _panel = _interopRequireDefault(require("./panel"));
var _utils = require("../utils");
var _radioConfig = _interopRequireDefault(require("../settings-class/radio-config"));
var _dec, _dec2, _class, _class2, _temp;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const ReminderWrapper = _styledComponents.default.div.withConfig({
displayName: "views__ReminderWrapper",
componentId: "sc-1629j03-0"
})(["padding:10px;h4{display:flex;align-items:center;.bp3-popover-wrapper{margin-left:5px;.bp3-popover-target{display:flex;}}}"]);
const Tip = (0, _styledComponents.default)(_core.Callout).withConfig({
displayName: "views__Tip",
componentId: "sc-1629j03-1"
})(["margin-bottom:10px;"]);
const PictureTipWrapper = (0, _styledComponents.default)(Tip).withConfig({
displayName: "views__PictureTipWrapper",
componentId: "sc-1629j03-2"
})(["display:", ";"], props => props.disabled ? 'none' : '');
const Expand = (0, _styledComponents.default)(_core.Button).withConfig({
displayName: "views__Expand",
componentId: "sc-1629j03-3"
})(["display:inline;margin-left:15px;"]);
const PictureStatusTable = _styledComponents.default.table.withConfig({
displayName: "views__PictureStatusTable",
componentId: "sc-1629j03-4"
})(["width:100%;td{border:1px solid #a7b6c2;text-align:center;vertical-align:middle;}"]);
let ShipReminder = (_dec = (0, _reactI18next.withNamespaces)(_utils.PLUGIN_NAME), _dec2 = (0, _reactRedux.connect)(state => ({
selectedShips: (0, _selectors2.selectedShipIdsSelector)(state),
unownedShips: (0, _selectors2.unownedShipsSelector)(state),
originShips: (0, _selectors2.originShipsSelector)(state),
$shipTypes: (0, _lodash.get)(state, 'const.$shipTypes'),
picture: (0, _lodash.get)((0, _selectors.extensionSelectorFactory)(_utils.PLUGIN_NAME)(state), 'picture', {}),
mode: (0, _lodash.get)(state, `config.plugin.${_utils.PLUGIN_NAME}.mode`, 'custom'),
category: (0, _lodash.get)(state, `config.plugin.${_utils.PLUGIN_NAME}.customNotifyCategory`, 'willnot')
})), _dec(_class = _dec2(_class = (_temp = _class2 = class ShipReminder extends _react.default.PureComponent {
constructor(...args) {
super(...args);
this.state = {
customIsOpen: true
};
}
componentWillReceiveProps(nextProps) {
if (nextProps.mode === 'custom') {
this.setState({
customIsOpen: true
});
}
}
render() {
const {
selectedShips,
unownedShips,
originShips,
$shipTypes,
t,
picture,
mode,
category
} = this.props;
const {
customIsOpen
} = this.state;
const isInitiallized = !(0, _lodash.isEmpty)(originShips);
const pageOptions = Array(6).fill().map((_, idx) => idx + 1);
_utils.logger.log('unownedShips: \n', unownedShips);
_utils.logger.log('isInitiallized', isInitiallized);
if (mode === 'picture') {
this.setState({
customIsOpen: false
});
}
return isInitiallized ? /*#__PURE__*/_react.default.createElement(ReminderWrapper, null, /*#__PURE__*/_react.default.createElement(_core.H4, null, t('Custom mode'), /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
content: t('Will not notify checked ships'),
intent: _core.Intent.PRIMARY
}, /*#__PURE__*/_react.default.createElement(_core.Icon, {
icon: "info-sign"
})), /*#__PURE__*/_react.default.createElement(Expand, {
text: t(customIsOpen ? 'Collapse' : 'Expand'),
intent: "primary",
minimal: true,
disabled: mode !== 'custom',
onClick: () => this.setState({
customIsOpen: !customIsOpen
})
})), mode !== 'custom' ? /*#__PURE__*/_react.default.createElement(Tip, null, t('customTipWhenModeIsPicture')) : '', /*#__PURE__*/_react.default.createElement(_core.Collapse, {
isOpen: customIsOpen,
keepChildrenMounted: true
}, /*#__PURE__*/_react.default.createElement(_radioConfig.default, {
label: t('Selected ships will'),
configName: `plugin.${_utils.PLUGIN_NAME}.customNotifyCategory`,
default: "willnot",
options: [{
label: t('will not be notified'),
value: 'willnot'
}, {
label: t('will be notified'),
value: 'will'
}]
}), (0, _lodash.isEmpty)(unownedShips) && category === 'willnot' ? /*#__PURE__*/_react.default.createElement(Tip, {
intent: _core.Intent.SUCCESS
}, t('No unowned ship')) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.H5, null, t(category === 'willnot' ? 'Unowned ships' : 'All ships'), "\uFF08", category === 'willnot' ? unownedShips.length : originShips.length, "\uFF09"), (0, _lodash.map)((0, _lodash.groupBy)(category === 'willnot' ? unownedShips : originShips, s => s.api_stype), (ships, type) => {
const panelShipsProp = (0, _lodash.map)(ships, s => ({
name: s.api_name,
id: s.api_id,
checked: !!(0, _lodash.find)(selectedShips, ss => s.api_id === ss)
}));
return /*#__PURE__*/_react.default.createElement(_panel.default, {
title: $shipTypes[type].api_name,
ships: panelShipsProp
});
}))), /*#__PURE__*/_react.default.createElement(_core.H4, null, t('Picture mode'), /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
content: t('pictureIntroduce'),
intent: _core.Intent.PRIMARY
}, /*#__PURE__*/_react.default.createElement(_core.Icon, {
icon: "info-sign"
}))), mode !== 'picture' ? /*#__PURE__*/_react.default.createElement(Tip, null, t('pictureTipWhenModeIsCustom')) : '', /*#__PURE__*/_react.default.createElement(PictureTipWrapper, {
disabled: mode !== 'picture'
}, (0, _lodash.isEmpty)(picture.list) ? t('enterPicture') : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, t('Updated info'), /*#__PURE__*/_react.default.createElement(PictureStatusTable, null, /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, (0, _lodash.map)(pageOptions, op => /*#__PURE__*/_react.default.createElement("td", {
key: `key-${op}`
}, t('page', {
page: op
}))))), /*#__PURE__*/_react.default.createElement("tbody", null, /*#__PURE__*/_react.default.createElement("tr", null, (0, _lodash.map)(pageOptions, op => /*#__PURE__*/_react.default.createElement("td", {
key: `key-${op}`,
style: {
background: picture.timestamp[op] ? '#15b37150' : '#f5565650'
}
}, picture.timestamp[op] ? /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
content: (0, _moment.default)(picture.timestamp[op]).format('YYYY/MM/DD HH:mm:ss')
}, /*#__PURE__*/_react.default.createElement(_core.Icon, {
icon: "tick"
})) : /*#__PURE__*/_react.default.createElement(_core.Icon, {
icon: "cross"
})))))), t('shipRecorded', {
ships: (0, _lodash.compact)((0, _lodash.flatMap)(picture.list)).length || '-'
})))) : /*#__PURE__*/_react.default.createElement(_core.NonIdealState, {
icon: "application",
title: t('No game data'),
description: t('NonIdealDesc')
});
}
}, _class2.propTypes = {
unownedShips: _propTypes.default.array,
selectedShips: _propTypes.default.array,
originShips: _propTypes.default.array,
t: _propTypes.default.func.isRequired,
$shipTypes: _propTypes.default.object,
picture: _propTypes.default.object,
mode: _propTypes.default.string,
category: _propTypes.default.string
}, _temp)) || _class) || _class);
var _default = ShipReminder;
exports.default = _default;
module.exports = exports.default;