10 Commits

Author SHA1 Message Date
santiago a59f731658 Se agrego el boton de regresar al diagrama 2026-01-21 13:39:40 -06:00
santiago c780754c18 Modificacioneds 2026-01-20 13:49:31 -06:00
santiago 88afc64b7c Se agrego una nueva cordinacion 2026-01-20 13:48:12 -06:00
santiago e8510ca353 Merge remote-tracking branch 'origin/develop' 2026-01-09 17:39:42 -06:00
Patriots01 36c79f55a3 Modificaciones 2025-11-24 16:10:39 +00:00
Patriots01 ad0b49ac7f Se modifico un area del diagrama 2025-11-24 16:09:17 +00:00
santiago fa3213cdda Merge branch 'develop' of https://repositorio.acatlan.unam.mx/smoreno/funcionarios_front 2025-11-21 20:09:11 -06:00
Patriots01 373ecba6eb Merge remote-tracking branch 'origin/develop' 2025-11-21 21:46:33 +00:00
santiago 91ef6b4ddc Se modifico la forma en la busqueda del organigrama ahora es por id, y se agregaron nuevas adscripciones en el dataset 2025-11-13 21:35:21 +01:00
santiago b3bf3f440e Modificacion en el .svg y la forma en que se buscan las adscripciones 2025-11-11 22:00:09 +01:00
8 changed files with 607 additions and 102 deletions
-85
View File
@@ -1,85 +0,0 @@
name: Despliegue Automatizado Universal
on:
push:
branches:
- develop
- master
jobs:
get-context:
runs-on: host
outputs:
node_version: ${{ steps.setup.outputs.version }}
target_app: ${{ steps.setup.outputs.app }}
steps:
- name: Resolver Aplicación desde apps.conf
id: setup
run: |
# 1. Obtener el nombre del repositorio actual en Gitea (ej: front-Censo)
REPO_NAME="${{ github.event.repository.name }}"
# 2. Determinar si buscamos un entorno -dev (develop) o producción (master)
if [ "${{ github.ref_name }}" = "develop" ]; then
SUFFIX="-dev"
else
SUFFIX=""
fi
echo "Buscando qué sección de apps.conf tiene REPO=$REPO_NAME y termina en '$SUFFIX'..."
# 3. Buscar en /etc/apps.conf el bloque que contenga REPO=nombre_del_repo
TARGET_APP=$(awk -v repo="REPO=$REPO_NAME" -v suf="$SUFFIX" '
/^\[/ { gsub(/[\[\]]/, "", $0); current_box=$0; next }
$0 == repo {
if ((suf == "-dev" && current_box ~ /-dev$/) || (suf == "" && current_box !~ /-dev$/)) {
print current_box;
exit
}
}
' /etc/apps.conf)
if [ -z "$TARGET_APP" ]; then
echo "ERROR: No se encontró ninguna sección en /etc/apps.conf para el repositorio $REPO_NAME con el sufijo correcto."
exit 1
fi
# 4. Leer la versión de Node del bloque encontrado
VERSION=$(awk -v app="$TARGET_APP" '
$0=="["app"]" { found=1; next }
/^\[/ && found { exit }
found && /^NODE=/ { split($0, a, "="); print a[2]; exit }
' /etc/apps.conf)
MAJOR_VERSION=$(echo "$VERSION" | tr -d '[:space:]' | grep -oE '[0-9]+' | head -n1)
echo "-> ID de Aplicación encontrado: $TARGET_APP"
echo "-> Versión Mayor de Node resuelta: $MAJOR_VERSION"
echo "app=${TARGET_APP}" >> $GITHUB_OUTPUT
echo "version=${MAJOR_VERSION}" >> $GITHUB_OUTPUT
build:
needs: get-context
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configurar Node.js dinámicamente
uses: actions/setup-node@v4
with:
node-version: ${{ needs.get-context.outputs.node_version }}
- run: npm ci
- run: npm run build
deploy:
needs: [get-context, build]
runs-on: host
steps:
- name: Ejecutar Despliegue en Servidor Físico
run: |
TARGET_APP="${{ needs.get-context.outputs.target_app }}"
BRANCH_NAME="${{ github.ref_name }}"
sudo -u deploy /home/deploy/scripts/deploy-front.sh "$TARGET_APP" "$BRANCH_NAME"
-13
View File
@@ -1,13 +0,0 @@
110 Departamento de movilidad estudiantil intercambio academico
198 secretaría Auxiliar de Extensión Universitaria y Vinculación Institucional
148 Secretaría Auxiliar de la Secretaría General", cargo: "Secretario Auxiliar
5 Unidad de Administración y Recursos", cargo
3 Unidad de Servicios a la Comunidad
61 Superintendencia de Obras y Mantenimiento
59 Unidad de la Oficina Jurídica
+11
View File
@@ -1290,6 +1290,7 @@
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
@@ -1716,6 +1717,7 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz",
"integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==",
"license": "MIT",
"peer": true,
"dependencies": {
"csstype": "^3.0.2"
}
@@ -1791,6 +1793,7 @@
"integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.46.0",
"@typescript-eslint/types": "8.46.0",
@@ -2308,6 +2311,7 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -3248,6 +3252,7 @@
"integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -3422,6 +3427,7 @@
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@rtsao/scc": "^1.1.0",
"array-includes": "^3.1.9",
@@ -5630,6 +5636,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
"integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -5670,6 +5677,7 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
"license": "MIT",
"peer": true,
"dependencies": {
"scheduler": "^0.26.0"
},
@@ -5898,6 +5906,7 @@
"resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz",
"integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==",
"license": "MIT",
"peer": true,
"dependencies": {
"chokidar": "^4.0.0",
"immutable": "^5.0.2",
@@ -6427,6 +6436,7 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@@ -6576,6 +6586,7 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 21 KiB

+18 -1
View File
@@ -5,6 +5,7 @@ import BuscarFuncionario from '@/components/BuscarFuncionario';
import OrganigramaInteractivo from '@/components/OrganigramaInteractivo';
import axios from 'axios';
import { Funcionario, PayloadBusqueda } from '@/types/Funcionarios';
import { useRouter } from 'next/navigation';
export default function Home() {
@@ -18,6 +19,8 @@ export default function Home() {
const isPanning = useRef(false);
const lastMouse = useRef<{ x: number; y: number } | null>(null);
const router = useRouter();
const clamp = (v: number, a = 0.5, b = 5) => Math.min(Math.max(v, a), b);
const handleWheel = useCallback((e: React.WheelEvent) => {
@@ -105,6 +108,12 @@ export default function Home() {
.join(' ');
};
const redirect = () => {
setResultados([]);
setCurrentAreaLabel('');
router.push('/')
}
return (
<main className="container-fluid py-4 bg-light min-h-screen">
<div className="row">
@@ -112,7 +121,15 @@ export default function Home() {
<div className="col-12 col-md-9">
<h2 className="text-dorado mb-4">Directorio de Funcionarios</h2>
{currentAreaLabel && <h3 className="text-dorado mb-3 ms-2">{currentAreaLabel}</h3>}
{currentAreaLabel && (
<div className='d-flex align-items-center justify-content-between'>
<h3 className="text-dorado mb-3 ms-2">
{currentAreaLabel}
</h3>
<button type='button' className='btn btn-outline-primary btn-sm me-3' onClick={redirect}>Regresar al diagrama</button>
</div>
)}
+1 -1
View File
@@ -1,4 +1,4 @@
'use client';
'use client';
import React, { useState, useEffect } from 'react';
import axios from 'axios';
+1
View File
@@ -23,6 +23,7 @@ export const AREAS: Array<{ id: number; label: string }> = [
{ id: 55, label: 'Coordinación del Programa de Diseño Gráfico' },
{ id: 54, label: 'Coordinación del Programa de Economía' },
{ id: 49, label: 'Coordinación del Programa de Enseñanza de Inglés' },
{ id: 52, label: 'Coordinación del Programa de Humanidades'},
{ id: 51, label: 'Coordinación del Programa de Ingeniería Civil' },
{ id: 48, label: 'Coordinación del Programa de Matemáticas Aplicadas y Computación' },
{ id: 47, label: 'Coordinación del Programa de Pedagogía' },