From 66435e726197b7cd6fc84bf98f926e63a76ae7c2 Mon Sep 17 00:00:00 2001 From: Luc <8822552+luc-github@users.noreply.github.com> Date: Mon, 2 Oct 2023 18:43:02 +0800 Subject: [PATCH] 3.0 code base --- .DS_Store | Bin 6148 -> 0 bytes .all-contributorsrc | 276 - .github/FUNDING.yml | 8 +- .github/ISSUE_TEMPLATE/config.yml | 8 - .github/ISSUE_TEMPLATE/question.md | 10 - .github/workflows/greetings.yml | 13 - .github/workflows/lock.yml | 26 - .gitignore | 5 +- .nvmrc | 1 + .prettierrc | 28 + .travis.yml | 19 - Changelog.txt | 39 - ESP3D-WebUI-features.xls | Bin 0 -> 13824 bytes Features.md | 76 + Memo/Commands.md | 310 + Memo/ESP3D [ESP400] format.md | 102 + Memo/ESP3D [ESP401] format.md | 22 + Memo/ESP3D [ESP410] format.md | 34 + Memo/ESP3D [ESP800] format.md | 119 + Memo/Handlers.md | 175 + Memo/TargetFW.md | 20 + Memo/data structure.odt | Bin 0 -> 18339 bytes Memo/languagepack.md | 62 + Memo/realtimecmd.md | 133 + Memo/variablesList.md | 23 + Memo/websocket.md | 68 + Notes.txt | 16 + README.md | 183 +- build.bat | 4 - buildLanguagePacks.bat | 52 - buildLanguagePacks.sh | 52 - config/buildtemplate.js | 135 + config/checkpack.js | 108 + config/pack.js | 89 + config/server.js | 324 + config/targets/CNC/GRBL/index.js | 662 + config/targets/CNC/grblHAL/index.js | 3005 ++ config/targets/Plotter/HP-GL/index.js | 592 + .../Printer3D/Marlin-embedded/index.js | 861 + config/targets/Printer3D/Marlin/index.js | 969 + config/targets/Printer3D/Repetier/index.js | 894 + .../targets/Printer3D/Smoothieware/index.js | 1154 + config/targets/SandTable/GRBL/index.js | 594 + config/webpack.dev.js | 87 + config/webpack.prod.js | 110 + dist/CNC/GRBL/index.html.gz | Bin 0 -> 80992 bytes dist/CNC/GRBLHal/index.html.gz | Bin 0 -> 82784 bytes dist/Plotter/HP-GL/index.html.gz | Bin 0 -> 68728 bytes dist/Printer3D/Marlin-embedded/index.html.gz | Bin 0 -> 89833 bytes dist/Printer3D/Marlin/index.html.gz | Bin 0 -> 89274 bytes dist/Printer3D/Repetier/index.html.gz | Bin 0 -> 88602 bytes dist/Printer3D/Smoothieware/index.html.gz | Bin 0 -> 88044 bytes dist/SandTable/GRBL/index.html.gz | Bin 0 -> 74194 bytes docs/images/ESP3D-UPLOAD1a.png | Bin 26973 -> 0 bytes docs/images/ESP3D-UPLOAD1b.png | Bin 17864 -> 0 bytes docs/images/ESP3D-UPLOAD2.png | Bin 40531 -> 0 bytes esp3d.todo | 3 + extensions_samples/API.md | 646 + extensions_samples/capabilities.html | 30 + extensions_samples/dispatch.html | 28 + extensions_samples/download.html | 60 + extensions_samples/modal.html | 32 + extensions_samples/query.html | 33 + extensions_samples/sound.html | 14 + extensions_samples/terminal.html | 49 + extensions_samples/toast.html | 14 + extensions_samples/translate.html | 34 + extensions_samples/upload.html | 45 + gulpfile.js | 334 - images/Camera.PNG | Bin 26768 -> 0 bytes images/Commands.PNG | Bin 9414 -> 0 bytes images/ESP3D1.PNG | Bin 64879 -> 0 bytes images/Full1.PNG | Bin 136128 -> 0 bytes images/Full2.PNG | Bin 80825 -> 0 bytes images/Macro.PNG | Bin 105534 -> 0 bytes images/Repetier.PNG | Bin 52543 -> 0 bytes images/Restart.PNG | Bin 46203 -> 0 bytes images/SD-Dir.PNG | Bin 18419 -> 0 bytes images/SD1.5.PNG | Bin 15018 -> 0 bytes images/SD1.PNG | Bin 16719 -> 0 bytes images/SD2.PNG | Bin 10111 -> 0 bytes images/SPIFFS.PNG | Bin 47437 -> 0 bytes images/WebUpdate.PNG | Bin 57554 -> 0 bytes images/controls.PNG | Bin 63300 -> 0 bytes images/esp3d.svg | 11 + images/esxtruders.PNG | Bin 16169 -> 0 bytes images/logo.svg | 1 + images/logob&W.svg | 1 + images/smoothieware.PNG | Bin 77543 -> 0 bytes images/sponsors-supporters/FYSETC/LOGO.png | Bin 19909 -> 0 bytes images/sponsors-supporters/FYSETC/fysetc2.svg | 69 - .../sponsors-supporters/MKS/mksmakerbase.jpg | Bin 43377 -> 0 bytes .../PanucattDevices/Panucatt.jpg | Bin 10220 -> 0 bytes images/sponsors-supporters/sponsor.PNG | Bin 1633 -> 0 bytes images/status.PNG | Bin 74375 -> 0 bytes images/temperatures.PNG | Bin 20078 -> 0 bytes index.html.gz | Bin 166396 -> 0 bytes languages/cncgrblhalpack/en.json | 573 + languages/cncgrblpack/en.json | 573 + languages/de/index.html.gz | Bin 115131 -> 0 bytes languages/en/index.html.gz | Bin 111661 -> 0 bytes languages/es/index.html.gz | Bin 114769 -> 0 bytes languages/fr/index.html.gz | Bin 111675 -> 0 bytes languages/grbl/index.html.gz | Bin 119443 -> 0 bytes languages/hu/index.html.gz | Bin 118054 -> 0 bytes languages/it/index.html.gz | Bin 116025 -> 0 bytes languages/ja/index.html.gz | Bin 111677 -> 0 bytes languages/multi/index.html.gz | Bin 166396 -> 0 bytes languages/pl/index.html.gz | Bin 118251 -> 0 bytes languages/printerpack/en.json | 460 + languages/ptbr/index.html.gz | Bin 118252 -> 0 bytes languages/ru/index.html.gz | Bin 119419 -> 0 bytes languages/sandtablepack/en.json | 428 + languages/tr/index.html.gz | Bin 118255 -> 0 bytes languages/uk/index.html.gz | Bin 119443 -> 0 bytes languages/zh_CN/index.html.gz | Bin 119101 -> 0 bytes languages/zh_TW/index.html.gz | Bin 119041 -> 0 bytes package-lock.json | 28531 +++++++++------- package.json | 121 +- server/CNC/GRBL/Flash/index.html.gz | Bin 0 -> 70094 bytes server/CNC/GRBL/Flash/preferences.json | 252 + .../CNC/grblHAL/Flash/favicon.ico | Bin server/CNC/grblHAL/Flash/www/favicon.ico | Bin 0 -> 1150 bytes server/CNC/grblHAL/Flash/www/lang-fr.json | 28 + .../CNC/grblHAL/Flash/www/lang-zh_cn.json.gz | Bin 0 -> 87 bytes server/CNC/grblHAL/Flash/www/theme-dark.gz | Bin 0 -> 272 bytes .../Marlin-embedded/Flash/preferences.json | 149 + .../Printer3D/RepRap/Flash/preferences.json | 75 + .../Printer3D/Repetier/Flash/preferences.json | 102 + server/public/capabilities.html | 30 + server/public/config.yaml | 98 + server/public/config.yml | 230 + server/public/dispatch.html | 28 + server/public/download.html | 60 + server/public/download.html.gz | Bin 0 -> 578 bytes server/public/favicon.ico | Bin 0 -> 1150 bytes server/public/image.jpg | Bin 0 -> 282686 bytes server/public/index.html | 1 + server/public/index.html.gz | Bin 0 -> 38371 bytes server/public/lang-fr.json | 28 + server/public/lang-zh_cn.json.gz | Bin 0 -> 87 bytes server/public/modal.html | 32 + server/public/my config.yaml | 96 + server/public/preferences.json | 59 + server/public/query.html | 33 + server/public/sound.html | 14 + server/public/terminal.html | 49 + server/public/theme-dark.gz | Bin 0 -> 272 bytes server/public/theme-purple | 41 + server/public/toast.html | 14 + server/public/translate.html | 34 + server/public/upload.html | 45 + server/public/zh_cn.json | 4 + sizetracker.txt | 38 + src/adapters/httpAdapter.js | 120 + src/adapters/index.js | 24 + src/areas/connection.js | 239 + src/areas/footer.js | 27 + src/areas/index.js | 416 + src/areas/informations.js | 33 + src/areas/main.js | 112 + src/areas/menu.js | 31 + src/components/App/index.js | 59 + src/components/App/version.js | 25 + src/components/Controls/Button.js | 54 + src/components/Controls/ButtonImg.js | 78 + src/components/Controls/CenterLeft.js | 45 + src/components/Controls/Field.js | 97 + src/components/Controls/FieldGroup.js | 44 + src/components/Controls/Fields/Boolean.js | 98 + src/components/Controls/Fields/FormGroup.js | 80 + src/components/Controls/Fields/IconSelect.js | 112 + src/components/Controls/Fields/Input.js | 365 + src/components/Controls/Fields/ItemsList.js | 414 + src/components/Controls/Fields/Label.js | 31 + src/components/Controls/Fields/Mask.js | 171 + src/components/Controls/Fields/PickUp.js | 104 + src/components/Controls/Fields/Select.js | 124 + src/components/Controls/Fields/Slider.js | 127 + src/components/Controls/Fields/def_macro.json | 8 + src/components/Controls/Fields/def_panel.json | 10 + .../Controls/Fields/def_polling.json | 6 + src/components/Controls/Fields/index.js | 44 + src/components/Controls/Loading.js | 31 + src/components/Controls/Modal.js | 38 + src/components/Controls/Progress.js | 67 + src/components/Controls/ScanAp.js | 113 + src/components/Controls/ScanPacksList.js | 169 + src/components/Controls/Toast.js | 31 + src/components/Controls/index.js | 44 + src/components/ExtraContent/index.js | 352 + src/components/Helpers/arrays.js | 179 + src/components/Helpers/components.js | 162 + src/components/Helpers/filters.js | 94 + src/components/Helpers/html.js | 29 + src/components/Helpers/http.js | 76 + src/components/Helpers/index.js | 85 + src/components/Helpers/strings.js | 107 + src/components/Helpers/time.js | 36 + src/components/Images/icons.js | 241 + src/components/Images/index.js | 22 + src/components/Images/logo.js | 91 + src/components/Modal/confirmModal.js | 41 + src/components/Modal/genericModal.js | 84 + src/components/Modal/index.js | 99 + src/components/Modal/keepConnectedModal.js | 80 + src/components/Modal/logginModal.js | 152 + src/components/Modal/progressModal.js | 53 + src/components/Navbar/index.js | 318 + src/components/Panels/Charts.js | 486 + src/components/Panels/ExtraControls.js | 367 + src/components/Panels/ExtraPanel.js | 62 + src/components/Panels/Extruders.js | 300 + src/components/Panels/Files.js | 944 + src/components/Panels/Jog.js | 1804 + src/components/Panels/JogCNC.js | 800 + src/components/Panels/JogPlotter.js | 711 + src/components/Panels/LaserCNC.js | 438 + src/components/Panels/Macros.js | 189 + src/components/Panels/Notifications.js | 206 + src/components/Panels/OverridesCNC.js | 254 + src/components/Panels/ProbeCNC.js | 590 + src/components/Panels/SpindleCNC.js | 401 + src/components/Panels/Status.js | 286 + src/components/Panels/StatusCNC.js | 397 + src/components/Panels/Temperatures.js | 390 + src/components/Panels/Terminal.js | 319 + src/components/Panels/index.js | 49 + src/components/Router/index.js | 216 + src/components/TabBar/index.js | 92 + src/components/Toast/index.js | 75 + src/components/Translations/index.js | 66 + src/components/Translations/languages.json | 5 + src/contexts/DatasContext.js | 102 + src/contexts/HttpQueueContext.js | 152 + src/contexts/RouterContext.js | 53 + src/contexts/SettingsContext.js | 84 + src/contexts/UiContext.js | 389 + src/contexts/WsContext.js | 246 + src/contexts/index.js | 50 + src/hooks/index.js | 24 + src/hooks/useHttpQueue.js | 138 + src/hooks/useSettings.js | 477 + src/index.html | 12 + src/index.js | 27 + src/pages/about/index.js | 456 + src/pages/dashboard/index.js | 421 + src/pages/extrapages/index.js | 36 + src/pages/settings/index.js | 58 + src/style/_mixins.scss | 10 + src/style/_spectre-exp.scss | 14 + src/style/_spectre-icons.scss | 6 + src/style/_spectre.scss | 45 + src/style/_variables.scss | 127 + src/style/components/_app.scss | 100 + src/style/components/_control.scss | 530 + src/style/components/_media.scss | 17 + src/style/components/_menu.scss | 51 + src/style/components/_navbar.scss | 26 + src/style/components/_panel.scss | 59 + src/style/index.scss | 16 + src/tabs/features/exportHelper.js | 62 + src/tabs/features/formatHelper.js | 98 + src/tabs/features/importHelper.js | 69 + src/tabs/features/index.js | 657 + src/tabs/interface/exportHelper.js | 92 + src/tabs/interface/importHelper.js | 247 + src/tabs/interface/index.js | 603 + src/tabs/machine/index.js | 28 + src/targets/CNC/Controls/EmergencyButton.js | 73 + src/targets/CNC/Controls/index.js | 23 + src/targets/CNC/GRBL/CMD-source.js | 90 + .../CNC/GRBL/Controls/BackgroundContainer.js | 45 + .../CNC/GRBL/Controls/InformationsControls.js | 40 + .../CNC/GRBL/Controls/QuickButtonsBar.js | 31 + src/targets/CNC/GRBL/Controls/index.js | 24 + src/targets/CNC/GRBL/DIRECTSD-source.js | 118 + src/targets/CNC/GRBL/MachineSettings.js | 264 + src/targets/CNC/GRBL/TargetContext.js | 383 + src/targets/CNC/GRBL/files.js | 101 + src/targets/CNC/GRBL/filters.js | 404 + src/targets/CNC/GRBL/gcode_parser_modes.js | 58 + src/targets/CNC/GRBL/icons.js | 86 + src/targets/CNC/GRBL/index.js | 100 + src/targets/CNC/GRBL/panels.js | 45 + src/targets/CNC/GRBL/preferences.json | 357 + src/targets/CNC/GRBL/processor.js | 138 + src/targets/CNC/GRBL/realCommandsTable.js | 45 + src/targets/CNC/GRBL/stream.js | 35 + src/targets/CNC/GRBL/style/index.scss | 1 + src/targets/CNC/GRBL/translations/en.json | 52 + src/targets/CNC/GRBL/variablesTable.js | 41 + src/targets/CNC/grblHAL/CMD-source.js | 90 + .../grblHAL/Controls/BackgroundContainer.js | 75 + .../grblHAL/Controls/InformationsControls.js | 40 + .../CNC/grblHAL/Controls/QuickButtonsBar.js | 31 + src/targets/CNC/grblHAL/Controls/index.js | 24 + src/targets/CNC/grblHAL/DIRECTSD-source.js | 118 + src/targets/CNC/grblHAL/MachineSettings.js | 264 + src/targets/CNC/grblHAL/TargetContext.js | 415 + src/targets/CNC/grblHAL/files.js | 101 + src/targets/CNC/grblHAL/filters.js | 419 + src/targets/CNC/grblHAL/gcode_parser_modes.js | 97 + src/targets/CNC/grblHAL/icons.js | 86 + src/targets/CNC/grblHAL/index.js | 102 + src/targets/CNC/grblHAL/logo.js | 100 + src/targets/CNC/grblHAL/panels.js | 45 + src/targets/CNC/grblHAL/preferences.json | 503 + src/targets/CNC/grblHAL/processor.js | 138 + src/targets/CNC/grblHAL/realCommandsTable.js | 51 + src/targets/CNC/grblHAL/stream.js | 35 + src/targets/CNC/grblHAL/style/index.scss | 1 + src/targets/CNC/grblHAL/translations/en.json | 52 + src/targets/CNC/grblHAL/variablesTable.js | 53 + src/targets/CNC/preferences.json | 215 + src/targets/CNC/style/_index.scss | 162 + src/targets/CNC/translations/en.json | 184 + src/targets/FLASH-source.js | 114 + .../Plotter/Controls/BackgroundContainer.js | 43 + .../Plotter/Controls/EmergencyButton.js | 72 + src/targets/Plotter/Controls/index.js | 24 + src/targets/Plotter/HP-GL/CMD-source.js | 90 + .../HP-GL/Controls/InformationsControls.js | 32 + .../Plotter/HP-GL/Controls/QuickButtonsBar.js | 31 + src/targets/Plotter/HP-GL/Controls/index.js | 24 + src/targets/Plotter/HP-GL/DIRECTSD-source.js | 118 + src/targets/Plotter/HP-GL/MachineSettings.js | 24 + src/targets/Plotter/HP-GL/TargetContext.js | 192 + src/targets/Plotter/HP-GL/files.js | 101 + src/targets/Plotter/HP-GL/filters.js | 92 + src/targets/Plotter/HP-GL/icons.js | 25 + src/targets/Plotter/HP-GL/index.js | 108 + src/targets/Plotter/HP-GL/panels.js | 35 + src/targets/Plotter/HP-GL/preferences.json | 164 + src/targets/Plotter/HP-GL/processor.js | 138 + .../Plotter/HP-GL/realCommandsTable.js | 25 + src/targets/Plotter/HP-GL/stream.js | 35 + src/targets/Plotter/HP-GL/style/index.scss | 1 + .../Plotter/HP-GL/translations/en.json | 27 + src/targets/Plotter/HP-GL/variablesTable.js | 41 + src/targets/Plotter/preferences.json | 101 + src/targets/Plotter/style/_index.scss | 96 + src/targets/Plotter/translations/en.json | 1 + .../Printer3D/Controls/BackgroundContainer.js | 43 + .../Printer3D/Controls/EmergencyButton.js | 66 + src/targets/Printer3D/Controls/index.js | 24 + .../Printer3D/Marlin-embedded/CMD-source.js | 118 + .../Controls/InformationsControls.js | 40 + .../Controls/MixedExtrudersControl.js | 411 + .../Controls/QuickButtonsBar.js | 31 + .../Marlin-embedded/Controls/index.js | 30 + .../Marlin-embedded/DIRECTSD-source.js | 122 + .../Marlin-embedded/MachineSettings.js | 370 + .../Printer3D/Marlin-embedded/SD-source.js | 143 + .../Marlin-embedded/TFT-SD-source.js | 224 + .../Marlin-embedded/TFT-USB-source.js | 224 + .../Marlin-embedded/TargetContext.js | 376 + .../Printer3D/Marlin-embedded/files.js | 116 + .../Printer3D/Marlin-embedded/filters.js | 321 + .../Printer3D/Marlin-embedded/icons.js | 110 + .../Printer3D/Marlin-embedded/index.js | 99 + src/targets/Printer3D/Marlin-embedded/logo.js | 95 + .../Printer3D/Marlin-embedded/panels.js | 45 + .../Marlin-embedded/preferences.json | 216 + .../Printer3D/Marlin-embedded/processor.js | 144 + .../Printer3D/Marlin-embedded/stream.js | 40 + .../Marlin-embedded/style/index.scss | 50 + .../Marlin-embedded/translations/en.json | 3 + .../Marlin-embedded/variablesTable.js | 24 + src/targets/Printer3D/Marlin/CMD-source.js | 124 + .../Marlin/Controls/InformationsControls.js | 40 + .../Marlin/Controls/MixedExtrudersControl.js | 411 + .../Marlin/Controls/QuickButtonsBar.js | 31 + .../Printer3D/Marlin/Controls/index.js | 30 + .../Printer3D/Marlin/DIRECTSD-source.js | 122 + .../Printer3D/Marlin/MachineSettings.js | 370 + src/targets/Printer3D/Marlin/SD-source.js | 167 + src/targets/Printer3D/Marlin/SDEXT-source.js | 166 + src/targets/Printer3D/Marlin/TFT-SD-source.js | 224 + .../Printer3D/Marlin/TFT-USB-source.js | 224 + src/targets/Printer3D/Marlin/TargetContext.js | 392 + src/targets/Printer3D/Marlin/files.js | 129 + src/targets/Printer3D/Marlin/filters.js | 360 + src/targets/Printer3D/Marlin/icons.js | 110 + src/targets/Printer3D/Marlin/index.js | 99 + src/targets/Printer3D/Marlin/panels.js | 45 + src/targets/Printer3D/Marlin/preferences.json | 258 + src/targets/Printer3D/Marlin/processor.js | 146 + src/targets/Printer3D/Marlin/stream.js | 37 + src/targets/Printer3D/Marlin/style/index.scss | 50 + .../Printer3D/Marlin/translations/en.json | 3 + .../Printer3D/Marlin/variablesTable.js | 24 + src/targets/Printer3D/Repetier/CMD-source.js | 130 + .../Repetier/Controls/InformationsControls.js | 40 + .../Controls/MixedExtrudersControl.js | 417 + .../Repetier/Controls/QuickButtonsBar.js | 31 + .../Printer3D/Repetier/Controls/index.js | 30 + .../Printer3D/Repetier/DIRECTSD-source.js | 113 + .../Printer3D/Repetier/MachineSettings.js | 367 + src/targets/Printer3D/Repetier/SD-source.js | 151 + .../Printer3D/Repetier/TFT-SD-source.js | 224 + .../Printer3D/Repetier/TFT-USB-source.js | 224 + .../Printer3D/Repetier/TargetContext.js | 344 + src/targets/Printer3D/Repetier/files.js | 116 + src/targets/Printer3D/Repetier/filters.js | 358 + src/targets/Printer3D/Repetier/icons.js | 110 + src/targets/Printer3D/Repetier/index.js | 99 + src/targets/Printer3D/Repetier/panels.js | 45 + .../Printer3D/Repetier/preferences.json | 231 + src/targets/Printer3D/Repetier/processor.js | 149 + src/targets/Printer3D/Repetier/stream.js | 40 + .../Printer3D/Repetier/style/index.scss | 50 + .../Printer3D/Repetier/translations/en.json | 3 + .../Printer3D/Repetier/variablesTable.js | 24 + .../Printer3D/Smoothieware/CMD-source.js | 178 + .../Controls/InformationsControls.js | 40 + .../Controls/MixedExtrudersControl.js | 29 + .../Smoothieware/Controls/QuickButtonsBar.js | 31 + .../Printer3D/Smoothieware/Controls/index.js | 30 + .../Printer3D/Smoothieware/DIRECTSD-source.js | 113 + .../Smoothieware/DIRECTSDEXT-source.js | 113 + .../Printer3D/Smoothieware/MachineSettings.js | 609 + .../Printer3D/Smoothieware/SD-source.js | 154 + .../Printer3D/Smoothieware/SDEXT-source.js | 129 + .../Printer3D/Smoothieware/TFT-SD-source.js | 224 + .../Printer3D/Smoothieware/TFT-USB-source.js | 224 + .../Printer3D/Smoothieware/TargetContext.js | 341 + src/targets/Printer3D/Smoothieware/files.js | 142 + src/targets/Printer3D/Smoothieware/filters.js | 289 + src/targets/Printer3D/Smoothieware/icons.js | 110 + src/targets/Printer3D/Smoothieware/index.js | 99 + src/targets/Printer3D/Smoothieware/panels.js | 45 + .../Printer3D/Smoothieware/preferences.json | 234 + .../Printer3D/Smoothieware/processor.js | 146 + src/targets/Printer3D/Smoothieware/stream.js | 38 + .../Printer3D/Smoothieware/style/index.scss | 1 + .../Smoothieware/translations/en.json | 7 + .../Printer3D/Smoothieware/variablesTable.js | 24 + src/targets/Printer3D/icon.js | 99 + src/targets/Printer3D/preferences.json | 565 + src/targets/Printer3D/style/_index.scss | 320 + src/targets/Printer3D/translations/en.json | 116 + .../SandTable/Controls/BackgroundContainer.js | 43 + .../SandTable/Controls/EmergencyButton.js | 72 + src/targets/SandTable/Controls/index.js | 24 + src/targets/SandTable/GRBL/CMD-source.js | 90 + .../GRBL/Controls/InformationsControls.js | 32 + .../GRBL/Controls/QuickButtonsBar.js | 31 + src/targets/SandTable/GRBL/Controls/index.js | 24 + src/targets/SandTable/GRBL/DIRECTSD-source.js | 118 + src/targets/SandTable/GRBL/MachineSettings.js | 264 + src/targets/SandTable/GRBL/TargetContext.js | 382 + src/targets/SandTable/GRBL/files.js | 101 + src/targets/SandTable/GRBL/filters.js | 404 + .../SandTable/GRBL/gcode_parser_modes.js | 58 + src/targets/SandTable/GRBL/icons.js | 86 + src/targets/SandTable/GRBL/index.js | 100 + src/targets/SandTable/GRBL/panels.js | 35 + src/targets/SandTable/GRBL/preferences.json | 229 + src/targets/SandTable/GRBL/processor.js | 138 + .../SandTable/GRBL/realCommandsTable.js | 45 + src/targets/SandTable/GRBL/stream.js | 35 + src/targets/SandTable/GRBL/style/index.scss | 1 + .../SandTable/GRBL/translations/en.json | 89 + src/targets/SandTable/GRBL/variablesTable.js | 41 + src/targets/SandTable/preferences.json | 152 + src/targets/SandTable/style/_index.scss | 81 + src/targets/SandTable/translations/en.json | 4 + src/targets/helpers.js | 37 + src/targets/index.js | 83 + src/targets/preferences.json | 229 + src/targets/translations/en.json | 385 + themes_samples/theme-dark.gz | Bin 0 -> 272 bytes themes_samples/theme-mnj | 171 + themes_samples/theme-purple | 41 + webui.todo | 3 + www/css/bootstrap.css | 6175 ---- www/css/config.json | 415 - www/css/menu.css | 88 - www/css/modaldlg.css | 157 - www/css/style.css | 427 - www/css/tabs.css | 57 - www/css/wizard.css | 94 - www/docs/TEST.html | 928 - www/docs/dropsdown.html | 71 - www/docs/files.htm | 65 - www/docs/findattribut.js | 6 - www/docs/libglyph.html | 906 - www/docs/library.html | 106 - www/docs/modal.html | 188 - www/docs/nav.html | 43 - www/docs/roundtab-index.html | 146 - www/docs/smoothie.js | 805 - www/docs/smoothie2.js | 821 - www/docs/tabs.html | 102 - www/images/jogdial.svg | 138 - www/images/jogdial1.svg | 234 - www/images/jogdial2.svg | 110 - www/images/printer.tpl.htm | 434 - www/images/repetier.htm | 840 - www/index.html | 120 - www/js/SPIFFSdlg.js | 261 - www/js/UIdisableddlg.js | 9 - www/js/alertdlg.js | 10 - www/js/app.js | 796 - www/js/camera.js | 54 - www/js/commands.js | 138 - www/js/config.js | 596 - www/js/confirmdlg.js | 10 - www/js/connectdlg.js | 138 - www/js/controls.js | 324 - www/js/creditsdlg.js | 6 - www/js/custom.js | 30 - www/js/dropmenu.js | 36 - www/js/extruders.js | 118 - www/js/files.js | 867 - www/js/grbl.js | 592 - www/js/http.js | 249 - www/js/icons.js | 173 - www/js/inputdlg.js | 22 - www/js/language/de.js | 375 - www/js/language/en.js | 66 - www/js/language/es.js | 375 - www/js/language/fr.js | 373 - www/js/language/hu.js | 427 - www/js/language/it.js | 375 - www/js/language/ja.js | 428 - www/js/language/lang.tpl | 424 - www/js/language/pl.js | 377 - www/js/language/ptbr.js | 432 - www/js/language/ru.js | 374 - www/js/language/tr.js | 427 - www/js/language/uk.js | 374 - www/js/language/zh_CN.js | 427 - www/js/language/zh_TW.js | 422 - www/js/localstorage.js | 33 - www/js/logindlg.js | 113 - www/js/macrodlg.js | 309 - www/js/modaldlg.js | 52 - www/js/passworddlg.js | 49 - www/js/preferencesdlg.js | 1341 - www/js/printercmd.js | 58 - www/js/restartdlg.js | 37 - www/js/scanwifidlg.js | 97 - www/js/settings.js | 653 - www/js/setup.js | 250 - www/js/smoothie.js | 834 - www/js/statusdlg.js | 91 - www/js/tabs.js | 17 - www/js/temperatures.js | 413 - www/js/translate.js | 132 - www/js/updatedlg.js | 125 - www/js/wizard.js | 16 - www/sub/SPIFFSdlg.html | 98 - www/sub/UIdisableddlg.html | 19 - www/sub/alertdlg.html | 30 - www/sub/cameratab.html | 62 - www/sub/commandpanel.html | 42 - www/sub/configtab.html | 84 - www/sub/confirmdlg.html | 36 - www/sub/connectdlg.html | 27 - www/sub/controlspanel.html | 258 - www/sub/creditsdlg.html | 26 - www/sub/dashtab.html | 12 - www/sub/extruderpanel.html | 245 - www/sub/files.html | 112 - www/sub/grblpanel.html | 563 - www/sub/inputdlg.html | 32 - www/sub/logindlg.html | 38 - www/sub/macrodlg.html | 50 - www/sub/navbar.html | 164 - www/sub/passworddlg.html | 53 - www/sub/preferencesdlg.html | 750 - www/sub/restartdlg.html | 24 - www/sub/scanwifidlg.html | 58 - www/sub/settingstab.html | 85 - www/sub/setupdlg.html | 89 - www/sub/statusdlg.html | 50 - www/sub/tab_bar.html | 34 - www/sub/temperaturepanel.html | 250 - www/sub/updatedlg.html | 44 - www/tools/includes.js | 148 - 582 files changed, 77871 insertions(+), 45962 deletions(-) delete mode 100644 .DS_Store delete mode 100644 .all-contributorsrc delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/question.md delete mode 100644 .github/workflows/greetings.yml delete mode 100644 .github/workflows/lock.yml create mode 100644 .nvmrc create mode 100644 .prettierrc delete mode 100644 .travis.yml delete mode 100644 Changelog.txt create mode 100644 ESP3D-WebUI-features.xls create mode 100644 Features.md create mode 100644 Memo/Commands.md create mode 100644 Memo/ESP3D [ESP400] format.md create mode 100644 Memo/ESP3D [ESP401] format.md create mode 100644 Memo/ESP3D [ESP410] format.md create mode 100644 Memo/ESP3D [ESP800] format.md create mode 100644 Memo/Handlers.md create mode 100644 Memo/TargetFW.md create mode 100644 Memo/data structure.odt create mode 100644 Memo/languagepack.md create mode 100644 Memo/realtimecmd.md create mode 100644 Memo/variablesList.md create mode 100644 Memo/websocket.md create mode 100644 Notes.txt delete mode 100644 build.bat delete mode 100644 buildLanguagePacks.bat delete mode 100755 buildLanguagePacks.sh create mode 100644 config/buildtemplate.js create mode 100644 config/checkpack.js create mode 100644 config/pack.js create mode 100644 config/server.js create mode 100644 config/targets/CNC/GRBL/index.js create mode 100644 config/targets/CNC/grblHAL/index.js create mode 100644 config/targets/Plotter/HP-GL/index.js create mode 100644 config/targets/Printer3D/Marlin-embedded/index.js create mode 100644 config/targets/Printer3D/Marlin/index.js create mode 100644 config/targets/Printer3D/Repetier/index.js create mode 100644 config/targets/Printer3D/Smoothieware/index.js create mode 100644 config/targets/SandTable/GRBL/index.js create mode 100644 config/webpack.dev.js create mode 100644 config/webpack.prod.js create mode 100644 dist/CNC/GRBL/index.html.gz create mode 100644 dist/CNC/GRBLHal/index.html.gz create mode 100644 dist/Plotter/HP-GL/index.html.gz create mode 100644 dist/Printer3D/Marlin-embedded/index.html.gz create mode 100644 dist/Printer3D/Marlin/index.html.gz create mode 100644 dist/Printer3D/Repetier/index.html.gz create mode 100644 dist/Printer3D/Smoothieware/index.html.gz create mode 100644 dist/SandTable/GRBL/index.html.gz delete mode 100644 docs/images/ESP3D-UPLOAD1a.png delete mode 100644 docs/images/ESP3D-UPLOAD1b.png delete mode 100644 docs/images/ESP3D-UPLOAD2.png create mode 100644 esp3d.todo create mode 100644 extensions_samples/API.md create mode 100644 extensions_samples/capabilities.html create mode 100644 extensions_samples/dispatch.html create mode 100644 extensions_samples/download.html create mode 100644 extensions_samples/modal.html create mode 100644 extensions_samples/query.html create mode 100644 extensions_samples/sound.html create mode 100644 extensions_samples/terminal.html create mode 100644 extensions_samples/toast.html create mode 100644 extensions_samples/translate.html create mode 100644 extensions_samples/upload.html delete mode 100644 gulpfile.js delete mode 100644 images/Camera.PNG delete mode 100644 images/Commands.PNG delete mode 100644 images/ESP3D1.PNG delete mode 100644 images/Full1.PNG delete mode 100644 images/Full2.PNG delete mode 100644 images/Macro.PNG delete mode 100644 images/Repetier.PNG delete mode 100644 images/Restart.PNG delete mode 100644 images/SD-Dir.PNG delete mode 100644 images/SD1.5.PNG delete mode 100644 images/SD1.PNG delete mode 100644 images/SD2.PNG delete mode 100644 images/SPIFFS.PNG delete mode 100644 images/WebUpdate.PNG delete mode 100644 images/controls.PNG create mode 100644 images/esp3d.svg delete mode 100644 images/esxtruders.PNG create mode 100644 images/logo.svg create mode 100644 images/logob&W.svg delete mode 100644 images/smoothieware.PNG delete mode 100644 images/sponsors-supporters/FYSETC/LOGO.png delete mode 100644 images/sponsors-supporters/FYSETC/fysetc2.svg delete mode 100644 images/sponsors-supporters/MKS/mksmakerbase.jpg delete mode 100644 images/sponsors-supporters/PanucattDevices/Panucatt.jpg delete mode 100644 images/sponsors-supporters/sponsor.PNG delete mode 100644 images/status.PNG delete mode 100644 images/temperatures.PNG delete mode 100644 index.html.gz create mode 100644 languages/cncgrblhalpack/en.json create mode 100644 languages/cncgrblpack/en.json delete mode 100644 languages/de/index.html.gz delete mode 100644 languages/en/index.html.gz delete mode 100644 languages/es/index.html.gz delete mode 100644 languages/fr/index.html.gz delete mode 100644 languages/grbl/index.html.gz delete mode 100644 languages/hu/index.html.gz delete mode 100644 languages/it/index.html.gz delete mode 100644 languages/ja/index.html.gz delete mode 100644 languages/multi/index.html.gz delete mode 100644 languages/pl/index.html.gz create mode 100644 languages/printerpack/en.json delete mode 100644 languages/ptbr/index.html.gz delete mode 100644 languages/ru/index.html.gz create mode 100644 languages/sandtablepack/en.json delete mode 100644 languages/tr/index.html.gz delete mode 100644 languages/uk/index.html.gz delete mode 100644 languages/zh_CN/index.html.gz delete mode 100644 languages/zh_TW/index.html.gz create mode 100644 server/CNC/GRBL/Flash/index.html.gz create mode 100644 server/CNC/GRBL/Flash/preferences.json rename favicon.ico => server/CNC/grblHAL/Flash/favicon.ico (100%) create mode 100644 server/CNC/grblHAL/Flash/www/favicon.ico create mode 100644 server/CNC/grblHAL/Flash/www/lang-fr.json create mode 100644 server/CNC/grblHAL/Flash/www/lang-zh_cn.json.gz create mode 100644 server/CNC/grblHAL/Flash/www/theme-dark.gz create mode 100644 server/Printer3D/Marlin-embedded/Flash/preferences.json create mode 100644 server/Printer3D/RepRap/Flash/preferences.json create mode 100644 server/Printer3D/Repetier/Flash/preferences.json create mode 100644 server/public/capabilities.html create mode 100644 server/public/config.yaml create mode 100644 server/public/config.yml create mode 100644 server/public/dispatch.html create mode 100644 server/public/download.html create mode 100644 server/public/download.html.gz create mode 100644 server/public/favicon.ico create mode 100644 server/public/image.jpg create mode 100644 server/public/index.html create mode 100644 server/public/index.html.gz create mode 100644 server/public/lang-fr.json create mode 100644 server/public/lang-zh_cn.json.gz create mode 100644 server/public/modal.html create mode 100644 server/public/my config.yaml create mode 100644 server/public/preferences.json create mode 100644 server/public/query.html create mode 100644 server/public/sound.html create mode 100644 server/public/terminal.html create mode 100644 server/public/theme-dark.gz create mode 100644 server/public/theme-purple create mode 100644 server/public/toast.html create mode 100644 server/public/translate.html create mode 100644 server/public/upload.html create mode 100644 server/public/zh_cn.json create mode 100644 sizetracker.txt create mode 100644 src/adapters/httpAdapter.js create mode 100644 src/adapters/index.js create mode 100644 src/areas/connection.js create mode 100644 src/areas/footer.js create mode 100644 src/areas/index.js create mode 100644 src/areas/informations.js create mode 100644 src/areas/main.js create mode 100644 src/areas/menu.js create mode 100644 src/components/App/index.js create mode 100644 src/components/App/version.js create mode 100644 src/components/Controls/Button.js create mode 100644 src/components/Controls/ButtonImg.js create mode 100644 src/components/Controls/CenterLeft.js create mode 100644 src/components/Controls/Field.js create mode 100644 src/components/Controls/FieldGroup.js create mode 100644 src/components/Controls/Fields/Boolean.js create mode 100644 src/components/Controls/Fields/FormGroup.js create mode 100644 src/components/Controls/Fields/IconSelect.js create mode 100644 src/components/Controls/Fields/Input.js create mode 100644 src/components/Controls/Fields/ItemsList.js create mode 100644 src/components/Controls/Fields/Label.js create mode 100644 src/components/Controls/Fields/Mask.js create mode 100644 src/components/Controls/Fields/PickUp.js create mode 100644 src/components/Controls/Fields/Select.js create mode 100644 src/components/Controls/Fields/Slider.js create mode 100644 src/components/Controls/Fields/def_macro.json create mode 100644 src/components/Controls/Fields/def_panel.json create mode 100644 src/components/Controls/Fields/def_polling.json create mode 100644 src/components/Controls/Fields/index.js create mode 100644 src/components/Controls/Loading.js create mode 100644 src/components/Controls/Modal.js create mode 100644 src/components/Controls/Progress.js create mode 100644 src/components/Controls/ScanAp.js create mode 100644 src/components/Controls/ScanPacksList.js create mode 100644 src/components/Controls/Toast.js create mode 100644 src/components/Controls/index.js create mode 100644 src/components/ExtraContent/index.js create mode 100644 src/components/Helpers/arrays.js create mode 100644 src/components/Helpers/components.js create mode 100644 src/components/Helpers/filters.js create mode 100644 src/components/Helpers/html.js create mode 100644 src/components/Helpers/http.js create mode 100644 src/components/Helpers/index.js create mode 100644 src/components/Helpers/strings.js create mode 100644 src/components/Helpers/time.js create mode 100644 src/components/Images/icons.js create mode 100644 src/components/Images/index.js create mode 100644 src/components/Images/logo.js create mode 100644 src/components/Modal/confirmModal.js create mode 100644 src/components/Modal/genericModal.js create mode 100644 src/components/Modal/index.js create mode 100644 src/components/Modal/keepConnectedModal.js create mode 100644 src/components/Modal/logginModal.js create mode 100644 src/components/Modal/progressModal.js create mode 100644 src/components/Navbar/index.js create mode 100644 src/components/Panels/Charts.js create mode 100644 src/components/Panels/ExtraControls.js create mode 100644 src/components/Panels/ExtraPanel.js create mode 100644 src/components/Panels/Extruders.js create mode 100644 src/components/Panels/Files.js create mode 100644 src/components/Panels/Jog.js create mode 100644 src/components/Panels/JogCNC.js create mode 100644 src/components/Panels/JogPlotter.js create mode 100644 src/components/Panels/LaserCNC.js create mode 100644 src/components/Panels/Macros.js create mode 100644 src/components/Panels/Notifications.js create mode 100644 src/components/Panels/OverridesCNC.js create mode 100644 src/components/Panels/ProbeCNC.js create mode 100644 src/components/Panels/SpindleCNC.js create mode 100644 src/components/Panels/Status.js create mode 100644 src/components/Panels/StatusCNC.js create mode 100644 src/components/Panels/Temperatures.js create mode 100644 src/components/Panels/Terminal.js create mode 100644 src/components/Panels/index.js create mode 100644 src/components/Router/index.js create mode 100644 src/components/TabBar/index.js create mode 100644 src/components/Toast/index.js create mode 100644 src/components/Translations/index.js create mode 100644 src/components/Translations/languages.json create mode 100644 src/contexts/DatasContext.js create mode 100644 src/contexts/HttpQueueContext.js create mode 100644 src/contexts/RouterContext.js create mode 100644 src/contexts/SettingsContext.js create mode 100644 src/contexts/UiContext.js create mode 100644 src/contexts/WsContext.js create mode 100644 src/contexts/index.js create mode 100644 src/hooks/index.js create mode 100644 src/hooks/useHttpQueue.js create mode 100644 src/hooks/useSettings.js create mode 100644 src/index.html create mode 100644 src/index.js create mode 100644 src/pages/about/index.js create mode 100644 src/pages/dashboard/index.js create mode 100644 src/pages/extrapages/index.js create mode 100644 src/pages/settings/index.js create mode 100644 src/style/_mixins.scss create mode 100644 src/style/_spectre-exp.scss create mode 100644 src/style/_spectre-icons.scss create mode 100644 src/style/_spectre.scss create mode 100644 src/style/_variables.scss create mode 100644 src/style/components/_app.scss create mode 100644 src/style/components/_control.scss create mode 100644 src/style/components/_media.scss create mode 100644 src/style/components/_menu.scss create mode 100644 src/style/components/_navbar.scss create mode 100644 src/style/components/_panel.scss create mode 100644 src/style/index.scss create mode 100644 src/tabs/features/exportHelper.js create mode 100644 src/tabs/features/formatHelper.js create mode 100644 src/tabs/features/importHelper.js create mode 100644 src/tabs/features/index.js create mode 100644 src/tabs/interface/exportHelper.js create mode 100644 src/tabs/interface/importHelper.js create mode 100644 src/tabs/interface/index.js create mode 100644 src/tabs/machine/index.js create mode 100644 src/targets/CNC/Controls/EmergencyButton.js create mode 100644 src/targets/CNC/Controls/index.js create mode 100644 src/targets/CNC/GRBL/CMD-source.js create mode 100644 src/targets/CNC/GRBL/Controls/BackgroundContainer.js create mode 100644 src/targets/CNC/GRBL/Controls/InformationsControls.js create mode 100644 src/targets/CNC/GRBL/Controls/QuickButtonsBar.js create mode 100644 src/targets/CNC/GRBL/Controls/index.js create mode 100644 src/targets/CNC/GRBL/DIRECTSD-source.js create mode 100644 src/targets/CNC/GRBL/MachineSettings.js create mode 100644 src/targets/CNC/GRBL/TargetContext.js create mode 100644 src/targets/CNC/GRBL/files.js create mode 100644 src/targets/CNC/GRBL/filters.js create mode 100644 src/targets/CNC/GRBL/gcode_parser_modes.js create mode 100644 src/targets/CNC/GRBL/icons.js create mode 100644 src/targets/CNC/GRBL/index.js create mode 100644 src/targets/CNC/GRBL/panels.js create mode 100644 src/targets/CNC/GRBL/preferences.json create mode 100644 src/targets/CNC/GRBL/processor.js create mode 100644 src/targets/CNC/GRBL/realCommandsTable.js create mode 100644 src/targets/CNC/GRBL/stream.js create mode 100644 src/targets/CNC/GRBL/style/index.scss create mode 100644 src/targets/CNC/GRBL/translations/en.json create mode 100644 src/targets/CNC/GRBL/variablesTable.js create mode 100644 src/targets/CNC/grblHAL/CMD-source.js create mode 100644 src/targets/CNC/grblHAL/Controls/BackgroundContainer.js create mode 100644 src/targets/CNC/grblHAL/Controls/InformationsControls.js create mode 100644 src/targets/CNC/grblHAL/Controls/QuickButtonsBar.js create mode 100644 src/targets/CNC/grblHAL/Controls/index.js create mode 100644 src/targets/CNC/grblHAL/DIRECTSD-source.js create mode 100644 src/targets/CNC/grblHAL/MachineSettings.js create mode 100644 src/targets/CNC/grblHAL/TargetContext.js create mode 100644 src/targets/CNC/grblHAL/files.js create mode 100644 src/targets/CNC/grblHAL/filters.js create mode 100644 src/targets/CNC/grblHAL/gcode_parser_modes.js create mode 100644 src/targets/CNC/grblHAL/icons.js create mode 100644 src/targets/CNC/grblHAL/index.js create mode 100644 src/targets/CNC/grblHAL/logo.js create mode 100644 src/targets/CNC/grblHAL/panels.js create mode 100644 src/targets/CNC/grblHAL/preferences.json create mode 100644 src/targets/CNC/grblHAL/processor.js create mode 100644 src/targets/CNC/grblHAL/realCommandsTable.js create mode 100644 src/targets/CNC/grblHAL/stream.js create mode 100644 src/targets/CNC/grblHAL/style/index.scss create mode 100644 src/targets/CNC/grblHAL/translations/en.json create mode 100644 src/targets/CNC/grblHAL/variablesTable.js create mode 100644 src/targets/CNC/preferences.json create mode 100644 src/targets/CNC/style/_index.scss create mode 100644 src/targets/CNC/translations/en.json create mode 100644 src/targets/FLASH-source.js create mode 100644 src/targets/Plotter/Controls/BackgroundContainer.js create mode 100644 src/targets/Plotter/Controls/EmergencyButton.js create mode 100644 src/targets/Plotter/Controls/index.js create mode 100644 src/targets/Plotter/HP-GL/CMD-source.js create mode 100644 src/targets/Plotter/HP-GL/Controls/InformationsControls.js create mode 100644 src/targets/Plotter/HP-GL/Controls/QuickButtonsBar.js create mode 100644 src/targets/Plotter/HP-GL/Controls/index.js create mode 100644 src/targets/Plotter/HP-GL/DIRECTSD-source.js create mode 100644 src/targets/Plotter/HP-GL/MachineSettings.js create mode 100644 src/targets/Plotter/HP-GL/TargetContext.js create mode 100644 src/targets/Plotter/HP-GL/files.js create mode 100644 src/targets/Plotter/HP-GL/filters.js create mode 100644 src/targets/Plotter/HP-GL/icons.js create mode 100644 src/targets/Plotter/HP-GL/index.js create mode 100644 src/targets/Plotter/HP-GL/panels.js create mode 100644 src/targets/Plotter/HP-GL/preferences.json create mode 100644 src/targets/Plotter/HP-GL/processor.js create mode 100644 src/targets/Plotter/HP-GL/realCommandsTable.js create mode 100644 src/targets/Plotter/HP-GL/stream.js create mode 100644 src/targets/Plotter/HP-GL/style/index.scss create mode 100644 src/targets/Plotter/HP-GL/translations/en.json create mode 100644 src/targets/Plotter/HP-GL/variablesTable.js create mode 100644 src/targets/Plotter/preferences.json create mode 100644 src/targets/Plotter/style/_index.scss create mode 100644 src/targets/Plotter/translations/en.json create mode 100644 src/targets/Printer3D/Controls/BackgroundContainer.js create mode 100644 src/targets/Printer3D/Controls/EmergencyButton.js create mode 100644 src/targets/Printer3D/Controls/index.js create mode 100644 src/targets/Printer3D/Marlin-embedded/CMD-source.js create mode 100644 src/targets/Printer3D/Marlin-embedded/Controls/InformationsControls.js create mode 100644 src/targets/Printer3D/Marlin-embedded/Controls/MixedExtrudersControl.js create mode 100644 src/targets/Printer3D/Marlin-embedded/Controls/QuickButtonsBar.js create mode 100644 src/targets/Printer3D/Marlin-embedded/Controls/index.js create mode 100644 src/targets/Printer3D/Marlin-embedded/DIRECTSD-source.js create mode 100644 src/targets/Printer3D/Marlin-embedded/MachineSettings.js create mode 100644 src/targets/Printer3D/Marlin-embedded/SD-source.js create mode 100644 src/targets/Printer3D/Marlin-embedded/TFT-SD-source.js create mode 100644 src/targets/Printer3D/Marlin-embedded/TFT-USB-source.js create mode 100644 src/targets/Printer3D/Marlin-embedded/TargetContext.js create mode 100644 src/targets/Printer3D/Marlin-embedded/files.js create mode 100644 src/targets/Printer3D/Marlin-embedded/filters.js create mode 100644 src/targets/Printer3D/Marlin-embedded/icons.js create mode 100644 src/targets/Printer3D/Marlin-embedded/index.js create mode 100644 src/targets/Printer3D/Marlin-embedded/logo.js create mode 100644 src/targets/Printer3D/Marlin-embedded/panels.js create mode 100644 src/targets/Printer3D/Marlin-embedded/preferences.json create mode 100644 src/targets/Printer3D/Marlin-embedded/processor.js create mode 100644 src/targets/Printer3D/Marlin-embedded/stream.js create mode 100644 src/targets/Printer3D/Marlin-embedded/style/index.scss create mode 100644 src/targets/Printer3D/Marlin-embedded/translations/en.json create mode 100644 src/targets/Printer3D/Marlin-embedded/variablesTable.js create mode 100644 src/targets/Printer3D/Marlin/CMD-source.js create mode 100644 src/targets/Printer3D/Marlin/Controls/InformationsControls.js create mode 100644 src/targets/Printer3D/Marlin/Controls/MixedExtrudersControl.js create mode 100644 src/targets/Printer3D/Marlin/Controls/QuickButtonsBar.js create mode 100644 src/targets/Printer3D/Marlin/Controls/index.js create mode 100644 src/targets/Printer3D/Marlin/DIRECTSD-source.js create mode 100644 src/targets/Printer3D/Marlin/MachineSettings.js create mode 100644 src/targets/Printer3D/Marlin/SD-source.js create mode 100644 src/targets/Printer3D/Marlin/SDEXT-source.js create mode 100644 src/targets/Printer3D/Marlin/TFT-SD-source.js create mode 100644 src/targets/Printer3D/Marlin/TFT-USB-source.js create mode 100644 src/targets/Printer3D/Marlin/TargetContext.js create mode 100644 src/targets/Printer3D/Marlin/files.js create mode 100644 src/targets/Printer3D/Marlin/filters.js create mode 100644 src/targets/Printer3D/Marlin/icons.js create mode 100644 src/targets/Printer3D/Marlin/index.js create mode 100644 src/targets/Printer3D/Marlin/panels.js create mode 100644 src/targets/Printer3D/Marlin/preferences.json create mode 100644 src/targets/Printer3D/Marlin/processor.js create mode 100644 src/targets/Printer3D/Marlin/stream.js create mode 100644 src/targets/Printer3D/Marlin/style/index.scss create mode 100644 src/targets/Printer3D/Marlin/translations/en.json create mode 100644 src/targets/Printer3D/Marlin/variablesTable.js create mode 100644 src/targets/Printer3D/Repetier/CMD-source.js create mode 100644 src/targets/Printer3D/Repetier/Controls/InformationsControls.js create mode 100644 src/targets/Printer3D/Repetier/Controls/MixedExtrudersControl.js create mode 100644 src/targets/Printer3D/Repetier/Controls/QuickButtonsBar.js create mode 100644 src/targets/Printer3D/Repetier/Controls/index.js create mode 100644 src/targets/Printer3D/Repetier/DIRECTSD-source.js create mode 100644 src/targets/Printer3D/Repetier/MachineSettings.js create mode 100644 src/targets/Printer3D/Repetier/SD-source.js create mode 100644 src/targets/Printer3D/Repetier/TFT-SD-source.js create mode 100644 src/targets/Printer3D/Repetier/TFT-USB-source.js create mode 100644 src/targets/Printer3D/Repetier/TargetContext.js create mode 100644 src/targets/Printer3D/Repetier/files.js create mode 100644 src/targets/Printer3D/Repetier/filters.js create mode 100644 src/targets/Printer3D/Repetier/icons.js create mode 100644 src/targets/Printer3D/Repetier/index.js create mode 100644 src/targets/Printer3D/Repetier/panels.js create mode 100644 src/targets/Printer3D/Repetier/preferences.json create mode 100644 src/targets/Printer3D/Repetier/processor.js create mode 100644 src/targets/Printer3D/Repetier/stream.js create mode 100644 src/targets/Printer3D/Repetier/style/index.scss create mode 100644 src/targets/Printer3D/Repetier/translations/en.json create mode 100644 src/targets/Printer3D/Repetier/variablesTable.js create mode 100644 src/targets/Printer3D/Smoothieware/CMD-source.js create mode 100644 src/targets/Printer3D/Smoothieware/Controls/InformationsControls.js create mode 100644 src/targets/Printer3D/Smoothieware/Controls/MixedExtrudersControl.js create mode 100644 src/targets/Printer3D/Smoothieware/Controls/QuickButtonsBar.js create mode 100644 src/targets/Printer3D/Smoothieware/Controls/index.js create mode 100644 src/targets/Printer3D/Smoothieware/DIRECTSD-source.js create mode 100644 src/targets/Printer3D/Smoothieware/DIRECTSDEXT-source.js create mode 100644 src/targets/Printer3D/Smoothieware/MachineSettings.js create mode 100644 src/targets/Printer3D/Smoothieware/SD-source.js create mode 100644 src/targets/Printer3D/Smoothieware/SDEXT-source.js create mode 100644 src/targets/Printer3D/Smoothieware/TFT-SD-source.js create mode 100644 src/targets/Printer3D/Smoothieware/TFT-USB-source.js create mode 100644 src/targets/Printer3D/Smoothieware/TargetContext.js create mode 100644 src/targets/Printer3D/Smoothieware/files.js create mode 100644 src/targets/Printer3D/Smoothieware/filters.js create mode 100644 src/targets/Printer3D/Smoothieware/icons.js create mode 100644 src/targets/Printer3D/Smoothieware/index.js create mode 100644 src/targets/Printer3D/Smoothieware/panels.js create mode 100644 src/targets/Printer3D/Smoothieware/preferences.json create mode 100644 src/targets/Printer3D/Smoothieware/processor.js create mode 100644 src/targets/Printer3D/Smoothieware/stream.js create mode 100644 src/targets/Printer3D/Smoothieware/style/index.scss create mode 100644 src/targets/Printer3D/Smoothieware/translations/en.json create mode 100644 src/targets/Printer3D/Smoothieware/variablesTable.js create mode 100644 src/targets/Printer3D/icon.js create mode 100644 src/targets/Printer3D/preferences.json create mode 100644 src/targets/Printer3D/style/_index.scss create mode 100644 src/targets/Printer3D/translations/en.json create mode 100644 src/targets/SandTable/Controls/BackgroundContainer.js create mode 100644 src/targets/SandTable/Controls/EmergencyButton.js create mode 100644 src/targets/SandTable/Controls/index.js create mode 100644 src/targets/SandTable/GRBL/CMD-source.js create mode 100644 src/targets/SandTable/GRBL/Controls/InformationsControls.js create mode 100644 src/targets/SandTable/GRBL/Controls/QuickButtonsBar.js create mode 100644 src/targets/SandTable/GRBL/Controls/index.js create mode 100644 src/targets/SandTable/GRBL/DIRECTSD-source.js create mode 100644 src/targets/SandTable/GRBL/MachineSettings.js create mode 100644 src/targets/SandTable/GRBL/TargetContext.js create mode 100644 src/targets/SandTable/GRBL/files.js create mode 100644 src/targets/SandTable/GRBL/filters.js create mode 100644 src/targets/SandTable/GRBL/gcode_parser_modes.js create mode 100644 src/targets/SandTable/GRBL/icons.js create mode 100644 src/targets/SandTable/GRBL/index.js create mode 100644 src/targets/SandTable/GRBL/panels.js create mode 100644 src/targets/SandTable/GRBL/preferences.json create mode 100644 src/targets/SandTable/GRBL/processor.js create mode 100644 src/targets/SandTable/GRBL/realCommandsTable.js create mode 100644 src/targets/SandTable/GRBL/stream.js create mode 100644 src/targets/SandTable/GRBL/style/index.scss create mode 100644 src/targets/SandTable/GRBL/translations/en.json create mode 100644 src/targets/SandTable/GRBL/variablesTable.js create mode 100644 src/targets/SandTable/preferences.json create mode 100644 src/targets/SandTable/style/_index.scss create mode 100644 src/targets/SandTable/translations/en.json create mode 100644 src/targets/helpers.js create mode 100644 src/targets/index.js create mode 100644 src/targets/preferences.json create mode 100644 src/targets/translations/en.json create mode 100644 themes_samples/theme-dark.gz create mode 100644 themes_samples/theme-mnj create mode 100644 themes_samples/theme-purple create mode 100644 webui.todo delete mode 100644 www/css/bootstrap.css delete mode 100644 www/css/config.json delete mode 100644 www/css/menu.css delete mode 100644 www/css/modaldlg.css delete mode 100644 www/css/style.css delete mode 100644 www/css/tabs.css delete mode 100644 www/css/wizard.css delete mode 100644 www/docs/TEST.html delete mode 100644 www/docs/dropsdown.html delete mode 100644 www/docs/files.htm delete mode 100644 www/docs/findattribut.js delete mode 100644 www/docs/libglyph.html delete mode 100644 www/docs/library.html delete mode 100644 www/docs/modal.html delete mode 100644 www/docs/nav.html delete mode 100644 www/docs/roundtab-index.html delete mode 100644 www/docs/smoothie.js delete mode 100644 www/docs/smoothie2.js delete mode 100644 www/docs/tabs.html delete mode 100644 www/images/jogdial.svg delete mode 100644 www/images/jogdial1.svg delete mode 100644 www/images/jogdial2.svg delete mode 100644 www/images/printer.tpl.htm delete mode 100644 www/images/repetier.htm delete mode 100644 www/index.html delete mode 100644 www/js/SPIFFSdlg.js delete mode 100644 www/js/UIdisableddlg.js delete mode 100644 www/js/alertdlg.js delete mode 100644 www/js/app.js delete mode 100644 www/js/camera.js delete mode 100644 www/js/commands.js delete mode 100644 www/js/config.js delete mode 100644 www/js/confirmdlg.js delete mode 100644 www/js/connectdlg.js delete mode 100644 www/js/controls.js delete mode 100644 www/js/creditsdlg.js delete mode 100644 www/js/custom.js delete mode 100644 www/js/dropmenu.js delete mode 100644 www/js/extruders.js delete mode 100644 www/js/files.js delete mode 100644 www/js/grbl.js delete mode 100644 www/js/http.js delete mode 100644 www/js/icons.js delete mode 100644 www/js/inputdlg.js delete mode 100644 www/js/language/de.js delete mode 100644 www/js/language/en.js delete mode 100644 www/js/language/es.js delete mode 100644 www/js/language/fr.js delete mode 100644 www/js/language/hu.js delete mode 100644 www/js/language/it.js delete mode 100644 www/js/language/ja.js delete mode 100644 www/js/language/lang.tpl delete mode 100644 www/js/language/pl.js delete mode 100644 www/js/language/ptbr.js delete mode 100644 www/js/language/ru.js delete mode 100644 www/js/language/tr.js delete mode 100644 www/js/language/uk.js delete mode 100644 www/js/language/zh_CN.js delete mode 100644 www/js/language/zh_TW.js delete mode 100644 www/js/localstorage.js delete mode 100644 www/js/logindlg.js delete mode 100644 www/js/macrodlg.js delete mode 100644 www/js/modaldlg.js delete mode 100644 www/js/passworddlg.js delete mode 100644 www/js/preferencesdlg.js delete mode 100644 www/js/printercmd.js delete mode 100644 www/js/restartdlg.js delete mode 100644 www/js/scanwifidlg.js delete mode 100644 www/js/settings.js delete mode 100644 www/js/setup.js delete mode 100644 www/js/smoothie.js delete mode 100644 www/js/statusdlg.js delete mode 100644 www/js/tabs.js delete mode 100644 www/js/temperatures.js delete mode 100644 www/js/translate.js delete mode 100644 www/js/updatedlg.js delete mode 100644 www/js/wizard.js delete mode 100644 www/sub/SPIFFSdlg.html delete mode 100644 www/sub/UIdisableddlg.html delete mode 100644 www/sub/alertdlg.html delete mode 100644 www/sub/cameratab.html delete mode 100644 www/sub/commandpanel.html delete mode 100644 www/sub/configtab.html delete mode 100644 www/sub/confirmdlg.html delete mode 100644 www/sub/connectdlg.html delete mode 100644 www/sub/controlspanel.html delete mode 100644 www/sub/creditsdlg.html delete mode 100644 www/sub/dashtab.html delete mode 100644 www/sub/extruderpanel.html delete mode 100644 www/sub/files.html delete mode 100644 www/sub/grblpanel.html delete mode 100644 www/sub/inputdlg.html delete mode 100644 www/sub/logindlg.html delete mode 100644 www/sub/macrodlg.html delete mode 100644 www/sub/navbar.html delete mode 100644 www/sub/passworddlg.html delete mode 100644 www/sub/preferencesdlg.html delete mode 100644 www/sub/restartdlg.html delete mode 100644 www/sub/scanwifidlg.html delete mode 100644 www/sub/settingstab.html delete mode 100644 www/sub/setupdlg.html delete mode 100644 www/sub/statusdlg.html delete mode 100644 www/sub/tab_bar.html delete mode 100644 www/sub/temperaturepanel.html delete mode 100644 www/sub/updatedlg.html delete mode 100644 www/tools/includes.js diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 4a4828f87771ca729098374c38c2cecfa86879e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKISv9b477m)L_8eiuGDV zbb8%RL`EXgha1YxhPK(hdCNK(Q6L;=TxBH(*~w+UZDqd?7" -labels: Question -assignees: '' - ---- - -What is your question ? diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml deleted file mode 100644 index 9fa916f8..00000000 --- a/.github/workflows/greetings.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Greetings - -on: [pull_request, issues] - -jobs: - greeting: - runs-on: ubuntu-latest - steps: - - uses: actions/first-interaction@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - issue-message: 'Thank your for submiting, please be sure you followed template or your issue may be dismissed.' - pr-message: 'Thank you for your contribution, be patient, review can take a time.' diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml deleted file mode 100644 index e72d9967..00000000 --- a/.github/workflows/lock.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: 'Lock threads' - -on: - schedule: - - cron: '0 0 * * *' - -jobs: - lock: - runs-on: ubuntu-latest - steps: - - uses: dessant/lock-threads@v2 - with: - github-token: ${{ github.token }} - issue-lock-inactive-days: '10' - issue-exclude-created-before: '' - issue-exclude-labels: 'planned' - issue-lock-labels: 'outdated' - issue-lock-comment: 'This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.' - issue-lock-reason: 'resolved' - pr-lock-inactive-days: '365' - pr-exclude-created-before: '' - pr-exclude-labels: '' - pr-lock-labels: '' - pr-lock-comment: '' - pr-lock-reason: 'resolved' - process-only: 'issues' diff --git a/.gitignore b/.gitignore index 174a26d0..bfd8348f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/.idea node_modules -dist -src +.vscode +build diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..e8baaea6 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +14.16.1 \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..1e7a213e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,28 @@ +{ + "printWidth": 80, + "tabWidth": 4, + "useTabs": false, + "semi": false, + "singleQuote": true, + "jsxSingleQuote": false, + "trailingComma": "es5", + "bracketSpacing": true, + "jsxBracketSameLine": false, + "arrowParens": "always", + "requirePragma": false, + "insertPragma": false, + "proseWrap": "preserve", + "overrides": [ + { + "files": "*.js", + "options": { + "parser": "babel" + } + }, + {"files": "*.scss", + "options": { + "parser": "css" + } + } + ] +} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 8aa8e261..00000000 --- a/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: node_js -node_js: - - "lts/*" -cache: - directories: - - "node_modules" -sudo: false -install: - - npm install --global gulp-cli - - npm install --global gulp@4.0.0 - - npm install -script: - - echo "build index.html" - - gulp package - -notifications: - email: - on_success: change - on_failure: change diff --git a/Changelog.txt b/Changelog.txt deleted file mode 100644 index e86bd059..00000000 --- a/Changelog.txt +++ /dev/null @@ -1,39 +0,0 @@ -## What's Changed - -# Fixes -* Fix wrong source show in file panel -* Fix SSID with ' not properly transfered from dialog box to control -* Fix macro panel overload UI on some resolutions -* Fix moving buttons in grbl -* Fix SD icon and create dir displayed on GRBL thanks @Wesie -* Fix Abort button for marlin-embedded and marlinkimbra thanks @GerogeFu -* Fix always need to save preferences even no change -* Fix display glitch -* Fix Repetier ok 0 still visible with verbose mode off -* Fix Setup not working anymore due to breaking changes in GRBL_ESP32 -* Fix T is not T0 when heating T1 and so display wrong value thanks @Drzet -* Fix typo thanks @terjeio -* Fix bug with pure GRBL no receiving commands feedback thanks @jjhamb -* Fix pur GRBL not managing positions properly -* Fix some typo - thanks @kondorzs -* Fix smoothieware cannot list sub directory - thanks @sns5400 -* Fix missing translation for SD - -# Additions -* Add ; Linear Units: as legend for G21 in Marlin -* Add more filter to files list if unwished output pop up thanks @badbod -* Add Surfacing Wizard (GRBL panel) thanks @cotepat -* Add BTT USB DISK and onBoard SD support -* Add firmware checks for temperature controls -* Add support for Marlin T0 redundant, probe and chamber temperatures - thanks @BToersche -* Add bin.gz as accepted extension for FW update - -# New languages / update -* Add Turkish language thanks @DusDus -* Add Hungarian thanks @kondorzs -* Add Traditional Chinese. thanks @Engineer2Designer -* Add Japanese language thanks @nyarurato -* Update German language thanks @Wesie -* Update German language thanks @duramson - -**Full Changelog**: https://github.com/luc-github/ESP3D-WEBUI/compare/v2.1...V2.1.1 \ No newline at end of file diff --git a/ESP3D-WebUI-features.xls b/ESP3D-WebUI-features.xls new file mode 100644 index 0000000000000000000000000000000000000000..11bcf63f56510510630f09544b01f155177c1db7 GIT binary patch literal 13824 zcmeHNYit}>6+Ub4I_o&j+Hn#mcASj!aO{lVE>IpN564ME<2H&NwIHOj_KuyU>m6$! zO^QIcJpO?M6tyy{1W1(-5AhcK073c>q#zIvA&@E+{vr5b5C|bC%lF-x*_ktIV^a{~ z(QDtCd(S=hyXT&B?sN7B-|u|!lV9rjg~Y<^rCI)3Yn7G=J%RM0Am1T!5NXo>TC3Fp zGLo-^{~`^%w?#65`Zh(-SwBO~BH)H=7(j;F@K98r!FA?7=tDGCAvxPZ zB8G-iiSzLPykw;yu~IPn>q?K9c3UNAwL&jp_Ypa*sU6)#tKPbV}L6i)K}MPX17{z#N1-7U?vbq5pnobT+pc z|5kLOZpQz=OMebJwb(sB1bVhTJ#573LtD^?x1gWdg5J6*Jq1rN`v0omZZh3RyEoFG z=_S3Tf&b&(iXQWmT@CzS$ZU?^ks>`E@W*gk1A1M~&$R!&cI$G+aJHiFZovOolK5=_ z{iB_o&$K<$CP|OZ5ww}#Zbh%_AtsLiCn3kZjh-=q=MU`x{oY%*(#bTIh8X>}Pfvc? z*u~>NBNC%~`28Z=;(WD-{q^`QkwM*VUCvGMA%C6j`9mXr6hA6wlpe*|oet#z{gJ>w zqjccZ=`ox-{mZ>iH9>uAQscX0t=YUg*ILYb-&)eVyViD@_x`mM-Wlw%cZ-}~Ty%;R zYr>i!>0pF3>5;l4q$!fxad^X)-miGiQ%$?&F!%cxvN;y-!Fq^!ccxTwOCCZm5iYrI zrRY{1lG@}5Hwc$q*VO2cKAsEice1&BaoH24LyksiMwY#DjOU1eZ|bS0y_jV{dC;j= zFvok){e*tdZ>b$_2U+JT*-EwSm7iewymK3UCcsGoJe(~RP17I2M#WqHu@w??8ucGM zni>iccWI|3KGtL%?=}3%+M3+Ca|bWb)@!mpwS*1rUAYVXCH&Pum!-S%!V52$dc-0o zAFPj3gTYo%$<(`x`nB4+tRr7r2NrN^ckjy7Qcb4te)7jX$fE`-*C5Bz(z-nT^wR4ORRwY-Ig zw2kXzl$MP{d?n3#3r_Fg9=xZdZG(rnZ$sy4c`^abrte@ACFyf=^tU|b;nZBDMCSCc3?iN1}F zTbByeeD1+%Yxm%4$$32QR?CGatjpIgTzzzA?%LGk5Du1;qZ5{OpEY&Sx>m{;D^3ZL zpz7lzkB6iI56zm(7IW5ocA?+^kuYPk*-{~29P`^5f-BEEi#LmI!Cig=dYG9Te-#e0 zc)i-P#?XS3U96zvvo2WjmHZ-j-t3gEqwvC;*^-m97M#j0$0-^i$3h99g-4*C*=nJZ zFJz0$)$Fo^{8c28vR1Q;kCoZ@O=rcit|5mb@`HeKOOIL8ZgDBUTrFiQdAA6rhn)rM z#%eBGaUjW!D}EYh>#Ob}#>u5QYb9F*>I#NFjC;OXxrtPM(bTtKVggKOSFE|}>Z)6+ zSoxxL%UQT_1w}I}3r;SFevoG|)FltB7MyZ!1(W2>ymJeFVoi*W!*%F_Flgw|93`I11A<+p0(`k4&-{gpprfNv zx{+|P2nQs$Y>KVLsK@ukKvvxXhU_w!R^aEkGM4;$BLuf@<=>Gl<q=?dwqHijystEi9W>xsokaoZKipvxFJJF-2&x zRLMg!AJ@W)>lT+?_C0jv%O%b>9@J8`Q0InC3R#Ses+lOP$??gFk@1O<$%z`)>lvAb z+rf&mm_C4rgdcb_$AD!Y*LvpI-=U8EdvF%ZVa?z{xs&HIT=1pkFQ5MH4`&yyoqg2M z*SISC;S{$naw_p8N}f-iF*R)Se2?MXkCg!&1JeWN4?rTQX<+&qr^JD4?=@`iGtU7) zVsS(G)!EaL^dQnpCTyG?ilje@tw92Ua=}Z;dt^8q@u=Qx59gERk;vO9V`yd1_mypx&@gUcPrJ0`Rl{KS`KIi3<$kE%pTne1@ zGv-)-2(1S>V$!#~vL-o$5gFu&8I~ngSt^pF6gKApgTiTM*ho*zCj3Qn%_^5vxl|;_ zzS!pL1W}q5W-~BH%naa_MKPPv?`T;nlA}g!^QD9JxU~)?ODZ{&XfawAl`{!lhGo>N zZN8ikGX>1B^_0R)0W(?_#pGNRV$wRc`4U6S7KPbT$4oS}pp2LvR}`;B;n9Y+`Km+C zU8>)^>UdsRwBMZOL#cKtOnQlJz7nxsT4AOYW?JbotuWIHlOAN7dtYLPDLHYG6Txg#a&qpq z%~v*Jay1KE=K>zhMdjS1F!v}-&fT{8noG=fV21wJ4$NpS>YMEfvmKZrC+B`!IGYl4 zufpVAe3UaP=U#=mS7CDPu+0}}VrCR3w=E%N#`rsR<#9&!nNgTrdu-f;c$^&yvqNEa z0CN;~Bmrj=b3ai!Ro^>-8FF&%vvIfL zaqcs6axGxJeMZhO7uDxJg}Kkj8E|s#w8ipKx)f%Y!t7H1*`+YM6eibRTl#%W-qDZX z_Q#WRzrx(FF!w7=-tmU@xOUsThcvxCpfC?8%mWJZ05C%h9#EKE`)$D~#$X;)mjQ>t`q@z1`;hhQaJsnB5AqTVZx9%x;Cry@xH_jndMG6y_m?c}VsBkitBq zFzM~K*)b6FFfhYe`|CK3bRLH_9#q_E*pCi z53^VGy%(6FZF`MA13&9kn7zOZIXNnA>})*DBMS3~!8}thi;klsN}opzX28kuYva$u z>{FP13bRl3y-#8GDNK%Z8+P$9j~acB)N|}Rj+DkHjvCCcjB{OB#=ZwR>c_^c<<&c; z>VoJNbrX|zb3M%~A0)Onmn&Btluo6sg;i#XpTXw9*+RrdvA((X2He?828h1st#`+*tGsr?GG zUt!X3Y+NCFm^}H1a}~erha>yA!3^er92a9oWo`kl=?b~AoX7&(Kz!U=_WLdkgo zm|^QD3}!G!=(o1q<71vwm?stHNrib*VV+c&^m|)gwn5PV8Faw=Zn5T?B!!phR zL5|}lBd_)`2NdQ2FvI>0D9iyR=YW!v<1Qnw@iBS!3{g(2zVqxEEsM@8rxhm0ZN_}k zp=S*$IeDH9?LMgF95j6otitnb$jNb^5sn68;)XlogF~wCLke?9^?eAKVIQd1jJXdY z<{8y@UWr9HqkTW4FwZDV&N~@-y)UN?%y2H|1zXr7Tj|pVW|TA9cg|ZGd4rERtmGV4 zn8ONlSm|?E>67zbM(*=5N0gi+3Ufs1b42xhL}7B?%*Y#k%u$6osxU`^8TNKmVU8+H z&bt{o>tl`qGn{+IfEl8UDLKcKKF5F=a&qR($T=T#T**1EFvpdg<4Vr)Iwnu)ocD36 zF{u<%^eE2z6LQ{fhco^pKC5^h%(;F_ru`iKIwKeH{0%<3;5@W(Khn6u-ALnY7KtP| znm0VzlN%gk32EKvz&jprdur-IT*xT$#-@GpHC{NFK8rkHDtrRPyh-UJF1OSKJjkPD zZ5iJRm)Wu(aNWaSsWHdV`AYcD&;b1+_^mEXZEVdv?}GS#CH!w|AOR~kV?eT(9qA_H zly}TiF7f;|o5%OZvb$8VW^OOyL*8p&GlH+|PNCpni;54K`K6_MJ@%LPg#USszP##? zo>NXE1pWHO_ka9%e|qR<$7esB7W?#9e#Uw4orn~i`(l4NchQG;Qj7ezxe-Q4VEuGu1vY*NGQ8a* z{sT|8Pk&(B3_GoQ#b->Q-2#4E@p1$2roEQE=T30gf8NtEr0~m}D*C^IpKtKD|5xxM zk0oOhQY!d0vN~gRm2@=", //the id of requested command +status:"" //give if it is success or an failure +data:"" // response corresponding to answer in json format too +} + +## Commands + +- Show commands help + `[ESP] json=` + +- Set/Get STA SSID + `[ESP100] json= pwd=` + +- Set STA Password + `[ESP101] json= pwd=` + +- Set/Get STA IP mode (DHCP/STATIC) + `[ESP102] json= pwd=` + +- Set/Get STA IP/Mask/GW/DNS + `[ESP103]IP= MSK= GW= DNS= json= pwd=` + +- Set/Get sta fallback mode which can be WIFI-AP, BT, OFF + `[ESP104] json= pwd=` + +- Set/Get AP SSID + `[ESP105] json= pwd=` + +- Change AP Password + `[ESP106] json= pwd=` + +- Set/Get AP IP + `[ESP107] json= pwd=` + +- Set/Get AP channel + `[ESP108] json= pwd=` + +- Set/Get radio state which can be WIFI-STA, WIFI-AP, BT, ETH-STA, ETH-AP, OFF + `[ESP110] json= pwd=` + +- Get current IP + `[ESP111]json=` + +- Get/Set hostname + `[ESP112] json= pwd=` + +- Get /Set Boot radio state which can be ON, OFF + `[ESP114] json= pwd=` + +- Get/Set immediate network(WiFi/BT/Ethernet) state which can be ON, OFF + `[ESP115] json= pwd=` + +- Get/Set HTTP state which can be ON, OFF + `[ESP120] json= pwd=` + +- Get/Set HTTP port + `[ESP121] json= pwd=` + +- Get/Set Telnet state which can be ON, OFF, CLOSE + `[ESP130] json= pwd=` + +- Get/Set Telnet port + `[ESP131] json= pwd=` + +- Sync / Set / Get current time + `[ESP140] json= pwd=` + +- Get/Set display/set boot delay in ms / Verbose boot + `[ESP150]pwd=` + +- Get/Set WebSocket state which can be ON, OFF + `[ESP160] json= pwd=` + +- Get/Set WebSocket port + `[ESP161] json= pwd=` + +- Get/Set Camera command value / list all values in JSON/plain + label can be: light/framesize/quality/contrast/brightness/saturation/gainceiling/colorbar/awb/agc/aec/hmirror/vflip/awb_gain/agc_gain/aec_value/aec2/cw/bpc/wpc/raw_gma/lenc/special_effect/wb_mode/ae_level + `[ESP170] json= pwd=` + +- Save frame to target path and filename (default target = today date, default name=timestamp.jpg) + `[ESP171] ` + +- Get/Set Ftp state which can be ON, OFF, CLOSE + `[ESP180] json= pwd=` + +- Get/Set Ftp ports + `[ESP181]ctrl= active= passive= json= pwd=` + +- Get/Set WebDav state which can be ON, OFF, CLOSE + `[ESP190] json= pwd=` + +- Get/Set WebDav port + `[ESP191] json= pwd=` + +- Get/Set SD Card Status + `[ESP200] json= pwd=` + `RELEASE` will force the release of SD from ESP3D if SD is shared + `REFRESH` will refresh the SD info is available` + +- Get/Set pin value + `[ESP201]P= V= [PULLUP=YES RAW=YES ANALOG=NO ANALOG_RANGE=255]pwd=` + + - if no V= get P= value + - if V= 0/1 set INPUT_PULLUP value, but for GPIO16(ESP8266) INPUT_PULLDOWN_16 + - if PULLUP=YES set input pull up (for GPIO16(ESP8266) INPUT_PULLDOWN_16), if not set input + - if RAW=YES do not set pinmode just read value + + Note: Flash pins according chip cannot be used + +- Get/Set SD card Speed factor 1 2 4 6 8 16 32 + `[ESP202]SPEED= json= pwd=` + +- Get Sensor Value / type/Set Sensor type + `[ESP210] json= pwd=` + +- Output to esp screen status + `[ESP214] json= pwd=` + +- Touch Calibration + `[ESP215] json= pwd=` + +- Show defined pins + `[ESP220] json= pwd=` + +- Play sound + `[ESP250]F= D= json= pwd=` + Note: No parameter just play beep + +- Delay command + `[ESP290] json=pwd=` + +- Get full EEPROM settings content + `[ESP400] pwd=` + Note: do not give any passwords + +\*Set EEPROM setting + position in EEPROM, type: B(byte), I(integer/long), S(string), A(IP address / mask) + `[ESP401]P= T= V= json= pwd=` + +``` + Description: Positions: + ESP_RADIO_MODE 0 //1 byte = flag + ESP_STA_SSID 1 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese + ESP_STA_PASSWORD 34 //65 bytes 64 +1 = string ;warning does not support multibyte char like chinese + ESP_STA_IP_MODE 99 //1 byte = flag + ESP_STA_IP_VALUE 100 //4 bytes xxx.xxx.xxx.xxx + ESP_STA_MASK_VALUE 104 //4 bytes xxx.xxx.xxx.xxx + ESP_STA_GATEWAY_VALUE 108 //4 bytes xxx.xxx.xxx.xxx + ESP_BAUD_RATE 112 //4 bytes = int + ESP_NOTIFICATION_TYPE 116 //1 byte = flag + ESP_CALIBRATION 117 //1 byte = flag + ESP_AP_CHANNEL 118 //1 byte = flag + ESP_BUZZER 119 //1 byte = flag + ESP_INTERNET_TIME 120 //1 byte = flag + ESP_HTTP_PORT 121 //4 bytes = int + ESP_TELNET_PORT 125 //4 bytes = int + ESP_SERIAL_FLAG 129 //1 bytes = flag + ESP_HOSTNAME 130 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese + ESP_SENSOR_INTERVAL 164 //4 bytes = int + ESP_SETTINGS_VERSION 168 //8 bytes = 7+1 = string ESP3D + 2 digits + ESP_ADMIN_PWD 176 //21 bytes 20+1 = string ; warning does not support multibyte char like chinese + ESP_USER_PWD 197 //21 bytes 20+1 = string ; warning does not support multibyte char like chinese + ESP_AP_SSID 218 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese + ESP_AP_PASSWORD 251 //65 bytes 64 +1 = string ;warning does not support multibyte char like chinese + ESP_AP_IP_VALUE 316 //4 bytes xxx.xxx.xxx.xxx + ESP_BOOT_DELAY 320 //4 bytes = int + ESP_WEBSOCKET_PORT 324 //4 bytes= int + ESP_HTTP_ON 328 //1 byte = flag + ESP_TELNET_ON 329 //1 byte = flag + ESP_WEBSOCKET_ON 330 //1 byte = flag + ESP_SD_SPEED_DIV 331 //1 byte = flag + ESP_NOTIFICATION_TOKEN1 332 //64 bytes 63+1 = string ; warning does not support multibyte char like chinese + ESP_NOTIFICATION_TOKEN2 396 //64 bytes 63+1 = string ; warning does not support multibyte char like chinese + ESP_SENSOR_TYPE 460 //1 bytes = flag + ESP_TARGET_FW 461 //1 bytes = flag + ESP_TIMEZONE 462 //1 bytes = flag + ESP_TIME_IS_DST 463 //1 bytes = flag + ESP_TIME_SERVER1 464 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese + ESP_TIME_SERVER2 593 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese + ESP_TIME_SERVER3 722 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese + ESP_REMOTE_SCREEN 851 //1 bytes = flag + ESP_SD_MOUNT 852 //1 bytes = flag + ESP_SESSION_TIMEOUT 853 //1 bytes = flag + ESP_WEBSOCKET_FLAG 854 //1 bytes = flag + ESP_SD_CHECK_UPDATE_AT_BOOT 855//1 bytes = flag + ESP_NOTIFICATION_SETTINGS 856 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese + ESP_CALIBRATION_1 985 //4 bytes = int + ESP_CALIBRATION_2 989 //4 bytes = int + ESP_CALIBRATION_3 993 //4 bytes = int + ESP_CALIBRATION_4 997 //4 bytes = int + ESP_CALIBRATION_5 1001 //4 bytes = int + ESP_SETUP 1005 //1 byte = flag + ESP_TELNET_FLAG 1006 //1 byte = flag + ESP_BT_FLAG 1007 //1 byte = flag + ESP_SCREEEN_FLAG 1008 //1 byte = flag + ESP_FTP_CTRL_PORT 1009 //4 bytes = int + ESP_FTP_DATA_ACTIVE_PORT 1013 //4 bytes = int + ESP_FTP_DATA_PASSIVE_PORT 1017 //4 bytes = int + ESP_FTP_ON 1021 //1 byte = flag + ESP_AUTO_NOTIFICATION 1022 //1 byte = flag + ESP_VERBOSE_BOOT 1023 //1 byte = flag + ESP_WEBDAV_ON 1024 //1 byte = flag + ESP_WEBDAV_PORT 1025 //4 bytes = int + ESP_STA_DNS_VALUE 1029 //4 bytes= int + ESP_SECURE_SERIAL 1033 //1 byte = flag + ESP_SERIAL_BRIDGE_ON 1036 //1 byte = flag + ESP_SERIAL_BRIDGE_FLAG 1037 //1 byte = flag + ESP_SERIAL_BRIDGE_BAUD 1038 //4 bytes= int +``` + +- Get/Set Check update at boot state which can be ON, OFF + `[ESP402] json= pwd=` + +- Get available AP list (limited to 30) + output is JSON or plain text according parameter + `[ESP410]json= ` + +- Get current settings of ESP3D + Output is JSON or plain text according parameter + `[ESP420]json= ` + +- Set ESP State + `cmd` can be `RESTART` to restart board or `RESET` to reset all setting to defaults values + `[ESP444] json= ` + +- Get available ESP3D list + output is JSON or plain text according parameter + `[ESP450]json= ` + +- Change admin password + `[ESP550] json= pwd=` + +- Change user password + `[ESP555] json= pwd=` + +- Send Notification + `[ESP600]msg json= pwd=` + +- Set/Get Notification settings + `[ESP610]type= T1= T2= TS= json= [pwd=]` + Get will give type and settings only, not the protected T1/T2 + +- Send Notification using URL + `[ESP620]URL= json= pwd=` + +- Read / Stream / Process FS file + `[ESP700] json= pwd=` + +- Query and Control ESP700 stream + `[ESP701]action= json= pwd=` + +- Format ESP Filesystem + `[ESP710]FORMATFS json= pwd=` + +- Format SD Filesystem + `[ESP715]FORMATSD json= pwd=` + +- List ESP Filesystem + `[ESP720] json= pwd=` + +- Action on ESP Filesystem + Action can be `rmdir` to remove empty directory / `remove` to delete file / `mkdir` to create directory / `exists` to check if file or directory exists / `create` create an empty file + `[ESP730]= json= pwd=` + +- List SD Filesystem + `[ESP740] json= pwd=` + +- Action on SD Filesystem + Action can be `rmdir` to remove empty directory / `remove` to delete file / `mkdir` to create directory / `exists` to check if file or directory exists / `create` create an empty file + `[ESP750]= json= pwd=` + +- List Global Filesystem + `[ESP780] json= pwd=` + +- Action on Global Filesystem + Action can be `rmdir` to remove empty directory / `remove` to delete file / `mkdir` to create directory / `exists` to check if file or directory exists / `create` create an empty file + `[ESP790]= json= pwd=` + +- FW Informations + `[ESP800]json= pwd= ` + +- Get state / Set Enable / Disable Serial Communication + `[ESP900] json= pwd=` +- Get / Set Serial Baud Rate + `[ESP901] json= pwd=` + +- Get state / Set Enable / Disable buzzer + `[ESP910] json= pwd=` + +- Get state / Set state of output message clients + `[ESP920]= json= pwd=` + +- Get state / Set Enable / Disable Serial Bridge Communication + `[ESP930] json= pwd=` +- Get / Set Serial Bridge Baud Rate + `[ESP931] json= pwd=` + +- Set quiet boot if strapping pin is High + `[ESP999]QUIETBOOT pwd=` diff --git a/Memo/ESP3D [ESP400] format.md b/Memo/ESP3D [ESP400] format.md new file mode 100644 index 00000000..d42fe366 --- /dev/null +++ b/Memo/ESP3D [ESP400] format.md @@ -0,0 +1,102 @@ +# ESP3D [ESP400] format + +Only sent in JSON format + +``` +{"cmd":"400","status":"ok","data":[ +{"F":"network/network","P":"130","T":"S","V":"esp3d","H":"hostname","S":"32","M":"1"}, +{"F":"network/network","P":"0","T":"B","V":"1","H":"radio mode","O":[{"none":"0"}, +{"sta":"1"}, +{"ap":"2"}]}, +{"F":"network/sta","P":"1","T":"S","V":"WIFI_OFFICE_B2G","S":"32","H":"SSID","M":"1"}, +{"F":"network/sta","P":"34","T":"S","N":"1","V":"********","S":"64","H":"pwd","M":"8"}, +{"F":"network/sta","P":"99","T":"B","V":"1","H":"ip mode","O":[{"dhcp":"1"}, +{"static":"0"}]}, +{"F":"network/sta","P":"100","T":"A","V":"192.168.0.1","H":"ip"}, +{"F":"network/sta","P":"108","T":"A","V":"192.168.0.1","H":"gw"}, +{"F":"network/sta","P":"104","T":"A","V":"255.255.255.0","H":"msk"}, +{"F":"network/ap","P":"218","T":"S","V":"ESP3D","S":"32","H":"SSID","M":"1"}, +{"F":"network/ap","P":"251","T":"S","N":"1","V":"********","S":"64","H":"pwd","M":"8"}, +{"F":"network/ap","P":"316","T":"A","V":"192.168.0.1","H":"ip"}, +{"F":"network/ap","P":"118","T":"B","V":"11","H":"channel","O":[{"1":"1"}, +{"2":"2"}, +{"3":"3"}, +{"4":"4"}, +{"5":"5"}, +{"6":"6"}, +{"7":"7"}, +{"8":"8"}, +{"9":"9"}, +{"10":"10"}, +{"11":"11"}, +{"12":"12"}, +{"13":"13"}, +{"14":"14"}]}, +{"F":"service/http","P":"328","T":"B","V":"1","H":"enable","O":[{"no":"0"}, +{"yes":"1"}]}, +{"F":"service/http","P":"121","T":"I","V":"80","H":"port","S":"65001","M":"1"}, +{"F":"service/telnetp","P":"329","T":"B","V":"1","H":"enable","O":[{"no":"0"}, +{"yes":"1"}]}, +{"F":"service/telnetp","P":"125","T":"I","V":"23","H":"port","S":"65001","M":"1"}, +{"F":"service/ftp","P":"1021","T":"B","V":"1","H":"enable","O":[{"no":"0"}, +{"yes":"1"}]}, +{"F":"service/ftp","P":"1009","T":"I","V":"21","H":"control port","S":"65001","M":"1"}, +{"F":"service/ftp","P":"1013","T":"I","V":"20","H":"active port","S":"65001","M":"1"}, +{"F":"service/ftp","P":"1017","T":"I","V":"55600","H":"passive port","S":"65001","M":"1"}, +{"F":"service/notification","P":"1004","T":"B","V":"1","H":"auto notif","O":[{"no":"0"}, +{"yes":"1"}]}, +{"F":"service/notification","P":"116","T":"B","V":"0","H":"notification","O":[{"none":"0"}, +{"pushover":"1"}, +{"email":"2"}, +{"line":"3"}]}, +{"F":"service/notification","P":"332","T":"S","V":"********","S":"63","H":"t1","M":"0"}, +{"F":"service/notification","P":"396","T":"S","V":"********","S":"63","H":"t2","M":"0"}, +{"F":"service/notification","P":"855","T":"S","V":" ","S":"127","H":"ts","M":"0"}, +{"F":"system/system","P":"461","T":"B","V":"40","H":"targetfw","O":[{"repetier":"50"}, +{"marlin":"20"}, +{"smoothieware":"40"}, +{"grbl":"10"}, +{"unknown":"0"}]}, +{"F":"system/system","P":"112","T":"I","V":"115200","H":"baud","O":[{"9600":"9600"}, +{"19200":"19200"}, +{"38400":"38400"}, +{"57600":"57600"}, +{"74880":"74880"}, +{"115200":"115200"}, +{"230400":"230400"}, +{"250000":"250000"}, +{"500000":"500000"}, +{"921600":"921600"}]}, +{"F":"system/system","P":"320","T":"I","V":"10000","H":"bootdelay","S":"40000","M":"0"}, +]} +``` + +1 - key : `Settings` +2 - value: array of data formated like this +{"F":"network/network","P":"130","T":"S","V":"esp3d","H":"hostname","S":"32","M":"1"} +or +{"F":"service/notification","P":"1004","T":"B","V":"1","H":"auto notif","O":[{"no":"0"},{"yes":"1"}]} + + - F: is filter formated as section/sub-section, if section is same as sub-section, it means no sub-section + - P: is id (also position reference so it is unique) + - T: is type of data which can be: + - S: for string + - I: for integer + - B: for Byte + - A: for IP address / Mask + - F: for float (only grblHAL) + - M: for bits mask (only grblHAL) + - X: for exclusive bitsfield (only grblHAL) + - V: is current value, if type is string and value is `********`, (8 stars) then it is a password + - E: is integer for exactess / precision of float/double value (only grblHAL) + - U: is text unit of value (only grblHAL) + - H: is text label of value + - S: is max size if type is string, and max possible value if value is number (byte, integer) + - M: is min size if type is string, and min possible value if value is number (byte, integer) + - MS: is additionnal min size if type is string (e.g for password can be 0 or 8, so need additional min size), M should be the more minimal value + so MS value must be between M and S + - O: is an array of {label:value} used for possible values in selection or bits labels list + - R: need restart to be applied + +Note: if Type `M` and `X` use `O` entry to define the label / position, if `O` is `[]` then axis label are used according need `X`, `Y`, `Z`, `A`, `B`, `C` +Note2 : the 2.1 Flag type is no more used, several entries are used instead grouped by sub-section diff --git a/Memo/ESP3D [ESP401] format.md b/Memo/ESP3D [ESP401] format.md new file mode 100644 index 00000000..b99c1be6 --- /dev/null +++ b/Memo/ESP3D [ESP401] format.md @@ -0,0 +1,22 @@ +# ESP3D [ESP401] format + +WebUI need use json format to get propelry formated answer +As described in Commands.md: + +## Conventions + +1 - add space to separate parameters +2 - if parameter has space add \\ in front of space to not be seen as separator +3 - json json=YES json=TRUE json=1 are paremeters to switch output to json +By default output is plain text, to get json formated output +add json or json=yes after main parameters +The json format is { +cmd:"<401>", //the id of requested command +status:"" //give if it is success or an failure +data:"the position of setting" +} + +Example +`[ESP401]P=1 T=S V=My\ SSID json` +you will get the following if ok +`{"cmd":"401","status":"ok","data":"1"}` diff --git a/Memo/ESP3D [ESP410] format.md b/Memo/ESP3D [ESP410] format.md new file mode 100644 index 00000000..2e76603d --- /dev/null +++ b/Memo/ESP3D [ESP410] format.md @@ -0,0 +1,34 @@ +# ESP3D [ESP410] format + +This command list all AP available, limited to 30 by API, if signal is too low, AP is not listed to avoid connection problems. + +WebUI need use json format to get propelry formated answer +As described in Commands.md: + +Example +`[ESP410]json` +you will get the following if ok + +``` +{ + "cmd": "410", + "status": "ok", + "data": [ + { + "SSID": "GRBL", + "SIGNAL": "100", + "IS_PROTECTED": "1" + }, + { + "SSID": "luc-ext1", + "SIGNAL": "64", + "IS_PROTECTED": "1" + }, + { + "SSID": "TP-Link_Luc", + "SIGNAL": "62", + "IS_PROTECTED": "1" + } + ] +} +``` diff --git a/Memo/ESP3D [ESP800] format.md b/Memo/ESP3D [ESP800] format.md new file mode 100644 index 00000000..20f6a0a7 --- /dev/null +++ b/Memo/ESP3D [ESP800] format.md @@ -0,0 +1,119 @@ +# ESP3D [ESP800] format + +can be in JSON or plain text + +## Input + +`[ESP800] json= pwd=` + + * json=yes + the output format + * time= + to set ESP3D time using ISO 8601 format : `YYYY`-`MM`-`DD`T`HH`-`minutes`-`seconds` + * version + version of webUI + * setup flag + Enable / Disable the setup flag + +## Output + +- In json format + +``` +{ + "cmd":"800", + "status":"ok", + "data":{ + "FWVersion":"bugfix-2.0.x-3.0.0.a200", + "FWTarget":"marlin", + "FWTargetID":"30", + "Setup":"Enabled", + "SDConnection":"shared", + "SerialProtocol":"Socket", + "Authentication":"Disabled", + "WebCommunication":"Synchronous", + "WebSocketIP":"192.168.2.117", + "WebSocketPort":"81", + "Hostname":"esp3d", + "WiFiMode":"STA", + "WebUpdate":"Enabled", + "FlashFileSystem":"LittleFS", + "HostPath":"www", + "Time":"none" + } +} +``` + + * `cmd` + Id of requested command, should be `800` + + * `status` + status of command, should be `ok` + + * `data` + content of response: + * `FWVersion` + Version of ESP3D firmware or targeted FW (Marlin with ESP3DLib / grblHal) + * `FWTarget` + name of targeted Firmware + * `FWTargetID` + numerical ID of targeted FW as same name can have several Ids + * `Setup` + Should be `Enabled` or `Disabled` according flag in EEPROM/Preferences, this allows to WedUI to start wizard automaticaly (or not) + + * `SDConnection` + This is SD capability, SD can be + * `shared` + ESP does share access to SD card reader with main board or Firmware (Marlin with ESP3Dlib, ESP3D with hardware SD share solution) + * `direct` + ESP does have direct access to SD card reader (e.g: ESP3D, grblHal) + * `none` + ESP does not have direct access to SD card reader, (e.g: ESP3D with only serial connection) + * `SerialProtocol` + It define how ESP3D FW communicate with main FW + * `Socket` + ESP and main FW use same FW (e.g: Marlin with ESP3DLib, grblHal) + * `Raw` + Classic serial connection + * `MKS` + Serial connection using MKS protocol + * `Authentication` + Can be `Enabled` or `Disabled` + * `WebCommunication` + currently only `Synchronous`, because `Asychronous` has been put in hold + * `WebSocketIP` + Ip address for the websocket terminal `192.168.2.117` + * `WebSocketPort` + Port for the web socket terminal `81` + * `Hostname` + Hostname of ESP3D or main Baord `esp3d` + * `WiFiMode` + Current wiFi mode in use can be `AP` or `STA` + * `WebUpdate` + Inform webUI the feature is available or not, can be `Enabled` or `Disabled` + * `FlashFileSystem` (currently `FileSystem`, to be updated soon ) + The file system used by ESP board can be `LittleFS`, `SPIFFS`, `Fat`, `none` + * `HostPath` + Path where the preferences.json and index.html.gz are stored and can be updated (e.g: `www`) + * `Time` + Type of time support + * `none` + Time is not supported + * `Auto` + Board use internet to sync time and it is successful + * `Failed to set` + Board use internet to sync time and it is failed + * `Manual` + Board use time of ESP800 to set the time and it is successful + * `Not set` + Board use time of ESP800 to set the time and command did not sent it (time may have been set by previous command) + * `CameraID` + if ESP has camera it contain the camera ID + * `CameraName` + if ESP has camera it contain the camera name + * `Axisletters` + Currently only used for grbHAL + can be : + - XYZABC + - XYZUVZ (supported soon) + - XYZABCUVZ (supported soon) diff --git a/Memo/Handlers.md b/Memo/Handlers.md new file mode 100644 index 00000000..192cd0a1 --- /dev/null +++ b/Memo/Handlers.md @@ -0,0 +1,175 @@ +# Web Handlers + +### / + +root is the default handler where all files will be served, if no file is defined, it looks for index.html or index.html.gz (compressed) +if you call specific file, it will look for the filename and filename.gz (compressed) +if no file is defined and there is not index.html(.gz) it will display embedded page +another way to show the embedded page is /?forcefallback=yes + +### /sd/ + +it will serve any file from SD card if there is one, it is only a wrapper to read SD card, no upload + +### /files + +this handler handle all commands for FS, including upload on FS. + possible options/arguments are: + +- `quiet=yes` can be used when you don't want list files but just upload them +- `path=...` define the path to the file +- `action=...` define the action to execute which can be: + - delete + delete the file defined by `filename=...` it will also use `path=...` to do full path + - deletedir + delete the directory defined by `filename=...` it will also use `path=...` to do full path + - createdir + create the directory defined by `filename=...` it will also use `path=...` to do full path +- `createPath=yes` when doing upload and the path do not exists, it will create it, POST only +- `S=...` give the size of uploaded file with name, need to be set before file is set in upload, POST only + +the output is a json file: + + ``` + { + "files":[ //the files list + { + "name":"index.html.gz", //the name of the file + "size":"83.46 KB", //the formated size of the file + "time":"2022-09-04 11:56:05" //the time when the file was modified last time, this one is optional and depend on (FILESYSTEM_TIMESTAMP_FEATURE) + }, + { + "name":"subdir", //the name of the file / directory + "size":"-1", //the size is -1 because it is a directory + "time":"" //no time for directories optional as depend on (FILESYSTEM_TIMESTAMP_FEATURE) + } + ], + "path":"/", //current path + "occupation":"52", //% of occupation + "status":"subdir created", //status + "total":"192.00 KB", //Formated total space of Filesystem + "used":"100.00 KB" //Formated used space of Filesystem + } + ``` + +### /sdfiles + +this handler handle all commands for SD, including upload on SD (only shared and direct SD) +this handler handle all commands for FS, including upload on FS. + possible options/arguments are: + +- `quiet=yes` can be used when you don't want list files but just upload them +- `path=...` define the path to the file +- `action=...` define the action to execute which can be: + - list + Will refresh the stats of the files - delete + delete the file defined by `filename=...` it will also use `path=...` to do full path + - deletedir + delete the directory defined by `filename=...` it will also use `path=...` to do full path + - createdir + create the directory defined by `filename=...` it will also use `path=...` to do full path +- `createPath=yes` when doing upload and the path do not exists, it will create it, POST only +- `S=...` give the size of uploaded file with name, need to be set before file is set in upload, POST only + +the output is a json file: + + ``` + { + "files":[ //the files list + { + "name":"3Oc-pika2.gco",//the name of the file + "shortname":"3Oc-pika2.gco", //the 8.3 shortname if available, if not the name of the file + "size":"83.46 KB", //the formated size of the file + "time":"2022-09-04 11:56:05" //the time when the file was modified last time, this one is optional and depend on (SD_TIMESTAMP_FEATURE) + }, + { + "name":"subdir", //the name of the file / directory + "size":"-1", //the size is -1 because it is a directory + "time":"" //no time for directories optional as depend on (SD_TIMESTAMP_FEATURE) + } + ], + "path":"/", //current path + "occupation":"52", //% of occupation + "status":"subdir created", //status + "total":"192.00 KB", //Formated total space of Filesystem + "used":"100.00 KB" //Formated used space of Filesystem + } + ``` + +### /upload + +this handler is for MKS boards using MKS communication protocol if enabled, it handle only upload on SD + +### /command + +this handler is for all commands the parameter is `cmd=...` +if it is an `[ESPXXX]` command the answer is the `[ESPXXX]` response +if it is not an `[ESPXXX]` command the answer is `ESP3D says: command forwarded` and can be ignored + +### /login + +this handler is for authentication function if enabled +possible options/arguments are: + - `DISCONNECT=YES` +it will clear current session, remove authentication cookie, set status to `disconnected` and response code to 401 - `SUBMIT=YES` +to login it will need also `PASSWORD=...` and `USER=...`, the answer will be 200 if success and 401 if failed +if user is already authenticated it can use `NEWPASSWORD=...` instead of `PASSWORD=...` to change his password, if successful answer will be returned with code 200, otherwise code will be 500 if change failed or if password format is invalid + +Output: + +- if authentified and no submission: + `{"status":"Identified","authentication_lvl":"admin"}` and code 200 +- if not authenticated and no submission: + `{"status":"Wrong authentication!","authentication_lvl":"guest"}` and code 401 + +### /config + +this handler is a shortcut to [ESP420] command in text mode, to get output in json add `json=yes` + +### /updatefw + +this handler is for FW upload and update +Answer output is : +`{"status":"..."}` if upload is successful the ESP will restart + +### /snap + +this handler is on esp32cam with camera enabled to capture a Frame +it answer by sending a jpg image + +### /description.xml + +this handler is for SSDP if enabled to present device informations + +``` + + + 1 + 0 + + http://192.168.2.178:80/ + + urn:schemas-upnp-org:device:upnp:rootdevice:1 + esp3d + / + 52332 + ESP Board + + ESP3D 3.0 + https://www.espressif.com/en/products/devkits + Espressif Systems + https://www.espressif.com + uuid:38323636-4558-4dda-9188-cda0e600cc6c + + + + +``` + +### Captive portal bypass handlers + +to avoid a redirect to index.html and so a refresh of the page, some classic handler have been added so they all go to / handler actually + +- /generate_204 +- /gconnectivitycheck.gstatic.com +- /fwlink/ diff --git a/Memo/TargetFW.md b/Memo/TargetFW.md new file mode 100644 index 00000000..de1a0118 --- /dev/null +++ b/Memo/TargetFW.md @@ -0,0 +1,20 @@ +# Firmware names, ids, usages + +- grblhal + grblhal -80 - grblHAL Fw +- reprap + reprap -70 - NA +- fluidnc + fluidnc -60 - NA +- repetier + repetier - 50 - ESP3D Fw +- smoothieware + smoothieware- 40 - ESP3D Fw +- marlin_embedded + marlin - 30 - ESP3DLib/Marlin +- marlin + marlin - 20 - ESP3D Fw +- grbl + grbl - 10 - ESP3D Fw +- unknown + unknown - 0 - ESP3D Fw diff --git a/Memo/data structure.odt b/Memo/data structure.odt new file mode 100644 index 0000000000000000000000000000000000000000..8c540c44e7b3230e5409b5ebc9b872f7ed7ad33b GIT binary patch literal 18339 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/lang-.json` + + so for French language pack for example: + `npm run package target=languages/printerpack/lang-fr.json` + +## Compare template pack with language pack file + +This script is used to compare current language pack content against the template language pack to see if the language pack need to be updated. + +`npm run check reference=