add handlers for document type items
This commit is contained in:
@@ -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';
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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));
|
||||
}),
|
||||
];
|
||||
@@ -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));
|
||||
}),
|
||||
];
|
||||
@@ -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];
|
||||
@@ -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));
|
||||
}),
|
||||
];
|
||||
@@ -0,0 +1 @@
|
||||
export const slug = '/document-type';
|
||||
@@ -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));
|
||||
}),
|
||||
];
|
||||
Reference in New Issue
Block a user