JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / io / AlignmentProperties.js
1 Clazz.declarePackage ("jalview.io");\r
2 Clazz.load (null, "jalview.io.AlignmentProperties", ["java.lang.StringBuffer"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.alignment = null;\r
5 Clazz.instantialize (this, arguments);\r
6 }, jalview.io, "AlignmentProperties");\r
7 Clazz.makeConstructor (c$, \r
8 function (alignment) {\r
9 this.alignment = alignment;\r
10 }, "jalview.datamodel.AlignmentI");\r
11 Clazz.defineMethod (c$, "writeProperties", \r
12 function (sb, html) {\r
13 var nl = html ? "<br>" : System.getProperty ("line.separator");\r
14 var avg = 0;\r
15 var min = 2147483647;\r
16 var max = 0;\r
17 for (var i = 0; i < this.alignment.getHeight (); i++) {\r
18 var size = 1 + this.alignment.getSequenceAt (i).getEnd () - this.alignment.getSequenceAt (i).getStart ();\r
19 avg += size;\r
20 if (size > max) {\r
21 max = size;\r
22 }if (size < min) {\r
23 min = size;\r
24 }}\r
25 avg = avg / this.alignment.getHeight ();\r
26 sb.append (nl);\r
27 sb.append ("Sequences: " + this.alignment.getHeight ());\r
28 sb.append (nl);\r
29 sb.append ("Minimum Sequence Length: " + min);\r
30 sb.append (nl);\r
31 sb.append ("Maximum Sequence Length: " + max);\r
32 sb.append (nl);\r
33 sb.append ("Average Length: " + Clazz.floatToInt (avg));\r
34 if ((this.alignment).alignmentProperties != null) {\r
35 sb.append (nl);\r
36 sb.append (nl);\r
37 if (html) {\r
38 sb.append ("<table border=\"1\">");\r
39 }var props = (this.alignment).alignmentProperties;\r
40 var en = props.keys ();\r
41 while (en.hasMoreElements ()) {\r
42 var key = en.nextElement ().toString ();\r
43 var vals = props.get (key).toString ();\r
44 if (html) {\r
45 var val =  new StringBuffer ();\r
46 var pos = 0;\r
47 var npos;\r
48 do {\r
49 npos = vals.indexOf ("\n", pos);\r
50 if (npos == -1) {\r
51 val.append (vals.substring (pos));\r
52 } else {\r
53 val.append (vals.substring (pos, npos));\r
54 val.append ("<br>");\r
55 }pos = npos + 1;\r
56 } while (npos != -1);\r
57 sb.append ("<tr><td>" + key + "</td><td>" + val + "</td></tr>");\r
58 } else {\r
59 sb.append (nl + key + "\t" + vals);\r
60 }}\r
61 if (html) {\r
62 sb.append ("</table>");\r
63 }}}, "StringBuffer,~B");\r
64 Clazz.defineMethod (c$, "formatAsString", \r
65 function () {\r
66 return this.formatReport (false);\r
67 });\r
68 Clazz.defineMethod (c$, "formatReport", \r
69 function (html) {\r
70 var sb =  new StringBuffer ();\r
71 this.writeProperties (sb, html);\r
72 return sb;\r
73 }, "~B");\r
74 Clazz.defineMethod (c$, "formatAsHtml", \r
75 function () {\r
76 return this.formatReport (true);\r
77 });\r
78 });\r