feat:实现文档集同步的功能
This commit is contained in:
@ -132,10 +132,9 @@ export async function handleAddContextDocumentSet(panel: vscode.WebviewPanel) {
|
||||
}
|
||||
|
||||
export async function handleGetDocumentSetList(panel: vscode.WebviewPanel) {
|
||||
const documents = getDocumentSet();
|
||||
panel.webview.postMessage({
|
||||
command: "showDocumentSetList",
|
||||
documents: documents,
|
||||
documents: documentSets,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -552,5 +552,13 @@ export async function handleWebviewMessage(
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case "loadDocumentSets":
|
||||
const { getDocumentSets } = await import("./contextHelper");
|
||||
panel.webview.postMessage({
|
||||
command: "documentSetSaved",
|
||||
documentSets: getDocumentSets(),
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -408,7 +408,7 @@ export function getContextButtonScript(): string {
|
||||
currentListData = documents;
|
||||
filteredListData = documents;
|
||||
selectedItems.clear();
|
||||
renderList(documents);
|
||||
renderDocumentSetList(documents);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -481,6 +481,43 @@ export function getContextButtonScript(): string {
|
||||
\`).join('');
|
||||
}
|
||||
|
||||
// 渲染文档集列表
|
||||
function renderDocumentSetList(data) {
|
||||
const body = document.getElementById('contextMenuListBody');
|
||||
if (!body) return;
|
||||
|
||||
filteredListData = data || [];
|
||||
|
||||
body.innerHTML = filteredListData.map((item, index) => \`
|
||||
<div class="context-menu-list-item \${selectedItems.has(item.id) ? 'selected' : ''}" onclick="toggleDocumentSetSelection(\${index})">
|
||||
<input type="checkbox" id="item-\${index}" \${selectedItems.has(item.id) ? 'checked' : ''} />
|
||||
<label>\${item.name}</label>
|
||||
</div>
|
||||
\`).join('');
|
||||
}
|
||||
|
||||
// 切换文档集选择
|
||||
function toggleDocumentSetSelection(index) {
|
||||
const selectedItem = filteredListData[index];
|
||||
if (!selectedItem) return;
|
||||
|
||||
const selectedId = selectedItem.id;
|
||||
const checkbox = document.getElementById('item-' + index);
|
||||
const item = document.querySelectorAll('.context-menu-list-item')[index];
|
||||
|
||||
if (selectedItems.has(selectedId)) {
|
||||
selectedItems.delete(selectedId);
|
||||
if (checkbox) checkbox.checked = false;
|
||||
if (item) item.classList.remove('selected');
|
||||
} else {
|
||||
selectedItems.add(selectedId);
|
||||
if (checkbox) checkbox.checked = true;
|
||||
if (item) item.classList.add('selected');
|
||||
}
|
||||
|
||||
updateSelectedCount();
|
||||
}
|
||||
|
||||
// 切换项选择
|
||||
function toggleItemSelection(index) {
|
||||
const selectedItem = filteredListData[index];
|
||||
@ -514,8 +551,15 @@ export function getContextButtonScript(): string {
|
||||
// 确认选择
|
||||
function confirmSelection() {
|
||||
try {
|
||||
if (currentListType === 'documentSetItem') {
|
||||
const selected = currentListData.filter(item => selectedItems.has(item.id));
|
||||
selected.forEach(docSet => {
|
||||
docSet.documents.forEach(doc => {
|
||||
addContextItem('file', doc.path, doc.relativePath || doc.path);
|
||||
});
|
||||
});
|
||||
} else {
|
||||
const selected = currentListData.filter(item => selectedItems.has(item.path));
|
||||
|
||||
if (selected.length > 0) {
|
||||
if (currentListType === 'documentSet') {
|
||||
vscode.postMessage({
|
||||
@ -524,10 +568,11 @@ export function getContextButtonScript(): string {
|
||||
});
|
||||
} else {
|
||||
selected.forEach(item => {
|
||||
addContextItem(currentListType === 'documentSetItem' ? 'file' : currentListType, item.path, item.relativePath || item.path);
|
||||
addContextItem(currentListType, item.path, item.relativePath || item.path);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
const menu = document.getElementById('contextMenu');
|
||||
const button = document.querySelector('.add-context-button');
|
||||
|
||||
@ -248,6 +248,11 @@ export function getSettingsComponentScript(): string {
|
||||
content.classList.remove('active');
|
||||
}
|
||||
});
|
||||
|
||||
// 切换到上下文标签页时加载文档集列表
|
||||
if (tabName === 'context') {
|
||||
vscode.postMessage({ command: 'loadDocumentSets' });
|
||||
}
|
||||
}
|
||||
|
||||
// 监听打开设置标签页的消息
|
||||
|
||||
Reference in New Issue
Block a user