Skip to content
Snippets Groups Projects
app.js 2.26 KiB
Newer Older
Benedikt's avatar
Benedikt committed
import { parseString } from 'xml2js';

Benedikt's avatar
Benedikt committed
// Import our interactive measurement renderer
Benedikt's avatar
Benedikt committed
import { renderMeasurementResults } from './renderers/MeasurementRenderer.js';
Benedikt's avatar
Benedikt committed
import { renderAdminData } from './renderers/AdminRenderer.js';
Benedikt's avatar
Benedikt committed

// Global configuration
const selectableLanguages = ['en', 'de', 'fr', 'es'];
let selectedLanguage = 'en';
let dccData = null;

export function initApp() {
  const appContainer = document.getElementById('app');

  // Create language selection dropdown
  const langSelect = document.createElement('select');
  selectableLanguages.forEach(lang => {
    const option = document.createElement('option');
    option.value = lang;
    option.textContent = lang;
    if (lang === selectedLanguage) option.selected = true;
    langSelect.appendChild(option);
  });
  langSelect.addEventListener('change', (e) => {
    selectedLanguage = e.target.value;
    renderAll();
  });
  appContainer.appendChild(langSelect);

Benedikt's avatar
Benedikt committed
  // Create containers for admin data and measurement results
Benedikt's avatar
Benedikt committed
  const adminContainer = document.createElement('div');
  adminContainer.id = 'adminData';
  appContainer.appendChild(adminContainer);

  const measContainer = document.createElement('div');
  measContainer.id = 'measurementResults';
  appContainer.appendChild(measContainer);

Benedikt's avatar
Benedikt committed
  // Load the XML file from the data folder
Benedikt's avatar
Benedikt committed
  fetch('/data/sin_acceleration_example_dcc_WithExampleConformatyStatment.xml')
    .then(response => response.text())
    .then(xmlText => {
      parseString(xmlText, { explicitArray: false }, (err, result) => {
        if (err) {
          console.error('Error parsing XML:', err);
          return;
        }
        dccData = result;
        renderAll();
      });
    })
    .catch(err => console.error('Error loading XML file:', err));
}

function renderAll() {
  // Clear containers
Benedikt's avatar
Benedikt committed
  document.getElementById('adminData').innerHTML = '';
  document.getElementById('measurementResults').innerHTML = '';
Benedikt's avatar
Benedikt committed

  if (dccData && dccData['dcc:digitalCalibrationCertificate']) {
    const cert = dccData['dcc:digitalCalibrationCertificate'];
    if (cert['dcc:administrativeData']) {
      renderAdminData(cert['dcc:administrativeData'], selectedLanguage);
    }
    if (cert['dcc:measurementResults']) {
      renderMeasurementResults(cert['dcc:measurementResults'], selectedLanguage);
    }
  }
}