diff --git a/histomicsui/web_client/panels/MetadataWidget.js b/histomicsui/web_client/panels/MetadataWidget.js index 564fb0a7..713a8a69 100644 --- a/histomicsui/web_client/panels/MetadataWidget.js +++ b/histomicsui/web_client/panels/MetadataWidget.js @@ -60,6 +60,10 @@ var MetadataWidgetPanel = Panel.extend({ render: function () { if (this.item && this.item.id) { + if (!this.item.has('meta')) { + this.listenToOnce(this.item, 'g:fetched', this.render); + return this; + } let func = this.item.getAccessLevel; if (this.item.get('_modelType') === 'annotation') { func = (callback) => { diff --git a/histomicsui/web_client/views/body/ImageView.js b/histomicsui/web_client/views/body/ImageView.js index 471c1a3d..9b1981d2 100644 --- a/histomicsui/web_client/views/body/ImageView.js +++ b/histomicsui/web_client/views/body/ImageView.js @@ -62,6 +62,7 @@ var ImageView = View.extend({ this.listenTo(events, 'h:analysis:rendered', this._allowRootSelection); this.listenTo(events, 'h:analysis:rendered', this._setDefaultFileOutputs); this.listenTo(events, 'h:analysis:rendered', this._resetRegion); + this.listenTo(events, 'h:analysis:rendered', this._setFieldsFromRouter); this.listenTo(this.selectedElements, 'add remove reset', this._redrawSelection); this.listenTo(events, 's:widgetDrawRegionEvent', this._widgetDrawRegion); this.listenTo(events, 'li:drawRegionUpdate', this._drawRegionUpdate); @@ -69,6 +70,7 @@ var ImageView = View.extend({ events.trigger('h:imageOpened', null); this.listenTo(events, 'query:image', this.openImage); this.annotations = new girder.plugins.large_image_annotation.collections.AnnotationCollection(); + this.listenTo(events, 's:widgetChanged', this._setRouter); this.controlPanel = new girder.plugins.slicer_cli_web.views.PanelGroup({ parentView: this, @@ -1806,6 +1808,24 @@ var ImageView = View.extend({ window.setTimeout(() => $(`#h-analysis-panel .s-select-region-button[shape="${$(evt.originalEvent.target).attr('shape')}"][multi="${$(evt.originalEvent.target).attr('multi')}"][parent-id="${$(evt.originalEvent.target).attr('parent-id')}"]`).eq(0).trigger('click'), 50); } } + }, + + _setRouter(evt) { + const value = evt.changed.value !== undefined ? String(evt.changed.value) : null; + router.setQuery(evt.id, value, {trigger: false, replace: true}); + }, + + _setFieldsFromRouter() { + _.each(this.controlPanel.models(), (model) => { + const value = router.getQuery(model.id); + if (value) { + if (model.id === 'region') { + this._displayedRegion = value; + } + model.set('value', value); + } + }); } + }); export default ImageView;