diff --git a/docs/configuration/moonraker.md b/docs/configuration/moonraker.md
index a44bdc16a4..d13e5e7152 100644
--- a/docs/configuration/moonraker.md
+++ b/docs/configuration/moonraker.md
@@ -30,18 +30,21 @@ and
This configures the general configuration of your moonraker instance. In most
cases, you shouldn't need to touch anything here.
+## [file_manager] block
+
If you have a FluiddPI installation of `1.14` or below, it may be worth adding a
logs path, which will expose all logs inside of Fluidd. [KIUAH](/installation/kiauh) can
provide a gracefull upgrade path in order to re-arrange all of your logs into
the same place for this to be most benifical.
-```sh
+```yaml
+[file_manager]
log_path: ~/klipper_logs
```
See the [configuration example](/configuration/moonraker_conf) where this belongs.
-### Temperature & GCODE store size
+## [data_store] block
Temperature and gcode store sizes can be configured in moonraker.
This is especially useful for temperature store data, as it
@@ -52,6 +55,7 @@ Temperature store size is in seconds, while the gcode store size is defined
in an entry count.
```yaml
+[data_store]
temperature_store_size: 600
gcode_store_size: 1000
```
diff --git a/docs/configuration/moonraker_conf.md b/docs/configuration/moonraker_conf.md
index b1abd66f4f..be45bed1d0 100644
--- a/docs/configuration/moonraker_conf.md
+++ b/docs/configuration/moonraker_conf.md
@@ -19,10 +19,14 @@ Your moonraker configuration can usually be found here: `~/klipper_config/moonra
host: 0.0.0.0
port: 7125
enable_debug_logging: False
+
+[file_manager]
config_path: ~/klipper_config
+log_path: ~/klipper_logs
+
+[data_store]
temperature_store_size: 600
gcode_store_size: 1000
-log_path: ~/klipper_logs
[authorization]
force_logins: true
diff --git a/package-lock.json b/package-lock.json
index 255ea1592d..c66b6a7df9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,9 +19,8 @@
"core-js": "^3.14.0",
"dayjs": "^1.10.5",
"deepmerge": "^4.2.2",
- "echarts": "^5.1.2",
- "echarts-for-vue": "^1.4.1",
- "echarts-gl": "^2.0.6",
+ "echarts": "^5.3.0",
+ "echarts-gl": "^2.0.9",
"jwt-decode": "^3.1.2",
"lodash": "^4.17.21",
"md5": "^2.3.0",
@@ -38,6 +37,7 @@
"vue": "^2.6.14",
"vue-class-component": "^7.2.3",
"vue-debounce-decorator": "^1.0.1",
+ "vue-echarts": "^6.0.2",
"vue-headful": "^2.1.0",
"vue-i18n": "^8.24.5",
"vue-inline-svg": "^2.0.0",
@@ -69,6 +69,7 @@
"@vue/cli-plugin-unit-jest": "^4.5.13",
"@vue/cli-plugin-vuex": "^4.5.13",
"@vue/cli-service": "^4.5.13",
+ "@vue/composition-api": "^1.4.9",
"@vue/eslint-config-standard": "^5.1.2",
"@vue/eslint-config-typescript": "^5.0.2",
"@vue/test-utils": "^1.2.1",
@@ -4509,14 +4510,6 @@
"@types/node": "*"
}
},
- "node_modules/@types/echarts": {
- "version": "4.9.7",
- "resolved": "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.7.tgz",
- "integrity": "sha512-+klqEur0+bh1UjR6EpGE023vxpqzPSk58X5JwVEIBu0NOYMaMPKeM/TMnbL43BlDUZv4xttZFdeDdOtFk/YwzQ==",
- "dependencies": {
- "@types/zrender": "*"
- }
- },
"node_modules/@types/eslint-visitor-keys": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
@@ -4838,11 +4831,6 @@
"integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
"dev": true
},
- "node_modules/@types/zrender": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.0.tgz",
- "integrity": "sha512-s89GOIeKFiod2KSqHkfd2rzx+T2DVu7ihZCBEBnhFrzvQPUmzvDSBot9Fi1DfMQm9Odg+rTqoMGC38RvrwJK2w=="
- },
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "2.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz",
@@ -6777,6 +6765,15 @@
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
+ "node_modules/@vue/composition-api": {
+ "version": "1.4.9",
+ "resolved": "https://registry.npmjs.org/@vue/composition-api/-/composition-api-1.4.9.tgz",
+ "integrity": "sha512-l6YOeg5LEXmfPqyxAnBaCv1FMRw0OGKJ4m6nOWRm6ngt5TuHcj5ZoBRN+LXh3J0u6Ur3C4VA+RiKT+M0eItr/g==",
+ "devOptional": true,
+ "peerDependencies": {
+ "vue": ">= 2.5 < 3"
+ }
+ },
"node_modules/@vue/eslint-config-standard": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-5.1.2.tgz",
@@ -12431,22 +12428,10 @@
"zrender": "5.3.0"
}
},
- "node_modules/echarts-for-vue": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/echarts-for-vue/-/echarts-for-vue-1.4.1.tgz",
- "integrity": "sha512-o1VKvX5lCo5Nb8B5EEr6ztt+hRi4W9RnKn7wIk+l3fZ0S2yVXanqZckgBfO7v8vSS+xOJq/Df5flrNUQIRhn/Q==",
- "dependencies": {
- "@types/echarts": "^4.9.7"
- },
- "peerDependencies": {
- "echarts": ">=3",
- "vue": ">=2"
- }
- },
"node_modules/echarts-gl": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/echarts-gl/-/echarts-gl-2.0.6.tgz",
- "integrity": "sha512-yRntZUlDJDqWTZ0owaKGZYK8G/pjr/BlsWjGspub0sWN5wIRvV6oaiqdRhmSJU27dINExXmoEsEq67Mo0omhaQ==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/echarts-gl/-/echarts-gl-2.0.9.tgz",
+ "integrity": "sha512-oKeMdkkkpJGWOzjgZUsF41DOh6cMsyrGGXimbjK2l6Xeq/dBQu4ShG2w2Dzrs/1bD27b2pLTGSaUzouY191gzA==",
"dependencies": {
"claygl": "^1.2.1",
"zrender": "^5.1.1"
@@ -27608,6 +27593,11 @@
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
"dev": true
},
+ "node_modules/resize-detector": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz",
+ "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+ },
"node_modules/resolve": {
"version": "1.22.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
@@ -31361,6 +31351,51 @@
"resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-6.3.2.tgz",
"integrity": "sha512-cH208IoM+jgZyEf/g7mnFyofwPDJTM/QvBNhYMjqGB8fCsRyTf68rH2ISw/G20tJv+5mIThQ3upKwoL4jLTr1A=="
},
+ "node_modules/vue-demi": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.1.tgz",
+ "integrity": "sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-echarts": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/vue-echarts/-/vue-echarts-6.0.2.tgz",
+ "integrity": "sha512-9xDokauJtAc389MNKbwi1I0VDmp4Y6ndAJTQ8T9K7H0ffosTe1OJSJbUtkT7/fVLDFzlCcmg2TfAKaMzbpg5yQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "resize-detector": "^0.3.0",
+ "vue-demi": "^0.12.1"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.5",
+ "echarts": "^5.1.2",
+ "vue": "^2.6.12 || ^3.1.1"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
"node_modules/vue-eslint-parser": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz",
@@ -36616,14 +36651,6 @@
"@types/node": "*"
}
},
- "@types/echarts": {
- "version": "4.9.7",
- "resolved": "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.7.tgz",
- "integrity": "sha512-+klqEur0+bh1UjR6EpGE023vxpqzPSk58X5JwVEIBu0NOYMaMPKeM/TMnbL43BlDUZv4xttZFdeDdOtFk/YwzQ==",
- "requires": {
- "@types/zrender": "*"
- }
- },
"@types/eslint-visitor-keys": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
@@ -36944,11 +36971,6 @@
"integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
"dev": true
},
- "@types/zrender": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.0.tgz",
- "integrity": "sha512-s89GOIeKFiod2KSqHkfd2rzx+T2DVu7ihZCBEBnhFrzvQPUmzvDSBot9Fi1DfMQm9Odg+rTqoMGC38RvrwJK2w=="
- },
"@typescript-eslint/eslint-plugin": {
"version": "2.34.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz",
@@ -38486,6 +38508,13 @@
}
}
},
+ "@vue/composition-api": {
+ "version": "1.4.9",
+ "resolved": "https://registry.npmjs.org/@vue/composition-api/-/composition-api-1.4.9.tgz",
+ "integrity": "sha512-l6YOeg5LEXmfPqyxAnBaCv1FMRw0OGKJ4m6nOWRm6ngt5TuHcj5ZoBRN+LXh3J0u6Ur3C4VA+RiKT+M0eItr/g==",
+ "devOptional": true,
+ "requires": {}
+ },
"@vue/eslint-config-standard": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-5.1.2.tgz",
@@ -43134,18 +43163,10 @@
}
}
},
- "echarts-for-vue": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/echarts-for-vue/-/echarts-for-vue-1.4.1.tgz",
- "integrity": "sha512-o1VKvX5lCo5Nb8B5EEr6ztt+hRi4W9RnKn7wIk+l3fZ0S2yVXanqZckgBfO7v8vSS+xOJq/Df5flrNUQIRhn/Q==",
- "requires": {
- "@types/echarts": "^4.9.7"
- }
- },
"echarts-gl": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/echarts-gl/-/echarts-gl-2.0.6.tgz",
- "integrity": "sha512-yRntZUlDJDqWTZ0owaKGZYK8G/pjr/BlsWjGspub0sWN5wIRvV6oaiqdRhmSJU27dINExXmoEsEq67Mo0omhaQ==",
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/echarts-gl/-/echarts-gl-2.0.9.tgz",
+ "integrity": "sha512-oKeMdkkkpJGWOzjgZUsF41DOh6cMsyrGGXimbjK2l6Xeq/dBQu4ShG2w2Dzrs/1bD27b2pLTGSaUzouY191gzA==",
"requires": {
"claygl": "^1.2.1",
"zrender": "^5.1.1"
@@ -55150,6 +55171,11 @@
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
"dev": true
},
+ "resize-detector": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz",
+ "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+ },
"resolve": {
"version": "1.22.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
@@ -58168,6 +58194,21 @@
}
}
},
+ "vue-demi": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.1.tgz",
+ "integrity": "sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==",
+ "requires": {}
+ },
+ "vue-echarts": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/vue-echarts/-/vue-echarts-6.0.2.tgz",
+ "integrity": "sha512-9xDokauJtAc389MNKbwi1I0VDmp4Y6ndAJTQ8T9K7H0ffosTe1OJSJbUtkT7/fVLDFzlCcmg2TfAKaMzbpg5yQ==",
+ "requires": {
+ "resize-detector": "^0.3.0",
+ "vue-demi": "^0.12.1"
+ }
+ },
"vue-eslint-parser": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz",
diff --git a/package.json b/package.json
index 6719d629fa..70d39e6ee6 100644
--- a/package.json
+++ b/package.json
@@ -41,9 +41,8 @@
"core-js": "^3.14.0",
"dayjs": "^1.10.5",
"deepmerge": "^4.2.2",
- "echarts": "^5.1.2",
- "echarts-for-vue": "^1.4.1",
- "echarts-gl": "^2.0.6",
+ "echarts": "^5.3.0",
+ "echarts-gl": "^2.0.9",
"jwt-decode": "^3.1.2",
"lodash": "^4.17.21",
"md5": "^2.3.0",
@@ -60,6 +59,7 @@
"vue": "^2.6.14",
"vue-class-component": "^7.2.3",
"vue-debounce-decorator": "^1.0.1",
+ "vue-echarts": "^6.0.2",
"vue-headful": "^2.1.0",
"vue-i18n": "^8.24.5",
"vue-inline-svg": "^2.0.0",
@@ -91,6 +91,7 @@
"@vue/cli-plugin-unit-jest": "^4.5.13",
"@vue/cli-plugin-vuex": "^4.5.13",
"@vue/cli-service": "^4.5.13",
+ "@vue/composition-api": "^1.4.9",
"@vue/eslint-config-standard": "^5.1.2",
"@vue/eslint-config-typescript": "^5.0.2",
"@vue/test-utils": "^1.2.1",
diff --git a/src/App.vue b/src/App.vue
index 7a27417831..1266948535 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -29,6 +29,7 @@
fab
fixed
bottom left
+ class="ml-2 mb-2"
color="error"
@click="emergencyStop()"
>
diff --git a/src/components/settings/cameras/CameraConfigDialog.vue b/src/components/settings/cameras/CameraConfigDialog.vue
index 35e3033bef..db32068f0b 100644
--- a/src/components/settings/cameras/CameraConfigDialog.vue
+++ b/src/components/settings/cameras/CameraConfigDialog.vue
@@ -129,7 +129,6 @@
single-line
hide-details="auto"
v-model.number="camera.fpsidletarget"
- :rules="[rules.required]"
>
diff --git a/src/components/settings/cameras/Cameras.vue b/src/components/settings/cameras/Cameras.vue
index 910969ebd0..9acfc2bbd1 100644
--- a/src/components/settings/cameras/Cameras.vue
+++ b/src/components/settings/cameras/Cameras.vue
@@ -90,6 +90,7 @@ export default class CameraSettings extends Vue {
name: '',
type: 'mjpgadaptive',
fpstarget: 15,
+ fpsidletarget: 5,
url: Globals.DEFAULTS.CAMERA_URL
}
diff --git a/src/components/ui/AppChart.vue b/src/components/ui/AppChart.vue
index bd28aea266..9d58a20afd 100644
--- a/src/components/ui/AppChart.vue
+++ b/src/components/ui/AppChart.vue
@@ -4,22 +4,23 @@
class="chart"
:style="{ 'height': height }"
>
-
-
+