Commit 385d671f authored by Joshua Gould's avatar Joshua Gould

scroll lens-more than 1 tick

parent 748ea21d
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
color: black; color: black;
text-align: left; text-align: left;
padding: 1px; padding: 1px;
border: 1px solid rgba(0, 0, 0, 0.2); border: 1px solid rgb(0, 0, 0);
/*border-radius: 6px;*/ /*border-radius: 6px;*/
/*box-shadow: rgba(0, 0, 0, 0.498039) 0px 5px 15px;*/ /*box-shadow: rgba(0, 0, 0, 0.498039) 0px 5px 15px;*/
overflow: hidden; overflow: hidden;
......
...@@ -365,7 +365,7 @@ morpheus.SampleDatasets.prototype = { ...@@ -365,7 +365,7 @@ morpheus.SampleDatasets.prototype = {
this.callback({ this.callback({
name : 'CCLE', name : 'CCLE',
rows : [ { rows : [ {
field : 'id', field : 'id,tooltip',
display : 'text' display : 'text'
}, { }, {
field : 'mutation_summary', field : 'mutation_summary',
......
...@@ -1481,9 +1481,12 @@ morpheus.HeatMap.prototype = { ...@@ -1481,9 +1481,12 @@ morpheus.HeatMap.prototype = {
} }
var add = display !== 'None'; var add = display !== 'None';
if (add) { if (add) {
if (isColumns && display == null) { if (display == null) {
display = name === 'pert_iname' || name === 'id' if (name === 'pert_iname' || name === 'id' || isFirst) {
|| isFirst ? 'text' : 'color,highlight'; display = 'text,tooltip';
} else {
display = isColumns ? 'color,highlight' : 'text';
}
} }
isFirst = false; isFirst = false;
var track = isColumns ? _this.addColumnTrack(name, display) var track = isColumns ? _this.addColumnTrack(name, display)
......
...@@ -639,23 +639,11 @@ morpheus.HeatMapToolBar = function (controller) { ...@@ -639,23 +639,11 @@ morpheus.HeatMapToolBar = function (controller) {
e.preventDefault(); e.preventDefault();
var $this = $(this); var $this = $(this);
$this.toggleClass('btn-primary'); $this.toggleClass('btn-primary');
var sortKeys = project.getColumnSortKeys(); _this.setSelectionOnTop({
// clear existing sort keys except dendrogram isColumns: true,
sortKeys = sortKeys isOnTop: $this.hasClass('btn-primary'),
.filter(function (key) { updateButtonStatus: false
return (key instanceof morpheus.SpecifiedModelSortOrder && key.name === 'dendrogram');
}); });
if ($this.hasClass('btn-primary')) {
var key = new morpheus.MatchesOnTopSortKey(project,
_this.columnSearchResultModelIndices,
'matches on top');
sortKeys.splice(0, 0, key);
controller.scrollLeft(0);
}
_this.searching = true;
project.setColumnSortKeys(sortKeys, true);
_this._updateSearchIndices(true);
_this.searching = false;
morpheus.Util.trackEvent({ morpheus.Util.trackEvent({
eventCategory: 'ToolBar', eventCategory: 'ToolBar',
eventAction: 'columnMatchesToTop' eventAction: 'columnMatchesToTop'
...@@ -668,24 +656,11 @@ morpheus.HeatMapToolBar = function (controller) { ...@@ -668,24 +656,11 @@ morpheus.HeatMapToolBar = function (controller) {
e.preventDefault(); e.preventDefault();
var $this = $(this); var $this = $(this);
$this.toggleClass('btn-primary'); $this.toggleClass('btn-primary');
var sortKeys = project.getRowSortKeys(); _this.setSelectionOnTop({
// clear existing sort keys except isColumns: false,
// dendrogram isOnTop: $this.hasClass('btn-primary'),
sortKeys = sortKeys updateButtonStatus: false
.filter(function (key) {
return (key instanceof morpheus.SpecifiedModelSortOrder && key.name === 'dendrogram');
}); });
if ($this.hasClass('btn-primary')) {
var key = new morpheus.MatchesOnTopSortKey(project,
_this.rowSearchResultModelIndices,
'matches on top');
sortKeys.splice(0, 0, key);
controller.scrollTop(0);
}
_this.searching = true;
project.setRowSortKeys(sortKeys, true);
_this._updateSearchIndices(false);
_this.searching = false;
morpheus.Util.trackEvent({ morpheus.Util.trackEvent({
eventCategory: 'ToolBar', eventCategory: 'ToolBar',
eventAction: 'rowMatchesToTop' eventAction: 'rowMatchesToTop'
...@@ -1073,5 +1048,46 @@ morpheus.HeatMapToolBar.prototype = { ...@@ -1073,5 +1048,46 @@ morpheus.HeatMapToolBar.prototype = {
this.updateSelectionLabel(); this.updateSelectionLabel();
this.searching = false; this.searching = false;
},
isSelectionOnTop: function (isColumns) {
var $btn = isColumns ? this.$columnMatchesToTop : this.$rowMatchesToTop;
return $btn.hasClass('btn-primary');
},
setSelectionOnTop: function (options) {
if (options.updateButtonStatus) {
var $btn = options.isColumns ? this.$columnMatchesToTop : this.$rowMatchesToTop;
if (options.isOnTop) {
$btn.addClass('btn-primary');
} else {
$btn.removeClass('btn-primary');
}
}
var project = this.controller.getProject();
var sortKeys = options.isColumns ? project.getColumnSortKeys() : project.getRowSortKeys();
// clear existing sort keys except dendrogram
sortKeys = sortKeys
.filter(function (key) {
return (key instanceof morpheus.SpecifiedModelSortOrder && key.name === 'dendrogram');
});
if (options.isOnTop) { // bring to top
var key = new morpheus.MatchesOnTopSortKey(project,
options.isColumns ? this.columnSearchResultModelIndices : this.rowSearchResultModelIndices,
'matches on top');
sortKeys.splice(0, 0, key);
if (options.isColumns) {
this.controller.scrollLeft(0);
} else {
this.controller.scrollTop(0);
}
}
this.searching = true;
if (options.isColumns) {
project.setColumnSortKeys(sortKeys, true);
} else {
project.setRowSortKeys(sortKeys, true);
}
this._updateSearchIndices(options.isColumns);
this.searching = false;
} }
}; };
morpheus.Popup = {}; morpheus.Popup = {};
morpheus.Popup.initted = false; morpheus.Popup.initted = false;
morpheus.Popup.init = function() { morpheus.Popup.init = function () {
if (morpheus.Popup.initted) { if (morpheus.Popup.initted) {
return; return;
} }
var client = new Clipboard('a[name=Copy]', { var client = new Clipboard('a[name=Copy]', {
text : function(trigger) { text: function (trigger) {
var event = { var event = {
clipboardData : { clipboardData: {
setData : function(dataType, data) { setData: function (dataType, data) {
this.data = data; this.data = data;
} }
} }
...@@ -23,12 +23,12 @@ morpheus.Popup.init = function() { ...@@ -23,12 +23,12 @@ morpheus.Popup.init = function() {
morpheus.Popup.initted = true; morpheus.Popup.initted = true;
morpheus.Popup.$popupDiv = $(document.createElement('div')); morpheus.Popup.$popupDiv = $(document.createElement('div'));
morpheus.Popup.$popupDiv.css('position', 'absolute').css('zIndex', 999) morpheus.Popup.$popupDiv.css('position', 'absolute').css('zIndex', 999)
.addClass('dropdown clearfix'); .addClass('dropdown clearfix');
morpheus.Popup.$contextMenu = $(document.createElement('ul')); morpheus.Popup.$contextMenu = $(document.createElement('ul'));
morpheus.Popup.$contextMenu.addClass('dropdown-menu').css('display', morpheus.Popup.$contextMenu.addClass('dropdown-menu').css('display',
'block').css('position', 'static').css('margin-bottom', '5px'); 'block').css('position', 'static').css('margin-bottom', '5px');
morpheus.Popup.$contextMenu.appendTo(morpheus.Popup.$popupDiv); morpheus.Popup.$contextMenu.appendTo(morpheus.Popup.$popupDiv);
morpheus.Popup.$contextMenu.on('click', 'a', function(e) { morpheus.Popup.$contextMenu.on('click', 'a', function (e) {
e.preventDefault(); e.preventDefault();
var $this = $(this); var $this = $(this);
var name = $.trim($this.text()); var name = $.trim($this.text());
...@@ -41,14 +41,14 @@ morpheus.Popup.init = function() { ...@@ -41,14 +41,14 @@ morpheus.Popup.init = function() {
}; };
morpheus.Popup.popupInDom = false; morpheus.Popup.popupInDom = false;
morpheus.Popup.hidePopupMenu = function(e) { morpheus.Popup.hidePopupMenu = function (e) {
if (morpheus.Popup.component == e.target) { if (morpheus.Popup.component == e.target) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
} }
morpheus.Popup.hide(); morpheus.Popup.hide();
}; };
morpheus.Popup.hide = function() { morpheus.Popup.hide = function () {
morpheus.Popup.$popupDiv.hide(); morpheus.Popup.$popupDiv.hide();
$(document.body).off('mousedown', morpheus.Popup.hidePopupMenu); $(document.body).off('mousedown', morpheus.Popup.hidePopupMenu);
morpheus.Popup.popupCallback = null; morpheus.Popup.popupCallback = null;
...@@ -56,7 +56,7 @@ morpheus.Popup.hide = function() { ...@@ -56,7 +56,7 @@ morpheus.Popup.hide = function() {
// morpheus.Popup.client.unclip(); // morpheus.Popup.client.unclip();
}; };
morpheus.Popup.showPopup = function(menuItems, position, component, callback) { morpheus.Popup.showPopup = function (menuItems, position, component, callback) {
morpheus.Popup.init(); morpheus.Popup.init();
if (morpheus.Popup.component == component) { if (morpheus.Popup.component == component) {
morpheus.Popup.hide(); morpheus.Popup.hide();
...@@ -69,7 +69,7 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) { ...@@ -69,7 +69,7 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) {
var item = menuItems[i]; var item = menuItems[i];
if (item.header) { if (item.header) {
html.push('<li role="presentation" class="dropdown-header">' html.push('<li role="presentation" class="dropdown-header">'
+ item.name + '</li>'); + item.name + '</li>');
} else if (item.separator) { } else if (item.separator) {
html.push('<li class="divider"></li>'); html.push('<li class="divider"></li>');
} else { } else {
...@@ -78,10 +78,10 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) { ...@@ -78,10 +78,10 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) {
html.push('class="disabled"'); html.push('class="disabled"');
} }
html.push('><a name="' + item.name html.push('><a name="' + item.name
+ '" data-type="popup-item" tabindex="-1" href="#">'); + '" data-type="popup-item" tabindex="-1" href="#">');
if (item.checked) { if (item.checked) {
html html
.push('<span class="dropdown-checkbox fa fa-check"></span>'); .push('<span class="dropdown-checkbox fa fa-check"></span>');
} }
html.push(item.name); html.push(item.name);
...@@ -98,23 +98,39 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) { ...@@ -98,23 +98,39 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) {
morpheus.Popup.popupInDom = true; morpheus.Popup.popupInDom = true;
morpheus.Popup.$popupDiv.appendTo($(document.body)); morpheus.Popup.$popupDiv.appendTo($(document.body));
} }
var $body = $(document.body);
var $window = $(window);
var windowWidth = $window.width();
var windowHeight = $window.height();
var popupWidth = morpheus.Popup.$popupDiv.width();
var popupHeight = morpheus.Popup.$popupDiv.height();
var left = position.x;
var top = position.y;
// default is bottom-right
if ((left + popupWidth) >= windowWidth) { // offscreen right
left -= popupWidth;
}
if ((top + popupHeight) >= (windowHeight)) { // offscreen
top -= popupHeight;
}
morpheus.Popup.$popupDiv.css({ morpheus.Popup.$popupDiv.css({
display : 'block', display: 'block',
left : position.x, left: left,
top : position.y top: top
}); });
// var copyElements = morpheus.Popup.$popupDiv.find('a[name=Copy]'); // var copyElements = morpheus.Popup.$popupDiv.find('a[name=Copy]');
// morpheus.Popup.client.clip(copyElements); // morpheus.Popup.client.clip(copyElements);
morpheus.Popup.$popupDiv.show(); morpheus.Popup.$popupDiv.show();
var $body = $(document.body);
$body.off('mousedown', morpheus.Popup.hidePopupMenu); $body.off('mousedown', morpheus.Popup.hidePopupMenu);
window.setTimeout(function() { window.setTimeout(function () {
$body.on('mousedown', function(e) { $body.on('mousedown', function (e) {
var $target = $(e.target); var $target = $(e.target);
if ($target.data('type') !== 'popup-item') { if ($target.data('type') !== 'popup-item') {
morpheus.Popup.hidePopupMenu(e); morpheus.Popup.hidePopupMenu(e);
} }
}); });
}, 1); }, 1);
}; };
\ No newline at end of file
...@@ -37,7 +37,49 @@ morpheus.ScentedSearch = function (model, positions, isVertical, scrollbar, ...@@ -37,7 +37,49 @@ morpheus.ScentedSearch = function (model, positions, isVertical, scrollbar,
scrollbar.canvas.style.cursor = 'default'; scrollbar.canvas.style.cursor = 'default';
controller.setToolTip(-1, -1, {event: e}); controller.setToolTip(-1, -1, {event: e});
}; };
$(scrollbar.canvas).on('mousemove', mouseMove).on('mouseout', mouseExit); var showPopup = function (e) {
e.preventDefault();
if (e.stopPropagation) {
e.stopPropagation();
}
if (e.stopImmediatePropagation) {
e.stopImmediatePropagation();
}
morpheus.Popup
.showPopup(
[
{
name: 'Selection To Top',
checked: controller.getToolbar().isSelectionOnTop(!isVertical),
disabled: isVertical ? controller.getProject().getRowSelectionModel()
.count() === 0 : controller.getProject().getColumnSelectionModel()
.count() === 0
},
{
name: 'New Heat Map (' + morpheus.Util.COMMAND_KEY + 'X)'
}],
{
x: e.pageX,
y: e.pageY
},
e.target,
function (event, item) {
if (item === 'Selection To Top') {
controller.getToolbar().setSelectionOnTop({
isColumns: !isVertical,
isOnTop: !controller.getToolbar().isSelectionOnTop(!isVertical),
updateButtonStatus: true
});
} else {
morpheus.HeatMap.showTool(new morpheus.NewHeatMapTool(),
controller);
}
});
return false;
};
$(scrollbar.canvas).on('mousemove.morpheus', mouseMove).on('mouseout.morpheus', mouseExit).on('contextmenu.morpheus', showPopup);
}; };
morpheus.ScentedSearch.LINE_HEIGHT = 3.5; morpheus.ScentedSearch.LINE_HEIGHT = 3.5;
......
...@@ -179,6 +179,8 @@ morpheus.VectorTrack.prototype = { ...@@ -179,6 +179,8 @@ morpheus.VectorTrack.prototype = {
settings.renderMethod[morpheus.VectorTrack.RENDER.BAR] = true; settings.renderMethod[morpheus.VectorTrack.RENDER.BAR] = true;
} else if (method === 'BOX_PLOT') { } else if (method === 'BOX_PLOT') {
settings.renderMethod[morpheus.VectorTrack.RENDER.BOX_PLOT] = true; settings.renderMethod[morpheus.VectorTrack.RENDER.BOX_PLOT] = true;
} else if (method === 'TOOLTIP') {
settings.inlineTooltip = true;
} else { } else {
console.log(method + ' not found.'); console.log(method + ' not found.');
} }
......
...@@ -306,7 +306,7 @@ if (typeof navigator !== 'undefined') { ...@@ -306,7 +306,7 @@ if (typeof navigator !== 'undefined') {
morpheus.Util.IS_MAC = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true morpheus.Util.IS_MAC = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true
: false; : false;
} }
morpheus.Util.COMMAND_KEY = morpheus.Util.IS_MAC ? '&#8984;' : '+Ctrl'; morpheus.Util.COMMAND_KEY = morpheus.Util.IS_MAC ? '&#8984;' : 'Ctrl+';
morpheus.Util.hammer = function(el, recognizers) { morpheus.Util.hammer = function(el, recognizers) {
var hammer = new Hammer(el, { var hammer = new Hammer(el, {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment