From 57028b5555397db613ad2e98e5746378013bd6ae Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 10:54:54 +0200 Subject: [PATCH 01/11] API schema --- src/Umbraco.Web.UI.Client/schemas/api/api.yml | 29 +++++++++++++++ .../schemas/generated-schema.ts | 35 +++++++++++++++++++ .../temp-schema-generator/api.ts | 1 + .../temp-schema-generator/publishedstatus.ts | 30 ++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/temp-schema-generator/publishedstatus.ts diff --git a/src/Umbraco.Web.UI.Client/schemas/api/api.yml b/src/Umbraco.Web.UI.Client/schemas/api/api.yml index 3c4e98e020..cf8864266f 100644 --- a/src/Umbraco.Web.UI.Client/schemas/api/api.yml +++ b/src/Umbraco.Web.UI.Client/schemas/api/api.yml @@ -105,6 +105,35 @@ paths: application/json: schema: $ref: '#/components/schemas/ProblemDetails' + /published-cache/status: + get: + operationId: PublishedCacheStatus + responses: + '200': + description: 200 response + content: + application/json: + schema: + type: string + default: + description: default response + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /published-cache/reload: + post: + operationId: PublishedCacheReload + parameters: [] + responses: + '201': + description: 201 response + '400': + description: 400 response + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' /server/status: get: operationId: GetStatus diff --git a/src/Umbraco.Web.UI.Client/schemas/generated-schema.ts b/src/Umbraco.Web.UI.Client/schemas/generated-schema.ts index fdc1e66117..2c4423664d 100644 --- a/src/Umbraco.Web.UI.Client/schemas/generated-schema.ts +++ b/src/Umbraco.Web.UI.Client/schemas/generated-schema.ts @@ -22,6 +22,12 @@ export interface paths { "/manifests/packages/installed": { get: operations["ManifestsPackagesInstalled"]; }; + "/published-cache/status": { + get: operations["PublishedCacheStatus"]; + }; + "/published-cache/reload": { + post: operations["PublishedCacheReload"]; + }; "/server/status": { get: operations["GetStatus"]; }; @@ -418,6 +424,35 @@ export interface operations { }; }; }; + PublishedCacheStatus: { + responses: { + /** 200 response */ + 200: { + content: { + "application/json": string; + }; + }; + /** default response */ + default: { + content: { + "application/json": components["schemas"]["ProblemDetails"]; + }; + }; + }; + }; + PublishedCacheReload: { + parameters: {}; + responses: { + /** 201 response */ + 201: unknown; + /** 400 response */ + 400: { + content: { + "application/json": components["schemas"]["ProblemDetails"]; + }; + }; + }; + }; GetStatus: { responses: { /** 200 response */ diff --git a/src/Umbraco.Web.UI.Client/temp-schema-generator/api.ts b/src/Umbraco.Web.UI.Client/temp-schema-generator/api.ts index c7eb465583..551eb45cec 100644 --- a/src/Umbraco.Web.UI.Client/temp-schema-generator/api.ts +++ b/src/Umbraco.Web.UI.Client/temp-schema-generator/api.ts @@ -1,5 +1,6 @@ import './installer'; import './manifests'; +import './publishedstatus'; import './server'; import './upgrader'; import './user'; diff --git a/src/Umbraco.Web.UI.Client/temp-schema-generator/publishedstatus.ts b/src/Umbraco.Web.UI.Client/temp-schema-generator/publishedstatus.ts new file mode 100644 index 0000000000..7079625166 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/temp-schema-generator/publishedstatus.ts @@ -0,0 +1,30 @@ +import { body, defaultResponse, endpoint, request, response } from '@airtasker/spot'; + +import { ProblemDetails } from './models'; + +@endpoint({ + method: 'GET', + path: '/published-cache/status', +}) +export class PublishedCacheStatus { + @response({ status: 200 }) + success(@body body: string) {} + + @defaultResponse + default(@body body: ProblemDetails) {} +} + +@endpoint({ + method: 'POST', + path: '/published-cache/reload', +}) +export class PublishedCacheReload { + @request + request() {} + + @response({ status: 201 }) + success() {} + + @response({ status: 400 }) + badRequest(@body body: ProblemDetails) {} +} From 6446266f79cca3dd2e4febf7453e12882809e441 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 10:55:09 +0200 Subject: [PATCH 02/11] API handlers --- src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts | 2 ++ src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts | 6 ++++-- src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts b/src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts index 034bd7851c..4d8899883f 100644 --- a/src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts +++ b/src/Umbraco.Web.UI.Client/src/core/api/fetcher.ts @@ -21,3 +21,5 @@ export const getUpgradeSettings = fetcher.path('/upgrade/settings').method('get' export const PostUpgradeAuthorize = fetcher.path('/upgrade/authorize').method('post').create(); export const getManifests = fetcher.path('/manifests').method('get').create(); export const getPackagesInstalled = fetcher.path('/manifests/packages/installed').method('get').create(); +export const getPublishedCacheStatus = fetcher.path('/published-cache/status').method('get').create(); +export const postPublishedCacheReload = fetcher.path('/published-cache/reload').method('post').create(); diff --git a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts index edd2b8e1ca..c2c7df7f6c 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts @@ -1,12 +1,13 @@ -import { handlers as contentHandlers } from './domains/node.handlers'; import { handlers as dataTypeHandlers } from './domains/data-type.handlers'; import { handlers as documentTypeHandlers } from './domains/document-type.handlers'; +import { handlers as treeHandlers } from './domains/entity.handlers'; import { handlers as installHandlers } from './domains/install.handlers'; import * as manifestsHandlers from './domains/manifests.handlers'; +import { handlers as contentHandlers } from './domains/node.handlers'; +import { handlers as publishedStatusHandlers } from './domains/published-status.handlers'; import * as serverHandlers from './domains/server.handlers'; import { handlers as upgradeHandlers } from './domains/upgrade.handlers'; import { handlers as userHandlers } from './domains/user.handlers'; -import { handlers as treeHandlers } from './domains/entity.handlers'; const handlers = [ serverHandlers.serverVersionHandler, @@ -18,6 +19,7 @@ const handlers = [ ...documentTypeHandlers, ...treeHandlers, ...manifestsHandlers.default, + ...publishedStatusHandlers, ]; switch (import.meta.env.VITE_UMBRACO_INSTALL_STATUS) { diff --git a/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts index 09e9121f40..1f9cf1acc3 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/e2e-handlers.ts @@ -1,8 +1,9 @@ -import { handlers as contentHandlers } from './domains/node.handlers'; import { handlers as dataTypeHandlers } from './domains/data-type.handlers'; import { handlers as documentTypeHandlers } from './domains/document-type.handlers'; import { handlers as installHandlers } from './domains/install.handlers'; import * as manifestsHandlers from './domains/manifests.handlers'; +import { handlers as contentHandlers } from './domains/node.handlers'; +import { handlers as publishedStatusHandlers } from './domains/published-status.handlers'; import * as serverHandlers from './domains/server.handlers'; import { handlers as upgradeHandlers } from './domains/upgrade.handlers'; import { handlers as userHandlers } from './domains/user.handlers'; @@ -18,4 +19,5 @@ export const handlers = [ ...dataTypeHandlers, ...documentTypeHandlers, ...manifestsHandlers.default, + ...publishedStatusHandlers, ]; From 10bf295653b64c1e0251aba849c0720b3d27504e Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 10:55:27 +0200 Subject: [PATCH 03/11] Add the dashboard to internal manifests --- .../src/temp-internal-manifests.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts b/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts index d24a1ab104..a6655933fe 100644 --- a/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/temp-internal-manifests.ts @@ -118,6 +118,18 @@ export const internalManifests: Array Promise import('./backoffice/dashboards/published-status/dashboard-published-status.element'), + meta: { + sections: ['Umb.Section.Settings'], + pathname: 'published-status', // TODO: how to we want to support pretty urls? + weight: 9, + }, + }, { type: 'dashboard', alias: 'Umb.Dashboard.MediaManagement', From 557b89d12cf84983c813b1cfeec4a4f13ff365f2 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 10:55:34 +0200 Subject: [PATCH 04/11] Add api handler --- .../domains/published-status.handlers.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/domains/published-status.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/domains/published-status.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/domains/published-status.handlers.ts new file mode 100644 index 0000000000..1cef7b9433 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/domains/published-status.handlers.ts @@ -0,0 +1,24 @@ +import { rest } from 'msw'; + +import umbracoPath from '../../core/helpers/umbraco-path'; + +export const handlers = [ + rest.get(umbracoPath('/published-cache/status'), (_req, res, ctx) => { + return res( + // Respond with a 200 status code + ctx.status(200), + ctx.json( + 'Database cache is ok. ContentStore contains 1 item and has 1 generation and 0 snapshot. MediaStore contains 5 items and has 1 generation and 0 snapshot.' + ) + ); + }), + + rest.post(umbracoPath('/published-cache/reload'), async (_req, res, ctx) => { + await new Promise((resolve) => setTimeout(resolve, (Math.random() + 1) * 1000)); // simulate a delay of 1-2 seconds + + return res( + // Respond with a 200 status code + ctx.status(201) + ); + }), +]; From 8bb6938d6b34eb391b90c83bf8e51d14649fe987 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 10:55:52 +0200 Subject: [PATCH 05/11] Add UI logic --- .../dashboard-published-status.element.ts | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts index 04d478f2af..8940bbb9e4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts @@ -1,15 +1,61 @@ import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; +import { customElement, state } from 'lit/decorators.js'; + +import { getPublishedCacheStatus, postPublishedCacheReload } from '../../../core/api/fetcher'; +import { UmbContextConsumerMixin } from '../../../core/context'; +import { UmbNotificationService } from '../../../core/services/notification'; +import { UmbNotificationDefaultData } from '../../../core/services/notification/layouts/default'; @customElement('umb-dashboard-published-status') -export class UmbDashboardPublishedStatusElement extends LitElement { +export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin(LitElement) { static styles = [UUITextStyles, css``]; + @state() + private _publishedStatusText = ''; + + private _notificationService?: UmbNotificationService; + + constructor() { + super(); + + this.consumeContext('umbNotificationService', (notificationService: UmbNotificationService) => { + this._notificationService = notificationService; + }); + } + + connectedCallback() { + super.connectedCallback(); + + this._getPublishedStatus(); + } + + private async _getPublishedStatus() { + const request = await getPublishedCacheStatus({}); + this._publishedStatusText = request.data; + } + + private async _onReloadCacheHandler() { + try { + await postPublishedCacheReload({}); + } catch (e) { + if (e instanceof postPublishedCacheReload.Error) { + const error = e.getActualType(); + const data: UmbNotificationDefaultData = { message: error.data.detail ?? 'Something went wrong' }; + this._notificationService?.peek('danger', { data }); + } + } + } + render() { return html`

