Skip to content

Commit 566b3a2

Browse files
feat: add viewport clicked event and clear selections method (#175)
* fix: remove useless error; make event publisher more robust * feat: add no feature clicked event * fix: linting * feat: add clear selections method * feat: add NO_ROI_SELECTED event * feat: change to viewport clicked event * fix: linting * feat: change viewport clicked event payload * fix: linting --------- Co-authored-by: Igor Octaviano <igoroctaviano@gmail.com>
1 parent 9d98988 commit 566b3a2

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

src/eventPublisher.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const publish = (el, type, payload = null) => {
2727
event.initCustomEvent(type, true, true, detail)
2828
}
2929

30-
return el.dispatchEvent(event)
30+
return el?.dispatchEvent?.(event)
3131
}
3232

3333
export default publish

src/events.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ const EVENTS = {
1818
ROI_DRAWN: `${PROJECT_NAME}_roi_drawn`,
1919
/** Triggered when a ROI was selected. */
2020
ROI_SELECTED: `${PROJECT_NAME}_roi_selected`,
21+
/** Triggered when the map is clicked. */
22+
VIEWPORT_CLICKED: `${PROJECT_NAME}_viewport_clicked`,
2123
/** Triggered when a ROI was double clicked. */
2224
ROI_DOUBLE_CLICKED: `${PROJECT_NAME}_roi_double_clicked`,
2325
/** Triggered when mouse moves. */

src/viewer.js

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1685,6 +1685,18 @@ class VolumeImageViewer {
16851685
}
16861686

16871687
clickEvent = 'click'
1688+
const features = this[_map].getFeaturesAtPixel(event.pixel)
1689+
const rois = features.map(feature =>
1690+
this._getROIFromFeature(
1691+
feature,
1692+
this[_pyramid].metadata,
1693+
this[_affine]
1694+
))
1695+
1696+
publish(this[_map].getTargetElement(), EVENT.VIEWPORT_CLICKED, {
1697+
rois
1698+
})
1699+
16881700
this[_map].forEachFeatureAtPixel(
16891701
event.pixel,
16901702
(feature) => {
@@ -2934,6 +2946,14 @@ class VolumeImageViewer {
29342946
}
29352947
}
29362948

2949+
/**
2950+
* Clear all selections.
2951+
*/
2952+
clearSelections () {
2953+
this.deactivateSelectInteraction()
2954+
this.activateSelectInteraction()
2955+
}
2956+
29372957
/**
29382958
* Activate drag pan interaction.
29392959
*
@@ -3123,11 +3143,8 @@ class VolumeImageViewer {
31233143
console.info(`get ROI ${uid}`)
31243144
const feature = this[_drawingSource].getFeatureById(uid)
31253145
if (feature == null) {
3126-
const error = new CustomError(
3127-
errorTypes.VISUALIZATION,
3128-
`Could not find a ROI with UID "${uid}".`
3129-
)
3130-
throw this[_options].errorInterceptor(error)
3146+
console.warn(`Could not find a ROI with UID "${uid}".`)
3147+
return
31313148
}
31323149

31333150
return this._getROIFromFeature(

0 commit comments

Comments
 (0)