Feat: Added websocket comm. for DataGatherer and PredictorWebService
This commit is contained in:
parent
9946f8c057
commit
b3e47f098f
5 changed files with 245 additions and 174 deletions
262
.idea/workspace.xml
generated
262
.idea/workspace.xml
generated
|
|
@ -5,20 +5,11 @@
|
|||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="603d916b-6d0f-43a7-809c-21ce2bcb2533" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/DataGatherer/src/source/screen/Screen.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/package-lock.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/package.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/src/data/Data.ts" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/src/data/Data.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/src/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/src/index.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/src/main.ts" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/src/main.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/src/sender/Sender.ts" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/src/sender/Sender.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/src/source/Source.ts" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/src/source/Source.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/src/source/mouse/Mouse.ts" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/src/source/mouse/Mouse.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/predictor/.ipynb_checkpoints/Untitled-checkpoint.ipynb" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/predictor/Predictor.py" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/predictor/Readme.md" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/predictor/weights/first_try.h5" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/predictor/weights/first_try2.h5" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DataGatherer/src/source/screen/Screen.ts" beforeDir="false" afterPath="$PROJECT_DIR$/DataGatherer/src/source/screen/Screen.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts" beforeDir="false" afterPath="$PROJECT_DIR$/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts" afterDir="false" />
|
||||
</list>
|
||||
<ignored path="$PROJECT_DIR$/.tmp/" />
|
||||
<ignored path="$PROJECT_DIR$/temp/" />
|
||||
|
|
@ -30,12 +21,12 @@
|
|||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="236">
|
||||
<caret line="57" column="49" lean-forward="true" selection-start-line="57" selection-start-column="49" selection-end-line="57" selection-end-column="49" />
|
||||
<state relative-caret-position="1530">
|
||||
<caret line="96" column="5" selection-start-line="96" selection-start-column="5" selection-end-line="96" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="e#0#30#0" expanded="true" />
|
||||
</folding>
|
||||
|
|
@ -43,11 +34,20 @@
|
|||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/Predictor/PredictorWebService/src/main.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="85">
|
||||
<caret line="5" column="33" selection-start-line="5" selection-start-column="33" selection-end-line="5" selection-end-column="33" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/screen/Screen.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="272">
|
||||
<caret line="16" column="70" lean-forward="true" selection-start-line="16" selection-start-column="70" selection-end-line="16" selection-end-column="70" />
|
||||
<state relative-caret-position="323">
|
||||
<caret line="19" column="15" selection-start-line="19" selection-start-column="11" selection-end-line="19" selection-end-column="15" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
|
|
@ -55,11 +55,35 @@
|
|||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/index.html">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="136">
|
||||
<caret line="8" column="80" selection-start-line="8" selection-start-column="80" selection-end-line="8" selection-end-column="80" />
|
||||
<folding>
|
||||
<element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#2;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#3;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#4;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#5;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#6;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#7;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#8;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#9;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#10;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#11;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#12;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/Source.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="170">
|
||||
<caret line="10" column="5" lean-forward="true" selection-start-line="10" selection-start-column="5" selection-end-line="10" selection-end-column="5" />
|
||||
<state relative-caret-position="204">
|
||||
<caret line="12" column="11" selection-start-line="12" selection-start-column="11" selection-end-line="12" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
|
@ -79,8 +103,8 @@
|
|||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/sender/Sender.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="510">
|
||||
<caret line="31" column="24" selection-start-line="31" selection-start-column="24" selection-end-line="31" selection-end-column="24" />
|
||||
<state relative-caret-position="170">
|
||||
<caret line="10" lean-forward="true" selection-start-line="10" selection-end-line="10" />
|
||||
<folding>
|
||||
<element signature="e#0#48#0" expanded="true" />
|
||||
</folding>
|
||||
|
|
@ -91,8 +115,8 @@
|
|||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/main.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="85">
|
||||
<caret line="8" column="33" lean-forward="true" selection-start-line="8" selection-end-line="9" />
|
||||
<state relative-caret-position="425">
|
||||
<caret line="25" column="13" lean-forward="true" selection-start-line="25" selection-start-column="13" selection-end-line="25" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
|
|
@ -100,6 +124,15 @@
|
|||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/gatherer/Gatherer.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="15" selection-start-line="15" selection-end-line="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
|
|
@ -108,6 +141,7 @@
|
|||
<find>new Data</find>
|
||||
<find>stroke</find>
|
||||
<find>window</find>
|
||||
<find>req</find>
|
||||
</findStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
|
|
@ -118,12 +152,13 @@
|
|||
<list>
|
||||
<option value="$PROJECT_DIR$/Predictor/PredictorWebService/package.json" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/data/Data.ts" />
|
||||
<option value="$PROJECT_DIR$/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/source/Source.ts" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/source/mouse/Mouse.ts" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/sender/Sender.ts" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/index.html" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/gatherer/Gatherer.ts" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/source/screen/Screen.ts" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/sender/Sender.ts" />
|
||||
<option value="$PROJECT_DIR$/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/main.ts" />
|
||||
</list>
|
||||
</option>
|
||||
|
|
@ -139,10 +174,10 @@
|
|||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="47" />
|
||||
<option name="y" value="31" />
|
||||
<option name="width" value="2250" />
|
||||
<option name="height" value="1213" />
|
||||
<option name="x" value="1939" />
|
||||
<option name="y" value="163" />
|
||||
<option name="width" value="1800" />
|
||||
<option name="height" value="1036" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
|
|
@ -239,8 +274,9 @@
|
|||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
<property name="last_opened_file_path" value="$USER_HOME$/Work/proman-web" />
|
||||
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
|
||||
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
||||
<property name="ts.external.directory.path" value="C:\Users\Lorenzo\UserflowPredictorSystem\DataGatherer\node_modules\typescript\lib" />
|
||||
|
|
@ -267,25 +303,22 @@
|
|||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1554914345509</updated>
|
||||
<workItem from="1554914346687" duration="15299000" />
|
||||
<workItem from="1554914346687" duration="15585000" />
|
||||
<workItem from="1554967067169" duration="1271000" />
|
||||
<workItem from="1554973527251" duration="5966000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="15299000" />
|
||||
<option name="totallyTimeSpent" value="22822000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
|
||||
<frame x="1912" y="-318" width="1936" height="1176" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Favorites" side_tool="true" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.12491738" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.09957851" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="bottom" id="TypeScript" />
|
||||
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="Version Control" />
|
||||
<window_info anchor="bottom" id="Terminal" />
|
||||
<window_info anchor="bottom" id="Event Log" side_tool="true" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" />
|
||||
|
|
@ -293,6 +326,11 @@
|
|||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Version Control" order="7" />
|
||||
<window_info anchor="bottom" id="Docker" order="8" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="TypeScript" order="9" />
|
||||
<window_info anchor="bottom" id="Terminal" order="10" />
|
||||
<window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
|
|
@ -309,13 +347,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Predictor/PredictorWebService/src/main.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="136">
|
||||
<caret line="8" column="7" selection-start-line="8" selection-start-column="7" selection-end-line="8" selection-end-column="7" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/node_modules/html2canvas/dist/html2canvas.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="209">
|
||||
|
|
@ -354,50 +385,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/node_modules/typescript/lib/lib.dom.d.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="227">
|
||||
<caret line="14433" column="12" selection-start-line="14433" selection-start-column="12" selection-end-line="14433" selection-end-column="12" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="236">
|
||||
<caret line="57" column="49" lean-forward="true" selection-start-line="57" selection-start-column="49" selection-end-line="57" selection-end-column="49" />
|
||||
<folding>
|
||||
<element signature="e#0#30#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/sender/Sender.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="510">
|
||||
<caret line="31" column="24" selection-start-line="31" selection-start-column="24" selection-end-line="31" selection-end-column="24" />
|
||||
<folding>
|
||||
<element signature="e#0#48#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/screen/Screen.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="272">
|
||||
<caret line="16" column="70" lean-forward="true" selection-start-line="16" selection-start-column="70" selection-end-line="16" selection-end-column="70" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/Source.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="170">
|
||||
<caret line="10" column="5" lean-forward="true" selection-start-line="10" selection-start-column="5" selection-end-line="10" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/keyboard/Keyboard.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="51">
|
||||
|
|
@ -405,27 +392,10 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/mouse/Mouse.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="204">
|
||||
<caret line="12" column="59" selection-start-line="12" selection-start-column="59" selection-end-line="12" selection-end-column="59" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/gatherer/Gatherer.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="85">
|
||||
<caret line="5" lean-forward="true" selection-start-line="5" selection-end-line="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/index.html">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="4" column="14" lean-forward="true" selection-start-line="4" selection-start-column="14" selection-end-line="4" selection-end-column="14" />
|
||||
<state relative-caret-position="136">
|
||||
<caret line="8" column="80" selection-start-line="8" selection-start-column="80" selection-end-line="8" selection-end-column="80" />
|
||||
<folding>
|
||||
<element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />
|
||||
|
|
@ -444,10 +414,78 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/main.ts">
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/Source.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="204">
|
||||
<caret line="12" column="11" selection-start-line="12" selection-start-column="11" selection-end-line="12" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/mouse/Mouse.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="204">
|
||||
<caret line="12" column="59" selection-start-line="12" selection-start-column="59" selection-end-line="12" selection-end-column="59" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/gatherer/Gatherer.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="15" selection-start-line="15" selection-end-line="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/node_modules/typescript/lib/lib.dom.d.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="227">
|
||||
<caret line="2283" column="4" selection-start-line="2283" selection-start-column="4" selection-end-line="2283" selection-end-column="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Predictor/PredictorWebService/src/main.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="85">
|
||||
<caret line="8" column="33" lean-forward="true" selection-start-line="8" selection-end-line="9" />
|
||||
<caret line="5" column="33" selection-start-line="5" selection-start-column="33" selection-end-line="5" selection-end-column="33" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Predictor/PredictorWebService/src/predictor-web-service/PredictorWebService.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1530">
|
||||
<caret line="96" column="5" selection-start-line="96" selection-start-column="5" selection-end-line="96" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="e#0#30#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/sender/Sender.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="170">
|
||||
<caret line="10" lean-forward="true" selection-start-line="10" selection-end-line="10" />
|
||||
<folding>
|
||||
<element signature="e#0#48#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/source/screen/Screen.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="323">
|
||||
<caret line="19" column="15" selection-start-line="19" selection-start-column="11" selection-end-line="19" selection-end-column="15" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/main.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="425">
|
||||
<caret line="25" column="13" lean-forward="true" selection-start-line="25" selection-start-column="13" selection-end-line="25" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
|
|
|
|||
|
|
@ -12,14 +12,14 @@ function main() {
|
|||
]);
|
||||
|
||||
gatherer.start();
|
||||
startPrediction(gatherer);
|
||||
//startPrediction(gatherer);
|
||||
startGathering(gatherer);
|
||||
|
||||
}
|
||||
|
||||
function startPrediction(gatherer: Gatherer) {
|
||||
const sender: Sender = new Sender(() => gatherer.getData(), 'localhost:4000/predict', 10000);
|
||||
sender.start()
|
||||
sender.start('http')
|
||||
.subscribe(
|
||||
val => {
|
||||
console.log(val);
|
||||
|
|
@ -29,8 +29,8 @@ function startPrediction(gatherer: Gatherer) {
|
|||
|
||||
|
||||
function startGathering(gatherer: Gatherer) {
|
||||
const sender: Sender = new Sender(() => gatherer.getData(), 'localhost:4000/trainData', 3000);
|
||||
sender.start()
|
||||
const sender: Sender = new Sender(() => gatherer.getData(), 'localhost:4100/', 3000);
|
||||
sender.start('ws')
|
||||
.subscribe(
|
||||
val => {
|
||||
console.log(val);
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
import { interval, Observable, of } from 'rxjs';
|
||||
import { filter, flatMap, delay } from 'rxjs/operators';
|
||||
import { Rxios } from 'rxios';
|
||||
import {Data} from "../data/Data";
|
||||
|
||||
export class Sender {
|
||||
private url: string;
|
||||
private interval: number;
|
||||
private dataSourceFn: any;
|
||||
private wsConnect;
|
||||
|
||||
constructor(dataSourceFn: any, url: string, interval: number) {
|
||||
this.url = url;
|
||||
|
|
@ -13,22 +15,35 @@ export class Sender {
|
|||
this.dataSourceFn = dataSourceFn;
|
||||
}
|
||||
|
||||
public start() {
|
||||
public start(protocol: string) {
|
||||
if(protocol === 'ws') {
|
||||
this.wsConnect = new WebSocket('ws://' + this.url);
|
||||
}
|
||||
return interval(this.interval)
|
||||
.pipe(
|
||||
flatMap(() => this.send(this.dataSourceFn()))
|
||||
flatMap(() => this.send(this.dataSourceFn(), protocol))
|
||||
)
|
||||
}
|
||||
|
||||
private send(data: any) {
|
||||
const http: Rxios = new Rxios();
|
||||
/* var wsConnect = new WebSocket('ws://' + this.url, "protocolOne");
|
||||
wsConnect.send(data);
|
||||
wsConnect.onmessage((msg) => {
|
||||
console.log(msg)
|
||||
private send(data: Array<Data>, protocol: string) {
|
||||
if(data.length > 0) {
|
||||
if (protocol === 'http') {
|
||||
const http: Rxios = new Rxios();
|
||||
return http.post('http://' + this.url, data);
|
||||
}
|
||||
//gestire con rxjs o un wrapper di websocket client
|
||||
)*/
|
||||
return http.post('http://' + this.url, data);
|
||||
|
||||
if (protocol === 'ws') {
|
||||
this.wsConnect.send(JSON.stringify(data));
|
||||
return new Observable((observer) => {
|
||||
this.wsConnect.onmessage = (msg) => {
|
||||
console.log(msg);
|
||||
observer.next(msg);
|
||||
};
|
||||
});
|
||||
|
||||
}
|
||||
} else {
|
||||
return of(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,11 +13,10 @@ export class Screen extends Source {
|
|||
if (document.body) {
|
||||
Html2CanvasStatic(document.body, {logging: false})
|
||||
.then((canvas) => {
|
||||
console.log(canvas);
|
||||
const imgData = canvas.toDataURL("image/png");
|
||||
this.data.push(new Data('screen', imgData, {width: window.innerWidth, height: window.innerHeight}))
|
||||
});
|
||||
}
|
||||
}, 3000);
|
||||
}, 5000);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ export class PredictorWebService {
|
|||
private httpServer: http.Server;
|
||||
private wss: WebSocket.Server;
|
||||
|
||||
|
||||
private oldImageData: Data;
|
||||
constructor(url: string, portApi: number, portWebSocket: number) {
|
||||
this.url = url;
|
||||
this.portApi = portApi;
|
||||
|
|
@ -26,11 +28,26 @@ export class PredictorWebService {
|
|||
this.httpServer = http.createServer(this.app);
|
||||
this.wss = new WebSocket.Server({port: this.portWebSocket});
|
||||
|
||||
|
||||
this.wss.on('connection', (ws: WebSocket) => {
|
||||
const that = this;
|
||||
ws.on('message', (message: string) => {
|
||||
console.log('received: %s', message);
|
||||
ws.send(`Hello, you sent -> ${message}`);
|
||||
const jsonMsg = JSON.parse(message);
|
||||
const data: Array<Data> = jsonMsg.map(d => new Data(d.name, d.data, d.size, d.timestamp));
|
||||
let image = data.find(val => {
|
||||
return val.getName() === 'screen';
|
||||
});
|
||||
if(image) {
|
||||
that.saveImage(image);
|
||||
that.applyDataToImage(image, data)
|
||||
.then(val => {
|
||||
ws.send(val);
|
||||
});
|
||||
} else {
|
||||
that.applyDataToImage(that.oldImageData, data)
|
||||
.then(val => {
|
||||
ws.send(val);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -50,47 +67,6 @@ export class PredictorWebService {
|
|||
res.send(generateFakeResponse());
|
||||
});
|
||||
|
||||
this.app.post('/trainData', function (req, res) {
|
||||
console.log('Received data');
|
||||
const data: Array<Data> = req.body.map(d => new Data(d.name, d.data, d.size, d.timestamp));
|
||||
console.dir(data);
|
||||
const image = data.find(val => {
|
||||
return val.getName() === 'screen';
|
||||
});
|
||||
const mouseClicks = data.filter(val => {
|
||||
return val.getName() === 'click';
|
||||
});
|
||||
const mouseMovements = data.filter(val => {
|
||||
return val.getName() === 'mousemove';
|
||||
});
|
||||
const keyboard = data.filter(val => {
|
||||
return val.getName() === 'keydown';
|
||||
});
|
||||
if(image){
|
||||
const canvas = createCanvas(image.getSize().width, image.getSize().height);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const img = new Image();
|
||||
img.onload = () => {
|
||||
that.printImage(img, ctx);
|
||||
that.printMouseClick(mouseClicks, ctx);
|
||||
that.printMouseMove(mouseMovements, ctx);
|
||||
that.printKeyboard(keyboard, ctx);
|
||||
const base64data = canvas.toBuffer();
|
||||
fs.writeFile('./trainingDatas/' + image.getTimestamp() + '.png', base64data, 'base64', function(err){
|
||||
if (err) throw err;
|
||||
console.log('File saved.');
|
||||
res.send('ok - image received');
|
||||
})
|
||||
};
|
||||
img.onerror = err => { throw err };
|
||||
img.src = image.getData();
|
||||
|
||||
|
||||
} else {
|
||||
res.send('ok - only datas');
|
||||
}
|
||||
});
|
||||
|
||||
this.app.listen(this.portApi, () => {
|
||||
console.log('PredictorWebService is up and running on port: %d', this.portApi);
|
||||
});
|
||||
|
|
@ -107,7 +83,7 @@ export class PredictorWebService {
|
|||
}
|
||||
|
||||
printMouseMove(mousemoves: Array<Data>, ctx: any) {
|
||||
ctx.strokeStyle = 'rgba(0,0,0,0.5)';
|
||||
ctx.strokeStyle = 'rgba(0,0,0,0.8)';
|
||||
ctx.lineWidth = 5;
|
||||
ctx.beginPath();
|
||||
for(const move of mousemoves){
|
||||
|
|
@ -123,4 +99,47 @@ export class PredictorWebService {
|
|||
printImage(image: Image, ctx: any){
|
||||
ctx.drawImage(image, 0, 0);
|
||||
}
|
||||
|
||||
applyDataToImage(image: Data, data: Array<Data>) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const mouseClicks = data.filter(val => {
|
||||
return val.getName() === 'click';
|
||||
});
|
||||
const mouseMovements = data.filter(val => {
|
||||
return val.getName() === 'mousemove';
|
||||
});
|
||||
const keyboard = data.filter(val => {
|
||||
return val.getName() === 'keydown';
|
||||
});
|
||||
if (image) {
|
||||
const canvas = createCanvas(image.getSize().width, image.getSize().height);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const img = new Image();
|
||||
img.onload = () => {
|
||||
this.printImage(img, ctx);
|
||||
this.printMouseClick(mouseClicks, ctx);
|
||||
this.printMouseMove(mouseMovements, ctx);
|
||||
this.printKeyboard(keyboard, ctx);
|
||||
const base64data = canvas.toBuffer();
|
||||
fs.writeFile('./trainingDatas/' + image.getTimestamp() + '-' + Date.now() + '.png', base64data, 'base64', function (err) {
|
||||
if (err) throw err;
|
||||
console.log('File saved.');
|
||||
resolve('ok - image received');
|
||||
})
|
||||
};
|
||||
img.onerror = err => {
|
||||
throw err
|
||||
};
|
||||
img.src = image.getData();
|
||||
} else {
|
||||
resolve('ok - only datas');
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
saveImage(image: Data) {
|
||||
if(image) {
|
||||
this.oldImageData = image;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue