There should be a way to associate bugs with analysis tasks
[WebKit-https.git] / Websites / perf.webkit.org / public / v2 / analysis.js
index 08190b5..eb90ea0 100644 (file)
@@ -9,13 +9,21 @@ App.AnalysisTask = App.NameLabelModel.extend({
     testGroups: function () {
         return this.store.find('testGroup', {task: this.get('id')});
     }.property(),
+    label: function () {
+        var label = this.get('name');
+        var bugs = this.get('bugs').map(function (bug) { return bug.get('label'); }).join(' / ');
+        return bugs ? label + ' (' + bugs + ')' : label;
+    }.property('name', 'bugs'),
 });
 
-App.Bug = App.NameLabelModel.extend({
+App.Bug = App.Model.extend({
     task: DS.belongsTo('AnalysisTask'),
     bugTracker: DS.belongsTo('BugTracker'),
     createdAt: DS.attr('date'),
     number: DS.attr('number'),
+    label: function () {
+        return this.get('bugTracker').get('label') + ': ' + this.get('number');
+    }.property('name', 'bugTracker'),
 });
 
 // FIXME: Use DS.RESTAdapter instead.
@@ -35,6 +43,21 @@ App.AnalysisTaskAdapter = DS.RESTAdapter.extend({
     },
 });
 
+App.BugAdapter = DS.RESTAdapter.extend({
+    createRecord: function (store, type, record)
+    {
+        var param = {
+            task: record.get('task').get('id'),
+            bugTracker: record.get('bugTracker').get('id'),
+            number: record.get('number'),
+        };
+        return PrivilegedAPI.sendRequest('associate-bug', param).then(function (data) {
+            param['id'] = data['bugId'];
+            return {'bug': param};
+        });
+    }
+});
+
 App.TestGroup = App.NameLabelModel.extend({
     analysisTask: DS.belongsTo('analysisTask'),
     author: DS.attr('string'),
@@ -57,7 +80,7 @@ App.AnalysisTaskSerializer = App.TestGroupSerializer = DS.RESTSerializer.extend(
     }
 });
 
-App.BuildRequest = DS.Model.extend({
+App.BuildRequest = App.Model.extend({
     group: DS.belongsTo('testGroup'),
     order: DS.attr('number'),
     rootSet: DS.attr('number'),