mirror of
https://github.com/pds-nest/nest.git
synced 2024-11-21 20:44:18 +00:00
🔧 Refactor and document RepositoryEditor
This commit is contained in:
parent
26dcf3014e
commit
e7471a29f4
1 changed files with 64 additions and 12 deletions
|
@ -1,32 +1,84 @@
|
|||
import React, { useState } from "react"
|
||||
import React, { useCallback, useState } from "react"
|
||||
import ContextRepositoryEditor from "../../contexts/ContextRepositoryEditor"
|
||||
import useArrayState from "../../hooks/useArrayState"
|
||||
|
||||
|
||||
export default function RepositoryEditor({ children, id, name, start, end, conditions }) {
|
||||
export default function RepositoryEditor({
|
||||
children,
|
||||
id = null,
|
||||
name,
|
||||
is_active: isActive,
|
||||
start,
|
||||
end,
|
||||
conditions,
|
||||
evaluation_mode: evaluationMode,
|
||||
}) {
|
||||
/** The repository name. */
|
||||
const [_name, setName] = useState(name)
|
||||
|
||||
/** The repository state (active / archived). */
|
||||
const [_isActive, setActive] = useState(isActive)
|
||||
|
||||
/** The start date of the data gathering. */
|
||||
const [_start, setStart] = useState(start)
|
||||
|
||||
/** The end date of the data gathering. */
|
||||
const [_end, setEnd] = useState(end)
|
||||
|
||||
/** The conditions of the data gathering. */
|
||||
const {
|
||||
value: _conditions,
|
||||
setValue: setConditions,
|
||||
appendValue: appendCondition,
|
||||
removeValue: removeCondition,
|
||||
spliceValue: spliceCondition,
|
||||
} = useArrayState(conditions)
|
||||
|
||||
/** The operator the conditions should be evaluated with. */
|
||||
const [_evaluationMode, setEvaluationMode] = useState(evaluationMode)
|
||||
|
||||
/**
|
||||
* Invia al backend le modifiche effettuate.
|
||||
*/
|
||||
const save = useCallback(
|
||||
() => {
|
||||
if(id === null) {
|
||||
// POST
|
||||
throw new Error("Not yet implemented")
|
||||
}
|
||||
else {
|
||||
// PUT
|
||||
throw new Error("Not yet implemented")
|
||||
}
|
||||
},
|
||||
[id]
|
||||
)
|
||||
|
||||
/**
|
||||
* Cancel the changes made so far to the repository.
|
||||
*/
|
||||
const revert = useCallback(
|
||||
() => {
|
||||
setName(name)
|
||||
setActive(isActive)
|
||||
setStart(start)
|
||||
setEnd(end)
|
||||
setConditions(conditions)
|
||||
setEvaluationMode(evaluationMode)
|
||||
},
|
||||
[name, isActive, start, end, conditions, evaluationMode]
|
||||
)
|
||||
|
||||
return (
|
||||
<ContextRepositoryEditor.Provider value={{
|
||||
id,
|
||||
name: _name,
|
||||
setName,
|
||||
start: _start,
|
||||
setStart,
|
||||
end: _end,
|
||||
setEnd,
|
||||
conditions: _conditions,
|
||||
appendCondition,
|
||||
removeCondition,
|
||||
spliceCondition,
|
||||
name: _name, setName,
|
||||
isActive: _isActive, setActive,
|
||||
start: _start, setStart,
|
||||
end: _end, setEnd,
|
||||
conditions: _conditions, appendCondition, removeCondition, spliceCondition,
|
||||
evaluationMode: _evaluationMode, setEvaluationMode,
|
||||
revert, save,
|
||||
}}>
|
||||
{children}
|
||||
</ContextRepositoryEditor.Provider>
|
||||
|
|
Loading…
Reference in a new issue