Add Dataset Manager functionality with IndexedDB support

- Introduced a new modal for managing datasets, including options to create, view, and delete datasets.
- Implemented IndexedDB for persistent storage of datasets, allowing for efficient data retrieval and management.
- Added UI components for dataset details, including statistics and preview.
- Enhanced the app's JavaScript to handle dataset operations such as saving, updating, and deleting datasets.
- Integrated dataset reference resolution in the visualization editor to support dynamic data sources.
- Updated styles for the new modal and dataset management UI for improved user experience.
This commit is contained in:
2025-10-13 18:17:09 +03:00
parent 1734001d20
commit 615c2d7f98
7 changed files with 1415 additions and 26 deletions

View File

@@ -117,6 +117,70 @@ document.addEventListener('DOMContentLoaded', function () {
});
}
// Dataset Manager
const datasetsLink = document.getElementById('datasets-link');
const toggleDatasetsBtn = document.getElementById('toggle-datasets');
const datasetModal = document.getElementById('dataset-modal');
const datasetModalClose = document.getElementById('dataset-modal-close');
const newDatasetBtn = document.getElementById('new-dataset-btn');
const cancelDatasetBtn = document.getElementById('cancel-dataset-btn');
const saveDatasetBtn = document.getElementById('save-dataset-btn');
const deleteDatasetBtn = document.getElementById('delete-dataset-btn');
const copyReferenceBtn = document.getElementById('copy-reference-btn');
// Open dataset manager
if (datasetsLink) {
datasetsLink.addEventListener('click', openDatasetManager);
}
if (toggleDatasetsBtn) {
toggleDatasetsBtn.addEventListener('click', openDatasetManager);
}
// Close dataset manager
if (datasetModalClose) {
datasetModalClose.addEventListener('click', closeDatasetManager);
}
// Close on overlay click
if (datasetModal) {
datasetModal.addEventListener('click', function (e) {
if (e.target === datasetModal) {
closeDatasetManager();
}
});
}
// New dataset button
if (newDatasetBtn) {
newDatasetBtn.addEventListener('click', showNewDatasetForm);
}
// Cancel dataset button
if (cancelDatasetBtn) {
cancelDatasetBtn.addEventListener('click', hideNewDatasetForm);
}
// Save dataset button
if (saveDatasetBtn) {
saveDatasetBtn.addEventListener('click', saveNewDataset);
}
// Delete dataset button
if (deleteDatasetBtn) {
deleteDatasetBtn.addEventListener('click', deleteCurrentDataset);
}
// Copy reference button
if (copyReferenceBtn) {
copyReferenceBtn.addEventListener('click', copyDatasetReference);
}
// Refresh metadata button
const refreshMetadataBtn = document.getElementById('refresh-metadata-btn');
if (refreshMetadataBtn) {
refreshMetadataBtn.addEventListener('click', refreshDatasetMetadata);
}
// View mode toggle buttons
document.getElementById('view-draft').addEventListener('click', () => {
switchViewMode('draft');