@datagrok-libraries/bio 5.51.2 → 5.52.1
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.
- package/CHANGELOG.md +4 -0
- package/package.json +1 -1
- package/src/utils/cell-renderer-monomer-placer.d.ts +7 -2
- package/src/utils/cell-renderer-monomer-placer.d.ts.map +1 -1
- package/src/utils/cell-renderer-monomer-placer.js +68 -33
- package/src/utils/cell-renderer-monomer-placer.js.map +1 -1
- package/src/utils/macromolecule/consts.d.ts +2 -1
- package/src/utils/macromolecule/consts.d.ts.map +1 -1
- package/src/utils/macromolecule/consts.js +1 -0
- package/src/utils/macromolecule/consts.js.map +1 -1
- package/src/utils/sequence-position-scroller.d.ts +96 -0
- package/src/utils/sequence-position-scroller.d.ts.map +1 -0
- package/src/utils/sequence-position-scroller.js +310 -0
- package/src/utils/sequence-position-scroller.js.map +1 -0
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
10
10
|
"friendlyName": "Datagrok bio library",
|
|
11
|
-
"version": "5.
|
|
11
|
+
"version": "5.52.1",
|
|
12
12
|
"description": "Bio utilities, types supporting Macromolecule, Molecule3D data",
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@datagrok-libraries/chem-meta": "^1.2.7",
|
|
@@ -10,7 +10,10 @@ type MonomerPlacerProps = {
|
|
|
10
10
|
fontCharWidth: number;
|
|
11
11
|
};
|
|
12
12
|
export declare const undefinedColor = "rgb(100,100,100)";
|
|
13
|
-
export declare
|
|
13
|
+
export declare const shiftedLeftPaddingText = "...";
|
|
14
|
+
/** Be ware, this can return -1 meaning that hovering/clicking happened on the three dots
|
|
15
|
+
* and not on the monomer itself */
|
|
16
|
+
export declare function hitBounds(bounds: number[], x: number, positionShiftPixels?: number): number | null;
|
|
14
17
|
export declare class MonomerPlacer extends CellRendererBackBase<string> {
|
|
15
18
|
monomerLengthLimit: number;
|
|
16
19
|
private readonly propsProvider;
|
|
@@ -46,10 +49,12 @@ export declare class MonomerPlacer extends CellRendererBackBase<string> {
|
|
|
46
49
|
private getCellMonomerLengthsForSeqValue;
|
|
47
50
|
private getCellMonomerLengthsForSeqMsa;
|
|
48
51
|
/** Returns seq position for pointer x */
|
|
49
|
-
getPosition(rowIdx: number, x: number, width: number): number | null;
|
|
52
|
+
getPosition(rowIdx: number, x: number, width: number, positionShiftPadding?: number): number | null;
|
|
50
53
|
setMonomerLengthLimit(value: number): void;
|
|
51
54
|
setSeparatorWidth(value: number): void;
|
|
52
55
|
private padding;
|
|
56
|
+
get positionShift(): number;
|
|
57
|
+
private _leftThreeDotsPadding;
|
|
53
58
|
render(g: CanvasRenderingContext2D, x: number, y: number, w: number, h: number, gridCell: DG.GridCell, _cellStyle: DG.GridCellStyle): void;
|
|
54
59
|
onMouseMove(gridCell: DG.GridCell, e: MouseEvent): void;
|
|
55
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell-renderer-monomer-placer.d.ts","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cell-renderer-monomer-placer.d.ts","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,15 @@ import { DrawStyle, printLeftOrCentered, TAGS as mmcrTAGS } from './cell-rendere
|
|
|
10
10
|
import { rendererSettingsChangedState } from './cell-renderer-consts';
|
|
11
11
|
import { HelmTypes } from '../helm/consts';
|
|
12
12
|
import { execMonomerHoverLinks } from '../monomer-works/monomer-hover';
|
|
13
|
+
import * as operators from 'rxjs/operators';
|
|
13
14
|
export const undefinedColor = 'rgb(100,100,100)';
|
|
14
|
-
export
|
|
15
|
+
export const shiftedLeftPaddingText = '...';
|
|
16
|
+
/** Be ware, this can return -1 meaning that hovering/clicking happened on the three dots
|
|
17
|
+
* and not on the monomer itself */
|
|
18
|
+
export function hitBounds(bounds, x, positionShiftPixels) {
|
|
19
|
+
if ((positionShiftPixels ?? 0) > 0 && x < (bounds[0] ?? 0) + positionShiftPixels)
|
|
20
|
+
return -1;
|
|
21
|
+
x -= positionShiftPixels ?? 0;
|
|
15
22
|
let iterationCount = 100;
|
|
16
23
|
let leftI = 0;
|
|
17
24
|
let rightI = bounds.length - 1;
|
|
@@ -46,6 +53,7 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
46
53
|
this._monomerStructureMap = {}; // caches the atomic structures of monomers
|
|
47
54
|
this.sysMonomerLib = null;
|
|
48
55
|
this.padding = 5;
|
|
56
|
+
this._leftThreeDotsPadding = 0;
|
|
49
57
|
this.props = this.propsProvider();
|
|
50
58
|
this._processedRows = DG.BitSet.create(this.tableCol.length);
|
|
51
59
|
if (this.gridCol) {
|
|
@@ -63,6 +71,9 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
63
71
|
this.invalidateGrid();
|
|
64
72
|
}
|
|
65
73
|
}));
|
|
74
|
+
this.subs.push(DG.debounce(this.tableCol.dataFrame.onMetadataChanged.pipe(operators.filter((a) => a.args.source === this.tableCol && a.args.key === bioTAGS.positionShift)), 200).subscribe((_) => {
|
|
75
|
+
this.reset();
|
|
76
|
+
}));
|
|
66
77
|
}
|
|
67
78
|
}
|
|
68
79
|
async init() {
|
|
@@ -133,7 +144,7 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
133
144
|
}
|
|
134
145
|
getSummedMonomerLengths(res) {
|
|
135
146
|
const resSum = new Array(res.length + 1);
|
|
136
|
-
resSum[0] =
|
|
147
|
+
resSum[0] = this.padding; // padding
|
|
137
148
|
for (let pos = 1; pos < resSum.length; pos++)
|
|
138
149
|
resSum[pos] = resSum[pos - 1] + res[pos - 1];
|
|
139
150
|
// due to implementation specifics and performance, resSum can have NaN s at the end for stuff that is not visible
|
|
@@ -147,25 +158,26 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
147
158
|
return resSum;
|
|
148
159
|
}
|
|
149
160
|
getCellMonomerLengthsForSeq(rowIdx) {
|
|
150
|
-
const logPrefix = `${this.toLog()}.
|
|
161
|
+
const logPrefix = `${this.toLog()}.getCellMonomerLengthsForSeq()`;
|
|
151
162
|
// this.logger.debug(`${logPrefix}, start`);
|
|
152
163
|
if (this._monomerLengthList === null)
|
|
153
164
|
this._monomerLengthList = new Array(this.tableCol.length).fill(null);
|
|
165
|
+
const visibleSeqStart = this.positionShift;
|
|
154
166
|
const sh = this.seqHelper.getSeqHandler(this.tableCol);
|
|
155
167
|
const minMonWidth = this.props.separatorWidth + 1 * this.props.fontCharWidth;
|
|
156
|
-
const maxVisibleSeqLength = Math.ceil(this.colWidth / minMonWidth);
|
|
168
|
+
const maxVisibleSeqLength = Math.ceil(this.colWidth / minMonWidth) + visibleSeqStart;
|
|
157
169
|
const seqSS = sh.getSplitted(rowIdx);
|
|
158
|
-
const
|
|
170
|
+
const visibleSeqEnd = Math.min(maxVisibleSeqLength, seqSS.length);
|
|
159
171
|
let res = this._monomerLengthList[rowIdx];
|
|
160
|
-
if (res === null || res.length
|
|
172
|
+
if (res === null || res.length != visibleSeqEnd - visibleSeqStart) {
|
|
161
173
|
res = this._monomerLengthList[rowIdx] = new Array(seqSS.length);
|
|
162
174
|
let seqWidth = 0;
|
|
163
|
-
for (let seqMonI =
|
|
175
|
+
for (let seqMonI = visibleSeqStart; seqMonI < visibleSeqEnd; ++seqMonI) {
|
|
164
176
|
const seqMonLabel = seqSS.getOriginal(seqMonI);
|
|
165
177
|
const shortMon = this.props.monomerToShort(seqMonLabel, this.monomerLengthLimit);
|
|
166
178
|
const separatorWidth = sh.isSeparator() ? this.separatorWidth : this.props.separatorWidth;
|
|
167
179
|
const seqMonWidth = separatorWidth + shortMon.length * this.props.fontCharWidth;
|
|
168
|
-
res[seqMonI] = seqMonWidth;
|
|
180
|
+
res[seqMonI - visibleSeqStart] = seqMonWidth;
|
|
169
181
|
seqWidth += seqMonWidth;
|
|
170
182
|
if (seqWidth > this.colWidth)
|
|
171
183
|
break;
|
|
@@ -176,17 +188,18 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
176
188
|
getCellMonomerLengthsForSeqValue(value, width) {
|
|
177
189
|
const sh = this.seqHelper.getSeqHandler(this.tableCol);
|
|
178
190
|
const minMonWidth = this.props.separatorWidth + 1 * this.props.fontCharWidth;
|
|
179
|
-
const
|
|
191
|
+
const visibleSeqStart = this.positionShift;
|
|
192
|
+
const maxVisibleSeqLength = Math.ceil(width / minMonWidth) + visibleSeqStart;
|
|
180
193
|
const seqSS = sh.splitter(value);
|
|
181
|
-
const
|
|
182
|
-
const res = new Array(
|
|
194
|
+
const visibleSeqEnd = Math.min(maxVisibleSeqLength, seqSS.length);
|
|
195
|
+
const res = new Array(visibleSeqEnd - visibleSeqStart);
|
|
183
196
|
let seqWidth = 0;
|
|
184
|
-
for (let seqMonI =
|
|
197
|
+
for (let seqMonI = visibleSeqStart; seqMonI < visibleSeqEnd; ++seqMonI) {
|
|
185
198
|
const seqMonLabel = seqSS.getOriginal(seqMonI);
|
|
186
199
|
const shortMon = this.props.monomerToShort(seqMonLabel, this.monomerLengthLimit);
|
|
187
200
|
const separatorWidth = sh.isSeparator() ? this.separatorWidth : this.props.separatorWidth;
|
|
188
201
|
const seqMonWidth = separatorWidth + shortMon.length * this.props.fontCharWidth;
|
|
189
|
-
res[seqMonI] = seqMonWidth;
|
|
202
|
+
res[seqMonI - visibleSeqStart] = seqMonWidth;
|
|
190
203
|
seqWidth += seqMonWidth;
|
|
191
204
|
if (seqWidth > width)
|
|
192
205
|
break;
|
|
@@ -220,37 +233,39 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
220
233
|
}
|
|
221
234
|
})();
|
|
222
235
|
const minMonWidth = this.props.separatorWidth + 1 * this.props.fontCharWidth;
|
|
223
|
-
const
|
|
236
|
+
const visibleSequenceStart = this.positionShift;
|
|
237
|
+
const maxVisibleSeqLength = Math.ceil(this.colWidth / minMonWidth) + visibleSequenceStart;
|
|
224
238
|
for (let seqIdx = startIdx; seqIdx < endIdx; seqIdx++) {
|
|
225
239
|
if (this._processedRows.get(seqIdx) && maxVisibleSeqLength <= this._processedMaxVisibleSeqLength)
|
|
226
240
|
continue;
|
|
227
241
|
const sh = this.seqHelper.getSeqHandler(this.tableCol);
|
|
228
242
|
const seqSS = sh.getSplitted(seqIdx, maxVisibleSeqLength);
|
|
229
|
-
const
|
|
230
|
-
if (
|
|
231
|
-
res.push(...new Array(
|
|
243
|
+
const visibleSeqEnd = Math.min(maxVisibleSeqLength, seqSS.length);
|
|
244
|
+
if (visibleSeqEnd - visibleSequenceStart > res.length)
|
|
245
|
+
res.push(...new Array(visibleSeqEnd - visibleSequenceStart - res.length).fill(minMonWidth));
|
|
232
246
|
let seqWidth = 0;
|
|
233
|
-
for (let seqMonI =
|
|
247
|
+
for (let seqMonI = visibleSequenceStart; seqMonI < visibleSeqEnd; ++seqMonI) {
|
|
234
248
|
const seqMonLabel = seqSS.getOriginal(seqMonI);
|
|
235
249
|
const shortMon = this.props.monomerToShort(seqMonLabel, this.monomerLengthLimit);
|
|
236
250
|
const seqMonWidth = this.props.separatorWidth + shortMon.length * this.props.fontCharWidth;
|
|
237
|
-
res[seqMonI] = Math.max(res[seqMonI] ?? 0, seqMonWidth);
|
|
251
|
+
res[seqMonI - visibleSequenceStart] = Math.max(res[seqMonI - visibleSequenceStart] ?? 0, seqMonWidth);
|
|
238
252
|
seqWidth += seqMonWidth;
|
|
239
253
|
if (seqWidth >= this.colWidth)
|
|
240
254
|
break;
|
|
241
255
|
}
|
|
242
256
|
this._processedMaxVisibleSeqLength = Math.max(this._processedMaxVisibleSeqLength, maxVisibleSeqLength);
|
|
257
|
+
this._processedRows.set(seqIdx, true);
|
|
243
258
|
}
|
|
244
259
|
return res; // first (and single) row of data
|
|
245
260
|
}
|
|
246
261
|
/** Returns seq position for pointer x */
|
|
247
|
-
getPosition(rowIdx, x, width) {
|
|
262
|
+
getPosition(rowIdx, x, width, positionShiftPadding) {
|
|
248
263
|
const [_monomerMaxLengthList, monomerMaxLengthSumList] = this.getCellMonomerLengths(rowIdx, width);
|
|
249
264
|
const sh = this.seqHelper.getSeqHandler(this.tableCol);
|
|
250
265
|
const seqSS = sh.getSplitted(rowIdx);
|
|
251
266
|
if (seqSS.length === 0)
|
|
252
267
|
return null;
|
|
253
|
-
return hitBounds(monomerMaxLengthSumList, x);
|
|
268
|
+
return hitBounds(monomerMaxLengthSumList, x, positionShiftPadding);
|
|
254
269
|
}
|
|
255
270
|
setMonomerLengthLimit(value) {
|
|
256
271
|
if (this.monomerLengthLimit != value) {
|
|
@@ -264,6 +279,10 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
264
279
|
this.dirty = true;
|
|
265
280
|
}
|
|
266
281
|
}
|
|
282
|
+
get positionShift() {
|
|
283
|
+
const parsed = Number.parseInt(this.tableCol?.tags[bioTAGS.positionShift] ?? '0') ?? 0;
|
|
284
|
+
return isNaN(parsed) ? 0 : Math.max(parsed, 0);
|
|
285
|
+
}
|
|
267
286
|
render(g, x, y, w, h, gridCell, _cellStyle) {
|
|
268
287
|
// for cases when we render it on somewhere other than grid, gridRow might be null or incorrect (set to 0).
|
|
269
288
|
//for this case we can just recalculate split sequence without caching
|
|
@@ -273,6 +292,7 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
273
292
|
const gridCol = this.gridCol;
|
|
274
293
|
const tableCol = this.tableCol;
|
|
275
294
|
const dpr = window.devicePixelRatio;
|
|
295
|
+
const positionShift = this.positionShift;
|
|
276
296
|
const logPrefix = `${this.toLog()}.render()`;
|
|
277
297
|
this.logger.debug(`${logPrefix}, start`);
|
|
278
298
|
// Cell renderer settings
|
|
@@ -317,7 +337,7 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
317
337
|
const aligned = tableCol.getTag(bioTAGS.aligned);
|
|
318
338
|
const separator = tableCol.getTag(bioTAGS.separator) ?? '';
|
|
319
339
|
const minMonWidth = this.props.separatorWidth + 1 * this.props.fontCharWidth;
|
|
320
|
-
const splitLimit = Math.ceil(w / minMonWidth);
|
|
340
|
+
const splitLimit = Math.ceil(w / minMonWidth) + positionShift;
|
|
321
341
|
const tempReferenceSequence = tableCol.temp["reference-sequence" /* tempTAGS.referenceSequence */];
|
|
322
342
|
const tempCurrentWord = this.tableCol.temp["current-word" /* tempTAGS.currentWord */];
|
|
323
343
|
if (tempCurrentWord && tableCol?.dataFrame?.currentRowIdx === -1)
|
|
@@ -327,7 +347,7 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
327
347
|
const splitterFunc = sh.getSplitter(splitLimit);
|
|
328
348
|
const seqSS = splitterFunc(((tempReferenceSequence != null) && (tempReferenceSequence != '')) ?
|
|
329
349
|
tempReferenceSequence : tempCurrentWord ?? '');
|
|
330
|
-
return wu.count(0).take(seqSS.length).map((posIdx) => seqSS.getOriginal(posIdx)).toArray();
|
|
350
|
+
return wu.count(0).take(seqSS.length).slice(positionShift).map((posIdx) => seqSS.getOriginal(posIdx)).toArray();
|
|
331
351
|
})();
|
|
332
352
|
const subParts = isRenderedOnGrid ? sh.getSplitted(rowIdx) : sh.splitter(value);
|
|
333
353
|
if (!isRenderedOnGrid)
|
|
@@ -335,10 +355,12 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
335
355
|
let drawStyle = DrawStyle.classic;
|
|
336
356
|
if (aligned && aligned.includes('MSA') && units == NOTATION.SEPARATOR)
|
|
337
357
|
drawStyle = DrawStyle.MSA;
|
|
358
|
+
// if the sequence is rendered in shifted mode, we will also render three dots at start, indicating the shift
|
|
359
|
+
this._leftThreeDotsPadding = positionShift > 0 ? g.measureText(shiftedLeftPaddingText).width : 0;
|
|
338
360
|
const visibleSeqLength = Math.min(subParts.length, splitLimit);
|
|
339
|
-
for (let posIdx =
|
|
340
|
-
const om = subParts.getOriginal(posIdx);
|
|
341
|
-
const cm = subParts.getCanonical(posIdx);
|
|
361
|
+
for (let posIdx = positionShift; posIdx < visibleSeqLength; ++posIdx) {
|
|
362
|
+
const om = posIdx < subParts.length ? subParts.getOriginal(posIdx) : sh.defaultGapOriginal;
|
|
363
|
+
const cm = posIdx < subParts.length ? subParts.getCanonical(posIdx) : sh.defaultGapOriginal;
|
|
342
364
|
let color = undefinedColor;
|
|
343
365
|
const monomerLib = this.getMonomerLib();
|
|
344
366
|
if (monomerLib) {
|
|
@@ -351,14 +373,23 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
351
373
|
/*x1 = */
|
|
352
374
|
const opts = {
|
|
353
375
|
color: color, pivot: 0, left: true, transparencyRate: 1.0, separator: separator, last: last,
|
|
354
|
-
drawStyle: drawStyle, maxWord: maxLengthWordsSum, wordIdx: posIdx, gridCell: gridCell,
|
|
376
|
+
drawStyle: drawStyle, maxWord: maxLengthWordsSum, wordIdx: posIdx - positionShift, gridCell: gridCell,
|
|
355
377
|
referenceSequence: referenceSequence, maxLengthOfMonomer: maxLengthOfMonomer,
|
|
356
378
|
monomerTextSizeMap: this._monomerLengthMap, logger: this.logger
|
|
357
379
|
};
|
|
358
|
-
printLeftOrCentered(g, om, x + this.padding, y, w, h, opts);
|
|
380
|
+
printLeftOrCentered(g, om, x + this.padding + this._leftThreeDotsPadding, y, w, h, opts);
|
|
359
381
|
if (minDistanceRenderer > w)
|
|
360
382
|
break;
|
|
361
383
|
}
|
|
384
|
+
if (positionShift > 0) {
|
|
385
|
+
const opts = {
|
|
386
|
+
color: undefinedColor, pivot: 0, left: true, transparencyRate: 1.0, separator: separator, last: false,
|
|
387
|
+
drawStyle: drawStyle, maxWord: maxLengthWordsSum, wordIdx: 0, gridCell: gridCell,
|
|
388
|
+
maxLengthOfMonomer: maxLengthOfMonomer,
|
|
389
|
+
monomerTextSizeMap: this._monomerLengthMap, logger: this.logger
|
|
390
|
+
};
|
|
391
|
+
printLeftOrCentered(g, shiftedLeftPaddingText, x + this.padding, y, w, h, opts);
|
|
392
|
+
}
|
|
362
393
|
}
|
|
363
394
|
catch (err) {
|
|
364
395
|
const [errMsg, errStack] = errInfo(err);
|
|
@@ -376,6 +407,7 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
376
407
|
return;
|
|
377
408
|
// if (gridCell.cell.column.getTag(bioTAGS.aligned) !== ALIGNMENT.SEQ_MSA)
|
|
378
409
|
// return;
|
|
410
|
+
const positionShift = this.positionShift;
|
|
379
411
|
const gridCellBounds = gridCell.bounds;
|
|
380
412
|
// const value: any = gridCell.cell.value;
|
|
381
413
|
//
|
|
@@ -385,16 +417,17 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
385
417
|
// maxLengthWordsSum[posI] = maxLengthWordsSum[posI - 1] + maxLengthWords[posI];
|
|
386
418
|
// const maxIndex = maxLengthWords.length;
|
|
387
419
|
const argsX = e.offsetX - gridCell.gridColumn.left + (gridCell.gridColumn.left - gridCellBounds.x);
|
|
388
|
-
const
|
|
420
|
+
const leftPadding = positionShift > 0 && (this._leftThreeDotsPadding ?? 0) > 0 ? this._leftThreeDotsPadding : 0;
|
|
421
|
+
const left = this.getPosition(gridCell.tableRowIndex, argsX, gridCellBounds.width, leftPadding);
|
|
389
422
|
this.logger.debug(`${logPrefix}, start, argsX: ${argsX}, left: ${left}`);
|
|
390
423
|
const sh = this.seqHelper.getSeqHandler(this.tableCol);
|
|
391
424
|
const seqSS = sh.getSplitted(gridCell.tableRowIndex);
|
|
392
|
-
if (left !== null && left < seqSS.length) {
|
|
425
|
+
if (left !== null && left >= 0 && left + positionShift < seqSS.length) {
|
|
393
426
|
const alphabet = sh.alphabet ?? ALPHABET.UN;
|
|
394
427
|
const seqMonomer = {
|
|
395
428
|
position: left,
|
|
396
429
|
biotype: alphabet === ALPHABET.RNA || alphabet === ALPHABET.DNA ? HelmTypes.NUCLEOTIDE : HelmTypes.AA,
|
|
397
|
-
symbol: seqSS.getCanonical(left),
|
|
430
|
+
symbol: seqSS.getCanonical(left + positionShift),
|
|
398
431
|
};
|
|
399
432
|
const tooltipElements = [];
|
|
400
433
|
let monomerDiv = this._monomerStructureMap[seqMonomer.symbol];
|
|
@@ -410,8 +443,10 @@ export class MonomerPlacer extends CellRendererBackBase {
|
|
|
410
443
|
execMonomerHoverLinks(gridCell, seqMonomer);
|
|
411
444
|
}
|
|
412
445
|
else {
|
|
413
|
-
|
|
414
|
-
|
|
446
|
+
if (left === -1)
|
|
447
|
+
ui.tooltip.show(ui.divText(`${Math.min(positionShift, seqSS.length)} hidden monomers`), e.x + 16, e.y + 16);
|
|
448
|
+
else
|
|
449
|
+
ui.tooltip.hide();
|
|
415
450
|
execMonomerHoverLinks(gridCell, null);
|
|
416
451
|
}
|
|
417
452
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell-renderer-monomer-placer.js","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cell-renderer-monomer-placer.js","sourceRoot":"","sources":["cell-renderer-monomer-placer.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,8 @@ export declare enum TAGS {
|
|
|
26
26
|
isHelmCompatible = ".isHelmCompatible",
|
|
27
27
|
positionNames = ".positionNames",
|
|
28
28
|
positionLabels = ".positionLabels",
|
|
29
|
-
regions = ".regions"
|
|
29
|
+
regions = ".regions",
|
|
30
|
+
positionShift = ".positionShift"
|
|
30
31
|
}
|
|
31
32
|
export { TAGS as BioTags };
|
|
32
33
|
export declare const positionSeparator: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,0EAA0E;AAC1E,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,IAAI,SAAS;IACmB,MAAM,WAAW;CAClD;AAED,0BAAkB,SAAS;IACzB,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,cAAc;IACd,EAAE,OAAO;CACV;AAED,oBAAY,IAAI;IACd,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,YAAY,kBAAkB;IAC9B,mBAAmB,yBAAyB;IAC5C,SAAS,cAAc;IACvB,gBAAgB,sBAAsB;IACtC,aAAa,mBAAmB;IAChC,cAAc,oBAAoB;IAClC,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,0EAA0E;AAC1E,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,IAAI,SAAS;IACmB,MAAM,WAAW;CAClD;AAED,0BAAkB,SAAS;IACzB,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,cAAc;IACd,EAAE,OAAO;CACV;AAED,oBAAY,IAAI;IACd,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,YAAY,kBAAkB;IAC9B,mBAAmB,yBAAyB;IAC5C,SAAS,cAAc;IACvB,gBAAgB,sBAAsB;IACtC,aAAa,mBAAmB;IAChC,cAAc,oBAAoB;IAClC,OAAO,aAAa;IACpB,aAAa,mBAAmB;CACjC;AAED,OAAO,EAAC,IAAI,IAAI,OAAO,EAAC,CAAC;AAEzB,eAAO,MAAM,iBAAiB,EAAE,MAAa,CAAC;AAE9C,eAAO,MAAM,SAAS,EAAE,MAAqD,CAAC;AAE9E,eAAO,MAAM,MAAM,EAAE,MAA0C,CAAC;AAChE,eAAO,MAAM,SAAS,EAAE,MAAyB,CAAC;AAElD,eAAO,MAAM,SAAS;;;;;;CASnB,CAAC;AAEJ,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAI7C,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,UAAU,EAAE,MAAW,CAAC;AAErC,eAAO,MAAM,YAAY,EAAE;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAKxB,CAAC"}
|
|
@@ -26,6 +26,7 @@ export var TAGS;
|
|
|
26
26
|
TAGS["positionNames"] = ".positionNames";
|
|
27
27
|
TAGS["positionLabels"] = ".positionLabels";
|
|
28
28
|
TAGS["regions"] = ".regions";
|
|
29
|
+
TAGS["positionShift"] = ".positionShift";
|
|
29
30
|
})(TAGS || (TAGS = {}));
|
|
30
31
|
export { TAGS as BioTags };
|
|
31
32
|
export const positionSeparator = ', ';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,0EAA0E;AAC1E,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,mCAAuB,CAAA;IACvB,yBAAa,CAAA;IACb,+BAA+B,CAAC,6BAAiB,CAAA;AACnD,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAOD,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,qBAAS,CAAA;IACT,cAAc;IACd,qBAAS,CAAA;AACX,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,0EAA0E;AAC1E,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,mCAAuB,CAAA;IACvB,yBAAa,CAAA;IACb,+BAA+B,CAAC,6BAAiB,CAAA;AACnD,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAOD,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,qBAAS,CAAA;IACT,cAAc;IACd,qBAAS,CAAA;AACX,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,CAAN,IAAY,IAWX;AAXD,WAAY,IAAI;IACd,2BAAmB,CAAA;IACnB,6BAAqB,CAAA;IACrB,sCAA8B,CAAA;IAC9B,oDAA4C,CAAA;IAC5C,+BAAuB,CAAA;IACvB,8CAAsC,CAAA;IACtC,wCAAgC,CAAA;IAChC,0CAAkC,CAAA;IAClC,4BAAoB,CAAA;IACpB,wCAAgC,CAAA;AAClC,CAAC,EAXW,IAAI,KAAJ,IAAI,QAWf;AAED,OAAO,EAAC,IAAI,IAAI,OAAO,EAAC,CAAC;AAEzB,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAW,4CAA4C,CAAC;AAE9E,MAAM,CAAC,MAAM,MAAM,GAAW,iCAAiC,CAAC;AAChE,MAAM,CAAC,MAAM,SAAS,GAAW,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI;IAAA;QAC3B,UAAK,GAAG;YACN,OAAO,EAAE,IAAI,GAAG,CAAS;gBACvB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;gBAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;aACjD,CAAC;YACF,GAAG,EAAE,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,GAAG,EAAE,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SAC3C,CAAC;IACJ,CAAC;CAAA,EAAE,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAoB;IACjD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;IAC7D,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;IAC1D,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;CAC3D,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,UAAU,GAAW,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAErB;IACF,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG;IACrB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE;IACxB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG;CACrB,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MSAHeader.ts - Interactive MSA Header Component
|
|
3
|
+
* This module provides functionality for an interactive MSA (Multiple Sequence Alignment) header
|
|
4
|
+
* with position markers, slider navigation, and position selection.
|
|
5
|
+
*/
|
|
6
|
+
interface WindowRange {
|
|
7
|
+
start: number;
|
|
8
|
+
end: number;
|
|
9
|
+
}
|
|
10
|
+
interface MSAHeaderOptions {
|
|
11
|
+
canvas: HTMLCanvasElement;
|
|
12
|
+
totalPositions?: number;
|
|
13
|
+
positionWidth?: number;
|
|
14
|
+
headerHeight?: number;
|
|
15
|
+
sliderHeight?: number;
|
|
16
|
+
currentPosition?: number;
|
|
17
|
+
windowStartPosition?: number;
|
|
18
|
+
cellBackground?: boolean;
|
|
19
|
+
sliderColor?: string;
|
|
20
|
+
x?: number;
|
|
21
|
+
y?: number;
|
|
22
|
+
width?: number;
|
|
23
|
+
height?: number;
|
|
24
|
+
onPositionChange?: (position: number, range: WindowRange) => void;
|
|
25
|
+
}
|
|
26
|
+
export declare class MSAScrollingHeader {
|
|
27
|
+
private config;
|
|
28
|
+
private state;
|
|
29
|
+
private canvas;
|
|
30
|
+
private ctx;
|
|
31
|
+
/**
|
|
32
|
+
* Constructor for the MSA Header
|
|
33
|
+
* @param {MSAHeaderOptions} options - Configuration options
|
|
34
|
+
*/
|
|
35
|
+
constructor(options: MSAHeaderOptions);
|
|
36
|
+
/**
|
|
37
|
+
* Initialize the component
|
|
38
|
+
*/
|
|
39
|
+
private init;
|
|
40
|
+
draw(x: number, y: number, w: number, h: number, currentPos: number, scrollerStart: number): void;
|
|
41
|
+
getCoords(e: MouseEvent): {
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
};
|
|
45
|
+
isInHeaderArea(e: MouseEvent): boolean;
|
|
46
|
+
isInSliderArea(e: MouseEvent): boolean;
|
|
47
|
+
get sliderWidth(): number;
|
|
48
|
+
isInSliderDraggableArea(e: MouseEvent): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Handle mouse down (start dragging)
|
|
51
|
+
* @param {MouseEvent} e - Mouse event
|
|
52
|
+
*/
|
|
53
|
+
private handleMouseDown;
|
|
54
|
+
private handleMouseWheel;
|
|
55
|
+
/**
|
|
56
|
+
* Handle mouse move (dragging)
|
|
57
|
+
* @param {MouseEvent} e - Mouse event
|
|
58
|
+
*/
|
|
59
|
+
private handleMouseMove;
|
|
60
|
+
/**
|
|
61
|
+
* Handle mouse up (end dragging)
|
|
62
|
+
*/
|
|
63
|
+
private handleMouseUp;
|
|
64
|
+
/**
|
|
65
|
+
* Handle slider drag
|
|
66
|
+
* @param {number} x - X position of mouse
|
|
67
|
+
*/
|
|
68
|
+
private handleSliderDrag;
|
|
69
|
+
/**
|
|
70
|
+
* Handle click on positions
|
|
71
|
+
* @param {MouseEvent} e - Mouse event
|
|
72
|
+
*/
|
|
73
|
+
private handleClick;
|
|
74
|
+
/**
|
|
75
|
+
* Get the current window range
|
|
76
|
+
* @return {WindowRange} Object with start and end properties
|
|
77
|
+
*/
|
|
78
|
+
getWindowRange(): WindowRange;
|
|
79
|
+
/**
|
|
80
|
+
* Update configuration
|
|
81
|
+
* @param {MSAHeaderOptions} newConfig - New configuration options
|
|
82
|
+
*/
|
|
83
|
+
updateConfig(newConfig: Partial<MSAHeaderOptions>): void;
|
|
84
|
+
/**
|
|
85
|
+
* Get current position
|
|
86
|
+
* @return {number} Current position
|
|
87
|
+
*/
|
|
88
|
+
getCurrentPosition(): number;
|
|
89
|
+
/**
|
|
90
|
+
* Set current position
|
|
91
|
+
* @param {number} position - New position
|
|
92
|
+
*/
|
|
93
|
+
setCurrentPosition(position: number): void;
|
|
94
|
+
}
|
|
95
|
+
export {};
|
|
96
|
+
//# sourceMappingURL=sequence-position-scroller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequence-position-scroller.d.ts","sourceRoot":"","sources":["sequence-position-scroller.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAGH,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAGD,UAAU,gBAAgB;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACnE;AAQD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,GAAG,CAAyC;IAEpD;;;OAGG;gBACS,OAAO,EAAE,gBAAgB;IA4BrC;;OAEG;IACH,OAAO,CAAC,IAAI;IAuBL,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAgGxG,SAAS,CAAC,CAAC,EAAE,UAAU;;;;IAOvB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAKtC,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAMtC,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED,uBAAuB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAU/C;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,gBAAgB;IAexB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAkCnB;;;OAGG;IACI,cAAc,IAAI,WAAW;IAOpC;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAY/D;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;OAGG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAQlD"}
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/* eslint-disable max-len */
|
|
2
|
+
/**
|
|
3
|
+
* MSAHeader.ts - Interactive MSA Header Component
|
|
4
|
+
* This module provides functionality for an interactive MSA (Multiple Sequence Alignment) header
|
|
5
|
+
* with position markers, slider navigation, and position selection.
|
|
6
|
+
*/
|
|
7
|
+
export class MSAScrollingHeader {
|
|
8
|
+
/**
|
|
9
|
+
* Constructor for the MSA Header
|
|
10
|
+
* @param {MSAHeaderOptions} options - Configuration options
|
|
11
|
+
*/
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.canvas = null;
|
|
14
|
+
this.ctx = null;
|
|
15
|
+
// Default configuration with required fields
|
|
16
|
+
this.config = {
|
|
17
|
+
x: options.x || 0,
|
|
18
|
+
y: options.y || 0,
|
|
19
|
+
width: options.width || 400,
|
|
20
|
+
height: options.height || 60,
|
|
21
|
+
windowStartPosition: options.windowStartPosition || 1,
|
|
22
|
+
positionWidth: options.positionWidth || 15,
|
|
23
|
+
totalPositions: options.totalPositions || 5000,
|
|
24
|
+
headerHeight: options.headerHeight || 50,
|
|
25
|
+
sliderHeight: options.sliderHeight || 8,
|
|
26
|
+
currentPosition: options.currentPosition || 1,
|
|
27
|
+
cellBackground: options.cellBackground !== undefined ? options.cellBackground : true,
|
|
28
|
+
sliderColor: options.sliderColor || 'rgba(220, 220, 220, 0.4)',
|
|
29
|
+
onPositionChange: options.onPositionChange || ((_, __) => { }),
|
|
30
|
+
...options // Override defaults with any provided options
|
|
31
|
+
};
|
|
32
|
+
// Internal state
|
|
33
|
+
this.state = {
|
|
34
|
+
isDragging: false,
|
|
35
|
+
dragStartX: 0
|
|
36
|
+
};
|
|
37
|
+
this.init();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Initialize the component
|
|
41
|
+
*/
|
|
42
|
+
init() {
|
|
43
|
+
// Get canvas and context
|
|
44
|
+
this.canvas = this.config.canvas;
|
|
45
|
+
if (!this.canvas) {
|
|
46
|
+
console.error(`canvas not found.`);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const context = this.canvas.getContext('2d');
|
|
50
|
+
if (!context) {
|
|
51
|
+
console.error('Failed to get 2D context from canvas');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.ctx = context;
|
|
55
|
+
// Add event listeners
|
|
56
|
+
this.canvas.addEventListener('mousedown', this.handleMouseDown.bind(this));
|
|
57
|
+
this.canvas.addEventListener('mousemove', this.handleMouseMove.bind(this));
|
|
58
|
+
this.canvas.addEventListener('mouseup', this.handleMouseUp.bind(this));
|
|
59
|
+
this.canvas.addEventListener('mouseleave', this.handleMouseUp.bind(this));
|
|
60
|
+
this.canvas.addEventListener('click', this.handleClick.bind(this));
|
|
61
|
+
}
|
|
62
|
+
draw(x, y, w, h, currentPos, scrollerStart) {
|
|
63
|
+
if (!this.ctx || !this.canvas)
|
|
64
|
+
return;
|
|
65
|
+
if (this.config.currentPosition != currentPos || this.config.windowStartPosition != scrollerStart || this.config.x != x || this.config.y != y || this.config.width != w || this.config.height != h) {
|
|
66
|
+
this.updateConfig({ x, y, width: w, height: h, currentPosition: currentPos, windowStartPosition: scrollerStart });
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
this.ctx.save();
|
|
70
|
+
// Clear canvas
|
|
71
|
+
this.ctx.clearRect(x, y, w, h);
|
|
72
|
+
this.ctx.translate(x, y);
|
|
73
|
+
this.ctx.rect(0, 0, w, h);
|
|
74
|
+
this.ctx.clip();
|
|
75
|
+
// Calculate dimensions
|
|
76
|
+
const canvasWidth = w;
|
|
77
|
+
const canvasHeight = h;
|
|
78
|
+
const topPadding = 5;
|
|
79
|
+
const posIndexTop = topPadding;
|
|
80
|
+
const sliderTop = this.config.headerHeight - this.config.sliderHeight;
|
|
81
|
+
// Draw the full sequence slider bar (very subtle gray bar)
|
|
82
|
+
this.ctx.fillStyle = this.config.sliderColor;
|
|
83
|
+
this.ctx.fillRect(0, sliderTop, canvasWidth, this.config.sliderHeight);
|
|
84
|
+
const visiblePositionsN = Math.floor(this.config.width / this.config.positionWidth);
|
|
85
|
+
const windowStart = Math.max(1, this.config.windowStartPosition);
|
|
86
|
+
// Calculate slider position on the bar
|
|
87
|
+
const totalSliderRange = this.config.totalPositions - visiblePositionsN;
|
|
88
|
+
const sliderStartPX = totalSliderRange <= 0 ? 0 :
|
|
89
|
+
windowStart / (this.config.totalPositions) * canvasWidth;
|
|
90
|
+
const sliderLengthPX = totalSliderRange <= 0 ? canvasWidth :
|
|
91
|
+
this.sliderWidth;
|
|
92
|
+
// Draw slider window (darker rectangle)
|
|
93
|
+
this.ctx.fillStyle = 'rgba(150, 150, 150, 0.5)';
|
|
94
|
+
this.ctx.fillRect(sliderStartPX, sliderTop, sliderLengthPX, this.config.sliderHeight);
|
|
95
|
+
// Draw position marks and indices
|
|
96
|
+
for (let i = 0; i < visiblePositionsN; i++) {
|
|
97
|
+
const position = windowStart + i;
|
|
98
|
+
if (position > this.config.totalPositions)
|
|
99
|
+
break;
|
|
100
|
+
const x = i * this.config.positionWidth;
|
|
101
|
+
const cellWidth = this.config.positionWidth;
|
|
102
|
+
const cellCenterX = x + cellWidth / 2;
|
|
103
|
+
// Draw cell background for monospace appearance
|
|
104
|
+
if (this.config.cellBackground) {
|
|
105
|
+
// Very light alternating cell background
|
|
106
|
+
this.ctx.fillStyle = i % 2 === 0 ? 'rgba(248, 248, 248, 0.3)' : 'rgba(242, 242, 242, 0.2)';
|
|
107
|
+
this.ctx.fillRect(x, posIndexTop, cellWidth, Math.min(this.config.headerHeight - topPadding, canvasHeight - posIndexTop) - this.config.sliderHeight);
|
|
108
|
+
// Cell borders - very light vertical lines
|
|
109
|
+
this.ctx.strokeStyle = 'rgba(220, 220, 220, 0.7)';
|
|
110
|
+
this.ctx.beginPath();
|
|
111
|
+
this.ctx.moveTo(x, posIndexTop);
|
|
112
|
+
this.ctx.lineTo(x, Math.min(this.config.headerHeight, canvasHeight) - this.config.sliderHeight);
|
|
113
|
+
this.ctx.stroke();
|
|
114
|
+
}
|
|
115
|
+
// Draw position dot for every position - centered in cell
|
|
116
|
+
this.ctx.fillStyle = '#999999';
|
|
117
|
+
this.ctx.beginPath();
|
|
118
|
+
this.ctx.arc(cellCenterX, posIndexTop * 2, 1, 0, Math.PI * 2);
|
|
119
|
+
this.ctx.fill();
|
|
120
|
+
// Draw position number for every 10th position
|
|
121
|
+
if (position % 10 === 0) {
|
|
122
|
+
this.ctx.fillStyle = '#333333';
|
|
123
|
+
this.ctx.font = '10px monospace';
|
|
124
|
+
this.ctx.textAlign = 'center';
|
|
125
|
+
this.ctx.textBaseline = 'middle';
|
|
126
|
+
this.ctx.fillText(position.toString(), cellCenterX, posIndexTop * 4);
|
|
127
|
+
}
|
|
128
|
+
// Highlight current selected position with square marker
|
|
129
|
+
// if current is outside the range, draw it at the end
|
|
130
|
+
if (position === this.config.currentPosition) {
|
|
131
|
+
// Draw square indicator
|
|
132
|
+
this.ctx.fillStyle = '#50A9C5';
|
|
133
|
+
this.ctx.fillRect(x, 0, cellWidth, sliderTop);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
this.ctx.restore();
|
|
137
|
+
}
|
|
138
|
+
getCoords(e) {
|
|
139
|
+
const rect = this.canvas.getBoundingClientRect();
|
|
140
|
+
const x = e.clientX - rect.left - this.config.x;
|
|
141
|
+
const y = e.clientY - rect.top - this.config.y;
|
|
142
|
+
return { x, y };
|
|
143
|
+
}
|
|
144
|
+
isInHeaderArea(e) {
|
|
145
|
+
const { x, y } = this.getCoords(e);
|
|
146
|
+
return x >= 0 && x <= this.config.width && y >= 0 && y <= this.config.headerHeight;
|
|
147
|
+
}
|
|
148
|
+
isInSliderArea(e) {
|
|
149
|
+
const { x, y } = this.getCoords(e);
|
|
150
|
+
const sliderTop = this.config.headerHeight - this.config.sliderHeight;
|
|
151
|
+
return y > sliderTop && y < sliderTop + this.config.sliderHeight;
|
|
152
|
+
}
|
|
153
|
+
get sliderWidth() {
|
|
154
|
+
const pseudoPositionWidth = this.config.width / this.config.totalPositions;
|
|
155
|
+
const w = pseudoPositionWidth * (this.config.width / this.config.positionWidth);
|
|
156
|
+
return Math.max(w, 15);
|
|
157
|
+
}
|
|
158
|
+
isInSliderDraggableArea(e) {
|
|
159
|
+
const { x, y } = this.getCoords(e);
|
|
160
|
+
const sliderTop = this.config.headerHeight - this.config.sliderHeight;
|
|
161
|
+
const startSeqX = this.config.windowStartPosition;
|
|
162
|
+
const pseudoPositionWidth = this.config.width / this.config.totalPositions;
|
|
163
|
+
const startSliderXPX = (startSeqX - 1) * pseudoPositionWidth;
|
|
164
|
+
const endSliderXPX = startSliderXPX + this.sliderWidth;
|
|
165
|
+
return y > sliderTop && y < sliderTop + this.config.sliderHeight && x >= startSliderXPX && x < endSliderXPX;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Handle mouse down (start dragging)
|
|
169
|
+
* @param {MouseEvent} e - Mouse event
|
|
170
|
+
*/
|
|
171
|
+
handleMouseDown(e) {
|
|
172
|
+
if (!this.canvas)
|
|
173
|
+
return;
|
|
174
|
+
const { x } = this.getCoords(e);
|
|
175
|
+
if (this.isInSliderDraggableArea(e)) {
|
|
176
|
+
this.state.isDragging = true;
|
|
177
|
+
this.state.dragStartX = x;
|
|
178
|
+
this.handleSliderDrag(x);
|
|
179
|
+
e.preventDefault();
|
|
180
|
+
e.stopPropagation();
|
|
181
|
+
e.stopImmediatePropagation();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
handleMouseWheel(e) {
|
|
185
|
+
if (!this.canvas)
|
|
186
|
+
return;
|
|
187
|
+
if (this.isInHeaderArea(e)) {
|
|
188
|
+
e.preventDefault();
|
|
189
|
+
e.stopPropagation();
|
|
190
|
+
e.stopImmediatePropagation();
|
|
191
|
+
const delta = Math.sign(e.deltaY);
|
|
192
|
+
const newStartPosition = this.config.windowStartPosition + delta;
|
|
193
|
+
this.config.windowStartPosition = Math.max(1, Math.min(this.config.totalPositions - Math.floor(this.config.width / this.config.positionWidth), newStartPosition));
|
|
194
|
+
// Call callback if defined
|
|
195
|
+
if (typeof this.config.onPositionChange === 'function')
|
|
196
|
+
this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Handle mouse move (dragging)
|
|
201
|
+
* @param {MouseEvent} e - Mouse event
|
|
202
|
+
*/
|
|
203
|
+
handleMouseMove(e) {
|
|
204
|
+
if (!this.state.isDragging || !this.canvas)
|
|
205
|
+
return;
|
|
206
|
+
const rect = this.canvas.getBoundingClientRect();
|
|
207
|
+
const x = e.clientX - rect.left - this.config.x;
|
|
208
|
+
this.handleSliderDrag(x);
|
|
209
|
+
e.preventDefault();
|
|
210
|
+
e.stopPropagation();
|
|
211
|
+
e.stopImmediatePropagation();
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Handle mouse up (end dragging)
|
|
215
|
+
*/
|
|
216
|
+
handleMouseUp() {
|
|
217
|
+
this.state.isDragging = false;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Handle slider drag
|
|
221
|
+
* @param {number} x - X position of mouse
|
|
222
|
+
*/
|
|
223
|
+
handleSliderDrag(x) {
|
|
224
|
+
if (!this.canvas)
|
|
225
|
+
return;
|
|
226
|
+
// Calculate the position based on the drag position
|
|
227
|
+
const canvasWidth = this.config.width;
|
|
228
|
+
const dragAmmount = x - this.state.dragStartX;
|
|
229
|
+
const pseudoPositionToPixelRatio = canvasWidth / this.config.totalPositions;
|
|
230
|
+
const fittedPositions = Math.ceil(canvasWidth / this.config.positionWidth);
|
|
231
|
+
const newStartPosition = Math.round(this.config.windowStartPosition + dragAmmount / pseudoPositionToPixelRatio);
|
|
232
|
+
this.config.windowStartPosition = Math.max(1, Math.min(this.config.totalPositions - fittedPositions, newStartPosition));
|
|
233
|
+
// Call callback if defined
|
|
234
|
+
if (typeof this.config.onPositionChange === 'function')
|
|
235
|
+
this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
|
|
236
|
+
this.state.dragStartX = x;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Handle click on positions
|
|
240
|
+
* @param {MouseEvent} e - Mouse event
|
|
241
|
+
*/
|
|
242
|
+
handleClick(_e) {
|
|
243
|
+
// if (!this.canvas) return;
|
|
244
|
+
// const rect = this.canvas.getBoundingClientRect();
|
|
245
|
+
// const x = e.clientX - rect.left;
|
|
246
|
+
// const y = e.clientY - rect.top;
|
|
247
|
+
// const sliderTop = 10;
|
|
248
|
+
// const posIndexTop = sliderTop + this.config.sliderHeight + 5;
|
|
249
|
+
// // Process clicks in position indicator area (not in slider area)
|
|
250
|
+
// if (y > posIndexTop) {
|
|
251
|
+
// // Calculate column clicked
|
|
252
|
+
// const columnIndex = Math.floor(x / this.config.columnWidth);
|
|
253
|
+
// // Calculate the actual position in the sequence
|
|
254
|
+
// const halfVisible = Math.floor(this.config.visibleWidth / 2);
|
|
255
|
+
// const windowStart = Math.max(1, this.config.currentPosition - halfVisible);
|
|
256
|
+
// const windowEnd = Math.min(this.config.totalPositions, windowStart + this.config.visibleWidth - 1);
|
|
257
|
+
// const adjustedWindowStart = Math.max(1, windowEnd - this.config.visibleWidth + 1);
|
|
258
|
+
// const clickedPosition = adjustedWindowStart + columnIndex;
|
|
259
|
+
// // Update current position if valid
|
|
260
|
+
// if (clickedPosition >= 1 && clickedPosition <= this.config.totalPositions) {
|
|
261
|
+
// this.config.currentPosition = clickedPosition;
|
|
262
|
+
// // Call callback if defined
|
|
263
|
+
// if (typeof this.config.onPositionChange === 'function')
|
|
264
|
+
// this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
|
|
265
|
+
// }
|
|
266
|
+
// }
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Get the current window range
|
|
270
|
+
* @return {WindowRange} Object with start and end properties
|
|
271
|
+
*/
|
|
272
|
+
getWindowRange() {
|
|
273
|
+
return {
|
|
274
|
+
start: this.config.windowStartPosition,
|
|
275
|
+
end: Math.min(this.config.totalPositions, this.config.windowStartPosition + Math.floor(this.config.width / this.config.positionWidth))
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Update configuration
|
|
280
|
+
* @param {MSAHeaderOptions} newConfig - New configuration options
|
|
281
|
+
*/
|
|
282
|
+
updateConfig(newConfig) {
|
|
283
|
+
// Update config with new values
|
|
284
|
+
Object.assign(this.config, newConfig);
|
|
285
|
+
// Ensure current position is still valid
|
|
286
|
+
this.config.currentPosition = Math.min(this.config.currentPosition, this.config.totalPositions);
|
|
287
|
+
// Call callback if defined
|
|
288
|
+
if (typeof this.config.onPositionChange === 'function')
|
|
289
|
+
this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get current position
|
|
293
|
+
* @return {number} Current position
|
|
294
|
+
*/
|
|
295
|
+
getCurrentPosition() {
|
|
296
|
+
return this.config.currentPosition;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Set current position
|
|
300
|
+
* @param {number} position - New position
|
|
301
|
+
*/
|
|
302
|
+
setCurrentPosition(position) {
|
|
303
|
+
// Clamp to valid range
|
|
304
|
+
this.config.currentPosition = Math.max(1, Math.min(this.config.totalPositions, position));
|
|
305
|
+
// Call callback if defined
|
|
306
|
+
if (typeof this.config.onPositionChange === 'function')
|
|
307
|
+
this.config.onPositionChange(this.config.currentPosition, this.getWindowRange());
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=sequence-position-scroller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequence-position-scroller.js","sourceRoot":"","sources":["sequence-position-scroller.ts"],"names":[],"mappings":"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"}
|