Published Status

+

${this._publishedStatusText}

+
+ + + Reload Cache `; } From caae665e0c1da763ec8f285c99d2d064d27cb25d Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 10:56:42 +0200 Subject: [PATCH 06/11] Add unit tests --- .../dashboard-published-status.test.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.test.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.test.ts new file mode 100644 index 0000000000..ecbe84b6aa --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.test.ts @@ -0,0 +1,15 @@ +import { expect, fixture, html } from '@open-wc/testing'; + +import { UmbDashboardPublishedStatusElement } from './dashboard-published-status.element'; + +describe('UmbDashboardPublishedStatus', () => { + let element: UmbDashboardPublishedStatusElement; + + beforeEach(async () => { + element = await fixture(html``); + }); + + it('is defined with its own instance', () => { + expect(element).to.be.instanceOf(UmbDashboardPublishedStatusElement); + }); +}); From 1c978736e4ca16a0e796070a431747c1fc0a6944 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 13:32:56 +0200 Subject: [PATCH 07/11] add a11y test to dashboard --- .../published-status/dashboard-published-status.test.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.test.ts index ecbe84b6aa..64cd1bc0ab 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.test.ts @@ -1,5 +1,6 @@ import { expect, fixture, html } from '@open-wc/testing'; +import { defaultA11yConfig } from '../../../core/helpers/chai'; import { UmbDashboardPublishedStatusElement } from './dashboard-published-status.element'; describe('UmbDashboardPublishedStatus', () => { @@ -12,4 +13,8 @@ describe('UmbDashboardPublishedStatus', () => { it('is defined with its own instance', () => { expect(element).to.be.instanceOf(UmbDashboardPublishedStatusElement); }); + + it('passes the a11y audit', async () => { + await expect(element).to.be.accessible(defaultA11yConfig); + }); }); From f943702b2d9067f3a292bac378f6f3a98906fd6e Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 14:09:57 +0200 Subject: [PATCH 08/11] add button state --- .../dashboard-published-status.element.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts index 8940bbb9e4..3301a1fd4e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts @@ -1,3 +1,4 @@ +import { UUIButtonState } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { css, html, LitElement } from 'lit'; import { customElement, state } from 'lit/decorators.js'; @@ -14,6 +15,9 @@ export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin( @state() private _publishedStatusText = ''; + @state() + private _buttonState: UUIButtonState = undefined; + private _notificationService?: UmbNotificationService; constructor() { @@ -36,9 +40,12 @@ export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin( } private async _onReloadCacheHandler() { + this._buttonState = 'waiting'; try { await postPublishedCacheReload({}); + this._buttonState = 'success'; } catch (e) { + this._buttonState = 'failed'; if (e instanceof postPublishedCacheReload.Error) { const error = e.getActualType(); const data: UmbNotificationDefaultData = { message: error.data.detail ?? 'Something went wrong' }; @@ -55,7 +62,9 @@ export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin( - Reload Cache + Reload Cache `; } From d131e0bc127df59aeb6bd1c33a3bb7a866f17245 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 14:12:20 +0200 Subject: [PATCH 09/11] add try/catch to get published cache status --- .../dashboard-published-status.element.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts index 3301a1fd4e..ca40332928 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts @@ -35,8 +35,16 @@ export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin( } private async _getPublishedStatus() { - const request = await getPublishedCacheStatus({}); - this._publishedStatusText = request.data; + try { + const { data } = await getPublishedCacheStatus({}); + this._publishedStatusText = data; + } catch (e) { + if (e instanceof getPublishedCacheStatus.Error) { + const error = e.getActualType(); + const data: UmbNotificationDefaultData = { message: error.data.detail ?? 'Something went wrong' }; + this._notificationService?.peek('danger', { data }); + } + } } private async _onReloadCacheHandler() { From 9bbcb766141cd2c6acf6a54a7036c77f54b1e6cf Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 23 Sep 2022 14:23:35 +0200 Subject: [PATCH 10/11] get the status after reloading --- .../published-status/dashboard-published-status.element.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts index ca40332928..c8d166ee03 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts @@ -51,6 +51,7 @@ export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin( this._buttonState = 'waiting'; try { await postPublishedCacheReload({}); + this._getPublishedStatus(); this._buttonState = 'success'; } catch (e) { this._buttonState = 'failed'; From 3cf968f88df8e1495f282e53e24d13d99940ad64 Mon Sep 17 00:00:00 2001 From: bkclerke Date: Fri, 23 Sep 2022 14:39:38 +0200 Subject: [PATCH 11/11] add dashboard elements --- .../dashboard-published-status.element.ts | 44 +++++++++++++++---- .../shared/section-dashboards.element.ts | 8 +++- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts index c8d166ee03..1ccad9f1eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/dashboards/published-status/dashboard-published-status.element.ts @@ -10,7 +10,14 @@ import { UmbNotificationDefaultData } from '../../../core/services/notification/ @customElement('umb-dashboard-published-status') export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin(LitElement) { - static styles = [UUITextStyles, css``]; + static styles = [UUITextStyles, css` + uui-box + uui-box { + margin-top: var(--uui-size-space-5); + } + uui-box p:first-child { + margin-block-start: 0; + } + `]; @state() private _publishedStatusText = ''; @@ -47,7 +54,7 @@ export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin( } } - private async _onReloadCacheHandler() { + private async _onRefreshCacheHandler() { this._buttonState = 'waiting'; try { await postPublishedCacheReload({}); @@ -63,17 +70,38 @@ export class UmbDashboardPublishedStatusElement extends UmbContextConsumerMixin( } } + private async _onReloadCacheHandler() { + await undefined; + } + + private async _onRebuildCacheHandler() { + await undefined; + } + + private async _onSnapshotCacheHandler() { + await undefined; + } + render() { return html` - -

Published Status

+

${this._publishedStatusText}

+ Refresh Status
- - Reload Cache + +

This button lets you reload the in-memory cache, by entirely reloading it from the database cache (but it does not rebuild that database cache). This is relatively fast. Use it when you think that the memory cache has not been properly refreshed, after some events triggered—which would indicate a minor Umbraco issue. (note: triggers the reload on all servers in an LB environment).

+ Reload Memory Cache +
+ + +

This button lets you rebuild the database cache, ie the content of the cmsContentNu table. Rebuilding can be expensive. Use it when reloading is not enough, and you think that the database cache has not been properly generated—which would indicate some critical Umbraco issue.

+ Rebuild Database Cache +
+ + +

This button lets you trigger a NuCache snapshots collection (after running a fullCLR GC). Unless you know what that means, you probably do not need to use it.

+ Snapshot Internal Cache
`; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/sections/shared/section-dashboards.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/sections/shared/section-dashboards.element.ts index fd4662b525..ed247e1079 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/sections/shared/section-dashboards.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/sections/shared/section-dashboards.element.ts @@ -31,6 +31,10 @@ export class UmbSectionDashboards extends UmbContextConsumerMixin(LitElement) { padding: var(--uui-size-space-5); display: block; } + + #scroll-container { + height: 500px; + } `, ]; @@ -146,7 +150,9 @@ export class UmbSectionDashboards extends UmbContextConsumerMixin(LitElement) { render() { return html` ${this._renderNavigation()} - + + + `; } }