static _constructAnalysisTasksFromRawData()

in resources/perf.webkit.org/public/v3/models/analysis-task.js [284:325]


    static _constructAnalysisTasksFromRawData(data)
    {
        Instrumentation.startMeasuringTime('AnalysisTask', 'construction');

        // FIXME: The backend shouldn't create a separate bug row per task for the same bug number.
        var taskToBug = {};
        for (var rawData of data.bugs) {
            rawData.bugTracker = BugTracker.findById(rawData.bugTracker);
            if (!rawData.bugTracker)
                continue;

            var bug = Bug.ensureSingleton(rawData);
            if (!taskToBug[rawData.task])
                taskToBug[rawData.task] = [];
            taskToBug[rawData.task].push(bug);
        }

        for (var rawData of data.commits) {
            rawData.repository = Repository.findById(rawData.repository);
            if (!rawData.repository)
                continue;
            CommitLog.ensureSingleton(rawData.id, rawData);
        }

        function resolveCommits(commits) {
            return commits.map(function (id) { return CommitLog.findById(id); }).filter(function (commit) { return !!commit; });
        }

        var results = [];
        for (var rawData of data.analysisTasks) {
            rawData.platform = Platform.findById(rawData.platform);
            rawData.metric = Metric.findById(rawData.metric);
            rawData.bugs = taskToBug[rawData.id];
            rawData.causes = resolveCommits(rawData.causes);
            rawData.fixes = resolveCommits(rawData.fixes);
            results.push(AnalysisTask.ensureSingleton(rawData.id, rawData));
        }

        Instrumentation.endMeasuringTime('AnalysisTask', 'construction');

        return results;
    }