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 @@
color: black;
text-align: left;
padding: 1px;
border: 1px solid rgba(0, 0, 0, 0.2);
border: 1px solid rgb(0, 0, 0);
/*border-radius: 6px;*/
/*box-shadow: rgba(0, 0, 0, 0.498039) 0px 5px 15px;*/
overflow: hidden;
......
......@@ -365,7 +365,7 @@ morpheus.SampleDatasets.prototype = {
this.callback({
name : 'CCLE',
rows : [ {
field : 'id',
field : 'id,tooltip',
display : 'text'
}, {
field : 'mutation_summary',
......
......@@ -1481,9 +1481,12 @@ morpheus.HeatMap.prototype = {
}
var add = display !== 'None';
if (add) {
if (isColumns && display == null) {
display = name === 'pert_iname' || name === 'id'
|| isFirst ? 'text' : 'color,highlight';
if (display == null) {
if (name === 'pert_iname' || name === 'id' || isFirst) {
display = 'text,tooltip';
} else {
display = isColumns ? 'color,highlight' : 'text';
}
}
isFirst = false;
var track = isColumns ? _this.addColumnTrack(name, display)
......
......@@ -639,23 +639,11 @@ morpheus.HeatMapToolBar = function (controller) {
e.preventDefault();
var $this = $(this);
$this.toggleClass('btn-primary');
var sortKeys = project.getColumnSortKeys();
// clear existing sort keys except dendrogram
sortKeys = sortKeys
.filter(function (key) {
return (key instanceof morpheus.SpecifiedModelSortOrder && key.name === 'dendrogram');
_this.setSelectionOnTop({
isColumns: true,
isOnTop: $this.hasClass('btn-primary'),
updateButtonStatus: false
});
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({
eventCategory: 'ToolBar',
eventAction: 'columnMatchesToTop'
......@@ -668,24 +656,11 @@ morpheus.HeatMapToolBar = function (controller) {
e.preventDefault();
var $this = $(this);
$this.toggleClass('btn-primary');
var sortKeys = project.getRowSortKeys();
// clear existing sort keys except
// dendrogram
sortKeys = sortKeys
.filter(function (key) {
return (key instanceof morpheus.SpecifiedModelSortOrder && key.name === 'dendrogram');
_this.setSelectionOnTop({
isColumns: false,
isOnTop: $this.hasClass('btn-primary'),
updateButtonStatus: false
});
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({
eventCategory: 'ToolBar',
eventAction: 'rowMatchesToTop'
......@@ -1073,5 +1048,46 @@ morpheus.HeatMapToolBar.prototype = {
this.updateSelectionLabel();
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.initted = false;
morpheus.Popup.init = function() {
morpheus.Popup.init = function () {
if (morpheus.Popup.initted) {
return;
}
var client = new Clipboard('a[name=Copy]', {
text : function(trigger) {
text: function (trigger) {
var event = {
clipboardData : {
setData : function(dataType, data) {
clipboardData: {
setData: function (dataType, data) {
this.data = data;
}
}
......@@ -23,12 +23,12 @@ morpheus.Popup.init = function() {
morpheus.Popup.initted = true;
morpheus.Popup.$popupDiv = $(document.createElement('div'));
morpheus.Popup.$popupDiv.css('position', 'absolute').css('zIndex', 999)
.addClass('dropdown clearfix');
.addClass('dropdown clearfix');
morpheus.Popup.$contextMenu = $(document.createElement('ul'));
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.on('click', 'a', function(e) {
morpheus.Popup.$contextMenu.on('click', 'a', function (e) {
e.preventDefault();
var $this = $(this);
var name = $.trim($this.text());
......@@ -41,14 +41,14 @@ morpheus.Popup.init = function() {
};
morpheus.Popup.popupInDom = false;
morpheus.Popup.hidePopupMenu = function(e) {
morpheus.Popup.hidePopupMenu = function (e) {
if (morpheus.Popup.component == e.target) {
e.preventDefault();
e.stopPropagation();
}
morpheus.Popup.hide();
};
morpheus.Popup.hide = function() {
morpheus.Popup.hide = function () {
morpheus.Popup.$popupDiv.hide();
$(document.body).off('mousedown', morpheus.Popup.hidePopupMenu);
morpheus.Popup.popupCallback = null;
......@@ -56,7 +56,7 @@ morpheus.Popup.hide = function() {
// morpheus.Popup.client.unclip();
};
morpheus.Popup.showPopup = function(menuItems, position, component, callback) {
morpheus.Popup.showPopup = function (menuItems, position, component, callback) {
morpheus.Popup.init();
if (morpheus.Popup.component == component) {
morpheus.Popup.hide();
......@@ -69,7 +69,7 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) {
var item = menuItems[i];
if (item.header) {
html.push('<li role="presentation" class="dropdown-header">'
+ item.name + '</li>');
+ item.name + '</li>');
} else if (item.separator) {
html.push('<li class="divider"></li>');
} else {
......@@ -78,10 +78,10 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) {
html.push('class="disabled"');
}
html.push('><a name="' + item.name
+ '" data-type="popup-item" tabindex="-1" href="#">');
+ '" data-type="popup-item" tabindex="-1" href="#">');
if (item.checked) {
html
.push('<span class="dropdown-checkbox fa fa-check"></span>');
.push('<span class="dropdown-checkbox fa fa-check"></span>');
}
html.push(item.name);
......@@ -98,23 +98,39 @@ morpheus.Popup.showPopup = function(menuItems, position, component, callback) {
morpheus.Popup.popupInDom = true;
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({
display : 'block',
left : position.x,
top : position.y
display: 'block',
left: left,
top: top
});
// var copyElements = morpheus.Popup.$popupDiv.find('a[name=Copy]');
// morpheus.Popup.client.clip(copyElements);
morpheus.Popup.$popupDiv.show();
var $body = $(document.body);
$body.off('mousedown', morpheus.Popup.hidePopupMenu);
window.setTimeout(function() {
$body.on('mousedown', function(e) {
window.setTimeout(function () {
$body.on('mousedown', function (e) {
var $target = $(e.target);
if ($target.data('type') !== 'popup-item') {
morpheus.Popup.hidePopupMenu(e);
}
});
}, 1);
};
\ No newline at end of file
};
......@@ -37,7 +37,49 @@ morpheus.ScentedSearch = function (model, positions, isVertical, scrollbar,
scrollbar.canvas.style.cursor = 'default';
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;
......
......@@ -179,6 +179,8 @@ morpheus.VectorTrack.prototype = {
settings.renderMethod[morpheus.VectorTrack.RENDER.BAR] = true;
} else if (method === 'BOX_PLOT') {
settings.renderMethod[morpheus.VectorTrack.RENDER.BOX_PLOT] = true;
} else if (method === 'TOOLTIP') {
settings.inlineTooltip = true;
} else {
console.log(method + ' not found.');
}
......
......@@ -306,7 +306,7 @@ if (typeof navigator !== 'undefined') {
morpheus.Util.IS_MAC = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true
: 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) {
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