frontend/src/views/organisationDetail.js (61 lines of code) (raw):
import React from 'react';
import ReactPlaceholder from 'react-placeholder';
import { FormattedMessage } from 'react-intl';
import messages from './messages';
import { useFetch } from '../hooks/UseFetch';
import { useEditOrgAllowed } from '../hooks/UsePermissions';
import { Teams } from '../components/teamsAndOrgs/teams';
import { Projects } from '../components/teamsAndOrgs/projects';
import { UserAvatarList } from '../components/user/avatar';
import { EditButton } from '../components/button';
import { useSetTitleTag } from '../hooks/UseMetaTags';
export function OrganisationDetail(props) {
const [error, loading, organisation] = useFetch(`organisations/${props.slug}/`, props.slug);
const [isUserAllowed] = useEditOrgAllowed(organisation);
//eslint-disable-next-line
const [projectsError, projectsLoading, projects] = useFetch(
`projects/?organisationId=${organisation.organisationId}&omitMapResults=true`,
organisation.organisationId !== undefined,
);
useSetTitleTag(`${organisation.name}`);
return (
<ReactPlaceholder
showLoadingAnimation={true}
type={'media'}
rows={26}
delay={100}
ready={!error && loading === false && typeof organisation === 'object'}
>
<div className="w-100 cf pv3 ph2 ph4-ns bg-white blue-dark">
<div className="cf pt4 w-100">
<div className="w-auto fl">
{organisation.logo && (
<img src={organisation.logo} className="w3 dib v-mid mr3" alt={organisation.name} />
)}
<h3 className="f2 fw6 mv2 ttu barlow-condensed blue-dark dib v-mid">
{organisation.name}
</h3>
</div>
{isUserAllowed && (
<div className="w-auto fr pt2">
<EditButton url={`/manage/organisations/${organisation.organisationId}`}>
<FormattedMessage {...messages.editOrganisation} />
</EditButton>
</div>
)}
</div>
<div className="cf w-50-l w-100 base-font">
<div className="w-auto fl">
<p className="f5 fw5">{organisation.description}</p>
<p className="f5 fw5">
{organisation.url && (
<a href={organisation.url} className="link red">
{organisation.url}
</a>
)}
</p>
</div>
</div>
<div className="w-100 mt4">
<Projects
projects={projects}
viewAllEndpoint={`/explore/?organisation=${organisation.name}`}
ownerEntity="organisation"
showManageButtons={false}
border={false}
/>
<Teams teams={organisation.teams} isReady={!error && !loading} border={false} />
<div className="cf w-100 pv3">
<h3 className="f3 barlow-condensed ttu blue-dark mt2 mb3 fw6 dib v-mid">
<FormattedMessage {...messages.managers} />
</h3>
<div className="db">
<UserAvatarList size="large" textColor="white" users={organisation.managers} />
</div>
</div>
</div>
</div>
</ReactPlaceholder>
);
}