Files
gerrit/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.js
Logan Hanks 2eaf8555e3 Link "Recently closed" header to full query
This section of the dashboard has always used a query that includes
"-age:4w limit:10", presumably to keep this section short and focused on
recent work.

The fix for issue 6716 makes it so that the limit in the query plays
well with pagination when the user clicks on the section header to page
through the full results of the query. However, it doesn't follow that
the user wants to see only 10 results at a time limited to the past 4
weeks.

Therefore we add a new, optional property to section metadata to specify
a suffix that is applied only when executing the query to populate the
dashboard view. This allows us to leave an unrestricted query that
gr-change-list will use in the section header.

Bug: Issue 6762
Change-Id: I52102113f79d8847de320bbd1b48cc8578f5196b
2017-07-18 15:56:59 +00:00

116 lines
2.8 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';
const DEFAULT_SECTIONS = [
{
name: 'Outgoing reviews',
query: 'is:open owner:self',
},
{
name: 'Incoming reviews',
query: 'is:open ((reviewer:self -owner:self -is:ignored) OR ' +
'assignee:self)',
},
{
name: 'Recently closed',
query: 'is:closed (owner:self OR reviewer:self OR assignee:self)',
suffixForDashboard: '-age:4w limit:10',
},
];
Polymer({
is: 'gr-dashboard-view',
/**
* Fired when the title of the page should change.
*
* @event title-change
*/
properties: {
account: {
type: Object,
value() { return {}; },
},
viewState: Object,
params: {
type: Object,
observer: '_paramsChanged',
},
_results: Array,
sectionMetadata: {
type: Array,
value() { return DEFAULT_SECTIONS; },
},
/**
* For showing a "loading..." string during ajax requests.
*/
_loading: {
type: Boolean,
value: true,
},
},
behaviors: [
Gerrit.RESTClientBehavior,
],
get options() {
return this.listChangesOptionsToHex(
this.ListChangesOption.LABELS,
this.ListChangesOption.DETAILED_ACCOUNTS,
this.ListChangesOption.REVIEWED
);
},
attached() {
this.fire('title-change', {title: 'My Reviews'});
},
/**
* Allows a refresh if menu item is selected again.
*/
_paramsChanged() {
this._loading = true;
this._getChanges().then(results => {
this._results = results;
this._loading = false;
}).catch(err => {
this._loading = false;
console.warn(err.message);
});
},
_getChanges() {
return this.$.restAPI.getChanges(
null,
this.sectionMetadata.map(
section => this._dashboardQueryForSection(section)),
null,
this.options);
},
_dashboardQueryForSection(section) {
if (section.suffixForDashboard) {
return section.query + ' ' + section.suffixForDashboard;
}
return section.query;
},
});
})();