summaryrefslogtreecommitdiffstats
path: root/polygerrit-ui/app/elements/settings
diff options
context:
space:
mode:
Diffstat (limited to 'polygerrit-ui/app/elements/settings')
-rw-r--r--polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.html108
-rw-r--r--polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js42
-rw-r--r--polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.html70
3 files changed, 8 insertions, 212 deletions
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.
<link rel="import" href="../../settings/gr-change-table-editor/gr-change-table-editor.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
+<link rel="import" href="../../shared/gr-diff-preferences/gr-diff-preferences.html">
<link rel="import" href="../../shared/gr-page-nav/gr-page-nav.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../shared/gr-select/gr-select.html">
@@ -259,110 +260,9 @@ limitations under the License.
Diff Preferences
</h2>
<fieldset id="diffPreferences">
- <section>
- <span class="title">Context</span>
- <span class="value">
- <gr-select bind-value="{{_diffPrefs.context}}">
- <select>
- <option value="3">3 lines</option>
- <option value="10">10 lines</option>
- <option value="25">25 lines</option>
- <option value="50">50 lines</option>
- <option value="75">75 lines</option>
- <option value="100">100 lines</option>
- <option value="-1">Whole file</option>
- </select>
- </gr-select>
- </span>
- </section>
- <section>
- <span class="title">Fit to screen</span>
- <span class="value">
- <input
- id="diffLineWrapping"
- type="checkbox"
- checked$="[[_diffPrefs.line_wrapping]]"
- on-change="_handleDiffLineWrappingChanged">
- </span>
- </section>
- <section id="columnsPref" hidden$="[[_diffPrefs.line_wrapping]]">
- <span class="title">Diff width</span>
- <span class="value">
- <input
- is="iron-input"
- type="number"
- prevent-invalid-input
- allowed-pattern="[0-9]"
- bind-value="{{_diffPrefs.line_length}}">
- </span>
- </section>
- <section>
- <span class="title">Tab width</span>
- <span class="value">
- <input
- is="iron-input"
- type="number"
- prevent-invalid-input
- allowed-pattern="[0-9]"
- bind-value="{{_diffPrefs.tab_size}}">
- </span>
- </section>
- <section hidden$="[[!_diffPrefs.font_size]]">
- <span class="title">Font size</span>
- <span class="value">
- <input
- is="iron-input"
- type="number"
- prevent-invalid-input
- allowed-pattern="[0-9]"
- bind-value="{{_diffPrefs.font_size}}">
- </span>
- </section>
- <section>
- <span class="title">Show tabs</span>
- <span class="value">
- <input
- id="diffShowTabs"
- type="checkbox"
- checked$="[[_diffPrefs.show_tabs]]"
- on-change="_handleDiffShowTabsChanged">
- </span>
- </section>
- <section>
- <span class="title">Show trailing whitespace</span>
- <span class="value">
- <input
- id="showTrailingWhitespace"
- type="checkbox"
- checked$="[[_diffPrefs.show_whitespace_errors]]"
- on-change="_handleShowTrailingWhitespaceChanged">
- </span>
- </section>
- <section>
- <span class="title">Syntax highlighting</span>
- <span class="value">
- <input
- id="diffSyntaxHighlighting"
- type="checkbox"
- checked$="[[_diffPrefs.syntax_highlighting]]"
- on-change="_handleDiffSyntaxHighlightingChanged">
- </span>
- </section>
- <section>
- <div class="pref">
- <span class="title">Ignore Whitespace</span>
- <span class="value">
- <gr-select bind-value="{{_diffPrefs.ignore_whitespace}}">
- <select>
- <option value="IGNORE_NONE">None</option>
- <option value="IGNORE_TRAILING">Trailing</option>
- <option value="IGNORE_LEADING_AND_TRAILING">Leading & trailing</option>
- <option value="IGNORE_ALL">All</option>
- </select>
- </gr-select>
- </span>
- </div>
- </section>
+ <gr-diff-preferences
+ id="diffPrefs"
+ has-unsaved-changes="{{_diffPrefsChanged}}"></gr-diff-preferences>
<gr-button
id="saveDiffPrefs"
on-tap="_handleSaveDiffPreferences"
diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js
index 0ce8ce0c80..0ace87c3d5 100644
--- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js
+++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.js
@@ -64,8 +64,6 @@
},
_accountNameMutable: Boolean,
_accountInfoChanged: Boolean,
- /** @type {?} */
- _diffPrefs: Object,
_changeTableColumnsNotDisplayed: Array,
/** @type {?} */
_localPrefs: {
@@ -92,10 +90,8 @@
type: Boolean,
value: false,
},
- _diffPrefsChanged: {
- type: Boolean,
- value: false,
- },
+ /** @type {?} */
+ _diffPrefsChanged: Boolean,
/** @type {?} */
_editPrefsChanged: Boolean,
_menuChanged: {
@@ -149,7 +145,6 @@
observers: [
'_handlePrefsChanged(_localPrefs.*)',
- '_handleDiffPrefsChanged(_diffPrefs.*)',
'_handleMenuChanged(_localMenu.splices)',
'_handleChangeTableChanged(_localChangeTableColumns, _showNumber)',
],
@@ -166,6 +161,7 @@
this.$.httpPass.loadData(),
this.$.identities.loadData(),
this.$.editPrefs.loadData(),
+ this.$.diffPrefs.loadData(),
];
promises.push(this.$.restAPI.getPreferences().then(prefs => {
@@ -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);