chem-generic-ui 0.1.35 → 0.1.38

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 (143) hide show
  1. package/.babelrc +11 -0
  2. package/.eslintrc +23 -0
  3. package/.tool-versions +3 -0
  4. package/package.json +45 -34
  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 -9
  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 -106
  64. package/dist/app.js.map +0 -1
  65. package/dist/components/admin/ElementManager.js +0 -55
  66. package/dist/components/admin/ElementManager.js.map +0 -1
  67. package/dist/components/details/GenDSDetails.js +0 -274
  68. package/dist/components/details/GenDSDetails.js.map +0 -1
  69. package/dist/components/details/GenSgDetails.js +0 -567
  70. package/dist/components/details/GenSgDetails.js.map +0 -1
  71. package/dist/components/dnd/DragDropItemTypes.js.map +0 -1
  72. package/dist/components/dnd/GenericElDropTarget.js +0 -275
  73. package/dist/components/dnd/GenericElDropTarget.js.map +0 -1
  74. package/dist/components/dnd/GridDnD.js +0 -78
  75. package/dist/components/dnd/GridDnD.js.map +0 -1
  76. package/dist/components/dnd/PanelDnD.js +0 -172
  77. package/dist/components/dnd/PanelDnD.js.map +0 -1
  78. package/dist/components/fields/ButtonConfirm.js +0 -77
  79. package/dist/components/fields/ButtonConfirm.js.map +0 -1
  80. package/dist/components/fields/ButtonTooltip.js +0 -89
  81. package/dist/components/fields/ButtonTooltip.js.map +0 -1
  82. package/dist/components/fields/FieldLabel.js +0 -39
  83. package/dist/components/fields/FieldLabel.js.map +0 -1
  84. package/dist/components/fields/GenDSMisType.js +0 -45
  85. package/dist/components/fields/GenDSMisType.js.map +0 -1
  86. package/dist/components/fields/GenFormGroupCb.js +0 -32
  87. package/dist/components/fields/GenFormGroupCb.js.map +0 -1
  88. package/dist/components/fields/GenProperties.js +0 -84
  89. package/dist/components/fields/GenProperties.js.map +0 -1
  90. package/dist/components/fields/GenPropertiesFields.js +0 -617
  91. package/dist/components/fields/GenPropertiesFields.js.map +0 -1
  92. package/dist/components/flow/FlowView.js +0 -89
  93. package/dist/components/flow/FlowView.js.map +0 -1
  94. package/dist/components/flow/FlowViewerModal.js +0 -82
  95. package/dist/components/flow/FlowViewerModal.js.map +0 -1
  96. package/dist/components/flow/LayerNode.js +0 -60
  97. package/dist/components/flow/LayerNode.js.map +0 -1
  98. package/dist/components/layers/GenPropertiesLayer.js +0 -281
  99. package/dist/components/layers/GenPropertiesLayer.js.map +0 -1
  100. package/dist/components/layers/LayerModal.js +0 -82
  101. package/dist/components/layers/LayerModal.js.map +0 -1
  102. package/dist/components/layers/LayersLayout.js +0 -89
  103. package/dist/components/layers/LayersLayout.js.map +0 -1
  104. package/dist/components/models/Attachment.js +0 -74
  105. package/dist/components/models/Attachment.js.map +0 -1
  106. package/dist/components/models/GenericSubField.js +0 -38
  107. package/dist/components/models/GenericSubField.js.map +0 -1
  108. package/dist/components/table/DropLinkRenderer.js +0 -56
  109. package/dist/components/table/DropLinkRenderer.js.map +0 -1
  110. package/dist/components/table/DropRenderer.js +0 -46
  111. package/dist/components/table/DropRenderer.js.map +0 -1
  112. package/dist/components/table/DropTextRenderer.js +0 -46
  113. package/dist/components/table/DropTextRenderer.js.map +0 -1
  114. package/dist/components/table/GenericElTableDropTarget.js +0 -253
  115. package/dist/components/table/GenericElTableDropTarget.js.map +0 -1
  116. package/dist/components/table/GridBtn.js +0 -103
  117. package/dist/components/table/GridBtn.js.map +0 -1
  118. package/dist/components/table/GridEntry.js +0 -164
  119. package/dist/components/table/GridEntry.js.map +0 -1
  120. package/dist/components/table/SamOption.js +0 -88
  121. package/dist/components/table/SamOption.js.map +0 -1
  122. package/dist/components/table/SelectRenderer.js +0 -53
  123. package/dist/components/table/SelectRenderer.js.map +0 -1
  124. package/dist/components/table/TableRecord.js +0 -455
  125. package/dist/components/table/TableRecord.js.map +0 -1
  126. package/dist/components/table/UConverterRenderer.js +0 -42
  127. package/dist/components/table/UConverterRenderer.js.map +0 -1
  128. package/dist/components/tools/collate.js +0 -104
  129. package/dist/components/tools/collate.js.map +0 -1
  130. package/dist/components/tools/orten.js +0 -295
  131. package/dist/components/tools/orten.js.map +0 -1
  132. package/dist/components/tools/utils.js +0 -594
  133. package/dist/components/tools/utils.js.map +0 -1
  134. package/dist/data/SystemUnits.js +0 -589
  135. package/dist/data/SystemUnits.js.map +0 -1
  136. package/dist/index.js +0 -40
  137. package/dist/index.js.map +0 -1
  138. package/dist/simulations/SimWF.js +0 -124
  139. package/dist/simulations/SimWF.js.map +0 -1
  140. package/dist/simulations/SimuDS.js +0 -119
  141. package/dist/simulations/SimuDS.js.map +0 -1
  142. package/dist/simulations/SimuSG.js +0 -124
  143. package/dist/simulations/SimuSG.js.map +0 -1
@@ -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 variant="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;