{#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]); }} /> { clearTimeout(searchDebounceTimer); searchDebounceTimer = setTimeout(() => { page = 1; getModelList(); }, 300); }} /> {#if query} { query = ''; page = 1; getModelList(); }} > {/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} {$i18n.t('Actions')} { enableAllHandler(); }} > {$i18n.t('Enable All')} { disableAllHandler(); }} > {$i18n.t('Disable All')} { showAllHandler(); }} > {$i18n.t('Show All')} { hideAllHandler(); }} > {$i18n.t('Hide All')} {#if models !== null} {#if (models ?? []).length !== 0} setSortKey('name')} > {$i18n.t('Title')} {#if sortKey === 'name'} {#if sortDirection === 'asc'} {:else} {/if} {/if} setSortKey('updated_at')} > {$i18n.t('Updated at')} {#if sortKey === 'updated_at'} {#if sortDirection === 'asc'} {:else} {/if} {/if} {#each models as model (model.id)} { if (shouldIgnoreRowClick(e.target)) return; openModel(model); }} on:keydown={(e) => { if (e.currentTarget !== e.target) return; if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); openModel(model); } }} > { e.target.src = '/favicon.png'; }} /> {model.name} {model.id} {dayjs(model.updated_at * 1000).fromNow()} {#if !model.write_access} {/if} {(model?.meta?.description ?? '').trim() || model.base_model_id || $i18n.t('No description')} {capitalizeFirstLetter( model?.user?.name ?? model?.user?.email ?? $i18n.t('Deleted User') )} {#if shiftKey && model.write_access} { e.preventDefault(); e.stopPropagation(); hideModelHandler(model); }} > {#if model?.meta?.hidden} {:else} {/if} { e.preventDefault(); 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); }} pinModelHandler={() => { pinModelHandler(model.id); }} copyLinkHandler={() => { copyLinkHandler(model); }} deleteHandler={() => { selectedModel = model; showModelDeleteConfirm = true; }} onClose={() => {}} > {#if model.write_access} { e.stopPropagation(); e.preventDefault(); }} > { toggleModelById(localStorage.token, model.id); _models.set( await getModels( localStorage.token, $config?.features?.enable_direct_connections && ($settings?.directConnections ?? null) ) ); }} /> {/if} {/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} {/if} {:else} {/if}