oncoprintjs 5.0.4 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +34 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.es.js +14731 -0
  4. package/dist/index.es.js.map +1 -0
  5. package/dist/index.js +14745 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/js/CachedProperty.d.ts +10 -10
  8. package/dist/js/binarysearch.d.ts +1 -1
  9. package/dist/js/bucketsort.d.ts +16 -16
  10. package/dist/js/clustering.d.ts +14 -14
  11. package/dist/js/extractrgba.d.ts +4 -4
  12. package/dist/js/haselementsininterval.d.ts +1 -1
  13. package/dist/js/heatmapcolors.d.ts +5 -4
  14. package/dist/js/makesvgelement.d.ts +1 -1
  15. package/dist/js/modelutils.d.ts +7 -7
  16. package/dist/js/oncoprint.d.ts +168 -170
  17. package/dist/js/oncoprintheaderview.d.ts +23 -22
  18. package/dist/js/oncoprintlabelview.d.ts +79 -78
  19. package/dist/js/oncoprintlegendrenderer.d.ts +32 -31
  20. package/dist/js/oncoprintminimapview.d.ts +69 -68
  21. package/dist/js/oncoprintmodel.d.ts +400 -398
  22. package/dist/js/oncoprintruleset.d.ts +176 -177
  23. package/dist/js/oncoprintshape.d.ts +67 -67
  24. package/dist/js/oncoprintshapetosvg.d.ts +2 -2
  25. package/dist/js/oncoprintshapetovertexes.d.ts +5 -5
  26. package/dist/js/oncoprinttooltip.d.ts +23 -22
  27. package/dist/js/oncoprinttrackinfoview.d.ts +40 -39
  28. package/dist/js/oncoprinttrackoptionsview.d.ts +58 -57
  29. package/dist/js/oncoprintwebglcellview.d.ts +168 -167
  30. package/dist/js/oncoprintzoomslider.d.ts +28 -27
  31. package/dist/js/polyfill.d.ts +4 -4
  32. package/dist/js/precomputedcomparator.d.ts +13 -13
  33. package/dist/js/shaders.d.ts +2 -2
  34. package/dist/js/svgfactory.d.ts +24 -23
  35. package/dist/js/utils.d.ts +16 -16
  36. package/dist/js/workers/clustering-worker.d.ts +19 -20
  37. package/dist/test/gradientCategoricalRuleset.spec.d.ts +1 -1
  38. package/dist/test/monolith.spec.d.ts +1 -1
  39. package/jest.config.ts +2 -0
  40. package/package.json +20 -26
  41. package/rollup.config.ts +14 -0
  42. package/rules/geneticrules.ts +344 -305
  43. package/server.js +11 -0
  44. package/src/img/menudots.svg +9 -9
  45. package/src/img/zoomtofit.svg +12 -12
  46. package/src/index.tsx +13 -0
  47. package/src/js/CachedProperty.ts +6 -7
  48. package/src/js/binarysearch.ts +8 -3
  49. package/src/js/bucketsort.ts +89 -47
  50. package/src/js/clustering.ts +22 -10
  51. package/src/js/extractrgba.ts +16 -12
  52. package/src/js/haselementsininterval.ts +8 -4
  53. package/src/js/heatmapcolors.ts +515 -515
  54. package/src/js/main.js +1 -1
  55. package/src/js/makesvgelement.ts +2 -2
  56. package/src/js/modelutils.ts +11 -8
  57. package/src/js/oncoprint.ts +706 -385
  58. package/src/js/oncoprintheaderview.ts +165 -125
  59. package/src/js/oncoprintlabelview.ts +388 -170
  60. package/src/js/oncoprintlegendrenderer.ts +203 -72
  61. package/src/js/oncoprintminimapview.ts +965 -423
  62. package/src/js/oncoprintmodel.ts +892 -530
  63. package/src/js/oncoprintruleset.ts +694 -379
  64. package/src/js/oncoprintshape.ts +240 -97
  65. package/src/js/oncoprintshapetosvg.ts +77 -26
  66. package/src/js/oncoprintshapetovertexes.ts +153 -48
  67. package/src/js/oncoprinttooltip.ts +58 -27
  68. package/src/js/oncoprinttrackinfoview.ts +115 -59
  69. package/src/js/oncoprinttrackoptionsview.ts +353 -187
  70. package/src/js/oncoprintwebglcellview.ts +951 -415
  71. package/src/js/oncoprintzoomslider.ts +172 -107
  72. package/src/js/polyfill.ts +7 -3
  73. package/src/js/precomputedcomparator.ts +133 -50
  74. package/src/js/shaders.ts +2 -4
  75. package/src/js/svgfactory.ts +128 -73
  76. package/src/js/utils.ts +51 -31
  77. package/src/js/workers/clustering-worker.ts +50 -42
  78. package/src/test/gradientCategoricalRuleset.spec.ts +55 -38
  79. package/src/test/monolith.spec.ts +718 -285
  80. package/test/generate_data.py +108 -0
  81. package/test/glyphmap-data.js +1041 -0
  82. package/test/heatmap-data.js +1027 -0
  83. package/test/index.html +21 -0
  84. package/test/oncoprint-glyphmap.js +79 -0
  85. package/test/oncoprint-heatmap.js +123 -0
  86. package/tsconfig.json +4 -10
  87. package/tsconfig.test.json +11 -0
  88. package/.idea/misc.xml +0 -6
  89. package/.idea/modules.xml +0 -8
  90. package/.idea/oncoprintjs.iml +0 -12
  91. package/.idea/vcs.xml +0 -6
  92. package/.idea/workspace.xml +0 -105
  93. package/dist/.gitkeep +0 -0
  94. package/dist/js/minimaputils.d.ts +0 -0
  95. package/dist/oncoprint.bundle.js +0 -33
  96. package/jest.config.js +0 -12
  97. package/src/js/minimaputils.ts +0 -0
  98. package/typings/custom.d.ts +0 -7
  99. package/typings/missing.d.ts +0 -7
  100. package/webpack.config.js +0 -43
