@pie-element/matrix 0.25.1-next.2 → 0.25.1-next.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure/lib/Main.js +17 -2
- package/configure/lib/Main.js.map +1 -1
- package/configure/lib/defaults.js +4 -2
- package/configure/lib/defaults.js.map +1 -1
- package/configure/package.json +1 -1
- package/controller/lib/index.js +28 -1
- package/controller/lib/index.js.map +1 -1
- package/docs/config-schema.json +19 -4
- package/docs/config-schema.json.md +14 -2
- package/package.json +3 -3
package/configure/lib/Main.js
CHANGED
|
@@ -66,6 +66,11 @@ var styles = function styles(theme) {
|
|
|
66
66
|
width: '100%',
|
|
67
67
|
paddingBottom: theme.spacing.unit * 2.5,
|
|
68
68
|
justifyContent: 'space-around'
|
|
69
|
+
},
|
|
70
|
+
errorText: {
|
|
71
|
+
fontSize: theme.typography.fontSize - 2,
|
|
72
|
+
color: theme.palette.error.main,
|
|
73
|
+
paddingTop: theme.spacing.unit
|
|
69
74
|
}
|
|
70
75
|
};
|
|
71
76
|
};
|
|
@@ -97,9 +102,13 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
97
102
|
teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi;
|
|
98
103
|
|
|
99
104
|
var _ref2 = model || {},
|
|
105
|
+
_ref2$errors = _ref2.errors,
|
|
106
|
+
errors = _ref2$errors === void 0 ? {} : _ref2$errors,
|
|
100
107
|
teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
|
|
101
108
|
spellCheckEnabled = _ref2.spellCheckEnabled;
|
|
102
109
|
|
|
110
|
+
var promptError = errors.prompt,
|
|
111
|
+
teacherInstructionsError = errors.teacherInstructions;
|
|
103
112
|
var panelProperties = {
|
|
104
113
|
teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
|
|
105
114
|
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
|
|
@@ -131,11 +140,14 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
131
140
|
markup: model.teacherInstructions || '',
|
|
132
141
|
onChange: onTeacherInstructionsChanged,
|
|
133
142
|
imageSupport: imageSupport,
|
|
143
|
+
error: teacherInstructionsError,
|
|
134
144
|
pluginProps: getPluginProps(teacherInstructions === null || teacherInstructions === void 0 ? void 0 : teacherInstructions.inputConfiguration),
|
|
135
145
|
nonEmpty: false,
|
|
136
146
|
spellCheck: spellCheckEnabled,
|
|
137
147
|
uploadSoundSupport: uploadSoundSupport
|
|
138
|
-
})
|
|
148
|
+
}), teacherInstructionsError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
149
|
+
className: classes.errorText
|
|
150
|
+
}, teacherInstructionsError)), /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
139
151
|
label: prompt.label,
|
|
140
152
|
className: classes.promptHolder
|
|
141
153
|
}, /*#__PURE__*/_react["default"].createElement(_editableHtml.EditableHtml, {
|
|
@@ -143,12 +155,15 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
143
155
|
markup: model.prompt,
|
|
144
156
|
onChange: onPromptChanged,
|
|
145
157
|
imageSupport: imageSupport,
|
|
158
|
+
error: promptError,
|
|
146
159
|
pluginProps: getPluginProps(prompt === null || prompt === void 0 ? void 0 : prompt.inputConfiguration),
|
|
147
160
|
nonEmpty: !prompt.settings,
|
|
148
161
|
spellCheck: spellCheckEnabled,
|
|
149
162
|
uploadSoundSupport: uploadSoundSupport,
|
|
150
163
|
disableUnderline: true
|
|
151
|
-
})
|
|
164
|
+
}), promptError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
165
|
+
className: classes.errorText
|
|
166
|
+
}, promptError)), /*#__PURE__*/_react["default"].createElement("div", {
|
|
152
167
|
className: classes.matrixHeaderOptionsHolder
|
|
153
168
|
}, /*#__PURE__*/_react["default"].createElement(_MatrixRowsSizeHeaderInput["default"], {
|
|
154
169
|
model: model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Main.jsx"],"names":["Panel","settings","toggle","radio","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","matrixHeaderOptionsHolder","display","flexWrap","paddingBottom","justifyContent","Design","props","classes","model","configuration","onPromptChanged","imageSupport","uploadSoundSupport","onChangeModel","onConfigurationChanged","onTeacherInstructionsChanged","baseInputConfiguration","contentDimensions","prompt","scoringType","settingsPanelDisabled","spellCheck","teacherInstructions","teacherInstructionsEnabled","spellCheckEnabled","panelProperties","label","getPluginProps","Properties","inputConfiguration","Main","onModelChanged","data","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { InputContainer, settings, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport MatrixColumnsSizeHeaderInput from './MatrixColumnsSizeHeaderInput';\nimport MatrixRowsSizeHeaderInput from './MatrixRowsSizeHeaderInput';\nimport MatrixLabelTypeHeaderInput from './MatrixLabelTypeHeaderInput';\nimport MatrixValues from './MatrixValues';\n\nconst { Panel, toggle, radio } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n matrixHeaderOptionsHolder: {\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n paddingBottom: theme.spacing.unit * 2.5,\n justifyContent: 'space-around',\n },\n});\n\nconst Design = withStyles(styles)((props) => {\n const {\n classes,\n model,\n configuration,\n onPromptChanged,\n imageSupport,\n uploadSoundSupport,\n onChangeModel,\n onConfigurationChanged,\n onTeacherInstructionsChanged,\n } = props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n prompt = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n } = configuration || {};\n const { teacherInstructionsEnabled, spellCheckEnabled } = model || {};\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onChangeModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n </InputContainer>\n )}\n\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n nonEmpty={!prompt.settings}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n disableUnderline\n />\n </InputContainer>\n\n <div className={classes.matrixHeaderOptionsHolder}>\n <MatrixRowsSizeHeaderInput model={model} onChangeModel={onChangeModel} />\n <MatrixColumnsSizeHeaderInput model={model} onChangeModel={onChangeModel} />\n <MatrixLabelTypeHeaderInput model={model} onChangeModel={onChangeModel} />\n </div>\n\n <MatrixValues model={model} onChangeModel={onChangeModel} />\n </layout.ConfigLayout>\n );\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onChangeModel = (data) => {\n this.props.onModelChanged({ ...this.props.model, ...data });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n render() {\n return (\n <Design\n {...this.props}\n onChangeModel={this.props.onModelChanged}\n onPromptChanged={this.onPromptChanged}\n onTeacherInstructionsChanged={this.onTeacherInstructionsChanged}\n />\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"Main.js"}
|
|
1
|
+
{"version":3,"sources":["../src/Main.jsx"],"names":["Panel","settings","toggle","radio","styles","theme","promptHolder","width","paddingTop","spacing","unit","marginBottom","matrixHeaderOptionsHolder","display","flexWrap","paddingBottom","justifyContent","errorText","fontSize","typography","color","palette","error","main","Design","props","classes","model","configuration","onPromptChanged","imageSupport","uploadSoundSupport","onChangeModel","onConfigurationChanged","onTeacherInstructionsChanged","baseInputConfiguration","contentDimensions","prompt","scoringType","settingsPanelDisabled","spellCheck","teacherInstructions","errors","teacherInstructionsEnabled","spellCheckEnabled","promptError","teacherInstructionsError","panelProperties","label","getPluginProps","Properties","inputConfiguration","Main","onModelChanged","data","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { EditableHtml } from '@pie-lib/pie-toolbox/editable-html';\nimport { InputContainer, settings, layout } from '@pie-lib/pie-toolbox/config-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport MatrixColumnsSizeHeaderInput from './MatrixColumnsSizeHeaderInput';\nimport MatrixRowsSizeHeaderInput from './MatrixRowsSizeHeaderInput';\nimport MatrixLabelTypeHeaderInput from './MatrixLabelTypeHeaderInput';\nimport MatrixValues from './MatrixValues';\n\nconst { Panel, toggle, radio } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n matrixHeaderOptionsHolder: {\n display: 'flex',\n flexWrap: 'wrap',\n width: '100%',\n paddingBottom: theme.spacing.unit * 2.5,\n justifyContent: 'space-around',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing.unit,\n },\n});\n\nconst Design = withStyles(styles)((props) => {\n const {\n classes,\n model,\n configuration,\n onPromptChanged,\n imageSupport,\n uploadSoundSupport,\n onChangeModel,\n onConfigurationChanged,\n onTeacherInstructionsChanged,\n } = props;\n const {\n baseInputConfiguration = {},\n contentDimensions = {},\n prompt = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n } = configuration || {};\n const { errors = {}, teacherInstructionsEnabled, spellCheckEnabled } = model || {};\n const { prompt: promptError, teacherInstructions: teacherInstructionsError } = errors;\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),\n };\n\n const getPluginProps = (props = {}) => ({\n ...baseInputConfiguration,\n ...props,\n });\n\n return (\n <layout.ConfigLayout\n dimensions={contentDimensions}\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n onChangeModel={onChangeModel}\n configuration={configuration}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Properties: panelProperties,\n }}\n />\n }\n >\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n error={teacherInstructionsError}\n pluginProps={getPluginProps(teacherInstructions?.inputConfiguration)}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n {teacherInstructionsError && <div className={classes.errorText}>{teacherInstructionsError}</div>}\n </InputContainer>\n )}\n\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={onPromptChanged}\n imageSupport={imageSupport}\n error={promptError}\n pluginProps={getPluginProps(prompt?.inputConfiguration)}\n nonEmpty={!prompt.settings}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n disableUnderline\n />\n {promptError && <div className={classes.errorText}>{promptError}</div>}\n </InputContainer>\n\n <div className={classes.matrixHeaderOptionsHolder}>\n <MatrixRowsSizeHeaderInput model={model} onChangeModel={onChangeModel} />\n <MatrixColumnsSizeHeaderInput model={model} onChangeModel={onChangeModel} />\n <MatrixLabelTypeHeaderInput model={model} onChangeModel={onChangeModel} />\n </div>\n\n <MatrixValues model={model} onChangeModel={onChangeModel} />\n </layout.ConfigLayout>\n );\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n onPromptChanged = (prompt) => {\n this.props.onModelChanged({ ...this.props.model, prompt });\n };\n\n onChangeModel = (data) => {\n this.props.onModelChanged({ ...this.props.model, ...data });\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n };\n\n render() {\n return (\n <Design\n {...this.props}\n onChangeModel={this.props.onModelChanged}\n onPromptChanged={this.onPromptChanged}\n onTeacherInstructionsChanged={this.onTeacherInstructionsChanged}\n />\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"Main.js"}
|
|
@@ -43,7 +43,8 @@ var _default = {
|
|
|
43
43
|
image: {
|
|
44
44
|
disabled: false
|
|
45
45
|
}
|
|
46
|
-
}
|
|
46
|
+
},
|
|
47
|
+
required: false
|
|
47
48
|
},
|
|
48
49
|
settingsPanelDisabled: false,
|
|
49
50
|
spellCheck: {
|
|
@@ -64,7 +65,8 @@ var _default = {
|
|
|
64
65
|
image: {
|
|
65
66
|
disabled: false
|
|
66
67
|
}
|
|
67
|
-
}
|
|
68
|
+
},
|
|
69
|
+
required: false
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","teacherInstructionsEnabled","labelType","rowLabels","columnLabels","matrixValues","prompt","configuration","baseInputConfiguration","audio","disabled","video","image","settings","label","inputConfiguration","settingsPanelDisabled","spellCheck","enabled","teacherInstructions"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,0BAA0B,EAAE,IADvB;AAELC,IAAAA,SAAS,EAAE,WAFN;AAGLC,IAAAA,SAAS,EAAE,CAAC,6BAAD,EAAgC,8BAAhC,CAHN;AAILC,IAAAA,YAAY,EAAE,CAAC,UAAD,EAAa,QAAb,EAAuB,OAAvB,CAJT;AAKLC,IAAAA,YAAY,EAAE,EALT;AAMLC,IAAAA,MAAM,EAAE;AANH,GADM;AASbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBC,MAAAA,KAAK,EAAE;AAAED,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBE,MAAAA,KAAK,EAAE;AAAEF,QAAAA,QAAQ,EAAE;AAAZ;AAHe,KADX;AAMbJ,IAAAA,MAAM,EAAE;AACNO,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE,QAFD;AAGNC,MAAAA,kBAAkB,EAAE;AAClBN,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW;
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","teacherInstructionsEnabled","labelType","rowLabels","columnLabels","matrixValues","prompt","configuration","baseInputConfiguration","audio","disabled","video","image","settings","label","inputConfiguration","required","settingsPanelDisabled","spellCheck","enabled","teacherInstructions"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,0BAA0B,EAAE,IADvB;AAELC,IAAAA,SAAS,EAAE,WAFN;AAGLC,IAAAA,SAAS,EAAE,CAAC,6BAAD,EAAgC,8BAAhC,CAHN;AAILC,IAAAA,YAAY,EAAE,CAAC,UAAD,EAAa,QAAb,EAAuB,OAAvB,CAJT;AAKLC,IAAAA,YAAY,EAAE,EALT;AAMLC,IAAAA,MAAM,EAAE;AANH,GADM;AASbC,EAAAA,aAAa,EAAE;AACbC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OADe;AAEtBC,MAAAA,KAAK,EAAE;AAAED,QAAAA,QAAQ,EAAE;AAAZ,OAFe;AAGtBE,MAAAA,KAAK,EAAE;AAAEF,QAAAA,QAAQ,EAAE;AAAZ;AAHe,KADX;AAMbJ,IAAAA,MAAM,EAAE;AACNO,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE,QAFD;AAGNC,MAAAA,kBAAkB,EAAE;AAClBN,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW,OAHd;AAQNM,MAAAA,QAAQ,EAAE;AARJ,KANK;AAgBbC,IAAAA,qBAAqB,EAAE,KAhBV;AAiBbC,IAAAA,UAAU,EAAE;AACVJ,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAE,KAFA;AAGVM,MAAAA,OAAO,EAAE;AAHC,KAjBC;AAsBbC,IAAAA,mBAAmB,EAAE;AACnBP,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE,sBAFY;AAGnBC,MAAAA,kBAAkB,EAAE;AAClBN,QAAAA,KAAK,EAAE;AAAEC,UAAAA,QAAQ,EAAE;AAAZ,SADW;AAElBC,QAAAA,KAAK,EAAE;AAAED,UAAAA,QAAQ,EAAE;AAAZ,SAFW;AAGlBE,QAAAA,KAAK,EAAE;AAAEF,UAAAA,QAAQ,EAAE;AAAZ;AAHW,OAHD;AAQnBM,MAAAA,QAAQ,EAAE;AARS;AAtBR;AATF,C","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\nexport default {\n model: {\n teacherInstructionsEnabled: true,\n labelType: 'agreement',\n rowLabels: [\"I'm interested in politics.\", \"I'm interested in economics.\"],\n columnLabels: ['Disagree', 'Unsure', 'Agree'],\n matrixValues: {},\n prompt: 'How interested are you in the following domains?',\n },\n configuration: {\n baseInputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n inputConfiguration: {\n audio: { disabled: false },\n video: { disabled: false },\n image: { disabled: false },\n },\n required: false,\n },\n },\n};\n"],"file":"defaults.js"}
|
package/configure/package.json
CHANGED
package/controller/lib/index.js
CHANGED
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.createDefaultModel = exports.createCorrectResponseSession = void 0;
|
|
9
9
|
exports.model = model;
|
|
10
10
|
exports.outcome = outcome;
|
|
11
|
+
exports.validate = void 0;
|
|
11
12
|
|
|
12
13
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
14
|
|
|
@@ -110,7 +111,33 @@ var createCorrectResponseSession = function createCorrectResponseSession(questio
|
|
|
110
111
|
resolve(null);
|
|
111
112
|
}
|
|
112
113
|
});
|
|
113
|
-
};
|
|
114
|
+
}; // remove all html tags
|
|
115
|
+
|
|
114
116
|
|
|
115
117
|
exports.createCorrectResponseSession = createCorrectResponseSession;
|
|
118
|
+
|
|
119
|
+
var getInnerText = function getInnerText(html) {
|
|
120
|
+
return (html || '').replaceAll(/<[^>]*>/g, '');
|
|
121
|
+
}; // remove all html tags except img and iframe
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
var getContent = function getContent(html) {
|
|
125
|
+
return (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
var validate = function validate() {
|
|
129
|
+
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
130
|
+
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
131
|
+
var errors = {};
|
|
132
|
+
['teacherInstructions', 'prompt'].forEach(function (field) {
|
|
133
|
+
var _config$field;
|
|
134
|
+
|
|
135
|
+
if ((_config$field = config[field]) !== null && _config$field !== void 0 && _config$field.required && !getContent(model[field])) {
|
|
136
|
+
errors[field] = 'This field is required.';
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
return errors;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
exports.validate = validate;
|
|
116
143
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["createDefaultModel","model","Promise","resolve","defaults","question","session","env","normalizedQuestion","out","disabled","mode","role","teacherInstructions","teacherInstructionsEnabled","outcome","score","empty","Object","keys","value","reduce","acc","key","matrixValue","matrixValues","createCorrectResponseSession","id"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["createDefaultModel","model","Promise","resolve","defaults","question","session","env","normalizedQuestion","out","disabled","mode","role","teacherInstructions","teacherInstructionsEnabled","outcome","score","empty","Object","keys","value","reduce","acc","key","matrixValue","matrixValues","createCorrectResponseSession","id","getInnerText","html","replaceAll","getContent","replace","validate","config","errors","forEach","field","required"],"mappings":"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","sourcesContent":["import defaults from './defaults';\nimport isEmpty from 'lodash/isEmpty';\n\nexport const createDefaultModel = (model = {}) => new Promise((resolve) => resolve({ ...defaults, ...model }));\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const normalizedQuestion = { ...defaults, ...question };\n\n const out = {\n ...normalizedQuestion,\n disabled: env.mode !== 'gather',\n mode: env.mode,\n };\n\n const { role, mode } = env || {};\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n return out;\n}\n\nexport function outcome(model, session) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n return resolve({ score: 0, empty: true });\n }\n\n const score = Object.keys(session.value).reduce((acc, key) => {\n const matrixValue = model.matrixValues[key];\n return acc + (matrixValue || 0);\n }, 0);\n\n resolve({ score, empty: false });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { matrixValues } = question || [];\n\n resolve({\n id: '1',\n value: matrixValues,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img and iframe\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n return errors;\n};\n"],"file":"index.js"}
|
package/docs/config-schema.json
CHANGED
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
77
|
"teacherInstructions": {
|
|
78
|
-
"title": "
|
|
78
|
+
"title": "EditableHtmlPluginConfigureRequired",
|
|
79
79
|
"type": "object",
|
|
80
80
|
"properties": {
|
|
81
81
|
"inputConfiguration": {
|
|
@@ -128,6 +128,11 @@
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
|
+
"required": {
|
|
132
|
+
"description": "Indicates if the item is required and the value cannot be empty",
|
|
133
|
+
"type": "boolean",
|
|
134
|
+
"title": "required"
|
|
135
|
+
},
|
|
131
136
|
"settings": {
|
|
132
137
|
"description": "Indicates if the item has to be displayed in the Settings Panel",
|
|
133
138
|
"type": "boolean",
|
|
@@ -141,7 +146,7 @@
|
|
|
141
146
|
}
|
|
142
147
|
},
|
|
143
148
|
"prompt": {
|
|
144
|
-
"title": "
|
|
149
|
+
"title": "EditableHtmlPluginConfigureRequired",
|
|
145
150
|
"type": "object",
|
|
146
151
|
"properties": {
|
|
147
152
|
"inputConfiguration": {
|
|
@@ -194,6 +199,11 @@
|
|
|
194
199
|
}
|
|
195
200
|
}
|
|
196
201
|
},
|
|
202
|
+
"required": {
|
|
203
|
+
"description": "Indicates if the item is required and the value cannot be empty",
|
|
204
|
+
"type": "boolean",
|
|
205
|
+
"title": "required"
|
|
206
|
+
},
|
|
197
207
|
"settings": {
|
|
198
208
|
"description": "Indicates if the item has to be displayed in the Settings Panel",
|
|
199
209
|
"type": "boolean",
|
|
@@ -347,8 +357,8 @@
|
|
|
347
357
|
}
|
|
348
358
|
}
|
|
349
359
|
},
|
|
350
|
-
"
|
|
351
|
-
"title": "
|
|
360
|
+
"EditableHtmlPluginConfigureRequired": {
|
|
361
|
+
"title": "EditableHtmlPluginConfigureRequired",
|
|
352
362
|
"type": "object",
|
|
353
363
|
"properties": {
|
|
354
364
|
"inputConfiguration": {
|
|
@@ -401,6 +411,11 @@
|
|
|
401
411
|
}
|
|
402
412
|
}
|
|
403
413
|
},
|
|
414
|
+
"required": {
|
|
415
|
+
"description": "Indicates if the item is required and the value cannot be empty",
|
|
416
|
+
"type": "boolean",
|
|
417
|
+
"title": "required"
|
|
418
|
+
},
|
|
404
419
|
"settings": {
|
|
405
420
|
"description": "Indicates if the item has to be displayed in the Settings Panel",
|
|
406
421
|
"type": "boolean",
|
|
@@ -94,6 +94,10 @@ Properties of the `image` object:
|
|
|
94
94
|
|
|
95
95
|
Indicates if the plugin is disabled or not
|
|
96
96
|
|
|
97
|
+
## `required` (boolean)
|
|
98
|
+
|
|
99
|
+
Indicates if the item is required and the value cannot be empty
|
|
100
|
+
|
|
97
101
|
## `settings` (boolean)
|
|
98
102
|
|
|
99
103
|
Indicates if the item has to be displayed in the Settings Panel
|
|
@@ -142,6 +146,10 @@ Properties of the `image` object:
|
|
|
142
146
|
|
|
143
147
|
Indicates if the plugin is disabled or not
|
|
144
148
|
|
|
149
|
+
## `required` (boolean)
|
|
150
|
+
|
|
151
|
+
Indicates if the item is required and the value cannot be empty
|
|
152
|
+
|
|
145
153
|
## `settings` (boolean)
|
|
146
154
|
|
|
147
155
|
Indicates if the item has to be displayed in the Settings Panel
|
|
@@ -264,9 +272,9 @@ Indicates if the item has to be displayed in the Settings Panel
|
|
|
264
272
|
|
|
265
273
|
Indicates the label for the item that has to be displayed in the Settings Panel
|
|
266
274
|
|
|
267
|
-
## `
|
|
275
|
+
## `EditableHtmlPluginConfigureRequired` (object)
|
|
268
276
|
|
|
269
|
-
Properties of the `
|
|
277
|
+
Properties of the `EditableHtmlPluginConfigureRequired` object:
|
|
270
278
|
|
|
271
279
|
### `inputConfiguration` (object)
|
|
272
280
|
|
|
@@ -304,6 +312,10 @@ Properties of the `image` object:
|
|
|
304
312
|
|
|
305
313
|
Indicates if the plugin is disabled or not
|
|
306
314
|
|
|
315
|
+
### `required` (boolean)
|
|
316
|
+
|
|
317
|
+
Indicates if the item is required and the value cannot be empty
|
|
318
|
+
|
|
307
319
|
### `settings` (boolean)
|
|
308
320
|
|
|
309
321
|
Indicates if the item has to be displayed in the Settings Panel
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "0.25.1-next.
|
|
7
|
+
"version": "0.25.1-next.39+072ef11f3",
|
|
8
8
|
"description": "",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@material-ui/core": "^3.9.2",
|
|
14
14
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
15
|
-
"@pie-lib/pie-toolbox": "1.12.
|
|
15
|
+
"@pie-lib/pie-toolbox": "1.12.2",
|
|
16
16
|
"debug": "^4.1.1",
|
|
17
17
|
"prop-types": "^15.6.1",
|
|
18
18
|
"react": "^16.8.1",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"author": "",
|
|
23
23
|
"license": "ISC",
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "072ef11f320de229433e4373b83fe2828ea7cf06",
|
|
25
25
|
"main": "lib/index.js",
|
|
26
26
|
"module": "src/index.js"
|
|
27
27
|
}
|