JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / io / SequenceAnnotationReport.js
1 Clazz.declarePackage ("jalview.io");\r
2 Clazz.load (null, "jalview.io.SequenceAnnotationReport", ["jalview.util.DBRefUtils", "$.UrlLink", "java.lang.Float", "java.util.ArrayList"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.linkImageURL = null;\r
5 Clazz.instantialize (this, arguments);\r
6 }, jalview.io, "SequenceAnnotationReport");\r
7 Clazz.makeConstructor (c$, \r
8 function (linkImageURL) {\r
9 this.linkImageURL = linkImageURL;\r
10 }, "~S");\r
11 Clazz.defineMethod (c$, "appendFeatures", \r
12 function (tooltipText2, rpos, features) {\r
13 this.appendFeatures (tooltipText2, rpos, features, null);\r
14 }, "StringBuffer,~N,java.util.List");\r
15 Clazz.defineMethod (c$, "appendFeatures", \r
16 function (tooltipText2, rpos, features, minmax) {\r
17 var tmpString;\r
18 if (features != null) {\r
19 for (var feature, $feature = features.iterator (); $feature.hasNext () && ((feature = $feature.next ()) || true);) {\r
20 if (feature.getType ().equals ("disulfide bond")) {\r
21 if (feature.getBegin () == rpos || feature.getEnd () == rpos) {\r
22 if (tooltipText2.length () > 6) {\r
23 tooltipText2.append ("<br>");\r
24 }tooltipText2.append ("disulfide bond " + feature.getBegin () + ":" + feature.getEnd ());\r
25 }} else {\r
26 if (tooltipText2.length () > 6) {\r
27 tooltipText2.append ("<br>");\r
28 }var linkOnly = feature.getValue ("linkonly") != null;\r
29 if (!linkOnly) {\r
30 tooltipText2.append (feature.getType () + " ");\r
31 if (rpos != 0) {\r
32 tooltipText2.append (feature.begin);\r
33 }if (feature.begin != feature.end) {\r
34 tooltipText2.append (" " + feature.end);\r
35 }if (feature.getDescription () != null && !feature.description.equals (feature.getType ())) {\r
36 tmpString = feature.getDescription ();\r
37 var tmp2up = tmpString.toUpperCase ();\r
38 var startTag = tmp2up.indexOf ("<HTML>");\r
39 if (startTag > -1) {\r
40 tmpString = tmpString.substring (startTag + 6);\r
41 tmp2up = tmp2up.substring (startTag + 6);\r
42 }var endTag = tmp2up.indexOf ("</BODY>");\r
43 if (endTag > -1) {\r
44 tmpString = tmpString.substring (0, endTag);\r
45 tmp2up = tmp2up.substring (0, endTag);\r
46 }endTag = tmp2up.indexOf ("</HTML>");\r
47 if (endTag > -1) {\r
48 tmpString = tmpString.substring (0, endTag);\r
49 }if (startTag > -1) {\r
50 tooltipText2.append ("; " + tmpString);\r
51 } else {\r
52 if (tmpString.indexOf ("<") > -1 || tmpString.indexOf (">") > -1) {\r
53 tmpString = tmpString.replaceAll ("<", "&lt;");\r
54 tmpString = tmpString.replaceAll (">", "&gt;");\r
55 tooltipText2.append ("; ");\r
56 tooltipText2.append (tmpString);\r
57 } else {\r
58 tooltipText2.append ("; " + tmpString);\r
59 }}}if (!Float.isNaN (feature.getScore ())) {\r
60 var rng = (minmax == null) ? null : (minmax.get (feature.getType ()));\r
61 if (rng != null && rng[0] != null && rng[0][0] != rng[0][1]) {\r
62 tooltipText2.append (" Score=" + feature.getScore ());\r
63 }}if (feature.getValue ("status") != null) {\r
64 var status = feature.getValue ("status").toString ();\r
65 if (status.length > 0) {\r
66 tooltipText2.append ("; (" + feature.getValue ("status") + ")");\r
67 }}}}if (feature.links != null) {\r
68 if (this.linkImageURL != null) {\r
69 tooltipText2.append (" <img src=\"" + this.linkImageURL + "\">");\r
70 } else {\r
71 for (var urlstring, $urlstring = feature.links.iterator (); $urlstring.hasNext () && ((urlstring = $urlstring.next ()) || true);) {\r
72 try {\r
73 for (var urllink, $urllink = 0, $$urllink = this.createLinksFrom (null, urlstring); $urllink < $$urllink.length && ((urllink = $$urllink[$urllink]) || true); $urllink++) {\r
74 tooltipText2.append ("<br/> <a href=\"" + urllink[3] + "\" target=\"" + urllink[0] + "\">" + (urllink[0].toLowerCase ().equals (urllink[1].toLowerCase ()) ? urllink[0] : (urllink[0] + ":" + urllink[1])) + "</a></br>");\r
75 }\r
76 } catch (x) {\r
77 if (Clazz.exceptionOf (x, Exception)) {\r
78 System.err.println ("problem when creating links from " + urlstring);\r
79 x.printStackTrace ();\r
80 } else {\r
81 throw x;\r
82 }\r
83 }\r
84 }\r
85 }}}\r
86 }}, "StringBuffer,~N,java.util.List,java.util.Hashtable");\r
87 Clazz.defineMethod (c$, "createLinksFrom", \r
88 function (seq, link) {\r
89 var urlSets =  new java.util.ArrayList ();\r
90 var uniques =  new java.util.ArrayList ();\r
91 var urlLink =  new jalview.util.UrlLink (link);\r
92 if (!urlLink.isValid ()) {\r
93 System.err.println (urlLink.getInvalidMessage ());\r
94 return null;\r
95 }var target = urlLink.getTarget ();\r
96 var label = urlLink.getLabel ();\r
97 if (seq != null && urlLink.isDynamic ()) {\r
98 var dbr = jalview.util.DBRefUtils.selectRefs (seq.getDBRef (),  Clazz.newArray (-1, [target]));\r
99 var id = seq.getName ();\r
100 var descr = seq.getDescription ();\r
101 if (descr != null && descr.length < 1) {\r
102 descr = null;\r
103 }if (dbr != null) {\r
104 for (var r = 0; r < dbr.length; r++) {\r
105 if (id != null && dbr[r].getAccessionId ().equals (id)) {\r
106 id = null;\r
107 }var urls = urlLink.makeUrls (dbr[r].getAccessionId (), true);\r
108 if (urls != null) {\r
109 for (var u = 0; u < urls.length; u += 2) {\r
110 var unq = urls[u] + "|" + urls[u + 1];\r
111 if (!uniques.contains (unq)) {\r
112 urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));\r
113 uniques.add (unq);\r
114 }}\r
115 }}\r
116 }if (id != null) {\r
117 var urls = urlLink.makeUrls (id, true);\r
118 if (urls != null) {\r
119 for (var u = 0; u < urls.length; u += 2) {\r
120 var unq = urls[u] + "|" + urls[u + 1];\r
121 if (!uniques.contains (unq)) {\r
122 urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));\r
123 uniques.add (unq);\r
124 }}\r
125 }}if (descr != null && urlLink.getRegexReplace () != null) {\r
126 var urls = urlLink.makeUrls (descr, true);\r
127 if (urls != null) {\r
128 for (var u = 0; u < urls.length; u += 2) {\r
129 var unq = urls[u] + "|" + urls[u + 1];\r
130 if (!uniques.contains (unq)) {\r
131 urlSets.add ( Clazz.newArray (-1, [target, label, urls[u], urls[u + 1]]));\r
132 uniques.add (unq);\r
133 }}\r
134 }}} else {\r
135 var unq = label + "|" + urlLink.getUrl_prefix ();\r
136 if (!uniques.contains (unq)) {\r
137 uniques.add (unq);\r
138 urlSets.add ( Clazz.newArray (-1, [target, label, null, urlLink.getUrl_prefix ()]));\r
139 }}return urlSets.toArray ( Clazz.newArray (-1, []));\r
140 }, "jalview.datamodel.SequenceI,~S");\r
141 Clazz.defineMethod (c$, "createSequenceAnnotationReport", \r
142 function (tip, sequence, showDbRefs, showNpFeats, minmax) {\r
143 this.createSequenceAnnotationReport (tip, sequence, showDbRefs, showNpFeats, true, minmax);\r
144 }, "StringBuffer,jalview.datamodel.SequenceI,~B,~B,java.util.Hashtable");\r
145 Clazz.defineMethod (c$, "createSequenceAnnotationReport", \r
146 function (tip, sequence, showDbRefs, showNpFeats, tableWrap, minmax) {\r
147 var tmp;\r
148 tip.append ("<i>");\r
149 var maxWidth = 0;\r
150 if (sequence.getDescription () != null) {\r
151 tmp = sequence.getDescription ();\r
152 tip.append ("<br>" + tmp);\r
153 maxWidth = Math.max (maxWidth, tmp.length);\r
154 }var ds = sequence;\r
155 while (ds.getDatasetSequence () != null) {\r
156 ds = ds.getDatasetSequence ();\r
157 }\r
158 var dbrefs = ds.getDBRef ();\r
159 if (showDbRefs && dbrefs != null) {\r
160 for (var i = 0; i < dbrefs.length; i++) {\r
161 tip.append ("<br>");\r
162 tmp = dbrefs[i].getSource () + " " + dbrefs[i].getAccessionId ();\r
163 tip.append (tmp);\r
164 maxWidth = Math.max (maxWidth, tmp.length);\r
165 }\r
166 }var features = sequence.getSequenceFeatures ();\r
167 if (showNpFeats && features != null) {\r
168 for (var i = 0; i < features.length; i++) {\r
169 if (features[i].begin == 0 && features[i].end == 0) {\r
170 var sz = -tip.length ();\r
171 var tfeat =  new java.util.ArrayList ();\r
172 tfeat.add (features[i]);\r
173 this.appendFeatures (tip, 0, tfeat, minmax);\r
174 sz += tip.length ();\r
175 maxWidth = Math.max (maxWidth, sz);\r
176 }}\r
177 }if (tableWrap && maxWidth > 60) {\r
178 tip.insert (0, "<table width=350 border=0><tr><td><i>");\r
179 tip.append ("</i></td></tr></table>");\r
180 }}, "StringBuffer,jalview.datamodel.SequenceI,~B,~B,~B,java.util.Hashtable");\r
181 });\r