Я пытаюсь отобразить панель управления в HTML-коде на экране ScreenCloud. ScreenCloud — это медиаплеер. Вы загружаете любые медиафайлы со своего ПК в веб-приложение ScreenCloud, применяете их к экрану, и медиа-окно отображается через HDMI на соответствующем экране.
У меня есть некоторые данные, которые выводятся из одной из наших баз данных Microsoft Access, когда кто-то нажимает определенную кнопку в базе данных. Данные будут выведены в документ Word (попробовал файл CSV, но это испортило данные, файл .xlsx был единственным способом получить единообразные данные).
Итак, у меня есть поток Power Automate, который проверяет наличие таблицы, если в документе нет таблицы, он создает ее, если таблица есть, поток завершается на этом. Существует 7 потоков Power Automate, которые следуют за потоками, которые организуют данные из таблицы Excel, поэтому выводятся только необходимые данные, они имеют формат JSON, и каждый поток обрабатывает данные, специфичные для часа, с 1 по 7 час. Затем 7 потоков выводят данные JSON в ScreenCloud, где данные находятся в окне «Данные приложения».
У меня есть код HTML и код JavaScript, HTML на этом этапе: просто стили, я возился, пытаясь внедрить стили и перехватчики данных в HTML, прежде чем я провел дополнительные исследования и понял, что лучше всего использовать стили в HTML и использовать JavaScript, чтобы получить все, что мне нужно, с точки зрения данных.
Проблема, с которой я столкнулся, заключается в том, что панель мониторинга, которая должна быть создана, не возвращает таблицы или диаграммы, она предназначена для отображения сводной таблицы, целевого и фактического выходного графика и комментариев стол. Я не знаю, почему данные приложения не попадают в код JavaScript или HTML и, следовательно, не отображают таблицы или диаграммы.
Это JavaScript:
Я пытаюсь отобразить панель управления в HTML-коде на экране ScreenCloud. ScreenCloud — это медиаплеер. Вы загружаете любые медиафайлы со своего ПК в веб-приложение ScreenCloud, применяете их к экрану, и медиа-окно отображается через HDMI на соответствующем экране. У меня есть некоторые данные, которые выводятся из одной из наших баз данных Microsoft Access, когда кто-то нажимает определенную кнопку в базе данных. Данные будут выведены в документ Word (попробовал файл CSV, но это испортило данные, файл .xlsx был единственным способом получить единообразные данные). Итак, у меня есть поток Power Automate, который проверяет наличие таблицы, если в документе нет таблицы, он создает ее, если таблица есть, поток завершается на этом. Существует 7 потоков Power Automate, которые следуют за потоками, которые организуют данные из таблицы Excel, поэтому выводятся только необходимые данные, они имеют формат JSON, и каждый поток обрабатывает данные, специфичные для часа, с 1 по 7 час. Затем 7 потоков выводят данные JSON в ScreenCloud, где данные находятся в окне «Данные приложения». У меня есть код HTML и код JavaScript, HTML на этом этапе: просто стили, я возился, пытаясь внедрить стили и перехватчики данных в HTML, прежде чем я провел дополнительные исследования и понял, что лучше всего использовать стили в HTML и использовать JavaScript, чтобы получить все, что мне нужно, с точки зрения данных. Проблема, с которой я столкнулся, заключается в том, что панель мониторинга, которая должна быть создана, не возвращает таблицы или диаграммы, она предназначена для отображения сводной таблицы, целевого и фактического выходного графика и комментариев стол. Я не знаю, почему данные приложения не попадают в код JavaScript или HTML и, следовательно, не отображают таблицы или диаграммы. Это JavaScript: [code](function () { // ---------- Helpers ---------- const log = (...a) => console.log('[Hourly Report]', ...a);
const toNum = (v) => { if (v == null) return 0; const s = String(v).replace(/,/g, '').trim(); const n = parseFloat(s); return Number.isFinite(n) ? n : 0; };
const decodeHTML = (s) => { if (s == null) return ''; try { return new DOMParser().parseFromString(String(s), 'text/html').body.textContent || ''; } catch { const ta = document.createElement('textarea'); ta.innerHTML = String(s); return ta.value; } }; const escapeHTML = (s) => String(s ?? '').replace(/[&"']/g, (ch) => ({'&':'&','':'>','"':'"',"'":'''}[ch])); const safeHTML = (s) => escapeHTML(decodeHTML(s));
// ---------- Group rows by Bay for per‑Bay bars ---------- function drawGroupedBarChart(rows) { const c = document.getElementById('chart1'); if (!c) { log('No #chart1 canvas found'); return; } const ctx = c.getContext('2d');
// Sync canvas size to CSS box each render const w = Math.max(300, c.clientWidth || c.width || 1100); const h = Math.max(200, c.clientHeight || c.height || 300); if (c.width !== w) c.width = w; if (c.height !== h) c.height = h;
// Clear ctx.clearRect(0, 0, c.width, c.height);
// --- Group by Bay --- // For each Bay, get Target and Actual const bayMap = new Map(); for (const r of rows) { const bay = (r.Bay || '').trim() || '(No Bay)'; if (!bayMap.has(bay)) bayMap.set(bay, { target: 0, actual: 0 }); const agg = bayMap.get(bay); agg.target += (r.Target || 0); agg.actual += (r.Actual || 0); } const labels = Array.from(bayMap.keys()); const targets = labels.map(bay => bayMap.get(bay).target); const actuals = labels.map(bay => bayMap.get(bay).actual); const N = labels.length;
// ---------- ScreenCloud Data Hook ---------- function hookScreenCloud(ingest) { const sc = window.ScreenCloud || window.SC;
// Dev/runtime API if present if (sc) { if (typeof sc.getData === 'function') sc.getData().then(ingest).catch(() => {}); if (typeof sc.onData === 'function') sc.onData(ingest); if (sc.data) ingest(sc.data); }
[/code] Все данные должны отображаться с помощью кода автоматически, так как при их отображении не будет клавиатуры или мыши для извлечения данных вручную.