From 80960dc274465fc0f2681def3f5222eb7fa932a2 Mon Sep 17 00:00:00 2001 From: sudipt1999 Date: Sat, 7 Mar 2020 19:48:18 +0530 Subject: [PATCH 1/4] Set the GET operation as default operation to fast quering around endpoints, fixes #10 --- console-frontend/build/asset-manifest.json | 6 ++-- console-frontend/build/index.html | 2 +- ...ifest.0686c5bf53e44dea3bfb5d188bd94217.js} | 8 ++--- ...nifest.dbd30e7bbeb78a0eae5dcb8a4e9d52e9.js | 22 -------------- console-frontend/build/service-worker.js | 2 +- .../build/static/js/main.2e5459c8.chunk.js | 2 -- .../static/js/main.2e5459c8.chunk.js.map | 1 - .../build/static/js/main.44fd7dbc.chunk.js | 2 ++ .../static/js/main.44fd7dbc.chunk.js.map | 1 + .../build/static/js/main.a1aa2e85.chunk.js | 2 -- .../static/js/main.a1aa2e85.chunk.js.map | 1 - .../components/hydra-console/HydraConsole.jsx | 30 ++++++++++++++----- .../operations-buttons/OperationsButtons.jsx | 9 ++++-- 13 files changed, 42 insertions(+), 46 deletions(-) rename console-frontend/build/{precache-manifest.02b26fb4dc23ffa64a91945b5e98557b.js => precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js} (66%) delete mode 100644 console-frontend/build/precache-manifest.dbd30e7bbeb78a0eae5dcb8a4e9d52e9.js delete mode 100644 console-frontend/build/static/js/main.2e5459c8.chunk.js delete mode 100644 console-frontend/build/static/js/main.2e5459c8.chunk.js.map create mode 100644 console-frontend/build/static/js/main.44fd7dbc.chunk.js create mode 100644 console-frontend/build/static/js/main.44fd7dbc.chunk.js.map delete mode 100644 console-frontend/build/static/js/main.a1aa2e85.chunk.js delete mode 100644 console-frontend/build/static/js/main.a1aa2e85.chunk.js.map diff --git a/console-frontend/build/asset-manifest.json b/console-frontend/build/asset-manifest.json index 43bb6de..94319c2 100644 --- a/console-frontend/build/asset-manifest.json +++ b/console-frontend/build/asset-manifest.json @@ -1,14 +1,14 @@ { "files": { "main.css": "/static/css/main.b015b8f6.chunk.css", - "main.js": "/static/js/main.2e5459c8.chunk.js", - "main.js.map": "/static/js/main.2e5459c8.chunk.js.map", + "main.js": "/static/js/main.44fd7dbc.chunk.js", + "main.js.map": "/static/js/main.44fd7dbc.chunk.js.map", "runtime~main.js": "/static/js/runtime~main.a8a9905a.js", "runtime~main.js.map": "/static/js/runtime~main.a8a9905a.js.map", "static/js/2.cd05a796.chunk.js": "/static/js/2.cd05a796.chunk.js", "static/js/2.cd05a796.chunk.js.map": "/static/js/2.cd05a796.chunk.js.map", "index.html": "/index.html", - "precache-manifest.dbd30e7bbeb78a0eae5dcb8a4e9d52e9.js": "/precache-manifest.dbd30e7bbeb78a0eae5dcb8a4e9d52e9.js", + "precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js": "/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js", "service-worker.js": "/service-worker.js", "static/css/main.b015b8f6.chunk.css.map": "/static/css/main.b015b8f6.chunk.css.map" } diff --git a/console-frontend/build/index.html b/console-frontend/build/index.html index 3d2511f..ed1dd19 100644 --- a/console-frontend/build/index.html +++ b/console-frontend/build/index.html @@ -1 +1 @@ -Hydra Agent
\ No newline at end of file +Hydra Agent
\ No newline at end of file diff --git a/console-frontend/build/precache-manifest.02b26fb4dc23ffa64a91945b5e98557b.js b/console-frontend/build/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js similarity index 66% rename from console-frontend/build/precache-manifest.02b26fb4dc23ffa64a91945b5e98557b.js rename to console-frontend/build/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js index cd8c1c7..21e5fac 100644 --- a/console-frontend/build/precache-manifest.02b26fb4dc23ffa64a91945b5e98557b.js +++ b/console-frontend/build/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js @@ -1,10 +1,10 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "fe4a385bf4b516d55b7c060d62114bb1", + "revision": "ddf5b46dcf5465c268e04b7cf8414cd4", "url": "/index.html" }, { - "revision": "f7ef9ccbb1937dd42789", + "revision": "8a1c1b0f156b4782e7a3", "url": "/static/css/main.b015b8f6.chunk.css" }, { @@ -12,8 +12,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/static/js/2.cd05a796.chunk.js" }, { - "revision": "f7ef9ccbb1937dd42789", - "url": "/static/js/main.a1aa2e85.chunk.js" + "revision": "8a1c1b0f156b4782e7a3", + "url": "/static/js/main.44fd7dbc.chunk.js" }, { "revision": "42ac5946195a7306e2a5", diff --git a/console-frontend/build/precache-manifest.dbd30e7bbeb78a0eae5dcb8a4e9d52e9.js b/console-frontend/build/precache-manifest.dbd30e7bbeb78a0eae5dcb8a4e9d52e9.js deleted file mode 100644 index a85a082..0000000 --- a/console-frontend/build/precache-manifest.dbd30e7bbeb78a0eae5dcb8a4e9d52e9.js +++ /dev/null @@ -1,22 +0,0 @@ -self.__precacheManifest = (self.__precacheManifest || []).concat([ - { - "revision": "999204136a12eed5087f55e50aa5917b", - "url": "/index.html" - }, - { - "revision": "968b818ae6dd728e250d", - "url": "/static/css/main.b015b8f6.chunk.css" - }, - { - "revision": "a60891681800a984f7f5", - "url": "/static/js/2.cd05a796.chunk.js" - }, - { - "revision": "968b818ae6dd728e250d", - "url": "/static/js/main.2e5459c8.chunk.js" - }, - { - "revision": "42ac5946195a7306e2a5", - "url": "/static/js/runtime~main.a8a9905a.js" - } -]); \ No newline at end of file diff --git a/console-frontend/build/service-worker.js b/console-frontend/build/service-worker.js index ceeac9b..65eacce 100644 --- a/console-frontend/build/service-worker.js +++ b/console-frontend/build/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/precache-manifest.dbd30e7bbeb78a0eae5dcb8a4e9d52e9.js" + "/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js" ); self.addEventListener('message', (event) => { diff --git a/console-frontend/build/static/js/main.2e5459c8.chunk.js b/console-frontend/build/static/js/main.2e5459c8.chunk.js deleted file mode 100644 index f09c068..0000000 --- a/console-frontend/build/static/js/main.2e5459c8.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),w=n(170),j=n(167),x=n(168),R=n(126),I=n(164),L=n(70),S=n.n(L),A=n(43),P=n(163),D=n(169),N=n(71),B=n(162),Z=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),U=n(21),F=n.n(U),W=n(69),Y=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(P.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),T=Object(R.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(Y),J=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.operations).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(R.a)(function(e){return{fabMargin:{}}})(J),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(I.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(R.a)(function(e){return{propertyInput:{color:Z.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(R.a)({root:{"& label.Mui-focused":{color:Z.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:Z.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:Z.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:Z.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:Z.palette.primary.light}}}})(D.a),G=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=null,a=[];for(var o in n.agentEndpoint="",n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";return n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n.temporaryEndpoint=null,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"selectEndpoint",value:function(e){this.setState({selectedEndpointIndex:e,selectedOperationIndex:0})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,this.setState({resourcesIDs:t})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void F.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void F.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void F.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void F.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}F.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(I.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(I.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(T,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(I.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}})),a.a.createElement(I.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(I.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(I.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(I.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:Z.palette.primary.light}},InputLabelProps:{style:{color:Z.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(P.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(I.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(W.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),V=Object(R.a)(function(e){return{outContainer:Object(A.a)({height:"87vh",backgroundColor:Z.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:Z.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:Z.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(A.a)({height:"40vh",width:"90%",backgroundColor:Z.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:Z.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"}}})(G),q=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),H=Object(R.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(q),M=(n(119),n(166)),_=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;F.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),F.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;F.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){F.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(M.a,{theme:Z},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:Z.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(I.a,{container:!0},a.a.createElement(I.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:Z.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(I.a,{container:!0,direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(w.a,{htmlFor:"aaaaa"},"Server URL:"),a.a.createElement(O.a,{id:"aaaaa",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(j.a,{position:"end"},a.a.createElement(x.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(S.a,null)))})),a.a.createElement(H,{apidocGraph:this.state.apidocGraph})),a.a.createElement(I.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:Z.palette.primary.dark}),a.a.createElement(V,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),$=Object(R.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:Z.palette.primary.light,border:10},serverInput:{width:"93%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})(_);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement($,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); -//# sourceMappingURL=main.2e5459c8.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.2e5459c8.chunk.js.map b/console-frontend/build/static/js/main.2e5459c8.chunk.js.map deleted file mode 100644 index 5f4cb6f..0000000 --- a/console-frontend/build/static/js/main.2e5459c8.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","operationsArray","method","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","HydraConsole","classesMapping","agentEndpoint","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","selectedEndpointIndex","outputText","temporaryEndpoint","selectedEndpoint","selectedOperation","getURL","endpointIndex","operationIndex","auxProperties","assign","target","filteredProperties","resourceType","replace","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","JSON","stringify","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this3","range","selectedHydraClass","supportedOperation","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","_this4","ThemeProvider","navbar_NavBar","toggleGraph","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.2e5459c8.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n Object.keys(this.props.operations).forEach( (operation) => {\n buttons[operation] = false\n })\n\n const selectedButton = 0;\n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n )\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n }\n});\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n this.temporaryEndpoint = null;\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n }\n\n componentDidMount() {\n }\n\n selectEndpoint(endpointIndex) {\n this.setState(\n {selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: 0}\n )\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n \n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[\n this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10\n },\n serverInput: {\n width: '93%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/build/static/js/main.44fd7dbc.chunk.js b/console-frontend/build/static/js/main.44fd7dbc.chunk.js new file mode 100644 index 0000000..0dd5966 --- /dev/null +++ b/console-frontend/build/static/js/main.44fd7dbc.chunk.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),w=n(170),x=n(167),j=n(168),R=n(126),I=n(164),L=n(70),S=n.n(L),A=n(43),P=n(163),D=n(169),N=n(71),B=n(162),Z=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),U=n(21),F=n.n(U),T=n(69),W=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(P.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Y=Object(R.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(W),J=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[],a=0;return Object.keys(n.props.operations).forEach(function(e,t){r[e]=!1,"GET"==n.props.operations[e].method&&(a=t)}),r[a]=!0,n.state={buttons:r,selectedButton:a},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(R.a)(function(e){return{fabMargin:{}}})(J),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(I.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(R.a)(function(e){return{propertyInput:{color:Z.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(R.a)({root:{"& label.Mui-focused":{color:Z.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:Z.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:Z.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:Z.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:Z.palette.primary.light}}}})(D.a),G=function(e){function t(e){var n;Object(i.a)(this,t);var r=null,a=[];(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).agentEndpoint="";for(var o in n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";return n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n.temporaryEndpoint=null,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"selectEndpoint",value:function(e){var t=this.state.endpoints[e];this.selectedEndpoint=t;var n=t.property.range.replace("Collection","");this.temporaryEndpoint=n;var r=this.state.hydraClasses[n].supportedOperation,a=0;r.map(function(e,t){"GET"==e.method&&(a=t)}),this.setState({selectedEndpointIndex:e,selectedOperationIndex:a})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,this.setState({resourcesIDs:t})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void F.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void F.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void F.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void F.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}F.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(I.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(I.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Y,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(I.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}})),a.a.createElement(I.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(I.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(I.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(I.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:Z.palette.primary.light}},InputLabelProps:{style:{color:Z.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(P.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(I.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(T.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),V=Object(R.a)(function(e){return{outContainer:Object(A.a)({height:"87vh",backgroundColor:Z.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:Z.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:Z.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(A.a)({height:"40vh",width:"90%",backgroundColor:Z.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:Z.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"}}})(G),q=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),H=Object(R.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(q),M=(n(119),n(166)),_=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;F.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),F.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;F.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){F.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(M.a,{theme:Z},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:Z.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(I.a,{container:!0},a.a.createElement(I.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:Z.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(I.a,{container:!0,display:"flex",direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(w.a,{htmlFor:"server_url_input"},"Server URL:"),a.a.createElement(O.a,{id:"server_url_input",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(x.a,{position:"end"},a.a.createElement(j.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(S.a,null)))})),a.a.createElement(H,{apidocGraph:this.state.apidocGraph})),a.a.createElement(I.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:Z.palette.primary.dark}),a.a.createElement(V,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),$=Object(R.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:Z.palette.primary.light,border:10,display:"flex"},serverInput:{width:"75%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})(_);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement($,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); +//# sourceMappingURL=main.44fd7dbc.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.44fd7dbc.chunk.js.map b/console-frontend/build/static/js/main.44fd7dbc.chunk.js.map new file mode 100644 index 0000000..7764ddf --- /dev/null +++ b/console-frontend/build/static/js/main.44fd7dbc.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","method","operationsArray","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","HydraConsole","classesMapping","agentEndpoint","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","selectedEndpointIndex","outputText","temporaryEndpoint","selectedEndpoint","selectedOperation","getURL","endpointIndex","range","replace","supportedOperation","operationIndex","auxProperties","assign","target","filteredProperties","resourceType","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","JSON","stringify","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this3","selectedHydraClass","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","_this4","ThemeProvider","navbar_NavBar","toggleGraph","display","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.44fd7dbc.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n let selectedButton = 0;\n\n const operationsArray = Object.keys(this.props.operations);\n operationsArray.forEach( (operation, index) => {\n buttons[operation] = false\n if(this.props.operations[operation].method == \"GET\")\n selectedButton = index\n })\n\n \n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n )\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n }\n});\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n let selectedOperationIndex = 0\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n this.temporaryEndpoint = null;\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n }\n\n componentDidMount() {\n }\n\n selectEndpoint(endpointIndex) {\n const selectedEndpoint = this.state.endpoints[endpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n\n const selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; \n const operations = selectedHydraClass.supportedOperation\n\n let selectedOperationIndex = 0;\n operations.map((operation, index) => {\n if(operation.method == \"GET\")\n selectedOperationIndex = index\n })\n\n this.setState({\n selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: selectedOperationIndex\n })\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n //console.log(\"SELECTEDENDPOINT \", this.selectEndpoint)\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n // console.log(\"TEMPORYENDPOINT \", this.temporaryEndpoint)\n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10,\n display: 'flex'\n },\n serverInput: {\n width: '75%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/build/static/js/main.a1aa2e85.chunk.js b/console-frontend/build/static/js/main.a1aa2e85.chunk.js deleted file mode 100644 index fffc2aa..0000000 --- a/console-frontend/build/static/js/main.a1aa2e85.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),w=n(170),x=n(167),j=n(168),R=n(126),I=n(164),L=n(70),S=n.n(L),A=n(43),P=n(163),D=n(169),N=n(71),B=n(162),Z=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),U=n(21),F=n.n(U),W=n(69),Y=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(P.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),T=Object(R.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(Y),J=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.operations).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(R.a)(function(e){return{fabMargin:{}}})(J),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(I.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(R.a)(function(e){return{propertyInput:{color:Z.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(R.a)({root:{"& label.Mui-focused":{color:Z.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:Z.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:Z.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:Z.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:Z.palette.primary.light}}}})(D.a),G=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=null,a=[];for(var o in n.agentEndpoint="",n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";return n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n.temporaryEndpoint=null,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"selectEndpoint",value:function(e){this.setState({selectedEndpointIndex:e,selectedOperationIndex:0})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,this.setState({resourcesIDs:t})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void F.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void F.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void F.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void F.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}F.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(I.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(I.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(T,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(I.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}})),a.a.createElement(I.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(I.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(I.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(I.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:Z.palette.primary.light}},InputLabelProps:{style:{color:Z.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(P.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(I.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(W.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),V=Object(R.a)(function(e){return{outContainer:Object(A.a)({height:"87vh",backgroundColor:Z.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:Z.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:Z.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(A.a)({height:"40vh",width:"90%",backgroundColor:Z.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:Z.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"}}})(G),q=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),H=Object(R.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(q),M=(n(119),n(166)),_=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;F.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),F.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;F.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){F.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(M.a,{theme:Z},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:Z.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(I.a,{container:!0},a.a.createElement(I.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:Z.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(I.a,{container:!0,display:"flex",direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(w.a,{htmlFor:"server_url_input"},"Server URL:"),a.a.createElement(O.a,{id:"server_url_input",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(x.a,{position:"end"},a.a.createElement(j.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(S.a,null)))})),a.a.createElement(H,{apidocGraph:this.state.apidocGraph})),a.a.createElement(I.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:Z.palette.primary.dark}),a.a.createElement(V,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),$=Object(R.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:Z.palette.primary.light,border:10,display:"flex"},serverInput:{width:"75%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})(_);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement($,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); -//# sourceMappingURL=main.a1aa2e85.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.a1aa2e85.chunk.js.map b/console-frontend/build/static/js/main.a1aa2e85.chunk.js.map deleted file mode 100644 index 35461d7..0000000 --- a/console-frontend/build/static/js/main.a1aa2e85.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","operationsArray","method","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","HydraConsole","classesMapping","agentEndpoint","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","selectedEndpointIndex","outputText","temporaryEndpoint","selectedEndpoint","selectedOperation","getURL","endpointIndex","operationIndex","auxProperties","assign","target","filteredProperties","resourceType","replace","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","JSON","stringify","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this3","range","selectedHydraClass","supportedOperation","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","_this4","ThemeProvider","navbar_NavBar","toggleGraph","display","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.a1aa2e85.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n Object.keys(this.props.operations).forEach( (operation) => {\n buttons[operation] = false\n })\n\n const selectedButton = 0;\n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n )\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n }\n});\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n this.temporaryEndpoint = null;\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n }\n\n componentDidMount() {\n }\n\n selectEndpoint(endpointIndex) {\n this.setState(\n {selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: 0}\n )\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n \n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[\n this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10,\n display: 'flex'\n },\n serverInput: {\n width: '75%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/src/components/hydra-console/HydraConsole.jsx b/console-frontend/src/components/hydra-console/HydraConsole.jsx index e8e5e81..a3061ed 100644 --- a/console-frontend/src/components/hydra-console/HydraConsole.jsx +++ b/console-frontend/src/components/hydra-console/HydraConsole.jsx @@ -110,6 +110,7 @@ class HydraConsole extends React.Component { var endpoints = null; var classesMapping = [] this.agentEndpoint = "" + let selectedOperationIndex = 0 // Modifying reference from indexed array[0, 1, 2] to name ["vocab:Drone", "vocab:.."] for(var index in this.props.hydraClasses){ @@ -151,10 +152,25 @@ class HydraConsole extends React.Component { } selectEndpoint(endpointIndex) { - this.setState( - {selectedEndpointIndex: endpointIndex, - selectedOperationIndex: 0} - ) + const selectedEndpoint = this.state.endpoints[endpointIndex]; + this.selectedEndpoint = selectedEndpoint; + + const temporaryEndpoint = selectedEndpoint.property.range.replace("Collection", "") + this.temporaryEndpoint = temporaryEndpoint; + + const selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; + const operations = selectedHydraClass.supportedOperation + + let selectedOperationIndex = 0; + operations.map((operation, index) => { + if(operation.method == "GET") + selectedOperationIndex = index + }) + + this.setState({ + selectedEndpointIndex: endpointIndex, + selectedOperationIndex: selectedOperationIndex + }) } selectOperation(operationIndex) { @@ -309,14 +325,14 @@ class HydraConsole extends React.Component { const { classes } = this.props; const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex]; this.selectedEndpoint = selectedEndpoint; + //console.log("SELECTEDENDPOINT ", this.selectEndpoint) const temporaryEndpoint = selectedEndpoint.property.range.replace("Collection", "") this.temporaryEndpoint = temporaryEndpoint; - + // console.log("TEMPORYENDPOINT ", this.temporaryEndpoint) var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; - const selectedOperation = selectedHydraClass.supportedOperation[ - this.state.selectedOperationIndex]; + const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex]; this.selectedOperation = selectedOperation; var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer); diff --git a/console-frontend/src/components/hydra-console/operations-buttons/OperationsButtons.jsx b/console-frontend/src/components/hydra-console/operations-buttons/OperationsButtons.jsx index a051bfe..6ec0c95 100644 --- a/console-frontend/src/components/hydra-console/operations-buttons/OperationsButtons.jsx +++ b/console-frontend/src/components/hydra-console/operations-buttons/OperationsButtons.jsx @@ -12,11 +12,16 @@ class OperationsButtons extends React.Component { super(props); var buttons = [] - Object.keys(this.props.operations).forEach( (operation) => { + let selectedButton = 0; + + const operationsArray = Object.keys(this.props.operations); + operationsArray.forEach( (operation, index) => { buttons[operation] = false + if(this.props.operations[operation].method == "GET") + selectedButton = index }) - const selectedButton = 0; + buttons[ selectedButton ] = true this.state = { From 784ffcccaeba5b101d4819b30af35d3022d3a22c Mon Sep 17 00:00:00 2001 From: sudipt1999 Date: Tue, 10 Mar 2020 14:34:32 +0530 Subject: [PATCH 2/4] added a clear form button also used local storage to store the field values of a endpoint --- console-frontend/build/asset-manifest.json | 6 +- console-frontend/build/index.html | 2 +- ...ifest.a151c66861e1e31097c8e57f3b618f19.js} | 8 +- console-frontend/build/service-worker.js | 2 +- .../build/static/js/main.44fd7dbc.chunk.js | 2 - .../static/js/main.44fd7dbc.chunk.js.map | 1 - .../build/static/js/main.5ff02c1a.chunk.js | 2 + .../static/js/main.5ff02c1a.chunk.js.map | 1 + .../components/hydra-console/HydraConsole.jsx | 90 +++++++++++++++++-- 9 files changed, 96 insertions(+), 18 deletions(-) rename console-frontend/build/{precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js => precache-manifest.a151c66861e1e31097c8e57f3b618f19.js} (66%) delete mode 100644 console-frontend/build/static/js/main.44fd7dbc.chunk.js delete mode 100644 console-frontend/build/static/js/main.44fd7dbc.chunk.js.map create mode 100644 console-frontend/build/static/js/main.5ff02c1a.chunk.js create mode 100644 console-frontend/build/static/js/main.5ff02c1a.chunk.js.map diff --git a/console-frontend/build/asset-manifest.json b/console-frontend/build/asset-manifest.json index 94319c2..3506e98 100644 --- a/console-frontend/build/asset-manifest.json +++ b/console-frontend/build/asset-manifest.json @@ -1,14 +1,14 @@ { "files": { "main.css": "/static/css/main.b015b8f6.chunk.css", - "main.js": "/static/js/main.44fd7dbc.chunk.js", - "main.js.map": "/static/js/main.44fd7dbc.chunk.js.map", + "main.js": "/static/js/main.5ff02c1a.chunk.js", + "main.js.map": "/static/js/main.5ff02c1a.chunk.js.map", "runtime~main.js": "/static/js/runtime~main.a8a9905a.js", "runtime~main.js.map": "/static/js/runtime~main.a8a9905a.js.map", "static/js/2.cd05a796.chunk.js": "/static/js/2.cd05a796.chunk.js", "static/js/2.cd05a796.chunk.js.map": "/static/js/2.cd05a796.chunk.js.map", "index.html": "/index.html", - "precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js": "/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js", + "precache-manifest.a151c66861e1e31097c8e57f3b618f19.js": "/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js", "service-worker.js": "/service-worker.js", "static/css/main.b015b8f6.chunk.css.map": "/static/css/main.b015b8f6.chunk.css.map" } diff --git a/console-frontend/build/index.html b/console-frontend/build/index.html index ed1dd19..07527ec 100644 --- a/console-frontend/build/index.html +++ b/console-frontend/build/index.html @@ -1 +1 @@ -Hydra Agent
\ No newline at end of file +Hydra Agent
\ No newline at end of file diff --git a/console-frontend/build/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js b/console-frontend/build/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js similarity index 66% rename from console-frontend/build/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js rename to console-frontend/build/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js index 21e5fac..64fcc0f 100644 --- a/console-frontend/build/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js +++ b/console-frontend/build/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js @@ -1,10 +1,10 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "ddf5b46dcf5465c268e04b7cf8414cd4", + "revision": "400e5d74dfdc95941c40cd8c4b63cdd2", "url": "/index.html" }, { - "revision": "8a1c1b0f156b4782e7a3", + "revision": "9bad1d6f1ef037bc46ce", "url": "/static/css/main.b015b8f6.chunk.css" }, { @@ -12,8 +12,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/static/js/2.cd05a796.chunk.js" }, { - "revision": "8a1c1b0f156b4782e7a3", - "url": "/static/js/main.44fd7dbc.chunk.js" + "revision": "9bad1d6f1ef037bc46ce", + "url": "/static/js/main.5ff02c1a.chunk.js" }, { "revision": "42ac5946195a7306e2a5", diff --git a/console-frontend/build/service-worker.js b/console-frontend/build/service-worker.js index 65eacce..e236f6d 100644 --- a/console-frontend/build/service-worker.js +++ b/console-frontend/build/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/precache-manifest.0686c5bf53e44dea3bfb5d188bd94217.js" + "/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js" ); self.addEventListener('message', (event) => { diff --git a/console-frontend/build/static/js/main.44fd7dbc.chunk.js b/console-frontend/build/static/js/main.44fd7dbc.chunk.js deleted file mode 100644 index 0dd5966..0000000 --- a/console-frontend/build/static/js/main.44fd7dbc.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),w=n(170),x=n(167),j=n(168),R=n(126),I=n(164),L=n(70),S=n.n(L),A=n(43),P=n(163),D=n(169),N=n(71),B=n(162),Z=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),U=n(21),F=n.n(U),T=n(69),W=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(P.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Y=Object(R.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(W),J=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[],a=0;return Object.keys(n.props.operations).forEach(function(e,t){r[e]=!1,"GET"==n.props.operations[e].method&&(a=t)}),r[a]=!0,n.state={buttons:r,selectedButton:a},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(R.a)(function(e){return{fabMargin:{}}})(J),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(I.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(R.a)(function(e){return{propertyInput:{color:Z.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(R.a)({root:{"& label.Mui-focused":{color:Z.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:Z.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:Z.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:Z.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:Z.palette.primary.light}}}})(D.a),G=function(e){function t(e){var n;Object(i.a)(this,t);var r=null,a=[];(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).agentEndpoint="";for(var o in n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";return n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n.temporaryEndpoint=null,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"selectEndpoint",value:function(e){var t=this.state.endpoints[e];this.selectedEndpoint=t;var n=t.property.range.replace("Collection","");this.temporaryEndpoint=n;var r=this.state.hydraClasses[n].supportedOperation,a=0;r.map(function(e,t){"GET"==e.method&&(a=t)}),this.setState({selectedEndpointIndex:e,selectedOperationIndex:a})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,this.setState({resourcesIDs:t})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void F.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void F.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void F.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void F.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}F.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(I.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(I.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Y,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(I.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}})),a.a.createElement(I.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(I.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(I.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(I.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:Z.palette.primary.light}},InputLabelProps:{style:{color:Z.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(P.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(I.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(T.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),V=Object(R.a)(function(e){return{outContainer:Object(A.a)({height:"87vh",backgroundColor:Z.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:Z.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:Z.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(A.a)({height:"40vh",width:"90%",backgroundColor:Z.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:Z.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"}}})(G),q=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),H=Object(R.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(q),M=(n(119),n(166)),_=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;F.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),F.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;F.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){F.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(M.a,{theme:Z},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:Z.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(I.a,{container:!0},a.a.createElement(I.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:Z.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(I.a,{container:!0,display:"flex",direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(w.a,{htmlFor:"server_url_input"},"Server URL:"),a.a.createElement(O.a,{id:"server_url_input",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(x.a,{position:"end"},a.a.createElement(j.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(S.a,null)))})),a.a.createElement(H,{apidocGraph:this.state.apidocGraph})),a.a.createElement(I.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:Z.palette.primary.dark}),a.a.createElement(V,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),$=Object(R.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:Z.palette.primary.light,border:10,display:"flex"},serverInput:{width:"75%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})(_);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement($,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); -//# sourceMappingURL=main.44fd7dbc.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.44fd7dbc.chunk.js.map b/console-frontend/build/static/js/main.44fd7dbc.chunk.js.map deleted file mode 100644 index 7764ddf..0000000 --- a/console-frontend/build/static/js/main.44fd7dbc.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","method","operationsArray","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","HydraConsole","classesMapping","agentEndpoint","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","selectedEndpointIndex","outputText","temporaryEndpoint","selectedEndpoint","selectedOperation","getURL","endpointIndex","range","replace","supportedOperation","operationIndex","auxProperties","assign","target","filteredProperties","resourceType","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","JSON","stringify","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this3","selectedHydraClass","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","_this4","ThemeProvider","navbar_NavBar","toggleGraph","display","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.44fd7dbc.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n let selectedButton = 0;\n\n const operationsArray = Object.keys(this.props.operations);\n operationsArray.forEach( (operation, index) => {\n buttons[operation] = false\n if(this.props.operations[operation].method == \"GET\")\n selectedButton = index\n })\n\n \n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n )\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n }\n});\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n let selectedOperationIndex = 0\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n this.temporaryEndpoint = null;\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n }\n\n componentDidMount() {\n }\n\n selectEndpoint(endpointIndex) {\n const selectedEndpoint = this.state.endpoints[endpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n\n const selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; \n const operations = selectedHydraClass.supportedOperation\n\n let selectedOperationIndex = 0;\n operations.map((operation, index) => {\n if(operation.method == \"GET\")\n selectedOperationIndex = index\n })\n\n this.setState({\n selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: selectedOperationIndex\n })\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n //console.log(\"SELECTEDENDPOINT \", this.selectEndpoint)\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n // console.log(\"TEMPORYENDPOINT \", this.temporaryEndpoint)\n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10,\n display: 'flex'\n },\n serverInput: {\n width: '75%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/build/static/js/main.5ff02c1a.chunk.js b/console-frontend/build/static/js/main.5ff02c1a.chunk.js new file mode 100644 index 0000000..fcad767 --- /dev/null +++ b/console-frontend/build/static/js/main.5ff02c1a.chunk.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),I=n(170),x=n(167),j=n(168),w=n(126),S=n(164),R=n(70),A=n.n(R),D=n(43),L=n(163),P=n(169),N=n(71),B=n(162),U=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),Z=n(21),J=n.n(Z),F=n(69),T=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(L.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),W=Object(w.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(T),Y=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[],a=0;return Object.keys(n.props.operations).forEach(function(e,t){r[e]=!1,"GET"==n.props.operations[e].method&&(a=t)}),r[a]=!0,n.state={buttons:r,selectedButton:a},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(w.a)(function(e){return{fabMargin:{}}})(Y),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(S.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(w.a)(function(e){return{propertyInput:{color:U.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(w.a)({root:{"& label.Mui-focused":{color:U.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:U.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:U.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:U.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:U.palette.primary.light}}}})(P.a),G=function(e){function t(e){var n;Object(i.a)(this,t);var r=null,a=[];(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).agentEndpoint="";for(var o in n.temporaryEndpoint=null,n.previousEndpointIndex=0,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";return localStorage.clear(),localStorage.setItem("properties",JSON.stringify(s)),localStorage.setItem("resourceIDs",JSON.stringify(c)),n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"componentDidUpdate",value:function(){this.restorePropertiesAndResourceIDs()}},{key:"restorePropertiesAndResourceIDs",value:function(){if(this.previousEndpointIndex!=this.state.selectedEndpointIndex){var e=JSON.parse(localStorage.getItem("properties")),t=JSON.parse(localStorage.getItem("resourceIDs"));this.setState({properties:e,resourcesIDs:t}),this.previousEndpointIndex=this.state.selectedEndpointIndex}}},{key:"selectEndpoint",value:function(e){var t=this.state.endpoints[e];this.selectedEndpoint=t;var n=t.property.range.replace("Collection","");this.temporaryEndpoint=n;var r=this.state.hydraClasses[n].supportedOperation,a=0;r.map(function(e,t){"GET"==e.method&&(a=t)}),this.setState({selectedEndpointIndex:e,selectedOperationIndex:a})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,localStorage.setItem("properties",JSON.stringify(t)),this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,localStorage.setItem("resourceIDs",JSON.stringify(t)),this.setState({resourcesIDs:t})}},{key:"clearAllInputs",value:function(e){var t=this,n=Object.assign({},this.state.properties);Object.keys(n[this.temporaryEndpoint]).map(function(e){n[t.temporaryEndpoint][e]=""});var r=Object.assign({},this.state.resourcesIDs);Object.keys(r).map(function(e){r[e].ResourceID=""}),localStorage.setItem("properties",JSON.stringify(n)),localStorage.setItem("resourceIDs",JSON.stringify(r)),this.setState({properties:n,resourcesIDs:r})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void J.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void J.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void J.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void J.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}J.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(S.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(S.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(W,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(S.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}}),a.a.createElement(L.a,{"aria-label":"delete",size:"medium",variant:"contained",className:t.deleteIconButton,onClick:function(t){return e.clearAllInputs(t)}},"CLEAR")),a.a.createElement(S.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(S.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(S.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(S.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:U.palette.primary.light}},InputLabelProps:{style:{color:U.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(L.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(S.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(F.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),V=Object(w.a)(function(e){return{outContainer:Object(D.a)({height:"87vh",backgroundColor:U.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:U.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:U.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(D.a)({height:"40vh",width:"90%",backgroundColor:U.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:U.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"},deleteIconButton:{backgroundColor:U.palette.primary.light,color:U.palette.primary.dark,"&:hover":{backgroundColor:U.palette.secondary.light,color:U.palette.primary.dark}}}})(G),q=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),H=Object(w.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(q),M=(n(119),n(166)),_=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;J.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),J.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;J.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){J.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(M.a,{theme:U},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:U.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(S.a,{container:!0},a.a.createElement(S.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:U.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(S.a,{container:!0,display:"flex",direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(I.a,{htmlFor:"server_url_input"},"Server URL:"),a.a.createElement(O.a,{id:"server_url_input",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(x.a,{position:"end"},a.a.createElement(j.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(A.a,null)))})),a.a.createElement(H,{apidocGraph:this.state.apidocGraph})),a.a.createElement(S.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:U.palette.primary.dark}),a.a.createElement(V,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),$=Object(w.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:U.palette.primary.light,border:10,display:"flex"},serverInput:{width:"75%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})(_);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement($,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); +//# sourceMappingURL=main.5ff02c1a.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.5ff02c1a.chunk.js.map b/console-frontend/build/static/js/main.5ff02c1a.chunk.js.map new file mode 100644 index 0000000..3bfe49a --- /dev/null +++ b/console-frontend/build/static/js/main.5ff02c1a.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","method","operationsArray","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","HydraConsole","classesMapping","agentEndpoint","temporaryEndpoint","previousEndpointIndex","selectedEndpoint","selectedOperation","getURL","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","localStorage","clear","setItem","JSON","stringify","selectedEndpointIndex","outputText","restorePropertiesAndResourceIDs","storedProperties","parse","getItem","storedResourceIDs","endpointIndex","range","replace","supportedOperation","operationIndex","auxProperties","assign","target","_this3","filteredProperties","resourceType","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this4","selectedHydraClass","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","size","deleteIconButton","clearAllInputs","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","&:hover","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","ThemeProvider","navbar_NavBar","toggleGraph","display","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.5ff02c1a.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n let selectedButton = 0;\n\n const operationsArray = Object.keys(this.props.operations);\n operationsArray.forEach( (operation, index) => {\n buttons[operation] = false\n if(this.props.operations[operation].method == \"GET\")\n selectedButton = index\n })\n\n \n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n )\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n },\n deleteIconButton: {\n backgroundColor: GuiTheme.palette.primary.light,\n color: GuiTheme.palette.primary.dark,\n '&:hover': {\n backgroundColor: GuiTheme.palette.secondary.light,\n color: GuiTheme.palette.primary.dark,\n },\n }\n});\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n let selectedOperationIndex = 0\n\n // util variables\n this.temporaryEndpoint = null;\n this.previousEndpointIndex = 0; // for managing the state and local storage\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n \n // Initialize the local storage with the empty values\n localStorage.clear(); \n localStorage.setItem('properties', JSON.stringify(classesProperties))\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n\n\n\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n\n }\n\n componentDidMount() {\n }\n\n\n \n\n componentDidUpdate() {\n this.restorePropertiesAndResourceIDs()\n }\n\n restorePropertiesAndResourceIDs() {\n if(this.previousEndpointIndex != this.state.selectedEndpointIndex) {\n const storedProperties = JSON.parse(localStorage.getItem('properties'))\n const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs'))\n \n this.setState({\n properties: storedProperties,\n resourcesIDs: storedResourceIDs\n })\n\n // updating for next time\n this.previousEndpointIndex = this.state.selectedEndpointIndex \n }\n }\n\n selectEndpoint(endpointIndex) {\n const selectedEndpoint = this.state.endpoints[endpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n\n const selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; \n const operations = selectedHydraClass.supportedOperation\n\n let selectedOperationIndex = 0;\n operations.map((operation, index) => {\n if(operation.method == \"GET\")\n selectedOperationIndex = index\n })\n\n this.setState({\n selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: selectedOperationIndex\n })\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n \n localStorage.setItem('properties', JSON.stringify(auxProperties))\n \n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n \n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n clearAllInputs(e) {\n // Will clear the current endpoints input \n let auxProperties = Object.assign({}, this.state.properties);\n Object.keys(auxProperties[this.temporaryEndpoint]).map(name => {\n auxProperties[this.temporaryEndpoint][name] = \"\"\n })\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n Object.keys(resourcesIDs).map(name => {\n resourcesIDs[name]['ResourceID'] = \"\"\n })\n\n localStorage.setItem('properties', JSON.stringify(auxProperties))\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n\n\n this.setState({\n properties: auxProperties,\n resourcesIDs: resourcesIDs\n })\n }\n\n\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n \n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10,\n display: 'flex'\n },\n serverInput: {\n width: '75%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/src/components/hydra-console/HydraConsole.jsx b/console-frontend/src/components/hydra-console/HydraConsole.jsx index a3061ed..4da5dcc 100644 --- a/console-frontend/src/components/hydra-console/HydraConsole.jsx +++ b/console-frontend/src/components/hydra-console/HydraConsole.jsx @@ -101,6 +101,14 @@ const styles = theme => ({ boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)', height: 48, width: '22%', + }, + deleteIconButton: { + backgroundColor: GuiTheme.palette.primary.light, + color: GuiTheme.palette.primary.dark, + '&:hover': { + backgroundColor: GuiTheme.palette.secondary.light, + color: GuiTheme.palette.primary.dark, + }, } }); @@ -111,6 +119,13 @@ class HydraConsole extends React.Component { var classesMapping = [] this.agentEndpoint = "" let selectedOperationIndex = 0 + + // util variables + this.temporaryEndpoint = null; + this.previousEndpointIndex = 0; // for managing the state and local storage + this.selectedEndpoint = null; + this.selectedOperation = null; + this.getURL = true; // Modifying reference from indexed array[0, 1, 2] to name ["vocab:Drone", "vocab:.."] for(var index in this.props.hydraClasses){ @@ -133,6 +148,14 @@ class HydraConsole extends React.Component { classesMapping[auxClass].supportedProperty[auxProperty].title] = "" } } + + // Initialize the local storage with the empty values + localStorage.clear(); + localStorage.setItem('properties', JSON.stringify(classesProperties)) + localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs)) + + + this.state = { hydraClasses: classesMapping, endpoints: endpoints, @@ -142,15 +165,34 @@ class HydraConsole extends React.Component { selectedOperationIndex: 0, outputText: " Your request output will be displayed here..." }; - this.temporaryEndpoint = null; - this.selectedEndpoint = null; - this.selectedOperation = null; - this.getURL = true; + } componentDidMount() { } + + + + componentDidUpdate() { + this.restorePropertiesAndResourceIDs() + } + + restorePropertiesAndResourceIDs() { + if(this.previousEndpointIndex != this.state.selectedEndpointIndex) { + const storedProperties = JSON.parse(localStorage.getItem('properties')) + const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs')) + + this.setState({ + properties: storedProperties, + resourcesIDs: storedResourceIDs + }) + + // updating for next time + this.previousEndpointIndex = this.state.selectedEndpointIndex + } + } + selectEndpoint(endpointIndex) { const selectedEndpoint = this.state.endpoints[endpointIndex]; this.selectedEndpoint = selectedEndpoint; @@ -185,6 +227,9 @@ class HydraConsole extends React.Component { let auxProperties = Object.assign({}, this.state.properties); auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value; + + localStorage.setItem('properties', JSON.stringify(auxProperties)) + this.setState({ properties: auxProperties }) @@ -196,11 +241,38 @@ class HydraConsole extends React.Component { let resourcesIDs = Object.assign({}, this.state.resourcesIDs); resourcesIDs[e.target.name]['ResourceID'] = e.target.value; + + localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs)) + + this.setState({ + resourcesIDs: resourcesIDs + }) + } + + clearAllInputs(e) { + // Will clear the current endpoints input + let auxProperties = Object.assign({}, this.state.properties); + Object.keys(auxProperties[this.temporaryEndpoint]).map(name => { + auxProperties[this.temporaryEndpoint][name] = "" + }) + + let resourcesIDs = Object.assign({}, this.state.resourcesIDs); + Object.keys(resourcesIDs).map(name => { + resourcesIDs[name]['ResourceID'] = "" + }) + + localStorage.setItem('properties', JSON.stringify(auxProperties)) + localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs)) + + this.setState({ + properties: auxProperties, resourcesIDs: resourcesIDs }) } + + sendCommand(){ const properties = this.state.properties[this.temporaryEndpoint]; var filteredProperties = {} @@ -325,11 +397,10 @@ class HydraConsole extends React.Component { const { classes } = this.props; const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex]; this.selectedEndpoint = selectedEndpoint; - //console.log("SELECTEDENDPOINT ", this.selectEndpoint) const temporaryEndpoint = selectedEndpoint.property.range.replace("Collection", "") this.temporaryEndpoint = temporaryEndpoint; - // console.log("TEMPORYENDPOINT ", this.temporaryEndpoint) + var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex]; @@ -373,6 +444,13 @@ class HydraConsole extends React.Component { this.selectOperation(currProperty) }}> + Date: Tue, 10 Mar 2020 14:44:37 +0530 Subject: [PATCH 3/4] saved the states of properties and resourceIDs to localstorage making them use the values even after refreshing the state --- console-frontend/build/asset-manifest.json | 6 ++--- console-frontend/build/index.html | 2 +- ...ifest.ed65c3cadafe4d1a4421bf111c0fd46f.js} | 8 +++--- console-frontend/build/service-worker.js | 2 +- .../build/static/js/main.5ff02c1a.chunk.js | 2 -- .../static/js/main.5ff02c1a.chunk.js.map | 1 - .../build/static/js/main.d86d5b45.chunk.js | 2 ++ .../static/js/main.d86d5b45.chunk.js.map | 1 + .../components/hydra-console/HydraConsole.jsx | 25 ++++++++++++++++--- 9 files changed, 34 insertions(+), 15 deletions(-) rename console-frontend/build/{precache-manifest.a151c66861e1e31097c8e57f3b618f19.js => precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js} (66%) delete mode 100644 console-frontend/build/static/js/main.5ff02c1a.chunk.js delete mode 100644 console-frontend/build/static/js/main.5ff02c1a.chunk.js.map create mode 100644 console-frontend/build/static/js/main.d86d5b45.chunk.js create mode 100644 console-frontend/build/static/js/main.d86d5b45.chunk.js.map diff --git a/console-frontend/build/asset-manifest.json b/console-frontend/build/asset-manifest.json index 3506e98..3f4d913 100644 --- a/console-frontend/build/asset-manifest.json +++ b/console-frontend/build/asset-manifest.json @@ -1,14 +1,14 @@ { "files": { "main.css": "/static/css/main.b015b8f6.chunk.css", - "main.js": "/static/js/main.5ff02c1a.chunk.js", - "main.js.map": "/static/js/main.5ff02c1a.chunk.js.map", + "main.js": "/static/js/main.d86d5b45.chunk.js", + "main.js.map": "/static/js/main.d86d5b45.chunk.js.map", "runtime~main.js": "/static/js/runtime~main.a8a9905a.js", "runtime~main.js.map": "/static/js/runtime~main.a8a9905a.js.map", "static/js/2.cd05a796.chunk.js": "/static/js/2.cd05a796.chunk.js", "static/js/2.cd05a796.chunk.js.map": "/static/js/2.cd05a796.chunk.js.map", "index.html": "/index.html", - "precache-manifest.a151c66861e1e31097c8e57f3b618f19.js": "/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js", + "precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js": "/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js", "service-worker.js": "/service-worker.js", "static/css/main.b015b8f6.chunk.css.map": "/static/css/main.b015b8f6.chunk.css.map" } diff --git a/console-frontend/build/index.html b/console-frontend/build/index.html index 07527ec..a716560 100644 --- a/console-frontend/build/index.html +++ b/console-frontend/build/index.html @@ -1 +1 @@ -Hydra Agent
\ No newline at end of file +Hydra Agent
\ No newline at end of file diff --git a/console-frontend/build/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js b/console-frontend/build/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js similarity index 66% rename from console-frontend/build/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js rename to console-frontend/build/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js index 64fcc0f..ff55413 100644 --- a/console-frontend/build/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js +++ b/console-frontend/build/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js @@ -1,10 +1,10 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "400e5d74dfdc95941c40cd8c4b63cdd2", + "revision": "017d5e54f0617bd9b1471654163dd88c", "url": "/index.html" }, { - "revision": "9bad1d6f1ef037bc46ce", + "revision": "76b12f8a00831fa5c064", "url": "/static/css/main.b015b8f6.chunk.css" }, { @@ -12,8 +12,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/static/js/2.cd05a796.chunk.js" }, { - "revision": "9bad1d6f1ef037bc46ce", - "url": "/static/js/main.5ff02c1a.chunk.js" + "revision": "76b12f8a00831fa5c064", + "url": "/static/js/main.d86d5b45.chunk.js" }, { "revision": "42ac5946195a7306e2a5", diff --git a/console-frontend/build/service-worker.js b/console-frontend/build/service-worker.js index e236f6d..50b3aff 100644 --- a/console-frontend/build/service-worker.js +++ b/console-frontend/build/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/precache-manifest.a151c66861e1e31097c8e57f3b618f19.js" + "/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js" ); self.addEventListener('message', (event) => { diff --git a/console-frontend/build/static/js/main.5ff02c1a.chunk.js b/console-frontend/build/static/js/main.5ff02c1a.chunk.js deleted file mode 100644 index fcad767..0000000 --- a/console-frontend/build/static/js/main.5ff02c1a.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),I=n(170),x=n(167),j=n(168),w=n(126),S=n(164),R=n(70),A=n.n(R),D=n(43),L=n(163),P=n(169),N=n(71),B=n(162),U=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),Z=n(21),J=n.n(Z),F=n(69),T=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(L.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),W=Object(w.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(T),Y=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[],a=0;return Object.keys(n.props.operations).forEach(function(e,t){r[e]=!1,"GET"==n.props.operations[e].method&&(a=t)}),r[a]=!0,n.state={buttons:r,selectedButton:a},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(w.a)(function(e){return{fabMargin:{}}})(Y),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(S.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(w.a)(function(e){return{propertyInput:{color:U.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(w.a)({root:{"& label.Mui-focused":{color:U.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:U.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:U.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:U.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:U.palette.primary.light}}}})(P.a),G=function(e){function t(e){var n;Object(i.a)(this,t);var r=null,a=[];(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).agentEndpoint="";for(var o in n.temporaryEndpoint=null,n.previousEndpointIndex=0,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";return localStorage.clear(),localStorage.setItem("properties",JSON.stringify(s)),localStorage.setItem("resourceIDs",JSON.stringify(c)),n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"componentDidUpdate",value:function(){this.restorePropertiesAndResourceIDs()}},{key:"restorePropertiesAndResourceIDs",value:function(){if(this.previousEndpointIndex!=this.state.selectedEndpointIndex){var e=JSON.parse(localStorage.getItem("properties")),t=JSON.parse(localStorage.getItem("resourceIDs"));this.setState({properties:e,resourcesIDs:t}),this.previousEndpointIndex=this.state.selectedEndpointIndex}}},{key:"selectEndpoint",value:function(e){var t=this.state.endpoints[e];this.selectedEndpoint=t;var n=t.property.range.replace("Collection","");this.temporaryEndpoint=n;var r=this.state.hydraClasses[n].supportedOperation,a=0;r.map(function(e,t){"GET"==e.method&&(a=t)}),this.setState({selectedEndpointIndex:e,selectedOperationIndex:a})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,localStorage.setItem("properties",JSON.stringify(t)),this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,localStorage.setItem("resourceIDs",JSON.stringify(t)),this.setState({resourcesIDs:t})}},{key:"clearAllInputs",value:function(e){var t=this,n=Object.assign({},this.state.properties);Object.keys(n[this.temporaryEndpoint]).map(function(e){n[t.temporaryEndpoint][e]=""});var r=Object.assign({},this.state.resourcesIDs);Object.keys(r).map(function(e){r[e].ResourceID=""}),localStorage.setItem("properties",JSON.stringify(n)),localStorage.setItem("resourceIDs",JSON.stringify(r)),this.setState({properties:n,resourcesIDs:r})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void J.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void J.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void J.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void J.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}J.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(S.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(S.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(W,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(S.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}}),a.a.createElement(L.a,{"aria-label":"delete",size:"medium",variant:"contained",className:t.deleteIconButton,onClick:function(t){return e.clearAllInputs(t)}},"CLEAR")),a.a.createElement(S.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(S.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(S.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(S.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:U.palette.primary.light}},InputLabelProps:{style:{color:U.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(L.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(S.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(F.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),V=Object(w.a)(function(e){return{outContainer:Object(D.a)({height:"87vh",backgroundColor:U.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:U.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:U.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(D.a)({height:"40vh",width:"90%",backgroundColor:U.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:U.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"},deleteIconButton:{backgroundColor:U.palette.primary.light,color:U.palette.primary.dark,"&:hover":{backgroundColor:U.palette.secondary.light,color:U.palette.primary.dark}}}})(G),q=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),H=Object(w.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(q),M=(n(119),n(166)),_=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;J.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),J.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;J.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){J.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(M.a,{theme:U},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:U.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(S.a,{container:!0},a.a.createElement(S.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:U.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(S.a,{container:!0,display:"flex",direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(I.a,{htmlFor:"server_url_input"},"Server URL:"),a.a.createElement(O.a,{id:"server_url_input",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(x.a,{position:"end"},a.a.createElement(j.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(A.a,null)))})),a.a.createElement(H,{apidocGraph:this.state.apidocGraph})),a.a.createElement(S.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:U.palette.primary.dark}),a.a.createElement(V,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),$=Object(w.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:U.palette.primary.light,border:10,display:"flex"},serverInput:{width:"75%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})(_);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement($,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); -//# sourceMappingURL=main.5ff02c1a.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.5ff02c1a.chunk.js.map b/console-frontend/build/static/js/main.5ff02c1a.chunk.js.map deleted file mode 100644 index 3bfe49a..0000000 --- a/console-frontend/build/static/js/main.5ff02c1a.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","method","operationsArray","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","HydraConsole","classesMapping","agentEndpoint","temporaryEndpoint","previousEndpointIndex","selectedEndpoint","selectedOperation","getURL","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","localStorage","clear","setItem","JSON","stringify","selectedEndpointIndex","outputText","restorePropertiesAndResourceIDs","storedProperties","parse","getItem","storedResourceIDs","endpointIndex","range","replace","supportedOperation","operationIndex","auxProperties","assign","target","_this3","filteredProperties","resourceType","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this4","selectedHydraClass","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","size","deleteIconButton","clearAllInputs","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","&:hover","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","ThemeProvider","navbar_NavBar","toggleGraph","display","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.5ff02c1a.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n let selectedButton = 0;\n\n const operationsArray = Object.keys(this.props.operations);\n operationsArray.forEach( (operation, index) => {\n buttons[operation] = false\n if(this.props.operations[operation].method == \"GET\")\n selectedButton = index\n })\n\n \n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n
)\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n },\n deleteIconButton: {\n backgroundColor: GuiTheme.palette.primary.light,\n color: GuiTheme.palette.primary.dark,\n '&:hover': {\n backgroundColor: GuiTheme.palette.secondary.light,\n color: GuiTheme.palette.primary.dark,\n },\n }\n});\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n let selectedOperationIndex = 0\n\n // util variables\n this.temporaryEndpoint = null;\n this.previousEndpointIndex = 0; // for managing the state and local storage\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n \n // Initialize the local storage with the empty values\n localStorage.clear(); \n localStorage.setItem('properties', JSON.stringify(classesProperties))\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n\n\n\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n\n }\n\n componentDidMount() {\n }\n\n\n \n\n componentDidUpdate() {\n this.restorePropertiesAndResourceIDs()\n }\n\n restorePropertiesAndResourceIDs() {\n if(this.previousEndpointIndex != this.state.selectedEndpointIndex) {\n const storedProperties = JSON.parse(localStorage.getItem('properties'))\n const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs'))\n \n this.setState({\n properties: storedProperties,\n resourcesIDs: storedResourceIDs\n })\n\n // updating for next time\n this.previousEndpointIndex = this.state.selectedEndpointIndex \n }\n }\n\n selectEndpoint(endpointIndex) {\n const selectedEndpoint = this.state.endpoints[endpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n\n const selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; \n const operations = selectedHydraClass.supportedOperation\n\n let selectedOperationIndex = 0;\n operations.map((operation, index) => {\n if(operation.method == \"GET\")\n selectedOperationIndex = index\n })\n\n this.setState({\n selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: selectedOperationIndex\n })\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n \n localStorage.setItem('properties', JSON.stringify(auxProperties))\n \n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n \n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n clearAllInputs(e) {\n // Will clear the current endpoints input \n let auxProperties = Object.assign({}, this.state.properties);\n Object.keys(auxProperties[this.temporaryEndpoint]).map(name => {\n auxProperties[this.temporaryEndpoint][name] = \"\"\n })\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n Object.keys(resourcesIDs).map(name => {\n resourcesIDs[name]['ResourceID'] = \"\"\n })\n\n localStorage.setItem('properties', JSON.stringify(auxProperties))\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n\n\n this.setState({\n properties: auxProperties,\n resourcesIDs: resourcesIDs\n })\n }\n\n\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n \n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10,\n display: 'flex'\n },\n serverInput: {\n width: '75%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/build/static/js/main.d86d5b45.chunk.js b/console-frontend/build/static/js/main.d86d5b45.chunk.js new file mode 100644 index 0000000..3dc28bc --- /dev/null +++ b/console-frontend/build/static/js/main.d86d5b45.chunk.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),I=n(170),x=n(167),j=n(168),w=n(126),S=n(164),R=n(70),D=n.n(R),A=n(43),L=n(163),P=n(169),N=n(71),B=n(162),J=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),U=n(21),Z=n.n(U),F=n(69),T=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(L.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),W=Object(w.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(T),Y=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[],a=0;return Object.keys(n.props.operations).forEach(function(e,t){r[e]=!1,"GET"==n.props.operations[e].method&&(a=t)}),r[a]=!0,n.state={buttons:r,selectedButton:a},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(w.a)(function(e){return{fabMargin:{}}})(Y),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(S.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(w.a)(function(e){return{propertyInput:{color:J.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(w.a)({root:{"& label.Mui-focused":{color:J.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:J.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:J.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:J.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:J.palette.primary.light}}}})(P.a);function G(e){return 0===Object.keys(e).length}var V=function(e){function t(e){var n;Object(i.a)(this,t);var r=null,a=[];(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).agentEndpoint="";for(var o in n.temporaryEndpoint=null,n.previousEndpointIndex=0,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";var h=JSON.parse(localStorage.getItem("properties")),m=JSON.parse(localStorage.getItem("resourceIDs"));return G(h)?localStorage.setItem("properties",JSON.stringify(s)):s=h,G(c)?localStorage.setItem("resourceIDs",JSON.stringify(c)):c=m,n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"componentDidUpdate",value:function(){this.restorePropertiesAndResourceIDs()}},{key:"restorePropertiesAndResourceIDs",value:function(){if(this.previousEndpointIndex!=this.state.selectedEndpointIndex){var e=JSON.parse(localStorage.getItem("properties")),t=JSON.parse(localStorage.getItem("resourceIDs"));this.setState({properties:e,resourcesIDs:t}),this.previousEndpointIndex=this.state.selectedEndpointIndex}}},{key:"selectEndpoint",value:function(e){var t=this.state.endpoints[e];this.selectedEndpoint=t;var n=t.property.range.replace("Collection","");this.temporaryEndpoint=n;var r=this.state.hydraClasses[n].supportedOperation,a=0;r.map(function(e,t){"GET"==e.method&&(a=t)}),this.setState({selectedEndpointIndex:e,selectedOperationIndex:a})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,localStorage.setItem("properties",JSON.stringify(t)),this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,localStorage.setItem("resourceIDs",JSON.stringify(t)),this.setState({resourcesIDs:t})}},{key:"clearAllInputs",value:function(e){var t=this,n=Object.assign({},this.state.properties);Object.keys(n[this.temporaryEndpoint]).map(function(e){n[t.temporaryEndpoint][e]=""});var r=Object.assign({},this.state.resourcesIDs);Object.keys(r).map(function(e){r[e].ResourceID=""}),localStorage.setItem("properties",JSON.stringify(n)),localStorage.setItem("resourceIDs",JSON.stringify(r)),this.setState({properties:n,resourcesIDs:r})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void Z.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void Z.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void Z.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void Z.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}Z.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(S.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(S.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(W,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(S.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}}),a.a.createElement(L.a,{"aria-label":"delete",size:"medium",variant:"contained",className:t.deleteIconButton,onClick:function(t){return e.clearAllInputs(t)}},"CLEAR")),a.a.createElement(S.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(S.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(S.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(S.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:J.palette.primary.light}},InputLabelProps:{style:{color:J.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(L.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(S.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(F.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),q=Object(w.a)(function(e){return{outContainer:Object(A.a)({height:"87vh",backgroundColor:J.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:J.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:J.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(A.a)({height:"40vh",width:"90%",backgroundColor:J.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:J.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"},deleteIconButton:{backgroundColor:J.palette.primary.light,color:J.palette.primary.dark,"&:hover":{backgroundColor:J.palette.secondary.light,color:J.palette.primary.dark}}}})(V),H=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),M=Object(w.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(H),_=(n(119),n(166)),$=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;Z.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),Z.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;Z.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){Z.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(_.a,{theme:J},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:J.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(S.a,{container:!0},a.a.createElement(S.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:J.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(S.a,{container:!0,display:"flex",direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(I.a,{htmlFor:"server_url_input"},"Server URL:"),a.a.createElement(O.a,{id:"server_url_input",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(x.a,{position:"end"},a.a.createElement(j.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(D.a,null)))})),a.a.createElement(M,{apidocGraph:this.state.apidocGraph})),a.a.createElement(S.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:J.palette.primary.dark}),a.a.createElement(q,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),ee=Object(w.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:J.palette.primary.light,border:10,display:"flex"},serverInput:{width:"75%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})($);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement(ee,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); +//# sourceMappingURL=main.d86d5b45.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.d86d5b45.chunk.js.map b/console-frontend/build/static/js/main.d86d5b45.chunk.js.map new file mode 100644 index 0000000..2ff3d9d --- /dev/null +++ b/console-frontend/build/static/js/main.d86d5b45.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","method","operationsArray","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","isEmpty","object","HydraConsole","classesMapping","agentEndpoint","temporaryEndpoint","previousEndpointIndex","selectedEndpoint","selectedOperation","getURL","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","storedProperties","JSON","parse","localStorage","getItem","storedResourceIDs","setItem","stringify","selectedEndpointIndex","outputText","restorePropertiesAndResourceIDs","endpointIndex","range","replace","supportedOperation","operationIndex","auxProperties","assign","target","_this3","filteredProperties","resourceType","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this4","selectedHydraClass","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","size","deleteIconButton","clearAllInputs","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","&:hover","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","ThemeProvider","navbar_NavBar","toggleGraph","display","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"wSAUMA,EAAYC,YAAW,SAAAC,GAAK,MAAK,CACnCC,aAAc,CACZC,SAAU,OACVC,OAAQ,cA8CCC,EA1CA,SAACC,GACZ,IAAMC,EAAUR,IAEVS,EAAU,CACZC,OAAQ,CACJC,gBAAiBJ,EAAMI,iBAE3BC,WAAY,CACRC,SAAUN,EAAMM,SAChBC,SAAU,GAEdC,eAAgB,CACZD,SAAU,OAIlB,OACIE,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAACR,EAAA,EAAD,CAAQS,SAAS,SAASC,MAAOX,EAAQC,OAAQW,MAAOd,EAAMc,OAC1DL,EAAAC,EAAAC,cAACI,EAAA,EAAD,KACIN,EAAAC,EAAAC,cAACN,EAAA,EAAD,CAAYQ,MAAOX,EAAQG,WAAYS,MAAOd,EAAMgB,WAC/ChB,EAAMiB,MAGVjB,EAAMkB,SACPT,EAAAC,EAAAC,cAACQ,EAAA,EAAD,CAAKL,MAAM,UACNI,QAASlB,EAAMkB,QACfE,aAAW,MACXC,UAAWpB,EAAQqB,KACpBb,EAAAC,EAAAC,cAACY,EAAAb,EAAD,OAGJD,EAAAC,EAAAC,cAAA,OAAKE,MAAOX,EAAQM,iBACnBR,EAAMkB,SACPT,EAAAC,EAAAC,cAAA,OAAKa,IAAKC,IAAMP,QAAU,kBAAMQ,OAAOC,KAAK,mCAAoCN,UAAWpB,EAAQL,aAAcgC,IAAI,+HChD1HC,cAAe,CAC1BC,QAAS,CACLC,QAAS,CACPC,KAAM,UACNC,KAAM,UACNC,MAAO,UACPC,aAAc,QAEhBC,UAAW,CACTJ,KAAM,UACNC,KAAM,UACNC,MAAO,UACPC,aAAc,QAEhBE,kBAAmB,EACnBC,YAAa,GACbC,YAAa,UACbC,WAAY,CACRpC,gBAAiB,UACjBU,MAAO,QAEX2B,OAAQ,CACJrC,gBAAiBsC,IAAO,KACxB5B,MAAO,QAEXG,KAAM,CACFc,QAAS,UACTK,UAAW,uCCjBjBO,cACF,SAAAA,EAAY3C,GAAO,IAAA4C,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,KAAAJ,GACfC,EAAAC,OAAAG,EAAA,EAAAH,CAAAE,KAAAF,OAAAI,EAAA,EAAAJ,CAAAF,GAAAO,KAAAH,KAAM/C,IACN,IAAImD,EAAU,GAEdN,OAAOO,KAAKR,EAAK5C,MAAMqD,WAAWC,QAAS,SAACC,GACxCJ,EAAQI,IAAY,IALT,OASfJ,EADqB,IACO,EAC5BP,EAAKY,MAAQ,CACTL,QAASA,EACTM,eAJiB,GARNb,4EAgBNc,GACT,IAAIC,EAAiBZ,KAAKS,MAAML,QAAQS,QACxCD,EAAeZ,KAAKS,MAAMC,iBAAkB,EAC5CE,EAAeD,IAAiB,EAChCX,KAAKc,SAAS,CACVV,QAASQ,EACTF,eAAgBC,8CAKP,IAAAI,EAAAf,KACPgB,EAAiBlB,OAAOO,KAAKL,KAAK/C,MAAMqD,WACtCpD,EAAY8C,KAAK/C,MAAjBC,QAYR,OAVc8D,EAAeC,IAAK,SAACC,EAAcC,GAC7C,IAAMC,EAAgBL,EAAK9D,MAAMqD,UAAUY,GAAcG,SAASC,MAClE,OAAO5D,EAAAC,EAAAC,cAAC2D,EAAA,EAAD,CACHC,IAAKN,EACLO,QAAQ,YACR1D,MAAOgD,EAAKN,MAAML,QAAQc,GAAgB,YAAc,KACxD5C,UAAWpB,EAAQwE,eACnBvD,QAAU,SAACwD,GAAOZ,EAAKa,aAAaV,GAAeH,EAAK9D,MAAM4E,eAAeX,KAC5EE,sCAOT,OAAOpB,KAAK8B,yBA/CWC,IAAMC,WAmDtBC,cA5DA,SAAArF,GAAK,MAAK,CACrB8E,eAAgB,CACZQ,MAAO,OAEXC,uBAAwB,CACpB9E,gBAAiB,UAuDV4E,CAAmBrC,GCvD5BwC,cACF,SAAAA,EAAYnF,GAAO,IAAA4C,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,KAAAoC,GACfvC,EAAAC,OAAAG,EAAA,EAAAH,CAAAE,KAAAF,OAAAI,EAAA,EAAAJ,CAAAsC,GAAAjC,KAAAH,KAAM/C,IACN,IAAImD,EAAU,GAEVM,EAAiB,EAJN,OAMSZ,OAAOO,KAAKR,EAAK5C,MAAMoF,YAC/B9B,QAAS,SAAC+B,EAAWnB,GACjCf,EAAQkC,IAAa,EACyB,OAA3CzC,EAAK5C,MAAMoF,WAAWC,GAAWC,SAChC7B,EAAiBS,KAIzBf,EAASM,IAAmB,EAE5Bb,EAAKY,MAAQ,CACTL,QAASA,EACTM,eAAgBA,GAlBLb,4EAsBNc,GACT,IAAIC,EAAiBZ,KAAKS,MAAML,QAAQS,QACxCD,EAAeZ,KAAKS,MAAMC,iBAAkB,EAC5CE,EAAeD,IAAiB,EAChCX,KAAKc,SAAS,CACVV,QAASQ,EACTF,eAAgBC,8CAIP,IAAAI,EAAAf,KACPwC,EAAkB1C,OAAOO,KAAKL,KAAK/C,MAAMoF,YAEvCnF,EAAY8C,KAAK/C,MAAjBC,QAWR,OATcsF,EAAgBvB,IAAK,SAACC,EAAcC,GAC9C,IAAMmB,EAAYvB,EAAK9D,MAAMoF,WAAWnB,GAAcqB,OACtD,OAAO7E,EAAAC,EAAAC,cAACQ,EAAA,EAAD,CACHoD,IAAKN,EACLnD,MAAOgD,EAAKN,MAAML,QAAQc,GAAgB,YAAc,KACxD5C,UAAWpB,EAAQuF,UACnBtE,QAAU,SAACwD,GAAOZ,EAAKa,aAAaV,GAAeH,EAAK9D,MAAMyF,gBAAgBxB,KAC7EoB,kDAMT,GAAGtC,KAAKS,MAAMC,iBAAmBV,KAAK/C,MAAM0F,uBAAuB,CAC/D,IAAI/B,EAAiBZ,KAAKS,MAAML,QAAQS,QACxCD,EAAeZ,KAAKS,MAAMC,iBAAkB,EAC5CE,EAAeZ,KAAK/C,MAAM0F,yBAA0B,EACpD3C,KAAKc,SAAS,CACVV,QAASQ,EACTF,eAAgBV,KAAK/C,MAAM0F,2DAMnC,OAAO3C,KAAK8B,yBA/DYC,IAAMC,WAmEvBC,cAxEA,SAAArF,GAAK,MAAK,CACrB6F,UAAW,KAuEAR,CAAmBG,GCvD5BQ,wLACYC,GAAiC,IAAnBC,EAAmBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAL,KAC9B7F,EAAY8C,KAAK/C,MAAjBC,QAER,OACAQ,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACI5E,UAAWpB,EAAQiG,kBACnBC,WAAS,EACTC,UAAU,MACVC,QAAQ,aACRC,WAAW,UACX7F,EAAAC,EAAAC,cAAA,SAAOU,UAAWpB,EAAQsG,eACrBX,EADL,KAGAnF,EAAAC,EAAAC,cAAC6F,EAAA,EAAD,CACIX,YAAaA,EACbY,KAAMb,EACNc,MAAO3D,KAAK/C,MAAM2G,WAAWf,GAC7BgB,SAAU7D,KAAK/C,MAAM4G,SACrBvF,UAAWpB,EAAQ4G,MACnBC,WAAY,CACR1F,aAAc,+DAO1B,IAAI2F,EAAS,GAEb,IAAI,IAAI3C,KAAYrB,KAAK/C,MAAM2G,WAC3BI,EAAOC,KAAKjE,KAAKkE,cAAc7C,EAAU,OAE7C,OAAO2C,mCAIP,OAAOhE,KAAKmE,4BArCWpC,IAAMC,WAyCtBC,cAxDA,SAAArF,GAAK,MAAK,CACrB4G,cAAe,CACXzF,MAAOqG,EAASrF,QAAQC,QAAQE,KAChCmF,WAAY,OACZC,YAAa,OAEjBnB,kBAAmB,CACfoB,UAAW,MACXC,aAAc,OAElBV,MAAO,CACHW,KAAM,SA6CCxC,CAAmBW,GC5C5B8B,EAAezC,YAAW,CAC5B0C,KAAM,CACFC,sBAAuB,CACnB7G,MAAOqG,EAASrF,QAAQC,QAAQG,OAEpC0F,8BAA+B,CAC3BC,kBAAmBV,EAASrF,QAAQM,UAAUJ,MAElD8F,2BAA4B,CACxBC,aAAc,CACVC,YAAab,EAASrF,QAAQC,QAAQG,MACtC+F,OAAQ,QAEZC,mBAAoB,CAChBF,YAAab,EAASrF,QAAQM,UAAUJ,MAE5CmG,yBAA0B,CACtBH,YAAab,EAASrF,QAAQC,QAAQG,UAjBjC8C,CAqBlBoD,KA2EH,SAASC,EAAQC,GACb,OAAkC,IAA/BzF,OAAOO,KAAKkF,GAAQvC,WAOrBwC,cACF,SAAAA,EAAYvI,GAAO,IAAA4C,EAAAC,OAAAC,EAAA,EAAAD,CAAAE,KAAAwF,GAEf,IAAIlF,EAAY,KACZmF,EAAiB,IAFrB5F,EAAAC,OAAAG,EAAA,EAAAH,CAAAE,KAAAF,OAAAI,EAAA,EAAAJ,CAAA0F,GAAArF,KAAAH,KAAM/C,KAGDyI,cAAgB,GAWrB,IAAI,IAAIvE,KAPRtB,EAAK8F,kBAAoB,KACzB9F,EAAK+F,sBAAwB,EAC7B/F,EAAKgG,iBAAmB,KACxBhG,EAAKiG,kBAAoB,KACzBjG,EAAKkG,QAAS,EAGGlG,EAAK5C,MAAM+I,aACxBP,EAAe5F,EAAK5C,MAAM+I,aAAa7E,GAAO,QAAUtB,EAAK5C,MAAM+I,aAAa7E,GACnC,qBAA1CtB,EAAK5C,MAAM+I,aAAa7E,GAAO,SAChCb,EAAYT,EAAK5C,MAAM+I,aAAa7E,GAAO8E,mBAKjD,IAAIC,EAAoB,GACpBC,EAAe,GACnB,IAAK,IAAIC,KAAYX,EAKjB,IAAK,IAAIY,KAJTH,EAAkBT,EAAeW,GAAU,QAAU,GAErDD,EAAaV,EAAeW,GAAU,QAAU,GAChDD,EAAaV,EAAeW,GAAU,QAAtC,WAA8D,GACrCX,EAAeW,GAAUH,kBAC9CC,EAAkBT,EAAeW,GAAU,QACvCX,EAAeW,GAAUH,kBAAkBI,GAAaC,OAAS,GAM7E,IAAMC,EAAmBC,KAAKC,MAAMC,aAAaC,QAAQ,eACnDC,EAAoBJ,KAAKC,MAAMC,aAAaC,QAAQ,gBAvC3C,OAyCZrB,EAAQiB,GACPG,aAAaG,QAAQ,aAAcL,KAAKM,UAAUZ,IAElDA,EAAoBK,EAGrBjB,EAAQa,GACPO,aAAaG,QAAQ,cAAeL,KAAKM,UAAUX,IAEnDA,EAAeS,EAInB/G,EAAKY,MAAQ,CACTuF,aAAcP,EACdnF,UAAWA,EACXsD,WAAYsC,EACZC,aAAcA,EACdY,sBAAuB,EACvBpE,uBAAwB,EACxBqE,WAAY,kDA7DDnH,iIAyEfG,KAAKiH,4FAIL,GAAGjH,KAAK4F,uBAAyB5F,KAAKS,MAAMsG,sBAAuB,CAC/D,IAAMR,EAAmBC,KAAKC,MAAMC,aAAaC,QAAQ,eACnDC,EAAoBJ,KAAKC,MAAMC,aAAaC,QAAQ,gBAE1D3G,KAAKc,SAAS,CACV8C,WAAY2C,EACZJ,aAAcS,IAIlB5G,KAAK4F,sBAAwB5F,KAAKS,MAAMsG,8DAIjCG,GACX,IAAMrB,EAAmB7F,KAAKS,MAAMH,UAAU4G,GAC9ClH,KAAK6F,iBAAmBA,EAExB,IAAMF,EAAoBE,EAAiBxE,SAAS8F,MAAMC,QAAQ,aAAc,IAChFpH,KAAK2F,kBAAoBA,EAEzB,IACMtD,EADqBrC,KAAKS,MAAMuF,aAAaL,GACb0B,mBAElC1E,EAAyB,EAC7BN,EAAWpB,IAAI,SAACqB,EAAWnB,GACA,OAApBmB,EAAUC,SACTI,EAAyBxB,KAGjCnB,KAAKc,SAAS,CACNiG,sBAAuBG,EACvBvE,uBAAwBA,4CAIpB2E,GACZtH,KAAKc,SACD,CAAC6B,uBAAwB2E,yCAIpB3F,GAET3B,KAAK+F,QAAS,EAEd,IAAIwB,EAAgBzH,OAAO0H,OAAO,GAAIxH,KAAKS,MAAMmD,YACjD2D,EAAcvH,KAAK2F,mBAAmBhE,EAAE8F,OAAO/D,MAAQ/B,EAAE8F,OAAO9D,MAEhE+C,aAAaG,QAAQ,aAAcL,KAAKM,UAAUS,IAElDvH,KAAKc,SAAS,CACV8C,WAAY2D,mDAIG5F,GAEnB3B,KAAK+F,QAAS,EAEd,IAAII,EAAerG,OAAO0H,OAAO,GAAIxH,KAAKS,MAAM0F,cAChDA,EAAaxE,EAAE8F,OAAO/D,MAAtB,WAA4C/B,EAAE8F,OAAO9D,MAErD+C,aAAaG,QAAQ,cAAeL,KAAKM,UAAUX,IAEnDnG,KAAKc,SAAS,CACVqF,aAAcA,2CAIPxE,GAAG,IAAAZ,EAAAf,KAEVuH,EAAgBzH,OAAO0H,OAAO,GAAIxH,KAAKS,MAAMmD,YACjD9D,OAAOO,KAAKkH,EAAcvH,KAAK2F,oBAAoB1E,IAAI,SAAAyC,GACnD6D,EAAcxG,EAAK4E,mBAAmBjC,GAAQ,KAGlD,IAAIyC,EAAerG,OAAO0H,OAAO,GAAIxH,KAAKS,MAAM0F,cAChDrG,OAAOO,KAAK8F,GAAclF,IAAI,SAAAyC,GAC1ByC,EAAazC,GAAb,WAAmC,KAGvCgD,aAAaG,QAAQ,aAAcL,KAAKM,UAAUS,IAClDb,aAAaG,QAAQ,cAAeL,KAAKM,UAAUX,IAGnDnG,KAAKc,SAAS,CACV8C,WAAY2D,EACZpB,aAAcA,0CAMT,IAAAuB,EAAA1H,KACH4D,EAAa5D,KAAKS,MAAMmD,WAAW5D,KAAK2F,mBAC1CgC,EAAqB,GACzB,IAAI,IAAItG,KAAYuC,EACY,KAAzBA,EAAWvC,KACVsG,EAAmBtG,GAAYuC,EAAWvC,IAIlD,IAAMuG,EAAe5H,KAAK6F,iBAAiBxE,SAASC,MAAM8F,QAAQ,aAAc,IAEhF,GAAmD,QAAhDpH,KAAK8F,kBAAkBvD,OAAOsF,cAAwB,CACrD,IAAIC,EAAU,KAsBZ,OApBEA,EADD9H,KAAK+F,OACM,CACNxD,OAAQ,MACRwF,IAAK/H,KAAK/C,MAAM+K,UAAYhI,KAAK6F,iBAAiBxE,SAASC,MAAQ,IAAMtB,KAAKS,MAAM0F,aAAanG,KAAK2F,mBAA7B,YAGnE,CACNpD,OAAQ,MACR0F,cAAeL,EACfM,QAASP,QAGjBQ,IAAMC,KAAKpI,KAAK0F,cAAgB,gBAAiBoC,GAC9CO,KAAM,SAACC,GACNZ,EAAK5G,SAAS,CACVkG,WAAYR,KAAKM,UAAUwB,EAASC,KAAMb,EAAKc,sBAAuB,OAG3EC,MAAM,SAAUC,GACfC,QAAQC,IAAIF,KAIf,GAAmD,QAAhD1I,KAAK8F,kBAAkBvD,OAAOsF,cAAwB,CAC1D,IAAIgB,EAkBJ,OAjBAA,EAAU,CACNtG,OAAQ,MACRwF,IAAK/H,KAAK/C,MAAM+K,UAAYhI,KAAK6F,iBAAiBxE,SAASC,MAAQ,IAC9DtB,KAAKS,MAAM0F,aAAanG,KAAK2F,mBAA7B,WACLmD,WAAYnB,GAEhBA,EAAmB,SAAWC,OAE9BO,IAAMC,KAAKpI,KAAK0F,cAAgB,gBAAiBmD,GAChDR,KAAM,SAACC,GACNZ,EAAK5G,SAAS,CACVkG,WAAYR,KAAKM,UAAUwB,EAASC,KAAMb,EAAKc,sBAAuB,OAG3EC,MAAM,SAAUC,GACfC,QAAQC,IAAIF,KAIb,GAAmD,SAAhD1I,KAAK8F,kBAAkBvD,OAAOsF,cAAyB,CAC3D,IAAIkB,EAiBJ,OAhBAA,EAAW,CACPxG,OAAQ,OACRwF,IAAK/H,KAAK/C,MAAM+K,UAAYhI,KAAK6F,iBAAiBxE,SAASC,MAAQ,IAC9DtB,KAAKS,MAAM0F,aAAanG,KAAK2F,mBAA7B,WACLqD,eAAgBrB,GAEpBA,EAAmB,SAAWC,OAC9BO,IAAMC,KAAKpI,KAAK0F,cAAgB,gBAAiBqD,GAChDV,KAAM,SAACC,GACNZ,EAAK5G,SAAS,CACVkG,WAAYR,KAAKM,UAAUwB,EAASC,KAAMb,EAAKc,sBAAuB,OAG3EC,MAAM,SAAUC,GACfC,QAAQC,IAAIF,KAGZ,GAAmD,WAAhD1I,KAAK8F,kBAAkBvD,OAAOsF,cAA2B,CAC9D,IAAIoB,EAeJ,OAdAA,EAAa,CACT1G,OAAQ,SACRwF,IAAK/H,KAAK/C,MAAM+K,UAAYhI,KAAK6F,iBAAiBxE,SAASC,MACtD,IAAMtB,KAAKS,MAAM0F,aAAanG,KAAK2F,mBAA7B,iBAEfwC,IAAMC,KAAKpI,KAAK0F,cAAgB,gBAAiBuD,GAChDZ,KAAM,SAACC,GACNZ,EAAK5G,SAAS,CACVkG,WAAYR,KAAKM,UAAUwB,EAASC,KAAMb,EAAKc,sBAAuB,OAG3EC,MAAM,SAAUC,GACfC,QAAQC,IAAIF,KAIlBP,IAAMC,KAAKpI,KAAK0F,cAAgB,gBAAiB,CAC7CnD,OAAQvC,KAAK8F,kBAAkBvD,OAAOsF,cACtCI,cAAejI,KAAK6F,iBAAiBxE,SAASC,MAC9C4G,QAASlI,KAAKS,MAAMmD,WAAW5D,KAAK2F,qBAErC0C,KAAK,SAAUC,GACVtI,KAAKc,SAAS,CACVkG,WAAYsB,IAEpBK,QAAQC,IAAIN,KAEbG,MAAM,SAAUC,GACfC,QAAQC,IAAIF,mDAIElH,EAAKmC,GAEvB,GAAc,KAAVA,EAGJ,OAAOA,mCAGF,IAAAuF,EAAAlJ,KAGG9C,EAAY8C,KAAK/C,MAAjBC,QACF2I,EAAmB7F,KAAKS,MAAMH,UAAUN,KAAKS,MAAMsG,uBACzD/G,KAAK6F,iBAAmBA,EAExB,IAAMF,EAAoBE,EAAiBxE,SAAS8F,MAAMC,QAAQ,aAAc,IAChFpH,KAAK2F,kBAAoBA,EAEzB,IAAIwD,EAAqBnJ,KAAKS,MAAMuF,aAAaL,GAE3CG,EAAoBqD,EAAmB9B,mBAAmBrH,KAAKS,MAAMkC,wBAC3E3C,KAAK8F,kBAAoBA,EAEzB,IAAIsD,EAAc5C,KAAKM,UAAU9G,KAAKS,MAAMmD,WAAW+B,GAAoB3F,KAAKwI,uBAE5Ea,EAAa,GAYjB,OAVIA,EADDrJ,KAAK+F,OACS,SAAW/F,KAAK8F,kBAAkBvD,OAAOsF,cACzC,KAAQ7H,KAAK/C,MAAM+K,UACnBhI,KAAK6F,iBAAiBxE,SAASC,MAAQ,IACvCtB,KAAKS,MAAM0F,aAAanG,KAAK2F,mBAA7B,WAAgE,KAEhE,SAAW3F,KAAK8F,kBAAkBvD,OAAOsF,cACnC,MAAShC,EAAiBxE,SAASC,MAAQ,MAC3C8H,EAAc,IAIjC1L,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAME,WAAS,EAAC9E,UAAWpB,EAAQoM,aAAcC,GAAI,IACjD7L,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAMsG,MAAI,EAACD,GAAI,EAAGE,GAAI,GAAIrG,WAAS,EAC/BC,UAAU,SACVC,QAAQ,eACRC,WAAW,UACX7F,EAAAC,EAAAC,cAAC8L,EAAD,CACI7H,eAAiB,SAACX,GACdgI,EAAKrH,eAAeX,IACxBZ,UAAWN,KAAKS,MAAMH,aAG9B5C,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACIsG,MAAI,EAACD,GAAI,EAAGE,GAAI,GAAIrG,WAAS,EAC7BC,UAAU,SACVC,QAAQ,eACRC,WAAW,UACX7F,EAAAC,EAAAC,cAAC+L,EAAD,CACItH,WAAY8G,EAAmB9B,mBAC/B1E,uBAAwB3C,KAAKS,MAAMkC,uBACnCD,gBAAkB,SAACxB,GACfgI,EAAKxG,gBAAgBxB,MAG7BxD,EAAAC,EAAAC,cAAC2D,EAAA,EAAD,CAAQlD,aAAW,SACPuL,KAAK,SACLnI,QAAQ,YACRnD,UAAWpB,EAAQ2M,iBACnB1L,QAAS,SAACwD,GAAD,OAAOuH,EAAKY,eAAenI,KAJhD,UAQJjE,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACIsG,MAAI,EAACD,GAAI,EAAGE,GAAI,GAAIrG,WAAS,EAC7BC,UAAU,SACVC,QAAQ,SACRC,WAAW,UACX7F,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAM5E,UAAWpB,EAAQ6M,oBACrB3G,WAAS,EACTC,UAAU,MACVC,QAAQ,aACRC,WAAW,UACX7F,EAAAC,EAAAC,cAAA,iBAAS,IAAT,KACAF,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACI5E,UAAWpB,EAAQiG,kBACnBC,WAAS,EACTC,UAAU,MACVC,QAAQ,aACRC,WAAW,UACX7F,EAAAC,EAAAC,cAAA,SAAOU,UAAWpB,EAAQsG,eAA1B,eAGA9F,EAAAC,EAAAC,cAAC6F,EAAA,EAAD,CACIC,KAAMiC,EACNhC,MAAQ3D,KAAKS,MAAM0F,aAAaR,GAAxB,WACR9B,SAAW,SAAClC,GAAD,OAAOuH,EAAKc,uBAAuBrI,IAC9CsI,QAAU,SAACtI,GAAD,OAAOuH,EAAKc,uBAAuBrI,IAC7CrD,UAAWpB,EAAQ4G,MACnBC,WAAY,CACR1F,aAAc,kBAIS,WAAlC2B,KAAK8F,kBAAkBvD,QACxB7E,EAAAC,EAAAC,cAACsM,EAAD,CACItG,WAAY5D,KAAKS,MAAMmD,WAAW+B,GAClC9B,SAAW,SAACsG,GAAkBjB,EAAKkB,aAAaD,MAEpDzM,EAAAC,EAAAC,cAAA,iBAAS,IAAT,OAGRF,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAMsG,MAAI,EAACC,GAAI,GACXrG,WAAS,EACTC,UAAU,MACVC,QAAQ,SACRC,WAAW,UACX7F,EAAAC,EAAAC,cAAC8G,EAAD,CACI2F,GAAG,gBACH/I,MAAM,cACNyC,WAAY,CACRjG,MAAO,CAAEC,MAAOqG,EAASrF,QAAQC,QAAQG,QAE7CmL,gBAAiB,CACbxM,MAAO,CAAEC,MAAOqG,EAASrF,QAAQC,QAAQG,QAE7Cb,UAAWpB,EAAQqN,UACnB1G,SAAU,aACV2G,OAAO,SACP/I,QAAQ,WACRkC,MAAO0F,IAEX3L,EAAAC,EAAAC,cAAC2D,EAAA,EAAD,CAAQE,QAAQ,YAAY1D,MAAM,YAC1BO,UAAWpB,EAAQuN,YACnBtM,QAAS,kBAAM+K,EAAKwB,gBAF5B,iBAMJhN,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAMsG,MAAI,EAACC,GAAI,GACXkB,QAAS,EACTvH,WAAS,EACTC,UAAU,SACVC,QAAQ,SACRC,WAAW,UACX7F,EAAAC,EAAAC,cAAA,QAAMU,UAAWpB,EAAQ0N,uBAAzB,WACAlN,EAAAC,EAAAC,cAAA,OAAKU,UAAWpB,EAAQ2N,iBACpBnN,EAAAC,EAAAC,cAACkN,EAAA,WAAD,KACK9K,KAAKS,MAAMuG,sBAzabjF,IAAMC,WAkblBC,cAlgBA,SAAArF,GAAK,MAAK,CACrB0M,aAAaxJ,OAAAiL,EAAA,EAAAjL,CAAA,CACToF,OAAQ,OACR7H,gBAAiB+G,EAASrF,QAAQC,QAAQE,MACzCtC,EAAMoO,YAAYC,KAAK,MAAQ,CAC5B/F,OAAQ,UAGhB6E,oBAAqB,CACjBmB,UAAW,OACXhJ,MAAO,OACPpF,SAAU,MACVqO,QAAS,OACT9N,gBAAiB+G,EAASrF,QAAQC,QAAQG,MAC1CiM,UAAW,OACXC,OAAQ,iBACRC,aAAc,QAElBnI,kBAAmB,CACfoB,UAAW,MACXC,aAAc,OAElBhB,cAAe,CACXzF,MAAOqG,EAASrF,QAAQC,QAAQE,KAChCmF,WAAY,OACZC,YAAa,OAEjBR,MAAO,CACHW,KAAM,OAEVoG,gBAAgB/K,OAAAiL,EAAA,EAAAjL,CAAA,CACZoF,OAAQ,OACRhD,MAAO,MACP7E,gBAAiB+G,EAASrF,QAAQC,QAAQG,MAC1CoM,WAAY,MACZH,UAAW,QACV,2BAA6B,CAC1BlJ,MAAO,MACP3E,SAAU,UAGlBqN,sBAAuB,CACnB1I,MAAO,MACP7E,gBAAiB+G,EAASrF,QAAQC,QAAQG,MAC1C5B,SAAU,QACV4N,QAAS,MACTE,OAAQ,iBACRC,aAAc,OAElBf,UAAW,CACPrI,MAAO,MACPoC,YAAa,KACbvG,MAAO,OACPkH,YAAa,QAEjBwF,YAAa,CACTY,OAAQ,EACRC,aAAc,EACdE,UAAW,wCACXtG,OAAQ,GACRhD,MAAO,OAEX2H,iBAAkB,CACdxM,gBAAiB+G,EAASrF,QAAQC,QAAQG,MAC1CpB,MAAOqG,EAASrF,QAAQC,QAAQE,KAChCuM,UAAW,CACPpO,gBAAiB+G,EAASrF,QAAQM,UAAUF,MAC5CpB,MAAOqG,EAASrF,QAAQC,QAAQE,SA+b7B+C,CAAmBuD,GChiB5BkG,qMAEiB,IAAAC,EAEYC,EAAQ,IAA7BC,EAFSF,EAETE,QAASC,EAFAH,EAEAG,QAGXC,EAAQ,IAAIF,EAAQ7L,KAAK/C,MAAM+O,YAAYD,OAC3CE,EAAQ,IAAIJ,EAAQ7L,KAAK/C,MAAM+O,YAAYC,OAcjC,IAAIH,EAXFI,SAASC,eAAe,aAE7B,CACPJ,MAAOA,EACPE,MAAOA,GAIG,qCAMV,IACA/O,EAAY8C,KAAK/C,MAAjBC,QACL,OACKQ,EAAAC,EAAAC,cAAA,UAAQU,UAAU,cACdZ,EAAAC,EAAAC,cAAA,OAAKU,UAAWpB,EAAQkP,eAAgB/B,GAAG,sBA7BlCtI,IAAMC,YAmChBC,cA1CA,SAAArF,GAAK,MAAK,CACrBwP,eAAgB,CACZlK,MAAO,OACPgD,OAAQ,UAuCDjD,CAAmByJ,qBCf5BW,cACJ,SAAAA,EAAYpP,GAAO,IAAA4C,EAAA,OAAAC,OAAAC,EAAA,EAAAD,CAAAE,KAAAqM,IACjBxM,EAAAC,OAAAG,EAAA,EAAAH,CAAAE,KAAAF,OAAAI,EAAA,EAAAJ,CAAAuM,GAAAlM,KAAAH,KAAM/C,KACDwD,MAAQ,CACX6L,aAAc,EACdC,QAAQ,EACRrP,QAAS,KACT8O,YAAa,CAACC,MAAO,KAAMF,MAAO,MAClCS,UAAW,oCAIb3M,EAAK6F,cAAgB,GAXJ7F,mFAcC,IAAAkB,EAAAf,KAClBmI,IAAMsE,IAAIzM,KAAK0F,cAAgB,cAC5B2C,KAAK,SAAAqE,GACJ3L,EAAKD,SAAS,CAEZ5D,QAASwP,EAAInE,KAAKoE,eAClBH,UAAWE,EAAInE,KAAKiE,UAAUpF,QAAQ,MAAO,IAAM,KAClD,kBAAMrG,EAAK6L,aAGhBzE,IAAMsE,IAAIzM,KAAK0F,cAAgB,iBAC9B2C,KAAK,SAAAqE,GACJ3L,EAAKD,SAAS,CAEZkL,YAAaU,EAAInE,MAChB,kBAAMxH,EAAK6L,mDAKf5M,KAAKS,MAAM8L,OACZvM,KAAKc,SAAS,CACZwL,aAAc,EACdC,QAAQ,IAGVvM,KAAKc,SAAS,CACZwL,aAAc,GACdC,QAAQ,kDAKQ5K,GAEpB3B,KAAKc,SAAS,CACZ0L,UAAW7K,EAAE8F,OAAO9D,gDAIRhC,GAAE,IAAA+F,EAAA1H,KAEhBmI,IAAMC,KAAKpI,KAAK0F,cAAgB,eAAiB,CAACqC,IAAK/H,KAAKS,MAAM+L,YACjEnE,KAAM,SAACwE,GACN1E,IAAMsE,IAAI/E,EAAKhC,cAAgB,cAC9B2C,KAAK,SAAAqE,GACJhF,EAAK5G,SAAS,CACZ5D,QAASwP,EAAInE,KAAKoE,gBACjB,kBAAMhO,OAAOmO,SAASC,WACxBtE,MAAO,SAACC,GACPC,QAAQC,IAAIF,SAIjBD,MAAO,SAACC,GACPC,QAAQC,IAAIF,sCAIP,IAAAQ,EAAAlJ,KACC9C,EAAY8C,KAAK/C,MAAjBC,QAER,OAAG8C,KAAKS,MAAMvD,SAAW8C,KAAKS,MAAMuL,YAAYD,MAE5CrO,EAAAC,EAAAC,cAACoP,EAAA,EAAD,CAAepQ,MAAOwH,GACpB1G,EAAAC,EAAAC,cAACqP,EAAD,CACE/O,KAAK,kBACLX,SAAS,QACTF,gBAAiB+G,EAASrF,QAAQC,QAAQC,KAC1ClB,MAAM,UACNI,QAAS,kBAAM+K,EAAKgE,iBAEtBxP,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAME,WAAS,GACb1F,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAMsG,MAAI,EAAC+C,OAAQvM,KAAKS,MAAM8L,OAAQhD,GAAI,GAAKvJ,KAAKS,MAAM6L,aAAc7C,GAAI,IAC1E/L,EAAAC,EAAAC,cAACqP,EAAD,CAAQ/O,KAAK,YAAYX,SAAS,QAChCF,gBAAiB+G,EAASrF,QAAQC,QAAQG,MAC1ClB,UAAU,kBACVP,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CACEE,WAAS,EACT+J,QAAQ,OACR9J,UAAU,MACVC,QAAQ,SACRC,WAAW,SACXjF,UAAWpB,EAAQkQ,sBACnB1P,EAAAC,EAAAC,cAACyP,EAAA,EAAD,CAAYC,QAAQ,oBAApB,eACA5P,EAAAC,EAAAC,cAAC6F,EAAA,EAAD,CACI4G,GAAG,mBACHvH,YAAY,0DACZyK,WAAa,SAAC5L,GAAoB,UAAVA,EAAEH,KAAkB0H,EAAKsE,gBAAgB7L,IACjEgC,MAAO3D,KAAKS,MAAM+L,UAClB3I,SAAW,SAAClC,GAAD,OAAOuH,EAAKuE,sBAAsB9L,IAC7CrD,UAAWpB,EAAQwQ,YACnBC,kBAAkB,EAClB5J,WAAY,CACR1F,aAAc,cAElBuP,aACElQ,EAAAC,EAAAC,cAACiQ,EAAA,EAAD,CAAgBhQ,SAAS,OACvBH,EAAAC,EAAAC,cAACkQ,EAAA,EAAD,CACEzP,aAAW,6BACXF,QAAS,SAACwD,GAAD,OAAOuH,EAAKsE,gBAAgB7L,KAErCjE,EAAAC,EAAAC,cAACmQ,EAAApQ,EAAD,WAMdD,EAAAC,EAAAC,cAACoQ,EAAD,CACEhC,YAAahM,KAAKS,MAAMuL,eAI5BtO,EAAAC,EAAAC,cAACsF,EAAA,EAAD,CAAMsG,MAAI,EAACD,GAAIvJ,KAAKS,MAAM6L,aAAc7C,GAAI,GAAI1L,MAAM,WACpDL,EAAAC,EAAAC,cAACqP,EAAD,CAAQ/O,KAAK,gBAAgBX,SAAS,QACpCF,gBAAiB+G,EAASrF,QAAQC,QAAQE,OAE5CxB,EAAAC,EAAAC,cAACqQ,EAAD,CACEjG,UAAWhI,KAAKS,MAAM+L,UACtBxG,aAAchG,KAAKS,MAAMvD,QACzBa,MAAM,eAORL,EAAAC,EAAAC,cAAA,OAAKU,UAAU,cAAaZ,EAAAC,EAAAC,cAAA,oBA9InBmE,IAAMC,WAkJdC,eAlKA,SAAArF,GAAK,MAAK,CACvBwQ,qBAAsB,CACpBlL,MAAO,OACP7E,gBAAiB+G,EAASrF,QAAQC,QAAQG,MAC1CkM,OAAQ,GACR8B,QAAS,QAEXO,YAAa,CACTxL,MAAO,MACP7E,gBAAiB,UACjB8N,QAAS,MACTlG,YAAa,OACbqG,aAAc,MAsJLrJ,CAAmBoK,UCtKd6B,QACW,cAA7BvP,OAAOmO,SAASqB,UAEe,UAA7BxP,OAAOmO,SAASqB,UAEhBxP,OAAOmO,SAASqB,SAASC,MACvB,2DCZNC,IAASzB,OAAOlP,EAAAC,EAAAC,cAAC0Q,GAAD,MAAcpC,SAASC,eAAe,SD2HhD,kBAAmBoC,WACrBA,UAAUC,cAAcC,MAAMpG,KAAK,SAAAqG,GACjCA,EAAaC,iCEnInBC,EAAAC,QAAA","file":"static/js/main.d86d5b45.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n let selectedButton = 0;\n\n const operationsArray = Object.keys(this.props.operations);\n operationsArray.forEach( (operation, index) => {\n buttons[operation] = false\n if(this.props.operations[operation].method == \"GET\")\n selectedButton = index\n })\n\n \n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n )\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n },\n deleteIconButton: {\n backgroundColor: GuiTheme.palette.primary.light,\n color: GuiTheme.palette.primary.dark,\n '&:hover': {\n backgroundColor: GuiTheme.palette.secondary.light,\n color: GuiTheme.palette.primary.dark,\n },\n }\n});\n\nfunction isEmpty(object){\n if(Object.keys(object).length === 0)\n return true\n\n return false \n}\n\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n let selectedOperationIndex = 0\n\n // util variables\n this.temporaryEndpoint = null;\n this.previousEndpointIndex = 0; // for managing the state and local storage\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n \n // Initialize the local storage with the empty values\n //localStorage.clear(); \n const storedProperties = JSON.parse(localStorage.getItem('properties'))\n const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs'))\n\n if(isEmpty(storedProperties)){\n localStorage.setItem('properties', JSON.stringify(classesProperties))\n }else{\n classesProperties = storedProperties\n }\n\n if(isEmpty(resourcesIDs)){\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n }else{\n resourcesIDs = storedResourceIDs\n }\n\n\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n\n }\n\n componentDidMount() {\n }\n\n\n \n\n componentDidUpdate() {\n this.restorePropertiesAndResourceIDs()\n }\n\n restorePropertiesAndResourceIDs() {\n if(this.previousEndpointIndex != this.state.selectedEndpointIndex) {\n const storedProperties = JSON.parse(localStorage.getItem('properties'))\n const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs'))\n \n this.setState({\n properties: storedProperties,\n resourcesIDs: storedResourceIDs\n })\n\n // updating for next time\n this.previousEndpointIndex = this.state.selectedEndpointIndex \n }\n }\n\n selectEndpoint(endpointIndex) {\n const selectedEndpoint = this.state.endpoints[endpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n\n const selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; \n const operations = selectedHydraClass.supportedOperation\n\n let selectedOperationIndex = 0;\n operations.map((operation, index) => {\n if(operation.method == \"GET\")\n selectedOperationIndex = index\n })\n\n this.setState({\n selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: selectedOperationIndex\n })\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n \n localStorage.setItem('properties', JSON.stringify(auxProperties))\n \n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n \n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n clearAllInputs(e) {\n // Will clear the current endpoints input \n let auxProperties = Object.assign({}, this.state.properties);\n Object.keys(auxProperties[this.temporaryEndpoint]).map(name => {\n auxProperties[this.temporaryEndpoint][name] = \"\"\n })\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n Object.keys(resourcesIDs).map(name => {\n resourcesIDs[name]['ResourceID'] = \"\"\n })\n\n localStorage.setItem('properties', JSON.stringify(auxProperties))\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n\n\n this.setState({\n properties: auxProperties,\n resourcesIDs: resourcesIDs\n })\n }\n\n\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n \n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10,\n display: 'flex'\n },\n serverInput: {\n width: '75%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/src/components/hydra-console/HydraConsole.jsx b/console-frontend/src/components/hydra-console/HydraConsole.jsx index 4da5dcc..e93d34e 100644 --- a/console-frontend/src/components/hydra-console/HydraConsole.jsx +++ b/console-frontend/src/components/hydra-console/HydraConsole.jsx @@ -112,6 +112,14 @@ const styles = theme => ({ } }); +function isEmpty(object){ + if(Object.keys(object).length === 0) + return true + + return false +} + + class HydraConsole extends React.Component { constructor(props) { super(props); @@ -150,10 +158,21 @@ class HydraConsole extends React.Component { } // Initialize the local storage with the empty values - localStorage.clear(); - localStorage.setItem('properties', JSON.stringify(classesProperties)) - localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs)) + //localStorage.clear(); + const storedProperties = JSON.parse(localStorage.getItem('properties')) + const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs')) + if(isEmpty(storedProperties)){ + localStorage.setItem('properties', JSON.stringify(classesProperties)) + }else{ + classesProperties = storedProperties + } + + if(isEmpty(resourcesIDs)){ + localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs)) + }else{ + resourcesIDs = storedResourceIDs + } this.state = { From e85c5b44c3900fcf975d461e22a24662b00dc4ea Mon Sep 17 00:00:00 2001 From: sudipt1999 Date: Tue, 10 Mar 2020 21:53:33 +0530 Subject: [PATCH 4/4] changed the button position as well as fixed the localstorage check error --- console-frontend/build/asset-manifest.json | 6 +-- console-frontend/build/index.html | 2 +- ...ifest.a47b7618a9685028effd132c1ebe7989.js} | 8 ++-- console-frontend/build/service-worker.js | 2 +- .../build/static/js/main.4752fb84.chunk.js | 2 + .../static/js/main.4752fb84.chunk.js.map | 1 + .../build/static/js/main.d86d5b45.chunk.js | 2 - .../static/js/main.d86d5b45.chunk.js.map | 1 - .../components/hydra-console/HydraConsole.jsx | 40 ++++++------------- 9 files changed, 25 insertions(+), 39 deletions(-) rename console-frontend/build/{precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js => precache-manifest.a47b7618a9685028effd132c1ebe7989.js} (66%) create mode 100644 console-frontend/build/static/js/main.4752fb84.chunk.js create mode 100644 console-frontend/build/static/js/main.4752fb84.chunk.js.map delete mode 100644 console-frontend/build/static/js/main.d86d5b45.chunk.js delete mode 100644 console-frontend/build/static/js/main.d86d5b45.chunk.js.map diff --git a/console-frontend/build/asset-manifest.json b/console-frontend/build/asset-manifest.json index 3f4d913..ea2f1fc 100644 --- a/console-frontend/build/asset-manifest.json +++ b/console-frontend/build/asset-manifest.json @@ -1,14 +1,14 @@ { "files": { "main.css": "/static/css/main.b015b8f6.chunk.css", - "main.js": "/static/js/main.d86d5b45.chunk.js", - "main.js.map": "/static/js/main.d86d5b45.chunk.js.map", + "main.js": "/static/js/main.4752fb84.chunk.js", + "main.js.map": "/static/js/main.4752fb84.chunk.js.map", "runtime~main.js": "/static/js/runtime~main.a8a9905a.js", "runtime~main.js.map": "/static/js/runtime~main.a8a9905a.js.map", "static/js/2.cd05a796.chunk.js": "/static/js/2.cd05a796.chunk.js", "static/js/2.cd05a796.chunk.js.map": "/static/js/2.cd05a796.chunk.js.map", "index.html": "/index.html", - "precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js": "/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js", + "precache-manifest.a47b7618a9685028effd132c1ebe7989.js": "/precache-manifest.a47b7618a9685028effd132c1ebe7989.js", "service-worker.js": "/service-worker.js", "static/css/main.b015b8f6.chunk.css.map": "/static/css/main.b015b8f6.chunk.css.map" } diff --git a/console-frontend/build/index.html b/console-frontend/build/index.html index a716560..7ec9b87 100644 --- a/console-frontend/build/index.html +++ b/console-frontend/build/index.html @@ -1 +1 @@ -Hydra Agent
\ No newline at end of file +Hydra Agent
\ No newline at end of file diff --git a/console-frontend/build/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js b/console-frontend/build/precache-manifest.a47b7618a9685028effd132c1ebe7989.js similarity index 66% rename from console-frontend/build/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js rename to console-frontend/build/precache-manifest.a47b7618a9685028effd132c1ebe7989.js index ff55413..8062cea 100644 --- a/console-frontend/build/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js +++ b/console-frontend/build/precache-manifest.a47b7618a9685028effd132c1ebe7989.js @@ -1,10 +1,10 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "017d5e54f0617bd9b1471654163dd88c", + "revision": "57112bdbc86edf3973a4712603b809c8", "url": "/index.html" }, { - "revision": "76b12f8a00831fa5c064", + "revision": "e7064fa8b665d67aabd1", "url": "/static/css/main.b015b8f6.chunk.css" }, { @@ -12,8 +12,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/static/js/2.cd05a796.chunk.js" }, { - "revision": "76b12f8a00831fa5c064", - "url": "/static/js/main.d86d5b45.chunk.js" + "revision": "e7064fa8b665d67aabd1", + "url": "/static/js/main.4752fb84.chunk.js" }, { "revision": "42ac5946195a7306e2a5", diff --git a/console-frontend/build/service-worker.js b/console-frontend/build/service-worker.js index 50b3aff..1d6f1b1 100644 --- a/console-frontend/build/service-worker.js +++ b/console-frontend/build/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/precache-manifest.ed65c3cadafe4d1a4421bf111c0fd46f.js" + "/precache-manifest.a47b7618a9685028effd132c1ebe7989.js" ); self.addEventListener('message', (event) => { diff --git a/console-frontend/build/static/js/main.4752fb84.chunk.js b/console-frontend/build/static/js/main.4752fb84.chunk.js new file mode 100644 index 0000000..4a23de1 --- /dev/null +++ b/console-frontend/build/static/js/main.4752fb84.chunk.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),I=n(170),x=n(167),j=n(168),w=n(126),S=n(164),R=n(70),D=n.n(R),A=n(43),L=n(163),P=n(169),N=n(71),B=n(162),J=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),U=n(21),Z=n.n(U),F=n(69),T=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(L.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),W=Object(w.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(T),Y=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[],a=0;return Object.keys(n.props.operations).forEach(function(e,t){r[e]=!1,"GET"==n.props.operations[e].method&&(a=t)}),r[a]=!0,n.state={buttons:r,selectedButton:a},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(w.a)(function(e){return{fabMargin:{}}})(Y),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(S.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(w.a)(function(e){return{propertyInput:{color:J.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(w.a)({root:{"& label.Mui-focused":{color:J.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:J.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:J.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:J.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:J.palette.primary.light}}}})(P.a),G=function(e){function t(e){var n;Object(i.a)(this,t);var r=null,a=[];(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).agentEndpoint="";for(var o in n.temporaryEndpoint=null,n.previousEndpointIndex=0,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";return null===localStorage.getItem("properties")?localStorage.setItem("properties",JSON.stringify(s)):s=JSON.parse(localStorage.getItem("properties")),null===localStorage.getItem("resourceIDs")?localStorage.setItem("resourceIDs",JSON.stringify(c)):c=JSON.parse(localStorage.getItem("resourceIDs")),n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"componentDidUpdate",value:function(){this.restorePropertiesAndResourceIDs()}},{key:"restorePropertiesAndResourceIDs",value:function(){if(this.previousEndpointIndex!=this.state.selectedEndpointIndex){var e=JSON.parse(localStorage.getItem("properties")),t=JSON.parse(localStorage.getItem("resourceIDs"));this.setState({properties:e,resourcesIDs:t}),this.previousEndpointIndex=this.state.selectedEndpointIndex}}},{key:"selectEndpoint",value:function(e){var t=this.state.endpoints[e];this.selectedEndpoint=t;var n=t.property.range.replace("Collection","");this.temporaryEndpoint=n;var r=this.state.hydraClasses[n].supportedOperation,a=0;r.map(function(e,t){"GET"==e.method&&(a=t)}),this.setState({selectedEndpointIndex:e,selectedOperationIndex:a})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,localStorage.setItem("properties",JSON.stringify(t)),this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,localStorage.setItem("resourceIDs",JSON.stringify(t)),this.setState({resourcesIDs:t})}},{key:"clearAllInputs",value:function(e){var t=this,n=Object.assign({},this.state.properties);Object.keys(n[this.temporaryEndpoint]).map(function(e){n[t.temporaryEndpoint][e]=""});var r=Object.assign({},this.state.resourcesIDs);Object.keys(r).map(function(e){r[e].ResourceID=""}),localStorage.setItem("properties",JSON.stringify(n)),localStorage.setItem("resourceIDs",JSON.stringify(r)),this.setState({properties:n,resourcesIDs:r})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void Z.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void Z.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void Z.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void Z.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}Z.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(S.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(S.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(W,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(S.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}})),a.a.createElement(S.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(L.a,{"aria-label":"delete",size:"medium",variant:"contained",className:t.deleteIconButton,onClick:function(t){return e.clearAllInputs(t)}},"CLEAR"),a.a.createElement(S.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(S.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(S.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:J.palette.primary.light}},InputLabelProps:{style:{color:J.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(L.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(S.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(F.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),V=Object(w.a)(function(e){return{outContainer:Object(A.a)({height:"87vh",backgroundColor:J.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:J.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:J.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(A.a)({height:"40vh",width:"90%",backgroundColor:J.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:J.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"},deleteIconButton:{marginLeft:"60% !important",marginBottom:"10px",backgroundColor:J.palette.primary.light,color:J.palette.primary.dark,"&:hover":{backgroundColor:J.palette.secondary.light,color:J.palette.primary.dark}}}})(G),q=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),H=Object(w.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(q),M=(n(119),n(166)),_=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;Z.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),Z.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;Z.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){Z.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(M.a,{theme:J},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:J.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(S.a,{container:!0},a.a.createElement(S.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:J.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(S.a,{container:!0,display:"flex",direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(I.a,{htmlFor:"server_url_input"},"Server URL:"),a.a.createElement(O.a,{id:"server_url_input",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(x.a,{position:"end"},a.a.createElement(j.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(D.a,null)))})),a.a.createElement(H,{apidocGraph:this.state.apidocGraph})),a.a.createElement(S.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:J.palette.primary.dark}),a.a.createElement(V,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),$=Object(w.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:J.palette.primary.light,border:10,display:"flex"},serverInput:{width:"75%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})(_);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement($,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); +//# sourceMappingURL=main.4752fb84.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.4752fb84.chunk.js.map b/console-frontend/build/static/js/main.4752fb84.chunk.js.map new file mode 100644 index 0000000..84c1ef9 --- /dev/null +++ b/console-frontend/build/static/js/main.4752fb84.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","method","operationsArray","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","HydraConsole","classesMapping","agentEndpoint","temporaryEndpoint","previousEndpointIndex","selectedEndpoint","selectedOperation","getURL","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","localStorage","getItem","setItem","JSON","stringify","parse","selectedEndpointIndex","outputText","restorePropertiesAndResourceIDs","storedProperties","storedResourceIDs","endpointIndex","range","replace","supportedOperation","operationIndex","auxProperties","assign","target","_this3","filteredProperties","resourceType","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this4","selectedHydraClass","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","size","deleteIconButton","clearAllInputs","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","&:hover","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","ThemeProvider","navbar_NavBar","toggleGraph","display","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.4752fb84.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n let selectedButton = 0;\n\n const operationsArray = Object.keys(this.props.operations);\n operationsArray.forEach( (operation, index) => {\n buttons[operation] = false\n if(this.props.operations[operation].method == \"GET\")\n selectedButton = index\n })\n\n \n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n )\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n },\n deleteIconButton: {\n marginLeft: '60% !important',\n marginBottom: '10px',\n backgroundColor: GuiTheme.palette.primary.light,\n color: GuiTheme.palette.primary.dark,\n '&:hover': {\n backgroundColor: GuiTheme.palette.secondary.light,\n color: GuiTheme.palette.primary.dark,\n },\n }\n});\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n let selectedOperationIndex = 0\n\n // util variables\n this.temporaryEndpoint = null;\n this.previousEndpointIndex = 0; // for managing the state and local storage\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n \n // Initialize the local storage with the empty values\n if (localStorage.getItem('properties') === null) {\n localStorage.setItem('properties', JSON.stringify(classesProperties))\n }else{\n classesProperties = JSON.parse(localStorage.getItem('properties'))\n }\n\n if (localStorage.getItem('resourceIDs') === null) {\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n }else{\n resourcesIDs = JSON.parse(localStorage.getItem('resourceIDs'))\n }\n\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n\n }\n\n componentDidMount() {\n }\n\n componentDidUpdate() {\n this.restorePropertiesAndResourceIDs()\n }\n\n restorePropertiesAndResourceIDs() {\n if(this.previousEndpointIndex != this.state.selectedEndpointIndex) {\n const storedProperties = JSON.parse(localStorage.getItem('properties'))\n const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs'))\n \n this.setState({\n properties: storedProperties,\n resourcesIDs: storedResourceIDs\n })\n\n // updating for next time\n this.previousEndpointIndex = this.state.selectedEndpointIndex \n }\n }\n\n selectEndpoint(endpointIndex) {\n const selectedEndpoint = this.state.endpoints[endpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n\n const selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; \n const operations = selectedHydraClass.supportedOperation\n\n let selectedOperationIndex = 0;\n operations.map((operation, index) => {\n if(operation.method == \"GET\")\n selectedOperationIndex = index\n })\n\n this.setState({\n selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: selectedOperationIndex\n })\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n \n localStorage.setItem('properties', JSON.stringify(auxProperties))\n \n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n \n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n clearAllInputs(e) {\n // Will clear the current endpoints input \n let auxProperties = Object.assign({}, this.state.properties);\n Object.keys(auxProperties[this.temporaryEndpoint]).map(name => {\n auxProperties[this.temporaryEndpoint][name] = \"\"\n })\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n Object.keys(resourcesIDs).map(name => {\n resourcesIDs[name]['ResourceID'] = \"\"\n })\n\n localStorage.setItem('properties', JSON.stringify(auxProperties))\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n\n\n this.setState({\n properties: auxProperties,\n resourcesIDs: resourcesIDs\n })\n }\n\n\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n \n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10,\n display: 'flex'\n },\n serverInput: {\n width: '75%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/build/static/js/main.d86d5b45.chunk.js b/console-frontend/build/static/js/main.d86d5b45.chunk.js deleted file mode 100644 index 3dc28bc..0000000 --- a/console-frontend/build/static/js/main.d86d5b45.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{119:function(e,t,n){},120:function(e,t,n){},121:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),o=n(9),s=n.n(o),i=n(15),c=n(11),l=n(18),p=n(16),d=n(19),u=n(159),h=n(160),m=n(124),f=n(161),g=n(68),y=n.n(g),v=n(157),b=n(66),C=n.n(b),E=Object(v.a)(function(e){return{hydraEcoLogo:{maxWidth:"30px",cursor:"pointer"}}}),k=function(e){var t=E(),n={AppBar:{backgroundColor:e.backgroundColor},Typography:{fontSize:e.fontSize,flexGrow:1},centeringSpace:{flexGrow:1.21}};return a.a.createElement("div",null,a.a.createElement(u.a,{position:"static",style:n.AppBar,color:e.color},a.a.createElement(h.a,null,a.a.createElement(m.a,{style:n.Typography,color:e.fontColor},e.text),e.onClick&&a.a.createElement(f.a,{color:"primary",onClick:e.onClick,"aria-label":"add",className:t.fab},a.a.createElement(y.a,null)),a.a.createElement("div",{style:n.centeringSpace}),e.onClick&&a.a.createElement("img",{src:C.a,onClick:function(){return window.open("http://www.hydraecosystem.org/")},className:t.hydraEcoLogo,alt:"logo"}))))},O=n(165),I=n(170),x=n(167),j=n(168),w=n(126),S=n(164),R=n(70),D=n.n(R),A=n(43),L=n(163),P=n(169),N=n(71),B=n(162),J=Object(N.a)({palette:{primary:{main:"#212121",dark:"#404040",light:"#eeeeee",contrastText:"#fff"},secondary:{main:"#FBD20B",dark:"#c3a100",light:"#ffff54",contrastText:"#000"},contrastThreshold:3,tonalOffset:.2,companyBlue:"#FF0000",companyRed:{backgroundColor:"#E44D69",color:"#000"},accent:{backgroundColor:B.a[500],color:"#000"},text:{primary:"#000000",secondary:"#585858"}}}),U=n(21),Z=n.n(U),F=n(69),T=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[];Object.keys(n.props.endpoints).forEach(function(e){r[e]=!1});return r[0]=!0,n.state={buttons:r,selectedButton:0},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.endpoints),n=this.props.classes;return t.map(function(t,r){var o=e.props.endpoints[t].property.label;return a.a.createElement(L.a,{key:t,variant:"contained",color:e.state.buttons[t]?"secondary":null,className:n.endpointButton,onClick:function(n){e.selectButton(t),e.props.selectEndpoint(t)}},o)})}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),W=Object(w.a)(function(e){return{endpointButton:{width:"80%"},endpointSelectedButton:{backgroundColor:"#f00"}}})(T),Y=function(e){function t(e){var n;Object(i.a)(this,t),n=Object(l.a)(this,Object(p.a)(t).call(this,e));var r=[],a=0;return Object.keys(n.props.operations).forEach(function(e,t){r[e]=!1,"GET"==n.props.operations[e].method&&(a=t)}),r[a]=!0,n.state={buttons:r,selectedButton:a},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"selectButton",value:function(e){var t=this.state.buttons.slice();t[this.state.selectedButton]=!1,t[e]=!0,this.setState({buttons:t,selectedButton:e})}},{key:"generateButtons",value:function(){var e=this,t=Object.keys(this.props.operations),n=this.props.classes;return t.map(function(t,r){var o=e.props.operations[t].method;return a.a.createElement(f.a,{key:t,color:e.state.buttons[t]?"secondary":null,className:n.fabMargin,onClick:function(n){e.selectButton(t),e.props.selectOperation(t)}},o)})}},{key:"componentDidUpdate",value:function(){if(this.state.selectedButton!==this.props.selectedOperationIndex){var e=this.state.buttons.slice();e[this.state.selectedButton]=!1,e[this.props.selectedOperationIndex]=!0,this.setState({buttons:e,selectedButton:this.props.selectedOperationIndex})}}},{key:"render",value:function(){return this.generateButtons()}}]),t}(a.a.Component),Q=Object(w.a)(function(e){return{fabMargin:{}}})(Y),K=function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"generateField",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.props.classes;return a.a.createElement(S.a,{className:n.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:n.propertyInput},e,":"),a.a.createElement(O.a,{placeholder:t,name:e,value:this.props.properties[e],onChange:this.props.onChange,className:n.input,inputProps:{"aria-label":"description"}}))}},{key:"generateProperties",value:function(){var e=[];for(var t in this.props.properties)e.push(this.generateField(t,null));return e}},{key:"render",value:function(){return this.generateProperties()}}]),t}(a.a.Component),z=Object(w.a)(function(e){return{propertyInput:{color:J.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},input:{flex:"100"}}})(K),X=Object(w.a)({root:{"& label.Mui-focused":{color:J.palette.primary.light},"& .MuiInput-underline:after":{borderBottomColor:J.palette.secondary.main},"& .MuiOutlinedInput-root":{"& fieldset":{borderColor:J.palette.primary.light,height:"55px"},"&:hover fieldset":{borderColor:J.palette.secondary.main},"&.Mui-focused fieldset":{borderColor:J.palette.primary.light}}}})(P.a);function G(e){return 0===Object.keys(e).length}var V=function(e){function t(e){var n;Object(i.a)(this,t);var r=null,a=[];(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).agentEndpoint="";for(var o in n.temporaryEndpoint=null,n.previousEndpointIndex=0,n.selectedEndpoint=null,n.selectedOperation=null,n.getURL=!0,n.props.hydraClasses)a[n.props.hydraClasses[o]["@id"]]=n.props.hydraClasses[o],"vocab:EntryPoint"===n.props.hydraClasses[o]["@id"]&&(r=n.props.hydraClasses[o].supportedProperty);var s={},c={};for(var d in a)for(var u in s[a[d]["@id"]]={},c[a[d]["@id"]]={},c[a[d]["@id"]].ResourceID="",a[d].supportedProperty)s[a[d]["@id"]][a[d].supportedProperty[u].title]="";var h=JSON.parse(localStorage.getItem("properties")),m=JSON.parse(localStorage.getItem("resourceIDs"));return G(h)?localStorage.setItem("properties",JSON.stringify(s)):s=h,G(c)?localStorage.setItem("resourceIDs",JSON.stringify(c)):c=m,n.state={hydraClasses:a,endpoints:r,properties:s,resourcesIDs:c,selectedEndpointIndex:0,selectedOperationIndex:0,outputText:" Your request output will be displayed here..."},n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){}},{key:"componentDidUpdate",value:function(){this.restorePropertiesAndResourceIDs()}},{key:"restorePropertiesAndResourceIDs",value:function(){if(this.previousEndpointIndex!=this.state.selectedEndpointIndex){var e=JSON.parse(localStorage.getItem("properties")),t=JSON.parse(localStorage.getItem("resourceIDs"));this.setState({properties:e,resourcesIDs:t}),this.previousEndpointIndex=this.state.selectedEndpointIndex}}},{key:"selectEndpoint",value:function(e){var t=this.state.endpoints[e];this.selectedEndpoint=t;var n=t.property.range.replace("Collection","");this.temporaryEndpoint=n;var r=this.state.hydraClasses[n].supportedOperation,a=0;r.map(function(e,t){"GET"==e.method&&(a=t)}),this.setState({selectedEndpointIndex:e,selectedOperationIndex:a})}},{key:"selectOperation",value:function(e){this.setState({selectedOperationIndex:e})}},{key:"handleChange",value:function(e){this.getURL=!1;var t=Object.assign({},this.state.properties);t[this.temporaryEndpoint][e.target.name]=e.target.value,localStorage.setItem("properties",JSON.stringify(t)),this.setState({properties:t})}},{key:"handleChangeResourceID",value:function(e){this.getURL=!0;var t=Object.assign({},this.state.resourcesIDs);t[e.target.name].ResourceID=e.target.value,localStorage.setItem("resourceIDs",JSON.stringify(t)),this.setState({resourcesIDs:t})}},{key:"clearAllInputs",value:function(e){var t=this,n=Object.assign({},this.state.properties);Object.keys(n[this.temporaryEndpoint]).map(function(e){n[t.temporaryEndpoint][e]=""});var r=Object.assign({},this.state.resourcesIDs);Object.keys(r).map(function(e){r[e].ResourceID=""}),localStorage.setItem("properties",JSON.stringify(n)),localStorage.setItem("resourceIDs",JSON.stringify(r)),this.setState({properties:n,resourcesIDs:r})}},{key:"sendCommand",value:function(){var e=this,t=this.state.properties[this.temporaryEndpoint],n={};for(var r in t)""!==t[r]&&(n[r]=t[r]);var a=this.selectedEndpoint.property.label.replace("Collection","");if("get"===this.selectedOperation.method.toLowerCase()){var o=null;return o=this.getURL?{method:"get",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID}:{method:"get",resource_type:a,filters:n},void Z.a.post(this.agentEndpoint+"/send-command",o).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("put"===this.selectedOperation.method.toLowerCase()){var s;return s={method:"put",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,new_object:n},n["@type"]=a,void Z.a.post(this.agentEndpoint+"/send-command",s).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("post"===this.selectedOperation.method.toLowerCase()){var i;return i={method:"post",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID,updated_object:n},n["@type"]=a,void Z.a.post(this.agentEndpoint+"/send-command",i).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}if("delete"===this.selectedOperation.method.toLowerCase()){var c;return c={method:"delete",url:this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID},void Z.a.post(this.agentEndpoint+"/send-command",c).then(function(t){e.setState({outputText:JSON.stringify(t.data,e.jsonStringifyReplacer,8)})}).catch(function(e){console.log(e)})}Z.a.post(this.agentEndpoint+"/send-command",{method:this.selectedOperation.method.toLowerCase(),resource_type:this.selectedEndpoint.property.label,filters:this.state.properties[this.temporaryEndpoint]}).then(function(e){this.setState({outputText:e}),console.log(e)}).catch(function(e){console.log(e)})}},{key:"jsonStringifyReplacer",value:function(e,t){if(""!==t)return t}},{key:"render",value:function(){var e=this,t=this.props.classes,n=this.state.endpoints[this.state.selectedEndpointIndex];this.selectedEndpoint=n;var r=n.property.range.replace("Collection","");this.temporaryEndpoint=r;var o=this.state.hydraClasses[r],s=o.supportedOperation[this.state.selectedOperationIndex];this.selectedOperation=s;var i=JSON.stringify(this.state.properties[r],this.jsonStringifyReplacer),c="";return c=this.getURL?"agent."+this.selectedOperation.method.toLowerCase()+'("'+this.props.serverUrl+this.selectedEndpoint.property.label+"/"+this.state.resourcesIDs[this.temporaryEndpoint].ResourceID+'")':"agent."+this.selectedOperation.method.toLowerCase()+'("/'+n.property.label+'", '+i+")",a.a.createElement(S.a,{container:!0,className:t.outContainer,md:12},a.a.createElement(S.a,{item:!0,md:4,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(W,{selectEndpoint:function(t){e.selectEndpoint(t)},endpoints:this.state.endpoints})),a.a.createElement(S.a,{item:!0,md:2,xs:12,container:!0,direction:"column",justify:"space-evenly",alignItems:"center"},a.a.createElement(Q,{operations:o.supportedOperation,selectedOperationIndex:this.state.selectedOperationIndex,selectOperation:function(t){e.selectOperation(t)}}),a.a.createElement(L.a,{"aria-label":"delete",size:"medium",variant:"contained",className:t.deleteIconButton,onClick:function(t){return e.clearAllInputs(t)}},"CLEAR")),a.a.createElement(S.a,{item:!0,md:6,xs:12,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement(S.a,{className:t.propertiesContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",null," ","{"," "),a.a.createElement(S.a,{className:t.propertyContainer,container:!0,direction:"row",justify:"flex-start",alignItems:"center"},a.a.createElement("label",{className:t.propertyInput},"ResourceID:"),a.a.createElement(O.a,{name:r,value:this.state.resourcesIDs[r].ResourceID,onChange:function(t){return e.handleChangeResourceID(t)},onFocus:function(t){return e.handleChangeResourceID(t)},className:t.input,inputProps:{"aria-label":"description"}})),"DELETE"!==this.selectedOperation.method&&a.a.createElement(z,{properties:this.state.properties[r],onChange:function(t){e.handleChange(t)}}),a.a.createElement("label",null," ","}"," "))),a.a.createElement(S.a,{item:!0,xs:12,container:!0,direction:"row",justify:"center",alignItems:"center"},a.a.createElement(X,{id:"outlined-name",label:"Raw Command",inputProps:{style:{color:J.palette.primary.light}},InputLabelProps:{style:{color:J.palette.primary.light}},className:t.textField,onChange:function(){},margin:"normal",variant:"outlined",value:c}),a.a.createElement(L.a,{variant:"contained",color:"secondary",className:t.sendRequest,onClick:function(){return e.sendCommand()}},"Send Request")),a.a.createElement(S.a,{item:!0,xs:12,spacing:5,container:!0,direction:"column",justify:"center",alignItems:"center"},a.a.createElement("span",{className:t.outputContainerHeader}," Output"),a.a.createElement("div",{className:t.outputContainer},a.a.createElement(F.Scrollbars,null,this.state.outputText))))}}]),t}(a.a.Component),q=Object(w.a)(function(e){return{outContainer:Object(A.a)({height:"87vh",backgroundColor:J.palette.primary.dark},e.breakpoints.down("md"),{height:"160vh"}),propertiesContainer:{maxHeight:"40vh",width:"100%",maxWidth:"80%",padding:"20px",backgroundColor:J.palette.primary.light,overflowY:"auto",border:"3px solid Gray",borderRadius:"25px"},propertyContainer:{marginTop:"2px",marginBottom:"2px"},propertyInput:{color:J.palette.primary.dark,marginLeft:"10px",marginRight:"6px"},input:{flex:"100"},outputContainer:Object(A.a)({height:"40vh",width:"90%",backgroundColor:J.palette.primary.light,whiteSpace:"pre",overflowY:"auto"},"@media (min-width:780px)",{width:"80%",fontSize:"0.8em"}),outputContainerHeader:{width:"90%",backgroundColor:J.palette.primary.light,fontSize:"1.0em",padding:"7px",border:"2px solid Gray",borderRadius:"6px"},textField:{width:"68%",marginRight:"1%",color:"#000",borderColor:"#0f0"},sendRequest:{border:0,borderRadius:3,boxShadow:"0 3px 5px 2px rgba(255, 255, 255, .3)",height:48,width:"22%"},deleteIconButton:{backgroundColor:J.palette.primary.light,color:J.palette.primary.dark,"&:hover":{backgroundColor:J.palette.secondary.light,color:J.palette.primary.dark}}}})(V),H=(n(65),function(e){function t(){return Object(i.a)(this,t),Object(l.a)(this,Object(p.a)(t).apply(this,arguments))}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=n(65),t=e.DataSet,r=e.Network,a=new t(this.props.apidocGraph.nodes),o=new t(this.props.apidocGraph.edges);new r(document.getElementById("mynetwork"),{nodes:a,edges:o},{})}},{key:"render",value:function(){var e=this.props.classes;return a.a.createElement("header",{className:"app-header"},a.a.createElement("div",{className:e.graphContainer,id:"mynetwork"}))}}]),t}(a.a.Component)),M=Object(w.a)(function(e){return{graphContainer:{width:"100%",height:"82vh"}}})(H),_=(n(119),n(166)),$=function(e){function t(e){var n;return Object(i.a)(this,t),(n=Object(l.a)(this,Object(p.a)(t).call(this,e))).state={consoleWidth:6,hidden:!1,classes:null,apidocGraph:{edges:null,nodes:null},serverURL:"http://localhost:8080/serverapi/"},n.agentEndpoint="",n}return Object(d.a)(t,e),Object(c.a)(t,[{key:"componentDidMount",value:function(){var e=this;Z.a.get(this.agentEndpoint+"/hydra-doc").then(function(t){e.setState({classes:t.data.supportedClass,serverURL:t.data.serverURL.replace(/\/$/,"")+"/"},function(){return e.render()})}),Z.a.get(this.agentEndpoint+"/apidoc-graph").then(function(t){e.setState({apidocGraph:t.data},function(){return e.render()})})}},{key:"toggleGraph",value:function(){this.state.hidden?this.setState({consoleWidth:6,hidden:!1}):this.setState({consoleWidth:12,hidden:!0})}},{key:"handleChangeServerURL",value:function(e){this.setState({serverURL:e.target.value})}},{key:"submitServerURL",value:function(e){var t=this;Z.a.post(this.agentEndpoint+"/start-agent",{url:this.state.serverURL}).then(function(e){Z.a.get(t.agentEndpoint+"/hydra-doc").then(function(e){t.setState({classes:e.data.supportedClass},function(){return window.location.reload()}).catch(function(e){console.log(e)})})}).catch(function(e){console.log(e)})}},{key:"render",value:function(){var e=this,t=this.props.classes;return this.state.classes&&this.state.apidocGraph.nodes?a.a.createElement(_.a,{theme:J},a.a.createElement(k,{text:"Hydra Agent GUI",fontSize:"1.5em",backgroundColor:J.palette.primary.main,color:"primary",onClick:function(){return e.toggleGraph()}}),a.a.createElement(S.a,{container:!0},a.a.createElement(S.a,{item:!0,hidden:this.state.hidden,md:12-this.state.consoleWidth,xs:12},a.a.createElement(k,{text:"Hydra API",fontSize:"1.3em",backgroundColor:J.palette.primary.light,fontColor:"textSecondary"}),a.a.createElement(S.a,{container:!0,display:"flex",direction:"row",justify:"center",alignItems:"center",className:t.serverInputContainer},a.a.createElement(I.a,{htmlFor:"server_url_input"},"Server URL:"),a.a.createElement(O.a,{id:"server_url_input",placeholder:"Server URL - Default: https://localhost:8080/serverapi/",onKeyPress:function(t){"Enter"===t.key&&e.submitServerURL(t)},value:this.state.serverURL,onChange:function(t){return e.handleChangeServerURL(t)},className:t.serverInput,disableUnderline:!0,inputProps:{"aria-label":"hydrus-url"},endAdornment:a.a.createElement(x.a,{position:"end"},a.a.createElement(j.a,{"aria-label":"toggle password visibility",onClick:function(t){return e.submitServerURL(t)}},a.a.createElement(D.a,null)))})),a.a.createElement(M,{apidocGraph:this.state.apidocGraph})),a.a.createElement(S.a,{item:!0,md:this.state.consoleWidth,xs:12,color:"primary"},a.a.createElement(k,{text:"Agent Console",fontSize:"1.3em",backgroundColor:J.palette.primary.dark}),a.a.createElement(q,{serverUrl:this.state.serverURL,hydraClasses:this.state.classes,color:"primary"})))):a.a.createElement("div",{className:"lds-circle"},a.a.createElement("div",null))}}]),t}(a.a.Component),ee=Object(w.a)(function(e){return{serverInputContainer:{width:"100%",backgroundColor:J.palette.primary.light,border:10,display:"flex"},serverInput:{width:"75%",backgroundColor:"#FBD20B",padding:"5px",borderColor:"#000",borderRadius:10}}})($);n(120),Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));s.a.render(a.a.createElement(ee,null),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()})},66:function(e,t){e.exports="data:image/png;base64,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"},78:function(e,t,n){e.exports=n(121)}},[[78,1,2]]]); -//# sourceMappingURL=main.d86d5b45.chunk.js.map \ No newline at end of file diff --git a/console-frontend/build/static/js/main.d86d5b45.chunk.js.map b/console-frontend/build/static/js/main.d86d5b45.chunk.js.map deleted file mode 100644 index 2ff3d9d..0000000 --- a/console-frontend/build/static/js/main.d86d5b45.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["components/navbar/NavBar.jsx","app/gui-theme.js","components/hydra-console/endpoints-buttons/EndpointsButtons.jsx","components/hydra-console/operations-buttons/OperationsButtons.jsx","components/hydra-console/properties-editor/PropertiesEditor.jsx","components/hydra-console/HydraConsole.jsx","components/hydra-graph/HydraGraph.jsx","app/app.js","service-worker.js","index.js","assets/images/hydra_eco_logo.png"],"names":["useStyles","makeStyles","theme","hydraEcoLogo","maxWidth","cursor","NavBar","props","classes","toolbar","AppBar","backgroundColor","Typography","fontSize","flexGrow","centeringSpace","react_default","a","createElement","position","style","color","Toolbar","fontColor","text","onClick","Fab","aria-label","className","fab","AspectRatio_default","src","logo","window","open","alt","createMuiTheme","palette","primary","main","dark","light","contrastText","secondary","contrastThreshold","tonalOffset","companyBlue","companyRed","accent","purple","EndpointsButtons","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","buttons","keys","endpoints","forEach","endpoint","state","selectedButton","clickedButton","updatedButtons","slice","setState","_this2","endpointsArray","map","currProperty","index","labelEndpoint","property","label","Button","key","variant","endpointButton","e","selectButton","selectEndpoint","generateButtons","React","Component","withStyles","width","endpointSelectedButton","OperationsButtons","operations","operation","method","operationsArray","fabMargin","selectOperation","selectedOperationIndex","PropertiesEditor","propertyName","placeholder","arguments","length","undefined","Grid","propertyContainer","container","direction","justify","alignItems","propertyInput","Input","name","value","properties","onChange","input","inputProps","fields","push","generateField","generateProperties","GuiTheme","marginLeft","marginRight","marginTop","marginBottom","flex","CssTextField","root","& label.Mui-focused","& .MuiInput-underline:after","borderBottomColor","& .MuiOutlinedInput-root","& fieldset","borderColor","height","&:hover fieldset","&.Mui-focused fieldset","TextField","isEmpty","object","HydraConsole","classesMapping","agentEndpoint","temporaryEndpoint","previousEndpointIndex","selectedEndpoint","selectedOperation","getURL","hydraClasses","supportedProperty","classesProperties","resourcesIDs","auxClass","auxProperty","title","storedProperties","JSON","parse","localStorage","getItem","storedResourceIDs","setItem","stringify","selectedEndpointIndex","outputText","restorePropertiesAndResourceIDs","endpointIndex","range","replace","supportedOperation","operationIndex","auxProperties","assign","target","_this3","filteredProperties","resourceType","toLowerCase","getBody","url","serverUrl","resource_type","filters","axios","post","then","response","data","jsonStringifyReplacer","catch","error","console","log","putBody","new_object","postBody","updated_object","deleteBody","_this4","selectedHydraClass","stringProps","rawCommand","outContainer","md","item","xs","endpoints_buttons_EndpointsButtons","operations_buttons_OperationsButtons","size","deleteIconButton","clearAllInputs","propertiesContainer","handleChangeResourceID","onFocus","properties_editor_PropertiesEditor","updatedField","handleChange","id","InputLabelProps","textField","margin","sendRequest","sendCommand","spacing","outputContainerHeader","outputContainer","lib","defineProperty","breakpoints","down","maxHeight","padding","overflowY","border","borderRadius","whiteSpace","boxShadow","&:hover","HydraGraph","_require","require","DataSet","Network","nodes","apidocGraph","edges","document","getElementById","graphContainer","AgentGUI","consoleWidth","hidden","serverURL","get","res","supportedClass","render","successUpdate","location","reload","ThemeProvider","navbar_NavBar","toggleGraph","display","serverInputContainer","InputLabel","htmlFor","onKeyPress","submitServerURL","handleChangeServerURL","serverInput","disableUnderline","endAdornment","InputAdornment","IconButton","Send_default","hydra_graph_HydraGraph","hydra_console_HydraConsole","Boolean","hostname","match","ReactDOM","app_app","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.d86d5b45.chunk.js","sourcesContent":["import React from 'react';\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Typography from '@material-ui/core/Typography'\nimport Fab from '@material-ui/core/Fab';\nimport AspectRatioIcon from '@material-ui/icons/AspectRatio';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport logo from '../../assets/images/hydra_eco_logo.png';\n\nconst useStyles = makeStyles(theme => ({\n hydraEcoLogo: {\n maxWidth: '30px',\n cursor: 'pointer'\n },\n }));\n\nconst NavBar = (props) => {\n const classes = useStyles();\n\n const toolbar = {\n AppBar: {\n backgroundColor: props.backgroundColor,\n },\n Typography: {\n fontSize: props.fontSize,\n flexGrow: 1,\n },\n centeringSpace: {\n flexGrow: 1.21,\n }\n };\n\n return (\n
\n \n \n \n {props.text}\n \n\n {props.onClick && (\n \n \n )}\n \n
\n {props.onClick && (\n window.open('http://www.hydraecosystem.org/')} className={classes.hydraEcoLogo} alt=\"logo\" />\n )}\n
\n
\n
\n )\n}\n\nexport default NavBar;","import { createMuiTheme } from '@material-ui/core/styles';\nimport { purple } from '@material-ui/core/colors';\n\nexport default createMuiTheme({\n palette: {\n primary: {\n main: '#212121',\n dark: '#404040',\n light: '#eeeeee',\n contrastText: '#fff',\n },\n secondary: {\n main: '#FBD20B',\n dark: '#c3a100',\n light: '#ffff54',\n contrastText: '#000',\n },\n contrastThreshold: 3,\n tonalOffset: 0.2,\n companyBlue: '#FF0000',\n companyRed: { \n backgroundColor: '#E44D69',\n color: '#000',\n },\n accent: { \n backgroundColor: purple[500], \n color: '#000',\n },\n text: {\n primary: '#000000',\n secondary: '#585858',\n },\n },\n});","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n endpointButton: {\n width: '80%'\n },\n endpointSelectedButton: { \n backgroundColor: '#f00', \n }\n});\n\nclass EndpointsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n\n Object.keys(this.props.endpoints).forEach( (endpoint) => {\n buttons[endpoint] = false\n })\n\n var selectedButton = 0;\n buttons[ selectedButton ] = true;\n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n \n }\n\n generateButtons(){\n const endpointsArray = Object.keys(this.props.endpoints);\n const { classes } = this.props;\n\n var buttons = endpointsArray.map( (currProperty, index) => {\n const labelEndpoint = this.props.endpoints[currProperty].property.label \n return( {this.selectButton(currProperty); this.props.selectEndpoint(currProperty)}}>\n {labelEndpoint}\n )})\n return buttons;\n }\n\n render() {\n \n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(EndpointsButtons);\n","import React from 'react'\nimport Fab from '@material-ui/core/Fab';\nimport { withStyles } from '@material-ui/styles';\n\nconst styles = theme => ({\n fabMargin: {\n }\n});\n\nclass OperationsButtons extends React.Component {\n constructor(props) {\n super(props);\n var buttons = []\n \n let selectedButton = 0;\n\n const operationsArray = Object.keys(this.props.operations);\n operationsArray.forEach( (operation, index) => {\n buttons[operation] = false\n if(this.props.operations[operation].method == \"GET\")\n selectedButton = index\n })\n\n \n buttons[ selectedButton ] = true\n \n this.state = {\n buttons: buttons,\n selectedButton: selectedButton,\n }\n }\n\n selectButton(clickedButton){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[clickedButton] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: clickedButton\n })\n }\n\n generateButtons(){\n const operationsArray = Object.keys(this.props.operations);\n \n const { classes } = this.props;\n\n var buttons = operationsArray.map( (currProperty, index) => {\n const operation = this.props.operations[currProperty].method \n return( {this.selectButton(currProperty); this.props.selectOperation(currProperty)}}>\n {operation}\n )})\n return buttons;\n }\n\n componentDidUpdate(){\n if(this.state.selectedButton !== this.props.selectedOperationIndex){\n var updatedButtons = this.state.buttons.slice();\n updatedButtons[this.state.selectedButton] = false;\n updatedButtons[this.props.selectedOperationIndex] = true;\n this.setState({\n buttons: updatedButtons,\n selectedButton: this.props.selectedOperationIndex\n })\n }\n }\n\n render() {\n return this.generateButtons()\n }\n}\n\nexport default withStyles(styles)(OperationsButtons);\n","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from './../../../app/gui-theme';\n\nconst styles = theme => ({\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n input: {\n flex: '100'\n }\n});\n\nclass PropertiesEditor extends React.Component {\n generateField(propertyName, placeholder = null){\n const { classes } = this.props;\n //this.filledProperties[fieldName];\n return (\n \n \n \n )\n }\n\n generateProperties(){\n var fields = []\n \n for(var property in this.props.properties){\n fields.push(this.generateField(property, null));\n }\n return fields;\n }\n\n render() {\n return this.generateProperties()\n }\n}\n\nexport default withStyles(styles)(PropertiesEditor);\n","import React from 'react'\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Input from '@material-ui/core/Input';\nimport Grid from '@material-ui/core/Grid';\nimport GuiTheme from '../../app/gui-theme';\nimport { withStyles } from '@material-ui/styles';\nimport axios from 'axios';\n\n// Custom imports\nimport { Scrollbars } from 'react-custom-scrollbars';\n\n// Local components\nimport EndpointsButtons from './endpoints-buttons/EndpointsButtons'\nimport OperationsButtons from './operations-buttons/OperationsButtons'\nimport PropertiesEditor from './properties-editor/PropertiesEditor'\n\n// Custom Css modification to Raw Command Input field\nconst CssTextField = withStyles({\n root: {\n '& label.Mui-focused': {\n color: GuiTheme.palette.primary.light,\n },\n '& .MuiInput-underline:after': {\n borderBottomColor: GuiTheme.palette.secondary.main,\n },\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n height: '55px',\n },\n '&:hover fieldset': {\n borderColor: GuiTheme.palette.secondary.main,\n },\n '&.Mui-focused fieldset': {\n borderColor: GuiTheme.palette.primary.light,\n },\n },\n },\n})(TextField);\n\n// Css Styles to the Components\nconst styles = theme => ({\n outContainer: {\n height: '87vh',\n backgroundColor: GuiTheme.palette.primary.dark,\n [theme.breakpoints.down('md')]: {\n height: '160vh'\n }\n },\n propertiesContainer: {\n maxHeight: '40vh',\n width: '100%',\n maxWidth: '80%',\n padding: '20px',\n backgroundColor: GuiTheme.palette.primary.light,\n overflowY: 'auto',\n border: '3px solid Gray',\n borderRadius: '25px',\n },\n propertyContainer: {\n marginTop: '2px',\n marginBottom: '2px'\n },\n propertyInput: {\n color: GuiTheme.palette.primary.dark,\n marginLeft: '10px',\n marginRight: '6px',\n },\n input: {\n flex: '100',\n },\n outputContainer: {\n height: '40vh',\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n whiteSpace: 'pre',\n overflowY: 'auto',\n ['@media (min-width:780px)']: { \n width: '80%',\n fontSize: '0.8em'\n }\n },\n outputContainerHeader: {\n width: '90%',\n backgroundColor: GuiTheme.palette.primary.light,\n fontSize: '1.0em',\n padding: '7px',\n border: '2px solid Gray',\n borderRadius: '6px',\n },\n textField: {\n width: '68%',\n marginRight: '1%',\n color: '#000',\n borderColor: '#0f0'\n },\n sendRequest: {\n border: 0,\n borderRadius: 3,\n boxShadow: '0 3px 5px 2px rgba(255, 255, 255, .3)',\n height: 48,\n width: '22%',\n },\n deleteIconButton: {\n backgroundColor: GuiTheme.palette.primary.light,\n color: GuiTheme.palette.primary.dark,\n '&:hover': {\n backgroundColor: GuiTheme.palette.secondary.light,\n color: GuiTheme.palette.primary.dark,\n },\n }\n});\n\nfunction isEmpty(object){\n if(Object.keys(object).length === 0)\n return true\n\n return false \n}\n\n\nclass HydraConsole extends React.Component {\n constructor(props) {\n super(props);\n var endpoints = null;\n var classesMapping = []\n this.agentEndpoint = \"\"\n let selectedOperationIndex = 0\n\n // util variables\n this.temporaryEndpoint = null;\n this.previousEndpointIndex = 0; // for managing the state and local storage\n this.selectedEndpoint = null;\n this.selectedOperation = null;\n this.getURL = true;\n \n // Modifying reference from indexed array[0, 1, 2] to name [\"vocab:Drone\", \"vocab:..\"]\n for(var index in this.props.hydraClasses){\n classesMapping[this.props.hydraClasses[index]['@id']] = this.props.hydraClasses[index];\n if(this.props.hydraClasses[index]['@id'] === 'vocab:EntryPoint'){\n endpoints = this.props.hydraClasses[index].supportedProperty\n }\n }\n\n // Initializing empty array with all properties in the ApiDoc\n var classesProperties = {}\n var resourcesIDs = {}\n for( var auxClass in classesMapping){\n classesProperties[classesMapping[auxClass]['@id']] = {}\n // Creating the array that will maintain the Resources IDs\n resourcesIDs[classesMapping[auxClass]['@id']] = {}\n resourcesIDs[classesMapping[auxClass]['@id']]['ResourceID'] = \"\" \n for( var auxProperty in classesMapping[auxClass].supportedProperty ) {\n classesProperties[classesMapping[auxClass]['@id']][\n classesMapping[auxClass].supportedProperty[auxProperty].title] = \"\"\n }\n }\n \n // Initialize the local storage with the empty values\n //localStorage.clear(); \n const storedProperties = JSON.parse(localStorage.getItem('properties'))\n const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs'))\n\n if(isEmpty(storedProperties)){\n localStorage.setItem('properties', JSON.stringify(classesProperties))\n }else{\n classesProperties = storedProperties\n }\n\n if(isEmpty(resourcesIDs)){\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n }else{\n resourcesIDs = storedResourceIDs\n }\n\n\n this.state = {\n hydraClasses: classesMapping,\n endpoints: endpoints,\n properties: classesProperties,\n resourcesIDs: resourcesIDs,\n selectedEndpointIndex: 0,\n selectedOperationIndex: 0,\n outputText: \" Your request output will be displayed here...\"\n }; \n\n }\n\n componentDidMount() {\n }\n\n\n \n\n componentDidUpdate() {\n this.restorePropertiesAndResourceIDs()\n }\n\n restorePropertiesAndResourceIDs() {\n if(this.previousEndpointIndex != this.state.selectedEndpointIndex) {\n const storedProperties = JSON.parse(localStorage.getItem('properties'))\n const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs'))\n \n this.setState({\n properties: storedProperties,\n resourcesIDs: storedResourceIDs\n })\n\n // updating for next time\n this.previousEndpointIndex = this.state.selectedEndpointIndex \n }\n }\n\n selectEndpoint(endpointIndex) {\n const selectedEndpoint = this.state.endpoints[endpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n\n const selectedHydraClass = this.state.hydraClasses[temporaryEndpoint]; \n const operations = selectedHydraClass.supportedOperation\n\n let selectedOperationIndex = 0;\n operations.map((operation, index) => {\n if(operation.method == \"GET\")\n selectedOperationIndex = index\n })\n\n this.setState({\n selectedEndpointIndex: endpointIndex,\n selectedOperationIndex: selectedOperationIndex\n })\n }\n\n selectOperation(operationIndex) {\n this.setState(\n {selectedOperationIndex: operationIndex}\n )\n }\n\n handleChange(e){\n // Boolean variable that says we will fetch by resource type\n this.getURL = false;\n\n let auxProperties = Object.assign({}, this.state.properties);\n auxProperties[this.temporaryEndpoint][e.target.name] = e.target.value;\n \n localStorage.setItem('properties', JSON.stringify(auxProperties))\n \n this.setState({\n properties: auxProperties\n })\n }\n\n handleChangeResourceID(e){\n // Fetch will work by URL\n this.getURL = true;\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n resourcesIDs[e.target.name]['ResourceID'] = e.target.value;\n\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n \n this.setState({\n resourcesIDs: resourcesIDs\n })\n }\n\n clearAllInputs(e) {\n // Will clear the current endpoints input \n let auxProperties = Object.assign({}, this.state.properties);\n Object.keys(auxProperties[this.temporaryEndpoint]).map(name => {\n auxProperties[this.temporaryEndpoint][name] = \"\"\n })\n\n let resourcesIDs = Object.assign({}, this.state.resourcesIDs);\n Object.keys(resourcesIDs).map(name => {\n resourcesIDs[name]['ResourceID'] = \"\"\n })\n\n localStorage.setItem('properties', JSON.stringify(auxProperties))\n localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs))\n\n\n this.setState({\n properties: auxProperties,\n resourcesIDs: resourcesIDs\n })\n }\n\n\n\n sendCommand(){\n const properties = this.state.properties[this.temporaryEndpoint];\n var filteredProperties = {}\n for(var property in properties){\n if(properties[property] !== \"\"){\n filteredProperties[property] = properties[property];\n }\n }\n\n const resourceType = this.selectedEndpoint.property.label.replace(\"Collection\", \"\")\n\n if(this.selectedOperation.method.toLowerCase() === 'get'){\n var getBody = null\n if(this.getURL){\n getBody = {\n method: 'get',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID']\n }\n }else{ \n getBody = {\n method: 'get',\n resource_type: resourceType,\n filters: filteredProperties,\n }\n }\n axios.post(this.agentEndpoint + '/send-command', getBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return;\n }\n else if(this.selectedOperation.method.toLowerCase() === 'put'){\n var putBody = null;\n putBody = {\n method: 'put',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n new_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n //debugger\n axios.post(this.agentEndpoint + '/send-command', putBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n else if(this.selectedOperation.method.toLowerCase() === 'post'){\n var postBody = null;\n postBody = {\n method: 'post',\n url: this.props.serverUrl + this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n updated_object: filteredProperties,\n }\n filteredProperties['@type'] = resourceType;\n axios.post(this.agentEndpoint + '/send-command', postBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }else if(this.selectedOperation.method.toLowerCase() === 'delete'){\n var deleteBody = null;\n deleteBody = {\n method: 'delete',\n url: this.props.serverUrl + this.selectedEndpoint.property.label +\n \"/\" + this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'],\n }\n axios.post(this.agentEndpoint + '/send-command', deleteBody)\n .then( (response) => {\n this.setState({\n outputText: JSON.stringify(response.data, this.jsonStringifyReplacer, 8),\n })\n })\n .catch(function (error) {\n console.log(error);\n });\n return\n }\n axios.post(this.agentEndpoint + '/send-command', {\n method: this.selectedOperation.method.toLowerCase(),\n resource_type: this.selectedEndpoint.property.label,\n filters: this.state.properties[this.temporaryEndpoint],\n })\n .then(function (response) {\n this.setState({\n outputText: response,\n })\n console.log(response);\n })\n .catch(function (error) {\n console.log(error);\n });\n }\n\n jsonStringifyReplacer(key, value) {\n // Filtering out properties\n if (value === \"\") {\n return undefined;\n }\n return value;\n }\n \n render() {\n // Block of values that need to be re assigned every rendering update\n // They are used below along the html\n const { classes } = this.props;\n const selectedEndpoint = this.state.endpoints[this.state.selectedEndpointIndex];\n this.selectedEndpoint = selectedEndpoint;\n\n const temporaryEndpoint = selectedEndpoint.property.range.replace(\"Collection\", \"\")\n this.temporaryEndpoint = temporaryEndpoint;\n \n var selectedHydraClass = this.state.hydraClasses[temporaryEndpoint];\n\n const selectedOperation = selectedHydraClass.supportedOperation[this.state.selectedOperationIndex];\n this.selectedOperation = selectedOperation;\n \n var stringProps = JSON.stringify(this.state.properties[temporaryEndpoint], this.jsonStringifyReplacer);\n \n var rawCommand = \"\";\n if(this.getURL){\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"\" + this.props.serverUrl +\n this.selectedEndpoint.property.label + \"/\" +\n this.state.resourcesIDs[this.temporaryEndpoint]['ResourceID'] + \"\\\")\"\n }else{\n rawCommand = \"agent.\" + this.selectedOperation.method.toLowerCase() +\n \"(\\\"/\" + selectedEndpoint.property.label + \"\\\", \" +\n stringProps + \")\"\n }\n\n return (\n \n \n {\n this.selectEndpoint(currProperty) }}\n endpoints={this.state.endpoints}> \n \n \n \n {\n this.selectOperation(currProperty)\n }}> \n \n \n \n \n \n \n \n \n this.handleChangeResourceID(e) }\n onFocus={ (e) => this.handleChangeResourceID(e) }\n className={classes.input}\n inputProps={{\n 'aria-label': 'description',\n }}\n />\n \n {this.selectedOperation.method !== \"DELETE\" &&\n {this.handleChange(updatedField) }}>\n }\n \n \n \n \n { }}\n margin=\"normal\"\n variant=\"outlined\"\n value={rawCommand}\n />\n \n \n \n Output\n
\n \n {this.state.outputText}\n \n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(HydraConsole);","import React from 'react'\nimport { withStyles } from '@material-ui/styles';\n// eslint-disable-next-line\nimport { DataSet, Network } from 'visjs-network';\n\nconst styles = theme => ({\n graphContainer: {\n width: '100%',\n height: '82vh',\n },\n});\n\nclass HydraGraph extends React.Component {\n\n componentDidMount(){\n debugger\n var { DataSet, Network } = require('visjs-network');\n\n // Create Node and Edge Datasets \n var nodes = new DataSet(this.props.apidocGraph.nodes)\n var edges = new DataSet(this.props.apidocGraph.edges)\n\n // Get reference to the mynetwork div\n var container = document.getElementById('mynetwork');\n\n var data = {\n nodes: nodes,\n edges: edges\n };\n\n // See vis.js network options for more details on how to use this\n var options = {};\n // Create a network\n // eslint-disable-next-line\n var network = new Network(container, data, options);\n }\n\n render() {\n const { classes } = this.props;\n return (\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(HydraGraph);","import React from 'react';\nimport NavBar from '../components/navbar/NavBar';\nimport Input from '@material-ui/core/Input';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport IconButton from '@material-ui/core/IconButton';\nimport { withStyles } from '@material-ui/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Send from '@material-ui/icons/Send';\nimport HydraConsole from '../components/hydra-console/HydraConsole'\nimport HydraGraph from '../components/hydra-graph/HydraGraph'\nimport './app.scss';\nimport GuiTheme from './gui-theme'\nimport { ThemeProvider } from '@material-ui/styles';\nimport axios from 'axios';\n\nconst styles = theme => ({\n serverInputContainer: {\n width: '100%',\n backgroundColor: GuiTheme.palette.primary.light,\n border: 10,\n display: 'flex'\n },\n serverInput: {\n width: '75%',\n backgroundColor: '#FBD20B',\n padding: '5px',\n borderColor: '#000',\n borderRadius: 10,\n },\n});\n\nclass AgentGUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n consoleWidth: 6, \n hidden: false, \n classes: null,\n apidocGraph: {edges: null, nodes: null},\n serverURL: \"http://localhost:8080/serverapi/\"\n }\n\n // Empty when hosted using flask\n this.agentEndpoint = \"\"\n }\n \n componentDidMount() {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n classes: res.data.supportedClass,\n serverURL: res.data.serverURL.replace(/\\/$/, \"\") + \"/\"\n }, () => this.render())\n });\n\n axios.get(this.agentEndpoint + \"/apidoc-graph\")\n .then(res => {\n this.setState({\n //for this.supportedClass > if @id=\"vocab:EntryPoint\" then supportedProperty.property.labe\n apidocGraph: res.data\n }, () => this.render())\n });\n }\n\n toggleGraph(){\n if(this.state.hidden){\n this.setState({\n consoleWidth: 6,\n hidden: false\n })\n }else{\n this.setState({\n consoleWidth: 12,\n hidden: true\n })\n }\n }\n\n handleChangeServerURL(e){\n debugger\n this.setState({\n serverURL: e.target.value,\n })\n }\n\n submitServerURL(e){\n debugger\n axios.post(this.agentEndpoint + \"/start-agent\" , {url: this.state.serverURL})\n .then( (successUpdate) => {\n axios.get(this.agentEndpoint + \"/hydra-doc\")\n .then(res => {\n this.setState({\n classes: res.data.supportedClass,\n }, () => window.location.reload() )\n .catch( (error) => {\n console.log(error)\n })\n });\n })\n .catch( (error) => {\n console.log(error)\n })\n }\n\n render() {\n const { classes } = this.props;\n\n if(this.state.classes && this.state.apidocGraph.nodes ){\n return (\n \n this.toggleGraph()}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }else{\n // This should return a loading screen\n return (
)\n }\n }\n}\nexport default withStyles(styles)(AgentGUI);","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport AgentGUI from './app/app.js';\nimport './index.css';\nimport * as serviceWorker from './service-worker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkEAIAAACvEN5AAAAfOklEQVR4nOydB1QU1//272xfOlJFUKQpSDGiqEhHEOwRscVeEIMlsaDUBUFBxQoqRMWGIhY0YECQrlJFIyACFkBAQar0bTPvgTHnZ14D7uzuoPlnP5yzxzPOfKfcZ+7c+lwSl1tUJC4ORIgQKoRvfQEi/m8iEpYIXBgiYbGTOZyhOZOI7wPchYVYIL4AvNWojwZ+eJ8Lb14vr133778LlJ4e5j0kHb/4uAura1LPZCRdXIKeh/eZRGChsbG1FfLHLz7+wnLvvQdlSs0RLwAMvM8lgndYSWw2nvFJwg1XJFs+HIavuyUxOWZP55WVwXCjW8s4JFFuoYwXNFXzphoZ8p+cYGhAIDjSzVJJgfInZWWhTOFeg+DUrW/QRZDY2JQUjnd+QUkJ7PtW4/0YOK1F9qMhggxDpKugRJVlCgoQZBQ75j3RdmaBRSqRaGios5HwnVaGatc1uCJIBsg/xOU+X/RaDfYt76l6AsNir2iKUJJKheJJyHrKbkNDgo1jvrk50ZZOpzpA1oKcERK8HasjrqsLSXeN2buXNfXatcREDpeXoygUMhlYrVGff4w0Pdjh1x8oFKmjEhJ4Zs6Dw5rK9kTSPZKPHWebhhZfdeFwuebcVAThPcKsAktLYkBokUcSxX7UapUKgg2e1/t1SkpenYHhnTsPSbBYKd65NK45YokwQMbgR8mFyswHGb9FMBjUnPnPbImkQP7OLpCwOF5cMyR97hG3JuaUJFY2hQvzF0fnnfpqAuG+55kKao7qOaXwoU2Srq6eHoQx8+CmGCbzYeCTI1wfQaKhCXMvMTyc7jghXu/Dt8jDnswpVYRh+xwXl57E1tb2OGDFX5ygoF/uUMju7ms1yBSsxwp0237gZCnbSxBJoVSoVF2AYWfF7e1MD9gHFigWdtzcAh8ypwouKZTmLW13gNX8Z1u39k5pa+uIQyyFcY280mncvQth/Dhs27beKYJICsXD49h8Fju+I9OK4431WD6FVSL38jfY4vCRi6OFVwTMP1hcAqdFRd015qQIK+bgpHLzgrmcy5fjd3DNhRu5ru7DdSTdP/PUYnaycCMPzlHpS5rsabVRDTHCa0pweecHsTw7JnTtRDBUv/gU1rFnUbXsaSwWm/21bzZWbjQmeWJ/P/jjt+E3brBxFPHFNb//zk5hm3Km4dli9Dkx1+/tEXZT9Ae95mYEuXjp9zgskTELC31MsYb3zThmWI/lhWcLypfi/zFEm22Tp2VTuTxVNfjj48fOncDq6bEX4XAafmdBQSsfZWWV57HkK7wTE3PvHq7CKphVIg+noY8M67G80LK1fTsecf/O27XvXeG09rjOTnzu4nPKl1St6pMxvrQatbcDK17qffyR51gcijC6dva48ybcgduxGIABAMuU7Q0A04OVhKT3TmGxoMys14WSCI79fuR9xADEsi7swwcwE7+zFBVVlGNpShCEN6tq1yNWNWsbXIHd4HsiSN81ob9YadrS+gtiAc6ALDCZ70sdBLTxJXNCQQkMm8dNNCYC8dl0OgAEApT1T/sPKKxeDxYLgI7tXfHAj8qgZAMgmS1OBn6NN1tuwywgAzSxXBaUCfkDqy23Nt/YfNPKzwpYWZYtLisrUw7OC847cLC9vcO4wxjdc9QolQqCv9wJmatADPPd8wzNgXoEmIPj+J3hf8jISBYCoOQxLBxLPyMEQRn9vzw2HyunyGkRAPEB0RaCPm+BG14+PGJ4xCJF5+dOch9//XinfUJMw/XGG+N6Ent6enqw3kvrnY44JB2ZDacjjPodTe4QJCZGbUcQmWdSUn9vgxxQWDQaJQgA2ikK6H8cCyAA5vVtpySRH336fNzn/YIWlTo7L1KcHTLLZJZ41YXKqqrNSksUbBVtf6pZVrgs5HR7BIj4tKeR0diNBAJtTZ+U8WPEScXnEMTLnlpampc1NHbE74jbsUO3fqzrWNee3T27e9xjjW4b3f7l7PJzI8+tGPwDpHZWuQyypmwjk8EjTBdp99nvVyE5EAEAuttGX4RACXiligDZfo7MCTl0KJ/FYnqykocVy2UNKzYaYXjbyPZXsMN4x11M19NXcsqEbACQeiohBvlLAYlT6NZ/epCYy1jqq1RUsDf2T58+PcDWpr6+/lp9Pbpl1Cj18+rnDQz09fX1P9/TxsYkkSjkjqYvGeM6+iIhS8FZ9tnA6qI70ul0euiwE89O/Cj9VOqJ1NyKZeURFUvrXOrq6lyc5ReWLAxdrb5q1epRA0VA82lT0/G/DFWTryVj0h9/Pb0ZQfb20wO7ujondnUxPZlMpuf76Hcb30cbxxvHTdiutFixVLEUa3wlZTk53l5IzMKytJx0l/gA61G0IGow1QE255rDfzVCMhA/xI8yg7qfGoRuEJtJCwZ+86Rt/Im2WONjhUgkBADgUud8krRvoH1GVY6MHBkJw3AabNHZ2bGz8y7wB9bAGoa5vnBatUZ19dtL49vGbzP6ZaAI845aWxMDlCPknYdKWIucZ2QTA9B/y8rKHpeTM2wZf8foF5n5sn/KHkO39+7pvde7h5ZLo9FovEdGu+Amdoxr5O1eMAtrbMzotYQsG8ikm4jh2IKQx48LD8s8k30m+wzd8mbVm8g3keXhFRXlv6FbVl+YL0OaLiMjeWSouqU9kjdoke0m/KDb8E9SfvOmclXlqra2tvFtdyA/KAPy03czMDC4qaioVKp0SvKxpKTE7EwoKyvrH54D2rFzZI67CQVzZ4ggmJlNaCcGGGzRvkKA6usbxtbXly0pPfWi9OP4tra2NnQfsZl9f1398B55/jybvaQHUvN47c/ls4H04uj9+6g0xVJeM8Zw5YilERGvzr5We3VOa732Bu0o0gMyiTQ96soVl6vvhpcrOEPW++22xeJbsvr/QfvwHwZerqEGuV5bVEoKRD9e6P+y+nGJdtXdpJdtn5ubE5xmkZaWBucG5dJyaYeljhw9Oj/WMLb1ttHnMScnGhoSbJ4U3vhAp3+Drmh/4A/AqZM+3pSgBJOE3QkJ3bt79/QkyjnJhck5adfq1GlvuDomemy0a1NTs0GzAS8h0dQ5EeqZRKHyfiECdUIXFVVEwPCcw25NvVN470Yg7yM9hKzZXhwzJB3NYP/oOq1Io9kQTBKxf2SFy2Px5wu5qUelL63jeN9LerSPm9o2vr194Oo/WgubnGiwBfL/uWGJMjlwcbijA4k8UCV8KNk0NmAvM+lC9e9xBJvJu026TRI+/t73V1RU7FQcyksEVFKJJqdP03INWnTeYelQF8KwmfqNTTcQxHXTXltmUrxxhhVv/W5okkQMZ6RRyGtGz39GIgtyDXgAw4gFAC9fVq+BfavO19XBFuXLqi4CP/UqlQrgp7JU0RmCdDdpaBCyxEPoB7/dgJ+BYN5jsZD0ZS93mzCT7vySCmPpYv9JZdYh0sOQwl2dFHtFxWFOvH2XPkcIwvocNA87v/L2eE5KnHE6wvGuuvDO5a+cDM2f7OymehBtGWmbNlH2G3eOa/xeB8d9CTrmXTNK9dy/Z+Q7ggBLAC5rxMVzucd+vFzDYhUtqKiALT5vItHSUnsNZc6kW6SRSCvPz51Lmv7DD7oNgqWLkIX1Jc/DXi9HLCXnih1CGEr9ZTKqA4Ui2OjEb8W/UVhf0rG9qwthFJ2oiEDS9fQ0L0PWskVST4Wd4+LeYiTzo+QRyHrECEVFyAaMxPtsIr6O5BFxcchftUW5DPKTPCs+C5+X5F/zGRLx70IkLBG4IBKWCFwQCes/CgzDuM7zFAnrPw1khddAR5Gw/tNAWQScegiGSFhoM52I/w5DJqyhnV8n4luDu7AgCHs/k4h/PyJhicAFUeFdBC6IhCUCF0TCEoELQhvd0HyzrQ2xvHkz2ZRrnuH/WJzr07Cp6RaCsEzZbGQyJZu8Huol7yNvBFYm3fqbCYT1l53kSIGjLqiofGsfqYFAnVsS7z0kcVOfPCk9DVu8ZtXIwFPkNsnYQFO1tUZWEgi2AZN7iA+M2sbWf9+jymo06jfCaXd+T7Pgpr5Y9HolDDfebJVEekfEKeUTWFpaI10INpNN9G9B/hMn6rsRbaEsaK9gZxRsPFb/bOnQ4itX2V6e7OPHWazuhN49vA3DQAf9nSjyYFL2b9BeWELmcf4cvnR2dncjjABixBK2V3h4zM9sr86d3e5fu6MJ23UbCDanFvlwKfsnTdJvwn+WES+g7mUenseOs02PP4uK4s1KTu2ccjjBJvDB1mZK9nLV2Y+JRHQcPVb4FVa/pH52C3zITIoYfr2RX4MQdPJC9JhDYjQHZwX7GX9NXRp6Gq4130SQufO2xDKnPpYoKeGmYo2Aviohj3d2Uuzdxi0tJw84sWxo2HCFgTCnRq68bcSvLdSPMrY2xICougN0WjA6gZl3+BTWuXOxLRy2i4ufFZOF9dgvkZWVmgsyXv6WMEnsoOwCqXlD60r68ZeODsRymvcKtd7EF0pvRsJC8HQIC/PypOzftGnxkm8hr+Tk7EdcjqOj66ZepuDRlpQ55hEfXNE+QKc58H4U5pJBby/LAwAv9nFZltAs11DvudMvYj6wvYQVk3fcbgSSmB7CkhTK9u0HD7GS/3xapgzjaJM0ED7c0IWsacKKdm1s4mSu+V3jDIDFtwyzsGJj70/jcBrdWo2E7dZyWStu+9CuX5GakufANY+u73twwo2MWtK5bQ58yPQUbuTBKXxc6sxNfTz7uYKwHbkCH/2mgsW9EbOwMqwKZgvm1Wk8YcKE8W3hZacXnTp5IC+YGrRfPkx+ofzCimXVoxHLZv2220PVr3j23K1mLHnkqFEjI0dGatZortNcx8v+ublFC2Df4uKXy4bKV/U+J4fK5VL68fLySHJPuKEXc+1avavrxuiNOp9Px8VKgXiJPOzbNK61BeHpXjALq0Kl+iJswde1AcVFCs/lww7PCZl1uJDuQKXScuWdhi2QC2XAPuY+nwqYr5bXXIZxtylDSfPNO/i1JEfnP3p67Lm3q+tAXnBO0IwDwfv377cPVzrlfPK5eIH4IfFDg0dI983LF4ZtLi+UOL18iVisXLlixfJX2tpaWmPet7W13m4zci5ZGOok53RiwTCnIkHiF5e8VIV5eu0HFBZqptifpf/tt3lLWxu/H0GbvTYEW2JHfPuOjjimJ9OUaSpXIi8vv3D48OHhyuWqr1SXqy5vbGxpQZAvzyvc38YPrbEIo0m/ddvXckcHmkOO4wFLxNLXGuq3BulsMWqJbWmRC5Mrliteq7Fm9JoLg0co/61aHYbxviP0t6a2PgZOn9hh3G7cIS+vUKJQgvghVohf3dU67bqr9jPs99kJ1Kzz7kqj3t9Th+v9z2abAxuvJbFMkfQm17Ytf6+jsezYWgCAU/xclng/bG/ONLYZaAKbQRMtiJZLy22f0A4zYcnDEiESIa0J7fWNlQ2tLVvwnLv3yf+OB8a814kec5XqQDtMm0jIIhAIr2HQ98fc07uH2avTql2nXTd4hNbW9nbAaNjdsgUEC+nyB6TrRE8L8CPtI8WRX0DDoTIoAlwBANTB/VCzKTnUHADAaH7jt8R+/BVkNKS1bAGfFhaQkKAfBBmyQErq7w5hAwoLNcxQi1T6/6qYSmlylVDiK/D2EvZsq2BmQUFBwcrQFU7L5zc1NYKmprea1Wur14qxxfPFTV+fezPyTZ2+ndZlQpZapJIunsIafl8+hfCp5Wlw7+cnUk/mPjk63cQ2y3YndxnXm1tLtCHaEm1Uz6qpqUalVKchab5gNQCgbaAIWlojRxJs1SKVMDn68YfiwWEN0JQygzLlUkWQgaQj79Ht8k7yJfKh8R3xlLtoa9RP/MXXrFFdATLUYpV+AtMH3xNzGUtXV0OD3+GsRcXFTsWhN9xu3rzZrKMz5p2OjpKSsrLy6VOlp8NPl3FTueZstk60ujpew2X/B8mOOB0Ag2Ydl691xWRYZUKZ1nHb4zvi4nUb9D7objIwMGw2MMjam/Ugw++qS/TG6PrBIxjH6ekNlbPD6NGqP0HW51acH3XxLZyKIIivVo12rZbmm5FvzldWXtKM0opaL0h8jbeqqrylDuYG0uvXk6ZwzJYu3dXNTBLgCoH0UaknEiGsZPY0rg/qh2liYqBP2JuTc+Uq/YAgkXnnUMH5SjZ7z5Sj81g8NfNSc6hBFHvSdCKRSOzq6nbvSRx8f2lpiRCQUaeVZiGWT8+n0fCXV+Sb27fZ9zdoMxgsU3QLPY/uSKX2TO5JZArUWDqsSPopBBp0s6zFxHnx0sGcY82da21Nesi7M9ZAfPy1fULnzs8tVhcpzAjmd0kg/tigvbCYNB01SeNlf+ZUpgcrmRdJoWy7veIV+dHQSAplpqN5Cmk6WpNFtwguKZSFJfbZJDve7ZkwCwvtMzp2dLcJNUiQdpHPQX2Y1tc6nRhaYcnISM6FMk8p+KTQgj9PDMEZbzR2LGGvu8lajaHtXFculz8JQctUZh7E4rc4OBIhYgeB3667ay5gSR0+T7843OEAMSC0yDOJYi+IvNDic1Rt8AzqDMkn4iHfwmVqobNdNvFBxBJfXwpZcHmhkrrPPqNCyxV81T/+ODLHfRdlhupypcWCnR19GlE1wTTqDI3LquewDHASgo1RampeMJfj1hhIZia//Kn6Im/t5qiV7fk3gSQqdeFze/uhzasG4o+JWdaclDVrvc2ZTHQdL96P/enMbHES8dQi71RKkISEmNi3tmLLzv5Thpu6oGhbK3Mq1i441VdKLyD/s6/2ZlLs7eymmpK+Ugf8EqH5Y6H+dw+IhXO45ske2dlwWqnS65Fcn+o171wQBjr9SzlcPgyCzDgTJhCy1mksGEa2U14qL//9TbZAV7o6q3prK8fr5pb7XhyfP4+9OA2n9d5jmf5VGhvxUkkJgmz2mrgTbdeOXnCcRLJgGPPhJ403LQYff0Esjzy99JbNvt2aksrxLi+vuoAwPjdek5kvWQj5//BRdxNkPbfQKoP0cMM75zDSdEFyXNyN196/b2oCfgoKsseAH4lE/C7yJeygr02RbHkFkq7zXv08ZC0mRnP81lfFH6wkdjKS/lzh9UrIasxY9fNIRt+9CPuT/V0PqP1+QGtDknPEC6DMf6+kUCgzyPaQtdQRiVnAHw9JoYiEJQIXRMISgQsiYYnABZGwROCCSFgYEHnm8I5IWBgQuXzxjkhYGICs/50LH3wLRMLCAJQ5tDMe/82IhCUCF0TCEoELImGJwAWRsETggkhYInBBJCwRuICPsPrdsypH1mrBvo/IT6W5qenp+WJc84aGZgNR2/W3pvuP3t0Io0q9bgOc1uDavBmfFBGaVWR5eNUq2CKi4vo4zv1bW1JyOOa1gfViyG6g9L99oExIF1jZqJqYEBIPOG5vp1B+iNPV/T787/5vk5tbdJzr45dxUpHtlWaRz4J3c4O4Ln8NVh5hokiCrGdLWFkSA9a9/bGIRDLeOa5RsHQRaAQpK4nNRtK9zE4UsU2PPr30lm32+YDXwUGnUVzXPXyYFjzniZXV9yQvrjdsjqQXzC4ugeHHEqXOCKNyVF0dnFYbVa8Lpyk4D3sGQSrD5U9CkP4tnQ0EgiU8sZMYID1fovD7a0A9LnNZkz1tx92QEBaL99RZsWLOHBLx4MEdEyjUIV1svKurpwdhzCr4+TqT+cC28DBvbiqovc7YsWOix2ysqqpSr1oNQUh6R0c+PXojPU+rblQlQUBLVf5BHTtPFEVd4XiHSF64wGY3xDTf+muZdHS+iqam5jrtKyxP5lTm1KoL1aOrR/91X30vyZLwmXQymeHrGkMKVK8eMeJbm/Zeehs/gWO2ZrQXh5n05fRgXiIMHy5fAkHx7SfDaLQf2nV/xmLgi11Y/eWnpcvcE3r3XNe7x+RNUgrPFU4qnAxffOr5SQV6Pv2g2AFWMsuDmezN8YG9zYadoDmUR6SmRq6gO/I+JVJYvLvyQQ9BFob9+rF3T15+sdzfTZQmdU3snLB9a8uW5m2xEockDok/Zk1jJbNYTU3Nzc3N++2DgoOD67TrNtRdQfdHZx+dOOGZRA1aM3r+cRLuq25/CTqBwvD2ArmenkWKS5e6uc2aOfPArHxSIGk6ad/hJ0ekj877Y1eCe0ICL9Hkw2RlISiPdvUdLVd9zYiXvL0wmAvviXsekjgpvEsKZYu+2zi363A6bAFb1EbVXK5ZTw4k7SM/cipesGChXFZW4RzYIjb2fgq/Jrn80b2rrxhrTVh7qSfxS0mh+atvmk8qI60nsTuhe7dY3yuRz9zT28ucQiYTA0kPvTw9PTx6/xaz3zd6vZZvOpMZUX7jBvv+UN4Rio9vaBjLU1tbt8EsxZxr5mVu/v79O53379+sfP36zQqP3j2Ju00kD0tKihfwEq1pc2srgqxZ62OOZUY1ZmFFRyd0Y7cR09LSqtFc19nZebezE90ie1xugdwCdfVRo0Z98peKiLiux6+/L3+cXBTtyp72avnbtf9UMyLaEolEolShlJTkEQiCrCHr6rXVF6urez36/sgP+/7ojnQ6PW+g+B5Tj0qzWG1tHXFDVRdu29YxAbG8cOFOG8db5512rcZoqUKpudJzpaWlj0nPhxmwJWzZndDd3d0tLy8vp+jMe+QswuPHsEWpwuuzvNnuYRbW06MvXmAXVoth67bW2xQ7MpnyyUW45HmRU1Foi2GbUWsruiXTv3AODLcatv8wVMlw9d0fkwa+F7Qscunt5ctR68ZG614bG60QpuCsUKK8ZHjZ8HCNt5o1GhpnX59V++3lQBE+fuzcCazit2f4YbGFFYQ741PTON7o/MfePb29LNOq6kr1ytUf3D5c//AB3Ydo2/fKwL7cNC5mn9KMzIIQ3mwvMQurtbW9A/uE+pjrMddj9NReq0WqvSbakh6QAuiOYnliBwoLC588OYLug9rb51CfyeJvrMiayvZE0ovlXp752mM6FxkZGVnpMmajq6tuXPzdu3e7ro2JibkWs7Ri2U/Lzjzal52dRx88wp8yZRFD5UGalpbvCH8y6s20zszKtJH9U/ZHWVl0i0SBxGwJiY74jo6Ojtqoug01mljj16ytd+XtXgYsvPf2sDwAaLrZug34EWwJRADouVQq8DNqc3LqNqnb0NDwV42Jd+ymT7e1zjTjTPO28HkzsvL8m/NRG67URWl9vmLCvkfbDCn2W2/9NIL8CGt83vmg19ICp2mud8jrmYzfWVBWrJhzmEQKk/OaRh3Qgh9B+u4f/RWEaSnLVXvcS0v/Zy1uOnVKr0mCI90xb9ZBGEZ8YcaZs2dXnDtXq1W7vjYKa/zNN5f9Rt7ncW/9egoFZvQpQEyMRgMZMjKSkn9vyOCpVshO5nAAaI/rmgis5s3f3NyzO2fGM1l+LW4HZ+P7RafI+3y4rmMpFDzio7S1dsQBhr7BvGNd3fidBWVD3cIw0kN/aPONfpvGr0Ig8L+OjY7LTLGurva4rkn4uAceyNseR53xs94SZWIAlUrZB1kTiYR/XE2Ep8ow2b6v0ixnL/0nyJi83XArkZUDngF8cncpKYlDIGM4Tf53kI3LCfpRXixXBSCaAyUbWH3uyIAHYzeOribsVfp9WCjAMQ9GYXtx3SETEAeAkE34PzEtefx4yFpsIq2tf5D2IAvUYC5j2T2aOgVP6wuVpQoKBNzbr9HVrXQ3adbgv2rXxInj9IZqbbBhJ6SO4BMZdSec1GWgj1M7lm3AlF4isd83BpeJBcbGenrQELVZO+ROY+PZlaTgLPsMAlN6jbYNVY+CUeyYaHxE7FRs/4j0kLSP+JC3dMd8EWR7kh0AnswN2sL2qtO5qr6asHeKh1HrUJkBbdy4SJE0HXWswyP+jrhVo0iPeE8MwVlaMSuf/FC4MdEOq10TV6uTybwfxae6N/28ZDF5n83eybuFIQLUE/DoPHd3st1AhUE8UFNTVibYHA7ZdXfg+hp/TLlnZETI+vXXVSOxJIbgLFF2zCOSpkw23Cq8nsrd7us0yHY679XXYMl3+RQW2qN3XfewBDVoYqe+Pr8fFLRz96j07gQKxYFmxsHuHCc46+ucwkik/eRtWykUwV1VJ5sYNBP2xm8Pk6MFD2VehYKmyy2DY9K0XG3tkW8EG20xM9+cS7T14brWY/86CcF4DfW/2+Nx9BiL1d+ZkDJ4PQtNPNPk8W0EmwDbLfoUiqXlxEnfbgnMz3lgUyjJNfcyO3GCZfpo39OjvK3qg663uGvimtFk8vb2VZFkMjmb9OhbT2798KHlFoJ43T9RzDKNWh8fz+EMvlQCCpo6O3esriSTAwK2GFCy0cIPVoTs6PfxTqcxYpmRkV/ANX95proaYTT83BKLpCsqDpOFIL0YzcsQNGmX/maireJifkb5DCV1UR82IUhO0J8yXJ+qqjoXhFG15t1VOK1PRpC/SoSCM2Rt0KyjTSCYJBjEEmwoM8jkby2mgUD7EJO9su253JygP3+E04oWVKjAMMJAEACk50keBn4/3BnrSrBZeNLenvRQT0+zRrAKB+5WkY0/t8YCP+oMSjZiKTVPPOR7ffS8ULmyrg74jbqgEgH8BGnG/B54daZmLbDS2qAWiU8bHu7tK7RcCgWx7J3KSv7+Rlf+l4H8Aa7pgbuwqDnUIMga8gNWeLZuDw3KEfLFiCXB//v+hPMG0j9gEz9w/xSK+D5p3tzWCoBcmIwsPvFFwhKBC6IJqyJwQSQsEbjw/wIAAP//mgk4fzeWBPoAAAAASUVORK5CYII=\""],"sourceRoot":""} \ No newline at end of file diff --git a/console-frontend/src/components/hydra-console/HydraConsole.jsx b/console-frontend/src/components/hydra-console/HydraConsole.jsx index e93d34e..df1dce6 100644 --- a/console-frontend/src/components/hydra-console/HydraConsole.jsx +++ b/console-frontend/src/components/hydra-console/HydraConsole.jsx @@ -103,6 +103,8 @@ const styles = theme => ({ width: '22%', }, deleteIconButton: { + marginLeft: '60% !important', + marginBottom: '10px', backgroundColor: GuiTheme.palette.primary.light, color: GuiTheme.palette.primary.dark, '&:hover': { @@ -112,14 +114,6 @@ const styles = theme => ({ } }); -function isEmpty(object){ - if(Object.keys(object).length === 0) - return true - - return false -} - - class HydraConsole extends React.Component { constructor(props) { super(props); @@ -158,23 +152,18 @@ class HydraConsole extends React.Component { } // Initialize the local storage with the empty values - //localStorage.clear(); - const storedProperties = JSON.parse(localStorage.getItem('properties')) - const storedResourceIDs = JSON.parse(localStorage.getItem('resourceIDs')) - - if(isEmpty(storedProperties)){ + if (localStorage.getItem('properties') === null) { localStorage.setItem('properties', JSON.stringify(classesProperties)) }else{ - classesProperties = storedProperties + classesProperties = JSON.parse(localStorage.getItem('properties')) } - if(isEmpty(resourcesIDs)){ + if (localStorage.getItem('resourceIDs') === null) { localStorage.setItem('resourceIDs', JSON.stringify(resourcesIDs)) }else{ - resourcesIDs = storedResourceIDs + resourcesIDs = JSON.parse(localStorage.getItem('resourceIDs')) } - this.state = { hydraClasses: classesMapping, endpoints: endpoints, @@ -190,9 +179,6 @@ class HydraConsole extends React.Component { componentDidMount() { } - - - componentDidUpdate() { this.restorePropertiesAndResourceIDs() } @@ -463,19 +449,19 @@ class HydraConsole extends React.Component { this.selectOperation(currProperty) }}> - +