@@ -1,57 +1,80 @@
1
- import $ from "jquery";
1
+ import $ from 'jquery';
2
2
  import menuDotsIcon from '../img/menudots.svg';
3
- import OncoprintModel, {TrackGroupProp, TrackId, TrackProp, TrackSortDirection} from "./oncoprintmodel";
3
+ import OncoprintModel, {
4
+ TrackGroupProp,
5
+ TrackId,
6
+ TrackProp,
7
+ TrackSortDirection,
8
+ } from './oncoprintmodel';
4
9
  import ClickEvent = JQuery.ClickEvent;
5
- import {CLOSE_MENUS_EVENT as HEADER_VIEW_CLOSE_MENUS_EVENT} from "./oncoprintheaderview";
10
+ import { CLOSE_MENUS_EVENT as HEADER_VIEW_CLOSE_MENUS_EVENT } from './oncoprintheaderview';
6
11
 
7
- const TOGGLE_BTN_CLASS = "oncoprintjs__track_options__toggle_btn_img";
8
- const TOGGLE_BTN_OPEN_CLASS = "oncoprintjs__track_options__open";
9
- const DROPDOWN_CLASS = "oncoprintjs__track_options__dropdown";
10
- const SEPARATOR_CLASS = "oncoprintjs__track_options__separator";
11
- const NTH_CLASS_PREFIX = "nth-";
12
+ const TOGGLE_BTN_CLASS = 'oncoprintjs__track_options__toggle_btn_img';
13
+ const TOGGLE_BTN_OPEN_CLASS = 'oncoprintjs__track_options__open';
14
+ const DROPDOWN_CLASS = 'oncoprintjs__track_options__dropdown';
15
+ const SEPARATOR_CLASS = 'oncoprintjs__track_options__separator';
16
+ const NTH_CLASS_PREFIX = 'nth-';
12
17
 
13
- export const CLOSE_MENUS_EVENT = "oncoprint-track-options-view.do-close-menus";
18
+ export const CLOSE_MENUS_EVENT = 'oncoprint-track-options-view.do-close-menus';
14
19
 
