diff --git a/scripts/vendor/main.js b/scripts/vendor/main.js
deleted file mode 100644
index a19157d..0000000
--- a/scripts/vendor/main.js
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * Storage Saturation Report - Main JavaScript
- * Loads report via mode=getreport. PDF/Image export via client-side jsPDF + html2canvas (no XI Chromium pipeline).
- */
-
-$(document).ready(function() {
- load_report();
-
- $('#export-pdf-btn').on('click', function() {
- exportToPdf();
- });
-
- $('#export-image-btn').on('click', function() {
- exportToImage();
- });
-
- function load_report() {
- var baseUrl = window.saturationreportBaseUrl || (window.location.pathname.replace(/\/[^/]*$/, '/index.php'));
- var url = baseUrl + '?mode=getreport';
-
- $.get(url, function(html) {
- $('#report').html(html);
- }).fail(function() {
- $('#report').html(
- '
' +
- 'Error loading storage saturation report.' +
- '
'
- );
- });
- }
-
- function getComponentBase() {
- return (window.saturationreportBaseUrl || '').replace(/\/[^/]*$/, '');
- }
-
- function loadScript(src, onload, onerror) {
- var script = document.createElement('script');
- script.src = src;
- script.onload = onload;
- script.onerror = onerror || function() {};
- document.head.appendChild(script);
- }
-
- function exportToPdf() {
- var btn = $('#export-pdf-btn');
- var originalText = btn.html();
- btn.prop('disabled', true).html(' Generating...');
-
- function doPdf() {
- if (typeof html2canvas === 'undefined') {
- var componentBase = getComponentBase();
- var localH2c = componentBase ? (componentBase + '/scripts/vendor/html2canvas.min.js') : '';
- var cdnH2c = 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js';
- loadScript(localH2c || cdnH2c, function() { doPdf(); }, function() {
- if (localH2c) { loadScript(cdnH2c, doPdf, fallbackPdf); return; }
- fallbackPdf();
- });
- return;
- }
- if (typeof window.jspdf === 'undefined' || !window.jspdf.jsPDF) {
- var componentBase = getComponentBase();
- var localJspdf = componentBase ? (componentBase + '/scripts/vendor/jspdf.umd.min.js') : '';
- var cdnJspdf = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js';
- loadScript(localJspdf || cdnJspdf, doPdf, function() {
- if (localJspdf) loadScript(cdnJspdf, doPdf, fallbackPdf);
- else fallbackPdf();
- });
- return;
- }
- var container = document.getElementById('saturationreport-container');
- if (!container) container = document.getElementById('report');
- if (!container) {
- alert('Report container not found');
- btn.prop('disabled', false).html(originalText);
- return;
- }
- html2canvas(container, {
- backgroundColor: '#ffffff',
- scale: 2,
- logging: false,
- useCORS: true
- }).then(function(canvas) {
- try {
- var JsPDF = window.jspdf.jsPDF;
- var doc = new JsPDF('p', 'mm', 'a4');
- var pageW = doc.internal.pageSize.getWidth();
- var pageH = doc.internal.pageSize.getHeight();
- var margin = 10;
- var maxW = pageW - 2 * margin;
- var maxH = pageH - 2 * margin;
- var imgW = maxW;
- var imgH = (canvas.height * maxW) / canvas.width;
- if (imgH > maxH) {
- imgH = maxH;
- imgW = (canvas.width * maxH) / canvas.height;
- }
- doc.addImage(canvas.toDataURL('image/png'), 'PNG', margin, margin, imgW, imgH);
- doc.save('storage-saturation-report-' + new Date().getTime() + '.pdf');
- } catch (err) {
- console.error('PDF export error:', err);
- alert('Failed to generate PDF. Try Print to PDF from the browser.');
- }
- btn.prop('disabled', false).html(originalText);
- }).catch(function(err) {
- console.error('Capture error:', err);
- fallbackPdf();
- });
- }
-
- function fallbackPdf() {
- btn.prop('disabled', false).html(originalText);
- window.print();
- }
-
- doPdf();
- }
-
- function exportToImage() {
- if (typeof html2canvas === 'undefined') {
- var componentBase = (window.saturationreportBaseUrl || '').replace(/\/[^/]*$/, '');
- var localSrc = componentBase ? (componentBase + '/scripts/vendor/html2canvas.min.js') : '';
- var cdnSrc = 'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js';
- var script = document.createElement('script');
- script.src = localSrc || cdnSrc;
- script.onload = function() { captureImage(); };
- script.onerror = function() {
- if (localSrc && script.src === localSrc) {
- var fallback = document.createElement('script');
- fallback.src = cdnSrc;
- fallback.onload = function() { captureImage(); };
- fallback.onerror = function() {
- alert('Failed to load image export library. Please try using browser screenshot or print-to-PDF instead.');
- };
- document.head.appendChild(fallback);
- } else {
- alert('Failed to load image export library. Please try using browser screenshot or print-to-PDF instead.');
- }
- };
- document.head.appendChild(script);
- } else {
- captureImage();
- }
- }
-
- function captureImage() {
- var container = document.getElementById('saturationreport-container');
- if (!container) {
- container = document.getElementById('report');
- }
- if (!container) {
- alert('Report container not found');
- return;
- }
-
- var btn = $('#export-image-btn');
- var originalText = btn.html();
- btn.prop('disabled', true).html(' Generating...');
-
- html2canvas(container, {
- backgroundColor: '#ffffff',
- scale: 2,
- logging: false,
- useCORS: true
- }).then(function(canvas) {
- var link = document.createElement('a');
- link.download = 'saturation-report-' + new Date().getTime() + '.png';
- link.href = canvas.toDataURL('image/png');
- link.click();
- btn.prop('disabled', false).html(originalText);
- }).catch(function(err) {
- console.error('Error capturing image:', err);
- alert('Failed to generate image. Please try using browser screenshot or print-to-PDF instead.');
- btn.prop('disabled', false).html(originalText);
- });
- }
-});