use tree manager for stylesheets
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
Reference in New Issue
Block a user