@datosgeo-atdt/geo-ui 0.11.2 → 0.11.4
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/README.md +87 -0
- package/dist/components/DataTable.d.ts +1 -0
- package/dist/components/DataTable.d.ts.map +1 -1
- package/dist/components/MapaPMTiles.d.ts +1 -0
- package/dist/components/MapaPMTiles.d.ts.map +1 -1
- package/dist/geo-ui.js +2535 -2530
- package/dist/geo-ui.js.map +1 -1
- package/dist/geo-ui.umd.cjs +46 -46
- package/dist/geo-ui.umd.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -761,6 +761,7 @@ function App() {
|
|
|
761
761
|
| `className` | `string` | `""` | Clases CSS adicionales |
|
|
762
762
|
| `showIndex` | `boolean` | `false` | Mostrar columna con índice numérico |
|
|
763
763
|
| `indexLabel` | `string` | `"#"` | Etiqueta para la columna de índice |
|
|
764
|
+
| `onRowClick` | `(row: Record<string, any>, index: number) => void` | `undefined` | Callback que se ejecuta al hacer click en una fila. Recibe los datos de la fila y su índice |
|
|
764
765
|
|
|
765
766
|
#### Tipo DataTableColumn
|
|
766
767
|
|
|
@@ -863,6 +864,91 @@ function App() {
|
|
|
863
864
|
}
|
|
864
865
|
```
|
|
865
866
|
|
|
867
|
+
#### Ejemplo con interactividad bidireccional (Tabla ↔ Mapa)
|
|
868
|
+
|
|
869
|
+
Crea interacción completa entre la tabla y el mapa usando `onRowClick` y `onFeatureClick`:
|
|
870
|
+
|
|
871
|
+
```tsx
|
|
872
|
+
import { MapaPMTiles, DataTable } from '@atdt/geo-ui';
|
|
873
|
+
import { useState } from 'react';
|
|
874
|
+
import '@atdt/geo-ui/style.css';
|
|
875
|
+
|
|
876
|
+
function App() {
|
|
877
|
+
const [nivel, setNivel] = useState<'entidad' | 'municipio'>('entidad');
|
|
878
|
+
const [selectedEnt, setSelectedEnt] = useState<string | null>(null);
|
|
879
|
+
|
|
880
|
+
return (
|
|
881
|
+
<div style={{ display: 'flex', width: '100%', height: '100vh' }}>
|
|
882
|
+
{/* Mapa con click handler */}
|
|
883
|
+
<MapaPMTiles
|
|
884
|
+
csvPath={nivel === 'entidad' ? '/prueba_entidad.csv' : `/cdmx_prueba.csv`}
|
|
885
|
+
fitToIds={selectedEnt ? [selectedEnt] : undefined}
|
|
886
|
+
mode="jenks"
|
|
887
|
+
showMunicipios={nivel === 'municipio'}
|
|
888
|
+
enablePopup={true}
|
|
889
|
+
onFeatureClick={(featureId, properties) => {
|
|
890
|
+
// Click en mapa → cambia tabla a municipios de esa entidad
|
|
891
|
+
if (nivel === 'entidad') {
|
|
892
|
+
setSelectedEnt(featureId);
|
|
893
|
+
setNivel('municipio');
|
|
894
|
+
}
|
|
895
|
+
}}
|
|
896
|
+
/>
|
|
897
|
+
|
|
898
|
+
{/* Tabla con click handler */}
|
|
899
|
+
<DataTable
|
|
900
|
+
csvPath={nivel === 'entidad' ? '/prueba_entidad.csv' : `/cdmx_prueba.csv`}
|
|
901
|
+
columns={
|
|
902
|
+
nivel === 'entidad'
|
|
903
|
+
? [
|
|
904
|
+
{ key: 'entidad', label: 'Entidad' },
|
|
905
|
+
{ key: 'total', label: 'Total' }
|
|
906
|
+
]
|
|
907
|
+
: [
|
|
908
|
+
{ key: 'municipio', label: 'Municipio' },
|
|
909
|
+
{ key: 'valor', label: 'Valor' }
|
|
910
|
+
]
|
|
911
|
+
}
|
|
912
|
+
onRowClick={(row) => {
|
|
913
|
+
// Click en tabla → hace zoom en mapa a esa entidad
|
|
914
|
+
if (nivel === 'entidad') {
|
|
915
|
+
setSelectedEnt(row.cvegeo);
|
|
916
|
+
setNivel('municipio');
|
|
917
|
+
}
|
|
918
|
+
}}
|
|
919
|
+
/>
|
|
920
|
+
|
|
921
|
+
{/* Botón para regresar */}
|
|
922
|
+
{nivel === 'municipio' && (
|
|
923
|
+
<button
|
|
924
|
+
style={{
|
|
925
|
+
position: 'absolute',
|
|
926
|
+
top: 20,
|
|
927
|
+
left: 20,
|
|
928
|
+
zIndex: 1000,
|
|
929
|
+
padding: '10px 20px'
|
|
930
|
+
}}
|
|
931
|
+
onClick={() => {
|
|
932
|
+
setNivel('entidad');
|
|
933
|
+
setSelectedEnt(null);
|
|
934
|
+
}}
|
|
935
|
+
>
|
|
936
|
+
← Regresar a entidades
|
|
937
|
+
</button>
|
|
938
|
+
)}
|
|
939
|
+
</div>
|
|
940
|
+
);
|
|
941
|
+
}
|
|
942
|
+
```
|
|
943
|
+
|
|
944
|
+
**Flujo de interacción bidireccional:**
|
|
945
|
+
1. **Vista inicial**: Muestra tabla con entidades (`prueba_entidad.csv`) y mapa de México
|
|
946
|
+
2. **Click en MAPA**: Hace zoom a la entidad y cambia tabla a municipios
|
|
947
|
+
3. **Click en TABLA**: Hace zoom en el mapa y cambia tabla a municipios
|
|
948
|
+
4. **Mapa hace zoom**: Automáticamente hacia la entidad seleccionada
|
|
949
|
+
5. **Tabla cambia**: Muestra datos municipales (`cdmx_prueba.csv`)
|
|
950
|
+
6. **Botón "Regresar"**: Vuelve a la vista de entidades
|
|
951
|
+
|
|
866
952
|
### Formato de Números
|
|
867
953
|
|
|
868
954
|
Los números se formatean automáticamente con separadores de miles usando el formato mexicano:
|
|
@@ -958,6 +1044,7 @@ Puedes sobrescribir los estilos usando la clase `className`:
|
|
|
958
1044
|
| `joinCsvKeyMunicipios` | `string` | `"cvegeo"` | Campo del CSV municipal para hacer el join (por defecto usa cvegeo de 5 dígitos) |
|
|
959
1045
|
| `fieldMunicipios` | `string` | `field` | Campo del CSV municipal con los valores a visualizar (por defecto usa el mismo `field` de entidades) |
|
|
960
1046
|
| `modeMunicipios` | `"boolean" \| "jenks"` | `mode` | Modo de estilo para municipios (permite usar diferente clasificación que entidades) |
|
|
1047
|
+
| `onFeatureClick` | `(featureId: string, properties: any) => void` | `undefined` | Callback que se ejecuta al hacer click en una feature del mapa. Recibe el ID de la feature y sus propiedades. Solo funciona cuando hay 2 o más entidades en `fitToIds` |
|
|
961
1048
|
|
|
962
1049
|
## Modos de Estilo
|
|
963
1050
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/components/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/components/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAuKvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -26,6 +26,7 @@ export interface MapaPMTilesProps {
|
|
|
26
26
|
joinCsvKeyMunicipios?: string;
|
|
27
27
|
fieldMunicipios?: string;
|
|
28
28
|
modeMunicipios?: 'boolean' | 'jenks';
|
|
29
|
+
onFeatureClick?: (featureId: string, properties: any) => void;
|
|
29
30
|
}
|
|
30
31
|
export declare const MapaPMTiles: React.FC<MapaPMTilesProps>;
|
|
31
32
|
//# sourceMappingURL=MapaPMTiles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapaPMTiles.d.ts","sourceRoot":"","sources":["../../src/components/MapaPMTiles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MapaPMTiles.d.ts","sourceRoot":"","sources":["../../src/components/MapaPMTiles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAErC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/D;AAmDD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA2qBlD,CAAC"}
|