Compare commits

...

2 Commits

Author SHA1 Message Date
Docker Config Backup
7e808f6528 Save before creating restore point: Session start
Auto-saved at 2025-07-29 14:54:42

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 14:54:42 +02:00
Docker Config Backup
d702a2df7f Final auto-save before shutdown
Auto-saved at 2025-07-29 14:54:35

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 14:54:35 +02:00
5 changed files with 77 additions and 49 deletions

View File

@@ -36,6 +36,14 @@ EOF
echo "✅ Changes committed successfully" echo "✅ Changes committed successfully"
# Auto-push to remote repository
echo "📤 Pushing to remote repository..."
if git push origin main 2>/dev/null; then
echo "✅ Successfully pushed to remote"
else
echo "⚠️ Push failed (remote may be unreachable)"
fi
# Show short log # Show short log
git log --oneline -3 git log --oneline -3
else else

View File

@@ -102,13 +102,13 @@ export function TimeshiftSpreadsheet({ teamId, teamName }: TimeshiftSpreadsheetP
"Pohotovost IT" "Pohotovost IT"
] ]
// Add separator column and "Práce mimo směnu" column // Add one more column to the right
titleRow.push("", "") // Empty separator + empty for merged cell titleRow.push("")
dayNameRow.push("", "Práce mimo směnu") // Empty separator + the text dayNameRow.push("")
yearRow.push("", "") // Empty separator + empty for merged cell yearRow.push("")
monthRow.push("", "") // Empty separator + empty for merged cell monthRow.push("")
dateRow.push("", "") // Empty separator + empty for merged cell dateRow.push("")
shiftRow.push("", "") // Empty separator + empty for merged cell shiftRow.push("")
const employeeRows = employees.map(name => { const employeeRows = employees.map(name => {
const row = [name] const row = [name]
@@ -263,7 +263,7 @@ export function TimeshiftSpreadsheet({ teamId, teamName }: TimeshiftSpreadsheetP
} }
// Style weekend days (Saturday/Sunday in day name row and date rows below) // Style weekend days (Saturday/Sunday in day name row and date rows below)
for (let col = 1; col < (data[0]?.length || 0) - 2; col += 2) { // -2 to exclude separator and Práce mimo směnu columns for (let col = 1; col < (data[0]?.length || 0); col += 2) {
const dayName = data[1]?.[col] const dayName = data[1]?.[col]
if (dayName === "Sobota" || dayName === "Neděle") { if (dayName === "Sobota" || dayName === "Neděle") {
const colLetter = getExcelColumnName(col) const colLetter = getExcelColumnName(col)
@@ -281,27 +281,9 @@ export function TimeshiftSpreadsheet({ teamId, teamName }: TimeshiftSpreadsheetP
} }
} }
// Style the "Práce mimo směnu" column (last column) // Remove formatting specifically from BZ6 and CA6 cells
const totalCols = data[0]?.length || 0 styles["BZ6"] = "" // Override any formatting for BZ6
if (totalCols >= 2) { styles["CA6"] = "" // Override any formatting for CA6
const separatorColIndex = totalCols - 2
const praceMimoColIndex = totalCols - 1
const separatorColLetter = getExcelColumnName(separatorColIndex)
const praceMimoColLetter = getExcelColumnName(praceMimoColIndex)
// Style separator column with left border
for (let row = 2; row <= 6; row++) {
styles[`${separatorColLetter}${row}`] = "border-left: 2px solid #000000;"
}
// Style "Práce mimo směnu" column
styles[`${praceMimoColLetter}2`] = "border: 1px solid #000000; text-align: center; vertical-align: middle; font-weight: bold; height: 50px;"
for (let row = 3; row <= 6; row++) {
styles[`${praceMimoColLetter}${row}`] = "border-left: 1px solid #000000; border-right: 1px solid #000000;"
}
// Bottom border for the last row of the merged cell
styles[`${praceMimoColLetter}6`] += " border-bottom: 1px solid #000000;"
}
} }
console.log("Initializing jspreadsheet with config:", { console.log("Initializing jspreadsheet with config:", {
@@ -334,10 +316,10 @@ export function TimeshiftSpreadsheet({ teamId, teamName }: TimeshiftSpreadsheetP
const instance = jspreadsheetInstance.current as any const instance = jspreadsheetInstance.current as any
if (instance.setMerge) { if (instance.setMerge) {
try { try {
// Merge all pairs in rows 2, 3, 4, 5 (day names, year, month, day) excluding separator and Práce mimo směnu columns // Merge all pairs in rows 1, 2, 3, 4, 5 (title, day names, year, month, day)
const totalCols = data[0]?.length || 0 const totalCols = data[0]?.length || 0
for (let row = 2; row <= 5; row++) { for (let row = 1; row <= 5; row++) {
for (let col = 1; col < totalCols - 2; col += 2) { // -2 to exclude separator and Práce mimo směnu columns for (let col = 1; col < totalCols; col += 2) {
const colLetter = getExcelColumnName(col) const colLetter = getExcelColumnName(col)
try { try {
// Correct syntax: setMerge(cellAddress, colspan, rowspan) // Correct syntax: setMerge(cellAddress, colspan, rowspan)
@@ -347,15 +329,6 @@ export function TimeshiftSpreadsheet({ teamId, teamName }: TimeshiftSpreadsheetP
} }
} }
} }
// Merge "Práce mimo směnu" column vertically from rows 2-6
const praceMimoColIndex = totalCols - 1
const praceMimoColLetter = getExcelColumnName(praceMimoColIndex)
try {
instance.setMerge(`${praceMimoColLetter}2`, 1, 5) // 1 column, 5 rows (2-6)
} catch (error) {
console.error("Error merging Práce mimo směnu column:", error)
}
} catch (error) { } catch (error) {
console.error("Error during merging:", error) console.error("Error during merging:", error)
} }
@@ -375,17 +348,12 @@ export function TimeshiftSpreadsheet({ teamId, teamName }: TimeshiftSpreadsheetP
if (rows[rowIndex]) { if (rows[rowIndex]) {
const cells = rows[rowIndex].querySelectorAll('td') const cells = rows[rowIndex].querySelectorAll('td')
cells.forEach((cell, cellIndex) => { cells.forEach((cell, cellIndex) => {
// Skip first two columns (row numbers and field labels), separator column, but include Práce mimo směnu // Skip first two columns (row numbers and field labels)
if (cellIndex > 1 && cellIndex < totalCells + 1) { // +1 because of row number column if (cellIndex > 1 && cellIndex < totalCells + 1) { // +1 because of row number column
const originalText = cell.textContent?.trim() const originalText = cell.textContent?.trim()
if (originalText) { if (originalText) {
// Special handling for "Práce mimo směnu" text // Use 12px font for all rotated values (date values, day names, and shifts)
if (originalText === "Práce mimo směnu") { cell.innerHTML = `<div style="transform: rotate(-90deg); font-size: 12px; height: 20px; display: flex; align-items: center; justify-content: center; white-space: nowrap;">${originalText}</div>`
cell.innerHTML = `<div style="transform: rotate(-90deg); font-size: 12px; height: 80px; display: flex; align-items: center; justify-content: center; white-space: nowrap; font-weight: bold;">${originalText}</div>`
} else if (cellIndex < totalCells - 1) { // Don't rotate separator column (empty)
// Use 12px font for all other rotated values (date values, day names, and shifts)
cell.innerHTML = `<div style="transform: rotate(-90deg); font-size: 12px; height: 20px; display: flex; align-items: center; justify-content: center; white-space: nowrap;">${originalText}</div>`
}
} }
} }
}) })

View File

@@ -1,2 +1,4 @@
2025-07-29 14:27:23 +02:00: (node:489145) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead. 2025-07-29 14:27:23 +02:00: (node:489145) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
2025-07-29 14:27:23 +02:00: (Use `node --trace-deprecation ...` to show where the warning was created) 2025-07-29 14:27:23 +02:00: (Use `node --trace-deprecation ...` to show where the warning was created)
2025-07-29 14:54:37 +02:00: (node:652376) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
2025-07-29 14:54:37 +02:00: (Use `node --trace-deprecation ...` to show where the warning was created)

View File

@@ -30,3 +30,29 @@
2025-07-29 14:35:16 +02:00: 📝 File changed: components/timeshift-spreadsheet.tsx (change) 2025-07-29 14:35:16 +02:00: 📝 File changed: components/timeshift-spreadsheet.tsx (change)
2025-07-29 14:35:16 +02:00: 📝 File changed: components/timeshift-spreadsheet.tsx (change) 2025-07-29 14:35:16 +02:00: 📝 File changed: components/timeshift-spreadsheet.tsx (change)
2025-07-29 14:35:46 +02:00: 🔄 Performing auto-commit... 2025-07-29 14:35:46 +02:00: 🔄 Performing auto-commit...
2025-07-29 14:35:46 +02:00: ✅ Auto-commit successful
2025-07-29 14:54:35 +02:00:
2025-07-29 14:54:35 +02:00: 🛑 Stopping auto-commit watcher...
2025-07-29 14:54:35 +02:00: 💾 Saving final changes...
2025-07-29 14:54:37 +02:00: 🚀 Timeshift Auto-Commit Watcher Started
2025-07-29 14:54:37 +02:00: ==========================================
2025-07-29 14:54:37 +02:00: 📅 Start time: 2025-07-29T12:54:37.822Z
2025-07-29 14:54:37 +02:00: 📁 Watching directories: components, app, lib, styles
2025-07-29 14:54:37 +02:00: 📄 File extensions: .tsx, .ts, .js, .jsx, .css, .scss, .json
2025-07-29 14:54:37 +02:00: ⏱️ Commit delay: 30s
2025-07-29 14:54:37 +02:00: 🚦 Max commits per hour: 10
2025-07-29 14:54:37 +02:00: 🔧 Process ID: 652376
2025-07-29 14:54:37 +02:00: ==========================================
2025-07-29 14:54:37 +02:00: 👀 Watching: /home/klas/timeshift/components
2025-07-29 14:54:37 +02:00: 👀 Watching: /home/klas/timeshift/app
2025-07-29 14:54:37 +02:00: 👀 Watching: /home/klas/timeshift/lib
2025-07-29 14:54:37 +02:00: ⚠️ Directory not found: /home/klas/timeshift/styles
2025-07-29 14:54:37 +02:00: 🚀 Auto-commit system ready! Press Ctrl+C to stop.
2025-07-29 14:54:37 +02:00: 📋 Commands available:
2025-07-29 14:54:37 +02:00: ./auto-commit.sh commit [message]
2025-07-29 14:54:37 +02:00: ./auto-commit.sh restore-point [description]
2025-07-29 14:54:37 +02:00: ./auto-commit.sh list
2025-07-29 14:54:37 +02:00: ./auto-commit.sh cleanup
2025-07-29 14:54:37 +02:00: (node:652376) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead.
2025-07-29 14:54:37 +02:00: (Use `node --trace-deprecation ...` to show where the warning was created)
2025-07-29 14:54:42 +02:00: 🔖 Creating restore point...

View File

@@ -28,3 +28,27 @@
2025-07-29 14:35:16 +02:00: 📝 File changed: components/timeshift-spreadsheet.tsx (change) 2025-07-29 14:35:16 +02:00: 📝 File changed: components/timeshift-spreadsheet.tsx (change)
2025-07-29 14:35:16 +02:00: 📝 File changed: components/timeshift-spreadsheet.tsx (change) 2025-07-29 14:35:16 +02:00: 📝 File changed: components/timeshift-spreadsheet.tsx (change)
2025-07-29 14:35:46 +02:00: 🔄 Performing auto-commit... 2025-07-29 14:35:46 +02:00: 🔄 Performing auto-commit...
2025-07-29 14:35:46 +02:00: ✅ Auto-commit successful
2025-07-29 14:54:35 +02:00:
2025-07-29 14:54:35 +02:00: 🛑 Stopping auto-commit watcher...
2025-07-29 14:54:35 +02:00: 💾 Saving final changes...
2025-07-29 14:54:37 +02:00: 🚀 Timeshift Auto-Commit Watcher Started
2025-07-29 14:54:37 +02:00: ==========================================
2025-07-29 14:54:37 +02:00: 📅 Start time: 2025-07-29T12:54:37.822Z
2025-07-29 14:54:37 +02:00: 📁 Watching directories: components, app, lib, styles
2025-07-29 14:54:37 +02:00: 📄 File extensions: .tsx, .ts, .js, .jsx, .css, .scss, .json
2025-07-29 14:54:37 +02:00: ⏱️ Commit delay: 30s
2025-07-29 14:54:37 +02:00: 🚦 Max commits per hour: 10
2025-07-29 14:54:37 +02:00: 🔧 Process ID: 652376
2025-07-29 14:54:37 +02:00: ==========================================
2025-07-29 14:54:37 +02:00: 👀 Watching: /home/klas/timeshift/components
2025-07-29 14:54:37 +02:00: 👀 Watching: /home/klas/timeshift/app
2025-07-29 14:54:37 +02:00: 👀 Watching: /home/klas/timeshift/lib
2025-07-29 14:54:37 +02:00: ⚠️ Directory not found: /home/klas/timeshift/styles
2025-07-29 14:54:37 +02:00: 🚀 Auto-commit system ready! Press Ctrl+C to stop.
2025-07-29 14:54:37 +02:00: 📋 Commands available:
2025-07-29 14:54:37 +02:00: ./auto-commit.sh commit [message]
2025-07-29 14:54:37 +02:00: ./auto-commit.sh restore-point [description]
2025-07-29 14:54:37 +02:00: ./auto-commit.sh list
2025-07-29 14:54:37 +02:00: ./auto-commit.sh cleanup
2025-07-29 14:54:42 +02:00: 🔖 Creating restore point...