Merge branch 'main' into bugfix/media-picker

This commit is contained in:
Jacob Overgaard
2024-03-12 13:18:23 +01:00
committed by GitHub
12 changed files with 87 additions and 40 deletions

View File

@@ -14,7 +14,7 @@ class UmbLogViewerSearchesData extends UmbMockDBBase<SavedLogSearchResponseModel
// skip can be number or null
getSavedSearches(skip = 0, take = this.data.length): Array<SavedLogSearchResponseModel> {
return this.data.slice(skip, take);
return this.data.slice(skip, take + skip);
}
getByName(name: string) {
@@ -29,7 +29,7 @@ class UmbLogViewerTemplatesData extends UmbMockDBBase<LogTemplateResponseModel>
// skip can be number or null
getTemplates(skip = 0, take = this.data.length): Array<LogTemplateResponseModel> {
return this.data.slice(skip, take);
return this.data.slice(skip, take + skip);
}
}

View File

@@ -14,7 +14,7 @@ export const handlers = [
const items = umbLogViewerData.searches.getSavedSearches(skipNumber, takeNumber);
const response = {
total: items.length,
total: umbLogViewerData.searches.total,
items,
};
@@ -57,7 +57,7 @@ export const handlers = [
return res(ctx.delay(), ctx.status(200), ctx.json(response));
}),
//#endregion
//#region Logs
rest.get(umbracoPath('/log-viewer/level'), (req, res, ctx) => {
return res(ctx.delay(), ctx.status(200), ctx.json(umbLogViewerData.logLevels));

View File

@@ -67,7 +67,7 @@ export class UmbLogViewerWorkspaceContext extends UmbControllerBase implements U
};
#savedSearches = new UmbObjectState<PagedSavedLogSearchResponseModel | undefined>(undefined);
savedSearches = this.#savedSearches.asObservablePart((data) => data?.items);
savedSearches = this.#savedSearches.asObservablePart((data) => data);
#logCount = new UmbObjectState<LogLevelCountsReponseModel | null>(null);
logCount = this.#logCount.asObservable();
@@ -168,8 +168,8 @@ export class UmbLogViewerWorkspaceContext extends UmbControllerBase implements U
return this.#dateRange.getValue();
}
async getSavedSearches() {
const { data } = await this.#repository.getSavedSearches({ skip: 0, take: 100 });
async getSavedSearches({ skip = 0, take = 999 }: { skip?: number; take?: number } = {}) {
const { data } = await this.#repository.getSavedSearches({ skip, take });
if (data) {
this.#savedSearches.setValue(data);
} else {

View File

@@ -33,7 +33,11 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement {
}
render() {
return html` <umb-workspace-editor headline="Log Viewer" .enforceNoFooter=${true}> </umb-workspace-editor> `;
return html`
<umb-workspace-editor
headline=${this.localize.term('treeHeaders_logViewer')}
.enforceNoFooter=${true}></umb-workspace-editor>
`;
}
static styles = [

View File

@@ -4,7 +4,6 @@ import { html, nothing, customElement, property, state } from '@umbraco-cms/back
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type { LoggerResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
//TODO: implement the saved searches pagination when the API total bug is fixed
@customElement('umb-log-viewer-log-level-overview')
export class UmbLogViewerLogLevelOverviewElement extends UmbLitElement {
#logViewerContext?: UmbLogViewerWorkspaceContext;

View File

@@ -1,25 +1,31 @@
import type { UmbLogViewerWorkspaceContext } from '../../../logviewer.context.js';
import { UMB_APP_LOG_VIEWER_CONTEXT } from '../../../logviewer.context.js';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit';
import { css, html, customElement, state, nothing } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type {
PagedLogTemplateResponseModel,
LogTemplateResponseModel,
SavedLogSearchResponseModel,
} from '@umbraco-cms/backoffice/external/backend-api';
import type { UUIPaginationEvent } from '@umbraco-cms/backoffice/external/uui';
//TODO: fix pagination bug when API is fixed
@customElement('umb-log-viewer-message-templates-overview')
export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement {
#itemsPerPage = 10;
#currentPage = 1;
@state()
private _messageTemplates: PagedLogTemplateResponseModel | null = null;
private _total = 0;
@state()
private _messageTemplates: Array<LogTemplateResponseModel> = [];
#logViewerContext?: UmbLogViewerWorkspaceContext;
constructor() {
super();
this.consumeContext(UMB_APP_LOG_VIEWER_CONTEXT, (instance) => {
this.#logViewerContext = instance;
this.#logViewerContext?.getMessageTemplates(0, 10);
this.#logViewerContext?.getMessageTemplates(0, this.#itemsPerPage);
this.#observeStuff();
});
}
@@ -27,13 +33,19 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement {
#observeStuff() {
if (!this.#logViewerContext) return;
this.observe(this.#logViewerContext.messageTemplates, (templates) => {
this._messageTemplates = templates ?? null;
this._messageTemplates = templates?.items ?? [];
this._total = templates?.total ?? 0;
});
}
#getMessageTemplates() {
const take = this._messageTemplates?.items?.length ?? 0;
this.#logViewerContext?.getMessageTemplates(0, take + 10);
const skip = this.#currentPage * this.#itemsPerPage - this.#itemsPerPage;
this.#logViewerContext?.getMessageTemplates(skip, this.#itemsPerPage);
}
#onChangePage(event: UUIPaginationEvent) {
this.#currentPage = event.target.current;
this.#getMessageTemplates();
}
#renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => {
@@ -54,11 +66,11 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement {
render() {
return html`
<uui-box headline="Common Log Messages" id="saved-searches">
<p style="font-style: italic;">Total Unique Message types: ${this._messageTemplates?.total}</p>
<p style="font-style: italic;">Total Unique Message types: ${this._total}</p>
<uui-table>
${this._messageTemplates
? this._messageTemplates.items.map(
? this._messageTemplates.map(
(template) =>
html`<uui-table-row>
<uui-table-cell>
@@ -70,17 +82,15 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement {
</a>
</uui-table-cell>
</uui-table-row>`,
)
)
: ''}
</uui-table>
<uui-button
id="show-more-templates-btn"
look="primary"
@click=${this.#getMessageTemplates}
label="Show more templates">
Show more
</uui-button>
${this._total > this.#itemsPerPage
? html`<uui-pagination
.current=${this.#currentPage}
.total=${Math.ceil(this._total / this.#itemsPerPage)}
@change=${this.#onChangePage}></uui-pagination>`
: nothing}
</uui-box>
`;
}
@@ -88,6 +98,10 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement {
static styles = [
UmbTextStyles,
css`
uui-pagination {
margin-top: var(--uui-size-layout-1);
}
#show-more-templates-btn {
margin-top: var(--uui-size-space-5);
}

View File

@@ -1,23 +1,29 @@
import type { UmbLogViewerWorkspaceContext } from '../../../logviewer.context.js';
import { UMB_APP_LOG_VIEWER_CONTEXT } from '../../../logviewer.context.js';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit';
import { css, html, customElement, state, nothing } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type { SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
import type { UUIPaginationEvent } from '@umbraco-cms/backoffice/external/uui';
//TODO: implement the saved searches pagination when the API total bug is fixed
@customElement('umb-log-viewer-saved-searches-overview')
export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement {
#itemsPerPage = 999;
#currentPage = 1;
@state()
private _savedSearches: SavedLogSearchResponseModel[] = [];
@state()
private _total = 0;
#logViewerContext?: UmbLogViewerWorkspaceContext;
constructor() {
super();
this.consumeContext(UMB_APP_LOG_VIEWER_CONTEXT, (instance) => {
this.#logViewerContext = instance;
this.#logViewerContext?.getSavedSearches();
this.#logViewerContext?.getSavedSearches({ skip: 0, take: this.#itemsPerPage });
this.#observeStuff();
});
}
@@ -25,10 +31,21 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement {
#observeStuff() {
if (!this.#logViewerContext) return;
this.observe(this.#logViewerContext.savedSearches, (savedSearches) => {
this._savedSearches = savedSearches ?? [];
this._savedSearches = savedSearches?.items ?? [];
this._total = savedSearches?.total ?? 0;
});
}
#getSavedSearches() {
const skip = this.#currentPage * this.#itemsPerPage - this.#itemsPerPage;
this.#logViewerContext?.getSavedSearches({ skip, take: this.#itemsPerPage });
}
#onChangePage(event: UUIPaginationEvent) {
this.#currentPage = event.target.current;
this.#getSavedSearches();
}
#renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => {
return html` <li>
<uui-menu-item
@@ -47,6 +64,12 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement {
<ul>
${this.#renderSearchItem({ name: 'All logs', query: '' })} ${this._savedSearches.map(this.#renderSearchItem)}
</ul>
${this._total > this.#itemsPerPage
? html`<uui-pagination
.current=${this.#currentPage}
.total=${Math.ceil(this._total / this.#itemsPerPage)}
@change=${this.#onChangePage}></uui-pagination>`
: nothing}
</uui-box>`;
}

View File

@@ -89,12 +89,12 @@ export class UmbLogViewerMessagesListElement extends UmbLitElement {
.properties=${log.properties ?? []}
.exception=${log.exception ?? ''}
.messageTemplate=${log.messageTemplate ?? ''}></umb-log-viewer-message>`,
)}`
)}`
: html`
<span id="empty">
<uui-icon name="icon-search"></uui-icon>Sorry, we cannot find what you are looking for.
</span>
`}`;
`}`;
}
render() {
@@ -124,6 +124,10 @@ export class UmbLogViewerMessagesListElement extends UmbLitElement {
static styles = [
css`
uui-pagination {
display: block;
margin-bottom: var(--uui-size-layout-1);
}
uui-box {
--uui-box-default-padding: 0;
}

View File

@@ -71,7 +71,7 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement {
#observeStuff() {
if (!this.#logViewerContext) return;
this.observe(this.#logViewerContext.savedSearches, (savedSearches) => {
this._savedSearches = savedSearches ?? [];
this._savedSearches = savedSearches?.items ?? [];
this._isQuerySaved = this._savedSearches.some((search) => search.query === this._inputQuery);
});
@@ -156,13 +156,13 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement {
${this._showLoader
? html`<div id="loader-container" slot="append">
<uui-loader-circle></uui-loader-circle>
</div>`
</div>`
: ''}
${this._inputQuery
? html`${!this._isQuerySaved
? html`<uui-button compact slot="append" label="Save search" @click=${this.#openSaveSearchDialog}
><uui-icon name="icon-favorite"></uui-icon
></uui-button>`
></uui-button>`
: ''}<uui-button compact slot="append" label="Clear" @click=${this.#clearQuery}
><uui-icon name="icon-delete"></uui-icon
></uui-button>`

View File

@@ -57,6 +57,10 @@ export class UmbLogViewerSearchViewElement extends UmbLitElement {
static styles = [
UmbTextStyles,
css`
:host {
margin-bottom: var(--uui-size-space-2);
}
uui-box {
--uui-box-default-padding: 0;
}

View File

@@ -42,7 +42,7 @@ export class UmbMediaTypeServerDataSource implements UmbDetailDataSource<UmbMedi
name: '',
alias: '',
description: '',
icon: '',
icon: 'icon-picture',
allowedAtRoot: false,
variesByCulture: false,
variesBySegment: false,

View File

@@ -209,8 +209,7 @@ export class UmbMediaTypeWorkspaceViewEditTabElement extends UmbLitElement {
label=${this.localize.term('contentTypeEditor_addGroup')}
id="add"
look="placeholder"
@click=${this.#onAddGroup}>
</uui-button>`
@click=${this.#onAddGroup}></uui-button>`
: ''}
`;
}