diff --git a/package-lock.json b/package-lock.json index b17b8d8..ed624f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,8 @@ "@adminkit/core": "^3.4.0", "bootstrap": "^5.3.0", "bootstrap-icons": "^1.10.5", + "chart.js": "^3.9.1", + "chartjs-plugin-datalabels": "^2.2.0", "history": "^5.3.0", "svelte-navigator": "^3.2.2", "svelte-pagination": "^0.0.1", @@ -37,6 +39,15 @@ "simplebar": "5.3.9" } }, + "node_modules/@adminkit/core/node_modules/chart.js": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", + "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", + "dependencies": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, "node_modules/@babel/polyfill": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", @@ -508,13 +519,9 @@ "integrity": "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==" }, "node_modules/chart.js": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", - "integrity": "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==", - "dependencies": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" }, "node_modules/chartjs-color": { "version": "2.4.1", @@ -533,6 +540,14 @@ "color-name": "^1.0.0" } }, + "node_modules/chartjs-plugin-datalabels": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-datalabels/-/chartjs-plugin-datalabels-2.2.0.tgz", + "integrity": "sha512-14ZU30lH7n89oq+A4bWaJPnAG8a7ZTk7dKf48YAzMvJjQtjrgg5Dpk9f+LbjCF6bpx3RAGTeL13IXpKQYyRvlw==", + "peerDependencies": { + "chart.js": ">=3.0.0" + } + }, "node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", @@ -727,9 +742,9 @@ } }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } diff --git a/package.json b/package.json index 11147f5..e133a36 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,11 @@ "@adminkit/core": "^3.4.0", "bootstrap": "^5.3.0", "bootstrap-icons": "^1.10.5", + "chart.js": "^3.9.1", + "chartjs-plugin-datalabels": "^2.2.0", "history": "^5.3.0", "svelte-navigator": "^3.2.2", "svelte-pagination": "^0.0.1", - "svelte-qrcode": "^1.0.0", - "chart.js": "^3.7.0" + "svelte-qrcode": "^1.0.0" } } diff --git a/src/pages/site/CantidadParaderosComunaGrafico.svelte b/src/pages/site/CantidadParaderosComunaGrafico.svelte new file mode 100644 index 0000000..16a8131 --- /dev/null +++ b/src/pages/site/CantidadParaderosComunaGrafico.svelte @@ -0,0 +1,113 @@ + + + + + + +
+ +
+
+
Paraderos por Comuna
+
+
+ +
+
+ + + + + + + + + {#each comunasCounts as { id_comuna__nombre_comuna, total }} + + + + + {/each} + +
ComunaTotal Paraderos
{id_comuna__nombre_comuna}{total}
+
+
+
+
+
+ + +
+
+
\ No newline at end of file diff --git a/src/pages/site/CantidadRutaBuses.svelte b/src/pages/site/CantidadRutaBuses.svelte new file mode 100644 index 0000000..6025f6d --- /dev/null +++ b/src/pages/site/CantidadRutaBuses.svelte @@ -0,0 +1,71 @@ + + +
+
+
Rutas con Informacion de Posicionamiento
+ +
+
diff --git a/src/pages/site/Home.svelte b/src/pages/site/Home.svelte index 0678913..35a3b13 100644 --- a/src/pages/site/Home.svelte +++ b/src/pages/site/Home.svelte @@ -3,14 +3,18 @@ import CantidadParaderos from "./CantidadParaderos.svelte"; import CantidadLineas from "./CantidadLineas.svelte"; import CantidadParaderosComuna from "./CantidadParaderosComuna.svelte"; + import CantidadParaderosComunaGrafico from "./CantidadParaderosComunaGrafico.svelte"; import CantidadBusesRecorrido from "./CantidadBusesRecorrido.svelte"; import CantidadBusesLinea from "./CantidadBusesLinea.svelte"; + import RutasCorrectas from "./rutasCorrectas.svelte"; + import CantidadRutasBuses from "./CantidadRutaBuses.svelte"; let loading1 = false let loading2 = false let loading3 = false let loading4 = false let loading5 = false + let loading6 = false loading2 = ev.detail} /> - - -
-
- loading3 = ev.detail} /> -
+
loading4 = ev.detail} />
+ +
+
+
+ loading5 = ev.detail} /> +
+
+
+ +
+ loading6 = ev.detail} /> +
+ +
+ + + + loading3 = ev.detail} /> +
+
diff --git a/src/pages/site/rutasCorrectas.svelte b/src/pages/site/rutasCorrectas.svelte new file mode 100644 index 0000000..3abade9 --- /dev/null +++ b/src/pages/site/rutasCorrectas.svelte @@ -0,0 +1,69 @@ + + +
+
+
Rutas Definidas
+ +
+
diff --git a/src/services/lineas.js b/src/services/lineas.js index 3a7ae5d..5273c3d 100644 --- a/src/services/lineas.js +++ b/src/services/lineas.js @@ -86,6 +86,16 @@ export async function getCountBuses(params) { } +export async function getCountLineasCorrectas(params) { + const query = !params ? '' : '?' + (new URLSearchParams(params).toString()); + const res = await fetch(`${base}/lineas/count_lineas_correctas/${query}`, { + headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" } + }) + if (!res.ok) throw await res.text() + return res.json() +} + + export async function getCountBusesRecorridos(params) { const query = !params ? '' : '?' + (new URLSearchParams(params).toString()); const res = await fetch(`${base}/lineas/count_buses_recorridos/${query}`, { @@ -93,4 +103,14 @@ export async function getCountBusesRecorridos(params) { }) if (!res.ok) throw await res.text() return res.json() -} \ No newline at end of file +} + + +export async function getCountRutasBuses(params) { + const query = !params ? '' : '?' + (new URLSearchParams(params).toString()); + const res = await fetch(`${base}/lineas/count_rutas_buses/${query}`, { + headers: { "Authorization": `Bearer ${getToken()}`, "Content-Type": "application/json" } + }) + if (!res.ok) throw await res.text() + return res.json() +}