From fc0768ef89ff5ed0ed8e7924f22718bcd524ee8e Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Thu, 29 Jun 2023 18:04:57 +0200 Subject: [PATCH] set up sort order --- .../query-builder-filter.element.ts | 11 +-- .../query-builder/query-builder.element.ts | 72 ++++++++++++++++--- 2 files changed, 68 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder-filter.element.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder-filter.element.ts index 717f5aadf9..c1397c065f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder-filter.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder-filter.element.ts @@ -83,7 +83,7 @@ export class UmbQueryBuilderFilterElement extends UmbLitElement { } private _renderOperatorsDropdown() { - return html` + return html` ${this.filter?.operator ?? ''} ${this.settings?.operators @@ -103,13 +103,13 @@ export class UmbQueryBuilderFilterElement extends UmbLitElement { private _renderConstraintValueInput() { switch (this.currentPropertyType) { case TemplateQueryPropertyTypeModel.INTEGER: - return html``; + return html``; case TemplateQueryPropertyTypeModel.STRING: - return html``; + return html``; case TemplateQueryPropertyTypeModel.DATE_TIME: - return html``; + return html``; default: - return html``; + return html``; } } @@ -117,6 +117,7 @@ export class UmbQueryBuilderFilterElement extends UmbLitElement { return html` ${this.unremovable ? 'where' : 'and'} ${this.filter?.propertyAlias ?? ''} ${this.settings?.properties?.map( diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder.element.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder.element.ts index 712a18ab8e..1253fdeb8d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/templates/modals/query-builder/query-builder.element.ts @@ -10,6 +10,7 @@ import { import { TemplateQueryExecuteFilterPresentationModel, TemplateQueryExecuteModel, + TemplateQueryExecuteSortModel, TemplateQueryResultResponseModel, TemplateQuerySettingsResponseModel, } from '@umbraco-cms/backoffice/backend-api'; @@ -26,6 +27,11 @@ export interface TemplateQueryBuilderModalResult { value: string; } +enum SortOrder { + Ascending = 'ascending', + Descending = 'descending', +} + @customElement('umb-templating-query-builder-modal') export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement< TemplateQueryBuilderModalData, @@ -34,6 +40,9 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement @query('#content-type-dropdown') private _contentTypeDropdown?: UmbButtonWithDropdownElement; + @query('#sort-dropdown') + private _sortDropdown?: UmbButtonWithDropdownElement; + @query('#filter-container') private _filterContainer?: HTMLElement; @@ -67,6 +76,9 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement @state() private _selectedRootContentName = 'all pages'; + @state() + private _defaultSortDirection: SortOrder = SortOrder.Ascending; + #documentRepository: UmbDocumentRepository; #modalManagerContext?: UmbModalManagerContext; #templateRepository: UmbTemplateRepository; @@ -142,12 +154,36 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement this._contentTypeDropdown!.closePopover(); } + #setSortProperty(event: Event) { + const target = event.target as UUIComboboxListElement; + this.#updateQueryRequest({ + sort: { ...this._queryRequest.sort, propertyAlias: (target.value as string) ?? '' }, + }); + this._sortDropdown!.closePopover(); + } + + #setSortDirection() { + if (!this._queryRequest.sort?.direction) { + this.#updateQueryRequest({ + sort: { ...this._queryRequest.sort, direction: this._defaultSortDirection }, + }); + return; + } + + this.#updateQueryRequest({ + sort: { + ...this._queryRequest.sort, + direction: + this._queryRequest.sort?.direction === SortOrder.Ascending ? SortOrder.Descending : SortOrder.Ascending, + }, + }); + } + #addFilterElement = () => { this._filterContainer?.appendChild(this.#createFilterElement()); }; #updateFilters = () => { - this.#updateQueryRequest({ filters: Array.from(this._filterElements)?.map((filter) => filter.filter) ?? [] }); }; @@ -164,9 +200,9 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement
I want - ${this._queryRequest?.contentTypeAlias ?? 'all content'} - + all content ${this._queryBuilderSettings?.contentTypeAliases?.map( (alias) => @@ -177,7 +213,7 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement from - ${this._selectedRootContentName}
@@ -191,8 +227,24 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement @remove-filter=${this.#removeFilter}>
- ordered by (allowed properties) - ascending/descending + ordered by + ${this._queryRequest.sort?.propertyAlias ?? ''} + + ${this._queryBuilderSettings?.properties?.map( + (property) => + html`${property.alias}` + )} + + + ${this._queryRequest.sort?.propertyAlias + ? html`${this._queryRequest.sort.direction ?? this._defaultSortDirection}` + : ''}
N items returned, in 0 ms
${this._templateQuery?.queryExpression ?? ''} @@ -200,8 +252,8 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement
- Close - Submit + Close + Submit
`; @@ -223,8 +275,8 @@ export default class UmbChooseInsertTypeModalElement extends UmbModalBaseElement ); } - #content-type-list { - width: 250%; + .options-list { + min-width: 25ch; background-color: var(--uui-color-surface); box-shadow: var(--uui-shadow-depth-3); }