Skip to content

Commit

Permalink
feat: import sidebar add select and show ChangedElements
Browse files Browse the repository at this point in the history
  • Loading branch information
MyPyDavid committed Jan 19, 2024
1 parent 67c9dfe commit 6956d05
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 3 deletions.
6 changes: 6 additions & 0 deletions rdmo/management/assets/js/actions/importActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,16 @@ export function updateElement(element, values) {
export function selectElements(value) {
return {type: 'import/selectElements', value}
}
export function selectChangedElements(value) {
return {type: 'import/selectChangedElements', value}
}

export function showElements(value) {
return {type: 'import/showElements', value}
}
export function showChangedElements(value) {
return {type: 'import/showChangedElements', value}
}

export function updateUriPrefix(uriPrefix) {
return {type: 'import/updateUriPrefix', uriPrefix}
Expand Down
35 changes: 33 additions & 2 deletions rdmo/management/assets/js/components/sidebar/ImportSidebar.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import Link from 'rdmo/core/assets/js/components/Link'
const ImportSidebar = ({ config, imports, importActions }) => {
const { elements, success } = imports
const count = elements.filter(e => e.import).length
const updatedAndChangedElements = elements.filter(element => element.updated && !isEmpty(element.updated_and_changed))
const [uriPrefix, setUriPrefix] = useState('')
const disabled = isNil(uriPrefix) || isEmpty(uriPrefix)

Expand All @@ -33,7 +34,6 @@ const ImportSidebar = ({ config, imports, importActions }) => {
return (
<div className="import-sidebar">
<h2>{gettext('Import elements')}</h2>

<p className="import-buttons">
<button className="btn btn-success" onClick={() => importActions.importElements()}>
{interpolate(ngettext('Import one element', 'Import %s elements', count), [count])}
Expand All @@ -51,17 +51,48 @@ const ImportSidebar = ({ config, imports, importActions }) => {
{gettext('Select all')}
</Link>
</li>
{ updatedAndChangedElements.length > -1 &&
<ul className="list-unstyled">
<li>
<Link onClick={() => importActions.selectChangedElements(true)}>
{gettext('Select changed')}
</Link>
</li>
<li>
<Link onClick={() => importActions.selectChangedElements(false)}>
{gettext('Unselect changed')}
</Link>
</li>
</ul>
}
<li>
<Link onClick={() => importActions.selectElements(false)}>
{gettext('Unselect all')}
</Link>
</li>
<br></br>
</ul>

<h2>{gettext('Show')}</h2>
<ul className="list-unstyled">
<li>
<Link onClick={() => importActions.showElements(true)}>
{gettext('Show all')}
</Link>
</li>
{ updatedAndChangedElements.length > -1 &&
<ul className="list-unstyled">
<li>
<Link onClick={() => importActions.showChangedElements(true)}>
{gettext('Show changed')}
</Link>
</li>
<li>
<Link onClick={() => importActions.showChangedElements(false)}>
{gettext('Hide changed')}
</Link>
</li>
</ul>
}
<li>
<Link onClick={() => importActions.showElements(false)}>
{gettext('Hide all')}
Expand Down
21 changes: 20 additions & 1 deletion rdmo/management/assets/js/reducers/importsReducer.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import isArray from 'lodash/isArray'
import isNil from 'lodash/isNil'
import isUndefined from 'lodash/isUndefined'
import { isEmpty } from 'lodash'

import { buildUri } from '../utils/elements'

Expand Down Expand Up @@ -51,12 +52,30 @@ export default function importsReducer(state = initialState, action) {
}
case 'import/selectElements':
return {...state, elements: state.elements.map(element => {
return {...element, import: action.value}
return {...element, import: action.value}
})}
case 'import/selectChangedElements':
return {...state, elements: state.elements.map(element => {
if (element.updated && !isEmpty(element.updated_and_changed) && !element.created ) {
return {...element, import: action.value}
}
else if (action.value) {return {...element, import: !action.value}}
else { return element }
}
)}
case 'import/showElements':
return {...state, elements: state.elements.map(element => {
return {...element, show: action.value}
})}
case 'import/showChangedElements':
return {...state, elements: state.elements.map(element => {
if (element.updated && !isEmpty(element.updated_and_changed) && !element.created ) {
return {...element, show: action.value}
}
else if (action.value) {return {...element, show: !action.value}}
else { return element }
}
)}
case 'import/updateUriPrefix':
elements = state.elements.map(element => {
element.uri_prefix = action.uriPrefix
Expand Down

0 comments on commit 6956d05

Please sign in to comment.