icn3d 3.44.0 → 3.44.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/README.md +4 -4
- package/css/lib/fonts/la-brands-400.eot +0 -0
- package/css/lib/fonts/la-brands-400.svg +0 -0
- package/css/lib/fonts/la-brands-400.ttf +0 -0
- package/css/lib/fonts/la-brands-400.woff +0 -0
- package/css/lib/fonts/la-brands-400.woff2 +0 -0
- package/css/lib/fonts/la-regular-400.eot +0 -0
- package/css/lib/fonts/la-regular-400.svg +0 -0
- package/css/lib/fonts/la-regular-400.ttf +0 -0
- package/css/lib/fonts/la-regular-400.woff +0 -0
- package/css/lib/fonts/la-regular-400.woff2 +0 -0
- package/css/lib/fonts/la-solid-900.eot +0 -0
- package/css/lib/fonts/la-solid-900.svg +0 -0
- package/css/lib/fonts/la-solid-900.ttf +0 -0
- package/css/lib/fonts/la-solid-900.woff +0 -0
- package/css/lib/fonts/la-solid-900.woff2 +0 -0
- package/css/lib/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- package/css/lib/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- package/css/lib/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- package/css/lib/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- package/css/lib/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- package/css/lib/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- package/css/lib/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- package/css/lib/images/ui-icons_222222_256x240.png +0 -0
- package/css/lib/images/ui-icons_228ef1_256x240.png +0 -0
- package/css/lib/images/ui-icons_ef8c08_256x240.png +0 -0
- package/css/lib/images/ui-icons_ffd27a_256x240.png +0 -0
- package/css/lib/images/ui-icons_ffffff_256x240.png +0 -0
- package/icn3d.js +194 -45
- package/icn3d.min.js +4 -4
- package/icn3d.module.js +194 -45
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -102,11 +102,11 @@ Usage
|
|
|
102
102
|
If your typescript compiler complains about missing type definition files, create a file named icn3d.d.ts in your project's root directory and fill it with the following:
|
|
103
103
|
|
|
104
104
|
declare module 'icn3d/module' {
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
export class iCn3DUI {
|
|
106
|
+
constructor(cfg: object);
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
show3DStructure(): Promise<void>;
|
|
109
|
+
}
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
declare module 'icn3d/three' {}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/icn3d.js
CHANGED
|
@@ -56237,6 +56237,13 @@ class ClickMenu {
|
|
|
56237
56237
|
}
|
|
56238
56238
|
}
|
|
56239
56239
|
}
|
|
56240
|
+
|
|
56241
|
+
//https://stackoverflow.com/questions/105034/how-do-i-create-a-guid-uuid
|
|
56242
|
+
uuidv4() {
|
|
56243
|
+
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, c =>
|
|
56244
|
+
(+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16)
|
|
56245
|
+
);
|
|
56246
|
+
}
|
|
56240
56247
|
|
|
56241
56248
|
displayShownMenus() { let me = this.icn3dui; me.icn3d;
|
|
56242
56249
|
let html = "<form name='" + me.pre + "selmenu'>";
|
|
@@ -56525,6 +56532,132 @@ class ClickMenu {
|
|
|
56525
56532
|
ic.saveFileCls.saveFile(file_pref + '_statefile.txt', 'command');
|
|
56526
56533
|
});
|
|
56527
56534
|
|
|
56535
|
+
me.myEventCls.onIds("#" + me.pre + "mn1_exportCamera", "click", async function(e) { let ic = me.icn3d; //e.preventDefault();
|
|
56536
|
+
thisClass.setLogCmd("export bcf viewpoint", false);
|
|
56537
|
+
let file_pref = Object.keys(ic.structures).join(',');
|
|
56538
|
+
//ic.saveFileCls.saveFile(file_pref + '_camera.bcf', 'bcf');
|
|
56539
|
+
|
|
56540
|
+
let url = './script/jszip.min.js';
|
|
56541
|
+
await me.getAjaxPromise(url, 'script');
|
|
56542
|
+
|
|
56543
|
+
let data, jszip = new JSZip();
|
|
56544
|
+
|
|
56545
|
+
let uuid1 = thisClass.uuidv4();
|
|
56546
|
+
let uuid2 = thisClass.uuidv4();
|
|
56547
|
+
|
|
56548
|
+
data = '';
|
|
56549
|
+
data += '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n';
|
|
56550
|
+
data += ' <Version VersionId="3.0"/>\n';
|
|
56551
|
+
|
|
56552
|
+
jszip.file("bcf.version", data);
|
|
56553
|
+
|
|
56554
|
+
data = '';
|
|
56555
|
+
data += '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n';
|
|
56556
|
+
data += ' <Extensions>\n';
|
|
56557
|
+
data += ' <TopicTypes>\n';
|
|
56558
|
+
data += ' <TopicType>ERROR</TopicType>\n';
|
|
56559
|
+
data += ' <TopicType>WARNING</TopicType>\n';
|
|
56560
|
+
data += ' <TopicType>INFORMATION</TopicType>\n';
|
|
56561
|
+
data += ' <TopicType>CLASH</TopicType>\n';
|
|
56562
|
+
data += ' <TopicType>OTHER</TopicType>\n';
|
|
56563
|
+
data += ' </TopicTypes>\n';
|
|
56564
|
+
data += ' <TopicStatuses>\n';
|
|
56565
|
+
data += ' <TopicStatus>OPEN</TopicStatus>\n';
|
|
56566
|
+
data += ' <TopicStatus>IN_PROGRESS</TopicStatus>\n';
|
|
56567
|
+
data += ' <TopicStatus>SOLVED</TopicStatus>\n';
|
|
56568
|
+
data += ' <TopicStatus>CLOSED</TopicStatus>\n';
|
|
56569
|
+
data += ' </TopicStatuses>\n';
|
|
56570
|
+
data += ' <Priorities>\n';
|
|
56571
|
+
data += ' <Priority>LOW</Priority>\n';
|
|
56572
|
+
data += ' <Priority>MEDIUM</Priority>\n';
|
|
56573
|
+
data += ' <Priority>HIGH</Priority>\n';
|
|
56574
|
+
data += ' <Priority>CRITICAL</Priority>\n';
|
|
56575
|
+
data += ' </Priorities>\n';
|
|
56576
|
+
data += ' <TopicLabels/>\n';
|
|
56577
|
+
data += ' <Users/>\n';
|
|
56578
|
+
data += ' <SnippetTypes/>\n';
|
|
56579
|
+
data += ' <Stages/>\n';
|
|
56580
|
+
data += ' </Extensions>\n';
|
|
56581
|
+
|
|
56582
|
+
jszip.file("extensions.xml", data);
|
|
56583
|
+
|
|
56584
|
+
let folder = jszip.folder(uuid1);
|
|
56585
|
+
|
|
56586
|
+
data = '';
|
|
56587
|
+
data += '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n';
|
|
56588
|
+
data += ' <Markup>\n';
|
|
56589
|
+
data += ' <Header>\n';
|
|
56590
|
+
data += ' <Files/>\n';
|
|
56591
|
+
data += ' </Header> \n';
|
|
56592
|
+
data += ' <Topic Guid="' + uuid1 + '">\n';
|
|
56593
|
+
data += ' <Title>Perspective camera</Title>\n';
|
|
56594
|
+
|
|
56595
|
+
let now = new Date();
|
|
56596
|
+
const isoString = now.toISOString();
|
|
56597
|
+
|
|
56598
|
+
data += ' <CreationDate>' + isoString + '</CreationDate>\n';
|
|
56599
|
+
data += ' <CreationAuthor>https://www.ncbi.nlm.nih.gov/Structure/icn3d</CreationAuthor>\n';
|
|
56600
|
+
data += ' <DocumentReferences/>\n';
|
|
56601
|
+
data += ' <RelatedTopics/>\n';
|
|
56602
|
+
data += ' <Comments/>\n';
|
|
56603
|
+
data += ' <Viewpoints>\n';
|
|
56604
|
+
data += ' <ViewPoint Guid="' + uuid2 + '">\n';
|
|
56605
|
+
data += ' <Viewpoint>viewpoint-' + uuid2 + '.bcfv</Viewpoint>\n';
|
|
56606
|
+
data += ' <Snapshot>snapshot-' + uuid2 + '.png</Snapshot>\n';
|
|
56607
|
+
data += ' </ViewPoint>\n';
|
|
56608
|
+
data += ' </Viewpoints>\n';
|
|
56609
|
+
data += ' </Topic>\n';
|
|
56610
|
+
data += ' </Markup>\n';
|
|
56611
|
+
|
|
56612
|
+
folder.file("markup.bcf", data);
|
|
56613
|
+
let blob = await ic.saveFileCls.saveFile('any', 'png', undefined, undefined, true);
|
|
56614
|
+
|
|
56615
|
+
folder.file("snapshot-" + uuid2 + ".png", blob);
|
|
56616
|
+
|
|
56617
|
+
data = '';
|
|
56618
|
+
|
|
56619
|
+
data += '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n';
|
|
56620
|
+
data += ' <VisualizationInfo Guid="' + uuid2 + '">\n';
|
|
56621
|
+
data += ' <Components>\n';
|
|
56622
|
+
data += ' <Selection/>\n';
|
|
56623
|
+
data += ' <Visibility DefaultVisibility="true" />\n';
|
|
56624
|
+
data += ' <Coloring/>\n';
|
|
56625
|
+
data += ' </Components>\n';
|
|
56626
|
+
data += ' <PerspectiveCamera>\n';
|
|
56627
|
+
data += ' <CameraViewPoint>\n';
|
|
56628
|
+
data += ' <X>' + ic.cam.position.x + '</X>\n';
|
|
56629
|
+
data += ' <Y>' + ic.cam.position.y + '</Y>\n';
|
|
56630
|
+
data += ' <Z>' + ic.cam.position.z + '</Z>\n';
|
|
56631
|
+
data += ' </CameraViewPoint>\n';
|
|
56632
|
+
|
|
56633
|
+
let direction = (new Vector3$1(0, 0, -1)).applyQuaternion(ic.cam.quaternion);
|
|
56634
|
+
|
|
56635
|
+
data += ' <CameraDirection>\n';
|
|
56636
|
+
data += ' <X>' + direction.x + '</X>\n';
|
|
56637
|
+
data += ' <Y>' + direction.y + '</Y>\n';
|
|
56638
|
+
data += ' <Z>' + direction.z + '</Z>\n';
|
|
56639
|
+
data += ' </CameraDirection>\n';
|
|
56640
|
+
data += ' <CameraUpVector>\n';
|
|
56641
|
+
data += ' <X>' + ic.cam.up.x + '</X>\n';
|
|
56642
|
+
data += ' <Y>' + ic.cam.up.y + '</Y>\n';
|
|
56643
|
+
data += ' <Z>' + ic.cam.up.z + '</Z>\n';
|
|
56644
|
+
data += ' </CameraUpVector>\n';
|
|
56645
|
+
data += ' <FieldOfView>' + ic.cam.fov + '</FieldOfView>\n'; // 20
|
|
56646
|
+
data += ' <AspectRatio>' + ic.container.whratio + '</AspectRatio>\n';
|
|
56647
|
+
data += ' </PerspectiveCamera>\n';
|
|
56648
|
+
data += ' <Lines/>\n';
|
|
56649
|
+
data += ' <ClippingPlanes/>\n';
|
|
56650
|
+
data += ' <Bitmaps/> \n';
|
|
56651
|
+
data += ' </VisualizationInfo>\n';
|
|
56652
|
+
|
|
56653
|
+
folder.file("viewpoint-" + uuid2 + ".bcfv", data);
|
|
56654
|
+
|
|
56655
|
+
jszip.generateAsync({type:"blob"})
|
|
56656
|
+
.then(function(content) {
|
|
56657
|
+
saveAs(content, file_pref + "_viewpoint.bcf");
|
|
56658
|
+
});
|
|
56659
|
+
});
|
|
56660
|
+
|
|
56528
56661
|
me.myEventCls.onIds("#" + me.pre + "mn1_exportVideo", "click", function(e) { me.icn3d; //e.preventDefault();
|
|
56529
56662
|
thisClass.setLogCmd("export video", false);
|
|
56530
56663
|
me.htmlCls.dialogCls.openDlg('dl_video', 'Save canvas changes in a video');
|
|
@@ -58265,13 +58398,13 @@ class ClickMenu {
|
|
|
58265
58398
|
thisClass.setLogCmd(value, true);
|
|
58266
58399
|
let axis;
|
|
58267
58400
|
if(direction == 'x') {
|
|
58268
|
-
axis = new
|
|
58401
|
+
axis = new Vector3$1(1,0,0);
|
|
58269
58402
|
}
|
|
58270
58403
|
else if(direction == 'y') {
|
|
58271
|
-
axis = new
|
|
58404
|
+
axis = new Vector3$1(0,1,0);
|
|
58272
58405
|
}
|
|
58273
58406
|
else if(direction == 'z') {
|
|
58274
|
-
axis = new
|
|
58407
|
+
axis = new Vector3$1(0,0,1);
|
|
58275
58408
|
}
|
|
58276
58409
|
let angle = 0.5 * Math.PI;
|
|
58277
58410
|
ic.transformCls.setRotation(axis, angle);
|
|
@@ -58582,8 +58715,8 @@ class ClickMenu {
|
|
|
58582
58715
|
if(!ic.quaternion) {
|
|
58583
58716
|
// reset parameters
|
|
58584
58717
|
ic._zoomFactor = 1.0;
|
|
58585
|
-
ic.mouseChange = new
|
|
58586
|
-
ic.quaternion = new
|
|
58718
|
+
ic.mouseChange = new Vector2$1(0,0);
|
|
58719
|
+
ic.quaternion = new Quaternion(0,0,0,1);
|
|
58587
58720
|
}
|
|
58588
58721
|
|
|
58589
58722
|
transformation.factor = ic._zoomFactor;
|
|
@@ -59388,6 +59521,7 @@ class SetMenu {
|
|
|
59388
59521
|
html += this.getLink('mn1_exportKabat', 'Kabat', undefined, 3);
|
|
59389
59522
|
html += this.getLink('mn1_exportImgt', 'IMGT', undefined, 3);
|
|
59390
59523
|
html += "</ul>";
|
|
59524
|
+
html += this.getLink('mn1_exportCamera', 'BCF Viewpoint', undefined, 2);
|
|
59391
59525
|
|
|
59392
59526
|
html += "<li><br/></li>";
|
|
59393
59527
|
|
|
@@ -60602,6 +60736,7 @@ class SetMenu {
|
|
|
60602
60736
|
|
|
60603
60737
|
html += this.getMenuText('mn6_develop', 'Develop', undefined, undefined, 1);
|
|
60604
60738
|
html += "<ul>";
|
|
60739
|
+
html += this.getMenuUrl('dev_contribute', me.htmlCls.baseUrl + "icn3d/icn3d.html#HowToContribute", "Become a Contributor", undefined, 2);
|
|
60605
60740
|
html += this.getMenuUrl('dev_embedicn3d2', me.htmlCls.baseUrl + "icn3d/icn3d.html#HowToUse", "Embed iCn3D", undefined, 2);
|
|
60606
60741
|
html += this.getMenuUrl('dev_urlpara', me.htmlCls.baseUrl + "icn3d/icn3d.html#parameters", "URL Parameters", undefined, 2);
|
|
60607
60742
|
html += this.getMenuUrl('dev_command', me.htmlCls.baseUrl + "icn3d/icn3d.html#commands", "Commands", undefined, 2);
|
|
@@ -62831,9 +62966,9 @@ class SetDialog {
|
|
|
62831
62966
|
|
|
62832
62967
|
group2tpl['IgFN3'] = ['Contactin1_2ee2A_human_FN3-n9', 'IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3', 'InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2', 'Sidekick2_1wf5A_human_FN3-n7'];
|
|
62833
62968
|
|
|
62834
|
-
group2tpl['IgFN3-like'] = ['ASF1A_2iijA_human', 'BArrestin1_4jqiA_rat_n1', 'C3_2qkiD_human_n1', 'MPT63_1lmiA_bacteria', 'NaCaExchanger_2fwuA_dog_n2', 'RBPJ_6py8C_human_Unk-n1', '
|
|
62969
|
+
group2tpl['IgFN3-like'] = ['ASF1A_2iijA_human', 'BArrestin1_4jqiA_rat_n1', 'C3_2qkiD_human_n1', 'MPT63_1lmiA_bacteria', 'NaCaExchanger_2fwuA_dog_n2', 'RBPJ_6py8C_human_Unk-n1', 'TEAD1_3kysC_human'];
|
|
62835
62970
|
|
|
62836
|
-
group2tpl['Other Ig'] = ['CD19_6al5A_human-n1', 'CuZnSuperoxideDismutase_1hl5C_human', 'ECadherin_4zt1A_human_n2', 'LaminAC_1ifrA_human', 'ORF7a_1xakA_virus'];
|
|
62971
|
+
group2tpl['Other Ig'] = ['CD19_6al5A_human-n1', 'CuZnSuperoxideDismutase_1hl5C_human', 'ECadherin_4zt1A_human_n2', 'LaminAC_1ifrA_human', 'ORF7a_1xakA_virus', 'RBPJ_6py8C_human_Unk-n2'];
|
|
62837
62972
|
|
|
62838
62973
|
let tpl2strandsig = {};
|
|
62839
62974
|
tpl2strandsig['ASF1A_2iijA_human'] = "A A' B C C' E F G G+";
|
|
@@ -94044,9 +94179,12 @@ class Domain3d {
|
|
|
94044
94179
|
|
|
94045
94180
|
// let subdomains = result.subdomains;
|
|
94046
94181
|
// let substruct = result.substruct;
|
|
94182
|
+
let jsonStr = '{"data": [';
|
|
94047
94183
|
|
|
94048
94184
|
let residueHash = ic.firstAtomObjCls.getResiduesFromAtoms(atoms);
|
|
94049
94185
|
let residueArray = Object.keys(residueHash);
|
|
94186
|
+
if(residueArray.length == 0) return jsonStr + ']}';
|
|
94187
|
+
|
|
94050
94188
|
let chnid = residueArray[0].substr(0, residueArray[0].lastIndexOf('_'));
|
|
94051
94189
|
|
|
94052
94190
|
// let resid1 = residueArray[0];
|
|
@@ -94097,7 +94235,7 @@ class Domain3d {
|
|
|
94097
94235
|
substruct = this.standardizeSubstruct(chnid, substruct, pos2resi);
|
|
94098
94236
|
|
|
94099
94237
|
// m_domains1: {"data": [ {"ss": [[1,20,30,x,y,z,x,y,z], [2,50,60,x,y,z,x,y,z]], "domain": [[1,43,x,y,z],[2,58,x,y,z], ...]}, {"ss": [[1,20,30,x,y,z,x,y,z], [2,50,60,x,y,z,x,y,z]],"domain": [[1,43,x,y,z],[2,58,x,y,z], ...]} ] }
|
|
94100
|
-
|
|
94238
|
+
|
|
94101
94239
|
//merge all subdomains into one domain
|
|
94102
94240
|
jsonStr += '{"ss": ['; //secondary structure
|
|
94103
94241
|
|
|
@@ -117489,12 +117627,12 @@ class DefinedSets {
|
|
|
117489
117627
|
}
|
|
117490
117628
|
|
|
117491
117629
|
setPredefinedInMenu() { let ic = this.icn3d, me = ic.icn3dui;
|
|
117492
|
-
// predefined sets: all chains
|
|
117493
|
-
this.setChainsInMenu();
|
|
117494
|
-
|
|
117495
117630
|
// predefined sets: proteins,nucleotides, chemicals
|
|
117496
117631
|
this.setProtNuclLigInMenu();
|
|
117497
117632
|
|
|
117633
|
+
// predefined sets: all chains
|
|
117634
|
+
this.setChainsInMenu();
|
|
117635
|
+
|
|
117498
117636
|
// show 3d domains for mmdbid
|
|
117499
117637
|
if(me.cfg.mmdbid !== undefined || me.cfg.gi !== undefined || me.cfg.chainalign !== undefined || me.cfg.mmdbafid !== undefined) {
|
|
117500
117638
|
for(let tddomainName in ic.tddomains) {
|
|
@@ -117592,10 +117730,15 @@ class DefinedSets {
|
|
|
117592
117730
|
return html;
|
|
117593
117731
|
}
|
|
117594
117732
|
|
|
117595
|
-
setChainsInMenu() { let ic = this.icn3d
|
|
117733
|
+
setChainsInMenu() { let ic = this.icn3d, me = ic.icn3dui;
|
|
117734
|
+
let nonProtNuclResHash = {};
|
|
117735
|
+
|
|
117596
117736
|
for(let chainid in ic.chains) {
|
|
117597
|
-
|
|
117598
|
-
|
|
117737
|
+
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chainid]);
|
|
117738
|
+
|
|
117739
|
+
// protein or nucleotide
|
|
117740
|
+
// if(ic.chainsSeq[chainid] && ic.chainsSeq[chainid].length > 1) {
|
|
117741
|
+
if(ic.proteins.hasOwnProperty(atom.serial) || ic.nucleotides.hasOwnProperty(atom.serial)) {
|
|
117599
117742
|
//ic.defNames2Atoms[chainid] = Object.keys(ic.chains[chainid]);
|
|
117600
117743
|
ic.defNames2Residues[chainid] = Object.keys(ic.firstAtomObjCls.getResiduesFromAtoms(ic.chains[chainid]));
|
|
117601
117744
|
ic.defNames2Descr[chainid] = chainid;
|
|
@@ -117606,6 +117749,25 @@ class DefinedSets {
|
|
|
117606
117749
|
|
|
117607
117750
|
ic.defNames2Command[chainid] = 'select $' + structure + '.' + chain;
|
|
117608
117751
|
}
|
|
117752
|
+
else { // chemicals, etc
|
|
117753
|
+
let resid = atom.structure + '_' + atom.chain + '_' + atom.resi;
|
|
117754
|
+
let resn = atom.resn.substr(0, 3);
|
|
117755
|
+
|
|
117756
|
+
if(!nonProtNuclResHash[resn]) {
|
|
117757
|
+
nonProtNuclResHash[resn] = ic.residues[resid];
|
|
117758
|
+
}
|
|
117759
|
+
else {
|
|
117760
|
+
nonProtNuclResHash[resn] = me.hashUtilsCls.unionHash(nonProtNuclResHash[atom.resn], ic.residues[resid]);
|
|
117761
|
+
}
|
|
117762
|
+
}
|
|
117763
|
+
}
|
|
117764
|
+
|
|
117765
|
+
// chemicals etc
|
|
117766
|
+
for(let resn in nonProtNuclResHash) {
|
|
117767
|
+
ic.defNames2Residues[resn] = Object.keys(ic.firstAtomObjCls.getResiduesFromAtoms(nonProtNuclResHash[resn]));
|
|
117768
|
+
ic.defNames2Descr[resn] = resn;
|
|
117769
|
+
|
|
117770
|
+
ic.defNames2Command[resn] = 'select :3' + resn;
|
|
117609
117771
|
}
|
|
117610
117772
|
|
|
117611
117773
|
// select whole structure
|
|
@@ -121884,7 +122046,7 @@ class Dssp {
|
|
|
121884
122046
|
ic.ref2igtype['PDL1_4z18B_human_V-n1'] = 'IgV';
|
|
121885
122047
|
ic.ref2igtype['Palladin_2dm3A_human_Iset-n1'] = 'IgI';
|
|
121886
122048
|
ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
|
|
121887
|
-
ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
|
|
122049
|
+
//ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
|
|
121888
122050
|
ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
|
|
121889
122051
|
ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = 'IgC1';
|
|
121890
122052
|
ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
|
|
@@ -127978,7 +128140,7 @@ class SaveFile {
|
|
|
127978
128140
|
//The type "png" is used to save the current canvas image. The type "html" is used to save html file with the
|
|
127979
128141
|
//"data". This can be used to save any text. The type "text" is used to save an array of text, where "data" is
|
|
127980
128142
|
//actually an array. The type "binary" is used to save an array of binary, where "data" is actually an array.
|
|
127981
|
-
saveFile(filename, type, text, bBlob) { let ic = this.icn3d, me = ic.icn3dui;
|
|
128143
|
+
async saveFile(filename, type, text, bBlob, bReturnBlobOnly) { let ic = this.icn3d, me = ic.icn3dui;
|
|
127982
128144
|
let thisClass = this;
|
|
127983
128145
|
|
|
127984
128146
|
//Save file
|
|
@@ -128020,7 +128182,12 @@ class SaveFile {
|
|
|
128020
128182
|
|
|
128021
128183
|
if(me.utilsCls.isIE()) {
|
|
128022
128184
|
blob = ic.renderer.domElement.msToBlob();
|
|
128185
|
+
}
|
|
128186
|
+
else {
|
|
128187
|
+
blob = await this.getBlobFromNonIE();
|
|
128188
|
+
}
|
|
128023
128189
|
|
|
128190
|
+
if(!bReturnBlobOnly) {
|
|
128024
128191
|
if(bAddURL) {
|
|
128025
128192
|
let reader = new FileReader();
|
|
128026
128193
|
reader.onload = function(e) {
|
|
@@ -128046,33 +128213,7 @@ class SaveFile {
|
|
|
128046
128213
|
}
|
|
128047
128214
|
}
|
|
128048
128215
|
else {
|
|
128049
|
-
|
|
128050
|
-
if(bAddURL) {
|
|
128051
|
-
let reader = new FileReader();
|
|
128052
|
-
reader.onload = function(e) {
|
|
128053
|
-
let arrayBuffer = e.target.result; // or = reader.result;
|
|
128054
|
-
|
|
128055
|
-
let text = ic.shareLinkCls.getPngText();
|
|
128056
|
-
|
|
128057
|
-
blob = me.convertTypeCls.getBlobFromBufferAndText(arrayBuffer, text);
|
|
128058
|
-
|
|
128059
|
-
//ic.createLinkForBlob(blob, filename);
|
|
128060
|
-
thisClass.saveBlob(blob, filename, bBlob, width, height);
|
|
128061
|
-
|
|
128062
|
-
return blob;
|
|
128063
|
-
};
|
|
128064
|
-
|
|
128065
|
-
reader.readAsArrayBuffer(data);
|
|
128066
|
-
}
|
|
128067
|
-
else {
|
|
128068
|
-
blob = data;
|
|
128069
|
-
|
|
128070
|
-
//ic.createLinkForBlob(blob, filename);
|
|
128071
|
-
thisClass.saveBlob(blob, filename, bBlob, width, height);
|
|
128072
|
-
|
|
128073
|
-
return blob;
|
|
128074
|
-
}
|
|
128075
|
-
});
|
|
128216
|
+
return blob;
|
|
128076
128217
|
}
|
|
128077
128218
|
|
|
128078
128219
|
// reset the image size
|
|
@@ -128106,12 +128247,20 @@ class SaveFile {
|
|
|
128106
128247
|
|
|
128107
128248
|
if(type !== 'png') {
|
|
128108
128249
|
//https://github.com/eligrey/FileSaver.js/
|
|
128109
|
-
saveAs(blob, filename);
|
|
128250
|
+
if(!bReturnBlobOnly) saveAs(blob, filename);
|
|
128110
128251
|
}
|
|
128111
128252
|
|
|
128112
128253
|
return blob;
|
|
128113
128254
|
}
|
|
128114
128255
|
|
|
128256
|
+
getBlobFromNonIE() { let ic = this.icn3d; ic.icn3dui;
|
|
128257
|
+
return new Promise(function(resolve, reject) {
|
|
128258
|
+
ic.renderer.domElement.toBlob(function(data) {
|
|
128259
|
+
resolve(data);
|
|
128260
|
+
});
|
|
128261
|
+
})
|
|
128262
|
+
}
|
|
128263
|
+
|
|
128115
128264
|
saveBlob(blob, filename, bBlob, width, height) { let ic = this.icn3d; ic.icn3dui;
|
|
128116
128265
|
if(bBlob) {
|
|
128117
128266
|
let urlCreator = window.URL || window.webkitURL;
|
|
@@ -132411,7 +132560,7 @@ class iCn3DUI {
|
|
|
132411
132560
|
//even when multiple iCn3D viewers are shown together.
|
|
132412
132561
|
this.pre = this.cfg.divid + "_";
|
|
132413
132562
|
|
|
132414
|
-
this.REVISION = '3.44.
|
|
132563
|
+
this.REVISION = '3.44.1';
|
|
132415
132564
|
|
|
132416
132565
|
// In nodejs, iCn3D defines "window = {navigator: {}}"
|
|
132417
132566
|
this.bNode = (Object.keys(window).length < 2) ? true : false;
|