add handlers for document type items

This commit is contained in:
Mads Rasmussen
2023-11-14 20:05:38 +01:00
parent 8061d78be8
commit abbb49c9af
9 changed files with 101 additions and 101 deletions

View File

@@ -1,6 +1,6 @@
import { handlers as dataTypeHandlers } from './handlers/data-type/index.js';
import { handlers as relationTypeHandlers } from './handlers/relation-type.handlers.js';
import { handlers as documentTypeHandlers } from './handlers/document-type.handlers.js';
import { handlers as documentTypeHandlers } from './handlers/document-type/index.js';
import { handlers as installHandlers } from './handlers/install.handlers.js';
import * as manifestsHandlers from './handlers/manifests.handlers.js';
import { handlers as publishedStatusHandlers } from './handlers/published-status.handlers.js';

View File

@@ -4,6 +4,7 @@ import {
DocumentTypeTreeItemResponseModel,
DocumentTypeResponseModel,
ContentTypeCompositionTypeModel,
DocumentTypeItemResponseModel,
} from '@umbraco-cms/backoffice/backend-api';
export const data: Array<DocumentTypeResponseModel> = [
@@ -1166,6 +1167,20 @@ class UmbDocumentTypeData extends UmbEntityData<DocumentTypeResponseModel> {
const items = this.treeData.filter((item) => allowedTypeKeys.includes(item.id ?? ''));
return items.map((item) => item);
}
getItems(ids: Array<string>): Array<DocumentTypeItemResponseModel> {
const items = this.data.filter((item) => ids.includes(item.id ?? ''));
return items.map((item) => createDocumentTypeItem(item));
}
}
const createDocumentTypeItem = (item: DocumentTypeResponseModel): DocumentTypeItemResponseModel => {
return {
id: item.id,
name: item.name,
isElement: item.isElement,
icon: item.icon,
};
};
export const umbDocumentTypeData = new UmbDocumentTypeData();

View File

@@ -1,5 +1,5 @@
import { handlers as dataTypeHandlers } from './handlers/data-type/index.js';
import { handlers as documentTypeHandlers } from './handlers/document-type.handlers.js';
import { handlers as documentTypeHandlers } from './handlers/document-type/index.js';
import { handlers as installHandlers } from './handlers/install.handlers.js';
import * as manifestsHandlers from './handlers/manifests.handlers.js';
import { handlers as publishedStatusHandlers } from './handlers/published-status.handlers.js';

View File

