Merge branch 'develop' into dist/ubuntu/bionic/develop

This commit is contained in:
wpetit 2020-09-10 19:28:31 +02:00
commit aed0048d95
9 changed files with 48 additions and 22 deletions

View File

@ -21,6 +21,14 @@ export function DecisionSupportFilePanel() {
label: 'Brouillons', label: 'Brouillons',
itemFilter: (item: Item) => (item as DecisionSupportFile).status === DecisionSupportFileStatus.Draft itemFilter: (item: Item) => (item as DecisionSupportFile).status === DecisionSupportFileStatus.Draft
}, },
{
label: 'À voter',
itemFilter: (item: Item) => (item as DecisionSupportFile).status === DecisionSupportFileStatus.Ready
},
{
label: 'Votés',
itemFilter: (item: Item) => (item as DecisionSupportFile).status === DecisionSupportFileStatus.Voted
},
{ {
label: 'Clos', label: 'Clos',
itemFilter: (item: Item) => (item as DecisionSupportFile).status === DecisionSupportFileStatus.Closed itemFilter: (item: Item) => (item as DecisionSupportFile).status === DecisionSupportFileStatus.Closed

View File

@ -22,7 +22,7 @@ export const DecisionSupportFilePage: FunctionComponent<DecisionSupportFilePageP
filter: { filter: {
ids: id !== 'new' ? [id] : undefined, ids: id !== 'new' ? [id] : undefined,
} }
} },
}); });
const [ state, setState ] = useState({ const [ state, setState ] = useState({
@ -114,10 +114,14 @@ export const DecisionSupportFilePage: FunctionComponent<DecisionSupportFilePageP
</div> </div>
<div className="level-right"> <div className="level-right">
<div className="level-item buttons"> <div className="level-item buttons">
{
isAuthorized ?
<button className="button is-medium is-success" disabled={!canSave} onClick={saveDSF}> <button className="button is-medium is-success" disabled={!canSave} onClick={saveDSF}>
<span className="icon"><i className="fa fa-save"></i></span> <span className="icon"><i className="fa fa-save"></i></span>
<span>Enregistrer</span> <span>Enregistrer</span>
</button> </button> :
null
}
</div> </div>
</div> </div>
</div> </div>

View File

@ -44,10 +44,11 @@ export function Navbar() {
</span> </span>
<span>Mon profil</span> <span>Mon profil</span>
</Link> </Link>
<Link className="button is-warning" to="/logout"> <Link className="button is-warning is-small" to="/logout">
<span className="icon"> <span className="icon">
<i className="fas fa-sign-out-alt"></i> <i className="fas fa-sign-out-alt"></i>
</span> </span>
<span>Déconnexion</span>
</Link> </Link>
</Fragment> : </Fragment> :
<a className="button is-primary" href={Config.loginURL}> <a className="button is-primary" href={Config.loginURL}>

View File

@ -1,4 +1,4 @@
import { gql, useQuery } from '@apollo/client'; import { gql, useQuery, QueryHookOptions } from '@apollo/client';
import { useGraphQLData } from './helper'; import { useGraphQLData } from './helper';
export const QUERY_IS_AUTHORIZED = gql` export const QUERY_IS_AUTHORIZED = gql`
@ -7,11 +7,11 @@ export const QUERY_IS_AUTHORIZED = gql`
} }
`; `;
export function useIsAuthorizedQuery(options = {}) { export function useIsAuthorizedQuery<A = any, R = Record<string, any>>(options: QueryHookOptions<A, R> = {}) {
return useQuery(QUERY_IS_AUTHORIZED, options); return useQuery(QUERY_IS_AUTHORIZED, options);
} }
export function useIsAuthorized(options = {}, defaultValue = false) { export function useIsAuthorized<A = any, R = Record<string, any>>(options: QueryHookOptions<A, R> = {}, defaultValue = false) {
const { data, loading, error } = useGraphQLData<boolean>( const { data, loading, error } = useGraphQLData<boolean>(
QUERY_IS_AUTHORIZED, 'isAuthorized', defaultValue, options QUERY_IS_AUTHORIZED, 'isAuthorized', defaultValue, options
); );

View File

@ -1,4 +1,4 @@
import { gql, useQuery } from '@apollo/client'; import { gql, useQuery, QueryHookOptions } from '@apollo/client';
import { DecisionSupportFile } from '../../types/decision'; import { DecisionSupportFile } from '../../types/decision';
import { useGraphQLData } from './helper'; import { useGraphQLData } from './helper';
@ -25,11 +25,11 @@ export const QUERY_DECISION_SUPPORT_FILES = gql`
} }
`; `;
export function useDecisionSupportFilesQuery(options = {}) { export function useDecisionSupportFilesQuery<A = any, R = Record<string, any>>(options: QueryHookOptions<A, R> = {}) {
return useQuery(QUERY_DECISION_SUPPORT_FILES, options); return useQuery(QUERY_DECISION_SUPPORT_FILES, options);
} }
export function useDecisionSupportFiles(options = {}) { export function useDecisionSupportFiles<A = any, R = Record<string, any>>(options: QueryHookOptions<A, R> = {}) {
const { data, loading, error } = useGraphQLData<DecisionSupportFile[]>( const { data, loading, error } = useGraphQLData<DecisionSupportFile[]>(
QUERY_DECISION_SUPPORT_FILES, 'decisionSupportFiles', [], options QUERY_DECISION_SUPPORT_FILES, 'decisionSupportFiles', [], options
); );

View File

@ -1,7 +1,7 @@
import { useQuery, DocumentNode } from "@apollo/client"; import { useQuery, DocumentNode, QueryHookOptions } from "@apollo/client";
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
export function useGraphQLData<T>(q: DocumentNode, key: string, defaultValue: T, options = {}) { export function useGraphQLData<T, A = any, R = Record<string, any>>(q: DocumentNode, key: string, defaultValue: T, options: QueryHookOptions<A, R> = {}) {
const query = useQuery(q, options); const query = useQuery(q, options);
const [ data, setData ] = useState<T>(defaultValue); const [ data, setData ] = useState<T>(defaultValue);
useEffect(() => { useEffect(() => {

View File

@ -1,4 +1,4 @@
import { gql, useQuery } from '@apollo/client'; import { gql, useQuery, QueryHookOptions } from '@apollo/client';
import { User } from '../../types/user'; import { User } from '../../types/user';
import { useState, useEffect } from 'react'; import { useState, useEffect } from 'react';
import { useGraphQLData } from './helper'; import { useGraphQLData } from './helper';
@ -14,13 +14,13 @@ query userProfile {
} }
}`; }`;
export function useUserProfileQuery() { export function useUserProfileQuery<A = any, R = Record<string, any>>(options: QueryHookOptions<A, R> = {}) {
return useQuery(QUERY_USER_PROFILE); return useQuery(QUERY_USER_PROFILE, options);
} }
export function useUserProfile() { export function useUserProfile<A = any, R = Record<string, any>>(options: QueryHookOptions<A, R> = {}) {
const { data, loading, error } = useGraphQLData<User>( const { data, loading, error } = useGraphQLData<User>(
QUERY_USER_PROFILE, 'userProfile', {id: '', email: ''} QUERY_USER_PROFILE, 'userProfile', {id: '', email: ''}, options
); );
return { user: data, loading, error }; return { user: data, loading, error };
} }

View File

@ -1,4 +1,4 @@
import { gql, useQuery } from '@apollo/client'; import { gql, useQuery, QueryHookOptions } from '@apollo/client';
import { Workgroup } from '../../types/workgroup'; import { Workgroup } from '../../types/workgroup';
import { useGraphQLData } from './helper'; import { useGraphQLData } from './helper';
@ -18,11 +18,11 @@ export const QUERY_WORKGROUP = gql`
} }
`; `;
export function useWorkgroupsQuery(options = {}) { export function useWorkgroupsQuery<A = any, R = Record<string, any>>(options: QueryHookOptions<A, R> = {}) {
return useQuery(QUERY_WORKGROUP, options); return useQuery(QUERY_WORKGROUP, options);
} }
export function useWorkgroups(options = {}) { export function useWorkgroups<A = any, R = Record<string, any>>(options: QueryHookOptions<A, R> = {}) {
const { data, loading, error } = useGraphQLData<Workgroup[]>( const { data, loading, error } = useGraphQLData<Workgroup[]>(
QUERY_WORKGROUP, 'workgroups', [], QUERY_WORKGROUP, 'workgroups', [],
options options

View File

@ -44,6 +44,19 @@ export function createClient(setLoggedIn: (boolean) => void) {
errorLink, errorLink,
retryLink retryLink
]), ]),
defaultOptions: {
watchQuery: {
fetchPolicy: 'cache-and-network',
errorPolicy: 'ignore',
},
query: {
fetchPolicy: 'network-only',
errorPolicy: 'all',
},
mutate: {
errorPolicy: 'all',
},
}
}); });
} }