Skip to content
Snippets Groups Projects
Commit 456571fd authored by Sandro Weber's avatar Sandro Weber
Browse files

[NRRPLT-8578] layout adjustments are not documented well

parent 5f1d6112
No related branches found
No related tags found
No related merge requests found
...@@ -1264,6 +1264,87 @@ ...@@ -1264,6 +1264,87 @@
"minimist": "^1.2.0" "minimist": "^1.2.0"
} }
}, },
"@codemirror/autocomplete": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.1.0.tgz",
"integrity": "sha512-wtO4O5WDyXhhCd4q4utDIDZxnQfmJ++3dGBCG9LMtI79+92OcA1DVk/n7BEupKmjIr8AzvptDz7YQ9ud6OkU+A==",
"requires": {
"@codemirror/language": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"@lezer/common": "^1.0.0"
}
},
"@codemirror/commands": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.1.0.tgz",
"integrity": "sha512-qCj2YqmbBjj0P1iumnlL5lBqZvJPzT+t2UvgjcaXErp5ZvMqFRVgQyrEfdXX6SX5UcvcHKBjXqno+MkUp0aYvQ==",
"requires": {
"@codemirror/language": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"@lezer/common": "^1.0.0"
}
},
"@codemirror/language": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.2.1.tgz",
"integrity": "sha512-MC3svxuvIj0MRpFlGHxLS6vPyIdbTr2KKPEW46kCoCXw2ktb4NTkpkPBI/lSP/FoNXLCBJ0mrnUi1OoZxtpW1Q==",
"requires": {
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"@lezer/common": "^1.0.0",
"@lezer/highlight": "^1.0.0",
"@lezer/lr": "^1.0.0",
"style-mod": "^4.0.0"
}
},
"@codemirror/lint": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.0.0.tgz",
"integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==",
"requires": {
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"crelt": "^1.0.5"
}
},
"@codemirror/search": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.1.0.tgz",
"integrity": "sha512-ye6m0jFHSgQ4qnfWVwArvm7XrCMNppMYnL5f4M0WdBScslnckomf5eVacYCw8P0UBWeq72lCSXA0/eo1piZxLA==",
"requires": {
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"crelt": "^1.0.5"
}
},
"@codemirror/state": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.1.tgz",
"integrity": "sha512-2s+aXsxmAwnR3Rd+JDHPG/1lw0YsA9PEwl7Re88gHJHGfxyfEzKBmsN4rr53RyPIR4lzbbhJX0DCq0WlqlBIRw=="
},
"@codemirror/theme-one-dark": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.0.0.tgz",
"integrity": "sha512-jTCfi1I8QT++3m21Ui6sU8qwu3F/hLv161KLxfvkV1cYWSBwyUanmQFs89ChobQjBHi2x7s2k71wF9WYvE8fdw==",
"requires": {
"@codemirror/language": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0",
"@lezer/highlight": "^1.0.0"
}
},
"@codemirror/view": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.2.0.tgz",
"integrity": "sha512-3emW1symh+GoteFMBPsltjmF790U/trouLILATh3JodbF/z98HvcQh2g3+H6dfNIHx16uNonsAF4mNzVr1TJNA==",
"requires": {
"@codemirror/state": "^6.0.0",
"style-mod": "^4.0.0",
"w3c-keyname": "^2.2.4"
}
},
"@csstools/convert-colors": { "@csstools/convert-colors": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
...@@ -1883,6 +1964,27 @@ ...@@ -1883,6 +1964,27 @@
} }
} }
}, },
"@lezer/common": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.0.tgz",
"integrity": "sha512-ohydQe+Hb+w4oMDvXzs8uuJd2NoA3D8YDcLiuDsLqH+yflDTPEpgCsWI3/6rH5C3BAedtH1/R51dxENldQceEA=="
},
"@lezer/highlight": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.0.0.tgz",
"integrity": "sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==",
"requires": {
"@lezer/common": "^1.0.0"
}
},
"@lezer/lr": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.3.tgz",
"integrity": "sha512-qpB7rBzH8f6Mzjv2AVZRahcm+2Cf7nbIH++uXbvVOL1yIRvVWQ3HAM/saeBLCyz/togB7LGo76qdJYL1uKQlqA==",
"requires": {
"@lezer/common": "^1.0.0"
}
},
"@material-ui/core": { "@material-ui/core": {
"version": "4.11.3", "version": "4.11.3",
"resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.3.tgz", "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.3.tgz",
...@@ -2980,6 +3082,41 @@ ...@@ -2980,6 +3082,41 @@
"eslint-visitor-keys": "^2.0.0" "eslint-visitor-keys": "^2.0.0"
} }
}, },
"@uiw/codemirror-extensions-basic-setup": {
"version": "4.11.5",
"resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.11.5.tgz",
"integrity": "sha512-aHtdF1JEzHmBVuWXemr8OH7SQP/LbXXZdiOo/4tcxjFpyTuVGzPteBdfQU0xPOk0m+5Oc1LPqM+HaNPXNzX6aA==",
"requires": {
"@codemirror/autocomplete": "^6.0.0",
"@codemirror/commands": "^6.0.0",
"@codemirror/language": "^6.0.0",
"@codemirror/lint": "^6.0.0",
"@codemirror/search": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0"
}
},
"@uiw/react-codemirror": {
"version": "4.11.5",
"resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.11.5.tgz",
"integrity": "sha512-Bf8l3nVV4ekHbv4U0VrzUibl8+ucAY3UV0gk0xckbFnV1AlUxHcrYFiXSgy/rkyWBD7enHQENtM888B/3qBiwg==",
"requires": {
"@babel/runtime": "^7.18.6",
"@codemirror/theme-one-dark": "^6.0.0",
"@uiw/codemirror-extensions-basic-setup": "4.11.5",
"codemirror": "^6.0.0"
},
"dependencies": {
"@babel/runtime": {
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz",
"integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
}
}
},
"@webassemblyjs/ast": { "@webassemblyjs/ast": {
"version": "1.9.0", "version": "1.9.0",
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
...@@ -4650,6 +4787,20 @@ ...@@ -4650,6 +4787,20 @@
"q": "^1.1.2" "q": "^1.1.2"
} }
}, },
"codemirror": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",
"integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
"requires": {
"@codemirror/autocomplete": "^6.0.0",
"@codemirror/commands": "^6.0.0",
"@codemirror/language": "^6.0.0",
"@codemirror/lint": "^6.0.0",
"@codemirror/search": "^6.0.0",
"@codemirror/state": "^6.0.0",
"@codemirror/view": "^6.0.0"
}
},
"collect-v8-coverage": { "collect-v8-coverage": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
...@@ -4984,6 +5135,11 @@ ...@@ -4984,6 +5135,11 @@
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
"dev": true "dev": true
}, },
"crelt": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
"integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA=="
},
"cross-fetch": { "cross-fetch": {
"version": "3.0.6", "version": "3.0.6",
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz",
...@@ -15689,6 +15845,11 @@ ...@@ -15689,6 +15845,11 @@
"schema-utils": "^2.7.0" "schema-utils": "^2.7.0"
} }
}, },
"style-mod": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz",
"integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw=="
},
"stylehacks": { "stylehacks": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
...@@ -16580,6 +16741,11 @@ ...@@ -16580,6 +16741,11 @@
"browser-process-hrtime": "^1.0.0" "browser-process-hrtime": "^1.0.0"
} }
}, },
"w3c-keyname": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
"integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg=="
},
"w3c-xmlserializer": { "w3c-xmlserializer": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
"protobufjs": "6.11.2", "protobufjs": "6.11.2",
"react": "^17.0.1", "react": "^17.0.1",
"react-bootstrap": "1.4.0", "react-bootstrap": "1.4.0",
"@uiw/react-codemirror": "4.11.5",
"react-dom": "^17.0.1", "react-dom": "^17.0.1",
"react-icons": "4.1.0", "react-icons": "4.1.0",
"react-router-dom": "5.2.0", "react-router-dom": "5.2.0",
......
...@@ -5,6 +5,7 @@ import NrpHeader from '../nrp-header/nrp-header.js'; ...@@ -5,6 +5,7 @@ import NrpHeader from '../nrp-header/nrp-header.js';
import './entry-page.css'; import './entry-page.css';
import PlaceholderImage from '../../assets/images/Artificial_Intelligence_2.jpg'; import PlaceholderImage from '../../assets/images/Artificial_Intelligence_2.jpg';
import NrpCoreDashboard from '../nrp-core-dashboard/nrp-core-dashboard.js'; import NrpCoreDashboard from '../nrp-core-dashboard/nrp-core-dashboard.js';
import TransceiverFunctionEditor from '../tf-editor/tf-editor';
export default class EntryPage extends React.Component { export default class EntryPage extends React.Component {
render() { render() {
...@@ -33,6 +34,7 @@ export default class EntryPage extends React.Component { ...@@ -33,6 +34,7 @@ export default class EntryPage extends React.Component {
<div><b>!!! NRP Core testing !!!</b></div> <div><b>!!! NRP Core testing !!!</b></div>
</div> </div>
<NrpCoreDashboard /> <NrpCoreDashboard />
<TransceiverFunctionEditor />
</div> </div>
); );
} }
......
import React from 'react';
import CodeMirror from '@uiw/react-codemirror';
import ExperimentStorageService from '../../services/experiments/files/experiment-storage-service';
export default class TransceiverFunctionEditor extends React.Component {
constructor(props) {
super(props);
this.testListTfFiles = ['cg_mqtt.py', 'cg_mqtt_2.py', 'cg_mqtt_3.py'];
this.state = {
selectedFilename: this.testListTfFiles[0],
code: '',
unsavedChanges: false
};
}
async componentDidMount() {
this.loadFileContent(this.state.selectedFilename);
}
onChangeSelectedFile(event) {
//TODO: check for unsaved changes
let filename = event.target.value;
console.info('onChangeSelectedFile');
console.info(filename);
this.setState({selectedFilename: filename});
this.loadFileContent(filename);
}
async loadFileContent(filename) {
let fileBlob = await ExperimentStorageService.instance.getBlob('mqtt_simple_1', filename, true);
let fileContent = await fileBlob.text();
this.setState({code: fileContent});
}
onChangeCodemirror(change) {
//console.info('onChangeCodemirror');
//console.info(change);
}
onClickSave() {
console.info('Save clicked!');
}
render() {
return (
<div>
<select
name="selectTFFile"
value={this.state.selectedFilename}
onChange={(event) => this.onChangeSelectedFile(event)}>
{this.testListTfFiles.map(file => {
return (<option key={file} value={file}>{file}</option>);
})}
</select>
<button onClick={this.onClickSave}>Save</button>
<CodeMirror value={this.state.code} maxHeight="100%" onChange={(change) => this.onChangeCodemirror(change)}/>
</div>
);
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment