JAL_793 implemented embeding source data in exported html
[jalview.git] / src / jalview / io / HtmlSvgOutput.java
index 3c9c608..64dfc1c 100644 (file)
@@ -1,9 +1,12 @@
 package jalview.io;
 
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignViewport;
 import jalview.gui.AlignmentPanel;
 import jalview.gui.AnnotationPanel;
+import jalview.gui.Desktop;
 import jalview.gui.FeatureRenderer;
 import jalview.gui.HTMLOptions;
 import jalview.math.AlignmentDimension;
@@ -100,7 +103,8 @@ public class HtmlSvgOutput
 
       String titleSvgData = g1.getSVGDocument();
       String alignSvgData = g2.getSVGDocument();
-      String htmlData = getHtml(titleSvgData, alignSvgData);
+      String jsonData = getJSONData();
+      String htmlData = getHtml(titleSvgData, alignSvgData, jsonData);
 
       out.write(htmlData.getBytes());
       out.flush();
@@ -257,11 +261,50 @@ public class HtmlSvgOutput
     return Printable.PAGE_EXISTS;
   }
   
-  private String getHtml(String titleSvg, String alignmentSvg)
+  private String getJSONData()
+  {
+    JSONFile jsonFile = new JSONFile();
+    Alignment al = new Alignment(av.getAlignment().getSequencesArray());
+    jsonFile.seqGroups = av.getAlignment().getGroups();
+    // jsonFile.addAnnotations(al);
+    jsonFile.setDisplayedFeatures(av.getFeaturesDisplayed());
+    Desktop.setCurrentAlignFrame(av.getAlignPanel().alignFrame);
+    for (SequenceI seq : av.getAlignment().getSequences())
+    {
+      jsonFile.seqs.add(seq);
+    }
+
+    // Add non auto calculated annotation to AlignFile
+    for (AlignmentAnnotation annot : av.getAlignment()
+            .getAlignmentAnnotation())
+    {
+      if (annot != null && !annot.autoCalculated)
+      {
+        if (annot.label.equals("PDB.CATempFactor"))
+        {
+          continue;
+        }
+        jsonFile.annotations.add(annot);
+      }
+    }
+
+    // jsonFile.setGlobalColorScheme(av.getGlobalColourScheme());
+    String jsonString = jsonFile.print();
+    System.out.println(">>>>>>>>>>> JSONFile : " + jsonString);
+    return jsonString;
+  }
+
+  private String getHtml(String titleSvg, String alignmentSvg,
+          String jsonData)
   {
     StringBuilder htmlSvg = new StringBuilder();
-    htmlSvg.append("<html>"
-            + "<style type=\"text/css\"> "
+    htmlSvg.append("<html>\n");
+    if (jsonData != null)
+    {
+      htmlSvg.append("<input type=\"hidden\" name=\"seqData\" id=\"seqData\" value='"
+              + jsonData + "'>");
+    }
+    htmlSvg.append("\n<style type=\"text/css\"> "
             + "div.parent{ width:100%;<!-- overflow: auto; -->}\n"
             + "div.titlex{ width:11%; float: left; }\n"
             + "div.align{ width:89%; float: right; }\n"