chem-generic-ui 0.1.31 → 0.1.34-alpha

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 (69) hide show
  1. package/build/asset-manifest.json +20 -0
  2. package/build/ds_details.json +57 -0
  3. package/build/ds_klass.json +102 -0
  4. package/build/ds_props.json +54 -0
  5. package/build/favicon.ico +0 -0
  6. package/build/images/not_available.svg +1 -0
  7. package/build/index.html +1 -0
  8. package/build/logo192.png +0 -0
  9. package/build/logo512.png +0 -0
  10. package/build/manifest.json +25 -0
  11. package/build/robots.txt +3 -0
  12. package/build/sg_details.json +2036 -0
  13. package/build/sg_klass.json +850 -0
  14. package/build/static/css/main.ed67375d.chunk.css +2 -0
  15. package/build/static/css/main.ed67375d.chunk.css.map +1 -0
  16. package/build/static/js/2.7914c54e.chunk.js +3 -0
  17. package/build/static/js/2.7914c54e.chunk.js.LICENSE.txt +94 -0
  18. package/build/static/js/2.7914c54e.chunk.js.map +1 -0
  19. package/build/static/js/main.aa86d0d1.chunk.js +2 -0
  20. package/build/static/js/main.aa86d0d1.chunk.js.map +1 -0
  21. package/build/static/js/runtime-main.1c1408e7.js +2 -0
  22. package/build/static/js/runtime-main.1c1408e7.js.map +1 -0
  23. package/build/test/ds_props.json +54 -0
  24. package/{dist/data/systemUnits.json → build/units_system.json} +0 -0
  25. package/package.json +2 -2
  26. package/dist/asserts/main.css +0 -465
  27. package/dist/asserts/main.scss +0 -496
  28. package/dist/components/admin/ElementManager.js +0 -54
  29. package/dist/components/details/GenDSDetails.js +0 -273
  30. package/dist/components/details/GenSgDetails.js +0 -566
  31. package/dist/components/dnd/DragDropItemTypes.js +0 -20
  32. package/dist/components/dnd/GenericElDropTarget.js +0 -274
  33. package/dist/components/dnd/GridDnD.js +0 -77
  34. package/dist/components/dnd/PanelDnD.js +0 -171
  35. package/dist/components/fields/ButtonConfirm.js +0 -76
  36. package/dist/components/fields/ButtonTooltip.js +0 -88
  37. package/dist/components/fields/FieldLabel.js +0 -38
  38. package/dist/components/fields/GenDSMisType.js +0 -44
  39. package/dist/components/fields/GenFormGroupCb.js +0 -31
  40. package/dist/components/fields/GenProperties.js +0 -83
  41. package/dist/components/fields/GenPropertiesFields.js +0 -616
  42. package/dist/components/flow/FlowView.js +0 -88
  43. package/dist/components/flow/FlowViewerModal.js +0 -81
  44. package/dist/components/flow/LayerNode.js +0 -59
  45. package/dist/components/layers/GenPropertiesLayer.js +0 -280
  46. package/dist/components/layers/LayerModal.js +0 -81
  47. package/dist/components/layers/LayersLayout.js +0 -88
  48. package/dist/components/models/Attachment.js +0 -73
  49. package/dist/components/models/GenericSubField.js +0 -37
  50. package/dist/components/table/DropLinkRenderer.js +0 -55
  51. package/dist/components/table/DropRenderer.js +0 -45
  52. package/dist/components/table/DropTextRenderer.js +0 -45
  53. package/dist/components/table/GenericElTableDropTarget.js +0 -252
  54. package/dist/components/table/GridBtn.js +0 -102
  55. package/dist/components/table/GridEntry.js +0 -163
  56. package/dist/components/table/SamOption.js +0 -87
  57. package/dist/components/table/SelectRenderer.js +0 -52
  58. package/dist/components/table/TableRecord.js +0 -454
  59. package/dist/components/table/UConverterRenderer.js +0 -41
  60. package/dist/components/tools/collate.js +0 -103
  61. package/dist/components/tools/orten.js +0 -294
  62. package/dist/components/tools/utils.js +0 -593
  63. package/dist/data/SystemUnits.js +0 -588
  64. package/dist/index.css +0 -13
  65. package/dist/index.js +0 -39
  66. package/dist/logo.svg +0 -1
  67. package/dist/simulations/SimWF.js +0 -123
  68. package/dist/simulations/SimuDS.js +0 -118
  69. package/dist/simulations/SimuSG.js +0 -123
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/dnd/GenericElDropTarget.js","components/dnd/GridDnD.js","components/table/GridBtn.js","components/table/GridEntry.js","components/table/UConverterRenderer.js","components/table/GenericElTableDropTarget.js","components/table/DropRenderer.js","components/table/DropTextRenderer.js","components/table/DropLinkRenderer.js","components/table/SamOption.js","components/dnd/DragDropItemTypes.js","components/table/SelectRenderer.js","components/table/TableRecord.js","components/fields/GenPropertiesFields.js","components/fields/FieldLabel.js","components/admin/ElementManager.js","components/fields/GenProperties.js","components/dnd/PanelDnD.js","components/layers/GenPropertiesLayer.js","components/layers/LayersLayout.js","components/details/GenDSDetails.js","components/tools/orten.js","components/tools/collate.js","components/layers/LayerModal.js","components/details/GenSgDetails.js","components/flow/LayerNode.js","components/flow/FlowView.js","components/flow/FlowViewerModal.js","app.js","simulations/SimuDS.js","simulations/SimuSG.js","simulations/SimWF.js","index.js","components/models/GenericSubField.js","data/SystemUnits.js","components/models/Attachment.js","components/tools/utils.js"],"names":["show","opt","iconClass","onLink","value","el_id","tips","el_tip","split","tip1","length","tip2","tit","pop","id","title","style","maxWidth","maxHeight","src","el_svg","height","width","alt","label","el_label","el_type","is_new","role","onClick","cursor","className","el_klass","icon_name","path","txt","trigger","placement","rootClose","onHide","overlay","uuid","dropTarget","drop","targetProps","monitor","sourceProps","getItem","element","sourceTag","type","props","isAssoc","taggable","tag","taggable_data","reaction_id","wellplate_id","molecule","molecule_name_label","inchikey","cano_smiles","cr_opt","short_label","element_klass","name","source","onDrop","canDrop","_targetProps","_monitor","GenericElDropTarget","this","connectDropTarget","isOver","dndItems","Component","DropTarget","connect","compose","DragSource","s","beginDrag","fid","field","rId","rowValue","connectDragSource","dragSource","isDragging","handleMove","tar","AddRowBtn","addRow","OverlayTrigger","delayShow","Tooltip","Button","bsSize","bsStyle","DelRowBtn","delRow","data","node","NullRowBtn","DnDRowBtn","moveRow","setCell","columnDef","onCellChange","cellRenderer","cellParams","FormControl","onChange","e","InputGroup","ColumnHeader","columnDefs","ch","forEach","col","idx","push","headerName","headerComponent","headerParams","colCss","Object","assign","minWidth","colId","h","borderBottom","ColumnRow","val","UConverterRenderer","sField","active","genUnitSup","genUnit","option_layers","value_system","base","params","noSvg","svg","endsWith","Popover","simg","subVal","molecule_formula","el_inchikey","el_smiles","el_iupac","iupac_name","el_molecular_weight","molecular_weight","molecule_svg_file","el_short_label","el_name","el_external_label","external_label","molecule_molecular_weight","sample_svg_file","GenericElTableDropTarget","display","justifyContent","defaultProps","DropRenderer","includes","oopt","cloneDeep","DropTextRenderer","attr","displayValue","toFixed","wordBreak","DropLinkRenderer","dId","dVal","SamOption","fValue","rUUID","Radio","disabled","checked","subField","crOpt","SelectRenderer","sOptions","find","o","isClearable","menuContainerStyle","position","multi","options","textAlign","TableRecord","bind","onSelectClick","onUnitClick","onChk","getColumns","newValue","target","isNaN","Numeral","subVals","f_obj","sub_values","findIndex","splice","onSubChange","units","genUnits","uIdx","u","key","vs","v","unitConversion","targetOpt","selectOptions","sValues","sub_fields","sF","colDef","col_name","colDefExt","editable","map","op","c","molOptions","m","ext","sOpt","filter","addOption","SampOption","addLink","samOptions","concat","act","dtype","DragDropItemTypes","layer","move","alles","sid","tid","temp","rowData","subFields","newSub","GenericSubField","isSearchCriteria","values","React","GenPropertiesCalculate","fields","showVal","showTxt","newFormula","formula","calFields","regF","varFields","match","sort","a","b","fi","tmpField","replace","parseFloat","unitConvToBase","eval","SyntaxError","message","fieldHeader","desc","description","readOnly","required","placeholder","min","GenPropertiesCheckbox","Static","GenPropertiesDrop","isRequired","createOpt","inline","defaultIcon","dragTarget","isPreview","paddingBottom","GenDummy","GenPropertiesInputGroup","subs","fLab","fUnit","fTxt","GenPropertiesNumber","isEditable","GenPropertiesSelect","GenPropertiesSystemDefined","GenPropertiesTable","GenPropertiesText","GenPropertiesTextArea","componentClass","GenTextFormula","layers","text_sub_fields","separator","fds","fdt","f","svv","fd","join","renderListGroupItem","attachment","delBtn","uid","action","filename","aid","downloadFile","contents","GenPropertiesUpload","attachments","files","border","paddingTop","color","GenWFNext","wf_options","FieldLabel","ElementManager","useState","count","setCount","GenProperties","fieldProps","canDrag","wf","handleChange","bs","klz","btnAdd","event","icon","btnRemove","wfIcon","moveIcon","btnLayer","ButtonGroup","extHead","test","panelHeader","Panel","Heading","Title","toggle","float","lineHeight","panelHColor","dndKlz","GenPropertiesLayer","handleSubChange","moveLayer","k","t","valueOnly","sub","obj","keyLayer","update","cols","perRow","Math","floor","klaz","newRow","rowId","i","showProperties","unit","tabCol","rCol","Row","eachCol","Col","md","lg","handleClick","priority","activeWF","cl","panelDnD","noneKlass","PanelGroup","accordion","defaultActiveKey","marginBottom","eventKey","Collapse","Body","views","LayersLayout","funcChange","funcSubChange","funcClick","layout","sortedLayers","sortBy","uk","cond_fields","ig","showLayer","cond","trim","toLowerCase","igs","GenericDSDetails","handleInputChange","handleUnitClick","handleReload","genericDS","properties","trunc","changed","newVal","klass","properties_release","newProps","klass_uuid","keys","newLayer","curFields","curIdx","curVal","curType","toString","parseInt","toBool","toNum","dataset_klass_id","klass_ols","ols_term_id","klass_label","undefined","layersLayout","select_options","margin","uiCtrl","kind","minHeight","overflowY","elementalPropertiesItem","absOlsTermLabel","ButtonToolbar","orgLayerObject","_layers","reduce","all","ok","cnt","startsWith","nName","reformCondFields","_layer","_oKey","_f","conds","n","traverseToRemove","rmKey","rms","prototype","hasOwnProperty","call","wf_info","source_layer","organizeSubValues","cur","pre","currentFields","previousFields","previousValues","result","currentValuKeys","previousValueKeys","notInCurrent","currObj","preKey","curr","prev","option_layer","collateValues","block","fnAdd","LayerModal","fnClose","drawLayout","Modal","Header","closeButton","overflow","SegmentDetails","state","showViewLayer","selectedLayerKey","handleAddLayer","setViewLayer","dropLayer","removeLayer","handleWFNext","setState","segment","idxSub","propsChange","stopPropagation","vals","uploadFiles","fileIdx","nSubs","cSubs","exSubs","nSub","hitSub","nvl","selectedLayer","wf_position","wf_uuid","origKey","ix","el","ll","_source","_target","srcIdx","tmpSrc","tarIdx","abs","swapAryEls","tmpTar","elId","selectedIdx","selected","nodeId","rmNeeded","preValue","flow","nxLayer","templateFlow","sourceLayer","sIdx","nd","elements","ls","animated","ns","ndNs","wfOpts","default","node_id","getFlowLayer","addAfter","srcPosition","oKey","addToObject","srcLayer","rmNode","removeFromObject","addLayerModal","targetHandleStyle","background","sourceHandleStyleA","top","onConnect","console","log","LayerNode","Position","Top","borderWidth","borderColor","borderStyle","Bottom","memo","FlowView","reactFlowInstance","setReactFlowInstance","setElements","useEffect","flowEls","conFlowEls","flowDefault","fitView","onLoad","_reactFlowInstance","connectionMode","ConnectionMode","Loose","nodeTypes","selectorNode","deleteKeyCode","FlowViewerModal","fnHide","shortLabel","handle","bounds","library","add","fas","far","SimuDS","fetch","headers","Accept","then","response","json","kjson","catch","errorMessage","newObj","SimuSG","DragDropContext","HTML5Backend","SimuWF","ReactDOM","render","document","getElementById","args","buildID","SYSTEM_UNITS","nm","Attachment","identifier","file","thumb","content_type","is_deleted","isNew","valIdx","fromFile","fObj","showField","absOlsTermId","parse","Number","reV","supVal","valLower","String","SystemUnits","convertTemp","pIdx","deep","els","d","lKey","chk","findKey","right","zIndex","x","y","_ary","idx1","idx2","ary","link","createElement","download","href","window","MouseEvent","view","bubbles","cancelable","dispatchEvent"],"mappings":"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","file":"static/js/main.aa86d0d1.chunk.js","sourcesContent":["/* eslint-disable no-unused-vars */\n/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/interactive-supports-focus */\n/* eslint-disable react/prop-types */\n/* eslint-disable no-restricted-globals */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport { DropTarget } from 'react-dnd';\n// import Aviator from 'aviator';\nimport { Tooltip, OverlayTrigger, Popover } from 'react-bootstrap';\n// import UIStore from '../stores/UIStore';\n\n// const handleSampleClick = (type, id) => {\n// const { currentCollection, isSync } = UIStore.getState();\n// if (!isNaN(id)) type += `/${id}`;\n// const collectionUrl = `${currentCollection.id}/${type}`;\n// Aviator.navigate(isSync ? `/scollection/${collectionUrl}` : `/collection/${collectionUrl}`);\n// };\n\n// const handleElementClick = (type, id) => {\n// const { currentCollection, isSync } = UIStore.getState();\n// if (!isNaN(id)) type += `/${id}`;\n// const collectionUrl = `${currentCollection.id}/${type}`;\n// Aviator.navigate(isSync ? `/scollection/${collectionUrl}` : `/collection/${collectionUrl}`);\n// };\n\nconst show = (opt, iconClass, onLink) => {\n if (opt.value && opt.value.el_id) {\n const tips = opt.value.el_tip && opt.value.el_tip.split('@@');\n const tip1 = (tips && tips.length >= 1 && tips[0]) || '';\n const tip2 = (tips && tips.length >= 2 && tips[1]) || '';\n const tit = (<div>{tip1}<br />{tip2}</div>);\n const pop = (\n <Popover id=\"popover-svg\" title={tit} style={{ maxWidth: 'none', maxHeight: 'none' }}>\n <img src={opt.value.el_svg} style={{ height: '26vh', width: '26vh' }} alt=\"\" />\n </Popover>\n );\n let label = opt.value.el_label;\n const simg = (path, tip, txt) => ((path && path !== '') ? (\n <div className=\"s-img\">\n <OverlayTrigger trigger={['hover']} placement=\"left\" rootClose onHide={null} overlay={pop}>\n <img src={path} alt=\"\" />\n </OverlayTrigger>&nbsp;<span className=\"data\">{txt}</span>\n </div>\n ) : (<OverlayTrigger placement=\"top\" overlay={<Tooltip id={uuid()}>{tip1}<br />{tip2}</Tooltip>}><div className=\"data\">{txt}</div></OverlayTrigger>));\n if (opt.value.el_type === 'sample') {\n if (opt.value.is_new !== true) {\n label = (\n // <a role=\"link\"\n // onClick={() => handleSampleClick(opt.value.el_type, opt.value.el_id)}\n // style={{ cursor: 'pointer' }}>\n <a role=\"link\" onClick={() => onLink(opt.value.el_type, opt.value.el_id)} style={{ cursor: 'pointer' }}>\n <span className=\"reaction-material-link\">{label}</span>\n </a>\n );\n }\n }\n if (opt.value.el_type === 'element') {\n label = (\n // <a role=\"link\"\n // onClick={() => handleElementClick(opt.value.el_klass, opt.value.el_id)}\n // style={{ cursor: 'pointer' }}>\n <a role=\"link\" onClick={() => onLink(opt.value.el_klass, opt.value.el_id)} style={{ cursor: 'pointer' }}>\n <i className={opt.value.icon_name} />&nbsp;\n <span className=\"reaction-material-link\">{label}</span>\n </a>\n );\n }\n return simg(opt.value.el_svg, opt.value.el_tip, label);\n }\n if (iconClass === 'element') {\n return (<span className=\"fa fa-link icon_generic_nav indicator\" />);\n }\n return (<span className={`icon-${iconClass} indicator`} />);\n};\n\nconst source = (type, props, id) => {\n let isAssoc = false;\n const taggable = (props && props.tag && props.tag.taggable_data) || {};\n if (taggable.element && taggable.element.id === id) {\n isAssoc = false;\n } else {\n isAssoc = !!(taggable.reaction_id || taggable.wellplate_id || taggable.element);\n }\n\n switch (type) {\n case 'molecule':\n return {\n el_id: props.molecule.id,\n el_type: 'molecule',\n el_label: props.molecule_name_label,\n el_tip: `${props.molecule.inchikey}@@${props.molecule.cano_smiles}`,\n };\n case 'sample':\n return {\n el_id: props.id,\n is_new: true,\n cr_opt: isAssoc === true ? 1 : 0,\n isAssoc,\n el_type: 'sample',\n el_label: props.short_label,\n el_tip: props.short_label\n };\n case 'element':\n return {\n el_id: props.id,\n el_type: 'element',\n icon_name: (props.element_klass && props.element_klass.icon_name) || '',\n el_klass: props.type,\n el_label: props.short_label,\n el_tip: `${props.label}@@${props.name}`\n };\n default:\n return {\n el_id: props.id,\n el_type: props.type,\n el_label: props.short_label,\n el_tip: props.short_label,\n };\n }\n};\n\nconst dropTarget = {\n drop(targetProps, monitor) {\n const sourceProps = monitor.getItem().element;\n const sourceTag = source(targetProps.opt.type.split('_')[1], sourceProps, targetProps.opt.id);\n targetProps.onDrop(sourceTag);\n },\n canDrop(_targetProps, _monitor) {\n return true;\n },\n};\n\nconst dropCollect = (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n});\n\nclass GenericElDropTarget extends Component {\n render() {\n const {\n connectDropTarget, isOver, canDrop, opt, onLink\n } = this.props;\n const iconClass = (opt.dndItems && opt.dndItems[0] === 'molecule' ? 'sample' : opt.dndItems[0]);\n const className = `target${isOver ? ' is-over' : ''}${canDrop ? ' can-drop' : ''}`;\n return connectDropTarget(<div className={className}>{show(opt, iconClass, onLink)}</div>);\n }\n}\n\nexport default\nDropTarget(props => props.opt.dndItems, dropTarget, dropCollect)(GenericElDropTarget);\n\nGenericElDropTarget.propTypes = {\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool.isRequired,\n};\n","import React from 'react';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport { compose } from 'redux';\n\nconst orderSource = {\n beginDrag(props) {\n const { field, rowValue } = props;\n return { fid: field, rId: rowValue.id };\n },\n};\n\nconst orderTarget = {\n drop(props, monitor) {\n const { field, rowValue, handleMove } = props;\n const tar = { fid: field, rId: rowValue.id };\n const src = monitor.getItem();\n if (tar.fid === src.fid && tar.rId !== src.rId) handleMove(src.rId, tar.rId);\n },\n};\n\nconst orderDragCollect = (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n});\n\nconst orderDropCollect = (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n});\n\nconst GridDnD = ({\n connectDragSource, connectDropTarget, isDragging, isOver, canDrop,\n}) => {\n const className = `generic_grid_dnd${isOver ? ' is-over' : ''}${canDrop ? ' can-drop' : ''}${isDragging ? ' is-dragging' : ''}`;\n return compose(connectDragSource, connectDropTarget)(<div className={className}><div className=\"dnd-btn\"><span className=\"text-info fa fa-arrows\" /></div></div>);\n};\n\nexport default compose(\n DragSource(s => s.type, orderSource, orderDragCollect),\n DropTarget(s => s.type, orderTarget, orderDropCollect)\n)(GridDnD);\n","/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport { Button, OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport GridDnD from '../dnd/GridDnD';\n\nconst AddRowBtn = ({ addRow }) => (\n <OverlayTrigger delayShow={1000} placement=\"top\" overlay={<Tooltip id={uuid()}>add entry</Tooltip>}>\n <Button onClick={() => addRow()} bsSize=\"xsmall\" bsStyle=\"primary\"><i className=\"fa fa-plus\" aria-hidden=\"true\" /></Button>\n </OverlayTrigger>\n);\n\nAddRowBtn.propTypes = { addRow: PropTypes.func.isRequired };\n\nconst DelRowBtn = ({ delRow, node }) => {\n const { data } = node;\n return (\n <OverlayTrigger delayShow={1000} placement=\"top\" overlay={<Tooltip id={uuid()}>remove</Tooltip>}>\n <Button onClick={() => delRow(data)} bsSize=\"xsmall\"><i className=\"fa fa-times\" aria-hidden=\"true\" /></Button>\n </OverlayTrigger>);\n};\n\nDelRowBtn.propTypes = { delRow: PropTypes.func.isRequired, node: PropTypes.object.isRequired };\n\nconst NullRowBtn = () => (<div className=\"grid-btn-none\"><span className=\"fa fa-arrows\" /></div>);\n\nconst DnDRowBtn = ({\n moveRow, field, type, node\n}) => (\n <GridDnD field={field} type={type} rowValue={node.data} handleMove={moveRow} />\n);\n\nDnDRowBtn.propTypes = {\n moveRow: PropTypes.func.isRequired,\n field: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n node: PropTypes.object.isRequired\n};\n\nexport { AddRowBtn, DelRowBtn, DnDRowBtn, NullRowBtn };\n","/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport { FormControl, InputGroup } from 'react-bootstrap';\n\nconst setCell = (columnDef, rowValue) => {\n const {\n type, field, onCellChange, cellRenderer, cellParams\n } = columnDef;\n switch (type) {\n case 'text':\n return (\n <FormControl type=\"text\" value={rowValue[field] || ''} onChange={e => onCellChange({ e, columnDef, rowValue })} />\n );\n case 'system-defined':\n return (\n <InputGroup>\n <FormControl type=\"number\" value={rowValue[field].value || ''} onChange={e => onCellChange({ e, columnDef, rowValue })} />\n <InputGroup.Button>\n {cellRenderer({ ...cellParams, node: { data: rowValue } })}\n </InputGroup.Button>\n </InputGroup>\n );\n case 'select':\n case 'drag_molecule':\n case 'drag_sample':\n case 'dnd':\n return (cellRenderer({ ...cellParams, node: { data: rowValue } }));\n default:\n return <span />;\n }\n};\n\nconst ColumnHeader = (columnDefs) => {\n const ch = [];\n const h = (col, idx) => {\n const {\n width, headerName, headerComponent, headerParams\n } = col;\n const colCss = {};\n if (width) { Object.assign(colCss, { width, minWidth: width }); }\n return (\n <div key={`column_header_${col.colId || col.field}_${idx}`} className=\"generic_grid_header\" style={colCss}>\n {headerComponent ? headerComponent(headerParams) : null}\n <div style={colCss}>{headerName}</div>\n </div>\n );\n };\n columnDefs.forEach((col, idx) => ch.push(h(col, idx)));\n return (<div className=\"generic_grid\" style={{ borderBottom: '1px solid #ccc' }}><div>{ch}</div></div>);\n};\n\nconst ColumnRow = (columnDefs, rowValue) => {\n const ch = [];\n const h = (col, val, idx) => {\n const {\n field, width, cellParams, cellRenderer\n } = col;\n const colCss = {};\n if (width) { Object.assign(colCss, { width, minWidth: width }); }\n return (\n <div key={`column_row_${val.id}_${col.colId || col.field}_${idx}`} className=\"generic_grid_row\" style={colCss}>\n {field ? (setCell(col, val) || '') : (cellRenderer({ ...cellParams, node: { data: val } }) || '')}\n </div>\n );\n };\n columnDefs.forEach((col, idx) => ch.push(h(col, rowValue, idx)));\n return (<div key={`column_row_${rowValue.id}`} className=\"generic_grid\"><div>{ch}</div></div>);\n};\n\nconst NoRow = (values) => {\n if (values && values.length > 0) return null;\n return (<div className=\"generic_grid\"><div><div className=\"generic_grid_row\" style={{ width: '100%' }}>(No data)</div></div></div>);\n};\n\nexport { ColumnHeader, ColumnRow, NoRow };\n","/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button } from 'react-bootstrap';\nimport { genUnit, genUnitSup } from '../tools/utils';\n\nconst UConverterRenderer = (props) => {\n const { sField, onChange, node } = props;\n if (sField.type !== 'system-defined') return null;\n const { data } = node;\n return (\n <Button key={`ucr_${data.id}`} active onClick={() => onChange(sField, node)} bsStyle=\"success\">\n {genUnitSup(genUnit(sField.option_layers, data[sField.id].value_system).label) || ''}\n </Button>\n );\n};\n\nUConverterRenderer.propTypes = {\n sField: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n node: PropTypes.object.isRequired\n};\n\nexport default UConverterRenderer;\n","/* eslint-disable no-unused-vars */\n/* eslint-disable react/forbid-prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport { DropTarget } from 'react-dnd';\nimport { Tooltip, OverlayTrigger, Popover, Button } from 'react-bootstrap';\n\nconst base = (opt, iconClass, onDrop = () => {}, params = {}) => {\n const noSvg = '/images/not_available.svg';\n if (opt.value && opt.value.el_id) {\n const label = opt.value.el_label;\n const svg = (opt.value.el_svg && opt.value.el_svg.endsWith('.svg')) ? opt.value.el_svg : noSvg;\n const pop = (\n <Popover id=\"popover-svg\" title={label} style={{ maxWidth: 'none', maxHeight: 'none' }}>\n <img src={svg} style={{ height: '26vh', width: '26vh' }} alt=\"\" />\n </Popover>\n );\n const simg = (path, txt) => ((path && path !== '') ? (\n <div className=\"s-img\">\n <OverlayTrigger delayShow={1000} trigger={['hover']} placement=\"top\" rootClose onHide={null} overlay={pop}>\n <img className=\"generic_grid_img\" src={path} alt=\"\" />\n </OverlayTrigger>\n <div className=\"del_btn\">\n <OverlayTrigger delayShow={1000} placement=\"top\" overlay={<Tooltip id={uuid()}>remove this molecule</Tooltip>}>\n <Button className=\"btn_del\" bsSize=\"xsmall\" onClick={() => onDrop({}, params)} ><i className=\"fa fa-trash-o\" aria-hidden=\"true\" /></Button>\n </OverlayTrigger>\n </div>\n </div>\n ) : (<div className=\"data\" style={{ width: '4vw' }}>{txt}</div>));\n return simg(svg, label);\n }\n return (<span className={`icon-${iconClass} indicator`} style={{ width: '4vw' }} />);\n};\n\nconst show = (opt, iconClass, onDrop) => {\n if (opt.type === 'table') {\n const sField = opt.sField || {};\n const subVal = opt.data[sField.id];\n const { data } = opt;\n return base(subVal, iconClass, onDrop, { sField, data });\n }\n return base(opt, iconClass);\n};\n\nconst source = (type, props, id) => {\n let isAssoc = false;\n const taggable = (props && props.tag && props.tag.taggable_data) || {};\n if (taggable.element && taggable.element.id === id) {\n isAssoc = false;\n } else {\n isAssoc = !!(taggable.reaction_id || taggable.wellplate_id || taggable.element);\n }\n\n switch (type) {\n case 'molecule':\n return {\n el_id: props.molecule.id,\n el_type: 'molecule',\n el_label: props.molecule.cano_smiles || props.molecule_formula || props.molecule_name_label,\n el_inchikey: props.molecule.inchikey,\n el_smiles: props.molecule.cano_smiles,\n el_iupac: props.molecule.iupac_name,\n el_molecular_weight: props.molecule.molecular_weight,\n el_svg: `/images/molecules/${props.molecule.molecule_svg_file}`,\n };\n case 'sample':\n return {\n el_id: props.id,\n is_new: true,\n cr_opt: 1,\n isAssoc,\n el_type: 'sample',\n el_label: props.short_label,\n el_short_label: props.short_label,\n el_name: props.name,\n el_external_label: props.external_label,\n el_molecular_weight: props.molecule_molecular_weight,\n el_svg: props.sample_svg_file ? `/images/samples/${props.sample_svg_file}` : `/images/molecules/${props.molecule.molecule_svg_file}`,\n };\n default:\n return {\n el_id: props.id,\n is_new: true,\n cr_opt: 0,\n el_type: props.type,\n el_label: props.short_label,\n };\n }\n};\n\nconst dropTarget = {\n drop(targetProps, monitor) {\n const sourceProps = monitor.getItem().element;\n const type = targetProps.opt.sField.type.split('_')[1];\n const sourceTag = source(type, sourceProps, targetProps.opt.id);\n targetProps.onDrop(sourceTag, targetProps.opt);\n },\n canDrop(targetProps, monitor) {\n return true;\n },\n};\n\nconst dropCollect = (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n});\n\nclass GenericElTableDropTarget extends Component {\n render() {\n const {\n connectDropTarget, isOver, canDrop, opt, onDrop\n } = this.props;\n const className = `target${isOver ? ' is-over' : ''}${canDrop ? ' can-drop' : ''}`;\n return connectDropTarget(<div className={className} style={{ display: 'inline-flex', justifyContent: 'center' }}>{show(opt, 'sample', onDrop)}</div>);\n }\n}\n\nexport default\nDropTarget(props => props.opt.dndItems, dropTarget, dropCollect)(GenericElTableDropTarget);\n\nGenericElTableDropTarget.propTypes = {\n connectDropTarget: PropTypes.func.isRequired,\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool.isRequired,\n opt: PropTypes.object.isRequired,\n onDrop: PropTypes.func\n};\n\nGenericElTableDropTarget.defaultProps = { onDrop: () => {} };\n","/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { cloneDeep } from 'lodash';\nimport GenericElTableDropTarget from './GenericElTableDropTarget';\n\nconst DropRenderer = (props) => {\n const {\n opt, sField, onChange, node\n } = props;\n if (!['drag_molecule', 'drag_sample'].includes(sField.type)) return null;\n const { data } = node;\n opt.dndItems = [sField.type.split('_')[1]];\n opt.sField = sField;\n opt.data = data;\n const oopt = cloneDeep(opt);\n return (\n <div className=\"drop_generic_properties drop_generic_table_wrap\">\n <GenericElTableDropTarget opt={oopt} onDrop={onChange} />\n </div>\n );\n};\n\nDropRenderer.propTypes = {\n sField: PropTypes.object.isRequired,\n opt: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n node: PropTypes.object.isRequired\n};\n\nexport default DropRenderer;\n","/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\n\nconst DropTextRenderer = (props) => {\n const { attr, sField, node } = props;\n let displayValue = ((node.data[sField.id] || {}).value || {})[`el_${attr.value}`] || '';\n displayValue = (attr.value === 'molecular_weight' && displayValue !== '') ? displayValue.toFixed(6) : displayValue;\n return (\n <OverlayTrigger placement=\"top\" overlay={<Tooltip id=\"copy_clipboard\">copy to clipboard</Tooltip>}>\n <div role=\"button\" data-clipboard-text={displayValue} className=\"clipboardBtn\" style={{ wordBreak: 'break-all', cursor: 'copy' }}>\n {displayValue}\n </div>\n </OverlayTrigger>\n );\n};\n\nDropTextRenderer.propTypes = {\n attr: PropTypes.object.isRequired,\n sField: PropTypes.object.isRequired,\n node: PropTypes.object.isRequired\n};\n\nexport default DropTextRenderer;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/interactive-supports-focus */\n/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n// import Aviator from 'aviator';\n// import UIStore from '../stores/UIStore';\n\n// const linkSample = (type, id) => {\n// const { currentCollection, isSync } = UIStore.getState();\n// const collectionUrl = (!isNaN(id)) ?\n// `${currentCollection.id}/${type}/${id}` : `${currentCollection.id}/${type}`;\n// Aviator.navigate(isSync ? `/scollection/${collectionUrl}` : `/collection/${collectionUrl}`);\n// };\n\nconst DropLinkRenderer = (props) => {\n const { sField, node, onLink } = props;\n const dId = ((node.data[sField.id] || {}).value || {}).el_id || '';\n const dVal = ((node.data[sField.id] || {}).value || {}).el_short_label || ' ';\n if (dId === '') return <div />;\n return (\n <a role=\"link\" onClick={() => onLink('sample', dId)} style={{ cursor: 'pointer' }}>\n <span className=\"reaction-material-link\">{dVal}</span>\n </a>\n );\n};\n\nDropLinkRenderer.propTypes = {\n sField: PropTypes.object.isRequired,\n node: PropTypes.object.isRequired,\n onLink: PropTypes.func.isRequired\n};\n\nexport default DropLinkRenderer;\n","/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuid } from 'uuid';\nimport { OverlayTrigger, Radio, Tooltip } from 'react-bootstrap';\n\nconst SamOption = (props) => {\n const { sField, node, onChange } = props;\n const { data } = node;\n const fValue = (data[sField.id] && data[sField.id].value) || {};\n if (!fValue.is_new) return <div />;\n const rUUID = uuid();\n return (\n <div className=\"generic_sam_options\">\n <OverlayTrigger delayShow={1000} placement=\"right\" overlay={<Tooltip id={uuid()}>associate with this sample</Tooltip>}>\n <Radio\n name={`dropS_${rUUID}`}\n disabled={fValue.isAssoc}\n checked={fValue.cr_opt === 0}\n onChange={() => onChange({ node, subField: sField, crOpt: 0 })}\n >\n Current\n </Radio>\n </OverlayTrigger>\n <OverlayTrigger delayShow={1000} placement=\"right\" overlay={<Tooltip id={uuid()}>split from the sample first and then associate with it</Tooltip>}>\n <Radio\n name={`dropS_${rUUID}`}\n checked={fValue.cr_opt === 1}\n onChange={() => onChange({ node, subField: sField, crOpt: 1 })}\n >\n Split\n </Radio>\n </OverlayTrigger>\n <OverlayTrigger delayShow={1000} placement=\"right\" overlay={<Tooltip id={uuid()}>duplicate the sample first and then associate with it</Tooltip>}>\n <Radio\n name={`dropS_${rUUID}`}\n checked={fValue.cr_opt === 2}\n onChange={() => onChange({ node, subField: sField, crOpt: 2 })}\n >\n Copy\n </Radio>\n </OverlayTrigger>\n </div>\n );\n};\n\nSamOption.propTypes = {\n sField: PropTypes.object.isRequired,\n node: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired\n};\n\nexport default SamOption;\n","export default {\n ELEMENT: 'element',\n SAMPLE: 'sample',\n MOLECULE: 'molecule',\n LAYOUT: 'layout',\n GENERAL: 'general',\n DATA: 'data',\n UNLINKED_DATA: 'unlinked_data',\n DATASET: 'dataset',\n CONTAINER: 'container',\n ELEMENT_FIELD: 'element_field',\n GENERIC_GRID: 'generic_grid'\n};\n","/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from 'react-select';\n\nconst SelectRenderer = (props) => {\n const {\n sField, onChange, sOptions, node\n } = props;\n if (sField.type !== 'select' || sOptions.length < 1) return null;\n const { data } = node;\n const val = sOptions.find(o => o.value === data[sField.id].value) || null;\n return (\n <Select\n isClearable\n menuContainerStyle={{ position: 'absolute' }}\n multi={false}\n options={sOptions}\n value={val}\n onChange={e => onChange(e, sField, node)}\n className=\"status-select\"\n style={{ textAlign: 'left' }}\n />\n );\n};\n\nSelectRenderer.propTypes = {\n sField: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n node: PropTypes.object.isRequired,\n sOptions: PropTypes.arrayOf(PropTypes.object).isRequired\n};\n\nexport default SelectRenderer;\n","/* eslint-disable no-restricted-globals */\n/* eslint-disable no-empty */\n/* eslint-disable react/forbid-prop-types */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Numeral from 'numeral';\nimport GenericSubField from '../models/GenericSubField';\nimport { AddRowBtn, DelRowBtn, DnDRowBtn, NullRowBtn } from './GridBtn';\nimport { ColumnHeader, ColumnRow, NoRow } from './GridEntry';\nimport UConverterRenderer from './UConverterRenderer';\nimport { genUnits, unitConversion, molOptions, samOptions } from '../tools/utils';\nimport DropRenderer from './DropRenderer';\nimport DropTextRenderer from './DropTextRenderer';\nimport DropLinkRenderer from './DropLinkRenderer';\nimport SampOption from './SamOption';\nimport DragDropItemTypes from '../dnd/DragDropItemTypes';\nimport SelectRenderer from './SelectRenderer';\n\nexport default class TableRecord extends React.Component {\n constructor(props) {\n super(props);\n this.delRow = this.delRow.bind(this);\n this.addRow = this.addRow.bind(this);\n this.moveRow = this.moveRow.bind(this);\n this.onCellChange = this.onCellChange.bind(this);\n this.onSelectClick = this.onSelectClick.bind(this);\n this.onUnitClick = this.onUnitClick.bind(this);\n this.onDrop = this.onDrop.bind(this);\n this.onChk = this.onChk.bind(this);\n this.getColumns = this.getColumns.bind(this);\n }\n\n onCellChange(params) {\n const { e, columnDef, rowValue } = params;\n const newValue = e.target.value;\n const oldValue = rowValue[columnDef.field].value;\n if (oldValue === newValue) return;\n if (columnDef.type === 'text') {\n rowValue[columnDef.field] = newValue;\n }\n if (columnDef.type === 'system-defined') {\n if (isNaN(newValue)) return;\n rowValue[columnDef.field].value = Numeral(newValue).value();\n }\n const { opt } = this.props;\n const subVals = opt.f_obj.sub_values || [];\n const idx = subVals.findIndex(s => s.id === rowValue.id);\n subVals.splice(idx, 1, rowValue);\n opt.f_obj.sub_values = subVals;\n opt.onSubChange(0, 0, opt.f_obj, true);\n }\n\n onSelectClick(e, subField, node) {\n const { data } = node;\n const { opt } = this.props;\n const subVals = opt.f_obj.sub_values || [];\n const subVal = subVals.find(s => s.id === data.id);\n subVal[subField.id] = { value: e ? e.value : '' };\n const idx = subVals.findIndex(s => s.id === data.id);\n subVals.splice(idx, 1, subVal);\n opt.f_obj.sub_values = subVals;\n opt.onSubChange(subField, subField.id, opt.f_obj, true);\n }\n\n onUnitClick(subField, node) {\n const { data } = node;\n const { opt } = this.props;\n const subVals = opt.f_obj.sub_values || [];\n const subVal = subVals.find(s => s.id === data.id);\n const units = genUnits(subField.option_layers);\n let uIdx = units.findIndex(u => u.key === subVal[subField.id].value_system);\n if (uIdx < units.length - 1) uIdx += 1; else uIdx = 0;\n const vs = units.length > 0 ? units[uIdx].key : '';\n const v = unitConversion(subField.option_layers, vs, subVal[subField.id].value);\n subVal[subField.id] = { value: v, value_system: vs };\n const idx = subVals.findIndex(s => s.id === data.id);\n subVals.splice(idx, 1, subVal);\n opt.f_obj.sub_values = subVals;\n opt.onSubChange(subField, subField.id, opt.f_obj, true);\n }\n\n onDrop(targetProps, targetOpt) {\n const { opt } = this.props;\n const subField = targetOpt.sField;\n const subVals = opt.f_obj.sub_values || [];\n const subVal = subVals.find(s => s.id === targetOpt.data.id);\n subVal[subField.id] = { value: targetProps };\n const idx = subVals.findIndex(s => s.id === targetOpt.data.id);\n subVals.splice(idx, 1, subVal);\n opt.f_obj.sub_values = subVals;\n opt.onSubChange(subField, subField.id, opt.f_obj, true);\n }\n\n onChk(params) {\n const { node, subField, crOpt } = params;\n const { opt } = this.props;\n const subVals = opt.f_obj.sub_values || [];\n const subVal = subVals.find(s => s.id === node.data.id);\n node.data[subField.id].value.cr_opt = crOpt;\n subVal[subField.id] = { value: node.data[subField.id].value };\n const idx = subVals.findIndex(s => s.id === node.data.id);\n subVals.splice(idx, 1, subVal);\n opt.f_obj.sub_values = subVals;\n opt.onSubChange(subField, subField.id, opt.f_obj, true);\n }\n\n getColumns() {\n const { opt } = this.props;\n const { selectOptions } = opt;\n const sValues = (opt.f_obj.sub_values || []);\n let columnDefs = [];\n (opt.f_obj.sub_fields || []).forEach((sF) => {\n let colDef = {\n type: sF.type, headerName: sF.col_name, field: sF.id\n };\n const colDefExt = [];\n if (sF.type === 'text') {\n colDef = Object.assign({}, colDef, {\n editable: true, onCellChange: this.onCellChange\n });\n }\n if (sF.type === 'select') {\n let sOptions =\n (selectOptions[sF.option_layers] && selectOptions[sF.option_layers].options) || [];\n sOptions = sOptions.map(op => ({ value: op.key, name: op.key, label: op.label }));\n const cellParams = { sField: sF, onChange: this.onSelectClick, sOptions };\n colDef = Object.assign({}, colDef, {\n cellRenderer: SelectRenderer, cellParams, onCellChange: this.onCellChange\n });\n }\n if (sF.type === 'system-defined') {\n const cellParams = { sField: sF, onChange: this.onUnitClick };\n colDef = Object.assign({}, colDef, {\n cellRenderer: UConverterRenderer, cellParams, onCellChange: this.onCellChange\n });\n }\n if (sF.type === 'drag_molecule') {\n const cellParams = { sField: sF, opt, onChange: this.onDrop };\n colDef = Object.assign({}, colDef, {\n cellRenderer: DropRenderer, cellParams, onCellChange: this.onCellChange, width: '5vw'\n });\n const conf = ((sF.value || '').split(';') || []);\n conf.forEach((c) => {\n const attr = molOptions.find(m => m.value === c);\n if (attr) {\n const ext = {\n colId: c, editable: false, type: 'text', headerName: attr.label, cellRenderer: DropTextRenderer, cellParams: { attr, sField: sF }\n };\n colDefExt.push(ext);\n }\n });\n }\n if (sF.type === 'drag_sample') {\n const sOpt = sValues.filter(o => o[sF.id] && o[sF.id].value && o[sF.id].value.is_new);\n const cellParams = { sField: sF, opt, onChange: this.onDrop };\n colDef = Object.assign({}, colDef, {\n cellRenderer: DropRenderer, cellParams, onCellChange: this.onCellChange, width: '5vw'\n });\n const addOption = {\n colId: 'sam_option', editable: false, type: 'text', headerName: '', cellRenderer: SampOption, cellParams: { sField: sF, onChange: this.onChk }, width: '3vw'\n };\n if (sOpt.length > 0) colDefExt.push(addOption);\n const addLink = {\n colId: 'sam_link', editable: false, type: 'text', headerName: 'Short label', cellRenderer: DropLinkRenderer, cellParams: { sField: sF }, width: '5vw'\n };\n colDefExt.push(addLink);\n const conf = ((sF.value || '').split(';') || []);\n conf.forEach((c) => {\n const attr = samOptions.find(m => m.value === c);\n if (attr) {\n const ext = {\n colId: c, editable: false, type: 'text', headerName: attr.label, cellRenderer: DropTextRenderer, cellParams: { attr, sField: sF }\n };\n colDefExt.push(ext);\n }\n });\n }\n columnDefs.push(colDef);\n if (colDefExt.length > 0) columnDefs = columnDefs.concat(colDefExt);\n });\n const act = {\n type: 'button',\n headerName: '',\n colId: opt.f_obj.field,\n headerComponent: AddRowBtn,\n headerParams: { addRow: this.addRow },\n cellRenderer: DelRowBtn,\n cellParams: { delRow: this.delRow },\n width: 'unset',\n };\n columnDefs.splice(0, 0, act);\n const dtype = `${DragDropItemTypes.GENERIC_GRID}_${opt.layer.key}_${opt.f_obj.field}`;\n const move = {\n type: 'dnd',\n field: opt.f_obj.field,\n headerName: '',\n colId: `${opt.f_obj.field}_dnd`,\n headerComponent: NullRowBtn,\n cellRenderer: DnDRowBtn,\n cellParams: { moveRow: this.moveRow, field: opt.f_obj.field, type: dtype },\n width: 'unset',\n };\n columnDefs.splice(0, 0, move);\n return columnDefs;\n }\n\n moveRow(source, target) {\n const { opt } = this.props;\n const alles = opt.f_obj.sub_values;\n const sid = alles.findIndex(e => e.id === source);\n const tid = alles.findIndex(e => e.id === target);\n const temp = alles[sid];\n alles[sid] = alles[tid];\n alles[tid] = temp;\n opt.onSubChange(0, 0, opt.f_obj, true);\n }\n\n delRow(rowData) {\n const { opt } = this.props;\n opt.f_obj.sub_values = opt.f_obj.sub_values.filter(s => s.id !== rowData.id);\n opt.onSubChange(0, 0, opt.f_obj, true);\n }\n\n addRow() {\n const { opt } = this.props;\n const subFields = opt.f_obj.sub_fields || [];\n const newSub = new GenericSubField();\n subFields.map((e) => {\n if (e.type === 'text') return Object.assign(newSub, { [e.id]: '' });\n return Object.assign(newSub, { [e.id]: { value: '', value_system: e.value_system } });\n });\n opt.f_obj.sub_values = opt.f_obj.sub_values || [];\n opt.f_obj.sub_values.push(newSub);\n opt.onSubChange(0, 0, opt.f_obj, true);\n }\n\n render() {\n const { opt } = this.props;\n if (opt.isSearchCriteria) return (<div>(This is a table)</div>);\n if ((opt.f_obj.sub_fields || []).length < 1) return null;\n const columnDefs = this.getColumns();\n return (\n <div>\n {ColumnHeader(columnDefs)}\n <div>{NoRow(opt.f_obj.sub_values)}</div>\n <div>{(opt.f_obj.sub_values || []).map(s => ColumnRow(columnDefs, s))}</div>\n </div>\n );\n }\n}\n\nTableRecord.propTypes = {\n opt: PropTypes.object.isRequired,\n};\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable no-eval */\n/* eslint-disable no-restricted-globals */\n\nimport React from 'react';\nimport { Button, Checkbox, FormGroup, FormControl,\n InputGroup, ListGroup, ListGroupItem, OverlayTrigger, Radio, Tooltip } from 'react-bootstrap';\nimport Select from 'react-select';\nimport Dropzone from 'react-dropzone';\nimport { v4 as uuid } from 'uuid';\nimport { filter } from 'lodash';\nimport FieldLabel from './FieldLabel';\nimport { downloadFile, genUnit, genUnitSup, unitConvToBase } from '../tools/utils';\nimport GenericElDropTarget from '../dnd/GenericElDropTarget';\nimport TableRecord from '../table/TableRecord';\n\nconst GenPropertiesCalculate = (opt) => {\n const fields = (opt.layer && opt.layer.fields) || [];\n let showVal = 0;\n let showTxt = null;\n let newFormula = opt.formula;\n\n const calFields = filter(fields, o => (o.type === 'integer' || o.type === 'system-defined'));\n const regF = /[a-zA-Z0-9]+/gm;\n // eslint-disable-next-line max-len\n const varFields = (opt.formula && opt.formula.match(regF)) ? opt.formula.match(regF).sort((a, b) => b.length - a.length) : [];\n\n varFields.forEach((fi) => {\n if (!isNaN(fi)) return;\n\n const tmpField = calFields.find(e => e.field === fi);\n if (typeof tmpField === 'undefined' || tmpField == null) {\n newFormula = newFormula.replace(fi, 0);\n } else {\n newFormula = (tmpField.type === 'system-defined') ? newFormula.replace(fi, parseFloat(unitConvToBase(tmpField) || 0)) : newFormula.replace(fi, parseFloat(tmpField.value || 0));\n }\n });\n\n if (opt.type === 'formula-field') {\n try {\n showVal = eval(newFormula);\n showTxt = !isNaN(showVal) ? parseFloat(showVal.toFixed(5)) : 0;\n } catch (e) {\n if (e instanceof SyntaxError) {\n showTxt = e.message;\n }\n }\n }\n\n const fieldHeader = opt.label === '' ? null : (<FieldLabel label={opt.label} desc={opt.description} />);\n return (\n <FormGroup>\n {fieldHeader}\n <InputGroup>\n <FormControl\n type=\"text\"\n value={showTxt}\n onChange={opt.onChange}\n className=\"readonly\"\n readOnly=\"readonly\"\n required={false}\n placeholder={opt.placeholder}\n min={0}\n />\n <InputGroup.Button>\n <OverlayTrigger\n placement=\"bottom\"\n overlay={<Tooltip id=\"update_calculation_field\">adjust</Tooltip>}\n >\n <Button active className=\"clipboardBtn\" onClick={() => opt.onChange(showTxt)}>\n <i className=\"fa fa-arrow-right\" aria-hidden=\"true\" />\n </Button>\n </OverlayTrigger>\n </InputGroup.Button>\n <FormControl\n type=\"text\"\n value={opt.value}\n onChange={opt.onChange}\n required={false}\n placeholder={opt.placeholder}\n min={0}\n />\n </InputGroup>\n </FormGroup>\n );\n};\n\nconst GenPropertiesCheckbox = opt => (\n <FormGroup>\n <Checkbox\n name={opt.field}\n checked={opt.value}\n onChange={opt.onChange}\n disabled={opt.readOnly}\n >\n <FormControl.Static>{opt.label}</FormControl.Static>\n </Checkbox>\n </FormGroup>\n);\n\nconst GenPropertiesDrop = (opt) => {\n const className = opt.isRequired ? 'drop_generic_properties field_required' : 'drop_generic_properties';\n\n let createOpt = null;\n if (opt.value.is_new === true) {\n createOpt = (\n <div className=\"sample_radios\">\n <OverlayTrigger placement=\"top\" overlay={<Tooltip id={uuid()}>associate with this sample</Tooltip>}>\n <Radio name={`dropS_${opt.value.el_id}`} disabled={opt.value.isAssoc === true} checked={opt.value.cr_opt === 0} onChange={() => opt.onChange({ ...opt.value, cr_opt: 0 })} inline>Current</Radio>\n </OverlayTrigger>\n <OverlayTrigger placement=\"top\" overlay={<Tooltip id={uuid()}>split from the sample first and then associate with it</Tooltip>}>\n <Radio name={`dropS_${opt.value.el_id}`} checked={opt.value.cr_opt === 1} onChange={() => opt.onChange({ ...opt.value, cr_opt: 1 })} inline>Split</Radio>\n </OverlayTrigger>\n <OverlayTrigger placement=\"top\" overlay={<Tooltip id={uuid()}>duplicate the sample first and then associate with it</Tooltip>}>\n <Radio name={`dropS_${opt.value.el_id}`} checked={opt.value.cr_opt === 2} onChange={() => opt.onChange({ ...opt.value, cr_opt: 2 })} inline>Copy</Radio>\n </OverlayTrigger>\n </div>\n );\n }\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n const defaultIcon = opt.type === 'drag_element' ? <span className=\"fa fa-link icon_generic_nav indicator\" /> : <span className=\"icon-sample indicator\" />;\n const dragTarget = opt.isPreview === true ? <div className=\"target\">{defaultIcon}</div> : <GenericElDropTarget opt={opt} onDrop={opt.onChange} />;\n\n return (\n <FormGroup>\n {fieldHeader}\n <FormControl.Static style={{ paddingBottom: '0px' }}>\n <div className={className}>\n {dragTarget}\n {createOpt}\n <div>\n <OverlayTrigger placement=\"top\" overlay={<Tooltip id={uuid()}>remove</Tooltip>}>\n <Button className=\"btn_del\" bsStyle=\"danger\" bsSize=\"xsmall\" onClick={() => opt.onChange({})} ><i className=\"fa fa-trash-o\" aria-hidden=\"true\" /></Button>\n </OverlayTrigger>\n </div>\n </div>\n </FormControl.Static>\n </FormGroup>\n );\n};\n\nconst GenDummy = () => (\n <FormGroup className=\"text_generic_properties\">\n <FormControl type=\"text\" className=\"dummy\" readOnly />\n </FormGroup>\n);\n\nconst GenPropertiesInputGroup = (opt) => {\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n const fLab = e => <div key={uuid()} className=\"form-control g_input_group_label\">{e.value}</div>;\n const fTxt = e => <FormControl className=\"g_input_group\" key={e.id} type={e.type} name={e.id} value={e.value} onChange={o => opt.onSubChange(o, e.id, opt.f_obj)} />;\n const fUnit = e => (\n <span key={`${e.id}_GenPropertiesInputGroup`} className=\"input-group\" style={{ width: '100%' }}>\n <FormControl key={e.id} type=\"number\" name={e.id} value={e.value} onChange={o => opt.onSubChange(o, e.id, opt.f_obj)} min={1} />\n <InputGroup.Button>\n <Button active onClick={() => opt.onSubChange(e, e.id, opt.f_obj)} bsStyle=\"success\">\n {genUnitSup(genUnit(e.option_layers, e.value_system).label) || ''}\n </Button>\n </InputGroup.Button>\n </span>\n );\n const subs = opt.f_obj && opt.f_obj.sub_fields && opt.f_obj.sub_fields.map((e) => {\n if (e.type === 'label') { return fLab(e); } if (e.type === 'system-defined') { return fUnit(e); } return fTxt(e);\n });\n return (\n <FormGroup>\n {fieldHeader}\n <InputGroup style={{ display: 'flex' }}>\n {subs}\n </InputGroup>\n </FormGroup>\n );\n};\n\nconst GenPropertiesNumber = (opt) => {\n let className = opt.isEditable ? 'editable' : 'readonly';\n className = opt.isRequired && opt.isEditable ? 'required' : className;\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n return (\n <FormGroup>\n {fieldHeader}\n <FormControl\n type=\"number\"\n value={opt.value}\n onChange={opt.onChange}\n className={className}\n readOnly={opt.readOnly}\n required={opt.isRequired}\n placeholder={opt.placeholder}\n min={1}\n />\n </FormGroup>\n );\n};\n\nconst GenPropertiesSelect = (opt) => {\n const options = opt.options.map(op => ({ value: op.key, name: op.key, label: op.label }));\n let className = opt.isEditable ? 'select_generic_properties_editable' : 'select_generic_properties_readonly';\n className = opt.isRequired && opt.isEditable ? 'select_generic_properties_required' : className;\n className = `${className} status-select`;\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n const val = options.find(o => o.value === opt.value) || null;\n return (\n <FormGroup>\n {fieldHeader}\n <Select\n isClearable\n menuContainerStyle={{ position: 'absolute' }}\n name={opt.field}\n multi={false}\n options={options}\n value={val}\n onChange={opt.onChange}\n className={className}\n disabled={opt.readOnly}\n />\n </FormGroup>\n );\n};\n\nconst GenPropertiesSystemDefined = (opt) => {\n let className = opt.isEditable ? 'editable' : 'readonly';\n className = opt.isRequired && opt.isEditable ? 'required' : className;\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n return (\n <FormGroup>\n {fieldHeader}\n <InputGroup>\n <FormControl\n type=\"number\"\n value={opt.value}\n onChange={opt.onChange}\n className={className}\n readOnly={opt.readOnly}\n required={opt.isRequired}\n placeholder={opt.placeholder}\n min={1}\n />\n <InputGroup.Button>\n <Button disabled={opt.readOnly} active onClick={opt.onClick} bsStyle=\"success\">\n {genUnitSup(genUnit(opt.option_layers, opt.value_system).label) || ''}\n </Button>\n </InputGroup.Button>\n </InputGroup>\n </FormGroup>\n );\n};\n\nconst GenPropertiesTable = (opt) => {\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n return (\n <FormGroup>\n {fieldHeader}\n <TableRecord key={`grid_${opt.f_obj.field}`} opt={opt} />\n </FormGroup>\n );\n};\n\nconst GenPropertiesText = (opt) => {\n let className = opt.isEditable ? 'editable' : 'readonly';\n className = opt.isRequired && opt.isEditable ? 'required' : className;\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n return (\n <FormGroup className=\"text_generic_properties\">\n {fieldHeader}\n <FormControl\n type=\"text\"\n value={opt.value}\n onChange={opt.onChange}\n className={className}\n readOnly={opt.readOnly}\n required={opt.isRequired}\n placeholder={opt.placeholder}\n />\n </FormGroup>\n );\n};\n\nconst GenPropertiesTextArea = (opt) => {\n let className = opt.isEditable ? 'editable' : 'readonly';\n className = opt.isRequired && opt.isEditable ? 'required' : className;\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n return (\n <FormGroup className=\"text_generic_properties\">\n {fieldHeader}\n <FormControl\n componentClass=\"textarea\"\n value={opt.value}\n onChange={opt.onChange}\n className={className}\n readOnly={opt.readOnly}\n required={opt.isRequired}\n placeholder={opt.placeholder}\n />\n </FormGroup>\n );\n};\n\nconst GenTextFormula = (opt) => {\n const { layers } = opt;\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n const subs = [];\n (opt.f_obj && opt.f_obj.text_sub_fields).map((e) => {\n const { layer, field, separator } = e;\n if (field && field !== '') {\n if (field.includes('[@@]')) {\n const fds = field.split('[@@]');\n if (fds && fds.length === 2) {\n const fdt = ((layers[layer] || {}).fields || []).find(f => f.field === fds[0] && f.type === 'table');\n ((fdt && fdt.sub_values) || []).forEach((svv) => {\n if (svv && svv[fds[1]] && svv[fds[1]] !== '') { subs.push(svv[fds[1]]); subs.push(separator); }\n });\n }\n } else {\n const fd = ((layers[layer] || {}).fields || []).find(f => f.field === field);\n if (fd && fd.value && fd.value !== '') { subs.push(fd.value); subs.push(separator); }\n }\n }\n return true;\n });\n return (\n <FormGroup className=\"text_generic_properties\">\n {fieldHeader}\n <FormControl\n type=\"text\"\n value={subs.join('')}\n className=\"readonly\"\n readOnly\n required={false}\n />\n </FormGroup>\n );\n};\n\nconst renderListGroupItem = (opt, attachment) => {\n const delBtn = (\n <Button bsSize=\"xsmall\" id={attachment.uid} className=\"button-right\" onClick={() => opt.onChange({ ...opt.value, action: 'd', uid: attachment.uid })}>\n <i className=\"fa fa-times\" aria-hidden=\"true\" />\n </Button>\n );\n const filename = attachment.aid ?\n (<a onClick={() => downloadFile({ contents: `/api/v1/attachments/${attachment.aid}`, name: attachment.filename })} style={{ cursor: 'pointer' }}>{attachment.filename}</a>) : attachment.filename;\n return (\n <div className=\"generic_grid\">\n <div>\n <div>{delBtn}</div>\n <div className=\"generic_grid_row\">{filename}</div>\n <div className=\"generic_grid_row\">\n <FormGroup bsSize=\"small\">\n <FormControl\n type=\"text\"\n value={attachment.label || ''}\n onChange={e => opt.onChange({\n ...opt.value, action: 'l', uid: attachment.uid, val: e\n })}\n />\n </FormGroup>\n </div>\n </div>\n </div>\n );\n};\n\nconst GenPropertiesUpload = (opt) => {\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n const attachments = (opt.value && opt.value.files) || [];\n if (opt.isSearchCriteria) return (<div>(This is an upload)</div>);\n\n return (\n <FormGroup className=\"text_generic_properties\">\n {fieldHeader}\n <FormControl.Static style={{ paddingBottom: '0px' }}>\n <Dropzone\n id=\"dropzone\"\n onDrop={e => opt.onChange({\n ...opt.value, action: 'f', val: e\n })}\n style={{ height: 30, width: '100%', border: '3px dashed lightgray' }}\n >\n <div style={{ textAlign: 'center', paddingTop: 6, color: 'gray' }}>\n Drop File, or Click to Select.\n </div>\n </Dropzone>\n </FormControl.Static>\n <ListGroup>\n {attachments.map(attachment => (\n <ListGroupItem key={attachment.id} className=\"generic_files\">\n {renderListGroupItem(opt, attachment)}\n </ListGroupItem>\n ))}\n </ListGroup>\n </FormGroup>\n );\n};\n\nconst GenWFNext = (opt) => {\n const options = (opt.f_obj.wf_options || []).map((op) => {\n const label = op.label.match(/(.*)\\(.*\\)/);\n return ({ value: op.key, name: op.key, label: label[1] === '' ? label[0] : label[1] });\n });\n let className = opt.isEditable ? 'select_generic_properties_editable' : 'select_generic_properties_readonly';\n className = opt.isRequired && opt.isEditable ? 'select_generic_properties_required' : className;\n className = `${className} status-select`;\n const fieldHeader = opt.label === '' ? null : <FieldLabel label={opt.label} desc={opt.description} />;\n const val = options.find(o => o.value === opt.value) || null;\n return (\n <FormGroup>\n {fieldHeader}\n <Select\n menuContainerStyle={{ position: 'absolute' }}\n name={opt.field}\n multi={false}\n options={options}\n value={val}\n onChange={opt.onChange}\n className={className}\n disabled={opt.readOnly}\n />\n </FormGroup>\n );\n};\n\nexport {\n GenPropertiesCalculate,\n GenPropertiesCheckbox,\n GenPropertiesDrop,\n GenDummy,\n GenTextFormula,\n GenPropertiesInputGroup,\n GenPropertiesNumber,\n GenPropertiesSelect,\n GenPropertiesSystemDefined,\n GenPropertiesTable,\n GenPropertiesText,\n GenPropertiesTextArea,\n GenPropertiesUpload,\n GenWFNext\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport { v4 as uuid } from 'uuid';\n\nconst FieldLabel = (props) => {\n const { label, desc } = props;\n return (desc && desc !== '') ? (\n <OverlayTrigger placement=\"top\" delayShow={1000} overlay={<Tooltip id={uuid()}>{desc}</Tooltip>}>\n <span>{label}</span>\n </OverlayTrigger>\n ) : <span>{label}</span>;\n};\n\nFieldLabel.propTypes = { label: PropTypes.string.isRequired, desc: PropTypes.string };\nFieldLabel.defaultProps = { desc: '' };\n\nexport default FieldLabel;\n","/* eslint-disable react/forbid-prop-types */\nimport React, { useState } from 'react';\nimport { Button } from 'react-bootstrap';\n\nconst ElementManager = () => {\n const [count, setCount] = useState(0);\n\n // return (\n // <Panel bsStyle=\"primary\">\n // <Panel.Heading>\n // <Panel.Title componentClass=\"h3\">Panel heading</Panel.Title>\n // </Panel.Heading>\n // <Panel.Body>Panel content</Panel.Body>\n // </Panel>\n // );\n return (\n <div>\n <p>You clicked {count} times</p>\n <Button bsStyle=\"primary\" onClick={() => setCount(count + 1)}>\n Click me\n </Button>\n </div>\n );\n};\n\n\n// export { GenPropertiesText, ElementManager };\nexport default ElementManager;\n","import {\n GenPropertiesCheckbox,\n GenPropertiesCalculate,\n GenPropertiesSelect,\n GenPropertiesDrop,\n GenPropertiesNumber,\n GenPropertiesSystemDefined,\n GenPropertiesInputGroup,\n GenPropertiesTextArea,\n GenPropertiesUpload,\n GenDummy,\n GenPropertiesTable,\n GenTextFormula,\n GenWFNext,\n GenPropertiesText\n} from './GenPropertiesFields';\n\nconst GenProperties = (opt) => {\n const fieldProps = { ...opt, dndItems: [] };\n const type = fieldProps.type.split('_');\n if (opt.isSearchCriteria && type[0] === 'drag') type[0] = 'text';\n // if (opt.isPreview && (type[0] === 'drag' || type[0] === 'upload')) type[0] = 'text';\n switch (type[0]) {\n case 'checkbox':\n return GenPropertiesCheckbox(fieldProps);\n case 'formula-field':\n return GenPropertiesCalculate(fieldProps);\n case 'select':\n return GenPropertiesSelect(fieldProps);\n case 'drag':\n fieldProps.dndItems = [...fieldProps.dndItems, type[1]];\n return GenPropertiesDrop(fieldProps);\n case 'integer':\n return GenPropertiesNumber(fieldProps);\n case 'system-defined':\n return GenPropertiesSystemDefined(fieldProps);\n case 'input-group':\n return GenPropertiesInputGroup(fieldProps);\n case 'textarea':\n return GenPropertiesTextArea(fieldProps);\n case 'upload':\n return GenPropertiesUpload(fieldProps);\n case 'dummy':\n return GenDummy();\n case 'table':\n return GenPropertiesTable(fieldProps);\n case 'text-formula':\n return GenTextFormula(fieldProps);\n case 'wf-next':\n return GenWFNext(fieldProps);\n default:\n return GenPropertiesText(fieldProps);\n }\n};\n\nexport default GenProperties;\n","/* eslint-disable max-len */\nimport React from 'react';\nimport { DragSource, DropTarget } from 'react-dnd';\nimport { compose } from 'redux';\nimport { Panel, ButtonGroup, OverlayTrigger, Tooltip, Button } from 'react-bootstrap';\nimport { v4 as uuid } from 'uuid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nconst orderSource = {\n canDrag(props) {\n return !props.layer.wf;\n },\n beginDrag(props) {\n const { layer, field, rowValue } = props;\n return { wf: layer.wf, fid: field, rId: rowValue.id };\n },\n};\n\nconst orderTarget = {\n canDrop(props, monitor) {\n const src = monitor.getItem();\n return !props.layer.wf || !src.wf;\n },\n drop(props, monitor) {\n const {\n layer, field, rowValue, handleMove\n } = props;\n const tar = { wf: layer.wf, fid: field, rId: rowValue.id };\n const src = monitor.getItem();\n if (tar.fid === src.fid && tar.rId !== src.rId) handleMove(src.rId, tar.rId);\n },\n};\n\nconst orderDragCollect = (connect, monitor) => ({\n connectDragSource: connect.dragSource(),\n isDragging: monitor.isDragging(),\n});\n\nconst orderDropCollect = (connect, monitor) => ({\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n});\n\nconst PanelDnD = ({\n connectDragSource, connectDropTarget, isDragging, isOver, canDrop,\n layer, id, handleChange, bs\n}) => {\n const className = `generic_grid_dnd${isOver ? ' is-over' : ''}${canDrop ? ' can-drop' : ''}${isDragging ? ' is-dragging' : ''}`;\n const {\n style, label, wf, key\n } = layer;\n const klz = (style || 'panel_generic_heading').replace('panel_generic_heading', 'panel_generic_heading_slim');\n const btnAdd = (\n <OverlayTrigger delayShow={1000} placement=\"top\" overlay={<Tooltip id=\"_tooltip_add_layer\">add layer</Tooltip>}>\n <Button bsSize=\"xsmall\" onClick={event => handleChange(event, id, layer, 'layer-modal')}><FontAwesomeIcon icon=\"fas fa-plus\" /></Button>\n </OverlayTrigger>\n );\n const btnRemove = (\n <OverlayTrigger delayShow={1000} placement=\"top\" overlay={<Tooltip id=\"_tooltip_remove_layer\">remove layer</Tooltip>}>\n <Button bsSize=\"xsmall\" onClick={event => handleChange(event, id, layer, 'layer-remove')}><FontAwesomeIcon icon=\"fas fa-minus\" /></Button>\n </OverlayTrigger>\n );\n const wfIcon = wf ? (<span>&nbsp;<FontAwesomeIcon icon=\"fas fa-sitemap\" /></span>) : null;\n const moveIcon = (\n <OverlayTrigger delayShow={1000} placement=\"top\" overlay={<Tooltip id={uuid()}>drag and drop to move position</Tooltip>}>\n <Button onClick={() => {}} bsSize=\"xsmall\"><FontAwesomeIcon icon=\"fas fa-arrows-alt\" /></Button>\n </OverlayTrigger>);\n const btnLayer = wf ? (<ButtonGroup className=\"pull-right\" >{btnAdd}</ButtonGroup>) : (<ButtonGroup className=\"pull-right\" >{btnAdd}{btnRemove}{moveIcon}</ButtonGroup>);\n const extHead = (/\\./g.test(key)) ? <>({key}{wfIcon})</> : null;\n const panelHeader = (\n <Panel.Heading className={klz}>\n <Panel.Title toggle style={{ float: 'left', lineHeight: 'normal' }}>{label}&nbsp;{extHead}</Panel.Title>{btnLayer}\n <div className=\"clearfix\" />\n </Panel.Heading>\n );\n const panelHColor = bs !== 'none' ? `panel-${bs}` : '';\n const dndKlz = wf ? `dnd-none ${panelHColor}` : `dnd ${panelHColor}`;\n return compose(connectDragSource, connectDropTarget)(<div className={className}><div className={dndKlz}>{panelHeader}</div></div>);\n};\n\nexport default compose(\n DragSource(s => s.type, orderSource, orderDragCollect),\n DropTarget(s => s.type, orderTarget, orderDropCollect)\n)(PanelDnD);\n","/* eslint-disable max-len */\n/* eslint-disable react/require-default-props */\n/* eslint-disable react/forbid-prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { Panel, Col, PanelGroup, Row } from 'react-bootstrap';\nimport GenProperties from '../fields/GenProperties';\nimport { genUnits, showProperties, unitConversion } from '../tools/utils';\nimport PanelDnD from '../dnd/PanelDnD';\n\nexport default class GenPropertiesLayer extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.handleSubChange = this.handleSubChange.bind(this);\n this.moveLayer = this.moveLayer.bind(this);\n }\n\n handleChange(e, f, k, t) {\n this.props.onChange(e, f, k, t);\n }\n\n handleSubChange(e, id, f, valueOnly = false) {\n const sub = f.sub_fields.find(m => m.id === id);\n if (!valueOnly) {\n if (e.type === 'system-defined') {\n const units = genUnits(e.option_layers);\n let uIdx = units.findIndex(u => u.key === e.value_system);\n if (uIdx < units.length - 1) uIdx += 1; else uIdx = 0;\n sub.value_system = units.length > 0 ? units[uIdx].key : '';\n sub.value = unitConversion(e.option_layers, sub.value_system, e.value);\n } else {\n sub.value = e.target.value;\n }\n }\n const { layer } = this.props;\n const obj = { f, sub };\n this.props.onSubChange(layer.key, obj, valueOnly);\n }\n\n handleClick(keyLayer, obj, val) {\n const units = genUnits(obj.option_layers);\n let uIdx = units.findIndex(e => e.key === val);\n if (uIdx < units.length - 1) uIdx += 1; else uIdx = 0;\n const update = obj;\n update.value_system = units.length > 0 ? units[uIdx].key : '';\n this.props.onClick(keyLayer, update);\n }\n\n views() {\n const {\n layer, selectOptions, id, layers, isPreview\n } = this.props;\n const { cols, fields, key } = layer;\n const perRow = cols || 1;\n const col = Math.floor(12 / perRow);\n const klaz = (12 % perRow) > 0 ? 'g_col_w' : '';\n const vs = [];\n let op = [];\n let newRow = 0;\n let rowId = 1;\n (fields || []).forEach((f, i) => {\n if (showProperties(f, layers)) {\n const unit = genUnits(f.option_layers)[0] || {};\n const tabCol = (f.cols || 1) * 1;\n const rCol = (f.type === 'table') ? (12 / (tabCol || 1)) : col;\n newRow = (f.type === 'table') ? newRow += (perRow / (tabCol || 1)) : newRow += 1;\n\n if (newRow > perRow) {\n vs.push(<Row key={rowId}>{op}</Row>);\n rowId += 1;\n op = [];\n newRow = (f.type === 'table') ? newRow = (perRow / (tabCol || 1)) : newRow = 1;\n }\n const eachCol = (\n <Col key={`prop_${key}_${f.priority}_${f.field}`} md={rCol} lg={rCol} className={f.type === 'table' ? '' : klaz}>\n <GenProperties\n key={`${id}_${layer}_${f.field}_GenPropertiesLayer`}\n layers={layers}\n id={id}\n layer={layer}\n f_obj={f}\n label={f.label}\n value={f.value || ''}\n description={f.description || ''}\n type={f.type || 'text'}\n field={f.field || 'field'}\n formula={f.formula || ''}\n options={(selectOptions && selectOptions[f.option_layers] && selectOptions[f.option_layers].options) || []}\n onChange={event => this.handleChange(event, f.field, key, f.type)}\n onSubChange={this.handleSubChange}\n isEditable\n isPreview={isPreview}\n readOnly={false}\n isRequired={f.required || false}\n placeholder={f.placeholder || ''}\n option_layers={f.option_layers}\n value_system={f.value_system || unit.key}\n onClick={() => this.handleClick(key, f, (f.value_system || unit.key))}\n selectOptions={selectOptions || {}}\n />\n </Col>\n );\n op.push(eachCol);\n if (newRow % perRow === 0) newRow = 0;\n if ((newRow === 0) || (fields.length === (i + 1))) {\n vs.push(<Row key={rowId}>{op}</Row>);\n rowId += 1;\n op = [];\n }\n } else if (fields.length === (i + 1)) {\n vs.push(<Row key={rowId}>{op}</Row>);\n rowId += 1;\n op = [];\n }\n });\n return vs;\n }\n\n moveLayer(src, tar) {\n this.handleChange(null, src, tar, 'drop-layer');\n }\n\n render() {\n const { id, layer, activeWF } = this.props;\n const { color, style, label } = layer;\n let bs = color || 'default';\n const cl = (style || 'panel_generic_heading').replace('panel_generic_heading', 'panel_generic_heading_slim');\n // panel header color is based on input bs value\n const panelDnD = (<PanelDnD\n type=\"gen_panel\"\n layer={layer}\n field=\"layer\"\n rowValue={{ id: layer.key }}\n handleMove={this.moveLayer}\n id={id}\n handleChange={this.handleChange}\n bs={bs}\n />);\n const panelHeader = label === '' ? (<span />) : (\n <Panel.Heading className={cl}>\n <Panel.Title toggle>{label}</Panel.Title>\n </Panel.Heading>\n );\n const noneKlass = bs === 'none' ? 'generic_panel_none' : '';\n if (bs === 'none') bs = 'default';\n return (\n <PanelGroup accordion id=\"accordion_generic_layer\" defaultActiveKey=\"1\" style={{ marginBottom: '0px' }}>\n <Panel bsStyle={bs} className={`panel_generic_properties ${noneKlass}`} eventKey=\"1\">\n {activeWF ? panelDnD : panelHeader}\n <Panel.Collapse>\n <Panel.Body className=\"panel_generic_properties_body\">{this.views()}</Panel.Body>\n </Panel.Collapse>\n </Panel>\n </PanelGroup>\n );\n }\n}\n\nGenPropertiesLayer.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), // element id or new id\n layer: PropTypes.object,\n selectOptions: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n onSubChange: PropTypes.func.isRequired,\n onClick: PropTypes.func,\n layers: PropTypes.object.isRequired,\n isPreview: PropTypes.bool,\n activeWF: PropTypes.bool\n};\n\nGenPropertiesLayer.defaultProps = {\n id: 0,\n selectOptions: {},\n onClick: () => {},\n isPreview: false,\n activeWF: false\n};\n","import React from 'react';\nimport { sortBy } from 'lodash';\nimport GenPropertiesLayer from './GenPropertiesLayer';\n\nconst LayersLayout = (\n layers, options, funcChange,\n funcSubChange = () => {}, funcClick = () => {}, layout = [], id = 0, isPreview = false,\n activeWF = false\n) => {\n const sortedLayers = sortBy(layers, ['position', 'wf_position']) || [];\n sortedLayers.forEach((layer, idx) => {\n const uk = `${layer.key}_${idx}`;\n if (typeof layer.cond_fields === 'undefined' || layer.cond_fields == null || layer.cond_fields.length === 0) {\n const ig = (\n <GenPropertiesLayer\n id={id}\n key={uk}\n layer={layer}\n onChange={funcChange}\n onSubChange={funcSubChange}\n selectOptions={options}\n onClick={funcClick}\n layers={layers}\n isPreview={isPreview}\n activeWF={activeWF}\n />\n );\n layout.push(ig);\n } else if (layer.cond_fields && layer.cond_fields.length > 0) {\n let showLayer = false;\n\n for (let i = 0; i < layer.cond_fields.length; i += 1) {\n const cond = layer.cond_fields[i] || {};\n const fd = ((layers[cond.layer] || {}).fields || [])\n .find(f => f.field === cond.field) || {};\n if (fd.type === 'checkbox' && ((['false', 'no', 'f', '0'].includes((cond.value || '').trim().toLowerCase()) && (typeof (fd && fd.value) === 'undefined' || fd.value === false)) ||\n (['true', 'yes', 't', '1'].includes((cond.value || '').trim().toLowerCase()) && (typeof fd.value !== 'undefined' && fd.value === true)))) {\n showLayer = true;\n break;\n } else if (['text', 'select'].includes(fd.type) && (typeof (fd && fd.value) !== 'undefined' && (fd.value || '').trim() === (cond.value || '').trim())) {\n showLayer = true;\n break;\n }\n }\n\n if (showLayer === true) {\n const igs = (\n <GenPropertiesLayer\n id={id}\n key={uk}\n layer={layer}\n onChange={funcChange}\n onSubChange={funcSubChange}\n selectOptions={options}\n onClick={funcClick}\n layers={layers}\n isPreview={isPreview}\n activeWF={activeWF}\n />\n );\n layout.push(igs);\n }\n }\n });\n return layout;\n};\n\nexport default LayersLayout;\n","/* eslint-disable react/forbid-prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { findIndex, cloneDeep } from 'lodash';\nimport { Panel, Button, ButtonToolbar, OverlayTrigger, Tooltip } from 'react-bootstrap';\n// import { DragDropContext } from 'react-dnd';\n// import HTML5Backend from 'react-dnd-html5-backend';\nimport LayersLayout from '../layers/LayersLayout';\nimport { genUnits, toBool, toNum, unitConversion, absOlsTermLabel } from '../tools/utils';\n\nclass GenericDSDetails extends Component {\n constructor(props) {\n super(props);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleUnitClick = this.handleUnitClick.bind(this);\n this.handleReload = this.handleReload.bind(this);\n }\n\n handleInputChange(event, field, layer, type = 'text') {\n const { genericDS } = this.props;\n const { properties } = genericDS;\n let value = '';\n switch (type) {\n case 'checkbox':\n value = event.target.checked;\n break;\n case 'select':\n value = event ? event.value : null;\n break;\n case 'formula-field':\n if (event.target) {\n ({ value } = event.target);\n } else {\n value = event;\n }\n break;\n case 'integer':\n ({ value } = event.target);\n value = Math.trunc(value);\n break;\n default:\n ({ value } = event.target);\n }\n properties.layers[`${layer}`].fields.find(e => e.field === field).value = value;\n 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 === '')) {\n const opt = properties.layers[`${layer}`].fields.find(e => e.field === field).option_layers;\n properties.layers[`${layer}`].fields.find(e => e.field === field).value_system = genUnits(opt)[0].key;\n }\n genericDS.properties = properties;\n genericDS.changed = true;\n // this.props.onChange('dataset', { target: { value: genericDS } });\n this.props.onChange(genericDS);\n }\n\n handleUnitClick(layer, obj) {\n const { genericDS } = this.props;\n const { properties } = genericDS;\n const newVal = unitConversion(obj.option_layers, obj.value_system, obj.value);\n properties.layers[`${layer}`].fields.find(e => e.field === obj.field).value_system = obj.value_system;\n properties.layers[`${layer}`].fields.find(e => e.field === obj.field).value = newVal;\n genericDS.properties = properties;\n genericDS.changed = true;\n // this.props.onChange('dataset', { target: { value: genericDS } });\n this.props.onChange(genericDS);\n }\n\n handleReload() {\n const { klass, genericDS } = this.props;\n if (klass.properties_release) {\n const newProps = cloneDeep(klass.properties_release);\n newProps.klass_uuid = klass.uuid;\n Object.keys(newProps.layers).forEach((key) => {\n const newLayer = newProps.layers[key] || {};\n const curFields =\n (genericDS.properties.layers[key] && genericDS.properties.layers[key].fields) || [];\n (newLayer.fields || []).forEach((f, idx) => {\n const curIdx = findIndex(curFields, o => o.field === f.field);\n if (curIdx >= 0) {\n const curVal = genericDS.properties.layers[key].fields[curIdx].value;\n const curType = typeof curVal;\n if (['select', 'text', 'textarea', 'formula-field'].includes(newProps.layers[key].fields[idx].type)) {\n newProps.layers[key].fields[idx].value = curType !== 'undefined' ? curVal.toString() : '';\n }\n if (newProps.layers[key].fields[idx].type === 'integer') {\n newProps.layers[key].fields[idx].value =\n // eslint-disable-next-line no-restricted-globals\n (curType === 'undefined' || curType === 'boolean' || isNaN(curVal)) ? 0 : parseInt(curVal, 10);\n }\n if (newProps.layers[key].fields[idx].type === 'checkbox') {\n newProps.layers[key].fields[idx].value = curType !== 'undefined' ? toBool(curVal) : false;\n }\n if (newProps.layers[key].fields[idx].type === 'system-defined') {\n const units = genUnits(newProps.layers[key].fields[idx].option_layers);\n const vs = units.find(u =>\n u.key === genericDS.properties.layers[key].fields[curIdx].value_system);\n newProps.layers[key].fields[idx].value_system = (vs && vs.key) || units[0].key;\n newProps.layers[key].fields[idx].value = toNum(curVal);\n }\n }\n });\n });\n genericDS.properties = newProps;\n genericDS.dataset_klass_id = klass.id;\n genericDS.klass_ols = klass.ols_term_id;\n genericDS.klass_label = klass.label;\n genericDS.changed = true;\n // this.props.onChange('dataset', { target: { value: genericDS } });\n this.props.onChange(genericDS);\n } else {\n // this.props.onChange('dataset', { target: { value: undefined } });\n this.props.onChange(undefined);\n }\n }\n\n elementalPropertiesItem(genericDS, klass) {\n const layersLayout = LayersLayout(\n genericDS.properties.layers,\n (klass.properties_release && klass.properties_release.select_options) || {},\n this.handleInputChange,\n () => {},\n this.handleUnitClick\n );\n return (<div style={{ margin: '5px' }}>{layersLayout}</div>);\n }\n\n render() {\n const {\n // eslint-disable-next-line no-unused-vars\n uiCtrl, genericDS, klass, kind\n } = this.props;\n if (uiCtrl && Object.keys(genericDS).length !== 0 && kind && kind !== '') {\n return (\n <Panel className=\"panel-detail\">\n <Panel.Body style={{ position: 'relative', minHeight: 260, overflowY: 'unset' }}>\n {this.elementalPropertiesItem(genericDS, klass)}\n <span className=\"g-ds-note label\">\n <span className=\"g-ds-title\">Note</span><br />\n Selected analysis type: {absOlsTermLabel(kind)}<br />\n Content is designed for: {genericDS.klass_label}\n </span>\n <ButtonToolbar className=\"pull-right\">\n <OverlayTrigger placement=\"top\" overlay={<Tooltip id=\"_tooltip_reload\">click to reload the content template</Tooltip>}>\n <Button bsSize=\"xsmall\" bsStyle=\"danger\" onClick={() => this.handleReload()}>Reload</Button>\n </OverlayTrigger>\n </ButtonToolbar>\n </Panel.Body>\n </Panel>\n );\n }\n return null;\n }\n}\n\nGenericDSDetails.propTypes = {\n uiCtrl: PropTypes.bool.isRequired, // MatrixCheck(currentUser.matrix, 'genericDataset')\n kind: PropTypes.string, // selected analysis type\n genericDS: PropTypes.object,\n klass: PropTypes.object, // dataset_klass\n onChange: PropTypes.func.isRequired // change callback\n};\nGenericDSDetails.defaultProps = { kind: '', genericDS: {}, klass: {} };\n\n// export default DragDropContext(HTML5Backend)(GenericDSDetails);\nexport default GenericDSDetails;\n","/* eslint-disable no-param-reassign */\n/* eslint-disable import/prefer-default-export */\nimport { cloneDeep, sortBy } from 'lodash';\nimport { v4 as uuid } from 'uuid';\n\nconst getWFNode = (_flow, nodeId) => _flow.elements.filter(e => e.id === nodeId)[0];\n\n// full-flow, node id\nconst getFlowLayer = (templateFlow, nodeId, sourceLayer, sIdx) => {\n const flow = cloneDeep(templateFlow);\n const nd = flow.elements.filter(e => e.id === nodeId); // fetch node\n if (nd.length < 1) return null;\n const { layer } = nd[0].data;\n const ls = flow.elements.filter(e => e.animated); // lines\n const ns = flow.elements.filter(e => e.type === 'default' && e.data); // nodes - Start - End\n const ndNs = ls.filter(e => e.source === nodeId).map(e => e.target); // next nodes' id\n const wfOpts = ns.filter(n => ndNs.includes(n.id)).map(e => ({ key: e.id, label: `${e.data.layer.label}(${e.data.layer.key})` })); // next nodes\n if (wfOpts.length > 0) {\n const position = (layer.fields || []).length + 1;\n layer.fields.push({\n type: 'wf-next', default: '', field: '_wf_next', label: 'Next', required: false, sub_fields: [], text_sub_fields: [], position, wf_options: wfOpts\n });\n }\n layer.wf_info = { node_id: nodeId, source_layer: sourceLayer };\n layer.wf_position = sIdx + 1;\n return layer;\n};\n\nconst orgLayerObject = (_layers = []) => {\n const layers = _layers;\n return layers.reduce((alles, name) => {\n const all = alles;\n const ok = Object.keys(all);\n if (ok.includes(name.key)) {\n const cnt = ok.filter(e => e === name.key || e.startsWith(`${name.key}.`)).length;\n const nName = `${name.key}.${cnt}`;\n name.key = nName;\n all[nName] = name;\n } else {\n all[name.key] = name;\n }\n return all;\n }, {});\n};\n\nconst reformCondFields = (_layer, _oKey) => {\n const layer = _layer;\n layer.fields.map((_f) => {\n const f = _f;\n let conds = f.cond_fields;\n // no cond_fields\n if (!conds || conds.length < 1 || conds.filter(o => !o.field || o.field === '').length === conds.length) return f;\n conds = conds.filter(o => o.layer === _oKey);\n // no same layer, remove cond_fields\n if (conds.length < 1) {\n delete f.cond_fields;\n return f;\n }\n // rename layer\n conds = conds.map((o) => {\n const n = o;\n n.layer = layer.key;\n return n;\n });\n f.cond_fields = conds;\n return f;\n });\n return layer.fields;\n};\n\nconst addToObject = (obj, key, addAfter) => {\n const temp = {};\n const ok = Object.keys(obj);\n Object.keys(obj).forEach((e) => {\n if (Object.prototype.hasOwnProperty.call(obj, e)) {\n temp[e] = obj[e];\n if (e === key) {\n const srcPosition = temp[e].position;\n const cnt = ok.filter(o => o === addAfter.key || o.startsWith(`${addAfter.key}.`)).length;\n if (cnt === 0) {\n temp[addAfter.key] = addAfter;\n temp[addAfter.key].position = srcPosition;\n } else {\n const oKey = addAfter.key;\n temp[`${addAfter.key}.${cnt}`] = addAfter;\n temp[`${addAfter.key}.${cnt}`].position = srcPosition;\n temp[`${addAfter.key}.${cnt}`].key = `${addAfter.key}.${cnt}`;\n temp[addAfter.key].fields = reformCondFields(addAfter, oKey);\n }\n }\n }\n });\n if (Object.keys(obj).length === 0) temp[addAfter.key] = addAfter;\n return temp;\n};\n\nconst traverseToRemove = (layers, rmKey) => {\n let rms = [];\n Object.keys(layers).forEach((e) => {\n if (Object.prototype.hasOwnProperty.call(layers, e)) {\n if (layers[e].key === rmKey) rms = rms.concat(rmKey);\n else if (layers[e].wf_info && (layers[e].wf_info.source_layer === rmKey)) {\n rms = rms.concat(traverseToRemove(layers, layers[e].key));\n }\n }\n });\n return rms;\n};\n\nconst removeFromObject = (_propertiesLayers = {}, srcLayer = '', rmNode = {}) => {\n const layers = _propertiesLayers;\n const rmLayer = rmNode.data && rmNode.data.layer ? rmNode.data.layer.key : null;\n if (!rmLayer) return [];\n let rms = [];\n Object.keys(layers).forEach((e) => {\n if (Object.prototype.hasOwnProperty.call(layers, e)) {\n const wf = layers[e].wf_info;\n if (wf && (wf.source_layer === srcLayer) && (wf.node_id === rmNode.id)) {\n rms = rms.concat(traverseToRemove(layers, layers[e].key));\n }\n }\n });\n rms.forEach(e => delete layers[e]);\n return layers;\n};\n\nconst buildInitWF = (template) => {\n const orig = cloneDeep(template);\n const { layers, flow } = orig;\n const sortedLayers = sortBy(layers, l => l.position);\n if (flow && flow.elements.filter(e => !['input', 'output'].includes(e.type).length > 0)) {\n // id = 1 Start, id = 2 End\n const nls = flow.elements; // nodes + lines\n const ls = nls.filter(e => e.animated); // lines\n const ns = nls.filter(e => e.type === 'default' && e.data); // nodes - Start - End\n const nNs = ls.filter(e => e.source === '1').map(e => e.target); // get target ids from Start\n const nextNodes = ns.filter(n => nNs.includes(n.id)); // target nodes\n const result = [];\n sortedLayers.forEach((sortedLayer) => {\n const fLayer = sortedLayer;\n if (fLayer.wf) {\n const position = (fLayer.fields || []).length + 1;\n const passen = nextNodes.filter(n => n.data.layer.key === fLayer.key);\n passen.forEach((pas) => {\n const nextOptions =\n ls.filter(e => e.source === pas.id && e.source !== e.target).map(e => e.target);\n const wfOpts = ns.filter(n => nextOptions.includes(n.id)).map(e => ({ key: e.id, label: `${e.data.layer.label}(${e.data.layer.key})` })); // next nodes\n fLayer.fields.push({\n type: 'wf-next', default: '', field: '_wf_next', label: 'Next', required: false, sub_fields: [], text_sub_fields: [], position, wf_options: wfOpts\n });\n fLayer.wf_info = { node_id: pas.id };\n fLayer.wf_position = 1;\n fLayer.wf_uuid = uuid();\n result.push(fLayer);\n });\n } else {\n result.push(fLayer);\n }\n });\n const ll = orgLayerObject(result);\n orig.layers = ll;\n } else {\n orig.layers = layers;\n }\n return orig;\n};\n\nexport {\n getWFNode, getFlowLayer, orgLayerObject,\n addToObject, removeFromObject, reformCondFields, buildInitWF\n};\n","import { cloneDeep } from 'lodash';\nimport { unitConversion } from './utils';\nimport GenericSubField from '../models/GenericSubField';\n\nconst collateValues = (currentFields, previousFields, previousValues) => {\n const result = [];\n let newSub = new GenericSubField();\n currentFields.map(e => Object.assign(newSub, { [e.id]: '' }));\n const currentValuKeys = Object.keys(newSub);\n const previousValueKeys = Object.keys(previousValues[0]);\n const notInCurrent = previousValueKeys.filter(e => !currentValuKeys.includes(e));\n const currObj = {};\n currentFields.map((c) => {\n if (c.type === 'text') return Object.assign(currObj, { [c.id]: '' });\n return Object.assign(currObj, { [c.id]: { value: '', value_system: c.value_system } });\n });\n previousValues.forEach((e) => {\n newSub = new GenericSubField();\n Object.assign(newSub, currObj, e);\n notInCurrent.forEach(c => delete newSub[c]);\n previousValueKeys.forEach((preKey) => {\n if (newSub[preKey] === undefined || preKey === 'id') return;\n const curr = currentFields.find(f => f.id === preKey);\n const prev = previousFields.find(f => f.id === preKey);\n if (curr.type === 'drag_molecule') {\n if (['text', 'system-defined', 'drag_sample'].includes(prev.type)) {\n newSub[preKey] = { value: undefined };\n }\n }\n if (curr.type === 'text') {\n if (prev.type === 'system-defined') {\n newSub[preKey] = newSub[preKey].value;\n }\n if (['drag_molecule', 'drag_sample'].includes(prev.type)) {\n newSub[preKey] = '';\n }\n }\n if (curr.type === 'system-defined') {\n if (prev.type === 'system-defined' && (curr.option_layers !== prev.option_layers)) {\n newSub[preKey].value_system = curr.value_system;\n }\n if (['text', 'drag_molecule', 'drag_sample'].includes(prev.type)) {\n newSub[preKey] = { value: '', value_system: curr.value_system };\n }\n newSub[preKey].value =\n unitConversion(curr.option_layer, newSub[preKey].value_system, newSub[preKey].value);\n }\n });\n result.push(newSub);\n });\n return result;\n};\n\nconst organizeSubValues = (cur, pre) => {\n const currentFields = cloneDeep(cur.sub_fields || []);\n const previousFields = cloneDeep(pre.sub_fields || []);\n const previousValues = cloneDeep(pre.sub_values || []);\n if (currentFields.length < 1 ||\n previousFields.length < 1 || previousValues.length < 1) {\n return [];\n }\n return collateValues(currentFields, previousFields, previousValues);\n};\n\nexport default organizeSubValues;\n","/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Tooltip, Modal, OverlayTrigger } from 'react-bootstrap';\nimport { sortBy } from 'lodash';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nconst block = (layer, fnAdd) => (\n <div className=\"generic_layer_column\">\n <div>\n <div><b>{layer.label}</b><br />({layer.key})</div>\n <OverlayTrigger delayShow={1000} placement=\"top\" overlay={<Tooltip id=\"_tooltip_layers\">click to add layer</Tooltip>}>\n <Button bsStyle=\"primary\" onClick={event => fnAdd(event, layer)}><FontAwesomeIcon icon=\"fas fa-plus\" /></Button>\n </OverlayTrigger>\n </div>\n </div>\n);\n\nconst drawLayout = (layers, fnAdd) => {\n const layout = [];\n layers.forEach((layer) => { layout.push(<div key={layer.key}>{block(layer, fnAdd)}</div>); });\n return layout;\n};\n\nconst LayerModal = (props) => {\n const {\n show, layers, fnClose, fnAdd\n } = props;\n if (!show) return null;\n const sortedLayers = sortBy(layers, ['position', 'wf_position']) || [];\n if (sortedLayers.length < 1) return null;\n const layout = drawLayout(sortedLayers, fnAdd);\n return (\n <Modal show={show} onHide={fnClose}>\n <Modal.Header closeButton><Modal.Title>Choose Layer</Modal.Title></Modal.Header>\n <Modal.Body>\n <div style={{ maxHeight: '80vh', overflow: 'auto' }}>\n <div className=\"generic_grid\">{layout}</div>\n </div>\n </Modal.Body>\n </Modal>\n );\n};\n\nLayerModal.propTypes = {\n show: PropTypes.bool.isRequired,\n layers: PropTypes.object.isRequired,\n fnClose: PropTypes.func.isRequired,\n fnAdd: PropTypes.func.isRequired\n};\n\nexport default LayerModal;\n","/* eslint-disable no-restricted-globals */\n/* eslint-disable camelcase */\n/* eslint-disable react/forbid-prop-types */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { findIndex, cloneDeep, sortBy } from 'lodash';\nimport { Panel } from 'react-bootstrap';\n// import { DragDropContext } from 'react-dnd';\n// import HTML5Backend from 'react-dnd-html5-backend';\nimport LayersLayout from '../layers/LayersLayout';\nimport { genUnits, toBool, toNum, swapAryEls, unitConversion, uploadFiles } from '../tools/utils';\nimport { getWFNode, orgLayerObject, getFlowLayer, addToObject, removeFromObject, reformCondFields } from '../tools/orten';\nimport organizeSubValues from '../tools/collate';\nimport LayerModal from '../layers/LayerModal';\n\nclass SegmentDetails extends Component {\n constructor(props) {\n super(props);\n this.state = { showViewLayer: false, selectedLayerKey: '' };\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleSubChange = this.handleSubChange.bind(this);\n this.handleUnitClick = this.handleUnitClick.bind(this);\n this.handleReload = this.handleReload.bind(this);\n this.handleAddLayer = this.handleAddLayer.bind(this);\n this.setViewLayer = this.setViewLayer.bind(this);\n this.dropLayer = this.dropLayer.bind(this);\n this.removeLayer = this.removeLayer.bind(this);\n this.handleWFNext = this.handleWFNext.bind(this);\n }\n\n setViewLayer() {\n this.setState({ showViewLayer: !this.state.showViewLayer });\n }\n\n handleSubChange(layer, obj, valueOnly = false) {\n const { segment } = this.props;\n const { properties } = segment;\n if (!valueOnly) {\n const subFields = properties.layers[`${layer}`].fields\n .find(m => m.field === obj.f.field).sub_fields || [];\n const idxSub = subFields.findIndex(m => m.id === obj.sub.id);\n subFields.splice(idxSub, 1, obj.sub);\n properties.layers[`${layer}`].fields\n .find(e => e.field === obj.f.field).sub_fields = subFields;\n }\n properties.layers[`${layer}`].fields\n .find(e => e.field === obj.f.field).sub_values = obj.f.sub_values || [];\n segment.properties = properties;\n segment.changed = true;\n this.props.onChange(segment);\n }\n\n handleInputChange(event, field, layer, type = 'text') {\n const { segment } = this.props;\n const { properties } = segment;\n let value = '';\n let propsChange = true;\n switch (type) {\n case 'drop-layer':\n this.dropLayer(field, layer);\n propsChange = false;\n break;\n case 'layer-remove':\n event.stopPropagation();\n this.removeLayer(field, layer);\n propsChange = false;\n break;\n case 'layer-modal':\n event.stopPropagation();\n propsChange = false;\n this.setState({ selectedLayerKey: layer.key, showViewLayer: true });\n break;\n case 'wf-next':\n propsChange = false;\n this.handleWFNext(event, layer);\n break;\n case 'checkbox':\n value = event.target.checked;\n break;\n case 'formula-field':\n if (event.target) {\n ({ value } = event.target);\n } else {\n value = event;\n }\n break;\n case 'upload': {\n const vals = uploadFiles(properties, event, field, layer);\n value = vals[0];\n if (vals[1].length > 0) segment.files = (segment.files || []).concat(vals[1]);\n if (vals.length > 2) {\n const fileIdx = findIndex((segment.files || []), o => o.uid === event.uid);\n if (fileIdx >= 0 && segment.files && segment.files.length > 0) {\n segment.files.splice(fileIdx, 1);\n }\n }\n break;\n }\n case 'select':\n value = event ? event.value : null;\n break;\n case 'drag_molecule':\n value = event;\n break;\n case 'integer':\n ({ value } = event.target);\n value = Math.trunc(value);\n break;\n default:\n ({ value } = event.target);\n }\n if (propsChange) {\n properties.layers[`${layer}`].fields.find(e => e.field === field).value = value;\n 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 === '')) {\n const opt = properties.layers[`${layer}`].fields\n .find(e => e.field === field).option_layers;\n properties.layers[`${layer}`].fields\n .find(e => e.field === field).value_system = genUnits(opt)[0].key;\n }\n segment.properties = properties;\n segment.changed = true;\n this.props.onChange(segment);\n }\n }\n\n handleUnitClick(layer, obj) {\n const { segment } = this.props;\n const { properties } = segment;\n const newVal = unitConversion(obj.option_layers, obj.value_system, obj.value);\n properties.layers[`${layer}`].fields\n .find(e => e.field === obj.field).value_system = obj.value_system;\n properties.layers[`${layer}`].fields.find(e => e.field === obj.field).value = newVal;\n segment.properties = properties;\n segment.changed = true;\n this.props.onChange(segment);\n }\n\n handleReload() {\n const { klass, segment } = this.props;\n const newProps = cloneDeep(klass.properties_release);\n newProps.klass_uuid = klass.uuid;\n Object.keys(newProps.layers).forEach((key) => {\n const newLayer = newProps.layers[key] || {};\n const curFields = (segment.properties.layers[key] && segment.properties.layers[key].fields)\n || [];\n (newLayer.fields || []).forEach((f, idx) => {\n const curIdx = findIndex(curFields, o => o.field === f.field);\n if (curIdx >= 0) {\n const curVal = segment.properties.layers[key].fields[curIdx].value;\n const curType = typeof curVal;\n if (['select', 'text', 'textarea', 'formula-field'].includes(newProps.layers[key].fields[idx].type)) {\n newProps.layers[key].fields[idx].value = curType !== 'undefined' ? curVal.toString() : '';\n }\n if (newProps.layers[key].fields[idx].type === 'integer') {\n newProps.layers[key].fields[idx].value = (curType === 'undefined' || curType === 'boolean' || isNaN(curVal)) ? 0 : parseInt(curVal, 10);\n }\n if (newProps.layers[key].fields[idx].type === 'checkbox') {\n newProps.layers[key].fields[idx].value = curType !== 'undefined' ? toBool(curVal) : false;\n }\n if (newProps.layers[key].fields[idx].type === 'system-defined') {\n const units = genUnits(newProps.layers[key].fields[idx].option_layers);\n const vs = units.find(u =>\n u.key === segment.properties.layers[key].fields[curIdx].value_system);\n newProps.layers[key].fields[idx].value_system = (vs && vs.key) || units[0].key;\n newProps.layers[key].fields[idx].value = toNum(curVal);\n }\n if (newProps.layers[key].fields[idx].type === 'input-group') {\n if (segment.properties.layers[key].fields[curIdx].type !==\n newProps.layers[key].fields[idx].type) {\n newProps.layers[key].fields[idx].value = undefined;\n } else {\n const nSubs = newProps.layers[key].fields[idx].sub_fields || [];\n const cSubs = segment.properties.layers[key].fields[curIdx].sub_fields || [];\n const exSubs = [];\n if (nSubs.length < 1) {\n newProps.layers[key].fields[idx].value = undefined;\n } else {\n nSubs.forEach((nSub) => {\n const hitSub = cSubs.find(c => c.id === nSub.id) || {};\n if (nSub.type === 'label') { exSubs.push(nSub); }\n if (nSub.type === 'text') {\n if (hitSub.type === 'label') {\n exSubs.push(nSub);\n } else { exSubs.push({ ...nSub, value: (hitSub.value || '').toString() }); }\n }\n\n if (['number', 'system-defined'].includes(nSub.type)) {\n const nvl = (typeof hitSub.value === 'undefined' || hitSub.value == null || hitSub.value.length === 0) ? '' : toNum(hitSub.value);\n if (nSub.option_layers === hitSub.option_layers) {\n exSubs.push({ ...nSub, value: nvl, value_system: hitSub.value_system });\n } else {\n exSubs.push({ ...nSub, value: nvl });\n }\n }\n });\n }\n newProps.layers[key].fields[idx].sub_fields = exSubs;\n }\n }\n if (newProps.layers[key].fields[idx].type === 'upload') {\n if (segment.properties.layers[key].fields[curIdx].type ===\n newProps.layers[key].fields[idx].type) {\n newProps.layers[key].fields[idx].value =\n segment.properties.layers[key].fields[curIdx].value;\n } else {\n newProps.layers[key].fields[idx].value = {};\n }\n }\n if (newProps.layers[key].fields[idx].type === 'table') {\n if (segment.properties.layers[key].fields[curIdx].type !==\n newProps.layers[key].fields[idx].type) {\n newProps.layers[key].fields[idx].sub_values = [];\n } else {\n newProps.layers[key].fields[idx].sub_values =\n organizeSubValues(\n newProps.layers[key].fields[idx],\n segment.properties.layers[key].fields[curIdx]\n );\n }\n }\n }\n });\n });\n segment.properties = newProps;\n segment.changed = true;\n this.props.onChange(segment);\n }\n\n handleAddLayer(event, _layer) {\n const { segment } = this.props;\n const { selectedLayerKey } = this.state;\n const layer = _layer;\n const { layers } = segment.properties;\n const sortedLayers = sortBy(layers, ['position', 'wf_position']);\n const idx = sortedLayers.findIndex(e => e.key === selectedLayerKey);\n // re-set added layer attributes\n const selectedLayer = sortedLayers[idx];\n layer.position = selectedLayer.position;\n layer.wf_position = selectedLayer.wf_position + 1;\n layer.wf = false;\n layer.wf_uuid = null;\n // layer is standard layer (from released)\n const cnt = sortedLayers\n .filter(e => e.key === layer.key || e.key.startsWith(`${layer.key}.`)).length;\n if (cnt > 0) {\n const origKey = layer.key;\n layer.key = `${layer.key}.${cnt}`;\n layer.fields = reformCondFields(layer, origKey);\n }\n // insert new layer\n sortedLayers.splice(idx + 1, 0, layer);\n // re-count wf_position\n sortedLayers.filter(e => e.position === selectedLayer.position).map((e, ix) => {\n const el = e;\n el.wf_position = ix;\n return el;\n });\n const ll = orgLayerObject(sortedLayers);\n segment.properties.layers = ll;\n this.setState(\n { selectedLayerKey: layer.key, showViewLayer: false },\n this.props.onChange(segment)\n );\n }\n\n dropLayer(_source, _target) {\n const { segment } = this.props;\n const { layers } = segment.properties;\n let sortedLayers = sortBy(layers, ['position', 'wf_position']);\n // swap or move\n const srcIdx = sortedLayers.findIndex(e => e.key === _source);\n const tmpSrc = sortedLayers[srcIdx];\n let tarIdx = sortedLayers.findIndex(e => e.key === _target);\n if (Math.abs(srcIdx - tarIdx) === 1) {\n sortedLayers = swapAryEls(sortedLayers, srcIdx, tarIdx);\n } else {\n // delete src\n sortedLayers.splice(srcIdx, 1);\n // keep tar\n tarIdx = sortedLayers.findIndex(e => e.key === _target);\n const tmpTar = sortedLayers[tarIdx];\n // prepare new layer\n tmpSrc.position = tmpTar.position;\n tmpSrc.wf_position = (tmpTar.wf_position || 0) + 1;\n // insert new layer\n sortedLayers.splice(tarIdx + 1, 0, tmpSrc);\n }\n // re-count wf_position\n sortedLayers.filter(e => e.position === tmpSrc.position).map((e, idx) => {\n const el = e;\n el.wf_position = idx;\n return el;\n });\n const ll = orgLayerObject(sortedLayers);\n segment.properties.layers = ll;\n segment.changed = true;\n this.props.onChange(segment);\n }\n\n removeLayer(elId, layer) {\n const { segment } = this.props;\n const { layers } = segment.properties;\n const sortedLayers = sortBy(layers, ['position', 'wf_position']);\n const selectedIdx = sortedLayers.findIndex(e => e.key === layer.key);\n const selected = sortedLayers[selectedIdx];\n sortedLayers.splice(selectedIdx, 1);\n sortedLayers.filter(e => e.position === selected.position).map((e, idx) => {\n const el = e;\n el.wf_position = idx;\n return el;\n });\n segment.properties.layers = orgLayerObject(sortedLayers);\n segment.changed = true;\n this.props.onChange(segment);\n }\n\n handleWFNext(event, layer) {\n const value = event ? event.value : null;\n if (value) {\n const { segment } = this.props;\n const { properties, properties_release } = segment;\n // next step value if exists\n let rmNeeded = false;\n const preValue = properties.layers[`${layer}`].fields.find(e => e.field === '_wf_next').value;\n if (value !== preValue) {\n if (preValue && preValue !== '' && preValue !== value) {\n rmNeeded = true;\n }\n const { flow } = properties_release;\n const preLayer = properties.layers[`${layer}`];\n // value is the next node's id\n const nxLayer = getFlowLayer(flow, value, layer, preLayer.wf_position);\n if (nxLayer) {\n properties.layers = addToObject(properties.layers, layer, nxLayer);\n }\n if (rmNeeded) {\n properties.layers = removeFromObject(properties.layers, layer, getWFNode(flow, preValue));\n }\n // update next step value\n properties.layers[`${layer}`].fields.find(e => e.field === '_wf_next').value = value;\n segment.properties = properties;\n segment.changed = true;\n // this.props.onChange(segment, () => renderFlowModal(segment, false));\n this.props.onChange(segment); // cb move to e.g. SampleDetails.js\n }\n }\n }\n\n elementalPropertiesItem(segment) {\n const layersLayout = LayersLayout(\n segment.properties.layers,\n segment.properties_release.select_options || {},\n this.handleInputChange,\n this.handleSubChange,\n this.handleUnitClick,\n [], 0, false, true\n );\n return (<div style={{ margin: '5px' }}>{layersLayout}</div>);\n }\n\n render() {\n const { uiCtrl, segment } = this.props;\n if (!uiCtrl || Object.keys(segment).length === 0) return null;\n const { showViewLayer } = this.state;\n const addLayerModal = (\n <LayerModal\n show={showViewLayer}\n layers={cloneDeep(segment.properties_release.layers) || {}}\n fnClose={this.setViewLayer}\n fnAdd={this.handleAddLayer}\n />\n );\n return (\n <div>\n <Panel>\n <Panel.Body style={{ position: 'relative', minHeight: 260, overflowY: 'unset' }}>\n {this.elementalPropertiesItem(segment)}\n </Panel.Body>\n </Panel>\n {addLayerModal}\n </div>\n );\n }\n}\n\nSegmentDetails.propTypes = {\n uiCtrl: PropTypes.bool.isRequired,\n segment: PropTypes.object,\n klass: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n};\n\nSegmentDetails.defaultProps = { segment: {}, klass: {} };\n\n// export default DragDropContext(HTML5Backend)(SegmentDetails);\nexport default SegmentDetails;\n","/* eslint-disable react/prop-types */\nimport React, { memo } from 'react';\nimport { Handle, Position } from 'react-flow-renderer';\n\nconst targetHandleStyle = { background: '#555' };\nconst sourceHandleStyleA = { ...targetHandleStyle, top: 10 };\nconst onConnect = params => console.log('handle onConnect', params);\n\nconst LayerNode = ({ data }) =>\n (\n <>\n <Handle type=\"target\" position={Position.Top} style={targetHandleStyle} onConnect={onConnect} />\n <div>\n <div style={{ borderWidth: '0px 0px 1px 0px', borderColor: 'black', borderStyle: 'solid' }}><b>{data.layer.label}</b></div>\n <div>({data.layer.key})</div>\n </div>\n <Handle type=\"source\" position={Position.Bottom} id=\"a\" style={sourceHandleStyleA} />\n </>\n );\n\nexport default memo(LayerNode);\n","/* eslint-disable react/prop-types */\n/* eslint-disable camelcase */\n/* eslint-disable react/forbid-prop-types */\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactFlow, { ReactFlowProvider, Controls, ConnectionMode } from 'react-flow-renderer';\nimport LayerNode from './LayerNode';\nimport { conFlowEls, flowDefault } from '../tools/utils';\n\nconst FlowView = (props) => {\n const { properties, properties_release } = props;\n const [reactFlowInstance, setReactFlowInstance] = useState(null);\n const [elements, setElements] = useState([]);\n const onLoad = (_reactFlowInstance) => {\n setReactFlowInstance(_reactFlowInstance);\n };\n\n useEffect(() => {\n let flowEls = conFlowEls(props);\n flowEls = flowEls.length > 0 ? flowEls : flowDefault;\n // flowEls = decorateNode(flowEls, properties.layers || {});\n setElements(flowEls);\n }, [properties, properties_release]);\n\n useEffect(() => {\n let flowEls = conFlowEls(props);\n flowEls = flowEls.length > 0 ? flowEls : flowDefault;\n // flowEls = decorateNode(flowEls, properties.layers || {});\n setElements(flowEls);\n }, []);\n\n useEffect(() => {\n if (reactFlowInstance && elements.length) {\n reactFlowInstance.fitView();\n }\n }, [reactFlowInstance, elements.length]);\n\n return (\n <ReactFlowProvider>\n <ReactFlow\n elements={elements}\n onLoad={onLoad}\n connectionMode={ConnectionMode.Loose}\n nodeTypes={{ selectorNode: LayerNode }}\n deleteKeyCode={46}\n >\n <Controls />\n </ReactFlow>\n </ReactFlowProvider>\n );\n};\n\nFlowView.propTypes = {\n properties: PropTypes.object.isRequired,\n};\n\nexport default FlowView;\n","/* eslint-disable camelcase */\n/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Modal, Panel } from 'react-bootstrap';\nimport Draggable from 'react-draggable';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport FlowView from './FlowView';\n\nconst FlowViewerModal = (props) => {\n const { show, data, fnHide } = props;\n if (!show) return null;\n const { properties_release, properties, shortLabel } = data;\n if (Object.keys(properties_release).length < 1) return null;\n if ((Object.keys(properties_release.flow || {}).length < 1)\n || ((properties_release.flow.elements || []).length < 3)) {\n return (\n <Modal show={show} bsSize=\"small\" onHide={fnHide}>\n <Modal.Header closeButton>\n <Modal.Title>{`${shortLabel} workflow`}</Modal.Title>\n </Modal.Header>\n <Modal.Body>No defined workflow</Modal.Body>\n </Modal>\n );\n }\n\n return (\n <Draggable handle=\".layer_header\" bounds=\"body\">\n <div className=\"flow_view_draggable\">\n <Panel bsStyle=\"primary\">\n <Panel.Heading className=\"layer_header\">\n {`${shortLabel} workflow`}\n <Button bsStyle=\"danger\" bsSize=\"xsmall\" className=\"gu_button_right\" onClick={fnHide}><FontAwesomeIcon icon=\"fas fa-times\" /></Button>\n </Panel.Heading>\n <Panel.Body>\n <div className=\"body_bg\">\n <div className=\"body_canvas\"><FlowView properties={properties} properties_release={properties_release} /></div>\n </div>\n </Panel.Body>\n </Panel>\n </div>\n </Draggable>\n );\n};\n\nFlowViewerModal.propTypes = {\n show: PropTypes.bool.isRequired,\n data: PropTypes.shape({\n properties_release: PropTypes.object, properties: PropTypes.object, shortLabel: PropTypes.string\n }).isRequired,\n fnHide: PropTypes.func.isRequired\n};\n\nexport default FlowViewerModal;\n","// import React, { useState, useEffect } from 'react';\n// import logo from './logo.svg';\n// import 'bootstrap/dist/css/bootstrap.min.css';\n// import { ElementManager, GenPropertiesText } from './components/admin/ElementManager';\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { fas } from '@fortawesome/free-solid-svg-icons';\nimport { far } from '@fortawesome/free-regular-svg-icons';\nimport './asserts/main.css';\n\nlibrary.add(fas, far);\n\nexport { default as ElementManager } from './components/admin/ElementManager';\nexport { default as GenDSMisType } from './components/fields/GenDSMisType';\nexport { default as GenericDSDetails } from './components/details/GenDSDetails';\nexport { default as SegmentDetails } from './components/details/GenSgDetails';\nexport { default as FlowViewerModal } from './components/flow/FlowViewerModal';\nexport { GenPropertiesNumber, GenPropertiesText } from './components/fields/GenPropertiesFields';\n\n// export { GenPropertiesNumber, GenPropertiesText };\n// function App() {\n// return (\n// <div className=\"App\">\n// <header className=\"App-header\">\n// <img src={logo} className=\"App-logo\" alt=\"logo\" />\n// <p>\n// Edit <code>src/App.js</code> and save to reload.\n// </p>\n// <a\n// className=\"App-link\"\n// href=\"https://reactjs.org\"\n// target=\"_blank\"\n// rel=\"noopener noreferrer\"\n// >\n// Learn React\n// </a>\n// </header>\n// </div>\n// );\n// }\n\n// export { ElementManager, GenPropertiesText };\n\n// function App() {\n// return (\n// <div>\n// Project A\n// <ElementManager />\n// </div>\n// );\n// }\n\n// export default App;\n","import React, { Component } from 'react';\nimport GenericDSDetails from '../components/details/GenDSDetails';\n\nclass SimuDS extends Component {\n constructor(props) {\n super(props);\n this.state = {\n genericDS: {}, klass: {}\n };\n this.handleChange = this.handleChange.bind(this);\n }\n\n componentDidMount() {\n fetch('ds_details.json', { headers: { 'Content-Type': 'application/json', Accept: 'application/json' } })\n .then(response => response.json()).then((json) => {\n fetch('ds_klass.json', { headers: { 'Content-Type': 'application/json', Accept: 'application/json' } })\n .then(response => response.json()).then((kjson) => {\n this.setState({ genericDS: json, klass: kjson });\n })\n .catch((errorMessage) => {\n console.log(errorMessage);\n });\n })\n .catch((errorMessage) => {\n console.log(errorMessage);\n });\n }\n\n handleChange(newObj) {\n this.setState({ genericDS: newObj });\n }\n\n render() {\n const { genericDS, klass } = this.state;\n return (\n <div>\n <h2>GenericDSDetails</h2>\n <div>\n <GenericDSDetails\n uiCtrl\n genericDS={genericDS}\n klass={klass}\n kind=\"1H NMR\"\n onChange={this.handleChange}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default SimuDS;\n","import React, { Component } from 'react';\nimport { DragDropContext } from 'react-dnd';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport SegmentDetails from '../components/details/GenSgDetails';\n\nclass SimuSG extends Component {\n constructor(props) {\n super(props);\n this.state = {\n segment: {}, klass: {}\n };\n this.handleChange = this.handleChange.bind(this);\n }\n\n componentDidMount() {\n fetch('sg_details.json', { headers: { 'Content-Type': 'application/json', Accept: 'application/json' } })\n .then(response => response.json()).then((json) => {\n console.log(json);\n fetch('sg_klass.json', { headers: { 'Content-Type': 'application/json', Accept: 'application/json' } })\n .then(response => response.json()).then((kjson) => {\n this.setState({ segment: json, klass: kjson });\n })\n .catch((errorMessage) => {\n console.log(errorMessage);\n });\n })\n .catch((errorMessage) => {\n console.log(errorMessage);\n });\n }\n\n handleChange(newObj) {\n this.setState({ segment: newObj });\n }\n\n render() {\n const { segment, klass } = this.state;\n return (\n <div>\n <h2>SegmentDetails</h2>\n <div>\n <SegmentDetails\n uiCtrl\n segment={segment}\n klass={klass}\n onChange={this.handleChange}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default DragDropContext(HTML5Backend)(SimuSG);\n","import React, { Component } from 'react';\nimport { Button } from 'react-bootstrap';\nimport FlowViewerModal from '../components/flow/FlowViewerModal';\n\nclass SimuWF extends Component {\n constructor(props) {\n super(props);\n this.state = {\n show: false,\n data: { properties_release: {}, properties: {}, shortLabel: 'short label' }\n };\n this.handleChange = this.handleChange.bind(this);\n }\n\n componentDidMount() {\n fetch('sg_details.json', { headers: { 'Content-Type': 'application/json', Accept: 'application/json' } })\n .then(response => response.json()).then((json) => {\n console.log(json);\n this.setState({\n data: { properties_release: json.properties_release, properties: json.properties }\n });\n })\n .catch((errorMessage) => {\n console.log(errorMessage);\n });\n }\n\n handleChange(show) {\n this.setState({ show });\n }\n\n render() {\n const { show, data } = this.state;\n return (\n <div>\n <h2>Flow view</h2>\n <div>\n <Button onClick={() => this.handleChange(true)}>click</Button>\n <FlowViewerModal\n show={show}\n data={data}\n fnHide={() => this.handleChange(false)}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default SimuWF;\n","/* eslint-disable no-unused-vars */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n// import 'bootstrap/dist/css/bootstrap.min.css';\nimport './index.css';\nimport './asserts/main.css';\n// import 'bootstrap/dist/css/bootstrap.min.css';\n// import App from './App';\n// import reportWebVitals from './reportWebVitals';\n\n// import { ElementManager, GenPropertiesText } from './components/admin/ElementManager';\nimport { ElementManager, GenDSMisType, GenericDSDetails, SegmentDetails, FlowViewerModal } from './app';\nimport SimuDS from './simulations/SimuDS';\nimport SimuSG from './simulations/SimuSG';\nimport SimuWF from './simulations/SimWF';\n\n// export { ElementManager, GenPropertiesText };\n\nReactDOM.render(\n <div>\n <ElementManager elements={[]} element={{}} />\n <SimuWF />\n <SimuDS />\n <SimuSG />\n </div>\n ,\n document.getElementById('root')\n);\n\n// function App() {\n// return (\n// <div>\n// Project A\n// <ElementManager />\n// </div>\n// );\n// }\n\n// export default App;\n","import { v4 as uuid } from 'uuid';\n\nexport default class GenericSubField {\n constructor(args) {\n Object.assign(this, args);\n if (!this.id) { this.id = GenericSubField.buildID(); }\n }\n\n static buildID() { return uuid(); }\n}\n","export default {\n SYSTEM_UNITS:\n {\n fields: [\n {\n type: 'numeric',\n field: 'acceleration',\n label: 'Acceleration',\n default: '',\n position: 10,\n placeholder: 'acceleration',\n units: [\n { key: 'mm_s2', label: 'mm/s<sup>2</sup>' }\n ]\n },\n {\n type: 'numeric',\n field: 'agitation',\n label: 'Agitation',\n default: '',\n position: 20,\n placeholder: 'agitation',\n units: [\n { key: 'rpm', label: 'rpm' }\n ]\n },\n {\n type: 'numeric',\n field: 'amount_enzyme',\n label: 'Amount enzyme as nmol/min',\n default: '',\n position: 30,\n placeholder: 'amount enzyme as nmol/min',\n units: [\n { key: 'u', label: 'U', nm: 1 },\n { key: 'mu', label: 'mU', nm: 1000 }\n ]\n },\n {\n type: 'numeric',\n field: 'molarity',\n label: 'Chem. concentration (Molarity)',\n default: '',\n position: 40,\n placeholder: 'molarity',\n units: [\n { key: 'mol_l', label: 'mol/L (M)', nm: 1 },\n { key: 'mmol_l', label: 'mmol/L (mM)', nm: 1000 },\n { key: 'nmol_l', label: 'nmol/L (nM)', nm: 1000000 },\n { key: 'pmol_l', label: 'pmol/L (pM)', nm: 1000000000 }\n ]\n },\n {\n type: 'numeric',\n field: 'chem_distances',\n label: 'Chem. distances',\n default: '',\n position: 50,\n placeholder: 'Chem. distances',\n units: [\n { key: 'angstrom', label: 'Å' }\n ]\n },\n {\n type: 'numeric',\n field: 'concentration',\n label: 'Concentration',\n default: '',\n position: 60,\n placeholder: 'concentration',\n units: [\n { key: 'ng_l', label: 'ng/L', nm: 1000000 },\n { key: 'mg_l', label: 'mg/L', nm: 1000 },\n { key: 'g_l', label: 'g/L', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'conductivity',\n label: 'Conductivity',\n default: '',\n position: 66,\n placeholder: 'conductivity',\n units: [\n { key: 's_m', label: 'S/m', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'current',\n label: 'Current',\n default: '',\n position: 60,\n placeholder: 'Current',\n units: [\n { key: 'A', label: 'A', nm: 1 },\n { key: 'mA', label: 'mA', nm: 1000 },\n { key: 'uA', label: 'µA', nm: 1000000 },\n { key: 'nA', label: 'nA', nm: 1000000000 }\n ]\n },\n {\n type: 'numeric',\n field: 'degree',\n label: 'Degree',\n default: '',\n position: 70,\n placeholder: 'degree',\n units: [\n { key: 'degree', label: '°' }\n ]\n },\n {\n type: 'numeric',\n field: 'density',\n label: 'Density',\n default: '',\n position: 75,\n placeholder: 'density',\n units: [\n { key: 'g_cm3', label: 'g/cm<sup>3</sup>', nm: 1 },\n { key: 'kg_l', label: 'kg/l', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'duration',\n label: 'Duration',\n default: '',\n position: 80,\n placeholder: 'duration',\n units: [\n { key: 'd', label: 'd', nm: 1 },\n { key: 'h', label: 'h', nm: 24 },\n { key: 'min', label: 'm', nm: 1440 },\n { key: 's', label: 's', nm: 86400 }\n ]\n },\n {\n type: 'numeric',\n field: 'elastic_modulus',\n label: 'Elastic modulus',\n default: '',\n position: 86,\n placeholder: 'Elastic modulus',\n units: [\n { key: 'm_pa', label: 'MPa', nm: 1 },\n { key: 'k_pa', label: 'kPa', nm: 1000 },\n { key: 'pa', label: 'Pa', nm: 1000000 }\n ]\n },\n {\n type: 'numeric',\n field: 'electric_field',\n label: 'Electric field',\n default: '',\n position: 86,\n placeholder: 'Electric field',\n units: [\n { key: 'v_m', label: 'V/m', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'energy',\n label: 'Energy',\n default: '',\n position: 88,\n placeholder: 'Joule',\n units: [\n { key: 'j', label: 'J', nm: 1000 },\n { key: 'k_j', label: 'kJ', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'enzyme_activity',\n label: 'Enzyme activity',\n default: '',\n position: 90,\n placeholder: 'Enzyme activity',\n units: [\n { key: 'u_l', label: 'U/L', nm: 1 },\n { key: 'u_ml', label: 'U/mL', nm: 1000 }\n ]\n },\n {\n type: 'numeric',\n field: 'flow_rate',\n label: 'Flow rate',\n default: '',\n position: 100,\n placeholder: 'Flow rate',\n units: [\n { key: 'ul_min', label: 'µl/min', nm: 1000000 },\n { key: 'ml_min', label: 'ml/min', nm: 1000 },\n { key: 'l_m', label: 'l/m', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'frequency',\n label: 'Frequency',\n default: '',\n position: 100,\n placeholder: 'frequency',\n units: [\n { key: 'hz', label: 'Hz', nm: 1000 },\n { key: 'khz', label: 'kHz', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'heating_rate',\n label: 'Heating rate',\n default: '',\n position: 106,\n placeholder: 'heating rate',\n units: [\n { key: 'k_min', label: 'K/min', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'length',\n label: 'Length',\n default: '',\n position: 110,\n placeholder: 'length',\n units: [\n { key: 'pm', label: 'pm', nm: 100000 },\n { key: 'nm', label: 'nm', nm: 10000 },\n { key: 'mm', label: 'mm', nm: 1000 },\n { key: 'cm', label: 'cm', nm: 100 },\n { key: 'm', label: 'm', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'magnetic_flux_density',\n label: 'Magnetic flux density/inductivity',\n default: '',\n position: 120,\n placeholder: '',\n units: [\n { key: 'T', label: 'T', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'mass',\n label: 'Mass',\n default: '',\n position: 120,\n placeholder: 'mass',\n units: [\n { key: 'g', label: 'g', nm: 1 },\n { key: 'mg', label: 'mg', nm: 1000 },\n { key: 'ug', label: 'µg', nm: 1000000 }\n ]\n },\n {\n type: 'numeric',\n field: 'mass_molecule',\n label: 'Mass of molecule',\n default: '',\n position: 126,\n placeholder: 'mass of molecule',\n units: [\n { key: 'dalton', label: 'D', nm: 1000 },\n { key: 'kilo_dalton', label: 'kD', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'molecular_weight',\n label: 'Molecular weight',\n default: '',\n position: 130,\n placeholder: 'Molecular weight',\n units: [\n { key: 'g_mol', label: 'g/mol' }\n ]\n },\n {\n type: 'numeric',\n field: 'percentage',\n label: 'Percentage',\n default: '',\n position: 136,\n placeholder: 'percentage',\n units: [\n { key: 'p', label: '%', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'pressure',\n label: 'Pressure',\n default: '',\n position: 140,\n placeholder: 'pressure',\n units: [\n { key: 'atm', label: 'atm', nm: 1 },\n { key: 'pa', label: 'Pa', nm: 101325 },\n { key: 'torr', label: 'Torr', nm: 760 }\n ]\n },\n {\n type: 'numeric',\n field: 'reaction_rate',\n label: 'Reaction rate',\n default: '',\n position: 150,\n placeholder: 'Reaction rate',\n units: [\n { key: 'mol_lmin', label: 'mol/Lmin', nm: 1 },\n { key: 'mol_lsec', label: 'mol/Ls', nm: 60 }\n ]\n },\n {\n type: 'numeric',\n field: 'specific_volume',\n label: 'Specific Volume',\n default: '',\n position: 160,\n placeholder: 'Specific Volume',\n units: [\n { key: 'cm3_g', label: 'cm<sup>3</sup>/g', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'speed',\n label: 'Speed',\n default: '',\n position: 165,\n placeholder: 'speed',\n units: [\n { key: 'cm_s', label: 'cm/s', nm: 1 },\n { key: 'mm_s', label: 'mm/s', nm: 10 },\n { key: 'cm_h', label: 'cm/h', nm: 3600 },\n { key: 'mm_h', label: 'mm/h', nm: 36000 }\n ]\n },\n {\n type: 'numeric',\n field: 'surface',\n label: 'Surface',\n default: '',\n position: 170,\n placeholder: 'surface',\n units: [\n { key: 'a_2', label: 'A<sup>2</sup>' },\n { key: 'mm_2', label: 'mm<sup>2</sup>' },\n { key: 'cm_2', label: 'cm<sup>2</sup>' }\n ]\n },\n {\n type: 'numeric',\n field: 'temperature',\n label: 'Temperature',\n default: '',\n position: 180,\n placeholder: 'temperature',\n units: [\n { key: 'C', label: '°C' },\n { key: 'F', label: '°F' },\n { key: 'K', label: '°K' }\n ]\n },\n {\n type: 'numeric',\n field: 'turnover_number',\n label: 'Turnover number',\n default: '',\n position: 190,\n placeholder: 'Turnover number',\n units: [\n { key: '1_s', label: '1/s' }\n ]\n },\n {\n type: 'numeric',\n field: 'viscosity',\n label: 'Dynamic Viscosity',\n default: '',\n position: 200,\n placeholder: 'Dynamic Viscosity',\n units: [\n { key: 'pas', label: 'Pas', nm: 1 },\n { key: 'mpas', label: 'mPas', nm: 1000 }\n ]\n },\n {\n type: 'numeric',\n field: 'kinematic_viscosity',\n label: 'Kinematic Viscosity',\n default: '',\n position: 205,\n placeholder: 'Kinematic Viscosity',\n units: [\n { key: 'm2_s', label: 'm<sup>2</sup>/s', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'voltage',\n label: 'Voltage',\n default: '',\n position: 200,\n placeholder: 'voltage',\n units: [\n { key: 'mv', label: 'mV', nm: 1000 },\n { key: 'v', label: 'V', nm: 1 }\n ]\n },\n {\n type: 'numeric',\n field: 'volumes',\n label: 'Volumes',\n default: '',\n position: 210,\n placeholder: 'volume',\n units: [\n { key: 'l', label: 'l', nm: 1 },\n { key: 'ml', label: 'ml', nm: 1000 },\n { key: 'ul', label: 'µl', nm: 1000000 },\n { key: 'nl', label: 'nl', nm: 1000000000 }\n ]\n }\n ]\n }\n};\n","import { v4 as uuid } from 'uuid';\n\nexport default class Attachment {\n constructor(args) {\n Object.assign(this, args);\n if (!this.id) { this.id = Attachment.buildID(); }\n }\n\n static buildID() { return uuid(); }\n\n static fromFile(file) {\n return new Attachment({\n file,\n name: file.name,\n filename: file.name,\n identifier: file.id,\n is_deleted: false,\n });\n }\n\n get isNew() {\n return this.is_new === true;\n }\n\n serialize() {\n return super.serialize({\n filename: this.filename,\n identifier: this.identifier,\n file: this.file,\n thumb: this.thumb,\n content_type: this.content_type,\n is_deleted: this.is_deleted,\n id: this.id,\n is_new: this.isNew || false\n });\n }\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable object-curly-newline */\n/* eslint-disable camelcase */\n/* eslint-disable no-unused-vars */\n/* eslint-disable max-len */\n/* eslint-disable react/forbid-prop-types */\nimport React from 'react';\n// import PropTypes from 'prop-types';\n// import { Button, OverlayTrigger, Tooltip, Popover, ControlLabel } from 'react-bootstrap';\n// import uuid from 'uuid';\nimport { v4 as uuid } from 'uuid';\nimport { findIndex, findKey, cloneDeep } from 'lodash';\n// import NotificationActions from '../../components/actions/NotificationActions';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport SystemUnits from '../../data/SystemUnits';\nimport Attachment from '../models/Attachment';\n\n// move from GenericElCommon.js\nconst uploadFiles = (properties, event, field, layer) => {\n const files = [];\n const fieldObj = properties.layers[`${layer}`].fields.find(e => e.field === field) || {};\n const value = fieldObj.value || {};\n switch (event.action) {\n case 'l': {\n const valIdx = findIndex((value.files || []), o => o.uid === event.uid);\n const label = event && event.val && event.val.target && event.val.target.value;\n if (value.files[valIdx] && label) value.files[valIdx].label = label;\n break;\n }\n case 'f': {\n (event.val || []).forEach((file) => {\n const uid = uuid();\n if (typeof value.files === 'undefined' || value.files === null) value.files = [];\n value.files.push({ uid, filename: file.name });\n files.push({ uid, filename: file.name, file: Attachment.fromFile(file) });\n });\n break;\n }\n case 'd': {\n const valIdx = findIndex((value.files || []), o => o.uid === event.uid);\n if (valIdx >= 0 && value.files && value.files.length > 0) value.files.splice(valIdx, 1);\n return [value, files, event.uid];\n }\n default:\n console.log(event);\n }\n return [value, files];\n};\n\n// move from GenPropertiesLayer.js\nconst showProperties = (fObj, layers) => {\n let showField = true;\n if (fObj && fObj.cond_fields && fObj.cond_fields.length > 0) {\n showField = false;\n for (let i = 0; i < fObj.cond_fields.length; i += 1) {\n const cond = fObj.cond_fields[i] || {};\n const { layer, field, value } = cond;\n if (field && field !== '') {\n const fd = ((layers[layer] || {}).fields || []).find(f => f.field === field) || {};\n if (fd.type === 'checkbox' && ((['false', 'no', 'f', '0'].includes((value || '').trim().toLowerCase()) && (typeof (fd && fd.value) === 'undefined' || fd.value === false)) ||\n (['true', 'yes', 't', '1'].includes((value || '').trim().toLowerCase()) && (typeof (fd && fd.value) !== 'undefined' && fd.value === true)))) {\n showField = true;\n break;\n } else if (['text', 'select'].includes(fd && fd.type) && (typeof (fd && fd.value) !== 'undefined' && ((fd && fd.value) || '').trim() === (value || '').trim())) {\n showField = true;\n break;\n }\n }\n }\n }\n return showField;\n};\n\nclass GenericDummy {\n constructor() {\n this.type = 'dummy';\n this.field = uuid();\n this.position = 100;\n this.label = '';\n this.default = '';\n this.required = false;\n }\n}\n\nconst inputEventVal = (event, type) => {\n if (type === 'select') {\n return event ? event.value : null;\n } else if (type.startsWith('drag')) {\n return event;\n } else if (type === 'checkbox') {\n return event.target.checked;\n } else if (type === 'formula-field') {\n if (event.target) {\n return event.target.value;\n }\n return event;\n }\n return event.target && event.target.value;\n};\n\nconst absOlsTermId = val => (val || '').split('|')[0].trim();\nconst absOlsTermLabel = val => val.replace(absOlsTermId(val), '').replace('|', '').trim();\nconst toNum = (val) => {\n const parse = Number((val || ''));\n return Number.isNaN(parse) ? 0 : parse;\n};\n\nconst genUnitSup = (val) => {\n if (typeof val === 'undefined' || val === null) return '';\n const vals = val.match(/<\\s*(\\w+\\b)(?:(?!<\\s*\\/\\s*\\1\\b)[\\s\\S])*<\\s*\\/\\s*\\1\\s*>|[^<]+/g);\n const reV = vals.map((v) => {\n const supVal = v.match(/<sup[^>]*>([^<]+)<\\/sup>/);\n if (supVal) return <sup key={uuid()}>{supVal[1]}</sup>;\n const subVal = v.match(/<sub[^>]*>([^<]+)<\\/sub>/);\n if (subVal) return <sub key={uuid()}>{subVal[1]}</sub>;\n return v;\n });\n return <span>{reV}</span>;\n};\n\nconst toBool = (val) => {\n const valLower = String(val).toLowerCase();\n return !(!valLower || valLower === 'false' || valLower === '0');\n};\n\nconst genUnitsSystem = () => (SystemUnits.SYSTEM_UNITS || {}).fields || [];\n\nconst genUnits = field => (genUnitsSystem().find(u => u.field === field) || {}).units || [];\n\nconst genUnit = (field, key) => {\n const units = genUnits(field);\n return units.find(u => u.key === key) || {};\n};\n\nconst reUnit = (unitsSystem, optionLayers) => {\n const uniFileds = (unitsSystem.fields || []);\n const uniObj = uniFileds.find(fiel => fiel.field === optionLayers);\n const defaultUnit = ((uniObj && uniObj.field) || '');\n const preUnit = uniFileds.length > 0 ? uniFileds[0].field : '';\n return defaultUnit === '' ? preUnit : defaultUnit;\n};\n\nconst convertTemp = (key, val) => {\n switch (key) {\n case 'F':\n return ((parseFloat(val) * 1.8) + 32).toFixed(2);\n case 'K':\n return (((parseFloat(val) + 459.67) * 5) / 9).toFixed(2);\n case 'C':\n return (parseFloat(val) - 273.15).toFixed(2);\n default:\n return val;\n }\n};\n\nconst unitConvToBase = (field = {}) => {\n const units = genUnits(field.option_layers);\n if (units.length <= 1) {\n return field.value;\n }\n const idx = findIndex(units, u => u.key === field.value_system);\n if (idx <= 0) return field.value;\n return ((field.value * units[0].nm) / ((units[idx] && units[idx].nm) || 1) || 0);\n};\n\nconst unitConversion = (field, key, val) => {\n if (typeof val === 'undefined' || val == null || val === 0 || val === '') {\n return val;\n }\n if (field === 'temperature') {\n return convertTemp(key, val);\n }\n const units = genUnits(field);\n if (units.length <= 1) {\n return val;\n }\n const idx = findIndex(units, u => u.key === key);\n if (idx === -1) {\n return val;\n }\n const pIdx = idx === 0 ? (units.length) : idx;\n const pre = (units[pIdx - 1] && units[pIdx - 1].nm) || 1;\n const curr = (units[idx] && units[idx].nm) || 1;\n return parseFloat((parseFloat(val) * (curr / pre)).toFixed(5));\n};\n\n// const notification = props =>\n// (\n// NotificationActions.add({\n// title: props.title,\n// message: props.msg,\n// level: props.lvl,\n// position: 'tc',\n// dismissible: 'button',\n// autoDismiss: props.autoDismiss || 5,\n// uid: props.uid || uuid.v4()\n// })\n// );\n\n// const validateLayerInput = (layer, act = 'new') => {\n// if (layer.key === '') {\n// notification({ title: `Layer [${layer.key}]`, lvl: 'error', msg: 'Please input Name.' });\n// return false;\n// }\n// if (act === 'new' && !(/^[a-z][a-z_]+[a-z]$/g.test(layer.key))) {\n// notification({ title: `Layer [${layer.key}]`, lvl: 'error', msg: 'This Name is invalid, please try a different one.' });\n// return false;\n// }\n// if (parseInt((layer.cols || 1), 10) < 1) {\n// notification({ title: `Layer [${layer.key}]`, lvl: 'error', msg: 'The minimun of Column per Row is 1, please input a different one.' });\n// return false;\n// }\n// return true;\n// };\n\n// const validateSelectList = (selectName, element) => {\n// if (selectName === '') {\n// notification({ title: `Select List [${selectName}]`, lvl: 'error', msg: 'Please input Name.' });\n// return false;\n// }\n// if (!(/^[a-z][a-z_]+[a-z]$/g.test(selectName))) {\n// notification({ title: `Select List [${selectName}]`, lvl: 'error', msg: 'This Name is invalid, please try a different one.' });\n// return false;\n// }\n// if (element.properties_template.select_options[`${selectName}`]) {\n// notification({ title: `Select List [${selectName}]`, lvl: 'error', msg: 'This name of Select List is already taken. Please choose another one.' });\n// return false;\n// }\n// return true;\n// };\n\nconst clsInputGroup = (el) => {\n if (!el) return el;\n const genericEl = el;\n const { layers } = genericEl.properties_template;\n const keys = Object.keys(layers);\n keys.forEach((key) => {\n const layer = layers[key];\n layer.fields.filter(e => e.type === 'input-group')\n .forEach((e) => {\n e.sub_fields.forEach((s) => {\n const ff = s;\n if (ff.type === 'text') { ff.value = ''; }\n });\n });\n });\n return genericEl;\n};\n\nconst molOptions = [{ label: 'InChiKey', value: 'inchikey' }, { label: 'SMILES', value: 'smiles' }, { label: 'IUPAC', value: 'iupac' }, { label: 'Mass', value: 'molecular_weight' }];\nconst samOptions = [{ label: 'Name', value: 'name' }, { label: 'Ext. Label', value: 'external_label' }, { label: 'Mass', value: 'molecular_weight' }];\n\nconst findCurrentNode = (_srcKey, _layerVals) => {\n const result = [];\n const fs = _layerVals.filter(o => o.wf && o.wf_info && o.wf_info.source_layer === _srcKey);\n if (fs.length > 1) {\n fs.forEach((o) => {\n findCurrentNode(o, _layerVals);\n });\n } else if (fs.length === 1) {\n return findCurrentNode(fs[0].key, _layerVals);\n }\n return [_srcKey];\n};\n\nconst decorateNode = (_elements, _layers) => {\n if (!_elements || _elements.length < 1) return _elements;\n const m = {\n background: '#D6D5E6',\n color: '#333',\n // border: '1px solid #222138',\n // width: 180,\n };\n const elements = _elements;\n elements.map((e) => {\n if (['input', 'output'].includes(e.type) || e.animated) return e;\n const lk = e.data.lKey;\n const fk = findKey(_layers, o => o.wf && (o.key === lk || o.key.startsWith(`${lk}.`)));\n if (fk) {\n e.style = m;\n return e;\n }\n return e;\n });\n return elements;\n};\n\nconst conFlowEls = (props) => {\n const { properties, properties_release } = props;\n const { flow, layers } = properties_release;\n const deep = cloneDeep(flow);\n const els = (deep && deep.elements) || [];\n els.map((d) => {\n if (['default'].includes(d.type) && d.data) {\n const { lKey } = d.data;\n const fk = findKey((properties.layers || {}), o => o.wf && (o.key === lKey || o.key.startsWith(`${lKey}.`)));\n const chk = fk ? (<div style={{ position: 'absolute', top: '0px', right: '2px', color: 'green', zIndex: '100' }}><FontAwesomeIcon icon=\"far fa-check-circle\" /></div>) : null;\n const layer = layers[lKey] || {};\n const ll = (\n <div>\n {chk}\n <div style={{ borderWidth: '0px 0px 1px 0px', borderColor: 'black', borderStyle: 'solid' }}><b>{layer.label}</b></div>\n <div>({layer.key})</div>\n </div>\n );\n d.data = { label: ll, lKey: layer.key };\n }\n return d;\n });\n return els;\n};\n\nconst storeFlow = (props) => {\n const { elements } = props;\n const els = cloneDeep(elements);\n els.map((d) => {\n if (['default'].includes(d.type) && d.data) {\n delete d.data.label;\n delete d.data.layer;\n }\n return d;\n });\n return els;\n};\n\nconst flowDefault = [\n {\n id: '1', type: 'input', data: { label: 'Start' }, position: { x: 250, y: 15 }\n },\n {\n id: '2', type: 'output', data: { label: 'End' }, position: { x: 250, y: 255 }\n }\n];\n\nconst isLayerInWF = (_element, _layerKey) => {\n const { flow } = _element.properties_template;\n const finds = ((flow || {}).elements || []).filter(e => e.type === 'default' && (e.data || {}).lKey === _layerKey);\n return (finds.length > 0);\n};\n\n// const validateLayerDeletion = (_element, _delKey) => {\n// if (isLayerInWF(_element, _delKey)) {\n// notification({ title: `Layer [${_delKey}]`, lvl: 'warning', msg: `This layer [${_delKey}] can not be removed because it is currently used in workflow.` });\n// return false;\n// }\n// return true;\n// };\n\n// const validateLayerUpdation = (_element, _updates) => {\n// const { key, wf } = _updates;\n// if (isLayerInWF(_element, key)) {\n// if (!wf) {\n// notification({ title: `Layer [${key}]`, lvl: 'warning', msg: `Can not change the attribute 'used in Workflow?' because this layer [${key}] is currently used in workflow.` });\n// return false;\n// }\n// }\n// const { layers } = _element.properties_template;\n// if (wf && layers[key] && (layers[key].cond_fields || []).length > 0) {\n// notification({ title: `Layer [${key}]`, lvl: 'warning', msg: 'Can not use in Workflow because the Layer Restriction has been set.' });\n// return false;\n// }\n// return true;\n// };\n\nconst swapAryEls = (_ary, idx1, idx2) => {\n const ary = _ary;\n const temp = ary[idx1];\n ary[idx1] = ary[idx2];\n ary[idx2] = temp;\n return ary;\n};\n\n// re-fetch workflow and set to state of store, should be out-of this project\n// const renderFlowModal = (generic, isToggle) => {\n// const segmentKlasses = (UserStore.getState() && UserStore.getState().segmentKlasses) || [];\n// let shortLabel = generic.short_label;\n// if (!shortLabel) {\n// shortLabel = segmentKlasses.filter(s => s.id === generic.segment_klass_id);\n// shortLabel = shortLabel.length > 0 ? shortLabel[0].label : '';\n// }\n// const params = {\n// properties_release: cloneDeep(generic.properties_release) || {},\n// properties: cloneDeep(generic.properties) || {},\n// shortLabel,\n// toggle: isToggle\n// };\n// UIActions.rerenderGenericWorkflow(params);\n// };\n\nconst downloadFile = (file) => {\n const { contents, name } = file;\n const link = document.createElement('a');\n link.download = name;\n link.href = contents;\n const event = new window.MouseEvent('click', {\n view: window,\n bubbles: true,\n cancelable: true\n });\n link.dispatchEvent(event);\n};\n\nexport {\n GenericDummy,\n // validateLayerInput,\n // validateSelectList,\n // notification,\n genUnitsSystem, genUnits, genUnit,\n unitConvToBase, unitConversion, toBool, toNum, genUnitSup, absOlsTermId, absOlsTermLabel, reUnit,\n clsInputGroup, inputEventVal, molOptions, samOptions, conFlowEls, storeFlow, flowDefault,\n // validateLayerUpdation,\n // validateLayerDeletion,\n swapAryEls, decorateNode, showProperties, downloadFile, uploadFiles\n};\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ !function(e){function r(r){for(var n,i,l=r[0],c=r[1],f=r[2],p=0,s=[];p<l.length;p++)i=l[p],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&s.push(o[i][0]),o[i]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(a&&a(r);s.length;)s.shift()();return u.push.apply(u,f||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var c=t[l];0!==o[c]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="/";var l=this["webpackJsonpchem-generic-ui"]=this["webpackJsonpchem-generic-ui"]||[],c=l.push.bind(l);l.push=r,l=l.slice();for(var f=0;f<l.length;f++)r(l[f]);var a=c;t()}([]);
2
+ //# sourceMappingURL=runtime-main.1c1408e7.js.map