diff --git a/.vscode/launch.json b/.vscode/launch.json index 48353dc62f..174aa5f513 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -572,15 +572,14 @@ "request": "launch", "args": ["src/index.ts"], "env": { - "MONGO_URL": "mongodb://localhost:27017", "SERVER_SECRET": "secret", - "ACCOUNTS_URL": "http://localhost:3000", + "ACCOUNTS_URL": "http://localhost:3003", "APP_ID": "${env:POD_GITHUB_APPID}", "CLIENT_ID": "${env:POD_GITHUB_CLIENTID}", "CLIENT_SECRET": "${env:POD_GITHUB_CLIENT_SECRET}", "PRIVATE_KEY": "${env:POD_GITHUB_PRIVATE_KEY}", - "COLLABORATOR_URL": "ws://huly.local:3078", - "MINIO_ENDPOINT": "localhost", + "COLLABORATOR_URL": "ws://huly.local:3079", + "MINIO_ENDPOINT": "localhost:9002", "MINIO_ACCESS_KEY": "minioadmin", "MINIO_SECRET_KEY": "minioadmin", "PLATFORM_OPERATION_LOGGING": "true", diff --git a/packages/presentation/lang/cs.json b/packages/presentation/lang/cs.json index 2daa58cb91..1bf79fc986 100644 --- a/packages/presentation/lang/cs.json +++ b/packages/presentation/lang/cs.json @@ -29,6 +29,7 @@ "MakePrivate": "Zneviditelnit", "MakePrivateDescription": "Viditelné pouze pro členy", "Created": "Vytvořeno", + "Selected": "Vybráno", "NoResults": "Žádné výsledky k zobrazení", "Next": "Další", "FailedToPreview": "Náhled se nezdařil", @@ -47,4 +48,4 @@ "status": { "FileTooLarge": "Soubor je příliš velký" } -} \ No newline at end of file +} diff --git a/packages/presentation/lang/de.json b/packages/presentation/lang/de.json index a0d00f594d..fa1ac46a10 100644 --- a/packages/presentation/lang/de.json +++ b/packages/presentation/lang/de.json @@ -29,6 +29,7 @@ "MakePrivate": "Privat machen", "MakePrivateDescription": "Nur Mitglieder können es sehen", "Created": "Erstellt", + "Selected": "Ausgewählt", "NoResults": "Keine Ergebnisse gefunden", "Next": "Weiter", "FailedToPreview": "Vorschau fehlgeschlagen", diff --git a/packages/presentation/lang/en.json b/packages/presentation/lang/en.json index 3d26aa102b..af9c3b6458 100644 --- a/packages/presentation/lang/en.json +++ b/packages/presentation/lang/en.json @@ -29,6 +29,7 @@ "MakePrivate": "Make private", "MakePrivateDescription": "Only members can see it", "Created": "Created", + "Selected": "Selected", "NoResults": "No results to show", "Next": "Next", "FailedToPreview": "Failed to preview", diff --git a/packages/presentation/lang/es.json b/packages/presentation/lang/es.json index c2e32c5b96..2a94940c90 100644 --- a/packages/presentation/lang/es.json +++ b/packages/presentation/lang/es.json @@ -29,6 +29,7 @@ "MakePrivate": "Hacer privado", "MakePrivateDescription": "Solo los miembros pueden verlo", "Created": "Creado", + "Selected": "Seleccionado", "NoResults": "No hay resultados para mostrar", "Next": "Siguiente", "FailedToPreview": "Error al previsualizar", @@ -47,4 +48,4 @@ "status": { "FileTooLarge": "Archivo demasiado grande" } -} \ No newline at end of file +} diff --git a/packages/presentation/lang/fr.json b/packages/presentation/lang/fr.json index cbb1284ff5..18be4a534d 100644 --- a/packages/presentation/lang/fr.json +++ b/packages/presentation/lang/fr.json @@ -29,6 +29,7 @@ "MakePrivate": "Rendre privé", "MakePrivateDescription": "Seuls les membres peuvent le voir", "Created": "Créé", + "Selected": "Sélectionné", "NoResults": "Aucun résultat à afficher", "Next": "Suivant", "FailedToPreview": "Échec de l'aperçu", @@ -47,4 +48,4 @@ "status": { "FileTooLarge": "Fichier trop volumineux" } -} \ No newline at end of file +} diff --git a/packages/presentation/lang/it.json b/packages/presentation/lang/it.json index 7de1e9f0cb..b16ebb1c10 100644 --- a/packages/presentation/lang/it.json +++ b/packages/presentation/lang/it.json @@ -29,6 +29,7 @@ "MakePrivate": "Rendi privato", "MakePrivateDescription": "Solo i membri possono vederlo", "Created": "Creato", + "Selected": "Selezionato", "NoResults": "Nessun risultato da mostrare", "Next": "Successivo", "FailedToPreview": "Impossibile mostrare l'anteprima", diff --git a/packages/presentation/lang/ja.json b/packages/presentation/lang/ja.json index 8f2ee1b7b2..1ca158b415 100644 --- a/packages/presentation/lang/ja.json +++ b/packages/presentation/lang/ja.json @@ -29,6 +29,7 @@ "MakePrivate": "非公開にする", "MakePrivateDescription": "メンバーのみ閲覧可能です", "Created": "作成済み", + "Selected": "選択中", "NoResults": "表示する結果がありません", "Next": "次へ", "FailedToPreview": "プレビューに失敗しました", @@ -48,4 +49,3 @@ "FileTooLarge": "ファイルサイズが大きすぎます" } } - \ No newline at end of file diff --git a/packages/presentation/lang/pt.json b/packages/presentation/lang/pt.json index 626ba1da9b..5ce09f306c 100644 --- a/packages/presentation/lang/pt.json +++ b/packages/presentation/lang/pt.json @@ -29,6 +29,7 @@ "MakePrivate": "Tornar privado", "MakePrivateDescription": "Apenas os membros podem ver", "Created": "Criado", + "Selected": "Selecionado", "NoResults": "Sem resultados para mostrar", "Next": "Seguinte", "FailedToPreview": "Falha ao pré-visualizar", diff --git a/packages/presentation/lang/ru.json b/packages/presentation/lang/ru.json index 7015a47499..71d2edbcf8 100644 --- a/packages/presentation/lang/ru.json +++ b/packages/presentation/lang/ru.json @@ -14,7 +14,7 @@ "AddSocialLinks": "Добавить контактную информацию", "EditSocialLinks": "Редактировать контактную информацию", "Change": "Изменить", - "Remove": "Удалить", + "Remove": "Удалить", "Search": "Поиск...", "Spaces": "Пространства", "NumberSpaces": "{count, plural, =0 {В} one {В # месте} other {В # местах}}", @@ -24,11 +24,12 @@ "NotInThis": "Не в этом {space}", "Match": "Совпадение", "Add": "Добавить", - "Edit": "Редактировать", + "Edit": "Редактировать", "DocumentPreview": "Предпросмотр", "MakePrivate": "Сделать личным", "MakePrivateDescription": "Только пользователи могут видеть это", "Created": "Созданные", + "Selected": "Выбрано", "NoResults": "Нет результатов", "Next": "Далее", "FailedToPreview": "Ошибка предпросмотра", diff --git a/packages/presentation/lang/zh.json b/packages/presentation/lang/zh.json index a7f8b621be..c7a592bba6 100644 --- a/packages/presentation/lang/zh.json +++ b/packages/presentation/lang/zh.json @@ -29,6 +29,7 @@ "MakePrivate": "设为私有", "MakePrivateDescription": "只有成员可以查看", "Created": "已创建", + "Selected": "已选", "NoResults": "没有可显示结果", "Next": "下一步", "FailedToPreview": "预览失败", diff --git a/packages/presentation/src/components/DocPopup.svelte b/packages/presentation/src/components/DocPopup.svelte index fe7eb71575..24d3ad34b8 100644 --- a/packages/presentation/src/components/DocPopup.svelte +++ b/packages/presentation/src/components/DocPopup.svelte @@ -71,7 +71,8 @@ $: showCategories = created.length > 0 || - objects.map((it) => getObjectValue(groupBy, it)).filter((it, index, arr) => arr.indexOf(it) === index).length > 1 + objects.map((it) => getObjectValue(groupBy, it)).filter((it, index, arr) => arr.indexOf(it) === index).length > 1 || + selectedObjects.length > 0 let presenter: AnySvelteComponent | undefined = undefined $: if (type === 'presenter') { @@ -160,6 +161,9 @@ if (created.find((it) => it._id === doc._id) !== undefined) { return '_created' } + if ((selectedObjects ?? []).find((it) => it === doc._id) !== undefined) { + return '_selected' + } return getObjectValue(groupBy, toAny(doc)) } diff --git a/packages/presentation/src/components/ObjectPopup.svelte b/packages/presentation/src/components/ObjectPopup.svelte index 6fccfcee41..3f9d378984 100644 --- a/packages/presentation/src/components/ObjectPopup.svelte +++ b/packages/presentation/src/components/ObjectPopup.svelte @@ -74,10 +74,13 @@ let noSearchField: boolean = false let search: string = '' let objects: Doc[] = [] + let selObjects: Doc[] = [] + let resObjects: Doc[] = [] let extraItems: Ref[] = [] const query = createQuery() + const sQuery = createQuery() // Query for selected objects $: noSearchField = searchMode === 'disabled' $: _idExtra = typeof docQuery?._id === 'object' ? docQuery?._id : {} @@ -88,6 +91,7 @@ } else { extraItems = [] } + $: fquery = { ...(docQuery ?? {}), ...(() => { @@ -109,21 +113,46 @@ } })() } + $: query.query( _class, fquery, (result) => { result.sort(sort) - if (created.length > 0) { - const cmap = new Set(created.map((it) => it._id)) - objects = [...created, ...result.filter((d) => !cmap.has(d._id))].filter(filter) - } else { - objects = result.filter(filter) - } + resObjects = result }, { ...(options ?? {}), limit: 200 } ) + $: if (selectedObjects.length > 0) { + sQuery.query( + _class, + search !== '' + ? { [searchField]: { $like: '%' + search + '%' }, _id: { $in: selectedObjects } } + : { _id: { $in: selectedObjects } }, + (result) => { + result.sort(sort) + selObjects = result + }, + {} + ) + } else { + sQuery.unsubscribe() + } + + $: { + if (created.length > 0 || selObjects.length > 0) { + const cmap = new Set(created.map((it) => it._id)) + const smap = new Set(selObjects.map((it) => it._id)) + + objects = [...created, ...selObjects, ...resObjects.filter((d) => !cmap.has(d._id) && !smap.has(d._id))].filter( + filter + ) + } else { + objects = resObjects.filter(filter) + } + } + async function searchSpotlight (search: string): Promise { return (await searchFor('spotlight', search, category, 50)).items } @@ -150,7 +179,10 @@ {embedded} {loading} {type} - on:update + on:update={(e) => { + selectedObjects = e.detail + dispatch('update', e.detail) + }} on:close on:changeContent on:search={(e) => (search = e.detail)} @@ -172,6 +204,12 @@