15
- type TrackCallback = (trackId:TrackId)=>void;
20
+ type TrackCallback = (trackId: TrackId) => void;
16
21
  export default class OncoprintTrackOptionsView {
22
+ private $ctr: JQuery;
23
+ private $buttons_ctr: JQuery;
24
+ private $dropdown_ctr: JQuery;
17
25
 
18
- private $ctr:JQuery;
19
- private $buttons_ctr:JQuery;
20
- private $dropdown_ctr:JQuery;
21
-
22
- private img_size:number;
26
+ private img_size: number;
23
27
  private rendering_suppressed = false;
24
- private track_options_$elts:TrackProp<{ $div:JQuery, $img:JQuery, $dropdown:JQuery}> = {};
25
- private menu_shown:TrackProp<boolean> = {};
26
- private clickHandler:()=>void;
28
+ private track_options_$elts: TrackProp<{
29
+ $div: JQuery;
30
+ $img: JQuery;
31
+ $dropdown: JQuery;
32
+ }> = {};
33
+ private menu_shown: TrackProp<boolean> = {};
34
+ private clickHandler: () => void;
27
35
  private interaction_disabled = false;
28
36
 
29
37
  constructor(
30
- private $div:JQuery,
31
- private moveUpCallback:TrackCallback,
32
- private moveDownCallback:TrackCallback,
33
- private removeCallback:TrackCallback,
34
- private sortChangeCallback:(trackId:TrackId, sortDirection:TrackSortDirection)=>void,
35
- private unexpandCallback:TrackCallback,
36
- private showGapsCallback:(trackId:TrackId, showGaps:boolean)=>void
38
+ private $div: JQuery,
39
+ private moveUpCallback: TrackCallback,
40
+ private moveDownCallback: TrackCallback,
41
+ private removeCallback: TrackCallback,
42
+ private sortChangeCallback: (
43
+ trackId: TrackId,
44
+ sortDirection: TrackSortDirection
45
+ ) => void,
46
+ private unexpandCallback: TrackCallback,
47
+ private showGapsCallback: (trackId: TrackId, showGaps: boolean) => void
37
48
  ) {
38
49
  const position = $div.css('position');
39
50
  if (position !== 'absolute' && position !== 'relative') {
40
- console.log("WARNING: div passed to OncoprintTrackOptionsView must be absolute or relative positioned - layout problems will occur");
51
+ console.log(
52
+ 'WARNING: div passed to OncoprintTrackOptionsView must be absolute or relative positioned - layout problems will occur'
53
+ );
41
54
  }
42
55
 
43
- this.$ctr = $('<div></div>').css({'position': 'absolute', 'overflow-y':'hidden', 'overflow-x':'hidden'}).appendTo(this.$div);
44
- this.$buttons_ctr = $('<div></div>').css({'position':'absolute'}).appendTo(this.$ctr);
45
- this.$dropdown_ctr = $('<div></div>').css({'position': 'absolute'}).appendTo(this.$div);
56
+ this.$ctr = $('<div></div>')
57
+ .css({
58
+ position: 'absolute',
59
+ 'overflow-y': 'hidden',
60
+ 'overflow-x': 'hidden',
61
+ })
62
+ .appendTo(this.$div);
63
+ this.$buttons_ctr = $('<div></div>')
64
+ .css({ position: 'absolute' })
65
+ .appendTo(this.$ctr);
66
+ this.$dropdown_ctr = $('<div></div>')
67
+ .css({ position: 'absolute' })
68
+ .appendTo(this.$div);
46
69
 
47
70
  const self = this;
48
71
  this.clickHandler = function() {
49
72
  $(document).trigger(CLOSE_MENUS_EVENT);
50
73
  };
51
- $(document).on("click", this.clickHandler);
74
+ $(document).on('click', this.clickHandler);
52
75
  }
53
76
 
54
- private renderAllOptions(model:OncoprintModel) {
77
+ private renderAllOptions(model: OncoprintModel) {
55
78
  if (this.rendering_suppressed) {
56
79
  return;
57
80
  }
@@ -68,7 +91,10 @@ export default class OncoprintTrackOptionsView {
68
91
  var tracks = model.getTracks();
69
92
  var minimum_track_height = Number.POSITIVE_INFINITY;
70
93
  for (let i = 0; i < tracks.length; i++) {
71
- minimum_track_height = Math.min(minimum_track_height, model.getTrackHeight(tracks[i]));
94
+ minimum_track_height = Math.min(
95
+ minimum_track_height,
96
+ model.getTrackHeight(tracks[i])
97
+ );
72
98
  }
73
99
  this.img_size = Math.floor(minimum_track_height * 0.75);
74
100
 
@@ -77,39 +103,39 @@ export default class OncoprintTrackOptionsView {
77
103
  }
78
104
  }
79
105
 
80
- private scroll(scroll_y:number) {
106
+ private scroll(scroll_y: number) {
81
107
  if (this.rendering_suppressed) {
82
108
  return;
83
109
  }
84
- this.$buttons_ctr.css({'top': -scroll_y});
85
- this.$dropdown_ctr.css({'top': -scroll_y});
110
+ this.$buttons_ctr.css({ top: -scroll_y });
111
+ this.$dropdown_ctr.css({ top: -scroll_y });
86
112
 
87
113
  this.hideAllMenus();
88
114
  }
89
115
 
90
- private resize(model:OncoprintModel, getCellViewHeight:()=>number) {
116
+ private resize(model: OncoprintModel, getCellViewHeight: () => number) {
91
117
  if (this.rendering_suppressed) {
92
118
  return;
93
119
  }
94
- this.$div.css({'width': this.getWidth(), 'height': getCellViewHeight()});
95
- this.$ctr.css({'width': this.getWidth(), 'height': getCellViewHeight()});
120
+ this.$div.css({ width: this.getWidth(), height: getCellViewHeight() });
121
+ this.$ctr.css({ width: this.getWidth(), height: getCellViewHeight() });
96
122
  }
97
123
 
98
- private hideTrackMenu(track_id:TrackId) {
124
+ private hideTrackMenu(track_id: TrackId) {
99
125
  this.menu_shown[track_id] = false;
100
126
  const $elts = this.track_options_$elts[track_id];
101
- $elts.$dropdown.css({'z-index': 1});
102
- $elts.$dropdown.css({'border': '1px solid rgba(125,125,125,0)'});
103
- $elts.$img.css({'border': '1px solid rgba(125,125,125,0)'});
127
+ $elts.$dropdown.css({ 'z-index': 1 });
128
+ $elts.$dropdown.css({ border: '1px solid rgba(125,125,125,0)' });
129
+ $elts.$img.css({ border: '1px solid rgba(125,125,125,0)' });
104
130
  $elts.$dropdown.fadeOut(100);
105
131
  }
106
132
 
107
- private showTrackMenu(track_id:TrackId) {
133
+ private showTrackMenu(track_id: TrackId) {
108
134
  this.menu_shown[track_id] = true;
109
135
  const $elts = this.track_options_$elts[track_id];
110
- $elts.$dropdown.css({'z-index': 10});
111
- $elts.$dropdown.css({'border': '1px solid rgba(125,125,125,1)'});
112
- $elts.$img.css({'border': '1px solid rgba(125,125,125,1)'});
136
+ $elts.$dropdown.css({ 'z-index': 10 });
137
+ $elts.$dropdown.css({ border: '1px solid rgba(125,125,125,1)' });
138
+ $elts.$img.css({ border: '1px solid rgba(125,125,125,1)' });
113
139
  $elts.$dropdown.fadeIn(100);
114
140
  }
115
141
 
@@ -121,7 +147,7 @@ export default class OncoprintTrackOptionsView {
121
147
  }
122
148
  }
123
149
 
124
- private hideMenusExcept(track_id:TrackId) {
150
+ private hideMenusExcept(track_id: TrackId) {
125
151
  for (const _other_track_id in this.track_options_$elts) {
126
152
  if (this.track_options_$elts.hasOwnProperty(_other_track_id)) {
127
153
  const other_track_id = parseInt(_other_track_id, 10);
@@ -135,88 +161,144 @@ export default class OncoprintTrackOptionsView {
135
161
  $(document).trigger(HEADER_VIEW_CLOSE_MENUS_EVENT);
136
162
  }
137
163
 
138
- private static $makeDropdownOption(text:string, weight:string, disabled?:boolean, callback?:(evt:ClickEvent)=>void) {
139
- const li = $('<li>').text(text).css({'font-weight': weight, 'font-size': 12, 'border-bottom': '1px solid rgba(0,0,0,0.3)'});
164
+ private static $makeDropdownOption(
165
+ text: string,
166
+ weight: string,
167
+ disabled?: boolean,
168
+ callback?: (evt: ClickEvent) => void
169
+ ) {
170
+ const li = $('<li>')
171
+ .text(text)
172
+ .css({
173
+ 'font-weight': weight,
174
+ 'font-size': 12,
175
+ 'border-bottom': '1px solid rgba(0,0,0,0.3)',
176
+ });
140
177
  if (!disabled) {
141
178
  if (callback) {
142
- li.addClass("clickable");
143
- li.css({'cursor': 'pointer'});
144
- li.click(callback)
145
- .hover(function () {
146
- $(this).css({'background-color': 'rgb(200,200,200)'});
147
- }, function () {
148
- $(this).css({'background-color': 'rgba(255,255,255,0)'});
149
- });
179
+ li.addClass('clickable');
180
+ li.css({ cursor: 'pointer' });
181
+ li.click(callback).hover(
182
+ function() {
183
+ $(this).css({ 'background-color': 'rgb(200,200,200)' });
184
+ },
185
+ function() {
186
+ $(this).css({
187
+ 'background-color': 'rgba(255,255,255,0)',
188
+ });
189
+ }
190
+ );
150
191
  } else {
151
- li.click(function(evt) { evt.stopPropagation(); });
192
+ li.click(function(evt) {
193
+ evt.stopPropagation();
194
+ });
152
195
  }
153
196
  } else {
154
- li.addClass("disabled");
155
- li.css({'color': 'rgb(200, 200, 200)', 'cursor': 'default'});
197
+ li.addClass('disabled');
198
+ li.css({ color: 'rgb(200, 200, 200)', cursor: 'default' });
156
199
  }
157
200
  return li;
158
201
  }
159
202
 
160
203
  private static $makeDropdownSeparator() {
161
- return $('<li>').css({'border-top': '1px solid black'}).addClass(SEPARATOR_CLASS);
204
+ return $('<li>')
205
+ .css({ 'border-top': '1px solid black' })
206
+ .addClass(SEPARATOR_CLASS);
162
207
  }
163
208
 
164
- private static renderSortArrow($sortarrow:JQuery, model:OncoprintModel, track_id:TrackId) {
209
+ private static renderSortArrow(
210
+ $sortarrow: JQuery,
211
+ model: OncoprintModel,
212
+ track_id: TrackId
213
+ ) {
165
214
  let sortarrow_char = '';
166
- if (model.isTrackSortDirectionChangeable(track_id)){
215
+ if (model.isTrackSortDirectionChangeable(track_id)) {
167
216
  sortarrow_char = {
168
- '1': '<i class="fa fa-signal" aria-hidden="true" title="Sorted ascending"></i>',
169
- '-1': '<i class="fa fa-signal" style="transform: scaleX(-1);" aria-hidden="true" title="Sorted descending"></i>',
170
- '0': ''}[model.getTrackSortDirection(track_id)];
217
+ '1':
218
+ '<i class="fa fa-signal" aria-hidden="true" title="Sorted ascending"></i>',
219
+ '-1':
220
+ '<i class="fa fa-signal" style="transform: scaleX(-1);" aria-hidden="true" title="Sorted descending"></i>',
221
+ '0': '',
222
+ }[model.getTrackSortDirection(track_id)];
171
223
  }
172
224
  $sortarrow.html(sortarrow_char);
173
225
  }
174
226
 
175
- private renderTrackOptions(model:OncoprintModel, track_id:TrackId, index:number) {
176
- let $div:JQuery, $img:JQuery, $sortarrow:JQuery, $dropdown:JQuery;
227
+ private renderTrackOptions(
228
+ model: OncoprintModel,
229
+ track_id: TrackId,
230
+ index: number
231
+ ) {
232
+ let $div: JQuery, $img: JQuery, $sortarrow: JQuery, $dropdown: JQuery;
177
233
  const top = model.getZoomedTrackTops(track_id);
178
- $div = $('<div>').appendTo(this.$buttons_ctr).css({'position': 'absolute', 'left': '0px', 'top': top + 'px', 'white-space': 'nowrap'});
179
- $img = $('<img/>').appendTo($div)
234
+ $div = $('<div>')
235
+ .appendTo(this.$buttons_ctr)
236
+ .css({
237
+ position: 'absolute',
238
+ left: '0px',
239
+ top: top + 'px',
240
+ 'white-space': 'nowrap',
241
+ });
242
+ $img = $('<img/>')
243
+ .appendTo($div)
180
244
  .attr({
181
- 'src': menuDotsIcon,
182
- 'width': this.img_size,
183
- 'height': this.img_size
245
+ src: menuDotsIcon,
246
+ width: this.img_size,
247
+ height: this.img_size,
184
248
  })
185
249
  .css({
186
- 'float': 'left',
187
- 'cursor': 'pointer',
188
- 'border': '1px solid rgba(125,125,125,0)'
189
- }).addClass(TOGGLE_BTN_CLASS).addClass(NTH_CLASS_PREFIX+(index+1));
190
- $sortarrow = $('<span>').appendTo($div).css({'position': 'absolute', 'top': Math.floor(this.img_size / 4) + 'px'});
191
- $dropdown = $('<ul>').appendTo(this.$dropdown_ctr)
250
+ float: 'left',
251
+ cursor: 'pointer',
252
+ border: '1px solid rgba(125,125,125,0)',
253
+ })
254
+ .addClass(TOGGLE_BTN_CLASS)
255
+ .addClass(NTH_CLASS_PREFIX + (index + 1));
256
+ $sortarrow = $('<span>')
257
+ .appendTo($div)
192
258
  .css({
193
- 'position':'absolute',
194
- 'width': 120,
195
- 'display': 'none',
259
+ position: 'absolute',
260
+ top: Math.floor(this.img_size / 4) + 'px',
261
+ });
262
+ $dropdown = $('<ul>')
263
+ .appendTo(this.$dropdown_ctr)
264
+ .css({
265
+ position: 'absolute',
266
+ width: 120,
267
+ display: 'none',
196
268
  'list-style-type': 'none',
197
269
  'padding-left': '6',
198
270
  'padding-right': '6',
199
- 'float': 'right',
271
+ float: 'right',
200
272
  'background-color': 'rgb(255,255,255)',
201
- 'left':'0px', 'top': top + this.img_size + 'px'
202
- }).addClass(DROPDOWN_CLASS).addClass(NTH_CLASS_PREFIX+(index+1));
203
- this.track_options_$elts[track_id] = {'$div': $div, '$img': $img, '$dropdown': $dropdown};
273
+ left: '0px',
274
+ top: top + this.img_size + 'px',
275
+ })
276
+ .addClass(DROPDOWN_CLASS)
277
+ .addClass(NTH_CLASS_PREFIX + (index + 1));
278
+ this.track_options_$elts[track_id] = {
279
+ $div: $div,
280
+ $img: $img,
281
+ $dropdown: $dropdown,
282
+ };
204
283
 
205
284
  OncoprintTrackOptionsView.renderSortArrow($sortarrow, model, track_id);
206
285
 
207
286
  const self = this;
208
- $img.hover(function (evt) {
209
- if (!self.menu_shown[track_id]) {
210
- $(this).css({'border': '1px solid rgba(125,125,125,0.3)'});
211
- }
212
- }, function (evt) {
213
- if (!self.menu_shown[track_id]) {
214
- $(this).css({'border': '1px solid rgba(125,125,125,0)'});
287
+ $img.hover(
288
+ function(evt) {
289
+ if (!self.menu_shown[track_id]) {
290
+ $(this).css({ border: '1px solid rgba(125,125,125,0.3)' });
291
+ }
292
+ },
293
+ function(evt) {
294
+ if (!self.menu_shown[track_id]) {
295
+ $(this).css({ border: '1px solid rgba(125,125,125,0)' });
296
+ }
215
297
  }
216
- });
217
- $img.click(function (evt) {
298
+ );
299
+ $img.click(function(evt) {
218
300
  evt.stopPropagation();
219
- if ($dropdown.is(":visible")) {
301
+ if ($dropdown.is(':visible')) {
220
302
  $img.addClass(TOGGLE_BTN_OPEN_CLASS);
221
303
  self.hideTrackMenu(track_id);
222
304
  } else {
@@ -226,82 +308,144 @@ export default class OncoprintTrackOptionsView {
226
308
  self.hideMenusExcept(track_id);
227
309
  });
228
310
 
229
- const movingDisabled = model.getTrackMovable(track_id) && model.isTrackInClusteredGroup(track_id);
311
+ const movingDisabled =
312
+ model.getTrackMovable(track_id) &&
313
+ model.isTrackInClusteredGroup(track_id);
230
314
 
231
315
  if (model.getTrackMovable(track_id)) {
232
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownOption('Move up', 'normal', movingDisabled, function (evt) {
233
- evt.stopPropagation();
234
- self.moveUpCallback(track_id);
235
- }));
236
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownOption('Move down', 'normal', movingDisabled, function (evt) {
237
- evt.stopPropagation();
238
- self.moveDownCallback(track_id);
239
- }));
316
+ $dropdown.append(
317
+ OncoprintTrackOptionsView.$makeDropdownOption(
318
+ 'Move up',
319
+ 'normal',
320
+ movingDisabled,
321
+ function(evt) {
322
+ evt.stopPropagation();
323
+ self.moveUpCallback(track_id);
324
+ }
325
+ )
326
+ );
327
+ $dropdown.append(
328
+ OncoprintTrackOptionsView.$makeDropdownOption(
329
+ 'Move down',
330
+ 'normal',
331
+ movingDisabled,
332
+ function(evt) {
333
+ evt.stopPropagation();
334
+ self.moveDownCallback(track_id);
335
+ }
336
+ )
337
+ );
240
338
  }
241
339
  if (model.isTrackRemovable(track_id)) {
242
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownOption('Remove track', 'normal', false, function (evt) {
243
- evt.stopPropagation();
244
- self.removeCallback(track_id);
245
- }));
340
+ $dropdown.append(
341
+ OncoprintTrackOptionsView.$makeDropdownOption(
342
+ 'Remove track',
343
+ 'normal',
344
+ false,
345
+ function(evt) {
346
+ evt.stopPropagation();
347
+ self.removeCallback(track_id);
348
+ }
349
+ )
350
+ );
246
351
  }
247
352
  if (model.isTrackSortDirectionChangeable(track_id)) {
248
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownSeparator());
249
- let $sort_inc_li:JQuery;
250
- let $sort_dec_li:JQuery;
251
- let $dont_sort_li:JQuery;
252
- $sort_inc_li = OncoprintTrackOptionsView.$makeDropdownOption('Sort a-Z', (model.getTrackSortDirection(track_id) === 1 ? 'bold' : 'normal'), false, function (evt) {
253
- evt.stopPropagation();
254
- $sort_inc_li.css('font-weight', 'bold');
255
- $sort_dec_li.css('font-weight', 'normal');
256
- $dont_sort_li.css('font-weight', 'normal');
257
- self.sortChangeCallback(track_id, 1);
258
- OncoprintTrackOptionsView.renderSortArrow($sortarrow, model, track_id);
259
- });
260
- $sort_dec_li = OncoprintTrackOptionsView.$makeDropdownOption('Sort Z-a', (model.getTrackSortDirection(track_id) === -1 ? 'bold' : 'normal'), false, function (evt) {
261
- evt.stopPropagation();
262
- $sort_inc_li.css('font-weight', 'normal');
263
- $sort_dec_li.css('font-weight', 'bold');
264
- $dont_sort_li.css('font-weight', 'normal');
265
- self.sortChangeCallback(track_id, -1);
266
- OncoprintTrackOptionsView.renderSortArrow($sortarrow, model, track_id);
267
- });
268
- $dont_sort_li = OncoprintTrackOptionsView.$makeDropdownOption('Don\'t sort track', (model.getTrackSortDirection(track_id) === 0 ? 'bold' : 'normal'), false, function (evt) {
269
- evt.stopPropagation();
270
- $sort_inc_li.css('font-weight', 'normal');
271
- $sort_dec_li.css('font-weight', 'normal');
272
- $dont_sort_li.css('font-weight', 'bold');
273
- self.sortChangeCallback(track_id, 0);
274
- OncoprintTrackOptionsView.renderSortArrow($sortarrow, model, track_id);
275
- });
353
+ $dropdown.append(
354
+ OncoprintTrackOptionsView.$makeDropdownSeparator()
355
+ );
356
+ let $sort_inc_li: JQuery;
357
+ let $sort_dec_li: JQuery;
358
+ let $dont_sort_li: JQuery;
359
+ $sort_inc_li = OncoprintTrackOptionsView.$makeDropdownOption(
360
+ 'Sort a-Z',
361
+ model.getTrackSortDirection(track_id) === 1 ? 'bold' : 'normal',
362
+ false,
363
+ function(evt) {
364
+ evt.stopPropagation();
365
+ $sort_inc_li.css('font-weight', 'bold');
366
+ $sort_dec_li.css('font-weight', 'normal');
367
+ $dont_sort_li.css('font-weight', 'normal');
368
+ self.sortChangeCallback(track_id, 1);
369
+ OncoprintTrackOptionsView.renderSortArrow(
370
+ $sortarrow,
371
+ model,
372
+ track_id
373
+ );
374
+ }
375
+ );
376
+ $sort_dec_li = OncoprintTrackOptionsView.$makeDropdownOption(
377
+ 'Sort Z-a',
378
+ model.getTrackSortDirection(track_id) === -1
379
+ ? 'bold'
380
+ : 'normal',
381
+ false,
382
+ function(evt) {
383
+ evt.stopPropagation();
384
+ $sort_inc_li.css('font-weight', 'normal');
385
+ $sort_dec_li.css('font-weight', 'bold');
386
+ $dont_sort_li.css('font-weight', 'normal');
387
+ self.sortChangeCallback(track_id, -1);
388
+ OncoprintTrackOptionsView.renderSortArrow(
389
+ $sortarrow,
390
+ model,
391
+ track_id
392
+ );
393
+ }
394
+ );
395
+ $dont_sort_li = OncoprintTrackOptionsView.$makeDropdownOption(
396
+ "Don't sort track",
397
+ model.getTrackSortDirection(track_id) === 0 ? 'bold' : 'normal',
398
+ false,
399
+ function(evt) {
400
+ evt.stopPropagation();
401
+ $sort_inc_li.css('font-weight', 'normal');
402
+ $sort_dec_li.css('font-weight', 'normal');
403
+ $dont_sort_li.css('font-weight', 'bold');
404
+ self.sortChangeCallback(track_id, 0);
405
+ OncoprintTrackOptionsView.renderSortArrow(
406
+ $sortarrow,
407
+ model,
408
+ track_id
409
+ );
410
+ }
411
+ );
276
412
  $dropdown.append($sort_inc_li);
277
413
  $dropdown.append($sort_dec_li);
278
414
  $dropdown.append($dont_sort_li);
279
415
  }
280
416
  if (model.isTrackExpandable(track_id)) {
281
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownOption(
282
- model.getExpandButtonText(track_id),
283
- 'normal',
284
- false,
285
- function (evt) {
286
- evt.stopPropagation();
287
- // close the menu to discourage clicking again, as it
288
- // may take a moment to finish expanding
289
- self.renderAllOptions(model);
290
- model.expandTrack(track_id);
291
- }));
417
+ $dropdown.append(
418
+ OncoprintTrackOptionsView.$makeDropdownOption(
419
+ model.getExpandButtonText(track_id),
420
+ 'normal',
421
+ false,
422
+ function(evt) {
423
+ evt.stopPropagation();
424
+ // close the menu to discourage clicking again, as it
425
+ // may take a moment to finish expanding
426
+ self.renderAllOptions(model);
427
+ model.expandTrack(track_id);
428
+ }
429
+ )
430
+ );
292
431
  }
293
432
  if (model.isTrackExpanded(track_id)) {
294
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownOption(
295
- 'Remove expansion',
296
- 'normal',
297
- false,
298
- function (evt) {
299
- evt.stopPropagation();
300
- self.unexpandCallback(track_id);
301
- }));
433
+ $dropdown.append(
434
+ OncoprintTrackOptionsView.$makeDropdownOption(
435
+ 'Remove expansion',
436
+ 'normal',
437
+ false,
438
+ function(evt) {
439
+ evt.stopPropagation();
440
+ self.unexpandCallback(track_id);
441
+ }
442
+ )
443
+ );
302
444
  }
303
445
  if (model.getTrackCanShowGaps(track_id)) {
304
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownSeparator());
446
+ $dropdown.append(
447
+ OncoprintTrackOptionsView.$makeDropdownSeparator()
448
+ );
305
449
  const $show_gaps_opt = OncoprintTrackOptionsView.$makeDropdownOption(
306
450
  'Show gaps',
307
451
  model.getTrackShowGaps(track_id) ? 'bold' : 'normal',
@@ -331,23 +475,33 @@ export default class OncoprintTrackOptionsView {
331
475
  // Add custom options
332
476
  const custom_options = model.getTrackCustomOptions(track_id);
333
477
  if (custom_options && custom_options.length > 0) {
334
- for (var i=0; i<custom_options.length; i++) {
478
+ for (var i = 0; i < custom_options.length; i++) {
335
479
  (function() {
336
480
  // wrapped in function to prevent scope issues
337
481
  var option = custom_options[i];
338
482
  if (option.separator) {
339
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownSeparator());
483
+ $dropdown.append(
484
+ OncoprintTrackOptionsView.$makeDropdownSeparator()
485
+ );
340
486
  } else {
341
- $dropdown.append(OncoprintTrackOptionsView.$makeDropdownOption(option.label || "", option.weight || "normal", option.disabled, option.onClick && function (evt) {
342
- evt.stopPropagation();
343
- option.onClick(track_id);
344
- }));
487
+ $dropdown.append(
488
+ OncoprintTrackOptionsView.$makeDropdownOption(
489
+ option.label || '',
490
+ option.weight || 'normal',
491
+ option.disabled,
492
+ option.onClick &&
493
+ function(evt) {
494
+ evt.stopPropagation();
495
+ option.onClick(track_id);
496
+ }
497
+ )
498
+ );
345
499
  }
346
- })()
500
+ })();
347
501
  }
348
502
  }
349
503
 
350
- if ($dropdown.is(":empty")) {
504
+ if ($dropdown.is(':empty')) {
351
505
  // if no options, then delete elements
352
506
  $div.remove();
353
507
  $dropdown.remove();
@@ -363,78 +517,90 @@ export default class OncoprintTrackOptionsView {
363
517
  public suppressRendering() {
364
518
  this.rendering_suppressed = true;
365
519
  }
366
- public releaseRendering(model:OncoprintModel, getCellViewHeight:()=>number) {
520
+ public releaseRendering(
521
+ model: OncoprintModel,
522
+ getCellViewHeight: () => number
523
+ ) {
367
524
  this.rendering_suppressed = false;
368
525
  this.renderAllOptions(model);
369
526
  this.resize(model, getCellViewHeight);
370
527
  this.scroll(model.getVertScroll());
371
528
  }
372
- public setScroll(model:OncoprintModel) {
529
+ public setScroll(model: OncoprintModel) {
373
530
  this.setVertScroll(model);
374
531
  }
375
- public setHorzScroll(model:OncoprintModel) {
376
- }
377
- public setVertScroll(model:OncoprintModel) {
532
+ public setHorzScroll(model: OncoprintModel) {}
533
+ public setVertScroll(model: OncoprintModel) {
378
534
  this.scroll(model.getVertScroll());
379
535
  }
380
- public setZoom(model:OncoprintModel, getCellViewHeight:()=>number) {
536
+ public setZoom(model: OncoprintModel, getCellViewHeight: () => number) {
381
537
  this.setVertZoom(model, getCellViewHeight);
382
538
  }
383
- public setVertZoom(model:OncoprintModel, getCellViewHeight:()=>number) {
539
+ public setVertZoom(model: OncoprintModel, getCellViewHeight: () => number) {
384
540
  this.renderAllOptions(model);
385
541
  this.resize(model, getCellViewHeight);
386
542
  }
387
- public setTrackGroupHeader(model:OncoprintModel, getCellViewHeight:()=>number) {
543
+ public setTrackGroupHeader(
544
+ model: OncoprintModel,
545
+ getCellViewHeight: () => number
546
+ ) {
388
547
  this.renderAllOptions(model);
389
548
  this.resize(model, getCellViewHeight);
390
549
  }
391
- public sort(model:OncoprintModel, getCellViewHeight:()=>number) {
550
+ public sort(model: OncoprintModel, getCellViewHeight: () => number) {
392
551
  this.renderAllOptions(model);
393
552
  this.resize(model, getCellViewHeight);
394
553
  }
395
- public setViewport(model:OncoprintModel, getCellViewHeight:()=>number) {
554
+ public setViewport(model: OncoprintModel, getCellViewHeight: () => number) {
396
555
  this.renderAllOptions(model);
397
556
  this.resize(model, getCellViewHeight);
398
557
  this.scroll(model.getVertScroll());
399
558
  }
400
559
  public getWidth() {
401
- if (this.$buttons_ctr.is(":empty")) {
560
+ if (this.$buttons_ctr.is(':empty')) {
402
561
  return 0;
403
562
  } else {
404
563
  return 18 + this.img_size;
405
564
  }
406
565
  }
407
- public setTrackShowGaps(model:OncoprintModel, getCellViewHeight:()=>number) {
566
+ public setTrackShowGaps(
567
+ model: OncoprintModel,
568
+ getCellViewHeight: () => number
569
+ ) {
408
570
  this.renderAllOptions(model);
409
571
  this.resize(model, getCellViewHeight);
410
572
  }
411
- public addTracks(model:OncoprintModel, getCellViewHeight:()=>number) {
573
+ public addTracks(model: OncoprintModel, getCellViewHeight: () => number) {
412
574
  this.renderAllOptions(model);
413
575
  this.resize(model, getCellViewHeight);
414
576
  }
415
- public moveTrack(model:OncoprintModel, getCellViewHeight:()=>number) {
577
+ public moveTrack(model: OncoprintModel, getCellViewHeight: () => number) {
416
578
  this.renderAllOptions(model);
417
579
  this.resize(model, getCellViewHeight);
418
580
  }
419
- public setTrackGroupOrder(model:OncoprintModel) {
581
+ public setTrackGroupOrder(model: OncoprintModel) {
420
582
  this.renderAllOptions(model);
421
583
  }
422
- public setSortConfig(model:OncoprintModel) {
584
+ public setSortConfig(model: OncoprintModel) {
423
585
  this.renderAllOptions(model);
424
586
  }
425
- public removeTrack(model:OncoprintModel, track_id:TrackId, getCellViewHeight:()=>number) {
587
+ public removeTrack(
588
+ model: OncoprintModel,
589
+ track_id: TrackId,
590
+ getCellViewHeight: () => number
591
+ ) {
426
592
  delete this.track_options_$elts[track_id];
427
593
  this.renderAllOptions(model);
428
594
  this.resize(model, getCellViewHeight);
429
595
  }
430
596
  public destroy() {
431
- $(document).off("click", this.clickHandler);
597
+ $(document).off('click', this.clickHandler);
432
598
  $(document).off(CLOSE_MENUS_EVENT);
433
- };
434
- public setTrackCustomOptions(model:OncoprintModel) {
599
+ }
600
+ public setTrackCustomOptions(model: OncoprintModel) {
435
601
  this.renderAllOptions(model);
436
- };
437
- public setTrackMovable(model:OncoprintModel) {
602
+ }
603
+ public setTrackMovable(model: OncoprintModel) {
438
604
  this.renderAllOptions(model);
439
605
  }
440
606
  }