diff --git a/client/build/asset-manifest.json b/client/build/asset-manifest.json index 80623b0..20af219 100644 --- a/client/build/asset-manifest.json +++ b/client/build/asset-manifest.json @@ -1,8 +1,8 @@ { "files": { - "main.css": "/static/css/main.70912c2b.chunk.css", - "main.js": "/static/js/main.fd8c2650.chunk.js", - "main.js.map": "/static/js/main.fd8c2650.chunk.js.map", + "main.css": "/static/css/main.895ab0f5.chunk.css", + "main.js": "/static/js/main.4388b0cf.chunk.js", + "main.js.map": "/static/js/main.4388b0cf.chunk.js.map", "runtime-main.js": "/static/js/runtime-main.8d7962eb.js", "runtime-main.js.map": "/static/js/runtime-main.8d7962eb.js.map", "static/css/2.015dc0ab.chunk.css": "/static/css/2.015dc0ab.chunk.css", @@ -12,14 +12,14 @@ "static/js/3.8e9312c3.chunk.js.map": "/static/js/3.8e9312c3.chunk.js.map", "index.html": "/index.html", "static/css/2.015dc0ab.chunk.css.map": "/static/css/2.015dc0ab.chunk.css.map", - "static/css/main.70912c2b.chunk.css.map": "/static/css/main.70912c2b.chunk.css.map", + "static/css/main.895ab0f5.chunk.css.map": "/static/css/main.895ab0f5.chunk.css.map", "static/js/2.6d12aa16.chunk.js.LICENSE.txt": "/static/js/2.6d12aa16.chunk.js.LICENSE.txt" }, "entrypoints": [ "static/js/runtime-main.8d7962eb.js", "static/css/2.015dc0ab.chunk.css", "static/js/2.6d12aa16.chunk.js", - "static/css/main.70912c2b.chunk.css", - "static/js/main.fd8c2650.chunk.js" + "static/css/main.895ab0f5.chunk.css", + "static/js/main.4388b0cf.chunk.js" ] } \ No newline at end of file diff --git a/client/build/index.html b/client/build/index.html index 9cca70d..fa50975 100644 --- a/client/build/index.html +++ b/client/build/index.html @@ -1 +1 @@ -3D Shock!
\ No newline at end of file +3D Shock!
\ No newline at end of file diff --git a/client/build/static/css/main.70912c2b.chunk.css.map b/client/build/static/css/main.70912c2b.chunk.css.map deleted file mode 100644 index 992b68f..0000000 --- a/client/build/static/css/main.70912c2b.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://src/index.css","webpack://src/App.css"],"names":[],"mappings":"AAAA,KACE,QAAS,CACT,mJAEY,CACZ,kCAAmC,CACnC,iCACF,CAEA,KACE,yEAEF,CAEA,KAEE,eAAgB,CAEhB,6BAAsB,CAAtB,qBACF,CAEA,gBANE,oBAAa,CAAb,YAAa,CAEb,WAUF,CANA,WACE,UAAW,CAEX,0BAAmB,CAAnB,kBAAmB,CACnB,qCAA8B,CAA9B,6BAEF,CC3BA,MACE,uBACF,CAEA,YACE,wBAAsC,CAAtC,qCAAsC,CACtC,gBAAiB,CACjB,oBAAa,CAAb,YAAa,CACb,6BAAsB,CAAtB,qBAAsB,CACtB,0BAAmB,CAAnB,kBAAmB,CACnB,8BAAuB,CAAvB,sBAAuB,CACvB,4BAA6B,CAC7B,UACF,CAEA,UACE,aACF,CAEA,iCACE,GACE,8BAAuB,CAAvB,sBACF,CACA,GACE,+BAAyB,CAAzB,uBACF,CACF,CAPA,yBACE,GACE,8BAAuB,CAAvB,sBACF,CACA,GACE,+BAAyB,CAAzB,uBACF,CACF,CAEA,OACE,SACF,CAEA,YACE,oBAAa,CAAb,YAAa,CACb,8BAAuB,CAAvB,sBAAuB,CACvB,sBAAe,CAAf,cAAe,CACf,WACF,CAEA,gBACE,WACF,CAEA,UACE,WACF,CAEA,cACE,eACF,CAEA,uBACE,kBAAgC,CAAhC,+BAAgC,CAChC,UAAW,CACX,WAAY,CACZ,eACF,CAEA,aACE,yBAA2B,CAC3B,eAAmB,CACnB,WACF,CAEA,WACE,kBAAgC,CAAhC,+BAAgC,CAChC,oBAAuB,CACvB,YAAa,CACb,YACF,CAEA,wBACE,cAAgB,CAChB,kBAAoB,CACpB,WAAY,CACZ,eAAiB,CACjB,wBAAyB,CACzB,qBACF,CAEA,mBACE,kBAAmB,CACnB,mBACF,CAEA,oBACE,mBACF,CAEA,iBACE,eACF,CAEA,UACE,wBAAsC,CAAtC,qCAAsC,CACtC,mBACF,CAEA,eACE,kBAAgC,CAAhC,+BAAgC,CAChC,UAAY,CACZ,eAAiB,CACjB,wBAAyB,CACzB,oBACF,CAEA,iBACE,8BAAuB,CAAvB,sBAAuB,CACvB,SAAU,CACV,gBACF,CAEA,oBACE,eAAiB,CACjB,UAAY,CACZ,iBACF,CAEA,QACE,gBACF,CAEA,SACE,aAAe,CACf,kBAAgC,CAAhC,+BACF,CAEA,aACE,oCAA6B,CAA7B,4BAA6B,CAC7B,SAAU,CACV,gBACF","file":"main.70912c2b.chunk.css","sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\nform {\n display: flex;\n max-width: 500px;\n margin: auto;\n flex-direction: column;\n}\n\nform label {\n width: 100%; \n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin: auto;\n}\n\n",":root {\n --color-primary: #282c34;\n}\n\n.App-header {\n background-color: var(--color-primary);\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: calc(10px + 2vmin);\n color: white;\n}\n\n.App-link {\n color: #61dafb;\n}\n\n@keyframes App-logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.error {\n color: red;\n}\n\n.photo-wall {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n margin: 2rem;\n}\n\n.dashboard-form {\n margin: auto;\n}\n\n.ant-card {\n margin: 1rem;\n}\n\n.ant-card img {\n max-width: 250px;\n}\n\n.loading-bar-container {\n background: var(--color-primary);\n width: 100%;\n height: 30px;\n min-height: 30px;\n}\n\n.loading-bar {\n transition: all 0.5s linear;\n background: #66ff66;\n height: 100%;\n}\n\n.page-head {\n background: var(--color-primary);\n color: white !important;\n margin-top: 0;\n padding: 1rem;\n}\n\n.session-toolbar button {\n margin: 0 0.5rem;\n padding: 0.5rem 1rem;\n height: 100%;\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.05rem;\n}\n\n.ant-modal-content {\n border-radius: 1rem;\n padding: 0 !important;\n}\n\n.ant-modal-body img {\n border-radius: 0.5rem;\n}\n\n.ant-modal-close {\n font-weight: bold;\n}\n\n.ant-card {\n border: 1px solid var(--color-primary);\n border-radius: 0.2rem;\n}\n\n.ant-card-head {\n background: var(--color-primary);\n color: white;\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.2rem;\n}\n\n.session-toolbar {\n justify-content: center;\n width: 60%;\n margin: 1rem auto;\n}\n\n.session-toolbar h3 {\n font-weight: bold;\n color: white;\n margin-right: 1rem;\n}\n\n.slider {\n margin: auto 1rem;\n}\n\n.toolbar {\n padding: 0.5rem;\n background: var(--color-primary);\n}\n\n.client-info {\n justify-content: space-around;\n width: 60%;\n margin: 1rem auto;\n}\n"]} \ No newline at end of file diff --git a/client/build/static/css/main.70912c2b.chunk.css b/client/build/static/css/main.895ab0f5.chunk.css similarity index 89% rename from client/build/static/css/main.70912c2b.chunk.css rename to client/build/static/css/main.895ab0f5.chunk.css index b6aec92..dfcdb3c 100644 --- a/client/build/static/css/main.70912c2b.chunk.css +++ b/client/build/static/css/main.895ab0f5.chunk.css @@ -1,2 +1,2 @@ -body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}form{max-width:500px;-webkit-flex-direction:column;flex-direction:column}form,form label{display:-webkit-flex;display:flex;margin:auto}form label{width:100%;-webkit-flex-direction:row;flex-direction:row;-webkit-justify-content:space-between;justify-content:space-between}:root{--color-primary:#282c34}.App-header{background-color:#282c34;background-color:var(--color-primary);min-height:100vh;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@-webkit-keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.error{color:red}.photo-wall{display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:2rem}.dashboard-form{margin:auto}.ant-card{margin:1rem}.ant-card img{max-width:250px}.loading-bar-container{background:#282c34;background:var(--color-primary);width:100%;height:30px;min-height:30px}.loading-bar{transition:all .5s linear;background:#6f6;height:100%}.page-head{background:#282c34;background:var(--color-primary);color:#fff!important;margin-top:0;padding:1rem}.session-toolbar button{margin:0 .5rem;padding:.5rem 1rem;height:100%;font-weight:700;text-transform:uppercase;letter-spacing:.05rem}.ant-modal-content{border-radius:1rem;padding:0!important}.ant-modal-body img{border-radius:.5rem}.ant-modal-close{font-weight:700}.ant-card{border:1px solid #282c34;border:1px solid var(--color-primary);border-radius:.2rem}.ant-card-head{background:#282c34;background:var(--color-primary);color:#fff;font-weight:700;text-transform:uppercase;letter-spacing:.2rem}.session-toolbar{-webkit-justify-content:center;justify-content:center;width:60%;margin:1rem auto}.session-toolbar h3{font-weight:700;color:#fff;margin-right:1rem}.slider{margin:auto 1rem}.toolbar{padding:.5rem;background:#282c34;background:var(--color-primary)}.client-info{-webkit-justify-content:space-around;justify-content:space-around;width:60%;margin:1rem auto} -/*# sourceMappingURL=main.70912c2b.chunk.css.map */ \ No newline at end of file +body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}form{max-width:500px;-webkit-flex-direction:column;flex-direction:column}form,form label{display:-webkit-flex;display:flex;margin:auto}form label{width:100%;-webkit-flex-direction:row;flex-direction:row;-webkit-justify-content:space-between;justify-content:space-between}:root{--color-primary:#282c34}.App-header{background-color:#282c34;background-color:var(--color-primary);min-height:100vh;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@-webkit-keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.error{color:red}.photo-wall{display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:2rem}.dashboard-form{margin:auto}.ant-card{margin:1rem}.ant-card img{max-width:250px}.loading-bar-container{background:#282c34;background:var(--color-primary);width:100%;height:30px;min-height:30px}.loading-bar{transition:all .5s linear;background:#6f6;height:100%}.page-head{background:#282c34;background:var(--color-primary);color:#fff!important;margin-top:0;padding:1rem}.session-toolbar button{margin:0 .5rem;padding:.5rem 1rem;height:100%;font-weight:700;text-transform:uppercase;letter-spacing:.05rem}.ant-modal-content{border-radius:1rem;padding:0!important}.ant-modal-body img{border-radius:.5rem}.ant-modal-close{font-weight:700}.ant-card{border:1px solid #282c34;border:1px solid var(--color-primary);border-radius:.2rem}.ant-card-head{background:#282c34;background:var(--color-primary);color:#fff;font-weight:700;text-transform:uppercase;letter-spacing:.2rem}.session-toolbar{-webkit-justify-content:center;justify-content:center;width:60%;margin:1rem auto}.session-toolbar h3{font-weight:700;color:#fff;margin-right:1rem}.slider{width:400px;margin:auto 1rem}.toolbar{padding:.5rem;background:#282c34;background:var(--color-primary)}.client-info{-webkit-justify-content:center;justify-content:center;width:60%;margin:1rem auto}.client-info span{margin:auto 1rem} +/*# sourceMappingURL=main.895ab0f5.chunk.css.map */ \ No newline at end of file diff --git a/client/build/static/css/main.895ab0f5.chunk.css.map b/client/build/static/css/main.895ab0f5.chunk.css.map new file mode 100644 index 0000000..474a43d --- /dev/null +++ b/client/build/static/css/main.895ab0f5.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://src/index.css","webpack://src/App.css"],"names":[],"mappings":"AAAA,KACE,QAAS,CACT,mJAEY,CACZ,kCAAmC,CACnC,iCACF,CAEA,KACE,yEAEF,CAEA,KAEE,eAAgB,CAEhB,6BAAsB,CAAtB,qBACF,CAEA,gBANE,oBAAa,CAAb,YAAa,CAEb,WAUF,CANA,WACE,UAAW,CAEX,0BAAmB,CAAnB,kBAAmB,CACnB,qCAA8B,CAA9B,6BAEF,CC3BA,MACE,uBACF,CAEA,YACE,wBAAsC,CAAtC,qCAAsC,CACtC,gBAAiB,CACjB,oBAAa,CAAb,YAAa,CACb,6BAAsB,CAAtB,qBAAsB,CACtB,0BAAmB,CAAnB,kBAAmB,CACnB,8BAAuB,CAAvB,sBAAuB,CACvB,4BAA6B,CAC7B,UACF,CAEA,UACE,aACF,CAEA,iCACE,GACE,8BAAuB,CAAvB,sBACF,CACA,GACE,+BAAyB,CAAzB,uBACF,CACF,CAPA,yBACE,GACE,8BAAuB,CAAvB,sBACF,CACA,GACE,+BAAyB,CAAzB,uBACF,CACF,CAEA,OACE,SACF,CAEA,YACE,oBAAa,CAAb,YAAa,CACb,8BAAuB,CAAvB,sBAAuB,CACvB,sBAAe,CAAf,cAAe,CACf,WACF,CAEA,gBACE,WACF,CAEA,UACE,WACF,CAEA,cACE,eACF,CAEA,uBACE,kBAAgC,CAAhC,+BAAgC,CAChC,UAAW,CACX,WAAY,CACZ,eACF,CAEA,aACE,yBAA2B,CAC3B,eAAmB,CACnB,WACF,CAEA,WACE,kBAAgC,CAAhC,+BAAgC,CAChC,oBAAuB,CACvB,YAAa,CACb,YACF,CAEA,wBACE,cAAgB,CAChB,kBAAoB,CACpB,WAAY,CACZ,eAAiB,CACjB,wBAAyB,CACzB,qBACF,CAEA,mBACE,kBAAmB,CACnB,mBACF,CAEA,oBACE,mBACF,CAEA,iBACE,eACF,CAEA,UACE,wBAAsC,CAAtC,qCAAsC,CACtC,mBACF,CAEA,eACE,kBAAgC,CAAhC,+BAAgC,CAChC,UAAY,CACZ,eAAiB,CACjB,wBAAyB,CACzB,oBACF,CAEA,iBACE,8BAAuB,CAAvB,sBAAuB,CACvB,SAAU,CACV,gBACF,CAEA,oBACE,eAAiB,CACjB,UAAY,CACZ,iBACF,CAEA,QACE,WAAY,CACZ,gBACF,CAEA,SACE,aAAe,CACf,kBAAgC,CAAhC,+BACF,CAEA,aACE,8BAAuB,CAAvB,sBAAuB,CACvB,SAAU,CACV,gBACF,CAEA,kBACE,gBACF","file":"main.895ab0f5.chunk.css","sourcesContent":["body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\nform {\n display: flex;\n max-width: 500px;\n margin: auto;\n flex-direction: column;\n}\n\nform label {\n width: 100%; \n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin: auto;\n}\n\n",":root {\n --color-primary: #282c34;\n}\n\n.App-header {\n background-color: var(--color-primary);\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: calc(10px + 2vmin);\n color: white;\n}\n\n.App-link {\n color: #61dafb;\n}\n\n@keyframes App-logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.error {\n color: red;\n}\n\n.photo-wall {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n margin: 2rem;\n}\n\n.dashboard-form {\n margin: auto;\n}\n\n.ant-card {\n margin: 1rem;\n}\n\n.ant-card img {\n max-width: 250px;\n}\n\n.loading-bar-container {\n background: var(--color-primary);\n width: 100%;\n height: 30px;\n min-height: 30px;\n}\n\n.loading-bar {\n transition: all 0.5s linear;\n background: #66ff66;\n height: 100%;\n}\n\n.page-head {\n background: var(--color-primary);\n color: white !important;\n margin-top: 0;\n padding: 1rem;\n}\n\n.session-toolbar button {\n margin: 0 0.5rem;\n padding: 0.5rem 1rem;\n height: 100%;\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.05rem;\n}\n\n.ant-modal-content {\n border-radius: 1rem;\n padding: 0 !important;\n}\n\n.ant-modal-body img {\n border-radius: 0.5rem;\n}\n\n.ant-modal-close {\n font-weight: bold;\n}\n\n.ant-card {\n border: 1px solid var(--color-primary);\n border-radius: 0.2rem;\n}\n\n.ant-card-head {\n background: var(--color-primary);\n color: white;\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.2rem;\n}\n\n.session-toolbar {\n justify-content: center;\n width: 60%;\n margin: 1rem auto;\n}\n\n.session-toolbar h3 {\n font-weight: bold;\n color: white;\n margin-right: 1rem;\n}\n\n.slider {\n width: 400px;\n margin: auto 1rem;\n}\n\n.toolbar {\n padding: 0.5rem;\n background: var(--color-primary);\n}\n\n.client-info {\n justify-content: center;\n width: 60%;\n margin: 1rem auto;\n}\n\n.client-info span {\n margin: auto 1rem;\n}\n"]} \ No newline at end of file diff --git a/client/build/static/js/main.4388b0cf.chunk.js b/client/build/static/js/main.4388b0cf.chunk.js new file mode 100644 index 0000000..1b29e53 --- /dev/null +++ b/client/build/static/js/main.4388b0cf.chunk.js @@ -0,0 +1,2 @@ +(this.webpackJsonpclient=this.webpackJsonpclient||[]).push([[0],{212:function(e,t,n){},214:function(e,t,n){},387:function(e,t,n){"use strict";n.r(t);var r,a=n(0),c=n(24),s=n.n(c),i=(n(212),n(213),n(214),n(104)),o=n(29),u=n(22),l=n.n(u),p=n(30),j=n(45),d=n(391),h=n(204),b=n(392),f=n(389),x=n(395),O=n(87),m=n(57),g=n(128),v=n.n(g),w=n(117),y=n(64),k=n.n(y),S=function(){var e=Object(p.a)(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;break;case 2:return e.next=4,k.a.post("/api/clients",t);case 4:return n=e.sent,e.abrupt("return",n.data.client_id);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),C=function(){var e=Object(p.a)(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;break;case 2:return e.next=4,k.a.get("/api/clients/".concat(t));case 4:return n=e.sent,e.abrupt("return",n.data);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),N=function(){var e=Object(p.a)(l.a.mark((function e(t,n){var r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,k.a.post("/api/clients/".concat(t,"/session"),n);case 3:return r=e.sent,e.abrupt("return",r.data);case 7:return e.prev=7,e.t0=e.catch(0),h.b.error("Something went wrong, check connection with the machine"),e.abrupt("return",e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(t,n){return e.apply(this,arguments)}}(),T=function(){var e=Object(p.a)(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k.a.get("/api/clients/".concat(t,"/session"));case 2:return n=e.sent,e.abrupt("return",n.data);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),I=function(){var e=Object(p.a)(l.a.mark((function e(t){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k.a.delete("/api/clients/".concat(t,"/session"));case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),P=function(){var e=Object(p.a)(l.a.mark((function e(t,n){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I(t);case 2:return e.next=4,N(t,n);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),D=function(){var e=Object(p.a)(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k.a.get("/api/status");case 2:return t=e.sent,e.abrupt("return",t.data.status);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),F=n(7),_=function(){var e=Object(o.f)(),t=Object(a.useState)(null),n=Object(j.a)(t,2),r=n[0],c=n[1],s=d.a.useForm(),i=Object(j.a)(s,1)[0],u=function(){var t=Object(p.a)(l.a.mark((function t(n){var r;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(n.phone.length<10)){t.next=4;break}return h.b.error("Check all fields!"),c("Phone number needs to be a length of at least 10"),t.abrupt("return");case 4:return t.next=6,S({name:n.name,email:n.email,phone:parseInt(n.phone.replace(/\D/g,""))});case 6:r=t.sent,e.push("/sessions/".concat(r));case 8:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();return Object(F.jsxs)(w.Content,{children:[Object(F.jsx)(b.a.Title,{className:"page-head",level:3,children:"Dashboard"}),Object(F.jsx)(f.a,{}),Object(F.jsxs)(d.a,{form:i,className:"dashboard-form",onFinish:u,labelCol:{span:8},wrapperCol:{span:16},children:[Object(F.jsx)(b.a.Paragraph,{style:{textAlign:"center"},children:"Enter the name, email and phone number of the subject"}),Object(F.jsx)(v.a,{label:"name",name:"name",children:Object(F.jsx)(x.a,{minLength:3})}),Object(F.jsx)(v.a,{label:"email",name:"email",children:Object(F.jsx)(x.a,{type:"email"})}),Object(F.jsx)(v.a,{label:"phone",name:"phone",children:Object(F.jsx)(x.a,{type:"tel",minLength:10})}),Object(F.jsxs)(O.a,{justify:"space-between",children:[Object(F.jsx)(m.a,{danger:!0,onClick:function(){i.resetFields()},children:"Reset"}),Object(F.jsx)(m.a,{htmlType:"submit",type:"primary",children:"Start Session"})]}),r&&Object(F.jsx)("p",{className:"error",children:r})]})]})},E=n(396),B=n(394),L=n(390),J=function(){return Object(F.jsx)(m.a,{type:"link",style:{position:"fixed",right:20,bottom:20},onClick:function(){window.scrollTo(0,0),console.log("")},children:"\u2934\ufe0f Scroll To Top"})},W=function(e){var t=e.clientId,n=Object(a.useState)(null),r=Object(j.a)(n,2),c=r[0],s=r[1],i=Object(a.useState)(null),o=Object(j.a)(i,2),u=o[0],d=o[1],h=Object(a.useState)(JSON.parse(window.localStorage.getItem("focusPhotos")||"[]")),f=Object(j.a)(h,2),x=f[0],m=f[1];Object(a.useEffect)((function(){var e=setInterval(function(){var e=Object(p.a)(l.a.mark((function e(){var n,r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(c&&c.length>=89)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,T(t);case 4:n=e.sent,(r=n.photos).length&&s(r);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),250);return function(){return clearInterval(e)}}),[t,c]);var g=function(){return d(null)};if(!(null===c||void 0===c?void 0:c.length))return null;var v=c.sort((function(e,t){return e.split("_")[0].localeCompare(t.split("_")[0])})),w=c.length/89,y=v.filter((function(e){var t=e.split("_")[0];return x.includes(t)}));return Object(F.jsxs)(F.Fragment,{children:[Object(F.jsx)(E.a,{visible:!!u,onOk:g,footer:null,onCancel:g,width:"50%",children:Object(F.jsx)("img",{width:"100%",onClick:g,src:"".concat("","/output/").concat(t,"/").concat(u),alt:"large modal"})}),Object(F.jsxs)(O.a,{align:"middle",justify:"space-around",style:{display:"flex",width:"100%"},children:[Object(F.jsx)(b.a.Title,{style:{margin:"0.5rem 1rem 0.7rem"},level:3,children:"Session Pictures"}),Object(F.jsxs)(b.a.Text,{children:[c.length,"/ 89 loaded"]}),Object(F.jsx)(b.a.Text,{children:"Select Featured Photos:"}),Object(F.jsx)(B.a,{mode:"multiple",allowClear:!0,placeholder:"Please select featured",style:{width:"35%"},defaultValue:x,value:x,onChange:function(e){console.log("SEelcted",e),window.localStorage.setItem("focusPhotos",JSON.stringify(e)),m(e)},children:v.map((function(e){var t=e.split("_")[0];return Object(F.jsx)(B.a.Option,{value:t,children:t})}))})]}),Object(F.jsx)("div",{className:"loading-bar-container",children:Object(F.jsx)("div",{className:"loading-bar",style:{width:"".concat(100*w,"%"),background:"hsl(".concat(Math.floor(120*w),", 90%, 70%)")}})}),Object(F.jsx)("div",{className:"featured-photos",style:{marginTop:"2rem"},children:y.map((function(e){return Object(F.jsx)("img",{onClick:function(){return d(e)},src:"".concat("","/output/").concat(t,"/").concat(e),alt:"lol"})}))}),Object(F.jsx)("div",{className:"photo-wall",children:v.map((function(e){return Object(F.jsx)(L.a,{className:"photo",title:e.split("_")[0],children:Object(F.jsx)("img",{onClick:function(){return d(e)},src:"".concat("","/output/").concat(t,"/").concat(e),alt:"lol"})},e)}))}),Object(F.jsx)(J,{})]})},A=n(397);!function(e){e[e["Standing By..."]=0]="Standing By...",e[e["Warming Up..."]=1]="Warming Up...",e[e["Capturing Photo"]=2]="Capturing Photo",e[e["Capturing Grid"]=3]="Capturing Grid",e[e["Writing To Disk"]=4]="Writing To Disk",e[e["Downloading!"]=5]="Downloading!"}(r||(r={}));var G=["lime","gold","volcano","magenta","geekblue"],R=function(e){var t=e.poll,n=Object(a.useState)(r["Standing By..."]),c=Object(j.a)(n,2),s=c[0],i=c[1];return Object(a.useEffect)((function(){var e=setInterval(function(){var e=Object(p.a)(l.a.mark((function e(){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,D();case 4:n=e.sent,i(n);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),250);return function(){return clearInterval(e)}}),[t]),Object(F.jsx)(A.a,{color:G[s],style:{display:"flex"},children:Object(F.jsx)("span",{style:{margin:"auto"},children:r[s]})})},V=n(398),q=n(393),U=function(e){var t=Object(o.f)(),n=e.match.params.clientId,r=Object(a.useState)(null),c=Object(j.a)(r,2),s=c[0],i=c[1],u=Object(a.useState)(!1),d=Object(j.a)(u,2),f=d[0],g=d[1],v=Object(a.useState)(parseInt(window.localStorage.getItem("lightTime")||"5000")),y=Object(j.a)(v,2),k=y[0],S=y[1],T=function(e){window.localStorage.setItem("lightTime",e.toString()),S(e)},D=function(){var e=Object(p.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return h.b.loading("Photo sequence starting! Stand by..."),e.next=3,N(n,{light_time:k});case 3:g(!0);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),_=function(){var e=Object(p.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return g(!1),h.b.loading("Deleting photos & restarting capture sequence! Stand by..."),e.next=4,P(n,{light_time:k});case 4:g(!0);case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),E=function(){var e=Object(p.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.push("/");case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),B=function(){var e=Object(p.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I(n);case 2:h.b.success("Photos Deleted! Going back to dashboard"),t.push("/");case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Object(a.useEffect)((function(){(function(){var e=Object(p.a)(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C(n);case 2:t=e.sent,i(t),t.has_photos&&g(!0);case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}})()()}),[n]),Object(F.jsxs)(w.Content,{children:[Object(F.jsx)(b.a.Title,{className:"page-head",level:3,children:"Session View"}),Object(F.jsxs)(O.a,{className:"client-info",children:[Object(F.jsxs)(b.a.Text,{children:[Object(F.jsx)("strong",{children:"Name:"})," ",null===s||void 0===s?void 0:s.name]}),Object(F.jsxs)(b.a.Text,{children:[Object(F.jsx)("strong",{children:"Email:"})," ",null===s||void 0===s?void 0:s.email]}),Object(F.jsxs)(b.a.Text,{children:[Object(F.jsx)("strong",{children:"Phone:"})," ",null===s||void 0===s?void 0:s.phone]})]}),Object(F.jsxs)("div",{className:"toolbar",children:[Object(F.jsxs)(O.a,{justify:"center",className:"session-toolbar",children:[Object(F.jsx)(m.a,{onClick:E,children:"Back To Dashboard"},"finish"),Object(F.jsx)(m.a,{disabled:f,type:"primary",onClick:D,children:"Capture"},"startsession"),Object(F.jsx)(V.a,{disabled:!f,title:"Re-capture set?",onConfirm:_,children:Object(F.jsx)(m.a,{type:"default",disabled:!f,children:"Retry Capture"})},"retry"),Object(F.jsx)(V.a,{disabled:!f,title:"Delete all photos and return to dashboard?",onConfirm:B,children:Object(F.jsx)(m.a,{danger:!0,disabled:!f,children:"Abort Session"})},"nuke"),Object(F.jsx)(R,{poll:!0})]}),Object(F.jsxs)(O.a,{className:"session-toolbar",children:[Object(F.jsx)("h3",{children:"Light Duration (ms)"}),Object(F.jsx)(q.a,{value:k,onChange:T}),Object(F.jsx)(x.a,{className:"slider",type:"range",onChange:function(e){return T(parseInt(e.target.value))},value:k,min:500,max:1e4,step:500})]})]}),Object(F.jsx)(O.a,{className:"controls",children:f&&Object(F.jsx)(W,{clientId:n})})]})};console.log("ENV","production");var M=function(){return Object(F.jsx)(i.a,{children:Object(F.jsx)("div",{className:"App",children:Object(F.jsxs)(o.c,{children:[Object(F.jsx)(o.a,{path:"/sessions/:clientId",component:U}),Object(F.jsx)(o.a,{exact:!0,path:"/",component:_})]})})})},z=function(e){e&&e instanceof Function&&n.e(3).then(n.bind(null,399)).then((function(t){var n=t.getCLS,r=t.getFID,a=t.getFCP,c=t.getLCP,s=t.getTTFB;n(e),r(e),a(e),c(e),s(e)}))};s.a.render(Object(F.jsx)(M,{}),document.getElementById("root")),z()}},[[387,1,2]]]); +//# sourceMappingURL=main.4388b0cf.chunk.js.map \ No newline at end of file diff --git a/client/build/static/js/main.4388b0cf.chunk.js.map b/client/build/static/js/main.4388b0cf.chunk.js.map new file mode 100644 index 0000000..c917c1f --- /dev/null +++ b/client/build/static/js/main.4388b0cf.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/StatusChip.tsx","api/index.ts","pages/Dashboard.tsx","components/ScrollToTop.tsx","components/SessionPictures.tsx","pages/Session.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["Status","createClient","body","a","axios","post","res","data","client_id","getClient","id","get","startSession","clientId","timings","message","error","getSession","killSession","delete","restartSession","getStatus","status","Dashboard","history","useHistory","useState","setError","Form","useForm","form","handleSubmit","values","phone","length","name","email","parseInt","replace","push","Title","className","level","onFinish","labelCol","span","wrapperCol","Paragraph","style","textAlign","label","minLength","type","justify","danger","onClick","resetFields","htmlType","ScrollToTop","position","right","bottom","window","scrollTo","console","log","SessionPictures","urls","setUrls","activeUrl","setActiveUrl","JSON","parse","localStorage","getItem","focusPhotos","setFocusPhotos","useEffect","interval","setInterval","photos","clearInterval","closeModal","sort","b","split","localeCompare","u","filteredPhotos","filter","num","includes","visible","onOk","footer","onCancel","width","src","alt","align","display","margin","Text","mode","allowClear","placeholder","defaultValue","value","onChange","v","setItem","stringify","map","val","Option","background","Math","floor","marginTop","title","colors","StatusChip","poll","setStatus","color","Session","props","match","params","client","setClient","active","setActive","lightTime","setLightTime","handleTimingUpdate","n","toString","handleStartSession","loading","light_time","handleRestartSession","handleExit","handleNuke","success","has_photos","disabled","onConfirm","e","target","min","max","step","process","App","path","component","exact","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.4388b0cf.chunk.js","sourcesContent":["import { Tag } from 'antd'\nimport { PresetColorType } from 'antd/lib/_util/colors'\nimport { useEffect, useState } from 'react'\nimport { getStatus } from '../api'\n\nexport enum Status {\n 'Standing By...',\n 'Warming Up...',\n 'Capturing Photo',\n 'Capturing Grid',\n 'Writing To Disk',\n 'Downloading!',\n}\n\nconst colors: Partial[] = [\n 'lime',\n 'gold',\n 'volcano',\n 'magenta',\n 'geekblue',\n]\n\ntype Props = {\n poll: boolean\n}\n\nexport const StatusChip = ({ poll }: Props) => {\n const [status, setStatus] = useState(Status['Standing By...'])\n\n useEffect(() => {\n const get = async () => {\n if (!poll) return\n const status = await getStatus()\n setStatus(status)\n }\n\n const interval = setInterval(get, 1000 / 4)\n\n return () => clearInterval(interval)\n }, [poll])\n\n return (\n \n {Status[status]}\n \n )\n}\n","import { Client, Timings } from '../types'\nimport axios from 'axios'\nimport { message } from 'antd'\nimport { Status } from '../components/StatusChip'\n\nconst dev = process.env.NODE_ENV === 'development'\n\nif (dev) {\n const host = 'http://192.168.1.114:5000'\n axios.defaults.baseURL = host\n}\n\nconst mock = false\n\nexport const createClient = async (body: Omit) => {\n if (mock) return 'test'\n const res = await axios.post<{ client_id: string }>(`/api/clients`, body)\n return res.data.client_id\n}\n\nexport const getClient = async (id: string): Promise => {\n if (mock)\n return {\n name: 'Test Client',\n has_photos: false,\n email: 'test@test.test',\n phone: 1234567890,\n }\n const res = await axios.get(`/api/clients/${id}`)\n return res.data\n}\nexport const startSession = async (clientId: string, timings: Timings) => {\n try {\n const res = await axios.post(`/api/clients/${clientId}/session`, timings)\n return res.data\n } catch (err) {\n message.error('Something went wrong, check connection with the machine')\n return err\n }\n}\n\nexport const getSession = async (clientId: string) => {\n const res = await axios.get<{ photos: string[] }>(\n `/api/clients/${clientId}/session`,\n )\n return res.data // session data\n}\n\nexport const killSession = async (clientId: string) => {\n await axios.delete(`/api/clients/${clientId}/session`)\n}\n\nexport const restartSession = async (clientId: string, timings: Timings) => {\n await killSession(clientId)\n await startSession(clientId, timings)\n}\n\n// TOOD: Get status\n\nexport const getStatus = async (): Promise => {\n const res = await axios.get<{ status: Status }>('/api/status')\n return res.data.status\n}\n\n// Someday\n\nexport const getClients = async (): Promise => {\n const res = await axios.get(`/api/clients`)\n return res.data\n}\n\nexport const cleanup = () => {\n // send\n}\n","import React from 'react'\nimport { Button, Divider, Form, Input, message, Row, Typography } from 'antd'\nimport FormItem from 'antd/lib/form/FormItem'\nimport { Content } from 'antd/lib/layout/layout'\nimport { useState } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { createClient } from '../api'\n\ntype FormData = {\n name: string\n email: string\n phone: string\n}\n\nexport const Dashboard = () => {\n const history = useHistory()\n const [error, setError] = useState(null)\n const [form] = Form.useForm()\n\n const handleReset = () => {\n form.resetFields()\n }\n\n const handleSubmit = async (values: FormData) => {\n if (values.phone.length < 10) {\n // helpful message\n message.error('Check all fields!')\n setError('Phone number needs to be a length of at least 10')\n return\n }\n\n const client_id = await createClient({\n name: values.name,\n email: values.email,\n phone: parseInt(values.phone.replace(/\\D/g, '')),\n })\n\n history.push(`/sessions/${client_id}`)\n }\n\n return (\n \n \n Dashboard\n \n \n \n \n Enter the name, email and phone number of the subject\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {error &&

