From 56689af0f92ce13f90ff9369544c5f9cc0412f09 Mon Sep 17 00:00:00 2001 From: Viktar Donich Date: Wed, 1 Jun 2016 11:41:47 -0700 Subject: [PATCH] Make gr-builder a Polymer component Change-Id: I0d99775332b0ef473459ad481970ad6033427c7d --- .../gr-diff-builder-image.js | 0 .../gr-diff-builder-side-by-side.js | 0 .../gr-diff-builder-unified.js | 0 .../diff/gr-diff-builder/gr-diff-builder.html | 127 ++++++++++++++++++ .../gr-diff-builder.js | 0 .../gr-diff-builder_test.html | 4 +- .../app/elements/diff/gr-diff/gr-diff.html | 14 +- .../app/elements/diff/gr-diff/gr-diff.js | 57 +------- .../elements/diff/gr-diff/gr-diff_test.html | 28 +--- 9 files changed, 143 insertions(+), 87 deletions(-) rename polygerrit-ui/app/elements/diff/{gr-diff => gr-diff-builder}/gr-diff-builder-image.js (100%) rename polygerrit-ui/app/elements/diff/{gr-diff => gr-diff-builder}/gr-diff-builder-side-by-side.js (100%) rename polygerrit-ui/app/elements/diff/{gr-diff => gr-diff-builder}/gr-diff-builder-unified.js (100%) create mode 100644 polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html rename polygerrit-ui/app/elements/diff/{gr-diff => gr-diff-builder}/gr-diff-builder.js (100%) rename polygerrit-ui/app/elements/diff/{gr-diff => gr-diff-builder}/gr-diff-builder_test.html (99%) diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-image.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-image.js similarity index 100% rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-image.js rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-image.js diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-side-by-side.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-side-by-side.js similarity index 100% rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-side-by-side.js rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-side-by-side.js diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-unified.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-unified.js similarity index 100% rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-unified.js rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-unified.js diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html new file mode 100644 index 0000000000..76cb84402f --- /dev/null +++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html @@ -0,0 +1,127 @@ + + + + + + + + + + + + + diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.js similarity index 100% rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder.js rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.js diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder_test.html b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html similarity index 99% rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder_test.html rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html index 5905bd991d..c47e05d33b 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder_test.html +++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html @@ -19,8 +19,8 @@ limitations under the License. gr-diff-builder - - + + - - - - diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js index 0056808557..ea64581a7d 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js +++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js @@ -27,12 +27,6 @@ Polymer({ is: 'gr-diff', - /** - * Fired when the diff is rendered. - * - * @event render - */ - properties: { changeNum: String, patchRange: Object, @@ -59,7 +53,6 @@ value: DiffViewMode.SIDE_BY_SIDE, }, _diff: Object, - _diffBuilder: Object, _selectionSide: { type: String, observer: '_selectionSideChanged', @@ -195,7 +188,7 @@ var el = Polymer.dom(e).rootTarget; if (el.classList.contains('showContext')) { - this._showContext(e.detail.groups, e.detail.section); + this.$.diffBuilder.showContext(e.detail.groups, e.detail.section); } else if (el.classList.contains('lineNum')) { this.addDraftAtLine(el); } @@ -223,8 +216,8 @@ patchNum = this.patchRange.basePatchNum; } } - threadEl = this._builder.createCommentThread(this.changeNum, patchNum, - this.path, side, this.projectConfig); + threadEl = this.$.diffBuilder.createCommentThread( + this.changeNum, patchNum, this.path, side, this.projectConfig); contentEl.appendChild(threadEl); } threadEl.addDraft(opt_lineNum); @@ -363,25 +356,6 @@ return text; }, - _showContext: function(newGroups, sectionEl) { - var groups = this._builder._groups; - // TODO(viktard): Polyfill findIndex for IE10. - var contextIndex = groups.findIndex(function(group) { - return group.element == sectionEl; - }); - - groups.splice.apply(groups, [contextIndex, 1].concat(newGroups)); - - newGroups.forEach(function(newGroup) { - this._builder.emitGroup(newGroup, sectionEl); - }.bind(this)); - sectionEl.parentNode.removeChild(sectionEl); - - this.async(function() { - this.fire('render', null, {bubbles: false}); - }.bind(this), 1); - }, - _prefsChanged: function(prefsChangeRecord) { var prefs = prefsChangeRecord.base; this.customStyle['--content-width'] = prefs.line_length + 'ch'; @@ -393,17 +367,7 @@ }, _render: function() { - this._builder = - this._getDiffBuilder(this._diff, this._comments, this.prefs); - this._renderDiff(); - }, - - _renderDiff: function() { - this._clearDiffContent(); - this._builder.emitDiff(); - this.async(function() { - this.fire('render', null, {bubbles: false}); - }, 1); + this.$.diffBuilder.render(this._diff, this._comments, this.prefs); }, _clearDiffContent: function() { @@ -508,19 +472,6 @@ this.changeNum, this._diff, this.patchRange); }, - _getDiffBuilder: function(diff, comments, prefs) { - if (this.isImageDiff) { - return new GrDiffBuilderImage(diff, comments, prefs, this.$.diffTable, - this._baseImage, this._revisionImage); - } else if (this.viewMode === DiffViewMode.SIDE_BY_SIDE) { - return new GrDiffBuilderSideBySide(diff, comments, prefs, - this.$.diffTable); - } else if (this.viewMode === DiffViewMode.UNIFIED) { - return new GrDiffBuilderUnified(diff, comments, prefs, - this.$.diffTable); - } - throw Error('Unsupported diff view mode: ' + this.viewMode); - }, _projectConfigChanged: function(projectConfig) { var threadEls = this._getCommentThreads(); diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html index aec32b6e90..613c7fa66b 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html +++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html @@ -226,8 +226,7 @@ limitations under the License. var rendered = function() { // Recognizes that it should be an image diff. assert.isTrue(element.isImageDiff); - assert.instanceOf(element._getDiffBuilder(element._diff, - element._comments, element.prefs), GrDiffBuilderImage); + assert.instanceOf(element.$.diffBuilder._builder, GrDiffBuilderImage); // Left image rendered with the parent commit's version of the file. var leftInmage = element.$.diffTable.querySelector('td.left img'); @@ -397,30 +396,5 @@ limitations under the License. }); }); }); - - suite('renderDiff', function() { - setup(function(done) { - sinon.stub(element, 'fire'); - element._builder = { - emitDiff: sinon.stub(), - }; - element._renderDiff(); - flush(function() { - done(); - }); - }); - - teardown(function() { - element.fire.restore(); - }); - - test('fires render', function() { - assert(element.fire.calledWithExactly( - 'render', null, {bubbles: false})); - }); - test('calls emitDiff on builder', function() { - assert(element._builder.emitDiff.calledOnce); - }); - }); });