From 4140e78aecbf09ff2b63a0cbde211adca6f0f589 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 15 Jan 2024 13:11:40 +0100 Subject: [PATCH] add overview handlers --- .../mocks/data/stylesheet/stylesheet.db.ts | 26 ++++++++++++++----- .../handlers/stylesheet/detail.handlers.ts | 10 +++---- .../handlers/stylesheet/folder.handlers.ts | 8 +++--- .../handlers/stylesheet/item.handlers.ts | 4 +-- .../handlers/stylesheet/overview.handlers.ts | 13 ++++++---- .../handlers/stylesheet/rename.handlers.ts | 4 +-- .../handlers/stylesheet/tree.handlers.ts | 6 ++--- 7 files changed, 43 insertions(+), 28 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/stylesheet/stylesheet.db.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/stylesheet/stylesheet.db.ts index 10785daa3d..7c46592e1e 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/stylesheet/stylesheet.db.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/stylesheet/stylesheet.db.ts @@ -7,7 +7,12 @@ import { textFileItemMapper } from '../utils.js'; import { UmbMockStylesheetModel, data } from './stylesheet.data.js'; import { PagedStylesheetOverviewResponseModel } from '@umbraco-cms/backoffice/backend-api'; -class UmbStylesheetData extends UmbFileSystemMockDbBase { +interface UmbMockPaginationModel { + skip?: number; + take?: number; +} + +class UmbStylesheetMockDb extends UmbFileSystemMockDbBase { tree = new UmbMockFileSystemTreeManager(this); item = new UmbMockFileSystemItemManager(this); folder = new UmbMockFileSystemFolderManager(this); @@ -17,12 +22,19 @@ class UmbStylesheetData extends UmbFileSystemMockDbBase super(data); } - getAllStylesheets(): PagedStylesheetOverviewResponseModel { - return { - items: this.data.map((item) => textFileItemMapper(item)), - total: this.data.map((item) => !item.isFolder).length, - }; + getOverview(filterOptions: UmbMockPaginationModel = { skip: 0, take: 100 }): PagedStylesheetOverviewResponseModel { + const mockItems = this.getData(); + const files = mockItems.filter((item) => item.isFolder === false); + const paginatedFiles = files.slice(filterOptions.skip, filterOptions.skip! + filterOptions.take!); + const responseItems = paginatedFiles.map((item) => { + return { + name: item.name, + path: item.path, + }; + }); + + return { items: responseItems, total: mockItems.length }; } } -export const umbStylesheetData = new UmbStylesheetData(data); +export const umbStylesheetMockDb = new UmbStylesheetMockDb(data); diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/detail.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/detail.handlers.ts index 7611b9e53b..a0d6f3b106 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/detail.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/detail.handlers.ts @@ -1,5 +1,5 @@ const { rest } = window.MockServiceWorker; -import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js'; import { UMB_SLUG } from './slug.js'; import { CreateStylesheetRequestModel, UpdateStylesheetRequestModel } from '@umbraco-cms/backoffice/backend-api'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; @@ -8,7 +8,7 @@ export const detailHandlers = [ rest.post(umbracoPath(UMB_SLUG), async (req, res, ctx) => { const requestBody = (await req.json()) as CreateStylesheetRequestModel; if (!requestBody) return res(ctx.status(400, 'no body found')); - const path = umbStylesheetData.file.create(requestBody); + const path = umbStylesheetMockDb.file.create(requestBody); return res( ctx.status(201), ctx.set({ @@ -20,14 +20,14 @@ export const detailHandlers = [ rest.get(umbracoPath(`${UMB_SLUG}/:path`), (req, res, ctx) => { const path = req.params.path as string; if (!path) return res(ctx.status(400)); - const response = umbStylesheetData.file.read(decodeURIComponent(path)); + const response = umbStylesheetMockDb.file.read(decodeURIComponent(path)); return res(ctx.status(200), ctx.json(response)); }), rest.delete(umbracoPath(`${UMB_SLUG}/:path`), (req, res, ctx) => { const path = req.params.path as string; if (!path) return res(ctx.status(400)); - umbStylesheetData.file.delete(decodeURIComponent(path)); + umbStylesheetMockDb.file.delete(decodeURIComponent(path)); return res(ctx.status(200)); }), @@ -36,7 +36,7 @@ export const detailHandlers = [ if (!path) return res(ctx.status(400)); const requestBody = (await req.json()) as UpdateStylesheetRequestModel; if (!requestBody) return res(ctx.status(400, 'no body found')); - umbStylesheetData.file.update(decodeURIComponent(path), requestBody); + umbStylesheetMockDb.file.update(decodeURIComponent(path), requestBody); return res(ctx.status(200)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/folder.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/folder.handlers.ts index a894929355..6a92a201c5 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/folder.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/folder.handlers.ts @@ -1,5 +1,5 @@ const { rest } = window.MockServiceWorker; -import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js'; import { UMB_SLUG } from './slug.js'; import { CreateStylesheetFolderRequestModel } from '@umbraco-cms/backoffice/backend-api'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; @@ -9,7 +9,7 @@ export const folderHandlers = [ const requestBody = (await req.json()) as CreateStylesheetFolderRequestModel; if (!requestBody) return res(ctx.status(400, 'no body found')); - const path = umbStylesheetData.folder.create(requestBody); + const path = umbStylesheetMockDb.folder.create(requestBody); return res( ctx.status(201), @@ -22,14 +22,14 @@ export const folderHandlers = [ rest.get(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => { const path = req.params.path as string; if (!path) return res(ctx.status(400)); - const response = umbStylesheetData.folder.read(decodeURIComponent(path)); + const response = umbStylesheetMockDb.folder.read(decodeURIComponent(path)); return res(ctx.status(200), ctx.json(response)); }), rest.delete(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => { const path = req.params.path as string; if (!path) return res(ctx.status(400)); - umbStylesheetData.folder.delete(decodeURIComponent(path)); + umbStylesheetMockDb.folder.delete(decodeURIComponent(path)); return res(ctx.status(200)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts index de53cda151..b1f29d39bb 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/item.handlers.ts @@ -1,5 +1,5 @@ const { rest } = window.MockServiceWorker; -import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js'; import { UMB_SLUG } from './slug.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; @@ -7,7 +7,7 @@ export const itemHandlers = [ rest.get(umbracoPath(`${UMB_SLUG}/item`), (req, res, ctx) => { const paths = req.url.searchParams.getAll('paths'); if (!paths) return res(ctx.status(400, 'no body found')); - const items = umbStylesheetData.item.getItems(paths); + const items = umbStylesheetMockDb.item.getItems(paths); return res(ctx.status(200), ctx.json(items)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/overview.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/overview.handlers.ts index f1d1f29feb..0e914a3218 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/overview.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/overview.handlers.ts @@ -1,13 +1,16 @@ const { rest } = window.MockServiceWorker; -import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js'; import { UMB_SLUG } from './slug.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; export const overviewHandlers = [ - rest.get(umbracoPath(`${UMB_SLUG}/overview`), (req, res, ctx) => { - const path = req.url.searchParams.get('path'); - if (!path) return; - const response = umbStylesheetData.getAllStylesheets(); + rest.get(umbracoPath(`${UMB_SLUG}/overview`), async (req, res, ctx) => { + const skipParam = req.url.searchParams.get('skip'); + const takeParam = req.url.searchParams.get('take'); + const response = umbStylesheetMockDb.getOverview({ + skip: skipParam ? parseInt(skipParam) : undefined, + take: takeParam ? parseInt(takeParam) : undefined, + }); return res(ctx.status(200), ctx.json(response)); }), ]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/rename.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/rename.handlers.ts index b5cdf1cdf8..dce4556047 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/rename.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/rename.handlers.ts @@ -1,5 +1,5 @@ const { rest } = window.MockServiceWorker; -import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js'; import { UMB_SLUG } from './slug.js'; import { RenameStylesheetRequestModel } from '@umbraco-cms/backoffice/backend-api'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; @@ -12,7 +12,7 @@ export const renameHandlers = [ const requestBody = (await req.json()) as RenameStylesheetRequestModel; if (!requestBody) return res(ctx.status(400, 'no body found')); - const newPath = umbStylesheetData.file.rename(decodeURIComponent(path), requestBody.name); + const newPath = umbStylesheetMockDb.file.rename(decodeURIComponent(path), requestBody.name); return res( ctx.status(201), diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/tree.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/tree.handlers.ts index 1551bb800d..7441982c84 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/tree.handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/stylesheet/tree.handlers.ts @@ -1,18 +1,18 @@ const { rest } = window.MockServiceWorker; -import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js'; +import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js'; import { UMB_SLUG } from './slug.js'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; export const treeHandlers = [ rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => { - const response = umbStylesheetData.tree.getRoot(); + const response = umbStylesheetMockDb.tree.getRoot(); return res(ctx.status(200), ctx.json(response)); }), rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => { const parentPath = req.url.searchParams.get('parentPath'); if (!parentPath) return res(ctx.status(400)); - const response = umbStylesheetData.tree.getChildrenOf(parentPath); + const response = umbStylesheetMockDb.tree.getChildrenOf(parentPath); return res(ctx.status(200), ctx.json(response)); }), ];