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