use tree manager for stylesheets

This commit is contained in:
Mads Rasmussen
2023-12-17 21:49:30 +01:00
parent 421098b684
commit b0c04f221f
2 changed files with 8 additions and 42 deletions

View File

@@ -1,50 +1,25 @@
import { UmbData } from '../data.js';
import { createFileSystemTreeItem, createFileItemResponseModelBaseModel, textFileItemMapper } from '../utils.js';
import { UmbFileSystemMockDbBase } from '../file-system/file-system-base.js';
import { UmbMockFileSystemTreeManager } from '../file-system/file-system-tree.manager.js';
import { createFileItemResponseModelBaseModel, textFileItemMapper } from '../utils.js';
import { UmbMockStylesheetModel, data } from './stylesheet.data.js';
import {
CreateTextFileViewModelBaseModel,
ExtractRichTextStylesheetRulesRequestModel,
ExtractRichTextStylesheetRulesResponseModel,
FileSystemTreeItemPresentationModel,
InterpolateRichTextStylesheetRequestModel,
PagedFileSystemTreeItemPresentationModel,
PagedStylesheetOverviewResponseModel,
StylesheetItemResponseModel,
StylesheetResponseModel,
UpdateStylesheetRequestModel,
} from '@umbraco-cms/backoffice/backend-api';
//prettier-ignore
// eslint-disable-next-line no-useless-escape
class UmbStylesheetData extends UmbFileSystemMockDbBase<UmbMockStylesheetModel> {
tree = new UmbMockFileSystemTreeManager<UmbMockStylesheetModel>(this);
// Temp mocked database
// TODO: all properties are optional in the server schema. I don't think this is correct.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
class UmbStylesheetData extends UmbData<UmbMockStylesheetModel> {
constructor(data: Array<UmbMockStylesheetModel>) {
super(data);
}
getTreeRoot(): PagedFileSystemTreeItemPresentationModel {
const items = this.data.filter((item) => item.path?.includes('/') === false);
const treeItems = items.map((item) => createFileSystemTreeItem(item));
const total = items.length;
return { items: treeItems, total };
}
getTreeItemChildren(parentPath: string): PagedFileSystemTreeItemPresentationModel {
const items = this.data.filter((item) => item.path?.startsWith(parentPath + '/'));
const treeItems = items.map((item) => createFileSystemTreeItem(item));
const total = items.length;
return { items: treeItems, total };
}
getTreeItem(paths: Array<string>): Array<FileSystemTreeItemPresentationModel> {
const items = this.data.filter((item) => paths.includes(item.path ?? ''));
return items.map((item) => createFileSystemTreeItem(item));
}
getItems(paths: Array<string>): Array<StylesheetItemResponseModel> {
const items = this.data.filter((item) => paths.includes(item.path ?? ''));
return items.map((item) => createFileItemResponseModelBaseModel(item));

View File

@@ -11,25 +11,16 @@ import { umbracoPath } from '@umbraco-cms/backoffice/utils';
const treeHandlers = [
rest.get(umbracoPath('/tree/stylesheet/root'), (req, res, ctx) => {
const response = umbStylesheetData.getTreeRoot();
const response = umbStylesheetData.tree.getRoot();
return res(ctx.status(200), ctx.json(response));
}),
rest.get(umbracoPath('/tree/stylesheet/children'), (req, res, ctx) => {
const path = req.url.searchParams.get('path');
if (!path) return;
const response = umbStylesheetData.getTreeItemChildren(path);
if (!path) return res(ctx.status(400));
const response = umbStylesheetData.tree.getChildrenOf(path);
return res(ctx.status(200), ctx.json(response));
}),
rest.get(umbracoPath('/tree/stylesheet/item'), (req, res, ctx) => {
const paths = req.url.searchParams.getAll('paths');
if (!paths) return;
const items = umbStylesheetData.getTreeItem(paths);
return res(ctx.status(200), ctx.json(items));
}),
];
const detailHandlers = [