Permettre de gérer les options proposées dans un DAD #19

Manually merged
tcornaut merged 6 commits from feature/options into develop 2020-08-31 15:32:40 +02:00
2 changed files with 8 additions and 6 deletions
Showing only changes of commit 2d66888ed3 - Show all commits

View File

@ -51,16 +51,18 @@ export const OptionsSection: FunctionComponent<OptionsSectionProps> = ({ dsf, up
} }
const onAddOptionClick = (evt: MouseEvent) => { const onAddOptionClick = (evt: MouseEvent) => {
const option = newOption("Décision", "", ""); var options = JSON.parse(JSON.stringify(state.section.options))
Review

JSON.parse(JSON.stringify(state.section.options)) est utilisé ici pour faire une copie ?

Pourquoi ne pas plutôt faire const options = [ ...state.section.options ]; ? Cette méthode est plus performante qu'une sérialisation/dé-sérialisation JSON du tableau.

`JSON.parse(JSON.stringify(state.section.options))` est utilisé ici pour faire une copie ? Pourquoi ne pas plutôt faire `const options = [ ...state.section.options ];` ? Cette méthode est plus performante qu'une sérialisation/dé-sérialisation JSON du tableau.
Review

Malheureusement la méthode de copie que tu cites ne lève pas l'interdiction d'écrire dans options, je n'ai pas trouvé d'autre méthode que JSON.parse(JSON.stringify(state.section.options)) pour en faire une copie modifiable.

Malheureusement la méthode de copie que tu cites ne lève pas l'interdiction d'écrire dans options, je n'ai pas trouvé d'autre méthode que JSON.parse(JSON.stringify(state.section.options)) pour en faire une copie modifiable.
setState(state => ({ ...state, changed: true, section: { ...state.section, options: [ ...state.section.options, option ] }})); var option = newOption("Décision", "", "");
Review

Si il n'y aura pas d'assignation de nouvelle valeur à la variable, préférer const à var pour identifier assez vite les erreurs liées à l'écrasement de valeurs "constantes".

Si il n'y aura pas d'assignation de nouvelle valeur à la variable, préférer `const` à `var` pour identifier assez vite les erreurs liées à l'écrasement de valeurs "constantes".
options.push(option);
setState(state => ({ ...state, changed: true, section: { ...state.section, options }}));
}; };
const onOptionChange = (id: string, attrName: string, evt: ChangeEvent<HTMLInputElement>) => { const onOptionChange = (id: string, attrName: string, evt: ChangeEvent<HTMLInputElement>) => {
const target = evt.currentTarget; const target = evt.currentTarget;
const value = target.hasOwnProperty('checked') ? target.checked : target.value; const value = target.hasOwnProperty('checked') ? target.checked : target.value;
var options = state.section.options; var options = JSON.parse(JSON.stringify(state.section.options))
Review

Idem qu'un peu plus haut.

Idem qu'un peu plus haut.
options[id][attrName] = value; options[id][attrName] = value;
setState(state => ({ ...state, changed: true, section: { ...state.section, options: options }})); setState(state => ({ ...state, changed: true, section: { ...state.section, options }}));
}; };
return ( return (

View File

@ -7,7 +7,7 @@ export const QUERY_DECISION_SUPPORT_FILES = gql`
decisionSupportFiles(filter: $filter) { decisionSupportFiles(filter: $filter) {
id, id,
title, title,
sections sections,
createdAt, createdAt,
closedAt, closedAt,
votedAt, votedAt,
@ -18,7 +18,7 @@ export const QUERY_DECISION_SUPPORT_FILES = gql`
members { members {
id id
} }
} },
} }
} }
`; `;