diff --git a/openflexure_microscope/api/static/package.json b/openflexure_microscope/api/static/package.json
index af5be7b0..b2cc386c 100644
--- a/openflexure_microscope/api/static/package.json
+++ b/openflexure_microscope/api/static/package.json
@@ -10,7 +10,7 @@
"license": "GNU General Public License v3.0 ",
"scripts": {
"build": "vue-cli-service build --mode production",
- "serve": "vue-cli-service serve --mode development"
+ "serve": "vue-cli-service serve --mode development"
},
"dependencies": {
"material-design-icons": "^3.0.1",
diff --git a/openflexure_microscope/api/static/src/components/appContent.vue b/openflexure_microscope/api/static/src/components/appContent.vue
index 24439529..122adca7 100644
--- a/openflexure_microscope/api/static/src/components/appContent.vue
+++ b/openflexure_microscope/api/static/src/components/appContent.vue
@@ -55,15 +55,20 @@
>
camera_alt
-
- settings
-
+
+
+
+
+
+ settings_overscan
+
+
@@ -81,8 +86,18 @@
+ settings
+
+
+
+
+
+
+
+
+
+
+
+
No scan extension found
+
+
+
+
+
+
+
diff --git a/openflexure_microscope/api/static/src/components/genericComponents/taskSubmitter.vue b/openflexure_microscope/api/static/src/components/genericComponents/taskSubmitter.vue
index 0d521b1b..88c1fb29 100644
--- a/openflexure_microscope/api/static/src/components/genericComponents/taskSubmitter.vue
+++ b/openflexure_microscope/api/static/src/components/genericComponents/taskSubmitter.vue
@@ -16,7 +16,7 @@
class="uk-button uk-button-danger uk-margin-remove uk-float-right uk-width-1-1"
@click="terminateTask()"
>
- Terminate
+ Cancel
@@ -193,32 +193,29 @@ export default {
var checkCondition = (resolve, reject) => {
// If the condition is met, we're done!
- axios
- .get(this.taskUrl)
- .then(response => {
- console.log(response.data.status);
- var result = response.data.status;
- // If the task ends with success
- if (result == "completed") {
- resolve(response.data);
- }
- // If task ends with an error
- else if (result == "error") {
- // Pass the error string back with reject
- reject(new Error(response.data.return));
- }
- // If task ends with termination
- else if (result == "cancelled") {
- // Pass a generic termination error back with reject
- reject(new Error("Task cancelled"));
- }
- else {
- // Since the task is still running, we can update the progress bar
- this.progress = response.data.progress;
- // Check again after timeout
- setTimeout(checkCondition, interval, resolve, reject);
- }
- });
+ axios.get(this.taskUrl).then(response => {
+ console.log(response.data.status);
+ var result = response.data.status;
+ // If the task ends with success
+ if (result == "completed") {
+ resolve(response.data);
+ }
+ // If task ends with an error
+ else if (result == "error") {
+ // Pass the error string back with reject
+ reject(new Error(response.data.return));
+ }
+ // If task ends with termination
+ else if (result == "cancelled") {
+ // Pass a generic termination error back with reject
+ reject(new Error("Task cancelled"));
+ } else {
+ // Since the task is still running, we can update the progress bar
+ this.progress = response.data.progress;
+ // Check again after timeout
+ setTimeout(checkCondition, interval, resolve, reject);
+ }
+ });
};
return new Promise(checkCondition);
@@ -227,20 +224,16 @@ export default {
pollProgress: function() {
console.log("Starting progress polling");
- axios
- .get(this.taskUrl)
- .then(response => {
- console.log("PROGRESS RESPONSE: ", response.data.progress);
- this.progress = response.data.progress;
- });
+ axios.get(this.taskUrl).then(response => {
+ console.log("PROGRESS RESPONSE: ", response.data.progress);
+ this.progress = response.data.progress;
+ });
},
terminateTask: function() {
- axios
- .delete(this.taskUrl)
- .then(response => {
- console.log("TERMINATION RESPONSE: ", response.data);
- });
+ axios.delete(this.taskUrl).then(response => {
+ console.log("TERMINATION RESPONSE: ", response.data);
+ });
}
}
};
diff --git a/openflexure_microscope/api/static/src/components/tabContentComponents/slideScanContent.vue b/openflexure_microscope/api/static/src/components/tabContentComponents/slideScanContent.vue
new file mode 100644
index 00000000..c04a6ce7
--- /dev/null
+++ b/openflexure_microscope/api/static/src/components/tabContentComponents/slideScanContent.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/openflexure_microscope/api/static/src/components/viewComponents/settingsComponents/featuresSettings.vue b/openflexure_microscope/api/static/src/components/viewComponents/settingsComponents/featuresSettings.vue
new file mode 100644
index 00000000..97e033e7
--- /dev/null
+++ b/openflexure_microscope/api/static/src/components/viewComponents/settingsComponents/featuresSettings.vue
@@ -0,0 +1,55 @@
+
+
+
Additional features
+
+
+ Enable IHI Slide Scan
+
+
+ Enabling IHI Slide Scan will add a new tab designed to simplify
+ acquiring blood smear tile scans.
+ While this may be useful for other applications, it is primarily designed
+ for use in clinics acquiring blood smear samples using a 100x oil-immersion
+ objective, with a Raspberry Pi Camera v2.
+
+
+
+
+
+
+
diff --git a/openflexure_microscope/api/static/src/components/viewComponents/settingsDisplay.vue b/openflexure_microscope/api/static/src/components/viewComponents/settingsDisplay.vue
index 9d3266dd..60cd1e0a 100644
--- a/openflexure_microscope/api/static/src/components/viewComponents/settingsDisplay.vue
+++ b/openflexure_microscope/api/static/src/components/viewComponents/settingsDisplay.vue
@@ -17,6 +17,19 @@
Display
+
+
+ Features
+
+
+
+
+
+
+
+
=0.3.0)", "Flask (>=0.12.2)", "Django (>=1.11.16)", "bottle (>=0.12.13)", "tornado (>=4.5.2)", "pyramid (>=1.9.1)", "webapp2 (>=3.0.0b1)", "falcon (>=2.0.0)", "aiohttp (>=3.0.0)", "mypy (0.770)", "flake8 (3.7.9)", "flake8-bugbear (20.1.4)", "pre-commit (>=1.20,<3.0)", "tox", "mock"]
-docs = ["Sphinx (3.0.3)", "sphinx-issues (1.2.0)", "sphinx-typlog-theme (0.8.0)", "Flask (>=0.12.2)", "Django (>=1.11.16)", "bottle (>=0.12.13)", "tornado (>=4.5.2)", "pyramid (>=1.9.1)", "webapp2 (>=3.0.0b1)", "falcon (>=2.0.0)", "aiohttp (>=3.0.0)"]
+dev = ["pytest", "webtest (2.0.35)", "webtest-aiohttp (2.0.0)", "pytest-aiohttp (>=0.3.0)", "Flask (>=0.12.2)", "Django (>=1.11.16)", "bottle (>=0.12.13)", "tornado (>=4.5.2)", "pyramid (>=1.9.1)", "webapp2 (>=3.0.0b1)", "falcon (>=2.0.0)", "aiohttp (>=3.0.0)", "mypy (0.782)", "flake8 (3.8.3)", "flake8-bugbear (20.1.4)", "pre-commit (>=2.4,<3.0)", "tox", "mock"]
+docs = ["Sphinx (3.2.1)", "sphinx-issues (1.2.0)", "sphinx-typlog-theme (0.8.0)", "Flask (>=0.12.2)", "Django (>=1.11.16)", "bottle (>=0.12.13)", "tornado (>=4.5.2)", "pyramid (>=1.9.1)", "webapp2 (>=3.0.0b1)", "falcon (>=2.0.0)", "aiohttp (>=3.0.0)"]
frameworks = ["Flask (>=0.12.2)", "Django (>=1.11.16)", "bottle (>=0.12.13)", "tornado (>=4.5.2)", "pyramid (>=1.9.1)", "webapp2 (>=3.0.0b1)", "falcon (>=2.0.0)", "aiohttp (>=3.0.0)"]
-lint = ["mypy (0.770)", "flake8 (3.7.9)", "flake8-bugbear (20.1.4)", "pre-commit (>=1.20,<3.0)"]
+lint = ["mypy (0.782)", "flake8 (3.8.3)", "flake8-bugbear (20.1.4)", "pre-commit (>=2.4,<3.0)"]
tests = ["pytest", "webtest (2.0.35)", "webtest-aiohttp (2.0.0)", "pytest-aiohttp (>=0.3.0)", "Flask (>=0.12.2)", "Django (>=1.11.16)", "bottle (>=0.12.13)", "tornado (>=4.5.2)", "pyramid (>=1.9.1)", "webapp2 (>=3.0.0b1)", "falcon (>=2.0.0)", "aiohttp (>=3.0.0)", "mock"]
[[package]]
@@ -1220,8 +1220,8 @@ urllib3 = [
{file = "urllib3-1.25.10.tar.gz", hash = "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a"},
]
webargs = [
- {file = "webargs-6.1.0-py2.py3-none-any.whl", hash = "sha256:cf0b5e2fdfb81f28b9332fce15621069d3fbc910a01c7ca8a5e166371699927b"},
- {file = "webargs-6.1.0.tar.gz", hash = "sha256:ebb47fb35c3c4fc764213a17d1686e82fec54759ebed2b0715907d566668bb3f"},
+ {file = "webargs-6.1.1-py2.py3-none-any.whl", hash = "sha256:2ead6ce38559152043ab4ada4d389aef6c804b0c169482e7c92b3f498f690b2c"},
+ {file = "webargs-6.1.1.tar.gz", hash = "sha256:412ecadd977afdea0ed6fa5f5b65ddd13a099269e622ec537f9c74c443ce4d0b"},
]
werkzeug = [
{file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"},