pencil_automator/ui.html

391 lines
No EOL
62 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
* {
font-family: 'Montserrat', sans-serif;
}
body {
font-family: 'Montserrat', sans-serif;
padding: 20px;
background-color: #1e1e1e;
color: #ffffff;
}
h2 {
color: #ffffff;
margin-top: 0;
font-size: 16px;
font-weight: 600;
}
.container {
display: flex;
flex-direction: column;
gap: 16px;
}
.drop-zone {
border: 2px dashed #444;
border-radius: 8px;
padding: 40px;
text-align: center;
color: #aaa;
margin-bottom: 20px;
background-color: #2c2c2c;
cursor: pointer;
transition: border-color 0.2s;
}
.drop-zone:hover,
.drop-zone.dragover {
border-color: #0d99ff;
background-color: #333;
}
.drop-zone p {
margin: 0;
color: #aaa;
font-size: 12px;
}
.input-group {
display: flex;
flex-direction: column;
gap: 8px;
}
label {
font-size: 12px;
font-weight: 500;
color: #ccc;
}
button {
background-color: #0d99ff;
color: white;
border: none;
padding: 8px 16px;
border-radius: 6px;
font-weight: 500;
cursor: pointer;
width: 100%;
margin-right: 8px;
}
button:disabled {
background-color: #555;
cursor: not-allowed;
opacity: 0.7;
}
#status-window {
background: #252525;
color: #ddd;
font-family: 'Montserrat', sans-serif;
font-size: 11px;
padding: 12px;
border-radius: 6px;
height: 150px;
overflow-y: auto;
white-space: pre-wrap;
border: 1px solid #444;
}
.log-entry {
margin-bottom: 4px;
}
.log-info {
color: #ddd;
}
.log-success {
color: #4caf50;
}
.log-warning {
color: #ffc107;
}
.log-error {
color: #f44336;
}
.hidden {
display: none;
}
input[type="text"] {
width: 100%;
padding: 8px;
border: 1px solid #444;
border-radius: 4px;
background-color: #333;
color: white;
}
</style>
</head>
<body>
<div class="container">
<img
src="data:image/png;base64,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"
alt="PencilAutomator" style="width: 25%; height: auto; margin-bottom: 24px; align-self: flex-start;">
</div>
<!-- Excel Input -->
<div class="input-group" style="margin-bottom: 24px;">
<label>1. Load Excel File</label>
<div id="drop-zone" class="drop-zone" style="margin-bottom: 0px;">
<p>Drag & Drop .xlsx here<br>or click to browse</p>
<input type="file" id="file-input" accept=".xlsx, .xls, .csv" class="hidden">
</div>
<div id="file-name" style="font-size: 11px; color: #18A0FB; margin-top: 4px;"></div>
</div>
<!-- Image Folder Input -->
<div class="input-group" style="margin-bottom: 24px;">
<label>2. Select Image Folder</label>
<button id="folder-btn">Choose Folder</button>
<input type="file" id="folder-input" webkitdirectory directory multiple class="hidden">
<div id="folder-name" style="font-size: 11px; color: #18A0FB; margin-top: 4px;"></div>
</div>
<!-- Automate Section -->
<div class="input-group" style="margin-bottom: 24px;">
<label>3. Automate</label>
<div style="display: flex; flex-direction: column; gap: 12px;">
<button id="run-btn" disabled>Run Automation</button>
<button id="replace-btn" disabled>Replace Images Only</button>
<button id="export-btn" disabled>Export ZIP</button>
</div>
</div>
<!-- Status -->
<div class="input-group">
<label>Status</label>
<div id="status-window"></div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
<script>
// UI Logic
const dropZone = document.getElementById('drop-zone');
const fileInput = document.getElementById('file-input');
const folderBtn = document.getElementById('folder-btn');
const folderInput = document.getElementById('folder-input');
const runBtn = document.getElementById('run-btn');
const replaceBtn = document.getElementById('replace-btn');
const exportBtn = document.getElementById('export-btn');
const statusWindow = document.getElementById('status-window');
const fileNameDisplay = document.getElementById('file-name');
const folderNameDisplay = document.getElementById('folder-name');
let excelData = null;
let imageFiles = {}; // Map: filename -> ArrayBuffer
// Initialize status window with a default message
statusWindow.innerHTML = '<div class="log-entry log-info">[00:00:00] Waiting for input...</div>';
function log(msg, type = 'info') {
const timestamp = new Date().toLocaleTimeString();
const logEntry = document.createElement('div');
logEntry.classList.add('log-entry', `log-${type}`);
logEntry.textContent = `[${timestamp}] ${msg}`;
statusWindow.appendChild(logEntry);
statusWindow.scrollTop = statusWindow.scrollHeight;
}
// Drag & Drop
dropZone.addEventListener('click', () => fileInput.click());
dropZone.addEventListener('dragover', (e) => {
e.preventDefault();
dropZone.classList.add('dragover');
});
dropZone.addEventListener('dragleave', () => dropZone.classList.remove('dragover'));
dropZone.addEventListener('drop', (e) => {
e.preventDefault();
dropZone.classList.remove('dragover');
if (e.dataTransfer.files.length) {
handleExcelFile(e.dataTransfer.files[0]);
}
});
fileInput.addEventListener('change', (e) => {
if (e.target.files.length) handleExcelFile(e.target.files[0]);
});
function handleExcelFile(file) {
const reader = new FileReader();
reader.onload = (e) => {
try {
const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data, { type: 'array' });
const firstSheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[firstSheetName];
// Read full sheet to get metadata and headers
const rawData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
// Extract Metadata (Rows 5-8, i.e., indices 4-7)
// Assuming format: Label in Col A, Value in Col B
const metadata = {
codeName: rawData[4] ? rawData[4][1] : '', // Row 5
productName: rawData[5] ? rawData[5][1] : '', // Row 6
cycle: rawData[6] ? rawData[6][1] : '', // Row 7
color: rawData[7] ? rawData[7][1] : '' // Row 8
};
// Extract Headers - Row 11 logic removed as per request
const headers = [];
// Extract Data (Row 12+, index 11+)
const dataRows = rawData.slice(11).filter(row => row && row[0]);
excelData = {
rows: dataRows,
metadata: metadata,
headers: headers
};
fileNameDisplay.textContent = `${file.name} (${dataRows.length} rows)`;
statusWindow.innerHTML = ''; // Clear status
log(`Loaded Excel file. Found ${dataRows.length} rows.`, 'success');
log('Metadata:', 'info');
log(`- Cycle: ${metadata.cycle}`, 'info');
log(`- CodeName: ${metadata.codeName}`, 'info');
log(`- Product: ${metadata.productName}`, 'info');
// Enable buttons
runBtn.disabled = false;
replaceBtn.disabled = false;
exportBtn.disabled = false; // Enable export immediately after loading XLS
// Send data to main thread
// We don't send it yet? We wait for "Run".
// But for "Export Only", we might not need to send data if we just scan pages.
// However, the user said "after the xls is loaded".
// If the user clicks "Export", we send a message.
} catch (err) {
log(`Error parsing Excel: ${err.message}`, 'error');
console.error(err);
}
};
reader.readAsArrayBuffer(file);
}
// Folder Selection
folderBtn.addEventListener('click', () => folderInput.click());
folderInput.addEventListener('change', async (e) => {
const files = Array.from(e.target.files).filter(f => f.type.startsWith('image/'));
log(`Processing ${files.length} images...`);
imageFiles = {};
let loadedCount = 0;
for (const file of files) {
const buffer = await file.arrayBuffer();
imageFiles[file.name] = new Uint8Array(buffer);
loadedCount++;
}
folderNameDisplay.textContent = `${loadedCount} images ready`;
log(`Loaded Folder: ${loadedCount} images ready`);
checkReady();
});
function checkReady() {
if (excelData && Object.keys(imageFiles).length > 0) {
runBtn.disabled = false;
replaceBtn.disabled = false;
}
}
runBtn.addEventListener('click', () => {
log('Starting automation...');
runBtn.disabled = true;
exportBtn.disabled = true;
// Send data to main thread
parent.postMessage({
pluginMessage: {
type: 'run-automation',
data: excelData,
images: imageFiles
}
}, '*');
});
replaceBtn.addEventListener('click', () => {
log('Starting image replacement...');
runBtn.disabled = true;
replaceBtn.disabled = true;
exportBtn.disabled = true;
parent.postMessage({
pluginMessage: {
type: 'replace-images',
data: excelData,
images: imageFiles
}
}, '*');
});
exportBtn.addEventListener('click', () => {
log('Requesting export data...');
exportBtn.disabled = true;
parent.postMessage({ pluginMessage: { type: 'export-zip' } }, '*');
});
window.onmessage = async (event) => {
const msg = event.data.pluginMessage;
if (msg.type === 'log') {
log(msg.message);
}
if (msg.type === 'complete') {
log('Automation Complete!');
runBtn.disabled = false;
replaceBtn.disabled = false;
exportBtn.disabled = false;
}
if (msg.type === 'error') {
log(`Error: ${msg.message}`);
runBtn.disabled = false;
replaceBtn.disabled = false;
exportBtn.disabled = false;
}
if (msg.type === 'export-ready') {
log(`Zipping ${msg.files.length} files...`);
const zip = new JSZip();
msg.files.forEach(file => {
zip.file(file.name, file.bytes);
});
try {
const content = await zip.generateAsync({ type: 'blob' });
const url = URL.createObjectURL(content);
const a = document.createElement('a');
a.href = url;
a.download = 'pf_automator_export.zip';
a.click();
URL.revokeObjectURL(url);
log('Export downloaded!');
} catch (err) {
log(`Zip Error: ${err.message}`);
}
exportBtn.disabled = false;
}
};
</script>
</body>
</html>