Skip to content

Commit dafbb87

Browse files
Moved detector routes to DetectorAdapter
1 parent d781642 commit dafbb87

File tree

9 files changed

+40
-102
lines changed

9 files changed

+40
-102
lines changed

mxcubeweb/core/adapter/adapter_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import traceback
44

55
from mxcubecore import (
6-
HardwareRepository as HWR, # noqa: N814 (should be disabled globaly)
6+
HardwareRepository as HWR,
77
)
88
from mxcubecore.utils.conversion import make_table
99

mxcubeweb/core/adapter/detector_adapter.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
from typing import ClassVar
22

3+
from mxcubecore import HardwareRepository as HWR
34
from mxcubecore.HardwareObjects.abstract import AbstractDetector
45

56
from mxcubeweb.core.adapter.adapter_base import AdapterBase
67
from mxcubeweb.core.models.configmodels import ResourceHandlerConfigModel
78

89
resource_handler_config = ResourceHandlerConfigModel(
9-
name="detector_test",
10-
url_prefix="/mxcube/api/v0.1/detectortest",
11-
attributes=["data"],
10+
commands=["display_image"],
11+
attributes=["data", "get_value"],
1212
)
1313

1414

@@ -23,8 +23,29 @@ def __init__(self, ho, role, app):
2323
super().__init__(ho, role, app, resource_handler_config)
2424
ho.connect("stateChanged", self._state_change)
2525

26+
def get_value(self) -> dict:
27+
"""
28+
Get the file suffix of the data files.
29+
"""
30+
return {"fileSuffix": HWR.beamline.detector.get_property("file_suffix", "?")}
31+
2632
def _state_change(self, *args, **kwargs):
2733
self.state_change(*args, **kwargs)
2834

2935
def state(self):
3036
return self._ho.get_state().name.upper()
37+
38+
def display_image(self, path: str, img_num) -> dict:
39+
"""
40+
Notify ADXV and/or Braggy of the image to display.
41+
"""
42+
res = {"path": "", "img": 0}
43+
44+
if path:
45+
fpath, img = HWR.beamline.detector.get_actual_file_path(path, img_num)
46+
HWR.beamline.collect.adxv_notify(fpath, img)
47+
fpath = HWR.beamline.session.get_path_with_proposal_as_root(fpath)
48+
49+
res = {"path": fpath, "img_num": img_num}
50+
51+
return res

mxcubeweb/core/components/beamline.py

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import logging
2-
31
from mxcubecore import HardwareRepository as HWR
42

53
from mxcubeweb.core.adapter.beamline_adapter import BeamlineAdapter
@@ -100,29 +98,3 @@ def beamline_get_all_attributes(self):
10098
def prepare_beamline_for_sample(self):
10199
if hasattr(HWR.beamline.collect, "prepare_for_new_sample"):
102100
HWR.beamline.collect.prepare_for_new_sample()
103-
104-
def get_detector_info(self):
105-
try:
106-
filetype = HWR.beamline.detector.get_property("file_suffix")
107-
except Exception:
108-
filetype = None
109-
110-
if filetype is None:
111-
filetype = "cbf"
112-
logging.getLogger("MX3.HWR").warning(
113-
"Detector file format not specified. Using cbf."
114-
)
115-
116-
return filetype
117-
118-
def display_image(self, path, img_num):
119-
res = {"path": "", "img": 0}
120-
121-
if path:
122-
fpath, img = HWR.beamline.detector.get_actual_file_path(path, img_num)
123-
HWR.beamline.collect.adxv_notify(fpath, img)
124-
fpath = HWR.beamline.session.get_path_with_proposal_as_root(fpath)
125-
126-
res = {"path": fpath, "img_num": img_num}
127-
128-
return res

mxcubeweb/routes/detector.py

Lines changed: 0 additions & 45 deletions
This file was deleted.

mxcubeweb/server.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ def register_routes(mxcube):
119119

120120
from mxcubeweb.routes.beamline import init_route as init_beamline_route
121121
from mxcubeweb.routes.csp_report import init_route as init_csp_route
122-
from mxcubeweb.routes.detector import init_route as init_detector_route
123122
from mxcubeweb.routes.harvester import init_route as init_harvester_route
124123
from mxcubeweb.routes.lims import init_route as init_lims_route
125124
from mxcubeweb.routes.login import init_route as init_login_route
@@ -139,10 +138,6 @@ def register_routes(mxcube):
139138
)
140139
Server._register_route(init_csp_route, mxcube, f"{url_root_prefix}/csp")
141140

142-
Server._register_route(
143-
init_detector_route, mxcube, f"{url_root_prefix}/detector"
144-
)
145-
146141
Server._register_route(init_lims_route, mxcube, f"{url_root_prefix}/lims")
147142

148143
Server._register_route(init_login_route, mxcube, f"{url_root_prefix}/login")

ruff.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ select = [
1515
"ALL",
1616
]
1717

18+
[lint.pep8-naming]
19+
extend-ignore-names = ["HWR"] # To avoid "N814": Camelcase `HardwareRepository` imported as constant `HWR`
20+
1821

1922
[lint.per-file-ignores]
2023
"docs/conf.py" = [

ui/src/actions/general.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { fetchDisplayImage } from '../api/detector';
1+
import { sendExecuteCommand } from '../api/hardware-object';
22

33
export function addUserMessage(records, target) {
44
return {
@@ -54,9 +54,15 @@ export function showConfirmClearQueueDialog(show = true) {
5454

5555
export function displayImage(path, imgNum) {
5656
return async () => {
57-
const data = await fetchDisplayImage(path, imgNum);
58-
if (data && data.image_url) {
59-
window.open(data.image_url, 'braggy');
60-
}
57+
const data = await sendExecuteCommand(
58+
'detector',
59+
'detector',
60+
'display_image',
61+
{ path, imgNum },
62+
);
63+
window.open(
64+
`https://braggy.mxcube3.esrf.fr/?file=${data.path}/image_${data.img_num}.h5.dataset`,
65+
'braggy',
66+
);
6167
};
6268
}

ui/src/actions/login.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
/* eslint-disable promise/prefer-await-to-then */
22
import { fetchBeamlineSetup } from '../api/beamline';
3-
import { fetchDetectorInfo } from '../api/detector';
43
import { fetchValue } from '../api/hardware-object';
54
import { fetchHarvesterInitialState } from '../api/harvester';
65
import { sendSelectProposal } from '../api/lims';
@@ -112,7 +111,7 @@ export function getInitialState() {
112111
fetchValue('diffractometer', 'diffractometer')
113112
.then((diffractometer) => ({ diffractometer }))
114113
.catch(notify),
115-
fetchDetectorInfo()
114+
fetchValue('detector', 'detector')
116115
.then((detector) => ({ detector }))
117116
.catch(notify),
118117
fetchAvailableTasks()

ui/src/api/detector.js

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)