Skip to content
Snippets Groups Projects
Commit c224f7d6 authored by pkupczyk's avatar pkupczyk
Browse files

SSDM-75 / Javascript-based Microscopy Data Viewer - channel chooser

SVN: 31399
parent 3f9f2a76
No related branches found
No related tags found
No related merge requests found
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
var channelWidget = new ChannelChooserWidget(thisImageViewer.getChannels()); var channelWidget = new ChannelChooserWidget(thisImageViewer.getChannels());
channelWidget.addChangeListener(function(){ channelWidget.addChangeListener(function(){
imageWidget.setChannel(channelWidget.getSelectedChannel()); imageWidget.setChannels(channelWidget.getSelectedOrMergedChannels());
}); });
thisImageViewer.panel.append(channelWidget.render()); thisImageViewer.panel.append(channelWidget.render());
...@@ -111,8 +111,9 @@ ...@@ -111,8 +111,9 @@
imageWidget.setSessionToken(thisImageViewer.context.getSessionId()); imageWidget.setSessionToken(thisImageViewer.context.getSessionId());
imageWidget.setDataSetCode(thisImageViewer.context.getEntityPermId()); imageWidget.setDataSetCode(thisImageViewer.context.getEntityPermId());
imageWidget.setChannelStackId(thisImageViewer.getChannelStack(0, 0).id); imageWidget.setChannelStackId(thisImageViewer.getChannelStack(0, 0).id);
imageWidget.setChannel(channelWidget.getSelectedChannel());
imageWidget.setResolution(resolutionWidget.getSelectedResolution()); imageWidget.setResolution(resolutionWidget.getSelectedResolution());
imageWidget.setChannels(channelWidget.getSelectedOrMergedChannels());
thisImageViewer.panel.append(imageWidget.render()); thisImageViewer.panel.append(imageWidget.render());
}); });
...@@ -152,6 +153,11 @@ ...@@ -152,6 +153,11 @@
init: function(channels){ init: function(channels){
this.channels = channels; this.channels = channels;
this.selectedChannel = null;
this.mergedChannels = channels.map(function(channel){
return channel.code;
});
this.listeners = new ListenerManager(); this.listeners = new ListenerManager();
this.panel = $("<div>"); this.panel = $("<div>");
}, },
...@@ -166,26 +172,87 @@ ...@@ -166,26 +172,87 @@
this.channels.forEach(function(channel){ this.channels.forEach(function(channel){
$("<option>").attr("value", channel.code).text(channel.label).appendTo(select); $("<option>").attr("value", channel.code).text(channel.label).appendTo(select);
}); });
if(this.selectedChannel){
select.val(this.selectedChannel);
}
select.change(function(){ select.change(function(){
thisChooser.setSelectedChannel(select.val()); if(select.val() == ""){
thisChooser.setSelectedChannel(null);
}else{
thisChooser.setSelectedChannel(select.val());
}
});
var mergedChannels = $("<div>").addClass("mergedChannels").appendTo(this.panel);
this.channels.forEach(function(channel){
var mergedChannel = $("<span>").addClass("mergedChannel").appendTo(mergedChannels);
$("<input>").attr("type", "checkbox").attr("value", channel.code).appendTo(mergedChannel);
mergedChannel.append(channel.label);
}); });
mergedChannels.find("input").change(function(){
var channels = []
mergedChannels.find("input:checked").each(function(){
var checkbox = $(this);
channels.push(checkbox.val());
});
thisChooser.setMergedChannels(channels);
});
this.rendered = true;
this.refresh();
return this.panel; return this.panel;
}, },
refresh: function(){
if(!this.rendered){
return;
}
var thisChooser = this;
var select = this.panel.find("select");
var mergedChannels = this.panel.find(".mergedChannels");
if(this.getSelectedChannel()){
select.val(this.getSelectedChannel());
mergedChannels.hide();
}else{
select.val("");
mergedChannels.find("input").each(function(){
var checkbox = $(this);
checkbox.prop("checked", $.inArray(checkbox.val(), thisChooser.getMergedChannels()) != -1);
});
mergedChannels.show();
}
},
getSelectedChannel: function(){ getSelectedChannel: function(){
return this.selectedChannel; return this.selectedChannel;
}, },
setSelectedChannel: function(channel){ setSelectedChannel: function(channel){
this.selectedChannel = channel; this.selectedChannel = channel;
this.panel.find("select").val(channel); this.refresh();
this.notifyChangeListeners(); this.notifyChangeListeners();
},
getMergedChannels: function(){
return this.mergedChannels;
},
setMergedChannels: function(channels){
this.mergedChannels = channels;
this.refresh();
this.notifyChangeListeners();
},
getSelectedOrMergedChannels: function(){
if(this.getSelectedChannel()){
return [this.getSelectedChannel()];
}else{
return this.getMergedChannels();
}
}, },
addChangeListener: function(listener){ addChangeListener: function(listener){
...@@ -271,21 +338,24 @@ ...@@ -271,21 +338,24 @@
render: function(){ render: function(){
$("<img>").appendTo(this.panel); $("<img>").appendTo(this.panel);
this.rendered = true;
this.refresh(); this.refresh();
return this.panel; return this.panel;
}, },
refresh: function(){ refresh: function(){
if(!this.rendered){
return;
}
var url = this.dataStoreUrl; var url = this.dataStoreUrl;
url += "?sessionID=" + this.sessionToken; url += "?sessionID=" + this.sessionToken;
url += "&dataset=" + this.dataSetCode; url += "&dataset=" + this.dataSetCode;
url += "&channelStackId=" + this.channelStackId; url += "&channelStackId=" + this.channelStackId;
if(this.channel){ this.channels.forEach(function(channel){
url += "&channel=" + this.channel; url += "&channel=" + channel;
}else{ });
url += "&mergeChannels=true";
}
if(this.resolution){ if(this.resolution){
url += "&mode=thumbnail" + this.resolution; url += "&mode=thumbnail" + this.resolution;
...@@ -316,8 +386,8 @@ ...@@ -316,8 +386,8 @@
this.refresh(); this.refresh();
}, },
setChannel: function(channel){ setChannels: function(channels){
this.channel = channel; this.channels = channels;
this.refresh(); this.refresh();
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment