feat: Add 'atas' (minutes/records) management feature, and implement various improvements across UI, backend logic, and authentication.
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<script lang="ts">
|
||||
import { onMount, onDestroy } from 'svelte';
|
||||
import { useConvexClient } from 'convex-svelte';
|
||||
import { api } from '@sgse-app/backend/convex/_generated/api';
|
||||
import { obterTempoServidor, obterTempoPC } from '$lib/utils/sincronizacaoTempo';
|
||||
import { CheckCircle2, AlertCircle, Clock } from 'lucide-svelte';
|
||||
import { useConvexClient } from 'convex-svelte';
|
||||
import { AlertCircle, CheckCircle2, Clock } from 'lucide-svelte';
|
||||
import { onDestroy, onMount } from 'svelte';
|
||||
import { obterTempoPC, obterTempoServidor } from '$lib/utils/sincronizacaoTempo';
|
||||
|
||||
const client = useConvexClient();
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
let timestampAjustado: number;
|
||||
if (gmtOffset !== 0) {
|
||||
// Aplicar offset configurado
|
||||
timestampAjustado = timestampBase + (gmtOffset * 60 * 60 * 1000);
|
||||
timestampAjustado = timestampBase + gmtOffset * 60 * 60 * 1000;
|
||||
} else {
|
||||
// Quando GMT = 0, manter timestamp UTC puro
|
||||
// O toLocaleTimeString() converterá automaticamente para o timezone local do navegador
|
||||
@@ -99,7 +99,7 @@
|
||||
return tempoAtual.toLocaleTimeString('pt-BR', {
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit',
|
||||
second: '2-digit'
|
||||
});
|
||||
});
|
||||
|
||||
@@ -108,30 +108,30 @@
|
||||
weekday: 'long',
|
||||
day: '2-digit',
|
||||
month: 'long',
|
||||
year: 'numeric',
|
||||
year: 'numeric'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="flex flex-col items-center gap-4 w-full">
|
||||
<div class="flex w-full flex-col items-center gap-4">
|
||||
<!-- Hora -->
|
||||
<div class="text-5xl font-black font-mono text-primary tracking-tight drop-shadow-sm">
|
||||
<div class="text-primary font-mono text-5xl font-black tracking-tight drop-shadow-sm">
|
||||
{horaFormatada}
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Data -->
|
||||
<div class="text-base font-semibold text-base-content/80 capitalize">
|
||||
<div class="text-base-content/80 text-base font-semibold capitalize">
|
||||
{dataFormatada}
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Status de Sincronização -->
|
||||
<div class="flex items-center gap-2 px-4 py-2 rounded-full {
|
||||
sincronizado
|
||||
? 'bg-success/20 text-success border border-success/30'
|
||||
: erro
|
||||
? 'bg-warning/20 text-warning border border-warning/30'
|
||||
: 'bg-base-300/50 text-base-content/60 border border-base-300'
|
||||
}">
|
||||
<div
|
||||
class="flex items-center gap-2 rounded-full px-4 py-2 {sincronizado
|
||||
? 'bg-success/20 text-success border-success/30 border'
|
||||
: erro
|
||||
? 'bg-warning/20 text-warning border-warning/30 border'
|
||||
: 'bg-base-300/50 text-base-content/60 border-base-300 border'}"
|
||||
>
|
||||
{#if sincronizado}
|
||||
<CheckCircle2 class="h-4 w-4" strokeWidth={2.5} />
|
||||
<span class="text-sm font-semibold">
|
||||
@@ -150,4 +150,3 @@
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user