This commit is contained in:
2026-05-23 16:45:23 +08:00
parent 1336695068
commit 9d6ed4b0a5
8 changed files with 70 additions and 23 deletions

View File

@@ -17,18 +17,16 @@ export function openPlecUpload(_context: vscode.ExtensionContext) {
if (msg.type === 'pickFile') {
const picked = await vscode.window.showOpenDialog({
canSelectMany: false,
canSelectMany: true,
filters: { HTML: ['html', 'htm'] },
openLabel: 'Select',
defaultUri: getPickerDefaultUri(),
});
if (picked && picked[0]) {
const fp = picked[0].fsPath;
if (picked && picked.length) {
panel.webview.postMessage({
type: 'fileSelected',
type: 'filesSelected',
rowId: msg.rowId,
path: fp,
name: path.basename(fp),
files: picked.map(u => ({ path: u.fsPath, name: path.basename(u.fsPath) })),
});
}
return;
@@ -233,6 +231,12 @@ function getHtml(): string {
const vscode = acquireVsCodeApi();
let nextId = 1;
const tbody = document.querySelector('#rows tbody');
function parseIterationName(filename) {
const base = filename.replace(/\\.html?$/i, '');
const match = base.match(/\\b(full|\\d+clk|\\d+s(?:ec)?)\\b/i);
return match ? match[1].toLowerCase() : base;
}
const statusEl = document.getElementById('status');
const resultsEl = document.getElementById('results');
@@ -286,13 +290,22 @@ function getHtml(): string {
window.addEventListener('message', (e) => {
const m = e.data;
if (m.type === 'fileSelected') {
const tr = tbody.querySelector('tr[data-id="' + m.rowId + '"]');
if (!tr) return;
tr.querySelector('[data-path]').value = m.path;
tr.querySelector('[data-name]').textContent = m.name;
const iter = tr.querySelector('[data-iter]');
if (!iter.value) iter.value = m.name.replace(/\\.html?$/i, '');
if (m.type === 'filesSelected') {
const firstTr = tbody.querySelector('tr[data-id="' + m.rowId + '"]');
m.files.forEach(function(f, i) {
let tr;
if (i === 0) {
tr = firstTr;
} else {
addRow();
tr = tbody.lastElementChild;
}
if (!tr) return;
tr.querySelector('[data-path]').value = f.path;
tr.querySelector('[data-name]').textContent = f.name;
const iter = tr.querySelector('[data-iter]');
if (!iter.value) iter.value = parseIterationName(f.name);
});
} else if (m.type === 'status') {
statusEl.textContent = m.message;
statusEl.className = '';