From 7a2280c5dc7042a1a3e4f657d58aa3efc743e22d Mon Sep 17 00:00:00 2001 From: Paladox none Date: Tue, 19 Feb 2019 22:07:54 +0000 Subject: Re use gr-diff-preferences inside gr-settings-view Bug: Issue 8678 Change-Id: Ifd950bd4226407252e86610149dd8c6ba94ab967 --- .../change/gr-change-view/gr-change-view.html | 1 - .../change/gr-change-view/gr-change-view_test.html | 3 +- .../elements/change/gr-file-list/gr-file-list.html | 12 +- .../elements/change/gr-file-list/gr-file-list.js | 10 +- .../gr-diff-preferences-dialog.html | 80 ++++++++++ .../gr-diff-preferences-dialog.js | 66 ++++++++ .../gr-diff-preferences/gr-diff-preferences.html | 173 --------------------- .../gr-diff-preferences/gr-diff-preferences.js | 144 ----------------- .../gr-diff-preferences_test.html | 110 ------------- .../elements/diff/gr-diff-view/gr-diff-view.html | 13 +- .../app/elements/diff/gr-diff-view/gr-diff-view.js | 32 ++-- .../diff/gr-diff-view/gr-diff-view_test.html | 4 +- .../gr-settings-view/gr-settings-view.html | 108 +------------ .../settings/gr-settings-view/gr-settings-view.js | 42 +---- .../gr-settings-view/gr-settings-view_test.html | 70 --------- .../gr-diff-preferences/gr-diff-preferences.html | 163 +++++++++++++++++++ .../gr-diff-preferences/gr-diff-preferences.js | 78 ++++++++++ .../gr-diff-preferences_test.html | 123 +++++++++++++++ polygerrit-ui/app/test/index.html | 2 +- 19 files changed, 554 insertions(+), 680 deletions(-) create mode 100644 polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.html create mode 100644 polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.js delete mode 100644 polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.html delete mode 100644 polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.js delete mode 100644 polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences_test.html create mode 100644 polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences.html create mode 100644 polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences.js create mode 100644 polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences_test.html diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html index 4f5bf94795..456b4a2b3f 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html @@ -24,7 +24,6 @@ limitations under the License. - diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html index f6acef68a1..267e21a3b4 100644 --- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html +++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html @@ -283,7 +283,8 @@ limitations under the License. }); test(', should open diff preferences', () => { - const stub = sandbox.stub(element.$.fileList.$.diffPreferences, 'open'); + const stub = sandbox.stub( + element.$.fileList.$.diffPreferencesDialog, 'open'); MockInteractions.pressAndReleaseKeyOn(element, 188, null, ','); assert.isTrue(stub.called); }); diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.html b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.html index 4852cb393e..84de48f413 100644 --- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.html +++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.html @@ -23,8 +23,9 @@ limitations under the License. - + + @@ -465,10 +466,11 @@ limitations under the License. - + + diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js index b3e4a70aa7..fba7b1be81 100644 --- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js +++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js @@ -125,7 +125,6 @@ }, /** @type {?} */ _userPrefs: Object, - _localPrefs: Object, _showInlineDiffs: Boolean, numFilesShown: { type: Number, @@ -269,7 +268,6 @@ }); })); - this._localPrefs = this.$.storage.getPreferences(); promises.push(this._getDiffPreferences().then(prefs => { this.diffPrefs = prefs; })); @@ -297,7 +295,7 @@ }, openDiffPrefs() { - this.$.diffPreferences.open(); + this.$.diffPreferencesDialog.open(); }, _calculatePatchChange(files) { @@ -1255,5 +1253,11 @@ return 'Mark as reviewed (shortcut: r)'; }, + + _handleReloadingDiffPreference() { + this._getDiffPreferences().then(prefs => { + this.diffPrefs = prefs; + }); + }, }); })(); diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.html b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.html new file mode 100644 index 0000000000..5cff316dda --- /dev/null +++ b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.js b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.js new file mode 100644 index 0000000000..b50ef692ad --- /dev/null +++ b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.js @@ -0,0 +1,66 @@ +/** + * @license + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +(function() { + 'use strict'; + + Polymer({ + is: 'gr-diff-preferences-dialog', + + properties: { + /** @type {?} */ + diffPrefs: Object, + + _diffPrefsChanged: Boolean, + }, + + getFocusStops() { + return { + start: this.$.contextSelect, + end: this.$.saveButton, + }; + }, + + resetFocus() { + this.$.contextSelect.focus(); + }, + + _computeHeaderClass(changed) { + return changed ? 'edited' : ''; + }, + + _handleCancelDiff(e) { + e.stopPropagation(); + this.$.diffPrefsOverlay.close(); + }, + + open() { + this.$.diffPrefsOverlay.open().then(() => { + const focusStops = this.getFocusStops(); + this.$.diffPrefsOverlay.setFocusStops(focusStops); + this.resetFocus(); + }); + }, + + _handleSaveDiffPreferences() { + this.$.diffPreferences.save().then(() => { + this.fire('reload-diff-preference', null, {bubbles: false}); + + this.$.diffPrefsOverlay.close(); + }); + }, + }); +})(); diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.html b/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.html deleted file mode 100644 index a22f689022..0000000000 --- a/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.js b/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.js deleted file mode 100644 index 8fc90b9815..0000000000 --- a/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * @license - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -(function() { - 'use strict'; - - Polymer({ - is: 'gr-diff-preferences', - - properties: { - prefs: { - type: Object, - notify: true, - }, - localPrefs: { - type: Object, - notify: true, - }, - disabled: { - type: Boolean, - value: false, - reflectToAttribute: true, - }, - - /** @type {?} */ - _newPrefs: Object, - _newLocalPrefs: Object, - }, - - observers: [ - '_prefsChanged(prefs.*)', - '_localPrefsChanged(localPrefs.*)', - ], - - getFocusStops() { - return { - start: this.$.contextSelect, - end: this.$.saveButton, - }; - }, - - resetFocus() { - this.$.contextSelect.focus(); - }, - - _prefsChanged(changeRecord) { - const prefs = changeRecord.base; - // NOTE: Object.assign is NOT automatically a deep copy. If prefs adds - // an object as a value, it must be marked enumerable. - this._newPrefs = Object.assign({}, prefs); - this.$.contextSelect.value = prefs.context; - this.$.showTabsInput.checked = prefs.show_tabs; - this.$.showTrailingWhitespaceInput.checked = prefs.show_whitespace_errors; - this.$.lineWrappingInput.checked = prefs.line_wrapping; - this.$.syntaxHighlightInput.checked = prefs.syntax_highlighting; - this.$.automaticReviewInput.checked = !prefs.manual_review; - this.$.ignoreWhitespace.value = prefs.ignore_whitespace; - }, - - _localPrefsChanged(changeRecord) { - const localPrefs = changeRecord.base || {}; - this._newLocalPrefs = Object.assign({}, localPrefs); - }, - - _handleContextSelectChange(e) { - const selectEl = Polymer.dom(e).rootTarget; - this.set('_newPrefs.context', parseInt(selectEl.value, 10)); - }, - - _handleIgnoreWhitespaceChange(e) { - const selectEl = Polymer.dom(e).rootTarget; - this.set('_newPrefs.ignore_whitespace', selectEl.value); - }, - - _handleShowTabsTap(e) { - this.set('_newPrefs.show_tabs', Polymer.dom(e).rootTarget.checked); - }, - - _handleShowTrailingWhitespaceTap(e) { - this.set('_newPrefs.show_whitespace_errors', - Polymer.dom(e).rootTarget.checked); - }, - - _handleSyntaxHighlightTap(e) { - this.set('_newPrefs.syntax_highlighting', - Polymer.dom(e).rootTarget.checked); - }, - - _handlelineWrappingTap(e) { - this.set('_newPrefs.line_wrapping', Polymer.dom(e).rootTarget.checked); - }, - - _handleAutomaticReviewTap(e) { - this.set('_newPrefs.manual_review', !Polymer.dom(e).rootTarget.checked); - }, - - _handleSave(e) { - e.stopPropagation(); - this.prefs = this._newPrefs; - this.localPrefs = this._newLocalPrefs; - const el = Polymer.dom(e).rootTarget; - el.disabled = true; - this.$.storage.savePreferences(this._localPrefs); - this._saveDiffPreferences().then(response => { - el.disabled = false; - if (!response.ok) { return response; } - - this.$.prefsOverlay.close(); - }).catch(err => { - el.disabled = false; - }); - }, - - _handleCancel(e) { - e.stopPropagation(); - this.$.prefsOverlay.close(); - }, - - open() { - this.$.prefsOverlay.open().then(() => { - const focusStops = this.getFocusStops(); - this.$.prefsOverlay.setFocusStops(focusStops); - this.resetFocus(); - }); - }, - - _saveDiffPreferences() { - return this.$.restAPI.saveDiffPreferences(this.prefs); - }, - }); -})(); diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences_test.html b/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences_test.html deleted file mode 100644 index d9e14c0265..0000000000 --- a/polygerrit-ui/app/elements/diff/gr-diff-preferences/gr-diff-preferences_test.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -gr-diff-preferences - - - - - - - - - - - - - diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html index 0866849d37..06658da29f 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html +++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html @@ -34,9 +34,9 @@ limitations under the License. - - + + @@ -338,10 +338,11 @@ limitations under the License. is-blame-loaded="{{_isBlameLoaded}}" on-line-selected="_onLineSelected"> - + + diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js index 095dc722c0..89ad2d2508 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js +++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js @@ -258,7 +258,9 @@ }, _getDiffPreferences() { - return this.$.restAPI.getDiffPreferences(); + return this.$.restAPI.getDiffPreferences().then(prefs => { + this._prefs = prefs; + }); }, _getPreferences() { @@ -457,7 +459,7 @@ this.modifierPressed(e)) { return; } e.preventDefault(); - this.$.diffPreferences.open(); + this.$.diffPreferencesDialog.open(); }, _handleToggleDiffMode(e) { @@ -608,10 +610,7 @@ const promises = []; - this._localPrefs = this.$.storage.getPreferences(); - promises.push(this._getDiffPreferences().then(prefs => { - this._prefs = prefs; - })); + promises.push(this._getDiffPreferences()); promises.push(this._getPreferences().then(prefs => { this._userPrefs = prefs; @@ -837,22 +836,7 @@ _handlePrefsTap(e) { e.preventDefault(); - this.$.diffPreferences.open(); - }, - - _handlePrefsSave(e) { - e.stopPropagation(); - const el = Polymer.dom(e).rootTarget; - el.disabled = true; - this.$.storage.savePreferences(this._localPrefs); - this._saveDiffPreferences().then(response => { - el.disabled = false; - if (!response.ok) { return response; } - - this.$.prefsOverlay.close(); - }).catch(err => { - el.disabled = false; - }); + this.$.diffPreferencesDialog.open(); }, /** @@ -1036,5 +1020,9 @@ (file === this._path || !this._reviewedFiles.has(file))); this._navToFile(this._path, unreviewedFiles, 1); }, + + _handleReloadingDiffPreference() { + this._getDiffPreferences(); + }, }); })(); diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html index 958acdb9a8..354bfef6c9 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html +++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html @@ -172,7 +172,7 @@ limitations under the License. assert.isTrue(element._loading); const showPrefsStub = - sandbox.stub(element.$.diffPreferences.$.prefsOverlay, 'open', + sandbox.stub(element.$.diffPreferencesDialog, 'open', () => Promise.resolve()); MockInteractions.pressAndReleaseKeyOn(element, 188, null, ','); @@ -365,7 +365,7 @@ limitations under the License. test('prefsButton opens gr-diff-preferences', () => { const handlePrefsTapSpy = sandbox.spy(element, '_handlePrefsTap'); - const overlayOpenStub = sandbox.stub(element.$.diffPreferences, + const overlayOpenStub = sandbox.stub(element.$.diffPreferencesDialog, 'open'); const prefsButton = Polymer.dom(element.root).querySelector('.prefsButton'); diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html index 799cf5943b..cb536c17c3 100644 --- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html +++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html @@ -27,6 +27,7 @@ limitations under the License. + @@ -259,110 +260,9 @@ limitations under the License. Diff Preferences
-
- Context - - - - - -
-
- Fit to screen - - - -
-
- Diff width - - - -
-
- Tab width - - - -
-
- Font size - - - -
-
- Show tabs - - - -
-
- Show trailing whitespace - - - -
-
- Syntax highlighting - - - -
-
-
- Ignore Whitespace - - - - - -
-
+ { @@ -176,10 +172,6 @@ this._cloneChangeTableColumns(); })); - promises.push(this.$.restAPI.getDiffPreferences().then(prefs => { - this._diffPrefs = prefs; - })); - promises.push(this.$.restAPI.getConfig().then(config => { this._serverConfig = config; const configPromises = []; @@ -277,11 +269,6 @@ this._prefsChanged = true; }, - _handleDiffPrefsChanged() { - if (this._isLoading()) { return; } - this._diffPrefsChanged = true; - }, - _handleShowSizeBarsInFileListChanged() { this.set('_localPrefs.size_bar_in_change_table', this.$.showSizeBarsInFileList.checked); @@ -318,24 +305,6 @@ }); }, - _handleDiffLineWrappingChanged() { - this.set('_diffPrefs.line_wrapping', this.$.diffLineWrapping.checked); - }, - - _handleDiffShowTabsChanged() { - this.set('_diffPrefs.show_tabs', this.$.diffShowTabs.checked); - }, - - _handleShowTrailingWhitespaceChanged() { - this.set('_diffPrefs.show_whitespace_errors', - this.$.showTrailingWhitespace.checked); - }, - - _handleDiffSyntaxHighlightingChanged() { - this.set('_diffPrefs.syntax_highlighting', - this.$.diffSyntaxHighlighting.checked); - }, - _handleSaveChangeTable() { this.set('prefs.change_table', this._localChangeTableColumns); this.set('prefs.legacycid_in_change_table', this._showNumber); @@ -346,10 +315,7 @@ }, _handleSaveDiffPreferences() { - return this.$.restAPI.saveDiffPreferences(this._diffPrefs) - .then(() => { - this._diffPrefsChanged = false; - }); + this.$.diffPrefs.save(); }, _handleSaveEditPreferences() { diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html index f47816f4b1..2f0cb7c0db 100644 --- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html +++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html @@ -43,7 +43,6 @@ limitations under the License. let element; let account; let preferences; - let diffPreferences; let config; let sandbox; @@ -96,31 +95,12 @@ limitations under the License. ], change_table: [], }; - diffPreferences = { - context: 10, - tab_size: 8, - font_size: 12, - line_length: 100, - cursor_blink_rate: 0, - line_wrapping: false, - intraline_difference: true, - show_line_endings: true, - show_tabs: true, - show_whitespace_errors: true, - syntax_highlighting: true, - auto_hide_diff_table_header: true, - theme: 'DEFAULT', - ignore_whitespace: 'IGNORE_NONE', - }; config = {auth: {editable_account_fields: []}}; stub('gr-rest-api-interface', { getLoggedIn() { return Promise.resolve(true); }, getAccount() { return Promise.resolve(account); }, getPreferences() { return Promise.resolve(preferences); }, - getDiffPreferences() { - return Promise.resolve(diffPreferences); - }, getWatchedProjects() { return Promise.resolve([]); }, @@ -261,56 +241,6 @@ limitations under the License. }); }); - test('diff preferences', done => { - // Rendered with the expected preferences selected. - assert.equal(valueOf('Context', 'diffPreferences') - .firstElementChild.bindValue, diffPreferences.context); - assert.equal(valueOf('Diff width', 'diffPreferences') - .firstElementChild.bindValue, diffPreferences.line_length); - assert.equal(valueOf('Tab width', 'diffPreferences') - .firstElementChild.bindValue, diffPreferences.tab_size); - assert.equal(valueOf('Font size', 'diffPreferences') - .firstElementChild.bindValue, diffPreferences.font_size); - assert.equal(valueOf('Show tabs', 'diffPreferences') - .firstElementChild.checked, diffPreferences.show_tabs); - assert.equal(valueOf('Show trailing whitespace', 'diffPreferences') - .firstElementChild.checked, diffPreferences.show_whitespace_errors); - assert.equal(valueOf('Fit to screen', 'diffPreferences') - .firstElementChild.checked, diffPreferences.line_wrapping); - - assert.isFalse(element._diffPrefsChanged); - - const showTabsCheckbox = valueOf('Show tabs', 'diffPreferences') - .firstElementChild; - showTabsCheckbox.checked = false; - element._handleDiffShowTabsChanged(); - - assert.isTrue(element._diffPrefsChanged); - - stub('gr-rest-api-interface', { - saveDiffPreferences(prefs) { - assert.equal(prefs.show_tabs, false); - return Promise.resolve(); - }, - }); - - // Save the change. - element._handleSaveDiffPreferences().then(() => { - assert.isFalse(element._diffPrefsChanged); - done(); - }); - }); - - test('columns input is hidden with fit to scsreen is selected', () => { - assert.isFalse(element.$.columnsPref.hidden); - - MockInteractions.tap(element.$.diffLineWrapping); - assert.isTrue(element.$.columnsPref.hidden); - - MockInteractions.tap(element.$.diffLineWrapping); - assert.isFalse(element.$.columnsPref.hidden); - }); - test('menu', done => { assert.isFalse(element._menuChanged); assert.isFalse(element._prefsChanged); diff --git a/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences.html b/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences.html new file mode 100644 index 0000000000..d7bc704cce --- /dev/null +++ b/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + diff --git a/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences.js b/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences.js new file mode 100644 index 0000000000..e2278c2680 --- /dev/null +++ b/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences.js @@ -0,0 +1,78 @@ +/** + * @license + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +(function() { + 'use strict'; + + Polymer({ + is: 'gr-diff-preferences', + + properties: { + hasUnsavedChanges: { + type: Boolean, + notify: true, + value: false, + }, + + /** @type {?} */ + diffPrefs: Object, + }, + + loadData() { + return this.$.restAPI.getDiffPreferences().then(prefs => { + this.diffPrefs = prefs; + }); + }, + + _handleDiffPrefsChanged() { + this.hasUnsavedChanges = true; + }, + + _handleLineWrappingTap() { + this.set('diffPrefs.line_wrapping', this.$.lineWrappingInput.checked); + this._handleDiffPrefsChanged(); + }, + + _handleShowTabsTap() { + this.set('diffPrefs.show_tabs', this.$.showTabsInput.checked); + this._handleDiffPrefsChanged(); + }, + + _handleShowTrailingWhitespaceTap() { + this.set('diffPrefs.show_whitespace_errors', + this.$.showTrailingWhitespaceInput.checked); + this._handleDiffPrefsChanged(); + }, + + _handleSyntaxHighlightTap() { + this.set('diffPrefs.syntax_highlighting', + this.$.syntaxHighlightInput.checked); + this._handleDiffPrefsChanged(); + }, + + _handleAutomaticReviewTap() { + this.set('diffPrefs.manual_review', + this.$.automaticReviewInput.checked); + this._handleDiffPrefsChanged(); + }, + + save() { + return this.$.restAPI.saveDiffPreferences(this.diffPrefs).then(res => { + this.hasUnsavedChanges = false; + }); + }, + }); +})(); diff --git a/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences_test.html b/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences_test.html new file mode 100644 index 0000000000..511737fcd8 --- /dev/null +++ b/polygerrit-ui/app/elements/shared/gr-diff-preferences/gr-diff-preferences_test.html @@ -0,0 +1,123 @@ + + + + +gr-diff-preferences + + + + + + + + + + + + + diff --git a/polygerrit-ui/app/test/index.html b/polygerrit-ui/app/test/index.html index 10d3e0de57..94a48d31a4 100644 --- a/polygerrit-ui/app/test/index.html +++ b/polygerrit-ui/app/test/index.html @@ -110,7 +110,6 @@ limitations under the License. 'diff/gr-diff-highlight/gr-annotation_test.html', 'diff/gr-diff-highlight/gr-diff-highlight_test.html', 'diff/gr-diff-mode-selector/gr-diff-mode-selector_test.html', - 'diff/gr-diff-preferences/gr-diff-preferences_test.html', 'diff/gr-diff-processor/gr-diff-processor_test.html', 'diff/gr-diff-selection/gr-diff-selection_test.html', 'diff/gr-diff-view/gr-diff-view_test.html', @@ -162,6 +161,7 @@ limitations under the License. 'shared/gr-cursor-manager/gr-cursor-manager_test.html', 'shared/gr-date-formatter/gr-date-formatter_test.html', 'shared/gr-dialog/gr-dialog_test.html', + 'shared/gr-diff-preferences/gr-diff-preferences_test.html', 'shared/gr-download-commands/gr-download-commands_test.html', 'shared/gr-dropdown-list/gr-dropdown-list_test.html', 'shared/gr-editable-content/gr-editable-content_test.html', -- cgit v1.2.3