Skip to content
Snippets Groups Projects
Commit d66ccdb2 authored by David Sehnal's avatar David Sehnal
Browse files

mol-plugin: sequence view tweaks

parent 8d13c514
No related branches found
No related tags found
No related merge requests found
...@@ -122,6 +122,10 @@ export class Sequence<P extends SequenceProps> extends PluginUIComponent<P> { ...@@ -122,6 +122,10 @@ export class Sequence<P extends SequenceProps> extends PluginUIComponent<P> {
} }
private location = StructureElement.Location.create(); private location = StructureElement.Location.create();
private padSeqNum(n: string) {
if (n.length < MaxSequenceNumberSize) return n + new Array(MaxSequenceNumberSize - n.length + 1).join('\u00A0');
return n;
}
private getSequenceNumber(seqIdx: number, label: string) { private getSequenceNumber(seqIdx: number, label: string) {
let sequenceNumber = '' let sequenceNumber = ''
const loci = this.props.sequenceWrapper.getLoci(seqIdx) const loci = this.props.sequenceWrapper.getLoci(seqIdx)
...@@ -131,17 +135,18 @@ export class Sequence<P extends SequenceProps> extends PluginUIComponent<P> { ...@@ -131,17 +135,18 @@ export class Sequence<P extends SequenceProps> extends PluginUIComponent<P> {
const insCode = StructureProperties.residue.pdbx_PDB_ins_code(l) const insCode = StructureProperties.residue.pdbx_PDB_ins_code(l)
sequenceNumber = `${seqId}${insCode ? insCode : ''}` sequenceNumber = `${seqId}${insCode ? insCode : ''}`
} }
return <span key={`marker-${seqIdx}`} className={this.getSequenceNumberClass(seqIdx, label)}>{sequenceNumber.padEnd(MaxSequenceNumberSize, '\u00A0')}</span> return <span key={`marker-${seqIdx}`} className={this.getSequenceNumberClass(seqIdx, label)}>{this.padSeqNum(sequenceNumber)}</span>
} }
private updateMarker() { private updateMarker() {
if (!this.parentDiv.current) return; if (!this.parentDiv.current) return;
const xs = this.parentDiv.current.children; const xs = this.parentDiv.current.children;
const { markerArray } = this.props.sequenceWrapper; const { markerArray } = this.props.sequenceWrapper;
const hasNumbers = !this.props.hideSequenceNumbers, period = this.sequenceNumberPeriod;
let o = 0; let o = 0;
for (let i = 0, _i = markerArray.length; i < _i; i++) { for (let i = 0, il = markerArray.length; i < il; i++) {
if (this.hasSeqenceNumber(i)) o++; if (hasNumbers && i % period === 0 && i < il) o++;
const span = xs[o] as HTMLSpanElement; const span = xs[o] as HTMLSpanElement;
if (!span) return; if (!span) return;
o++; o++;
...@@ -151,12 +156,6 @@ export class Sequence<P extends SequenceProps> extends PluginUIComponent<P> { ...@@ -151,12 +156,6 @@ export class Sequence<P extends SequenceProps> extends PluginUIComponent<P> {
} }
} }
private hasSeqenceNumber(seqIdx: number) {
return !this.props.hideSequenceNumbers &&
seqIdx % this.sequenceNumberPeriod === 0 &&
seqIdx < this.props.sequenceWrapper.length
}
mouseMove = (e: React.MouseEvent) => { mouseMove = (e: React.MouseEvent) => {
e.stopPropagation(); e.stopPropagation();
...@@ -194,10 +193,11 @@ export class Sequence<P extends SequenceProps> extends PluginUIComponent<P> { ...@@ -194,10 +193,11 @@ export class Sequence<P extends SequenceProps> extends PluginUIComponent<P> {
const elems: JSX.Element[] = []; const elems: JSX.Element[] = [];
const hasNumbers = !this.props.hideSequenceNumbers, period = this.sequenceNumberPeriod;
for (let i = 0, il = sw.length; i < il; ++i) { for (let i = 0, il = sw.length; i < il; ++i) {
const label = sw.residueLabel(i) const label = sw.residueLabel(i)
// add sequence number before name so the html element do not get separated by a line-break // add sequence number before name so the html element do not get separated by a line-break
if (this.hasSeqenceNumber(i)) { if (hasNumbers && i % period === 0 && i < il) {
elems[elems.length] = this.getSequenceNumber(i, label) elems[elems.length] = this.getSequenceNumber(i, label)
} }
elems[elems.length] = this.residue(i, label, sw.markerArray[i], sw.residueColor(i)); elems[elems.length] = this.residue(i, label, sw.markerArray[i], sw.residueColor(i));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment