icn3d 3.24.6 → 3.25.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/icn3d.js +140 -51
- package/icn3d.min.js +3 -3
- package/icn3d.module.js +140 -51
- package/package.json +1 -1
package/icn3d.js
CHANGED
|
@@ -2302,7 +2302,7 @@ THREE.TrackballControls = function ( object, domElement, icn3d ) {
|
|
|
2302
2302
|
this.screen.width = window.innerWidth;
|
|
2303
2303
|
this.screen.height = window.innerHeight;
|
|
2304
2304
|
|
|
2305
|
-
} else {
|
|
2305
|
+
} else if(this.domElement) {
|
|
2306
2306
|
|
|
2307
2307
|
var box = this.domElement.getBoundingClientRect();
|
|
2308
2308
|
// adjustments come from similar code in the jquery offset() function
|
|
@@ -2872,7 +2872,7 @@ THREE.TrackballControls = function ( object, domElement, icn3d ) {
|
|
|
2872
2872
|
|
|
2873
2873
|
}
|
|
2874
2874
|
|
|
2875
|
-
if(Object.keys(window).length >= 2) {
|
|
2875
|
+
if(Object.keys(window).length >= 2 && this.domElement) {
|
|
2876
2876
|
this.domElement.addEventListener( 'contextmn', function ( event ) {
|
|
2877
2877
|
//event.preventDefault();
|
|
2878
2878
|
}, false );
|
|
@@ -2998,7 +2998,7 @@ THREE.OrthographicTrackballControls = function ( object, domElement, icn3d ) { v
|
|
|
2998
2998
|
this.screen.width = window.innerWidth;
|
|
2999
2999
|
this.screen.height = window.innerHeight;
|
|
3000
3000
|
|
|
3001
|
-
} else {
|
|
3001
|
+
} else if(this.domElement) {
|
|
3002
3002
|
|
|
3003
3003
|
var box = this.domElement.getBoundingClientRect();
|
|
3004
3004
|
// adjustments come from similar code in the jquery offset() function
|
|
@@ -3548,7 +3548,7 @@ THREE.OrthographicTrackballControls = function ( object, domElement, icn3d ) { v
|
|
|
3548
3548
|
|
|
3549
3549
|
}
|
|
3550
3550
|
|
|
3551
|
-
if(Object.keys(window).length >= 2) {
|
|
3551
|
+
if(Object.keys(window).length >= 2 && this.domElement) {
|
|
3552
3552
|
this.domElement.addEventListener( 'contextmn', function ( event ) {
|
|
3553
3553
|
//event.preventDefault();
|
|
3554
3554
|
}, false );
|
|
@@ -9396,8 +9396,8 @@ class SetMenu {
|
|
|
9396
9396
|
//}
|
|
9397
9397
|
|
|
9398
9398
|
//!!!
|
|
9399
|
-
//html += this.getRadio('mn4_clr', 'mn4_clrIgstrand', 'Ig Strand', undefined, undefined, 2);
|
|
9400
|
-
//html += this.getRadio('mn4_clr', 'mn4_clrIgproto', 'Ig Protodomain', undefined, undefined, 2);
|
|
9399
|
+
// html += this.getRadio('mn4_clr', 'mn4_clrIgstrand', 'Ig Strand', undefined, undefined, 2);
|
|
9400
|
+
// html += this.getRadio('mn4_clr', 'mn4_clrIgproto', 'Ig Protodomain', undefined, undefined, 2);
|
|
9401
9401
|
}
|
|
9402
9402
|
else {
|
|
9403
9403
|
//if(!me.cfg.hidelicense) html += this.getRadio('mn4_clr', 'mn1_delphi2', 'DelPhi<br><span style="padding-left:1.5em;">Potential ' + me.htmlCls.licenseStr + '</span>');
|
|
@@ -38547,7 +38547,7 @@ class Domain3d {
|
|
|
38547
38547
|
|
|
38548
38548
|
//substruct: array of secondary structures, each of which has the keys: From (1-based), To (1-based), Sheet (0 or 1), also add these paras: x1, y1, z1, x2, y2, z2
|
|
38549
38549
|
let substruct = [];
|
|
38550
|
-
// determine residue ranges for each subdomain
|
|
38550
|
+
// determine residue position ranges for each subdomain
|
|
38551
38551
|
let subdomains = [];
|
|
38552
38552
|
|
|
38553
38553
|
// sheets: array of sheets, each of which has the key: sheet_num (beta sandwich has two sheets, e.g., 0 and 1), adj_strand1 (not used), adj_strand2
|
|
@@ -50156,10 +50156,15 @@ class RealignParser {
|
|
|
50156
50156
|
//let chainTo = chainidArray[0];
|
|
50157
50157
|
//let chainFrom = chainidArray[index + 1];
|
|
50158
50158
|
|
|
50159
|
-
let bChainAlign = true;
|
|
50159
|
+
let bChainAlign = true, result;
|
|
50160
50160
|
|
|
50161
|
-
|
|
50162
|
-
|
|
50161
|
+
if(ic.bAfMem) { // align to the query (membrane)
|
|
50162
|
+
result = ic.ParserUtilsCls.alignCoords(coordsFrom, coordsTo, toStruct, undefined, chainTo, chainFrom, index + 1, bChainAlign);
|
|
50163
|
+
}
|
|
50164
|
+
else {
|
|
50165
|
+
result = ic.ParserUtilsCls.alignCoords(coordsFrom, coordsTo, fromStruct, undefined, chainTo, chainFrom, index + 1, bChainAlign);
|
|
50166
|
+
}
|
|
50167
|
+
|
|
50163
50168
|
hAtoms = me.hashUtilsCls.unionHash(hAtoms, result.hAtoms);
|
|
50164
50169
|
|
|
50165
50170
|
// ic.opts['color'] = 'identity';
|
|
@@ -50247,13 +50252,13 @@ class RealignParser {
|
|
|
50247
50252
|
}
|
|
50248
50253
|
|
|
50249
50254
|
// use the model from Membranome as template
|
|
50250
|
-
if(ic.bAfMem && chainidArray.length == 2) {
|
|
50251
|
-
|
|
50252
|
-
|
|
50253
|
-
|
|
50254
|
-
|
|
50255
|
-
|
|
50256
|
-
}
|
|
50255
|
+
// if(ic.bAfMem && chainidArray.length == 2) {
|
|
50256
|
+
// if(chainidArray[1].split('_')[0] == pdbidTemplate) {
|
|
50257
|
+
// let tmp = chainidArray[0];
|
|
50258
|
+
// chainidArray[0] = chainidArray[1];
|
|
50259
|
+
// chainidArray[1] = tmp;
|
|
50260
|
+
// }
|
|
50261
|
+
// }
|
|
50257
50262
|
|
|
50258
50263
|
let bRealign = true;
|
|
50259
50264
|
ic.qt_start_end = []; // reset the alignment
|
|
@@ -51732,7 +51737,12 @@ class ParserUtils {
|
|
|
51732
51737
|
|
|
51733
51738
|
if(n < 4) var aaa = 1; //alert("Please select at least four residues in each structure...");
|
|
51734
51739
|
if(n >= 4) {
|
|
51735
|
-
ic.
|
|
51740
|
+
if(ic.bAfMem) { // align to the query (membrane)
|
|
51741
|
+
ic.rmsd_suprTmp = me.rmsdSuprCls.getRmsdSuprCls(coordsTo, coordsFrom, n);
|
|
51742
|
+
}
|
|
51743
|
+
else {
|
|
51744
|
+
ic.rmsd_suprTmp = me.rmsdSuprCls.getRmsdSuprCls(coordsFrom, coordsTo, n);
|
|
51745
|
+
}
|
|
51736
51746
|
|
|
51737
51747
|
// apply matrix for each atom
|
|
51738
51748
|
if(ic.rmsd_suprTmp.rot !== undefined) {
|
|
@@ -52371,7 +52381,7 @@ class ParserUtils {
|
|
|
52371
52381
|
await ic.showAnnoCls.showAnnotations();
|
|
52372
52382
|
}
|
|
52373
52383
|
|
|
52374
|
-
if(me.cfg.closepopup) {
|
|
52384
|
+
if(me.cfg.closepopup || me.cfg.imageonly) {
|
|
52375
52385
|
ic.resizeCanvasCls.closeDialogs();
|
|
52376
52386
|
}
|
|
52377
52387
|
}
|
|
@@ -52380,6 +52390,8 @@ class ParserUtils {
|
|
|
52380
52390
|
}
|
|
52381
52391
|
if($("#" + ic.pre + "atomsCustom").length > 0) $("#" + ic.pre + "atomsCustom")[0].blur();
|
|
52382
52392
|
ic.bInitial = false;
|
|
52393
|
+
|
|
52394
|
+
if(me.cfg.imageonly) ic.saveFileCls.saveFile(undefined, 'png', undefined, true);
|
|
52383
52395
|
}, 0);
|
|
52384
52396
|
}
|
|
52385
52397
|
|
|
@@ -59109,9 +59121,10 @@ class LoadScript {
|
|
|
59109
59121
|
|
|
59110
59122
|
// load pdb, mmcif, mmdb, cid
|
|
59111
59123
|
let id = loadStr.substr(loadStr.lastIndexOf(' ') + 1);
|
|
59124
|
+
if(id.length == 4) id = id.toUpperCase();
|
|
59112
59125
|
|
|
59113
59126
|
// skip loading the structure if it was loaded before
|
|
59114
|
-
if(ic.structures.hasOwnProperty(id)) return;
|
|
59127
|
+
if(ic.structures && ic.structures.hasOwnProperty(id)) return;
|
|
59115
59128
|
|
|
59116
59129
|
ic.inputid = id;
|
|
59117
59130
|
if(command.indexOf('load mmtf') !== -1) {
|
|
@@ -59462,7 +59475,7 @@ class LoadScript {
|
|
|
59462
59475
|
ic.drawCls.draw();
|
|
59463
59476
|
}
|
|
59464
59477
|
|
|
59465
|
-
if(me.cfg.closepopup) {
|
|
59478
|
+
if(me.cfg.closepopup || me.cfg.imageonly) {
|
|
59466
59479
|
setTimeout(function(){
|
|
59467
59480
|
ic.resizeCanvasCls.closeDialogs();
|
|
59468
59481
|
}, 100);
|
|
@@ -59473,6 +59486,8 @@ class LoadScript {
|
|
|
59473
59486
|
// an extra render to remove artifacts in transparent surface
|
|
59474
59487
|
if(ic.bTransparentSurface && ic.bRender) ic.drawCls.render();
|
|
59475
59488
|
|
|
59489
|
+
if(me.cfg.imageonly) ic.saveFileCls.saveFile(undefined, 'png', undefined, true);
|
|
59490
|
+
|
|
59476
59491
|
/// if(ic.deferred !== undefined) ic.deferred.resolve(); /// if(ic.deferred2 !== undefined) ic.deferred2.resolve();
|
|
59477
59492
|
/// if(ic.deferredMmdbaf !== undefined) ic.deferredMmdbaf.resolve();
|
|
59478
59493
|
}
|
|
@@ -60367,7 +60382,7 @@ class Selection {
|
|
|
60367
60382
|
|
|
60368
60383
|
ic.reinitAfterLoad();
|
|
60369
60384
|
|
|
60370
|
-
ic.loadScriptCls.renderFinalStep(1);
|
|
60385
|
+
//ic.loadScriptCls.renderFinalStep(1);
|
|
60371
60386
|
ic.definedSetsCls.setMode('all');
|
|
60372
60387
|
|
|
60373
60388
|
ic.selectionCls.selectAll();
|
|
@@ -60378,6 +60393,8 @@ class Selection {
|
|
|
60378
60393
|
ic.hlUpdateCls.removeSeqResidueBkgd();
|
|
60379
60394
|
ic.hlUpdateCls.removeHl2D();
|
|
60380
60395
|
ic.hlUpdateCls.removeHlMenus();
|
|
60396
|
+
|
|
60397
|
+
ic.loadScriptCls.renderFinalStep(1);
|
|
60381
60398
|
}
|
|
60382
60399
|
|
|
60383
60400
|
async loadSelection(dataStr) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -61942,14 +61959,17 @@ class Dssp {
|
|
|
61942
61959
|
async showIgRefNum() { let ic = this.icn3d, me = ic.icn3dui;
|
|
61943
61960
|
let thisClass = this;
|
|
61944
61961
|
|
|
61945
|
-
if(ic.resid2refnum && Object.keys(ic.resid2refnum).length > 0) {
|
|
61946
|
-
|
|
61962
|
+
// if(ic.resid2refnum && Object.keys(ic.resid2refnum).length > 0) {
|
|
61963
|
+
// ic.bShowRefnum = true;
|
|
61947
61964
|
|
|
61948
|
-
|
|
61949
|
-
|
|
61950
|
-
|
|
61951
|
-
|
|
61952
|
-
|
|
61965
|
+
// // open sequence view
|
|
61966
|
+
// ic.hAtomsRefnum = {};
|
|
61967
|
+
// ic.bResetAnno = true;
|
|
61968
|
+
// await ic.showAnnoCls.showAnnotations();
|
|
61969
|
+
// ic.annotationCls.setAnnoViewAndDisplay('detailed view');
|
|
61970
|
+
// }
|
|
61971
|
+
if(ic.pdbDataArray) {
|
|
61972
|
+
await thisClass.parseRefPdbData(ic.pdbDataArray);
|
|
61953
61973
|
}
|
|
61954
61974
|
else {
|
|
61955
61975
|
//ic.refpdbArray = ['1bqu_fn3', '1cd8_igv', '1t6v_vnar', '1wio_c2', '1wio_igv', '2atp_a', '2atp_b', '2dm3_iset', '5esv_vh', '5esv_vl', '6al5_cd19', '7bz5_cl1', '7bz5_vh', '7bz5_vl'];
|
|
@@ -62012,6 +62032,7 @@ class Dssp {
|
|
|
62012
62032
|
|
|
62013
62033
|
let urltmalign = me.htmlCls.baseUrl + "tmalign/tmalign.cgi";
|
|
62014
62034
|
|
|
62035
|
+
// if(!ic.resid2domainid) ic.resid2domainid = {};
|
|
62015
62036
|
ic.resid2domainid = {};
|
|
62016
62037
|
|
|
62017
62038
|
for(let i = 0, il = struArray.length; i < il; ++i) {
|
|
@@ -62025,20 +62046,33 @@ class Dssp {
|
|
|
62025
62046
|
&& !ic.proteins.hasOwnProperty(ic.firstAtomObjCls.getMiddleAtomObj(ic.chains[chainid]).serial)) continue;
|
|
62026
62047
|
if(ic.chainsSeq[chainid].length < 50) continue; // peptide
|
|
62027
62048
|
|
|
62049
|
+
let currAtoms = me.hashUtilsCls.intHash(ic.chains[chainid], ic.hAtoms);
|
|
62050
|
+
if(Object.keys(currAtoms).length == 0) continue;
|
|
62051
|
+
|
|
62028
62052
|
// align each 3D domain with reference structure
|
|
62029
|
-
let result = ic.domain3dCls.c2b_NewSplitChain(ic.chains[chainid]);
|
|
62053
|
+
//let result = ic.domain3dCls.c2b_NewSplitChain(ic.chains[chainid]);
|
|
62054
|
+
// assign ref numbers to selected residues
|
|
62055
|
+
let result = ic.domain3dCls.c2b_NewSplitChain(currAtoms);
|
|
62030
62056
|
let subdomains = result.subdomains;
|
|
62057
|
+
let pos2resi = result.pos2resi;
|
|
62031
62058
|
|
|
62032
62059
|
let domainAtomsArray = [];
|
|
62033
62060
|
if(subdomains.length <= 1) {
|
|
62034
|
-
domainAtomsArray.push(ic.chains[chainid]);
|
|
62061
|
+
//domainAtomsArray.push(ic.chains[chainid]);
|
|
62062
|
+
domainAtomsArray.push(currAtoms);
|
|
62035
62063
|
|
|
62036
|
-
for(let n = 0, nl = ic.chainsSeq[chainid].length; n < nl; ++n) {
|
|
62037
|
-
|
|
62064
|
+
// for(let n = 0, nl = ic.chainsSeq[chainid].length; n < nl; ++n) {
|
|
62065
|
+
// let resid = chainid + '_' + ic.chainsSeq[chainid][n].resi;
|
|
62066
|
+
// ic.resid2domainid[resid] = chainid + '-0';
|
|
62067
|
+
// }
|
|
62068
|
+
|
|
62069
|
+
let residueArray = ic.resid2specCls.atoms2residues(Object.keys(currAtoms));
|
|
62070
|
+
for(let n = 0, nl = residueArray.length; n < nl; ++n) {
|
|
62071
|
+
let resid = residueArray[n];
|
|
62038
62072
|
ic.resid2domainid[resid] = chainid + '-0';
|
|
62039
|
-
}
|
|
62073
|
+
}
|
|
62040
62074
|
}
|
|
62041
|
-
else {
|
|
62075
|
+
else {
|
|
62042
62076
|
for(let k = 0, kl = subdomains.length; k < kl; ++k) {
|
|
62043
62077
|
let domainAtoms = {};
|
|
62044
62078
|
let segArray = subdomains[k];
|
|
@@ -62047,8 +62081,9 @@ class Dssp {
|
|
|
62047
62081
|
let startResi = segArray[m];
|
|
62048
62082
|
let endResi = segArray[m+1];
|
|
62049
62083
|
for(let n = parseInt(startResi); n <= parseInt(endResi); ++n) {
|
|
62050
|
-
let residNCBI = chainid + '_' + n;
|
|
62051
|
-
let resid = ic.ncbi2resid[residNCBI];
|
|
62084
|
+
//let residNCBI = chainid + '_' + n;
|
|
62085
|
+
//let resid = ic.ncbi2resid[residNCBI];
|
|
62086
|
+
let resid = chainid + '_' + pos2resi[n];
|
|
62052
62087
|
domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
62053
62088
|
ic.resid2domainid[resid] = chainid + '-' + k;
|
|
62054
62089
|
}
|
|
@@ -62114,6 +62149,12 @@ class Dssp {
|
|
|
62114
62149
|
|
|
62115
62150
|
// find the best alignment for each chain
|
|
62116
62151
|
let domainid2score = {}, domainid2segs = {}, chainid2segs = {};
|
|
62152
|
+
|
|
62153
|
+
// if(!ic.chainid2index) ic.chainid2index = {};
|
|
62154
|
+
// if(!ic.domainid2index) ic.domainid2index = {};
|
|
62155
|
+
// if(!ic.domainid2ig2kabat) ic.domainid2ig2kabat = {};
|
|
62156
|
+
// if(!ic.domainid2ig2imgt) ic.domainid2ig2imgt = {};
|
|
62157
|
+
|
|
62117
62158
|
ic.chainid2index = {};
|
|
62118
62159
|
ic.domainid2index = {};
|
|
62119
62160
|
ic.domainid2ig2kabat = {};
|
|
@@ -66223,7 +66264,9 @@ class SaveFile {
|
|
|
66223
66264
|
//The type "png" is used to save the current canvas image. The type "html" is used to save html file with the
|
|
66224
66265
|
//"data". This can be used to save any text. The type "text" is used to save an array of text, where "data" is
|
|
66225
66266
|
//actually an array. The type "binary" is used to save an array of binary, where "data" is actually an array.
|
|
66226
|
-
saveFile(filename, type, text) { let ic = this.icn3d, me = ic.icn3dui;
|
|
66267
|
+
saveFile(filename, type, text, bBlob) { let ic = this.icn3d, me = ic.icn3dui;
|
|
66268
|
+
let thisClass = this;
|
|
66269
|
+
|
|
66227
66270
|
//Save file
|
|
66228
66271
|
let blob;
|
|
66229
66272
|
|
|
@@ -66264,7 +66307,7 @@ class SaveFile {
|
|
|
66264
66307
|
if(me.utilsCls.isIE()) {
|
|
66265
66308
|
blob = ic.renderer.domElement.msToBlob();
|
|
66266
66309
|
|
|
66267
|
-
if(bAddURL) {
|
|
66310
|
+
if(bAddURL && typeof(blob) == 'Blob') {
|
|
66268
66311
|
let reader = new FileReader();
|
|
66269
66312
|
reader.onload = function(e) {
|
|
66270
66313
|
let arrayBuffer = e.target.result; // or = reader.result;
|
|
@@ -66274,23 +66317,23 @@ class SaveFile {
|
|
|
66274
66317
|
blob = me.convertTypeCls.getBlobFromBufferAndText(arrayBuffer, text);
|
|
66275
66318
|
|
|
66276
66319
|
//if(window.navigator.msSaveBlob) navigator.msSaveBlob(blob, filename);
|
|
66277
|
-
|
|
66320
|
+
thisClass.saveBlob(blob, filename, bBlob, width, height);
|
|
66278
66321
|
|
|
66279
|
-
return;
|
|
66322
|
+
return blob;
|
|
66280
66323
|
};
|
|
66281
66324
|
|
|
66282
66325
|
reader.readAsArrayBuffer(blob);
|
|
66283
66326
|
}
|
|
66284
66327
|
else {
|
|
66285
66328
|
//ic.createLinkForBlob(blob, filename);
|
|
66286
|
-
|
|
66329
|
+
thisClass.saveBlob(blob, filename, bBlob, width, height);
|
|
66287
66330
|
|
|
66288
|
-
return;
|
|
66331
|
+
return blob;
|
|
66289
66332
|
}
|
|
66290
66333
|
}
|
|
66291
66334
|
else {
|
|
66292
66335
|
ic.renderer.domElement.toBlob(function(data) {
|
|
66293
|
-
if(bAddURL) {
|
|
66336
|
+
if(bAddURL && typeof(blob) == 'data') {
|
|
66294
66337
|
let reader = new FileReader();
|
|
66295
66338
|
reader.onload = function(e) {
|
|
66296
66339
|
let arrayBuffer = e.target.result; // or = reader.result;
|
|
@@ -66300,9 +66343,9 @@ class SaveFile {
|
|
|
66300
66343
|
blob = me.convertTypeCls.getBlobFromBufferAndText(arrayBuffer, text);
|
|
66301
66344
|
|
|
66302
66345
|
//ic.createLinkForBlob(blob, filename);
|
|
66303
|
-
|
|
66346
|
+
thisClass.saveBlob(blob, filename, bBlob, width, height);
|
|
66304
66347
|
|
|
66305
|
-
return;
|
|
66348
|
+
return blob;
|
|
66306
66349
|
};
|
|
66307
66350
|
|
|
66308
66351
|
reader.readAsArrayBuffer(data);
|
|
@@ -66311,9 +66354,9 @@ class SaveFile {
|
|
|
66311
66354
|
blob = data;
|
|
66312
66355
|
|
|
66313
66356
|
//ic.createLinkForBlob(blob, filename);
|
|
66314
|
-
|
|
66357
|
+
thisClass.saveBlob(blob, filename, bBlob, width, height);
|
|
66315
66358
|
|
|
66316
|
-
return;
|
|
66359
|
+
return blob;
|
|
66317
66360
|
}
|
|
66318
66361
|
});
|
|
66319
66362
|
}
|
|
@@ -66351,6 +66394,44 @@ class SaveFile {
|
|
|
66351
66394
|
//https://github.com/eligrey/FileSaver.js/
|
|
66352
66395
|
saveAs(blob, filename);
|
|
66353
66396
|
}
|
|
66397
|
+
|
|
66398
|
+
return blob;
|
|
66399
|
+
}
|
|
66400
|
+
|
|
66401
|
+
saveBlob(blob, filename, bBlob, width, height) { let ic = this.icn3d; ic.icn3dui;
|
|
66402
|
+
if(bBlob) {
|
|
66403
|
+
let urlCreator = window.URL || window.webkitURL;
|
|
66404
|
+
let imageUrl = urlCreator.createObjectURL(blob);
|
|
66405
|
+
|
|
66406
|
+
let url = ic.shareLinkCls.shareLinkUrl();
|
|
66407
|
+
|
|
66408
|
+
url = url.replace(/imageonly=1/g, '');
|
|
66409
|
+
|
|
66410
|
+
let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false;
|
|
66411
|
+
|
|
66412
|
+
if(bTooLong || (ic.bInputfile && !ic.bInputUrlfile)) {
|
|
66413
|
+
// $("#" + ic.pre + "viewer").html("<img src='" + imageUrl + "'/>");
|
|
66414
|
+
$("#" + ic.pre + "mnlist").html("<img src='" + imageUrl + "'/>");
|
|
66415
|
+
}
|
|
66416
|
+
else {
|
|
66417
|
+
// $("#" + ic.pre + "viewer").html("<a href='" + url + "' target='_blank'><img src='" + imageUrl + "'/></a>");
|
|
66418
|
+
$("#" + ic.pre + "mnlist").html("<a href='" + url + "' target='_blank'><img src='" + imageUrl + "'/></a>");
|
|
66419
|
+
}
|
|
66420
|
+
|
|
66421
|
+
$("#" + ic.pre + "viewer").height(height);
|
|
66422
|
+
$("#" + ic.pre + "cmdlog").hide();
|
|
66423
|
+
$("#" + ic.pre + "title").hide();
|
|
66424
|
+
//$("#" + ic.pre + "mnlist").hide();
|
|
66425
|
+
$("#" + ic.pre + "canvas").hide(); // "load mmdbid ..." may cause problems if canvas was removed
|
|
66426
|
+
|
|
66427
|
+
if($("#" + ic.pre + "fullscreen").length > 0) $("#" + ic.pre + "fullscreen").hide();
|
|
66428
|
+
|
|
66429
|
+
// clear memory
|
|
66430
|
+
ic = {};
|
|
66431
|
+
}
|
|
66432
|
+
else {
|
|
66433
|
+
saveAs(blob, filename);
|
|
66434
|
+
}
|
|
66354
66435
|
}
|
|
66355
66436
|
|
|
66356
66437
|
saveSvg(id, filename, bContactmap) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -66975,7 +67056,9 @@ class SaveFile {
|
|
|
66975
67056
|
$("#" + ic.pre + "title").html(title);
|
|
66976
67057
|
}
|
|
66977
67058
|
else if(structureArray.length == 1) {
|
|
66978
|
-
let url = this.getLinkToStructureSummary();
|
|
67059
|
+
//let url = this.getLinkToStructureSummary();
|
|
67060
|
+
let url = (isNaN(ic.inputid) && ic.inputid.length > 5) ? 'https://alphafold.ebi.ac.uk/entry/' + ic.inputid : 'https://www.ncbi.nlm.nih.gov/structure/?term=' + ic.inputid;
|
|
67061
|
+
|
|
66979
67062
|
this.setStructureTitle(url, title, titlelinkColor);
|
|
66980
67063
|
}
|
|
66981
67064
|
}
|
|
@@ -67290,6 +67373,10 @@ class ShareLink {
|
|
|
67290
67373
|
if(key_value.length == 2) paraHash[key_value[0]] = key_value[1];
|
|
67291
67374
|
}
|
|
67292
67375
|
|
|
67376
|
+
if(me.cfg.notebook && me.cfg.idname && !paraHash[me.cfg.idname]) { // somehow it is not included
|
|
67377
|
+
url += me.cfg.idname + '=' + me.cfg.idvalue + '&';
|
|
67378
|
+
}
|
|
67379
|
+
|
|
67293
67380
|
for(let key in paraHash) {
|
|
67294
67381
|
if(key === 'v') continue;
|
|
67295
67382
|
|
|
@@ -67329,7 +67416,7 @@ class ShareLink {
|
|
|
67329
67416
|
transformation.quaternion = ic.quaternion;
|
|
67330
67417
|
|
|
67331
67418
|
let statefile = "";
|
|
67332
|
-
let prevCommandStr =
|
|
67419
|
+
let prevCommandStr = "";
|
|
67333
67420
|
|
|
67334
67421
|
let toggleStr = 'toggle highlight';
|
|
67335
67422
|
let cntToggle = 0;
|
|
@@ -67403,6 +67490,7 @@ class ShareLink {
|
|
|
67403
67490
|
if(ic.structures !== undefined && Object.keys(ic.structures).length == 1 && ic.inputid !== undefined) {
|
|
67404
67491
|
id = Object.keys(ic.structures)[0];
|
|
67405
67492
|
url = url.replace(new RegExp(id + '_','g'), '!');
|
|
67493
|
+
outputCmd = outputCmd.replace(new RegExp(id + '_','g'), '!');
|
|
67406
67494
|
}
|
|
67407
67495
|
|
|
67408
67496
|
if(me.cfg.blast_rep_id !== undefined) {
|
|
@@ -70268,7 +70356,7 @@ class iCn3DUI {
|
|
|
70268
70356
|
//even when multiple iCn3D viewers are shown together.
|
|
70269
70357
|
this.pre = this.cfg.divid + "_";
|
|
70270
70358
|
|
|
70271
|
-
this.REVISION = '3.
|
|
70359
|
+
this.REVISION = '3.25.0';
|
|
70272
70360
|
|
|
70273
70361
|
// In nodejs, iCn3D defines "window = {navigator: {}}"
|
|
70274
70362
|
this.bNode = (Object.keys(window).length < 2) ? true : false;
|
|
@@ -70282,6 +70370,7 @@ class iCn3DUI {
|
|
|
70282
70370
|
if(this.cfg.showcommand === undefined) this.cfg.showcommand = true;
|
|
70283
70371
|
//if(this.cfg.simplemenu === undefined) this.cfg.simplemenu = false;
|
|
70284
70372
|
if(this.cfg.mobilemenu === undefined) this.cfg.mobilemenu = false;
|
|
70373
|
+
if(this.cfg.imageonly === undefined) this.cfg.imageonly = false;
|
|
70285
70374
|
if(this.cfg.closepopup === undefined) this.cfg.closepopup = false;
|
|
70286
70375
|
if(this.cfg.showanno === undefined) this.cfg.showanno = false;
|
|
70287
70376
|
if(this.cfg.showseq === undefined) this.cfg.showseq = false;
|