e3sm-quickview 2.8.2__tar.gz → 2.8.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/PKG-INFO +3 -3
  2. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/pyproject.toml +5 -3
  3. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/__init__.py +1 -1
  4. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/app.py +1 -0
  5. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/dialogs.py +57 -1
  6. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/file_browser.py +2 -0
  7. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/pipeline.py +2 -1
  8. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/view_panel.py +42 -6
  9. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/.gitignore +0 -0
  10. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/LICENSE +0 -0
  11. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/README.md +0 -0
  12. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/assets/__init__.py +0 -0
  13. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/assets/app-icon.png +0 -0
  14. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/assets/banner.jpg +0 -0
  15. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/cli/__init__.py +0 -0
  16. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/cli/chunk.py +0 -0
  17. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/__init__.py +0 -0
  18. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/css.py +0 -0
  19. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/doc.py +0 -0
  20. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/drawers.py +0 -0
  21. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/toolbars.py +0 -0
  22. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/tools.py +0 -0
  23. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/components/view.py +0 -0
  24. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/data/connectivity.nc +0 -0
  25. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/data/globe.vtk +0 -0
  26. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/jupyter/__init__.py +0 -0
  27. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/jupyter/icons/web.svg +0 -0
  28. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/jupyter/proxy.py +0 -0
  29. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/module/__init__.py +0 -0
  30. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/module/serve/html2canvas.js +0 -0
  31. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/module/serve/style.css +0 -0
  32. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/module/serve/utils.js +0 -0
  33. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/plugins/eam_filters.py +0 -0
  34. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/plugins/eam_gridlines.py +0 -0
  35. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/plugins/eam_projection.py +0 -0
  36. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/plugins/eam_reader.py +0 -0
  37. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/__init__.py +0 -0
  38. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/acton_PARAVIEW.xml +0 -0
  39. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/bam_PARAVIEW.xml +0 -0
  40. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/batlow_PARAVIEW.xml +0 -0
  41. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/berlin_PARAVIEW.xml +0 -0
  42. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/davos_PARAVIEW.xml +0 -0
  43. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/grayC_PARAVIEW.xml +0 -0
  44. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/lajolla_PARAVIEW.xml +0 -0
  45. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/lisbon_PARAVIEW.xml +0 -0
  46. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/managua_PARAVIEW.xml +0 -0
  47. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/navia_PARAVIEW.xml +0 -0
  48. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/oslo_PARAVIEW.xml +0 -0
  49. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/roma_PARAVIEW.xml +0 -0
  50. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/tokyo_PARAVIEW.xml +0 -0
  51. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/vanimo_PARAVIEW.xml +0 -0
  52. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/presets/vik_PARAVIEW.xml +0 -0
  53. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/__init__.py +0 -0
  54. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/cli.py +0 -0
  55. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/colors.py +0 -0
  56. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/compute.py +0 -0
  57. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/constants.py +0 -0
  58. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/debounce.py +0 -0
  59. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/geometry.py +0 -0
  60. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/js.py +0 -0
  61. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/math.py +0 -0
  62. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/utils/perf.py +0 -0
  63. {e3sm_quickview-2.8.2 → e3sm_quickview-2.8.4}/src/e3sm_quickview/view_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: e3sm-quickview
3
- Version: 2.8.2
3
+ Version: 2.8.4
4
4
  Summary: An application to explore/analyze data for atmosphere component for E3SM
5
5
  Author: Kitware Inc.
6
6
  License: Apache Software License
@@ -18,10 +18,10 @@ Requires-Python: >=3.10
18
18
  Requires-Dist: netcdf4>=1.6.5
19
19
  Requires-Dist: pillow
20
20
  Requires-Dist: pyproj>=3.6.1
21
- Requires-Dist: trame-colormaps>=1.4.3
21
+ Requires-Dist: trame-colormaps>=1.5.0
22
22
  Requires-Dist: trame-components
23
23
  Requires-Dist: trame-dataclass>=2.0.2
24
- Requires-Dist: trame-rca[turbo]>=2.5.1
24
+ Requires-Dist: trame-rca[turbo]>=2.6
25
25
  Requires-Dist: trame-tauri>=0.6.2
26
26
  Requires-Dist: trame-vuetify>=3.1
27
27
  Requires-Dist: trame>=3.13.2
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "e3sm-quickview"
3
- version = "2.8.2"
3
+ version = "2.8.4"
4
4
  description = "An application to explore/analyze data for atmosphere component for E3SM"
