diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml index 215ee2f386..8e77e1488c 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/build_test.yml @@ -40,7 +40,7 @@ jobs: - run: npx playwright install --with-deps - run: npm test - name: Upload Code Coverage reports - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: code-coverage diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/codeql.yml b/src/Umbraco.Web.UI.Client/.github/workflows/codeql.yml index 88da8bd514..013b41e58f 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/codeql.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/codeql.yml @@ -42,7 +42,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -53,4 +53,4 @@ jobs: # queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/src/Umbraco.Web.UI.Client/.github/workflows/devskim.yml b/src/Umbraco.Web.UI.Client/.github/workflows/devskim.yml index 9e564ac12f..de22a81deb 100644 --- a/src/Umbraco.Web.UI.Client/.github/workflows/devskim.yml +++ b/src/Umbraco.Web.UI.Client/.github/workflows/devskim.yml @@ -31,6 +31,6 @@ jobs: ignore-globs: "**/.git/**,*.md,*.mdx,*.stories.ts,*.js" - name: Upload DevSkim scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: sarif_file: devskim-results.sarif diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/components/log-viewer-date-range-selector.element.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/components/log-viewer-date-range-selector.element.ts index 23e3587136..7c074e8518 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/components/log-viewer-date-range-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/components/log-viewer-date-range-selector.element.ts @@ -23,6 +23,7 @@ export class UmbLogViewerDateRangeSelectorElement extends UmbLitElement { horizontal = false; #logViewerContext?: UmbLogViewerWorkspaceContext; + constructor() { super(); this.addEventListener('input', this.#setDates); @@ -31,13 +32,21 @@ export class UmbLogViewerDateRangeSelectorElement extends UmbLitElement { this.#observeStuff(); }); } + disconnectedCallback(): void { + super.disconnectedCallback(); + this.removeEventListener('input', this.#setDates); + } #observeStuff() { if (!this.#logViewerContext) return; - this.observe(this.#logViewerContext.dateRange, (dateRange: LogViewerDateRange) => { - this._startDate = dateRange?.startDate; - this._endDate = dateRange?.endDate; - }); + this.observe( + this.#logViewerContext.dateRange, + (dateRange: LogViewerDateRange) => { + this._startDate = dateRange.startDate; + this._endDate = dateRange.endDate; + }, + '_observeDateRange', + ); } #setDates() { @@ -48,6 +57,7 @@ export class UmbLogViewerDateRangeSelectorElement extends UmbLitElement { this._endDate = input.value; } }); + this.#logViewerContext?.setDateRange({ startDate: this._startDate, endDate: this._endDate }); const query = getQuery(); const qs = toQueryString({ @@ -61,35 +71,32 @@ export class UmbLogViewerDateRangeSelectorElement extends UmbLitElement { render() { return html` -
- From: - { - (e.target as HTMLInputElement).showPicker(); - }} - - id="start-date" - type="date" - label="From" - .max=${this.#logViewerContext?.today ?? ''} - .value=${this._startDate}> - -
-
- To: - { - (e.target as HTMLInputElement).showPicker(); - }} - id="end-date" - type="date" - label="To" - .min=${this._startDate} - .max=${this.#logViewerContext?.today ?? ''} - .value=${this._endDate}> - -
- `; +
+ From: + { + (e.target as HTMLInputElement).showPicker(); + }} + id="start-date" + type="date" + label="From" + .max=${this.#logViewerContext?.today ?? ''} + .value=${this._startDate} /> +
+
+ To: + { + (e.target as HTMLInputElement).showPicker(); + }} + id="end-date" + type="date" + label="To" + .min=${this._startDate} + .max=${this.#logViewerContext?.today ?? ''} + .value=${this._endDate} /> +
+ `; } static styles = [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/logviewer.context.ts index 5824382518..3bb56112d7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/logviewer.context.ts @@ -134,17 +134,12 @@ export class UmbLogViewerWorkspaceContext extends UmbBaseController implements U } this.setLogLevelsFilter(validLogLevels); - const dateRange: Partial = {}; + const dateRange: LogViewerDateRange = this.getDateRange() as LogViewerDateRange; - if (searchQuery.startDate) { - dateRange.startDate = searchQuery.startDate; - } - - if (searchQuery.endDate) { - dateRange.endDate = searchQuery.endDate; - } - - this.setDateRange(dateRange); + this.setDateRange({ + startDate: searchQuery.startDate || dateRange.startDate, + endDate: searchQuery.endDate || dateRange.endDate, + }); this.setCurrentPage(searchQuery.page ? Number(searchQuery.page) : 1); @@ -169,6 +164,10 @@ export class UmbLogViewerWorkspaceContext extends UmbBaseController implements U this.getMessageTemplates(0, 10); } + getDateRange() { + return this.#dateRange.getValue(); + } + async getSavedSearches() { const { data } = await this.#repository.getSavedSearches({ skip: 0, take: 100 }); if (data) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts index 8064a1f091..d8d63e3f8c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts @@ -37,7 +37,7 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { + href=${`section/settings/workspace/logviewer/view/search/?lq=${searchListItem.query}`}> ${searchListItem.name} `; @@ -59,7 +59,7 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { html` ${template.messageTemplate} ${template.count} diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/overview/log-overview-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/overview/log-overview-view.element.ts index f0f66462d7..9c5babed5a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/overview/log-overview-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/overview/log-overview-view.element.ts @@ -7,7 +7,7 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-log-viewer-overview-view') export class UmbLogViewerOverviewViewElement extends UmbLitElement { @state() - private _errorCount = 0; + private _errorCount?: number; @state() private _logLevelCount: LogLevelCountsReponseModel | null = null; @@ -30,7 +30,7 @@ export class UmbLogViewerOverviewViewElement extends UmbLitElement { if (!this.#logViewerContext) return; this.observe(this.#logViewerContext.logCount, (logLevelCount) => { - this._errorCount = logLevelCount?.error ?? 0; + this._errorCount = logLevelCount?.error; }); } @@ -52,11 +52,13 @@ export class UmbLogViewerOverviewViewElement extends UmbLitElement { -

${this._errorCount}

+

+ ${this._errorCount === undefined ? html`` : this._errorCount} +

+
diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-message.element.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-message.element.ts index 6eb6fb9b9b..de30d985da 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-message.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-message.element.ts @@ -170,7 +170,9 @@ export class UmbLogViewerMessageElement extends UmbLitElement { look="secondary" label="Find logs with ${property.name}" title="Find logs with ${property.name}" - href=${`section/settings/workspace/logviewer/search/?${this._findLogsWithProperty(property)}`}> + href=${`section/settings/workspace/logviewer/view/search/?${this._findLogsWithProperty( + property, + )}`}> ` : ''} diff --git a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-messages-list.element.ts b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-messages-list.element.ts index 24514ffe97..2449327280 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-messages-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-messages-list.element.ts @@ -88,41 +88,46 @@ export class UmbLogViewerMessagesListElement extends UmbLitElement { .exception=${log.exception ?? ''} .messageTemplate=${log.messageTemplate ?? ''}>`, )}` - : html` + : html` + Sorry, we cannot find what you are looking for. - `}`; + + `}`; } render() { // TODO: the table should scroll instead of the whole main div - return html` - - - ${this._canShowLogs - ? html`` - : html``} - + ${this._canShowLogs + ? html`` + : html``} `; }