From 14eace49cd82838cdf974c65711f4d8d9f20350f Mon Sep 17 00:00:00 2001 From: Claudia Malzer Date: Fri, 20 Oct 2023 14:58:23 +0200 Subject: [PATCH 1/5] #745 Add order parameter back to managament interface * pass order value to Section, Page, and Question --- .../assets/js/components/common/Links.js | 27 +++++----- .../assets/js/components/element/Page.js | 38 +++++++------- .../assets/js/components/element/Question.js | 19 +++---- .../assets/js/components/element/Section.js | 50 ++++++++++++------- .../js/components/nested/NestedCatalog.js | 45 +++++++++++------ 5 files changed, 108 insertions(+), 71 deletions(-) diff --git a/rdmo/management/assets/js/components/common/Links.js b/rdmo/management/assets/js/components/common/Links.js index 0c291ad8ed..687e7fa9ae 100644 --- a/rdmo/management/assets/js/components/common/Links.js +++ b/rdmo/management/assets/js/components/common/Links.js @@ -7,7 +7,7 @@ import isUndefined from 'lodash/isUndefined' import Link from 'rdmo/core/assets/js/components/Link' import LinkButton from 'rdmo/core/assets/js/components/LinkButton' -const NestedLink = ({ href, title, onClick, show=true }) => { +const NestedLink = ({ href, title, onClick, show = true }) => { return show && } @@ -74,7 +74,7 @@ const AvailableLink = ({ available, locked, title, onClick, disabled }) => { }) return + disabled={locked || disabled} onClick={onClick} /> } AvailableLink.propTypes = { @@ -120,7 +120,7 @@ ShowElementsLink.propTypes = { onClick: PropTypes.func.isRequired } -const ExportLink = ({ exportUrl, title, exportFormats, csv=false, full=false }) => { +const ExportLink = ({ exportUrl, title, exportFormats, csv = false, full = false }) => { return ( @@ -144,8 +144,8 @@ const ExportLink = ({ exportUrl, title, exportFormats, csv=false, full=false }) { exportFormats.map(([key, label], index) =>
  • {label} + target={['pdf', 'html'].includes(key) ? '_blank' : '_self'} + rel="noreferrer">{label}
  • ) } @@ -169,7 +169,7 @@ const ExtendLink = ({ extend, onClick }) => { }) const title = extend ? gettext('Show less') - : gettext('Show more') + : gettext('Show more') return } @@ -179,18 +179,19 @@ ExtendLink.propTypes = { onClick: PropTypes.func.isRequired } -const CodeLink = ({ className, uri, onClick }) => { +const CodeLink = ({ className, uri, onClick, order }) => { return ( - + <> {uri} - + {order !== undefined && order !== null ? {order} : null} ) } CodeLink.propTypes = { className: PropTypes.string.isRequired, uri: PropTypes.string.isRequired, - onClick: PropTypes.func.isRequired + onClick: PropTypes.func.isRequired, + order: PropTypes.number } const ErrorLink = ({ element, onClick }) => { @@ -235,5 +236,7 @@ ShowLink.propTypes = { onClick: PropTypes.func.isRequired } -export { EditLink, CopyLink, AddLink, AvailableLink, LockedLink, ShowElementsLink, - NestedLink, ExportLink, ExtendLink, CodeLink, ErrorLink, WarningLink, ShowLink } +export { + EditLink, CopyLink, AddLink, AvailableLink, LockedLink, ShowElementsLink, + NestedLink, ExportLink, ExtendLink, CodeLink, ErrorLink, WarningLink, ShowLink +} diff --git a/rdmo/management/assets/js/components/element/Page.js b/rdmo/management/assets/js/components/element/Page.js index af692967be..d30a08c13d 100644 --- a/rdmo/management/assets/js/components/element/Page.js +++ b/rdmo/management/assets/js/components/element/Page.js @@ -8,13 +8,15 @@ import { buildPath } from '../../utils/location' import QuestionSet from './QuestionSet' import Question from './Question' import { ElementErrors } from '../common/Errors' -import { EditLink, CopyLink, AddLink, LockedLink, NestedLink, - ExportLink, CodeLink, ShowElementsLink } from '../common/Links' +import { + EditLink, CopyLink, AddLink, LockedLink, NestedLink, + ExportLink, CodeLink, ShowElementsLink +} from '../common/Links' import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' -const Page = ({ config, page, configActions, elementActions, display='list', indent=0, - filter=false, filterEditors=false }) => { +const Page = ({ config, page, configActions, elementActions, display = 'list', indent = 0, + filter = false, filterEditors = false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, page) const showElements = get(config, `display.elements.pages.${page.id}`, true) @@ -27,7 +29,7 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind const fetchEdit = () => elementActions.fetchElement('pages', page.id) const fetchCopy = () => elementActions.fetchElement('pages', page.id, 'copy') const fetchNested = () => elementActions.fetchElement('pages', page.id, 'nested') - const toggleLocked = () => elementActions.storeElement('pages', {...page, locked: !page.locked }) + const toggleLocked = () => elementActions.storeElement('pages', { ...page, locked: !page.locked }) const toggleElements = () => configActions.toggleElements(page) const createQuestionSet = () => elementActions.createElement('questionsets', { page }) @@ -35,7 +37,6 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind const fetchAttribute = () => elementActions.fetchElement('attributes', page.attribute) const fetchCondition = (index) => elementActions.fetchElement('conditions', page.conditions[index]) - const elementNode = (
    @@ -45,11 +46,11 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind + onClick={createQuestion} onAltClick={createQuestionSet} disabled={page.read_only} /> + locked={page.locked} onClick={toggleLocked} disabled={page.read_only} /> + exportFormats={config.settings.export_formats} full={true} />
    @@ -58,7 +59,7 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind

    { get(config, 'display.uri.pages', true) &&

    - fetchEdit()} /> + fetchEdit()} order={order} />

    } { @@ -82,7 +83,7 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind case 'list': return showElement && (
  • - { elementNode } + {elementNode}
  • ) case 'nested': @@ -93,7 +94,7 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind
    - { elementNode } + {elementNode}
    @@ -101,14 +102,16 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind } { showElements && page.elements.map((element, index) => { + const questionInfo = page.questions.find(info => info.question === element.id) + const questionOrder = questionInfo ? questionInfo.order : null // Get the order value if (element.model == 'questions.questionset') { return + configActions={configActions} elementActions={elementActions} + display="nested" filter={filter} indent={indent + 1} order={questionOrder} /> } else { return + configActions={configActions} elementActions={elementActions} + display="nested" filter={filter} indent={indent + 1} order={questionOrder} /> } }) } @@ -128,7 +131,8 @@ Page.propTypes = { display: PropTypes.string, indent: PropTypes.number, filter: PropTypes.string, - filterEditors: PropTypes.bool + filterEditors: PropTypes.bool, + order: PropTypes.number } export default Page diff --git a/rdmo/management/assets/js/components/element/Question.js b/rdmo/management/assets/js/components/element/Question.js index ecf280573f..27faedeec9 100644 --- a/rdmo/management/assets/js/components/element/Question.js +++ b/rdmo/management/assets/js/components/element/Question.js @@ -10,8 +10,8 @@ import { EditLink, CopyLink, LockedLink, ExportLink, CodeLink } from '../common/ import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' -const Question = ({ config, question, elementActions, display='list', indent=0, - filter=false, filterEditors=false }) => { +const Question = ({ config, question, elementActions, display = 'list', indent = 0, + filter = false, filterEditors = false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, question) @@ -21,7 +21,7 @@ const Question = ({ config, question, elementActions, display='list', indent=0, const fetchEdit = () => elementActions.fetchElement('questions', question.id) const fetchCopy = () => elementActions.fetchElement('questions', question.id, 'copy') - const toggleLocked = () => elementActions.storeElement('questions', {...question, locked: !question.locked }) + const toggleLocked = () => elementActions.storeElement('questions', { ...question, locked: !question.locked }) const fetchAttribute = () => elementActions.fetchElement('attributes', question.attribute) const fetchCondition = (index) => elementActions.fetchElement('conditions', question.conditions[index]) @@ -34,9 +34,9 @@ const Question = ({ config, question, elementActions, display='list', indent=0, + locked={question.locked} onClick={toggleLocked} disabled={question.read_only} /> + exportFormats={config.settings.export_formats} full={true} />
    @@ -46,7 +46,7 @@ const Question = ({ config, question, elementActions, display='list', indent=0,

    { get(config, 'display.uri.questions', true) &&

    - fetchEdit()} /> + fetchEdit()} order={order} />

    } { @@ -77,7 +77,7 @@ const Question = ({ config, question, elementActions, display='list', indent=0, case 'list': return showElement && (
  • - { elementNode } + {elementNode}
  • ) case 'nested': @@ -87,7 +87,7 @@ const Question = ({ config, question, elementActions, display='list', indent=0, showElement && (
    - { elementNode } + {elementNode}
    ) @@ -106,7 +106,8 @@ Question.propTypes = { display: PropTypes.string, indent: PropTypes.number, filter: PropTypes.string, - filterEditors: PropTypes.bool + filterEditors: PropTypes.bool, + order: PropTypes.number } export default Question diff --git a/rdmo/management/assets/js/components/element/Section.js b/rdmo/management/assets/js/components/element/Section.js index c675ee8103..d893b5836a 100644 --- a/rdmo/management/assets/js/components/element/Section.js +++ b/rdmo/management/assets/js/components/element/Section.js @@ -8,14 +8,16 @@ import { buildPath } from '../../utils/location' import Page from './Page' import { ElementErrors } from '../common/Errors' -import { EditLink, CopyLink, AddLink, LockedLink, NestedLink, ExportLink, - CodeLink, ShowElementsLink } from '../common/Links' +import { + EditLink, CopyLink, AddLink, LockedLink, NestedLink, ExportLink, + CodeLink, ShowElementsLink +} from '../common/Links' import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' -const Section = ({ config, section, configActions, elementActions, display='list', indent=0, - filter=false, filterEditors=false }) => { +const Section = ({ config, section, configActions, elementActions, display = 'list', indent = 0, + filter = false, filterEditors = false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, section) const showElements = get(config, `display.elements.sections.${section.id}`, true) @@ -28,7 +30,7 @@ const Section = ({ config, section, configActions, elementActions, display='list const fetchEdit = () => elementActions.fetchElement('sections', section.id) const fetchCopy = () => elementActions.fetchElement('sections', section.id, 'copy') const fetchNested = () => elementActions.fetchElement('sections', section.id, 'nested') - const toggleLocked = () => elementActions.storeElement('sections', {...section, locked: !section.locked }) + const toggleLocked = () => elementActions.storeElement('sections', { ...section, locked: !section.locked }) const toggleElements = () => configActions.toggleElements(section) const createPage = () => elementActions.createElement('pages', { section }) @@ -43,10 +45,10 @@ const Section = ({ config, section, configActions, elementActions, display='list + : gettext('Lock section')} + locked={section.locked} onClick={toggleLocked} disabled={section.read_only} /> + exportFormats={config.settings.export_formats} full={true} />
    @@ -55,7 +57,7 @@ const Section = ({ config, section, configActions, elementActions, display='list

    { get(config, 'display.uri.sections', true) && - fetchEdit()} /> + fetchEdit()} order={order} /> }
    @@ -66,7 +68,7 @@ const Section = ({ config, section, configActions, elementActions, display='list case 'list': return showElement && (
  • - { elementNode } + {elementNode}
  • ) case 'nested': @@ -77,7 +79,7 @@ const Section = ({ config, section, configActions, elementActions, display='list
    - { elementNode } + {elementNode}
    @@ -88,11 +90,24 @@ const Section = ({ config, section, configActions, elementActions, display='list } { - showElements && section.elements.map((page, index) => ( - - )) + showElements && section.elements.map((page, index) => { + const pageInfo = section.pages.find(info => info.page === page.id) + const pageOrder = pageInfo ? pageInfo.order : null // Get the order value + + return ( + + ) + }) } @@ -110,7 +125,8 @@ Section.propTypes = { display: PropTypes.string, indent: PropTypes.number, filter: PropTypes.string, - filterEditors: PropTypes.bool + filterEditors: PropTypes.bool, + order: PropTypes.number } export default Section diff --git a/rdmo/management/assets/js/components/nested/NestedCatalog.js b/rdmo/management/assets/js/components/nested/NestedCatalog.js index 3b2809f909..654e868d9a 100644 --- a/rdmo/management/assets/js/components/nested/NestedCatalog.js +++ b/rdmo/management/assets/js/components/nested/NestedCatalog.js @@ -40,18 +40,18 @@ const NestedCatalog = ({ config, catalog, configActions, elementActions }) => {
    + configActions={configActions} elementActions={elementActions} display="plain" />
    + placeholder={gettext('Filter catalogs')} />
    + options={getUriPrefixes(catalog.elements)} />
    @@ -63,21 +63,21 @@ const NestedCatalog = ({ config, catalog, configActions, elementActions }) => {
    {gettext('Show URIs:')} {gettext('Catalogs')}} - value={get(config, 'display.uri.catalogs', true)} onChange={updateDisplayCatalogURI} /> + value={get(config, 'display.uri.catalogs', true)} onChange={updateDisplayCatalogURI} /> {gettext('Sections')}} - value={get(config, 'display.uri.sections', true)} onChange={updateDisplaySectionsURI} /> + value={get(config, 'display.uri.sections', true)} onChange={updateDisplaySectionsURI} /> {gettext('Pages')}} - value={get(config, 'display.uri.pages', true)} onChange={updateDisplayPagesURI} /> + value={get(config, 'display.uri.pages', true)} onChange={updateDisplayPagesURI} /> {gettext('Question sets')}} - value={get(config, 'display.uri.questionsets', true)} onChange={updateDisplayQuestionSetsURI} /> + value={get(config, 'display.uri.questionsets', true)} onChange={updateDisplayQuestionSetsURI} /> {gettext('Questions')}} - value={get(config, 'display.uri.questions', true)} onChange={updateDisplayQuestionsURI} /> + value={get(config, 'display.uri.questions', true)} onChange={updateDisplayQuestionsURI} /> {gettext('Attributes')}} - value={get(config, 'display.uri.attributes', true)} onChange={updateDisplayAttributesURI} /> + value={get(config, 'display.uri.attributes', true)} onChange={updateDisplayAttributesURI} /> {gettext('Conditions')}} - value={get(config, 'display.uri.conditions', true)} onChange={updateDisplayConditionsURI} /> + value={get(config, 'display.uri.conditions', true)} onChange={updateDisplayConditionsURI} /> {gettext('Option sets')}} - value={get(config, 'display.uri.optionsets', true)} onChange={updateDisplayOptionSetURI} /> + value={get(config, 'display.uri.optionsets', true)} onChange={updateDisplayOptionSetURI} />
    @@ -86,12 +86,25 @@ const NestedCatalog = ({ config, catalog, configActions, elementActions }) => { } { - catalog.elements.map((section, index) => ( -
    - )) + catalog.elements.map((section, index) => { + const sectionInfo = catalog.sections.find(info => info.section === section.id) + const sectionOrder = sectionInfo ? sectionInfo.order : null // Get the order value + + return ( +
    + ) + }) } + ) } From de725c352b5da44c651823149d89f537d852225d Mon Sep 17 00:00:00 2001 From: Claudia Malzer Date: Fri, 20 Oct 2023 15:38:24 +0200 Subject: [PATCH 2/5] #745 Add order parameter back to managament interface * pass order value to QuestionSet * pass order value to Question from QuestionSet --- .../assets/js/components/element/Page.js | 8 ++-- .../js/components/element/QuestionSet.js | 41 +++++++++++-------- .../assets/js/components/element/Section.js | 2 +- .../js/components/nested/NestedCatalog.js | 4 +- 4 files changed, 32 insertions(+), 23 deletions(-) diff --git a/rdmo/management/assets/js/components/element/Page.js b/rdmo/management/assets/js/components/element/Page.js index d30a08c13d..2bf9f79614 100644 --- a/rdmo/management/assets/js/components/element/Page.js +++ b/rdmo/management/assets/js/components/element/Page.js @@ -102,13 +102,15 @@ const Page = ({ config, page, configActions, elementActions, display = 'list', i } { showElements && page.elements.map((element, index) => { - const questionInfo = page.questions.find(info => info.question === element.id) - const questionOrder = questionInfo ? questionInfo.order : null // Get the order value if (element.model == 'questions.questionset') { + const questionSetInfo = page.questionsets.find(info => info.questionset === element.id) + const questionSetOrder = questionSetInfo ? questionSetInfo.order : undefined return + display="nested" filter={filter} indent={indent + 1} order={questionSetOrder} /> } else { + const questionInfo = page.questions.find(info => info.question === element.id) + const questionOrder = questionInfo ? questionInfo.order : undefined return diff --git a/rdmo/management/assets/js/components/element/QuestionSet.js b/rdmo/management/assets/js/components/element/QuestionSet.js index 024652536f..bf975e37b2 100644 --- a/rdmo/management/assets/js/components/element/QuestionSet.js +++ b/rdmo/management/assets/js/components/element/QuestionSet.js @@ -7,13 +7,15 @@ import { buildPath } from '../../utils/location' import Question from './Question' import { ElementErrors } from '../common/Errors' -import { EditLink, CopyLink, AddLink, LockedLink, - NestedLink, ExportLink, CodeLink, ShowElementsLink } from '../common/Links' +import { + EditLink, CopyLink, AddLink, LockedLink, + NestedLink, ExportLink, CodeLink, ShowElementsLink +} from '../common/Links' import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' -const QuestionSet = ({ config, questionset, configActions, elementActions, display='list', indent=0, - filter=false, filterEditors=false }) => { +const QuestionSet = ({ config, questionset, configActions, elementActions, display = 'list', indent = 0, + filter = false, filterEditors = false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, questionset) const showElements = get(config, `display.elements.questionsets.${questionset.id}`, true) @@ -26,7 +28,7 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ const fetchEdit = () => elementActions.fetchElement('questionsets', questionset.id) const fetchCopy = () => elementActions.fetchElement('questionsets', questionset.id, 'copy') const fetchNested = () => elementActions.fetchElement('questionsets', questionset.id, 'nested') - const toggleLocked = () => elementActions.storeElement('questionsets', {...questionset, locked: !questionset.locked }) + const toggleLocked = () => elementActions.storeElement('questionsets', { ...questionset, locked: !questionset.locked }) const toggleElements = () => configActions.toggleElements(questionset) const createQuestionSet = () => elementActions.createElement('questionsets', { questionset }) @@ -44,11 +46,11 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ + onClick={createQuestion} onAltClick={createQuestionSet} disabled={questionset.read_only} /> + locked={questionset.locked} onClick={toggleLocked} disabled={questionset.read_only} /> + exportFormats={config.settings.export_formats} full={true} />
    @@ -57,11 +59,11 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ

    { get(config, 'display.uri.questionsets', true) &&

    - fetchEdit()} /> + fetchEdit()} order={order} />

    } { - get(config, 'display.uri.attributes', true) && questionset.attribute_uri &&

    + get(config, 'display.uri.attributes', true) && questionset.attribute_uri &&

    fetchAttribute()} />

    } @@ -81,7 +83,7 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ case 'list': return showElement && (
  • - { elementNode } + {elementNode}
  • ) case 'nested': @@ -92,7 +94,7 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ
    - { elementNode } + {elementNode}
    @@ -101,13 +103,17 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ { showElements && questionset.elements.map((element, index) => { if (element.model == 'questions.questionset') { + const questionSetInfo = questionset.questionsets.find(info => info.questionset === element.id) + const questionSetOrder = questionSetInfo ? questionSetInfo.order : undefined return + configActions={configActions} elementActions={elementActions} + display="nested" filter={filter} indent={indent + 1} order={questionSetOrder} /> } else { + const questionInfo = questionset.questions.find(info => info.question === element.id) + const questionOrder = questionInfo ? questionInfo.order : undefined return + configActions={configActions} elementActions={elementActions} + display="nested" filter={filter} indent={indent + 1} order={questionOrder} /> } }) } @@ -127,7 +133,8 @@ QuestionSet.propTypes = { display: PropTypes.string, indent: PropTypes.number, filter: PropTypes.string, - filterEditors: PropTypes.bool + filterEditors: PropTypes.bool, + order: PropTypes.number } export default QuestionSet diff --git a/rdmo/management/assets/js/components/element/Section.js b/rdmo/management/assets/js/components/element/Section.js index d893b5836a..2b6de70075 100644 --- a/rdmo/management/assets/js/components/element/Section.js +++ b/rdmo/management/assets/js/components/element/Section.js @@ -92,7 +92,7 @@ const Section = ({ config, section, configActions, elementActions, display = 'li { showElements && section.elements.map((page, index) => { const pageInfo = section.pages.find(info => info.page === page.id) - const pageOrder = pageInfo ? pageInfo.order : null // Get the order value + const pageOrder = pageInfo ? pageInfo.order : undefined return ( { { catalog.elements.map((section, index) => { const sectionInfo = catalog.sections.find(info => info.section === section.id) - const sectionOrder = sectionInfo ? sectionInfo.order : null // Get the order value + const sectionOrder = sectionInfo ? sectionInfo.order : undefined return (
    { display="nested" filter="catalog" indent={0} - order={sectionOrder} // Pass the order value as a prop + order={sectionOrder} /> ) }) From 8c31431bb1c562500259b524947cd5e540f03e4c Mon Sep 17 00:00:00 2001 From: Claudia Malzer Date: Sat, 28 Oct 2023 09:44:51 +0200 Subject: [PATCH 3/5] * revert auto formatting * fix change requests --- .../assets/js/components/common/Links.js | 29 +++++++++-------- .../assets/js/components/element/Page.js | 31 +++++++++--------- .../assets/js/components/element/Question.js | 14 ++++---- .../js/components/element/QuestionSet.js | 32 +++++++++---------- .../assets/js/components/element/Section.js | 20 ++++++------ .../js/components/nested/NestedCatalog.js | 22 ++++++------- 6 files changed, 73 insertions(+), 75 deletions(-) diff --git a/rdmo/management/assets/js/components/common/Links.js b/rdmo/management/assets/js/components/common/Links.js index 687e7fa9ae..8fbe780447 100644 --- a/rdmo/management/assets/js/components/common/Links.js +++ b/rdmo/management/assets/js/components/common/Links.js @@ -7,7 +7,7 @@ import isUndefined from 'lodash/isUndefined' import Link from 'rdmo/core/assets/js/components/Link' import LinkButton from 'rdmo/core/assets/js/components/LinkButton' -const NestedLink = ({ href, title, onClick, show = true }) => { +const NestedLink = ({ href, title, onClick, show=true }) => { return show && } @@ -74,7 +74,7 @@ const AvailableLink = ({ available, locked, title, onClick, disabled }) => { }) return + disabled={locked || disabled} onClick={onClick} /> } AvailableLink.propTypes = { @@ -120,7 +120,7 @@ ShowElementsLink.propTypes = { onClick: PropTypes.func.isRequired } -const ExportLink = ({ exportUrl, title, exportFormats, csv = false, full = false }) => { +const ExportLink = ({ exportUrl, title, exportFormats, csv=false, full=false }) => { return ( @@ -144,8 +144,8 @@ const ExportLink = ({ exportUrl, title, exportFormats, csv = false, full = false { exportFormats.map(([key, label], index) =>
  • {label} + target={['pdf', 'html'].includes(key) ? '_blank' : '_self'} + rel="noreferrer">{label}
  • ) } @@ -169,7 +169,7 @@ const ExtendLink = ({ extend, onClick }) => { }) const title = extend ? gettext('Show less') - : gettext('Show more') + : gettext('Show more') return } @@ -181,9 +181,14 @@ ExtendLink.propTypes = { const CodeLink = ({ className, uri, onClick, order }) => { return ( - <> - {uri} - {order !== undefined && order !== null ? {order} : null} + <> + + {uri} + + {order !== undefined && order !== null ? ( + <>{' '}{order} + ) : null} + ) } @@ -236,7 +241,5 @@ ShowLink.propTypes = { onClick: PropTypes.func.isRequired } -export { - EditLink, CopyLink, AddLink, AvailableLink, LockedLink, ShowElementsLink, - NestedLink, ExportLink, ExtendLink, CodeLink, ErrorLink, WarningLink, ShowLink -} +export { EditLink, CopyLink, AddLink, AvailableLink, LockedLink, ShowElementsLink, + NestedLink, ExportLink, ExtendLink, CodeLink, ErrorLink, WarningLink, ShowLink } diff --git a/rdmo/management/assets/js/components/element/Page.js b/rdmo/management/assets/js/components/element/Page.js index 2bf9f79614..0a7e086296 100644 --- a/rdmo/management/assets/js/components/element/Page.js +++ b/rdmo/management/assets/js/components/element/Page.js @@ -8,15 +8,13 @@ import { buildPath } from '../../utils/location' import QuestionSet from './QuestionSet' import Question from './Question' import { ElementErrors } from '../common/Errors' -import { - EditLink, CopyLink, AddLink, LockedLink, NestedLink, - ExportLink, CodeLink, ShowElementsLink -} from '../common/Links' +import { EditLink, CopyLink, AddLink, LockedLink, NestedLink, + ExportLink, CodeLink, ShowElementsLink } from '../common/Links' import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' -const Page = ({ config, page, configActions, elementActions, display = 'list', indent = 0, - filter = false, filterEditors = false, order }) => { +const Page = ({ config, page, configActions, elementActions, display='list', indent=0, + filter=false, filterEditors=false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, page) const showElements = get(config, `display.elements.pages.${page.id}`, true) @@ -29,7 +27,7 @@ const Page = ({ config, page, configActions, elementActions, display = 'list', i const fetchEdit = () => elementActions.fetchElement('pages', page.id) const fetchCopy = () => elementActions.fetchElement('pages', page.id, 'copy') const fetchNested = () => elementActions.fetchElement('pages', page.id, 'nested') - const toggleLocked = () => elementActions.storeElement('pages', { ...page, locked: !page.locked }) + const toggleLocked = () => elementActions.storeElement('pages', {...page, locked: !page.locked }) const toggleElements = () => configActions.toggleElements(page) const createQuestionSet = () => elementActions.createElement('questionsets', { page }) @@ -37,6 +35,7 @@ const Page = ({ config, page, configActions, elementActions, display = 'list', i const fetchAttribute = () => elementActions.fetchElement('attributes', page.attribute) const fetchCondition = (index) => elementActions.fetchElement('conditions', page.conditions[index]) + const elementNode = (
    @@ -46,11 +45,11 @@ const Page = ({ config, page, configActions, elementActions, display = 'list', i + onClick={createQuestion} onAltClick={createQuestionSet} disabled={page.read_only} /> + locked={page.locked} onClick={toggleLocked} disabled={page.read_only} /> + exportFormats={config.settings.export_formats} full={true} />
    @@ -83,7 +82,7 @@ const Page = ({ config, page, configActions, elementActions, display = 'list', i case 'list': return showElement && (
  • - {elementNode} + { elementNode }
  • ) case 'nested': @@ -94,7 +93,7 @@ const Page = ({ config, page, configActions, elementActions, display = 'list', i
    - {elementNode} + { elementNode }
    @@ -106,14 +105,14 @@ const Page = ({ config, page, configActions, elementActions, display = 'list', i const questionSetInfo = page.questionsets.find(info => info.questionset === element.id) const questionSetOrder = questionSetInfo ? questionSetInfo.order : undefined return + configActions={configActions} elementActions={elementActions} + display="nested" filter={filter} indent={indent + 1} order={questionSetOrder} /> } else { const questionInfo = page.questions.find(info => info.question === element.id) const questionOrder = questionInfo ? questionInfo.order : undefined return + configActions={configActions} elementActions={elementActions} + display="nested" filter={filter} indent={indent + 1} order={questionOrder} /> } }) } diff --git a/rdmo/management/assets/js/components/element/Question.js b/rdmo/management/assets/js/components/element/Question.js index 27faedeec9..e9864d8cd2 100644 --- a/rdmo/management/assets/js/components/element/Question.js +++ b/rdmo/management/assets/js/components/element/Question.js @@ -10,8 +10,8 @@ import { EditLink, CopyLink, LockedLink, ExportLink, CodeLink } from '../common/ import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' -const Question = ({ config, question, elementActions, display = 'list', indent = 0, - filter = false, filterEditors = false, order }) => { +const Question = ({ config, question, elementActions, display='list', indent=0, + filter=false, filterEditors=false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, question) @@ -21,7 +21,7 @@ const Question = ({ config, question, elementActions, display = 'list', indent = const fetchEdit = () => elementActions.fetchElement('questions', question.id) const fetchCopy = () => elementActions.fetchElement('questions', question.id, 'copy') - const toggleLocked = () => elementActions.storeElement('questions', { ...question, locked: !question.locked }) + const toggleLocked = () => elementActions.storeElement('questions', {...question, locked: !question.locked }) const fetchAttribute = () => elementActions.fetchElement('attributes', question.attribute) const fetchCondition = (index) => elementActions.fetchElement('conditions', question.conditions[index]) @@ -34,9 +34,9 @@ const Question = ({ config, question, elementActions, display = 'list', indent = + locked={question.locked} onClick={toggleLocked} disabled={question.read_only} /> + exportFormats={config.settings.export_formats} full={true} />
    @@ -77,7 +77,7 @@ const Question = ({ config, question, elementActions, display = 'list', indent = case 'list': return showElement && (
  • - {elementNode} + { elementNode }
  • ) case 'nested': @@ -87,7 +87,7 @@ const Question = ({ config, question, elementActions, display = 'list', indent = showElement && (
    - {elementNode} + { elementNode }
    ) diff --git a/rdmo/management/assets/js/components/element/QuestionSet.js b/rdmo/management/assets/js/components/element/QuestionSet.js index bf975e37b2..56d3bdd701 100644 --- a/rdmo/management/assets/js/components/element/QuestionSet.js +++ b/rdmo/management/assets/js/components/element/QuestionSet.js @@ -7,15 +7,13 @@ import { buildPath } from '../../utils/location' import Question from './Question' import { ElementErrors } from '../common/Errors' -import { - EditLink, CopyLink, AddLink, LockedLink, - NestedLink, ExportLink, CodeLink, ShowElementsLink -} from '../common/Links' +import { EditLink, CopyLink, AddLink, LockedLink, + NestedLink, ExportLink, CodeLink, ShowElementsLink } from '../common/Links' import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' -const QuestionSet = ({ config, questionset, configActions, elementActions, display = 'list', indent = 0, - filter = false, filterEditors = false, order }) => { +const QuestionSet = ({ config, questionset, configActions, elementActions, display='list', indent=0, + filter=false, filterEditors=false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, questionset) const showElements = get(config, `display.elements.questionsets.${questionset.id}`, true) @@ -28,7 +26,7 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ const fetchEdit = () => elementActions.fetchElement('questionsets', questionset.id) const fetchCopy = () => elementActions.fetchElement('questionsets', questionset.id, 'copy') const fetchNested = () => elementActions.fetchElement('questionsets', questionset.id, 'nested') - const toggleLocked = () => elementActions.storeElement('questionsets', { ...questionset, locked: !questionset.locked }) + const toggleLocked = () => elementActions.storeElement('questionsets', {...questionset, locked: !questionset.locked }) const toggleElements = () => configActions.toggleElements(questionset) const createQuestionSet = () => elementActions.createElement('questionsets', { questionset }) @@ -46,11 +44,11 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ + onClick={createQuestion} onAltClick={createQuestionSet} disabled={questionset.read_only} /> + locked={questionset.locked} onClick={toggleLocked} disabled={questionset.read_only} /> + exportFormats={config.settings.export_formats} full={true} />
    @@ -63,7 +61,7 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ

    } { - get(config, 'display.uri.attributes', true) && questionset.attribute_uri &&

    + get(config, 'display.uri.attributes', true) && questionset.attribute_uri &&

    fetchAttribute()} />

    } @@ -83,7 +81,7 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ case 'list': return showElement && (
  • - {elementNode} + { elementNode }
  • ) case 'nested': @@ -94,7 +92,7 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ
    - {elementNode} + { elementNode }
    @@ -106,14 +104,14 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ const questionSetInfo = questionset.questionsets.find(info => info.questionset === element.id) const questionSetOrder = questionSetInfo ? questionSetInfo.order : undefined return + configActions={configActions} elementActions={elementActions} + display="nested" filter={filter} indent={indent + 1} order={questionSetOrder} /> } else { const questionInfo = questionset.questions.find(info => info.question === element.id) const questionOrder = questionInfo ? questionInfo.order : undefined return + configActions={configActions} elementActions={elementActions} + display="nested" filter={filter} indent={indent + 1} order={questionOrder} /> } }) } diff --git a/rdmo/management/assets/js/components/element/Section.js b/rdmo/management/assets/js/components/element/Section.js index 2b6de70075..acea3b6ed7 100644 --- a/rdmo/management/assets/js/components/element/Section.js +++ b/rdmo/management/assets/js/components/element/Section.js @@ -8,16 +8,14 @@ import { buildPath } from '../../utils/location' import Page from './Page' import { ElementErrors } from '../common/Errors' -import { - EditLink, CopyLink, AddLink, LockedLink, NestedLink, ExportLink, - CodeLink, ShowElementsLink -} from '../common/Links' +import { EditLink, CopyLink, AddLink, LockedLink, NestedLink, ExportLink, + CodeLink, ShowElementsLink } from '../common/Links' import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' -const Section = ({ config, section, configActions, elementActions, display = 'list', indent = 0, - filter = false, filterEditors = false, order }) => { +const Section = ({ config, section, configActions, elementActions, display='list', indent=0, + filter=false, filterEditors=false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, section) const showElements = get(config, `display.elements.sections.${section.id}`, true) @@ -30,7 +28,7 @@ const Section = ({ config, section, configActions, elementActions, display = 'li const fetchEdit = () => elementActions.fetchElement('sections', section.id) const fetchCopy = () => elementActions.fetchElement('sections', section.id, 'copy') const fetchNested = () => elementActions.fetchElement('sections', section.id, 'nested') - const toggleLocked = () => elementActions.storeElement('sections', { ...section, locked: !section.locked }) + const toggleLocked = () => elementActions.storeElement('sections', {...section, locked: !section.locked }) const toggleElements = () => configActions.toggleElements(section) const createPage = () => elementActions.createElement('pages', { section }) @@ -45,10 +43,10 @@ const Section = ({ config, section, configActions, elementActions, display = 'li + exportFormats={config.settings.export_formats} full={true} />
    @@ -68,7 +66,7 @@ const Section = ({ config, section, configActions, elementActions, display = 'li case 'list': return showElement && (
  • - {elementNode} + { elementNode }
  • ) case 'nested': @@ -79,7 +77,7 @@ const Section = ({ config, section, configActions, elementActions, display = 'li
    - {elementNode} + { elementNode }
    diff --git a/rdmo/management/assets/js/components/nested/NestedCatalog.js b/rdmo/management/assets/js/components/nested/NestedCatalog.js index 2eb1895c91..b57840b9c6 100644 --- a/rdmo/management/assets/js/components/nested/NestedCatalog.js +++ b/rdmo/management/assets/js/components/nested/NestedCatalog.js @@ -40,18 +40,18 @@ const NestedCatalog = ({ config, catalog, configActions, elementActions }) => {
    + configActions={configActions} elementActions={elementActions} display="plain" />
    + placeholder={gettext('Filter catalogs')} />
    + options={getUriPrefixes(catalog.elements)} />
    @@ -63,21 +63,21 @@ const NestedCatalog = ({ config, catalog, configActions, elementActions }) => {
    {gettext('Show URIs:')} {gettext('Catalogs')}} - value={get(config, 'display.uri.catalogs', true)} onChange={updateDisplayCatalogURI} /> + value={get(config, 'display.uri.catalogs', true)} onChange={updateDisplayCatalogURI} /> {gettext('Sections')}} - value={get(config, 'display.uri.sections', true)} onChange={updateDisplaySectionsURI} /> + value={get(config, 'display.uri.sections', true)} onChange={updateDisplaySectionsURI} /> {gettext('Pages')}} - value={get(config, 'display.uri.pages', true)} onChange={updateDisplayPagesURI} /> + value={get(config, 'display.uri.pages', true)} onChange={updateDisplayPagesURI} /> {gettext('Question sets')}} - value={get(config, 'display.uri.questionsets', true)} onChange={updateDisplayQuestionSetsURI} /> + value={get(config, 'display.uri.questionsets', true)} onChange={updateDisplayQuestionSetsURI} /> {gettext('Questions')}} - value={get(config, 'display.uri.questions', true)} onChange={updateDisplayQuestionsURI} /> + value={get(config, 'display.uri.questions', true)} onChange={updateDisplayQuestionsURI} /> {gettext('Attributes')}} - value={get(config, 'display.uri.attributes', true)} onChange={updateDisplayAttributesURI} /> + value={get(config, 'display.uri.attributes', true)} onChange={updateDisplayAttributesURI} /> {gettext('Conditions')}} - value={get(config, 'display.uri.conditions', true)} onChange={updateDisplayConditionsURI} /> + value={get(config, 'display.uri.conditions', true)} onChange={updateDisplayConditionsURI} /> {gettext('Option sets')}} - value={get(config, 'display.uri.optionsets', true)} onChange={updateDisplayOptionSetURI} /> + value={get(config, 'display.uri.optionsets', true)} onChange={updateDisplayOptionSetURI} />
    From 5ae2e54243d2c64fd10ca9aa65b1879991e9f1b6 Mon Sep 17 00:00:00 2001 From: Claudia Malzer Date: Mon, 30 Oct 2023 09:42:26 +0100 Subject: [PATCH 4/5] #745 Add order parameter back to managament interface * use isNil --- rdmo/management/assets/js/components/common/Links.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rdmo/management/assets/js/components/common/Links.js b/rdmo/management/assets/js/components/common/Links.js index 8fbe780447..8f816dd64a 100644 --- a/rdmo/management/assets/js/components/common/Links.js +++ b/rdmo/management/assets/js/components/common/Links.js @@ -2,6 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import classNames from 'classnames' import isEmpty from 'lodash/isEmpty' +import isNil from 'lodash/isNil' import isUndefined from 'lodash/isUndefined' import Link from 'rdmo/core/assets/js/components/Link' @@ -185,7 +186,7 @@ const CodeLink = ({ className, uri, onClick, order }) => { {uri} - {order !== undefined && order !== null ? ( + {!isNil(order) ? ( <>{' '}{order} ) : null} From f11bf6c250eb72951229569eacb84d31d2b0dda5 Mon Sep 17 00:00:00 2001 From: Claudia Malzer Date: Mon, 30 Oct 2023 09:47:42 +0100 Subject: [PATCH 5/5] * fix indent --- rdmo/management/assets/js/components/element/Section.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rdmo/management/assets/js/components/element/Section.js b/rdmo/management/assets/js/components/element/Section.js index acea3b6ed7..92e0150ad7 100644 --- a/rdmo/management/assets/js/components/element/Section.js +++ b/rdmo/management/assets/js/components/element/Section.js @@ -44,7 +44,7 @@ const Section = ({ config, section, configActions, elementActions, display='list + locked={section.locked} onClick={toggleLocked} disabled={section.read_only} />