function fetchManifest()
{
- var manifestURL = '../data/manifest.json';
-
- return getJSON(manifestURL).then(function (rawResponse) {
- Instrumentation.startMeasuringTime('Manifest', 'constructor');
-
- var tests = [];
- var testParentMap = {};
- for (var testId in rawResponse.tests) {
- var test = rawResponse.tests[testId];
- var topLevel = !test.parentId;
- if (test.parentId)
- testParentMap[testId] = parseInt(test.parentId);
- tests.push(new Test(testId, test, topLevel));
- }
- for (var testId in testParentMap)
- Test.findById(testId).setParentTest(Test.findById(testParentMap[testId]));
-
- function buildObjectsFromIdMap(idMap, constructor, resolver) {
- for (var id in idMap) {
- if (resolver)
- resolver(idMap[id]);
- new constructor(id, idMap[id]);
- }
- }
- buildObjectsFromIdMap(rawResponse.metrics, Metric, function (raw) {
- raw.test = Test.findById(raw.test);
+ return getJSON('../data/manifest.json').then(didFetchManifest, function () {
+ return getJSON('../api/manifest/').then(didFetchManifest, function (error) {
+ alert('Failed to load the site manifest: ' + error);
});
+ });
+}
- buildObjectsFromIdMap(rawResponse.all, Platform, function (raw) {
- raw.lastModifiedByMetric = {};
- raw.lastModified.forEach(function (lastModified, index) {
- raw.lastModifiedByMetric[raw.metrics[index]] = lastModified;
- });
- raw.metrics = raw.metrics.map(function (id) { return Metric.findById(id); });
- });
- buildObjectsFromIdMap(rawResponse.builders, Builder);
- buildObjectsFromIdMap(rawResponse.repositories, Repository);
- buildObjectsFromIdMap(rawResponse.bugTrackers, BugTracker, function (raw) {
- raw.repositories = raw.repositories.map(function (id) { return Repository.findById(id); });
+function didFetchManifest(rawResponse)
+{
+ Instrumentation.startMeasuringTime('Main', 'didFetchManifest');
+
+ var tests = [];
+ var testParentMap = {};
+ for (var testId in rawResponse.tests) {
+ var test = rawResponse.tests[testId];
+ var topLevel = !test.parentId;
+ if (test.parentId)
+ testParentMap[testId] = parseInt(test.parentId);
+ tests.push(new Test(testId, test, topLevel));
+ }
+ for (var testId in testParentMap)
+ Test.findById(testId).setParentTest(Test.findById(testParentMap[testId]));
+
+ function buildObjectsFromIdMap(idMap, constructor, resolver) {
+ for (var id in idMap) {
+ if (resolver)
+ resolver(idMap[id]);
+ new constructor(id, idMap[id]);
+ }
+ }
+ buildObjectsFromIdMap(rawResponse.metrics, Metric, function (raw) {
+ raw.test = Test.findById(raw.test);
+ });
+
+ buildObjectsFromIdMap(rawResponse.all, Platform, function (raw) {
+ raw.lastModifiedByMetric = {};
+ raw.lastModified.forEach(function (lastModified, index) {
+ raw.lastModifiedByMetric[raw.metrics[index]] = lastModified;
});
+ raw.metrics = raw.metrics.map(function (id) { return Metric.findById(id); });
+ });
+ buildObjectsFromIdMap(rawResponse.builders, Builder);
+ buildObjectsFromIdMap(rawResponse.repositories, Repository);
+ buildObjectsFromIdMap(rawResponse.bugTrackers, BugTracker, function (raw) {
+ raw.repositories = raw.repositories.map(function (id) { return Repository.findById(id); });
+ });
- Instrumentation.endMeasuringTime('Manifest', 'constructor');
+ Instrumentation.endMeasuringTime('Main', 'didFetchManifest');
- return {
- siteTitle: rawResponse.siteTitle,
- dashboards: rawResponse.dashboards, // FIXME: Add an abstraction around dashboards.
- }
- });
+ return {
+ siteTitle: rawResponse.siteTitle,
+ dashboards: rawResponse.dashboards, // FIXME: Add an abstraction around dashboards.
+ }
}
if (document.readyState != 'loading')