@cognitive-class/jupyterlab-cde-plugin
Version:
Drop-in Cognos Dashboard Embedded plugin for Jupyterlab
214 lines (189 loc) • 19.3 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _formik = require('formik');
var _form = require('antd/lib/form');
var _form2 = _interopRequireDefault(_form);
var _input = require('antd/lib/input');
var _input2 = _interopRequireDefault(_input);
var _switch = require('antd/lib/switch');
var _switch2 = _interopRequireDefault(_switch);
var _row = require('antd/lib/row');
var _row2 = _interopRequireDefault(_row);
var _col = require('antd/lib/col');
var _col2 = _interopRequireDefault(_col);
var _collapse = require('antd/lib/collapse');
var _collapse2 = _interopRequireDefault(_collapse);
var _sourcePreviewTable = require('./source-preview-table');
var _sourcePreviewTable2 = _interopRequireDefault(_sourcePreviewTable);
var _cognos = require('../utils/cognos');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
require('antd/lib/collapse/style/index.css');
require('antd/lib/form/style/index.css');
require('antd/lib/input/style/index.css');
require('antd/lib/button/style/index.css');
require('antd/lib/grid/style/index.css');
require('antd/lib/switch/style/index.css');
require('./source-meta-form.scss');
var FormItem = _form2.default.Item;
var Panel = _collapse2.default.Panel;
var SourceMetaForm = function SourceMetaForm(_ref) {
var data = _ref.data,
formRef = _ref.formRef,
isToggled = _ref.isToggled,
handleToggle = _ref.handleToggle,
previewData = _ref.previewData,
previewColumns = _ref.previewColumns;
return _react2.default.createElement(_formik.Formik, {
ref: formRef,
initialValues: data,
render: function render(_ref2) {
var values = _ref2.values,
handleChange = _ref2.handleChange;
return _react2.default.createElement(
_form2.default,
{ layout: 'horizontal', className: 'source-meta-form' },
values.source.srcUrl.sourceUrl ? _react2.default.createElement(
FormItem,
{ label: 'CSV file URL' },
_react2.default.createElement(_input2.default, { placeholder: 'https://gist.github.com/username/file.csv', disabled: true, name: 'source.srcUrl.sourceUrl', value: values.source.srcUrl.sourceUrl, onChange: handleChange })
) : null,
_react2.default.createElement(
_collapse2.default,
{ defaultActiveKey: ['1'] },
_react2.default.createElement(
Panel,
{ header: 'Preview data', key: '1' },
_react2.default.createElement(_sourcePreviewTable2.default, { data: previewData, columns: previewColumns })
)
),
_react2.default.createElement(
FormItem,
{ label: 'Table Name' },
_react2.default.createElement(_input2.default, { placeholder: 'Table Name', name: 'table.name', value: values.table.name, onChange: handleChange })
),
_react2.default.createElement(
FormItem,
{ label: 'Advanced Options' },
_react2.default.createElement(_switch2.default, { onChange: handleToggle })
),
data.table.column.map(function (item, index) {
return (
// eslint-disable-next-line react/no-array-index-key
_react2.default.createElement(
_row2.default,
{ key: index, gutter: 24, type: 'flex', justify: isToggled ? 'space-around' : 'start', align: 'middle' },
_react2.default.createElement(
_col2.default,
{ span: 2 },
_react2.default.createElement(
'h3',
null,
index + 1
)
),
_react2.default.createElement(
_col2.default,
{ span: 4, style: { display: 'block' } },
_react2.default.createElement(
FormItem,
{ label: index === 0 ? 'Column Name' : '' },
_react2.default.createElement(_input2.default, { placeholder: 'Column Name', name: 'table.column.' + index + '.name', value: values.table.column[index].name, onChange: handleChange })
)
),
isToggled ? _react2.default.createElement(
_react.Fragment,
null,
_react2.default.createElement(
_col2.default,
{ span: 4, style: { display: 'block' } },
_react2.default.createElement(
FormItem,
{ label: index === 0 ? 'Data Type' : '' },
_react2.default.createElement(
_formik.Field,
{ component: 'select', name: 'table.column.' + index + '.datatype', onChange: handleChange },
_cognos.datatype.map(function (each) {
return _react2.default.createElement(
'option',
{ key: each, value: each },
each
);
})
)
)
),
_react2.default.createElement(
_col2.default,
{ span: 4, style: { display: 'block' } },
_react2.default.createElement(
FormItem,
{ label: index === 0 ? 'Taxonomy' : '' },
_react2.default.createElement(
_formik.Field,
{ component: 'select', name: 'table.column.' + index + '.taxonomyFamily', onChange: handleChange },
_cognos.taxonomy.map(function (_ref3) {
var value = _ref3.value,
label = _ref3.label;
return _react2.default.createElement(
'option',
{ key: value, value: value },
label
);
})
)
)
),
_react2.default.createElement(
_col2.default,
{ span: 4, style: { display: 'block' } },
_react2.default.createElement(
FormItem,
{ label: index === 0 ? 'Usage' : '' },
_react2.default.createElement(
_formik.Field,
{ component: 'select', name: 'table.column.' + index + '.usage', onChange: handleChange },
_cognos.usage.map(function (_ref4) {
var value = _ref4.value,
label = _ref4.label;
return _react2.default.createElement(
'option',
{ key: value, value: value },
label
);
})
)
)
),
_react2.default.createElement(
_col2.default,
{ span: 4, style: { display: 'block' } },
_react2.default.createElement(
FormItem,
{ label: index === 0 ? 'Aggregate' : '' },
_react2.default.createElement(
_formik.Field,
{ component: 'select', name: 'table.column.' + index + '.regularAggregate', onChange: handleChange },
_cognos.aggregate.map(function (each) {
return _react2.default.createElement(
'option',
{ key: each, value: each },
each
);
})
)
)
)
) : null
)
);
})
);
}
});
};
exports.default = SourceMetaForm;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zb3VyY2UtbWFuYWdlci9zb3VyY2UtbWV0YS1mb3JtLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJGb3JtSXRlbSIsIkZvcm0iLCJJdGVtIiwiUGFuZWwiLCJDb2xsYXBzZSIsIlNvdXJjZU1ldGFGb3JtIiwiZGF0YSIsImZvcm1SZWYiLCJpc1RvZ2dsZWQiLCJoYW5kbGVUb2dnbGUiLCJwcmV2aWV3RGF0YSIsInByZXZpZXdDb2x1bW5zIiwidmFsdWVzIiwiaGFuZGxlQ2hhbmdlIiwic291cmNlIiwic3JjVXJsIiwic291cmNlVXJsIiwidGFibGUiLCJuYW1lIiwiY29sdW1uIiwibWFwIiwiaXRlbSIsImluZGV4IiwiZGlzcGxheSIsImRhdGF0eXBlIiwiZWFjaCIsInRheG9ub215IiwidmFsdWUiLCJsYWJlbCIsInVzYWdlIiwiYWdncmVnYXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFJQUEsUUFBUSxtQ0FBUjtBQUNBQSxRQUFRLCtCQUFSO0FBQ0FBLFFBQVEsZ0NBQVI7QUFDQUEsUUFBUSxpQ0FBUjtBQUNBQSxRQUFRLCtCQUFSO0FBQ0FBLFFBQVEsaUNBQVI7QUFDQUEsUUFBUSx5QkFBUjs7QUFFQSxJQUFNQyxXQUFXQyxlQUFLQyxJQUF0QjtJQUNRQyxLLEdBQVVDLGtCLENBQVZELEs7OztBQUVSLElBQU1FLGlCQUFpQixTQUFqQkEsY0FBaUI7QUFBQSxNQUNyQkMsSUFEcUIsUUFDckJBLElBRHFCO0FBQUEsTUFDZkMsT0FEZSxRQUNmQSxPQURlO0FBQUEsTUFDTkMsU0FETSxRQUNOQSxTQURNO0FBQUEsTUFDS0MsWUFETCxRQUNLQSxZQURMO0FBQUEsTUFDbUJDLFdBRG5CLFFBQ21CQSxXQURuQjtBQUFBLE1BQ2dDQyxjQURoQyxRQUNnQ0EsY0FEaEM7QUFBQSxTQUdyQiw4QkFBQyxjQUFE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QUFVLFFBQWpCLEVBQTBCLHdCQUFzQkEsS0FBdEIsc0JBQTFCLEVBQTBFLFVBQVVULFlBQXBGO0FBQ0dpQix3Q0FBVVYsR0FBVixDQUFjO0FBQUEsK0JBQVE7QUFBQTtBQUFBLDRCQUFRLEtBQUtLLElBQWIsRUFBbUIsT0FBT0EsSUFBMUI7QUFBaUNBO0FBQWpDLHlCQUFSO0FBQUEsdUJBQWQ7QUFESDtBQURGO0FBREY7QUF0QkYsZUFERCxHQStCRztBQXRDTjtBQUZxQjtBQUFBLFNBQXRCO0FBbEJILE9BRE07QUFBQTtBQUhWLElBSHFCO0FBQUEsQ0FBdkI7O2tCQXlFZXBCLGMiLCJmaWxlIjoic291cmNlLW1ldGEtZm9ybS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgRm9ybWlrLCBGaWVsZCB9IGZyb20gJ2Zvcm1paydcbmltcG9ydCBGb3JtIGZyb20gJ2FudGQvbGliL2Zvcm0nXG5pbXBvcnQgSW5wdXQgZnJvbSAnYW50ZC9saWIvaW5wdXQnXG5pbXBvcnQgU3dpdGNoIGZyb20gJ2FudGQvbGliL3N3aXRjaCdcbmltcG9ydCBSb3cgZnJvbSAnYW50ZC9saWIvcm93J1xuaW1wb3J0IENvbCBmcm9tICdhbnRkL2xpYi9jb2wnXG5pbXBvcnQgQ29sbGFwc2UgZnJvbSAnYW50ZC9saWIvY29sbGFwc2UnXG5pbXBvcnQgU291cmNlUHJldmlld1RhYmxlIGZyb20gJy4vc291cmNlLXByZXZpZXctdGFibGUnXG5pbXBvcnQge1xuICBkYXRhdHlwZSwgdXNhZ2UsIGFnZ3JlZ2F0ZSwgdGF4b25vbXksXG59IGZyb20gJy4uL3V0aWxzL2NvZ25vcydcblxucmVxdWlyZSgnYW50ZC9saWIvY29sbGFwc2Uvc3R5bGUvaW5kZXguY3NzJylcbnJlcXVpcmUoJ2FudGQvbGliL2Zvcm0vc3R5bGUvaW5kZXguY3NzJylcbnJlcXVpcmUoJ2FudGQvbGliL2lucHV0L3N0eWxlL2luZGV4LmNzcycpXG5yZXF1aXJlKCdhbnRkL2xpYi9idXR0b24vc3R5bGUvaW5kZXguY3NzJylcbnJlcXVpcmUoJ2FudGQvbGliL2dyaWQvc3R5bGUvaW5kZXguY3NzJylcbnJlcXVpcmUoJ2FudGQvbGliL3N3aXRjaC9zdHlsZS9pbmRleC5jc3MnKVxucmVxdWlyZSgnLi9zb3VyY2UtbWV0YS1mb3JtLnNjc3MnKVxuXG5jb25zdCBGb3JtSXRlbSA9IEZvcm0uSXRlbVxuY29uc3QgeyBQYW5lbCB9ID0gQ29sbGFwc2VcblxuY29uc3QgU291cmNlTWV0YUZvcm0gPSAoe1xuICBkYXRhLCBmb3JtUmVmLCBpc1RvZ2dsZWQsIGhhbmRsZVRvZ2dsZSwgcHJldmlld0RhdGEsIHByZXZpZXdDb2x1bW5zLFxufSkgPT4gKFxuICA8Rm9ybWlrXG4gICAgcmVmPXtmb3JtUmVmfVxuICAgIGluaXRpYWxWYWx1ZXM9e2RhdGF9XG4gICAgcmVuZGVyPXsoeyB2YWx1ZXMsIGhhbmRsZUNoYW5nZSB9KSA9PiAoXG4gICAgICA8Rm9ybSBsYXlvdXQ9XCJob3Jpem9udGFsXCIgY2xhc3NOYW1lPVwic291cmNlLW1ldGEtZm9ybVwiPlxuICAgICAgICB7dmFsdWVzLnNvdXJjZS5zcmNVcmwuc291cmNlVXJsXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICA8Rm9ybUl0ZW0gbGFiZWw9XCJDU1YgZmlsZSBVUkxcIj5cbiAgICAgICAgICAgICAgPElucHV0IHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdXNlcm5hbWUvZmlsZS5jc3ZcIiBkaXNhYmxlZCBuYW1lPVwic291cmNlLnNyY1VybC5zb3VyY2VVcmxcIiB2YWx1ZT17dmFsdWVzLnNvdXJjZS5zcmNVcmwuc291cmNlVXJsfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfSAvPlxuICAgICAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPENvbGxhcHNlIGRlZmF1bHRBY3RpdmVLZXk9e1snMSddfT5cbiAgICAgICAgICA8UGFuZWwgaGVhZGVyPVwiUHJldmlldyBkYXRhXCIga2V5PVwiMVwiPlxuICAgICAgICAgICAgPFNvdXJjZVByZXZpZXdUYWJsZSBkYXRhPXtwcmV2aWV3RGF0YX0gY29sdW1ucz17cHJldmlld0NvbHVtbnN9IC8+XG4gICAgICAgICAgPC9QYW5lbD5cbiAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgPEZvcm1JdGVtIGxhYmVsPVwiVGFibGUgTmFtZVwiPlxuICAgICAgICAgIDxJbnB1dCBwbGFjZWhvbGRlcj1cIlRhYmxlIE5hbWVcIiBuYW1lPVwidGFibGUubmFtZVwiIHZhbHVlPXt2YWx1ZXMudGFibGUubmFtZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gLz5cbiAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgPEZvcm1JdGVtIGxhYmVsPVwiQWR2YW5jZWQgT3B0aW9uc1wiPlxuICAgICAgICAgIDxTd2l0Y2ggb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZX0gLz5cbiAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAge2RhdGEudGFibGUuY29sdW1uLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgPFJvdyBrZXk9e2luZGV4fSBndXR0ZXI9ezI0fSB0eXBlPVwiZmxleFwiIGp1c3RpZnk9e2lzVG9nZ2xlZCA/ICdzcGFjZS1hcm91bmQnIDogJ3N0YXJ0J30gYWxpZ249XCJtaWRkbGVcIj5cbiAgICAgICAgICAgIDxDb2wgc3Bhbj17Mn0+PGgzPntpbmRleCArIDF9PC9oMz48L0NvbD5cbiAgICAgICAgICAgIDxDb2wgc3Bhbj17NH0gc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJyB9fT5cbiAgICAgICAgICAgICAgPEZvcm1JdGVtIGxhYmVsPXtpbmRleCA9PT0gMCA/ICdDb2x1bW4gTmFtZScgOiAnJ30+XG4gICAgICAgICAgICAgICAgPElucHV0IHBsYWNlaG9sZGVyPVwiQ29sdW1uIE5hbWVcIiBuYW1lPXtgdGFibGUuY29sdW1uLiR7aW5kZXh9Lm5hbWVgfSB2YWx1ZT17dmFsdWVzLnRhYmxlLmNvbHVtbltpbmRleF0ubmFtZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gLz5cbiAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgICAgIDwvQ29sPlxuICAgICAgICAgICAge2lzVG9nZ2xlZCA/IChcbiAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxDb2wgc3Bhbj17NH0gc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJyB9fT5cbiAgICAgICAgICAgICAgICAgIDxGb3JtSXRlbSBsYWJlbD17aW5kZXggPT09IDAgPyAnRGF0YSBUeXBlJyA6ICcnfT5cbiAgICAgICAgICAgICAgICAgICAgPEZpZWxkIGNvbXBvbmVudD1cInNlbGVjdFwiIG5hbWU9e2B0YWJsZS5jb2x1bW4uJHtpbmRleH0uZGF0YXR5cGVgfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfT5cbiAgICAgICAgICAgICAgICAgICAgICB7ZGF0YXR5cGUubWFwKGVhY2ggPT4gPG9wdGlvbiBrZXk9e2VhY2h9IHZhbHVlPXtlYWNofT57ZWFjaH08L29wdGlvbj4pfVxuICAgICAgICAgICAgICAgICAgICA8L0ZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgICAgICAgICA8L0NvbD5cbiAgICAgICAgICAgICAgICA8Q29sIHNwYW49ezR9IHN0eWxlPXt7IGRpc3BsYXk6ICdibG9jaycgfX0+XG4gICAgICAgICAgICAgICAgICA8Rm9ybUl0ZW0gbGFiZWw9e2luZGV4ID09PSAwID8gJ1RheG9ub215JyA6ICcnfT5cbiAgICAgICAgICAgICAgICAgICAgPEZpZWxkIGNvbXBvbmVudD1cInNlbGVjdFwiIG5hbWU9e2B0YWJsZS5jb2x1bW4uJHtpbmRleH0udGF4b25vbXlGYW1pbHlgfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfT5cbiAgICAgICAgICAgICAgICAgICAgICB7dGF4b25vbXkubWFwKCh7IHZhbHVlLCBsYWJlbCB9KSA9PiA8b3B0aW9uIGtleT17dmFsdWV9IHZhbHVlPXt2YWx1ZX0+e2xhYmVsfTwvb3B0aW9uPil9XG4gICAgICAgICAgICAgICAgICAgIDwvRmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L0Zvcm1JdGVtPlxuICAgICAgICAgICAgICAgIDwvQ29sPlxuICAgICAgICAgICAgICAgIDxDb2wgc3Bhbj17NH0gc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJyB9fT5cbiAgICAgICAgICAgICAgICAgIDxGb3JtSXRlbSBsYWJlbD17aW5kZXggPT09IDAgPyAnVXNhZ2UnIDogJyd9PlxuICAgICAgICAgICAgICAgICAgICA8RmllbGQgY29tcG9uZW50PVwic2VsZWN0XCIgbmFtZT17YHRhYmxlLmNvbHVtbi4ke2luZGV4fS51c2FnZWB9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9PlxuICAgICAgICAgICAgICAgICAgICAgIHt1c2FnZS5tYXAoKHsgdmFsdWUsIGxhYmVsIH0pID0+IDxvcHRpb24ga2V5PXt2YWx1ZX0gdmFsdWU9e3ZhbHVlfT57bGFiZWx9PC9vcHRpb24+KX1cbiAgICAgICAgICAgICAgICAgICAgPC9GaWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvRm9ybUl0ZW0+XG4gICAgICAgICAgICAgICAgPC9Db2w+XG4gICAgICAgICAgICAgICAgPENvbCBzcGFuPXs0fSBzdHlsZT17eyBkaXNwbGF5OiAnYmxvY2snIH19PlxuICAgICAgICAgICAgICAgICAgPEZvcm1JdGVtIGxhYmVsPXtpbmRleCA9PT0gMCA/ICdBZ2dyZWdhdGUnIDogJyd9PlxuICAgICAgICAgICAgICAgICAgICA8RmllbGQgY29tcG9uZW50PVwic2VsZWN0XCIgbmFtZT17YHRhYmxlLmNvbHVtbi4ke2luZGV4fS5yZWd1bGFyQWdncmVnYXRlYH0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0+XG4gICAgICAgICAgICAgICAgICAgICAge2FnZ3JlZ2F0ZS5tYXAoZWFjaCA9PiA8b3B0aW9uIGtleT17ZWFjaH0gdmFsdWU9e2VhY2h9PntlYWNofTwvb3B0aW9uPil9XG4gICAgICAgICAgICAgICAgICAgIDwvRmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L0Zvcm1JdGVtPlxuICAgICAgICAgICAgICAgIDwvQ29sPlxuICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9Sb3c+XG4gICAgICAgICkpfVxuICAgICAgPC9Gb3JtPlxuICAgICl9XG4gIC8+XG4pXG5cbmV4cG9ydCBkZWZhdWx0IFNvdXJjZU1ldGFGb3JtXG4iXX0=