5
5
  authors = [
6
6
  {name = "Kitware Inc."},
@@ -23,14 +23,14 @@ dependencies = [
23
23
  "wslink>=2.5.7",
24
24
  "trame>=3.13.2",
25
25
  "trame-vuetify>=3.1",
26
- "trame-rca[turbo]>=2.5.1",
26
+ "trame-rca[turbo]>=2.6",
27
27
  "pyproj>=3.6.1",
28
28
  "netCDF4>=1.6.5",
29
29
  "trame-dataclass >=2.0.2",
30
30
  "trame-components",
31
31
  "trame-tauri>=0.6.2",
32
32
  "Pillow",
33
- "trame-colormaps>=1.4.3",
33
+ "trame-colormaps>=1.5.0",
34
34
  ]
35
35
 
36
36
  [project.optional-dependencies]
@@ -65,6 +65,8 @@ quickview = "e3sm_quickview.jupyter:setup_quickview"
65
65
 
66
66
 
67
67
 
68
+
69
+
68
70
  [build-system]
69
71
  requires = ["hatchling"]
70
72
  build-backend = "hatchling.build"
@@ -1,5 +1,5 @@
1
1
  """QuickView: Visual Analysis for E3SM Atmosphere Data."""
2
2
 
3
- __version__ = "2.8.2"
3
+ __version__ = "2.8.4"
4
4
  __author__ = "Kitware Inc."
5
5
  __license__ = "Apache-2.0"
@@ -258,6 +258,7 @@ class EAMApp(TrameApp):
258
258
  encoder="turbo-jpeg",
259
259
  ctx_name="view",
260
260
  ):
261
+ dialogs.ColorMapEditor()
261
262
  # To debug vtkRenderWindow content
262
263
  # html.Img(src=["image?.src"], height="300px")
263
264
  client.ServerTemplate(
@@ -1,4 +1,5 @@
1
- from trame.widgets import html
1
+ from trame.decorators import controller
2
+ from trame.widgets import client, colormaps, dataclass, html
2
3
  from trame.widgets import vuetify3 as v3
3
4
 
4
5
  from e3sm_quickview.components import css
@@ -17,6 +18,61 @@ class FileOpen(html.Div):
17
18
  file_browser.ui()
18
19
 
19
20
 
21
+ class ColorMapEditor(html.Div):
22
+ def __init__(self):
23
+ super().__init__(style=css.FULLSCREEN_OVERLAY)
24
+ self.state.setdefault("color_map_editor_field_name", None)
25
+ with self:
26
+ with (
27
+ v3.VDialog(
28
+ model_value=("color_map_editor", None),
29
+ contained=True,
30
+ persistent=True,
31
+ ),
32
+ dataclass.Provider(
33
+ name="colormap", instance=("color_map_editor", None)
34
+ ),
35
+ ):
36
+ with v3.VCard(
37
+ rounded="lg",
38
+ style="--tcmap-editor-size: 100%;--tcmap-editor-search-width: 250px;width: 100%; height: 100%;",
39
+ ):
40
+ with v3.VCardItem(
41
+ density="compact",
42
+ title=(
43
+ "`Adjust color map for ${ color_map_editor_field_name }`",
44
+ ),
45
+ ):
46
+ with v3.Template(v_slot_append=True):
47
+ v3.VBtn(
48
+ icon="mdi-close",
49
+ click=self.edit_lookup_table,
50
+ variant="plain",
51
+ density="compact",
52
+ )
53
+ v3.VDivider()
54
+ with v3.VRow(
55
+ classes="pa-0 ma-0",
56
+ style="height: calc(100vh - 115px);",
57
+ ):
58
+ with v3.VCol(classes="pa-0 border-e-thin h-100"):
59
+ colormaps.ColorMapEditor(
60
+ name="colormap",
61
+ show_close_button=False,
62
+ variant="flat",
63
+ style="height: 100%;",
64
+ )
65
+ with v3.VCol(align_self="center", classes="pa-2 "):
66
+ client.ServerTemplate(
67
+ name=("`view_${color_map_editor_field_name}`",)
68
+ )
69
+
70
+ @controller.set("edit_lookup_table")
71
+ def edit_lookup_table(self, colormap_id=None, field_name=None):
72
+ self.state.color_map_editor = colormap_id
73
+ self.state.color_map_editor_field_name = field_name
74
+
75
+
20
76
  class StateDownload(html.Div):
21
77
  def __init__(self):
22
78
  super().__init__(style=css.FULLSCREEN_OVERLAY)
@@ -209,10 +209,12 @@ class ParaViewFileBrowser(TrameComponent):
209
209
 
210
210
  def goto_home(self):
211
211
  self._current_path = self._home_path
212
+ self.set("filter", "") # Reset filter when changing directory
212
213
  self.update_listing()
213
214
 
214
215
  def goto_parent(self):
215
216
  self._current_path = self._current_path.parent
217
+ self.set("filter", "") # Reset filter when changing directory
216
218
  self.update_listing()
217
219
 
218
220
  def open_dataset(self, entry):
@@ -305,7 +305,8 @@ class EAMVisSource:
305
305
  def LoadVariables(self, vars):
306
306
  if not self.valid:
307
307
  return
308
- self.data_reader.reader.Variables = vars
308
+
309
+ self.data_reader.reader.Variables = list(set([*vars, "lat", "lon"]))
309
310
 
310
311
 
311
312
  if __name__ == "__main__":
@@ -150,6 +150,31 @@ class VariableView(TrameComponent):
150
150
  click=f"utils.quickview.capturePanel('{self.variable_name}')",
151
151
  style="transform: scale(0.75);",
152
152
  )
153
+ self.state.setdefault("picking_mode", None)
154
+ v3.VIconBtn(
155
+ v_tooltip_bottom="'Extract information on click'",
156
+ icon="mdi-cursor-default-click-outline",
157
+ size="small",
158
+ base_variant="plain",
159
+ active_variant="tonal",
160
+ click="picking_mode = (picking_mode === 'click' ? null : 'click')",
161
+ active=("picking_mode === 'click'",),
162
+ active_color="white",
163
+ hide_overlay=True,
164
+ rounded=False,
165
+ )
166
+ v3.VIconBtn(
167
+ v_tooltip_bottom="'Extract information on hover'",
168
+ icon="mdi-cursor-default-gesture-outline",
169
+ size="small",
170
+ base_variant="plain",
171
+ active_variant="tonal",
172
+ click="picking_mode = (picking_mode === 'hover' ? null : 'hover')",
173
+ active=("picking_mode === 'hover'",),
174
+ active_color="white",
175
+ hide_overlay=True,
176
+ rounded=False,
177
+ )
153
178
 
154
179
  v3.VSpacer()
155
180
  html.Div(
@@ -194,25 +219,29 @@ class VariableView(TrameComponent):
194
219
  enable_interaction=False,
195
220
  bounds=(self._bounds_key, (0, 0, 1, 1)),
196
221
  size=(self.update_size, "[$event]"),
222
+ send_mouse_click=(
223
+ f"picking_mode === 'click' && hover_info === '{self.variable_name}'",
224
+ ),
197
225
  send_mouse_move=(
198
- f"hover_info === '{self.variable_name}'",
226
+ f"picking_mode === 'hover' && hover_info === '{self.variable_name}'",
199
227
  ),
200
228
  v_on_wheel="window.scrollBy(0, $event.deltaY)",
201
229
  )
202
230
 
203
231
  with v3.VTable(density="compact", theme="dark", striped="even"):
204
- with html.Tbody(v_if="!!hover_tooltip"):
232
+ with html.Tbody(v_if="picking_mode && !!hover_tooltip"):
205
233
  with html.Tr():
206
234
  with html.Td():
207
235
  v3.VIcon("mdi-target")
208
236
  with html.Td(
209
- classes="d-flex justify-space-between align-center"
237
+ classes="d-flex justify-space-between align-center",
210
238
  ):
211
239
  html.Div(
212
- "lat: {{hover_tooltip?.lat?.[0]?.toFixed(4)}}"
240
+ "lat: {{hover_tooltip?.lat?.[0]?.toFixed(4)}}",
241
+ classes="pr-4",
213
242
  )
214
243
  html.Div(
215
- "lon: {{hover_tooltip?.lon?.[0]?.toFixed(4)}}"
244
+ "lon: {{hover_tooltip?.lon?.[0]?.toFixed(4)}}",
216
245
  )
217
246
 
218
247
  with html.Tr():
@@ -229,4 +258,11 @@ class VariableView(TrameComponent):
229
258
  html.Td("{{v?.[0]}}")
230
259
 
231
260
  with self.colormap.provide_as(self.name):
232
- colormaps.HorizontalScalarBar(self.name, popup_location="top")
261
+ colormaps.HorizontalScalarBar(
262
+ self.name,
263
+ has_menu=False,
264
+ click=(
265
+ self.ctrl.edit_lookup_table,
266
+ f"[{self.name}._id, '{self.variable_name}']",
267
+ ),
268
+ )
File without changes
File without changes