MCPcopy Create free account
hub / github.com/TechJeeper/Printventory / createModelItem

Function createModelItem

renderer.js:17549–18924  ·  view source on GitHub ↗
(model, viewMode = null, thumbPriority = THUMB_PRIORITY_BACKGROUND)

Source from the content-addressed store, hash-verified

17547 // Use autoSaveMultipleModels which handles bulk update
17548 await autoSaveMultipleModels('printed', isChecked);
17549 });
17550
17551 console.log('Multi-printed checkbox event listener attached');
17552 } else {
17553 console.error('Multi-printed checkbox not found');
17554 }
17555
17556 // Add event listener for the Clear Selection button
17557 const clearSelectionButton = document.getElementById('clear-selection-button');
17558 if (clearSelectionButton) {
17559 clearSelectionButton.addEventListener('click', () => {
17560 console.log('Clear Selection button clicked');
17561 if (isMultiSelectMode) {
17562 selectedModels.clear();
17563 document.querySelectorAll('.file-item.selected').forEach(item => {
17564 item.classList.remove('selected');
17565 });
17566
17567 // Clear all multi-edit form fields
17568 clearMultiEditFormFields();
17569
17570 // Refresh the tag dropdown options
17571 populateTagSelect('multi-tag-select', 'multi-tags');
17572
17573 updateSelectedCount(); // Update the count display
17574
17575 console.log('Selection cleared');
17576 }
17577 });
17578 console.log('Clear Selection button event listener attached');
17579 } else {
17580 console.error('Clear Selection button not found');
17581 }
17582});
17583
17584// ==================== NEW CODE: Virtual Grid Implementation ====================
17585
17586/**
17587 * Grid queries omit the full `thumbnail` blob (only hasThumbnail is sent), so multi-image
17588 * models are discovered asynchronously via getAllThumbnails. This upgrades a detailed
17589 * card from a plain image to the left/right carousel + count badge.
17590 */
17591function upgradeGridItemToThumbnailCarousel(thumbnailContainer, model, validThumbnails, thumbSize, parseThumbnails) {
17592 const fileItem = thumbnailContainer.closest('.file-item');
17593 const isCarouselView =
17594 fileItem &&
17595 (fileItem.classList.contains('file-item-detailed') || fileItem.classList.contains('file-item-preview'));
17596 if (!isCarouselView) return;
17597 if (!validThumbnails || validThumbnails.length < 2) return;
17598 if (fileItem.querySelector('.thumbnail-nav-left')) return;
17599
17600 const parent = thumbnailContainer.parentNode;
17601 if (!parent) return;
17602
17603 const thumbnailWrapper = document.createElement('div');
17604 thumbnailWrapper.className = 'thumbnail-wrapper';
17605 thumbnailWrapper.style.position = 'relative';
17606 thumbnailWrapper.style.width = thumbSize.width;

Callers 1

renderVisibleItemsFunction · 0.85

Calls 15

isInSelectedModelsFunction · 0.85
autoSaveModelFunction · 0.85
getPreviewTileSizePxFunction · 0.85
addThumbnailMenuButtonFunction · 0.85
navigateThumbnailFunction · 0.85
updateBadgeTextFunction · 0.85
processRenderQueueFunction · 0.85
getParentDirectoryFunction · 0.85
formatFileSizeFunction · 0.85
createSVGIconFunction · 0.85

Tested by

no test coverage detected