chem-generic-ui 0.1.34 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.babelrc +17 -0
  2. package/.eslintrc +23 -0
  3. package/.tool-versions +3 -0
  4. package/package.json +55 -38
  5. package/public/ds_details.json +57 -0
  6. package/public/ds_klass.json +102 -0
  7. package/public/ds_props.json +54 -0
  8. package/public/favicon.ico +0 -0
  9. package/public/images/not_available.svg +1 -0
  10. package/public/index.html +47 -0
  11. package/public/logo192.png +0 -0
  12. package/public/logo512.png +0 -0
  13. package/public/manifest.json +25 -0
  14. package/public/robots.txt +3 -0
  15. package/public/sg_details.json +2036 -0
  16. package/public/sg_klass.json +850 -0
  17. package/public/test/ds_props.json +54 -0
  18. package/{dist/data/systemUnits.json → public/units_system.json} +0 -0
  19. package/src/app.js +50 -0
  20. package/{dist → src}/asserts/main.css +0 -7
  21. package/{dist → src}/asserts/main.scss +1 -7
  22. package/src/components/admin/ElementManager.js +28 -0
  23. package/src/components/details/GenDSDetails.js +164 -0
  24. package/src/components/details/GenSgDetails.js +396 -0
  25. package/{dist → src}/components/dnd/DragDropItemTypes.js +1 -8
  26. package/src/components/dnd/GenericElDropTarget.js +160 -0
  27. package/src/components/dnd/GridDnD.js +42 -0
  28. package/src/components/dnd/PanelDnD.js +85 -0
  29. package/src/components/fields/ButtonConfirm.js +45 -0
  30. package/src/components/fields/ButtonTooltip.js +46 -0
  31. package/src/components/fields/FieldLabel.js +18 -0
  32. package/src/components/fields/GenDSMisType.js +20 -0
  33. package/src/components/fields/GenFormGroupCb.js +17 -0
  34. package/src/components/fields/GenProperties.js +56 -0
  35. package/src/components/fields/GenPropertiesFields.js +318 -0
  36. package/src/components/layers/GenPropertiesLayer.js +176 -0
  37. package/src/components/layers/LayerModal.js +52 -0
  38. package/src/components/layers/LayersLayout.js +68 -0
  39. package/src/components/models/Attachment.js +37 -0
  40. package/src/components/models/GenericSubField.js +10 -0
  41. package/src/components/table/DropLinkRenderer.js +35 -0
  42. package/src/components/table/DropRenderer.js +31 -0
  43. package/src/components/table/DropTextRenderer.js +25 -0
  44. package/src/components/table/GenericElTableDropTarget.js +131 -0
  45. package/src/components/table/GridBtn.js +41 -0
  46. package/src/components/table/GridEntry.js +75 -0
  47. package/src/components/table/SamOption.js +53 -0
  48. package/src/components/table/SelectRenderer.js +34 -0
  49. package/src/components/table/TableRecord.js +254 -0
  50. package/src/components/table/UConverterRenderer.js +24 -0
  51. package/src/components/tools/collate.js +65 -0
  52. package/src/components/tools/orten.js +171 -0
  53. package/src/components/tools/utils.js +414 -0
  54. package/src/data/SystemUnits.js +434 -0
  55. package/src/data/systemUnits.json +430 -0
  56. package/{dist → src}/index.css +0 -0
  57. package/src/index.html +1 -0
  58. package/src/index.js +45 -0
  59. package/{dist → src}/logo.svg +0 -0
  60. package/src/simulations/SimuDS.js +52 -0
  61. package/src/simulations/SimuSG.js +54 -0
  62. package/webpack.config.js +52 -0
  63. package/dist/app.js +0 -105
  64. package/dist/components/admin/ElementManager.js +0 -54
  65. package/dist/components/details/GenDSDetails.js +0 -273
  66. package/dist/components/details/GenSgDetails.js +0 -566
  67. package/dist/components/dnd/GenericElDropTarget.js +0 -274
  68. package/dist/components/dnd/GridDnD.js +0 -77
  69. package/dist/components/dnd/PanelDnD.js +0 -171
  70. package/dist/components/fields/ButtonConfirm.js +0 -76
  71. package/dist/components/fields/ButtonTooltip.js +0 -88
  72. package/dist/components/fields/FieldLabel.js +0 -38
  73. package/dist/components/fields/GenDSMisType.js +0 -44
  74. package/dist/components/fields/GenFormGroupCb.js +0 -31
  75. package/dist/components/fields/GenProperties.js +0 -83
  76. package/dist/components/fields/GenPropertiesFields.js +0 -616
  77. package/dist/components/flow/FlowView.js +0 -88
  78. package/dist/components/flow/FlowViewerModal.js +0 -81
  79. package/dist/components/flow/LayerNode.js +0 -59
  80. package/dist/components/layers/GenPropertiesLayer.js +0 -280
  81. package/dist/components/layers/LayerModal.js +0 -81
  82. package/dist/components/layers/LayersLayout.js +0 -88
  83. package/dist/components/models/Attachment.js +0 -73
  84. package/dist/components/models/GenericSubField.js +0 -37
  85. package/dist/components/table/DropLinkRenderer.js +0 -55
  86. package/dist/components/table/DropRenderer.js +0 -45
  87. package/dist/components/table/DropTextRenderer.js +0 -45
  88. package/dist/components/table/GenericElTableDropTarget.js +0 -252
  89. package/dist/components/table/GridBtn.js +0 -102
  90. package/dist/components/table/GridEntry.js +0 -163
  91. package/dist/components/table/SamOption.js +0 -87
  92. package/dist/components/table/SelectRenderer.js +0 -52
  93. package/dist/components/table/TableRecord.js +0 -454
  94. package/dist/components/table/UConverterRenderer.js +0 -41
  95. package/dist/components/tools/collate.js +0 -103
  96. package/dist/components/tools/orten.js +0 -294
  97. package/dist/components/tools/utils.js +0 -593
  98. package/dist/data/SystemUnits.js +0 -588
  99. package/dist/index.js +0 -39
  100. package/dist/simulations/SimWF.js +0 -123
  101. package/dist/simulations/SimuDS.js +0 -118
  102. package/dist/simulations/SimuSG.js +0 -123
