diff --git a/packages/oncoprintjs/src/img/menudots.svg b/packages/oncoprintjs/src/img/menudots.svg deleted file mode 100644 index 6cc0544bfa8..00000000000 --- a/packages/oncoprintjs/src/img/menudots.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - diff --git a/packages/oncoprintjs/src/js/main.js b/packages/oncoprintjs/src/js/main.js index 34028bea245..bf1b4f9e3e4 100644 --- a/packages/oncoprintjs/src/js/main.js +++ b/packages/oncoprintjs/src/js/main.js @@ -1,5 +1 @@ -var Oncoprint = require('./oncoprint.js'); -if (window) { - window.Oncoprint = Oncoprint; -} -module.exports = Oncoprint; \ No newline at end of file +window.Oncoprint = require('./oncoprint.js'); \ No newline at end of file diff --git a/packages/oncoprintjs/src/js/oncoprint.js b/packages/oncoprintjs/src/js/oncoprint.js index 5400f6570f2..d9c4d29c05b 100644 --- a/packages/oncoprintjs/src/js/oncoprint.js +++ b/packages/oncoprintjs/src/js/oncoprint.js @@ -11,7 +11,6 @@ var OncoprintTrackInfoView = require('./oncoprinttrackinfoview.js'); var OncoprintMinimapView = require('./oncoprintminimapview.js'); var svgfactory = require('./svgfactory.js'); -var $ = require('jquery'); var clamp = function(val, lower, upper) { return Math.min(Math.max(val, lower), upper); diff --git a/packages/oncoprintjs/src/js/oncoprintlabelview.js b/packages/oncoprintjs/src/js/oncoprintlabelview.js index 53856745ded..6c0a6c5ed78 100644 --- a/packages/oncoprintjs/src/js/oncoprintlabelview.js +++ b/packages/oncoprintjs/src/js/oncoprintlabelview.js @@ -1,5 +1,4 @@ var svgfactory = require('./svgfactory.js'); -var $ = require('jquery'); var OncoprintLabelView = (function () { function OncoprintLabelView($canvas, model, tooltip) { diff --git a/packages/oncoprintjs/src/js/oncoprintlegendrenderer.js b/packages/oncoprintjs/src/js/oncoprintlegendrenderer.js index c4df1320517..7ef23266b8b 100644 --- a/packages/oncoprintjs/src/js/oncoprintlegendrenderer.js +++ b/packages/oncoprintjs/src/js/oncoprintlegendrenderer.js @@ -1,5 +1,4 @@ var svgfactory = require('./svgfactory.js'); -var $ = require('jquery'); var nodeIsVisible = function(node) { var ret = true; @@ -128,6 +127,17 @@ var OncoprintLegendView = (function() { root.appendChild(svgfactory.text(display_range[1], 50, 0, 12, 'Arial', 'normal')); var mesh = 100; var points = []; + var linear_gradient = svgfactory.linearGradient(); + if (config.range_type === 'NON_POSITIVE') { + linear_gradient.appendChild(svgfactory.stop(100, config.negative_color)); + } else if (config.range_type === 'NON_NEGATIVE') { + linear_gradient.appendChild(svgfactory.stop(100, config.positive_color)); + } else if (config.range_type === 'ALL') { + var offset = Math.abs(display_range[0]) / (Math.abs(display_range[0]) + display_range[1]) * 100; + linear_gradient.appendChild(svgfactory.stop(offset, config.negative_color)); + linear_gradient.appendChild(svgfactory.stop(offset, config.positive_color)); + } + root.appendChild(linear_gradient); points.push([5, 20]); for (var i=0; i= range[1]) { - return 1; - } else { - return (val - range_lower) / range_spread; + var range_spread = range[1] - range[0], + range_lower = range[0], + range_higher = range[1]; + + if (rangeType === rangeTypes.NON_POSITIVE) { + // when data only contains non positive values + return (val - range_higher) / range_spread; + } else if (rangeType === rangeTypes.NON_NEGATIVE) { + // when data only contains non negative values + return (val - range_lower) / range_spread; + } else if (rangeType === rangeTypes.ALL) { + range_spread = Math.abs(range[0]) > range[1] ? Math.abs(range[0]) : range[1]; + return val / range_spread; } }; } @@ -518,6 +528,16 @@ var LinearInterpRuleSet = (function () { } return ret; }; + LinearInterpRuleSet.prototype.getValueRangeType = function () { + var range = this.getEffectiveValueRange(); + if (range[0] < 0 && range[1] <=0) { + return this.rangeTypes.NON_POSITIVE; + } else if (range[0] >= 0 && range[1] > 0) { + return this.rangeTypes.NON_NEGATIVE; + } else { + return this.rangeTypes.ALL; + } + }; LinearInterpRuleSet.prototype.apply = function (data, cell_width, cell_height, out_active_rules) { // First find value range @@ -651,8 +671,8 @@ var GradientRuleSet = (function () { var BarRuleSet = (function () { function BarRuleSet(params) { LinearInterpRuleSet.call(this, params); - this.bar_rule; - this.fill = params.fill || 'rgba(156,123,135,1)'; + this.fill = params.fill || 'rgba(0,128,0,1)'; // green + this.negative_fill = params.negative_fill || 'rgba(255,0,0,1)'; //red } BarRuleSet.prototype = Object.create(LinearInterpRuleSet.prototype); @@ -662,6 +682,10 @@ var BarRuleSet = (function () { } var interpFn = this.makeInterpFn(); var value_key = this.value_key; + var positive_color = this.fill; + var negative_color = this.negative_fill; + var yPosFn = this.getYPosPercentagesFn(); + var cellHeightFn = this.getCellHeightPercentagesFn(); this.bar_rule = this.addRule(function (d) { return d[NA_STRING] !== true; }, @@ -669,21 +693,49 @@ var BarRuleSet = (function () { type: 'rectangle', y: function (d) { var t = interpFn(d[value_key]); - return (1 - t) * 100 + "%"; + return yPosFn(t); }, height: function (d) { var t = interpFn(d[value_key]); - return t * 100 + "%"; + return cellHeightFn(t); }, - fill: this.fill, + fill: function (d) { + return d[value_key] < 0 ? negative_color : positive_color; + } }], exclude_from_legend: false, - legend_config: {'type': 'number', + legend_config: { + 'type': 'number', 'range': this.getEffectiveValueRange(), - 'color': this.fill, + 'range_type': this.getValueRangeType(), + 'positive_color': positive_color, + 'negative_color': negative_color, 'interpFn': interpFn} }); }; + BarRuleSet.prototype.getYPosPercentagesFn = function () { + return function (t) { + if (this.getValueRangeType() === this.rangeTypes.NON_POSITIVE) { + return 0 + "%"; + } else if (this.getValueRangeType() === this.rangeTypes.NON_NEGATIVE) { + return (1 - t) * 100 + "%"; + } else if (this.getValueRangeType() === this.rangeTypes.ALL) { + return 50 + "%"; + } + }.bind(this); + }; + + BarRuleSet.prototype.getCellHeightPercentagesFn = function () { + return function (t) { + if (this.getValueRangeType() === this.rangeTypes.NON_POSITIVE) { + return -t * 100 + "%"; + } else if (this.getValueRangeType() === this.rangeTypes.NON_NEGATIVE) { + return t * 100 + "%"; + } else if (this.getValueRangeType() === this.rangeTypes.ALL) { + return -t * 50 + "%"; + } + }.bind(this); + }; return BarRuleSet; })(); diff --git a/packages/oncoprintjs/src/js/oncoprinttooltip.js b/packages/oncoprintjs/src/js/oncoprinttooltip.js index 979799b5d58..5f12bca787e 100644 --- a/packages/oncoprintjs/src/js/oncoprinttooltip.js +++ b/packages/oncoprintjs/src/js/oncoprinttooltip.js @@ -1,5 +1,3 @@ -var $ = require('jquery'); - var OncoprintToolTip = (function() { function OncoprintToolTip($container, params) { params = params || {}; diff --git a/packages/oncoprintjs/src/js/oncoprinttrackinfoview.js b/packages/oncoprintjs/src/js/oncoprinttrackinfoview.js index a5e9c124453..8c6b74bee4a 100644 --- a/packages/oncoprintjs/src/js/oncoprinttrackinfoview.js +++ b/packages/oncoprintjs/src/js/oncoprinttrackinfoview.js @@ -1,5 +1,4 @@ var svgfactory = require('./svgfactory.js'); -var $ = require('jquery'); var OncoprintTrackInfoView = (function () { function OncoprintTrackInfoView($div) { diff --git a/packages/oncoprintjs/src/js/oncoprinttrackoptionsview.js b/packages/oncoprintjs/src/js/oncoprinttrackoptionsview.js index e5fbeae4a8a..18d921fb775 100644 --- a/packages/oncoprintjs/src/js/oncoprinttrackoptionsview.js +++ b/packages/oncoprintjs/src/js/oncoprinttrackoptionsview.js @@ -1,4 +1,3 @@ -var $ = require('jquery'); var OncoprintTrackOptionsView = (function () { function OncoprintTrackOptionsView($div, moveUpCallback, moveDownCallback, removeCallback, sortChangeCallback) { // removeCallback: function(track_id) @@ -125,7 +124,7 @@ var OncoprintTrackOptionsView = (function () { var $div, $img, $dropdown; var top = model.getZoomedTrackTops(track_id); $div = $('
').appendTo(view.$buttons_ctr).css({'position': 'absolute', 'left': '0px', 'top': top + 'px'}); - $img = $('').appendTo($div).attr({'src': 'img/menudots.svg', 'width': view.img_size, 'height': view.img_size}).css({'float': 'left', 'cursor': 'pointer', 'border': '1px solid rgba(125,125,125,0)'}); + $img = $('').appendTo($div).attr({'src': 'images/menudots.svg', 'width': view.img_size, 'height': view.img_size}).css({'float': 'left', 'cursor': 'pointer', 'border': '1px solid rgba(125,125,125,0)'}); $dropdown = $('