Привет, ребята, у меня возникла проблема: я пытаюсь разместить какие-то метки или какие-то аннотации за пределами холста, который я генерирую с помощью ChartJS, но я новичок в использовании ChartJS и не знаю, правильно ли я это делаю. После создания графика у вас также есть возможность загрузить канву в формате PDF. Позвольте мне показать вам, как выглядит холст, рис. 1. И рис. 2, что я хочу сделать. Рис. 1. PIC2.
Вот как выглядит мой JS:
Total producido:
Total esperado:
Actualización:
Fecha:
Я пытался использовать аннотации, но на форумахchartJS обнаружил, что вы не можете поместить аннотацию за пределы графика, поэтому мне просто интересно, какой вариант лучше всего использовать для такой маркировки. . Я попытался сгруппировать все данные в JavaScript, чтобы их было легче группировать, когда я знаю, как правильно маркировать.
Привет, ребята, у меня возникла проблема: я пытаюсь разместить какие-то метки или какие-то аннотации за пределами холста, который я генерирую с помощью ChartJS, но я новичок в использовании ChartJS и не знаю, правильно ли я это делаю. После создания графика у вас также есть возможность загрузить канву в формате PDF. Позвольте мне показать вам, как выглядит холст, рис. 1. И рис. 2, что я хочу сделать. Рис. 1. PIC2. Вот как выглядит мой JS: [code]function inicializarGrafica() { let fecha1Input = document.getElementById("fecha1"); let enviarButton = document.getElementById("enviar"); let miGraficaCanvas = document.getElementById('miGrafica'); let miGrafica; let totalRealElement = document.getElementById('totalReal'); let totalEsperadoElement = document.getElementById('totalEsperado'); let descargarButton = document.getElementById('descargarPdf'); let graficaContainer = document.getElementById('graficaContainer'); const grupos = { "Pozos Carrizal": ["C1", "C3", "27SP", "28SP", "SG1", "SG2", "BURGOIN", "MAUTO"], "Acueducto 1": ["8", "9", "10", "11", "12", "16", "30R", "31R", "H3"], "Acueducto 2": ["18", "17", "15BIS", "17BIS"], "Acueducto 3": ["20", "21", "22", "23", "24", "25", "26"], "Acueducto 4": ["2R", "4R", "19R"], "Cham. y Cent.": ["ARD1", "ARD2", "LC1", "29C"], "Ciudad": ["1", "2", "4", "6", "7", "14"], "Otros": ["PINO", "DUARTE"] };
if (fecha1Input && enviarButton && miGraficaCanvas && totalRealElement && totalEsperadoElement && descargarButton) { enviarButton.addEventListener("click", async function () { var fechaActual = new Date().toISOString().split('T')[0]; const fecha1 = fecha1Input.value;
if (!fecha1) { Swal.fire({ icon: 'error', title: 'Error', text: 'El campo de fecha está vacío, favor de ingresar una fecha.' }); return; }
if (fecha1 > fechaActual) { Swal.fire({ icon: 'error', title: 'Error', text: 'La fecha ingresada no puede ser mayor a la fecha actual.' }); return; }
document.getElementById('fechaTotal').innerText = `Fecha: ${fecha1}`; const url = "APIURL"; const datos = new URLSearchParams(); datos.append("fecha1", fecha1);
try { const response = await fetch(url, opciones); if (!response.ok) { throw new Error(`Error en la solicitud. Código de estado: ${response.status}`); } const data = await response.json();
// Mapear y ordenar los pozos en el orden de cada grupo for (let grupo in grupos) { const pozosGrupo = grupos[grupo]; pozosGrupo.forEach(pozo => { const pozoData = data.find(d => d.nombre === pozo); if (pozoData) { let nombrePozo = pozoData.nombre; if (pozosConAsterisco.includes(nombrePozo)) { nombrePozo += " *"; // Añadir asterisco } lbls.push(nombrePozo); data_real.push(pozoData.data); valor_esperado.push(pozoData.esperado); } }); }
const totalReal = data_real.reduce((a, b) => a + Number(b), 0).toFixed(2); const totalEsperado = valor_esperado.reduce((a, b) => a + Number(b), 0).toFixed(2);
} catch (error) { Swal.fire({ icon: 'error', title: 'Error', text: 'Ocurrió un error al obtener los datos.' }); } }); } } [/code] Это версия charJS, которую я использую, и аннотации. [code] [/code] А вот где показан график: [code]
Total producido: Total esperado: Actualización:
Fecha:
[/code] Я пытался использовать аннотации, но на форумахchartJS обнаружил, что вы не можете поместить аннотацию за пределы графика, поэтому мне просто интересно, какой вариант лучше всего использовать для такой маркировки. . Я попытался сгруппировать все данные в JavaScript, чтобы их было легче группировать, когда я знаю, как правильно маркировать.