From 5b54971ba4cb6138b2ba95928553fee87abadc46 Mon Sep 17 00:00:00 2001 From: Ewan Cahen Date: Wed, 2 Oct 2024 14:46:01 +0200 Subject: [PATCH 1/9] feat: organisation admin can create custom categories for the organisation --- ...ity.sql => 008-create-community-table.sql} | 0 ....sql => 013-create-organisation-table.sql} | 0 ...ql => 014-create-keyword-and-category.sql} | 8 ++- ...n-views.sql => 113-organisation-views.sql} | 0 .../components/admin/categories/index.tsx | 1 + .../components/category/CategoryEditForm.tsx | 58 ++++++++++++++++--- .../components/category/CategoryEditTree.tsx | 5 +- .../category/CategoryEditTreeNode.tsx | 6 +- frontend/components/category/CategoryTree.tsx | 4 +- frontend/components/category/apiCategories.ts | 25 ++++++-- frontend/components/category/useCategories.ts | 13 +++-- .../communities/settings/categories/index.tsx | 1 + .../settings/SettingsNavItems.tsx | 7 +++ .../settings/SettingsPageContent.tsx | 9 ++- .../settings/categories/index.tsx | 46 +++++++++++++++ .../CommunityAddCategoriesDialog.tsx | 3 +- .../edit/links/AutosaveSoftwareCategories.tsx | 16 +++-- .../edit/links/EditSoftwareMetadataForm.tsx | 3 +- frontend/public/data/settings.json | 2 +- frontend/types/Category.ts | 10 ++-- frontend/types/SoftwareTypes.ts | 4 +- frontend/utils/__mocks__/getSoftware.ts | 10 ++-- frontend/utils/categories.ts | 3 +- frontend/utils/getSoftware.ts | 26 ++++----- 24 files changed, 196 insertions(+), 64 deletions(-) rename database/{008-community.sql => 008-create-community-table.sql} (100%) rename database/{014-create-organisation-table.sql => 013-create-organisation-table.sql} (100%) rename database/{009-create-keyword-and-category.sql => 014-create-keyword-and-category.sql} (96%) rename database/{114-organisation-views.sql => 113-organisation-views.sql} (100%) create mode 100644 frontend/components/organisation/settings/categories/index.tsx diff --git a/database/008-community.sql b/database/008-create-community-table.sql similarity index 100% rename from database/008-community.sql rename to database/008-create-community-table.sql diff --git a/database/014-create-organisation-table.sql b/database/013-create-organisation-table.sql similarity index 100% rename from database/014-create-organisation-table.sql rename to database/013-create-organisation-table.sql diff --git a/database/009-create-keyword-and-category.sql b/database/014-create-keyword-and-category.sql similarity index 96% rename from database/009-create-keyword-and-category.sql rename to database/014-create-keyword-and-category.sql index 1204f38db..18c730915 100644 --- a/database/009-create-keyword-and-category.sql +++ b/database/014-create-keyword-and-category.sql @@ -88,13 +88,17 @@ CREATE TABLE category ( id UUID PRIMARY KEY, parent UUID REFERENCES category DEFAULT NULL, community UUID REFERENCES community(id) DEFAULT NULL, + organisation UUID REFERENCES organisation(id) DEFAULT NULL, + allow_software BOOLEAN NOT NULL DEFAULT FALSE, + allow_projects BOOLEAN NOT NULL DEFAULT FALSE, short_name VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, properties JSONB NOT NULL DEFAULT '{}'::jsonb, provenance_iri VARCHAR(250) DEFAULT NULL, -- e.g. https://www.w3.org/TR/skos-reference/#mapping - CONSTRAINT unique_short_name UNIQUE NULLS NOT DISTINCT (parent, short_name, community), - CONSTRAINT unique_name UNIQUE NULLS NOT DISTINCT (parent, name, community), + CONSTRAINT only_one_entity CHECK (community IS NULL OR organisation IS NULL), + CONSTRAINT unique_short_name UNIQUE NULLS NOT DISTINCT (parent, short_name, community, organisation), + CONSTRAINT unique_name UNIQUE NULLS NOT DISTINCT (parent, name, community, organisation), CONSTRAINT invalid_value_for_properties CHECK (properties - '{icon, is_highlight, description, subtitle, tree_level_labels}'::text[] = '{}'::jsonb), CONSTRAINT highlight_must_be_top_level_category CHECK (NOT ((properties->>'is_highlight')::boolean AND parent IS NOT NULL)) ); diff --git a/database/114-organisation-views.sql b/database/113-organisation-views.sql similarity index 100% rename from database/114-organisation-views.sql rename to database/113-organisation-views.sql diff --git a/frontend/components/admin/categories/index.tsx b/frontend/components/admin/categories/index.tsx index 6df0e080c..a62c143a5 100644 --- a/frontend/components/admin/categories/index.tsx +++ b/frontend/components/admin/categories/index.tsx @@ -27,6 +27,7 @@ export default function AdminCategories() { } diff --git a/frontend/components/category/CategoryEditForm.tsx b/frontend/components/category/CategoryEditForm.tsx index f4299ba1e..7d0c4363a 100644 --- a/frontend/components/category/CategoryEditForm.tsx +++ b/frontend/components/category/CategoryEditForm.tsx @@ -15,16 +15,20 @@ import {CategoryEntry} from '~/types/Category' import {createJsonHeaders} from '~/utils/fetchHelpers' import useSnackbar from '~/components/snackbar/useSnackbar' import TextFieldWithCounter from '~/components/form/TextFieldWithCounter' +import ControlledSwitch from '../form/ControlledSwitch' type CategoryEditFormProps=Readonly<{ createNew: boolean data: CategoryEntry | null community: string | null + organisation: string | null onSuccess: (category:CategoryEntry)=>void onCancel: ()=>void }> -export default function CategoryEditForm({createNew, data, community, onSuccess, onCancel}:CategoryEditFormProps) { +export default function CategoryEditForm({ + createNew, data, community=null,organisation=null,onSuccess, onCancel +}:CategoryEditFormProps) { const {token} = useSession() const {showErrorMessage} = useSnackbar() const [disableSave, setDisableSave] = useState(false) @@ -32,14 +36,19 @@ export default function CategoryEditForm({createNew, data, community, onSuccess, mode: 'onChange' }) - // console.group('CategoryEditForm') - // console.log('createNew...',createNew) + const [parent] = watch(['parent']) + + console.group('CategoryEditForm') + console.log('createNew...',createNew) // console.log('data...',data) // console.log('disableSave...',disableSave) // console.log('community...',community) - // console.groupEnd() + // console.log('organisation...',organisation) + console.log('parent...',parent) + console.groupEnd() + - const onSubmit = (formData: CategoryEntry) => { + function onSubmit(formData: CategoryEntry){ setDisableSave(true) // debugger if (createNew) { @@ -56,7 +65,6 @@ export default function CategoryEditForm({createNew, data, community, onSuccess, ...createJsonHeaders(token), Prefer: 'return=representation', Accept: 'application/vnd.pgrst.object+json' - }, body: JSON.stringify(formData) }) @@ -127,6 +135,7 @@ export default function CategoryEditForm({createNew, data, community, onSuccess, } +

{getFormTitle()}

@@ -156,6 +165,7 @@ export default function CategoryEditForm({createNew, data, community, onSuccess, error: formState.errors?.name?.message !== undefined }} /> + - {/* Highlight options are only for the top level items and for general categories */} - {((createNew && data === null && community===null) || - (!createNew && data?.parent === null && community===null)) ? + {/* + Organisation categories can be used for software or project items + We show software/project switch only at top level + */} + { + organisation && !parent ? +
+ + +
+ : + <> + {/* By default categories are used by software in communities and by project for organisations */} + + + + } + + {/* Highlight options are only for the top level items of general categories */} + {((createNew && data === null && community===null && organisation===null) || + (!createNew && data?.parent === null && community===null && organisation===null)) ? <>
[], community: string | null + organisation: string | null onMutation: ()=>void title?:string }> -export default function CategoryEditTree({roots, community, title, onMutation}:CategoryEditTreeProps) { +export default function CategoryEditTree({roots, community, organisation, title, onMutation}:CategoryEditTreeProps) { const [showAddChildForm, setShowAddChildForm] = useState(false) @@ -61,6 +62,7 @@ export default function CategoryEditTree({roots, community, title, onMutation}:C setShowAddChildForm(false)} @@ -74,6 +76,7 @@ export default function CategoryEditTree({roots, community, title, onMutation}:C key={node.getValue().id} node={node} community={community} + organisation={organisation} onDelete={onDeleteChild} onMutation={onMutation} /> diff --git a/frontend/components/category/CategoryEditTreeNode.tsx b/frontend/components/category/CategoryEditTreeNode.tsx index 99d16b252..00ebf8f80 100644 --- a/frontend/components/category/CategoryEditTreeNode.tsx +++ b/frontend/components/category/CategoryEditTreeNode.tsx @@ -26,9 +26,10 @@ import CategoryEditForm from '~/components/category/CategoryEditForm' import useSnackbar from '~/components/snackbar/useSnackbar' import ConfirmDeleteModal from '~/components/layout/ConfirmDeleteModal' -export default function CategoryEditTreeNode({node, community, onDelete, onMutation}: Readonly<{ +export default function CategoryEditTreeNode({node, community, organisation, onDelete, onMutation}: Readonly<{ node: TreeNode community: string | null + organisation: string | null onDelete: (node: TreeNode) => void onMutation: ()=>void }>) { @@ -152,6 +153,7 @@ export default function CategoryEditTreeNode({node, community, onDelete, onMutat setShowItem('none')} @@ -162,6 +164,7 @@ export default function CategoryEditTreeNode({node, community, onDelete, onMutat setShowItem('none')} @@ -176,6 +179,7 @@ export default function CategoryEditTreeNode({node, community, onDelete, onMutat key={child.getValue().id} node={child} community={community} + organisation={organisation} onDelete={onDeleteChild} onMutation={onMutation} /> diff --git a/frontend/components/category/CategoryTree.tsx b/frontend/components/category/CategoryTree.tsx index e6f0e12bd..29e35e3f4 100644 --- a/frontend/components/category/CategoryTree.tsx +++ b/frontend/components/category/CategoryTree.tsx @@ -9,13 +9,13 @@ import CancelIcon from '@mui/icons-material/Cancel' import Tooltip from '@mui/material/Tooltip' import IconButton from '@mui/material/IconButton' -import {CategoryEntry, CategoryID} from '~/types/Category' +import {CategoryEntry} from '~/types/Category' import {TreeNode} from '~/types/TreeNode' export type CategoryTreeLevelProps = { items: TreeNode[] showLongNames?: boolean - onRemove?: (categoryId: CategoryID) => void + onRemove?: (categoryId: string) => void } export const CategoryTreeLevel = ({onRemove, ...props}: CategoryTreeLevelProps) => { diff --git a/frontend/components/category/apiCategories.ts b/frontend/components/category/apiCategories.ts index e6001048b..e9cb0091e 100644 --- a/frontend/components/category/apiCategories.ts +++ b/frontend/components/category/apiCategories.ts @@ -4,15 +4,28 @@ // // SPDX-License-Identifier: Apache-2.0 -import {CategoryEntry, CategoryID} from '~/types/Category' +import {CategoryEntry} from '~/types/Category' import {getBaseUrl} from '~/utils/fetchHelpers' import {TreeNode} from '~/types/TreeNode' -export async function loadCategoryRoots(community: string | null): Promise[]> { +type LoadCategoryProps={ + community?: string | null, + organisation?: string | null +} - const communityFilter = community === null ? 'community=is.null' : `community=eq.${community}` +export async function loadCategoryRoots({community, organisation}:LoadCategoryProps){ + // global categories is default + let categoryFilter = 'community=is.null&organisation=is.null' + // community filter + if (community){ + categoryFilter = `community=eq.${community}` + } + // organisation filter + if (organisation){ + categoryFilter = `organisation=eq.${organisation}` + } - const resp = await fetch(`${getBaseUrl()}/category?${communityFilter}`) + const resp = await fetch(`${getBaseUrl()}/category?${categoryFilter}`) if (!resp.ok) { throw new Error(`${await resp.text()}`) @@ -25,8 +38,8 @@ export async function loadCategoryRoots(community: string | null): Promise[] { - const idToNode: Map> = new Map() - const idToChildren: Map[]> = new Map() + const idToNode: Map> = new Map() + const idToChildren: Map[]> = new Map() for (const cat of categoriesArr) { const id = cat.id diff --git a/frontend/components/category/useCategories.ts b/frontend/components/category/useCategories.ts index fb697c2f3..eb8fbd345 100644 --- a/frontend/components/category/useCategories.ts +++ b/frontend/components/category/useCategories.ts @@ -6,12 +6,17 @@ import {useEffect, useState} from 'react' +import logger from '~/utils/logger' import {TreeNode} from '~/types/TreeNode' import {CategoryEntry} from '~/types/Category' import {loadCategoryRoots} from '~/components/category/apiCategories' -import logger from '~/utils/logger' -export default function useCategories({community}:{community:string|null}){ +type UseCategoriesProps={ + community?:string|null, + organisation?:string|null +} + +export default function useCategories({community,organisation}:UseCategoriesProps){ const [roots, setRoots] = useState[] | null> (null) const [error, setError] = useState (null) const [loading, setLoading] = useState (true) @@ -19,7 +24,7 @@ export default function useCategories({community}:{community:string|null}){ useEffect(() => { let abort: boolean = false // only if there is community value - loadCategoryRoots(community) + loadCategoryRoots({community,organisation}) .then(roots => { if (abort) return setRoots(roots) @@ -37,7 +42,7 @@ export default function useCategories({community}:{community:string|null}){ }) return ()=>{abort=true} - }, [community]) + }, [community,organisation]) function onMutation() { if (roots !== null) { diff --git a/frontend/components/communities/settings/categories/index.tsx b/frontend/components/communities/settings/categories/index.tsx index 52caaa735..f0fabf1f7 100644 --- a/frontend/components/communities/settings/categories/index.tsx +++ b/frontend/components/communities/settings/categories/index.tsx @@ -37,6 +37,7 @@ export default function CommunityCategories() { title="Categories" roots={roots} community={community.id} + organisation={null} onMutation={onMutation} /> } diff --git a/frontend/components/organisation/settings/SettingsNavItems.tsx b/frontend/components/organisation/settings/SettingsNavItems.tsx index 94395c20f..2f57bfc26 100644 --- a/frontend/components/organisation/settings/SettingsNavItems.tsx +++ b/frontend/components/organisation/settings/SettingsNavItems.tsx @@ -9,6 +9,7 @@ import InfoIcon from '@mui/icons-material/Info' import PersonIcon from '@mui/icons-material/Person' import SettingsIcon from '@mui/icons-material/Settings' +import CategoryIcon from '@mui/icons-material/Category' export type SettingsMenuProps = { id: string, @@ -24,6 +25,12 @@ export const settingsMenu: SettingsMenuProps[] = [ icon: , status: 'Organisation details' }, + { + id:'categories', + label:()=>'Categories', + icon: , + status: 'Define categories', + }, { id:'maintainers', label:()=>'Maintainers', diff --git a/frontend/components/organisation/settings/SettingsPageContent.tsx b/frontend/components/organisation/settings/SettingsPageContent.tsx index 6a5735a09..4f41e00f5 100644 --- a/frontend/components/organisation/settings/SettingsPageContent.tsx +++ b/frontend/components/organisation/settings/SettingsPageContent.tsx @@ -1,12 +1,13 @@ -// SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2023 Netherlands eScience Center +// SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2023 - 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 +import {useRouter} from 'next/router' import OrganisationSettingsAboutPage from './about-page' import OrganisationMaintainers from './maintainers' import OrganisationGeneralSettings from './general' -import {useRouter} from 'next/router' +import OrganisationCategories from './categories' export default function SettingsPageContent() { @@ -18,6 +19,8 @@ export default function SettingsPageContent() { return case 'maintainers': return + case 'categories': + return default: return } diff --git a/frontend/components/organisation/settings/categories/index.tsx b/frontend/components/organisation/settings/categories/index.tsx new file mode 100644 index 000000000..21c6a9313 --- /dev/null +++ b/frontend/components/organisation/settings/categories/index.tsx @@ -0,0 +1,46 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import Alert from '@mui/material/Alert' +import CircularProgress from '@mui/material/CircularProgress' +import CategoryEditTree from '~/components/category/CategoryEditTree' +import BaseSurfaceRounded from '~/components/layout/BaseSurfaceRounded' +import useCategories from '~/components/category/useCategories' +import useOrganisationContext from '~/components/organisation/context/useOrganisationContext' + +export default function OrganisationCategories() { + const {id} = useOrganisationContext() + const {loading,error,roots,onMutation} = useCategories({organisation:id}) + + if (loading) { + return ( + + + + ) + } + + return ( + + {error && {error}} + {roots && + + } + + ) +} diff --git a/frontend/components/software/edit/communities/CommunityAddCategoriesDialog.tsx b/frontend/components/software/edit/communities/CommunityAddCategoriesDialog.tsx index dc64be3c7..e64a31f37 100644 --- a/frontend/components/software/edit/communities/CommunityAddCategoriesDialog.tsx +++ b/frontend/components/software/edit/communities/CommunityAddCategoriesDialog.tsx @@ -1,3 +1,4 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) // SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) // SPDX-FileCopyrightText: 2024 Netherlands eScience Center // @@ -74,7 +75,7 @@ export default function CommunityAddCategoriesDialog({ useEffect(() => { setState('loading') - const promiseLoadRoots = loadCategoryRoots(community.id) + const promiseLoadRoots = loadCategoryRoots({community:community.id}) .then(roots => { // if there are no categories for this community, we don't show the modal if (roots.length === 0 && autoConfirm) { diff --git a/frontend/components/software/edit/links/AutosaveSoftwareCategories.tsx b/frontend/components/software/edit/links/AutosaveSoftwareCategories.tsx index 60ab4ed1c..7c008c91b 100644 --- a/frontend/components/software/edit/links/AutosaveSoftwareCategories.tsx +++ b/frontend/components/software/edit/links/AutosaveSoftwareCategories.tsx @@ -7,7 +7,7 @@ // SPDX-License-Identifier: Apache-2.0 import {Fragment, useMemo, useState} from 'react' -import {CategoryEntry, CategoryID} from '~/types/Category' +import {CategoryEntry} from '~/types/Category' import {categoryTreeNodesSort, ReorderedCategories} from '~/utils/categories' import TreeSelect from '~/components/software/TreeSelect' import {TreeNode} from '~/types/TreeNode' @@ -20,12 +20,12 @@ import EditSectionTitle from '~/components/layout/EditSectionTitle' export type SoftwareCategoriesProps = { softwareId: string reorderedCategories: ReorderedCategories - associatedCategoryIds: Set + associatedCategoryIds: Set } export default function AutosaveSoftwareCategories({softwareId, reorderedCategories, associatedCategoryIds}: Readonly) { // trick to force rerender - const [_, setAssociatedCategories] = useState>(associatedCategoryIds) + const [_, setAssociatedCategories] = useState>(associatedCategoryIds) const {token} = useSession() const selectedNodes: TreeNode[] = [] for (const root of reorderedCategories.all) { @@ -40,9 +40,15 @@ export default function AutosaveSoftwareCategories({softwareId, reorderedCategor const generalCategories = new TreeNode( { id: 'general', + parent: null, + community: null, + organisation: null, name: config.categories.title, + allow_software: false, + allow_projects: false, + short_name: '', properties: {subtitle: config.categories.subtitle}, - community: null, parent: null, provenance_iri: null, short_name: '', + provenance_iri: null } ) for (const generalRoot of reorderedCategories.general) { @@ -64,7 +70,7 @@ export default function AutosaveSoftwareCategories({softwareId, reorderedCategor return result }, [reorderedCategories]) - function deleteCategoryId(categoryId: CategoryID): void { + function deleteCategoryId(categoryId: string): void { deleteCategoryToSoftware(softwareId, categoryId, token) associatedCategoryIds.delete(categoryId) setAssociatedCategories(new Set(associatedCategoryIds)) diff --git a/frontend/components/software/edit/links/EditSoftwareMetadataForm.tsx b/frontend/components/software/edit/links/EditSoftwareMetadataForm.tsx index 887ea794d..4cdd03580 100644 --- a/frontend/components/software/edit/links/EditSoftwareMetadataForm.tsx +++ b/frontend/components/software/edit/links/EditSoftwareMetadataForm.tsx @@ -8,7 +8,6 @@ import {FormProvider, useForm} from 'react-hook-form' import {CategoriesForSoftware, CodePlatform, EditSoftwareItem, KeywordForSoftware, License} from '~/types/SoftwareTypes' import {AutocompleteOption} from '~/types/AutocompleteOptions' import EditSoftwareMetadataInputs from './EditSoftwareMetadataInputs' -import {CategoryID} from '~/types/Category' type EditSoftwareMetadataFormProps={ id: string @@ -20,7 +19,7 @@ type EditSoftwareMetadataFormProps={ licenses: AutocompleteOption[] keywords: KeywordForSoftware[] categories: CategoriesForSoftware - categoryIds: Set + categoryIds: Set } /** diff --git a/frontend/public/data/settings.json b/frontend/public/data/settings.json index c4083b2bb..6b08a57fc 100644 --- a/frontend/public/data/settings.json +++ b/frontend/public/data/settings.json @@ -18,7 +18,7 @@ "limit": 5, "description": null }, - "modules":["software","projects","organisations"] + "modules":["software","projects","organisations","communities"] }, "links": [ { diff --git a/frontend/types/Category.ts b/frontend/types/Category.ts index 4c95f026b..edc41514f 100644 --- a/frontend/types/Category.ts +++ b/frontend/types/Category.ts @@ -1,12 +1,11 @@ // SPDX-FileCopyrightText: 2023 - 2024 Felix Mühlbauer (GFZ) // SPDX-FileCopyrightText: 2023 - 2024 Helmholtz Centre Potsdam - GFZ German Research Centre for Geosciences +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) // SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) // SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 -export type CategoryID = string // NOSONAR ignore: typescript:S6564 - export type CategoryProperties = { icon?: string is_highlight?: boolean @@ -16,9 +15,12 @@ export type CategoryProperties = { } export type CategoryEntry = { - id: CategoryID - parent: CategoryID | null + id: string + parent: string | null community: string | null + organisation: string | null + allow_software: boolean + allow_projects: boolean short_name: string name: string properties: CategoryProperties diff --git a/frontend/types/SoftwareTypes.ts b/frontend/types/SoftwareTypes.ts index e4ac5d970..0e9adfbc4 100644 --- a/frontend/types/SoftwareTypes.ts +++ b/frontend/types/SoftwareTypes.ts @@ -15,7 +15,7 @@ */ import {AutocompleteOption} from './AutocompleteOptions' -import {CategoryID, CategoryPath} from './Category' +import {CategoryPath} from './Category' import {Status} from './Organisation' export type CodePlatform = 'github' | 'gitlab' | 'bitbucket' | 'other' @@ -139,7 +139,7 @@ export type KeywordForSoftware = { export type CategoriesForSoftware = CategoryPath[] -export type CategoryForSoftwareIds = Set +export type CategoryForSoftwareIds = Set /** * LICENSES diff --git a/frontend/utils/__mocks__/getSoftware.ts b/frontend/utils/__mocks__/getSoftware.ts index 98d8260f3..a0d34fdec 100644 --- a/frontend/utils/__mocks__/getSoftware.ts +++ b/frontend/utils/__mocks__/getSoftware.ts @@ -1,10 +1,10 @@ -// SPDX-FileCopyrightText: 2023 Netherlands eScience Center -// SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2023 - 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 import {CategoriesForSoftware,} from '~/types/SoftwareTypes' -import {CategoryID, CategoryPath} from '~/types/Category' +import {CategoryPath} from '~/types/Category' export async function getSoftwareList({url,token}:{url:string,token?:string }){ return [] @@ -47,11 +47,11 @@ export async function getAvailableCategories(): Promise { return [] } -export async function addCategoryToSoftware(softwareId: string, categoryId: CategoryID, token: string) { +export async function addCategoryToSoftware(softwareId: string, categoryId: string, token: string) { return [] } -export async function deleteCategoryToSoftware(softwareId: string, categoryId: CategoryID, token: string) { +export async function deleteCategoryToSoftware(softwareId: string, categoryId: string, token: string) { return null } diff --git a/frontend/utils/categories.ts b/frontend/utils/categories.ts index 3ad66bff3..5930f1570 100644 --- a/frontend/utils/categories.ts +++ b/frontend/utils/categories.ts @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2023 - 2024 Felix Mühlbauer (GFZ) // SPDX-FileCopyrightText: 2023 - 2024 Helmholtz Centre Potsdam - GFZ German Research Centre for Geosciences +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) // SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) // SPDX-FileCopyrightText: 2024 Netherlands eScience Center // @@ -108,7 +109,7 @@ export function useReorderedCategories(community: string | null): ReorderedCateg }) useEffect(() => { - loadCategoryRoots(community) + loadCategoryRoots({community}) .then(roots => setReorderedCategories(reorderCategories(roots))) }, [community]) diff --git a/frontend/utils/getSoftware.ts b/frontend/utils/getSoftware.ts index 28499c9d4..2194d0a84 100644 --- a/frontend/utils/getSoftware.ts +++ b/frontend/utils/getSoftware.ts @@ -10,7 +10,6 @@ // SPDX-License-Identifier: Apache-2.0 import logger from './logger' -import {CategoryID} from '~/types/Category' import {RelatedProjectForSoftware} from '~/types/Project' import {CommunitiesOfSoftware} from '~/components/software/edit/communities/apiSoftwareCommunities' import { @@ -189,9 +188,7 @@ export async function getKeywordsForSoftware(uuid:string,token?:string){ } function prepareQueryURL(path: string, params?: Record) { - const baseURL = getBaseUrl() - logger(`prepareQueryURL baseURL:${baseURL}`) - let url = `${baseURL}${path}` + let url = `${getBaseUrl()}${path}` if (params) { const paramStr = Object.keys(params).map((key) => `${key}=${encodeURIComponent(params[key])}`).join('&') if (paramStr) url += '?' + paramStr @@ -199,7 +196,7 @@ function prepareQueryURL(path: string, params?: Record) { return url } -export async function getCategoriesForSoftware(software_id: string, token?: string): Promise { +export async function getCategoriesForSoftware(software_id: string, token?: string){ try { const url = prepareQueryURL('/rpc/category_paths_by_software_expanded', {software_id}) const resp = await fetch(url, { @@ -207,16 +204,16 @@ export async function getCategoriesForSoftware(software_id: string, token?: stri headers: createJsonHeaders(token) }) if (resp.status === 200) { - const data = await resp.json() - logger(`getCategoriesForSoftware response: ${JSON.stringify(data)}`) + const data:CategoriesForSoftware = await resp.json() return data - } else if (resp.status === 404) { - logger(`getCategoriesForSoftware: 404 [${url}]`, 'error') + } else { + logger(`getCategoriesForSoftware: ${resp.status} - ${resp.statusText} [${url}]`, 'error') + return [] } } catch (e: any) { logger(`getCategoriesForSoftware: ${e?.message}`, 'error') + return [] } - return [] } export async function getCategoryForSoftwareIds(software_id: string, token?: string): Promise { @@ -228,7 +225,6 @@ export async function getCategoryForSoftwareIds(software_id: string, token?: str }) if (resp.status === 200) { const data = await resp.json() - logger(`getCategoriesForSoftwareIds response: ${JSON.stringify(data)}`) return new Set(data.map((entry: any) => entry.category_id)) } else if (resp.status === 404) { logger(`getCategoriesForSoftwareIds: 404 [${url}]`, 'error') @@ -243,7 +239,7 @@ export async function getCategoryForSoftwareIds(software_id: string, token?: str } } -export async function addCategoryToSoftware(softwareId: string, categoryId: CategoryID, token: string) { +export async function addCategoryToSoftware(softwareId: string, categoryId: string, token: string) { const url = prepareQueryURL('/category_for_software') const data = {software_id: softwareId, category_id: categoryId} @@ -254,14 +250,14 @@ export async function addCategoryToSoftware(softwareId: string, categoryId: Cate }, body: JSON.stringify(data), }) - logger(`addCategoryToSoftware: resp: ${resp}`) + if (resp.ok) { return null } throw new Error(`API returned: ${resp.status} ${resp.statusText}`) } -export async function deleteCategoryToSoftware(softwareId: string, categoryId: CategoryID, token: string) { +export async function deleteCategoryToSoftware(softwareId: string, categoryId: string, token: string) { const url = prepareQueryURL(`/category_for_software?software_id=eq.${softwareId}&category_id=eq.${categoryId}`) const resp = await fetch(url, { @@ -270,7 +266,7 @@ export async function deleteCategoryToSoftware(softwareId: string, categoryId: C ...createJsonHeaders(token), }, }) - logger(`deleteCategoryToSoftware: resp: ${resp}`) + if (resp.ok) { return null } From 8e5bdf79cbaab3475d8fdd2204064a7bf4b5f419 Mon Sep 17 00:00:00 2001 From: "Dusan Mijatovic (PC2020)" Date: Tue, 8 Oct 2024 21:21:00 +0200 Subject: [PATCH 2/9] feat: software and project maintainer can select organisation specific categories --- database/014-create-keyword-and-category.sql | 34 ++- database/109-category-functions.sql | 31 +++ .../components/category/CategoryEditForm.tsx | 18 +- .../category/__mocks__/apiCategories.ts | 28 ++ frontend/components/category/apiCategories.ts | 14 +- .../layout/SortableListItemActions.tsx | 26 +- .../OrganisationProjectCategoriesDialog.tsx | 263 ++++++++++++++++++ .../organisations/apiProjectOrganisations.ts | 48 ++++ .../projects/edit/organisations/index.tsx | 93 ++++++- .../CommunityAddCategoriesDialog.tsx | 3 +- .../EditSoftwareOrganisationsIndex.test.tsx | 18 +- .../OrganisationSoftwareCategoriesDialog.tsx | 260 +++++++++++++++++ .../SortableOrganisationItem.tsx | 10 +- .../SortableOrganisationsList.tsx | 6 +- .../organisations/apiSoftwareOrganisations.ts | 75 +++++ .../software/edit/organisations/index.tsx | 100 +++++-- .../useParticipatingOrganisations.ts | 58 +--- frontend/utils/__mocks__/getSoftware.ts | 6 +- 18 files changed, 974 insertions(+), 117 deletions(-) create mode 100644 frontend/components/category/__mocks__/apiCategories.ts create mode 100644 frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx create mode 100644 frontend/components/projects/edit/organisations/apiProjectOrganisations.ts create mode 100644 frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx create mode 100644 frontend/components/software/edit/organisations/apiSoftwareOrganisations.ts diff --git a/database/014-create-keyword-and-category.sql b/database/014-create-keyword-and-category.sql index 18c730915..7c0a82fdf 100644 --- a/database/014-create-keyword-and-category.sql +++ b/database/014-create-keyword-and-category.sql @@ -3,6 +3,7 @@ -- SPDX-FileCopyrightText: 2023 - 2024 Felix Mühlbauer (GFZ) -- SPDX-FileCopyrightText: 2023 - 2024 Helmholtz Centre Potsdam - GFZ German Research Centre for Geosciences -- SPDX-FileCopyrightText: 2024 Christian Meeßen (GFZ) +-- SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) -- -- SPDX-License-Identifier: Apache-2.0 @@ -107,15 +108,6 @@ CREATE INDEX category_parent_idx ON category(parent); CREATE INDEX category_community_idx ON category(community); -CREATE TABLE category_for_software ( - software_id UUID REFERENCES software (id), - category_id UUID REFERENCES category (id), - PRIMARY KEY (software_id, category_id) -); - -CREATE INDEX category_for_software_category_id_idx ON category_for_software(category_id); - - -- sanitize categories CREATE FUNCTION sanitise_insert_category() @@ -228,6 +220,19 @@ $$ $$; +-- TABLE FOR software categories +-- includes organisation, community and general categories +-- Note! to filter specific categories of an community or organisation use join with community table + +CREATE TABLE category_for_software ( + software_id UUID REFERENCES software (id), + category_id UUID REFERENCES category (id), + PRIMARY KEY (software_id, category_id) +); + +CREATE INDEX category_for_software_category_id_idx ON category_for_software(category_id); + +-- RPC for software page to show all software categories CREATE FUNCTION category_paths_by_software_expanded(software_id UUID) RETURNS JSON LANGUAGE SQL STABLE AS @@ -242,3 +247,14 @@ $$ ELSE '[]'::json END AS result $$; + + +-- TABLE FOR project categories +-- currently used only for organisation categories +CREATE TABLE category_for_project ( + project_id UUID REFERENCES project (id), + category_id UUID REFERENCES category (id), + PRIMARY KEY (project_id, category_id) +); + +CREATE INDEX category_for_project_category_id_idx ON category_for_project(category_id); diff --git a/database/109-category-functions.sql b/database/109-category-functions.sql index ed8795a2f..80e449c4e 100644 --- a/database/109-category-functions.sql +++ b/database/109-category-functions.sql @@ -1,3 +1,4 @@ +-- SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) -- SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) -- SPDX-FileCopyrightText: 2024 Netherlands eScience Center -- @@ -11,3 +12,33 @@ DELETE FROM category_for_software USING category WHERE category_for_software.category_id = category.id AND category_for_software.software_id = software_id AND category.community = community_id; $$; + + +-- DELETE organisation categories for specific software +CREATE FUNCTION delete_organisation_categories_from_software(software_id UUID, organisation_id UUID) +RETURNS VOID +LANGUAGE sql AS +$$ +DELETE FROM category_for_software + USING + category + WHERE + category_for_software.category_id = category.id AND + category_for_software.software_id = software_id AND + category.organisation = organisation_id; +$$; + + +-- DELETE organisation categories for specific project +CREATE FUNCTION delete_organisation_categories_from_project(project_id UUID, organisation_id UUID) +RETURNS VOID +LANGUAGE sql AS +$$ +DELETE FROM category_for_project + USING + category + WHERE + category_for_project.category_id = category.id AND + category_for_project.project_id = project_id AND + category.organisation = organisation_id; +$$; diff --git a/frontend/components/category/CategoryEditForm.tsx b/frontend/components/category/CategoryEditForm.tsx index 7d0c4363a..5f43eb193 100644 --- a/frontend/components/category/CategoryEditForm.tsx +++ b/frontend/components/category/CategoryEditForm.tsx @@ -38,14 +38,14 @@ export default function CategoryEditForm({ const [parent] = watch(['parent']) - console.group('CategoryEditForm') - console.log('createNew...',createNew) + // console.group('CategoryEditForm') + // console.log('createNew...',createNew) // console.log('data...',data) // console.log('disableSave...',disableSave) // console.log('community...',community) // console.log('organisation...',organisation) - console.log('parent...',parent) - console.groupEnd() + // console.log('parent...',parent) + // console.groupEnd() function onSubmit(formData: CategoryEntry){ @@ -181,7 +181,7 @@ export default function CategoryEditForm({ {/* Organisation categories can be used for software or project items - We show software/project switch only at top level + We show software/project switch only at top level (root nodes) */} { organisation && !parent ? @@ -203,9 +203,11 @@ export default function CategoryEditForm({
: <> - {/* By default categories are used by software in communities and by project for organisations */} - - + {/* + for children nodes we use false as default value + */} + + } diff --git a/frontend/components/category/__mocks__/apiCategories.ts b/frontend/components/category/__mocks__/apiCategories.ts new file mode 100644 index 000000000..4a47952fe --- /dev/null +++ b/frontend/components/category/__mocks__/apiCategories.ts @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {CategoryEntry} from '~/types/Category' +import {TreeNode} from '~/types/TreeNode' + +type LoadCategoryProps={ + community?: string | null, + organisation?: string | null, + allow_software?: boolean, + allow_projects?: boolean +} + + +// DEFAULT mock return empty array of categories +export async function loadCategoryRoots({community, organisation, allow_software, allow_projects}:LoadCategoryProps){ + const result: TreeNode[] = [] + return result +} + +// DEFAULT mock return empty array of categories +export function categoryEntriesToRoots(categoriesArr: CategoryEntry[]): TreeNode[] { + const result: TreeNode[] = [] + return result +} diff --git a/frontend/components/category/apiCategories.ts b/frontend/components/category/apiCategories.ts index e9cb0091e..d5571f03b 100644 --- a/frontend/components/category/apiCategories.ts +++ b/frontend/components/category/apiCategories.ts @@ -10,10 +10,12 @@ import {TreeNode} from '~/types/TreeNode' type LoadCategoryProps={ community?: string | null, - organisation?: string | null + organisation?: string | null, + allow_software?: boolean, + allow_projects?: boolean } -export async function loadCategoryRoots({community, organisation}:LoadCategoryProps){ +export async function loadCategoryRoots({community, organisation, allow_software, allow_projects}:LoadCategoryProps){ // global categories is default let categoryFilter = 'community=is.null&organisation=is.null' // community filter @@ -24,6 +26,14 @@ export async function loadCategoryRoots({community, organisation}:LoadCategoryPr if (organisation){ categoryFilter = `organisation=eq.${organisation}` } + // software specific categories + if (allow_software){ + categoryFilter+='&allow_software=eq.true' + } + // project specific categories + if (allow_projects){ + categoryFilter+='&allow_projects=eq.true' + } const resp = await fetch(`${getBaseUrl()}/category?${categoryFilter}`) diff --git a/frontend/components/layout/SortableListItemActions.tsx b/frontend/components/layout/SortableListItemActions.tsx index cf918ecd6..49335fcb8 100644 --- a/frontend/components/layout/SortableListItemActions.tsx +++ b/frontend/components/layout/SortableListItemActions.tsx @@ -1,5 +1,7 @@ // SPDX-FileCopyrightText: 2022 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 @@ -8,16 +10,37 @@ import DeleteIcon from '@mui/icons-material/Delete' import EditIcon from '@mui/icons-material/Edit' import IconButton from '@mui/material/IconButton' import DragIndicatorIcon from '@mui/icons-material/DragIndicator' +import CategoryIcon from '@mui/icons-material/Category' type SortableListItemActionsProps = { pos: number listeners?: SyntheticListenerMap onEdit?:(pos:number)=>void, onDelete?:(pos:number)=>void, + onCategory?:(pos:number)=>void } +export default function SortableListItemActions({pos,listeners,onEdit,onDelete,onCategory}:SortableListItemActionsProps){ -export default function SortableListItemActions({pos,listeners,onEdit,onDelete}:SortableListItemActionsProps){ + function categoryAction() { + if (typeof onCategory !== 'undefined') { + return ( + { + // alert(`Edit...${item.id}`) + onCategory(pos) + }} + > + + + ) + } + return null + } function editAction() { if (typeof onEdit !== 'undefined') { @@ -76,6 +99,7 @@ export default function SortableListItemActions({pos,listeners,onEdit,onDelete}: return ( <> + {categoryAction()} {editAction()} {deleteAction()} {dragAction()} diff --git a/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx b/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx new file mode 100644 index 000000000..6b6fb392a --- /dev/null +++ b/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx @@ -0,0 +1,263 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {useEffect, useState} from 'react' +import Dialog from '@mui/material/Dialog' +import DialogContent from '@mui/material/DialogContent' +import DialogTitle from '@mui/material/DialogTitle' +import Alert from '@mui/material/Alert' +import DialogActions from '@mui/material/DialogActions' +import Button from '@mui/material/Button' +import useMediaQuery from '@mui/material/useMediaQuery' +import SaveIcon from '@mui/icons-material/Save' + +import {useSession} from '~/auth' +import {TreeNode} from '~/types/TreeNode' +import {CategoryEntry} from '~/types/Category' +import {CategoryForSoftwareIds} from '~/types/SoftwareTypes' +import {EditOrganisation} from '~/types/Organisation' +import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' +import ContentLoader from '~/components/layout/ContentLoader' +import {loadCategoryRoots} from '~/components/category/apiCategories' +import {RecursivelyGenerateItems} from '~/components/software/TreeSelect' +import {getCategoryListForProject, removeOrganisationCategoriesFromProject} from './apiProjectOrganisations' + +export type OrganisationCategoriesDialogProps = Readonly<{ + projectId: string + organisation: EditOrganisation + onCancel: () => void + onComplete: () => void + autoConfirm: boolean +}> + +type ProjectCategory = { + project_id: string, + category_id: string +} + +export default function OrganisationProjectCategoriesDialog({ + projectId, + organisation, + onCancel, + onComplete, + autoConfirm +}: OrganisationCategoriesDialogProps) { + const {token} = useSession() + const smallScreen = useMediaQuery('(max-width:600px)') + const [categories, setCategories] = useState[] | null>(null) + const [error, setError] = useState(null) + const [state, setState] = useState<'loading' | 'error' | 'ready' | 'saving'>('loading') + const [selectedCategoryIds, setSelectedCategoryIds] = useState(new Set()) + const [availableCategoryIds, setAvailableCategoryIds] = useState(new Set()) + + useEffect(() => { + let abort = false + if (organisation && projectId && token){ + Promise.all([ + loadCategoryRoots({organisation:organisation.id}), + getCategoryListForProject(projectId, token) + ]) + .then(([roots,selected]) => { + // filter top level categories for projects (only top level items have this flag) + const categories = roots.filter(item=>item.getValue().allow_projects) + // if there are no categories we don't show the modal + if (categories.length === 0 && autoConfirm) { + onComplete() + return + } + // collect tree leaves ids (end nodes) + const availableIds = new Set() + categories.forEach(root=>{ + root.forEach(node=>{ + if (node.children().length === 0) { + availableIds.add(node.getValue().id) + } + }) + }) + if (abort) return + // debugger + // save values + setAvailableCategoryIds(availableIds) + setCategories(categories) + setSelectedCategoryIds(selected) + }) + .catch(e => { + if (abort) return + setError(`Couldn't load categories: ${e}`) + setState('error') + }) + .finally(()=>{ + if (abort) return + setState('ready') + }) + } + return ()=>{abort=true} + }, [organisation, onComplete, autoConfirm, projectId, token]) + + function isSelected(node: TreeNode) { + const val = node.getValue() + return selectedCategoryIds.has(val.id) + } + + function textExtractor(value: CategoryEntry) { + return value.name + } + + function keyExtractor(value: CategoryEntry) { + return value.id + } + + function onSelect(node: TreeNode) { + const val = node.getValue() + if (selectedCategoryIds.has(val.id)) { + selectedCategoryIds.delete(val.id) + } else { + selectedCategoryIds.add(val.id) + } + setSelectedCategoryIds(new Set(selectedCategoryIds)) + } + + function isCancelEnabled() { + return state === 'saving' + } + + function isSaveDisabled(){ + return categories === null || categories.length === 0 || state !== 'ready' + } + + async function saveCategoriesAndOrganisation() { + // delete old selection + if (organisation.id){ + const deleteErrorMessage = await removeOrganisationCategoriesFromProject(projectId, organisation.id, token) + if (deleteErrorMessage !== null) { + setError(`Couldn't delete the existing categories: ${deleteErrorMessage}`) + setState('error') + return + } + } + + if (selectedCategoryIds.size === 0) { + onComplete() + return + } + + // generate new collection + const categoriesArrayToSave:ProjectCategory[] = [] + selectedCategoryIds + .forEach(id => { + if (availableCategoryIds.has(id)) { + categoriesArrayToSave.push({project_id: projectId, category_id: id}) + } + }) + + // save organisation categories (if any) + if (categoriesArrayToSave.length > 0){ + const categoryUrl = `${getBaseUrl()}/category_for_project` + const resp = await fetch(categoryUrl, { + method: 'POST', + body: JSON.stringify(categoriesArrayToSave), + headers: { + ...createJsonHeaders(token) + } + }) + // debugger + if (!resp.ok) { + setError(`Couldn't save categories: ${await resp.text()}`) + setState('error') + } else { + onComplete() + } + }else{ + onComplete() + } + } + + function renderDialogContent(): JSX.Element { + switch (state) { + case 'loading': + case 'saving': + return ( +
+ +
+ ) + + case 'error': + return ( + + {error} + + ) + + case 'ready': + return ( + <> + {(categories === null || categories.length === 0) + ? + + This community doesn‘t have any categories. + + : + + } + + ) + } + } + + return ( + + Add categories of {organisation.name} + + {renderDialogContent()} + + + + + + + ) +} diff --git a/frontend/components/projects/edit/organisations/apiProjectOrganisations.ts b/frontend/components/projects/edit/organisations/apiProjectOrganisations.ts new file mode 100644 index 000000000..0030bfa7b --- /dev/null +++ b/frontend/components/projects/edit/organisations/apiProjectOrganisations.ts @@ -0,0 +1,48 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import logger from '~/utils/logger' +import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' + +export async function removeOrganisationCategoriesFromProject( + projectId: string, + organisationId: string, + token: string +){ + const url = `${getBaseUrl()}/rpc/delete_organisation_categories_from_project` + const body = JSON.stringify({project_id: projectId, organisation_id: organisationId}) + + const resp = await fetch(url, { + method: 'POST', + body: body, + headers: { + ...createJsonHeaders(token) + } + }) + + return resp.ok ? null : resp.text() +} + +export async function getCategoryListForProject(project_id: string, token?: string){ + try { + const query = `project_id=eq.${project_id}` + const url = `${getBaseUrl()}/category_for_project?select=category_id&${query}` + const resp = await fetch(url, { + method: 'GET', + headers: createJsonHeaders(token) + }) + if (resp.status === 200) { + const data = await resp.json() + const categories:Set = new Set(data.map((entry: any) => entry.category_id)) + return categories + } else { + logger(`getCategoriesForSoftwareIds: ${resp.status} [${url}]`, 'error') + throw new Error('Couldn\'t load the categories for this software') + } + } catch (e: any) { + logger(`getCategoriesForSoftwareIds: ${e?.message}`, 'error') + throw e + } +} diff --git a/frontend/components/projects/edit/organisations/index.tsx b/frontend/components/projects/edit/organisations/index.tsx index 128f09d9b..0c81d57b0 100644 --- a/frontend/components/projects/edit/organisations/index.tsx +++ b/frontend/components/projects/edit/organisations/index.tsx @@ -1,27 +1,15 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 Ewan Cahen (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2022 - 2023 Netherlands eScience Center // SPDX-FileCopyrightText: 2022 - 2023 dv4all -// SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2022 - 2024 Netherlands eScience Center +// SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) // // SPDX-License-Identifier: Apache-2.0 import {useState} from 'react' import {useSession} from '~/auth' -import ContentLoader from '~/components/layout/ContentLoader' -import EditSection from '~/components/layout/EditSection' -import EditSectionTitle from '~/components/layout/EditSectionTitle' -import useProjectContext from '../useProjectContext' -import useParticipatingOrganisations from './useParticipatingOrganisations' -import {cfgOrganisations as config} from './config' -import FindOrganisation from '~/components/software/edit/organisations/FindOrganisation' -import EditOrganisationModal from '~/components/software/edit/organisations/EditOrganisationModal' -import ConfirmDeleteModal from '~/components/layout/ConfirmDeleteModal' -import {EditOrganisationModalProps} from '~/components/software/edit/organisations' -import {ModalStates} from '~/components/software/edit/editSoftwareTypes' import {columsForUpdate, EditOrganisation, SearchOrganisation} from '~/types/Organisation' -import useSnackbar from '~/components/snackbar/useSnackbar' import { newOrganisationProps, searchToEditOrganisation, updateOrganisation @@ -34,6 +22,18 @@ import { import SortableOrganisationsList from '~/components/software/edit/organisations/SortableOrganisationsList' import {upsertImage} from '~/utils/editImage' import {getPropsFromObject} from '~/utils/getPropsFromObject' +import ContentLoader from '~/components/layout/ContentLoader' +import EditSection from '~/components/layout/EditSection' +import EditSectionTitle from '~/components/layout/EditSectionTitle' +import ConfirmDeleteModal from '~/components/layout/ConfirmDeleteModal' +import useSnackbar from '~/components/snackbar/useSnackbar' +import {EditOrganisationModalProps, OrganisationModalStates} from '~/components/software/edit/organisations' +import FindOrganisation from '~/components/software/edit/organisations/FindOrganisation' +import EditOrganisationModal from '~/components/software/edit/organisations/EditOrganisationModal' +import useProjectContext from '../useProjectContext' +import useParticipatingOrganisations from './useParticipatingOrganisations' +import {cfgOrganisations as config} from './config' +import OrganisationProjectCategoriesDialog from './OrganisationProjectCategoriesDialog' export default function ProjectOrganisations() { const {token,user} = useSession() @@ -44,12 +44,15 @@ export default function ProjectOrganisations() { token: token, account: user?.account }) - const [modal, setModal] = useState>({ + const [modal, setModal] = useState>({ edit: { open: false, }, delete: { open: false + }, + categories:{ + open: false } }) @@ -79,6 +82,9 @@ export default function ProjectOrganisations() { }, delete: { open:false + }, + categories:{ + open: false } }) } else if (item.source === 'RSD' && addOrganisation.id) { @@ -94,6 +100,20 @@ export default function ProjectOrganisations() { // update status received in message addOrganisation.status = resp.message addOrganisationToList(addOrganisation) + // show categories modal + setModal({ + edit: { + open: false, + }, + delete: { + open:false + }, + categories:{ + open: true, + organisation: addOrganisation, + autoConfirm: true + } + }) } else { showErrorMessage(resp.message) } @@ -116,6 +136,9 @@ export default function ProjectOrganisations() { }, delete: { open:false + }, + categories:{ + open: false } }) } @@ -131,6 +154,9 @@ export default function ProjectOrganisations() { }, delete: { open:false + }, + categories:{ + open: false } }) } @@ -148,6 +174,9 @@ export default function ProjectOrganisations() { open: true, pos, displayName + }, + categories:{ + open: false } }) } @@ -241,6 +270,9 @@ export default function ProjectOrganisations() { }, delete: { open:false + }, + categories:{ + open: false } }) } @@ -293,6 +325,26 @@ export default function ProjectOrganisations() { } } + function onCategoryEdit(pos:number){ + const organisation = organisations[pos] + if (organisation){ + setModal({ + edit: { + open:false + }, + delete: { + open:false + }, + categories:{ + open:true, + organisation, + // editing categories + autoConfirm: false + } + }) + } + } + if (loading) { return ( @@ -312,6 +364,7 @@ export default function ProjectOrganisations() { onEdit={onEdit} onDelete={onDelete} onSorted={sortedOrganisations} + onCategory={onCategoryEdit} />
@@ -345,6 +398,16 @@ export default function ProjectOrganisations() { onDelete={()=>deleteOrganisation(modal.delete.pos)} /> } + {modal.categories.open && modal.categories.organisation ? + + : null + } ) } diff --git a/frontend/components/software/edit/communities/CommunityAddCategoriesDialog.tsx b/frontend/components/software/edit/communities/CommunityAddCategoriesDialog.tsx index e64a31f37..1e7e48e22 100644 --- a/frontend/components/software/edit/communities/CommunityAddCategoriesDialog.tsx +++ b/frontend/components/software/edit/communities/CommunityAddCategoriesDialog.tsx @@ -41,6 +41,7 @@ export default function CommunityAddCategoriesDialog({ onConfirm, autoConfirm }: communityAddCategoriesDialogProps) { + const {token} = useSession() const smallScreen = useMediaQuery('(max-width:600px)') const [categories, setCategories] = useState[] | null>(null) const [error, setError] = useState(null) @@ -48,8 +49,6 @@ export default function CommunityAddCategoriesDialog({ const [selectedCategoryIds, setSelectedCategoryIds] = useState(new Set()) const [availableCategoryIds, setAvailableCategoryIds] = useState(new Set()) - const {token} = useSession() - function isSelected(node: TreeNode) { const val = node.getValue() return selectedCategoryIds.has(val.id) diff --git a/frontend/components/software/edit/organisations/EditSoftwareOrganisationsIndex.test.tsx b/frontend/components/software/edit/organisations/EditSoftwareOrganisationsIndex.test.tsx index f4fb9a37e..64c94e874 100644 --- a/frontend/components/software/edit/organisations/EditSoftwareOrganisationsIndex.test.tsx +++ b/frontend/components/software/edit/organisations/EditSoftwareOrganisationsIndex.test.tsx @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2023 Dusan Mijatovic (dv4all) (dv4all) // SPDX-FileCopyrightText: 2023 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 @@ -31,14 +33,13 @@ jest.mock('~/utils/editOrganisation', () => ({ })) // MOCK isMaintainerOfOrganisation -const mockIsMainatainerOfOrganisation = jest.fn(props => Promise.resolve(false)) +const mockIsMaintainerOfOrganisation = jest.fn(props => Promise.resolve(false)) jest.mock('~/auth/permissions/isMaintainerOfOrganisation', () => ({ __esModule: true, - default: jest.fn(props=>mockIsMainatainerOfOrganisation(props)), - isMaintainerOfOrganisation: jest.fn(props=>mockIsMainatainerOfOrganisation(props)) + default: jest.fn(props=>mockIsMaintainerOfOrganisation(props)), + isMaintainerOfOrganisation: jest.fn(props=>mockIsMaintainerOfOrganisation(props)) })) - // MOCK organisationForSoftware methods const mockCreateOrganisationAndAddToSoftware = jest.fn(props => Promise.resolve([] as any)) const mockAddOrganisationToSoftware = jest.fn(props => Promise.resolve([] as any)) @@ -51,6 +52,11 @@ jest.mock('./organisationForSoftware', () => ({ patchOrganisationPositions: jest.fn(props=>mockPatchOrganisationPositions(props)) })) +// MOCK software category calls +// by default we return no categories +jest.mock('~/components/category/apiCategories') +jest.mock('~/utils/getSoftware') + describe('frontend/components/software/edit/organisations/index.tsx', () => { beforeEach(() => { jest.clearAllMocks() @@ -290,8 +296,8 @@ describe('frontend/components/software/edit/organisations/index.tsx', () => { // return list of organisations mockGetOrganisationsForSoftware.mockResolvedValueOnce(organisationsOfSoftware) // mock is Maintainer of first organisation - mockIsMainatainerOfOrganisation.mockResolvedValueOnce(true) - mockIsMainatainerOfOrganisation.mockResolvedValueOnce(false) + mockIsMaintainerOfOrganisation.mockResolvedValueOnce(true) + mockIsMaintainerOfOrganisation.mockResolvedValueOnce(false) render( diff --git a/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx b/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx new file mode 100644 index 000000000..950c7c263 --- /dev/null +++ b/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx @@ -0,0 +1,260 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {useEffect, useState} from 'react' +import Dialog from '@mui/material/Dialog' +import DialogContent from '@mui/material/DialogContent' +import DialogTitle from '@mui/material/DialogTitle' +import Alert from '@mui/material/Alert' +import DialogActions from '@mui/material/DialogActions' +import Button from '@mui/material/Button' +import useMediaQuery from '@mui/material/useMediaQuery' +import SaveIcon from '@mui/icons-material/Save' + +import {useSession} from '~/auth' +import {TreeNode} from '~/types/TreeNode' +import {CategoryEntry} from '~/types/Category' +import {CategoryForSoftwareIds} from '~/types/SoftwareTypes' +import {EditOrganisation} from '~/types/Organisation' +import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' +import {getCategoryForSoftwareIds} from '~/utils/getSoftware' +import ContentLoader from '~/components/layout/ContentLoader' +import {loadCategoryRoots} from '~/components/category/apiCategories' +import {RecursivelyGenerateItems} from '~/components/software/TreeSelect' +import {removeOrganisationCategoriesFromSoftware} from './apiSoftwareOrganisations' + +export type OrganisationCategoriesDialogProps = Readonly<{ + softwareId: string + organisation: EditOrganisation + onCancel: () => void + onComplete: () => void + autoConfirm: boolean +}> + +export default function OrganisationSoftwareCategoriesDialog({ + softwareId, + organisation, + onCancel, + onComplete, + autoConfirm +}: OrganisationCategoriesDialogProps) { + const {token} = useSession() + const smallScreen = useMediaQuery('(max-width:600px)') + const [categories, setCategories] = useState[] | null>(null) + const [error, setError] = useState(null) + const [state, setState] = useState<'loading' | 'error' | 'ready' | 'saving'>('loading') + const [selectedCategoryIds, setSelectedCategoryIds] = useState(new Set()) + const [availableCategoryIds, setAvailableCategoryIds] = useState(new Set()) + + useEffect(() => { + let abort = false + if (organisation && softwareId && token){ + Promise.all([ + loadCategoryRoots({organisation:organisation.id}), + getCategoryForSoftwareIds(softwareId, token) + ]) + .then(([roots,selected]) => { + // filter top level categories for software (only top level items have this flag) + const categories = roots.filter(item=>item.getValue().allow_software) + // if there are no categories we don't show the modal + if (categories.length === 0 && autoConfirm) { + onComplete() + return + } + // collect tree leaves ids (end nodes) + const availableIds = new Set() + categories.forEach(root=>{ + root.forEach(node=>{ + if (node.children().length === 0) { + availableIds.add(node.getValue().id) + } + }) + }) + if (abort) return + // debugger + // save values + setAvailableCategoryIds(availableIds) + setCategories(categories) + setSelectedCategoryIds(selected) + }) + .catch(e => { + if (abort) return + setError(`Couldn't load categories: ${e}`) + setState('error') + }) + .finally(()=>{ + if (abort) return + setState('ready') + }) + } + return ()=>{abort=true} + }, [organisation, softwareId, autoConfirm, token, onComplete]) + + function isSelected(node: TreeNode) { + const val = node.getValue() + return selectedCategoryIds.has(val.id) + } + + function textExtractor(value: CategoryEntry) { + return value.name + } + + function keyExtractor(value: CategoryEntry) { + return value.id + } + + function onSelect(node: TreeNode) { + const val = node.getValue() + if (selectedCategoryIds.has(val.id)) { + selectedCategoryIds.delete(val.id) + } else { + selectedCategoryIds.add(val.id) + } + + setSelectedCategoryIds(new Set(selectedCategoryIds)) + } + + function isCancelEnabled() { + return state === 'saving' + } + + function isSaveDisabled(){ + return categories === null || categories.length === 0 || state !== 'ready' + } + + async function saveCategoriesAndOrganisation() { + // delete old selection + if (organisation.id){ + const deleteErrorMessage = await removeOrganisationCategoriesFromSoftware(softwareId, organisation.id, token) + if (deleteErrorMessage !== null) { + setError(`Couldn't delete the existing categories: ${deleteErrorMessage}`) + setState('error') + return + } + } + + if (selectedCategoryIds.size === 0) { + onComplete() + return + } + + // generate new collection + const categoriesArrayToSave: {software_id: string, category_id: string}[] = [] + selectedCategoryIds + .forEach(id => { + if (availableCategoryIds.has(id)) { + categoriesArrayToSave.push({software_id: softwareId, category_id: id}) + } + }) + + // save organisation categories (if any) + if (categoriesArrayToSave.length > 0){ + const categoryUrl = `${getBaseUrl()}/category_for_software` + const resp = await fetch(categoryUrl, { + method: 'POST', + body: JSON.stringify(categoriesArrayToSave), + headers: { + ...createJsonHeaders(token) + } + }) + // debugger + if (!resp.ok) { + setError(`Couldn't save categories: ${await resp.text()}`) + setState('error') + } else { + onComplete() + } + }else{ + onComplete() + } + } + + function renderDialogContent(): JSX.Element { + switch (state) { + case 'loading': + case 'saving': + return ( +
+ +
+ ) + + case 'error': + return ( + + {error} + + ) + + case 'ready': + return ( + <> + {(categories === null || categories.length === 0) + ? + + This community doesn‘t have any categories. + + : + + } + + ) + } + } + + return ( + + Add categories of {organisation.name} + + {renderDialogContent()} + + + + + + + ) +} diff --git a/frontend/components/software/edit/organisations/SortableOrganisationItem.tsx b/frontend/components/software/edit/organisations/SortableOrganisationItem.tsx index 4d6a4d915..fa69139c3 100644 --- a/frontend/components/software/edit/organisations/SortableOrganisationItem.tsx +++ b/frontend/components/software/edit/organisations/SortableOrganisationItem.tsx @@ -1,5 +1,7 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 @@ -20,9 +22,10 @@ type OrganisationsListItemProps = { pos: number onEdit: (pos:number)=>void onDelete: (pos:number)=>void + onCategory: (pos:number)=>void } -export default function SortableOrganisationsItem({organisation, pos, onEdit, onDelete}: OrganisationsListItemProps) { +export default function SortableOrganisationsItem({organisation, pos, onEdit, onDelete, onCategory}: OrganisationsListItemProps) { const { attributes,listeners,setNodeRef, transform,transition,isDragging @@ -52,6 +55,7 @@ export default function SortableOrganisationsItem({organisation, pos, onEdit, on listeners={listeners} onEdit={onEdit} onDelete={onDelete} + onCategory={onCategory} /> ) } @@ -59,8 +63,8 @@ export default function SortableOrganisationsItem({organisation, pos, onEdit, on ) } @@ -83,7 +87,7 @@ export default function SortableOrganisationsItem({organisation, pos, onEdit, on sx={{ // position:'relative', // this makes space for buttons - paddingRight:'7.5rem', + paddingRight:'10rem', '&:hover': { backgroundColor:'grey.100' }, diff --git a/frontend/components/software/edit/organisations/SortableOrganisationsList.tsx b/frontend/components/software/edit/organisations/SortableOrganisationsList.tsx index 809c8354b..9134e5ba9 100644 --- a/frontend/components/software/edit/organisations/SortableOrganisationsList.tsx +++ b/frontend/components/software/edit/organisations/SortableOrganisationsList.tsx @@ -1,5 +1,7 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 @@ -15,9 +17,10 @@ type OrganisationListProps = { onEdit: (pos: number) => void onDelete: (pos: number) => void onSorted: (organisation:EditOrganisation[])=>void + onCategory: (pos: number) => void } -export default function SortableOrganisationsList({organisations,onEdit,onDelete,onSorted}:OrganisationListProps) { +export default function SortableOrganisationsList({organisations,onEdit,onDelete,onSorted,onCategory}:OrganisationListProps) { if (organisations.length === 0) { return ( @@ -35,6 +38,7 @@ export default function SortableOrganisationsList({organisations,onEdit,onDelete organisation={item} onEdit={onEdit} onDelete={onDelete} + onCategory={onCategory} /> } diff --git a/frontend/components/software/edit/organisations/apiSoftwareOrganisations.ts b/frontend/components/software/edit/organisations/apiSoftwareOrganisations.ts new file mode 100644 index 000000000..9058b5399 --- /dev/null +++ b/frontend/components/software/edit/organisations/apiSoftwareOrganisations.ts @@ -0,0 +1,75 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {getOrganisationsForSoftware} from '~/utils/editOrganisation' +import isMaintainerOfOrganisation from '~/auth/permissions/isMaintainerOfOrganisation' +import {EditOrganisation} from '~/types/Organisation' +import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' + +export type UseParticipatingOrganisationsProps = { + software: string, + token: string, + account: string +} + +export async function getParticipatingOrganisationsForSoftware({software, token, account}: UseParticipatingOrganisationsProps) { + const resp = await getOrganisationsForSoftware({ + software, + token + }) + // collect isMaintainerRequests + const promises: Promise[] = [] + // prepare organisation list + const orgList = resp.map((item, pos) => { + // save isMaintainer request + promises.push(isMaintainerOfOrganisation({ + organisation: item.id, + account, + token + })) + // extract only needed props + const organisation: EditOrganisation = { + ...item, + // additional props for edit type + position: pos + 1, + logo_b64: null, + logo_mime_type: null, + source: 'RSD' as 'RSD', + status: item.status, + // false by default + canEdit: false, + // description: null + } + return organisation + }) + // run all isMaintainer requests in parallel + const isMaintainer = await Promise.all(promises) + const organisations = orgList.map((item, pos) => { + // update canEdit based on isMaintainer requests + if (isMaintainer[pos]) item.canEdit = isMaintainer[pos] + return item + }) + return organisations +} + + +export async function removeOrganisationCategoriesFromSoftware( + softwareId: string, + organisationId: string, + token: string +){ + const url = `${getBaseUrl()}/rpc/delete_organisation_categories_from_software` + const body = JSON.stringify({software_id: softwareId, organisation_id: organisationId}) + + const resp = await fetch(url, { + method: 'POST', + body: body, + headers: { + ...createJsonHeaders(token) + } + }) + + return resp.ok ? null : resp.text() +} diff --git a/frontend/components/software/edit/organisations/index.tsx b/frontend/components/software/edit/organisations/index.tsx index 7717ebab4..0be7ae0cd 100644 --- a/frontend/components/software/edit/organisations/index.tsx +++ b/frontend/components/software/edit/organisations/index.tsx @@ -8,40 +8,48 @@ import {useState} from 'react' -import {useSession} from '../../../../auth' -import useSnackbar from '../../../snackbar/useSnackbar' -import ContentLoader from '../../../layout/ContentLoader' -import ConfirmDeleteModal from '../../../layout/ConfirmDeleteModal' +import {useSession} from '~/auth' import { columsForUpdate, EditOrganisation, SearchOrganisation, SoftwareForOrganisation -} from '../../../../types/Organisation' +} from '~/types/Organisation' import { newOrganisationProps, searchToEditOrganisation, updateOrganisation, -} from '../../../../utils/editOrganisation' -import useParticipatingOrganisations from './useParticipatingOrganisations' +} from '~/utils/editOrganisation' +import {upsertImage} from '~/utils/editImage' +import {getSlugFromString} from '~/utils/getSlugFromString' +import {getPropsFromObject} from '~/utils/getPropsFromObject' +import useSnackbar from '~/components/snackbar/useSnackbar' +import ContentLoader from '~/components/layout/ContentLoader' +import ConfirmDeleteModal from '~/components/layout/ConfirmDeleteModal' +import EditSectionTitle from '~/components/layout/EditSectionTitle' +import EditSection from '~/components/layout/EditSection' import {organisationInformation as config} from '../editSoftwareConfig' -import EditSection from '../../../layout/EditSection' +import useSoftwareContext from '../useSoftwareContext' +import useParticipatingOrganisations from './useParticipatingOrganisations' import {ModalProps, ModalStates} from '../editSoftwareTypes' -import EditSectionTitle from '../../../layout/EditSectionTitle' import FindOrganisation from './FindOrganisation' import EditOrganisationModal from './EditOrganisationModal' -import {getSlugFromString} from '../../../../utils/getSlugFromString' -import useSoftwareContext from '../useSoftwareContext' import SortableOrganisationsList from './SortableOrganisationsList' import { addOrganisationToSoftware, createOrganisationAndAddToSoftware, deleteOrganisationFromSoftware, patchOrganisationPositions } from './organisationForSoftware' -import {upsertImage} from '~/utils/editImage' -import {getPropsFromObject} from '~/utils/getPropsFromObject' +import OrganisationSoftwareCategoriesDialog from './OrganisationSoftwareCategoriesDialog' + +export type OrganisationModalStates = ModalStates & { + categories: T +} export type EditOrganisationModalProps = ModalProps & { organisation?: EditOrganisation + // categories modal flag + // true -> + autoConfirm?: boolean } export default function SoftwareOrganisations() { @@ -53,18 +61,22 @@ export default function SoftwareOrganisations() { account: user?.account ?? '', token }) - const [modal, setModal] = useState>({ + const [modal, setModal] = useState>({ edit: { open: false, }, delete: { open: false + }, + categories:{ + open: false } }) // console.group('SoftwareOrganisations') // console.log('loading...', loading) // console.log('organisations...', organisations) + // console.log('modal...', modal) // console.groupEnd() // if loading show loader @@ -94,7 +106,8 @@ export default function SoftwareOrganisations() { }, delete: { open:false - } + }, + categories:{open:false} }) } else if (item.source === 'RSD') { // we add organisation directly @@ -108,6 +121,20 @@ export default function SoftwareOrganisations() { // update status received in message addOrganisation.status = resp.message as SoftwareForOrganisation['status'] addOrganisationToList(addOrganisation) + // show categories modal + setModal({ + edit: { + open: false, + }, + delete: { + open:false + }, + categories:{ + open: true, + organisation: addOrganisation, + autoConfirm: true + } + }) } else { showErrorMessage(resp.message) } @@ -130,7 +157,8 @@ export default function SoftwareOrganisations() { }, delete: { open:false - } + }, + categories:{open:false} }) } @@ -145,7 +173,8 @@ export default function SoftwareOrganisations() { }, delete: { open:false - } + }, + categories:{open:false} }) } } @@ -162,7 +191,8 @@ export default function SoftwareOrganisations() { open: true, pos, displayName - } + }, + categories:{open:false} }) } } @@ -255,6 +285,9 @@ export default function SoftwareOrganisations() { }, delete: { open:false + }, + categories:{ + open:false } }) } @@ -310,6 +343,26 @@ export default function SoftwareOrganisations() { } } + function onCategoryEdit(pos:number){ + const organisation = organisations[pos] + if (organisation){ + setModal({ + edit: { + open:false + }, + delete: { + open:false + }, + categories:{ + open:true, + organisation, + // editing categories + autoConfirm: false + } + }) + } + } + return ( <> @@ -323,6 +376,7 @@ export default function SoftwareOrganisations() { onEdit={onEdit} onDelete={onDelete} onSorted={sortedOrganisations} + onCategory={onCategoryEdit} />
@@ -356,6 +410,16 @@ export default function SoftwareOrganisations() { onDelete={()=>deleteOrganisation(modal.delete.pos)} /> } + {modal.categories.open===true && modal.categories.organisation ? + + : null + } ) } diff --git a/frontend/components/software/edit/organisations/useParticipatingOrganisations.ts b/frontend/components/software/edit/organisations/useParticipatingOrganisations.ts index 2d52ae9ab..b90233ccf 100644 --- a/frontend/components/software/edit/organisations/useParticipatingOrganisations.ts +++ b/frontend/components/software/edit/organisations/useParticipatingOrganisations.ts @@ -1,60 +1,16 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 import {useEffect, useState} from 'react' - -import isMaintainerOfOrganisation from '~/auth/permissions/isMaintainerOfOrganisation' -import {EditOrganisation} from '../../../../types/Organisation' -import {getOrganisationsForSoftware} from '../../../../utils/editOrganisation' - -type UseParticipatingOrganisationsProps = { - software: string, - token: string, - account: string -} - -async function getParticipatingOrganisationsForSoftware({software, token, account}: UseParticipatingOrganisationsProps) { - const resp = await getOrganisationsForSoftware({ - software, - token - }) - // collect isMaintainerRequests - const promises: Promise[] = [] - // prepare organisation list - const orgList = resp.map((item, pos) => { - // save isMaintainer request - promises.push(isMaintainerOfOrganisation({ - organisation: item.id, - account, - token - })) - // extract only needed props - const organisation: EditOrganisation = { - ...item, - // additional props for edit type - position: pos + 1, - logo_b64: null, - logo_mime_type: null, - source: 'RSD' as 'RSD', - status: item.status, - // false by default - canEdit: false, - // description: null - } - return organisation - }) - // run all isMaintainer requests in parallel - const isMaintainer = await Promise.all(promises) - const organisations = orgList.map((item, pos) => { - // update canEdit based on isMaintainer requests - if (isMaintainer[pos]) item.canEdit = isMaintainer[pos] - return item - }) - return organisations -} - +import {EditOrganisation} from '~/types/Organisation' +import { + getParticipatingOrganisationsForSoftware, + UseParticipatingOrganisationsProps +} from './apiSoftwareOrganisations' export function useParticipatingOrganisations({software, token, account}: UseParticipatingOrganisationsProps) { const [organisations, setOrganisations] = useState([]) diff --git a/frontend/utils/__mocks__/getSoftware.ts b/frontend/utils/__mocks__/getSoftware.ts index a0d34fdec..7d77b6aa7 100644 --- a/frontend/utils/__mocks__/getSoftware.ts +++ b/frontend/utils/__mocks__/getSoftware.ts @@ -3,7 +3,7 @@ // // SPDX-License-Identifier: Apache-2.0 -import {CategoriesForSoftware,} from '~/types/SoftwareTypes' +import {CategoriesForSoftware, CategoryForSoftwareIds,} from '~/types/SoftwareTypes' import {CategoryPath} from '~/types/Category' export async function getSoftwareList({url,token}:{url:string,token?:string }){ @@ -43,6 +43,10 @@ export async function getCategoriesForSoftware(software_id: string, token?: stri return [] } +export async function getCategoryForSoftwareIds(software_id: string, token?: string): Promise { + return new Set() +} + export async function getAvailableCategories(): Promise { return [] } From 7b8356425d3036a2799fd3a57d63b2493b57de0c Mon Sep 17 00:00:00 2001 From: "Dusan Mijatovic (PC2020)" Date: Mon, 14 Oct 2024 18:48:17 +0200 Subject: [PATCH 3/9] feat: organisation categories are shown on project page --- database/014-create-keyword-and-category.sql | 31 +++++++ .../category/CategoriesWithHeadlines.tsx | 3 +- .../category/CategoryChipFilter.tsx | 23 +++++ frontend/components/layout/SidebarPanel.tsx | 12 +++ frontend/components/layout/SidebarSection.tsx | 21 +++++ frontend/components/layout/SidebarTitle.tsx | 12 +++ frontend/components/layout/TagChipFilter.tsx | 26 +++++- .../components/projects/ProjectCategories.tsx | 29 +++++++ .../components/projects/ProjectFunding.tsx | 85 +++++++++---------- frontend/components/projects/ProjectInfo.tsx | 19 +++-- .../components/projects/ProjectKeywords.tsx | 13 +-- frontend/components/projects/ProjectLinks.tsx | 26 ++++-- .../components/projects/ProjectSidebar.tsx | 29 +++++-- .../components/projects/ProjectStatus.tsx | 12 +-- .../components/projects/ResearchDomains.tsx | 16 ++-- .../OrganisationProjectCategoriesDialog.tsx | 3 +- .../OrganisationSoftwareCategoriesDialog.tsx | 1 - frontend/pages/projects/[slug]/index.tsx | 14 ++- frontend/utils/categories.ts | 3 +- frontend/utils/getProjects.ts | 23 +++++ 20 files changed, 307 insertions(+), 94 deletions(-) create mode 100644 frontend/components/category/CategoryChipFilter.tsx create mode 100644 frontend/components/layout/SidebarPanel.tsx create mode 100644 frontend/components/layout/SidebarSection.tsx create mode 100644 frontend/components/layout/SidebarTitle.tsx create mode 100644 frontend/components/projects/ProjectCategories.tsx diff --git a/database/014-create-keyword-and-category.sql b/database/014-create-keyword-and-category.sql index 7c0a82fdf..1e582093a 100644 --- a/database/014-create-keyword-and-category.sql +++ b/database/014-create-keyword-and-category.sql @@ -258,3 +258,34 @@ CREATE TABLE category_for_project ( ); CREATE INDEX category_for_project_category_id_idx ON category_for_project(category_id); + +-- RPC for project page to show all project categories +CREATE FUNCTION category_paths_by_project_expanded(project_id UUID) +RETURNS JSON +LANGUAGE SQL STABLE AS +$$ + WITH + cat_ids AS + (SELECT + category_id + FROM + category_for_project + WHERE + category_for_project.project_id = category_paths_by_project_expanded.project_id + ), + paths AS + ( + SELECT + category_path_expanded(category_id) AS path + FROM cat_ids + ) + SELECT + CASE + WHEN EXISTS( + SELECT 1 FROM cat_ids + ) THEN ( + SELECT json_agg(path) FROM paths + ) + ELSE '[]'::json + END AS result +$$; diff --git a/frontend/components/category/CategoriesWithHeadlines.tsx b/frontend/components/category/CategoriesWithHeadlines.tsx index 1bbe75145..0bd4f739c 100644 --- a/frontend/components/category/CategoriesWithHeadlines.tsx +++ b/frontend/components/category/CategoriesWithHeadlines.tsx @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2023 Felix Mühlbauer (GFZ) // SPDX-FileCopyrightText: 2023 Helmholtz Centre Potsdam - GFZ German Research Centre for Geosciences +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) // SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) // SPDX-FileCopyrightText: 2024 Netherlands eScience Center // @@ -7,8 +8,8 @@ import React from 'react' import {useCategoryTree} from '~/utils/categories' -import {SidebarHeadline} from '../typography/SidebarHeadline' import {CategoryPath} from '~/types/Category' +import {SidebarHeadline} from '~/components/typography/SidebarHeadline' import {CategoryTreeLevel} from '~/components/category/CategoryTree' type CategoriesWithHeadlinesProps = { diff --git a/frontend/components/category/CategoryChipFilter.tsx b/frontend/components/category/CategoryChipFilter.tsx new file mode 100644 index 000000000..5ef350919 --- /dev/null +++ b/frontend/components/category/CategoryChipFilter.tsx @@ -0,0 +1,23 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {Fragment} from 'react' +import {CategoryEntry, CategoryPath} from '~/types/Category' +import {TreeNode} from '~/types/TreeNode' +import TagChipFilter from '~/components/layout/TagChipFilter' + +export function CategoryChipFilter({nodes}:{nodes:TreeNode[]}){ + return nodes.map(node=>{ + const cat = node.getValue() + const children = node.children() + return ( + + + + + ) + }) +} + diff --git a/frontend/components/layout/SidebarPanel.tsx b/frontend/components/layout/SidebarPanel.tsx new file mode 100644 index 000000000..bb187884d --- /dev/null +++ b/frontend/components/layout/SidebarPanel.tsx @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +export default function SidebarPanel({children,className}:{children:any,className?:string}) { + return ( + + ) +} diff --git a/frontend/components/layout/SidebarSection.tsx b/frontend/components/layout/SidebarSection.tsx new file mode 100644 index 000000000..79b92ce98 --- /dev/null +++ b/frontend/components/layout/SidebarSection.tsx @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +export default function SidebarSection({children,className}:{children:any,className?:string}) { + + if (className){ + return ( +
+ {children} +
+ ) + } + + return ( +
+ {children} +
+ ) +} diff --git a/frontend/components/layout/SidebarTitle.tsx b/frontend/components/layout/SidebarTitle.tsx new file mode 100644 index 000000000..dfc4f6e62 --- /dev/null +++ b/frontend/components/layout/SidebarTitle.tsx @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +export default function SidebarTitle({children,className}:{children:any,className?:string}) { + return ( +
+ {children} +
+ ) +} diff --git a/frontend/components/layout/TagChipFilter.tsx b/frontend/components/layout/TagChipFilter.tsx index 2cc87e1c5..abd9d8199 100644 --- a/frontend/components/layout/TagChipFilter.tsx +++ b/frontend/components/layout/TagChipFilter.tsx @@ -1,5 +1,7 @@ // SPDX-FileCopyrightText: 2022 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 @@ -8,10 +10,30 @@ import SearchIcon from '@mui/icons-material/Search' import Link from 'next/link' export default function TagChipFilter({url, label, title}: - { label: string, url:string ,title?: string }) { - + {label: string, url?:string ,title?: string } +){ + // if no label no chip if (!label) return null + // simple chip without link + if (!url) return ( + + ) + return ( { + const category = node.getValue() + const children = node.children() + + return ( + + {category.name} +
+ +
+
+ ) + }) +} diff --git a/frontend/components/projects/ProjectFunding.tsx b/frontend/components/projects/ProjectFunding.tsx index 44449a8ca..7944f6c02 100644 --- a/frontend/components/projects/ProjectFunding.tsx +++ b/frontend/components/projects/ProjectFunding.tsx @@ -1,57 +1,52 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 import Link from 'next/link' import {ProjectOrganisationProps} from '~/types/Organisation' +import ProjectSidebarTitle from '~/components/layout/SidebarTitle' +import ProjectSidebarSection from '../layout/SidebarSection' -export default function ProjectFunding({grant_id, fundingOrganisations=[]}: - { grant_id: string | null, fundingOrganisations:ProjectOrganisationProps[] }) { - - function renderFundedUnder() { - if (grant_id) { - return ( - <> -
Funded under
-
Grant ID: {grant_id}
- - ) - } - return null - } - - function renderFundedBy() { - if (fundingOrganisations && fundingOrganisations.length > 0) { - return ( - <> -
Funded by
-
    - {fundingOrganisations.map(item => { - const link = `/organisations/${item.rsd_path}` - return ( -
  • - - {item.name} - -
  • - ) - })} -
- - ) - } - return null - } + +export function FundedUnder({grant_id}:{grant_id:string|null}){ + + if (!grant_id) return null return ( -
- {renderFundedUnder()} - {renderFundedBy()} -
+ + Funded under +
Grant ID: {grant_id}
+
) } + +export function FundedBy({fundingOrganisations}:{fundingOrganisations:ProjectOrganisationProps[]}){ + + if (!fundingOrganisations || fundingOrganisations.length===0) return null + + return ( + + Funded by +
    + {fundingOrganisations.map(item => { + const link = `/organisations/${item.rsd_path}` + return ( +
  • + + {item.name} + +
  • + ) + })} +
+
+ ) +} + diff --git a/frontend/components/projects/ProjectInfo.tsx b/frontend/components/projects/ProjectInfo.tsx index dea730f0b..5d59853e1 100644 --- a/frontend/components/projects/ProjectInfo.tsx +++ b/frontend/components/projects/ProjectInfo.tsx @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: 2022 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 dv4all -// SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2023 Netherlands eScience Center +// SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2023 - 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 import {ProjectOrganisationProps} from '~/types/Organisation' import {KeywordForProject, ProjectLink, ResearchDomain} from '~/types/Project' +import {CategoryPath} from '~/types/Category' import ProjectDescription from './ProjectDescription' import ProjectSidebar from './ProjectSidebar' @@ -22,13 +23,18 @@ type ProjectInfoProps = { researchDomains: ResearchDomain[], keywords: KeywordForProject[], fundingOrganisations: ProjectOrganisationProps[], + categories: CategoryPath[] } -export default function ProjectInfo( - {image_id, image_caption, image_contain, description, date_start, date_end, - grant_id, links, researchDomains, keywords, fundingOrganisations}: ProjectInfoProps -) { +export default function ProjectInfo({ + image_id, image_caption, + image_contain, description, + date_start, date_end, + grant_id, links, researchDomains, + keywords, fundingOrganisations, + categories +}: ProjectInfoProps) { return (
) diff --git a/frontend/components/projects/ProjectKeywords.tsx b/frontend/components/projects/ProjectKeywords.tsx index 2753a916a..3d8200893 100644 --- a/frontend/components/projects/ProjectKeywords.tsx +++ b/frontend/components/projects/ProjectKeywords.tsx @@ -1,13 +1,16 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all +// SPDX-FileCopyrightText: 2022 - 2024 Netherlands eScience Center // SPDX-FileCopyrightText: 2022 Ewan Cahen (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2022 Netherlands eScience Center +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) // // SPDX-License-Identifier: Apache-2.0 import {KeywordForProject} from '~/types/Project' import {ssrProjectsUrl} from '~/utils/postgrestUrl' import TagChipFilter from '../layout/TagChipFilter' +import ProjectSidebarSection from '../layout/SidebarSection' +import ProjectSidebarTitle from '../layout/SidebarTitle' export default function ProjectKeywords({keywords=[]}:{keywords:KeywordForProject[]}) { @@ -28,11 +31,9 @@ export default function ProjectKeywords({keywords=[]}:{keywords:KeywordForProjec } return ( -
-
- Keywords -
+ + Keywords {renderTags()} -
+ ) } diff --git a/frontend/components/projects/ProjectLinks.tsx b/frontend/components/projects/ProjectLinks.tsx index 177bb8ee0..4f61014e8 100644 --- a/frontend/components/projects/ProjectLinks.tsx +++ b/frontend/components/projects/ProjectLinks.tsx @@ -1,24 +1,30 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 import Link from 'next/link' -import {ProjectLink} from '../../types/Project' +import OpenInNewIcon from '@mui/icons-material/OpenInNew' + +import {ProjectLink} from '~/types/Project' +import ProjectSidebarSection from '../layout/SidebarSection' +import ProjectSidebarTitle from '../layout/SidebarTitle' export default function ProjectLinks({links}: { links: ProjectLink[] }) { if (!links || links?.length === 0) { return ( -
-
Project links
+ + Project links Not specified -
+ ) } return ( -
-
Project links
+ + Project links
    { links.map(link => { @@ -29,7 +35,13 @@ export default function ProjectLinks({links}: { links: ProjectLink[] }) { href={link.url} target="_blank" passHref + className='flex gap-2 items-center' > + {link.title} @@ -40,6 +52,6 @@ export default function ProjectLinks({links}: { links: ProjectLink[] }) { }) }
-
+ ) } diff --git a/frontend/components/projects/ProjectSidebar.tsx b/frontend/components/projects/ProjectSidebar.tsx index 21e4bcfa7..78ffbfa2a 100644 --- a/frontend/components/projects/ProjectSidebar.tsx +++ b/frontend/components/projects/ProjectSidebar.tsx @@ -1,18 +1,21 @@ -// SPDX-FileCopyrightText: 2022 - 2023 Netherlands eScience Center +// SPDX-FileCopyrightText: 2022 - 2024 Netherlands eScience Center // SPDX-FileCopyrightText: 2022 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 Ewan Cahen (Netherlands eScience Center) // SPDX-FileCopyrightText: 2022 dv4all -// SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) // // SPDX-License-Identifier: Apache-2.0 import {KeywordForProject, ProjectLink, ResearchDomain} from '~/types/Project' import {ProjectOrganisationProps} from '~/types/Organisation' +import {CategoryPath} from '~/types/Category' +import SidebarPanel from '~/components/layout/SidebarPanel' import ProjectStatus from './ProjectStatus' -import ProjectFunding from './ProjectFunding' +import {FundedBy, FundedUnder} from './ProjectFunding' import ProjectLinks from './ProjectLinks' import ProjectKeywords from './ProjectKeywords' import ResearchDomains from './ResearchDomains' +import ProjectCategories from './ProjectCategories' type ProjectSidebarProps = { date_start: string | null @@ -20,23 +23,27 @@ type ProjectSidebarProps = { grant_id: string | null researchDomains: ResearchDomain[], keywords: KeywordForProject[], - links: ProjectLink[] - fundingOrganisations: ProjectOrganisationProps[] + links: ProjectLink[], + fundingOrganisations: ProjectOrganisationProps[], + categories: CategoryPath[] } export default function ProjectSidebar({date_start, date_end, grant_id, links, researchDomains, - keywords, fundingOrganisations}: ProjectSidebarProps) { + keywords, categories, fundingOrganisations}: ProjectSidebarProps) { return ( - + + + ) } diff --git a/frontend/components/projects/ProjectStatus.tsx b/frontend/components/projects/ProjectStatus.tsx index 46fa80efc..01b88e45d 100644 --- a/frontend/components/projects/ProjectStatus.tsx +++ b/frontend/components/projects/ProjectStatus.tsx @@ -1,14 +1,16 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all // SPDX-FileCopyrightText: 2022 Dusan Mijatovic (dv4all) (dv4all) -// SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2023 Netherlands eScience Center +// SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2023 - 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 import {getMonthYearDate} from '~/utils/dateFn' import {getProjectStatus} from '~/utils/getProjects' import PeriodProgressBar from '~/components/charts/progress/PeriodProgressBar' +import SidebarTitle from '~/components/layout/SidebarTitle' +import ProjectSidebarSection from '../layout/SidebarSection' type ProjectStatusProps = { date_start: string | null, @@ -25,8 +27,8 @@ export default function ProjectStatus({date_start, date_end}: ProjectStatusProps }) return ( -
-
Status
+ + Status {getMonthYearDate(date_end)}
{status}
- + ) } diff --git a/frontend/components/projects/ResearchDomains.tsx b/frontend/components/projects/ResearchDomains.tsx index 972dd5534..ca001fc59 100644 --- a/frontend/components/projects/ResearchDomains.tsx +++ b/frontend/components/projects/ResearchDomains.tsx @@ -1,7 +1,8 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all +// SPDX-FileCopyrightText: 2022 - 2024 Netherlands eScience Center // SPDX-FileCopyrightText: 2022 Ewan Cahen (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2022 Netherlands eScience Center +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) // // SPDX-License-Identifier: Apache-2.0 @@ -9,7 +10,9 @@ import Link from '@mui/material/Link' import LinkIcon from '@mui/icons-material/Link' import {ResearchDomain} from '~/types/Project' import {ssrProjectsUrl} from '~/utils/postgrestUrl' -import TagChipFilter from '../layout/TagChipFilter' +import TagChipFilter from '~/components/layout/TagChipFilter' +import ProjectSidebarSection from '~/components/layout/SidebarSection' +import ProjectSidebarTitle from '~/components/layout/SidebarTitle' export default function ResearchDomains({domains}:{domains:ResearchDomain[]}) { @@ -31,8 +34,8 @@ export default function ResearchDomains({domains}:{domains:ResearchDomain[]}) { } return ( -
-
+ + Research domains -
+ + {renderTags()} -
+ ) } diff --git a/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx b/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx index 6b6fb392a..50e22d09a 100644 --- a/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx +++ b/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx @@ -227,8 +227,7 @@ export default function OrganisationProjectCategoriesDialog({ sx={{ display: 'flex', flexDirection: 'column', - height: ['100%', '37rem'], - padding: '1rem 1.5rem 2.5rem !important' + padding: '1rem 1.5rem 2.5rem !important', }}> {renderDialogContent()} diff --git a/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx b/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx index 950c7c263..39db1b535 100644 --- a/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx +++ b/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx @@ -224,7 +224,6 @@ export default function OrganisationSoftwareCategoriesDialog({ sx={{ display: 'flex', flexDirection: 'column', - height: ['100%', '37rem'], padding: '1rem 1.5rem 2.5rem !important' }}> {renderDialogContent()} diff --git a/frontend/pages/projects/[slug]/index.tsx b/frontend/pages/projects/[slug]/index.tsx index 1e834d750..5d488c66f 100644 --- a/frontend/pages/projects/[slug]/index.tsx +++ b/frontend/pages/projects/[slug]/index.tsx @@ -16,7 +16,8 @@ import { getProjectItem, getRelatedSoftwareForProject, getTeamForProject, getResearchDomainsForProject, getKeywordsForProject, getRelatedProjectsForProject, - getMentionsForProject, getImpactByProject + getMentionsForProject, getImpactByProject, + getCategoriesForProject } from '~/utils/getProjects' import { KeywordForProject, Project, ProjectLink, @@ -45,6 +46,7 @@ import RelatedProjectsSection from '~/components/projects/RelatedProjectsSection import MentionsSection from '~/components/mention/MentionsSection' import {getTestimonialsForProject} from '~/components/projects/edit/testimonials/apiProjectTestimonial' import TestimonialSection from '~/components/software/TestimonialsSection' +import {CategoryPath} from '~/types/Category' export interface ProjectPageProps extends ScriptProps{ slug: string @@ -53,6 +55,7 @@ export interface ProjectPageProps extends ScriptProps{ organisations: ProjectOrganisationProps[], researchDomains: ResearchDomain[], keywords: KeywordForProject[], + categories: CategoryPath[], links: ProjectLink[], output: MentionItemProps[], impact: MentionItemProps[], @@ -64,14 +67,14 @@ export interface ProjectPageProps extends ScriptProps{ export default function ProjectPage(props: ProjectPageProps) { const {slug, project, isMaintainer, organisations, - researchDomains, keywords, links, output, impact, team, + researchDomains, keywords, categories, links, output, impact, team, relatedSoftware, relatedProjects, testimonials } = props if (!project?.title){ return } - // console.log('ProjectPage...testimonials...', testimonials) + // console.log('ProjectPage...categories...', categories) return ( <> {/* Page Head meta tags */} @@ -109,6 +112,7 @@ export default function ProjectPage(props: ProjectPageProps) { researchDomains={researchDomains} keywords={keywords} links={links} + categories={categories} /> {/*
*/} @@ -174,6 +178,7 @@ export async function getServerSideProps(context:any) { organisations, researchDomains, keywords, + categories, output, impact, testimonials, @@ -186,6 +191,8 @@ export async function getServerSideProps(context:any) { getOrganisations({project: project.id, token, frontend: false}), getResearchDomainsForProject({project: project.id, token, frontend: false}), getKeywordsForProject({project: project.id, token, frontend: false}), + // Project specific categories + getCategoriesForProject({project_id:project.id,token}), // Output getMentionsForProject({project: project.id, token, table:'output_for_project'}), // Impact @@ -211,6 +218,7 @@ export async function getServerSideProps(context:any) { organisations, researchDomains, keywords, + categories, output, impact, testimonials, diff --git a/frontend/utils/categories.ts b/frontend/utils/categories.ts index 5930f1570..dd62b61d7 100644 --- a/frontend/utils/categories.ts +++ b/frontend/utils/categories.ts @@ -23,8 +23,9 @@ export const categoryTreeNodesSort = (trees: TreeNode[]) => { } -export const genCategoryTreeNodes = (categories: CategoryPath[]) : TreeNode[] => { +export const genCategoryTreeNodes = (categories: CategoryPath[]=[]) : TreeNode[] => { const allEntries: CategoryEntry[] = [] + for (const path of categories) { for (const entry of path) { allEntries.push(entry) diff --git a/frontend/utils/getProjects.ts b/frontend/utils/getProjects.ts index e7bdb15ac..b9acbdfbe 100644 --- a/frontend/utils/getProjects.ts +++ b/frontend/utils/getProjects.ts @@ -14,6 +14,7 @@ import { ResearchDomain, SearchProject, TeamMember } from '~/types/Project' import {RelatedSoftwareOfProject} from '~/types/SoftwareTypes' +import {CategoryPath} from '~/types/Category' import {getImageUrl} from './editImage' import {extractCountFromHeader} from './extractCountFromHeader' import {createJsonHeaders, getBaseUrl} from './fetchHelpers' @@ -419,3 +420,25 @@ export async function searchForRelatedProjectByTitle({project, searchFor, token} return [] } } + +export async function getCategoriesForProject({project_id,token}:{project_id: string, token?: string}){ + try { + const query = `project_id=${project_id}` + const url = `${getBaseUrl()}/rpc/category_paths_by_project_expanded?${query}` + + const resp = await fetch(url, { + method: 'GET', + headers: createJsonHeaders(token) + }) + if (resp.status === 200) { + const data:CategoryPath[] = await resp.json() + return data + } else { + logger(`getCategoriesForProject: ${resp.status} - ${resp.statusText} [${url}]`, 'error') + return [] + } + } catch (e: any) { + logger(`getCategoriesForProject: ${e?.message}`, 'error') + return [] + } +} From 545a8f550d9e3d23ab625d431c8359d31fad22a2 Mon Sep 17 00:00:00 2001 From: "Dusan Mijatovic (PC2020)" Date: Mon, 14 Oct 2024 22:27:34 +0200 Subject: [PATCH 4/9] refactor: organisation categories modals refactor: reduce duplicated code --- database/014-create-keyword-and-category.sql | 2 +- database/109-category-functions.sql | 18 +- .../permissions/isMaintainerOfOrganisation.ts | 70 ++++- .../components/category/CategoriesDialog.tsx | 166 +++++++++++ .../layout/SortableListItemActions.tsx | 2 +- .../EditProjectOrganisationsIndex.test.tsx | 89 +++--- .../OrganisationProjectCategoriesDialog.tsx | 262 ------------------ .../organisations/ProjectCategoriesDialog.tsx | 60 ++++ .../organisations/apiProjectOrganisations.ts | 6 +- .../projects/edit/organisations/index.tsx | 10 +- .../useParticipatingOrganisations.ts | 42 +-- .../organisations/useProjectCategories.tsx | 132 +++++++++ .../EditSoftwareOrganisationsIndex.test.tsx | 88 +++--- .../OrganisationSoftwareCategoriesDialog.tsx | 259 ----------------- .../SoftwareCategoriesDialog.tsx | 64 +++++ .../organisations/apiSoftwareOrganisations.ts | 40 +-- .../software/edit/organisations/index.tsx | 31 ++- .../organisations/useSoftwareCategories.tsx | 130 +++++++++ 18 files changed, 760 insertions(+), 711 deletions(-) create mode 100644 frontend/components/category/CategoriesDialog.tsx delete mode 100644 frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx create mode 100644 frontend/components/projects/edit/organisations/ProjectCategoriesDialog.tsx create mode 100644 frontend/components/projects/edit/organisations/useProjectCategories.tsx delete mode 100644 frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx create mode 100644 frontend/components/software/edit/organisations/SoftwareCategoriesDialog.tsx create mode 100644 frontend/components/software/edit/organisations/useSoftwareCategories.tsx diff --git a/database/014-create-keyword-and-category.sql b/database/014-create-keyword-and-category.sql index 1e582093a..5bf1b1db3 100644 --- a/database/014-create-keyword-and-category.sql +++ b/database/014-create-keyword-and-category.sql @@ -106,7 +106,7 @@ CREATE TABLE category ( CREATE INDEX category_parent_idx ON category(parent); CREATE INDEX category_community_idx ON category(community); - +CREATE INDEX category_organisation_idx ON category(organisation); -- sanitize categories diff --git a/database/109-category-functions.sql b/database/109-category-functions.sql index 80e449c4e..5e692ad9d 100644 --- a/database/109-category-functions.sql +++ b/database/109-category-functions.sql @@ -4,13 +4,18 @@ -- -- SPDX-License-Identifier: Apache-2.0 +-- DELETE organisation categories for specific community CREATE FUNCTION delete_community_categories_from_software(software_id UUID, community_id UUID) RETURNS VOID LANGUAGE sql AS $$ DELETE FROM category_for_software - USING category - WHERE category_for_software.category_id = category.id AND category_for_software.software_id = software_id AND category.community = community_id; + USING + category + WHERE + category_for_software.category_id = category.id AND + category_for_software.software_id = delete_community_categories_from_software.software_id AND + category.community = delete_community_categories_from_software.community_id; $$; @@ -24,11 +29,10 @@ DELETE FROM category_for_software category WHERE category_for_software.category_id = category.id AND - category_for_software.software_id = software_id AND - category.organisation = organisation_id; + category_for_software.software_id = delete_organisation_categories_from_software.software_id AND + category.organisation = delete_organisation_categories_from_software.organisation_id; $$; - -- DELETE organisation categories for specific project CREATE FUNCTION delete_organisation_categories_from_project(project_id UUID, organisation_id UUID) RETURNS VOID @@ -39,6 +43,6 @@ DELETE FROM category_for_project category WHERE category_for_project.category_id = category.id AND - category_for_project.project_id = project_id AND - category.organisation = organisation_id; + category_for_project.project_id = delete_organisation_categories_from_project.project_id AND + category.organisation = delete_organisation_categories_from_project.organisation_id; $$; diff --git a/frontend/auth/permissions/isMaintainerOfOrganisation.ts b/frontend/auth/permissions/isMaintainerOfOrganisation.ts index 57b9d7177..15b828598 100644 --- a/frontend/auth/permissions/isMaintainerOfOrganisation.ts +++ b/frontend/auth/permissions/isMaintainerOfOrganisation.ts @@ -1,12 +1,14 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all -// SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2023 Netherlands eScience Center +// SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2023 - 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 -import {createJsonHeaders, getBaseUrl} from '../../utils/fetchHelpers' -import logger from '../../utils/logger' +import {OrganisationsOfProject} from '~/types/Project' +import {EditOrganisation, OrganisationsForSoftware} from '~/types/Organisation' +import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' +import logger from '~/utils/logger' import {RsdRole} from '../index' type IsOrganisationMaintainerProps = { @@ -92,5 +94,65 @@ export async function getMaintainerOrganisations({token}: } } +type CanEditOrganisationsProps={ + account?: string + token?: string + organisations: OrganisationsOfProject[]| OrganisationsForSoftware[] +} + +export async function canEditOrganisations({organisations,account,token}:CanEditOrganisationsProps){ + try{ + // collect isMaintainerRequests + const promises:Promise[] = [] + // prepare organisation list + const orgList = organisations.map((item, pos) => { + // save isMaintainer request + promises.push(isMaintainerOfOrganisation({ + organisation: item.id, + account, + token + })) + // extract only needed props + const org: EditOrganisation = { + ...item, + // additional props for edit type + position: pos + 1, + logo_b64: null, + logo_mime_type: null, + source: 'RSD' as 'RSD', + status: item.status, + // false by default + canEdit: false + } + return org + }) + // run all isMaintainer requests in parallel + const isMaintainer = await Promise.all(promises) + const canEditOrganisations = orgList.map((item, pos) => { + // update canEdit based on isMaintainer requests + if (isMaintainer[pos]) item.canEdit = isMaintainer[pos] + return item + }) + return canEditOrganisations + }catch(e:any){ + logger(`canEditOrganisations: ${e.message}`, 'error') + // on error all items set to false + return organisations.map((item, pos) => { + // extract only needed props + const org: EditOrganisation = { + ...item, + // additional props for edit type + position: pos + 1, + logo_b64: null, + logo_mime_type: null, + source: 'RSD' as 'RSD', + status: item.status, + // false by default + canEdit: false + } + return org + }) + } +} export default isMaintainerOfOrganisation diff --git a/frontend/components/category/CategoriesDialog.tsx b/frontend/components/category/CategoriesDialog.tsx new file mode 100644 index 000000000..40bac32ad --- /dev/null +++ b/frontend/components/category/CategoriesDialog.tsx @@ -0,0 +1,166 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import Dialog from '@mui/material/Dialog' +import DialogContent from '@mui/material/DialogContent' +import DialogTitle from '@mui/material/DialogTitle' +import Alert from '@mui/material/Alert' +import DialogActions from '@mui/material/DialogActions' +import Button from '@mui/material/Button' +import useMediaQuery from '@mui/material/useMediaQuery' +import SaveIcon from '@mui/icons-material/Save' + +import {TreeNode} from '~/types/TreeNode' +import {CategoryEntry} from '~/types/Category' +import ContentLoader from '../layout/ContentLoader' +import {RecursivelyGenerateItems} from '~/components/software/TreeSelect' +import {useEffect, useState} from 'react' + +type CategoriesDialogProps={ + title: string, + categories: TreeNode[], + selected: Set, + state: 'loading' | 'error' | 'ready' | 'saving', + errorMsg: string | null + noItemsMsg: string + onCancel: ()=>void, + onSave: (selected:Set)=>void +} + +export default function CategoriesDialog({ + title,categories,selected, + state,errorMsg,noItemsMsg, + onCancel,onSave +}:CategoriesDialogProps) { + const smallScreen = useMediaQuery('(max-width:600px)') + const [selectedCategoryIds, setSelectedCategoryIds] = useState>(new Set()) + + // console.group('CategoriesDialog') + // console.log('state...', state) + // console.log('selected...', selected) + // console.log('selectedCategoryIds...',selectedCategoryIds) + // console.groupEnd() + + useEffect(()=>{ + if (state==='ready'){ + setSelectedCategoryIds(selected) + } + },[selected,state]) + + function isSelected(node: TreeNode) { + const val = node.getValue() + return selectedCategoryIds.has(val.id) + } + + function textExtractor(value: CategoryEntry) { + return value.name + } + + function keyExtractor(value: CategoryEntry) { + return value.id + } + + function onSelect(node: TreeNode) { + const val = node.getValue() + if (selectedCategoryIds.has(val.id)) { + selectedCategoryIds.delete(val.id) + } else { + selectedCategoryIds.add(val.id) + } + setSelectedCategoryIds(new Set(selectedCategoryIds)) + } + + function isSaveDisabled(){ + return categories === null || categories.length === 0 || state !== 'ready' + } + + function renderDialogContent(): JSX.Element { + switch (state) { + case 'loading': + case 'saving': + return ( +
+ +
+ ) + + case 'error': + return ( + + {errorMsg ?? '500 - Unexpected error'} + + ) + + case 'ready': + return ( + <> + {(categories === null || categories.length === 0) + ? + + {noItemsMsg} + + : + + } + + ) + } + } + + return ( + + {title} + + + {renderDialogContent()} + + + + + + + + ) +} diff --git a/frontend/components/layout/SortableListItemActions.tsx b/frontend/components/layout/SortableListItemActions.tsx index 49335fcb8..661f537be 100644 --- a/frontend/components/layout/SortableListItemActions.tsx +++ b/frontend/components/layout/SortableListItemActions.tsx @@ -28,7 +28,7 @@ export default function SortableListItemActions({pos,listeners,onEdit,onDelete,o { // alert(`Edit...${item.id}`) diff --git a/frontend/components/projects/edit/organisations/EditProjectOrganisationsIndex.test.tsx b/frontend/components/projects/edit/organisations/EditProjectOrganisationsIndex.test.tsx index d7998f3ce..0407f45d8 100644 --- a/frontend/components/projects/edit/organisations/EditProjectOrganisationsIndex.test.tsx +++ b/frontend/components/projects/edit/organisations/EditProjectOrganisationsIndex.test.tsx @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all // SPDX-FileCopyrightText: 2023 Dusan Mijatovic (dv4all) +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 @@ -17,11 +19,12 @@ import editProjectState from '../__mocks__/editProjectState' import mockOrganisationsOfProject from './__mocks__/organisationsOfProject.json' // MOCK isMaintainerOfOrganisation -const mockIsMainatainerOfOrganisation = jest.fn(props => Promise.resolve(false)) +const mockIsMaintainerOfOrganisation = jest.fn(props => Promise.resolve(false)) jest.mock('~/auth/permissions/isMaintainerOfOrganisation', () => ({ __esModule: true, - default: jest.fn(props=>mockIsMainatainerOfOrganisation(props)), - isMaintainerOfOrganisation: jest.fn(props=>mockIsMainatainerOfOrganisation(props)) + default: jest.fn(props=>mockIsMaintainerOfOrganisation(props)), + isMaintainerOfOrganisation: jest.fn(props=>mockIsMaintainerOfOrganisation(props)), + canEditOrganisations: jest.fn(({organisations,...other})=>organisations) })) // MOCK getOrganisationsOfProject @@ -261,48 +264,6 @@ describe('frontend/components/projects/edit/organisations/index.tsx', () => { }) }) - - it('maintainer of organisation can edit organisation', async() => { - // mock organisations response - mockGetOrganisationsOfProject.mockResolvedValueOnce(mockOrganisationsOfProject as any) - mockIsMainatainerOfOrganisation.mockResolvedValueOnce(true) - mockIsMainatainerOfOrganisation.mockResolvedValueOnce(false) - - render( - - - - - - ) - - // wait for loader to be removed - await waitForElementToBeRemoved(screen.getByRole('progressbar')) - - // render first project organisation with edit button - const editBtns = screen.getAllByTestId('EditIcon') - expect(editBtns.length).toEqual(1) - - // click on edit button - fireEvent.click(editBtns[0]) - - const modal = await screen.findByRole('dialog') - - // validate organisation name - const name = within(modal).getByRole('textbox', { - name: config.name.label - }) - expect(name).toHaveValue(mockOrganisationsOfProject[0].name) - - // cancel - const cancelBtn = within(modal).getByRole('button', { - name: 'Cancel' - }) - fireEvent.click(cancelBtn) - // modal should not be visible - expect(modal).not.toBeVisible() - }) - it('can remove organisation from project', async() => { // mock organisations response mockGetOrganisationsOfProject.mockResolvedValueOnce(mockOrganisationsOfProject as any) @@ -354,5 +315,43 @@ describe('frontend/components/projects/edit/organisations/index.tsx', () => { expect(remained.length).toEqual(mockOrganisationsOfProject.length-1) }) }) + + it('shows organisation categories modal',async()=>{ + // mock organisations response + mockGetOrganisationsOfProject.mockResolvedValueOnce(mockOrganisationsOfProject as any) + + render( + + + + + + ) + + // wait for loader to be removed + await waitForElementToBeRemoved(screen.getByRole('progressbar')) + + // renders project organisations + const organisations = screen.getAllByTestId('organisation-list-item') + expect(organisations.length).toEqual(mockOrganisationsOfProject.length) + + // get edit categories button from first organisation + const categoriesBtn = within(organisations[0]).getByRole('button', { + name: 'edit categories' + }) + // click edit categories + fireEvent.click(categoriesBtn) + + // get organisation categories modal + const modal = screen.getByRole('dialog') + + // close modal + const cancelBtn = within(modal).getByRole('button', { + name: 'Cancel' + }) + fireEvent.click(cancelBtn) + // confirm modal closed + expect(modal).not.toBeInTheDocument() + }) }) diff --git a/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx b/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx deleted file mode 100644 index 50e22d09a..000000000 --- a/frontend/components/projects/edit/organisations/OrganisationProjectCategoriesDialog.tsx +++ /dev/null @@ -1,262 +0,0 @@ -// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2024 Netherlands eScience Center -// -// SPDX-License-Identifier: Apache-2.0 - -import {useEffect, useState} from 'react' -import Dialog from '@mui/material/Dialog' -import DialogContent from '@mui/material/DialogContent' -import DialogTitle from '@mui/material/DialogTitle' -import Alert from '@mui/material/Alert' -import DialogActions from '@mui/material/DialogActions' -import Button from '@mui/material/Button' -import useMediaQuery from '@mui/material/useMediaQuery' -import SaveIcon from '@mui/icons-material/Save' - -import {useSession} from '~/auth' -import {TreeNode} from '~/types/TreeNode' -import {CategoryEntry} from '~/types/Category' -import {CategoryForSoftwareIds} from '~/types/SoftwareTypes' -import {EditOrganisation} from '~/types/Organisation' -import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' -import ContentLoader from '~/components/layout/ContentLoader' -import {loadCategoryRoots} from '~/components/category/apiCategories' -import {RecursivelyGenerateItems} from '~/components/software/TreeSelect' -import {getCategoryListForProject, removeOrganisationCategoriesFromProject} from './apiProjectOrganisations' - -export type OrganisationCategoriesDialogProps = Readonly<{ - projectId: string - organisation: EditOrganisation - onCancel: () => void - onComplete: () => void - autoConfirm: boolean -}> - -type ProjectCategory = { - project_id: string, - category_id: string -} - -export default function OrganisationProjectCategoriesDialog({ - projectId, - organisation, - onCancel, - onComplete, - autoConfirm -}: OrganisationCategoriesDialogProps) { - const {token} = useSession() - const smallScreen = useMediaQuery('(max-width:600px)') - const [categories, setCategories] = useState[] | null>(null) - const [error, setError] = useState(null) - const [state, setState] = useState<'loading' | 'error' | 'ready' | 'saving'>('loading') - const [selectedCategoryIds, setSelectedCategoryIds] = useState(new Set()) - const [availableCategoryIds, setAvailableCategoryIds] = useState(new Set()) - - useEffect(() => { - let abort = false - if (organisation && projectId && token){ - Promise.all([ - loadCategoryRoots({organisation:organisation.id}), - getCategoryListForProject(projectId, token) - ]) - .then(([roots,selected]) => { - // filter top level categories for projects (only top level items have this flag) - const categories = roots.filter(item=>item.getValue().allow_projects) - // if there are no categories we don't show the modal - if (categories.length === 0 && autoConfirm) { - onComplete() - return - } - // collect tree leaves ids (end nodes) - const availableIds = new Set() - categories.forEach(root=>{ - root.forEach(node=>{ - if (node.children().length === 0) { - availableIds.add(node.getValue().id) - } - }) - }) - if (abort) return - // debugger - // save values - setAvailableCategoryIds(availableIds) - setCategories(categories) - setSelectedCategoryIds(selected) - }) - .catch(e => { - if (abort) return - setError(`Couldn't load categories: ${e}`) - setState('error') - }) - .finally(()=>{ - if (abort) return - setState('ready') - }) - } - return ()=>{abort=true} - }, [organisation, onComplete, autoConfirm, projectId, token]) - - function isSelected(node: TreeNode) { - const val = node.getValue() - return selectedCategoryIds.has(val.id) - } - - function textExtractor(value: CategoryEntry) { - return value.name - } - - function keyExtractor(value: CategoryEntry) { - return value.id - } - - function onSelect(node: TreeNode) { - const val = node.getValue() - if (selectedCategoryIds.has(val.id)) { - selectedCategoryIds.delete(val.id) - } else { - selectedCategoryIds.add(val.id) - } - setSelectedCategoryIds(new Set(selectedCategoryIds)) - } - - function isCancelEnabled() { - return state === 'saving' - } - - function isSaveDisabled(){ - return categories === null || categories.length === 0 || state !== 'ready' - } - - async function saveCategoriesAndOrganisation() { - // delete old selection - if (organisation.id){ - const deleteErrorMessage = await removeOrganisationCategoriesFromProject(projectId, organisation.id, token) - if (deleteErrorMessage !== null) { - setError(`Couldn't delete the existing categories: ${deleteErrorMessage}`) - setState('error') - return - } - } - - if (selectedCategoryIds.size === 0) { - onComplete() - return - } - - // generate new collection - const categoriesArrayToSave:ProjectCategory[] = [] - selectedCategoryIds - .forEach(id => { - if (availableCategoryIds.has(id)) { - categoriesArrayToSave.push({project_id: projectId, category_id: id}) - } - }) - - // save organisation categories (if any) - if (categoriesArrayToSave.length > 0){ - const categoryUrl = `${getBaseUrl()}/category_for_project` - const resp = await fetch(categoryUrl, { - method: 'POST', - body: JSON.stringify(categoriesArrayToSave), - headers: { - ...createJsonHeaders(token) - } - }) - // debugger - if (!resp.ok) { - setError(`Couldn't save categories: ${await resp.text()}`) - setState('error') - } else { - onComplete() - } - }else{ - onComplete() - } - } - - function renderDialogContent(): JSX.Element { - switch (state) { - case 'loading': - case 'saving': - return ( -
- -
- ) - - case 'error': - return ( - - {error} - - ) - - case 'ready': - return ( - <> - {(categories === null || categories.length === 0) - ? - - This community doesn‘t have any categories. - - : - - } - - ) - } - } - - return ( - - Add categories of {organisation.name} - - {renderDialogContent()} - - - - - - - ) -} diff --git a/frontend/components/projects/edit/organisations/ProjectCategoriesDialog.tsx b/frontend/components/projects/edit/organisations/ProjectCategoriesDialog.tsx new file mode 100644 index 000000000..87cac0e1f --- /dev/null +++ b/frontend/components/projects/edit/organisations/ProjectCategoriesDialog.tsx @@ -0,0 +1,60 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {useEffect} from 'react' + +import {EditOrganisation} from '~/types/Organisation' +import CategoriesDialog from '~/components/category/CategoriesDialog' +import useProjectCategories from './useProjectCategories' + +export type OrganisationCategoriesDialogProps = Readonly<{ + projectId: string + organisation: EditOrganisation + onCancel: () => void + onComplete: () => void + edit: boolean +}> + +export default function ProjectCategoriesDialog({ + projectId, organisation, edit, + onCancel, onComplete +}: OrganisationCategoriesDialogProps) { + + const { + categories,selectedIds, + state,error, + saveOrganisationCategories + } = useProjectCategories({ + organisationId:organisation.id, + projectId + }) + + useEffect(()=>{ + // if there are no categories and not an edit "request" + // we call onComplete immediately and don't show the modal + // this "approach" is used to add RSD organisation + // which does not have organisation categories defined + if (state==='ready' && edit===false && categories?.length===0){ + onComplete() + } + },[state,edit,categories,onComplete]) + + return ( + { + // pass onComplete to call when done + saveOrganisationCategories(selected,onComplete) + }} + /> + ) +} diff --git a/frontend/components/projects/edit/organisations/apiProjectOrganisations.ts b/frontend/components/projects/edit/organisations/apiProjectOrganisations.ts index 0030bfa7b..4dca5b478 100644 --- a/frontend/components/projects/edit/organisations/apiProjectOrganisations.ts +++ b/frontend/components/projects/edit/organisations/apiProjectOrganisations.ts @@ -38,11 +38,11 @@ export async function getCategoryListForProject(project_id: string, token?: stri const categories:Set = new Set(data.map((entry: any) => entry.category_id)) return categories } else { - logger(`getCategoriesForSoftwareIds: ${resp.status} [${url}]`, 'error') - throw new Error('Couldn\'t load the categories for this software') + logger(`getCategoryListForProject: ${resp.status} [${url}]`, 'error') + throw new Error('Couldn\'t load the categories for this project') } } catch (e: any) { - logger(`getCategoriesForSoftwareIds: ${e?.message}`, 'error') + logger(`getCategoryListForProject: ${e?.message}`, 'error') throw e } } diff --git a/frontend/components/projects/edit/organisations/index.tsx b/frontend/components/projects/edit/organisations/index.tsx index 0c81d57b0..f71d272cd 100644 --- a/frontend/components/projects/edit/organisations/index.tsx +++ b/frontend/components/projects/edit/organisations/index.tsx @@ -33,7 +33,7 @@ import EditOrganisationModal from '~/components/software/edit/organisations/Edit import useProjectContext from '../useProjectContext' import useParticipatingOrganisations from './useParticipatingOrganisations' import {cfgOrganisations as config} from './config' -import OrganisationProjectCategoriesDialog from './OrganisationProjectCategoriesDialog' +import ProjectCategoriesDialog from './ProjectCategoriesDialog' export default function ProjectOrganisations() { const {token,user} = useSession() @@ -111,7 +111,7 @@ export default function ProjectOrganisations() { categories:{ open: true, organisation: addOrganisation, - autoConfirm: true + edit: false } }) } else { @@ -339,7 +339,7 @@ export default function ProjectOrganisations() { open:true, organisation, // editing categories - autoConfirm: false + edit: true } }) } @@ -399,12 +399,12 @@ export default function ProjectOrganisations() { /> } {modal.categories.open && modal.categories.organisation ? - : null } diff --git a/frontend/components/projects/edit/organisations/useParticipatingOrganisations.ts b/frontend/components/projects/edit/organisations/useParticipatingOrganisations.ts index 792db4a10..d5929fd5b 100644 --- a/frontend/components/projects/edit/organisations/useParticipatingOrganisations.ts +++ b/frontend/components/projects/edit/organisations/useParticipatingOrganisations.ts @@ -1,10 +1,12 @@ // SPDX-FileCopyrightText: 2022 - 2023 Dusan Mijatovic (dv4all) // SPDX-FileCopyrightText: 2022 - 2023 dv4all +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center // // SPDX-License-Identifier: Apache-2.0 import {useEffect, useState} from 'react' -import isMaintainerOfOrganisation from '~/auth/permissions/isMaintainerOfOrganisation' +import isMaintainerOfOrganisation, {canEditOrganisations} from '~/auth/permissions/isMaintainerOfOrganisation' import {EditOrganisation} from '~/types/Organisation' import {getOrganisationsOfProject} from '~/utils/getProjects' @@ -31,37 +33,11 @@ export function useParticipatingOrganisations({project, token, account}: UsePart frontend: true, roles:['participating','hosting'] }) - // collect isMaintainerRequests - const promises:Promise[] = [] - // prepare organisation list - const orgList = resp.map((item, pos) => { - // save isMaintainer request - promises.push(isMaintainerOfOrganisation({ - organisation: item.id, - account, - token - })) - // extract only needed props - const organisation: EditOrganisation = { - ...item, - // additional props for edit type - position: pos + 1, - logo_b64: null, - logo_mime_type: null, - source: 'RSD' as 'RSD', - status: item.status, - // false by default - canEdit: false, - // description: null - } - return organisation - }) - // run all isMaintainer requests in parallel - const isMaintainer = await Promise.all(promises) - const organisations = orgList.map((item, pos) => { - // update canEdit based on isMaintainer requests - if (isMaintainer[pos]) item.canEdit = isMaintainer[pos] - return item + // convert to EditOrganisation type and add canEdit flag + const organisations = await canEditOrganisations({ + organisations: resp, + account, + token }) if (abort === true) return // update organisation list @@ -71,7 +47,7 @@ export function useParticipatingOrganisations({project, token, account}: UsePart id: project, account }) - // upadate loading state + // update loading state setLoading(false) } if (project && token && account && diff --git a/frontend/components/projects/edit/organisations/useProjectCategories.tsx b/frontend/components/projects/edit/organisations/useProjectCategories.tsx new file mode 100644 index 000000000..9fc69a0af --- /dev/null +++ b/frontend/components/projects/edit/organisations/useProjectCategories.tsx @@ -0,0 +1,132 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {useEffect, useState} from 'react' +import {useSession} from '~/auth' +import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' +import {CategoryEntry} from '~/types/Category' +import {TreeNode} from '~/types/TreeNode' +import {loadCategoryRoots} from '~/components/category/apiCategories' +import {getCategoryListForProject, removeOrganisationCategoriesFromProject} from './apiProjectOrganisations' + +type UseProjectOrganisationCategoriesProps={ + organisationId:string|null, + projectId:string +} + +type ProjectCategory = { + project_id: string, + category_id: string +} + +export default function useProjectCategories({ + organisationId,projectId +}:UseProjectOrganisationCategoriesProps){ + const {token} = useSession() + const [categories, setCategories] = useState[] | null>(null) + const [error, setError] = useState(null) + const [state, setState] = useState<'loading' | 'error' | 'ready' | 'saving'>('loading') + const [selectedIds, setSelectedIds] = useState>(new Set()) + const [availableIds, setAvailableIds] = useState>(new Set()) + + // console.group('useProjectOrganisationCategories') + // console.log('state...',state) + // console.log('categories...', categories) + // console.groupEnd() + + useEffect(() => { + let abort = false + if (organisationId && projectId && token){ + Promise.all([ + loadCategoryRoots({organisation:organisationId}), + getCategoryListForProject(projectId, token) + ]) + .then(([roots,selected]) => { + // filter top level categories for projects (only top level items have this flag) + const categories = roots.filter(item=>item.getValue().allow_projects) + // collect tree leaves ids (end nodes) + const availableIds = new Set() + categories.forEach(root=>{ + root.forEach(node=>{ + if (node.children().length === 0) { + availableIds.add(node.getValue().id) + } + }) + }) + if (abort) return + // debugger + // save values + setAvailableIds(availableIds) + setCategories(categories) + setSelectedIds(selected) + }) + .catch(e => { + if (abort) return + setError(`Couldn't load categories: ${e}`) + setState('error') + }) + .finally(()=>{ + if (abort) return + setState('ready') + }) + } + return ()=>{abort=true} + }, [organisationId,projectId,token]) + + async function saveOrganisationCategories(selected:Set,onComplete:()=>void) { + // delete old selection + if (organisationId){ + const deleteErrorMessage = await removeOrganisationCategoriesFromProject(projectId, organisationId, token) + if (deleteErrorMessage !== null) { + setError(`Failed to save categories: ${deleteErrorMessage}`) + setState('error') + return + } + } + + if (selected.size === 0) { + onComplete() + return + } + + // generate new collection + const categoriesArrayToSave:ProjectCategory[] = [] + selected.forEach(id => { + if (availableIds.has(id)) { + categoriesArrayToSave.push({project_id: projectId, category_id: id}) + } + }) + + // save organisation categories (if any) + if (categoriesArrayToSave.length > 0){ + const categoryUrl = `${getBaseUrl()}/category_for_project` + const resp = await fetch(categoryUrl, { + method: 'POST', + body: JSON.stringify(categoriesArrayToSave), + headers: { + ...createJsonHeaders(token) + } + }) + + if (resp.ok) { + // signal we are done + onComplete() + } else { + setError(`Failed to save categories: ${await resp.text()}`) + setState('error') + } + }else{ + onComplete() + } + } + + return { + categories, + selectedIds, + error, + state, + saveOrganisationCategories + } +} diff --git a/frontend/components/software/edit/organisations/EditSoftwareOrganisationsIndex.test.tsx b/frontend/components/software/edit/organisations/EditSoftwareOrganisationsIndex.test.tsx index 64c94e874..7f49bf017 100644 --- a/frontend/components/software/edit/organisations/EditSoftwareOrganisationsIndex.test.tsx +++ b/frontend/components/software/edit/organisations/EditSoftwareOrganisationsIndex.test.tsx @@ -37,7 +37,8 @@ const mockIsMaintainerOfOrganisation = jest.fn(props => Promise.resolve(false)) jest.mock('~/auth/permissions/isMaintainerOfOrganisation', () => ({ __esModule: true, default: jest.fn(props=>mockIsMaintainerOfOrganisation(props)), - isMaintainerOfOrganisation: jest.fn(props=>mockIsMaintainerOfOrganisation(props)) + isMaintainerOfOrganisation: jest.fn(props=>mockIsMaintainerOfOrganisation(props)), + canEditOrganisations: jest.fn(({organisations,...other})=>organisations) })) // MOCK organisationForSoftware methods @@ -290,51 +291,6 @@ describe('frontend/components/software/edit/organisations/index.tsx', () => { }) - it('maintainer of organisation can edit organisation', async () => { - // required software id - softwareState.software.id = 'test-software-id' - // return list of organisations - mockGetOrganisationsForSoftware.mockResolvedValueOnce(organisationsOfSoftware) - // mock is Maintainer of first organisation - mockIsMaintainerOfOrganisation.mockResolvedValueOnce(true) - mockIsMaintainerOfOrganisation.mockResolvedValueOnce(false) - - render( - - - - - - ) - - // wait for loader to be removed - await waitForElementToBeRemoved(screen.getByRole('progressbar')) - - // render first project organisation with edit button - const editBtns = screen.getAllByTestId('EditIcon') - expect(editBtns.length).toEqual(1) - - // click on edit button - fireEvent.click(editBtns[0]) - - const modal = await screen.findByRole('dialog') - - // validate organisation name - const name = within(modal).getByRole('textbox', { - name: config.name.label - }) - expect(name).toHaveValue(organisationsOfSoftware[0].name) - - // cancel - const cancelBtn = within(modal).getByRole('button', { - name: 'Cancel' - }) - fireEvent.click(cancelBtn) - - // modal should not be visible - expect(modal).not.toBeVisible() - }) - it('can remove organisation from software', async () => { // required software id softwareState.software.id = 'test-software-id' @@ -395,4 +351,44 @@ describe('frontend/components/software/edit/organisations/index.tsx', () => { expect(remained.length).toEqual(organisationsOfSoftware.length-1) }) }) + + it('shows organisation categories modal',async()=>{ + // required software id + softwareState.software.id = 'test-software-id' + // return list of organisations + mockGetOrganisationsForSoftware.mockResolvedValueOnce(organisationsOfSoftware) + + render( + + + + + + ) + + // wait for loader to be removed + await waitForElementToBeRemoved(screen.getByRole('progressbar')) + + // renders project organisations + const organisations = screen.getAllByTestId('organisation-list-item') + expect(organisations.length).toEqual(organisationsOfSoftware.length) + + // get edit categories button from first organisation + const categoriesBtn = within(organisations[0]).getByRole('button', { + name: 'edit categories' + }) + // click edit categories + fireEvent.click(categoriesBtn) + + // get organisation categories modal + const modal = screen.getByRole('dialog') + + // close modal + const cancelBtn = within(modal).getByRole('button', { + name: 'Cancel' + }) + fireEvent.click(cancelBtn) + // confirm modal closed + expect(modal).not.toBeInTheDocument() + }) }) diff --git a/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx b/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx deleted file mode 100644 index 39db1b535..000000000 --- a/frontend/components/software/edit/organisations/OrganisationSoftwareCategoriesDialog.tsx +++ /dev/null @@ -1,259 +0,0 @@ -// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) -// SPDX-FileCopyrightText: 2024 Netherlands eScience Center -// -// SPDX-License-Identifier: Apache-2.0 - -import {useEffect, useState} from 'react' -import Dialog from '@mui/material/Dialog' -import DialogContent from '@mui/material/DialogContent' -import DialogTitle from '@mui/material/DialogTitle' -import Alert from '@mui/material/Alert' -import DialogActions from '@mui/material/DialogActions' -import Button from '@mui/material/Button' -import useMediaQuery from '@mui/material/useMediaQuery' -import SaveIcon from '@mui/icons-material/Save' - -import {useSession} from '~/auth' -import {TreeNode} from '~/types/TreeNode' -import {CategoryEntry} from '~/types/Category' -import {CategoryForSoftwareIds} from '~/types/SoftwareTypes' -import {EditOrganisation} from '~/types/Organisation' -import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' -import {getCategoryForSoftwareIds} from '~/utils/getSoftware' -import ContentLoader from '~/components/layout/ContentLoader' -import {loadCategoryRoots} from '~/components/category/apiCategories' -import {RecursivelyGenerateItems} from '~/components/software/TreeSelect' -import {removeOrganisationCategoriesFromSoftware} from './apiSoftwareOrganisations' - -export type OrganisationCategoriesDialogProps = Readonly<{ - softwareId: string - organisation: EditOrganisation - onCancel: () => void - onComplete: () => void - autoConfirm: boolean -}> - -export default function OrganisationSoftwareCategoriesDialog({ - softwareId, - organisation, - onCancel, - onComplete, - autoConfirm -}: OrganisationCategoriesDialogProps) { - const {token} = useSession() - const smallScreen = useMediaQuery('(max-width:600px)') - const [categories, setCategories] = useState[] | null>(null) - const [error, setError] = useState(null) - const [state, setState] = useState<'loading' | 'error' | 'ready' | 'saving'>('loading') - const [selectedCategoryIds, setSelectedCategoryIds] = useState(new Set()) - const [availableCategoryIds, setAvailableCategoryIds] = useState(new Set()) - - useEffect(() => { - let abort = false - if (organisation && softwareId && token){ - Promise.all([ - loadCategoryRoots({organisation:organisation.id}), - getCategoryForSoftwareIds(softwareId, token) - ]) - .then(([roots,selected]) => { - // filter top level categories for software (only top level items have this flag) - const categories = roots.filter(item=>item.getValue().allow_software) - // if there are no categories we don't show the modal - if (categories.length === 0 && autoConfirm) { - onComplete() - return - } - // collect tree leaves ids (end nodes) - const availableIds = new Set() - categories.forEach(root=>{ - root.forEach(node=>{ - if (node.children().length === 0) { - availableIds.add(node.getValue().id) - } - }) - }) - if (abort) return - // debugger - // save values - setAvailableCategoryIds(availableIds) - setCategories(categories) - setSelectedCategoryIds(selected) - }) - .catch(e => { - if (abort) return - setError(`Couldn't load categories: ${e}`) - setState('error') - }) - .finally(()=>{ - if (abort) return - setState('ready') - }) - } - return ()=>{abort=true} - }, [organisation, softwareId, autoConfirm, token, onComplete]) - - function isSelected(node: TreeNode) { - const val = node.getValue() - return selectedCategoryIds.has(val.id) - } - - function textExtractor(value: CategoryEntry) { - return value.name - } - - function keyExtractor(value: CategoryEntry) { - return value.id - } - - function onSelect(node: TreeNode) { - const val = node.getValue() - if (selectedCategoryIds.has(val.id)) { - selectedCategoryIds.delete(val.id) - } else { - selectedCategoryIds.add(val.id) - } - - setSelectedCategoryIds(new Set(selectedCategoryIds)) - } - - function isCancelEnabled() { - return state === 'saving' - } - - function isSaveDisabled(){ - return categories === null || categories.length === 0 || state !== 'ready' - } - - async function saveCategoriesAndOrganisation() { - // delete old selection - if (organisation.id){ - const deleteErrorMessage = await removeOrganisationCategoriesFromSoftware(softwareId, organisation.id, token) - if (deleteErrorMessage !== null) { - setError(`Couldn't delete the existing categories: ${deleteErrorMessage}`) - setState('error') - return - } - } - - if (selectedCategoryIds.size === 0) { - onComplete() - return - } - - // generate new collection - const categoriesArrayToSave: {software_id: string, category_id: string}[] = [] - selectedCategoryIds - .forEach(id => { - if (availableCategoryIds.has(id)) { - categoriesArrayToSave.push({software_id: softwareId, category_id: id}) - } - }) - - // save organisation categories (if any) - if (categoriesArrayToSave.length > 0){ - const categoryUrl = `${getBaseUrl()}/category_for_software` - const resp = await fetch(categoryUrl, { - method: 'POST', - body: JSON.stringify(categoriesArrayToSave), - headers: { - ...createJsonHeaders(token) - } - }) - // debugger - if (!resp.ok) { - setError(`Couldn't save categories: ${await resp.text()}`) - setState('error') - } else { - onComplete() - } - }else{ - onComplete() - } - } - - function renderDialogContent(): JSX.Element { - switch (state) { - case 'loading': - case 'saving': - return ( -
- -
- ) - - case 'error': - return ( - - {error} - - ) - - case 'ready': - return ( - <> - {(categories === null || categories.length === 0) - ? - - This community doesn‘t have any categories. - - : - - } - - ) - } - } - - return ( - - Add categories of {organisation.name} - - {renderDialogContent()} - - - - - - - ) -} diff --git a/frontend/components/software/edit/organisations/SoftwareCategoriesDialog.tsx b/frontend/components/software/edit/organisations/SoftwareCategoriesDialog.tsx new file mode 100644 index 000000000..3c93b2643 --- /dev/null +++ b/frontend/components/software/edit/organisations/SoftwareCategoriesDialog.tsx @@ -0,0 +1,64 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {useEffect} from 'react' + +import {EditOrganisation} from '~/types/Organisation' +import CategoriesDialog from '~/components/category/CategoriesDialog' +import useSoftwareCategories from './useSoftwareCategories' + +export type OrganisationCategoriesDialogProps = Readonly<{ + softwareId: string + organisation: EditOrganisation + onCancel: () => void + onComplete: () => void + edit: boolean +}> + +export default function SoftwareCategoriesDialog({ + softwareId, + organisation, + onCancel, + onComplete, + edit +}: OrganisationCategoriesDialogProps) { + + const { + categories,selectedCategoryIds, + state,error, + saveOrganisationCategories + } = useSoftwareCategories({ + organisationId:organisation.id, + softwareId + }) + + useEffect(()=>{ + // if there are no categories and not an edit "request" + // we call onComplete immediately and don't show the modal + // this "approach" is used to add RSD organisation + // which does not have organisation categories defined + if (state==='ready' && edit===false && categories?.length===0){ + onComplete() + } + },[state,edit,categories,onComplete]) + + return ( + { + // pass onComplete to call when done + saveOrganisationCategories(selected,onComplete) + }} + /> + ) + +} diff --git a/frontend/components/software/edit/organisations/apiSoftwareOrganisations.ts b/frontend/components/software/edit/organisations/apiSoftwareOrganisations.ts index 9058b5399..ef43f763f 100644 --- a/frontend/components/software/edit/organisations/apiSoftwareOrganisations.ts +++ b/frontend/components/software/edit/organisations/apiSoftwareOrganisations.ts @@ -4,9 +4,8 @@ // SPDX-License-Identifier: Apache-2.0 import {getOrganisationsForSoftware} from '~/utils/editOrganisation' -import isMaintainerOfOrganisation from '~/auth/permissions/isMaintainerOfOrganisation' -import {EditOrganisation} from '~/types/Organisation' import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' +import {canEditOrganisations} from '~/auth/permissions/isMaintainerOfOrganisation' export type UseParticipatingOrganisationsProps = { software: string, @@ -19,38 +18,13 @@ export async function getParticipatingOrganisationsForSoftware({software, token, software, token }) - // collect isMaintainerRequests - const promises: Promise[] = [] - // prepare organisation list - const orgList = resp.map((item, pos) => { - // save isMaintainer request - promises.push(isMaintainerOfOrganisation({ - organisation: item.id, - account, - token - })) - // extract only needed props - const organisation: EditOrganisation = { - ...item, - // additional props for edit type - position: pos + 1, - logo_b64: null, - logo_mime_type: null, - source: 'RSD' as 'RSD', - status: item.status, - // false by default - canEdit: false, - // description: null - } - return organisation - }) - // run all isMaintainer requests in parallel - const isMaintainer = await Promise.all(promises) - const organisations = orgList.map((item, pos) => { - // update canEdit based on isMaintainer requests - if (isMaintainer[pos]) item.canEdit = isMaintainer[pos] - return item + // convert to EditOrganisation type and add canEdit flag + const organisations = await canEditOrganisations({ + organisations: resp, + account, + token }) + // debugger return organisations } diff --git a/frontend/components/software/edit/organisations/index.tsx b/frontend/components/software/edit/organisations/index.tsx index 0be7ae0cd..b4b2e26e6 100644 --- a/frontend/components/software/edit/organisations/index.tsx +++ b/frontend/components/software/edit/organisations/index.tsx @@ -39,7 +39,7 @@ import { addOrganisationToSoftware, createOrganisationAndAddToSoftware, deleteOrganisationFromSoftware, patchOrganisationPositions } from './organisationForSoftware' -import OrganisationSoftwareCategoriesDialog from './OrganisationSoftwareCategoriesDialog' +import SoftwareCategoriesDialog from './SoftwareCategoriesDialog' export type OrganisationModalStates = ModalStates & { categories: T @@ -47,9 +47,8 @@ export type OrganisationModalStates = ModalStates & { export type EditOrganisationModalProps = ModalProps & { organisation?: EditOrganisation - // categories modal flag - // true -> - autoConfirm?: boolean + // edit categories flag + edit?: boolean } export default function SoftwareOrganisations() { @@ -107,7 +106,9 @@ export default function SoftwareOrganisations() { delete: { open:false }, - categories:{open:false} + categories:{ + open:false + } }) } else if (item.source === 'RSD') { // we add organisation directly @@ -132,7 +133,7 @@ export default function SoftwareOrganisations() { categories:{ open: true, organisation: addOrganisation, - autoConfirm: true + edit: false } }) } else { @@ -158,7 +159,9 @@ export default function SoftwareOrganisations() { delete: { open:false }, - categories:{open:false} + categories:{ + open:false + } }) } @@ -174,7 +177,9 @@ export default function SoftwareOrganisations() { delete: { open:false }, - categories:{open:false} + categories:{ + open:false + } }) } } @@ -192,7 +197,9 @@ export default function SoftwareOrganisations() { pos, displayName }, - categories:{open:false} + categories:{ + open:false + } }) } } @@ -357,7 +364,7 @@ export default function SoftwareOrganisations() { open:true, organisation, // editing categories - autoConfirm: false + edit: true } }) } @@ -411,12 +418,12 @@ export default function SoftwareOrganisations() { /> } {modal.categories.open===true && modal.categories.organisation ? - : null } diff --git a/frontend/components/software/edit/organisations/useSoftwareCategories.tsx b/frontend/components/software/edit/organisations/useSoftwareCategories.tsx new file mode 100644 index 000000000..e484c1f11 --- /dev/null +++ b/frontend/components/software/edit/organisations/useSoftwareCategories.tsx @@ -0,0 +1,130 @@ +// SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +// SPDX-FileCopyrightText: 2024 Netherlands eScience Center +// +// SPDX-License-Identifier: Apache-2.0 + +import {useEffect, useState} from 'react' + +import {useSession} from '~/auth' +import {CategoryEntry} from '~/types/Category' +import {TreeNode} from '~/types/TreeNode' +import {getCategoryForSoftwareIds} from '~/utils/getSoftware' +import {createJsonHeaders, getBaseUrl} from '~/utils/fetchHelpers' +import {loadCategoryRoots} from '~/components/category/apiCategories' +import {removeOrganisationCategoriesFromSoftware} from './apiSoftwareOrganisations' + +type UseSoftwareOrganisationCategoriesProps={ + organisationId:string|null, + softwareId:string +} + +export default function useSoftwareCategories({ + organisationId,softwareId +}:UseSoftwareOrganisationCategoriesProps){ + const {token} = useSession() + const [categories, setCategories] = useState[] | null>(null) + const [error, setError] = useState(null) + const [state, setState] = useState<'loading' | 'error' | 'ready' | 'saving'>('loading') + const [selectedCategoryIds, setSelectedCategoryIds] = useState>(new Set()) + const [availableCategoryIds, setAvailableCategoryIds] = useState>(new Set()) + + // console.group('useSoftwareCategories') + // console.log('state...',state) + // console.log('categories...', categories) + // console.groupEnd() + + useEffect(() => { + let abort = false + if (organisationId && softwareId && token){ + Promise.all([ + loadCategoryRoots({organisation:organisationId}), + getCategoryForSoftwareIds(softwareId, token) + ]) + .then(([roots,selected]) => { + // filter top level categories for software (only top level items have this flag) + const categories = roots.filter(item=>item.getValue().allow_software) + // collect tree leaves ids (end nodes) + const availableIds = new Set() + categories.forEach(root=>{ + root.forEach(node=>{ + if (node.children().length === 0) { + availableIds.add(node.getValue().id) + } + }) + }) + if (abort) return + // debugger + // save values + setAvailableCategoryIds(availableIds) + setCategories(categories) + setSelectedCategoryIds(selected) + }) + .catch(e => { + if (abort) return + setError(`Couldn't load categories: ${e}`) + setState('error') + }) + .finally(()=>{ + if (abort) return + setState('ready') + }) + } + return ()=>{abort=true} + }, [organisationId, softwareId, token]) + + + async function saveOrganisationCategories(selected:Set,onComplete:()=>void) { + // delete old selection + if (organisationId){ + const deleteErrorMessage = await removeOrganisationCategoriesFromSoftware(softwareId, organisationId, token) + if (deleteErrorMessage !== null) { + setError(`Failed to save categories: ${deleteErrorMessage}`) + setState('error') + return + } + } + + if (selectedCategoryIds.size === 0) { + onComplete() + return + } + + // generate new collection + const categoriesArrayToSave: {software_id: string, category_id: string}[] = [] + selected.forEach(id => { + if (availableCategoryIds.has(id)) { + categoriesArrayToSave.push({software_id: softwareId, category_id: id}) + } + }) + + // save organisation categories (if any) + if (categoriesArrayToSave.length > 0){ + const categoryUrl = `${getBaseUrl()}/category_for_software` + const resp = await fetch(categoryUrl, { + method: 'POST', + body: JSON.stringify(categoriesArrayToSave), + headers: { + ...createJsonHeaders(token) + } + }) + // debugger + if (resp.ok) { + // signal we are done + onComplete() + } else { + setError(`Failed to save categories: ${await resp.text()}`) + setState('error') + } + }else{ + onComplete() + } + } + + return { + categories, + selectedCategoryIds, + error, + state, + saveOrganisationCategories + } +} From b175a60978e775ad36e70966a33b56eb8b15dbba Mon Sep 17 00:00:00 2001 From: "Dusan Mijatovic (PC2020)" Date: Tue, 15 Oct 2024 18:14:30 +0200 Subject: [PATCH 5/9] chore: remove communites from default settings.json --- frontend/public/data/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/data/settings.json b/frontend/public/data/settings.json index 6b08a57fc..c4083b2bb 100644 --- a/frontend/public/data/settings.json +++ b/frontend/public/data/settings.json @@ -18,7 +18,7 @@ "limit": 5, "description": null }, - "modules":["software","projects","organisations","communities"] + "modules":["software","projects","organisations"] }, "links": [ { From 21e1b9dde2e308529fbd1f9c4739d611fc1091e2 Mon Sep 17 00:00:00 2001 From: Ewan Cahen Date: Wed, 16 Oct 2024 13:45:17 +0200 Subject: [PATCH 6/9] chore: adapt row level security and triggers for categories --- database/014-create-keyword-and-category.sql | 9 ++++++ database/020-row-level-security.sql | 30 +++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/database/014-create-keyword-and-category.sql b/database/014-create-keyword-and-category.sql index 5bf1b1db3..e9d3e971e 100644 --- a/database/014-create-keyword-and-category.sql +++ b/database/014-create-keyword-and-category.sql @@ -122,6 +122,9 @@ BEGIN IF NEW.parent IS NOT NULL AND (SELECT community FROM category WHERE id = NEW.parent) IS DISTINCT FROM NEW.community THEN RAISE EXCEPTION USING MESSAGE = 'The community must be the same as of its parent.'; END IF; + IF NEW.parent IS NOT NULL AND (SELECT organisation FROM category WHERE id = NEW.parent) IS DISTINCT FROM NEW.organisation THEN + RAISE EXCEPTION USING MESSAGE = 'The organisation must be the same as of its parent.'; + END IF; NEW.id = gen_random_uuid(); RETURN NEW; END @@ -147,6 +150,12 @@ BEGIN IF NEW.parent IS NOT NULL AND (SELECT community FROM category WHERE id = NEW.parent) IS DISTINCT FROM NEW.community THEN RAISE EXCEPTION USING MESSAGE = 'The community must be the same as of its parent.'; END IF; + IF NEW.organisation IS DISTINCT FROM OLD.organisation THEN + RAISE EXCEPTION USING MESSAGE = 'The organisation this category belongs to may not be changed.'; + END IF; + IF NEW.parent IS NOT NULL AND (SELECT organisation FROM category WHERE id = NEW.parent) IS DISTINCT FROM NEW.organisation THEN + RAISE EXCEPTION USING MESSAGE = 'The organisation must be the same as of its parent.'; + END IF; RETURN NEW; END $$; diff --git a/database/020-row-level-security.sql b/database/020-row-level-security.sql index 4a2d1f002..e1cb811ff 100644 --- a/database/020-row-level-security.sql +++ b/database/020-row-level-security.sql @@ -279,7 +279,6 @@ CREATE POLICY admin_all_rights ON testimonial TO rsd_admin -- categories - ALTER TABLE category ENABLE ROW LEVEL SECURITY; -- allow everybody to read @@ -290,7 +289,11 @@ CREATE POLICY anyone_can_read ON category CREATE POLICY maintainer_all_rights ON category TO rsd_user - USING (community IN (SELECT * FROM communities_of_current_maintainer())); + USING ( + (community IS NOT NULL AND community IN (SELECT * FROM communities_of_current_maintainer())) + OR + (organisation IS NOT NULL AND organisation IN (SELECT * FROM organisations_of_current_maintainer())) + ); -- allow admins to have full read/write access CREATE POLICY admin_all_rights ON category @@ -299,14 +302,13 @@ CREATE POLICY admin_all_rights ON category -- categories for software - ALTER TABLE category_for_software ENABLE ROW LEVEL SECURITY; -- allow everybody to read metadata of published software CREATE POLICY anyone_can_read ON category_for_software FOR SELECT TO rsd_web_anon, rsd_user - USING (EXISTS(SELECT 1 FROM software WHERE id = software_id)); + USING (software_id IN (SELECT id FROM software)); -- allow software maintainers to have read/write access to their software CREATE POLICY maintainer_all_rights ON category_for_software @@ -319,6 +321,26 @@ CREATE POLICY admin_all_rights ON category_for_software USING (TRUE); +-- categories for project +ALTER TABLE category_for_project ENABLE ROW LEVEL SECURITY; + +-- allow everybody to read metadata of published projects +CREATE POLICY anyone_can_read ON category_for_project + FOR SELECT + TO rsd_web_anon, rsd_user + USING (project_id IN (SELECT id FROM project)); + +-- allow software maintainers to have read/write access to their project +CREATE POLICY maintainer_all_rights ON category_for_project + TO rsd_user + USING (project_id IN (SELECT * FROM projects_of_current_maintainer())); + +-- allow admins to have full read/write access +CREATE POLICY admin_all_rights ON category_for_project + TO rsd_admin + USING (TRUE); + + -- keywords ALTER TABLE keyword ENABLE ROW LEVEL SECURITY; From e32a7ec973409a82125c0c0c4aa0b05f310891bf Mon Sep 17 00:00:00 2001 From: "Dusan Mijatovic (PC2020)" Date: Thu, 17 Oct 2024 11:27:42 +0200 Subject: [PATCH 7/9] fix: categories modal hide software/project switches for children --- .../components/category/CategoryEditForm.tsx | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/frontend/components/category/CategoryEditForm.tsx b/frontend/components/category/CategoryEditForm.tsx index 5f43eb193..d649a9ccc 100644 --- a/frontend/components/category/CategoryEditForm.tsx +++ b/frontend/components/category/CategoryEditForm.tsx @@ -36,7 +36,8 @@ export default function CategoryEditForm({ mode: 'onChange' }) - const [parent] = watch(['parent']) + // use id of current item as parentId of new (child) item + const parentId = createNew ? data?.id : data?.parent // console.group('CategoryEditForm') // console.log('createNew...',createNew) @@ -44,20 +45,27 @@ export default function CategoryEditForm({ // console.log('disableSave...',disableSave) // console.log('community...',community) // console.log('organisation...',organisation) - // console.log('parent...',parent) + // console.log('parentId...',parentId) // console.groupEnd() - function onSubmit(formData: CategoryEntry){ setDisableSave(true) // debugger if (createNew) { - createNewCategory(formData) + createNewCategory(prepareDataForSave(formData)) } else { - updateCategory(formData) + updateCategory(prepareDataForSave(formData)) } } + function prepareDataForSave(formData: CategoryEntry){ + // fix provenance_iri empty value + if (formData.provenance_iri===''){ + formData.provenance_iri = null + } + return formData + } + async function createNewCategory(formData: CategoryEntry) { const resp = await fetch('/api/v1/category', { method: 'POST', @@ -127,11 +135,11 @@ export default function CategoryEditForm({ {/* Different hidden values when creating new item.*/} {createNew ? // use id of current item as parent for new (child) item - + : <> - - + + } @@ -174,8 +182,8 @@ export default function CategoryEditForm({ label: 'Provenance identifier', defaultValue: createNew ? undefined : (data?.provenance_iri ?? undefined), helperTextCnt: `${watch('provenance_iri')?.length ?? 0}/250`, - helperTextMessage: `${formState.errors?.name?.message ?? 'Optional Internationalized Resource Identifier for this category'}`, - error: formState.errors?.name?.message !== undefined + helperTextMessage: `${formState.errors?.provenance_iri?.message ?? 'Optional Internationalized Resource Identifier for this category'}`, + error: formState.errors?.provenance_iri?.message !== undefined }} /> @@ -184,21 +192,19 @@ export default function CategoryEditForm({ We show software/project switch only at top level (root nodes) */} { - organisation && !parent ? + organisation && !parentId ?
: From 6ee1b570df2874d264e575aebbed6e2e567c35da Mon Sep 17 00:00:00 2001 From: "Dusan Mijatovic (PC2020)" Date: Thu, 17 Oct 2024 14:08:24 +0200 Subject: [PATCH 8/9] docs: update user documentation with custom organisation categories --- documentation/assets/screenshots-template.xcf | Bin 4761307 -> 5272325 bytes .../docs/01-users/05-adding-software.md | 44 ++++++---- .../docs/01-users/07-adding-projects.md | 15 +++- .../01-users/07-adding-projects.md.license | 2 +- .../docs/01-users/09-organisation.md | 79 ++++++++++-------- .../docs/01-users/09-organisation.md.license | 2 +- .../01-users/img/organisation-categories.webp | Bin 0 -> 47818 bytes .../img/organisation-categories.webp.license | 4 + .../01-users/img/organisation-settings.webp | Bin 50450 -> 43200 bytes .../img/organisation-settings.webp.license | 4 +- 10 files changed, 93 insertions(+), 57 deletions(-) create mode 100644 documentation/docs/01-users/img/organisation-categories.webp create mode 100644 documentation/docs/01-users/img/organisation-categories.webp.license diff --git a/documentation/assets/screenshots-template.xcf b/documentation/assets/screenshots-template.xcf index 835d93a225947bfb5eadaec372874b055b95a5c6..e391069e1695330e3a060504e414e57f11977afb 100644 GIT binary patch delta 549274 zcmc$H2V9MP|NrN#7A1v3Sq+k=LWOJ*Wi}ga(G*I1@4ctS zIj2zlKj&P>&3!-5@ArS6`*%Oj?e*%s&-Z(M-`DjW@6YEuucI{mF7;eP0@ZsFFDCKO0TP}0B{}hc44>uWrFt^#^@T+5>3p=| zV*nqENW3h;$5niEyeB95+P(Jc=e1)Ix#z`{%Ha{bgl4SU?GKp^{ zkod8W#C(26%A3h><#;|4d_tujKf;iYq?(~}4?ld2kM1P4Tp_Xh2p=z!$Pp#++hr1m zvUy06R3K4`tYM1mYBEg7T9IF5_wkW58;Yz4KYW{y5qx~d$8 z(SOYkHOaPxJUqHSv484d<2Or`6V-YM21btwx(=yA;Y${B<|)vz;QbncFrL2 z)JGC81e56TfsaijdW!II1|sT@;%UT>ILJpIK0fDT0Ut>*QGD{qu~ z{2F?aPsYda?;po+k~mUZl(-Y5{Zr!ZkO|`w_{c9|JcA6!Pvs-ODdI^{QsVhdl}x%q zN?IkEF585}!d4P1R+HG;Lt=Y5iR=N={wYJGy;4QV98)F9Dxyk`<0Yg@lJ-rN)a8d) z^3j5iyZLyOk8UK6;-j=F8I~qJAXSFU77YU$t z#*h(x?mVOkkZnkl*hPlNijX*w>_li27x2UT`FM+useB~Ols1XX7;Vx9GJZ-3iAn+_ zs&K`L`lD%*C8udlATMaD@^LBC1iN55s9Y!44O{ihc)>~wmr>s z9Y0KJg=T6`+CRSUN`COa8g%Ske##gmT#e2gTqHJ-%wEE2yokl3Bb#~eP^@Uff3 z9x5Lt_&9}+nmi-e~hkM=yo4?=(g-*r|k6rTf}g%69XYOBi;cTiVE<=R zh9FZ644 zqQZB|wDE#;7!a4EFM{X9*!j`x`@6;wpyF#75^4a3zC-uM|KMh<&h>!BaT$@% zb9~3b;mQ|*Q7=Y;VtUTwXQh`x@NjwTqcN!Th|FRKu!UIQ(=iBi0SQnkEQMvua9n zYrnR6fuw(~J(KC&Vh)};Zky*&VX)>tmD%N%?g$`f?C4hKDPmZ?1Izq46NW-32tx0y znvkPTg>gVpNbI2H_GIC}!6WNq>@|S8Dq3#yr`>|KPb0EF)N_fpINZ(mh9MsjLFk!P z>wx~>zHt{!eD-NFRe5mQa4K+S+dODdhT14as&e-fhE{%#`HV@~UR*BLVsbRp*$6>4 z)-b??kC_vMFXS4H5Z-Wk3Vo;Lm=Ts=PC-Q0Oi|I5hh%1^J_M12&Ag`~)1`7_^k^QF ziFw%B;!0J2k#_wmQ5d5L7qV{OjxQMplafAOyPEb=VBF2j8<%4`@u4+X((m(M#jO*D z0j1Cl*s9vWgfOUw#V0+`!@Hh|PmI)|Li_Z`GnJF5iO?~a6CMHvdf%EHU^(b6;l z;H+zOn4-8es3Tr@gnT__jjEafUF%wu@Ntuw}Z{ArgtIZPE{30I8H4IgW=vomjod`P-@QG zEEw&1Yx>H9CmOJ@=>!8>CV7z;Lw1*IZiYIf|KB(zs_kz^m+KL_(4pk4%U3 zs6>F=hak&JiHexC;^T*imnAqxn30hc`KIJN_E z6y$`1Y3A_Uw2DFL=%;OzPg_cz+2scQ7Z4Pwje~&!?^i(EC(R z%l($RQKM-y1HOpfTqwJ;9cj3HM>$k>2xr^Vm61jSR@322^_`!*3DIGyRON4qRA{tk z09*8?$f$c=Tp|_v%rf0%geM(Yz<|!c8jz7&^nrz2LfnG3ucktMNXjya5o>%TAu3IM zxPou2ps1fuXjw0kvuV)pmKS_Es@e#-L7jI)pVk)G(s6As2P?RPOJ4B#iJxB$R{8Xb z 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%0AF>;wB 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 UQNiv|9(;^n&V| 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 z z9$z)24~#>-Dr1pl1P8gcOwZA3O-fVSq&W&ASTP5DI-F9}Vp(Cr*1@ zT*e*h(z-EhJPgR()KstGh&7HV&m|8_0)3;#z0a!ytujvs1l@pgFxILaTXR}zm2fFD z4<#0BI4|>3Bx;@0x|;_NO%-vlxSks7kLt*K#F9?yVX7y8msnNX3qWj0L+XXBX&e^T zNaY;aZp1r$e@h_Nt?bqW*19}L`;Iz^b!T%|pk9`a?bevMLO2v-@1e;Os7O52*dzy9 z9IaCA=m5(!h*BUFNsY3VaURlzBAMwRnw+4%P!zUoD(&2euI9;6JQ%Hyb2S<=5xxWi zfKx{20s=spKoo$On8S(8`4BDv4#f$&JHG@f#QUWKO%4Dck)91X9AZv=pfhK6AUoVQ zYaksMWZK|1iYNU4^8q-{SWe{uoEXYMKolq)1ScYJJa{op{x*!(=AF~015oH?i3yNh zm|@UhicZLAY{sPAjoojFiVO@^(tFMNSTtoV-@Lwk?RI%$yt=V`-8X!)K4cD0m)5?% zp96(IH{QSBG2SS%7UX-uLGqHJa$YcK9Il`nTSJC_aU6Ol!!CONEE~M&pO?Bcja@`R%OD+JTM#Y()&6i^XlE_-W{_n=7ktN6O=B0(udo@Wzl{hL zk{dV6mhUH~`D@zJS;ed;dXPi5mz(3Y^V8V5B>9_j?~PG+ph+@J&mt5W8UWz&0>tKU zO~MU#$l_y~kKx~e%YdIXELMr%hE^Qasow%PN!z+(0;hD@ivKcPg(><)c0x~Kf~Nah zy7oNxsD|K_e45KohYyDnWJ;4TY#{&$6#N-8uG7>6P9a;@U`*j+NSF)CT+1Xp1SyU``4ti?7rRo(*71lvcDb`jeR;_~Xp5zR(ikhz~lSPeKR%%3jLU5{@7$iB^ zuIp@hAr6DeZv_*4Uv*1TiEet6$f2;|aA&2)hG;kD+C;;9J-aZe^N&1^yhuLuqZx2D z>hKbP8RqXFCb;Jtr4;VgWqDb~B^wekVYd_u^JNur2ygBt!+QgtG@Y%_DzP|!W28|! z$1L08q2Lkd?#<~jg_flwn&eS|vFj!Xl@iu03dg>*B2JL)-9%(>+OR3r*^xu$I#?go zBV2ywp1?b+iX(%01%&HpI5HXwM|s9~)EEIg$$oTTfER!eQI5W!&ede{|Bt=*ewHM= z&cra?Bsc`Qu{2n6X|zE~B!7?;5~&<&=HLPNp2B2T6gwvsp({hQ_8moCBQrlxH5FNQu$N2j zO~ML~%-b`ZS~efd6Y;8Ke$NZBbdO_;QX^(0`@XUyN>iXVi$^qCyctWRDmXUeiNdg7 zU`FX!dc=0(@l5U#BLaIGxMhIVD4F~}0ikx#VWFD};y79^A*X&YFwZ-+Wd8HgoKvbR z9c2FnBv}r~PR%2TM3cNd2p;*uePAUindTx)gB8l)>|ct6G}1tqr9PmazXHn?qw0W{ zG;%bA!Gy&%$7$%v9Gi|qetIxSVV4{nVLumGjT~%#Es0BKT7n5FLYhSID8c6hC4inT z`SU?VIuVR1km8(?MwW$2T>&fsRza1uJQ(B}%ZfrC?>d!QU4}?%Ro-de zV$djxR5VDI)C%{Q%IcN2VYY-gEs{Th(p9lqhS`TzPz>q}a*1OP-hiygmD2`Q&@|x|K%P+9mwin% zaonej-dX?5l{{>ZbPyT<^2Z=QN;gV-kkhU*LllmMN2XcAH61D!Sj*@pch>SX6q*!^DW~dk?cYv@S}7hKM^K5;xrF$q`eZ?B$zlb_`pn7nizov!m=>;WCk|bX@G<;SB`7_&gIw?9C+H{Jh4^c5=;65D97yEZ){(X@=_?&-2%w7XI7f3T;@!jtr!uNURRy?q?MAI#h}u4DNlJGRVd>GOokK@+*8s)7Idz1 zk|?PHbLSys2No9^L&c*T`0hePjUM&gN|)_u=&W6U_Brq^6zRrJBx!C{ZN=zTr(Y~V z<19S};2ttgLrNU_S7)as_O)4$4sY)xRc^GKo942fgIYn^Te@ruWx9P9z$*AGpAFt_ z%njxmL<`!jESEKogG#XM`TE{e9P1Kp!@POemRmp3>hsbG$Y;44wsu2*&UYsD+OZVctImcClKc%_jU0ig-4b$&UwRf@{`kY_P0APH}3H zhn1G0q?e$dE7+8j67=(2RY4a^nTF>Om<%rT6D%Pxj-aZ9N}!*hOf&?mp2-VRocAi$ zUQ$qLHBn-Ppg&Fi6Df1(f4({?L6LAD0@I&8{(D})7h&wt-$Rlsu9ubr@PCp9dS0Li z&}LYame`;mRP^L!eZyVg8WyFYy-cV~G8fnt7lp+QbRdgJ1epfK(7Be3ZxkOFw)UE1 zc`&E!h^@`4%Sug;V^0+BONB|*P@L=(oGunWi6T#w?$pNeP+3`~3!4r1s`PPTZ_8Fc z3*#P*`_w&kIoa7!_;KN~m>r>Aew2l#W||G2Ds>+h3LGqV@fV|-H1a{Cte!<8XhI(U z{7ioRBmdE7OF)J^K|l5V9f${r?-GwY&=6zC{{G_*6h0b3fTCoFECn90AEzJppUrnd zHCK0;(@e0^m1xac~ZJ}%8F$<8Sn)J?_cVe>e~ z_jcMJC@lHRb1}QqI7#xuoz~;R+$r8ZMPte?<&?KRSXjQFz>X_jgTZl<9UR5^!B%r6 z3H(>k-|e9_UFhV!q#j{+_@7k^k%o1w0=T z2nm<|p0D+XCG}&FFG!xpAIDJi!k>OH*Isd!b;;J$F(ceRg zQ&`B^5cr3{PJ(Dk0xT&o=2n#l6nFK0J`-Z_uv(cUry7%5U0>-OoCyl$)_KH8Cgi!) z9@e{IE}j`yh<;vZ@PeT;u?1<~Xlw4)=#b*cLLU?kOle-U>*{+AIwD7&EOk*)U8+*iNZmm)v9t7WIJv$WPZkV(Tm&VD41Sd;+~Rb zNzAJ6fC=&FIi(jbjX!YXpIRIIs4e+@{8K-w@DHyVA9?0aQ~y5lA|La9kx%~mB_nRd z+$0ei{GH5A=XIoH56qH;H7=fFe+}9m@NXpy1#|b-`f*~}kzqdv+qqN7&n`@j=cP}B zTa9-uSaj`Vs~cIKg++iF53?Vz#o?1l9dsd011$Nn!?O#494S{50ucV{PYbg z%w&X_bzOb<#`_Y&K(j564Eg3g=dAWHvrwIm=ZQ@;vQb*nvCXz*1!Eg&qP%e~@zY|S zBTJ?oAU9agile>w6uIx^#leO@ayk(CL*0=wJ)cz26S>@s3<^5Es@dFDhUK^OG*`JRt0koX z-H1D5i|+iA*kyC3U;%Gy%MDG^l$pDXwc`q3)x$InHx~M`Xm!8Pk!`2wFw~`I?X)F; zx~3Cz$kOCXCsl1vJg;jiw6-ikZGK_C-{wP5w;!3X>0>1Bo=z-LbBPXXYOu>+)xl~t zZp?KKLyf{{pxiDnP&qeqn7w*e2~KP(B@IqxsiE$Q&4U88qf1-y8~y%%*b=dH(omNl zmrLad(F1C{#iCZK(?n}2l9e7T;|FBmvxt}NP zR}K^LyWfk02;Vu`(L8+A=b)Ez*vYOoiwpVp5=7=_HW3Ne5+SAoF5?fUw zeEZ@eHG!QbwOhtXe!V8v*2~zvs=%XLMHes~a0VF({1*^QqFIQg_4h^aHf&&Lwo>Vh zx+GFuYYKdMBkxkr&P71NVI)QLk%aW{mE-D?svU)rn=6st!|-zMK5U(foJfnBROEQT zrJs0sphXO*&l*VP0o>UAGU?p+yZ0k=hhir3{=2J(ZyZ^Yvd0h44?+%yyUcU~BXJZM zaFejZm7FuB6j1c_T~X;O%aY6McAY=TPea%g?8B1~NxXz5O8AC97eH?S%sSALBqNz%Y}J8xUu4kzEIn_vfDMWuhHaHpxhyXeLo~jnISq}Y zI*oaZ-a|}*joq$D1g_f#KAkc=w1=b4*xE0Ny?MwIE#oP5FRh80niE;Fcs3@ze&`E* zMYno}W%fqszP!40KwWB5kD3w?^o*%s>t3+hfne#PZacjj2xv$BgEO3Q{4=pD)KVnr zQ^o8HRPDDS{iQlwgxVgTbY@w*bXcet7L`MJlY%qnx<;E@7fsj}B@ODc*t9*=v}EEZ zJxJ4`a<#2?UwmkF`@K^S)Ma~UsXm`{S-eF|%4mm^9r zuHh8y`u(fwWaR1w3Kjxe-a66Tcm!}yi#0m7cVHJMu?|A>~(xmo@Jd*?Cu++RTr^82v!u$<3nrdEeNDakhu z5C%XA5QdlFXX>}uQj<_vB57S>V<;R{mryt_1ETOrZKGnygsi~x!%v%S5{MVt#iIx$ zH4dCr=}EK8EQi#zpE;5$#~@)3kSuL!Pm2SmK^d8OHeHDAhJGwgG`GSnn^A$b^=XgW z`W`^a(CJFH7e33_>j>J$?SqEPK~K~r0EvuY5Ye`r+F5AJHfm`AQg{+5Y>lNzgh`l; zp(THk_e8}%6(*{pbZULyt*n&G zM0~?BZL8s?xst){(3HYqI_@gl90vE;8xiJ46M#zXBwEsYJXli`ai;qczv{AyqMhY% z$dCKW9)?Ys!3cPos;~pQthI<1TAtwzVlbfE06@Jd6sz3|1=5f&mIM>t7UwIP=TE8)irO&qH>FDJ`}Q&0iG50a}_ENrv?b zJftsa1&if4JTF}tumr}B{VG33(&JSnsCx;>3nkYVPk>&QqwxmIPtu`epA!b@NNU9P zqS;)#)T2tNWTZ%r^>3OwqpY;w6^VCQ4$Wr5*(vM|c!ES~PbJ^46ZTE*o^CSI9_V)U zqv*@~{@ihVa&X&jc#s@uUe|R>>)6bS92$doET?>c5i{Lmj!Gc=niv>&Yo{^vO69b)N_yyq4#Ws?1^gR-0@)p z!Y1({O^Mk0RP2HDnU@lxcW2eDnuu*=-1><~ArAHUOwBFbDqIpT-MD{xCJQY_ad0;4 zTJ?~JilJlcvkP%CerI|vo_3mXk#;IaXIhX}&LrvDwx>I24Myo95#7!Q4qNmfF^FxP zOP`qVrEz0X+dz42qmVqSQlk^c9C`%|&IADbSm z`P}z?bZ1A~Dc(ni8gJytFUCN9*3tv*CCKFNnXpVd>s^1JZ~C0B62-*RJi?$!7*jmpU(241h}dB4LvmHkx6whMzgc zQkh5-G)n@Et?CF%NX$r6{BJ_yPGx`s))fwT>5$9o;+NZB9(@^RRJSDz`KLgy`bBBc z^cNvv<1i08NimR;5A?HH`y!0L4RD*I__7|(UTQ`Fp1*nUM*q(TN-W6y3ID+0TDbaM~&?c3HDDDwikgytlp)#L36x#P-2CQmTDMU ziBp}omon%aGfb&F)WQ_inF<`}_lpSZ(JOC7g7tISsd_&V0`gQL zsif-Kve{ZKWR;1^QNkR-LvXVTTf%D?yB$DORM3xNx}h&zILsGL>H-xr&okD#Ceu|p zA$x90l5e37UmfmbSRg!i{1bSOGHUH{kb?;g!684DyL+VmDETE#_s=L6^)GV|$=HL0NHd zU{&nb!$zwK4Oo1kX;$lz!5dgu;~eVu%`6hU}DVcRU!d!!8Tc_gZT>6viWFgn`)wE!i&C=1hkWr;A(zIxoWJYe0=HOz`@#=;5x`9ASnU#6T!)c z=V%_lkEMW?S!@9Iab@S=^AH~b3r1YYGWkW(Te(0zX>ADf;rt5_km(oZEAWG1IlI^8 zyIBI(KUS5%=$5{J5~PJ$K9U^p;64(`O$DwMj}+!CZ08rMC_YYS6Vc|fB7f66>*W_* zHx%b=w~n2@;hH4& zdL7l7e%FTJ{ksp<$GaGKraV>gZ6{~72g%|_W|R%}EV|wzZR#qvMnn?C*VD`4u7gOf zx4Gng&8=z?*uz}!fqB+exhd$vrRW2HF?rA1SDro72;UO2)IPvsP)RF7o;l zBD>k=llvvLdnwNMecdf2B`nMq2?2`XYdbQTvOoiO@LsrnAh|^|luG_cydetuqjT|t zqRLB&^8-(3D}5ndF6<@;{pPfl!KbDJOlO_h3+D>lQBZmlP~ zk~DID@yb}Q4h6kE?7$k9>qdnmTTtN~%TIYWdD1G~Itv-r%M5nYHHmL`Dspp3qZ;%c zrlf%w+_pWilkIo9(*&7wI=u~cnR7WqBPN*;xMqA(TGM%~nWZrG`$zRKPM6$HZ;Qi& zErH7AXox@dfDH%68rX2KLIu-A>5CEs3Y3zexY9NXvql&^VTnqDLzbAYKoPVaJpF$Y z%)i4X7-nGRAeT4ZN4{HMI1~dF=wiamn(YPf61M@}T9`(vnIDY0%^u8SXBHExbF~JHFl~0h z0Ds}Bx9MJE#FE|SWU3zWf;CDPoIQs^o9OxV${4s+XxDwB*fkZ6Cz=zO0(G``kcezo zqiK$822BRMa8Q-T)GY6*6V@VhNK=T;TkG;DmXGMr^hrTc8Y$rxI=Z|eFjAK}@Qd~L zH2%IhnWXKS(%(MK8?u4N+B}bV&00ytT+$!Oo_mh`(pb z63&GF#P70=g^{cx=DkVnumr?uqF{CrQFAw64H&JOe63gpoi{u>L4jGFAOiHTnT0cH zlcSX~G_od5MSK~}prX^m8_4cE4vkHRUGGAj4qs~OGkLbWa0A+$rNEfs23RC@7Sm=H zjzq=a@)hBZ(n_15Tv88amMRP;WVwWP$S#VFAY=*~aMLnY1~N*rJ?+l;4)|3F(@MKF zWqV_~gO-7eOCYMH7Bz1zdEg5_hdwyCvhSqiq2MRFn$tm|W68R^B!c~SiHE?VM^>QZ zXR%rZ6X$8bKPC(K$Gne!Jm8%)rIef-AsZ+lAWUUBAOeJ7Bnn&_1;QVO(bU&}Wbi$L zKIsck7a)$Rq09;a1!3+q5p=nNzyJ@(2Pi2aAXt&!KG=KFJb0g1qY-czA z-_xfox<&9ErE5qSsfi=~DD|7TwopT4Z$_ z2p++R*$D_FNQWTh`(igZvm2JU#@09ka2!0$CLba=-;m`1d_9=*y<@ptUtgkb#YqX> z!K62{d?X$OabnkhE^e*KfIMmVFr8eVgLGDsuDfLAQLin*1C~y^& z>VQs?U@21Ue=712&H?Z@A2A<UdR_YEC$) zGyt;$m`j^89&dMMBjDeoSBPahA-V0sepM2mWP!0t#omkas1yrDl*!tT)Ag;cwm z-ozb0Hihj`M(D~Z(i`!+#=c||Ue`%|W=-}BHHT4SC}Y)v37;N+{|TJso~Ao-=hTim z+Tw-&8BmBO1Fl)j=YeHWyVAOyXqnuaP|o7#gA+k-2Z6vROm z@DC44Mj*8UKxqp6wEg`N)&^>ZLGwi{!ng)*R6K;{nvEYVduXW2G~H`)szZ*TUc<(x&U36^xXF=3~z z?z~@5EAVgB?p-Rz(?BEc}<(i@f zrM2(b@+9Q?)9h4l8Kl}l17<`UhwX?ncY+m4$S~Umo8Ok8^ifO+%NZ$KsISH#sid+s z4!0{s^t9kK;T|`hZ_@$WG!-+d^4`JhtQ~O={GL!_mWinqO-oF_n7s$3siSj;7L-mc911~VDRcR;ZaOWvHf$QsrprH>Rfi@r7rKw^Ot zG+?wYx4fRjj&uTNl4)q|Tc+}nS*FOq4V<>a&YID!@s?GVvy*l})z!oXW|P_3a--4> zh`7_}aCN*g)5EOWM`CKP4$CR*WUW+gP6kV+L5_N4y@XVz%SH)n0AD!X9J7NGjI@26 z>%eM0KSHqqGb+JCN*}h<>KImOounjGIWRgX%$m1&u@>T>Q7(Hur5##B+E)3-Y|tr890u(VDlU86>uub#+d_9^hI*>u|E zJg!rOChGlIP@&&#^!Jj@bVKh+tJ^VkM;j05Ysq>m)7C}$h8lj@3tRAkt znP#ogwn~o1HmlOJ%AX4WBvF5UW*GwYAB*+ZP-5N71+?Cv&9j(}Jq4i&r6scqnBq%Kcp($iw<5UDieQ zt)8aAvuXQsf;IFp-)UKo4K-B?m{jk9ceZWMh9qs%f}*8~Wy~&lI(=&2arbnN*8aGz zwj1N9w$)Vwn_W+Dx5U~So#qhJp;Xl1Jw`Lz*%^jbx?|Y%Y!a>Utb*1Fynn`sA_t((DVY#aI;Pm2;EbQ1uS(4pitmQ0AY`5dS%lS-Inwm;OyP#v)r`N z1uER;bk@S;I`z(|V9;9np*`(kWu}3UNu6_6HY$uI^X*JVHA7W;VI+Q`Y;(%zS@Xjd*sW;Se1N4HWHyJCL0>V!rLtO1^#E;PTd_b&k1! zomOAq>De?HS38TE5o(?ygkjO%u33YrJvads2oDtXQY~|q4f>Kh#hPVal6T~}WyGGe z;L-^QTa4+}E9#t4Izdf4Tqte&`%N3Rxl36Fqh0wA_hrq$mPDoOjs z=X&;(AX!zb{coMF37o||LGmkQ`oKW<0!#x07zQ&0e8|V}A)CO*k@RsQeJG@3XVR}j z>7!2n8^9a{R#u)IE?)p^;!C1fg8!B$|4aNM)<^%%@ZEv`A12Jf@h1F_f5iV793R1d zSgwW(fBz$V{)H!R<@^6aq(6W7>Ysk?CtlL0fAYun%150WxiDy?3V(O?PrWv>TB-fP zi~qo_d;*5mALLy9!6V2I9{TYdS*~bf+X!E8z{K@mkN7bO%YVPmg9d-DBzAZbhxKom z<8ZJw4>4q`Kc%0)Ew=c+*WiV@elIyrm~DA_=rwr;bjoVYFux_XsF<^6$go^0*3nh- z=4Q;ZS|^zV!x0s~6NBO`ESvy$@2Yqi2ru3K0c7GHXQ`es=ZcVF ze^fml$;%+!VoN%UvRrj8go)m6a}0}W8=@`_jW&x3|822NHj0gT6jD90?GmhYfOS?U zd9e5g{O`aX8;pk#4s<>+0!9Fe!AJ-RG%x?rCt=^cXk>(e+2h3@pTTeBLofeGIX*%+ zUa=0g^{YMoG>*bMhY5V=-3*tEXDU+gTZi-vKLGZ(iJghsKMD#DsEa@f;~qU zqEem{O{}(}0M@Q3fTiM=wZ+>CxVOyFi<~`xn%a;aP*((o;GR@Gw4=BV>o{gyrNW~6 ztO1?dk_hBgs>^Y>w`EMLH*}LxnlG!|rr;=~u^PK|jZ+(Be@kow=Wnr#J7I>ntU;m{ zepW_149ud+v)_RT9~j@b2?UuzhLLjv30{x%^Y2!U4}bqZK7~MjbnW{X5j|lnM%D|Xj^h|(?}dT z+ul&e8*3R0IZN9WY@0(o6!RtXxCaJ32Gq{;Styiqk+>tGuF-iD2gO{$JRPbV%U}_< zZ2hWY*7Jx-xU63l7tPZFBrJ7E8)`{QBITtCrw>s!7|bA*^A%&ip=lO^6qg+`QAf@? z8Cvqj!ZK{-Ks_c-qt-Wa)i^Gq^O*8Ohso%gW(+P_2^1S*>rr&lbhfn5HdL_`|=fdlk0Bk7Nq4;3N*;KzHx4_puVY%l)@ z|H!}mnW^4N6OhmL@*m`1{uIb)e>6g0g!%*6eEc*>a6j2ukk9t=e}H_tPk-(x^a6pL zvjH#RTl`ppU*!M4{I?gxz8}j3jC`i-zh5H$!T66ao?iO?7$#r@T=l;68U9CpJQu%U z0{&G9;y~|y>zQvp^YyP^`X=|>4pNsKNr26FB8+9g5d6$bvc2b@`Q|qf)%5)MmZ^Q9# z@8K8q2d`iLCi9K!wdCv1T>2*et+g2xAgePC-F z2&v>(V6n*h?5d!Xe^U~9(LsniOTrxxcds+?z0cuf>iLU;*<=$3w0PN5?AFGL!WWaG01{mzfvd2!NGm>_Sd!!UXU+ZH*c$M-EB_R-aNhY zzsO1J-&pZq6Hy`xD>oun_S6G5APwvDOa(Eh%@vj{>eXg&z-k%YlV1a3DDW)1B!VLw zLs29F?q=YiK|l}zBpD-?q!dHB1j^Gg#C0@_XrKLAu%Cet8T=b3kYJvoGp8y!Y`cM% z5Z7!;3V}P4;MlHtw%(34!u2OHUbrt$dv33OC8s5 zTl8s4B1vYWXE@wBQ#xs|2_0_KV*Wr=ryJEYVN7F0M*8ET=Z3AI@<2XBGMTDc&13y( z!7J-vp9iL_m>j<>#;~&{n>66|-7q>>xIN2=Zp>kub+eyoZf4jpVl0(Vz;9kWD*&VErq;x;L#rP+r1j$4j6M`}G< z5az3g7(Ms9Q;@*dryImugMgy#buJ(ricaoyEs>RQT)J?3FE@)ptcr(d%L@VEs9gF_ zeBh4OQ)=D!m1CPCtTj)PN5!tu6gUh_tZ?0fq7b)(=vbjd9NUL=-MUw)owPw#m}k6! zD#bSfzDR)@MLp5JFpd<6e$)rVq2;!Krw2m20%0wD%OA*O$5_N4?D6340GxKf5e3ID zap1^u?(o0b!vx1yI4T`l?M6YM4mi6?+ftXn;|D>$;1qvSED3{q+Yl$#xFhpFd*yiZ zr7)3tb6as$F)F=%=j7F|-f^&gPX*BL0PsTJFtD(mf z)iJOjc<^()B-X(>1BeV^!yUH1Sb~5^Okjy3KzRk0guHK0VIqwHi+8a+1-+H_RwWo* zbRh7S66U^B&6$1tGob9{K14lm5cAso8Hk@Q9u)DaCba;Hp9SQoos1T2ea}G%%kc;} zwD9R@O5&phe_5PUrYu%>6G?pUu!F~J<^Vpn z7_AV`VRZH335l4^?i$o~6;{ydDF`ntesG9lsHk;HYCPSeaLJjg?K@^^RVIHNZ9g=Z z4EI8*<0SZwOo9dUG+5hrmUQ|-1hjZz4#4Y(3ZO5f&O1KSrmC}%I!;=h3xsvbng{Sy zyItH629KL%)?v6~tirB${xq+G3oqTarO0(!pyi~_M|DCfb$zUg6Grgh3hg%zQL%b5 zUYH{w+f@dOr-q8IBUaCnGLU6cCtYS>Pecs8iQL;s_S;rhR~;do=IPR)X@V?rAuOQB z&7s0jQDAfew&_7w7#UOnow`>$Hd}AFJ1T2H7N45s?XuG8JS=yQ;KHZp7ZzH(M&liQ zW$Vmy=vfpbp4MU16X^gKw=WQ>(~XcXgLAE5i>d|u6?%~wiQ_CuV=Wf^A8FJV%Alik z)E|T7*ODTyf>k6%hSg?pON13=X}3Z8B>~;)KM(CIc`||?UzXJPT#Nb2bFMkLNL}@r z{`{Kk##?p5_}b~=8$QDI((b`uJxA8wd{BbH3%K7+khr}*4`y?S8M5H!XnyQf>mqYu z>{jUvc9x83i!h{t8bkD40~~#s<&uEF2iV6afbR@ke+hC4>CPFFUg0o5#)@^~XD@V^ zpR{R7hxH=A_b0Pg<1?_m!A4GXtxGi?)MDCfzM{lQhgO{=7em9 z2w<)-@jGl0JaJcNat^tcB-}m301TLkA;v5Yv)R2olCxEd2Z^cIP>dhdYd3<~-J@Jc z4xL=+gsRznH1Qykmxl)yV7wK&2iRpXx-i9=#YwKbW6wb(x4JS?XPM=xzq;F5Sd45> zodwtESJV?m>2Kg9if|H-iAr5sQ%%=A2%A0}Y zO{0A;Klg(kGmW4(1qlyR-f*N(mHYvWp^Bl=vfvB#xM^m=R4XD;k^p0#^2SqjaH{d; z2x0!TScD)t$^8gECE%5m7e3+F>ZqjCD{V$DK|5XMK(8;YG#ymge!d}o>Ft#|!T!_; zC4N`TNJs~Y1ay!KBD7HiWn^cw;S{U^T>2D2cVLqNM)C!?Tc(o$UqdniBoBe2{;C~( z0fz>=*N#$km)(r9bC1!c2VM#rV(|`O2AozTP=j-%O|Yn<9NvPn3+=T~)1~heVl{^u zj~}En2ll!iBHp4fb4O;W0;U$PKqG z1XPdGLT9fC)lsN^x~jf61(|vc4+7&>^FDGm=S2;XrB2c$q$H>qA8PtW!8{ zNvGd#E+PI#83KCro<)z(?3UzVnV8I1H}41>CkXeU_h742+x0+}`Su-oQ10wlPn~Zap?6p zv@8v2p2tg|*dO|B*6_URoAG6LYJWWePCcmhl4}TTTXwsn!*$ITi?K;2EtdEk^gv(8 zoFvL;Lp~<2nzbEpnvLGeRgIorB2!iea0{X?1Ri8iO+KS50Yh;*PLXb1Q9k11nvvhV z0LwFeI0tghPT6I?Yl0LNbVnAm-qfq_1SCDkvusR}m#V9We%Gq{F~R1PIkT&zvXpna z{6HBt>?cyGE<`J)Lkrw!uAVhXziJc!*EUG85ZfISVQpMdoERYhL2! zyntoep`-Sy>;4XyA6Y#KPNhOqcPdLW(5}o9Vq_)C5=bKOh5z-uS$P4Pl`0Q~-xag- z(G<*V;1(nojXf{;GYZ6P44^ITR8#_cc{mROLav+?N7W1wi^ z5_+#Qh|i;TTX4!24R*6_Fb-I)1sYn_hJ{aSF(tnAxGM+JxmnA8rJ&08qi9i9=$?5{ z`vw*@V_{QQdW{%6JMqU=^QAX9ROh65gxx|x2>LMVLiD#H>D?Yv-p`&sFr94_rDkgI zq{0zb!RZ47)vCV3PSe2nZ-|x-L$SjNS3gXjXwvEY6i%PXEk}FNlzcQX!|B0&08Ve5 zj~zCzX)rtu7WZ1q;$BW;o8c4Yi(*C<)N97IBdg_JXl7F*;DpRt@A~W~74+DwyA_z2 zj%!EMLEX{6i|& z-~IYI7=J!f4M0BI*DvvpeWn_Ke73J2@(=t-9q?19>ihpN|DDux{@(B79RL2_r&%@P zCpio9*-Mel}K`6HM4V$BPhu2LPaSc7Fd!%JpG#@Nrn4t z%Ql%s8c;OfCw>Yt#Wm@2m;VhBV=c+K_ja{wXdtsfdV+7Kl1-K_Cn{8}RNB+@=EYR^ z*F}^MTlxxM9(VR5E{DJMz#K5NYWk3^oQYw(+IG|#G|zqxW(GgWfyp7FLPb_Ri&?<) zPF*Uib6c&MFO-lsT0o;Q(TD5GLdOjJCEx@FR4PD{b{XYM69gvt7=Gw9wN)_1y0dq> zpWB(AhsCI_sL2n-)5H8e2ttAnK3q=Vfhw!UiS+?divC(|6oT$pMa0^ zbs7P@;bC!x7l6<4qxd0_k1F`k;}Y!^EZ_iTfb`@12A+l$LW2d`pW=XCkO$VKp9P)@ zdxDv3Ll-sL#Ma(IT1YD2ObLT+#{yi^&S&HZG~A+nBguB&%}8M%uxftJh&UlO?xk}W zzHt1NvKD$_JvYBp928nC)9SD=uh{6(jt8?IXieinB1f!$=?bCd9%cr^b zSYmUJq`hxGk}$3$DBJZ8NDvPZJJq`le6W+ltJmBYB01thIpmlX ziT;cOo}JD&OuZgt;+W0r5ZcjlO`)eV69U%TKzm@Xt@lm8M2iDHx(o@~`yL&ou<>uK ze*X&SCITsWK2kY9R0m-}=A)03F#ltlo$>EZ;5mhP@Ao<@c1aGAAd6c;7EJVk?h?F) zfm)L9AW2%{Jb|@w8i-WLzJE$3BWyn=JxW#v`zH)j>(hDSH$`l$XipDLhei8*2>FY$ z2eI@}SQL^SB3I0;M;4<@b_$rqn6sUAQ!Wx{J3ZEHbPec~`f-!rQ4J&t4-#F6&+TQO zz$}ChSfc8r!;wzt+ey3Qpx@DFtj2b;>q?Df?V_epQ;xn5v~nc~YY~Ogp(2K!s2hPB zXNP*bjKFQVhEW}AyV5gdFMaDoChva$vm}HZZ*30RduNlRwlx^WkH&pOSE#fqh9rnV zcgWc18vB>N_ZyAGw(kcC7&E z=pOl1OD`Vy7@6?h71TcJ84?W|int5;`eLB|nz?2FsUjh-SNXpbpVqHZv zhQNk*-v3r2-+BGo739ri`r7||$G84JzU%k=U)R=O+Z*)H{FK$rmq@^;CB;j=Gn+R^o)NT`;T6_Gv@i=gCS#hK$6Cdp7BpEM7jd{LWUb3oD#_w z3S#NISvve`RUBT`To!R^N4G>KYkrOnJd8Yi`w5X33*7kVT5q&PX48Ks|S}z-=xM0)zj8dP$=Hlew-|crFiJYE^D`{?$a3@nrox_@hZ#83>3cCF(E(9?OSf&8F0vu*p` zU%j`#?juL$RN#7p4d0R2d%4nS2?!b_jCfkC&|}!nz;T|N4j@}ke-wN%(H)Sm__HVk z=WIT?M4+EjQ|cVDV3&&vU#S6R(Lfyso51Io1&4)6l{g0~$%TOb^gs*NznJRBp_ag~ z|1}s>ki`z-{wWe7*!WU~16*PkGyvLf0GVnvPA(ipuAG$+%^qZ-a8aEOi}Y_mkH=Kw z-uIkye}HTyYqUcj%j4W2ot;e61^Y&hMmi~!0@xa=+L<+L)s?H5-KLs(CuEI`T^_fu z>`6HvqAhb!pN78qzNy7nvL=Ve=dQTD15ZM4o1$7&745VeRy3m+gq{7221bu3Os#X& z;{ArBPGaBH(A-z6O_!L{_$^0^Q12iEg!k;q0JT8WG(&U29Su`1^ynC2bh2qUbM6*ah!J zvbBEx<3^?r!6<1YL#iKA0N@2%6(0s(xvc>_DI`e-rv#RSm}$DL>av(}aRFWvA^e@D zw3fOsoeYKC{R(%9?@N}~$}FT!vc>Y~$FkC z^4MIM)`5a$de_Sgt|zCJxj1?Py+VKf%2nik+4JmIcCGLI$*t9@>^H(@Z1?Qrkyz?*t)qRbDm2etH(bVA=MB2V*1U}V*Me(jY zVNa}f{V$!vi>qXX;4>|*@=}Dcz2qVCh_bWxtlfWit=ox?N;fK8<~`Um5hoA+efkl- zQzdyJsb_vZEUH_TLeWQxOPi-dy`thL&Y zFzcVgTme{h=g_Zuq=fp2_V(Clhmucj(P8yWqo~6%!1st$l zT^xbs>Y=K%+KYRnr4SZQo$IRr12qs)OX>={b&?80*$barb-2|8g0DYx0@Y%2ztdsK z$`I@Gi|UAN{6#^Rt&oHug?E`6tip);OX3*DqcD z&h>U(l5amuv9Gs6uUC)PriMRzII}%Wz(V@Xe`lNBI)?qD`0I|g?J9bFE}!^+OhdTm z@?V`b65n1FEB8=FP;({r8e8^++YlTz|NmeaXk}0cyt5b z%|i+*9z){%>;;V^Pac~{LU!Zz05yE^)>`P!t@|-C@Xmw#k+(PB8p8b_{)g|a-MW@P zdL;iG$iMKpD386E1pbW|)Nl%>bf+wggU|eRj+@{AvyHm?&#qNO^tG?5n|Hr*kK|ZF z|5l)iVYu@7$}-=lD__$DU6h{OmbZea+e0gd|(STn(%#d}|XE`v+0b z3E%!q$Zxlokl2)p@9pooXEW{E_WDu3eAr+k=5hO^%o8U;AixUVu3r-8+;kPBKcb-5 zK<4SxV$6xl5z8;8z$`WD_F>-#@AXDwW;p^6mnln+!T*{c&zaf07+rwg!v+L$*(H8? z^5xE#xgSto0OghP3jYc&l|Su(Zk0{Iv=3S-x!6c5dI_e+()9SL3)O`w?fa@Ly>=Km zB!y-p?*b7FrH1^oQ*nxQusJ`hz@})q)}pv(ljZ77$(R`w^Yx|BXmX&+WWP{o!f4Y) zYx%;63BLm;7;Xk>7ae%jg~Unyvqj2seSf2|xN)_&xB;36o5HWZ{Z5Ly|A3+`?=*D( z`%6Y#WE5Y!arK$gc?9HzD6-z+wz}G*_B)F4=AY^YXS(RsO!GTmk2l|nf#zv%W^3Df zgEi>{Z#Q($g&>TKQT%PNp?J9_oq&=l=hFwFJAwJxz3jVJw~}{~otu8^E7#4=w}5Y` ze{(HgI(rAbb1tvH4Q?MUMsah>CSOiV4^T(eGF);0;guYnef8*`_txIE3avbS_r&(_ zy)~G!_OAZT-L?02Y8NNC3zHg9T}E*m=ThgVaNqBXDdqqDUYj3%_gkj+t^cqy5d&Ag zmMvcS3p)e>jvn00)gUD9{;kDA_f|uHw-1|!kL8gnegOVGmGGaP%!T=#|1(8u{;h=r z8}`}Z=+2*3=8@9Ucf%C3#tGHm+U-|fZD?=x7vVA~zX><+LMrrTt$3pZj&uE!7yCOsDz;;WrRm<+M^nR5kMvu=={V z2?X~-LIegB6&{?Q!Ok-Qo`DmI1#QqB0c1>i{o#ZGU1lc>ZVodLYD_IBlSqmCLr^jj z7@*uAtGQ3{|5}8-&n`h?W^uYwT=3*MS5?WiN1|zz6nb??kmw>M+=Wy! zBJIA`1%JIAH${lUdbPrF-5SgF$`G&2RysUgl@d=-EwCn-MR_8y-PWR7D0N^os-ajO zUC{1#yP}ZaXz<0Qa&PxlWHQ@+bu>P`e^ZP1pWi1NuLIyQ*;{YFaleMX9AOuVee|ur zxb7uH`uf+dz4#AG*^P-D`)NE$ZxTl|p|xt@1FW7iW_577y z_`Bb!K|bx~wL`3m_8YG|VQ+UIyKaLKo2TACL9co%Cy1f5KX%dL@N2I$$M61SQWOLK z$M(GP^%qAoPYYMx_J%E`>4U3Y?ceU9?^?uhpuN1dLs5tC60Wyf{%v4z?`BTR2qzM1 z8@cq!;6Uvl%T6>lVt8EQTbi9cMV(D;?CfnhTbcwox1p5A!7y$$mC=;;VcZ4Q#VOz( zq)`&=vKDTF*9IqLeTJ0Z@Z)Pw*iJrQ!KRt3 z1ri8)>DY6=Vjg%_#o>EN?&rj0XXnbhZ$}5aU%&C{v;Jk{_KVl9d@Gx|TCBew zUYM_3N4EO$KY#i9ch;b%c&?9sUQB9V%s0+%W4kZKD-U;jvRCp=`QM%kAmPCqTjkVd zA@)8x)s%<|-s-`m0V4+++~R(p4!;xbnr39v2G{`GlMy&Gn2JL6vvQ|s^Ms#vXu z?5zaq_wM3U=*33@lXQC;c*b!q5FKm>X%O(eYK%ET?VbGvYrfO)zM}Qqc_y2FyHLLp z>fYUpTAvR@UaX15w<4MQWmxP>&74~Yhw+iawdCT);mowY`}VV?s=C>i6{*Dj;g)%V zp7unfrH*UV6UmKXg>oF=p0JoQeQzYP_S%q|(9D=zjok}y+yHQ#4nrvO8!!dx?!5Qj zYku|@z%_(qz@%lEW}#3a|J&6dj9mWO_d((N8U;;%u1oOa^MG&&_wyj|3nIF6B~NH(K5C{8uW?rfz2aPO>&ESK3LgHu&qJ? z7VFCxnuDR6s^*Fq5H7u1pOt3(sFX)>+WUO4Pz3%8F?Owwz^po1xc=5VcdD%yzIF4( zR|`zy^n&bQO;cj{J4tX2^PZb3s6XAU7@zM3!eZpRMY9GFXC*x}rCmu@U>!b0rVMHE_$27L}K$3V^ z&XrFn+w;2=8xQSnnI21f9&oviiENh+h=5gc7pSz#EoQ2H9mFC*7q&exX_$)Tm#xgURdYV8M+3}lp9?ps&g22j}3Y?3Z~3q zw_K=@u!*9%UX3W4(hQIj>pgq=(1{R|QiJaFJHQ8R99CP@@4`p|>aEX1O+ZI)7;R`E zj0D5}I!E@5qMBP+hBy(!rc~VrN}^Vs^gSal%xF#>O|6J_wy>49khok4X&a+)YFHg# zXk$_e9nK)S=*0t}%CH-Yh5Ru3v?GB?DBE1SSSiQ5R4(WT59VW+Jg`v*3SPU~g3qkq zdt~o)Epkk|__|2=ewM#|S$z=4*q5Zp@rAyyAyywSenya3(Q&8b?LY}o9 za3ua~K5Km3=7;Ts?=f8CR7|wjnVMfKUV6eCyK=40Sx*!ZU3^;~u^m|p?6z~6eFo7( z`QhNw7=H`fp;=$BSh;qiL&;AT2TS5MeCK~SeD2IiZQuzfm)>Vsex%6_uJG4qI<|!i z#Bo>o`a+jlKT*t_^}*2YzTXg!N2&>2K}$rb#u@${65(JwvF~X9`aHTmXPwF;x;Q^& zHYxJS#~oaHkFId`tXA~BD^j`rcV+y~Xidz@Pep6%ji%X>v0;I`ibjjwvS+(I$lYoZOE z8vQ6tc=8+QM{yxLP~D5$^=snuRYesk}F z!%a3VBpZrbGQo=`%am@;e7St_a_RrMJ{j-@%*;<`0)}$Vm7ktP5d-z%EDOrZPh*UM z`cZQrbZe&a@AvP&l`jU$e^X}#w_d5SxPU?$14=KIK`da*12& z54*660Y&hiJpFTZ$aCZqFKhI9jz)iqHVHfsKMQ9(Cu96B5ND@St_^?>1`eS~<%S=< z4N=uAL_gFzE+%*eXY}MJmZr?l5t!cf>C zk)G@6Z>i2S+MsoIbLO*m4e|1(-)C?1r)ZPlS0c~V&`-e_Xf?LQ$882V`nx!=G-2Bn z5Xw+haAgOiOm#qhF-%1%D9bWgjcPqil>|CMtAi5)I4gldy9T_4~@Cre@N~ zH5-Uv-SuAB1p!N-OcN63hyBH1O3rsB$_@IdK(xblvou@HgLPh^ z*Gq&#Mdn?wQiK;n+w;)^a3sD*?$3$aKphb#2##RE(=B&L&3}U zTk5$`BoJ*5*<#Qi1E2Z{cq`xW7-uCe*C;>0$i{!oqWp9xF9 zexGRNp)XH{CjRNv`91PZ;nJQ%kE&Xxu@Xm0XB(Y4MJMqO_g{)R5ANT0+)pik>jkdVJ%V$#G}AD#Sv=L`AM zS2M9o6Q#xPS>eo)4LuA_=pWZ432XDLxKB&=m)qAb(Ol}3(S7imJ(2@++QQI%IZ5lM zOKkFoHYU2)!m;*~q50jdEnIA%IgsW0bJu)N)i1TjFH&6ggr?(Nx_ndz;Zh3iWl_IP zOs@Bb$sgHi-+m9r1&(;<_CNyvQv9Jf^Bs6K=6=o}!=7JAcIuj88)pVaSH~yb;{pl+O z{T`X^!l6>!ShY+MMOr=qA=r}l*@o@;BifB4lGeiGE!J-xWR8!U7xw!yH$t@cy0lpu zpAS!bcl`Rek7~%SPhEF)+$)hKVZT16f=D&R=?KIsTE2Q+Twsk0UB)2l_dS!>uA6%` zB)_Uu;UuD589!M-l6G4BQ;RW<`AY@30QzyIX6af=uB0u&U&i2+!yfdy5sQm#Tzg9$hs zL6LzHj02(~Yapg{vPBb+JadR-?h2Nz?&gAuasv(Apn z99DT_n4c*cv}|TJ!VP_{hGt!RAq@30WrL>2bs*sEiKR&}S{u6T(S=NTB?9k-c)w?c zKwOQfyk4AKb^(vL?5^czR~7}?F)`x(QeZ7R@Gevg+JQp`=7276*jj9?q56pTJ$0Q} zz2t41bl@x}#tl7=hFYP!5=D<(W}2};YQR*=;AI>QWi`4U34ARMC!= z2W!G6D3-*CZYLH9mFQt6gbw#OrV{eUTWn+1H}w@lxAc$SSx=n!j|-;`+Nt1ygZmE# zn>W@Nt}?En@@Jj>rLXLri7R#=e&TwDy7&zk9bi%i(e$46hW$`1^@O<7IB>38KYpf= zy?VX2{GcPcpzq`$I6~lDm~mXsQcL&Qh?4sWN#1i<-nsa2unFEp6}z1U$>V<8?ojEF zYA`r@g=wCiXDH2ur0%gfcccOxQ0PgQTHSeZmtH>5>PwH6xz6lN`QkY^agEi^&68Ym zpW3)92=&P)>(i!lk*0C(%$X1xISOMsI(NlI)5`~mPH**eo9nJj7A{_Z27vP`M}-`h zJu25j69*Oj!LdtJn4-7kaQm>JG)2>eYq%r3+oq zIBQOiHCW$cX7eL~>d~{w?$t;9`D2f0H}C8xa;D2dpe}~PT zyKEL6GWRc>?R2cszUzrq^Vq4RZ64geUUv07m*nviKb#m_NU_<4iSgM~TdYb=Sm@9h z&|6@PDWoaZ6v%S5eENF62xq5k6Nx3+dOc^Z zaxp!`KZQeY;B=0zfnM5>Yc^PP;y3Jro(Ii=ZW7ZxHO~O&qtI6{K>_De=>k|eK7;e& zeCRz~apZ)7ZC1+2BAJCar*Qi3ZXiDCwHy$5rqxx-jj9lw%cP1REGaAzSyY(vib4sY zyL!V=0v93R10g{d+}ayCR2EU%N!BhbE(I7rNT9oVUtX+}T}AaWC0Uf?BJ=s{7Z;|% zaJ-}Pn8oGT9MJfP?>p;YbM9Zv&*}XO5Ur)7_9(Tz!U|%65!<)TN}|zIszDOhR$8FG z+GCWrG7G3a;`>xirr21^HCF?4R9NFW8c$BFS4^PCf?y(*aIggG;0>;yX>&B_m=;6f zc=z3i%WvaV;?Z=x85+YA{*$_(!1go@q{AMVauS2=Qksi`3H8r&p&{+Q9;JFGlp~GL zk-!H_Yez>(=8JiHW1$Xg5Ai|q1dsNZi0$L(oC)5!U0fohG4H=!$v301P%uw&op=B} zWfX!|HRsmJ%4Hjw2!=BKS~w7Ef@qhB1ks5pnF|Cm114{AAN=}>_31AXR?h=ZTs?9w z-q-Irw(C-{c}CB1(X+l`@Jgb8;A{J3(fQrS_DPz_hyU}i157YNr}iB<=55W+SM`Tn z{py1&UH_w^TI9r9=FG*gXDmjhY8<7Ts|`egHhFMYtR#QJRnQ)`M~KI+CSVk+Upb#l zPo9b2n5fuKg_-`N64HObHSEq# z{0|{8nCC$&G~qZAp!<)A2L8Qfs&;KU=`OZSKd@31)05A)`imC3;k4=rqYLs_s>bj)Sp0#+cCRz1) zSlrSpGB}<$Uz?b6k;Mfcm7FcIW%1axm0VxlWY|Wr51e1~?$Z}aaP&;o3dPQlsWxKf z4(oNmL_e&9@ijLn7YJAmzzNq7Vr+tQfnpJ4$*ns;L&1N*jqE6RJybB39kvopI5LI# z?4~LI=>pi>4uRSU%$_Ka7~F!{0%xH^=5|=lfqE+tEVw#gZ-dkh@E5GpLFCpWrwjzi zmFIRHI4~DoJbvuh!NWHC4)_|NUf`L~!wNQddf$PAdU!OnRz_1G;)MKpPyOQl^~uKr zZ2ZJIk;Gbyxm}L6AG(mH3;xTV{_)qB;KkKX+>pqk6dMZ$%l(W$6oZ+NvtLYS9@SHg z{d2UNxauVUc^b3`ax%xRMd)I|T(L*8t=PlgK4kUofAr`B`!if; zN#1hriLjk>W29;K{Dz@|Ubk{Y(Yi6-%O9F-CHFY!Ve1goZ%iGPY`8nwg@>k+)r*JY zu`35MT>6rWwC+s~yO*z!g!AzE^Y<;m_J=m_OOwWPY1_XZ$*Ud%rfj1Inrnx~jy!1V zw|42M&X1Re1J$t%ZJNn3mQe$j*>1T}U)l}oeytNXV1ayCEq`p6eeygsII7Qp3xVvh zna*%G)PGPkBsIsg?FDIf=-v}$yJyD;rUUHf*c)Jmjz_{nu5$jujCg$EfELyQqXsB& zJuq0lT%n+W?%wG^TYNN~ob)im%wtBXeqerJQ?_W`zBt>zbOGx0W#2j)Ht+g&628-@ zenkpl=qJZ(!AG?eDS2G3+`BKX9S0KbUOH(I?IGNx@u1Xn;%a^92ZgdNoW}R%i?!Gf zA1R>*_RoW5%FJ1#Vz)ALblwL6ww5nnd-#xd4i;$~6P>z#Rnr|-730@uqV&)*3$CID zg((|d6KG&6&-7OGFh9l@C$5P~@vA`OOjd2zAH0&ZW?@{eF=)yI`3rCgjOL&-Q->wg z03G)-%?>;X%hubl+M*k)sF&ZpxQLU`R2fp)1uS8kee|qo1!?NJ@El1e{ zXQFpVE`4fpVtw|dXS^LsC@pE%wiH4o27q=Bm6ZZ}VW zngQM^4q3{x??1i=Q(^V$A%R$#rI~0b)a$|)FOnl5=$T}#x^W;&MR(cyvNM_f0C~A! z>sJ<==`!0&*1)+||5?#T)fGAZKROKxyLe)!j$qy~g1%9eU8oH7-uj z-Bn?m9vjtPW?Q9Z>C!3KP$eES4k^od$MoSz$0-e%%#G?()k-t`n2a1A3j^Ur*EJ1HzX2 zP>AVVIG`a!|2|$92-@5*b8y;t^;EenKBiIa7j_xx<7n3EN&Z?vn!h>^{LFYB^ACsV zixcM6eQy5`P-LgrYIO_RM5JAkE4s7SvUc0iGKN9?efy`7+eLqOjc7BHYe zkLCvLrIC#=wy>RT<(fw0}JHS)xASarKNvtye#K8lTAa6k{ zqK7w~1@1!A1Fc>t*&bPtK0ZVCgbyr96}hs{cwj)jDgF5UULF1C!aKYo@wv8D@||yrI)w-wO?- z&golynkfXoxobAFaR1@m{~}?z(DlgR_zaxk?v6HQo{(%rNVLNE6s0^~2%Yv0L=Q!n z*>mmTU=3OzxX6L4a$TOZT;1oYSnpS6%@2s#zI?So9hoPYz%E~H>EN~92NSSutsayP zs~1J(t6x^-&Z^9uLFLbePG55ZLm#m~u}fhxD-9W+7hWn!$! zwNB2$V!?85=F0l~*<;XA_yN!aQrxd0b2A-Q_IQEL9uRlL3k{CGe7-eUKTyd?6HM(q zs5e?4i2NY7evf#`N>w6{RO_uvszgk?D`j zLd^5)mgOg0bbIUy4C}$liEnzk3!k?GNt3I)!II8-T4cF$KCS&{b&sR%S0~PYS7* z?|s}B2DWM0Bd6EToX=H{9aqjiVrPGos|5VMP{a9ze;D57NUWsj+OatXvM(I}<_~-u zr}LnbV5RzG({oURuC6#9SuBb#l)3C)E6t|oA2~%7hLGQwKAG!@`21m2GqK-|E>}I~ z9`@JI7EmkA3TU&O8mA%qQ4vTZ?E3<2XqVGJU0|ALuA=OJRe6K;%&{@k)VXx#@VHgJ zPY;b$PtVP*M!K%+W8>~V;~Ag4w$Xeax4F>B!>meHh><*s2Hof`ar^t9We$a&K>=#f zfPp#)dZuSMd1M~+ylv->Uh>nZXEw7<-{Vt~-GY{X*M#cqfg*Y*=$Tk)VXQ{#PsfdG z9n!UX^iJmw{LNACg=Gdb#k~DNmncb(B;oREN&bL7cX9=61$Micf%)1G7NOHCxnpyk z@(Dhdj&7VeGwQF2qgk$c78(ie^H%E&72B^ty-wI+**ANwP8v=|l}l|pdq|18@o}ps z(sb`%(VkeTn;sKcW{)M%9k0&LO3Fk>HFj-2#k5sdC&wM&R|xe?8GOQ(3P__7D60Z7 zs-LZ6c7aG4t+bH|2I?T_nTp`(aRqFVr6-O~6^5v18fJ1_Z#}FyVRz$SHN3Vb$V`IQ!A{FT?f7P((3r+Y>asyS1aUU zYT|{Hpg|AIwVV3nDPDRhS|kLh*}tp?US@p)>G|^y@Foxn{uXz4gpF3f8PVM&+lVu; z?;eYP|Ddew@+IEO4V@<+x;ZFy+Y#fs!c632lZW-4U*>N) z(nV(mJ#fuPrzVf+yZ^_i;O!vLPfgDAshG#L4a5H_p+T=mJ0DZjLp2MH zXG9moYkT|KVgLKHrn#rZ*dkuL&{w0#SH#nv=4byf|9_1CHCnIZ09z=~)(Z#OdY%|t z#PdeydY+1}P`y_w{?+pa*@6&MH;1FT`8RQM;x+jF%Edo>o*-M#6JP6R6#t4FJV%@@ z;<*Z5LjIFMw*C-g)i3ssc(E70O4kuD`bl4%2OwU2SG_6^0Owz?Mh~#?urKNleg7AA z;j47r7hav4pMK>2+kTyR-M8-RzI9(i@5-Z(uoCV=apXo1ib)x$QZQjz{cYgA zF11u?T$Xe^s$Lt8sUlP90%*X45)qNFLfn^9b|uX;vSw+qUVJO(ZwWHFQ}<70sGBO}W>^XA%{$XhsketirX7!fshK8dX8ND5W(!ucR`oNr=njNXwn2 z#Zc}>)Ur~t2tD&&xR$jF7CgRXMOHm!7O5;Zx;+gM1U)~uZN?T}YLfDZ#6X7?ZgB=K z9wx3`t4A*jYq|x$FXf$TG-YAXBv^AUSQCqto+zqRQ$e{$oOv4;XpJpX`6*d1CbHSH z{<9jL0PG_C(}rnXZCzu%7>g~~C97^>8ZKpmDL4|zF#V|0S1Y>+w=)6WXzCufGffse zUR$Fdbh{#@So7^%9iq~Kt~4CM4@j1!$N`+plYk^BMr}b_hma5Fnk=ym!Xd#o+stl9 zN+L*~7AeTn;D-t>rRm$jhi(oOl>6NzsADjdJpDE>oJl3=uB|{&$pm=HX0=KZE+{O4 z<~iw9_uj@;hOYHi=9s0Uw)X3VCaaTXN?@l@rD}O_8PhKK=JQk~rP0(XrMJNMO{^3x z=at2ca9SZ$S2fopLI`rgq~$_Yxvdc|UCAU?#FJ{@oE&<#z8YKGkXlsV`HpziM9eC{%-zAPp+?cKw7$qv#fv zqc_r|Q|H)dqVH?GCg|EunsY0Xu(zm|cC#xvu4i7iPkD^8PHrJK7aiEN4kfyF7(VHs zf)@#Y-yw6kDoXICxehw++GYK9cWTY1zLGQwol8pFdJBDDPlIiQ>RdD647XDrh|~kR zPDQ83RU#8!kGs|Icp$D-l6)JeLr|d12D+UP1`k~0Q1IoT(^!(EAY2Xn3rsX183uyd z;E#r6YeV$ekp0tU2t?Tf^APZHhM4U(P$){ZK*e;>KxPMYvG#VZ+Ygr6s;$$Ht? zt|VCaZed9i&cV%IFte`=)SkZiT(Y_z?^lXlX4Rdmf2o8k*wIJmDizzD@zJdZe`i-ACqYpLkmedDQs|L+`ciN z5C-Uo#5p_YTC9ZLPQt~c=%TYOy%38}>LP*4a)1npz?G%UV4P1#TvSl(pY62uR(vh1 zJyjZ*FXWplmD}H3Sh0#g&8567SKf$wMNZL5UaGUqTeVgOedWBDWJ`fATk^V6{jk^N z1BEp*;dJ}!-H^u_=@A9D$D7aOq33Ea#KEV7KXO11Y4rU-eFc3q(DVXM8=|kcg(0>n zaqzKCmq(xNjquqxP{-Pg>@eZOfmL%mha6T9YuO$JYP}HcDo@=5(29{zm{v7WVPHL# zYTv~X4{vz`YgTu;23Z3xqbu+aRn0em>l^M~qgtpjOe0@o(rQqir<;AImNTtKgSA=} z4*1z-p#(+*tXY~U`NJC$MJ>4|QPwgNp$bl$s~Z)WP$JG2R1#?>sqso$O?5Oc7Eg

9At8{0$)E9>c&WB-%+6bNqO>dT5+uA}oLCkX7p!@y)~2nv0#S`)wpkZC z4eKSn#H|QV*>kIY_k7;HRDk-+d2M51)ikSv5!ByK%d~z_aD@7+rLI|S^gsltgvK$~ ztcz?)FBRBuZ-nQ{-3^awgP>9}Xuz!Lx*E&tL2o(}bghK*VV590dVp03(6(;0leKCB z0*%(H%XYPc@~xu=sy&rQFM%@uQ}I*uJ!PZN^irPB<770aB;+%R2|2#5pV}O6}Kzgt$Bgbhg>(-iGUlITqoiR zHXEsK-05;xIsuO>R!mldT{=}6L>=;_B6#sjQ{XcV(F_Fi1npG{NC-~qfsSA%g+Uk! zkfJw4Nd)^ZASUq4I4U99?y?2!COEi=`E77%qgYstFrNUum0qhu6WcxmBl~5btvlfF z?h%avWrE2G3*PU6jM#Dk2oq?G&DOxf6vO5-a49&8HVvSZvFr0F%HqSDJ>U!&yomM7 z#U9%)7P~_<9KaZsBtqR*K6VheHk zMo}+na6 zc{#Wer2=xOukcgq)SNlusYXIZQ7IWR$qPf`$p(~~6jLl4Em~{iD@y|fs$ zFIiXM1t__fQnE#lJKoQ@JgI)(~-Yc>VWOHhTURBLU`h-IuyYsrd+JT@}#)xFSasvxggS1i6xyX-#Gid5hkcvq#XKG3q9SrjNkl9XjNJrM{6)APYA78>=Z3bI5&0L|q{{;J*NSz4^@b}Ls0G7v zbtMwsFm(9(rCHN@bx6tcx+nrg=TC6{##`Ld0+`%$!78LcpZ zXkZb8#xhVM99BouAQZrYbO8GSG(B!%YM@)k(o`^=76wM6-jD`DV*)D++BW!m7?SN4 zIBi9QhSaz=9Y)JqSahOg(0hOmVaf#>>-8bVG1P7(yT1Wuv}y2xULAt-KsKNTqXnjJ z4uP$Beo&aRXV+ErcBxpSI%}YCS1fjzh_3lAE*CN%UbbAGh*;;>rP=6eXW$S+1mKb; z1FBrPjlzttt=2d7nugY?Ifv%KE#I}~OJ38?na zP$)-*I#b7JW9>SzwBL`1&C8Xh#)oQ3%d6{U^J+>nYgzVrR=Z7|Nxx93>QZpie4>~1 z)=S>BcGc}`HXtx|8lrcT30)1|1XL4AhG40#(N4iq(QN`>@erTI>7#xNSlb@Bjq9~t zFpookZh!0jz>g#eeFjT<)N>FgbKAc_R~|xq3R^Nzb9@hUG|W6BFO0PqtoazWlB9lv zqsTZz7dqhNY@m06As5Z&bt9|6Zel7+WJQ5)y$E_`skH{%2A1tRtjJzJqCQ}-o>j!e zYcfq$s~a>mVo`t&tLjh|$WJuu@P(m#SOb$ zPR7-!tI7j^w3`Y>7v%0}KPKw*qHb?t;4$~04Bj6tv_E!-Og2D5H!?j?P-ek>HFO$H5yZA{;ckSb8`|vB4D=&5Jw^@&b14{N87f~K zLPyrJY$rE>?7A!g%X)^27@F_q@=g76-nW|URZ1|i+I0i46Rj~#V+i6W=6%yA&GHkL z_<~$&uM3k*UM7{~2TlWe^0;xOOGE{w_*^O}1GhJLe!Qa&Znaz0^MqY~m;QdFzU zHl{1Xyh7(}(1DG{s7yd5AUga?xg;^(D6{2oVA)CgNA=?V>*@TGH!`MCf^&v66;(MG z9Hd*j>@$esVp~i+ac^iRTxTu5^>MAK{OiEzM9J3)PQwWOK0lA z^<~PhDs!#nNJnoA>uOxrW^A)*bc66ku|HZj3-r>k#Y0k#iyQuU0V<@74tJ>A^f(h) zZHlF$W~V38eJ{MxmO%$bMVM%N6)@tXwm_ue;YT2>0I}@}prSI@16=_yR)-=K6?*`2 zjr%>=-lKb!tVU-OV$(a(VlPrmTa2E54+^LaonPSV*`!gh*Q(1yaL=xnmX)q^g)o~CYdla#2C(M1L>+vp;bl=akeMFW)7xvP{0OFZcn0D zbh>jfV~y*3EG}=V4;=t++(C;Al5K?)Ql_<`1>YK6Ocj)QO^XdL6qNnF znlKcZbfvps!tKvS$?|kT^&a^C6*?--8_vswjzLvbfL)hkqb!FP9p(r{q^DkM1f`Xb z1^h}zq`3wvsHlAuWs~(1ilimNuo-27>FMDXt+i{mU@^U_-!OztrD1h$&K)j(O__ke8-ymJSJZkYTU@Lf<6*7#3#0iNJCzz(jD%$G?Zh7ZCB zzNOcpQbuEfZn*TWHbiBs59=ESgI8)WOA9WUXEj2jyzE%ev%Ffa2t8U4ZP52nUT(SD z5DV%xiCr5SS{2>Vb?1$$7046YHNhwIGUt^u5G%G+Uh`@lq|VSERbFX@p-iAU94LZN{@B?r) z)$8@?klt2e3RZn&@Bxri#WqaF=&Dmi=xbW7ZMA@2aiE_|nFZ@GjCrN$fjG{fJd={k zu4=f9&>+qa*Td+E2Kws`xdP=GAx}Q)ih=%`cG@W$#3TV}vL{TykOOs91B*eRlbK*q zrWKUXlMjrFVOkV-_^NE#>qrg=cs?eZo{ z*|5yR`ZNxCqq34kc|>bw#U`@4pO)F0SzMn>TS%MEC$8pJ^Qgi0vag}?3Cu!&Nv2h( zn&@R(iyqo54>&_@I^%W~nGbMHGF;-CvC(c4EyzBI=6EC(9KFkEF?9;rYrUI;RW=%W zz*ii-1x$RvqX-gb!0w`feCRR|Uwbnw?K2QUtIgzX278@KDNTkD$dxLH?1$kkqvs%2YD+7`i`eJNRBQM!yW}hfb+n z(Wr@bw^TqbH=2FA-KSa=SHS|FR@v-S(XJVmm%xEc)ZX;2NzO;WXS#cB%^A2f5%(x$ zin?=J=ea%&A(@2+@YZ1PRg}Sk(Jc$aO$vwyGLx`OIu#-?iVYewi~hnwbU3Wa%~5}K z!%%Z2von6vT5Vtox=h`Hp4OK+-asQEe{DZLX^}8?4|6hq;}KT9zRGS7&;~tQret*9stBT(=4hExQW51V-Qu3?+ry zel2@i+&F34`h=?(@deTlFv|OuhZA03n`9_?_y#IWSe!`eR%R*Fm>+(*Uwu$+ex7_l|X;XpbtI)f+z zB*@51XNTWOGI$}s83fEAo&*ubZ9qUE?nfI)7~B!#oP>#v8w}YX$xhmn z_UpAB#wH+2t4=01U*h^!e?uo)zMO_m)~j?Mc^r?r*(N2QsJrekWDYReX+VYQL*PjQz@~zTNH=V0>9Tw z!8dYy&RDEAt0>)5x*0A`Km+s2>v5nhtxF^CmRB>wVO^`R7u&LQH{>*2i74V+RUT;? zlxFaSO50bI3nFpYCC+tBU?pxAl?1N#h65s!>0CxhyR-x^&S+M>)@9wcVX4HI9u|H^U1VWYbKV1^<@Vg5>&aK#*tdH>aV1R!=lnGGPk5g_nbj> zDJYL|t#x%w?-0p=n%iUIhGeWIgSF>!^ja%)9D0Vj`fg)n*g~N9-)BLfZPySjW&;H56MsrO@faIU z0~YE)fjzh!T?wRiGoAegOnnrhuwfqtXw(D+D=M~?2Ei7hL!ch`7sRe~Zpd`}Mq`TV zX>~@zRskEtR23?~(iu@&J2!x9JGuUd(sKD8coBA)R|~Z(wy;>oaGhX*ZWJ6s;5fRL zZ}hw?3AzccpU6t7;sJy6MxlxxqREm?y4#J!5>c_AA!XLm3>c(JXs)4;7iH4f#rlvf zNQHzlAU$r)Yu8u8*#(JHc+wcvNY-G9l2)~2vXa|pwi#oqX$SlR4k`vcz*K@BK_IeL3T*h+=0^1exoRx5=%P5g3TrV62s`J7NaD9KRpDeQ3JXqhOO&*X0 zj1DmTfHVS2=)qUOX#E2Fn2~q_7mj|z<_;(g4Nfo$VoDoLpO3-3_y+jl*#hhe zI}C~}ibgY-2zQ_f7i1mmo52TSiCou#|AP*^0t~Noiej=IxS$>D)}oy^gP(y-c0!() z%Jbk6j3bT8bfuS`P2`rn?Rv4;WI(RpWZKOk6W2C_#(K5T2Xpck0~05#{6R9-9kwfi z3!c?6nJ9vycw7^%M0AI>))S)W`trK6l#mJ)m9U5DJG>2JD7U&=2#BSsl6yj1;<{Fe z#L~9S5q@=Dx>7PJ!JCyU>m3NeWuvu@%0g`*OjhLq*5nAuv_6oEGjT)1Z>1B4R^mpR zb%~TxH~?{(2K{xriZF$=Erou-H$dqemHANvQZK2ory}m96h-%(zPc{K#SP8ejS6K_ zsHJcs=25rW5|7#xUyca11Gfwwz-XZ~_UeqQB~~X^R!u7*m)0~FPejVr0Fx?q0{)CHSlvQ?q0aKM3F zOdxST2w%|u(fXNy3U2{2R)>*qQRo*WhJZ+4#I|q36#5vVDmadX72Ah_=D;~Y8&dr& zxYOfh4nR&ow9wd_!Cg{qFq4Mzssf}KR5Q!;G89CUgCInMLW&vD+q%9s?aRYf44BYS zY_=@KN)9H?0f-_X76Yur*m`eBdK^uQr&BJ0To&a2jWY6MgQT-eqck>|8C#S{z?Wln z<%U4vTRde^95rMYq%h&QBx~lTEyFgAnW8G~nO9~FKxB2rysgPqby88Vxv`|QwnF>S0sIBrXLOGwIcUV7<#yc4a9jN-bN| z?(U6r-|Rx?Rms*`!XxTumK(X%LPPGb%MDRjo08zh&KM>whOTkF*H>FbPH_CP;bPiC z?`lfz?m>Oall6&&N7&CSHFAr&s>B|Rn$}8SBdSXm)D6;V=-P$tw#*@RvP?^3CM$w~ zAY~R8CsTbBv{_kCv><5VWU4ghPK_zml86C@xq`o#RyBN9nl$UWMS;N}Nr~+JbS?rX z*xJHsvh1n)n{*BwQS_3H0TFGqJ=sAhoSsm-(|uURr~2`%&DqkYhDx2n+GrqJI^Ryu zfci#z7(vVIVZO@N3Sf9j(b-%-ReTE?-vsW+R0bKL4x=mnVz(~R!J`~0Ns#yL-XQYj78 z3}R8JZtk)1Lftg;Wx3ED1wHHnky>WwXm7K`3!G8edLx!^n-WM+Do*u1(U2 z&Q*L$`+_eRA$nDY3ObrrUl(Lb`gNG9;?sVTYbq^Oy*e}<7ROSv-HI6EYDLAclFUlX z1E;(b7c+T;4`#MiHf@1)p$s8m@W%Ei{P>lyr?k=nSTZ3ny9`6*H4ME64Ssb z>%;~9)Os))*&wtXiYX}T5fh0Tkh`heihr>(WJ|ID6_5s2N)nB4s#_Mt;SJVG$+fIz zr5KovhA&uThN#*u)0DhTpQUAr4!ddyp15XLX>#-BcD&$_*+j1BVlf%W1*mSU&JAm^ zP9xSTdddxNA~NRmlzK52;VHHwmGw+PixzMtW)OD!D*bS`lWsPHu3)f*KPd zH#DCTn+!0#(d_SYOgG*b{x*c6?xIs_c9=6(Kf-mDQR&)>yhnSTJxCS3O9h*t+cqWH zk8r)FLCvMs+i896qg=0LlaWzr)8!&R%JqAh1;g5MMxXi^*QepgRl4TUwct01(~7$F zautGR4Ti0a+0`V$3_lLSi(V5Qp8g0}03HWk^Y>v$PNF+jV9G7GhD^}bfs`S(B3?97 zJxi2<`^@xgu!1%zcE#6t-CVX65PJ0kQk?IE-Q&{ zUvXI$RH}DI;r3)G5rbp2F8ri}^Yg|IJNzBsbFwu$h4~Q@)V_<@RNx9U$Z
?ksZCx7z6H!l;dW7jB2`#HYm$U9C}G9bIlhkGfZ3+QaTOGWzV`_ z0A;1{AT7=YCW6^M*Rwfc|5;p2DBPq6%3y|c=$nyQ;ewYUDvB~prw(OS5};!5hG&Va zrbP3!R<~K)o_Z(X@)qnCh%D){xP9eD(B*v>1o;>V@xSBGNfgoO@*jj2J zL2o;3>pcU*!pcg9Nh*OKJ4#1Zn5Q;~9G`m_coIK0WGst$vr0YP=m#w3*XOe*i1ms-_C)8HOU>vO97E8ddC zZdrlCZm0yi*xsTkULOv#8}(F)QCY+Cc6S!F%d&-ycwZz~k<|xwJFKb7(pW&%rxu{2 z8b*7U&Qvlh;f5R*Hw~@56IS-AdFZIF!`$TH;HBS@`x0u3Ygx@LE-h`fr=d~OetE-} zt165pLEI1?l8&pYK&m9uYt~R<#N=|PdKu9F$SE42v1W35V%@CUmHl-X37?dW59nSA zxC+h+DDY-E651j8IP}zL!?6LJ2&X7SpZ)|#HnCLr;~Z%&BUx|-ek~-B1UL-8W@1Rj z>wD^#AAT(+S3$%ZfnWA266{vtSDQxST;}7b<F`?2MJ#bPyQ02U-}>tzSiJZCWl0>B>W=#NYFY&+9^o7N<4WR z770}0oR@AOIV#+*?nTm57OI3*AT!m&qmd4flzO!^{Bp`bJWA-$&zKIRqNCzw7|BAR z3dOXM1QhfWMvLvyO`zjmX&YGLXKm7Y%l%$As(z)v=q(-G`*`>H?(n~%QT5Y0h0nhN7+?c;F(Hog)zGjc`x^4FBw%MgB%it@U3(81~;#c=bw4)1Frt_PX%u)e%ZPuT1JDf!Xs5uWq{V#Wwi7 z*F95C^;!$BzVp1os~3=b{nT||7lyqq3>&^K40}ywkv-zIl|^oS-BIDwq|rZfxy{ihbq@OMf0lC5E zP0v*KxOGo@%bpU|d7;1OIt+bT$Mi2|9rFSYM!evYzd!>ovp(^{UH4KR;3p#Prw{kf zNIlE=^PF;7^dN8R!vFej<2G&Da&6P5&8khK|2F>xKobAnGzIwY{O`X4{5b#ny@0=j zf4>3XHdJ@>@h{%?^QUvuA3JdRJJ&w>e-ejrIsfk)9eaL~eyYyxqr5jd%p=_X=^n<< zY~gVSkH5g@h<8PhgafU|;k0y*C`BjV`3y5fmn5oi379OGwx z3*%q>BgVh`Z65!cNB%+n?kt~{@)+e2z83s<$CvmUed&++^gr>4d-;wpO{4cm7viqH z<4aYX{_@>Ceu&4<^Y~vF|NgBQ|M5o{zj=knMU3C(Z}9ywoWB179)X15zdP>d?{`1Z z#u-0Av;qYWYB4?(!uZ&iFz)&S#@+wH<0CvC#dv^k=Q!U}C$HlCbKk=_#($FQ+i`kw z5+kwrCj3MGa~O@^z~~)fO#LOsdKf=g; zWrW0?Klg*tk2|;G8{E0IgVT3ms=xEz6i&b6vlu_H7vt|sF#hSUVf;upH}oA1HtZ+-$HvFXll{wbe<-{8(~eha6+{RHq{od>^$ z(^o%+arrn#1*Y~pEhU@|&S1=L!&ve(leA#NT%7*Z!4H<8Qn5Yx{8eU;YQif9G%f1N=$1{^-3p|Dhn}|E;^N zIOB*N;~C6;TQ7@ndIGb});T<~Zk^|^UtGiGOKFTNk78V9F$yrXZx!$lBKR#n{|_*V z?nmzrJs>M#T-Wl5KfzWV?)t4kOnh4#Cr9OX-Hy|Dy#*85UBC8bod5nl#*bk3yX$vN zIQ@s1sPFot!#MrNvpf2)rH+jTVeOCq# zy?13!^Z9tByDP)LaYoPQ`wBtX-#IGZ_WPJPw|(Z@ zIQ_pc^>6z;{`T9xh}n4C-{LOb_N6es?n`AJX^daKi^pFC1p3?d<=^Bpevik`@%SZ- z|A_f}+xI?%(~rIz;{gfAW7jdBIg0TTrt)pqaF1=9=JV$<4Q*Sx6JNKo1@r&5m7RRX zJ9zvskDuc4FM0e29>2%qqZn8J45N(iDbpY0v>OxMw(uu$I>q;J;eX+D@%J$QZ!6(% zvaS3txS)*Zgl**~`1Bbbr+CEU!nU%3PX~A`@HoI&xdUV4vlyw^2)A$j1B`FI8}tA6 zU%@xn{+svUf{#pK`~?0a+y4N6g6)6wMV$Y~_hbB%`*_^V<0&5b`hSACY5Sk(_{-~c z8UD7w-)-=ByKrI08@}|N+qQr9lc)dU!8hD{`d1!&!_WQZ_Rl^xs_^D*X&&o5(ipeD zk;i*ct+x={{~WW!_Rs&{qk`>U#SLu#7Ut*e|2c*8A6UY;cLU=|1IF{1inm`ofYbAD z$0*!~abtnU5g%{bzQN(Na>O0PrtKR38`&_`Zuj7Me0z2oUziPHEMWH7PR)(dJGOp? z$47XS@`%TU9d~^Ir|bBJN_IGI6J=j1zi3O;BQ3NJHGMr ze8zit=`Uma zJf?}ezwkwz{yQGO{!8fnH*LE6>$pqr{`&9Z^tU}2ANXw^Ph;GRXRW(0-i_1CBO=;# zw;q3*yWPKo^ZoeS-|hb-PDgKGOx%aDyLE(bdJBQO_Dvr>j5EIQag6u<5ysu;Fz&&h z;!S(_>yP0E-!%ReTt2;kQG_4(P0l~T=_2mAH+67NzKQx6&Zj<&k)Uwb-?JId!}r{N zU{r9=T^5YLq`~<99>$Mjw!7z(cr3r?Gmqf>&u-)KmoR?*7cu_hZ5Y3S+5DdSzK+v} zeq)5hJ(u2rGp2CY-Lw25oR;Dx)IHL1oYsCGqwz5wkMnqqNB#yzHJ^6#nC7vK(R3S+ z_aY=V-D7$upYhumBZn~d@a(qpZcN2H-}9wW{?6aUpJ3-F@weRhNz7h5KZ8Hv&d>cJ zzV35)K->AbukvY3^*cZJ5T8c(0s7ndxl4S;Jdf)<+IWodSi|_0_hbA|C&oPwU_9|4 z#)EvGc4P=U;AO99!iPJ}tU*=NP8;onslkpo8(+?L5Aj$6w>|BRu|39{-BR zZ(v;dEJn@uG5SA+G5H@Dv(r3^G5_z(8gT}{#M)UK;B@^C9x?y!tYf0tS;t(mv(DeB z{x|$}|H9)BczlA#GdxaVv0%Bks(zTh$>m)G z9V$|1F4I~3T&6d(cHuI;o$Mh8&reJ#?`Sx<7U38krO`hLLn&|v&e`UWzy}@Dd()ot z1Lm#9mW}X3>d_&832|>0M~B`w6hFp37KY8CPbCrq=HQS=IEv-pVIsZlFmV<6>6dU$ zEH0uf99GOAUga;l$~E#Xu2%bMd%HOY99CSIj_%uT>V`niI-AzRlqxb?5MlhW!@}`!DC&!7sncXLzHS ztSW2D2-yJdZp0Vr(HHNC->CgfGu9x-vNfy*#~MNC&zj^ILSZ|`aK(-(D`{_d4x3W& zj;&7Q=C?>}-+leRY1C#WDY2C?BTOohO>CQOo zPn=B`JI-#ec%fv;ahy|;c#e^&H)G@;`2y#L%8zitR9t*O>I9d!CSI=X)}JBXM%O!j z!)$RpT!s8e?rV<5C2tbfbOm<~5;jp+dlu&_A=bKh_Z=Dy)nZzAofI^m{oiCact{vzz1hW+cv1eq&8l)X*O`g7_( zQi&Pz3%OD5lc(i%`4ESM%M=`43a9*mvxegQUAQ_1w~S@}JAJd1#QyK(Q#{})b0rTs zP6rrMrvn;_gC%J{SXZj&4$f4p3pk+@JkgZ=x#i4%r%US6>)OF})_$jlEHF;*ysZy7 zSNI#9Z=q-iGR2oSrVVu*gS~&OCKr8A!DVd09jvV$yTzv94aTv1#%sZ;yKr46f367IPGU#E9Sq;IPGYh zb~IU6G`Si(m>eio6O*$Qw~;;Ma5+^jl3&W*@`SuvNpJqZ>CqFgzO7Vse&25^l?-&5ao*bAb6$dMD4EWl^ExW-ZU2;`;qnC^a9N{b z+p4PE_kp#c%VF+jE+=XbpId=HHp1(LsPCA&{1HU_NVW6g0P&j;OIO=PEPmFmVRJ3f zgG5PLiu<5zsSD&w@4_-HrLJX@iOaH5xt6^}T&^EhUWU$h(aXGAEqSS(0(JoZEThT$*2i=NJkn`kfxm_NSm#~H7An79euE`8VCiO9 zHkJjzt!%auZ6vkeR(81JsdAD0QqrYvWlt!+ij~?(?WfXk#oAA$MT!mWsM2mFw4+K_ z75^ds!OG=iH5n*lWi~qP#z1C~TYZYvEw=*s7HiRHaX<-cI@sJ=+)(@&nMF3YmX#EH z%21hv9~_X{&j&XYYd>wR(B{@w`)TWGB@DN=+R=xH_&`tY>uy6*h{rH(+-7`Ayii58 zbP4g&O<1TaKF4j=?a_NyzMAt&tjCyFYj~YF$GT@2wrV-tG^*tsRl{X@SH8sDQqmcl z&6n1WY}K0WP^|qlyR2CIY4(!%f7(y;@n&q+U$u_fL7#_gFsuQNH|MAMRc+>B{Nj}S z8P{pM@81#Mn`l|RXnm|nk5!MWNu0q$Y4wcX6~AKsSI=bLR?lRqt)5wn4KnM=Ow9RS zYDYQ0D>ipzepSycEw!KAT8g!wJeK`d~lhN9shT z@gU*8bQ#;P`9X41a$mzUq5ImRp>|YwOR;veu_*CI?P#O7 zV(n*RisGiSqwJ5nhvTsomWKOzriuHN)-+t_=Hvbw^VR*H2l=P%@a0VW=bU_jZ%Rrh z=_jLPx@;l4*fnf5irldhHHxsK8bwPI7iC8^iux&LM>TX8tD(DCjbf3sm!@cIl>VEz zOj&e#g8thu;$KX%PiwROYUC^;(Z&}$cEyiI${E;a1omq#^W{J}Ue1-Pqz>HgF!A6t zd64;EV=!G=WAIHi=!}OHAs$j$df`wO^BSW&5RcatPtX<5JxPB30o+p;4<+HTS9o@= z{rb%wxEx91=5~1m?|y?1k4kE##>2acU*e-ulJ%g*BY(xw_?+2Qsi#OYFt>=vogaZZ;m(sRfUkQ)my^iJ`0q9$~AA z>lw#*6T27_CS$Tbn5qw?(X}3FZnUS>mNBxSY>ka%(@%+;|AVdEQ9m5zVYF*bq9Y57 zN2eU(PP)=gy%dj-)3Ng*`3L4#m9esuoGQ0qmtW;GOT(jUF%n(1gRV7+yQ@cf77+L0 zuTCEQcM}hMghQzvk1+>`$DEZnpld~oUtobij)l@{p43LME7u=05p@C@i#kgYt^*|VUJ;?Zan%vNHR+#y+*JPWQW zW(oByct<=_T|2X;Vy2r_$}WlHykAIiK5(&ofTh=hxScIH{3Zu)v`B<#CNLu<9CQp@jUGLgLd%a zQu4o4z&pD3J4+OAlKbTu{FD2m=cE4-zbwR82KP75R~qG4I>UE7Qh1eM1@J0A*!qB% z18b&Nb+-5N*g)Rn26~!3XnuKlX39_GSCT69@^T?Iyc+SwYn0@Sy}T(yFK=$RUNu>Q zylSShT}`gUt5yhc@Lml45u*b!gQ4_lt_#YiY`q4sG8tZD2eIL-wYc0BH|OEOG(5`^ zG-QEfjJ=&V zDQ1klozE!#MLv@6(B(bpAw#fQgsEY(c~@(oL^E`Mg*8~RyggV6yuFxk-rlol_u-Ml z+xI@PUwicLBIyb5THGbPYkg0?He>G{xRJYscc3;5qAR_F>ak&vb`(M_c!yLaAHoXZ z9nF&C9nW;~PJ2dsL!D6TEyTTe?DZaWlX%!f9KMyih4=91BtEGt2jGaJ_^ElO=9l-U zI?-7=(OEjtSvt|V>gu`b>bdIbB_HznwM%hRs7x~Z-~964^&Ou0Odh}=g7G{HkM{+| z7rK(az+J}sqE7TdN%9Yzq@Rq!CnfNC8EH`M-p>O_yk)_uS&p%;>GIgh*YsfC)(oU8 zYsTLqpTP90nH^8uVI2-Gz)9NQ?CHddQgKT|G`2APYHnGshSRw1IPO%u^Sa`Pxce#Y z;mT|7VWFzI$D90-)%as?yvE(5=FL;Y_oxx0=A-c>p6|uKOG(bur%I+3`&4;fc9TQo zBy^l6KbOpN9~V|WAD088QqTd z(TuInXr1`zd*mm4ic{1>Gj9;D{Xv>FWUqgpwTz|DI>ypx9b@UUfhzXdKo$FJpo)Dq z#jt}-6p_y+mS&$#ACdoBUB2%K@qQif05#-ukg@mq_JwtPo6mPT@ZpMl;KVA_H1oN@ z-OuO3MCIqpHF)_;sUEm|g7~L1@)!9?zQe2fd264m9!iABMA=xjlYOKi3*-{HN$!_t z7`71M`>W{r_uX{3RFj zyQ8T zVNQ4Re{N*|^0hI&eM_=l_*P^g^mSaJ4cyAGp;s-e#ZdSLa=-Tt*+o8bHpb4t^;d!={u~4 z;suhS^Bu-tbA5-`BtN`~)P)`ELt3}ZO~zmz$|sT84K=5FHb{g_8j z`L)d_?%D`@T#|R>3%iERuP0sV*OMag>*>b^J)>m0Y$3bIL2`neCs)hu*jE?O|99e# zkK+J)aht>7H;}IO8~m7tp?>mzIGiH%)4$j7`-F!}zY)}c-w0~JZv-{qH-Z}Q8$k{D zji3hnMp6TQBdGzuk&~_C+x$lB1LJ}?;FJ_B7>)DIS!{m!eZCG?GNyiObtRknk>C0U z?$QP9YOi>qynx?u^Yi;Ale?ndH)GU5_51C1C)Q7@`|UeKd?*7?Q?!0(BZ<#H#2el4 zVR?MQEb@EuFY!}d;M3NMCz<_ke)&DsSUvrX_!;xo?^%-K-jYWyzc;n4*xxn_i_xY2 zr7jXzWr6Z{@FI4|La)QGxm6Fc*IYZ*Vt{w3@d)3-({##z-R#rOy z1Ko)avwrv=o=SXq6yBv+{hxhJ{BDb-QLFR|>rJiqzCnis^x^}x>To5s>co(b?}Uv$ z!8QyJ5nl zvoL`Lrgjq@pzS~8J6FWs%j9Mp#sXG*QatfwqcLwjvp=@jY_-?w%(k5;-bZoPJ{&@P zf(54b*;d47shQemshQemshQe8Q?#}3sQq^x`1h84?stl`w(;}{iDyOdEe8s;G0g&P zA6xmr_g5lK18bKwuQHeoiw^98>iE+hc?F{@Nl&TIM<)@- z(Tzb#m5DQS0@(%+Zb8{^X=vO6Tcl!}CD_Red-TPRtK%TlOcoL$$+UMTtjFK*K&<<^jf1(Lv+BBrf<6mr&tB zg-n&8J*@XZC%mn8BS=5|8ua@DKJfCXWpJrXbUJ{(+`59J+7ZY6fhqJra27iZ&RI=9 zXFE1!5efc)N)7JajQo&Bb`4wbNV+_DBwZLhau6Hn3WG<^Q>-12)Q(3UQT~#=BVV9V zQaVXL8HHo*MQhey@Yv%dCNjr@C+<>AZ3ItZ?1QIelb=S>22WFuOuI{ddNs-F7Ce2d zV&-`8boJN_5Ark2p0MvKc*aB}cFRXtP!nfS^}(~aLj}+On*7r5an)=kkl#84Wmx+Cgh7RmiMqkq#P|N zx;o`pck4LN^>y6xX?HUQ^2U1@23C+cl47b;Zy~Y%v1Xm*wZzHPPMwt1#2FnVV_zrh zIdS$Vxg7IOqtS#hsng^Li6*~e)3Vr{v8&VkPvQ@!V~<&KEA~_m4%7aIwI@H*4VS#b zb=qz>#c0&o{SOU?o8m>rsLsVNiEk)=#n^{bpg2Qnw6oen0!Ltdsy?K?@=4s$LNeRX zp2KlMas!AzuzJ+6g>>csA$^%%AtSD`!Prl5E>9^Tiy5MjHPk}LW>4C`ejoQxydg)T ziBB_oLN0UD3Aw^8H{_=Fd(&RThRqgo?=T;D$}|jlb&&XVFU!!fgRutH9U2})+~6`c z)^=^UkkIbTiqOILX&<=~N3-&UPW_qq3v+2Vk8cb8`fn14DVEUl7l^M-lAq!2TKI@7 z3Vqa;Sln1!{;Aa2LB3+q{q zxMwvPC}Xj2fBfW}yeYXGhK(pfJgNasVciIu!ZZz=X{bwPvJQmJ9M6U`=i=gET)7!H ze1TiX;qH?79mN**oqFuMKgb_uR)ihqUJ-UWocw7Gjd7+ti8FmAV;^?0koe+Wyh>4q zUDcId)s%d*acibzT83}!rg#V*`U+1+*fnh7mwqAf6Ki<*PgH049cm!_ z5!D<1f-4RGcaODwL`jAsqVh}P>I`Ls&wIpye`2VtM-NBT8$~{DfT>x35pj%VMBE%T zti&{`JRSV->M^ z3Ju$bO|0nUW4?UNm!J9aH(#~PSAhAdy`!R6;N0Uz#Eu`Wt*t+-hwftL+v4nDXLZY1 z_fztUye;X=Sa&A6mHclX<{2IOpOuO@#C8$K)yF?9Ab;hq*>UDq#PwEqn>vs9vnBB( zswd*P1M%N1?saX8thjEe=UAE(u3MVz>X!CVo|UF<#W%#2Sy}43{!Q#=uol*Jt4E^R z2J~Ky{y$>~j~;cSse-zRTtVFiZnQVZm1E>~c^^}``_xTss(1n#soyB^5Yv+60J#>^ zuOlm)t!~5bh#SeK3}fBqI^hov)812`AHI-y3PVwM0k=7$?pnsQ?oJOjI64+D9mG59 z@r8vgvIt90WGSv7vf>G=A+n0S25q)T{VZ6d6Q7H8>rLL1>WmDYMqJP8VZ#;~A4(!V zN#@D+k_i_XKT7dTxm12756H9fhJ1_(7PiQQO2pRp!p-`N)IXt)OxsFBdW@tNA~OaP zXK6W!R9^+wLrfoD>@kuxdY$T`P3z?`3Op+2`tC$ff{L*)9MwC~W3J5v7!JMvgX8jhvN zK~lwZj9CzQybAf_>2jFdD5>tq6DrE{L&#r#fY(^qBCi=iByRS_hdSejUn|y?{PO|v zKO^xCClpm=p%q8j7ftgksyt&JRel6<)i2PQo{4f{?4vwilQ#ld@}^Ed$vln(0AFR@9IqNGH;`w|7x|@E9!<7>5+P_r-^H1VbD^n-y9n-P3xu7<@HiC$Tw?? zogJ9}^#-&iF_JE;H~J^yNfb}LNmO;c>5O%~IXSe?WeDoc)#sPLM}E1743UYF3#(VS zfVglS^S@rs^a9NZc$Xb!E5j5kF=Y)O*acPrb)S$v>%pFPfr$gHC;0RV%Jr|e`}oLMv`e+|BwsuDXP8x*@whu|HX3^@!I>c zo260zUQH5@bLEHluD~*;EIktAP@cH@x9HOt1L^XZK=u=(Ujr8t%Jho~oyc~f^D&+i zjme#Bj}2Q)yFX~?Nf*ZS=VlQzx+nSBjCIUPXW}hUxVsk~Ux4~6Ow5CZ#BXolyFHe% zB}d7b@}j9(f3YR+D)AaiQ5>Z8rNyV%=GhV%@poSocHL1~%LLf|r4j6F+)*i^w{o!_EH?=Q*IIGHz^(FtJSnL-EBJ38=GoOcWu;<+ z)?uW%Y?)uN@$r~8kVzcdkP3)x!eowZxr7b$TLWU-F{xv_M3V3M34W}8A5eyP02dQG zK>aqLKKWrx_SjDz5s$Bh6OG5bnf3x_YlIi}CSKkKzoar^w`34+(}`^Bu6VILhubxf z+jRolskqqf%hYbKAhRco9Xj(J>XIGY%wu<~VuPKObnIT8@jlkc*h9)6)(M=u%=S08 z;p1ZXu7_n@MHc)x_qxPE^oS7`dzeH+#wxD$72=OrE#ii}Bi0=zZX6XBH>EoH8B1}t z4=(M3o1JiHN8Cq+#_eP1;`UjkY}n%VeXb2Q$UTzciraTh@t^Vy?k_K^%ODvi8{r{y zu9#nOM<>bc@;6hn{^Gu`LgJ*qY%a&j&GHvKRYAr|h9K?~%T(Mc_2?;vD({#7c@CSy$s7Dbjey zmb5z#m5bzFZsPHdTv@zR5gMGBj`2=u#BLkVLp$=}3gQF5CLcs~$45>iPV~j(zH*vm z9f?oYi6-AL```SEPi9QxQ&{2SQ>fDTlswu~dP>GHUVrb3PdPw7eHCV}!R9-$Gt(^o zqxXpiGGy__XyVBn-xmMrZzMh&g-iHrO8n~K#Dy~?#S>q6op@tOSx2^zBXRRbxZ@w( zzZ;L8LF0lpy!3*^Z;XBX9reUrUCHk^X#f2&-m|d9->an9Q-;bUsUE!7UU6SJ%F>9x z|BA#jrcL~-Cd98kmUHC}%YBcD zSyM)!{((wDCAu;}zt$k3ay8m32cp|wSgnL~loVw`wMfNjrsnu3RBNt8z8omW%eiuu z+$Impi|FHuwYV1~)GAcGSF*w;gtJa0gqy``ufK$Fb#3@jHVnTk@5+}LQA#>Xe;F+^ zWJ}pq4#rrDFCi(BIH|F9d|N_NJ0<#HL+)A$4YL%tlB{$I4OvJM8ctSzfm|nd$z$@0 zyeD5{b{YHin>~>2iu(IaLd%=PEuY}~EKCXSS0?UoRsJDW6CKMDcT`PuR84e@RX$s` zkwy=_87`;FMe<9z8+&j!OXw9t+>7UegkG%`Gv5>X{lCM=_nRUY%JtZ=-#1Demp{q- z@^9>4R=UaBGDbF>xaflj^HtY;MebPiL6mQCg%M>-0lwcX6O<}*05qDaXL5N#Lus@!3HK^ z;%=%c@q4;9@$@a)FTTW|_TzOH?ZjU*h#xFL{S7avRCg;*s=x^)RT!&ywq3)PRAGe@ zoOx0Oc9>M*yz;-wXIQbAtSW2D2-!e3!zwIwNlqTbPRct?G-I>=lJrY$lH7K(f!m*0 z%~SqQPLg}%W328Y-x#SP5%=hd{g{?X!&x7a^yAD)6PnUq&>m-LNMoJ0 z+4J%>R=k03Zs^C3l0)5zqiSGWB}`@^OHNK9PGdn!Zb;82H>DPmjn+5V;Da>mM3*IZ zqKcC{QLV|H%)v6hk~@7Y$I97q1?s=^B@dzJl1I_?$&)(MUT_o_vhW$ns~E%Nb;&do zvaloG%vbx^*a94$XJHOwx3wM+@BI;9vVlJXw+(-aqaD5ZL7 zYr7N=#xTWuH?jXX3}m*Xgq9}`tuBLP97b`$DN*J$HIHvgiP8?E25Ex{a-Li*w`2WZ zFrFSrNz(QWhLKOF$5OJWjg%~EBPC}I?M><7l&1P$jifZqRzn+nKVJ@%+ zNc1ZwtI0qaE3;)A*+UMWICyK6`HD7Q^>z&2TEE9LBV~ZI)oT4=AA{nN_CKsJWdM7~ z=)K8`GkWiqTzW?D^NOi9EBJ38X4M)x(=i&GDTl31Qf5uXg`xK1HaGl&+fB-958^^6 z+@$i{#$6+2_jvLLxlN@UD@A;ai%2=@(dwkw+ik z-``m_D8^%HgJR~5*!*fx>}z>JzQE!xGDfnW2E|7zUMjzpzoAj0ByUQv+BYcCP%(Fz z1|?;1J7Sbc%MLj9^x8= zbAN0Q%LHwZO$6Mj)xp-v@-nG|?dGZY&+Dq0hOHTv+ z&Zg92+?Z4Kt%6h!#x6DZwzYj~-Ia2yq-Ij1S%XvK-;htE#!|BjiE~*1Qgh8Av3Fi- z?qM48&SKjN_)!Gvr^ZtId`YZdKag6Wc*P*{J8$B*m+|;?JUIZ*vOuJs%~ssTI=(IS zY!4-d%c*ja)PXKgY^gspty1s%(f;QleC}hJR)nQ5tpYueR*j)etHplPYBOEaYWq_> zX+Z&eFyy4XCjXS$k?xymx^Je12GJfGhY?KUwD@YonRInpBYj@q2}sMoN_#*3)pB2E7ToV3YwaoXf@Y(II9Tq(EWv@o3842>_!@n&g% zTwM{jZNsA!TiO+>I_(cDZA*K@(4?1SmZX=?vKrFMelA%b(#!5qOwXp5y{4F+HPXw{ zHR2(>t9a&aW@6 z6E|)7dWb8$e1W4&N+;IUXLUknRm^9* zkiTH4s4kpS;x%6Ml39}Jmwr*j_+wAp&^U7%Tgt&DPSy|Fk8Lh(a|SDg8Z-*M&Z zgjs*HYW~DMl^u=-1f5tTG zF=LK>WAl_gyMSN(fvd9Znw_P>&nO&1!=wBSs4%M;*6)ObR#a;1S>X{?IgpWS<${X zn=P{gfKxeLm11<5FQyaLpRVKQ4izkvCPIp ziCf2GXW7TRGV?35FL&h3enG_jSYk3i=CLz#&>o%fkPtQ)wjD?OgoZvap%d{8p0YA$ zGc=j=sEN!4)J~>;I5KltOSa!&6`3uwa0BtyvbdX?%KXl_N#gKPJW@(#NFC^i+K;OJ zsM?RJ{S-?|<_|jX6_%FFt2~=zUj38(UDJjA#zR=9@$exHPonX!82o24zALoMvT+4j zHlAg&Y$uiH09iH;kY#&AzQ`dgIULKT$>x$GH?qo7tyyKq(@^ddI_Q92$BBJ8(X8MR z#7SIvR`UenP83^K|5V~p^hnl>pNT)$iLL*ac!za@hAnGvTN3==I&E18>4~g^baB=} zx-{!xSGN0BSA5ce_{XXEb7j0!7619fvSFo)=(z#|KElwsre^&$toMXOav)~y!KT63 z{2sR2BI(+OthC3JIQJui0 zBE+|I@L6rk?4nDsdRZR6~>lf%}SL#8&av{2PWd3LS9V1bjTF4G#th1AT zB%j+J+cKuvJ>rN5Pr-4VaQ3VN#EVmK1yAzX`eA|W^%Pav{xUDYkU5fhuS7hJgVXKiX(#kh-Vt^LV<- zS=F0(E7LFMTOIh^Tk^LkvYdPI#1BeIhAiiSzv5__AzRutY&j3K;|GJ)FcDvRS>{&c z-jG}K3UMsk!Qz*8Lo_nfHx5BoTjH6UR^>Dt<4S?Rp~$0UQ5*Z-#C2lBP0^~Znv zu-WoD@1ni)VR=q6Ve>lQQ(tvv)bsL-ut9zW=_-9?m}Fw+pBy14%eiuyER?(C zVR=seY}c^mb-ky=U)ZgPtRP*buMCs%GD|j>9b_*#RF0RQ%EhK;{pEFAr^GgSP@a-k z*2=u@-IW+9N6YDQfm|gw%f0fLyeMzV2l6$3R66Ln)|+*5n>;8_$t&`X!LBWM0Yt*j+WEq z0=Y_VmV4zfc~Rb!59Dj?RYF#_H1c}6D-j?gWwOkXtz^FJCr8N1a;{t^3*|0(Se~N4D7|E`tS{4K6V3lVZI$RQ2g=cMx?CVv$<1=FJSH#7oAQBtjeSeV%9{Uu-IWNC zkuq84$W}66_LC#zWI0zZlZA4ZJS@*?{`dV^iF@)d>{moqkgn2KhRJxDC7a6*vX>kx z$4lc=y;&^R$!+qWJSDHl+wzHgi~Y+;N9iSlWqp~3P5U=dqOI&M2g=cMx?CVv$<1=F VrTNE>{hwt%DZgXXs?0V;{tpN$F9QGo delta 36818 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 DQL2=m diff --git a/documentation/docs/01-users/05-adding-software.md b/documentation/docs/01-users/05-adding-software.md index bdae64f70..f5932bbc0 100644 --- a/documentation/docs/01-users/05-adding-software.md +++ b/documentation/docs/01-users/05-adding-software.md @@ -34,24 +34,24 @@ Another section with subtitle ## Code area -Use `three backticks` to create code area +Use `three backticks` to create a code area -``bash +`bash This example is code area -`` +` ## Simple table -|column 1| column 2| column 3| -|-|-|-| -|123242|234234|3| -|some text here|34|x=23| +| column 1 | column 2 | column 3 | +| -------------- | -------- | -------- | +| 123242 | 234234 | 3 | +| some text here | 34 | x=23 | ## Task list -* [x] Do this first -* [ ] Then this -* [ ] And this at last +- [x] Do this first +- [ ] Then this +- [ ] And this at last ## Links @@ -62,7 +62,6 @@ This example is code area You need to use the full URL of the image and the image needs to send CORS headers, otherwise the image will not be loaded ![Mozilla](https://cdn.glitch.me/4c9ebeb9-8b9a-4adc-ad0a-238d9ae00bb5%2Fmdn_logo-only_color.svg) - ``` ### Document URL @@ -89,8 +88,8 @@ The software logo is shown on the software page and in the software card (see ex The RSD supports URLs starting with https that point to the repository website, or to the actual git repository, for example: - * `https://github.com/research-software-directory/RSD-as-a-service` (website) - * `https://github.com/research-software-directory/RSD-as-a-service.git` (git repository) + - `https://github.com/research-software-directory/RSD-as-a-service` (website) + - `https://github.com/research-software-directory/RSD-as-a-service.git` (git repository) - A **Getting started URL** which refers to webpage with more information about the software. This is shown as the "Get started" button on the software page. @@ -149,13 +148,24 @@ If you have provided a **Software DOI** in the previous section, you can import ::: -## Organisations +## Participating organisations In this section, you can list which organisations contributed to the development of the software. You can use the search bar underneath "Add organisation" to search for organisations already registered in the RSD or in the [ROR](https://ROR.org) database. ![video](img/software-organisation.gif) +### Organisation categories + +If the maintainers of the organisation have created custom categories, you will see **an additional modal asking you to select organisation specific categories that apply to your software**. + +:::tip + +- Custom organisation categories will be shown on the software page below the logo and before the keywords. Use the "View Software" button to see how custom organisation categories are displayed on the software page. +- You can change the custom organisation categories using the categories button. + +::: + ## Mentions This section allows you to add mentions to your software page. You can use this to list reference papers, publications, presentations, videos, blogs, etc. that prominently feature your software, or the results produced by your software. @@ -164,7 +174,7 @@ This section allows you to add mentions to your software page. You can use this ### Reference papers -Use the *Search* box on the right hand side to find papers by DOI, OpenAlex ID or title. All the relevant data about the publication will be retrieved automatically. A background scraper will use [OpenAlex](https://openalex.org/) to collect all citations of reference papers that have a DOI or an OpenAlex ID. +Use the _Search_ box on the right hand side to find papers by DOI, OpenAlex ID or title. All the relevant data about the publication will be retrieved automatically. A background scraper will use [OpenAlex](https://openalex.org/) to collect all citations of reference papers that have a DOI or an OpenAlex ID. ### Citations @@ -176,7 +186,7 @@ You cannot edit the content of this section. All entries are automatically harve ### Related output -Here you can add all additional related output. Use search to find papers or other publications by DOI, OpenAlex ID or title. It is also possible to bulk add mentions, that have a DOI (use the *Import* button). On the popup, you can add one DOI per line, with a maximum of 50. After clicking on the *Next* button, we will fetch the data, which can take a moment. When that is done, you will see an overview of the data we fetched, including possible errors, where you can check the data and possibly disable some of the mentions. +Here you can add all additional related output. Use search to find papers or other publications by DOI, OpenAlex ID or title. It is also possible to bulk add mentions, that have a DOI (use the _Import_ button). On the popup, you can add one DOI per line, with a maximum of 50. After clicking on the _Next_ button, we will fetch the data, which can take a moment. When that is done, you will see an overview of the data we fetched, including possible errors, where you can check the data and possibly disable some of the mentions. ## Testimonials @@ -190,7 +200,7 @@ If your software is available through a package manager like Anaconda, PyPi or D We currently support the following package managers: [Anaconda](https://anaconda.org/), [Cran](https://cran.r-project.org/web/packages/index.html), [Chocolatey](https://community.chocolatey.org), [Debian](https://packages.debian.org), [Docker Hub](https://hub.docker.com/search?q=), [GitHub](https://github.com), [Gitlab](https://gitlab.com), [Go](https://pkg.go.dev), [Maven](https://mvnrepository.com/), [npm](https://www.npmjs.com/), [PyPI](https://pypi.org/), [Rust](https://crates.io), [Sonatype](https://central.sonatype.com/), [Snapcraft](https://snapcraft.io). -If your package manager is not listed above, you can still add it, but we will categorise it as *other* and cannot scrape it yet. You can [open an GitHub issue](https://github.com/research-software-directory/RSD-as-a-service/issues) (please check for existing issues first) or contact us if you want us to support an additional package manager. +If your package manager is not listed above, you can still add it, but we will categorise it as _other_ and cannot scrape it yet. You can [open an GitHub issue](https://github.com/research-software-directory/RSD-as-a-service/issues) (please check for existing issues first) or contact us if you want us to support an additional package manager. ![video](img/software-package-managers.gif) diff --git a/documentation/docs/01-users/07-adding-projects.md b/documentation/docs/01-users/07-adding-projects.md index a979acf01..0a19e9004 100644 --- a/documentation/docs/01-users/07-adding-projects.md +++ b/documentation/docs/01-users/07-adding-projects.md @@ -8,7 +8,7 @@ After signing in, use the **"+"** button next to your avatar icon on the top rig ![image](img/new-project.gif) -The RSD will automatically generate a *slug* for your project based on the project name you have provided. This slug will become part of the URL on which your project page can be found. +The RSD will automatically generate a _slug_ for your project based on the project name you have provided. This slug will become part of the URL on which your project page can be found. There is a small chance the generated slug is already in use by another project. If this is the case, an error will be shown, and you will need to change the slug manually to resolve this conflict. Once you click **"save"**, the RSD will initialize a new empty project page. This page will not be public yet to give you some time to provide additional information. Next, you can add additional information in the edit sections explained below. @@ -63,7 +63,7 @@ project. Therefore, you can safely change information about this person without When manually adding team members or adding images or email addresses of persons, please ensure you have **permission** to share this information! ::: -## Participating Organisations +## Participating organisations ![image](img/project-add-organisation.webp) @@ -83,6 +83,17 @@ Regular users cannot update an organisation after adding it to the RSD. Only the information. Please [contact us](mailto:rsd@esciencecenter.nl) if you need to update organisation information. ::: +### Organisation categories + +If the maintainers of the organisation have created custom categories, you will see **an additional modal asking you to select organisation specific categories that apply to your project**. + +:::tip + +- Custom organisation categories will be shown on the project page below the keywords. Use the "View Project" button to see how custom organisation categories are displayed on your project page. +- You can change the custom organisation categories using the categories button. + +::: + ## Mentions In this section, you can add mentions to your project. These entries may consist of other research outputs such as publications, dataset, book sections, blogs, etc. Where **Output** typically consists of research output being produced by the project team itself, **Impact** is generally triggered by events outside the project, such as re-use of results in other projects, publications, or society, items in the media, etc. diff --git a/documentation/docs/01-users/07-adding-projects.md.license b/documentation/docs/01-users/07-adding-projects.md.license index ebfe669e4..8e30ff427 100644 --- a/documentation/docs/01-users/07-adding-projects.md.license +++ b/documentation/docs/01-users/07-adding-projects.md.license @@ -1,6 +1,6 @@ SPDX-FileCopyrightText: 2022 - 2024 Netherlands eScience Center SPDX-FileCopyrightText: 2022 Jason Maassen (Netherlands eScience Center) -SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) +SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) SPDX-FileCopyrightText: 2024 Christian Meeßen (GFZ) SPDX-FileCopyrightText: 2024 Dusan Mijatovic (dv4all) (dv4all) SPDX-FileCopyrightText: 2024 Ewan Cahen (Netherlands eScience Center) diff --git a/documentation/docs/01-users/09-organisation.md b/documentation/docs/01-users/09-organisation.md index 2163fe111..e4dd94846 100644 --- a/documentation/docs/01-users/09-organisation.md +++ b/documentation/docs/01-users/09-organisation.md @@ -9,29 +9,30 @@ If you would like to claim an organisation, please have a look at [Register or c ## What can organisation maintainers do? -The RSD distinguishes between __primary__ and __invited maintainers__. +The RSD distinguishes between **primary** and **invited maintainers**. Here is an overview of what each of them can do: -| | Primary maintainer | Invited maintainer | -|----------------------------------------|:------------------:|:------------------:| -| Edit About section | x | x | -| Upload/delete logo | x | x | -| Edit organisation metadata | x | x | -| Reject affiliations (software/project) | x | x | -| Pin/unpin software/projects | x | x | -| Invite maintainers | x | x | -| Remove maintainers (not primary) | x | x | -| Add new research units | x | | -| Remove/change primary maintainer * | | | -| Change organisation URL path * | | | -| Set parent organisation * | | | -| Set as official member * | | | - -(*) These actions can only be performed by administators (see [Administration section](/rsd-instance/administration/#edit-organisation)). If necessary, contact us via [rsd@esciencecenter.nl](mailto:rsd@esciencecenter.nl). +| | Primary maintainer | Invited maintainer | +| --------------------------------------- | :----------------: | :----------------: | +| Edit About section | x | x | +| Upload/delete logo | x | x | +| Edit organisation metadata | x | x | +| Reject affiliations (software/project) | x | x | +| Pin/unpin software/projects | x | x | +| Invite maintainers | x | x | +| Remove maintainers (not primary) | x | x | +| Create and edit organisation categories | x | x | +| Add new research units | x | | +| Remove/change primary maintainer \* | | | +| Change organisation URL path \* | | | +| Set parent organisation \* | | | +| Set as official member \* | | | + +(\*) These actions can only be performed by administators (see [Administration section](/rsd-instance/administration/#edit-organisation)). If necessary, contact us via [rsd@esciencecenter.nl](mailto:rsd@esciencecenter.nl). ## My organisations -To see a list of organisations you are a maintainer of use __My organisations__ option in your __profile menu__. +To see a list of organisations you are a maintainer of use **My organisations** option in your **profile menu**. ![Screenshot of user menu](img/menu-my-organisations.webp) @@ -45,12 +46,16 @@ You can upload a new logo or remove it. The RSD supports common image formats, e.g. jpg, png or svg. :::tip -If possible, please upload an __SVG__ version of your organisation's logo for optimal visual presentation within the RSD. +If possible, please upload an **SVG** version of your organisation's logo for optimal visual presentation within the RSD. ::: -## General settings +## Settings -Under __"Settings - General settings"__ you can edit: +The organisation settings has following sections: General settings, Categories, Maintainers and About page. + +### General settings + +Under **General settings** you can edit: - Name: displayed in the organisation card and in the header of the organisation page - Short description: displayed in the organisation card and in the header of the organisation page @@ -59,15 +64,21 @@ Under __"Settings - General settings"__ you can edit: ![Screenshot of organisation settings](img/organisation-settings.webp) -## Manage maintainers +### Categories + +Each RSD organisation can define a set of custom categories to be assigned to software and/or projects. When a software/project maintainer adds this RSD organisation to their page, an additional modal is shown to software/project maintainer to assign specific organisation categories to the software/project. These organisation specific categories are shown on the software/project page. + +![Screenshot of organisation categories](img/organisation-categories.webp) + +### Manage maintainers As a maintainer, you can invite or remove other maintainers from your organisation. :::warning -The __primary maintainer__ of an organisation is set by RSD administrators. If you want to change the primary maintainer, contact us via [rsd@esciencecenter.nl](mailto:rsd@esciencecenter.nl). +The **primary maintainer** of an organisation is set by RSD administrators. If you want to change the primary maintainer, contact us via [rsd@esciencecenter.nl](mailto:rsd@esciencecenter.nl). ::: -To invite new maintainers, click on __"Generate invite link"__. A link will be generated. You can either copy this link or click on "Email this invite" to open your mail program with a pre-formulated email. +To invite new maintainers, click on **"Generate invite link"**. A link will be generated. You can either copy this link or click on "Email this invite" to open your mail program with a pre-formulated email. :::info @@ -78,10 +89,10 @@ To invite new maintainers, click on __"Generate invite link"__. A link will be g ![animation](img/organisation-maintainer-invite.gif) -## About page +### About page -In the __"About"__ section, relevant information about your organisation can be added in a free text form. -To edit the content of the section, please navigate to __"Settings"__ and scroll down to the __"About"__ section. +In the **"About"** section, relevant information about your organisation can be added in a free text form. +To edit the content of the section, please navigate to **"Settings"** and scroll down to the **"About"** section. The text can be formatted using [Markdown syntax](https://www.markdownguide.org/basic-syntax/). :::tip @@ -92,7 +103,7 @@ If there is no content for the About page, the page will not be shown. ## Pin software or project -To pin specific software or project to the start of the respective list, click on the three dots in the upper right corner of a software or project card and click on __Pin software__ / __Pin project__. It will then be shown at the beginning of the list. If you no longer want to pin a software or project, click on the dots in the software card and click __Unpin software__ / __Unpin project__. +To pin specific software or project to the start of the respective list, click on the three dots in the upper right corner of a software or project card and click on **Pin software** / **Pin project**. It will then be shown at the beginning of the list. If you no longer want to pin a software or project, click on the dots in the software card and click **Unpin software** / **Unpin project**. :::tip The "Pinned" order is the default order applied when visiting organisation page. @@ -102,7 +113,7 @@ The "Pinned" order is the default order applied when visiting organisation page. ## Deny affiliations -An organisation maintainer can deny affiliations with software or project. To do this, open the context menu of the respective software or project, and click on __Block affiliation__. +An organisation maintainer can deny affiliations with software or project. To do this, open the context menu of the respective software or project, and click on **Block affiliation**. :::tip When the affiliation with an entry has been denied @@ -112,29 +123,29 @@ When the affiliation with an entry has been denied - the entry will not be included in the metrics of the organisation - the organisation will be shown with "Blocked" icon on the edit page of the item (software or project) - the denied affiliation is visible to the organisation and the software/project maintainers -::: + ::: ![animation](img/organisation-block-affiliation.gif) ## Add research units The RSD is capable of representing the organisational structure of an organisation. -The structure is represented using __Research units__. A research unit has the same properties as an organisation and is maintained in the same manner, except for the fact that it has a parent organisation and is not listed on the organisations overview grid. +The structure is represented using **Research units**. A research unit has the same properties as an organisation and is maintained in the same manner, except for the fact that it has a parent organisation and is not listed on the organisations overview grid. It is possible to create several levels of nested research units. :::warning -Research units can only be added by the __primary maintainer__. +Research units can only be added by the **primary maintainer**. ::: -To create new research units, navigate to the __Research units__ in the sidebar, and click on the __+ Add__ button in the upper right corner. You will be presented with a modal: +To create new research units, navigate to the **Research units** in the sidebar, and click on the **+ Add** button in the upper right corner. You will be presented with a modal: ![Screenshot](img/organisation-add-unit.webp) The RSD path (second input field) will be automatically populated while the name is ist typed, but can be adjusted afterwards. :::warning -You cannot edit the __RSD Path__ afterwards. +You cannot edit the **RSD Path** afterwards. ::: If possible, a logo and a website URL can be added as well. diff --git a/documentation/docs/01-users/09-organisation.md.license b/documentation/docs/01-users/09-organisation.md.license index 75111bbfb..0ccc9eb34 100644 --- a/documentation/docs/01-users/09-organisation.md.license +++ b/documentation/docs/01-users/09-organisation.md.license @@ -1,6 +1,6 @@ +SPDX-FileCopyrightText: 2023 - 2024 Dusan Mijatovic (Netherlands eScience Center) SPDX-FileCopyrightText: 2023 - 2024 Ewan Cahen (Netherlands eScience Center) SPDX-FileCopyrightText: 2023 - 2024 Netherlands eScience Center -SPDX-FileCopyrightText: 2023 Dusan Mijatovic (Netherlands eScience Center) SPDX-FileCopyrightText: 2024 Christian Meeßen (GFZ) SPDX-FileCopyrightText: 2024 Helmholtz Centre Potsdam - GFZ German Research Centre for Geosciences diff --git a/documentation/docs/01-users/img/organisation-categories.webp b/documentation/docs/01-users/img/organisation-categories.webp new file mode 100644 index 0000000000000000000000000000000000000000..e28c7146e7d6a79a72bf4fe0fc0fc05a393b8063 GIT binary patch literal 47818 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

EMl{PT9{YjCuwOa@!}<9GvvWT0*ur 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 D)p*oa literal 0 HcmV?d00001 diff --git a/documentation/docs/01-users/img/organisation-categories.webp.license b/documentation/docs/01-users/img/organisation-categories.webp.license new file mode 100644 index 000000000..ebbf407d4 --- /dev/null +++ b/documentation/docs/01-users/img/organisation-categories.webp.license @@ -0,0 +1,4 @@ +SPDX-FileCopyrightText: 2024 Dusan Mijatovic (Netherlands eScience Center) +SPDX-FileCopyrightText: 2024 Netherlands eScience Center + +SPDX-License-Identifier: CC-BY-4.0 diff --git a/documentation/docs/01-users/img/organisation-settings.webp b/documentation/docs/01-users/img/organisation-settings.webp index a60ac25cd8e47d4a8758a8715b13b6d5141ff9e3..94a8e7250ce79f8e3ac81a78479bc80809ea269a 100644 GIT binary patch literal 43200 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 literal 50450 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 Date: Mon, 21 Oct 2024 13:54:00 +0200 Subject: [PATCH 9/9] chore: create categories for organisations and link categories to software and projects --- data-generation/main.js | 114 ++++++++++++++++++++++++++++++++-------- 1 file changed, 91 insertions(+), 23 deletions(-) diff --git a/data-generation/main.js b/data-generation/main.js index 818d77f0e..e5481d06b 100644 --- a/data-generation/main.js +++ b/data-generation/main.js @@ -308,44 +308,72 @@ function generateKeywordsForEntity(idsEntity, idsKeyword, nameEntity) { return result; } -async function generateCategories(idsCommunities, maxDepth = 3) { - const communityPromises = []; +const categoriesPerCommunity = new Map(); +const categoriesPerOrganisation = new Map(); +const globalCategories = []; +async function generateCategories(idsCommunities, idsOrganisations, maxDepth = 3) { + const promises = []; + for (const commId of idsCommunities) { - communityPromises.push(generateAndSaveCategoriesForCommunity(commId, maxDepth)); + promises.push( + generateAndSaveCategoriesForEntity(commId, null, maxDepth).then(ids => + categoriesPerCommunity.set(commId, ids), + ), + ); + } + for (const orgId of idsOrganisations) { + promises.push( + generateAndSaveCategoriesForEntity(null, orgId, maxDepth).then(ids => + categoriesPerOrganisation.set(orgId, ids), + ), + ); } - communityPromises.push(generateAndSaveCategoriesForCommunity(null, maxDepth)); + promises.push(generateAndSaveCategoriesForEntity(null, null, maxDepth).then(ids => globalCategories.push(...ids))); - return await Promise.all(communityPromises); + return await Promise.all(promises); } -async function generateAndSaveCategoriesForCommunity(idCommunity, maxDepth) { +async function generateAndSaveCategoriesForEntity(idCommunity, idOrganisation, maxDepth) { return new Promise(async res => { - let parentIds = [null]; + let parentIdsAndFlags = [ + {id: null, forSoftware: faker.datatype.boolean(), forProjects: faker.datatype.boolean()}, + ]; + const idsAndFlags = []; for (let level = 1; level <= maxDepth; level++) { - const newParentIds = []; - for (const parent of parentIds) { + const newParentIdsAndFlags = []; + for (const parent of parentIdsAndFlags) { let toGenerateCount = faker.number.int(4); - if (idCommunity === null && level === 1) { + if (idCommunity === null && idOrganisation === null && level === 1) { toGenerateCount += 1; } for (let i = 0; i < toGenerateCount; i++) { - const name = `Parent ${parent}, level ${level}, item ${i + 1}`; + const name = `Parent ${parent.id}, level ${level}, item ${i + 1}`; const shortName = `Level ${level}, item ${i + 1}`; const body = { community: idCommunity, - parent: parent, + organisation: idOrganisation, + parent: parent.id, short_name: shortName, name: name, + allow_software: parent.forSoftware, + allow_projects: parent.forProjects, }; await postToBackend('/category', body) .then(resp => resp.json()) - .then(json => json[0].id) - .then(id => newParentIds.push(id)); + .then(json => ({ + id: json[0].id, + forSoftware: parent.forSoftware, + forProjects: parent.forProjects, + })) + .then(data => { + newParentIdsAndFlags.push(data); + idsAndFlags.push(data); + }); } } - parentIds = newParentIds; + parentIdsAndFlags = newParentIdsAndFlags; } - res(); + res(idsAndFlags); }); } @@ -1060,7 +1088,8 @@ const communityPromise = postToBackend('/community', generateCommunities()) .then(async commArray => { idsCommunities = commArray.map(comm => comm['id']); postToBackend('/keyword_for_community', generateKeywordsForEntity(idsCommunities, idsKeywords, 'community')); - generateCategories(idsCommunities); + await organisationPromise; + await generateCategories(idsCommunities, idsOrganisations); }); await postToBackend('/meta_pages', generateMetaPages()).then(() => console.log('meta pages done')); @@ -1079,13 +1108,52 @@ await postToBackend( '/software_for_project', generateRelationsForDifferingEntities(idsSoftware, idsProjects, 'software', 'project'), ).then(() => console.log('sw-pj done')); -await postToBackend( - '/software_for_organisation', - generateRelationsForDifferingEntities(idsSoftware, idsOrganisations, 'software', 'organisation'), -).then(() => console.log('sw-org done')); -await postToBackend('/project_for_organisation', generateProjectForOrganisation(idsProjects, idsOrganisations)).then( - () => console.log('pj-org done'), +const softwareForOrganisation = generateRelationsForDifferingEntities( + idsSoftware, + idsOrganisations, + 'software', + 'organisation', ); +await postToBackend('/software_for_organisation', softwareForOrganisation) + .then(async () => { + const allCategoriesForSoftware = []; + for (const entry of softwareForOrganisation) { + const orgId = entry.organisation; + const relations = generateRelationsForDifferingEntities( + [entry.software], + categoriesPerOrganisation + .get(orgId) + .filter(data => data.forSoftware) + .map(data => data.id), + 'software_id', + 'category_id', + ); + allCategoriesForSoftware.push(...relations); + } + // console.log(allCategoriesForSoftware); + await postToBackend('/category_for_software', allCategoriesForSoftware); + }) + .then(() => console.log('sw-org done')); +const projectForOrganisation = generateProjectForOrganisation(idsProjects, idsOrganisations); +await postToBackend('/project_for_organisation', generateProjectForOrganisation(idsProjects, idsOrganisations)) + .then(async () => { + const allCategoriesForProjects = []; + for (const entry of projectForOrganisation) { + const orgId = entry.organisation; + const relations = generateRelationsForDifferingEntities( + [entry.project], + categoriesPerOrganisation + .get(orgId) + .filter(data => data.forProjects) + .map(data => data.id), + 'project_id', + 'category_id', + ); + allCategoriesForProjects.push(...relations); + } + await postToBackend('/category_for_project', allCategoriesForProjects); + }) + .then(() => console.log('pj-org done')); await postToBackend('/software_for_community', generateSoftwareForCommunity(idsSoftware, idsCommunities)).then(() => console.log('sw-comm done'), );