diff --git a/rdmo/management/assets/js/components/common/Links.js b/rdmo/management/assets/js/components/common/Links.js index 0c291ad8ed..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' @@ -179,18 +180,24 @@ ExtendLink.propTypes = { onClick: PropTypes.func.isRequired } -const CodeLink = ({ className, uri, onClick }) => { +const CodeLink = ({ className, uri, onClick, order }) => { return ( - - {uri} - + <> + + {uri} + + {!isNil(order) ? ( + <>{' '}{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 }) => { diff --git a/rdmo/management/assets/js/components/element/Page.js b/rdmo/management/assets/js/components/element/Page.js index af692967be..0a7e086296 100644 --- a/rdmo/management/assets/js/components/element/Page.js +++ b/rdmo/management/assets/js/components/element/Page.js @@ -14,7 +14,7 @@ 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 }) => { + filter=false, filterEditors=false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, page) const showElements = get(config, `display.elements.pages.${page.id}`, true) @@ -58,7 +58,7 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind

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

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

} { @@ -102,13 +102,17 @@ const Page = ({ config, page, configActions, elementActions, display='list', ind { showElements && page.elements.map((element, index) => { 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 + display="nested" filter={filter} indent={indent + 1} order={questionOrder} /> } }) } @@ -128,7 +132,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..e9864d8cd2 100644 --- a/rdmo/management/assets/js/components/element/Question.js +++ b/rdmo/management/assets/js/components/element/Question.js @@ -11,7 +11,7 @@ import { ReadOnlyIcon } from '../common/Icons' import { Drag, Drop } from '../common/DragAndDrop' const Question = ({ config, question, elementActions, display='list', indent=0, - filter=false, filterEditors=false }) => { + filter=false, filterEditors=false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, question) @@ -46,7 +46,7 @@ const Question = ({ config, question, elementActions, display='list', indent=0,

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

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

} { @@ -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/QuestionSet.js b/rdmo/management/assets/js/components/element/QuestionSet.js index 024652536f..56d3bdd701 100644 --- a/rdmo/management/assets/js/components/element/QuestionSet.js +++ b/rdmo/management/assets/js/components/element/QuestionSet.js @@ -13,7 +13,7 @@ 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 }) => { + filter=false, filterEditors=false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, questionset) const showElements = get(config, `display.elements.questionsets.${questionset.id}`, true) @@ -57,7 +57,7 @@ const QuestionSet = ({ config, questionset, configActions, elementActions, displ

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

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

} { @@ -101,13 +101,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 + 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 + display="nested" filter={filter} indent={indent + 1} order={questionOrder} /> } }) } @@ -127,7 +131,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 c675ee8103..92e0150ad7 100644 --- a/rdmo/management/assets/js/components/element/Section.js +++ b/rdmo/management/assets/js/components/element/Section.js @@ -15,7 +15,7 @@ import { Drag, Drop } from '../common/DragAndDrop' const Section = ({ config, section, configActions, elementActions, display='list', indent=0, - filter=false, filterEditors=false }) => { + filter=false, filterEditors=false, order }) => { const showElement = filterElement(config, filter, false, filterEditors, section) const showElements = get(config, `display.elements.sections.${section.id}`, true) @@ -55,7 +55,7 @@ const Section = ({ config, section, configActions, elementActions, display='list

{ get(config, 'display.uri.sections', true) && - fetchEdit()} /> + fetchEdit()} order={order} /> } @@ -88,11 +88,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 : undefined + + return ( + + ) + }) } @@ -110,7 +123,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..b57840b9c6 100644 --- a/rdmo/management/assets/js/components/nested/NestedCatalog.js +++ b/rdmo/management/assets/js/components/nested/NestedCatalog.js @@ -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 : undefined + + return ( +
+ ) + }) } + ) }