{#if loaded} { deleteModelHandler(selectedModel); }} /> { console.log(importFiles); let reader = new FileReader(); reader.onload = async (event) => { let savedModels = []; try { savedModels = JSON.parse(event.target.result); console.log(savedModels); } catch (e) { toast.error($i18n.t('Invalid JSON file')); return; } for (const model of savedModels) { if (model?.info ?? false) { if ($_models.find((m) => m.id === model.id)) { await updateModelById(localStorage.token, model.id, model.info).catch((error) => { toast.error(`${error}`); return null; }); } else { await createNewModel(localStorage.token, model.info).catch((error) => { toast.error(`${error}`); return null; }); } } else { if (model?.id && model?.name) { await createNewModel(localStorage.token, model).catch((error) => { toast.error(`${error}`); return null; }); } } } await _models.set( await getModels( localStorage.token, $config?.features?.enable_direct_connections && ($settings?.directConnections ?? null) ) ); page = 1; getModelList(); }; reader.readAsText(importFiles[0]); }} /> {$i18n.t('Models')} {total} {#if $user?.role === 'admin' || $user?.permissions?.workspace?.models_import} { modelsImportInputElement.click(); }} > {$i18n.t('Import')} {/if} {#if total && ($user?.role === 'admin' || $user?.permissions?.workspace?.models_export)} { downloadModels(models); }} > {$i18n.t('Export')} {/if} {$i18n.t('New Model')} {#if query} { query = ''; }} > {/if} { if (e.deltaY !== 0) { e.preventDefault(); e.currentTarget.scrollLeft += e.deltaY; } }} > { localStorage.workspaceViewOption = value; await tick(); }} /> {#if (tags ?? []).length > 0} { return { value: tag, label: tag }; })} /> {/if} {#if models !== null} {#if (models ?? []).length !== 0} {#each models as model (model.id)} { if ( $user?.role === 'admin' || model.user_id === $user?.id || model.access_control.write.group_ids.some((wg) => groupIds.includes(wg)) ) { goto(`/workspace/models/edit?id=${encodeURIComponent(model.id)}`); } }} > {getTranslatedLabel(model.name, langCode)} {#if shiftKey} { e.stopPropagation(); hideModelHandler(model); }} > {#if model?.meta?.hidden} {:else} {/if} { e.stopPropagation(); deleteModelHandler(model); }} > {:else} { goto( `/workspace/models/edit?id=${encodeURIComponent(model.id)}` ); }} shareHandler={() => { shareModelHandler(model); }} cloneHandler={() => { cloneModelHandler(model); }} exportHandler={() => { exportModelHandler(model); }} hideHandler={() => { hideModelHandler(model); }} copyLinkHandler={() => { copyLinkHandler(model); }} deleteHandler={() => { selectedModel = model; showModelDeleteConfirm = true; }} onClose={() => {}} > {/if} { e.stopPropagation(); }} > { toggleModelById(localStorage.token, model.id); _models.set( await getModels( localStorage.token, $config?.features?.enable_direct_connections && ($settings?.directConnections ?? null) ) ); }} /> {$i18n.t('By {{name}}', { name: capitalizeFirstLetter( model?.user?.name ?? model?.user?.email ?? $i18n.t('Deleted User') ) })} · {#if (model?.meta?.description ?? '').trim()} {model?.meta?.description} {:else} {model.id} {/if} {/each} {#if total > 30} {/if} {:else} 😕 {$i18n.t('No models found')} {$i18n.t('Try adjusting your search or filter to find what you are looking for.')} {/if} {:else} {/if} {#if $config?.features.enable_community_sharing} {$i18n.t('Made by Open WebUI Community')} {$i18n.t('Discover a model')} {$i18n.t('Discover, download, and explore model presets')} {/if} {:else} {/if}