UNPKG

@cognitive-class/jupyterlab-cde-plugin

Version:

Drop-in Cognos Dashboard Embedded plugin for Jupyterlab

188 lines (147 loc) 14.5 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); exports.openDialog = openDialog; var _events = require('events'); var _events2 = _interopRequireDefault(_events); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _preferenceDialog = require('./preference-dialog'); var _preferenceDialog2 = _interopRequireDefault(_preferenceDialog); var _sourceMetaDialog = require('./source-meta-dialog'); var _sourceMetaDialog2 = _interopRequireDefault(_sourceMetaDialog); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var emitter = new _events2.default(); function openDialog() { emitter.emit('openDialog'); } var Container = function (_PureComponent) { (0, _inherits3.default)(Container, _PureComponent); function Container() { var _ref; var _temp, _this, _ret; (0, _classCallCheck3.default)(this, Container); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Container.__proto__ || (0, _getPrototypeOf2.default)(Container)).call.apply(_ref, [this].concat(args))), _this), _this.state = { isDialogOpen: false, isSourceMetaDialogOpen: false, selectedFiles: [], csvUrl: null, username: null }, _this.openDialog = function () { _this.setState({ selectedFiles: [], csvUrl: null, isDialogOpen: true }); }, _this.closeDialog = function () { _this.setState({ isDialogOpen: false }); }, _this.handlePreferenceDialogRef = function (node) { _this.preferenceDialog = node; }, _this.handleSourceMetaDialogRef = function (node) { _this.sourceMetaDialog = node; }, _this.handleSave = function (selectedFiles) { var _this$state = _this.state, username = _this$state.username, csvUrl = _this$state.csvUrl; if (!csvUrl && !(username && selectedFiles.length > 0)) return; _this.setState({ isDialogOpen: false, isSourceMetaDialogOpen: true, selectedFiles: selectedFiles }); }, _this.handleSourceMetaSave = function () { _this.setState({ isSourceMetaDialogOpen: false, selectedFiles: [] }); }, _this.handleCancel = function () { _this.setState({ isDialogOpen: false, isSourceMetaDialogOpen: false }); }, _this.handleCSVUrlChange = function (event) { var target = event.target; var value = target.type === 'checkbox' ? target.checked : target.value; var name = target.name; _this.setState((0, _defineProperty3.default)({}, name, value)); }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); } (0, _createClass3.default)(Container, [{ key: 'componentDidMount', value: function componentDidMount() { emitter.on('openDialog', this.openDialog); function readCookie(k) { return (document.cookie.match('(^|; )' + k + '=([^;]*)') || 0)[2]; } var username = readCookie('username'); this.setState({ username: username }); } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { emitter.removeListener('openDialog', this.openDialog); } }, { key: 'render', value: function render() { var _props = this.props, preferencesDialogTitle = _props.preferencesDialogTitle, preferencesDialogContent = _props.preferencesDialogContent; var _state = this.state, isDialogOpen = _state.isDialogOpen, isSourceMetaDialogOpen = _state.isSourceMetaDialogOpen, csvUrl = _state.csvUrl, selectedFiles = _state.selectedFiles, username = _state.username; return _react2.default.createElement( _react.Fragment, null, isDialogOpen && _react2.default.createElement(_preferenceDialog2.default, { innerRef: this.handlePreferenceDialogRef, onCancel: this.handleCancel, onSave: this.handleSave, title: preferencesDialogTitle, content: preferencesDialogContent, handleChange: this.handleCSVUrlChange, username: username }), isSourceMetaDialogOpen && _react2.default.createElement(_sourceMetaDialog2.default, { innerRef: this.handleSourceMetaDialogRef, onCancel: this.handleCancel, onSave: this.handleSourceMetaSave, csvUrl: csvUrl, selectedFiles: selectedFiles, username: username }) ); } }]); return Container; }(_react.PureComponent); Container.displayName = 'Container'; Container.propTypes = { preferencesDialogTitle: _propTypes2.default.node.isRequired, preferencesDialogContent: _propTypes2.default.node.isRequired }; exports.default = Container; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zb3VyY2UtbWFuYWdlci9jb250YWluZXIuanMiXSwibmFtZXMiOlsib3BlbkRpYWxvZyIsImVtaXR0ZXIiLCJFdmVudEVtaXR0ZXIiLCJlbWl0IiwiQ29udGFpbmVyIiwic3RhdGUiLCJpc0RpYWxvZ09wZW4iLCJpc1NvdXJjZU1ldGFEaWFsb2dPcGVuIiwic2VsZWN0ZWRGaWxlcyIsImNzdlVybCIsInVzZXJuYW1lIiwic2V0U3RhdGUiLCJjbG9zZURpYWxvZyIsImhhbmRsZVByZWZlcmVuY2VEaWFsb2dSZWYiLCJub2RlIiwicHJlZmVyZW5jZURpYWxvZyIsImhhbmRsZVNvdXJjZU1ldGFEaWFsb2dSZWYiLCJzb3VyY2VNZXRhRGlhbG9nIiwiaGFuZGxlU2F2ZSIsImxlbmd0aCIsImhhbmRsZVNvdXJjZU1ldGFTYXZlIiwiaGFuZGxlQ2FuY2VsIiwiaGFuZGxlQ1NWVXJsQ2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJ2YWx1ZSIsInR5cGUiLCJjaGVja2VkIiwibmFtZSIsIm9uIiwicmVhZENvb2tpZSIsImsiLCJkb2N1bWVudCIsImNvb2tpZSIsIm1hdGNoIiwicmVtb3ZlTGlzdGVuZXIiLCJwcm9wcyIsInByZWZlcmVuY2VzRGlhbG9nVGl0bGUiLCJwcmVmZXJlbmNlc0RpYWxvZ0NvbnRlbnQiLCJQdXJlQ29tcG9uZW50IiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJpc1JlcXVpcmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFRZ0JBLFUsR0FBQUEsVTs7QUFSaEI7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUMsVUFBVSxJQUFJQyxnQkFBSixFQUFoQjs7QUFFTyxTQUFTRixVQUFULEdBQXNCO0FBQzNCQyxVQUFRRSxJQUFSLENBQWEsWUFBYjtBQUNEOztJQUVvQkMsUzs7Ozs7Ozs7Ozs7Ozs7a05BUW5CQyxLLEdBQVE7QUFD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LGlCQUFPbUIsc0JBSlQ7QUFLRSxtQkFBU0Msd0JBTFg7QUFNRSx3QkFBYyxLQUFLaEIsa0JBTnJCO0FBT0Usb0JBQVVaO0FBUFosVUFGSjtBQVlHSCxrQ0FDQyw4QkFBQywwQkFBRDtBQUNFLG9CQUFVLEtBQUtTLHlCQURqQjtBQUVFLG9CQUFVLEtBQUtLLFlBRmpCO0FBR0Usa0JBQVEsS0FBS0Qsb0JBSGY7QUFJRSxrQkFBUVgsTUFKVjtBQUtFLHlCQUFlRCxhQUxqQjtBQU1FLG9CQUFVRTtBQU5aO0FBYkosT0FERjtBQXlCRDs7O0VBckhvQzZCLG9COztBQUFsQm5DLFMsQ0FDWm9DLFcsR0FBYyxXO0FBREZwQyxTLENBR1pxQyxTLEdBQVk7QUFDakJKLDBCQUF3Qkssb0JBQVU1QixJQUFWLENBQWU2QixVQUR0QjtBQUVqQkwsNEJBQTBCSSxvQkFBVTVCLElBQVYsQ0FBZTZCO0FBRnhCLEM7a0JBSEF2QyxTIiwiZmlsZSI6ImNvbnRhaW5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnZXZlbnRzJ1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgUHJlZmVyZW5jZURpYWxvZyBmcm9tICcuL3ByZWZlcmVuY2UtZGlhbG9nJ1xuaW1wb3J0IFNvdXJjZU1ldGFEaWFsb2cgZnJvbSAnLi9zb3VyY2UtbWV0YS1kaWFsb2cnXG5cbmNvbnN0IGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5EaWFsb2coKSB7XG4gIGVtaXR0ZXIuZW1pdCgnb3BlbkRpYWxvZycpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRhaW5lciBleHRlbmRzIFB1cmVDb21wb25lbnQge1xuICBzdGF0aWMgZGlzcGxheU5hbWUgPSAnQ29udGFpbmVyJ1xuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgcHJlZmVyZW5jZXNEaWFsb2dUaXRsZTogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgICBwcmVmZXJlbmNlc0RpYWxvZ0NvbnRlbnQ6IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIH1cblxuICBzdGF0ZSA9IHtcbiAgICBpc0RpYWxvZ09wZW46IGZhbHNlLFxuICAgIGlzU291cmNlTWV0YURpYWxvZ09wZW46IGZhbHNlLFxuICAgIHNlbGVjdGVkRmlsZXM6IFtdLFxuICAgIGNzdlVybDogbnVsbCxcbiAgICB1c2VybmFtZTogbnVsbCxcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGVtaXR0ZXIub24oJ29wZW5EaWFsb2cnLCB0aGlzLm9wZW5EaWFsb2cpXG4gICAgZnVuY3Rpb24gcmVhZENvb2tpZShrKSB7IHJldHVybiAoZG9jdW1lbnQuY29va2llLm1hdGNoKGAoXnw7ICkke2t9PShbXjtdKilgKSB8fCAwKVsyXSB9XG4gICAgY29uc3QgdXNlcm5hbWUgPSByZWFkQ29va2llKCd1c2VybmFtZScpXG4gICAgdGhpcy5zZXRTdGF0ZSh7IHVzZXJuYW1lIH0pXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyKCdvcGVuRGlhbG9nJywgdGhpcy5vcGVuRGlhbG9nKVxuICB9XG5cbiAgb3BlbkRpYWxvZyA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkRmlsZXM6IFtdLFxuICAgICAgY3N2VXJsOiBudWxsLFxuICAgICAgaXNEaWFsb2dPcGVuOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBjbG9zZURpYWxvZyA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzRGlhbG9nT3BlbjogZmFsc2UsXG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZVByZWZlcmVuY2VEaWFsb2dSZWYgPSAobm9kZSkgPT4ge1xuICAgIHRoaXMucHJlZmVyZW5jZURpYWxvZyA9IG5vZGVcbiAgfVxuXG4gIGhhbmRsZVNvdXJjZU1ldGFEaWFsb2dSZWYgPSAobm9kZSkgPT4ge1xuICAgIHRoaXMuc291cmNlTWV0YURpYWxvZyA9IG5vZGVcbiAgfVxuXG4gIGhhbmRsZVNhdmUgPSAoc2VsZWN0ZWRGaWxlcykgPT4ge1xuICAgIGNvbnN0IHsgdXNlcm5hbWUsIGNzdlVybCB9ID0gdGhpcy5zdGF0ZVxuICAgIGlmICghY3N2VXJsICYmICEodXNlcm5hbWUgJiYgc2VsZWN0ZWRGaWxlcy5sZW5ndGggPiAwKSkgcmV0dXJuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc0RpYWxvZ09wZW46IGZhbHNlLFxuICAgICAgaXNTb3VyY2VNZXRhRGlhbG9nT3BlbjogdHJ1ZSxcbiAgICAgIHNlbGVjdGVkRmlsZXMsXG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZVNvdXJjZU1ldGFTYXZlID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaXNTb3VyY2VNZXRhRGlhbG9nT3BlbjogZmFsc2UsXG4gICAgICBzZWxlY3RlZEZpbGVzOiBbXSxcbiAgICB9KVxuICB9XG5cbiAgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaXNEaWFsb2dPcGVuOiBmYWxzZSxcbiAgICAgIGlzU291cmNlTWV0YURpYWxvZ09wZW46IGZhbHNlLFxuICAgIH0pXG4gIH1cblxuICBoYW5kbGVDU1ZVcmxDaGFuZ2UgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gZXZlbnRcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldC50eXBlID09PSAnY2hlY2tib3gnID8gdGFyZ2V0LmNoZWNrZWQgOiB0YXJnZXQudmFsdWVcbiAgICBjb25zdCB7IG5hbWUgfSA9IHRhcmdldFxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBbbmFtZV06IHZhbHVlLFxuICAgIH0pXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgcHJlZmVyZW5jZXNEaWFsb2dUaXRsZSxcbiAgICAgIHByZWZlcmVuY2VzRGlhbG9nQ29udGVudCxcbiAgICB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtcbiAgICAgIGlzRGlhbG9nT3BlbiwgaXNTb3VyY2VNZXRhRGlhbG9nT3BlbiwgY3N2VXJsLCBzZWxlY3RlZEZpbGVzLCB1c2VybmFtZSxcbiAgICB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGcmFnbWVudD5cbiAgICAgICAge2lzRGlhbG9nT3BlbiAmJiAoXG4gICAgICAgICAgPFByZWZlcmVuY2VEaWFsb2dcbiAgICAgICAgICAgIGlubmVyUmVmPXt0aGlzLmhhbmRsZVByZWZlcmVuY2VEaWFsb2dSZWZ9XG4gICAgICAgICAgICBvbkNhbmNlbD17dGhpcy5oYW5kbGVDYW5jZWx9XG4gICAgICAgICAgICBvblNhdmU9e3RoaXMuaGFuZGxlU2F2ZX1cbiAgICAgICAgICAgIHRpdGxlPXtwcmVmZXJlbmNlc0RpYWxvZ1RpdGxlfVxuICAgICAgICAgICAgY29udGVudD17cHJlZmVyZW5jZXNEaWFsb2dDb250ZW50fVxuICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXt0aGlzLmhhbmRsZUNTVlVybENoYW5nZX1cbiAgICAgICAgICAgIHVzZXJuYW1lPXt1c2VybmFtZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7aXNTb3VyY2VNZXRhRGlhbG9nT3BlbiAmJiAoXG4gICAgICAgICAgPFNvdXJjZU1ldGFEaWFsb2dcbiAgICAgICAgICAgIGlubmVyUmVmPXt0aGlzLmhhbmRsZVNvdXJjZU1ldGFEaWFsb2dSZWZ9XG4gICAgICAgICAgICBvbkNhbmNlbD17dGhpcy5oYW5kbGVDYW5jZWx9XG4gICAgICAgICAgICBvblNhdmU9e3RoaXMuaGFuZGxlU291cmNlTWV0YVNhdmV9XG4gICAgICAgICAgICBjc3ZVcmw9e2NzdlVybH1cbiAgICAgICAgICAgIHNlbGVjdGVkRmlsZXM9e3NlbGVjdGVkRmlsZXN9XG4gICAgICAgICAgICB1c2VybmFtZT17dXNlcm5hbWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKVxuICB9XG59XG4iXX0=