@@ -1,99 +0,0 @@
const { rest } = window.MockServiceWorker;
import { umbDocumentTypeData } from '../data/document-type.data.js';
import type { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
// TODO: add schema
export const handlers = [
rest.post(umbracoPath(`/document-type`), async (req, res, ctx) => {
const data = await req.json();
if (!data) return;
// TODO: This is something that is missing in the Full model, but which we need to for the tree model. This should be fixed in the Full model.
data.parentId ??= null;
const created = umbDocumentTypeData.insert(data);
// TODO: remove this hack, as we get the right end-point, in that case we will be in control of the Ids. (I choose this URL to make it clear thats its a hack/mocked URL)
return res(ctx.status(200), ctx.set({ location: '/header/location/id/' + created.id }));
}),
rest.put(umbracoPath(`/document-type/:id`), async (req, res, ctx) => {
const id = req.params.id as string;
if (!id) return;
const data = await req.json();
if (!data) return;
const saved = umbDocumentTypeData.save(id, data);
return res(ctx.status(200), ctx.json(saved));
}),
rest.get('/umbraco/management/api/v1/document-type/details/:id', (req, res, ctx) => {
const id = req.params.id as string;
if (!id) return;
const document = umbDocumentTypeData.getById(id);
return res(ctx.status(200), ctx.json([document]));
}),
rest.post<DocumentTypeResponseModel>('/umbraco/management/api/v1/document-type/details/save', (req, res, ctx) => {
const data = req.body;
if (!data) return;
const saved = umbDocumentTypeData.save(data.id!, data);
return res(ctx.status(200), ctx.json(saved));
}),
rest.get('/umbraco/management/api/v1/tree/document-type/root', (req, res, ctx) => {
const rootItems = umbDocumentTypeData.getTreeRoot();
const response = {
total: rootItems.length,
items: rootItems,
};
return res(ctx.status(200), ctx.json(response));
}),
rest.get('/umbraco/management/api/v1/tree/document-type/children', (req, res, ctx) => {
const parentId = req.url.searchParams.get('parentId');
if (!parentId) return;
const children = umbDocumentTypeData.getTreeItemChildren(parentId);
const response = {
total: children.length,
items: children,
};
return res(ctx.status(200), ctx.json(response));
}),
rest.get('/umbraco/management/api/v1/tree/document-type/item', (req, res, ctx) => {
const ids = req.url.searchParams.getAll('id');
if (!ids) return;
const items = umbDocumentTypeData.getTreeItem(ids);
return res(ctx.status(200), ctx.json(items));
}),
rest.get('/umbraco/management/api/v1/document-type/:id', (req, res, ctx) => {
const id = req.params.id as string;
if (!id) return;
const documentType = umbDocumentTypeData.getById(id);
return res(ctx.status(200), ctx.json(documentType));
}),
rest.get('/umbraco/management/api/v1/document-type/allowed-children-of/:id', (req, res, ctx) => {
const id = req.params.id as string;
if (!id) return;
const items = umbDocumentTypeData.getAllowedTypesOf(id);
return res(ctx.status(200), ctx.json(items));
}),
];

View File

@@ -0,0 +1,36 @@
const { rest } = window.MockServiceWorker;
import { umbDocumentTypeData } from '../../data/document-type.data.js';
import { slug } from './slug.js';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
export const handlers = [
rest.get(umbracoPath(`${slug}/:id`), (req, res, ctx) => {
const id = req.params.id as string;
if (!id) return;
const document = umbDocumentTypeData.getById(id);
return res(ctx.status(200), ctx.json(document));
}),
rest.delete(umbracoPath(`${slug}/:id`), (req, res, ctx) => {
const id = req.params.id as string;
if (!id) return;
const document = umbDocumentTypeData.getById(id);
return res(ctx.status(200), ctx.json(document));
}),
rest.put(umbracoPath(`${slug}/:id`), async (req, res, ctx) => {
const id = req.params.id as string;
if (!id) return;
const data = await req.json();
if (!data) return;
const saved = umbDocumentTypeData.save(id, data);
return res(ctx.status(200), ctx.json(saved));
}),
rest.post(umbracoPath(`${slug}`), async (req, res, ctx) => {
const data = await req.json();
if (!data) return;
umbDocumentTypeData.insert(data);
return res(ctx.status(200));
}),
];

View File

@@ -0,0 +1,5 @@
import { handlers as treeHandlers } from './tree.handlers.js';
import { handlers as detailHandlers } from './detail.handlers.js';
import { handlers as itemHandlers } from './item.handlers.js';
export const handlers = [...treeHandlers, ...itemHandlers, ...detailHandlers];

View File

@@ -0,0 +1,13 @@
const { rest } = window.MockServiceWorker;
import { umbDocumentTypeData } from '../../data/document-type.data.js';
import { slug } from './slug.js';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
export const handlers = [
rest.get(umbracoPath(`${slug}/item`), (req, res, ctx) => {
const ids = req.url.searchParams.getAll('id');
if (!ids) return;
const items = umbDocumentTypeData.getItems(ids);
return res(ctx.status(200), ctx.json(items));
}),
];

View File

@@ -0,0 +1 @@
export const slug = '/document-type';

View File

@@ -0,0 +1,29 @@
const { rest } = window.MockServiceWorker;
import { umbDocumentTypeData } from '../../data/document-type.data.js';
import { slug } from './slug.js';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
export const handlers = [
rest.get(umbracoPath(`/tree${slug}/root`), (req, res, ctx) => {
const rootItems = umbDocumentTypeData.getTreeRoot();
const response = {
total: rootItems.length,
items: rootItems,
};
return res(ctx.status(200), ctx.json(response));
}),
rest.get(umbracoPath(`/tree${slug}/children`), (req, res, ctx) => {
const parentId = req.url.searchParams.get('parentId');
if (!parentId) return;
const children = umbDocumentTypeData.getTreeItemChildren(parentId);
const response = {
total: children.length,
items: children,
};
return res(ctx.status(200), ctx.json(response));
}),
];