UNPKG

@cognitive-class/jupyterlab-cde-plugin

Version:

Drop-in Cognos Dashboard Embedded plugin for Jupyterlab

181 lines (176 loc) 18.7 kB
import React, { Fragment } from 'react'; import { Formik, Field } from 'formik'; import Form from 'antd/lib/form'; import Input from 'antd/lib/input'; import Switch from 'antd/lib/switch'; import Row from 'antd/lib/row'; import Col from 'antd/lib/col'; import Collapse from 'antd/lib/collapse'; import SourcePreviewTable from './source-preview-table'; import { datatype, usage, aggregate, taxonomy } from '../utils/cognos'; 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 = Form.Item; var Panel = Collapse.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 React.createElement(Formik, { ref: formRef, initialValues: data, render: function render(_ref2) { var values = _ref2.values, handleChange = _ref2.handleChange; return React.createElement( Form, { layout: 'horizontal', className: 'source-meta-form' }, values.source.srcUrl.sourceUrl ? React.createElement( FormItem, { label: 'CSV file URL' }, React.createElement(Input, { placeholder: 'https://gist.github.com/username/file.csv', disabled: true, name: 'source.srcUrl.sourceUrl', value: values.source.srcUrl.sourceUrl, onChange: handleChange }) ) : null, React.createElement( Collapse, { defaultActiveKey: ['1'] }, React.createElement( Panel, { header: 'Preview data', key: '1' }, React.createElement(SourcePreviewTable, { data: previewData, columns: previewColumns }) ) ), React.createElement( FormItem, { label: 'Table Name' }, React.createElement(Input, { placeholder: 'Table Name', name: 'table.name', value: values.table.name, onChange: handleChange }) ), React.createElement( FormItem, { label: 'Advanced Options' }, React.createElement(Switch, { onChange: handleToggle }) ), data.table.column.map(function (item, index) { return ( // eslint-disable-next-line react/no-array-index-key React.createElement( Row, { key: index, gutter: 24, type: 'flex', justify: isToggled ? 'space-around' : 'start', align: 'middle' }, React.createElement( Col, { span: 2 }, React.createElement( 'h3', null, index + 1 ) ), React.createElement( Col, { span: 4, style: { display: 'block' } }, React.createElement( FormItem, { label: index === 0 ? 'Column Name' : '' }, React.createElement(Input, { placeholder: 'Column Name', name: 'table.column.' + index + '.name', value: values.table.column[index].name, onChange: handleChange }) ) ), isToggled ? React.createElement( Fragment, null, React.createElement( Col, { span: 4, style: { display: 'block' } }, React.createElement( FormItem, { label: index === 0 ? 'Data Type' : '' }, React.createElement( Field, { component: 'select', name: 'table.column.' + index + '.datatype', onChange: handleChange }, datatype.map(function (each) { return React.createElement( 'option', { key: each, value: each }, each ); }) ) ) ), React.createElement( Col, { span: 4, style: { display: 'block' } }, React.createElement( FormItem, { label: index === 0 ? 'Taxonomy' : '' }, React.createElement( Field, { component: 'select', name: 'table.column.' + index + '.taxonomyFamily', onChange: handleChange }, taxonomy.map(function (_ref3) { var value = _ref3.value, label = _ref3.label; return React.createElement( 'option', { key: value, value: value }, label ); }) ) ) ), React.createElement( Col, { span: 4, style: { display: 'block' } }, React.createElement( FormItem, { label: index === 0 ? 'Usage' : '' }, React.createElement( Field, { component: 'select', name: 'table.column.' + index + '.usage', onChange: handleChange }, usage.map(function (_ref4) { var value = _ref4.value, label = _ref4.label; return React.createElement( 'option', { key: value, value: value }, label ); }) ) ) ), React.createElement( Col, { span: 4, style: { display: 'block' } }, React.createElement( FormItem, { label: index === 0 ? 'Aggregate' : '' }, React.createElement( Field, { component: 'select', name: 'table.column.' + index + '.regularAggregate', onChange: handleChange }, aggregate.map(function (each) { return React.createElement( 'option', { key: each, value: each }, each ); }) ) ) ) ) : null ) ); }) ); } }); }; export default SourceMetaForm; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zb3VyY2UtbWFuYWdlci9zb3VyY2UtbWV0YS1mb3JtLmpzIl0sIm5hbWVzIjpbIlJlYWN0IiwiRnJhZ21lbnQiLCJGb3JtaWsiLCJGaWVsZCIsIkZvcm0iLCJJbnB1dCIsIlN3aXRjaCIsIlJvdyIsIkNvbCIsIkNvbGxhcHNlIiwiU291cmNlUHJldmlld1RhYmxlIiwiZGF0YXR5cGUiLCJ1c2FnZSIsImFnZ3JlZ2F0ZSIsInRheG9ub215IiwicmVxdWlyZSIsIkZvcm1JdGVtIiwiSXRlbSIsIlBhbmVsIiwiU291cmNlTWV0YUZvcm0iLCJkYXRhIiwiZm9ybVJlZiIsImlzVG9nZ2xlZCIsImhhbmRsZVRvZ2dsZSIsInByZXZpZXdEYXRhIiwicHJldmlld0NvbHVtbnMiLCJ2YWx1ZXMiLCJoYW5kbGVDaGFuZ2UiLCJzb3VyY2UiLCJzcmNVcmwiLCJzb3VyY2VVcmwiLCJ0YWJsZSIsIm5hbWUiLCJjb2x1bW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJkaXNwbGF5IiwiZWFjaCIsInZhbHVlIiwibGFiZWwiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFFBQWhCLFFBQWdDLE9BQWhDO0FBQ0EsU0FBU0MsTUFBVCxFQUFpQkMsS0FBakIsUUFBOEIsUUFBOUI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLGVBQWpCO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixnQkFBbEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGlCQUFuQjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IsY0FBaEI7QUFDQSxPQUFPQyxHQUFQLE1BQWdCLGNBQWhCO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQixtQkFBckI7QUFDQSxPQUFPQyxrQkFBUCxNQUErQix3QkFBL0I7QUFDQSxTQUNFQyxRQURGLEVBQ1lDLEtBRFosRUFDbUJDLFNBRG5CLEVBQzhCQyxRQUQ5QixRQUVPLGlCQUZQOztBQUlBQyxRQUFRLG1DQUFSO0FBQ0FBLFFBQVEsK0JBQVI7QUFDQUEsUUFBUSxnQ0FBUjtB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Q0dmLDRCQUFNc0IsR0FBTixDQUFVO0FBQUEsNEJBQUdLLEtBQUgsU0FBR0EsS0FBSDtBQUFBLDRCQUFVQyxLQUFWLFNBQVVBLEtBQVY7QUFBQSwrQkFBc0I7QUFBQTtBQUFBLDRCQUFRLEtBQUtELEtBQWIsRUFBb0IsT0FBT0EsS0FBM0I7QUFBbUNDO0FBQW5DLHlCQUF0QjtBQUFBLHVCQUFWO0FBREg7QUFERjtBQURGLGlCQWZGO0FBc0JFO0FBQUMscUJBQUQ7QUFBQSxvQkFBSyxNQUFNLENBQVgsRUFBYyxPQUFPLEVBQUVILFNBQVMsT0FBWCxFQUFyQjtBQUNFO0FBQUMsNEJBQUQ7QUFBQSxzQkFBVSxPQUFPRCxVQUFVLENBQVYsR0FBYyxXQUFkLEdBQTRCLEVBQTdDO0FBQ0U7QUFBQywyQkFBRDtBQUFBLHdCQUFPLFdBQVUsUUFBakIsRUFBMEIsd0JBQXNCQSxLQUF0QixzQkFBMUIsRUFBMEUsVUFBVVQsWUFBcEY7QUFDR2QsZ0NBQVVxQixHQUFWLENBQWM7QUFBQSwrQkFBUTtBQUFBO0FBQUEsNEJBQVEsS0FBS0ksSUFBYixFQUFtQixPQUFPQSxJQUExQjtBQUFpQ0E7QUFBakMseUJBQVI7QUFBQSx1QkFBZDtBQURIO0FBREY7QUFERjtBQXRCRixlQURELEdBK0JHO0FBdENOO0FBRnFCO0FBQUEsU0FBdEI7QUFsQkgsT0FETTtBQUFBO0FBSFYsSUFIcUI7QUFBQSxDQUF2Qjs7QUF5RUEsZUFBZW5CLGNBQWYiLCJmaWxlIjoic291cmNlLW1ldGEtZm9ybS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgRm9ybWlrLCBGaWVsZCB9IGZyb20gJ2Zvcm1paydcbmltcG9ydCBGb3JtIGZyb20gJ2FudGQvbGliL2Zvcm0nXG5pbXBvcnQgSW5wdXQgZnJvbSAnYW50ZC9saWIvaW5wdXQnXG5pbXBvcnQgU3dpdGNoIGZyb20gJ2FudGQvbGliL3N3aXRjaCdcbmltcG9ydCBSb3cgZnJvbSAnYW50ZC9saWIvcm93J1xuaW1wb3J0IENvbCBmcm9tICdhbnRkL2xpYi9jb2wnXG5pbXBvcnQgQ29sbGFwc2UgZnJvbSAnYW50ZC9saWIvY29sbGFwc2UnXG5pbXBvcnQgU291cmNlUHJldmlld1RhYmxlIGZyb20gJy4vc291cmNlLXByZXZpZXctdGFibGUnXG5pbXBvcnQge1xuICBkYXRhdHlwZSwgdXNhZ2UsIGFnZ3JlZ2F0ZSwgdGF4b25vbXksXG59IGZyb20gJy4uL3V0aWxzL2NvZ25vcydcblxucmVxdWlyZSgnYW50ZC9saWIvY29sbGFwc2Uvc3R5bGUvaW5kZXguY3NzJylcbnJlcXVpcmUoJ2FudGQvbGliL2Zvcm0vc3R5bGUvaW5kZXguY3NzJylcbnJlcXVpcmUoJ2FudGQvbGliL2lucHV0L3N0eWxlL2luZGV4LmNzcycpXG5yZXF1aXJlKCdhbnRkL2xpYi9idXR0b24vc3R5bGUvaW5kZXguY3NzJylcbnJlcXVpcmUoJ2FudGQvbGliL2dyaWQvc3R5bGUvaW5kZXguY3NzJylcbnJlcXVpcmUoJ2FudGQvbGliL3N3aXRjaC9zdHlsZS9pbmRleC5jc3MnKVxucmVxdWlyZSgnLi9zb3VyY2UtbWV0YS1mb3JtLnNjc3MnKVxuXG5jb25zdCBGb3JtSXRlbSA9IEZvcm0uSXRlbVxuY29uc3QgeyBQYW5lbCB9ID0gQ29sbGFwc2VcblxuY29uc3QgU291cmNlTWV0YUZvcm0gPSAoe1xuICBkYXRhLCBmb3JtUmVmLCBpc1RvZ2dsZWQsIGhhbmRsZVRvZ2dsZSwgcHJldmlld0RhdGEsIHByZXZpZXdDb2x1bW5zLFxufSkgPT4gKFxuICA8Rm9ybWlrXG4gICAgcmVmPXtmb3JtUmVmfVxuICAgIGluaXRpYWxWYWx1ZXM9e2RhdGF9XG4gICAgcmVuZGVyPXsoeyB2YWx1ZXMsIGhhbmRsZUNoYW5nZSB9KSA9PiAoXG4gICAgICA8Rm9ybSBsYXlvdXQ9XCJob3Jpem9udGFsXCIgY2xhc3NOYW1lPVwic291cmNlLW1ldGEtZm9ybVwiPlxuICAgICAgICB7dmFsdWVzLnNvdXJjZS5zcmNVcmwuc291cmNlVXJsXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICA8Rm9ybUl0ZW0gbGFiZWw9XCJDU1YgZmlsZSBVUkxcIj5cbiAgICAgICAgICAgICAgPElucHV0IHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdXNlcm5hbWUvZmlsZS5jc3ZcIiBkaXNhYmxlZCBuYW1lPVwic291cmNlLnNyY1VybC5zb3VyY2VVcmxcIiB2YWx1ZT17dmFsdWVzLnNvdXJjZS5zcmNVcmwuc291cmNlVXJsfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfSAvPlxuICAgICAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPENvbGxhcHNlIGRlZmF1bHRBY3RpdmVLZXk9e1snMSddfT5cbiAgICAgICAgICA8UGFuZWwgaGVhZGVyPVwiUHJldmlldyBkYXRhXCIga2V5PVwiMVwiPlxuICAgICAgICAgICAgPFNvdXJjZVByZXZpZXdUYWJsZSBkYXRhPXtwcmV2aWV3RGF0YX0gY29sdW1ucz17cHJldmlld0NvbHVtbnN9IC8+XG4gICAgICAgICAgPC9QYW5lbD5cbiAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgPEZvcm1JdGVtIGxhYmVsPVwiVGFibGUgTmFtZVwiPlxuICAgICAgICAgIDxJbnB1dCBwbGFjZWhvbGRlcj1cIlRhYmxlIE5hbWVcIiBuYW1lPVwidGFibGUubmFtZVwiIHZhbHVlPXt2YWx1ZXMudGFibGUubmFtZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gLz5cbiAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgPEZvcm1JdGVtIGxhYmVsPVwiQWR2YW5jZWQgT3B0aW9uc1wiPlxuICAgICAgICAgIDxTd2l0Y2ggb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZX0gLz5cbiAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAge2RhdGEudGFibGUuY29sdW1uLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAgICAgPFJvdyBrZXk9e2luZGV4fSBndXR0ZXI9ezI0fSB0eXBlPVwiZmxleFwiIGp1c3RpZnk9e2lzVG9nZ2xlZCA/ICdzcGFjZS1hcm91bmQnIDogJ3N0YXJ0J30gYWxpZ249XCJtaWRkbGVcIj5cbiAgICAgICAgICAgIDxDb2wgc3Bhbj17Mn0+PGgzPntpbmRleCArIDF9PC9oMz48L0NvbD5cbiAgICAgICAgICAgIDxDb2wgc3Bhbj17NH0gc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJyB9fT5cbiAgICAgICAgICAgICAgPEZvcm1JdGVtIGxhYmVsPXtpbmRleCA9PT0gMCA/ICdDb2x1bW4gTmFtZScgOiAnJ30+XG4gICAgICAgICAgICAgICAgPElucHV0IHBsYWNlaG9sZGVyPVwiQ29sdW1uIE5hbWVcIiBuYW1lPXtgdGFibGUuY29sdW1uLiR7aW5kZXh9Lm5hbWVgfSB2YWx1ZT17dmFsdWVzLnRhYmxlLmNvbHVtbltpbmRleF0ubmFtZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gLz5cbiAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgICAgIDwvQ29sPlxuICAgICAgICAgICAge2lzVG9nZ2xlZCA/IChcbiAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIDxDb2wgc3Bhbj17NH0gc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJyB9fT5cbiAgICAgICAgICAgICAgICAgIDxGb3JtSXRlbSBsYWJlbD17aW5kZXggPT09IDAgPyAnRGF0YSBUeXBlJyA6ICcnfT5cbiAgICAgICAgICAgICAgICAgICAgPEZpZWxkIGNvbXBvbmVudD1cInNlbGVjdFwiIG5hbWU9e2B0YWJsZS5jb2x1bW4uJHtpbmRleH0uZGF0YXR5cGVgfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfT5cbiAgICAgICAgICAgICAgICAgICAgICB7ZGF0YXR5cGUubWFwKGVhY2ggPT4gPG9wdGlvbiBrZXk9e2VhY2h9IHZhbHVlPXtlYWNofT57ZWFjaH08L29wdGlvbj4pfVxuICAgICAgICAgICAgICAgICAgICA8L0ZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9Gb3JtSXRlbT5cbiAgICAgICAgICAgICAgICA8L0NvbD5cbiAgICAgICAgICAgICAgICA8Q29sIHNwYW49ezR9IHN0eWxlPXt7IGRpc3BsYXk6ICdibG9jaycgfX0+XG4gICAgICAgICAgICAgICAgICA8Rm9ybUl0ZW0gbGFiZWw9e2luZGV4ID09PSAwID8gJ1RheG9ub215JyA6ICcnfT5cbiAgICAgICAgICAgICAgICAgICAgPEZpZWxkIGNvbXBvbmVudD1cInNlbGVjdFwiIG5hbWU9e2B0YWJsZS5jb2x1bW4uJHtpbmRleH0udGF4b25vbXlGYW1pbHlgfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfT5cbiAgICAgICAgICAgICAgICAgICAgICB7dGF4b25vbXkubWFwKCh7IHZhbHVlLCBsYWJlbCB9KSA9PiA8b3B0aW9uIGtleT17dmFsdWV9IHZhbHVlPXt2YWx1ZX0+e2xhYmVsfTwvb3B0aW9uPil9XG4gICAgICAgICAgICAgICAgICAgIDwvRmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L0Zvcm1JdGVtPlxuICAgICAgICAgICAgICAgIDwvQ29sPlxuICAgICAgICAgICAgICAgIDxDb2wgc3Bhbj17NH0gc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJyB9fT5cbiAgICAgICAgICAgICAgICAgIDxGb3JtSXRlbSBsYWJlbD17aW5kZXggPT09IDAgPyAnVXNhZ2UnIDogJyd9PlxuICAgICAgICAgICAgICAgICAgICA8RmllbGQgY29tcG9uZW50PVwic2VsZWN0XCIgbmFtZT17YHRhYmxlLmNvbHVtbi4ke2luZGV4fS51c2FnZWB9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9PlxuICAgICAgICAgICAgICAgICAgICAgIHt1c2FnZS5tYXAoKHsgdmFsdWUsIGxhYmVsIH0pID0+IDxvcHRpb24ga2V5PXt2YWx1ZX0gdmFsdWU9e3ZhbHVlfT57bGFiZWx9PC9vcHRpb24+KX1cbiAgICAgICAgICAgICAgICAgICAgPC9GaWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvRm9ybUl0ZW0+XG4gICAgICAgICAgICAgICAgPC9Db2w+XG4gICAgICAgICAgICAgICAgPENvbCBzcGFuPXs0fSBzdHlsZT17eyBkaXNwbGF5OiAnYmxvY2snIH19PlxuICAgICAgICAgICAgICAgICAgPEZvcm1JdGVtIGxhYmVsPXtpbmRleCA9PT0gMCA/ICdBZ2dyZWdhdGUnIDogJyd9PlxuICAgICAgICAgICAgICAgICAgICA8RmllbGQgY29tcG9uZW50PVwic2VsZWN0XCIgbmFtZT17YHRhYmxlLmNvbHVtbi4ke2luZGV4fS5yZWd1bGFyQWdncmVnYXRlYH0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0+XG4gICAgICAgICAgICAgICAgICAgICAge2FnZ3JlZ2F0ZS5tYXAoZWFjaCA9PiA8b3B0aW9uIGtleT17ZWFjaH0gdmFsdWU9e2VhY2h9PntlYWNofTwvb3B0aW9uPil9XG4gICAgICAgICAgICAgICAgICAgIDwvRmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L0Zvcm1JdGVtPlxuICAgICAgICAgICAgICAgIDwvQ29sPlxuICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9Sb3c+XG4gICAgICAgICkpfVxuICAgICAgPC9Gb3JtPlxuICAgICl9XG4gIC8+XG4pXG5cbmV4cG9ydCBkZWZhdWx0IFNvdXJjZU1ldGFGb3JtXG4iXX0=