Compare commits
3 Commits
23ac4ed8d7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8bfc2b685b | |||
| 229cbf7223 | |||
| 704a8f09b7 |
@@ -16,6 +16,8 @@ COPY . .
|
||||
|
||||
# Standalone-Output aktiviert kleinste Images
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
ARG BUILD_DATE
|
||||
ENV NEXT_PUBLIC_BUILD_DATE=$BUILD_DATE
|
||||
RUN npm run build
|
||||
|
||||
# ── Stage 3: Produktions-Image ────────────────────────────────────────────────
|
||||
|
||||
@@ -5,6 +5,10 @@ import { checkAblauf } from '@/lib/checkAblauf';
|
||||
import moment from 'moment';
|
||||
import { Tablette, DataResponse } from '@/types/tablette';
|
||||
|
||||
// Verhindert Caching der Route
|
||||
export const dynamic = 'force-dynamic';
|
||||
export const revalidate = 0;
|
||||
|
||||
function formatDate(dt: Date | string | null): string {
|
||||
if (!dt) return '';
|
||||
const d = moment(dt);
|
||||
@@ -24,22 +28,26 @@ export async function GET(req: NextRequest) {
|
||||
|
||||
try {
|
||||
const [rows] = await pool.query<RowDataPacket[]>(
|
||||
`SELECT tab, pday, cnt, at, akt, until, warn, rem, \`order\`
|
||||
`SELECT tab, pday, cnt, at, rem, \`order\`
|
||||
FROM tabletten
|
||||
ORDER BY ${col} ${sord}, rem DESC, tab ASC`
|
||||
);
|
||||
|
||||
const values: Tablette[] = rows.map((r) => ({
|
||||
tab: r.tab,
|
||||
pday: r.pday,
|
||||
cnt: r.cnt,
|
||||
at: formatDate(r.at),
|
||||
akt: r.akt,
|
||||
until: formatDate(r.until),
|
||||
warn: r.warn === 1 || r.warn === true,
|
||||
rem: r.rem,
|
||||
order: r.order,
|
||||
}));
|
||||
const values: Tablette[] = rows.map((r) => {
|
||||
// Berechne die aktuellen Werte dynamisch basierend auf dem heutigen Datum
|
||||
const calculated = checkAblauf({ cnt: r.cnt, pday: r.pday, at: r.at });
|
||||
return {
|
||||
tab: r.tab,
|
||||
pday: r.pday,
|
||||
cnt: r.cnt,
|
||||
at: formatDate(r.at),
|
||||
akt: calculated.akt,
|
||||
until: formatDate(calculated.until),
|
||||
warn: calculated.warn,
|
||||
rem: r.rem,
|
||||
order: r.order,
|
||||
};
|
||||
});
|
||||
|
||||
const result: DataResponse = {
|
||||
total: 1,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
'use client';
|
||||
|
||||
import { useState } from 'react';
|
||||
import LogoutButton from '@/components/LogoutButton';
|
||||
import packageJson from '@/package.json';
|
||||
|
||||
@@ -9,7 +10,9 @@ interface AppLayoutProps {
|
||||
|
||||
export default function AppLayout({ children }: AppLayoutProps) {
|
||||
const version = packageJson.version;
|
||||
const buildDate = process.env.NEXT_PUBLIC_BUILD_DATE || new Date().toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' });
|
||||
const [buildDate] = useState(() =>
|
||||
process.env.NEXT_PUBLIC_BUILD_DATE || new Date().toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' })
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="app-wrapper">
|
||||
|
||||
@@ -2,13 +2,15 @@
|
||||
# Lokaler Betrieb – MySQL läuft bereits auf dem Host (localhost)
|
||||
#
|
||||
# Start:
|
||||
# docker compose -f docker-compose.local.yml up --build
|
||||
# BUILD_DATE=$(date +%d.%m.%Y) docker compose -f docker-compose.local.yml up --build
|
||||
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
BUILD_DATE: "$(date +%d.%m.%Y)"
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
|
||||
@@ -15,6 +15,8 @@ services:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
BUILD_DATE: "$(date +%d.%m.%Y)"
|
||||
platforms:
|
||||
- linux/amd64
|
||||
- linux/arm64
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "tabletten_next",
|
||||
"version": "1.2.0",
|
||||
"version": "1.2.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
Reference in New Issue
Block a user