From f429f940d4c28c79ac778d1f99f200e8bc91e4ca Mon Sep 17 00:00:00 2001
From: SanJacobs
Date: Thu, 18 May 2023 15:47:01 +0200
Subject: Fixed some crucial bugs, did some minor improvements

---
 src/main.odin |  4 ++--
 src/time.odin | 25 +++++++++++++++++--------
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/main.odin b/src/main.odin
index 2030c2f..36a1c2f 100644
--- a/src/main.odin
+++ b/src/main.odin
@@ -3,10 +3,10 @@ package main
 import "core:fmt"
 
 main :: proc() {
-	test()
+	//test()
 	new_workday({0, 0, 1, 1, 1},
 				{00, 08, 5, 5, 2023},
-				{00, 23, 5, 5, 2023},
+				{00, 07, 6, 5, 2023},
 				{30, 21, 5, 5, 2023})
 }
 
diff --git a/src/time.odin b/src/time.odin
index 6acfc20..56d7425 100644
--- a/src/time.odin
+++ b/src/time.odin
@@ -47,7 +47,7 @@ Workday :: struct {
 	wrap		 : Moment,
 	planned_wrap : Moment,
 	
-	blocks : [15]Timeblock,
+	blocks : [12]Timeblock,
 	total_timeblocks : int,
 }
 
@@ -71,7 +71,8 @@ new_workday :: proc(previous_wrap    : Moment,
 								// Paragraph 6.7 says that up to 2 hours of unused warned overtime counts as worktime,
 								// though so that at least one hour of the unused overtime is not counted.
 								// (It's unclear if an 8-hour day that ends 3 hours in counts as having 5 hours of unused overtime)
-								max(clamp(sub(planned_wrap, {0, 1, 0}), wrap, add(planned_wrap, {0, 2, 0})),
+								max(clamp(sub(planned_wrap, {0, 1, 0}), wrap, add(wrap, {0, 2, 0})),
+								//max(sub(planned_wraptime, {0,1,0}), wrap),
 									add(call, {0, 4, 0})), 0, ""}
 									//  ^ Minimum 4 hour day ^
 	
@@ -90,7 +91,7 @@ new_workday :: proc(previous_wrap    : Moment,
 		add(call, {0, 14, 0}), // The 14-hour mark
 		{0, 22, call.day, call.month, call.year}, // 22:00 in the evening
 		add({0, 23, call.day, call.month, call.year}, {0, 1, 0}), // Midnight
-		add({0, 22, call.day, call.month, call.year}, {0, 7, 0}), // 06:00 the next morning
+		add({0, 23, call.day, call.month, call.year}, {0, 7, 0}), // 06:00 the next morning
 	}
 	
 	// Eliminate planned wrap, if it occurs within normal 8-hour period.
@@ -102,23 +103,31 @@ new_workday :: proc(previous_wrap    : Moment,
 	
 	splitpoints_sorted: [sp_length]Moment = splitpoints
 	slice.sort_by(splitpoints_sorted[:], lessMoment)
+
+	for each_point, i in splitpoints_sorted {
+		fmt.printf("Splitpoint %2i: %s\n", i+1, toString(each_point))
+	}
 	
 	working_block: Timeblock = initial_block
+	fmt.println("working_block: ", toString(working_block))
 	
 	j: int = 0
-	for each_moment in splitpoints_sorted {
+	for each_point in splitpoints_sorted {
 		// If each splitpoint moment is within the workday, and is not equal to the start of the current block
-		if sortable(each_moment) > sortable(call) && sortable(each_moment) < sortable(wrap) && each_moment != initial_block.start {
-			blocks[j], working_block = timesplit(working_block, each_moment)
+		if sortable(each_point) > sortable(call) &&
+		   sortable(each_point) < sortable(wrap) &&
+		   each_point != working_block.start {
+
+			blocks[j], working_block = timesplit(working_block, each_point)
 			j += 1
-			fmt.println("Split and wrote:", j)
+			//fmt.println("Split and wrote:", j)
 		}
 	}
 	blocks[j] = working_block
 	j += 1
 	total_timeblocks = j
 	
-	slice.sort_by(blocks[:], lessTimeblock)
+	//slice.sort_by(blocks[:], lessTimeblock)
 	
 	for each_block, i in blocks {
 		fmt.printf("Block %2i: %s\n", i+1, toString(each_block))
-- 
cgit v1.2.1