From 731f36ae0228ea6cb0f83467575e7520dd88df63 Mon Sep 17 00:00:00 2001 From: Johan van der Heide Date: Thu, 26 Feb 2026 10:39:42 +0100 Subject: [PATCH 1/2] Rename dashboard_components to workstation_components and update --- src/equipment/api/listEquipment.ts | 187 +++++++++++++------------- src/equipment/interfaces/equipment.ts | 5 +- src/index.ts | 2 +- 3 files changed, 100 insertions(+), 94 deletions(-) diff --git a/src/equipment/api/listEquipment.ts b/src/equipment/api/listEquipment.ts index 3e5670f..7b62839 100644 --- a/src/equipment/api/listEquipment.ts +++ b/src/equipment/api/listEquipment.ts @@ -1,96 +1,103 @@ import axios from "axios"; -import { Run } from "@jield/solodb-typescript-core/run/interfaces/run"; -import { Equipment } from "@jield/solodb-typescript-core/equipment/interfaces/equipment"; -import { ApiFormattedResponse, ApiResponse } from "@jield/solodb-typescript-core/core/interfaces/response"; -import { StatusMail } from "@jield/solodb-typescript-core/equipment/interfaces/statusMail"; -import { Room } from "@jield/solodb-typescript-core/room/interfaces/room"; -import { FilterData } from "@jield/solodb-typescript-core/core/interfaces/filter"; +import {Run} from "@jield/solodb-typescript-core/run/interfaces/run"; +import {Equipment} from "@jield/solodb-typescript-core/equipment/interfaces/equipment"; +import {ApiFormattedResponse, ApiResponse} from "@jield/solodb-typescript-core/core/interfaces/response"; +import {StatusMail} from "@jield/solodb-typescript-core/equipment/interfaces/statusMail"; +import {Room} from "@jield/solodb-typescript-core/room/interfaces/room"; +import {FilterData} from "@jield/solodb-typescript-core/core/interfaces/filter"; function cleanFilterData(data: FilterData): FilterData { - let cleanedData = { ...data }; - cleanedData.facet = Object.fromEntries(Object.entries(data.facet).filter(([_, facet]) => facet.values.length > 0)); - - if (data.filter.general.length <= 0) { - // @ts-expect-error - cleanedData.filter = {}; - } - return cleanedData; + let cleanedData = {...data}; + cleanedData.facet = Object.fromEntries(Object.entries(data.facet).filter(([_, facet]) => facet.values.length > 0)); + + if (data.filter.general.length <= 0) { + // @ts-expect-error + cleanedData.filter = {}; + } + return cleanedData; } -export default async function listEquipment({ - environment, - run, - room, - statusMail, - page = 1, - pageSize = 25, - query, - filter, - order, - direction -}: { - environment?: string; - run?: Run; - room?: Room; - statusMail?: StatusMail; - page?: number; - pageSize?: number; - query?: string; - filter?: FilterData; - order?: string; - direction?: "desc" | "asc"; -}): Promise> { - const searchParams = new URLSearchParams(); - - if (environment !== undefined) { - searchParams.append("environment", environment); - } - - if (run !== undefined) { - searchParams.append("run", run.id.toString()); - } - - if (room !== undefined) { - searchParams.append("room", room.id.toString()); - } - - if (query !== undefined) { - searchParams.append("query", query); - } - - if (order !== undefined) { - searchParams.append("order", order); - } - - if (direction !== undefined) { - searchParams.append("direction", direction); - } - - if (statusMail !== undefined) { - searchParams.append("status_mail", statusMail.id.toString()); - - // Use a reasonable page size for infinite scrolling - searchParams.append("page_size", "200"); - } - - if (filter !== undefined) { - filter = cleanFilterData(filter); - searchParams.append("filter", btoa(JSON.stringify(filter))); - } - - searchParams.append("page", page.toString()); - searchParams.append("page_size", pageSize.toString()); - - let url = "list/equipment?" + searchParams.toString(); - - const response = await axios.get>(url); - const { data } = response; - - return { - items: data._embedded.items, - amountOfPages: data.page_count, - currentPage: data.page, - totalItems: data.total_items, - hasMore: data.page < data.page_count, - }; +export default async function listEquipment( + { + environment, + run, + room, + statusMail, + hasWorkstationComponents = false, + page = 1, + pageSize = 25, + query, + filter, + order, + direction + }: { + environment?: string; + run?: Run; + room?: Room; + statusMail?: StatusMail; + hasWorkstationComponents?: boolean, + page?: number; + pageSize?: number; + query?: string; + filter?: FilterData; + order?: string; + direction?: "desc" | "asc"; + }): Promise> { + const searchParams = new URLSearchParams(); + + if (environment !== undefined) { + searchParams.append("environment", environment); + } + + if (run !== undefined) { + searchParams.append("run", run.id.toString()); + } + + if (room !== undefined) { + searchParams.append("room", room.id.toString()); + } + + if (hasWorkstationComponents !== undefined) { + searchParams.append("has_workstation_components", 'true'); + } + + if (query !== undefined) { + searchParams.append("query", query); + } + + if (order !== undefined) { + searchParams.append("order", order); + } + + if (direction !== undefined) { + searchParams.append("direction", direction); + } + + if (statusMail !== undefined) { + searchParams.append("status_mail", statusMail.id.toString()); + + // Use a reasonable page size for infinite scrolling + searchParams.append("page_size", "200"); + } + + if (filter !== undefined) { + filter = cleanFilterData(filter); + searchParams.append("filter", btoa(JSON.stringify(filter))); + } + + searchParams.append("page", page.toString()); + searchParams.append("page_size", pageSize.toString()); + + let url = "list/equipment?" + searchParams.toString(); + + const response = await axios.get>(url); + const {data} = response; + + return { + items: data._embedded.items, + amountOfPages: data.page_count, + currentPage: data.page, + totalItems: data.total_items, + hasMore: data.page < data.page_count, + }; } diff --git a/src/equipment/interfaces/equipment.ts b/src/equipment/interfaces/equipment.ts index 03c5aa0..4bf7f41 100644 --- a/src/equipment/interfaces/equipment.ts +++ b/src/equipment/interfaces/equipment.ts @@ -15,11 +15,10 @@ export enum EquipmentGrade { "Storage" = 3, } -export enum DashboardComponent { +export enum WorkstationComponent { "ProcessNextStepInEquipment" = "ProcessNextStepInEquipment" } - export interface Equipment { id: number; name: string; @@ -38,7 +37,7 @@ export interface Equipment { main_tool_module_id: number | null; main_tool_latest_status?: EquipmentModuleStatus; is_available_for_rental: boolean; - dashboard_components: DashboardComponent[]; + workstation_components: WorkstationComponent[]; properties?: EquipmentProperty[]; room: Room; types: string[]; diff --git a/src/index.ts b/src/index.ts index 07da632..55ccdae 100644 --- a/src/index.ts +++ b/src/index.ts @@ -100,7 +100,7 @@ export type { ChemicalContainerUser } from "./chemical/interfaces/chemical/conta // equipment export { EquipmentGrade } from "./equipment/interfaces/equipment"; -export { DashboardComponent } from "./equipment/interfaces/equipment"; +export { WorkstationComponent } from "./equipment/interfaces/equipment"; export type { Equipment } from "./equipment/interfaces/equipment"; export type { EquipmentModule, EquipmentModuleType } from "./equipment/interfaces/equipment/equipmentModule"; export type { EquipmentProperty } from "./equipment/interfaces/equipment/equipmentProperty"; From e7aac10d510af08cf0fd7d9343c53b9e2db9303b Mon Sep 17 00:00:00 2001 From: Johan van der Heide Date: Thu, 26 Feb 2026 10:40:32 +0100 Subject: [PATCH 2/2] Rename dashboard_components to workstation_components and update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 90545de..5dd280a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@jield/solodb-typescript-core", - "version": "1.0.10", + "version": "1.0.11", "type": "module", "repository": "jield-webdev/solodb-typescript-core", "main": "./dist/index.cjs",