mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-22 13:42:12 -03:00
Add a new "Check Model Updates" option to the global context menu that allows users to manually check for model updates. This includes: - Adding refreshUpdates endpoint to API configuration - Implementing checkModelUpdates method with proper loading states - Adding internationalization support for update messages - Handling success/error states with appropriate user feedback - Automatically reloading models after update check completes The feature provides users with manual control over update checks and improves visibility into model update availability.
118 lines
6.2 KiB
HTML
118 lines
6.2 KiB
HTML
<div id="loraContextMenu" class="context-menu">
|
|
<!-- <div class="context-menu-item" data-action="detail">
|
|
<i class="fas fa-info-circle"></i> Show Details
|
|
</div> -->
|
|
<!-- <div class="context-menu-item" data-action="civitai">
|
|
<i class="fas fa-external-link-alt"></i> View on Civitai
|
|
</div> -->
|
|
<div class="context-menu-item" data-action="refresh-metadata">
|
|
<i class="fas fa-sync"></i> <span>{{ t('loras.contextMenu.refreshMetadata') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="relink-civitai">
|
|
<i class="fas fa-link"></i> <span>{{ t('loras.contextMenu.relinkCivitai') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="copyname">
|
|
<i class="fas fa-copy"></i> <span>{{ t('loras.contextMenu.copySyntax') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="sendappend">
|
|
<i class="fas fa-paper-plane"></i> <span>{{ t('loras.contextMenu.sendToWorkflowAppend') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="sendreplace">
|
|
<i class="fas fa-exchange-alt"></i> <span>{{ t('loras.contextMenu.sendToWorkflowReplace') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="preview">
|
|
<i class="fas fa-folder-open"></i> <span>{{ t('loras.contextMenu.openExamples') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="download-examples">
|
|
<i class="fas fa-download"></i> <span>{{ t('loras.contextMenu.downloadExamples') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="replace-preview">
|
|
<i class="fas fa-image"></i> <span>{{ t('loras.contextMenu.replacePreview') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="set-nsfw">
|
|
<i class="fas fa-exclamation-triangle"></i> <span>{{ t('loras.contextMenu.setContentRating') }}</span>
|
|
</div>
|
|
<div class="context-menu-separator"></div>
|
|
<div class="context-menu-item" data-action="move">
|
|
<i class="fas fa-folder-open"></i> <span>{{ t('loras.contextMenu.moveToFolder') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="exclude">
|
|
<i class="fas fa-eye-slash"></i> <span>{{ t('loras.contextMenu.excludeModel') }}</span>
|
|
</div>
|
|
<div class="context-menu-item delete-item" data-action="delete">
|
|
<i class="fas fa-trash"></i> <span>{{ t('loras.contextMenu.deleteModel') }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="bulkContextMenu" class="context-menu">
|
|
<div class="bulk-context-header">
|
|
<i class="fas fa-th-large"></i>
|
|
<span>{{ t('loras.bulkOperations.selected', {'count': 0}) }}</span>
|
|
</div>
|
|
<div class="context-menu-separator"></div>
|
|
<div class="context-menu-item" data-action="refresh-all">
|
|
<i class="fas fa-sync-alt"></i> <span>{{ t('loras.bulkOperations.refreshAll') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="copy-all">
|
|
<i class="fas fa-copy"></i> <span>{{ t('loras.bulkOperations.copyAll') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="send-to-workflow-append">
|
|
<i class="fas fa-paper-plane"></i> <span>{{ t('loras.contextMenu.sendToWorkflowAppend') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="send-to-workflow-replace">
|
|
<i class="fas fa-exchange-alt"></i> <span>{{ t('loras.contextMenu.sendToWorkflowReplace') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="auto-organize">
|
|
<i class="fas fa-magic"></i> <span>{{ t('loras.bulkOperations.autoOrganize') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="add-tags">
|
|
<i class="fas fa-tags"></i> <span>{{ t('loras.bulkOperations.addTags') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="set-base-model">
|
|
<i class="fas fa-layer-group"></i> <span>{{ t('loras.bulkOperations.setBaseModel') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="set-content-rating">
|
|
<i class="fas fa-exclamation-triangle"></i> <span>{{ t('loras.bulkOperations.setContentRating') }}</span>
|
|
</div>
|
|
<div class="context-menu-separator"></div>
|
|
<div class="context-menu-item" data-action="move-all">
|
|
<i class="fas fa-folder-open"></i> <span>{{ t('loras.bulkOperations.moveAll') }}</span>
|
|
</div>
|
|
<div class="context-menu-item delete-item" data-action="delete-all">
|
|
<i class="fas fa-trash"></i> <span>{{ t('loras.bulkOperations.deleteAll') }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="globalContextMenu" class="context-menu">
|
|
<div class="context-menu-item" data-action="download-example-images">
|
|
<i class="fas fa-download"></i> <span>{{ t('globalContextMenu.downloadExampleImages.label') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="check-model-updates">
|
|
<i class="fas fa-sync-alt"></i> <span>{{ t('globalContextMenu.checkModelUpdates.label') }}</span>
|
|
</div>
|
|
<div class="context-menu-item" data-action="cleanup-example-images-folders">
|
|
<i class="fas fa-trash-restore"></i> <span>{{ t('globalContextMenu.cleanupExampleImages.label') }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="nsfwLevelSelector" class="nsfw-level-selector">
|
|
<div class="nsfw-level-header">
|
|
<h3>{{ t('modals.contentRating.title') }}</h3>
|
|
<button class="close-nsfw-selector"><i class="fas fa-times"></i></button>
|
|
</div>
|
|
<div class="nsfw-level-content">
|
|
<div class="current-level"><span>{{ t('modals.contentRating.current') }}:</span> <span id="currentNSFWLevel">{{ t('common.status.unknown') }}</span></div>
|
|
<div class="nsfw-level-options">
|
|
<button class="nsfw-level-btn" data-level="1">{{ t('modals.contentRating.levels.pg') }}</button>
|
|
<button class="nsfw-level-btn" data-level="2">{{ t('modals.contentRating.levels.pg13') }}</button>
|
|
<button class="nsfw-level-btn" data-level="4">{{ t('modals.contentRating.levels.r') }}</button>
|
|
<button class="nsfw-level-btn" data-level="8">{{ t('modals.contentRating.levels.x') }}</button>
|
|
<button class="nsfw-level-btn" data-level="16">{{ t('modals.contentRating.levels.xxx') }}</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="nodeSelector" class="node-selector">
|
|
<!-- Dynamic node list will be populated here -->
|
|
</div>
|