Merge pull request #41 from killer-cf/call-audio-video-jitsi

Call audio video jitsi
This commit is contained in:
2025-11-23 15:11:29 -03:00
committed by GitHub
12 changed files with 2747 additions and 709 deletions

View File

@@ -77,6 +77,34 @@
},
],
},
{
categoria: "Controle de Ponto",
descricao: "Gerencie registros de ponto dos funcionários",
Icon: Clock,
gradient: "from-cyan-500/10 to-cyan-600/20",
accentColor: "text-cyan-600",
bgIcon: "bg-cyan-500/20",
opcoes: [
{
nome: "Registro de Pontos",
descricao: "Visualizar e gerenciar registros de ponto",
href: "/recursos-humanos/registro-pontos",
Icon: Clock,
},
{
nome: "Homologação de Registro",
descricao: "Edite registros de ponto e ajuste banco de horas",
href: "/recursos-humanos/controle-ponto/homologacao",
Icon: CheckCircle2,
},
{
nome: "Dispensa de Registro",
descricao: "Gerencie períodos de dispensa de registro de ponto",
href: "/recursos-humanos/controle-ponto/dispensa",
Icon: XCircle,
},
],
},
{
categoria: "Gestão de Férias e Licenças",
descricao: "Controle de férias, atestados e licenças",
@@ -121,34 +149,6 @@
},
],
},
{
categoria: "Controle de Ponto",
descricao: "Gerencie registros de ponto dos funcionários",
Icon: Clock,
gradient: "from-cyan-500/10 to-cyan-600/20",
accentColor: "text-cyan-600",
bgIcon: "bg-cyan-500/20",
opcoes: [
{
nome: "Registro de Pontos",
descricao: "Visualizar e gerenciar registros de ponto",
href: "/recursos-humanos/registro-pontos",
Icon: Clock,
},
{
nome: "Homologação de Registro",
descricao: "Edite registros de ponto e ajuste banco de horas",
href: "/recursos-humanos/controle-ponto/homologacao",
Icon: CheckCircle2,
},
{
nome: "Dispensa de Registro",
descricao: "Gerencie períodos de dispensa de registro de ponto",
href: "/recursos-humanos/controle-ponto/dispensa",
Icon: XCircle,
},
],
},
];
</script>

View File

@@ -18,6 +18,12 @@
let homologacaoParaExcluir = $state<Id<'homologacoesPonto'> | null>(null);
let mostrandoModalDetalhes = $state(false);
let mostrandoModalExcluir = $state(false);
// Filtros de período
const hoje = new Date();
const trintaDiasAtras = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);
let dataInicioFiltro = $state(trintaDiasAtras.toISOString().split('T')[0]!);
let dataFimFiltro = $state(hoje.toISOString().split('T')[0]!);
// Monitorar mudanças em funcionarioSelecionado
$effect(() => {
@@ -116,8 +122,8 @@
}
return {
funcionarioId: funcionarioSelecionado as Id<'funcionarios'>,
dataInicio: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0]!,
dataFim: new Date().toISOString().split('T')[0]!,
dataInicio: dataInicioFiltro,
dataFim: dataFimFiltro,
};
});
@@ -364,18 +370,49 @@
<div class="card bg-base-100 shadow-xl mb-6">
<div class="card-body">
<h2 class="card-title mb-4">Selecionar Funcionário</h2>
<select
class="select select-bordered w-full"
bind:value={funcionarioSelecionado}
disabled={modoEdicao}
>
<option value="">Selecione um funcionário</option>
{#each funcionarios as funcionario}
<option value={funcionario._id as string}>
{funcionario.nome} {funcionario.matricula ? `(${funcionario.matricula})` : ''}
</option>
{/each}
</select>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div class="form-control">
<label class="label">
<span class="label-text font-medium">Funcionário</span>
</label>
<select
class="select select-bordered w-full"
bind:value={funcionarioSelecionado}
disabled={modoEdicao}
>
<option value="">Selecione um funcionário</option>
{#each funcionarios as funcionario}
<option value={funcionario._id as string}>
{funcionario.nome} {funcionario.matricula ? `(${funcionario.matricula})` : ''}
</option>
{/each}
</select>
</div>
<div class="form-control">
<label class="label">
<span class="label-text font-medium">Data Início</span>
</label>
<input
type="date"
class="input input-bordered w-full"
bind:value={dataInicioFiltro}
disabled={modoEdicao}
max={dataFimFiltro}
/>
</div>
<div class="form-control">
<label class="label">
<span class="label-text font-medium">Data Fim</span>
</label>
<input
type="date"
class="input input-bordered w-full"
bind:value={dataFimFiltro}
disabled={modoEdicao}
min={dataInicioFiltro}
/>
</div>
</div>
</div>
</div>