diff --git a/rdmo/management/assets/js/components/common/ElementButtons.js b/rdmo/management/assets/js/components/common/Buttons.js similarity index 96% rename from rdmo/management/assets/js/components/common/ElementButtons.js rename to rdmo/management/assets/js/components/common/Buttons.js index d556e711e5..51189ce1ae 100644 --- a/rdmo/management/assets/js/components/common/ElementButtons.js +++ b/rdmo/management/assets/js/components/common/Buttons.js @@ -1,4 +1,4 @@ -import React, { Component} from 'react' +import React, { Component } from 'react' import PropTypes from 'prop-types' import classNames from 'classnames' import isNil from 'lodash/isNil' diff --git a/rdmo/management/assets/js/components/common/Checkboxes.js b/rdmo/management/assets/js/components/common/Checkboxes.js new file mode 100644 index 0000000000..b68c36be5d --- /dev/null +++ b/rdmo/management/assets/js/components/common/Checkboxes.js @@ -0,0 +1,20 @@ +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import classNames from 'classnames' +import isNil from 'lodash/isNil' + +const Checkbox = ({ label, value, onChange }) => ( + + + +) + +Checkbox.propTypes = { + value: PropTypes.bool.isRequired, + onChange: PropTypes.func.isRequired +} + +export { Checkbox } diff --git a/rdmo/management/assets/js/components/common/ElementLinks.js b/rdmo/management/assets/js/components/common/Links.js similarity index 100% rename from rdmo/management/assets/js/components/common/ElementLinks.js rename to rdmo/management/assets/js/components/common/Links.js diff --git a/rdmo/management/assets/js/components/common/ElementModals.js b/rdmo/management/assets/js/components/common/Modals.js similarity index 85% rename from rdmo/management/assets/js/components/common/ElementModals.js rename to rdmo/management/assets/js/components/common/Modals.js index 479339ca4e..e034edf9b8 100644 --- a/rdmo/management/assets/js/components/common/ElementModals.js +++ b/rdmo/management/assets/js/components/common/Modals.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { Modal } from 'react-bootstrap'; -const DeleteElementModal = ({ title, show, onClose, onDelete, children }) => { +const DeleteModal = ({ title, show, onClose, onDelete, children }) => { return ( @@ -23,11 +23,11 @@ const DeleteElementModal = ({ title, show, onClose, onDelete, children }) => { ) } -DeleteElementModal.propTypes = { +DeleteModal.propTypes = { title: PropTypes.string.isRequired, show: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired } -export { DeleteElementModal } +export { DeleteModal } diff --git a/rdmo/management/assets/js/components/edit/EditAttribute.js b/rdmo/management/assets/js/components/edit/EditAttribute.js index 1c1aa19558..a94e6038a2 100644 --- a/rdmo/management/assets/js/components/edit/EditAttribute.js +++ b/rdmo/management/assets/js/components/edit/EditAttribute.js @@ -8,7 +8,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import AttributeInfo from '../info/AttributeInfo' import DeleteAttributeModal from '../modals/DeleteAttributeModal' diff --git a/rdmo/management/assets/js/components/edit/EditCatalog.js b/rdmo/management/assets/js/components/edit/EditCatalog.js index 34fe33ba76..9db08c5e29 100644 --- a/rdmo/management/assets/js/components/edit/EditCatalog.js +++ b/rdmo/management/assets/js/components/edit/EditCatalog.js @@ -9,7 +9,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import CatalogInfo from '../info/CatalogInfo' import DeleteCatalogModal from '../modals/DeleteCatalogModal' diff --git a/rdmo/management/assets/js/components/edit/EditCondition.js b/rdmo/management/assets/js/components/edit/EditCondition.js index 9a44e77590..4156a329b7 100644 --- a/rdmo/management/assets/js/components/edit/EditCondition.js +++ b/rdmo/management/assets/js/components/edit/EditCondition.js @@ -8,7 +8,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import ConditionInfo from '../info/ConditionInfo' import DeleteConditionModal from '../modals/DeleteConditionModal' diff --git a/rdmo/management/assets/js/components/edit/EditOption.js b/rdmo/management/assets/js/components/edit/EditOption.js index 74b5fae728..44a6c3ff32 100644 --- a/rdmo/management/assets/js/components/edit/EditOption.js +++ b/rdmo/management/assets/js/components/edit/EditOption.js @@ -7,7 +7,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import OptionInfo from '../info/OptionInfo' import DeleteOptionModal from '../modals/DeleteOptionModal' diff --git a/rdmo/management/assets/js/components/edit/EditOptionSet.js b/rdmo/management/assets/js/components/edit/EditOptionSet.js index abf9b42cae..cd8b8fd8ba 100644 --- a/rdmo/management/assets/js/components/edit/EditOptionSet.js +++ b/rdmo/management/assets/js/components/edit/EditOptionSet.js @@ -10,7 +10,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import OptionSetInfo from '../info/OptionSetInfo' import DeleteOptionSetModal from '../modals/DeleteOptionSetModal' diff --git a/rdmo/management/assets/js/components/edit/EditPage.js b/rdmo/management/assets/js/components/edit/EditPage.js index b96e670dea..9fb5cdae1e 100644 --- a/rdmo/management/assets/js/components/edit/EditPage.js +++ b/rdmo/management/assets/js/components/edit/EditPage.js @@ -10,7 +10,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import PageInfo from '../info/PageInfo' import DeletePageModal from '../modals/DeletePageModal' diff --git a/rdmo/management/assets/js/components/edit/EditQuestion.js b/rdmo/management/assets/js/components/edit/EditQuestion.js index cfb5161420..009e5711d5 100644 --- a/rdmo/management/assets/js/components/edit/EditQuestion.js +++ b/rdmo/management/assets/js/components/edit/EditQuestion.js @@ -9,8 +9,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' -import { DeleteElementModal } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import QuestionInfo from '../info/QuestionInfo' import DeleteQuestionModal from '../modals/DeleteQuestionModal' diff --git a/rdmo/management/assets/js/components/edit/EditQuestionSet.js b/rdmo/management/assets/js/components/edit/EditQuestionSet.js index f82669d9f6..8024d736a6 100644 --- a/rdmo/management/assets/js/components/edit/EditQuestionSet.js +++ b/rdmo/management/assets/js/components/edit/EditQuestionSet.js @@ -9,7 +9,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import QuestionSetInfo from '../info/QuestionSetInfo' import DeleteQuestionSetModal from '../modals/DeleteQuestionSetModal' diff --git a/rdmo/management/assets/js/components/edit/EditSection.js b/rdmo/management/assets/js/components/edit/EditSection.js index 49e0d8f487..550e6817fd 100644 --- a/rdmo/management/assets/js/components/edit/EditSection.js +++ b/rdmo/management/assets/js/components/edit/EditSection.js @@ -9,7 +9,7 @@ import Textarea from '../forms/Textarea' import Select from '../forms/Select' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import SectionInfo from '../info/SectionInfo' import DeleteSectionModal from '../modals/DeleteSectionModal' diff --git a/rdmo/management/assets/js/components/edit/EditTask.js b/rdmo/management/assets/js/components/edit/EditTask.js index 327bd9add9..75ff3d8c14 100644 --- a/rdmo/management/assets/js/components/edit/EditTask.js +++ b/rdmo/management/assets/js/components/edit/EditTask.js @@ -9,7 +9,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import TaskInfo from '../info/TaskInfo' import DeleteTaskModal from '../modals/DeleteTaskModal' diff --git a/rdmo/management/assets/js/components/edit/EditView.js b/rdmo/management/assets/js/components/edit/EditView.js index 2a41a6003c..5a0f4b7f54 100644 --- a/rdmo/management/assets/js/components/edit/EditView.js +++ b/rdmo/management/assets/js/components/edit/EditView.js @@ -9,7 +9,7 @@ import Text from '../forms/Text' import Textarea from '../forms/Textarea' import UriPrefix from '../forms/UriPrefix' -import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/ElementButtons' +import { BackButton, SaveButton, CreateButton, DeleteButton } from '../common/Buttons' import ViewInfo from '../info/ViewInfo' import DeleteViewModal from '../modals/DeleteViewModal' diff --git a/rdmo/management/assets/js/components/element/Attribute.js b/rdmo/management/assets/js/components/element/Attribute.js index 6e79bcd198..e9ffb31434 100644 --- a/rdmo/management/assets/js/components/element/Attribute.js +++ b/rdmo/management/assets/js/components/element/Attribute.js @@ -4,7 +4,7 @@ import isUndefined from 'lodash/isUndefined' import { filterElement } from '../../utils/filter' -import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/Links' const Attribute = ({ config, attribute, elementActions, display='list', filter=null, indent=0 }) => { @@ -23,7 +23,7 @@ const Attribute = ({ config, attribute, elementActions, display='list', filter=n -
+
{gettext('Attribute')}{': '} {attribute.uri}
@@ -41,7 +41,7 @@ const Attribute = ({ config, attribute, elementActions, display='list', filter=n return ( <> { - showElement &&
+ showElement &&
{ elementNode }
diff --git a/rdmo/management/assets/js/components/element/Catalog.js b/rdmo/management/assets/js/components/element/Catalog.js index fd962820d1..a56d5d998c 100644 --- a/rdmo/management/assets/js/components/element/Catalog.js +++ b/rdmo/management/assets/js/components/element/Catalog.js @@ -5,7 +5,7 @@ import isUndefined from 'lodash/isUndefined' import { filterElement } from '../../utils/filter' import Section from './Section' -import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/Links' const Catalog = ({ config, catalog, elementActions, display='list', filter=null }) => { @@ -30,9 +30,11 @@ const Catalog = ({ config, catalog, elementActions, display='list', filter=null

{gettext('Catalog')}{': '} {catalog.title}

-

- {catalog.uri} -

+ { + config.display.uri.catalogs &&

+ {catalog.uri} +

+ }
) diff --git a/rdmo/management/assets/js/components/element/Condition.js b/rdmo/management/assets/js/components/element/Condition.js index b853028018..ac9831aa7f 100644 --- a/rdmo/management/assets/js/components/element/Condition.js +++ b/rdmo/management/assets/js/components/element/Condition.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { filterElement } from '../../utils/filter' -import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/Links' const Condition = ({ config, condition, elementActions, filter=null }) => { diff --git a/rdmo/management/assets/js/components/element/Option.js b/rdmo/management/assets/js/components/element/Option.js index b56c54822e..f928c42a81 100644 --- a/rdmo/management/assets/js/components/element/Option.js +++ b/rdmo/management/assets/js/components/element/Option.js @@ -3,9 +3,9 @@ import PropTypes from 'prop-types' import { filterElement } from '../../utils/filter' -import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/Links' -const Option = ({ config, option, elementActions, display='list', filter=null }) => { +const Option = ({ config, option, elementActions, display='list', indent=0, filter=null }) => { const verboseName = gettext('option') const showElement = filterElement(filter, option) @@ -24,9 +24,11 @@ const Option = ({ config, option, elementActions, display='list', filter=null })

{gettext('Option')}{': '} {option.text}

-

- {option.uri} -

+ { + config.display.uri.options &&

+ {option.uri} +

+ }
) @@ -40,7 +42,7 @@ const Option = ({ config, option, elementActions, display='list', filter=null }) ) case 'nested': return showElement && ( -
+
{ elementNode }
@@ -54,6 +56,7 @@ Option.propTypes = { option: PropTypes.object.isRequired, elementActions: PropTypes.object.isRequired, display: PropTypes.string, + indent: PropTypes.number, filter: PropTypes.object } diff --git a/rdmo/management/assets/js/components/element/OptionSet.js b/rdmo/management/assets/js/components/element/OptionSet.js index ec0fbaaefb..1be29822b7 100644 --- a/rdmo/management/assets/js/components/element/OptionSet.js +++ b/rdmo/management/assets/js/components/element/OptionSet.js @@ -5,7 +5,7 @@ import isUndefined from 'lodash/isUndefined' import { filterElement } from '../../utils/filter' import Option from './Option' -import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/Links' const OptionSet = ({ config, optionset, elementActions, display='list', filter=null }) => { diff --git a/rdmo/management/assets/js/components/element/Page.js b/rdmo/management/assets/js/components/element/Page.js index ac013c1508..c173362555 100644 --- a/rdmo/management/assets/js/components/element/Page.js +++ b/rdmo/management/assets/js/components/element/Page.js @@ -6,12 +6,12 @@ import { filterElement } from '../../utils/filter' import QuestionSet from './QuestionSet' import Question from './Question' -import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/Links' const Page = ({ config, page, elementActions, display='list', filter=null, indent=0 }) => { const verboseName = gettext('page') - const showElement = filterElement(filter, page) + const showElement = filterElement(filter, page) && config.display.elements.pages const fetchEdit = () => elementActions.fetchElement('pages', page.id) const fetchNested = () => elementActions.fetchElement('pages', page.id, 'nested') @@ -29,9 +29,16 @@ const Page = ({ config, page, elementActions, display='list', filter=null, inden

{gettext('Page')}{': '} {page.title}

-

- {page.uri} -

+ { + config.display.uri.pages &&

+ {page.uri} +

+ } + { + config.display.uri.attributes && page.attribute_uri &&

+ {page.attribute_uri} +

+ }
) @@ -47,7 +54,7 @@ const Page = ({ config, page, elementActions, display='list', filter=null, inden return ( <> { - showElement &&
+ showElement &&
{ elementNode }
diff --git a/rdmo/management/assets/js/components/element/Question.js b/rdmo/management/assets/js/components/element/Question.js index 18304cc03f..5b6f4fe98a 100644 --- a/rdmo/management/assets/js/components/element/Question.js +++ b/rdmo/management/assets/js/components/element/Question.js @@ -3,12 +3,12 @@ import PropTypes from 'prop-types' import { filterElement } from '../../utils/filter' -import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/Links' const Question = ({ config, question, elementActions, display='list', filter=null, indent=0 }) => { const verboseName = gettext('question') - const showElement = filterElement(filter, question) + const showElement = filterElement(filter, question) && config.display.elements.questions const fetchEdit = () => elementActions.fetchElement('questions', question.id) const toggleLocked = () => elementActions.storeElement('questions', {...question, locked: !question.locked }) @@ -25,9 +25,16 @@ const Question = ({ config, question, elementActions, display='list', filter=nul {gettext('Question')}{': '} {question.text}

-

- {question.uri} -

+ { + config.display.uri.questions &&

+ {question.uri} +

+ } + { + config.display.uri.attributes && question.attribute_uri &&

+ {question.attribute_uri} +

+ }
) @@ -41,7 +48,7 @@ const Question = ({ config, question, elementActions, display='list', filter=nul ) case 'nested': return showElement && ( -
+
{ elementNode }
diff --git a/rdmo/management/assets/js/components/element/QuestionSet.js b/rdmo/management/assets/js/components/element/QuestionSet.js index cc86cc8f83..d80709feb7 100644 --- a/rdmo/management/assets/js/components/element/QuestionSet.js +++ b/rdmo/management/assets/js/components/element/QuestionSet.js @@ -5,12 +5,12 @@ import isUndefined from 'lodash/isUndefined' import { filterElement } from '../../utils/filter' import Question from './Question' -import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, NestedLink, ExportLink } from '../common/Links' const QuestionSet = ({ config, questionset, elementActions, display='list', filter=null, indent=0 }) => { const verboseName = gettext('question set') - const showElement = filterElement(filter, questionset) + const showElement = filterElement(filter, questionset) && config.display.elements.questionsets const fetchEdit = () => elementActions.fetchElement('questionsets', questionset.id) const fetchNested = () => elementActions.fetchElement('questionsets', questionset.id, 'nested') @@ -28,9 +28,16 @@ const QuestionSet = ({ config, questionset, elementActions, display='list', filt

{gettext('Question set')}{': '} {questionset.title}

-

- {questionset.uri} -

+ { + config.display.uri.questionsets &&

+ {questionset.uri} +

+ } + { + config.display.uri.attributes && questionset.attribute_uri &&

+ {questionset.attribute_uri} +

+ }
) @@ -46,7 +53,7 @@ const QuestionSet = ({ config, questionset, elementActions, display='list', filt return ( <> { - showElement &&
+ showElement &&
{ elementNode }
diff --git a/rdmo/management/assets/js/components/element/Section.js b/rdmo/management/assets/js/components/element/Section.js index 2bc0e21994..8c32cae5cb 100644 --- a/rdmo/management/assets/js/components/element/Section.js +++ b/rdmo/management/assets/js/components/element/Section.js @@ -5,12 +5,12 @@ import isNil from 'lodash/isNil' import { filterElement } from '../../utils/filter' import Page from './Page' -import { EditLink, LockedLink, NestedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, LockedLink, NestedLink, ExportLink } from '../common/Links' const Section = ({ config, section, elementActions, display='list', filter=null, indent=0 }) => { const verboseName = gettext('section') - const showElement = filterElement(filter, section) + const showElement = filterElement(filter, section) && config.display.elements.sections const fetchEdit = () => elementActions.fetchElement('sections', section.id) const fetchNested = () => elementActions.fetchElement('sections', section.id, 'nested') @@ -28,9 +28,11 @@ const Section = ({ config, section, elementActions, display='list', filter=null,

{gettext('Section')}{': '} {section.title}

-

- {section.uri} -

+ { + config.display.uri.sections &&

+ {section.uri} +

+ }
) @@ -55,7 +57,7 @@ const Section = ({ config, section, elementActions, display='list', filter=null, { section.elements.map((page, index) => ( + display="nested" filter={filter} indent={indent + 1} /> )) } diff --git a/rdmo/management/assets/js/components/element/Task.js b/rdmo/management/assets/js/components/element/Task.js index 3dc0b5411e..d7c570a1c2 100644 --- a/rdmo/management/assets/js/components/element/Task.js +++ b/rdmo/management/assets/js/components/element/Task.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { filterElement } from '../../utils/filter' -import { EditLink, AvailableLink, LockedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, ExportLink } from '../common/Links' const Task = ({ config, task, elementActions, filter=null }) => { @@ -24,9 +24,9 @@ const Task = ({ config, task, elementActions, filter=null }) => {
- {gettext('Task')}{': '} - {task.uri} -
+ {gettext('Task')}{': '} + {task.uri} + ) diff --git a/rdmo/management/assets/js/components/element/View.js b/rdmo/management/assets/js/components/element/View.js index 8fb101dc22..4e404189f7 100644 --- a/rdmo/management/assets/js/components/element/View.js +++ b/rdmo/management/assets/js/components/element/View.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { filterElement } from '../../utils/filter' -import { EditLink, AvailableLink, LockedLink, ExportLink } from '../common/ElementLinks' +import { EditLink, AvailableLink, LockedLink, ExportLink } from '../common/Links' const View = ({ config, view, elementActions, filter=null }) => { diff --git a/rdmo/management/assets/js/components/elements/Attributes.js b/rdmo/management/assets/js/components/elements/Attributes.js index 690617b901..3e8a04cec0 100644 --- a/rdmo/management/assets/js/components/elements/Attributes.js +++ b/rdmo/management/assets/js/components/elements/Attributes.js @@ -7,13 +7,12 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Attribute from '../element/Attribute' -import { BackButton, NewButton } from '../common/ElementButtons' +import { BackButton, NewButton } from '../common/Buttons' const Attributes = ({ config, attributes, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.attributes.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.attributes.uriPrefix', uriPrefix) - + const updateFilterUri = (value) => configActions.updateConfig('filter.attributes.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.attributes.uriPrefix', value) const createAttribute = () => elementActions.createElement('attributes') return ( diff --git a/rdmo/management/assets/js/components/elements/Catalogs.js b/rdmo/management/assets/js/components/elements/Catalogs.js index 5c22c46651..cf37d4d7bb 100644 --- a/rdmo/management/assets/js/components/elements/Catalogs.js +++ b/rdmo/management/assets/js/components/elements/Catalogs.js @@ -7,12 +7,14 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Catalog from '../element/Catalog' -import { BackButton, NewButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton, NewButton } from '../common/Buttons' const Catalogs = ({ config, catalogs, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.catalogs.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.catalogs.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.catalogs.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.catalogs.uriPrefix', value) + const updateDisplayURI = (value) => configActions.updateConfig('display.uri.catalogs', value) const createCatalog = () => elementActions.createElement('catalogs') @@ -37,13 +39,18 @@ const Catalogs = ({ config, catalogs, configActions, elementActions }) => { options={getUriPrefixes(catalogs)} /> +
+ {gettext('Show URIs:')} + {gettext('Catalogs')}} + value={config.display.uri.catalogs} onChange={updateDisplayURI} /> +
    { catalogs.map((catalog, index) => ( - + )) }
diff --git a/rdmo/management/assets/js/components/elements/Conditions.js b/rdmo/management/assets/js/components/elements/Conditions.js index 9b3744333e..64ed3f70cd 100644 --- a/rdmo/management/assets/js/components/elements/Conditions.js +++ b/rdmo/management/assets/js/components/elements/Conditions.js @@ -7,12 +7,12 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Condition from '../element/Condition' -import { BackButton, NewButton } from '../common/ElementButtons' +import { BackButton, NewButton } from '../common/Buttons' const Conditions = ({ config, conditions, configActions, elementActions}) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.conditions.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.conditions.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.conditions.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.conditions.uriPrefix', value) const createCondition = () => elementActions.createElement('conditions') diff --git a/rdmo/management/assets/js/components/elements/OptionSets.js b/rdmo/management/assets/js/components/elements/OptionSets.js index 8895660b74..df8f65203f 100644 --- a/rdmo/management/assets/js/components/elements/OptionSets.js +++ b/rdmo/management/assets/js/components/elements/OptionSets.js @@ -7,12 +7,12 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import OptionSet from '../element/OptionSet' -import { BackButton, NewButton } from '../common/ElementButtons' +import { BackButton, NewButton } from '../common/Buttons' const OptionSets = ({ config, optionsets, configActions, elementActions}) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.optionsets.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.optionsets.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.optionsets.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.optionsets.uriPrefix', value) const createOptionSet = () => elementActions.createElement('optionsets') diff --git a/rdmo/management/assets/js/components/elements/Options.js b/rdmo/management/assets/js/components/elements/Options.js index b9a9d37346..de3210ab50 100644 --- a/rdmo/management/assets/js/components/elements/Options.js +++ b/rdmo/management/assets/js/components/elements/Options.js @@ -7,12 +7,14 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Option from '../element/Option' -import { BackButton, NewButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton, NewButton } from '../common/Buttons' const Options = ({ config, options, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.options.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.options.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.options.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.options.uriPrefix', value) + const updateDisplayURI = (value) => configActions.updateConfig('display.uri.options', value) const createOption = () => elementActions.createElement('options') @@ -37,6 +39,11 @@ const Options = ({ config, options, configActions, elementActions }) => { options={getUriPrefixes(options)} /> +
+ {gettext('Show URIs:')} + {gettext('Options')}} + value={config.display.uri.options} onChange={updateDisplayURI} /> +
    diff --git a/rdmo/management/assets/js/components/elements/Pages.js b/rdmo/management/assets/js/components/elements/Pages.js index 5a7c27e400..e9201c3536 100644 --- a/rdmo/management/assets/js/components/elements/Pages.js +++ b/rdmo/management/assets/js/components/elements/Pages.js @@ -7,12 +7,15 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Page from '../element/Page' -import { BackButton, NewButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton, NewButton } from '../common/Buttons' const Pages = ({ config, pages, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.pages.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.pages.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.pages.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.pages.uriPrefix', value) + const updateDisplayPagesURI = (value) => configActions.updateConfig('display.uri.pages', value) + const updateDisplayAttributesURI = (value) => configActions.updateConfig('display.uri.attributes', value) const createPage = () => elementActions.createElement('pages') @@ -37,6 +40,13 @@ const Pages = ({ config, pages, configActions, elementActions }) => { options={getUriPrefixes(pages)} /> +
    + {gettext('Show URIs:')} + {gettext('Pages')}} + value={config.display.uri.pages} onChange={updateDisplayPagesURI} /> + {gettext('Attributes')}} + value={config.display.uri.attributes} onChange={updateDisplayAttributesURI} /> +
      diff --git a/rdmo/management/assets/js/components/elements/QuestionSets.js b/rdmo/management/assets/js/components/elements/QuestionSets.js index 8f0d19ab74..f82570ac64 100644 --- a/rdmo/management/assets/js/components/elements/QuestionSets.js +++ b/rdmo/management/assets/js/components/elements/QuestionSets.js @@ -7,12 +7,15 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import QuestionSet from '../element/QuestionSet' -import { BackButton, NewButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton, NewButton } from '../common/Buttons' const QuestionSets = ({ config, questionsets, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.questionsets.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.questionsets.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.questionsets.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.questionsets.uriPrefix', value) + const updateDisplayQuestioSetURI = (value) => configActions.updateConfig('display.uri.questionsets', value) + const updateDisplayAttributesURI = (value) => configActions.updateConfig('display.uri.attributes', value) const createQuestionSet = () => elementActions.createElement('questionsets') @@ -37,6 +40,13 @@ const QuestionSets = ({ config, questionsets, configActions, elementActions }) = options={getUriPrefixes(questionsets)} /> +
      + {gettext('Show URIs:')} + {gettext('Question sets')}} + value={config.display.uri.questionsets} onChange={updateDisplayQuestioSetURI} /> + {gettext('Attributes')}} + value={config.display.uri.attributes} onChange={updateDisplayAttributesURI} /> +
        diff --git a/rdmo/management/assets/js/components/elements/Questions.js b/rdmo/management/assets/js/components/elements/Questions.js index 6df3fee9b1..0cb44e9309 100644 --- a/rdmo/management/assets/js/components/elements/Questions.js +++ b/rdmo/management/assets/js/components/elements/Questions.js @@ -7,12 +7,15 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Question from '../element/Question' -import { BackButton, NewButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton, NewButton } from '../common/Buttons' const Questions = ({ config, questions, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.questions.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.questions.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.questions.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.questions.uriPrefix', value) + const updateDisplayQuestionsURI = (value) => configActions.updateConfig('display.uri.questions', value) + const updateDisplayAttributesURI = (value) => configActions.updateConfig('display.uri.attributes', value) const createQuestion = () => elementActions.createElement('questions') @@ -37,6 +40,13 @@ const Questions = ({ config, questions, configActions, elementActions }) => { options={getUriPrefixes(questions)} /> +
        + {gettext('Show URIs:')} + {gettext('Questions')}} + value={config.display.uri.questions} onChange={updateDisplayQuestionsURI} /> + {gettext('Attributes')}} + value={config.display.uri.attributes} onChange={updateDisplayAttributesURI} /> +
          diff --git a/rdmo/management/assets/js/components/elements/Sections.js b/rdmo/management/assets/js/components/elements/Sections.js index 13f078f416..95b53a235a 100644 --- a/rdmo/management/assets/js/components/elements/Sections.js +++ b/rdmo/management/assets/js/components/elements/Sections.js @@ -7,12 +7,14 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Section from '../element/Section' -import { BackButton, NewButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton, NewButton } from '../common/Buttons' const Sections = ({ config, sections, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.sections.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.sections.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.sections.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.sections.uriPrefix', value) + const updateDisplayURI = (value) => configActions.updateConfig('display.uri.sections', value) const createSection = () => elementActions.createElement('sections') @@ -37,6 +39,11 @@ const Sections = ({ config, sections, configActions, elementActions }) => { options={getUriPrefixes(sections)} /> +
          + {gettext('Show URIs:')} + {gettext('Sections')}} + value={config.display.uri.sections} onChange={updateDisplayURI} /> +
            diff --git a/rdmo/management/assets/js/components/elements/Tasks.js b/rdmo/management/assets/js/components/elements/Tasks.js index f499815133..d3db0affba 100644 --- a/rdmo/management/assets/js/components/elements/Tasks.js +++ b/rdmo/management/assets/js/components/elements/Tasks.js @@ -7,12 +7,12 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Task from '../element/Task' -import { BackButton, NewButton } from '../common/ElementButtons' +import { BackButton, NewButton } from '../common/Buttons' const Tasks = ({ config, tasks, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.tasks.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.tasks.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.tasks.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.tasks.uriPrefix', value) const createTask = () => elementActions.createElement('tasks') diff --git a/rdmo/management/assets/js/components/elements/Views.js b/rdmo/management/assets/js/components/elements/Views.js index 0357324b68..97ab116e1c 100644 --- a/rdmo/management/assets/js/components/elements/Views.js +++ b/rdmo/management/assets/js/components/elements/Views.js @@ -7,12 +7,12 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import View from '../element/View' -import { BackButton, NewButton } from '../common/ElementButtons' +import { BackButton, NewButton } from '../common/Buttons' const Views = ({ config, views, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.views.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.views.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.views.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.views.uriPrefix', value) const createView = () => elementActions.createElement('views') diff --git a/rdmo/management/assets/js/components/info/AttributeInfo.js b/rdmo/management/assets/js/components/info/AttributeInfo.js index 507eeee00e..bbded3e750 100644 --- a/rdmo/management/assets/js/components/info/AttributeInfo.js +++ b/rdmo/management/assets/js/components/info/AttributeInfo.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ExtendLink } from '../common/ElementLinks' +import { ExtendLink } from '../common/Links' import useBool from '../../hooks/useBool' diff --git a/rdmo/management/assets/js/components/info/ConditionInfo.js b/rdmo/management/assets/js/components/info/ConditionInfo.js index 30a949922e..4cb1b764c1 100644 --- a/rdmo/management/assets/js/components/info/ConditionInfo.js +++ b/rdmo/management/assets/js/components/info/ConditionInfo.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ExtendLink } from '../common/ElementLinks' +import { ExtendLink } from '../common/Links' import useBool from '../../hooks/useBool' diff --git a/rdmo/management/assets/js/components/info/OptionInfo.js b/rdmo/management/assets/js/components/info/OptionInfo.js index 464c118609..3c21967d3a 100644 --- a/rdmo/management/assets/js/components/info/OptionInfo.js +++ b/rdmo/management/assets/js/components/info/OptionInfo.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ExtendLink } from '../common/ElementLinks' +import { ExtendLink } from '../common/Links' import useBool from '../../hooks/useBool' diff --git a/rdmo/management/assets/js/components/info/OptionSetInfo.js b/rdmo/management/assets/js/components/info/OptionSetInfo.js index e3139924ee..0a6ca14496 100644 --- a/rdmo/management/assets/js/components/info/OptionSetInfo.js +++ b/rdmo/management/assets/js/components/info/OptionSetInfo.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ExtendLink } from '../common/ElementLinks' +import { ExtendLink } from '../common/Links' import useBool from '../../hooks/useBool' diff --git a/rdmo/management/assets/js/components/info/PageInfo.js b/rdmo/management/assets/js/components/info/PageInfo.js index e07197435c..ae754f38bc 100644 --- a/rdmo/management/assets/js/components/info/PageInfo.js +++ b/rdmo/management/assets/js/components/info/PageInfo.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ExtendLink } from '../common/ElementLinks' +import { ExtendLink } from '../common/Links' import useBool from '../../hooks/useBool' diff --git a/rdmo/management/assets/js/components/info/QuestionInfo.js b/rdmo/management/assets/js/components/info/QuestionInfo.js index 1308077f6e..f1a7356db0 100644 --- a/rdmo/management/assets/js/components/info/QuestionInfo.js +++ b/rdmo/management/assets/js/components/info/QuestionInfo.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ExtendLink } from '../common/ElementLinks' +import { ExtendLink } from '../common/Links' import useBool from '../../hooks/useBool' diff --git a/rdmo/management/assets/js/components/info/QuestionSetInfo.js b/rdmo/management/assets/js/components/info/QuestionSetInfo.js index e4c6c0e874..941ad80218 100644 --- a/rdmo/management/assets/js/components/info/QuestionSetInfo.js +++ b/rdmo/management/assets/js/components/info/QuestionSetInfo.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ExtendLink } from '../common/ElementLinks' +import { ExtendLink } from '../common/Links' import useBool from '../../hooks/useBool' diff --git a/rdmo/management/assets/js/components/info/SectionInfo.js b/rdmo/management/assets/js/components/info/SectionInfo.js index 3be80871d2..f64fb4ab6b 100644 --- a/rdmo/management/assets/js/components/info/SectionInfo.js +++ b/rdmo/management/assets/js/components/info/SectionInfo.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ExtendLink } from '../common/ElementLinks' +import { ExtendLink } from '../common/Links' import useBool from '../../hooks/useBool' diff --git a/rdmo/management/assets/js/components/modals/DeleteAttributeModal.js b/rdmo/management/assets/js/components/modals/DeleteAttributeModal.js index 7c35557ed2..301c8e2864 100644 --- a/rdmo/management/assets/js/components/modals/DeleteAttributeModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteAttributeModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteAttributeModal = ({ attribute, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the attribute:')}

            @@ -15,7 +15,7 @@ const DeleteAttributeModal = ({ attribute, info, show, onClose, onDelete }) => (

            {gettext('This action cannot be undone!')}

            -
            + ) DeleteAttributeModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteCatalogModal.js b/rdmo/management/assets/js/components/modals/DeleteCatalogModal.js index 73909d243d..3f94481376 100644 --- a/rdmo/management/assets/js/components/modals/DeleteCatalogModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteCatalogModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteCatalogModal = ({ catalog, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the catalog:')}

            @@ -15,7 +15,7 @@ const DeleteCatalogModal = ({ catalog, info, show, onClose, onDelete }) => (

            {gettext('Those projects will not be usable afterwards.')} {gettext('This action cannot be undone!')}

            -
            + ) DeleteCatalogModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteConditionModal.js b/rdmo/management/assets/js/components/modals/DeleteConditionModal.js index cba5ee2bdc..96ba3abf03 100644 --- a/rdmo/management/assets/js/components/modals/DeleteConditionModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteConditionModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteConditionModal = ({ condition, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the condition:')}

            @@ -15,7 +15,7 @@ const DeleteConditionModal = ({ condition, info, show, onClose, onDelete }) => (

            {gettext('This action cannot be undone!')}

            -
            + ) DeleteConditionModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteOptionModal.js b/rdmo/management/assets/js/components/modals/DeleteOptionModal.js index 3d9637f5c6..676b0d46a3 100644 --- a/rdmo/management/assets/js/components/modals/DeleteOptionModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteOptionModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteOptionModal = ({ option, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the option:')}

            @@ -15,7 +15,7 @@ const DeleteOptionModal = ({ option, info, show, onClose, onDelete }) => (

            {gettext('This action cannot be undone!')}

            -
            + ) DeleteOptionModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteOptionSetModal.js b/rdmo/management/assets/js/components/modals/DeleteOptionSetModal.js index 786717e05b..bcb6dfbd4c 100644 --- a/rdmo/management/assets/js/components/modals/DeleteOptionSetModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteOptionSetModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteOptionSetModal = ({ optionset, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the option set:')}

            @@ -15,7 +15,7 @@ const DeleteOptionSetModal = ({ optionset, info, show, onClose, onDelete }) => (

            {gettext('This action cannot be undone!')}

            -
            + ) DeleteOptionSetModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeletePageModal.js b/rdmo/management/assets/js/components/modals/DeletePageModal.js index c10cbe1a89..61d6307453 100644 --- a/rdmo/management/assets/js/components/modals/DeletePageModal.js +++ b/rdmo/management/assets/js/components/modals/DeletePageModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeletePageModal = ({ page, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the page:')}

            @@ -15,7 +15,7 @@ const DeletePageModal = ({ page, info, show, onClose, onDelete }) => (

            {gettext('This action cannot be undone!')}

            -
            + ) DeletePageModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteQuestionModal.js b/rdmo/management/assets/js/components/modals/DeleteQuestionModal.js index a2b6d58191..d0e514357c 100644 --- a/rdmo/management/assets/js/components/modals/DeleteQuestionModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteQuestionModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteQuestionModal = ({ question, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the question:')}

            @@ -15,7 +15,7 @@ const DeleteQuestionModal = ({ question, info, show, onClose, onDelete }) => (

            {gettext('This action cannot be undone!')}

            -
            + ) DeleteQuestionModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteQuestionSetModal.js b/rdmo/management/assets/js/components/modals/DeleteQuestionSetModal.js index d90e5eed9f..d5466a1640 100644 --- a/rdmo/management/assets/js/components/modals/DeleteQuestionSetModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteQuestionSetModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteQuestionSetModal = ({ questionset, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the question set:')}

            @@ -15,7 +15,7 @@ const DeleteQuestionSetModal = ({ questionset, info, show, onClose, onDelete })

            {gettext('This action cannot be undone!')}

            -
            + ) DeleteQuestionSetModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteSectionModal.js b/rdmo/management/assets/js/components/modals/DeleteSectionModal.js index e5bb3696e7..2bdb63d3fb 100644 --- a/rdmo/management/assets/js/components/modals/DeleteSectionModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteSectionModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteSectionModal = ({ section, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the section:')}

            @@ -15,7 +15,7 @@ const DeleteSectionModal = ({ section, info, show, onClose, onDelete }) => (

            {gettext('This action cannot be undone!')}

            -
            + ) DeleteSectionModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteTaskModal.js b/rdmo/management/assets/js/components/modals/DeleteTaskModal.js index 1721677244..bc796227d5 100644 --- a/rdmo/management/assets/js/components/modals/DeleteTaskModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteTaskModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteTaskModal = ({ task, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the task:')}

            @@ -15,7 +15,7 @@ const DeleteTaskModal = ({ task, info, show, onClose, onDelete }) => (

            {gettext('The task will be removed from these projects.')} {gettext('This action cannot be undone!')}

            -
            + ) DeleteTaskModal.propTypes = { diff --git a/rdmo/management/assets/js/components/modals/DeleteViewModal.js b/rdmo/management/assets/js/components/modals/DeleteViewModal.js index 963a7125f1..382091bb60 100644 --- a/rdmo/management/assets/js/components/modals/DeleteViewModal.js +++ b/rdmo/management/assets/js/components/modals/DeleteViewModal.js @@ -1,10 +1,10 @@ import React, { Component, useState } from 'react' import PropTypes from 'prop-types' -import { DeleteElementModal } from '../common/ElementModals' +import { DeleteModal } from '../common/Modals' const DeleteViewModal = ({ view, info, show, onClose, onDelete }) => ( - +

            {gettext('You are about to permanently delete the view:')}

            @@ -15,7 +15,7 @@ const DeleteViewModal = ({ view, info, show, onClose, onDelete }) => (

            {gettext('The view will be removed from these projects.')} {gettext('This action cannot be undone!')}

            -
            + ) DeleteViewModal.propTypes = { diff --git a/rdmo/management/assets/js/components/nested/NestedAttribute.js b/rdmo/management/assets/js/components/nested/NestedAttribute.js index be4801b891..25f0e8513f 100644 --- a/rdmo/management/assets/js/components/nested/NestedAttribute.js +++ b/rdmo/management/assets/js/components/nested/NestedAttribute.js @@ -7,7 +7,7 @@ import FilterUri from '../FilterUri' import FilterUriPrefix from '../FilterUriPrefix' import Attribute from '../element/Attribute' -import { BackButton } from '../common/ElementButtons' +import { BackButton } from '../common/Buttons' const NestedAttribute = ({ config, attribute, configActions, elementActions }) => { diff --git a/rdmo/management/assets/js/components/nested/NestedCatalog.js b/rdmo/management/assets/js/components/nested/NestedCatalog.js index f84f911d2a..b8554ef408 100644 --- a/rdmo/management/assets/js/components/nested/NestedCatalog.js +++ b/rdmo/management/assets/js/components/nested/NestedCatalog.js @@ -8,12 +8,23 @@ import FilterUriPrefix from '../FilterUriPrefix' import Catalog from '../element/Catalog' import Section from '../element/Section' -import { BackButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton } from '../common/Buttons' const NestedCatalog = ({ config, catalog, configActions, elementActions }) => { - const updateFilterUri = (uri) => configActions.updateConfig('filter.catalog.uri', uri) - const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.catalog.uriPrefix', uriPrefix) + const updateFilterUri = (value) => configActions.updateConfig('filter.catalog.uri', value) + const updateFilterUriPrefix = (value) => configActions.updateConfig('filter.catalog.uriPrefix', value) + + const updateDisplaySections = (value) => configActions.updateConfig('display.elements.sections', value) + const updateDisplayPages = (value) => configActions.updateConfig('display.elements.pages', value) + const updateDisplayQuestionSets = (value) => configActions.updateConfig('display.elements.questionsets', value) + const updateDisplayQuestions = (value) => configActions.updateConfig('display.elements.questions', value) + const updateDisplaySectionsURI = (value) => configActions.updateConfig('display.uri.sections', value) + const updateDisplayPagesURI = (value) => configActions.updateConfig('display.uri.pages', value) + const updateDisplayQuestionSetsURI = (value) => configActions.updateConfig('display.uri.questionsets', value) + const updateDisplayQuestionsURI = (value) => configActions.updateConfig('display.uri.questions', value) + const updateDisplayAttributesURI = (value) => configActions.updateConfig('display.uri.attributes', value) return ( <> @@ -37,9 +48,28 @@ const NestedCatalog = ({ config, catalog, configActions, elementActions }) => { options={getUriPrefixes(catalog.elements)} /> +
            + {gettext('Show elements:')} + + + + +
            +
            + {gettext('Show URIs:')} + {gettext('Sections')}} + value={config.display.uri.sections} onChange={updateDisplaySectionsURI} /> + {gettext('Pages')}} + value={config.display.uri.pages} onChange={updateDisplayPagesURI} /> + {gettext('Question sets')}} + value={config.display.uri.questionsets} onChange={updateDisplayQuestionSetsURI} /> + {gettext('Questions')}} + value={config.display.uri.questions} onChange={updateDisplayQuestionsURI} /> + {gettext('Attributes')}} + value={config.display.uri.attributes} onChange={updateDisplayAttributesURI} /> +
            - { catalog.elements.map((section, index) => (
            { const updateFilterUri = (uri) => configActions.updateConfig('filter.optionset.uri', uri) const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.optionset.uriPrefix', uriPrefix) + const updateDisplayURI = (value) => configActions.updateConfig('display.uri.options', value) + return ( <>
            @@ -37,6 +40,11 @@ const NestedOptionSet = ({ config, optionset, configActions, elementActions }) = options={getUriPrefixes(optionset.elements)} />
            +
            + {gettext('Show URIs:')} + {gettext('Options')}} + value={config.display.uri.options} onChange={updateDisplayURI} /> +
            diff --git a/rdmo/management/assets/js/components/nested/NestedPage.js b/rdmo/management/assets/js/components/nested/NestedPage.js index d12a01f576..924266bc66 100644 --- a/rdmo/management/assets/js/components/nested/NestedPage.js +++ b/rdmo/management/assets/js/components/nested/NestedPage.js @@ -10,13 +10,20 @@ import FilterUriPrefix from '../FilterUriPrefix' import Page from '../element/Page' import QuestionSet from '../element/QuestionSet' import Question from '../element/Question' -import { BackButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton } from '../common/Buttons' const NestedPage = ({ config, page, configActions, elementActions }) => { const updateFilterUri = (uri) => configActions.updateConfig('filter.page.uri', uri) const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.page.uriPrefix', uriPrefix) + const updateDisplayQuestionSets = (value) => configActions.updateConfig('display.elements.questionsets', value) + const updateDisplayQuestions = (value) => configActions.updateConfig('display.elements.questions', value) + const updateDisplayQuestionSetsURI = (value) => configActions.updateConfig('display.uri.questionsets', value) + const updateDisplayQuestionsURI = (value) => configActions.updateConfig('display.uri.questions', value) + const updateDisplayAttributesURI = (value) => configActions.updateConfig('display.uri.attributes', value) + return ( <>
            @@ -39,6 +46,20 @@ const NestedPage = ({ config, page, configActions, elementActions }) => { options={getUriPrefixes(page.elements)} />
            +
            + {gettext('Show elements:')} + + +
            +
            + {gettext('Show URIs:')} + {gettext('Question sets')}} + value={config.display.uri.questionsets} onChange={updateDisplayQuestionSetsURI} /> + {gettext('Questions')}} + value={config.display.uri.questions} onChange={updateDisplayQuestionsURI} /> + {gettext('Attributes')}} + value={config.display.uri.attributes} onChange={updateDisplayAttributesURI} /> +
            diff --git a/rdmo/management/assets/js/components/nested/NestedQuestionSet.js b/rdmo/management/assets/js/components/nested/NestedQuestionSet.js index be3e775fa0..5664d89568 100644 --- a/rdmo/management/assets/js/components/nested/NestedQuestionSet.js +++ b/rdmo/management/assets/js/components/nested/NestedQuestionSet.js @@ -9,13 +9,19 @@ import FilterUriPrefix from '../FilterUriPrefix' import QuestionSet from '../element/QuestionSet' import Question from '../element/Question' -import { BackButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton } from '../common/Buttons' const NestedQuestionSet = ({ config, questionset, configActions, elementActions }) => { const updateFilterUri = (uri) => configActions.updateConfig('filter.questionset.uri', uri) const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.questionset.uriPrefix', uriPrefix) + const updateDisplayQuestionSets = (value) => configActions.updateConfig('display.elements.questionsets', value) + const updateDisplayQuestions = (value) => configActions.updateConfig('display.elements.questions', value) + const updateDisplayQuestionsURI = (value) => configActions.updateConfig('display.uri.questions', value) + const updateDisplayAttributesURI = (value) => configActions.updateConfig('display.uri.attributes', value) + return ( <>
            @@ -38,6 +44,18 @@ const NestedQuestionSet = ({ config, questionset, configActions, elementActions options={getUriPrefixes(questionset.elements)} />
            +
            + {gettext('Show elements:')} + + +
            +
            + {gettext('Show URIs:')} + {gettext('Questions')}} + value={config.display.uri.questions} onChange={updateDisplayQuestionsURI} /> + {gettext('Attributes')}} + value={config.display.uri.attributes} onChange={updateDisplayAttributesURI} /> +
            diff --git a/rdmo/management/assets/js/components/nested/NestedSection.js b/rdmo/management/assets/js/components/nested/NestedSection.js index 7027191c2e..a73ccda905 100644 --- a/rdmo/management/assets/js/components/nested/NestedSection.js +++ b/rdmo/management/assets/js/components/nested/NestedSection.js @@ -8,13 +8,22 @@ import FilterUriPrefix from '../FilterUriPrefix' import Section from '../element/Section' import Page from '../element/Page' -import { BackButton } from '../common/ElementButtons' +import { Checkbox } from '../common/Checkboxes' +import { BackButton } from '../common/Buttons' const NestedCatalog = ({ config, section, configActions, elementActions }) => { const updateFilterUri = (uri) => configActions.updateConfig('filter.section.uri', uri) const updateFilterUriPrefix = (uriPrefix) => configActions.updateConfig('filter.section.uriPrefix', uriPrefix) + const updateDisplayPages = (value) => configActions.updateConfig('display.elements.pages', value) + const updateDisplayQuestionSets = (value) => configActions.updateConfig('display.elements.questionsets', value) + const updateDisplayQuestions = (value) => configActions.updateConfig('display.elements.questions', value) + const updateDisplayPagesURI = (value) => configActions.updateConfig('display.uri.pages', value) + const updateDisplayQuestionSetsURI = (value) => configActions.updateConfig('display.uri.questionsets', value) + const updateDisplayQuestionsURI = (value) => configActions.updateConfig('display.uri.questions', value) + const updateDisplayAttributesURI = (value) => configActions.updateConfig('display.uri.attributes', value) + return ( <>
            @@ -37,6 +46,23 @@ const NestedCatalog = ({ config, section, configActions, elementActions }) => { options={getUriPrefixes(section.elements)} />
            +
            + {gettext('Show elements:')} + + + +
            +
            + {gettext('Show URIs:')} + {gettext('Pages')}} + value={config.display.uri.pages} onChange={updateDisplayPagesURI} /> + {gettext('Question sets')}} + value={config.display.uri.questionsets} onChange={updateDisplayQuestionSetsURI} /> + {gettext('Questions')}} + value={config.display.uri.questions} onChange={updateDisplayQuestionsURI} /> + {gettext('Attributes')}} + value={config.display.uri.attributes} onChange={updateDisplayAttributesURI} /> +
            diff --git a/rdmo/management/assets/js/constants/config.js b/rdmo/management/assets/js/constants/config.js index a48d2d55f5..15299d6a65 100644 --- a/rdmo/management/assets/js/constants/config.js +++ b/rdmo/management/assets/js/constants/config.js @@ -1,6 +1,9 @@ export const lsKeys = { 'filter.catalogs.uri': '', 'filter.catalogs.uriPrefix': '', + 'filter.catalogs.pages': true, + 'filter.catalogs.questionsets': true, + 'filter.catalogs.questions': true, 'filter.sections.uri': '', 'filter.sections.uriPrefix': '', 'filter.pages.uri': '', @@ -34,5 +37,27 @@ export const lsKeys = { 'filter.attribute.uri': '', 'filter.attribute.uriPrefix': '', 'filter.optionset.uri': '', - 'filter.optionset.uriPrefix': '' + 'filter.optionset.uriPrefix': '', + 'display.elements.catalogs': true, + 'display.elements.sections': true, + 'display.elements.pages': true, + 'display.elements.questionsets': true, + 'display.elements.questions': true, + 'display.elements.attributes': true, + 'display.elements.optionsets': true, + 'display.elements.options': true, + 'display.elements.conditions': true, + 'display.elements.tasks': true, + 'display.elements.views': true, + 'display.uri.catalogs': true, + 'display.uri.sections': true, + 'display.uri.pages': true, + 'display.uri.questionsets': true, + 'display.uri.questions': true, + 'display.uri.attributes': true, + 'display.uri.optionsets': true, + 'display.uri.options': true, + 'display.uri.conditions': true, + 'display.uri.tasks': true, + 'display.uri.views': true } diff --git a/rdmo/management/assets/js/store/configureStore.js b/rdmo/management/assets/js/store/configureStore.js index a595e4f164..617020e8b3 100644 --- a/rdmo/management/assets/js/store/configureStore.js +++ b/rdmo/management/assets/js/store/configureStore.js @@ -32,7 +32,19 @@ export default function configureStore() { const updateConfigFromLocalStorage = (event) => { const config = {} Object.entries(lsKeys).forEach(([path, defaultValue]) => { - const value = ls.get(`rdmo.management.config.${path}`) || defaultValue + let value = ls.get(`rdmo.management.config.${path}`) + if (isNil(value)) { + switch(defaultValue) { + case 'true': + value = false + break + case 'false': + value = false + break + default: + value = defaultValue + } + } store.dispatch(configActions.updateConfig(path, value)) }) } diff --git a/rdmo/management/assets/js/utils/filter.js b/rdmo/management/assets/js/utils/filter.js index 1c35ae058f..2b144a6c3f 100644 --- a/rdmo/management/assets/js/utils/filter.js +++ b/rdmo/management/assets/js/utils/filter.js @@ -19,22 +19,6 @@ const filterUriPrefix = (filterUriPrefix, element) => { } } -const filterElements = (filterConfig, elements) => { - if (isUndefined(elements)) { - return [] - } else { - return elements.reduce((filteredElements, element) => { - if (get(filterConfig, 'uri', '').trim().split(' ').some( - uri => filterUri(uri, element) - ) && filterUriPrefix(get(filterConfig, 'uriPrefix', ''), element)) { - filteredElements.push(element) - } - - return filteredElements - }, []) - } -} - const filterElement = (filter, element) => { if (isNil(filter)) { return true @@ -54,4 +38,4 @@ const getUriPrefixes = (elements) => { }, []) } -export { filterElements, filterElement, getUriPrefixes } +export { filterElement, getUriPrefixes } diff --git a/rdmo/management/assets/scss/management.scss b/rdmo/management/assets/scss/management.scss index b68c6991cd..3395e204bc 100644 --- a/rdmo/management/assets/scss/management.scss +++ b/rdmo/management/assets/scss/management.scss @@ -135,6 +135,16 @@ a.disabled { margin-left: 8px; } } + .checkboxes { + .checkbox { + display: inline-block; + margin-right: 20px; + margin-bottom: 0; + } + code { + user-select: none; + } + } } .list-group-item { diff --git a/rdmo/questions/serializers/v1/page.py b/rdmo/questions/serializers/v1/page.py index 8082972aea..648c32bd84 100644 --- a/rdmo/questions/serializers/v1/page.py +++ b/rdmo/questions/serializers/v1/page.py @@ -79,11 +79,13 @@ class Meta(BasePageSerializer.Meta): class PageListSerializer(ElementExportSerializerMixin, ElementWarningSerializerMixin, BasePageSerializer): + attribute_uri = serializers.CharField(source='attribute.uri', read_only=True) warning = serializers.SerializerMethodField() xml_url = serializers.SerializerMethodField() class Meta(BasePageSerializer.Meta): fields = BasePageSerializer.Meta.fields + ( + 'attribute_uri', 'warning', 'xml_url' ) diff --git a/rdmo/questions/serializers/v1/question.py b/rdmo/questions/serializers/v1/question.py index 9ccf810d0e..337ec83d2a 100644 --- a/rdmo/questions/serializers/v1/question.py +++ b/rdmo/questions/serializers/v1/question.py @@ -6,7 +6,6 @@ TranslationSerializerMixin) from ...models import Question -from ...utils import get_widget_type_choices from ...validators import QuestionLockedValidator, QuestionUniqueURIValidator @@ -78,11 +77,13 @@ def to_internal_value(self, data): class QuestionListSerializer(ElementExportSerializerMixin, ElementWarningSerializerMixin, BaseQuestionSerializer): + attribute_uri = serializers.CharField(source='attribute.uri', read_only=True) warning = serializers.SerializerMethodField() xml_url = serializers.SerializerMethodField() class Meta(BaseQuestionSerializer.Meta): fields = BaseQuestionSerializer.Meta.fields + ( + 'attribute_uri', 'warning', 'xml_url' ) diff --git a/rdmo/questions/serializers/v1/questionset.py b/rdmo/questions/serializers/v1/questionset.py index 1e1d3a47f3..02407f6e21 100644 --- a/rdmo/questions/serializers/v1/questionset.py +++ b/rdmo/questions/serializers/v1/questionset.py @@ -83,11 +83,13 @@ class Meta(BaseQuestionSetSerializer.Meta): class QuestionSetListSerializer(ElementExportSerializerMixin, ElementWarningSerializerMixin, BaseQuestionSetSerializer): + attribute_uri = serializers.CharField(source='attribute.uri', read_only=True) warning = serializers.SerializerMethodField() xml_url = serializers.SerializerMethodField() class Meta(BaseQuestionSetSerializer.Meta): fields = BaseQuestionSetSerializer.Meta.fields + ( + 'attribute_uri', 'warning', 'xml_url' )