From 18c2687e789e22e5a50f8993e8aa3dfb0079a028 Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Thu, 3 Jul 2025 11:53:20 -0400 Subject: [PATCH] started --- block_core.ts | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++ block_graph.ts | 4 +++ block_role.ts | 5 +++ 3 files changed, 103 insertions(+) create mode 100644 block_core.ts create mode 100644 block_graph.ts create mode 100644 block_role.ts diff --git a/block_core.ts b/block_core.ts new file mode 100644 index 0000000..d7467d5 --- /dev/null +++ b/block_core.ts @@ -0,0 +1,94 @@ +export type Work = {data:string, user:string, time:number}; +export type Part = {name:string, time:number, work:Work[], need:Desk[], make:Desk[]}; +export type Need = [part:Part, time:number]; +export type DeskMode = "all" | "one"; +export type Desk = {name:string, need:Need[], make:Part[], mode:DeskMode, role:[]}; + +const Part = (name:string):Part=> +{ + return {name, time:0, work:[], need:[], make:[]}; +} + +const Desk = (name:string, need:Need[], make:Part[], mode:DeskMode):Desk=> +{ + const obj:Desk = {name, need, make, mode, role:[]}; + for(let i=0; i{ + const work = {data, user:"", time}; + if(time > part.time){ + part.work.unshift(work); + part.time = time; + } + else + { + part.work.push(work); + } + part.need.forEach(Recompute); + part.make.forEach(Recompute); +} + +const Recompute = (desk:Desk)=>{ + + let latestMake = -Infinity; + for(let i=0; i latestMake) + { + latestMake = time; + } + } + + let latestNeed = -Infinity; + const dirtyNeed = []; + for(let i=0; i latestNeed) + { + latestNeed = time; + } + if(time < latestMake) + { + dirtyNeed.push(i); + } + } + + const dirtyMake = [] + for(let i=0; i latestNeed) + { + dirtyMake.push(i); + } + } + + return [dirtyNeed, dirtyMake]; +} + + +type User = {name:string}; +type Role = [name:string, users:[]] + +function BlockRole>(r:Records):{[K in keyof Records]: Role} { + const result = {}; + for (const key in r) { + result[key] = [key, []]; + } + return result; +} + +export {Part, Desk, Work, Recompute, BlockRole}; \ No newline at end of file diff --git a/block_graph.ts b/block_graph.ts new file mode 100644 index 0000000..bd92509 --- /dev/null +++ b/block_graph.ts @@ -0,0 +1,4 @@ +import * as Core from "./block_core.ts"; + +const resp = await import("./block_role.ts"); +const roleTest = resp.default.r1; \ No newline at end of file diff --git a/block_role.ts b/block_role.ts new file mode 100644 index 0000000..b94a192 --- /dev/null +++ b/block_role.ts @@ -0,0 +1,5 @@ +import { BlockRole } from "./block_core.ts"; + +export default BlockRole({ + r1:"Developer" +}) \ No newline at end of file