Files
gerrit/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.js
Becky Siegel 2c94476fa0 Reload page content when Your -> Changes clicked again
Previously, if a user selected Your -> Changes twice in a row, the
page content did not get updated, even if there were new changes to
fetch.

Since the params object is reset, even if the parameters stay the same,
the dashboard view still observes that params changed. Instead of only
performing the fetch for dashboard changes on component attachment, it
is now done every time params change.

Bug: Issue 4687
Change-Id: Ia101b45e510cf612023952a8c3ebd3e7f4cc28c7
2017-01-12 12:55:10 -08:00

79 lines
1.9 KiB
JavaScript

// 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-dashboard-view',
/**
* Fired when the title of the page should change.
*
* @event title-change
*/
properties: {
account: {
type: Object,
value: function() { return {}; },
},
viewState: Object,
params: {
type: Object,
observer: '_paramsChanged',
},
_results: Array,
_groupTitles: {
type: Array,
value: [
'Outgoing reviews',
'Incoming reviews',
'Recently closed',
],
},
/**
* For showing a "loading..." string during ajax requests.
*/
_loading: {
type: Boolean,
value: true,
},
},
attached: function() {
this.fire('title-change', {title: 'My Reviews'});
},
/**
* Allows a refresh if menu item is selected again.
*/
_paramsChanged: function() {
this._loading = true;
this._getDashboardChanges().then(function(results) {
this._results = results;
this._loading = false;
}.bind(this)).catch(function(err) {
this._loading = false;
console.error(err.message);
}.bind(this));
},
_getDashboardChanges: function() {
return this.$.restAPI.getDashboardChanges();
},
});
})();