summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Rohlfs <brohlfs@google.com>2023-07-27 15:05:49 +0200
committerBen Rohlfs <brohlfs@google.com>2023-07-27 13:20:13 +0000
commit44e004b46641b4e092a3a6ed99c6a38619c39780 (patch)
tree0c26128da0ec4fe76cd4c11576d216cec18714e4
parent1c3548dea28a12debcd1e921331556fcc3e267fb (diff)
Fix nav links in <gr-list-view> with regards to base path
The `path` property already includes the base path, so don't add it twice to navigation URLs. Release-Notes: skip Bug: Issue 293432626 Change-Id: I2661bc7f35c023be3063c8a03b5f08902ac13a59 (cherry picked from commit cf5690641715a3425872d7e37feafa3c8dfcbbbf)
-rw-r--r--polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts10
-rw-r--r--polygerrit-ui/app/elements/documentation/gr-documentation-search/gr-documentation-search.ts7
-rw-r--r--polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view.ts4
-rw-r--r--polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.ts20
-rw-r--r--polygerrit-ui/app/models/views/documentation.ts5
5 files changed, 32 insertions, 14 deletions
diff --git a/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts b/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts
index cb17de717a..852f907bc6 100644
--- a/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts
+++ b/polygerrit-ui/app/elements/admin/gr-plugin-list/gr-plugin-list.ts
@@ -13,7 +13,11 @@ import {tableStyles} from '../../../styles/gr-table-styles';
import {sharedStyles} from '../../../styles/shared-styles';
import {LitElement, PropertyValues, css, html} from 'lit';
import {customElement, property, state} from 'lit/decorators.js';
-import {AdminViewState} from '../../../models/views/admin';
+import {
+ AdminChildView,
+ AdminViewState,
+ createAdminUrl,
+} from '../../../models/views/admin';
// Exported for tests
export interface PluginInfoWithName extends PluginInfo {
@@ -22,8 +26,6 @@ export interface PluginInfoWithName extends PluginInfo {
@customElement('gr-plugin-list')
export class GrPluginList extends LitElement {
- readonly path = '/admin/plugins';
-
/**
* URL params passed from the router.
*/
@@ -70,7 +72,7 @@ export class GrPluginList extends LitElement {
.items=${this.plugins}
.loading=${this.loading}
.offset=${this.offset}
- .path=${this.path}
+ .path=${createAdminUrl({adminView: AdminChildView.PLUGINS})}
>
<table id="list" class="genericList">
<tbody>
diff --git a/polygerrit-ui/app/elements/documentation/gr-documentation-search/gr-documentation-search.ts b/polygerrit-ui/app/elements/documentation/gr-documentation-search/gr-documentation-search.ts
index a8bc84c1e1..87fe27f372 100644
--- a/polygerrit-ui/app/elements/documentation/gr-documentation-search/gr-documentation-search.ts
+++ b/polygerrit-ui/app/elements/documentation/gr-documentation-search/gr-documentation-search.ts
@@ -14,7 +14,10 @@ import {LitElement, html} from 'lit';
import {customElement, state} from 'lit/decorators.js';
import {resolve} from '../../../models/dependency';
import {subscribe} from '../../lit/subscription-controller';
-import {documentationViewModelToken} from '../../../models/views/documentation';
+import {
+ createDocumentationUrl,
+ documentationViewModelToken,
+} from '../../../models/views/documentation';
@customElement('gr-documentation-search')
export class GrDocumentationSearch extends LitElement {
@@ -57,7 +60,7 @@ export class GrDocumentationSearch extends LitElement {
.filter=${this.filter}
.offset=${0}
.loading=${this.loading}
- .path=${'/Documentation'}
+ .path=${createDocumentationUrl()}
>
<table id="list" class="genericList">
<tbody>
diff --git a/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view.ts b/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view.ts
index ea45142ee4..14b5d14b89 100644
--- a/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view.ts
+++ b/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view.ts
@@ -47,6 +47,7 @@ export class GrListView extends LitElement {
@property({type: Boolean})
loading?: boolean;
+ /** Must include the base path. */
@property({type: String})
path?: string;
@@ -191,7 +192,8 @@ export class GrListView extends LitElement {
// Offset could be a string when passed from the router.
const offset = +(this.offset || 0);
const newOffset = Math.max(0, offset + this.itemsPerPage * direction);
- let href = getBaseUrl() + (this.path ?? '');
+ // Note that `this.path` already includes the base URL, if set and non-empty;
+ let href = this.path || getBaseUrl();
if (this.filter) {
href += '/q/filter:' + encodeURL(this.filter);
}
diff --git a/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.ts b/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.ts
index 38f4f17565..5b1e162cce 100644
--- a/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-list-view/gr-list-view_test.ts
@@ -61,23 +61,29 @@ suite('gr-list-view tests', () => {
element.offset = 25;
element.itemsPerPage = 25;
element.filter = 'test';
- element.path = '/admin/projects';
+ element.path = '/base/admin/projects';
- stubBaseUrl('');
+ stubBaseUrl('/base');
- assert.equal(element.computeNavLink(1), '/admin/projects/q/filter:test,50');
+ assert.equal(
+ element.computeNavLink(1),
+ '/base/admin/projects/q/filter:test,50'
+ );
- assert.equal(element.computeNavLink(-1), '/admin/projects/q/filter:test');
+ assert.equal(
+ element.computeNavLink(-1),
+ '/base/admin/projects/q/filter:test'
+ );
element.filter = undefined;
- assert.equal(element.computeNavLink(1), '/admin/projects,50');
+ assert.equal(element.computeNavLink(1), '/base/admin/projects,50');
- assert.equal(element.computeNavLink(-1), '/admin/projects');
+ assert.equal(element.computeNavLink(-1), '/base/admin/projects');
element.filter = 'plugins/';
assert.equal(
element.computeNavLink(1),
- '/admin/projects/q/filter:plugins/,50'
+ '/base/admin/projects/q/filter:plugins/,50'
);
});
diff --git a/polygerrit-ui/app/models/views/documentation.ts b/polygerrit-ui/app/models/views/documentation.ts
index 67896958eb..abb0f03069 100644
--- a/polygerrit-ui/app/models/views/documentation.ts
+++ b/polygerrit-ui/app/models/views/documentation.ts
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: Apache-2.0
*/
import {GerritView} from '../../services/router/router-model';
+import {getBaseUrl} from '../../utils/url-util';
import {define} from '../dependency';
import {Model} from '../model';
import {ViewState} from './base';
@@ -13,6 +14,10 @@ export interface DocumentationViewState extends ViewState {
filter: string;
}
+export function createDocumentationUrl() {
+ return `${getBaseUrl()}/Documentation`;
+}
+
export const documentationViewModelToken = define<DocumentationViewModel>(
'documentation-view-model'
);