move types to relations package and make documents use it
This commit is contained in:
@@ -1,14 +1,13 @@
|
||||
import { UmbDocumentTrackedReferenceRepository } from '../repository/index.js';
|
||||
import type {
|
||||
DefaultReferenceResponseModel,
|
||||
DocumentReferenceResponseModel,
|
||||
MediaReferenceResponseModel,
|
||||
} from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { css, customElement, html, nothing, property, repeat, state } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
||||
|
||||
type UmbReferenceModel = DefaultReferenceResponseModel | DocumentReferenceResponseModel | MediaReferenceResponseModel;
|
||||
import {
|
||||
type UmbReferenceModel,
|
||||
isDocumentReference,
|
||||
isMediaReference,
|
||||
isDefaultReference,
|
||||
} from '@umbraco-cms/backoffice/relations';
|
||||
|
||||
@customElement('umb-document-tracked-reference-table')
|
||||
export class UmbDocumentTrackedReferenceTableElement extends UmbLitElement {
|
||||
@@ -58,39 +57,27 @@ export class UmbDocumentTrackedReferenceTableElement extends UmbLitElement {
|
||||
return html` ${this.#renderErrorMessage()} ${this.#renderTable()} `;
|
||||
}
|
||||
|
||||
#isDocumentReference(item: UmbReferenceModel): item is DocumentReferenceResponseModel {
|
||||
return typeof (item as DocumentReferenceResponseModel).documentType !== 'undefined';
|
||||
}
|
||||
|
||||
#isMediaReference(item: UmbReferenceModel): item is MediaReferenceResponseModel {
|
||||
return typeof (item as MediaReferenceResponseModel).mediaType !== 'undefined';
|
||||
}
|
||||
|
||||
#isDefaultReference(item: UmbReferenceModel): item is DefaultReferenceResponseModel {
|
||||
return typeof (item as DefaultReferenceResponseModel).type !== 'undefined';
|
||||
}
|
||||
|
||||
#getIcon(item: UmbReferenceModel) {
|
||||
if (this.#isDocumentReference(item)) {
|
||||
if (isDocumentReference(item)) {
|
||||
return item.documentType.icon ?? 'icon-document';
|
||||
}
|
||||
if (this.#isMediaReference(item)) {
|
||||
if (isMediaReference(item)) {
|
||||
return item.mediaType.icon ?? 'icon-media';
|
||||
}
|
||||
if (this.#isDefaultReference(item)) {
|
||||
if (isDefaultReference(item)) {
|
||||
return item.icon ?? 'icon-document';
|
||||
}
|
||||
return 'icon-document';
|
||||
}
|
||||
|
||||
#getContentTypeName(item: UmbReferenceModel) {
|
||||
if (this.#isDocumentReference(item)) {
|
||||
if (isDocumentReference(item)) {
|
||||
return item.documentType.name;
|
||||
}
|
||||
if (this.#isMediaReference(item)) {
|
||||
if (isMediaReference(item)) {
|
||||
return item.mediaType.name;
|
||||
}
|
||||
if (this.#isDefaultReference(item)) {
|
||||
if (isDefaultReference(item)) {
|
||||
return item.type;
|
||||
}
|
||||
return '';
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
import { UmbDocumentTrackedReferenceRepository } from '../../../tracked-reference/index.js';
|
||||
import { css, html, customElement, state, nothing, repeat, property } from '@umbraco-cms/backoffice/external/lit';
|
||||
import type { UUIPaginationEvent } from '@umbraco-cms/backoffice/external/uui';
|
||||
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
|
||||
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
||||
import type { RelationItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { UmbDocumentTrackedReferenceRepository } from '@umbraco-cms/backoffice/document';
|
||||
import { UMB_WORKSPACE_MODAL, UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/modal';
|
||||
import {
|
||||
isDefaultReference,
|
||||
isDocumentReference,
|
||||
isMediaReference,
|
||||
type UmbReferenceModel,
|
||||
} from '@umbraco-cms/backoffice/relations';
|
||||
|
||||
@customElement('umb-document-workspace-view-info-reference')
|
||||
export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement {
|
||||
@@ -24,7 +29,7 @@ export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement
|
||||
private _total = 0;
|
||||
|
||||
@state()
|
||||
private _items?: Array<RelationItemResponseModel> = [];
|
||||
private _items?: Array<UmbReferenceModel> = [];
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
@@ -63,6 +68,49 @@ export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement
|
||||
this.#getReferences();
|
||||
}
|
||||
|
||||
#getIcon(item: UmbReferenceModel) {
|
||||
if (isDocumentReference(item)) {
|
||||
return item.documentType.icon ?? 'icon-document';
|
||||
}
|
||||
if (isMediaReference(item)) {
|
||||
return item.mediaType.icon ?? 'icon-media';
|
||||
}
|
||||
if (isDefaultReference(item)) {
|
||||
return item.icon ?? 'icon-document';
|
||||
}
|
||||
return 'icon-document';
|
||||
}
|
||||
|
||||
#getPublishedStatus(item: UmbReferenceModel) {
|
||||
return isDocumentReference(item) ? item.published : true;
|
||||
}
|
||||
|
||||
#getContentTypeName(item: UmbReferenceModel) {
|
||||
if (isDocumentReference(item)) {
|
||||
return item.documentType.name;
|
||||
}
|
||||
if (isMediaReference(item)) {
|
||||
return item.mediaType.name;
|
||||
}
|
||||
if (isDefaultReference(item)) {
|
||||
return item.type;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
#getContentType(item: UmbReferenceModel) {
|
||||
if (isDocumentReference(item)) {
|
||||
return item.documentType.alias;
|
||||
}
|
||||
if (isMediaReference(item)) {
|
||||
return item.mediaType.alias;
|
||||
}
|
||||
if (isDefaultReference(item)) {
|
||||
return item.type;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
render() {
|
||||
if (this._items && this._items.length > 0) {
|
||||
return html` <uui-box
|
||||
@@ -75,32 +123,30 @@ export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement
|
||||
<uui-table-head-cell><umb-localize key="general_status">Status</umb-localize></uui-table-head-cell>
|
||||
<uui-table-head-cell><umb-localize key="general_typeName">Type Name</umb-localize></uui-table-head-cell>
|
||||
<uui-table-head-cell><umb-localize key="general_type">Type</umb-localize></uui-table-head-cell>
|
||||
<uui-table-head-cell>
|
||||
<umb-localize key="relationType_relation">Relation</umb-localize>
|
||||
</uui-table-head-cell>
|
||||
</uui-table-head>
|
||||
|
||||
${repeat(
|
||||
this._items,
|
||||
(item) => item.nodeId,
|
||||
(item) => item.id,
|
||||
(item) =>
|
||||
html`<uui-table-row>
|
||||
<uui-table-cell style="text-align:center;">
|
||||
<umb-icon name=${item.contentTypeIcon ?? 'icon-document'}></umb-icon>
|
||||
<umb-icon name=${this.#getIcon(item)}></umb-icon>
|
||||
</uui-table-cell>
|
||||
<uui-table-cell class="link-cell">
|
||||
<uui-button label="Edit" href=${`${this._editDocumentPath}edit/${item.nodeId}`}>
|
||||
${item.nodeName}
|
||||
</uui-button>
|
||||
${isDocumentReference(item)
|
||||
? html` <uui-button label="Edit" href=${`${this._editDocumentPath}edit/${item.id}`}>
|
||||
${item.name}
|
||||
</uui-button>`
|
||||
: item.name}
|
||||
</uui-table-cell>
|
||||
<uui-table-cell>
|
||||
${item.nodePublished
|
||||
${this.#getPublishedStatus(item)
|
||||
? this.localize.term('content_published')
|
||||
: this.localize.term('content_unpublished')}
|
||||
</uui-table-cell>
|
||||
<uui-table-cell>${item.contentTypeName}</uui-table-cell>
|
||||
<uui-table-cell>${item.nodeType}</uui-table-cell>
|
||||
<uui-table-cell>${item.relationTypeName}</uui-table-cell>
|
||||
<uui-table-cell>${this.#getContentTypeName(item)}</uui-table-cell>
|
||||
<uui-table-cell>${this.#getContentType(item)}</uui-table-cell>
|
||||
</uui-table-row>`,
|
||||
)}
|
||||
</uui-table>
|
||||
@@ -126,10 +172,6 @@ export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement
|
||||
static styles = [
|
||||
UmbTextStyles,
|
||||
css`
|
||||
.link-cell {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
uui-table-cell:not(.link-cell) {
|
||||
color: var(--uui-color-text-alt);
|
||||
}
|
||||
|
||||
@@ -10,29 +10,19 @@ export class UmbMediaTrackedReferenceRepository extends UmbControllerBase {
|
||||
this.#trackedReferenceSource = new UmbMediaTrackedReferenceServerDataSource(this);
|
||||
}
|
||||
|
||||
async requestTrackedReference(unique: string, skip = 0, take = 20, filterMustBeIsDependency = false) {
|
||||
async requestTrackedReference(unique: string, skip = 0, take = 20) {
|
||||
if (!unique) throw new Error(`unique is required`);
|
||||
return this.#trackedReferenceSource.getTrackedReferenceById(unique, skip, take, filterMustBeIsDependency);
|
||||
return this.#trackedReferenceSource.getTrackedReferenceById(unique, skip, take);
|
||||
}
|
||||
|
||||
async requestTrackedReferenceDescendantsFromParentUnique(
|
||||
parentUnique: string,
|
||||
skip = 0,
|
||||
take = 20,
|
||||
filterMustBeIsDependency = false,
|
||||
) {
|
||||
async requestTrackedReferenceDescendantsFromParentUnique(parentUnique: string, skip = 0, take = 20) {
|
||||
if (!parentUnique) throw new Error(`unique is required`);
|
||||
return this.#trackedReferenceSource.getTrackedReferenceDescendantsByParentId(
|
||||
parentUnique,
|
||||
skip,
|
||||
take,
|
||||
filterMustBeIsDependency,
|
||||
);
|
||||
return this.#trackedReferenceSource.getTrackedReferenceDescendantsByParentId(parentUnique, skip, take);
|
||||
}
|
||||
|
||||
async requestTrackedReferenceItems(uniques: string[], skip = 0, take = 20, filterMustBeIsDependency = true) {
|
||||
async requestTrackedReferenceItems(uniques: string[], skip = 0, take = 20) {
|
||||
if (!uniques) throw new Error(`unique is required`);
|
||||
return this.#trackedReferenceSource.getTrackedReferenceItem(uniques, skip, take, filterMustBeIsDependency);
|
||||
return this.#trackedReferenceSource.getTrackedReferenceItem(uniques, skip, take);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { TrackedReferenceResource } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { MediaResource } from '@umbraco-cms/backoffice/external/backend-api';
|
||||
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
|
||||
|
||||
/**
|
||||
@@ -25,11 +25,8 @@ export class UmbMediaTrackedReferenceServerDataSource {
|
||||
* @return {*}
|
||||
* @memberof UmbDataTypeItemServerDataSource
|
||||
*/
|
||||
async getTrackedReferenceById(id: string, skip = 0, take = 20, filterMustBeIsDependency = false) {
|
||||
return await tryExecuteAndNotify(
|
||||
this.#host,
|
||||
TrackedReferenceResource.getTrackedReferenceById({ id, skip, take, filterMustBeIsDependency }),
|
||||
);
|
||||
async getTrackedReferenceById(id: string, skip = 0, take = 20) {
|
||||
return await tryExecuteAndNotify(this.#host, MediaResource.getMediaByIdReferencedBy({ id, skip, take }));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -38,19 +35,13 @@ export class UmbMediaTrackedReferenceServerDataSource {
|
||||
* @return {*}
|
||||
* @memberof UmbMediaTrackedReferenceServerDataSource
|
||||
*/
|
||||
async getTrackedReferenceDescendantsByParentId(
|
||||
parentId: string,
|
||||
skip = 0,
|
||||
take = 20,
|
||||
filterMustBeIsDependency = false,
|
||||
) {
|
||||
async getTrackedReferenceDescendantsByParentId(parentId: string, skip = 0, take = 20) {
|
||||
return await tryExecuteAndNotify(
|
||||
this.#host,
|
||||
TrackedReferenceResource.getTrackedReferenceDescendantsByParentId({
|
||||
parentId,
|
||||
MediaResource.getMediaByIdReferencedDescendants({
|
||||
id: parentId,
|
||||
skip,
|
||||
take,
|
||||
filterMustBeIsDependency,
|
||||
}),
|
||||
);
|
||||
}
|
||||
@@ -61,14 +52,13 @@ export class UmbMediaTrackedReferenceServerDataSource {
|
||||
* @return {*}
|
||||
* @memberof UmbMediaTrackedReferenceServerDataSource
|
||||
*/
|
||||
async getTrackedReferenceItem(id: string[], skip = 0, take = 20, filterMustBeIsDependency = true) {
|
||||
async getTrackedReferenceItem(id: string[], skip = 0, take = 20) {
|
||||
return await tryExecuteAndNotify(
|
||||
this.#host,
|
||||
TrackedReferenceResource.getTrackedReferenceItem({
|
||||
MediaResource.getMediaAreReferenced({
|
||||
id,
|
||||
skip,
|
||||
take,
|
||||
filterMustBeIsDependency,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
export * from './collection/index.js';
|
||||
export * from './entity.js';
|
||||
export * from './utils.js';
|
||||
|
||||
export * from './types.js';
|
||||
export type * from './types.js';
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import type { UmbRelationEntityType } from './entity.js';
|
||||
import type {
|
||||
DefaultReferenceResponseModel,
|
||||
DocumentReferenceResponseModel,
|
||||
MediaReferenceResponseModel,
|
||||
} from '@umbraco-cms/backoffice/external/backend-api';
|
||||
|
||||
export interface UmbRelationDetailModel {
|
||||
unique: string;
|
||||
@@ -17,3 +22,8 @@ export interface UmbRelationDetailModel {
|
||||
createDate: string;
|
||||
comment: string | null;
|
||||
}
|
||||
|
||||
export type UmbReferenceModel =
|
||||
| DefaultReferenceResponseModel
|
||||
| DocumentReferenceResponseModel
|
||||
| MediaReferenceResponseModel;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import type { UmbReferenceModel } from './types.js';
|
||||
import type {
|
||||
DefaultReferenceResponseModel,
|
||||
DocumentReferenceResponseModel,
|
||||
MediaReferenceResponseModel,
|
||||
} from '@umbraco-cms/backoffice/external/backend-api';
|
||||
|
||||
export function isDocumentReference(item: UmbReferenceModel): item is DocumentReferenceResponseModel {
|
||||
return typeof (item as DocumentReferenceResponseModel).documentType !== 'undefined';
|
||||
}
|
||||
|
||||
export function isMediaReference(item: UmbReferenceModel): item is MediaReferenceResponseModel {
|
||||
return typeof (item as MediaReferenceResponseModel).mediaType !== 'undefined';
|
||||
}
|
||||
|
||||
export function isDefaultReference(item: UmbReferenceModel): item is DefaultReferenceResponseModel {
|
||||
return typeof (item as DefaultReferenceResponseModel).type !== 'undefined';
|
||||
}
|
||||
Reference in New Issue
Block a user