Fixed service registration for imjoy

This commit is contained in:
Richard 2021-05-31 11:36:32 +01:00
parent 4716dc8812
commit 9b75e8ec05
3 changed files with 62 additions and 15 deletions

View file

@ -0,0 +1,43 @@
<docs>
[TODO: write documentation for this plugin.]
</docs>
<config lang="json">
{
"name": "List services",
"type": "web-worker",
"tags": [],
"ui": "",
"version": "0.1.0",
"cover": "",
"description": "List the available ImJoy services in the console",
"icon": "extension",
"inputs": null,
"outputs": null,
"api_version": "0.1.8",
"env": "",
"permissions": [],
"requirements": [],
"dependencies": []
}
</config>
<script lang="javascript">
class ImJoyPlugin {
async setup() {
api.log('initialized')
}
async run(ctx) {
// get a list of service
const services = await api.getServices({name: "OpenFlexure"});
console.log("OpenFlexure services:");
console.log(services);
const allservices = await api.getServices();
console.log("All services:");
console.log(allservices);
}
}
api.export(new ImJoyPlugin())
</script>

View file

@ -41,6 +41,8 @@ class ImJoyPlugin {
console.log(`Moved Z to ${await ofm.getPosition()}`);
await ofm.setPosition(start[2]);
console.log(`Moved Z to ${await ofm.getPosition()}`);
await ofm.fullFocus();
console.log("Ran a full autofocus");
}
}

View file

@ -200,18 +200,16 @@ export default {
});
this.setupMicroscopeAPI();
this.setupViewers();
// load the script editor for openflexure
await this.loadPlugin(
`${window.location.origin}/OpenFlexureScriptEditor.imjoy.html`
);
// Load the snap image template
await this.loadPlugin(
`${window.location.origin}/OpenFlexureSnapImageTemplate.imjoy.html`
);
// Load the move stage template
await this.loadPlugin(
`${window.location.origin}/OpenFlexureTestMoveStage.imjoy.html`
);
const origin = window.location.origin;
const localPlugins = [
"OpenFlexureSnapImageTemplate",
"OpenFlexureScriptEditor",
"OpenFlexureTestMoveStage",
"ListServices"
];
for(let fname of localPlugins){
await this.loadPlugin(`${origin}/${fname}.imjoy.html`);
}
this.setupPluginEngine();
});
this.imjoy = imjoy;
@ -259,7 +257,7 @@ export default {
}
});
},
setupMicroscopeAPI() {
async setupMicroscopeAPI() {
// Here we register a set of API for controlling the microscope as a service
// For interoperatability, it might be good to reuse a subset of the function names defined in MicroManager
// See here: https://valelab4.ucsf.edu/~MM/doc/MMCore/html/class_c_m_m_core.html
@ -275,7 +273,7 @@ export default {
const service = {
_rintf: true, // this will make sure the function can be called multiple times
type: "#microscope-control",
name: "#openflexure",
name: "OpenFlexure",
lastSnapResponse: null,
snapPreviewImage() {
// The "proper" capture method is more involved - this one pulls a frame out of the preview stream
@ -376,8 +374,12 @@ export default {
return runAutofocus();
}
};
this.imjoy.pm.registerService({ name: "#openflexure" }, service);
const ref = await this.imjoy.pm.registerService(
{type: "#microscope-control", name: "OpenFlexure"},
service
);
console.log("registered service");
console.log(ref);
},
closeWindow(w) {
if (w) {