diff --git a/rdmo/projects/assets/js/interview/actions/interviewActions.js b/rdmo/projects/assets/js/interview/actions/interviewActions.js
index 31d43a85c..66e57e873 100644
--- a/rdmo/projects/assets/js/interview/actions/interviewActions.js
+++ b/rdmo/projects/assets/js/interview/actions/interviewActions.js
@@ -275,19 +275,21 @@ export function storeValue(value) {
return {type: NOOP}
} else {
return (dispatch, getState) => {
- const valueIndex = getState().interview.values.findIndex((v) => compareValues(v, value))
+ const page = getState().interview.page
+ const sets = getState().interview.sets
+ const question = page.questions.find((question) => question.attribute === value.attribute)
+ const refresh = question && question.optionsets.some((optionset) => optionset.has_refresh)
+ const widget_type = question && question.widget_type
+
+ const valueIndex = getState().interview.values.findIndex((v) => compareValues(v, value, widget_type))
const valueFile = value.file
const valueSuccess = value.success
dispatch(addToPending(pendingId))
dispatch(storeValueInit(valueIndex))
- return ValueApi.storeValue(projectId, value)
+ return ValueApi.storeValue(projectId, { ...value, widget_type })
.then((value) => {
- const page = getState().interview.page
- const sets = getState().interview.sets
- const question = page.questions.find((question) => question.attribute === value.attribute)
- const refresh = question && question.optionsets.some((optionset) => optionset.has_refresh)
dispatch(fetchNavigation(page))
dispatch(updateProgress())
diff --git a/rdmo/projects/assets/js/interview/components/main/Breadcrump.js b/rdmo/projects/assets/js/interview/components/main/Breadcrumb.js
similarity index 89%
rename from rdmo/projects/assets/js/interview/components/main/Breadcrump.js
rename to rdmo/projects/assets/js/interview/components/main/Breadcrumb.js
index 9479b6387..a47394aa9 100644
--- a/rdmo/projects/assets/js/interview/components/main/Breadcrump.js
+++ b/rdmo/projects/assets/js/interview/components/main/Breadcrumb.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { baseUrl } from 'rdmo/core/assets/js/utils/meta'
-const Breadcrump = ({ overview, page, fetchPage }) => {
+const Breadcrumb = ({ overview, page, fetchPage }) => {
const handleClick = (event) => {
event.preventDefault()
@@ -35,10 +35,10 @@ const Breadcrump = ({ overview, page, fetchPage }) => {
)
}
-Breadcrump.propTypes = {
+Breadcrumb.propTypes = {
overview: PropTypes.object.isRequired,
page: PropTypes.object,
fetchPage: PropTypes.func.isRequired
}
-export default Breadcrump
+export default Breadcrumb
diff --git a/rdmo/projects/assets/js/interview/components/main/page/Page.js b/rdmo/projects/assets/js/interview/components/main/page/Page.js
index d276ff8c3..0aea9662f 100644
--- a/rdmo/projects/assets/js/interview/components/main/page/Page.js
+++ b/rdmo/projects/assets/js/interview/components/main/page/Page.js
@@ -3,13 +3,12 @@ import PropTypes from 'prop-types'
import get from 'lodash/get'
import { isNil, minBy } from 'lodash'
-import Html from 'rdmo/core/assets/js/components/Html'
-
import Question from '../question/Question'
import QuestionSet from '../questionset/QuestionSet'
import PageButtons from './PageButtons'
import PageHead from './PageHead'
+import PageHelp from './PageHelp'
const Page = ({ config, settings, templates, overview, page, sets, values, fetchPage, fetchContact,
createValue, updateValue, deleteValue, copyValue,
@@ -30,12 +29,13 @@ const Page = ({ config, settings, templates, overview, page, sets, values, fetch
return (
{page.title}
-
+
(set.set_prefix == currentSetPrefix))}
values={isNil(page.attribute) ? [] : values.filter((value) => (value.attribute == page.attribute))}
+ disabled={overview.read_only}
currentSet={currentSet}
activateSet={activateSet}
createSet={createSet}
diff --git a/rdmo/projects/assets/js/interview/components/main/page/PageHead.js b/rdmo/projects/assets/js/interview/components/main/page/PageHead.js
index f30e0547d..ca9e9ffdb 100644
--- a/rdmo/projects/assets/js/interview/components/main/page/PageHead.js
+++ b/rdmo/projects/assets/js/interview/components/main/page/PageHead.js
@@ -3,14 +3,15 @@ import PropTypes from 'prop-types'
import classNames from 'classnames'
import { capitalize, isEmpty, isNil, last } from 'lodash'
-import Html from 'rdmo/core/assets/js/components/Html'
import useModal from 'rdmo/core/assets/js/hooks/useModal'
import PageHeadDeleteModal from './PageHeadDeleteModal'
import PageHeadFormModal from './PageHeadFormModal'
import PageHeadReuseModal from './PageHeadReuseModal'
-const PageHead = ({ templates, page, sets, values, currentSet,
+import PageTabsHelp from './PageTabsHelp'
+
+const PageHead = ({ templates, page, sets, values, disabled, currentSet,
activateSet, createSet, updateSet, deleteSet, copySet }) => {
const currentSetValue = isNil(currentSet) ? null : (
@@ -83,8 +84,7 @@ const PageHead = ({ templates, page, sets, values, currentSet,
return page.is_collection && (
-
-
+
{
currentSet ? (
<>
@@ -103,22 +103,39 @@ const PageHead = ({ templates, page, sets, values, currentSet,
)
})
}
-
-
- {capitalize(page.verbose_name)}
-
-
-
-
+
+ {
+ !disabled && (
+
+ {
+ page.attribute && (
+
+ )
+ }
+
+
+
+
+ )
+ }
>
) : (
+}
+
+PageTabsHelp.propTypes = {
+ templates: PropTypes.object.isRequired,
+ disabled: PropTypes.bool.isRequired
+}
+
+export default PageTabsHelp
diff --git a/rdmo/projects/assets/js/interview/components/main/question/Question.js b/rdmo/projects/assets/js/interview/components/main/question/Question.js
index d760d32bf..c902d1a18 100644
--- a/rdmo/projects/assets/js/interview/components/main/question/Question.js
+++ b/rdmo/projects/assets/js/interview/components/main/question/Question.js
@@ -17,12 +17,14 @@ const Question = ({ settings, templates, page, question, sets, values, siblings,
currentSet, createValue, updateValue, deleteValue, copyValue, fetchContact }) => {
return checkQuestion(question, currentSet) && (
-
-
+
+
+
+
-
+
{
- return question.is_collection && (
+const QuestionAddValueHelp = ({ templates, question, disabled }) => {
+ return !disabled && question.is_collection && (
)
}
@@ -12,6 +12,7 @@ const QuestionAddValueHelp = ({ templates, question }) => {
QuestionAddValueHelp.propTypes = {
templates: PropTypes.object.isRequired,
question: PropTypes.object.isRequired,
+ disabled: PropTypes.bool.isRequired,
}
export default QuestionAddValueHelp
diff --git a/rdmo/projects/assets/js/interview/components/main/question/QuestionContact.js b/rdmo/projects/assets/js/interview/components/main/question/QuestionContact.js
index 32b3cd138..06b7a0069 100644
--- a/rdmo/projects/assets/js/interview/components/main/question/QuestionContact.js
+++ b/rdmo/projects/assets/js/interview/components/main/question/QuestionContact.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
const QuestionContact = ({ settings, question, values, fetchContact }) => {
return settings.project_contact && (
-
diff --git a/rdmo/projects/assets/js/interview/components/main/question/QuestionHelp.js b/rdmo/projects/assets/js/interview/components/main/question/QuestionHelp.js
index eec017251..2c29b1ed0 100644
--- a/rdmo/projects/assets/js/interview/components/main/question/QuestionHelp.js
+++ b/rdmo/projects/assets/js/interview/components/main/question/QuestionHelp.js
@@ -5,12 +5,13 @@ import classNames from 'classnames'
import Html from 'rdmo/core/assets/js/components/Html'
const QuestionHelp = ({ question }) => {
- const classnames = classNames({
- 'help-text': true,
+ const classnames = classNames('interview-question-help', {
'text-muted': question.is_optional
})
- return
+ return
+
+
}
QuestionHelp.propTypes = {
diff --git a/rdmo/projects/assets/js/interview/components/main/question/QuestionReuseValue.js b/rdmo/projects/assets/js/interview/components/main/question/QuestionReuseValue.js
index c8346d866..550509175 100644
--- a/rdmo/projects/assets/js/interview/components/main/question/QuestionReuseValue.js
+++ b/rdmo/projects/assets/js/interview/components/main/question/QuestionReuseValue.js
@@ -9,7 +9,7 @@ import Modal from 'rdmo/core/assets/js/components/Modal'
import Search from '../Search'
-const QuestionReuseValue = ({ page, question, value, updateValue }) => {
+const QuestionReuseValue = ({ page, question, value, disabled, updateValue }) => {
const initialFormValues = {
value: ''
}
@@ -63,7 +63,7 @@ const QuestionReuseValue = ({ page, question, value, updateValue }) => {
>
- return <>
+ return !disabled && <>
@@ -96,6 +96,7 @@ QuestionReuseValue.propTypes = {
page: PropTypes.object.isRequired,
question: PropTypes.object.isRequired,
value: PropTypes.object.isRequired,
+ disabled: PropTypes.bool.isRequired,
updateValue: PropTypes.func.isRequired
}
diff --git a/rdmo/projects/assets/js/interview/components/main/question/QuestionReuseValues.js b/rdmo/projects/assets/js/interview/components/main/question/QuestionReuseValues.js
index 6c1c3a73a..c2bb8bec7 100644
--- a/rdmo/projects/assets/js/interview/components/main/question/QuestionReuseValues.js
+++ b/rdmo/projects/assets/js/interview/components/main/question/QuestionReuseValues.js
@@ -9,7 +9,7 @@ import Modal from 'rdmo/core/assets/js/components/Modal'
import Search from '../Search'
-const QuestionReuseValues = ({ page, question, values, createValues, updateValue, deleteValue }) => {
+const QuestionReuseValues = ({ page, question, values, disabled, createValues, updateValue, deleteValue }) => {
const initialFormValues = {
value: '',
@@ -75,7 +75,7 @@ const QuestionReuseValues = ({ page, question, values, createValues, updateValue
}
}, [formValues, formValues.value])
- return <>
+ return !disabled && <>
@@ -110,6 +110,7 @@ QuestionReuseValues.propTypes = {
page: PropTypes.object.isRequired,
question: PropTypes.object.isRequired,
values: PropTypes.array.isRequired,
+ disabled: PropTypes.bool.isRequired,
createValues: PropTypes.func.isRequired,
updateValue: PropTypes.func.isRequired,
deleteValue: PropTypes.func.isRequired
diff --git a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSet.js b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSet.js
index 57b2cbd69..6c92a4c4b 100644
--- a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSet.js
+++ b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSet.js
@@ -30,14 +30,14 @@ const QuestionSet = ({ settings, templates, page, questionset, sets, values, dis
-
+
{
currentSets.map((set, setIndex) => (
-
-
+
+
{
@@ -108,7 +108,13 @@ const QuestionSet = ({ settings, templates, page, questionset, sets, values, dis
}
-
+
)
}
diff --git a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetAddSet.js b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetAddSet.js
index 2141af09e..e7434998b 100644
--- a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetAddSet.js
+++ b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetAddSet.js
@@ -2,7 +2,7 @@ import React from 'react'
import PropTypes from 'prop-types'
import { capitalize, maxBy } from 'lodash'
-const QuestionSetAddSet = ({ questionset, sets, setPrefix, createSet }) => {
+const QuestionSetAddSet = ({ questionset, sets, setPrefix, disabled, createSet }) => {
const handleClick = () => {
const lastSet = maxBy(sets, (s) => s.set_index)
const setIndex = lastSet ? lastSet.set_index + 1 : 0
@@ -13,7 +13,7 @@ const QuestionSetAddSet = ({ questionset, sets, setPrefix, createSet }) => {
})
}
- return questionset.is_collection && (
+ return !disabled && questionset.is_collection && (
@@ -24,6 +24,7 @@ QuestionSetAddSet.propTypes = {
questionset: PropTypes.object.isRequired,
sets: PropTypes.array.isRequired,
setPrefix: PropTypes.string.isRequired,
+ disabled: PropTypes.bool.isRequired,
createSet: PropTypes.func.isRequired
}
diff --git a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetAddSetHelp.js b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetAddSetHelp.js
index adbd97275..5374b0708 100644
--- a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetAddSetHelp.js
+++ b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetAddSetHelp.js
@@ -3,15 +3,16 @@ import PropTypes from 'prop-types'
import Html from 'rdmo/core/assets/js/components/Html'
-const QuestionSetAddSetHelp = ({ templates, questionset }) => {
- return questionset.is_collection && (
+const QuestionSetAddSetHelp = ({ templates, questionset, disabled }) => {
+ return !disabled && questionset.is_collection && (
)
}
QuestionSetAddSetHelp.propTypes = {
templates: PropTypes.object.isRequired,
- questionset: PropTypes.object.isRequired
+ questionset: PropTypes.object.isRequired,
+ disabled: PropTypes.bool.isRequired
}
export default QuestionSetAddSetHelp
diff --git a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopySet.js b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopySet.js
index 3c5b1fc24..44370dc25 100644
--- a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopySet.js
+++ b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetCopySet.js
@@ -6,7 +6,7 @@ import Modal from 'rdmo/core/assets/js/components/Modal'
import useModal from 'rdmo/core/assets/js/hooks/useModal'
-const QuestionCopySet = ({ questionset, sets, currentSet, copySet }) => {
+const QuestionCopySet = ({ questionset, sets, currentSet, disabled, copySet }) => {
const modal = useModal()
@@ -18,7 +18,7 @@ const QuestionCopySet = ({ questionset, sets, currentSet, copySet }) => {
modal.close()
}
- return questionset.is_collection && (
+ return !disabled && questionset.is_collection && (
<>
+
+
+
)
}
diff --git a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetRemoveSet.js b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetRemoveSet.js
index de8bc8377..e2cb2d66c 100644
--- a/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetRemoveSet.js
+++ b/rdmo/projects/assets/js/interview/components/main/questionset/QuestionSetRemoveSet.js
@@ -5,7 +5,7 @@ import useModal from 'rdmo/core/assets/js/hooks/useModal'
import Modal from 'rdmo/core/assets/js/components/Modal'
-const QuestionRemoveSet = ({ questionset, currentSet, deleteSet }) => {
+const QuestionRemoveSet = ({ questionset, currentSet, disabled, deleteSet }) => {
const modal = useModal()
@@ -14,7 +14,7 @@ const QuestionRemoveSet = ({ questionset, currentSet, deleteSet }) => {
modal.close()
}
- return questionset.is_collection && (
+ return !disabled && questionset.is_collection && (
<>