{error}

}\n \n
\n )\n}\n","import { Button } from 'antd'\nimport React from 'react'\n\nexport const ScrollToTop = () => {\n const handleClick = () => {\n window.scrollTo(0, 0)\n console.log('')\n }\n\n return (\n \n ⤴️ Scroll To Top\n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { Card, Modal, Row, Select, Typography } from 'antd'\nimport { getSession } from '../api'\nimport { ScrollToTop } from './ScrollToTop'\n\ntype Props = {\n clientId: string\n}\n\nexport const SessionPictures = ({ clientId }: Props) => {\n const [urls, setUrls] = useState(null)\n const [activeUrl, setActiveUrl] = useState(null)\n const [focusPhotos, setFocusPhotos] = useState(\n JSON.parse(window.localStorage.getItem('focusPhotos') || '[]'),\n )\n\n useEffect(() => {\n const get = async () => {\n if (urls && urls.length >= 89 * 1) {\n return\n }\n\n const { photos } = await getSession(clientId)\n if (photos.length) setUrls(photos)\n }\n\n const interval = setInterval(get, 250)\n\n return () => clearInterval(interval)\n }, [clientId, urls])\n\n const closeModal = () => setActiveUrl(null)\n\n const host =\n process.env.NODE_ENV === 'development' ? 'http://192.168.1.107:5000' : ''\n\n if (!urls?.length) return null\n\n const photos = urls.sort((a, b) =>\n a.split('_')[0].localeCompare(b.split('_')[0]),\n )\n\n const u = urls.length / 89\n\n const handleSelect = (v: string[]) => {\n console.log('SEelcted', v)\n window.localStorage.setItem('focusPhotos', JSON.stringify(v))\n setFocusPhotos(v)\n }\n\n const filteredPhotos = photos.filter((name) => {\n const num = name.split('_')[0]\n return focusPhotos.includes(num)\n })\n\n return (\n <>\n \n \n \n \n \n Session Pictures\n \n {urls.length}/ 89 loaded\n Select Featured Photos:\n\n \n {photos.map((name) => {\n const val = name.split('_')[0]\n return {val}\n })}\n \n \n\n
\n
\n \n
\n {filteredPhotos.map((src) => (\n setActiveUrl(src)}\n src={`${host}/output/${clientId}/${src}`}\n alt=\"lol\"\n />\n ))}\n
\n
\n {photos.map((src) => (\n \n setActiveUrl(src)}\n src={`${host}/output/${clientId}/${src}`}\n alt=\"lol\"\n />\n \n ))}\n
\n \n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { RouteComponentProps, useHistory } from 'react-router-dom'\nimport { getClient, killSession, restartSession, startSession } from '../api'\nimport { SessionPictures } from '../components/SessionPictures'\nimport { StatusChip } from '../components/StatusChip'\n\nimport {\n Button,\n Input,\n InputNumber,\n message,\n Popconfirm,\n Row,\n Typography,\n} from 'antd'\nimport { Content } from 'antd/lib/layout/layout'\nimport { Client } from '../types'\n\ntype Props = RouteComponentProps<{ clientId: string }>\n\nexport const Session = (props: Props) => {\n const history = useHistory()\n const { clientId } = props.match.params\n const [client, setClient] = useState(null)\n const [active, setActive] = useState(false)\n const [lightTime, setLightTime] = useState(\n parseInt(window.localStorage.getItem('lightTime') || '5000'),\n )\n\n const handleTimingUpdate = (n: number) => {\n window.localStorage.setItem('lightTime', n.toString())\n setLightTime(n)\n }\n\n const handleStartSession = async () => {\n message.loading('Photo sequence starting! Stand by...')\n await startSession(clientId, { light_time: lightTime })\n setActive(true)\n }\n\n const handleRestartSession = async () => {\n setActive(false)\n message.loading(\n 'Deleting photos & restarting capture sequence! Stand by...',\n )\n await restartSession(clientId, { light_time: lightTime })\n setActive(true)\n }\n\n const handleExit = async () => {\n history.push('/')\n }\n\n const handleNuke = async () => {\n await killSession(clientId)\n message.success('Photos Deleted! Going back to dashboard')\n history.push('/')\n }\n\n useEffect(() => {\n const get = async () => {\n const client = await getClient(clientId)\n setClient(client)\n if (client.has_photos) setActive(true)\n }\n\n get()\n }, [clientId])\n\n return (\n \n \n Session View\n \n\n \n \n Name: {client?.name}\n \n \n Email: {client?.email}\n \n \n Phone: {client?.phone}\n \n \n
\n \n \n \n Capture\n \n \n \n \n \n \n \n\n \n \n \n

Light Duration (ms)

\n \n handleTimingUpdate(parseInt(e.target.value))}\n value={lightTime}\n min={500}\n max={10000}\n step={500}\n />\n
\n
\n \n {active && }\n \n
\n )\n}\n","import React from 'react'\nimport './App.css'\n\nimport { BrowserRouter, Switch, Route } from 'react-router-dom'\nimport { Dashboard } from './pages/Dashboard'\nimport { Session } from './pages/Session'\n\nconsole.log('ENV', process.env.NODE_ENV)\n\nfunction App() {\n return (\n \n
\n \n \n \n \n
\n
\n )\n}\n\nexport default App\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport 'antd/dist/antd.css'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\n\nReactDOM.render(, document.getElementById('root'))\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""} \ No newline at end of file diff --git a/client/build/static/js/main.fd8c2650.chunk.js b/client/build/static/js/main.fd8c2650.chunk.js deleted file mode 100644 index c940434..0000000 --- a/client/build/static/js/main.fd8c2650.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this.webpackJsonpclient=this.webpackJsonpclient||[]).push([[0],{212:function(e,t,n){},214:function(e,t,n){},387:function(e,t,n){"use strict";n.r(t);var r,a=n(0),c=n(24),s=n.n(c),i=(n(212),n(213),n(214),n(104)),o=n(29),u=n(22),l=n.n(u),p=n(30),j=n(45),d=n(391),h=n(204),b=n(392),f=n(389),x=n(395),O=n(87),m=n(57),g=n(128),v=n.n(g),w=n(117),y=n(64),k=n.n(y),S=function(){var e=Object(p.a)(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;break;case 2:return e.next=4,k.a.post("/api/clients",t);case 4:return n=e.sent,e.abrupt("return",n.data.client_id);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),C=function(){var e=Object(p.a)(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.next=2;break;case 2:return e.next=4,k.a.get("/api/clients/".concat(t));case 4:return n=e.sent,e.abrupt("return",n.data);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),T=function(){var e=Object(p.a)(l.a.mark((function e(t,n){var r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,k.a.post("/api/clients/".concat(t,"/session"),n);case 3:return r=e.sent,e.abrupt("return",r.data);case 7:return e.prev=7,e.t0=e.catch(0),h.b.error("Something went wrong, check connection with the machine"),e.abrupt("return",e.t0);case 11:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(t,n){return e.apply(this,arguments)}}(),N=function(){var e=Object(p.a)(l.a.mark((function e(t){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k.a.get("/api/clients/".concat(t,"/session"));case 2:return n=e.sent,e.abrupt("return",n.data);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),I=function(){var e=Object(p.a)(l.a.mark((function e(t){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k.a.delete("/api/clients/".concat(t,"/session"));case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),P=function(){var e=Object(p.a)(l.a.mark((function e(t,n){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I(t);case 2:return e.next=4,T(t,n);case 4:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),D=function(){var e=Object(p.a)(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k.a.get("/api/status");case 2:return t=e.sent,e.abrupt("return",t.data.status);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),F=n(7),_=function(){var e=Object(o.f)(),t=Object(a.useState)(null),n=Object(j.a)(t,2),r=n[0],c=n[1],s=d.a.useForm(),i=Object(j.a)(s,1)[0],u=function(){var t=Object(p.a)(l.a.mark((function t(n){var r;return l.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(n.phone.length<10)){t.next=4;break}return h.b.error("Check all fields!"),c("Phone number needs to be a length of at least 10"),t.abrupt("return");case 4:return t.next=6,S({name:n.name,email:n.email,phone:parseInt(n.phone.replace(/\D/g,""))});case 6:r=t.sent,e.push("/sessions/".concat(r));case 8:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();return Object(F.jsxs)(w.Content,{children:[Object(F.jsx)(b.a.Title,{className:"page-head",level:3,children:"Dashboard"}),Object(F.jsx)(b.a.Text,{children:"Enter the name, email and phone number of the subject"}),Object(F.jsx)(f.a,{}),Object(F.jsxs)(d.a,{form:i,className:"dashboard-form",onFinish:u,labelCol:{span:8},wrapperCol:{span:16},children:[Object(F.jsx)(v.a,{label:"name",name:"name",children:Object(F.jsx)(x.a,{minLength:3})}),Object(F.jsx)(v.a,{label:"email",name:"email",children:Object(F.jsx)(x.a,{type:"email"})}),Object(F.jsx)(v.a,{label:"phone",name:"phone",children:Object(F.jsx)(x.a,{type:"tel",minLength:10})}),Object(F.jsxs)(O.a,{justify:"space-between",children:[Object(F.jsx)(m.a,{danger:!0,onClick:function(){i.resetFields()},children:"Reset"}),Object(F.jsx)(m.a,{htmlType:"submit",type:"primary",children:"Start Session"})]}),r&&Object(F.jsx)("p",{className:"error",children:r})]})]})},E=n(396),B=n(394),L=n(390),J=function(){return Object(F.jsx)(m.a,{type:"link",style:{position:"fixed",right:20,bottom:20},onClick:function(){window.scrollTo(0,0),console.log("")},children:"\u2934\ufe0f Scroll To Top"})},W=function(e){var t=e.clientId,n=Object(a.useState)(null),r=Object(j.a)(n,2),c=r[0],s=r[1],i=Object(a.useState)(null),o=Object(j.a)(i,2),u=o[0],d=o[1],h=Object(a.useState)(JSON.parse(window.localStorage.getItem("focusPhotos")||"[]")),f=Object(j.a)(h,2),x=f[0],m=f[1];Object(a.useEffect)((function(){var e=setInterval(function(){var e=Object(p.a)(l.a.mark((function e(){var n,r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(c&&c.length>=89)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,N(t);case 4:n=e.sent,(r=n.photos).length&&s(r);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),250);return function(){return clearInterval(e)}}),[t,c]);var g=function(){return d(null)};if(!(null===c||void 0===c?void 0:c.length))return null;var v=c.sort((function(e,t){return e.split("_")[0].localeCompare(t.split("_")[0])})),w=c.length/89,y=v.filter((function(e){var t=e.split("_")[0];return x.includes(t)}));return Object(F.jsxs)(F.Fragment,{children:[Object(F.jsx)(E.a,{visible:!!u,onOk:g,footer:null,onCancel:g,width:"50%",children:Object(F.jsx)("img",{width:"100%",onClick:g,src:"".concat("","/output/").concat(t,"/").concat(u),alt:"large modal"})}),Object(F.jsxs)(O.a,{align:"middle",justify:"space-around",style:{display:"flex",width:"100%"},children:[Object(F.jsx)(b.a.Title,{style:{margin:"0.5rem 1rem 0.7rem"},level:3,children:"Session Pictures"}),Object(F.jsxs)(b.a.Text,{children:[c.length,"/ 89 loaded"]}),Object(F.jsx)(b.a.Text,{children:"Select Featured Photos:"}),Object(F.jsx)(B.a,{mode:"multiple",allowClear:!0,placeholder:"Please select featured",style:{width:"35%"},defaultValue:x,value:x,onChange:function(e){console.log("SEelcted",e),window.localStorage.setItem("focusPhotos",JSON.stringify(e)),m(e)},children:v.map((function(e){var t=e.split("_")[0];return Object(F.jsx)(B.a.Option,{value:t,children:t})}))})]}),Object(F.jsx)("div",{className:"loading-bar-container",children:Object(F.jsx)("div",{className:"loading-bar",style:{width:"".concat(100*w,"%"),background:"hsl(".concat(Math.floor(120*w),", 90%, 70%)")}})}),Object(F.jsx)("div",{className:"featured-photos",style:{marginTop:"2rem"},children:y.map((function(e){return Object(F.jsx)("img",{onClick:function(){return d(e)},src:"".concat("","/output/").concat(t,"/").concat(e),alt:"lol"})}))}),Object(F.jsx)("div",{className:"photo-wall",children:v.map((function(e){return Object(F.jsx)(L.a,{className:"photo",title:e.split("_")[0],children:Object(F.jsx)("img",{onClick:function(){return d(e)},src:"".concat("","/output/").concat(t,"/").concat(e),alt:"lol"})},e)}))}),Object(F.jsx)(J,{})]})},G=n(397);!function(e){e[e["Standing By..."]=0]="Standing By...",e[e["Warming Up..."]=1]="Warming Up...",e[e["Capturing Photo"]=2]="Capturing Photo",e[e["Capturing Grid"]=3]="Capturing Grid",e[e["Writing To Disk"]=4]="Writing To Disk",e[e["Downloading!"]=5]="Downloading!"}(r||(r={}));var R=["lime","gold","volcano","magenta","geekblue"],V=function(e){var t=e.poll,n=Object(a.useState)(r["Standing By..."]),c=Object(j.a)(n,2),s=c[0],i=c[1];return Object(a.useEffect)((function(){var e=setInterval(function(){var e=Object(p.a)(l.a.mark((function e(){var n;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,D();case 4:n=e.sent,i(n);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),250);return function(){return clearInterval(e)}}),[t]),Object(F.jsx)(G.a,{color:R[s],style:{display:"flex"},children:Object(F.jsx)("span",{style:{margin:"auto"},children:r[s]})})},q=n(398),A=n(393),U=function(e){var t=Object(o.f)(),n=e.match.params.clientId,r=Object(a.useState)(null),c=Object(j.a)(r,2),s=c[0],i=c[1],u=Object(a.useState)(!1),d=Object(j.a)(u,2),f=d[0],g=d[1],v=Object(a.useState)(parseInt(window.localStorage.getItem("lightTime")||"5000")),y=Object(j.a)(v,2),k=y[0],S=y[1],N=function(e){window.localStorage.setItem("lightTime",e.toString()),S(e)},D=function(){var e=Object(p.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return h.b.loading("Photo sequence starting! Stand by..."),e.next=3,T(n,{light_time:k});case 3:g(!0);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),_=function(){var e=Object(p.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return g(!1),h.b.loading("Deleting photos & restarting capture sequence! Stand by..."),e.next=4,P(n,{light_time:k});case 4:g(!0);case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),E=function(){var e=Object(p.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.push("/");case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),B=function(){var e=Object(p.a)(l.a.mark((function e(){return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I(n);case 2:h.b.success("Photos Deleted! Going back to dashboard"),t.push("/");case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Object(a.useEffect)((function(){(function(){var e=Object(p.a)(l.a.mark((function e(){var t;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C(n);case 2:t=e.sent,i(t),t.has_photos&&g(!0);case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}})()()}),[n]),Object(F.jsxs)(w.Content,{children:[Object(F.jsx)(b.a.Title,{className:"page-head",level:3,children:"Session View"}),Object(F.jsxs)(O.a,{className:"client-info",children:[Object(F.jsxs)(b.a.Text,{children:[Object(F.jsx)("strong",{children:"Name:"})," ",null===s||void 0===s?void 0:s.name]}),Object(F.jsxs)(b.a.Text,{children:[Object(F.jsx)("strong",{children:"Email:"})," ",null===s||void 0===s?void 0:s.email]}),Object(F.jsxs)(b.a.Text,{children:[Object(F.jsx)("strong",{children:"Phone:"})," ",null===s||void 0===s?void 0:s.phone]})]}),Object(F.jsxs)("div",{className:"toolbar",children:[Object(F.jsxs)(O.a,{justify:"center",className:"session-toolbar",children:[Object(F.jsx)(m.a,{onClick:E,children:"Back To Dashboard"},"finish"),Object(F.jsx)(m.a,{disabled:f,type:"primary",onClick:D,children:"Capture"},"startsession"),Object(F.jsx)(q.a,{disabled:!f,title:"Re-capture set?",onConfirm:_,children:Object(F.jsx)(m.a,{type:"default",disabled:!f,children:"Retry Capture"})},"retry"),Object(F.jsx)(q.a,{disabled:!f,title:"Delete all photos and return to dashboard?",onConfirm:B,children:Object(F.jsx)(m.a,{danger:!0,disabled:!f,children:"Abort Session"})},"nuke"),Object(F.jsx)(V,{poll:!0})]}),Object(F.jsxs)(O.a,{className:"session-toolbar",children:[Object(F.jsx)("h3",{children:"Light Duration (ms)"}),Object(F.jsx)(A.a,{value:k,onChange:N}),Object(F.jsx)(x.a,{className:"slider",type:"range",onChange:function(e){return N(parseInt(e.target.value))},value:k,min:500,max:1e4,step:500})]})]}),Object(F.jsx)(O.a,{className:"controls",children:f&&Object(F.jsx)(W,{clientId:n})})]})};console.log("ENV","production");var M=function(){return Object(F.jsx)(i.a,{children:Object(F.jsx)("div",{className:"App",children:Object(F.jsxs)(o.c,{children:[Object(F.jsx)(o.a,{path:"/sessions/:clientId",component:U}),Object(F.jsx)(o.a,{exact:!0,path:"/",component:_})]})})})},z=function(e){e&&e instanceof Function&&n.e(3).then(n.bind(null,399)).then((function(t){var n=t.getCLS,r=t.getFID,a=t.getFCP,c=t.getLCP,s=t.getTTFB;n(e),r(e),a(e),c(e),s(e)}))};s.a.render(Object(F.jsx)(M,{}),document.getElementById("root")),z()}},[[387,1,2]]]); -//# sourceMappingURL=main.fd8c2650.chunk.js.map \ No newline at end of file diff --git a/client/build/static/js/main.fd8c2650.chunk.js.map b/client/build/static/js/main.fd8c2650.chunk.js.map deleted file mode 100644 index 3311972..0000000 --- a/client/build/static/js/main.fd8c2650.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["components/StatusChip.tsx","api/index.ts","pages/Dashboard.tsx","components/ScrollToTop.tsx","components/SessionPictures.tsx","pages/Session.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["Status","createClient","body","a","axios","post","res","data","client_id","getClient","id","get","startSession","clientId","timings","message","error","getSession","killSession","delete","restartSession","getStatus","status","Dashboard","history","useHistory","useState","setError","Form","useForm","form","handleSubmit","values","phone","length","name","email","parseInt","replace","push","Title","className","level","Text","onFinish","labelCol","span","wrapperCol","label","minLength","type","justify","danger","onClick","resetFields","htmlType","ScrollToTop","style","position","right","bottom","window","scrollTo","console","log","SessionPictures","urls","setUrls","activeUrl","setActiveUrl","JSON","parse","localStorage","getItem","focusPhotos","setFocusPhotos","useEffect","interval","setInterval","photos","clearInterval","closeModal","sort","b","split","localeCompare","u","filteredPhotos","filter","num","includes","visible","onOk","footer","onCancel","width","src","alt","align","display","margin","mode","allowClear","placeholder","defaultValue","value","onChange","v","setItem","stringify","map","val","Option","background","Math","floor","marginTop","title","colors","StatusChip","poll","setStatus","color","Session","props","match","params","client","setClient","active","setActive","lightTime","setLightTime","handleTimingUpdate","n","toString","handleStartSession","loading","light_time","handleRestartSession","handleExit","handleNuke","success","has_photos","disabled","onConfirm","e","target","min","max","step","process","App","path","component","exact","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","document","getElementById"],"mappings":"yJAKYA,E,0MCSCC,EAAY,uCAAG,WAAOC,GAAP,eAAAC,EAAA,4FAERC,IAAMC,KAAN,eAAkDH,GAF1C,cAEpBI,EAFoB,yBAGnBA,EAAIC,KAAKC,WAHU,2CAAH,sDAMZC,EAAS,uCAAG,WAAOC,GAAP,eAAAP,EAAA,4FAQLC,IAAMO,IAAN,uBAAkCD,IAR7B,cAQjBJ,EARiB,yBAShBA,EAAIC,MATY,2CAAH,sDAWTK,EAAY,uCAAG,WAAOC,EAAkBC,GAAzB,eAAAX,EAAA,+EAENC,IAAMC,KAAN,uBAA2BQ,EAA3B,YAA+CC,GAFzC,cAElBR,EAFkB,yBAGjBA,EAAIC,MAHa,uCAKxBQ,IAAQC,MAAM,2DALU,iFAAH,wDAUZC,EAAU,uCAAG,WAAOJ,GAAP,eAAAV,EAAA,sEACNC,IAAMO,IAAN,uBACAE,EADA,aADM,cAClBP,EADkB,yBAIjBA,EAAIC,MAJa,2CAAH,sDAOVW,EAAW,uCAAG,WAAOL,GAAP,SAAAV,EAAA,sEACnBC,IAAMe,OAAN,uBAA6BN,EAA7B,aADmB,2CAAH,sDAIXO,EAAc,uCAAG,WAAOP,EAAkBC,GAAzB,SAAAX,EAAA,sEACtBe,EAAYL,GADU,uBAEtBD,EAAaC,EAAUC,GAFD,2CAAH,wDAOdO,EAAS,uCAAG,4BAAAlB,EAAA,sEACLC,IAAMO,IAAwB,eADzB,cACjBL,EADiB,yBAEhBA,EAAIC,KAAKe,QAFO,2CAAH,qD,OC7CTC,EAAY,WACvB,IAAMC,EAAUC,cADa,EAEHC,mBAAwB,MAFrB,mBAEtBV,EAFsB,KAEfW,EAFe,OAGdC,IAAKC,UAAbC,EAHsB,oBASvBC,EAAY,uCAAG,WAAOC,GAAP,eAAA7B,EAAA,2DACf6B,EAAOC,MAAMC,OAAS,IADP,uBAGjBnB,IAAQC,MAAM,qBACdW,EAAS,oDAJQ,0CAQK1B,EAAa,CACnCkC,KAAMH,EAAOG,KACbC,MAAOJ,EAAOI,MACdH,MAAOI,SAASL,EAAOC,MAAMK,QAAQ,MAAO,OAX3B,OAQb9B,EARa,OAcnBgB,EAAQe,KAAR,oBAA0B/B,IAdP,2CAAH,sDAiBlB,OACE,eAAC,UAAD,WACE,cAAC,IAAWgC,MAAZ,CAAkBC,UAAU,YAAYC,MAAO,EAA/C,uBAGA,cAAC,IAAWC,KAAZ,oEAGA,cAAC,IAAD,IACA,eAAC,IAAD,CACEb,KAAMA,EACNW,UAAU,iBACVG,SAAUb,EACVc,SAAU,CAAEC,KAAM,GAClBC,WAAY,CAAED,KAAM,IALtB,UAOE,cAAC,IAAD,CAAUE,MAAM,OAAOb,KAAK,OAA5B,SACE,cAAC,IAAD,CAAOc,UAAW,MAEpB,cAAC,IAAD,CAAUD,MAAM,QAAQb,KAAK,QAA7B,SACE,cAAC,IAAD,CAAOe,KAAK,YAEd,cAAC,IAAD,CAAUF,MAAM,QAAQb,KAAK,QAA7B,SACE,cAAC,IAAD,CAAOe,KAAK,MAAMD,UAAW,OAE/B,eAAC,IAAD,CAAKE,QAAQ,gBAAb,UACE,cAAC,IAAD,CAAQC,QAAM,EAACC,QA/CH,WAClBvB,EAAKwB,eA8CC,mBAGA,cAAC,IAAD,CAAQC,SAAS,SAASL,KAAK,UAA/B,8BAIDlC,GAAS,mBAAGyB,UAAU,QAAb,SAAsBzB,W,2BCtE3BwC,EAAc,WAMzB,OACE,cAAC,IAAD,CACEN,KAAK,OACLO,MAAO,CACLC,SAAU,QACVC,MAAO,GACPC,OAAQ,IAEVP,QAbgB,WAClBQ,OAAOC,SAAS,EAAG,GACnBC,QAAQC,IAAI,KAIZ,yCCDSC,EAAkB,SAAC,GAAyB,IAAvBpD,EAAsB,EAAtBA,SAAsB,EAC9Ba,mBAA0B,MADI,mBAC/CwC,EAD+C,KACzCC,EADyC,OAEpBzC,mBAAwB,MAFJ,mBAE/C0C,EAF+C,KAEpCC,EAFoC,OAGhB3C,mBACpC4C,KAAKC,MAAMV,OAAOW,aAAaC,QAAQ,gBAAkB,OAJL,mBAG/CC,EAH+C,KAGlCC,EAHkC,KAOtDC,qBAAU,WACR,IASMC,EAAWC,YATR,uCAAG,8BAAA3E,EAAA,2DACN+D,GAAQA,EAAKhC,QAAU,IADjB,iEAKejB,EAAWJ,GAL1B,iBAKFkE,EALE,EAKFA,QACG7C,QAAQiC,EAAQY,GANjB,2CAAH,qDASyB,KAElC,OAAO,kBAAMC,cAAcH,MAC1B,CAAChE,EAAUqD,IAEd,IAAMe,EAAa,kBAAMZ,EAAa,OAKtC,KAAI,OAACH,QAAD,IAACA,OAAD,EAACA,EAAMhC,QAAQ,OAAO,KAE1B,IAAM6C,EAASb,EAAKgB,MAAK,SAAC/E,EAAGgF,GAAJ,OACvBhF,EAAEiF,MAAM,KAAK,GAAGC,cAAcF,EAAEC,MAAM,KAAK,OAGvCE,EAAIpB,EAAKhC,OAAS,GAQlBqD,EAAiBR,EAAOS,QAAO,SAACrD,GACpC,IAAMsD,EAAMtD,EAAKiD,MAAM,KAAK,GAC5B,OAAOV,EAAYgB,SAASD,MAG9B,OACE,qCACE,cAAC,IAAD,CACEE,UAAWvB,EACXwB,KAAMX,EACNY,OAAQ,KACRC,SAAUb,EACVc,MAAM,MALR,SAOE,qBACEA,MAAM,OACN1C,QAAS4B,EACTe,IAAG,UAjC8D,GAiC9D,mBAAoBnF,EAApB,YAAgCuD,GACnC6B,IAAI,kBAGR,eAAC,IAAD,CACEC,MAAM,SACN/C,QAAQ,eACRM,MAAO,CAAE0C,QAAS,OAAQJ,MAAO,QAHnC,UAKE,cAAC,IAAWvD,MAAZ,CAAkBiB,MAAO,CAAE2C,OAAQ,sBAAwB1D,MAAO,EAAlE,8BAGA,eAAC,IAAWC,KAAZ,WAAkBuB,EAAKhC,OAAvB,iBACA,cAAC,IAAWS,KAAZ,sCAEA,cAAC,IAAD,CACE0D,KAAK,WACLC,YAAU,EACVC,YAAY,yBACZ9C,MAAO,CAAEsC,MAAO,OAChBS,aAAc9B,EACd+B,MAAO/B,EACPgC,SA7Ca,SAACC,GACpB5C,QAAQC,IAAI,WAAY2C,GACxB9C,OAAOW,aAAaoC,QAAQ,cAAetC,KAAKuC,UAAUF,IAC1DhC,EAAegC,IAmCX,SASG5B,EAAO+B,KAAI,SAAC3E,GACX,IAAM4E,EAAM5E,EAAKiD,MAAM,KAAK,GAC5B,OAAO,cAAC,IAAO4B,OAAR,CAAeP,MAAOM,EAAtB,SAA4BA,YAKzC,qBAAKtE,UAAU,wBAAf,SACE,qBACEA,UAAU,cACVgB,MAAO,CACLsC,MAAM,GAAD,OAAS,IAAJT,EAAL,KACL2B,WAAW,OAAD,OAASC,KAAKC,MAAU,IAAJ7B,GAApB,oBAIhB,qBAAK7C,UAAU,kBAAkBgB,MAAO,CAAE2D,UAAW,QAArD,SACG7B,EAAeuB,KAAI,SAACd,GAAD,OAClB,qBACE3C,QAAS,kBAAMgB,EAAa2B,IAC5BA,IAAG,UA7E4D,GA6E5D,mBAAoBnF,EAApB,YAAgCmF,GACnCC,IAAI,aAIV,qBAAKxD,UAAU,aAAf,SACGsC,EAAO+B,KAAI,SAACd,GAAD,OACV,cAAC,IAAD,CAAgBvD,UAAU,QAAQ4E,MAAOrB,EAAIZ,MAAM,KAAK,GAAxD,SACE,qBACE/B,QAAS,kBAAMgB,EAAa2B,IAC5BA,IAAG,UAvF0D,GAuF1D,mBAAoBnF,EAApB,YAAgCmF,GACnCC,IAAI,SAJGD,QASf,cAAC,EAAD,Q,mBJ1HMhG,O,sCAAAA,I,oCAAAA,I,wCAAAA,I,sCAAAA,I,wCAAAA,I,mCAAAA,M,KASZ,IAAMsH,EAAqC,CACzC,OACA,OACA,UACA,UACA,YAOWC,EAAa,SAAC,GAAqB,IAAnBC,EAAkB,EAAlBA,KAAkB,EACjB9F,mBAAiB1B,EAAO,mBADP,mBACtCsB,EADsC,KAC9BmG,EAD8B,KAe7C,OAZA7C,qBAAU,WACR,IAMMC,EAAWC,YANR,uCAAG,4BAAA3E,EAAA,yDACLqH,EADK,iEAEWnG,IAFX,OAEJC,EAFI,OAGVmG,EAAUnG,GAHA,2CAAH,qDAMyB,KAElC,OAAO,kBAAM0D,cAAcH,MAC1B,CAAC2C,IAGF,cAAC,IAAD,CAAKE,MAAOJ,EAAOhG,GAASmC,MAAO,CAAE0C,QAAS,QAA9C,SACE,sBAAM1C,MAAO,CAAE2C,OAAQ,QAAvB,SAAkCpG,EAAOsB,Q,kBKvBlCqG,EAAU,SAACC,GACtB,IAAMpG,EAAUC,cACRZ,EAAa+G,EAAMC,MAAMC,OAAzBjH,SAF+B,EAGXa,mBAAwB,MAHb,mBAGhCqG,EAHgC,KAGxBC,EAHwB,OAIXtG,oBAAS,GAJE,mBAIhCuG,EAJgC,KAIxBC,EAJwB,OAKLxG,mBAChCW,SAASwB,OAAOW,aAAaC,QAAQ,cAAgB,SANhB,mBAKhC0D,EALgC,KAKrBC,EALqB,KASjCC,EAAqB,SAACC,GAC1BzE,OAAOW,aAAaoC,QAAQ,YAAa0B,EAAEC,YAC3CH,EAAaE,IAGTE,EAAkB,uCAAG,sBAAArI,EAAA,6DACzBY,IAAQ0H,QAAQ,wCADS,SAEnB7H,EAAaC,EAAU,CAAE6H,WAAYP,IAFlB,OAGzBD,GAAU,GAHe,2CAAH,qDAMlBS,EAAoB,uCAAG,sBAAAxI,EAAA,6DAC3B+H,GAAU,GACVnH,IAAQ0H,QACN,8DAHyB,SAKrBrH,EAAeP,EAAU,CAAE6H,WAAYP,IALlB,OAM3BD,GAAU,GANiB,2CAAH,qDASpBU,EAAU,uCAAG,sBAAAzI,EAAA,sDACjBqB,EAAQe,KAAK,KADI,2CAAH,qDAIVsG,EAAU,uCAAG,sBAAA1I,EAAA,sEACXe,EAAYL,GADD,OAEjBE,IAAQ+H,QAAQ,2CAChBtH,EAAQe,KAAK,KAHI,2CAAH,qDAgBhB,OAVAqC,qBAAU,YACC,uCAAG,4BAAAzE,EAAA,sEACWM,EAAUI,GADrB,OACJkH,EADI,OAEVC,EAAUD,GACNA,EAAOgB,YAAYb,GAAU,GAHvB,2CAAH,qDAMTvH,KACC,CAACE,IAGF,eAAC,UAAD,WACE,cAAC,IAAW2B,MAAZ,CAAkBC,UAAU,YAAYC,MAAO,EAA/C,0BAIA,eAAC,IAAD,CAAKD,UAAU,cAAf,UACE,eAAC,IAAWE,KAAZ,WACE,2CADF,WAC0BoF,QAD1B,IAC0BA,OAD1B,EAC0BA,EAAQ5F,QAElC,eAAC,IAAWQ,KAAZ,WACE,4CADF,WAC2BoF,QAD3B,IAC2BA,OAD3B,EAC2BA,EAAQ3F,SAEnC,eAAC,IAAWO,KAAZ,WACE,4CADF,WAC2BoF,QAD3B,IAC2BA,OAD3B,EAC2BA,EAAQ9F,YAGrC,sBAAKQ,UAAU,UAAf,UACE,eAAC,IAAD,CAAKU,QAAQ,SAASV,UAAU,kBAAhC,UACE,cAAC,IAAD,CAAqBY,QAASuF,EAA9B,8BAAY,UAGZ,cAAC,IAAD,CAEEI,SAAUf,EACV/E,KAAK,UACLG,QAASmF,EAJX,oBACM,gBAON,cAAC,IAAD,CACEQ,UAAWf,EAEXZ,MAAM,kBACN4B,UAAWN,EAJb,SAME,cAAC,IAAD,CAAQzF,KAAK,UAAU8F,UAAWf,EAAlC,4BAJI,SAQN,cAAC,IAAD,CAEEe,UAAWf,EACXZ,MAAM,6CACN4B,UAAWJ,EAJb,SAME,cAAC,IAAD,CAAQzF,QAAM,EAAC4F,UAAWf,EAA1B,4BALI,QAUN,cAAC,EAAD,CAAYT,MAAM,OAEpB,eAAC,IAAD,CAAK/E,UAAU,kBAAf,UACE,qDACA,cAAC,IAAD,CAAagE,MAAO0B,EAAWzB,SAAU2B,IACzC,cAAC,IAAD,CACE5F,UAAU,SACVS,KAAK,QACLwD,SAAU,SAACwC,GAAD,OAAOb,EAAmBhG,SAAS6G,EAAEC,OAAO1C,SACtDA,MAAO0B,EACPiB,IAAK,IACLC,IAAK,IACLC,KAAM,YAIZ,cAAC,IAAD,CAAK7G,UAAU,WAAf,SACGwF,GAAU,cAAC,EAAD,CAAiBpH,SAAUA,UClI9CkD,QAAQC,IAAI,MAAOuF,cAeJC,MAbf,WACE,OACE,cAAC,IAAD,UACE,qBAAK/G,UAAU,MAAf,SACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAOgH,KAAK,sBAAsBC,UAAW/B,IAC7C,cAAC,IAAD,CAAOgC,OAAK,EAACF,KAAK,IAAIC,UAAWnI,YCD5BqI,EAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,OCFdQ,IAASC,OAAO,cAAC,EAAD,IAASC,SAASC,eAAe,SAKjDZ,M","file":"static/js/main.fd8c2650.chunk.js","sourcesContent":["import { Tag } from 'antd'\nimport { PresetColorType } from 'antd/lib/_util/colors'\nimport { useEffect, useState } from 'react'\nimport { getStatus } from '../api'\n\nexport enum Status {\n 'Standing By...',\n 'Warming Up...',\n 'Capturing Photo',\n 'Capturing Grid',\n 'Writing To Disk',\n 'Downloading!',\n}\n\nconst colors: Partial[] = [\n 'lime',\n 'gold',\n 'volcano',\n 'magenta',\n 'geekblue',\n]\n\ntype Props = {\n poll: boolean\n}\n\nexport const StatusChip = ({ poll }: Props) => {\n const [status, setStatus] = useState(Status['Standing By...'])\n\n useEffect(() => {\n const get = async () => {\n if (!poll) return\n const status = await getStatus()\n setStatus(status)\n }\n\n const interval = setInterval(get, 1000 / 4)\n\n return () => clearInterval(interval)\n }, [poll])\n\n return (\n \n {Status[status]}\n \n )\n}\n","import { Client, Timings } from '../types'\nimport axios from 'axios'\nimport { message } from 'antd'\nimport { Status } from '../components/StatusChip'\n\nconst dev = process.env.NODE_ENV === 'development'\n\nif (dev) {\n const host = 'http://192.168.1.107:5000'\n axios.defaults.baseURL = host\n}\n\nconst mock = false\n\nexport const createClient = async (body: Omit) => {\n if (mock) return 'test'\n const res = await axios.post<{ client_id: string }>(`/api/clients`, body)\n return res.data.client_id\n}\n\nexport const getClient = async (id: string): Promise => {\n if (mock)\n return {\n name: 'Test Client',\n has_photos: false,\n email: 'test@test.test',\n phone: 1234567890,\n }\n const res = await axios.get(`/api/clients/${id}`)\n return res.data\n}\nexport const startSession = async (clientId: string, timings: Timings) => {\n try {\n const res = await axios.post(`/api/clients/${clientId}/session`, timings)\n return res.data\n } catch (err) {\n message.error('Something went wrong, check connection with the machine')\n return err\n }\n}\n\nexport const getSession = async (clientId: string) => {\n const res = await axios.get<{ photos: string[] }>(\n `/api/clients/${clientId}/session`,\n )\n return res.data // session data\n}\n\nexport const killSession = async (clientId: string) => {\n await axios.delete(`/api/clients/${clientId}/session`)\n}\n\nexport const restartSession = async (clientId: string, timings: Timings) => {\n await killSession(clientId)\n await startSession(clientId, timings)\n}\n\n// TOOD: Get status\n\nexport const getStatus = async (): Promise => {\n const res = await axios.get<{ status: Status }>('/api/status')\n return res.data.status\n}\n\n// Someday\n\nexport const getClients = async (): Promise => {\n const res = await axios.get(`/api/clients`)\n return res.data\n}\n\nexport const cleanup = () => {\n // send\n}\n","import { Button, Divider, Form, Input, message, Row, Typography } from 'antd'\nimport FormItem from 'antd/lib/form/FormItem'\nimport { Content } from 'antd/lib/layout/layout'\nimport React from 'react'\nimport { useState } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { createClient } from '../api'\n\ntype FormData = {\n name: string\n email: string\n phone: string\n}\n\nexport const Dashboard = () => {\n const history = useHistory()\n const [error, setError] = useState(null)\n const [form] = Form.useForm()\n\n const handleReset = () => {\n form.resetFields()\n }\n\n const handleSubmit = async (values: FormData) => {\n if (values.phone.length < 10) {\n // helpful message\n message.error('Check all fields!')\n setError('Phone number needs to be a length of at least 10')\n return\n }\n\n const client_id = await createClient({\n name: values.name,\n email: values.email,\n phone: parseInt(values.phone.replace(/\\D/g, '')),\n })\n\n history.push(`/sessions/${client_id}`)\n }\n\n return (\n \n \n Dashboard\n \n \n Enter the name, email and phone number of the subject\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {error &&

{error}

}\n \n
\n )\n}\n","import { Button } from 'antd'\nimport React from 'react'\n\nexport const ScrollToTop = () => {\n const handleClick = () => {\n window.scrollTo(0, 0)\n console.log('')\n }\n\n return (\n \n ⤴️ Scroll To Top\n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { Card, Modal, Row, Select, Typography } from 'antd'\nimport { getSession } from '../api'\nimport { ScrollToTop } from './ScrollToTop'\n\ntype Props = {\n clientId: string\n}\n\nexport const SessionPictures = ({ clientId }: Props) => {\n const [urls, setUrls] = useState(null)\n const [activeUrl, setActiveUrl] = useState(null)\n const [focusPhotos, setFocusPhotos] = useState(\n JSON.parse(window.localStorage.getItem('focusPhotos') || '[]'),\n )\n\n useEffect(() => {\n const get = async () => {\n if (urls && urls.length >= 89 * 1) {\n return\n }\n\n const { photos } = await getSession(clientId)\n if (photos.length) setUrls(photos)\n }\n\n const interval = setInterval(get, 250)\n\n return () => clearInterval(interval)\n }, [clientId, urls])\n\n const closeModal = () => setActiveUrl(null)\n\n const host =\n process.env.NODE_ENV === 'development' ? 'http://192.168.1.107:5000' : ''\n\n if (!urls?.length) return null\n\n const photos = urls.sort((a, b) =>\n a.split('_')[0].localeCompare(b.split('_')[0]),\n )\n\n const u = urls.length / 89\n\n const handleSelect = (v: string[]) => {\n console.log('SEelcted', v)\n window.localStorage.setItem('focusPhotos', JSON.stringify(v))\n setFocusPhotos(v)\n }\n\n const filteredPhotos = photos.filter((name) => {\n const num = name.split('_')[0]\n return focusPhotos.includes(num)\n })\n\n return (\n <>\n \n \n \n \n \n Session Pictures\n \n {urls.length}/ 89 loaded\n Select Featured Photos:\n\n \n {photos.map((name) => {\n const val = name.split('_')[0]\n return {val}\n })}\n \n \n\n
\n
\n \n
\n {filteredPhotos.map((src) => (\n setActiveUrl(src)}\n src={`${host}/output/${clientId}/${src}`}\n alt=\"lol\"\n />\n ))}\n
\n
\n {photos.map((src) => (\n \n setActiveUrl(src)}\n src={`${host}/output/${clientId}/${src}`}\n alt=\"lol\"\n />\n \n ))}\n
\n \n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { RouteComponentProps, useHistory } from 'react-router-dom'\nimport { getClient, killSession, restartSession, startSession } from '../api'\nimport { SessionPictures } from '../components/SessionPictures'\nimport { StatusChip } from '../components/StatusChip'\n\nimport {\n Button,\n Input,\n InputNumber,\n message,\n Popconfirm,\n Row,\n Typography,\n} from 'antd'\nimport { Content } from 'antd/lib/layout/layout'\nimport { Client } from '../types'\n\ntype Props = RouteComponentProps<{ clientId: string }>\n\nexport const Session = (props: Props) => {\n const history = useHistory()\n const { clientId } = props.match.params\n const [client, setClient] = useState(null)\n const [active, setActive] = useState(false)\n const [lightTime, setLightTime] = useState(\n parseInt(window.localStorage.getItem('lightTime') || '5000'),\n )\n\n const handleTimingUpdate = (n: number) => {\n window.localStorage.setItem('lightTime', n.toString())\n setLightTime(n)\n }\n\n const handleStartSession = async () => {\n message.loading('Photo sequence starting! Stand by...')\n await startSession(clientId, { light_time: lightTime })\n setActive(true)\n }\n\n const handleRestartSession = async () => {\n setActive(false)\n message.loading(\n 'Deleting photos & restarting capture sequence! Stand by...',\n )\n await restartSession(clientId, { light_time: lightTime })\n setActive(true)\n }\n\n const handleExit = async () => {\n history.push('/')\n }\n\n const handleNuke = async () => {\n await killSession(clientId)\n message.success('Photos Deleted! Going back to dashboard')\n history.push('/')\n }\n\n useEffect(() => {\n const get = async () => {\n const client = await getClient(clientId)\n setClient(client)\n if (client.has_photos) setActive(true)\n }\n\n get()\n }, [clientId])\n\n return (\n \n \n Session View\n \n\n \n \n Name: {client?.name}\n \n \n Email: {client?.email}\n \n \n Phone: {client?.phone}\n \n \n
\n \n \n \n Capture\n \n \n \n \n \n \n \n\n \n \n \n

Light Duration (ms)

\n \n handleTimingUpdate(parseInt(e.target.value))}\n value={lightTime}\n min={500}\n max={10000}\n step={500}\n />\n
\n
\n \n {active && }\n \n
\n )\n}\n","import React from 'react'\nimport './App.css'\n\nimport { BrowserRouter, Switch, Route } from 'react-router-dom'\nimport { Dashboard } from './pages/Dashboard'\nimport { Session } from './pages/Session'\n\nconsole.log('ENV', process.env.NODE_ENV)\n\nfunction App() {\n return (\n \n
\n \n \n \n \n
\n
\n )\n}\n\nexport default App\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport 'antd/dist/antd.css'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\n\nReactDOM.render(, document.getElementById('root'))\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""} \ No newline at end of file diff --git a/client/src/App.css b/client/src/App.css index efd0a95..6a04267 100644 --- a/client/src/App.css +++ b/client/src/App.css @@ -117,6 +117,7 @@ } .slider { + width: 400px; margin: auto 1rem; } @@ -126,7 +127,11 @@ } .client-info { - justify-content: space-around; + justify-content: center; width: 60%; margin: 1rem auto; } + +.client-info span { + margin: auto 1rem; +} diff --git a/client/src/api/index.ts b/client/src/api/index.ts index 305091c..128b053 100644 --- a/client/src/api/index.ts +++ b/client/src/api/index.ts @@ -6,7 +6,7 @@ import { Status } from '../components/StatusChip' const dev = process.env.NODE_ENV === 'development' if (dev) { - const host = 'http://192.168.1.107:5000' + const host = 'http://192.168.1.114:5000' axios.defaults.baseURL = host } diff --git a/client/src/pages/Dashboard.tsx b/client/src/pages/Dashboard.tsx index 8a8d5c0..498d3e4 100644 --- a/client/src/pages/Dashboard.tsx +++ b/client/src/pages/Dashboard.tsx @@ -1,7 +1,7 @@ +import React from 'react' import { Button, Divider, Form, Input, message, Row, Typography } from 'antd' import FormItem from 'antd/lib/form/FormItem' import { Content } from 'antd/lib/layout/layout' -import React from 'react' import { useState } from 'react' import { useHistory } from 'react-router-dom' import { createClient } from '../api' @@ -43,9 +43,6 @@ export const Dashboard = () => { Dashboard - - Enter the name, email and phone number of the subject -
{ labelCol={{ span: 8 }} wrapperCol={{ span: 16 }} > + + Enter the name, email and phone number of the subject +