@@ -0,0 +1,54 @@
1
+ {
2
+ "eln": {
3
+ "version": "0.9.1",
4
+ "base_revision": "413824bce4a7adeb74bb3258f94ab9e3fc87dc09",
5
+ "current_revision": "75f3702e77b841f44fc1d1b8e2650bba35329f59\n"
6
+ },
7
+ "uuid": "27f2d3b7-57bd-4eea-bb49-bd718d68077f",
8
+ "klass": "Dataset",
9
+ "layers": {
10
+ "params": {
11
+ "wf": false,
12
+ "key": "params",
13
+ "cols": 3,
14
+ "label": "Parameter",
15
+ "layer": "params",
16
+ "fields": [
17
+ {
18
+ "type": "system-defined",
19
+ "field": "temp",
20
+ "label": "Temperature",
21
+ "value": "18",
22
+ "default": "",
23
+ "position": 1,
24
+ "description": "measurement temperature",
25
+ "value_system": "C",
26
+ "option_layers": "temperature"
27
+ }
28
+ ],
29
+ "position": 100,
30
+ "condition": ""
31
+ },
32
+ "system": {
33
+ "wf": false,
34
+ "key": "system",
35
+ "cols": 3,
36
+ "label": "Settings",
37
+ "layer": "system",
38
+ "fields": [
39
+ {
40
+ "type": "integer",
41
+ "field": "scan",
42
+ "label": "Number of Scans",
43
+ "value": 2,
44
+ "default": "",
45
+ "position": 1
46
+ }
47
+ ],
48
+ "position": 100,
49
+ "condition": ""
50
+ }
51
+ },
52
+ "klass_uuid": "3475e057-60ae-4f7c-9ec1-516b29082d64",
53
+ "select_options": {}
54
+ }
package/src/app.js ADDED
@@ -0,0 +1,50 @@
1
+ // import React, { useState, useEffect } from 'react';
2
+ // import logo from './logo.svg';
3
+ // import 'bootstrap/dist/css/bootstrap.min.css';
4
+ // import { ElementManager, GenPropertiesText } from './components/admin/ElementManager';
5
+ import { library } from '@fortawesome/fontawesome-svg-core';
6
+ import { fas } from '@fortawesome/free-solid-svg-icons';
7
+ import { far } from '@fortawesome/free-regular-svg-icons';
8
+ import './asserts/main.css';
9
+
10
+ library.add(fas, far);
11
+
12
+ export { default as ElementManager } from './components/admin/ElementManager';
13
+ export { default as GenDSMisType } from './components/fields/GenDSMisType';
14
+ export { default as GenericDSDetails } from './components/details/GenDSDetails';
15
+ export { default as SegmentDetails } from './components/details/GenSgDetails';
16
+ export { GenPropertiesNumber, GenPropertiesText } from './components/fields/GenPropertiesFields';
17
+ // export { GenPropertiesNumber, GenPropertiesText };
18
+ // function App() {
19
+ // return (
20
+ // <div className="App">
21
+ // <header className="App-header">
22
+ // <img src={logo} className="App-logo" alt="logo" />
23
+ // <p>
24
+ // Edit <code>src/App.js</code> and save to reload.
25
+ // </p>
26
+ // <a
27
+ // className="App-link"
28
+ // href="https://reactjs.org"
29
+ // target="_blank"
30
+ // rel="noopener noreferrer"
31
+ // >
32
+ // Learn React
33
+ // </a>
34
+ // </header>
35
+ // </div>
36
+ // );
37
+ // }
38
+
39
+ // export { ElementManager, GenPropertiesText };
40
+
41
+ // function App() {
42
+ // return (
43
+ // <div>
44
+ // Project A
45
+ // <ElementManager />
46
+ // </div>
47
+ // );
48
+ // }
49
+
50
+ // export default App;
@@ -1,10 +1,3 @@
1
- .gu_button_right {
2
- float: right;
3
- right: 0px;
4
- z-index: 1;
5
- margin-left: 2px;
6
- }
7
-
8
1
  .bg-bs-primary {
9
2
  background-color: #337ab7 !important;
10
3
  }
