Commit 973208c3 authored by Joshua Gould's avatar Joshua Gould

scroll lens

parent baa26b67
/*! /*!
* Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select)
* *
* Copyright 2013-2016 bootstrap-select * Copyright 2013-2016 bootstrap-select
* Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
*/select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} */select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -72,7 +72,6 @@ ...@@ -72,7 +72,6 @@
.morpheus-tip-inline { .morpheus-tip-inline {
font-size: 12px; font-size: 12px;
max-width: 400px;
z-index: 10000; z-index: 10000;
position: absolute; position: absolute;
background-color: rgba(255, 255, 255, 0.9); background-color: rgba(255, 255, 255, 0.9);
......
This diff is collapsed.
morpheus.DatasetUtil = function() { morpheus.DatasetUtil = function() {
}; };
morpheus.DatasetUtil.min = function(dataset) { morpheus.DatasetUtil.min = function(dataset, seriesIndex) {
seriesIndex = seriesIndex || 0;
var min = Number.MAX_VALUE; var min = Number.MAX_VALUE;
for (var i = 0, rows = dataset.getRowCount(); i < rows; i++) { for (var i = 0, rows = dataset.getRowCount(); i < rows; i++) {
for (var j = 0, columns = dataset.getColumnCount(); j < columns; j++) { for (var j = 0, columns = dataset.getColumnCount(); j < columns; j++) {
var d = dataset.getValue(i, j); var d = dataset.getValue(i, j, seriesIndex);
if (isNaN(d)) { if (isNaN(d)) {
continue; continue;
} }
...@@ -20,11 +21,12 @@ morpheus.DatasetUtil.transposedView = function(dataset) { ...@@ -20,11 +21,12 @@ morpheus.DatasetUtil.transposedView = function(dataset) {
return dataset instanceof morpheus.TransposedDatasetView ? dataset return dataset instanceof morpheus.TransposedDatasetView ? dataset
.getDataset() : new morpheus.TransposedDatasetView(dataset); .getDataset() : new morpheus.TransposedDatasetView(dataset);
}; };
morpheus.DatasetUtil.max = function(dataset) { morpheus.DatasetUtil.max = function(dataset, seriesIndex) {
seriesIndex = seriesIndex || 0;
var max = -Number.MAX_VALUE; var max = -Number.MAX_VALUE;
for (var i = 0, rows = dataset.getRowCount(); i < rows; i++) { for (var i = 0, rows = dataset.getRowCount(); i < rows; i++) {
for (var j = 0, columns = dataset.getColumnCount(); j < columns; j++) { for (var j = 0, columns = dataset.getColumnCount(); j < columns; j++) {
var d = dataset.getValue(i, j); var d = dataset.getValue(i, j, seriesIndex);
if (isNaN(d)) { if (isNaN(d)) {
continue; continue;
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
/** /**
* @param model{morpheus.SelectionModel} * @param model{morpheus.SelectionModel}
*/ */
morpheus.ScentedSearch = function(model, positions, isVertical, scrollbar, morpheus.ScentedSearch = function (model, positions, isVertical, scrollbar,
controller) { controller) {
morpheus.AbstractCanvas.call(this, false); morpheus.AbstractCanvas.call(this, false);
this.model = model; this.model = model;
this.positions = positions; this.positions = positions;
...@@ -12,41 +12,42 @@ morpheus.ScentedSearch = function(model, positions, isVertical, scrollbar, ...@@ -12,41 +12,42 @@ morpheus.ScentedSearch = function(model, positions, isVertical, scrollbar,
this.searchIndices = []; this.searchIndices = [];
scrollbar.decorator = this; scrollbar.decorator = this;
var _this = this; var _this = this;
var mouseMove = function(e) { var mouseMove = function (e) {
var index = _this.getIndex(e); var index = _this.getIndex(e);
_this.mouseMovedIndex = index; _this.mouseMovedIndex = index;
document.body.style.cursor = index < 0 ? 'default' : 'pointer'; document.body.style.cursor = index < 0 ? 'default' : 'pointer';
scrollbar.canvas.style.cursor = index < 0 ? 'default' : 'pointer'; scrollbar.canvas.style.cursor = index < 0 ? 'default' : 'pointer';
var tipOptions = { var tipOptions = {
event : e event: e,
dataLens: true
}; };
if (isVertical) { if (isVertical) {
controller.setToolTip(index >= 0 ? _this.searchIndices[index] : -1, controller.setToolTip(index >= 0 ? _this.searchIndices[index] : -1,
-1, tipOptions); -1, tipOptions);
} else { } else {
controller.setToolTip(-1, index >= 0 ? _this.searchIndices[index] controller.setToolTip(-1, index >= 0 ? _this.searchIndices[index]
: -1, tipOptions); : -1, tipOptions);
} }
}; };
var mouseExit = function(e) { var mouseExit = function (e) {
// need to set body cursor b/c mouse can be partially on the scroll bar, // need to set body cursor b/c mouse can be partially on the scroll bar,
// but the canvas cursor has no effect // but the canvas cursor has no effect
document.body.style.cursor = 'default'; document.body.style.cursor = 'default';
scrollbar.canvas.style.cursor = 'default'; scrollbar.canvas.style.cursor = 'default';
}; };
$(scrollbar.canvas).on('mousemove', mouseMove).on('mouseexit', mouseExit); $(scrollbar.canvas).on('mousemove', mouseMove).on('mouseout', mouseExit);
}; };
morpheus.ScentedSearch.LINE_HEIGHT = 3.5; morpheus.ScentedSearch.LINE_HEIGHT = 3.5;
morpheus.ScentedSearch.prototype = { morpheus.ScentedSearch.prototype = {
mouseMovedIndex : -1, mouseMovedIndex: -1,
getIndex : function(event) { getIndex: function (event) {
var pix = morpheus.CanvasUtil.getMousePos(event.target, event); var pix = morpheus.CanvasUtil.getMousePos(event.target, event);
var val = pix[this.isVertical ? 'y' : 'x']; var val = pix[this.isVertical ? 'y' : 'x'];
return this.getIndexForPix(val); return this.getIndexForPix(val);
}, },
getIndexForPix : function(pix) { getIndexForPix: function (pix) {
var indices = this.searchIndices; var indices = this.searchIndices;
if (indices == null) { if (indices == null) {
return -1; return -1;
...@@ -54,8 +55,8 @@ morpheus.ScentedSearch.prototype = { ...@@ -54,8 +55,8 @@ morpheus.ScentedSearch.prototype = {
var tolerance = morpheus.ScentedSearch.LINE_HEIGHT; var tolerance = morpheus.ScentedSearch.LINE_HEIGHT;
if (this.mouseMovedIndex > 0) { if (this.mouseMovedIndex > 0) {
var midVal = this.positions var midVal = this.positions
.getPosition(indices[this.mouseMovedIndex]) .getPosition(indices[this.mouseMovedIndex])
* scale; * scale;
if (Math.abs(midVal - pix) <= tolerance) { if (Math.abs(midVal - pix) <= tolerance) {
return this.mouseMovedIndex; return this.mouseMovedIndex;
} }
...@@ -85,71 +86,71 @@ morpheus.ScentedSearch.prototype = { ...@@ -85,71 +86,71 @@ morpheus.ScentedSearch.prototype = {
return -1; // -(low + 1); // key not found. return -1; // -(low + 1); // key not found.
}, },
tap : function(position) { tap: function (position) {
var val = position[this.isVertical ? 'y' : 'x']; var val = position[this.isVertical ? 'y' : 'x'];
var index = this.getIndexForPix(val); var index = this.getIndexForPix(val);
this.scrollbar.canvas.style.cursor = index < 0 ? 'default' : 'pointer'; this.scrollbar.canvas.style.cursor = index < 0 ? 'default' : 'pointer';
if (index >= 0) { if (index >= 0) {
if (this.isVertical) { if (this.isVertical) {
this.controller.scrollTop(this.positions this.controller.scrollTop(this.positions
.getPosition(this.searchIndices[index])); .getPosition(this.searchIndices[index]));
} else { } else {
this.controller.scrollLeft(this.positions this.controller.scrollLeft(this.positions
.getPosition(this.searchIndices[index])); .getPosition(this.searchIndices[index]));
} }
return true; return true;
} }
return false; return false;
}, },
update : function() { update: function () {
this.searchIndices = this.model.getViewIndices().values().sort( this.searchIndices = this.model.getViewIndices().values().sort(
function(a, b) { function (a, b) {
return a < b ? -1 : 1; return a < b ? -1 : 1;
}); });
}, },
draw : function(clip, context) { draw: function (clip, context) {
var width = this.scrollbar.getUnscaledWidth(); var width = this.scrollbar.getUnscaledWidth();
var height = this.scrollbar.getUnscaledHeight(); var height = this.scrollbar.getUnscaledHeight();
var availableLength = ((this.isVertical ? height : width)) var availableLength = ((this.isVertical ? height : width))
- morpheus.ScentedSearch.LINE_HEIGHT; - morpheus.ScentedSearch.LINE_HEIGHT;
this.scale = availableLength this.scale = availableLength
/ (this.positions.getPosition(this.positions.getLength() - 1) + this.positions / (this.positions.getPosition(this.positions.getLength() - 1) + this.positions
.getItemSize(this.positions.getLength() - 1)); .getItemSize(this.positions.getLength() - 1));
context.strokeStyle = 'rgb(106,137,177)'; context.strokeStyle = 'rgb(106,137,177)';
context.fillStyle = 'rgb(182,213,253)'; context.fillStyle = 'rgb(182,213,253)';
context.lineWidth = 1; context.lineWidth = 1;
this.drawIndices(context, this.searchIndices); this.drawIndices(context, this.searchIndices);
this.drawHoverMatchingValues(context); this.drawHoverMatchingValues(context);
}, },
drawHoverMatchingValues : function(context) { drawHoverMatchingValues: function (context) {
var heatmap = this.controller; var heatmap = this.controller;
context.fillStyle = 'black'; context.fillStyle = 'black';
if (heatmap.mousePositionOptions if (heatmap.mousePositionOptions
&& heatmap.mousePositionOptions.name != null) { && heatmap.mousePositionOptions.name != null) {
var isColumns = !this.isVertical; var isColumns = !this.isVertical;
var track = heatmap.getTrack(heatmap.mousePositionOptions.name, var track = heatmap.getTrack(heatmap.mousePositionOptions.name,
isColumns); isColumns);
if (track == null) { if (track == null) {
return; return;
} }
if (track.settings.highlightMatchingValues) { if (track.settings.highlightMatchingValues) {
var hoverIndex = isColumns ? heatmap.getProject() var hoverIndex = isColumns ? heatmap.getProject()
.getHoverColumnIndex() : heatmap.getProject() .getHoverColumnIndex() : heatmap.getProject()
.getHoverRowIndex(); .getHoverRowIndex();
if (hoverIndex === -1) { if (hoverIndex === -1) {
return; return;
} }
var vector = track.getVector(); var vector = track.getVector();
var value = vector.getValue(hoverIndex); var value = vector.getValue(hoverIndex);
var valueToModelIndices = track.getFullVector().getProperties() var valueToModelIndices = track.getFullVector().getProperties()
.get(morpheus.VectorKeys.VALUE_TO_INDICES); .get(morpheus.VectorKeys.VALUE_TO_INDICES);
if (!valueToModelIndices) { if (!valueToModelIndices) {
var fullVector = track.getFullVector(); var fullVector = track.getFullVector();
valueToModelIndices = morpheus.VectorUtil valueToModelIndices = morpheus.VectorUtil
.createValueToIndicesMap(fullVector); .createValueToIndicesMap(fullVector);
fullVector.getProperties().set( fullVector.getProperties().set(
morpheus.VectorKeys.VALUE_TO_INDICES, morpheus.VectorKeys.VALUE_TO_INDICES,
valueToModelIndices); valueToModelIndices);
} }
var modelIndices = valueToModelIndices.get(value); var modelIndices = valueToModelIndices.get(value);
...@@ -159,26 +160,26 @@ morpheus.ScentedSearch.prototype = { ...@@ -159,26 +160,26 @@ morpheus.ScentedSearch.prototype = {
} }
var scale = this.scale; var scale = this.scale;
var lineLength = !this.isVertical ? this.scrollbar var lineLength = !this.isVertical ? this.scrollbar
.getUnscaledHeight() : this.scrollbar .getUnscaledHeight() : this.scrollbar
.getUnscaledWidth(); .getUnscaledWidth();
var isVertical = this.isVertical; var isVertical = this.isVertical;
var positions = this.positions; var positions = this.positions;
var project = heatmap.getProject(); var project = heatmap.getProject();
for (var i = 0, length = modelIndices.length; i < length; i++) { for (var i = 0, length = modelIndices.length; i < length; i++) {
var modelIndex = modelIndices[i]; var modelIndex = modelIndices[i];
var index = isVertical ? project var index = isVertical ? project
.convertModelRowIndexToView(modelIndex) : project .convertModelRowIndexToView(modelIndex) : project
.convertModelColumnIndexToView(modelIndex); .convertModelColumnIndexToView(modelIndex);
if (index === -1) { if (index === -1) {
continue; continue;
} }
var pix = positions.getPosition(index) * scale; var pix = positions.getPosition(index) * scale;
if (isVertical) { if (isVertical) {
context.fillRect(0, pix, lineLength, context.fillRect(0, pix, lineLength,
morpheus.ScentedSearch.LINE_HEIGHT); morpheus.ScentedSearch.LINE_HEIGHT);
} else { } else {
context.fillRect(pix, 0, context.fillRect(pix, 0,
morpheus.ScentedSearch.LINE_HEIGHT, lineLength); morpheus.ScentedSearch.LINE_HEIGHT, lineLength);
} }
} }
...@@ -186,10 +187,10 @@ morpheus.ScentedSearch.prototype = { ...@@ -186,10 +187,10 @@ morpheus.ScentedSearch.prototype = {
} }
}, },
drawIndices : function(context, highlightedIndices) { drawIndices: function (context, highlightedIndices) {
var scale = this.scale; var scale = this.scale;
var lineLength = !this.isVertical ? this.scrollbar.getUnscaledHeight() var lineLength = !this.isVertical ? this.scrollbar.getUnscaledHeight()
: this.scrollbar.getUnscaledWidth(); : this.scrollbar.getUnscaledWidth();
var isVertical = this.isVertical; var isVertical = this.isVertical;
var positions = this.positions; var positions = this.positions;
...@@ -199,14 +200,14 @@ morpheus.ScentedSearch.prototype = { ...@@ -199,14 +200,14 @@ morpheus.ScentedSearch.prototype = {
if (isVertical) { if (isVertical) {
context.beginPath(); context.beginPath();
context.rect(0, pix, lineLength, context.rect(0, pix, lineLength,
morpheus.ScentedSearch.LINE_HEIGHT); morpheus.ScentedSearch.LINE_HEIGHT);
context.fill(); context.fill();
context.stroke(); context.stroke();
} else { } else {
context.beginPath(); context.beginPath();
context.rect(pix, 0, morpheus.ScentedSearch.LINE_HEIGHT, context.rect(pix, 0, morpheus.ScentedSearch.LINE_HEIGHT,
lineLength); lineLength);
context.fill(); context.fill();
context.stroke(); context.stroke();
} }
......
This diff is collapsed.
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