Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: appengine_apps/chromium_status/static/js/status_viewer/data_fetcher.js

Issue 778533003: Moved chromium_status to appengine/ (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * Helper that fetches the tree status data from a server.
7 *
8 * The public method it exports is:
9 * DataFetcher.GetTreeStatusEntries(timeRange, callback) method.
10 */
11 var DataFetcher = {};
12
13 // -----------------------------------------------------------------------------
14 // Private implementation
15 // -----------------------------------------------------------------------------
16 (function() {
17
18 /**
19 * Downloads a single url and calls callback(text,error) on completion.
20 *
21 * @param {string} url
22 * @param {function} callback
23 */
24 function Fetch(url, callback) {
25 var r = new XMLHttpRequest();
26 r.open("GET", url, true);
27 r.setRequestHeader("pragma", "no-cache");
28 r.setRequestHeader("cache-control", "no-cache");
29 r.onreadystatechange = function() {
30 if (r.readyState == 4) {
31 var error;
32 var text = r.responseText;
33 if (r.status != 200) {
34 error = url + ": " + r.status + ": " + r.statusText;
35 } else if (! text) {
36 error = url + ": null response";
37 }
38 callback(text, error);
39 }
40 }
41
42 r.send(null);
43 }
44
45 /**
46 * Parses response (text, error) and appends the parsed entry to |entries|.
47 *
48 * /allstatus returns entries as "<author>, <date>,<message>\n" lines, with
49 * a header line reading "Who,When,Message\n".
50 *
51 */
52 function ParseDataResponseAndAppend(entries, text, error) {
53 if (error) {
54 // If we failed to download the file, error.
55 Log("Failed to retrieve the data from server. Error:\n" + error);
56 return false; // failure.
57 }
58
59 var content = JSON.parse(text);
60 if (!content.length) {
61 Log("Content seems to be invalid");
62 return false;
63 }
64
65 for (var i = 0; i < content.length; ++i) {
66 // The time has a trailing ".XXXXX" ms component we don't care for.
67 // Also append "UTC" so we are left with a string resembling:
68 // "2009-10-14 21:59:18 UTC"
69 var item = content[i];
70 dateStr = item.date.split(".")[0] + " UTC";
71 entries.push(
72 new Entry(DateUtil.ParseUTCDateTimeString(dateStr), item.username,
73 item.message, item.general_state));
74
75 }
76
77 return true; // success.
78 }
79
80 /**
81 * Fetches all of the tree status data relating to |range|.
82 * On completion |callback(entries)| is invoked, where |entries| is a list of
83 * Entry instances.
84 *
85 * @param {TimeRange} timeRange
86 * @param {function} callback
87 */
88 DataFetcher.GetTreeStatusEntries = function(timeRange, callback) {
89 // Convert milliseconds to seconds, since the server is epxecting
90 // seconds.
91 var startTime = DateUtil.MillisToSeconds(timeRange.startTime);
92 var endTime = DateUtil.MillisToSeconds(timeRange.endTime);
93
94 // The peak hours view may need extra time for its day view.
95 // Lets go ahead and optimisitically ask for it, just in case...
96 startTime += DateUtil.MillisToSeconds(DateUtil.MILLIS_PER_DAY);
97 endTime -= DateUtil.MillisToSeconds(DateUtil.MILLIS_PER_DAY);
98
99 var url = "/allstatus?format=json&startTime=" + startTime + "&endTime=" +
100 endTime + "&limit=1000";
101
102 Fetch(url, OnFetchedDataComplete.bind(this, callback));
103 }
104
105 /**
106 * Callback for when the data has been fetched.
107 *
108 * @param {function} callback The user's callback.
109 * @param {string} text The contents of the response.
110 * @param {string} error Any error message, or undefined on success.
111 */
112 function OnFetchedDataComplete(callback, text, error) {
113 var entries = [];
114 var ok = ParseDataResponseAndAppend(entries, text, error);
115 // TODO(eroman): Fix login situation.
116 if (!ok)
117 alert("TODO: You probably aren't logged in; try doing that first.");
118 callback(entries);
119 }
120
121 })(); // Private implementation.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698