From f349b5bda7db0ebf5b9bc955b352e42f0d371b2f Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Tue, 7 May 2024 16:41:52 +0200 Subject: [PATCH 01/10] Bugfix: Examine Management Dashboard Status+Modals --- .../src/external/backend-api/src/models.ts | 17 ++-- .../src/external/backend-api/src/services.ts | 18 ++--- .../src/packages/core/modal/token/index.ts | 1 - .../examine-management-dashboard/index.ts | 1 + .../examine-management-dashboard/manifests.ts | 5 ++ .../examine-fields-settings-modal.element.ts | 73 +++++++++++++++++ .../examine-fields-settings-modal.token.ts | 6 +- .../modal/fields-settings/index.ts | 2 + .../examine-fields-viewer-modal.element.ts} | 40 +++++---- .../examine-fields-viewer-modal.token.ts | 19 +++++ .../modal/fields-viewer/index.ts | 2 + .../modal/index.ts | 2 + .../modal/manifests.ts | 18 +++++ .../fields-settings-modal.element.ts | 81 ------------------- .../views/section-view-examine-indexers.ts | 44 +++++----- .../views/section-view-examine-overview.ts | 24 +++--- .../views/section-view-examine-searchers.ts | 58 ++++++++++--- .../src/packages/search/manifests.ts | 10 +-- 18 files changed, 253 insertions(+), 168 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts rename src/Umbraco.Web.UI.Client/src/packages/{core/modal/token => search/examine-management-dashboard/modal/fields-settings}/examine-fields-settings-modal.token.ts (73%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/index.ts rename src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/{views/modal-views/fields-viewer.element.ts => modal/fields-viewer/examine-fields-viewer-modal.element.ts} (60%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/examine-fields-viewer-modal.token.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/manifests.ts delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/modal-views/fields-settings-modal.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models.ts index 9b65a819dc..da4e84c5d8 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/models.ts @@ -979,6 +979,11 @@ export enum HealthStatusModel { REBUILDING = 'Rebuilding' } +export type HealthStatusResponseModel = { + status: HealthStatusModel +message?: string | null + }; + export type HelpPageResponseModel = { name?: string | null description?: string | null @@ -993,7 +998,7 @@ parent?: ReferenceByIdModel | null export type IndexResponseModel = { name: string -healthStatus: HealthStatusModel +healthStatus: HealthStatusResponseModel canRebuild: boolean searcherName: string documentCount: number @@ -5236,15 +5241,15 @@ PostWebhook: { GetWebhookById: { id: string + }; +DeleteWebhookById: { + id: string + }; PutWebhookById: { id: string requestBody?: UpdateWebhookRequestModel - }; -DeleteWebhookById: { - id: string - }; GetWebhookEvents: { skip?: number @@ -5259,8 +5264,8 @@ take?: number ,GetWebhook: PagedWebhookResponseModel ,PostWebhook: string ,GetWebhookById: WebhookResponseModel - ,PutWebhookById: string ,DeleteWebhookById: string + ,PutWebhookById: string ,GetWebhookEvents: PagedWebhookEventModel } diff --git a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services.ts b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services.ts index 503eeca574..84d88c42c7 100644 --- a/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services.ts +++ b/src/Umbraco.Web.UI.Client/src/external/backend-api/src/services.ts @@ -9022,20 +9022,17 @@ take * @returns string Success * @throws ApiError */ - public static putWebhookById(data: WebhookData['payloads']['PutWebhookById']): CancelablePromise { + public static deleteWebhookById(data: WebhookData['payloads']['DeleteWebhookById']): CancelablePromise { const { - id, -requestBody + id } = data; return __request(OpenAPI, { - method: 'PUT', + method: 'DELETE', url: '/umbraco/management/api/v1/webhook/{id}', path: { id }, - body: requestBody, - mediaType: 'application/json', responseHeader: 'Umb-Notifications', errors: { 400: `Bad Request`, @@ -9050,17 +9047,20 @@ requestBody * @returns string Success * @throws ApiError */ - public static deleteWebhookById(data: WebhookData['payloads']['DeleteWebhookById']): CancelablePromise { + public static putWebhookById(data: WebhookData['payloads']['PutWebhookById']): CancelablePromise { const { - id + id, +requestBody } = data; return __request(OpenAPI, { - method: 'DELETE', + method: 'PUT', url: '/umbraco/management/api/v1/webhook/{id}', path: { id }, + body: requestBody, + mediaType: 'application/json', responseHeader: 'Umb-Notifications', errors: { 400: `Bad Request`, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts index b6c574f8f0..4da1b3c794 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts @@ -4,7 +4,6 @@ export * from './confirm-modal.token.js'; export * from './debug-modal.token.js'; export * from './embedded-media-modal.token.js'; export * from './entity-user-permission-settings-modal.token.js'; -export * from './examine-fields-settings-modal.token.js'; export * from './icon-picker-modal.token.js'; export * from './item-picker-modal.token.js'; export * from './link-picker-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/index.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/index.ts new file mode 100644 index 0000000000..28d9f38fba --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/index.ts @@ -0,0 +1 @@ +export * from './modal/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/manifests.ts new file mode 100644 index 0000000000..bf0b12484e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/manifests.ts @@ -0,0 +1,5 @@ +import { manifests as modalManifests } from './modal/manifests.js'; + +import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifests: Array = [...modalManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts new file mode 100644 index 0000000000..485891ac1b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts @@ -0,0 +1,73 @@ +import type { + UmbExamineFieldsSettingsModalData, + UmbExamineFieldsSettingsModalValue, + FieldSettingsType, +} from './examine-fields-settings-modal.token.js'; +import { html, css, customElement } from '@umbraco-cms/backoffice/external/lit'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; + +@customElement('umb-examine-fields-settings-modal') +export class UmbExamineFieldsSettingsModalElement extends UmbModalBaseElement< + UmbExamineFieldsSettingsModalData, + UmbExamineFieldsSettingsModalValue +> { + render() { + return html` + ${this.#renderFields()} +
+ Close +
+
`; + } + + #setExposed(fieldSetting: FieldSettingsType) { + const newField: FieldSettingsType = { ...fieldSetting, exposed: !fieldSetting.exposed }; + + const updatedFields = + this.modalContext?.getValue().fields.map((field) => { + if (field.name === fieldSetting.name) return newField; + else return field; + }) ?? []; + + this.modalContext?.updateValue({ fields: updatedFields }); + } + + #renderFields() { + if (!this.value.fields.length) return; + return html` + ${Object.values(this.value.fields).map((field) => { + return html` +
`; + })} +
`; + } + + static styles = [ + UmbTextStyles, + css` + :host { + display: relative; + } + + uui-scroll-container { + overflow-y: scroll; + max-height: 100%; + min-height: 0; + flex: 1; + } + `, + ]; +} + +export default UmbExamineFieldsSettingsModalElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-examine-fields-settings-modal': UmbExamineFieldsSettingsModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/examine-fields-settings-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.token.ts similarity index 73% rename from src/Umbraco.Web.UI.Client/src/packages/core/modal/token/examine-fields-settings-modal.token.ts rename to src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.token.ts index ccf52d6a9d..8dedcff245 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/examine-fields-settings-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.token.ts @@ -1,8 +1,8 @@ -import { UmbModalToken } from './modal-token.js'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export type UmbExamineFieldsSettingsModalData = never; -type FieldSettingsType = { +export type FieldSettingsType = { name: string; exposed: boolean; }; @@ -14,7 +14,7 @@ export type UmbExamineFieldsSettingsModalValue = { export const UMB_EXAMINE_FIELDS_SETTINGS_MODAL = new UmbModalToken< UmbExamineFieldsSettingsModalData, UmbExamineFieldsSettingsModalValue ->('Umb.Modal.ExamineFieldsSettings', { +>('Umb.Modal.Examine.FieldsSettings', { modal: { type: 'sidebar', size: 'small', diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/index.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/index.ts new file mode 100644 index 0000000000..6ca0fb4eb2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/index.ts @@ -0,0 +1,2 @@ +export * from './examine-fields-settings-modal.element.js'; +export * from './examine-fields-settings-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/modal-views/fields-viewer.element.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/examine-fields-viewer-modal.element.ts similarity index 60% rename from src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/modal-views/fields-viewer.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/examine-fields-viewer-modal.element.ts index 66fa6a5d0f..af597bf466 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/modal-views/fields-viewer.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/examine-fields-viewer-modal.element.ts @@ -1,11 +1,15 @@ +import type { + UmbExamineFieldsViewerModalData, + UmbExamineFieldsViewerModalValue, +} from './examine-fields-viewer-modal.token.js'; import { html, css, nothing, customElement } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; -import type { SearchResultResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; -@customElement('umb-modal-element-fields-viewer') -export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement< - SearchResultResponseModel & { name: string } +@customElement('umb-examine-fields-viewer-modal') +export class UmbExamineFieldsViewerModalElement extends UmbModalBaseElement< + UmbExamineFieldsViewerModalData, + UmbExamineFieldsViewerModalValue > { private _handleClose() { this.modalContext?.reject(); @@ -15,7 +19,7 @@ export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement< if (!this.data) return nothing; return html` - + @@ -23,7 +27,7 @@ export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement< Field Value - ${Object.values(this.data.fields ?? []).map((cell) => { + ${Object.values(this.data.searchResult.fields ?? []).map((cell) => { return html` ${cell.name} ${cell.values?.join(', ')} @@ -32,10 +36,13 @@ export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement< -
- Close +
+
- + `; } @@ -45,11 +52,6 @@ export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement< :host { display: relative; } - uui-dialog-layout { - display: flex; - flex-direction: column; - height: 100%; - } span { display: block; @@ -57,22 +59,18 @@ export class UmbModalElementFieldsViewerElement extends UmbModalBaseElement< } uui-scroll-container { - line-height: 0; overflow-y: scroll; max-height: 100%; min-height: 0; } - div { - margin-top: var(--uui-size-space-5); - display: flex; - flex-direction: row-reverse; - } `, ]; } +export default UmbExamineFieldsViewerModalElement; + declare global { interface HTMLElementTagNameMap { - 'umb-modal-element-fields-viewer': UmbModalElementFieldsViewerElement; + 'umb-examine-fields-viewer-modal': UmbExamineFieldsViewerModalElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/examine-fields-viewer-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/examine-fields-viewer-modal.token.ts new file mode 100644 index 0000000000..c0bea59bfe --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/examine-fields-viewer-modal.token.ts @@ -0,0 +1,19 @@ +import type { SearchResultResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; + +export type UmbExamineFieldsViewerModalData = { + name: string; + searchResult: SearchResultResponseModel; +}; + +export type UmbExamineFieldsViewerModalValue = never; + +export const UMB_EXAMINE_FIELDS_VIEWER_MODAL = new UmbModalToken< + UmbExamineFieldsViewerModalData, + UmbExamineFieldsViewerModalValue +>('Umb.Modal.Examine.FieldsViewer', { + modal: { + type: 'sidebar', + size: 'small', + }, +}); diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/index.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/index.ts new file mode 100644 index 0000000000..de13abcf42 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-viewer/index.ts @@ -0,0 +1,2 @@ +export * from './examine-fields-viewer-modal.element.js'; +export * from './examine-fields-viewer-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/index.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/index.ts new file mode 100644 index 0000000000..6ade5af6a6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/index.ts @@ -0,0 +1,2 @@ +export * from './fields-settings/index.js'; +export * from './fields-viewer/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/manifests.ts new file mode 100644 index 0000000000..42a6b8aa5c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/manifests.ts @@ -0,0 +1,18 @@ +import type { ManifestModal, ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; + +const modals: Array = [ + { + type: 'modal', + alias: 'Umb.Modal.Examine.FieldsSettings', + name: 'Examine Field Settings Modal', + js: () => import('./fields-settings/examine-fields-settings-modal.element.js'), + }, + { + type: 'modal', + alias: 'Umb.Modal.Examine.FieldsViewer', + name: 'Examine Field Viewer Modal', + js: () => import('./fields-viewer/examine-fields-viewer-modal.element.js'), + }, +]; + +export const manifests: Array = [...modals]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/modal-views/fields-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/modal-views/fields-settings-modal.element.ts deleted file mode 100644 index 0e9570875d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/modal-views/fields-settings-modal.element.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { html, css, customElement } from '@umbraco-cms/backoffice/external/lit'; -import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -import type { - UmbExamineFieldsSettingsModalValue, - UmbExamineFieldsSettingsModalData} from '@umbraco-cms/backoffice/modal'; -import { - UmbModalBaseElement, -} from '@umbraco-cms/backoffice/modal'; - -@customElement('umb-examine-fields-settings-modal') -export default class UmbExamineFieldsSettingsModalElement extends UmbModalBaseElement< - UmbExamineFieldsSettingsModalData, - UmbExamineFieldsSettingsModalValue -> { - render() { - if (this.value.fields) { - return html` - - - - ${Object.values(this.value.fields).map((field, index) => { - return html` -
`; - })} -
-
-
- Close -
-
- `; - } else { - return ''; - } - } - - static styles = [ - UmbTextStyles, - css` - :host { - display: relative; - } - - uui-dialog-layout { - display: flex; - flex-direction: column; - height: 100%; - background-color: var(--uui-color-surface); - box-shadow: var(--uui-shadow-depth-1, 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)); - border-radius: var(--uui-border-radius); - padding: var(--uui-size-space-5); - box-sizing: border-box; - } - - uui-scroll-container { - overflow-y: scroll; - max-height: 100%; - min-height: 0; - flex: 1; - } - - div { - margin-top: var(--uui-size-space-5); - display: flex; - flex-direction: row-reverse; - } - `, - ]; -} - -declare global { - interface HTMLElementTagNameMap { - 'umb-examine-fields-settings-modal': UmbExamineFieldsSettingsModalElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts index 9d86f91654..429f2dd5f5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts @@ -1,7 +1,7 @@ import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; import { css, html, nothing, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import { umbConfirmModal } from '@umbraco-cms/backoffice/modal'; -import type { IndexResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; +import type { HealthStatusResponseModel, IndexResponseModel } from '@umbraco-cms/backoffice/external/backend-api'; import { HealthStatusModel, IndexerService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -36,7 +36,7 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { this._indexData = data; // TODO: Add continuous polling to update the status - if (this._indexData?.healthStatus === HealthStatusModel.REBUILDING) { + if (this._indexData?.healthStatus.status === HealthStatusModel.REBUILDING) { this._buttonState = 'waiting'; } @@ -73,6 +73,20 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { await this._getIndexData(); } + #renderHealthStatus(healthStatus: HealthStatusResponseModel) { + const msg = healthStatus.message ? healthStatus.message : healthStatus.status; + switch (healthStatus.status) { + case HealthStatusModel.HEALTHY: + return html`${msg}`; + case HealthStatusModel.UNHEALTHY: + return html`${msg}`; + case HealthStatusModel.REBUILDING: + return html`${msg}`; + default: + return; + } + } + render() { if (!this._indexData || this._loading) return html` `; @@ -82,24 +96,14 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { Health Status
The health status of the ${this.indexName} and if it can be read

-
- - ${ - this._indexData.healthStatus === HealthStatusModel.UNHEALTHY - ? html`` - : html`` - } - - - ${this._indexData.healthStatus} -
+
${this.#renderHealthStatus(this._indexData.healthStatus)}
${this.renderIndexSearch()} ${this.renderPropertyList()} ${this.renderTools()} `; } private renderIndexSearch() { - if (!this._indexData || this._indexData.healthStatus !== HealthStatusModel.HEALTHY) return nothing; + if (!this._indexData || this._indexData.healthStatus.status !== HealthStatusModel.HEALTHY) return nothing; return html``; } @@ -147,6 +151,11 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { static styles = [ UmbTextStyles, css` + #health-status { + display: flex; + gap: var(--uui-size-6); + } + :host { display: block; } @@ -190,13 +199,6 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { padding-right: var(--uui-size-space-5); } - .positive { - color: var(--uui-color-positive); - } - .danger { - color: var(--uui-color-danger); - } - button { background: none; border: none; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts index c14200b221..a118f9afea 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts @@ -40,6 +40,19 @@ export class UmbDashboardExamineOverviewElement extends UmbLitElement { this._loadingSearchers = false; } + #renderStatus(status: HealthStatusModel) { + switch (status) { + case HealthStatusModel.HEALTHY: + return html``; + case HealthStatusModel.UNHEALTHY: + return html``; + case HealthStatusModel.REBUILDING: + return html``; + default: + return; + } + } + render() { return html` @@ -66,16 +79,7 @@ export class UmbDashboardExamineOverviewElement extends UmbLitElement { ${this._indexers.map((index) => { return html` - - - ${ - index.healthStatus === HealthStatusModel.UNHEALTHY - ? html`` - : html`` - } - - - + ${this.#renderStatus(index.healthStatus.status)} ${index.name} diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts index a37110ec08..9f02b931ea 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts @@ -1,14 +1,16 @@ +import { UMB_EXAMINE_FIELDS_SETTINGS_MODAL, UMB_EXAMINE_FIELDS_VIEWER_MODAL } from '../modal/index.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, nothing, customElement, state, query, property } from '@umbraco-cms/backoffice/external/lit'; -import { UMB_MODAL_MANAGER_CONTEXT, UMB_EXAMINE_FIELDS_SETTINGS_MODAL } from '@umbraco-cms/backoffice/modal'; +import { + UMB_MODAL_MANAGER_CONTEXT, + UMB_WORKSPACE_MODAL, + UmbModalRouteRegistrationController, +} from '@umbraco-cms/backoffice/modal'; import type { SearchResultResponseModel, FieldPresentationModel } from '@umbraco-cms/backoffice/external/backend-api'; import { SearcherService } from '@umbraco-cms/backoffice/external/backend-api'; import { UmbLitElement, umbFocus } from '@umbraco-cms/backoffice/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; -import './modal-views/fields-viewer.element.js'; -import './modal-views/fields-settings-modal.element.js'; - interface ExposedSearchResultField { name: string; exposed: boolean; @@ -36,10 +38,26 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { alert('TODO: Open workspace for ' + this.searcherName); } + #entityType = ''; + + @state() + private _workspacePath = ''; + private _onKeyPress(e: KeyboardEvent) { e.key == 'Enter' ? this._onSearch() : undefined; } + constructor() { + super(); + new UmbModalRouteRegistrationController(this, UMB_WORKSPACE_MODAL) + .onSetup(() => { + return { data: { entityType: this.#entityType, preset: {} } }; + }) + .observeRouteBuilder((routeBuilder) => { + this._workspacePath = routeBuilder({}); + }); + } + private async _onSearch() { if (!this._searchInput.value.length) return; this._searchLoading = true; @@ -86,20 +104,24 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { const modalContext = modalManager.open(this, UMB_EXAMINE_FIELDS_SETTINGS_MODAL, { value: { fields: this._exposedFields ?? [] }, }); - modalContext?.onSubmit().then((value) => { - this._exposedFields = value.fields; - }); + await modalContext.onSubmit().catch(() => undefined); + + const value = modalContext.getValue(); + + this._exposedFields = value?.fields; } async #onFieldViewClick(rowData: SearchResultResponseModel) { const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT); - modalManager.open(this, 'umb-modal-element-fields-viewer', { + + const modalContext = modalManager.open(this, UMB_EXAMINE_FIELDS_VIEWER_MODAL, { modal: { type: 'sidebar', size: 'medium', }, - data: { ...rowData, name: this.getSearchResultNodeName(rowData) }, + data: { searchResult: rowData, name: this.getSearchResultNodeName(rowData) }, }); + await modalContext.onSubmit().catch(() => undefined); } render() { @@ -128,6 +150,15 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { return nodeNameField?.values?.join(', ') ?? ''; } + #getEntityTypeFromIndexType(indexType: string) { + switch (indexType) { + case 'content': + return 'document'; + default: + return indexType; + } + } + private renderSearchResults() { if (this._searchLoading) return html``; if (!this._searchResults) return nothing; @@ -145,11 +176,18 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { ${this.renderHeadCells()} ${this._searchResults?.map((rowData) => { + const indexType = rowData.fields?.find((field) => field.name === '__IndexType')?.values?.join(', ') ?? ''; + this.#entityType = this.#getEntityTypeFromIndexType(indexType); + const unique = rowData.fields?.find((field) => field.name === '__Key')?.values?.join(', ') ?? ''; + return html` ${rowData.score} ${rowData.id} - + ${this.getSearchResultNodeName(rowData)} diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts index 74f7473793..e8b0df49f2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/manifests.ts @@ -1,5 +1,8 @@ +import { manifests as examineManifests } from './examine-management-dashboard/manifests.js'; import type { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry'; +import './examine-management-dashboard/index.js'; + export const manifests: Array = [ { type: 'headerApp', @@ -37,10 +40,5 @@ export const manifests: Array = [ }, ], }, - { - type: 'modal', - alias: 'Umb.Modal.ExamineFieldsSettings', - name: 'Examine Field Settings Modal', - js: () => import('./examine-management-dashboard/views/modal-views/fields-settings-modal.element.js'), - }, + ...examineManifests, ]; From b8562965f27a1c5ab3f5271d756910bb8a49cdcc Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 8 May 2024 10:16:50 +0200 Subject: [PATCH 02/10] routing --- .../views/section-view-examine-searchers.ts | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts index 9f02b931ea..d5d791fd28 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts @@ -33,28 +33,24 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { @query('#search-input') private _searchInput!: HTMLInputElement; - private _onNameClick() { - // TODO: - alert('TODO: Open workspace for ' + this.searcherName); - } - - #entityType = ''; - @state() - private _workspacePath = ''; + private _workspacePath = 'aa'; private _onKeyPress(e: KeyboardEvent) { e.key == 'Enter' ? this._onSearch() : undefined; } + #entityType = ''; + constructor() { super(); new UmbModalRouteRegistrationController(this, UMB_WORKSPACE_MODAL) - .onSetup(() => { - return { data: { entityType: this.#entityType, preset: {} } }; + .addAdditionalPath(':entityType') + .onSetup((routingInfo) => { + return { data: { entityType: routingInfo.entityType, preset: {} } }; }) .observeRouteBuilder((routeBuilder) => { - this._workspacePath = routeBuilder({}); + this._workspacePath = routeBuilder({ entityType: this.#entityType }); }); } From 436415abfdb1c578d79eb9721c987f779b115666 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 8 May 2024 10:31:06 +0200 Subject: [PATCH 03/10] localizations to search --- .../views/section-view-examine-searchers.ts | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts index d5d791fd28..e31ec36b9a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts @@ -122,18 +122,26 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { render() { return html` - -

Search the ${this.searcherName} and view the results

+ +

+ Search the ${this.searcherName} and view the results +

- Search +
${this.renderSearchResults()}
@@ -167,7 +175,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { Score Id - Name + Navn Fields ${this.renderHeadCells()} @@ -182,7 +190,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { ${this.getSearchResultNodeName(rowData)} @@ -191,9 +199,10 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { this.#onFieldViewClick(rowData)}> - ${rowData.fields ? Object.keys(rowData.fields).length : ''} fields + ${rowData.fields ? Object.keys(rowData.fields).length : ''} + ${this.localize.term('examineManagement_fields')} ${rowData.fields ? this.renderBodyCells(rowData.fields) : ''} @@ -219,7 +228,7 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { ${field.name} \n Depending on how much content there is in your site this could take a while.
\n It is not recommended to rebuild an index during times of high website traffic or when editors are editing content.\n ', + 'This will cause the index to be rebuilt.
Depending on how much content there is in your site this could take a while.
It is not recommended to rebuild an index during times of high website traffic or when editors are editing content.', searchers: 'Searchers', searchDescription: 'Search the index and view the results', tools: 'Tools', @@ -618,7 +618,7 @@ export default { fields: 'fields', indexCannotRead: 'The index cannot be read and will need to be rebuilt', processIsTakingLonger: - 'The process is taking longer than expected, check the Umbraco log to see if there\n have been any errors during this operation\n ', + 'The process is taking longer than expected, check the Umbraco log to see if there have been any errors during this operation', indexCannotRebuild: 'This index cannot be rebuilt because it has no assigned', iIndexPopulator: 'IIndexPopulator', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts index 485891ac1b..5b5b91b1ec 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts @@ -16,7 +16,10 @@ export class UmbExamineFieldsSettingsModalElement extends UmbModalBaseElement< return html` ${this.#renderFields()}
- Close +
`; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts index 429f2dd5f5..c0093aad2b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts @@ -45,15 +45,15 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { private async _onRebuildHandler() { await umbConfirmModal(this, { - headline: `Rebuild ${this.indexName}`, - content: html` - This will cause the index to be rebuilt.
+ headline: `${this.localize.term('examineManagement_rebuildIndex')} ${this.indexName}`, + content: html`This will cause the index to be rebuilt.
Depending on how much content there is in your site this could take a while.
It is not recommended to rebuild an index during times of high website traffic or when editors are editing - content. - `, + content.
`, color: 'danger', - confirmLabel: 'Rebuild', + confirmLabel: this.localize.term('examineManagement_rebuildIndex'), }); this._rebuild(); @@ -93,8 +93,11 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { return html`

- Health Status
- The health status of the ${this.indexName} and if it can be read + Health Status
+ The health status of the ${this.indexName} and if it can be read

${this.#renderHealthStatus(this._indexData.healthStatus)}
@@ -110,8 +113,12 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { private renderPropertyList() { if (!this._indexData) return nothing; - return html` -

Lists the properties of the ${this.indexName}

+ return html` +

+ Lists the properties of the ${this.indexName} +

documentCount @@ -134,17 +141,15 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { } private renderTools() { - return html` -

Tools to manage the ${this.indexName}

+ return html` +

Tools to manage the ${this.indexName}

- Rebuild - + label=${this.localize.term('examineManagement_rebuildIndex')}>
`; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts index a118f9afea..0adc0f2b11 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-overview.ts @@ -55,17 +55,23 @@ export class UmbDashboardExamineOverviewElement extends UmbLitElement { render() { return html` - +

- Manage Examine's indexes
- Allows you to view the details of each index and provides some tools for managing the indexes + Manage Examine's indexes
+ Allows you to view the details of each index and provides some tools for managing the indexes

${this.renderIndexersList()}
- +

- Configured Searchers
- Shows properties and tools for any configured Searcher (i.e. such as a multi-index searcher) + Configured Searchers
+ Shows properties and tools for any configured Searcher (i.e. such as a multi-index searcher)

${this.renderSearchersList()}
From 0b4ffb9e1fb67d5279441150f61dc4c7b569e8c5 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 8 May 2024 11:11:33 +0200 Subject: [PATCH 05/10] continue pulling to see if server rebuilding --- .../views/section-view-examine-indexers.ts | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts index c0093aad2b..bb38b4fb9f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts @@ -25,22 +25,38 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { connectedCallback() { super.connectedCallback(); - this._getIndexData(); + this.#loadData(); } - private async _getIndexData() { + async #loadData() { + this._indexData = await this.#getIndexData(); + + if (this._indexData?.healthStatus.status === HealthStatusModel.REBUILDING) { + this._buttonState = 'waiting'; + this._continuousPolling(); + } else { + this._loading = false; + } + } + + async #getIndexData() { const { data } = await tryExecuteAndNotify( this, IndexerService.getIndexerByIndexName({ indexName: this.indexName }), ); - this._indexData = data; + return data; + } - // TODO: Add continuous polling to update the status - if (this._indexData?.healthStatus.status === HealthStatusModel.REBUILDING) { - this._buttonState = 'waiting'; + private async _continuousPolling() { + //Checking the server every 5 seconds to see if the index is still rebuilding. + while (this._buttonState === 'waiting') { + this._indexData = await this.#getIndexData(); + if (this._indexData?.healthStatus.status !== HealthStatusModel.REBUILDING) { + this._buttonState = 'success'; + } + await new Promise((resolve) => setTimeout(resolve, 5000)); } - - this._loading = false; + return; } private async _onRebuildHandler() { @@ -68,9 +84,8 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { this._buttonState = 'failed'; return; } - this._buttonState = 'success'; - await this._getIndexData(); + await this.#loadData(); } #renderHealthStatus(healthStatus: HealthStatusResponseModel) { From 3775a63ffab2fbec8a8b2e4abdaeedd517cd2d95 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 8 May 2024 11:26:15 +0200 Subject: [PATCH 06/10] show searchbar while the index is unhealthy --- .../views/section-view-examine-indexers.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts index bb38b4fb9f..6ab383f8ab 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts @@ -121,7 +121,8 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { } private renderIndexSearch() { - if (!this._indexData || this._indexData.healthStatus.status !== HealthStatusModel.HEALTHY) return nothing; + // Do we want to show the search while rebuilding? + if (!this._indexData || this._indexData.healthStatus.status === HealthStatusModel.REBUILDING) return nothing; return html``; } From 4a5f86240e1e72e45c11ee110f61525a96426df8 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 8 May 2024 11:31:35 +0200 Subject: [PATCH 07/10] mock data --- src/Umbraco.Web.UI.Client/src/mocks/data/examine.data.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/examine.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/examine.data.ts index 297384f0de..75124653fe 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/examine.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/examine.data.ts @@ -20,7 +20,7 @@ export const Indexers: IndexResponseModel[] = [ { name: 'ExternalIndex', canRebuild: true, - healthStatus: HealthStatusModel.HEALTHY, + healthStatus: { status: HealthStatusModel.HEALTHY }, documentCount: 0, fieldCount: 0, searcherName: '', @@ -40,7 +40,7 @@ export const Indexers: IndexResponseModel[] = [ { name: 'InternalIndex', canRebuild: true, - healthStatus: HealthStatusModel.HEALTHY, + healthStatus: { status: HealthStatusModel.HEALTHY }, documentCount: 0, fieldCount: 0, searcherName: '', @@ -60,7 +60,7 @@ export const Indexers: IndexResponseModel[] = [ { name: 'MemberIndex', canRebuild: true, - healthStatus: HealthStatusModel.HEALTHY, + healthStatus: { status: HealthStatusModel.HEALTHY }, fieldCount: 0, documentCount: 0, searcherName: '', From d4f7d33e5aa29f75131ac2a3a98765292ae22374 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 8 May 2024 11:39:19 +0200 Subject: [PATCH 08/10] wait before first pull --- .../views/section-view-examine-indexers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts index 6ab383f8ab..86043a6b9f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-indexers.ts @@ -50,11 +50,11 @@ export class UmbDashboardExamineIndexElement extends UmbLitElement { private async _continuousPolling() { //Checking the server every 5 seconds to see if the index is still rebuilding. while (this._buttonState === 'waiting') { + await new Promise((resolve) => setTimeout(resolve, 5000)); this._indexData = await this.#getIndexData(); if (this._indexData?.healthStatus.status !== HealthStatusModel.REBUILDING) { this._buttonState = 'success'; } - await new Promise((resolve) => setTimeout(resolve, 5000)); } return; } From 9847e33219bc2ca142725cf719fc358ffc99b6ef Mon Sep 17 00:00:00 2001 From: leekelleher Date: Wed, 8 May 2024 15:26:38 +0100 Subject: [PATCH 09/10] Prefixed `FieldSettingsType` with `UmbExamine` as it's an exported type. --- .../examine-fields-settings-modal.element.ts | 6 +++--- .../fields-settings/examine-fields-settings-modal.token.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts index 5b5b91b1ec..24b5634143 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.element.ts @@ -1,7 +1,7 @@ import type { UmbExamineFieldsSettingsModalData, UmbExamineFieldsSettingsModalValue, - FieldSettingsType, + UmbExamineFieldSettingsType, } from './examine-fields-settings-modal.token.js'; import { html, css, customElement } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @@ -24,8 +24,8 @@ export class UmbExamineFieldsSettingsModalElement extends UmbModalBaseElement< `; } - #setExposed(fieldSetting: FieldSettingsType) { - const newField: FieldSettingsType = { ...fieldSetting, exposed: !fieldSetting.exposed }; + #setExposed(fieldSetting: UmbExamineFieldSettingsType) { + const newField: UmbExamineFieldSettingsType = { ...fieldSetting, exposed: !fieldSetting.exposed }; const updatedFields = this.modalContext?.getValue().fields.map((field) => { diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.token.ts index 8dedcff245..43b1fab830 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/modal/fields-settings/examine-fields-settings-modal.token.ts @@ -2,13 +2,13 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export type UmbExamineFieldsSettingsModalData = never; -export type FieldSettingsType = { +export type UmbExamineFieldSettingsType = { name: string; exposed: boolean; }; export type UmbExamineFieldsSettingsModalValue = { - fields: Array; + fields: Array; }; export const UMB_EXAMINE_FIELDS_SETTINGS_MODAL = new UmbModalToken< From cc9320bf8a6130d6d9fa25c1792c27c9c7854b2e Mon Sep 17 00:00:00 2001 From: leekelleher Date: Wed, 8 May 2024 15:27:44 +0100 Subject: [PATCH 10/10] Examine Search: localized table headings --- .../views/section-view-examine-searchers.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts index e31ec36b9a..ab604b2ea6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/search/examine-management-dashboard/views/section-view-examine-searchers.ts @@ -167,16 +167,16 @@ export class UmbDashboardExamineSearcherElement extends UmbLitElement { if (this._searchLoading) return html``; if (!this._searchResults) return nothing; if (!this._searchResults.length) { - return html`

No results found

`; + return html`

${this.localize.term('examineManagement_noResults')}

`; } return html`
Score - Id - Navn - Fields + ${this.localize.term('general_id')} + ${this.localize.term('general_name')} + ${this.localize.term('examineManagement_fields')} ${this.renderHeadCells()} ${this._searchResults?.map((rowData) => {