| OLD | NEW |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 "use strict"; | 5 "use strict"; |
| 6 | 6 |
| 7 // https://codereview.chromium.org/api/148223004/70001/?comments=true | 7 // https://codereview.chromium.org/api/148223004/70001/?comments=true |
| 8 function PatchSet(issue, id, sequence) | 8 function PatchSet(issue, id, sequence) |
| 9 { | 9 { |
| 10 this.files = []; // Array<PatchFile> | 10 this.files = []; // Array<PatchFile> |
| 11 this.sourceFiles = []; // Array<PatchFile> | 11 this.sourceFiles = []; // Array<PatchFile> |
| 12 this.testFiles = []; // Array<PatchFile> | 12 this.testFiles = []; // Array<PatchFile> |
| 13 this.created = ""; // Date | 13 this.created = ""; // Date |
| 14 this.messageCount = 0; | 14 this.messageCount = 0; |
| 15 this.draftCount = 0; | 15 this.draftCount = 0; |
| 16 this.lastModified = ""; // Date | 16 this.lastModified = ""; // Date |
| 17 this.issue = issue || null; | 17 this.issue = issue || null; |
| 18 this.owner = null // User | 18 this.owner = null // User |
| 19 this.title = ""; | 19 this.title = ""; |
| 20 this.id = id || 0; | 20 this.id = id || 0; |
| 21 this.sequence = sequence || 0; | 21 this.sequence = sequence || 0; |
| 22 this.commit = false; | 22 this.commit = false; |
| 23 this.cqDryRun = false; | 23 this.cqDryRun = false; |
| 24 this.mostRecent = false; | 24 this.mostRecent = false; |
| 25 this.active = false; | 25 this.active = false; |
| 26 this.dependsOnPatchset = null; |
| 27 this.dependentPatchsets = null; // Array<PatchSet> |
| 26 Object.preventExtensions(this); | 28 Object.preventExtensions(this); |
| 27 } | 29 } |
| 28 | 30 |
| 29 PatchSet.DETAIL_URL = "/api/{1}/{2}/?comments=true&try_jobs=false"; | 31 PatchSet.DETAIL_URL = "/api/{1}/{2}/?comments=true&try_jobs=false"; |
| 30 PatchSet.REVERT_URL = "/api/{1}/{2}/revert"; | 32 PatchSet.REVERT_URL = "/api/{1}/{2}/revert"; |
| 31 PatchSet.DELETE_URL = "/{1}/patchset/{2}/delete"; | 33 PatchSet.DELETE_URL = "/{1}/patchset/{2}/delete"; |
| 32 PatchSet.TITLE_URL = "/{1}/patchset/{2}/edit_patchset_title"; | 34 PatchSet.TITLE_URL = "/{1}/patchset/{2}/edit_patchset_title"; |
| 35 PatchSet.PATCHSET_URL = "/{1}/#ps{2}"; |
| 36 |
| 37 PatchSet.prototype.getPatchsetUrl = function() |
| 38 { |
| 39 return PatchSet.PATCHSET_URL.assign( |
| 40 encodeURIComponent(this.issue.id), |
| 41 encodeURIComponent(this.id)); |
| 42 }; |
| 33 | 43 |
| 34 PatchSet.prototype.getDetailUrl = function() | 44 PatchSet.prototype.getDetailUrl = function() |
| 35 { | 45 { |
| 36 return PatchSet.DETAIL_URL.assign( | 46 return PatchSet.DETAIL_URL.assign( |
| 37 encodeURIComponent(this.issue.id), | 47 encodeURIComponent(this.issue.id), |
| 38 encodeURIComponent(this.id)); | 48 encodeURIComponent(this.id)); |
| 39 }; | 49 }; |
| 40 | 50 |
| 41 PatchSet.prototype.getRevertUrl = function() | 51 PatchSet.prototype.getRevertUrl = function() |
| 42 { | 52 { |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 throw new Error("Invalid patchset loaded " + data.issue + " != " + this.
issue.id | 126 throw new Error("Invalid patchset loaded " + data.issue + " != " + this.
issue.id |
| 117 + " or " + data.patchset + " != " + this.id); | 127 + " or " + data.patchset + " != " + this.id); |
| 118 } | 128 } |
| 119 | 129 |
| 120 this.owner = new User(data.owner); | 130 this.owner = new User(data.owner); |
| 121 // TODO(esprehn): The server calls it a message sometimes and a title others
, | 131 // TODO(esprehn): The server calls it a message sometimes and a title others
, |
| 122 // lets always call it a title. | 132 // lets always call it a title. |
| 123 this.title = data.message || ""; | 133 this.title = data.message || ""; |
| 124 this.lastModified = Date.utc.create(data.modified); | 134 this.lastModified = Date.utc.create(data.modified); |
| 125 this.created = Date.utc.create(data.created); | 135 this.created = Date.utc.create(data.created); |
| 136 if (data.depends_on_patchset) { |
| 137 var tokens = data.depends_on_patchset.split(":"); |
| 138 var dependsOnIssue = new Issue(parseInt(tokens[0])); |
| 139 dependsOnIssue.loadDetails(); |
| 140 this.dependsOnPatchset = new PatchSet(dependsOnIssue, parseInt(tokens[1]),
0); |
| 141 } |
| 142 if (data.dependent_patchsets && data.dependent_patchsets.length != 0) { |
| 143 this.dependentPatchsets = []; |
| 144 data.dependent_patchsets.forEach(function(dependent_patchset, i) { |
| 145 var tokens = dependent_patchset.split(":"); |
| 146 var dependentIssue = new Issue(parseInt(tokens[0])); |
| 147 dependentIssue.loadDetails(); |
| 148 var dependentPatchset = new PatchSet(dependentIssue, parseInt(tokens[1
]), i + 1); |
| 149 this.dependentPatchsets.push(dependentPatchset); |
| 150 }, this); |
| 151 } |
| 126 | 152 |
| 127 Object.keys(data.files || {}, function(name, value) { | 153 Object.keys(data.files || {}, function(name, value) { |
| 128 var file = new PatchFile(patchset, name); | 154 var file = new PatchFile(patchset, name); |
| 129 file.parseData(value); | 155 file.parseData(value); |
| 130 patchset.files.push(file); | 156 patchset.files.push(file); |
| 131 }); | 157 }); |
| 132 | 158 |
| 133 this.files.sort(PatchFile.compare); | 159 this.files.sort(PatchFile.compare); |
| 134 // Make a doubly linked list of files | 160 // Make a doubly linked list of files |
| 135 if (this.files.length > 1) { | 161 if (this.files.length > 1) { |
| 136 for (var i = 0; i < this.files.length; ++i) { | 162 for (var i = 0; i < this.files.length; ++i) { |
| 137 this.files[i].nextFile = this.files[i + 1]; | 163 this.files[i].nextFile = this.files[i + 1]; |
| 138 this.files[i].previousFile = this.files[i - 1]; | 164 this.files[i].previousFile = this.files[i - 1]; |
| 139 } | 165 } |
| 140 } | 166 } |
| 141 | 167 |
| 142 this.files.forEach(function(file) { | 168 this.files.forEach(function(file) { |
| 143 if (file.isLayoutTest) | 169 if (file.isLayoutTest) |
| 144 this.testFiles.push(file); | 170 this.testFiles.push(file); |
| 145 else | 171 else |
| 146 this.sourceFiles.push(file); | 172 this.sourceFiles.push(file); |
| 147 }, this); | 173 }, this); |
| 148 }; | 174 }; |
| OLD | NEW |