composition repo
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { UmbDocumentTypeCompositionRepository } from '../../repository/index.js';
|
||||
import type {
|
||||
UmbCompositionPickerModalData,
|
||||
UmbCompositionPickerModalValue,
|
||||
@@ -5,7 +6,6 @@ import type {
|
||||
import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal';
|
||||
import type { UmbTreeElement } from '@umbraco-cms/backoffice/tree';
|
||||
import { UmbDocumentTypeDetailRepository } from '../../repository/index.js';
|
||||
|
||||
@customElement('umb-composition-picker-modal')
|
||||
export class UmbCompositionPickerModalElement extends UmbModalBaseElement<
|
||||
@@ -17,6 +17,8 @@ export class UmbCompositionPickerModalElement extends UmbModalBaseElement<
|
||||
// As well as other document types that has a composition already.
|
||||
// OBS: If a document type 1 has a composition document type 2, document type 2 cannot add any compositions.
|
||||
|
||||
#compositionRepository = new UmbDocumentTypeCompositionRepository(this);
|
||||
|
||||
@state()
|
||||
private _selectionConfiguration = {
|
||||
multiple: true,
|
||||
@@ -30,12 +32,17 @@ export class UmbCompositionPickerModalElement extends UmbModalBaseElement<
|
||||
|
||||
connectedCallback() {
|
||||
super.connectedCallback();
|
||||
|
||||
this._selectionConfiguration = { ...this._selectionConfiguration, selection: (this.data?.selection as []) ?? [] };
|
||||
this.#getcomposition()
|
||||
this.#getcomposition()
|
||||
}
|
||||
|
||||
async #getcomposition() {
|
||||
const unique = this.data?.unique;
|
||||
|
||||
if (!unique) throw new Error('Unique is required');
|
||||
|
||||
const something = await this.#compositionRepository.read(unique);
|
||||
console.log(something)
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { UmbDocumentTypeCompositionServerDataSource } from './document-type-composition.server.data-source.js';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbRepositoryBase } from '@umbraco-cms/backoffice/repository';
|
||||
|
||||
export class UmbDocumentTypeCompositionRepository extends UmbRepositoryBase {
|
||||
#compositionSource: UmbDocumentTypeCompositionServerDataSource;
|
||||
|
||||
constructor(host: UmbControllerHost) {
|
||||
super(host);
|
||||
this.#compositionSource = new UmbDocumentTypeCompositionServerDataSource(this);
|
||||
}
|
||||
|
||||
async read(unique:string) {
|
||||
return this.#compositionSource.read(unique);
|
||||
}
|
||||
|
||||
async update(args: any) {
|
||||
return this.#compositionSource.update(args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
import { type DocumentTypeCompositionRequestModel, DocumentTypeResource } from '@umbraco-cms/backoffice/backend-api';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
|
||||
|
||||
/**
|
||||
* A data source for the Document Type Composition that fetches data from the server
|
||||
* @export
|
||||
* @class UmbDocumentTypeCompositionServerDataSource
|
||||
*/
|
||||
export class UmbDocumentTypeCompositionServerDataSource {
|
||||
#host: UmbControllerHost;
|
||||
|
||||
/**
|
||||
* Creates an instance of UmbDocumentTypeCompositionServerDataSource.
|
||||
* @param {UmbControllerHost} host
|
||||
* @memberof UmbDocumentTypeCompositionServerDataSource
|
||||
*/
|
||||
constructor(host: UmbControllerHost) {
|
||||
this.#host = host;
|
||||
}
|
||||
/**
|
||||
* Fetches the compatible compositions for a document type from the server
|
||||
* @param {string} unique
|
||||
* @return {*}
|
||||
* @memberof UmbDocumentTypeCompositionServerDataSource
|
||||
*/
|
||||
async read(unique: string) {
|
||||
return tryExecuteAndNotify(this.#host, DocumentTypeResource.getDocumentTypeByIdCompositionReferences({id:unique}));
|
||||
}
|
||||
/**
|
||||
* Updates the compositions for a document type on the server
|
||||
* @param {DocumentTypeCompositionRequestModel} requestBody
|
||||
* @return {*}
|
||||
* @memberof UmbDocumentTypeCompositionServerDataSource
|
||||
*/
|
||||
async update(data: any) {
|
||||
const requestBody: DocumentTypeCompositionRequestModel = {
|
||||
id: '',
|
||||
isElement: false,
|
||||
currentCompositeIds: [],
|
||||
currentPropertyAliases: [],
|
||||
}
|
||||
return tryExecuteAndNotify(this.#host, DocumentTypeResource.postDocumentTypeAvailableCompositions({ requestBody }));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
export { UmbDocumentTypeCompositionRepository } from './document-type-composition.repository.js';
|
||||
export { UMB_DOCUMENT_TYPE_COMPOSITION_REPOSITORY_ALIAS } from './manifests.js';
|
||||
@@ -0,0 +1,13 @@
|
||||
import { UmbDocumentTypeCompositionRepository } from './document-type-composition.repository.js';
|
||||
import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry';
|
||||
|
||||
export const UMB_DOCUMENT_TYPE_COMPOSITION_REPOSITORY_ALIAS = 'Umb.Repository.DocumentType.Composition';
|
||||
|
||||
const queryRepository: ManifestRepository = {
|
||||
type: 'repository',
|
||||
alias: UMB_DOCUMENT_TYPE_COMPOSITION_REPOSITORY_ALIAS,
|
||||
name: 'Document Type Composition Repository',
|
||||
api: UmbDocumentTypeCompositionRepository,
|
||||
};
|
||||
|
||||
export const manifests = [queryRepository];
|
||||
@@ -1,15 +1,11 @@
|
||||
import { ContentTypeCompositionResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api';
|
||||
import type { UmbDocumentTypeDetailModel } from '../../types.js';
|
||||
import { UmbDocumentTypeDetailServerDataSource } from './document-type-detail.server.data-source.js';
|
||||
import { UMB_DOCUMENT_TYPE_DETAIL_STORE_CONTEXT } from './document-type-detail.store.js';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { DataSourceResponse, UmbDetailRepositoryBase } from '@umbraco-cms/backoffice/repository';
|
||||
import { UmbDetailRepositoryBase } from '@umbraco-cms/backoffice/repository';
|
||||
export class UmbDocumentTypeDetailRepository extends UmbDetailRepositoryBase<UmbDocumentTypeDetailModel> {
|
||||
constructor(host: UmbControllerHost) {
|
||||
super(host, UmbDocumentTypeDetailServerDataSource, UMB_DOCUMENT_TYPE_DETAIL_STORE_CONTEXT);
|
||||
}
|
||||
|
||||
async readCompositions(unique: string): Promise<DataSourceResponse<ContentTypeCompositionResponseModelBaseModel>> {
|
||||
return this.readCompositions(unique);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -282,14 +282,4 @@ export class UmbDocumentTypeDetailServerDataSource implements UmbDetailDataSourc
|
||||
}),
|
||||
);
|
||||
}
|
||||
async readCompositions(unique: string) {
|
||||
if (!unique) throw new Error('Unique is missing.');
|
||||
|
||||
return tryExecuteAndNotify(
|
||||
this.#host,
|
||||
DocumentTypeResource.getDocumentTypeByIdCompositionReferences({
|
||||
id: unique,
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from './detail/index.js';
|
||||
export * from './item/index.js';
|
||||
export * from './structure/index.js';
|
||||
export * from './composition/index.js';
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { manifests as detailManifests } from './detail/manifests.js';
|
||||
import { manifests as itemManifests } from './item/manifests.js';
|
||||
import {manifests as compositionManifests} from './composition/manifests.js';
|
||||
|
||||
export const manifests = [...detailManifests, ...itemManifests];
|
||||
export const manifests = [...detailManifests, ...itemManifests,...compositionManifests];
|
||||
|
||||
@@ -286,12 +286,6 @@ export class UmbDocumentTypeWorkspaceViewEditElement extends UmbLitElement imple
|
||||
}
|
||||
|
||||
async #openCompositionModal() {
|
||||
const repo = new UmbDocumentTypeDetailRepository(this);
|
||||
|
||||
|
||||
console.log('repo',repo)
|
||||
const something = await repo.readCompositions(this._compositionConfiguration!.unique);
|
||||
console.log('data',something)
|
||||
|
||||
const modalContext = this._modalManagerContext?.open(UMB_COMPOSITION_PICKER_MODAL, {
|
||||
data: this._compositionConfiguration,
|
||||
|
||||
Reference in New Issue
Block a user