[app] Display reporting currency (bug #130)
[abstract.git] / app / chrome / content / chart.js
blobb42ec3821f6b6cc7cda670206da5df1a48ca7462
1 /* vim:set ts=2 sw=2 sts=2 et cindent tw=79 ft=javascript: */
2 /*
3  * Copyright (C) 2007 Sergey Yanovich <ynvich@gmail.com>
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation; either version 2 of the
8  * License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */
21 const nsCI = Components.interfaces;
22 const dataSetContract = "@aasii.org/storage/load-quote;1";
24 function jsdump(str)
26     Components.classes['@mozilla.org/consoleservice;1']
27       .getService(Components.interfaces.nsIConsoleService)
28       .logStringMessage(str);
31 function objdump(obj)
33   dump(obj + "\n");
34   for (var prop in obj) {
35     try {
36       dump(prop + ": " + obj[prop] + "\n");
37     } catch (e) {
38       dump(prop + ": error: " + e.message + "\n");
39     }
40   }
43 function session()
45   return document.defaultView.QueryInterface(nsCI.nsIInterfaceRequestor)
46     .getInterface(nsCI.nsIWebNavigation).sessionHistory;
49 function loadURI(uri)
50
51   document.defaultView.QueryInterface(nsCI.nsIInterfaceRequestor)
52     .getInterface(nsCI.nsIWebNavigation)
53     .loadURI(uri,nsCI.nsIWebNavigation.LOAD_FLAGS_NONE,null,null,null);
56 var gView = null;
57 var gLoaded = false;
59 function chartPageLoad()
61   var quotes = session().createQuery(dataSetContract)
62     .QueryInterface(nsCI.aaILoadQuery);
63   quotes.load();
64   gView = new aaView();
65   if (quotes.length > 0) {
66     gView.quote = quotes.queryElementAt(0, nsCI.aaIQuote);
67     document.getElementById("chart.date").dateValue =
68       new Date(gView.quote.time / 1000);
69     document.getElementById("chart.resource").value =
70       gView.quote.resource.tag;
71     notifyReady();
72   } else {
73     gView.quote = Components.classes["@aasii.org/base/quote;1"]
74       .createInstance(nsCI.aaIQuote);
75     dateChange();
76     gView.quote.rate = 1.0;
77   }
79   document.getElementById("chart.date").addEventListener("change",
80       dateChange, false);
81   var broadcaster = Components.classes["@mozilla.org/observer-service;1"].
82     getService(nsCI.nsIObserverService);
83   broadcaster.addObserver(gView, "quote-resource-change", true);
86 function dateChange()
88   var date = document.getElementById("chart.date").dateValue;
89   date.setHours(12);
90   gView.quote.time = date.getTime()  * 1000;
93 function openResource(side)
95   if (! document.getElementById("canSet").hasAttribute("disabled")) {
96     session().beginQuery();
97     addEventListener("pageshow", chosenResource, true);
98   }
99   loadURI("chrome://abstract/content/resource.xul");
102 function chosenResource()
104   removeEventListener("pageshow", chosenResource, true);
105   var buffer = session().queryBuffer;
106   if (buffer && gView && gView.quote)
107     gView.quote.resource = buffer.QueryInterface(nsCI.aaIResource);
110 function updateResource()
112   if (gView.quote.resource)
113     document.getElementById("chart.resource").value = gView.quote.resource.tag;
114   else
115     document.getElementById("chart.resource").value = "";
118 function setResource()
120   session().save(gView.quote, null);
121   notifyReady();
124 function notifyReady()
126   gLoaded = true;
127   document.getElementById("canSet").setAttribute("disabled", "true");
128   document.getElementById("canSet").setAttribute("collapsed", "true");
129   document.getElementById("isSet").removeAttribute("disabled");
130   document.getElementById("isSet").removeAttribute("collapsed");
133 function aaView()
137 aaView.prototype =
139   QueryInterface : function aaViewQI(iid)
140   {
141     if (iid.equals(nsCI.nsIObserver) ||
142         iid.equals(nsCI.nsISupportsWeakReference) ||
143         iid.equals(nsCI.nsISupports))
144       return this;
146     throw Components.results.NS_ERROR_NO_INTERFACE;
147   },
149   quote : null,
151   observe: function aaViewObserve(aSubject, aTopic, aData)
152   {
153     if (this.quote && aSubject == this.quote) {
154       if (aTopic == "quote-resource-change")
155         updateResource();
156     }
157   }