flysoft-react-ui 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +16 -3
- package/dist/components/form-controls/AutocompleteInput.d.ts +11 -3
- package/dist/components/form-controls/AutocompleteInput.d.ts.map +1 -1
- package/dist/components/form-controls/AutocompleteInput.js +410 -31
- package/dist/components/form-controls/Button.js +1 -1
- package/dist/components/form-controls/Checkbox.d.ts +14 -0
- package/dist/components/form-controls/Checkbox.d.ts.map +1 -0
- package/dist/components/form-controls/Checkbox.js +77 -0
- package/dist/components/form-controls/DateInput.d.ts +20 -4
- package/dist/components/form-controls/DateInput.d.ts.map +1 -1
- package/dist/components/form-controls/DateInput.js +425 -70
- package/dist/components/form-controls/DatePicker.d.ts +4 -3
- package/dist/components/form-controls/DatePicker.d.ts.map +1 -1
- package/dist/components/form-controls/DatePicker.js +26 -30
- package/dist/components/form-controls/Input.d.ts +10 -1
- package/dist/components/form-controls/Input.d.ts.map +1 -1
- package/dist/components/form-controls/Input.js +16 -10
- package/dist/components/form-controls/Pagination.d.ts +1 -0
- package/dist/components/form-controls/Pagination.d.ts.map +1 -1
- package/dist/components/form-controls/Pagination.js +3 -40
- package/dist/components/form-controls/RadioButtonGroup.d.ts +62 -0
- package/dist/components/form-controls/RadioButtonGroup.d.ts.map +1 -0
- package/dist/components/form-controls/RadioButtonGroup.js +220 -0
- package/dist/components/form-controls/SearchSelectInput-OLD.d.ts +68 -0
- package/dist/components/form-controls/SearchSelectInput-OLD.d.ts.map +1 -0
- package/dist/components/form-controls/SearchSelectInput-OLD.js +962 -0
- package/dist/components/form-controls/SearchSelectInput.d.ts +70 -0
- package/dist/components/form-controls/SearchSelectInput.d.ts.map +1 -0
- package/dist/components/form-controls/SearchSelectInput.js +335 -0
- package/dist/components/form-controls/index.d.ts +7 -1
- package/dist/components/form-controls/index.d.ts.map +1 -1
- package/dist/components/form-controls/index.js +3 -0
- package/dist/components/layout/AppLayout.d.ts +3 -2
- package/dist/components/layout/AppLayout.d.ts.map +1 -1
- package/dist/components/layout/AppLayout.js +104 -31
- package/dist/components/layout/Collection.js +1 -1
- package/dist/components/layout/DataTable.d.ts +3 -1
- package/dist/components/layout/DataTable.d.ts.map +1 -1
- package/dist/components/layout/DataTable.js +34 -29
- package/dist/components/utils/Avatar.d.ts +49 -0
- package/dist/components/utils/Avatar.d.ts.map +1 -0
- package/dist/components/utils/Avatar.js +93 -0
- package/dist/components/utils/Badge.d.ts +3 -0
- package/dist/components/utils/Badge.d.ts.map +1 -1
- package/dist/components/utils/Badge.js +130 -26
- package/dist/components/utils/Dialog.d.ts.map +1 -1
- package/dist/components/utils/Dialog.js +5 -1
- package/dist/components/utils/Filter.d.ts +57 -0
- package/dist/components/utils/Filter.d.ts.map +1 -0
- package/dist/components/utils/Filter.js +580 -0
- package/dist/components/utils/FiltersDialog.d.ts +21 -0
- package/dist/components/utils/FiltersDialog.d.ts.map +1 -0
- package/dist/components/utils/FiltersDialog.js +104 -0
- package/dist/components/utils/Loader.js +1 -1
- package/dist/components/utils/RoadMap.d.ts +59 -0
- package/dist/components/utils/RoadMap.d.ts.map +1 -0
- package/dist/components/utils/RoadMap.js +138 -0
- package/dist/components/utils/Snackbar.d.ts +13 -0
- package/dist/components/utils/Snackbar.d.ts.map +1 -0
- package/dist/components/utils/Snackbar.js +121 -0
- package/dist/components/utils/SnackbarContainer.d.ts +7 -0
- package/dist/components/utils/SnackbarContainer.d.ts.map +1 -0
- package/dist/components/utils/SnackbarContainer.js +25 -0
- package/dist/components/utils/index.d.ts +12 -0
- package/dist/components/utils/index.d.ts.map +1 -1
- package/dist/components/utils/index.js +6 -0
- package/dist/contexts/AppLayoutContext.d.ts +40 -0
- package/dist/contexts/AppLayoutContext.d.ts.map +1 -0
- package/dist/contexts/AppLayoutContext.js +98 -0
- package/dist/contexts/ListCrudContext.d.ts +29 -0
- package/dist/contexts/ListCrudContext.d.ts.map +1 -0
- package/dist/contexts/ListCrudContext.js +209 -0
- package/dist/contexts/SnackbarContext.d.ts +26 -0
- package/dist/contexts/SnackbarContext.d.ts.map +1 -0
- package/dist/contexts/SnackbarContext.js +34 -0
- package/dist/contexts/index.d.ts +6 -0
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/contexts/index.js +6 -0
- package/dist/contexts/presets.js +6 -6
- package/dist/docs/AvatarDocs.d.ts +4 -0
- package/dist/docs/AvatarDocs.d.ts.map +1 -0
- package/dist/docs/AvatarDocs.js +7 -0
- package/dist/docs/BadgeDocs.d.ts.map +1 -1
- package/dist/docs/BadgeDocs.js +4 -2
- package/dist/docs/CheckboxDocs.d.ts +4 -0
- package/dist/docs/CheckboxDocs.d.ts.map +1 -0
- package/dist/docs/CheckboxDocs.js +7 -0
- package/dist/docs/DataTableDocs.d.ts.map +1 -1
- package/dist/docs/DataTableDocs.js +6 -2
- package/dist/docs/DateInputDocs.d.ts +1 -0
- package/dist/docs/DateInputDocs.d.ts.map +1 -1
- package/dist/docs/DateInputDocs.js +7 -9
- package/dist/docs/DatePickerDocs.d.ts +1 -0
- package/dist/docs/DatePickerDocs.d.ts.map +1 -1
- package/dist/docs/DatePickerDocs.js +6 -8
- package/dist/docs/DocAdmin.d.ts +4 -0
- package/dist/docs/DocAdmin.d.ts.map +1 -0
- package/dist/docs/DocAdmin.js +68 -0
- package/dist/docs/DocsMenu.d.ts.map +1 -1
- package/dist/docs/DocsMenu.js +1 -1
- package/dist/docs/DocsRouter.d.ts.map +1 -1
- package/dist/docs/DocsRouter.js +11 -1
- package/dist/docs/ExampleFormDocs.d.ts +4 -0
- package/dist/docs/ExampleFormDocs.d.ts.map +1 -0
- package/dist/docs/ExampleFormDocs.js +148 -0
- package/dist/docs/FilterDocs.d.ts +4 -0
- package/dist/docs/FilterDocs.d.ts.map +1 -0
- package/dist/docs/FilterDocs.js +112 -0
- package/dist/docs/InputDocs.d.ts.map +1 -1
- package/dist/docs/InputDocs.js +11 -1
- package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.d.ts +11 -0
- package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.d.ts.map +1 -0
- package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.js +25 -0
- package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.d.ts +2 -0
- package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.d.ts.map +1 -0
- package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.js +51 -0
- package/dist/docs/PaginationDocs.js +6 -6
- package/dist/docs/RadioButtonGroupDocs.d.ts +4 -0
- package/dist/docs/RadioButtonGroupDocs.d.ts.map +1 -0
- package/dist/docs/RadioButtonGroupDocs.js +46 -0
- package/dist/docs/RoadMapDocs.d.ts +4 -0
- package/dist/docs/RoadMapDocs.d.ts.map +1 -0
- package/dist/docs/RoadMapDocs.js +171 -0
- package/dist/docs/SearchSelectInputDocs.d.ts +4 -0
- package/dist/docs/SearchSelectInputDocs.d.ts.map +1 -0
- package/dist/docs/SearchSelectInputDocs.js +168 -0
- package/dist/docs/SnackbarDocs.d.ts +4 -0
- package/dist/docs/SnackbarDocs.d.ts.map +1 -0
- package/dist/docs/SnackbarDocs.js +50 -0
- package/dist/docs/TabsGroupDocs.d.ts.map +1 -1
- package/dist/docs/TabsGroupDocs.js +12 -1
- package/dist/docs/docMockServices/empresaService.d.ts +38 -0
- package/dist/docs/docMockServices/empresaService.d.ts.map +1 -0
- package/dist/docs/docMockServices/empresaService.js +116 -0
- package/dist/docs/docMockServices/index.d.ts +9 -0
- package/dist/docs/docMockServices/index.d.ts.map +1 -0
- package/dist/docs/docMockServices/index.js +8 -0
- package/dist/docs/docMockServices/initialData.d.ts +6 -0
- package/dist/docs/docMockServices/initialData.d.ts.map +1 -0
- package/dist/docs/docMockServices/initialData.js +132 -0
- package/dist/docs/docMockServices/interfaces.d.ts +26 -0
- package/dist/docs/docMockServices/interfaces.d.ts.map +1 -0
- package/dist/docs/docMockServices/interfaces.js +1 -0
- package/dist/docs/docMockServices/personaEmpresaService.d.ts +43 -0
- package/dist/docs/docMockServices/personaEmpresaService.d.ts.map +1 -0
- package/dist/docs/docMockServices/personaEmpresaService.js +113 -0
- package/dist/docs/docMockServices/personaService.d.ts +39 -0
- package/dist/docs/docMockServices/personaService.d.ts.map +1 -0
- package/dist/docs/docMockServices/personaService.js +180 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useAsyncRequest.d.ts +17 -0
- package/dist/hooks/useAsyncRequest.d.ts.map +1 -0
- package/dist/hooks/useAsyncRequest.js +70 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
const STORAGE_KEY = "docMockServices_empresas";
|
|
2
|
+
/**
|
|
3
|
+
* Simula un delay de red para hacer más realista el mock
|
|
4
|
+
*/
|
|
5
|
+
const simulateNetworkDelay = (ms = 500) => {
|
|
6
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Obtiene todas las empresas del almacenamiento (función helper interna)
|
|
10
|
+
*/
|
|
11
|
+
const _obtenerTodas = () => {
|
|
12
|
+
const data = localStorage.getItem(STORAGE_KEY);
|
|
13
|
+
return data ? JSON.parse(data) : [];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Servicio mock para gestionar Empresas en localStorage
|
|
17
|
+
*/
|
|
18
|
+
export const empresaService = {
|
|
19
|
+
/**
|
|
20
|
+
* Obtiene empresas opcionalmente filtradas por nombre
|
|
21
|
+
*/
|
|
22
|
+
async listar(params) {
|
|
23
|
+
await simulateNetworkDelay();
|
|
24
|
+
const todas = _obtenerTodas();
|
|
25
|
+
if (!params?.filtro) {
|
|
26
|
+
return todas;
|
|
27
|
+
}
|
|
28
|
+
const filtroLower = params.filtro.toLowerCase();
|
|
29
|
+
return todas.filter((emp) => emp.nombre.toLowerCase().includes(filtroLower));
|
|
30
|
+
},
|
|
31
|
+
/**
|
|
32
|
+
* Obtiene empresas paginadas opcionalmente filtradas por nombre
|
|
33
|
+
*/
|
|
34
|
+
async listarPaginados(params) {
|
|
35
|
+
await simulateNetworkDelay();
|
|
36
|
+
const pagina = params?.pagina ?? 1;
|
|
37
|
+
const limit = params?.limit ?? 20;
|
|
38
|
+
const todas = _obtenerTodas();
|
|
39
|
+
let todasFiltradas = todas;
|
|
40
|
+
if (params?.filtro) {
|
|
41
|
+
const filtroLower = params.filtro.toLowerCase();
|
|
42
|
+
todasFiltradas = todas.filter((emp) => emp.nombre.toLowerCase().includes(filtroLower));
|
|
43
|
+
}
|
|
44
|
+
const total = todasFiltradas.length;
|
|
45
|
+
// Si limit es 0, devolver todos los elementos sin paginar
|
|
46
|
+
if (limit === 0) {
|
|
47
|
+
return {
|
|
48
|
+
list: todasFiltradas,
|
|
49
|
+
limit: 0,
|
|
50
|
+
page: 1,
|
|
51
|
+
pages: 1,
|
|
52
|
+
total,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const pages = Math.ceil(total / limit);
|
|
56
|
+
const inicio = (pagina - 1) * limit;
|
|
57
|
+
const fin = inicio + limit;
|
|
58
|
+
const list = todasFiltradas.slice(inicio, fin);
|
|
59
|
+
return {
|
|
60
|
+
list,
|
|
61
|
+
limit,
|
|
62
|
+
page: pagina,
|
|
63
|
+
pages,
|
|
64
|
+
total,
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
/**
|
|
68
|
+
* Busca una empresa por ID
|
|
69
|
+
*/
|
|
70
|
+
async buscarPorId(id) {
|
|
71
|
+
await simulateNetworkDelay();
|
|
72
|
+
const empresas = _obtenerTodas();
|
|
73
|
+
return empresas.find((emp) => emp.id === id);
|
|
74
|
+
},
|
|
75
|
+
/**
|
|
76
|
+
* Agrega una nueva empresa
|
|
77
|
+
*/
|
|
78
|
+
async agregar(empresa) {
|
|
79
|
+
await simulateNetworkDelay();
|
|
80
|
+
const empresas = _obtenerTodas();
|
|
81
|
+
const nuevoId = empresas.length > 0 ? Math.max(...empresas.map((e) => e.id)) + 1 : 1;
|
|
82
|
+
const nuevaEmpresa = {
|
|
83
|
+
id: nuevoId,
|
|
84
|
+
...empresa,
|
|
85
|
+
};
|
|
86
|
+
empresas.push(nuevaEmpresa);
|
|
87
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(empresas));
|
|
88
|
+
return nuevaEmpresa;
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* Edita una empresa existente
|
|
92
|
+
*/
|
|
93
|
+
async editar(id, datos) {
|
|
94
|
+
await simulateNetworkDelay();
|
|
95
|
+
const empresas = _obtenerTodas();
|
|
96
|
+
const index = empresas.findIndex((emp) => emp.id === id);
|
|
97
|
+
if (index === -1)
|
|
98
|
+
return null;
|
|
99
|
+
empresas[index] = { ...empresas[index], ...datos };
|
|
100
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(empresas));
|
|
101
|
+
return empresas[index];
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* Elimina una empresa por ID
|
|
105
|
+
*/
|
|
106
|
+
async eliminar(id) {
|
|
107
|
+
await simulateNetworkDelay();
|
|
108
|
+
const empresas = _obtenerTodas();
|
|
109
|
+
const index = empresas.findIndex((emp) => emp.id === id);
|
|
110
|
+
if (index === -1)
|
|
111
|
+
return false;
|
|
112
|
+
empresas.splice(index, 1);
|
|
113
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(empresas));
|
|
114
|
+
return true;
|
|
115
|
+
},
|
|
116
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exportaciones del módulo de servicios mock para documentación
|
|
3
|
+
*/
|
|
4
|
+
export * from "./interfaces";
|
|
5
|
+
export * from "./empresaService";
|
|
6
|
+
export * from "./personaService";
|
|
7
|
+
export * from "./personaEmpresaService";
|
|
8
|
+
export * from "./initialData";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialData.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/initialData.ts"],"names":[],"mappings":"AA+FA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,IAAI,CAsD5D,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { empresaService } from "./empresaService";
|
|
2
|
+
import { personaService } from "./personaService";
|
|
3
|
+
import { personaEmpresaService } from "./personaEmpresaService";
|
|
4
|
+
import dayjs from "dayjs";
|
|
5
|
+
/**
|
|
6
|
+
* Datos iniciales de ejemplo para empresas
|
|
7
|
+
*/
|
|
8
|
+
const empresasEjemplo = [
|
|
9
|
+
{ nombre: "TechSolutions S.A." },
|
|
10
|
+
{ nombre: "Innovación Digital Ltda." },
|
|
11
|
+
{ nombre: "Global Systems Inc." },
|
|
12
|
+
{ nombre: "Nexus Technologies" },
|
|
13
|
+
{ nombre: "CloudSoft Enterprise" },
|
|
14
|
+
{ nombre: "DataDrive Solutions" },
|
|
15
|
+
{ nombre: "CyberNet Corp." },
|
|
16
|
+
{ nombre: "FutureSoft Industries" },
|
|
17
|
+
{ nombre: "Quantum Innovations" },
|
|
18
|
+
{ nombre: "SmartCode Systems" },
|
|
19
|
+
{ nombre: "Metro Consulting Group" },
|
|
20
|
+
{ nombre: "Digital Transformation Co." },
|
|
21
|
+
{ nombre: "Agile Development Ltd." },
|
|
22
|
+
{ nombre: "SecureNet Services" },
|
|
23
|
+
{ nombre: "Apex Business Solutions" },
|
|
24
|
+
{ nombre: "Vertex Software" },
|
|
25
|
+
{ nombre: "Matrix Enterprises" },
|
|
26
|
+
{ nombre: "PrimeTech Solutions" },
|
|
27
|
+
{ nombre: "Infinity Tech Corp." },
|
|
28
|
+
{ nombre: "Velocity Systems" },
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Genera una fecha aleatoria entre dos años
|
|
32
|
+
*/
|
|
33
|
+
const generarFechaAleatoria = (anoInicio, anoFin) => {
|
|
34
|
+
const ano = Math.floor(Math.random() * (anoFin - anoInicio + 1)) + anoInicio;
|
|
35
|
+
const mes = Math.floor(Math.random() * 12); // 0-11
|
|
36
|
+
const diasEnMes = dayjs(`${ano}-${mes + 1}-01`).daysInMonth();
|
|
37
|
+
const dia = Math.floor(Math.random() * diasEnMes) + 1;
|
|
38
|
+
return dayjs(`${ano}-${String(mes + 1).padStart(2, "0")}-${String(dia).padStart(2, "0")}`);
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Datos iniciales de ejemplo para personas
|
|
42
|
+
*/
|
|
43
|
+
const personasEjemplo = [
|
|
44
|
+
{ nombre: "Ana García", email: "ana.garcia@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
45
|
+
{ nombre: "Carlos Martínez", email: "carlos.martinez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
46
|
+
{ nombre: "Laura Fernández", email: "laura.fernandez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
47
|
+
{ nombre: "Juan Rodríguez", email: "juan.rodriguez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
48
|
+
{ nombre: "María López", email: "maria.lopez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
49
|
+
{ nombre: "Pedro Sánchez", email: "pedro.sanchez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
50
|
+
{ nombre: "Carmen Ruiz", email: "carmen.ruiz@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
51
|
+
{ nombre: "Diego Torres", email: "diego.torres@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
52
|
+
{ nombre: "Sofia Vargas", email: "sofia.vargas@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
53
|
+
{ nombre: "Miguel Herrera", email: "miguel.herrera@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
54
|
+
{ nombre: "Elena Jiménez", email: "elena.jimenez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
55
|
+
{ nombre: "Roberto Díaz", email: "roberto.diaz@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
56
|
+
{ nombre: "Patricia Moreno", email: "patricia.moreno@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
57
|
+
{ nombre: "Javier Muñoz", email: "javier.munoz@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
58
|
+
{ nombre: "Isabel Gutiérrez", email: "isabel.gutierrez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
59
|
+
{ nombre: "Fernando Castro", email: "fernando.castro@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
60
|
+
{ nombre: "Lucía Ortega", email: "lucia.ortega@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
61
|
+
{ nombre: "Alejandro Medina", email: "alejandro.medina@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
62
|
+
{ nombre: "Marta Romero", email: "marta.romero@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
63
|
+
{ nombre: "Ricardo Morales", email: "ricardo.morales@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
|
|
64
|
+
];
|
|
65
|
+
/**
|
|
66
|
+
* Cargos disponibles para las relaciones
|
|
67
|
+
*/
|
|
68
|
+
const cargosEjemplo = [
|
|
69
|
+
"CEO",
|
|
70
|
+
"CTO",
|
|
71
|
+
"CFO",
|
|
72
|
+
"Director de Desarrollo",
|
|
73
|
+
"Gerente de Proyecto",
|
|
74
|
+
"Desarrollador Senior",
|
|
75
|
+
"Desarrollador Junior",
|
|
76
|
+
"Analista de Sistemas",
|
|
77
|
+
"Diseñador UX/UI",
|
|
78
|
+
"Product Manager",
|
|
79
|
+
"Scrum Master",
|
|
80
|
+
"QA Engineer",
|
|
81
|
+
"DevOps Engineer",
|
|
82
|
+
"Marketing Manager",
|
|
83
|
+
"Sales Manager",
|
|
84
|
+
"HR Manager",
|
|
85
|
+
"Contador",
|
|
86
|
+
"Asistente Administrativo",
|
|
87
|
+
"Consultor",
|
|
88
|
+
"Coordinador",
|
|
89
|
+
];
|
|
90
|
+
/**
|
|
91
|
+
* Inicializa los datos de ejemplo en localStorage
|
|
92
|
+
* Crea 20 empresas, 20 personas y establece relaciones entre ellas
|
|
93
|
+
*/
|
|
94
|
+
export const inicializarDatosEjemplo = async () => {
|
|
95
|
+
// Limpiar datos existentes
|
|
96
|
+
localStorage.removeItem("docMockServices_empresas");
|
|
97
|
+
localStorage.removeItem("docMockServices_personas");
|
|
98
|
+
localStorage.removeItem("docMockServices_personaEmpresas");
|
|
99
|
+
// Crear empresas (sin await para crear todas en paralelo, luego esperar)
|
|
100
|
+
const empresasPromesas = empresasEjemplo.map((emp) => empresaService.agregar(emp));
|
|
101
|
+
const empresasCreadas = await Promise.all(empresasPromesas);
|
|
102
|
+
// Crear personas (sin await para crear todas en paralelo, luego esperar)
|
|
103
|
+
const personasPromesas = personasEjemplo.map((per) => personaService.agregar(per));
|
|
104
|
+
const personasCreadas = await Promise.all(personasPromesas);
|
|
105
|
+
// Crear relaciones (cada persona tiene entre 1 y 3 trabajos)
|
|
106
|
+
const relaciones = [];
|
|
107
|
+
personasCreadas.forEach((persona, indexPersona) => {
|
|
108
|
+
// Cada persona trabaja en al menos 1 empresa y hasta 3 empresas
|
|
109
|
+
const numTrabajos = 1 + (indexPersona % 3); // Entre 1 y 3 trabajos
|
|
110
|
+
// Seleccionar empresas aleatorias sin repetir
|
|
111
|
+
const empresasSeleccionadas = [];
|
|
112
|
+
for (let i = 0; i < numTrabajos; i++) {
|
|
113
|
+
let empresaIndex;
|
|
114
|
+
do {
|
|
115
|
+
empresaIndex = Math.floor(Math.random() * empresasCreadas.length);
|
|
116
|
+
} while (empresasSeleccionadas.includes(empresaIndex));
|
|
117
|
+
empresasSeleccionadas.push(empresaIndex);
|
|
118
|
+
}
|
|
119
|
+
// Crear relaciones
|
|
120
|
+
empresasSeleccionadas.forEach((empresaIndex) => {
|
|
121
|
+
const cargo = cargosEjemplo[Math.floor(Math.random() * cargosEjemplo.length)];
|
|
122
|
+
relaciones.push({
|
|
123
|
+
idPersona: persona.id,
|
|
124
|
+
idEmpresa: empresasCreadas[empresaIndex].id,
|
|
125
|
+
cargo,
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
// Guardar todas las relaciones (en paralelo)
|
|
130
|
+
const relacionesPromesas = relaciones.map((rel) => personaEmpresaService.agregar(rel));
|
|
131
|
+
await Promise.all(relacionesPromesas);
|
|
132
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Dayjs } from "dayjs";
|
|
2
|
+
/**
|
|
3
|
+
* Interfaces para los servicios mock de documentación
|
|
4
|
+
*/
|
|
5
|
+
export interface Empresa {
|
|
6
|
+
id: number;
|
|
7
|
+
nombre: string;
|
|
8
|
+
}
|
|
9
|
+
export interface Persona {
|
|
10
|
+
id: number;
|
|
11
|
+
nombre: string;
|
|
12
|
+
email: string;
|
|
13
|
+
fechaNacimiento: Dayjs;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Persona con sus empresas relacionadas
|
|
17
|
+
*/
|
|
18
|
+
export interface PersonaConEmpresas extends Persona {
|
|
19
|
+
empresas: Empresa[];
|
|
20
|
+
}
|
|
21
|
+
export interface PersonaEmpresa {
|
|
22
|
+
idPersona: number;
|
|
23
|
+
idEmpresa: number;
|
|
24
|
+
cargo: string;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC;;GAEG;AAEH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,KAAK,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { PersonaEmpresa } from "./interfaces";
|
|
2
|
+
/**
|
|
3
|
+
* Servicio mock para gestionar relaciones Persona-Empresa en localStorage
|
|
4
|
+
*/
|
|
5
|
+
export declare const personaEmpresaService: {
|
|
6
|
+
/**
|
|
7
|
+
* Obtiene todas las relaciones
|
|
8
|
+
*/
|
|
9
|
+
listar(): Promise<PersonaEmpresa[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Busca relaciones por ID de persona
|
|
12
|
+
*/
|
|
13
|
+
buscarPorPersona(idPersona: number): Promise<PersonaEmpresa[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Busca relaciones por ID de empresa
|
|
16
|
+
*/
|
|
17
|
+
buscarPorEmpresa(idEmpresa: number): Promise<PersonaEmpresa[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Busca una relación específica por persona y empresa
|
|
20
|
+
*/
|
|
21
|
+
buscarPorPersonaYEmpresa(idPersona: number, idEmpresa: number): Promise<PersonaEmpresa | undefined>;
|
|
22
|
+
/**
|
|
23
|
+
* Agrega una nueva relación
|
|
24
|
+
*/
|
|
25
|
+
agregar(relacion: PersonaEmpresa): Promise<PersonaEmpresa>;
|
|
26
|
+
/**
|
|
27
|
+
* Edita una relación existente
|
|
28
|
+
*/
|
|
29
|
+
editar(idPersona: number, idEmpresa: number, datos: Partial<Omit<PersonaEmpresa, "idPersona" | "idEmpresa">>): Promise<PersonaEmpresa | null>;
|
|
30
|
+
/**
|
|
31
|
+
* Elimina una relación por persona y empresa
|
|
32
|
+
*/
|
|
33
|
+
eliminar(idPersona: number, idEmpresa: number): Promise<boolean>;
|
|
34
|
+
/**
|
|
35
|
+
* Elimina todas las relaciones de una persona
|
|
36
|
+
*/
|
|
37
|
+
eliminarPorPersona(idPersona: number): Promise<number>;
|
|
38
|
+
/**
|
|
39
|
+
* Elimina todas las relaciones de una empresa
|
|
40
|
+
*/
|
|
41
|
+
eliminarPorEmpresa(idEmpresa: number): Promise<number>;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=personaEmpresaService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personaEmpresaService.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/personaEmpresaService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBnD;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC;;OAEG;cACa,OAAO,CAAC,cAAc,EAAE,CAAC;IAKzC;;OAEG;gCAC+B,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAMpE;;OAEG;gCAC+B,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAMpE;;OAEG;wCAEU,MAAM,aACN,MAAM,GAChB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAQtC;;OAEG;sBACqB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAgBhE;;OAEG;sBAEU,MAAM,aACN,MAAM,SACV,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,GAC9D,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAajC;;OAEG;wBACuB,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAatE;;OAEG;kCACiC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW5D;;OAEG;kCACiC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAU7D,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
const STORAGE_KEY = "docMockServices_personaEmpresas";
|
|
2
|
+
/**
|
|
3
|
+
* Simula un delay de red para hacer más realista el mock
|
|
4
|
+
*/
|
|
5
|
+
const simulateNetworkDelay = (ms = 500) => {
|
|
6
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Obtiene todas las relaciones del almacenamiento (método interno)
|
|
10
|
+
*/
|
|
11
|
+
const _obtenerTodas = () => {
|
|
12
|
+
const data = localStorage.getItem(STORAGE_KEY);
|
|
13
|
+
return data ? JSON.parse(data) : [];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Servicio mock para gestionar relaciones Persona-Empresa en localStorage
|
|
17
|
+
*/
|
|
18
|
+
export const personaEmpresaService = {
|
|
19
|
+
/**
|
|
20
|
+
* Obtiene todas las relaciones
|
|
21
|
+
*/
|
|
22
|
+
async listar() {
|
|
23
|
+
await simulateNetworkDelay();
|
|
24
|
+
return _obtenerTodas();
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* Busca relaciones por ID de persona
|
|
28
|
+
*/
|
|
29
|
+
async buscarPorPersona(idPersona) {
|
|
30
|
+
await simulateNetworkDelay();
|
|
31
|
+
const relaciones = _obtenerTodas();
|
|
32
|
+
return relaciones.filter((rel) => rel.idPersona === idPersona);
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* Busca relaciones por ID de empresa
|
|
36
|
+
*/
|
|
37
|
+
async buscarPorEmpresa(idEmpresa) {
|
|
38
|
+
await simulateNetworkDelay();
|
|
39
|
+
const relaciones = _obtenerTodas();
|
|
40
|
+
return relaciones.filter((rel) => rel.idEmpresa === idEmpresa);
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* Busca una relación específica por persona y empresa
|
|
44
|
+
*/
|
|
45
|
+
async buscarPorPersonaYEmpresa(idPersona, idEmpresa) {
|
|
46
|
+
await simulateNetworkDelay();
|
|
47
|
+
const relaciones = _obtenerTodas();
|
|
48
|
+
return relaciones.find((rel) => rel.idPersona === idPersona && rel.idEmpresa === idEmpresa);
|
|
49
|
+
},
|
|
50
|
+
/**
|
|
51
|
+
* Agrega una nueva relación
|
|
52
|
+
*/
|
|
53
|
+
async agregar(relacion) {
|
|
54
|
+
await simulateNetworkDelay();
|
|
55
|
+
const relaciones = _obtenerTodas();
|
|
56
|
+
// Verificar que no exista ya la relación
|
|
57
|
+
const existe = relaciones.some((rel) => rel.idPersona === relacion.idPersona &&
|
|
58
|
+
rel.idEmpresa === relacion.idEmpresa);
|
|
59
|
+
if (!existe) {
|
|
60
|
+
relaciones.push(relacion);
|
|
61
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(relaciones));
|
|
62
|
+
}
|
|
63
|
+
return relacion;
|
|
64
|
+
},
|
|
65
|
+
/**
|
|
66
|
+
* Edita una relación existente
|
|
67
|
+
*/
|
|
68
|
+
async editar(idPersona, idEmpresa, datos) {
|
|
69
|
+
await simulateNetworkDelay();
|
|
70
|
+
const relaciones = _obtenerTodas();
|
|
71
|
+
const index = relaciones.findIndex((rel) => rel.idPersona === idPersona && rel.idEmpresa === idEmpresa);
|
|
72
|
+
if (index === -1)
|
|
73
|
+
return null;
|
|
74
|
+
relaciones[index] = { ...relaciones[index], ...datos };
|
|
75
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(relaciones));
|
|
76
|
+
return relaciones[index];
|
|
77
|
+
},
|
|
78
|
+
/**
|
|
79
|
+
* Elimina una relación por persona y empresa
|
|
80
|
+
*/
|
|
81
|
+
async eliminar(idPersona, idEmpresa) {
|
|
82
|
+
await simulateNetworkDelay();
|
|
83
|
+
const relaciones = _obtenerTodas();
|
|
84
|
+
const index = relaciones.findIndex((rel) => rel.idPersona === idPersona && rel.idEmpresa === idEmpresa);
|
|
85
|
+
if (index === -1)
|
|
86
|
+
return false;
|
|
87
|
+
relaciones.splice(index, 1);
|
|
88
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(relaciones));
|
|
89
|
+
return true;
|
|
90
|
+
},
|
|
91
|
+
/**
|
|
92
|
+
* Elimina todas las relaciones de una persona
|
|
93
|
+
*/
|
|
94
|
+
async eliminarPorPersona(idPersona) {
|
|
95
|
+
await simulateNetworkDelay();
|
|
96
|
+
const relaciones = _obtenerTodas();
|
|
97
|
+
const inicialLength = relaciones.length;
|
|
98
|
+
const nuevasRelaciones = relaciones.filter((rel) => rel.idPersona !== idPersona);
|
|
99
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(nuevasRelaciones));
|
|
100
|
+
return inicialLength - nuevasRelaciones.length;
|
|
101
|
+
},
|
|
102
|
+
/**
|
|
103
|
+
* Elimina todas las relaciones de una empresa
|
|
104
|
+
*/
|
|
105
|
+
async eliminarPorEmpresa(idEmpresa) {
|
|
106
|
+
await simulateNetworkDelay();
|
|
107
|
+
const relaciones = _obtenerTodas();
|
|
108
|
+
const inicialLength = relaciones.length;
|
|
109
|
+
const nuevasRelaciones = relaciones.filter((rel) => rel.idEmpresa !== idEmpresa);
|
|
110
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(nuevasRelaciones));
|
|
111
|
+
return inicialLength - nuevasRelaciones.length;
|
|
112
|
+
},
|
|
113
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Persona, PersonaConEmpresas } from "./interfaces";
|
|
2
|
+
import type { PaginationInterface } from "../../components/form-controls/Pagination";
|
|
3
|
+
/**
|
|
4
|
+
* Servicio mock para gestionar Personas en localStorage
|
|
5
|
+
*/
|
|
6
|
+
export declare const personaService: {
|
|
7
|
+
/**
|
|
8
|
+
* Obtiene personas opcionalmente filtradas por nombre, con sus empresas relacionadas
|
|
9
|
+
*/
|
|
10
|
+
listar(params?: {
|
|
11
|
+
filtro?: string;
|
|
12
|
+
}): Promise<PersonaConEmpresas[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Obtiene personas paginadas opcionalmente filtradas por nombre y/o idEmpresa, con sus empresas relacionadas
|
|
15
|
+
*/
|
|
16
|
+
listarPaginados(params?: {
|
|
17
|
+
filtro?: string;
|
|
18
|
+
pagina?: string;
|
|
19
|
+
limit?: string;
|
|
20
|
+
idEmpresa?: string;
|
|
21
|
+
}): Promise<PaginationInterface<PersonaConEmpresas>>;
|
|
22
|
+
/**
|
|
23
|
+
* Busca una persona por ID
|
|
24
|
+
*/
|
|
25
|
+
buscarPorId(id: number): Promise<Persona | undefined>;
|
|
26
|
+
/**
|
|
27
|
+
* Agrega una nueva persona
|
|
28
|
+
*/
|
|
29
|
+
agregar(persona: Omit<Persona, "id">): Promise<Persona>;
|
|
30
|
+
/**
|
|
31
|
+
* Edita una persona existente
|
|
32
|
+
*/
|
|
33
|
+
editar(id: number, datos: Partial<Omit<Persona, "id">>): Promise<Persona | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Elimina una persona por ID
|
|
36
|
+
*/
|
|
37
|
+
eliminar(persona: Persona): Promise<void>;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=personaService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personaService.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/personaService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAW,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AA6DrF;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;oBACmB;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAuBzE;;OAEG;6BAC4B;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAoEpD;;OAEG;oBACmB,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAM3D;;OAEG;qBACoB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB7D;;OAEG;eAEG,MAAM,SACH,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAClC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgB1B;;OAEG;sBACqB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAQhD,CAAC"}
|