forked from spacetelescope/jdaviz
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
data menu infrastructure (spacetelescope#3173)
* data menu infrastructure * use message instead of state-callback to update viewer/layer_icons * avoid setting viewer_ids/reference repeatedly * replace mention to old viewer_items['visible_layers'] * allow viewers to not have a data menu instance (Mosviz TableViewer) * code cleanup
- Loading branch information
1 parent
498659f
commit ae33f67
Showing
8 changed files
with
154 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
from .data_menu import * # noqa |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
from traitlets import Dict, Unicode | ||
|
||
from jdaviz.core.template_mixin import TemplateMixin | ||
from jdaviz.core.user_api import UserApiWrapper | ||
from jdaviz.core.events import IconsUpdatedMessage | ||
|
||
__all__ = ['DataMenu'] | ||
|
||
|
||
class DataMenu(TemplateMixin): | ||
"""Viewer Data Menu""" | ||
template_file = __file__, "data_menu.vue" | ||
|
||
viewer_id = Unicode().tag(sync=True) | ||
viewer_reference = Unicode().tag(sync=True) | ||
|
||
layer_icons = Dict().tag(sync=True) # read-only, see app.state.layer_icons | ||
viewer_icons = Dict().tag(sync=True) # read-only, see app.state.viewer_icons | ||
|
||
visible_layers = Dict().tag(sync=True) # read-only, set by viewer | ||
|
||
def __init__(self, viewer, *args, **kwargs): | ||
super().__init__(*args, **kwargs) | ||
self._viewer = viewer | ||
# first attach callback to catch any updates to viewer/layer icons and then | ||
# set their initial state | ||
self.hub.subscribe(self, IconsUpdatedMessage, self._on_app_icons_updated) | ||
self.viewer_icons = dict(self.app.state.viewer_icons) | ||
self.layer_icons = dict(self.app.state.layer_icons) | ||
|
||
@property | ||
def user_api(self): | ||
expose = [] | ||
return UserApiWrapper(self, expose=expose) | ||
|
||
def set_viewer_id(self): | ||
# viewer_ids are not populated on the viewer at init, so we'll keep checking and set | ||
# these the first time that they are available | ||
if len(self.viewer_id) and len(self.viewer_reference): | ||
return | ||
try: | ||
self.viewer_id = getattr(self._viewer, '_reference_id', '') | ||
self.viewer_reference = self._viewer.reference | ||
except AttributeError: | ||
return | ||
|
||
def _on_app_icons_updated(self, msg): | ||
if msg.icon_type == 'viewer': | ||
self.viewer_icons = msg.icons | ||
elif msg.icon_type == 'layer': | ||
self.layer_icons = msg.icons | ||
self.set_viewer_id() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
<template> | ||
<div> | ||
<div v-if="Object.keys(viewer_icons).length > 1" class="viewer-label invert-if-dark"> | ||
<j-tooltip span_style="white-space: nowrap"> | ||
<j-layer-viewer-icon span_style="float: right;" :icon="viewer_icons[viewer_id]"></j-layer-viewer-icon> | ||
</j-tooltip> | ||
<span class="invert-if-dark" style="margin-left: 24px; margin-right: 32px; line-height: 24px">{{viewer_reference || viewer_id}}</span> | ||
</div> | ||
|
||
<div v-for="(layer_info, layer_name) in visible_layers" class="viewer-label invert-if-dark"> | ||
<j-tooltip span_style="white-space: nowrap"> | ||
<j-layer-viewer-icon span_style="float: right;" :icon="layer_icons[layer_name]" :linewidth="layer_info.linewidth" :linestyle="'solid'" :color="layer_info.color"></j-layer-viewer-icon> | ||
</j-tooltip> | ||
<span class="invert-if-dark" style="margin-left: 24px; margin-right: 32px; line-height: 24px"> | ||
<v-icon v-if="layer_info.prefix_icon" dense> | ||
{{layer_info.prefix_icon}} | ||
</v-icon> | ||
{{layer_name}} | ||
</span> | ||
</div> | ||
</div> | ||
</template> | ||
|
||
<style scoped> | ||
.viewer-label { | ||
display: block; | ||
float: right; | ||
background-color: #c3c3c3c3; | ||
width: 24px; | ||
overflow: hidden; | ||
white-space: nowrap; | ||
/*cursor: pointer;*/ | ||
} | ||
.viewer-label:last-child { | ||
padding-bottom: 2px; | ||
} | ||
.viewer-label:hover { | ||
background-color: #e5e5e5; | ||
width: auto; | ||
border-bottom-left-radius: 4px; | ||
border-top-left-radius: 4px; | ||
} | ||
</style> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters