Feat: UserflowDataGatherer send correct datas; Feat: UserflowPredictorWebserver receive data and create userflowmap
This commit is contained in:
parent
6feb5af4d0
commit
9946f8c057
26 changed files with 3977 additions and 22 deletions
12
.idea/UserflowPredictorSystem.iml
generated
Normal file
12
.idea/UserflowPredictorSystem.iml
generated
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
6
.idea/misc.xml
generated
Normal file
6
.idea/misc.xml
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="ES6" />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/UserflowPredictorSystem.iml" filepath="$PROJECT_DIR$/.idea/UserflowPredictorSystem.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
458
.idea/workspace.xml
generated
Normal file
458
.idea/workspace.xml
generated
Normal file
|
|
@ -0,0 +1,458 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="BookmarkManager">
|
||||
<bookmark url="file://$PROJECT_DIR$/DataGatherer/src/index.html" line="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$/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" />
|
||||
</list>
|
||||
<ignored path="$PROJECT_DIR$/.tmp/" />
|
||||
<ignored path="$PROJECT_DIR$/temp/" />
|
||||
<ignored path="$PROJECT_DIR$/tmp/" />
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<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" />
|
||||
<folding>
|
||||
<element signature="e#0#30#0" expanded="true" />
|
||||
</folding>
|
||||
</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" />
|
||||
<folding>
|
||||
<element signature="e#0#35#0" 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>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<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>
|
||||
</file>
|
||||
<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" />
|
||||
<folding>
|
||||
<element signature="e#0#48#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<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" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>CanvasRenderer</find>
|
||||
<find>new Data</find>
|
||||
<find>stroke</find>
|
||||
<find>window</find>
|
||||
</findStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<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/source/screen/Screen.ts" />
|
||||
<option value="$PROJECT_DIR$/DataGatherer/src/main.ts" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectConfigurationFiles">
|
||||
<option name="files">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/.idea/UserflowPredictorSystem.iml" />
|
||||
<option value="$PROJECT_DIR$/.idea/misc.xml" />
|
||||
<option value="$PROJECT_DIR$/.idea/modules.xml" />
|
||||
<option value="$PROJECT_DIR$/.idea/vcs.xml" />
|
||||
</list>
|
||||
</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" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="DataGatherer" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="DataGatherer" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="DataGatherer" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="sender" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="DataGatherer" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="source" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="DataGatherer" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="source" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="keyboard" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="DataGatherer" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="source" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="mouse" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="DataGatherer" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="source" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="screen" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Predictor" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Predictor" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="PredictorWebService" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Predictor" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="PredictorWebService" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="UserflowPredictorSystem" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="UserflowPredictorSystem" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Predictor" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="PredictorWebService" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="predictor-web-service" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
<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" />
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
<list>
|
||||
<RuleState>
|
||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
<RuleState>
|
||||
<option name="name" value="StatusDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="603d916b-6d0f-43a7-809c-21ce2bcb2533" name="Default Changelist" comment="" />
|
||||
<created>1554914345509</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1554914345509</updated>
|
||||
<workItem from="1554914346687" duration="15299000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="15299000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-7" y="-7" width="1550" height="838" 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 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 anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<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="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" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="1" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/Predictor/PredictorWebService/package.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="170">
|
||||
<caret line="10" column="26" lean-forward="true" selection-start-line="10" selection-start-column="26" selection-end-line="10" selection-end-column="26" />
|
||||
</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">
|
||||
<caret line="507" column="2720" selection-start-line="507" selection-start-column="2706" selection-end-line="507" selection-end-column="2720" />
|
||||
<folding>
|
||||
<element signature="n#!!doc" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/node_modules/@types/html2canvas/index.d.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-17">
|
||||
<caret line="9" column="14" selection-start-line="9" selection-start-column="14" selection-end-line="9" selection-end-column="14" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/package.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="15" column="41" selection-start-line="15" selection-start-column="41" selection-end-line="15" selection-end-column="41" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/DataGatherer/src/data/Data.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="85">
|
||||
<caret line="5" column="22" lean-forward="true" selection-start-line="5" selection-start-column="22" selection-end-line="5" selection-end-column="22" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/Predictor/PredictorWebService/node_modules/canvas/types/index.d.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="2856">
|
||||
<caret line="169" column="35" selection-start-line="169" selection-start-column="29" selection-end-line="169" selection-end-column="35" />
|
||||
</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">
|
||||
<caret line="3" lean-forward="true" selection-start-line="3" selection-end-line="3" />
|
||||
</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" />
|
||||
<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>
|
||||
<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" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
42
DataGatherer/package-lock.json
generated
42
DataGatherer/package-lock.json
generated
|
|
@ -4,6 +4,27 @@
|
|||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@types/html2canvas": {
|
||||
"version": "0.0.35",
|
||||
"resolved": "https://registry.npmjs.org/@types/html2canvas/-/html2canvas-0.0.35.tgz",
|
||||
"integrity": "sha512-28p0/yNwXnvGWQK3rEIBj7NHNQoBXuX0ymcCNjSYR/i0Vk9z+xrKCQZPvsrEmurx9vs4B/eHGbOaJY/a9CXdSg==",
|
||||
"requires": {
|
||||
"@types/jquery": "*"
|
||||
}
|
||||
},
|
||||
"@types/jquery": {
|
||||
"version": "3.3.29",
|
||||
"resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.29.tgz",
|
||||
"integrity": "sha512-FhJvBninYD36v3k6c+bVk1DSZwh7B5Dpb/Pyk3HKVsiohn0nhbefZZ+3JXbWQhFyt0MxSl2jRDdGQPHeOHFXrQ==",
|
||||
"requires": {
|
||||
"@types/sizzle": "*"
|
||||
}
|
||||
},
|
||||
"@types/sizzle": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz",
|
||||
"integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg=="
|
||||
},
|
||||
"axios": {
|
||||
"version": "0.18.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
|
||||
|
|
@ -13,6 +34,19 @@
|
|||
"is-buffer": "^1.1.5"
|
||||
}
|
||||
},
|
||||
"base64-arraybuffer": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
|
||||
"integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
|
||||
},
|
||||
"css-line-break": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz",
|
||||
"integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=",
|
||||
"requires": {
|
||||
"base64-arraybuffer": "^0.1.5"
|
||||
}
|
||||
},
|
||||
"eslint-scope": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
|
||||
|
|
@ -67,6 +101,14 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"html2canvas": {
|
||||
"version": "1.0.0-rc.1",
|
||||
"resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-rc.1.tgz",
|
||||
"integrity": "sha512-ImguLJ3goQnY0P6z7n6VqBZ+ViS77Hv6J7iYXBxvdb3NWz3s8/mqr4/Lj0OlMUb3ID+qCQ1BPLIBuRMqhgqvYg==",
|
||||
"requires": {
|
||||
"css-line-break": "1.0.1"
|
||||
}
|
||||
},
|
||||
"is-buffer": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,9 @@
|
|||
"description": "",
|
||||
"main": "main.js",
|
||||
"dependencies": {
|
||||
"@types/html2canvas": "0.0.35",
|
||||
"axios": "^0.18.0",
|
||||
"html2canvas": "^1.0.0-rc.1",
|
||||
"rxios": "^1.1.2",
|
||||
"rxjs": "^6.4.0",
|
||||
"rxjs-compat": "^6.4.0"
|
||||
|
|
|
|||
|
|
@ -2,10 +2,31 @@ export class Data {
|
|||
private name: string;
|
||||
private data: any;
|
||||
private timestamp: number;
|
||||
private size: {
|
||||
width: number;
|
||||
height: number;
|
||||
};
|
||||
|
||||
constructor(name: string, data: any) {
|
||||
constructor(name: string, data: any, size: any, timestamp?: number) {
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.timestamp = Date.now();
|
||||
this.timestamp = timestamp ? timestamp : Date.now();
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public getData() {
|
||||
return this.data;
|
||||
}
|
||||
|
||||
public getTimestamp() {
|
||||
return this.timestamp;
|
||||
}
|
||||
|
||||
public getSize() {
|
||||
return this.size;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,34 @@
|
|||
<html>
|
||||
<head>
|
||||
<script src="../dist/bundle.js"></script>
|
||||
<script>
|
||||
const interval = setInterval(() => {
|
||||
let i = 1;
|
||||
for( i = 1; i <= 13; i++){
|
||||
const el = document.getElementById(i.toString());
|
||||
el.style.top = Math.floor(Math.random() * 1000) + 10 + 'px';
|
||||
el.style.width = Math.floor(Math.random() * 200) + 10 + 'px';
|
||||
el.style.height = Math.floor(Math.random() * 200) + 10 + 'px';
|
||||
el.style.left = Math.floor(Math.random() * 1000) + 10 + 'px';
|
||||
}
|
||||
clearInterval(interval);
|
||||
}, 200);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<button>ciao</button>
|
||||
<div id="1" style="width: 50px; height: 70px; background-color:red; position: absolute"></div>
|
||||
<div id="2" style="width: 30px; height: 30px; background-color:blue; position: absolute"></div>
|
||||
<div id="3" style="width: 40px; height: 20px; background-color:pink; position: absolute"></div>
|
||||
<div id="4" style="width: 30px; height: 30px; background-color:black; position: absolute"></div>
|
||||
<div id="5" style="width: 30px; height: 30px; background-color:cyan; position: absolute"></div>
|
||||
<div id="6" style="width: 30px; height: 30px; background-color:yellow; position: absolute"></div>
|
||||
<div id="7" style="width: 30px; height: 30px; background-color:limegreen; position: absolute"></div>
|
||||
<div id="8" style="width: 30px; height: 30px; background-color:darkmagenta; position: absolute"></div>
|
||||
<div id="9" style="width: 30px; height: 30px; background-color:darkslategray; position: absolute"></div>
|
||||
<div id="10" style="width: 30px; height: 30px; background-color:fuchsia; position: absolute"></div>
|
||||
<div id="11" style="width: 30px; height: 30px; background-color:purple; position: absolute"></div>
|
||||
<div id="12" style="width: 30px; height: 30px; background-color:sienna; position: absolute"></div>
|
||||
<div id="13" style="width: 30px; height: 30px; background-color:darkturquoise; position: absolute"></div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -2,16 +2,23 @@ import { Sender } from "./sender/Sender";
|
|||
import { Mouse } from "./source/mouse/Mouse";
|
||||
import { Gatherer } from "./gatherer/Gatherer";
|
||||
import { Keyboard } from "./source/keyboard/Keyboard";
|
||||
import { Screen } from "./source/screen/Screen";
|
||||
|
||||
function main() {
|
||||
const gatherer: Gatherer = new Gatherer([
|
||||
new Keyboard('keyboard', ['keydown']),
|
||||
new Screen('screen'),
|
||||
new Keyboard('keyboard', ['keydown']),
|
||||
new Mouse('mouse', ['click', 'mousemove'])
|
||||
]);
|
||||
|
||||
gatherer.start();
|
||||
startPrediction(gatherer);
|
||||
startGathering(gatherer);
|
||||
|
||||
}
|
||||
|
||||
const sender: Sender = new Sender(() => gatherer.getData(), '/predictor', 4000, 2000);
|
||||
function startPrediction(gatherer: Gatherer) {
|
||||
const sender: Sender = new Sender(() => gatherer.getData(), 'localhost:4000/predict', 10000);
|
||||
sender.start()
|
||||
.subscribe(
|
||||
val => {
|
||||
|
|
@ -20,4 +27,15 @@ function main() {
|
|||
);
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
function startGathering(gatherer: Gatherer) {
|
||||
const sender: Sender = new Sender(() => gatherer.getData(), 'localhost:4000/trainData', 3000);
|
||||
sender.start()
|
||||
.subscribe(
|
||||
val => {
|
||||
console.log(val);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
main();
|
||||
|
|
|
|||
|
|
@ -4,13 +4,11 @@ import { Rxios } from 'rxios';
|
|||
|
||||
export class Sender {
|
||||
private url: string;
|
||||
private port: number;
|
||||
private interval: number;
|
||||
private dataSourceFn: any;
|
||||
|
||||
constructor(dataSourceFn: any, url: string, port: number, interval: number) {
|
||||
constructor(dataSourceFn: any, url: string, interval: number) {
|
||||
this.url = url;
|
||||
this.port = port;
|
||||
this.interval = interval;
|
||||
this.dataSourceFn = dataSourceFn;
|
||||
}
|
||||
|
|
@ -24,11 +22,13 @@ export class Sender {
|
|||
|
||||
private send(data: any) {
|
||||
const http: Rxios = new Rxios();
|
||||
//return http.post(this.url, data);
|
||||
function generateFakeResponse() {
|
||||
return Array.from({length: 20}, () => Math.random().toPrecision(2));
|
||||
}
|
||||
|
||||
return of(generateFakeResponse()).pipe(delay(200));
|
||||
/* var wsConnect = new WebSocket('ws://' + this.url, "protocolOne");
|
||||
wsConnect.send(data);
|
||||
wsConnect.onmessage((msg) => {
|
||||
console.log(msg)
|
||||
}
|
||||
//gestire con rxjs o un wrapper di websocket client
|
||||
)*/
|
||||
return http.post('http://' + this.url, data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { Data } from "./../data/Data";
|
|||
|
||||
export class Source {
|
||||
private name: string;
|
||||
public data: Array<any> = [];
|
||||
public data: Array<Data> = [];
|
||||
public events: Array<string>;
|
||||
|
||||
constructor(name: string, events: Array<string>) {
|
||||
|
|
@ -11,11 +11,6 @@ export class Source {
|
|||
}
|
||||
|
||||
public startCollect() {
|
||||
for(const event of this.events){
|
||||
document.addEventListener(event, (e) => {
|
||||
this.data.push(new Data(event, e));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public getData() {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,18 @@
|
|||
import { Source } from '../Source';
|
||||
import {Data} from "../../data/Data";
|
||||
|
||||
export class Mouse extends Source {
|
||||
|
||||
constructor(name: string, events: Array<string>) {
|
||||
super(name, events);
|
||||
}
|
||||
|
||||
startCollect() {
|
||||
for(const event of this.events){
|
||||
document.addEventListener(event, (e: MouseEvent) => {
|
||||
this.data.push(new Data(event, {x: e.x, y: e.y}, {width: window.innerWidth, height: window.innerHeight}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
23
DataGatherer/src/source/screen/Screen.ts
Normal file
23
DataGatherer/src/source/screen/Screen.ts
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import { Source } from '../Source';
|
||||
import Html2CanvasStatic from "html2canvas";
|
||||
import {Data} from "../../data/Data";
|
||||
|
||||
export class Screen extends Source {
|
||||
|
||||
constructor(name: string, events: Array<string> = []) {
|
||||
super(name, events);
|
||||
}
|
||||
|
||||
public startCollect() {
|
||||
const interval = setInterval(() => {
|
||||
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);
|
||||
}
|
||||
}
|
||||
12
Predictor/PredictorWebService/.eslintrc.yaml
Normal file
12
Predictor/PredictorWebService/.eslintrc.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# .eslintrc.yaml
|
||||
---
|
||||
extends: airbnb-base
|
||||
env:
|
||||
node: true
|
||||
mocha: true
|
||||
es6: true
|
||||
parser: typescript-eslint-parser
|
||||
parserOptions:
|
||||
sourceType: module
|
||||
ecmaFeatures:
|
||||
modules: true
|
||||
3
Predictor/PredictorWebService/.vscode/settings.json
vendored
Normal file
3
Predictor/PredictorWebService/.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"git.ignoreLimitWarning": true
|
||||
}
|
||||
3129
Predictor/PredictorWebService/package-lock.json
generated
Normal file
3129
Predictor/PredictorWebService/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
30
Predictor/PredictorWebService/package.json
Normal file
30
Predictor/PredictorWebService/package.json
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"name": "predictorservice",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "main.js",
|
||||
"dependencies": {
|
||||
"@types/express": "^4.16.1",
|
||||
"body-parser": "^1.18.3",
|
||||
"canvas": "^2.4.1",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.16.4",
|
||||
"nodemon": "^1.18.10",
|
||||
"ws": "^6.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^11.13.0",
|
||||
"@types/ws": "^6.0.1",
|
||||
"ts-node": "^8.0.3",
|
||||
"typescript": "^3.4.2",
|
||||
"typescript-eslint-parser": "^22.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsc -w",
|
||||
"dev": "ts-node ./src/main.ts",
|
||||
"start": "nodemon ./dist/main.js",
|
||||
"prod": "npm run build && npm run start"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC"
|
||||
}
|
||||
9
Predictor/PredictorWebService/src/main.ts
Normal file
9
Predictor/PredictorWebService/src/main.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import { PredictorWebService } from "./predictor-web-service/PredictorWebService";
|
||||
|
||||
function main() {
|
||||
const predictorWebService = new PredictorWebService('/', 4000, 4100);
|
||||
predictorWebService.startExpress();
|
||||
predictorWebService.startWebSocket();
|
||||
}
|
||||
|
||||
main();
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
import express from 'express';
|
||||
import * as WebSocket from 'ws';
|
||||
import * as http from 'http';
|
||||
import cors from 'cors';
|
||||
import * as bodyParser from "body-parser";
|
||||
import fs from 'fs';
|
||||
import {Data} from "../../../../DataGatherer/src/data/Data";
|
||||
import {createCanvas, Image} from "canvas";
|
||||
|
||||
export class PredictorWebService {
|
||||
|
||||
private portWebSocket: number;
|
||||
private portApi: number;
|
||||
private url: string;
|
||||
private app: express.Application;
|
||||
private httpServer: http.Server;
|
||||
private wss: WebSocket.Server;
|
||||
|
||||
constructor(url: string, portApi: number, portWebSocket: number) {
|
||||
this.url = url;
|
||||
this.portApi = portApi;
|
||||
this.portWebSocket = portWebSocket;
|
||||
}
|
||||
|
||||
public startWebSocket() {
|
||||
this.httpServer = http.createServer(this.app);
|
||||
this.wss = new WebSocket.Server({port: this.portWebSocket});
|
||||
|
||||
|
||||
this.wss.on('connection', (ws: WebSocket) => {
|
||||
ws.on('message', (message: string) => {
|
||||
console.log('received: %s', message);
|
||||
ws.send(`Hello, you sent -> ${message}`);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public startExpress() {
|
||||
const that = this;
|
||||
this.app = express();
|
||||
this.app.use(cors());
|
||||
this.app.use(bodyParser.json());
|
||||
this.app.use(bodyParser.urlencoded({ extended: false }));
|
||||
|
||||
this.app.post('/predict', function (req, res) {
|
||||
function generateFakeResponse() {
|
||||
return Array.from({length: 20}, () => Math.random().toPrecision(2));
|
||||
}
|
||||
console.log('Request prediction');
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
printMouseClick(mouseclicks: Array<Data>, ctx: any) {
|
||||
ctx.strokeStyle = 'rgba(219, 10, 91, 0.5)';
|
||||
ctx.lineWidth = 5;
|
||||
ctx.beginPath();
|
||||
for(const move of mouseclicks){
|
||||
ctx.strokeRect(move.getData().x, move.getData().y,10, 10);
|
||||
}
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
printMouseMove(mousemoves: Array<Data>, ctx: any) {
|
||||
ctx.strokeStyle = 'rgba(0,0,0,0.5)';
|
||||
ctx.lineWidth = 5;
|
||||
ctx.beginPath();
|
||||
for(const move of mousemoves){
|
||||
ctx.lineTo(move.getData().x, move.getData().y);
|
||||
}
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
printKeyboard(keyboard: Array<Data>, ctx: any) {
|
||||
|
||||
}
|
||||
|
||||
printImage(image: Image, ctx: any){
|
||||
ctx.drawImage(image, 0, 0);
|
||||
}
|
||||
}
|
||||
20
Predictor/PredictorWebService/tsconfig.json
Normal file
20
Predictor/PredictorWebService/tsconfig.json
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"sourceMap": true,
|
||||
"module": "commonjs",
|
||||
"esModuleInterop": true,
|
||||
"resolveJsonModule": true,
|
||||
"outDir": "dist",
|
||||
"experimentalDecorators": true,
|
||||
"target": "es5",
|
||||
"jsx": "react",
|
||||
"lib": [
|
||||
"dom",
|
||||
"es6"
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts"
|
||||
],
|
||||
"compileOnSave": true
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue