Source code for jdaviz.configs.default.plugins.data_tools.data_tools
import os
from traitlets import Unicode, Bool
from jdaviz.configs.default.plugins.data_tools.file_chooser import FileChooser
from jdaviz.core.registries import tool_registry
from jdaviz.core.template_mixin import TemplateMixin
__all__ = ['DataTools']
[docs]
@tool_registry('g-data-tools')
class DataTools(TemplateMixin):
template_file = __file__, "data_tools.vue"
dialog = Bool(False).tag(sync=True)
valid_path = Bool(True).tag(sync=True)
error_message = Unicode().tag(sync=True)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
start_path = os.environ.get('JDAVIZ_START_DIR', os.path.curdir)
self._file_upload = FileChooser(start_path)
self.components = {'g-file-import': self._file_upload}
self._file_upload.observe(self._on_file_path_changed, names='file_path')
def _on_file_path_changed(self, event):
if self._file_upload.file_path is None:
self.valid_path = False
elif (not os.path.exists(self._file_upload.file_path)
or not os.path.isfile(self._file_upload.file_path)):
self.valid_path = False
else:
self.valid_path = True
[docs]
def vue_load_data(self, *args, **kwargs):
if self._file_upload.file_path is None:
self.error_message = "No file selected"
elif os.path.exists(self._file_upload.file_path):
try:
# NOTE: Helper loader does more stuff than native Application loader.
self.app._jdaviz_helper.load_data(self._file_upload.file_path)
except Exception as err:
self.error_message = f"An error occurred when loading the file: {repr(err)}"
else:
self.dialog = False