@@ -1,3 +1,4 @@
1
+
1
2
  $color-editable: #fff;
2
3
  $color-readonly: #ddd;
3
4
  $color-required: lightyellow;
@@ -10,13 +11,6 @@ $colo-selected-border: #0dcaf0;
10
11
  $color-default: #777;
11
12
  $color-bs-info: #5bc0de;
12
13
 
13
- .gu_button_right {
14
- float: right;
15
- right: 0px;
16
- z-index: 1;
17
- margin-left: 2px;
18
- }
19
-
20
14
  .bg-bs-primary {
21
15
  background-color: $colo-bs-primary !important;
22
16
  }
@@ -0,0 +1,28 @@
1
+ /* eslint-disable react/forbid-prop-types */
2
+ import React, { useState } from 'react';
3
+ import { Button } from 'react-bootstrap';
4
+
5
+ const ElementManager = () => {
6
+ const [count, setCount] = useState(0);
7
+
8
+ // return (
9
+ // <Panel bsStyle="primary">
10
+ // <Panel.Heading>
11
+ // <Panel.Title componentClass="h3">Panel heading</Panel.Title>
12
+ // </Panel.Heading>
13
+ // <Panel.Body>Panel content</Panel.Body>
14
+ // </Panel>
15
+ // );
16
+ return (
17
+ <div>
18
+ <p>You clicked {count} times</p>
19
+ <Button bsStyle="primary" onClick={() => setCount(count + 1)}>
20
+ Click me
21
+ </Button>
22
+ </div>
23
+ );
24
+ };
25
+
26
+
27
+ // export { GenPropertiesText, ElementManager };
28
+ export default ElementManager;
@@ -0,0 +1,164 @@
1
+ /* eslint-disable react/forbid-prop-types */
2
+ import React, { Component } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { findIndex, cloneDeep } from 'lodash';
5
+ import { Card, Button, ButtonToolbar, OverlayTrigger, Tooltip } from 'react-bootstrap';
6
+ // import { DragDropContext } from 'react-dnd';
7
+ // import HTML5Backend from 'react-dnd-html5-backend';
8
+ import LayersLayout from '../layers/LayersLayout';
9
+ import { genUnits, toBool, toNum, unitConversion, absOlsTermLabel } from '../tools/utils';
10
+
11
+ class GenericDSDetails extends Component {
12
+ constructor(props) {
13
+ super(props);
14
+ this.handleInputChange = this.handleInputChange.bind(this);
15
+ this.handleUnitClick = this.handleUnitClick.bind(this);
16
+ this.handleReload = this.handleReload.bind(this);
17
+ }
18
+
19
+ handleInputChange(event, field, layer, type = 'text') {
20
+ const { genericDS } = this.props;
21
+ const { properties } = genericDS;
22
+ let value = '';
23
+ switch (type) {
24
+ case 'checkbox':
25
+ value = event.target.checked;
26
+ break;
27
+ case 'select':
28
+ value = event ? event.value : null;
29
+ break;
30
+ case 'formula-field':
31
+ if (event.target) {
32
+ ({ value } = event.target);
33
+ } else {
34
+ value = event;
35
+ }
36
+ break;
37
+ case 'integer':
38
+ ({ value } = event.target);
39
+ value = Math.trunc(value);
40
+ break;
41
+ default:
42
+ ({ value } = event.target);
43
+ }
44
+ properties.layers[`${layer}`].fields.find(e => e.field === field).value = value;
45
+ if (type === 'system-defined' && (!properties.layers[`${layer}`].fields.find(e => e.field === field).value_system || properties.layers[`${layer}`].fields.find(e => e.field === field).value_system === '')) {
46
+ const opt = properties.layers[`${layer}`].fields.find(e => e.field === field).option_layers;
47
+ properties.layers[`${layer}`].fields.find(e => e.field === field).value_system = genUnits(opt)[0].key;
48
+ }
49
+ genericDS.properties = properties;
50
+ genericDS.changed = true;
51
+ // this.props.onChange('dataset', { target: { value: genericDS } });
52
+ this.props.onChange(genericDS);
53
+ }
54
+
55
+ handleUnitClick(layer, obj) {
56
+ const { genericDS } = this.props;
57
+ const { properties } = genericDS;
58
+ const newVal = unitConversion(obj.option_layers, obj.value_system, obj.value);
59
+ properties.layers[`${layer}`].fields.find(e => e.field === obj.field).value_system = obj.value_system;
60
+ properties.layers[`${layer}`].fields.find(e => e.field === obj.field).value = newVal;
61
+ genericDS.properties = properties;
62
+ genericDS.changed = true;
63
+ // this.props.onChange('dataset', { target: { value: genericDS } });
64
+ this.props.onChange(genericDS);
65
+ }
66
+
67
+ handleReload() {
68
+ const { klass, genericDS } = this.props;
69
+ if (klass.properties_release) {
70
+ const newProps = cloneDeep(klass.properties_release);
71
+ newProps.klass_uuid = klass.uuid;
72
+ Object.keys(newProps.layers).forEach((key) => {
73
+ const newLayer = newProps.layers[key] || {};
74
+ const curFields =
75
+ (genericDS.properties.layers[key] && genericDS.properties.layers[key].fields) || [];
76
+ (newLayer.fields || []).forEach((f, idx) => {
77
+ const curIdx = findIndex(curFields, o => o.field === f.field);
78
+ if (curIdx >= 0) {
79
+ const curVal = genericDS.properties.layers[key].fields[curIdx].value;
80
+ const curType = typeof curVal;
81
+ if (['select', 'text', 'textarea', 'formula-field'].includes(newProps.layers[key].fields[idx].type)) {
82
+ newProps.layers[key].fields[idx].value = curType !== 'undefined' ? curVal.toString() : '';
83
+ }
84
+ if (newProps.layers[key].fields[idx].type === 'integer') {
85
+ newProps.layers[key].fields[idx].value =
86
+ // eslint-disable-next-line no-restricted-globals
87
+ (curType === 'undefined' || curType === 'boolean' || isNaN(curVal)) ? 0 : parseInt(curVal, 10);
88
+ }
89
+ if (newProps.layers[key].fields[idx].type === 'checkbox') {
90
+ newProps.layers[key].fields[idx].value = curType !== 'undefined' ? toBool(curVal) : false;
91
+ }
92
+ if (newProps.layers[key].fields[idx].type === 'system-defined') {
93
+ const units = genUnits(newProps.layers[key].fields[idx].option_layers);
94
+ const vs = units.find(u =>
95
+ u.key === genericDS.properties.layers[key].fields[curIdx].value_system);
96
+ newProps.layers[key].fields[idx].value_system = (vs && vs.key) || units[0].key;
97
+ newProps.layers[key].fields[idx].value = toNum(curVal);
98
+ }
99
+ }
100
+ });
101
+ });
102
+ genericDS.properties = newProps;
103
+ genericDS.dataset_klass_id = klass.id;
104
+ genericDS.klass_ols = klass.ols_term_id;
105
+ genericDS.klass_label = klass.label;
106
+ genericDS.changed = true;
107
+ // this.props.onChange('dataset', { target: { value: genericDS } });
108
+ this.props.onChange(genericDS);
109
+ } else {
110
+ // this.props.onChange('dataset', { target: { value: undefined } });
111
+ this.props.onChange(undefined);
112
+ }
113
+ }
114
+
115
+ elementalPropertiesItem(genericDS, klass) {
116
+ const layersLayout = LayersLayout(
117
+ genericDS.properties.layers,
118
+ (klass.properties_release && klass.properties_release.select_options) || {},
119
+ this.handleInputChange,
120
+ () => {},
121
+ this.handleUnitClick
122
+ );
123
+ return (<div style={{ margin: '5px' }}>{layersLayout}</div>);
124
+ }
125
+
126
+ render() {
127
+ const {
128
+ // eslint-disable-next-line no-unused-vars
129
+ uiCtrl, genericDS, klass, kind
130
+ } = this.props;
131
+ if (uiCtrl && Object.keys(genericDS).length !== 0 && kind && kind !== '') {
132
+ return (
133
+ <Card className="panel-detail">
134
+ <Card.Body style={{ position: 'relative', minHeight: 260, overflowY: 'unset' }}>
135
+ {this.elementalPropertiesItem(genericDS, klass)}
136
+ <span className="g-ds-note label">
137
+ <span className="g-ds-title">Note</span><br />
138
+ Selected analysis type: {absOlsTermLabel(kind)}<br />
139
+ Content is designed for: {genericDS.klass_label}
140
+ </span>
141
+ <ButtonToolbar className="pull-right">
142
+ <OverlayTrigger placement="top" overlay={<Tooltip id="_tooltip_reload">click to reload the content template</Tooltip>}>
143
+ <Button size="sm" variant="danger" onClick={() => this.handleReload()}>Reload</Button>
144
+ </OverlayTrigger>
145
+ </ButtonToolbar>
146
+ </Card.Body>
147
+ </Card>
148
+ );
149
+ }
150
+ return null;
151
+ }
152
+ }
153
+
154
+ GenericDSDetails.propTypes = {
155
+ uiCtrl: PropTypes.bool.isRequired, // MatrixCheck(currentUser.matrix, 'genericDataset')
156
+ kind: PropTypes.string, // selected analysis type
157
+ genericDS: PropTypes.object,
158
+ klass: PropTypes.object, // dataset_klass
159
+ onChange: PropTypes.func.isRequired // change callback
160
+ };
161
+ GenericDSDetails.defaultProps = { kind: '', genericDS: {}, klass: {} };
162
+
163
+ // export default DragDropContext(HTML5Backend)(GenericDSDetails);
164
+ export default GenericDSDetails;