...
- Ability to load components dynamically based on configuration
- Ability to load components dynamically on multiple levels based on configuration
Solution:
Program configuration based on components and its action.
Since each tool (comprises of multiple components and tools can share the same components between each other) is going to solve the purpose of each activity in a program, the program can have its configurations based on the input that each component in the tool is expecting.
...
In creation, a contributor with creator access visits the program and does the following actions
- Chooses Selects a textbook of a particular class and subject
- Chooses Selects a contentType of a particular chapter that is to be created
- Chooses Selects a questionCategory if the contentType is either PracticeSets/CuriositySet
- Creates a content or assessment based on the chosen content type
- Previews the created assessment or content and submits for preview
Review
- Chooses Selects a textbook of a particular class and subject
- Chooses Selects a content of a chapter that are up for review
- Sees the preview of the content before doing Accept/Reject and publishing
- If rejecting, leaves a the reason as a comment to reject.
The above listed actions can more or less be broken down into the following highlevel components.
...
Each component will take its own configuration .and has a set of actions that the user can perform
For example:
- The Collection component would expect
CollectionType
,Board
,Class
,Medium
,Subject
,Framework
...
- to list the textbook
...
- and it would have actions such as
showFilters
Similarly, ChapterList component would expect CollectionId and List of content types as configuration and selectChapter, addResource
, preview
etc as actions.
If we put together all the component and its required configurations, actions and possible enhancements into a module/highlevel component the following would be the overall component hierarchy and configuration.
...
With this basic set of configurations , and actions a program can be created by an admin of the a program.
Code Block | ||
---|---|---|
| ||
{ "programId": "217bddc0-df59-11e9-8d82-2b7f2cdfa2fd", "description": "Test Prep program", "name": "Test Prep", "slug": "sunbird", "startDate": "2019-09-25T12:50:30.000Z", "endDate": null, "status": null, "type": "private", "roles": { "value": [ "CONTRIBUTOR", "REVIEWER", "PUBLISHER" ] }, "defaultRoles": [ "CONTRIBUTOR" ], "onBoardFormonBoardingForm": { "templateName": "onBoardingForm", "action": "onboard", "fields": [ { "code": "school", "dataType": "text", "name": "School", "label": "School", "description": "School", "inputType": "select", "required": false, "displayProperty": "Editable", "visible": true, "range": [ { "identifier": "my_school", "code": "my_school", "name": "My School", "description": "My School", "index": 1, "category": "school", "status": "Live" } ], "index": 1 } ] }, "configheader": { "filterCategoriestabs": {[ "default":{ [ {"index": 0, "code"label": "frameworkContribute Questions", "defaultValueonClick": "NCF",{ "labelcomponent": "FrameworkcollectionComponent", }, "visibility": false "actionRoleMap": { }, "show": { "coderoles": "board", [ "defaultValue": "APContributor", "label": "BoardReviewer", "visibility": false ] }, }, { "code"drag": "medium",{ "defaultValueroles": "English",[ "label": "MediumContributor", "visibilityReviewer": false } ] ], "custom":} [ {} }, "code": "class", { "rangeindex": [1, "Class 6"label": "Issue Certificate", "Class 7","onClick": { "component": "Class 8issueCertificateComponent" ]}, "labelactionRoleMap": "Class",{ "multiselectshow": { false, "defaultValueroles": [ "ClassReviewer" 6" ], } "visibility": true } }, }, { { "codeindex": "subject"2, "rangelabel": ["Dashboard", "English", "onClick": { "component": "MathsdashboardComponent" ]}, "labelactionRoleMap": "Subject",{ "multiselectshow": { false, "defaultValueroles": [ "EnglishAdmin" ], } "visibility": true } } } ] ] }, "actions": { "contentTypesshowFilters": { "valueroles": [ {"Contributor", "Reviewer", "name": "Explanation", "Admin" "contentType": "ExplanationResource", ] }, "mimeTypeaddresource": [{ "roles": [ "application/pdf" "Contributor" ], }, "thumbnailpreview": "", { "descriptionroles": "description", [ "marksContributor": 5, "resourceTypeReviewer": "", ] "Audience": "",}, "move": { "formConfigurationroles": [ "Contributor" { ] }, "codedelete": "LearningOutcome",{ "roles": [ "rangeContributor": [], ] }, "labelselectChapter": { "Learning Outcome", "roles": [ "multiselectContributor":, true "Reviewer" }, ] }, "showTotalContribution": { "lable": "Total Contributoion", "coderoles": "bloomslevel[ "Contributor", "Reviewer" "range": [], }, "showMyContribution": { "labellable": "LearningMy LevelContribution", "roles": [ "multiselectContributor": true ] }, "showRejected": { ], "lable": "Rejected", "filesConfigroles": {[ "Contributor" "accepted": "pdf", ] }, "sizeshowUnderReview": "50"{ "lable": "Under Review", } "roles": [ }, "Contributor" { ] }, "nameshowtotalUnderReview": "Experimental", { "contentTypelable": "ExperientialResourceTotal under review", "mimeTyperoles": [ "video/mp4Reviewer", ] }, "video/webm", "showAcceptedByMe": { "lable": "Rejected by me", "roles": [ "Reviewer" ] }, "showRejectedByMe": { "lable": "Accepted by me", "roles": [ "Reviewer" ] }, "savePracticeSet": { "roles": [ "Contributor" ] }, "previewPracticeSet": { "roles": [ "Contributor", "Reviewer" ] }, "submitPracticeSet": { "roles": [ "Contributor" ] }, "deletePracticeSet": { "roles": [ "Contributor" ] }, "acceptPracticeSet": { "roles": [ "Reviewer" ] }, "rejectPracticeSet": { "roles": [ "Reviewer" ] }, "addQuestionPracticeSet": { "roles": [ "Contributor" ] }, "addSolutionPracticeSet": { "roles": [ "Contributor" ] }, "changeUploadFile": { "roles": [ "Contributor" ] }, "submitUpload": { "roles": [ "Contributor" ] }, "acceptUpload": { "roles": [ "Reviewer" ] }, "rejectUpload": { "roles": [ "Reviewer" ] }, "showPreview": { "roles": [ "Contributor", "Reviewer" ] }, "showDashboard": { "roles": [ "Admin" ] }, "reportSelection": { "label": "Select Report" }, "reportContentTypeSelection": { "label": "Select Content-Type" }, "reportDownload": { "label": "Download" }, "reportRefresh": { "label": "Refresh" } }, "config": { "filters": { "implicit": [ { "code": "framework", "defaultValue": "NCF", "label": "Framework", "visibility": false }, { "code": "board", "defaultValue": "AP", "label": "Board", "visibility": false }, { "code": "medium", "defaultValue": "English", "label": "Medium", "visibility": false } ], "explicit": [ { "code": "class", "range": [ "Class 6", "Class 7", "Class 8" ], "label": "Class", "multiselect": false, "defaultValue": [ "Class 6" ], "visibility": true }, { "code": "subject", "range": [ "English", "Maths" ], "label": "Subject", "multiselect": false, "defaultValue": [ "English" ], "visibility": true } ] }, "groupBy": { "value": "Subject", "defaultValue": "Class" }, "contentTypes": { "value": [ { "name": "Explanation", "contentType": "ExplanationResource", "mimeType": [ "application/pdf" ], "thumbnail": "", "description": "description", "marks": 5, "resourceType": "", "Audience": "", "formConfiguration": [ { "code": "LearningOutcome", "range": [], "label": "Learning Outcome", "multiselect": true }, { "code": "bloomslevel", "range": [], "label": "Learning Level", "multiselect": true } ], "filesConfig": { "accepted": "pdf", "size": "50" } }, { "name": "Experimental", "contentType": "ExperientialResource", "mimeType": [ "video/mp4", "video/webm", "video/x-youtube" ], "thumbnail": "", "description": "description", "marks": 5, "resourceType": "", "Audience": "", "formConfiguration": [ { "code": "LearningOutcome", "range": [], "label": "Learning Outcome", "multiselect": true }, { "code": "bloomslevel", "range": [], "label": "Learning Level", "multiselect": true "video/x-youtube"} ], "thumbnailfilesConfig": { "", "descriptionaccepted": "descriptionmp4, webm, youtube", "markssize": 5, "50" } "resourceType": "", }, "Audience": "", { "formConfigurationname": ["Practice Sets", { "contentType": "PracticeQuestionSet", "codemimeType": "LearningOutcome",[ "range": [],"application/vnd.ekstep.ecml-archive" ], "labelquestionCategories": "Learning[ Outcome", "vsa", "multiselect": true "sa", }, "la", { "mcq" "code": "bloomslevel", ], "rangethumbnail": [], "", "labeldescription": "Learning Leveldescription", "multiselectmarks": true5, "resourceType": "", } ]"Audience": "", "filesConfigformConfiguration": {[ "accepted": "mp4, webm, youtube",{ "sizecode": "50"LearningOutcome", "range": [], } }, "label": "Learning Outcome", { "namemultiselect": "Practicetrue Sets", "contentType": "PracticeQuestionSet" }, "mimeType": [ { "application/vnd.ekstep.ecml-archive" "code": "bloomslevel", ], "questionCategoriesrange": [], "label": "vsaLearning Level", "sa",multiselect": true } "la", ] "mcq" }, ], { "thumbnailname": "Curiosity", "descriptioncontentType": "descriptionCuriosityQuestionSet", "marksmimeType": 5,[ "resourceType": "",application/vnd.ekstep.ecml-archive" "Audience": ""], "formConfigurationquestionCategories": [ "curiosity" { ], "codethumbnail": "LearningOutcome", "description": "description", "rangemarks": []5, "labelresourceType": "Learning Outcome", "multiselectAudience": true"", },"formConfiguration": [ { "code": "bloomslevelLearningOutcome", "range": [], "label": "Learning LevelOutcome", "multiselect": true }, ] { }, { "namecode": "Curiositybloomslevel", "contentType": "CuriosityQuestionSet", "mimeTyperange": [], [ "application/vnd.ekstep.ecml-archive" label": "Learning Level", ], "questionCategoriesmultiselect": [true "curiosity"} ], } "thumbnail": "", ], "descriptiondefaultValue": "description",[ "marks": 5,{ "resourceTypename": "Practice Sets", "AudiencecontentType": "PracticeQuestionSet", "formConfiguration": [ "mimeType": [ { "application/vnd.ekstep.ecml-archive" "code": "LearningOutcome", ], "rangequestionCategories": [], "vsa", "label": "Learning Outcome", "sa", "multiselect": true "la", }, "mcq" { ], "codethumbnail": "bloomslevel", "rangedescription": [], "description", "labelmarks": "Learning Level", 2, "multiselectresourceType": true"", "Audience": "", } "formConfiguration": ][ } { ], "defaultValue": [ "code": "LearningOutcome", { "namerange": "Practice Sets", [], "contentTypelabel": "PracticeQuestionSetLearning Outcome", "mimeType": [ "multiselect": false "application/vnd.ekstep.ecml-archive" }, ], { "questionCategories": [ "code": "vsabloomslevel", "sarange": [], "lalabel",: "Learning Level", "mcq" "multiselect": true ], } "thumbnail": "", ] "description": "description", } "marks": 2, ] }, "resourceTypetextbookList": ""[], "filesConfig": { "Audienceaccepted": ""pdf, mp4, webm, youtube", "formConfigurationsize": ["50" }, "practiceSetConfig": { { "No of options": 4, "codesolutionType": "LearningOutcome", [ "range": [], Video", "label": "Learning Outcome",Text & image" ], "multiselectquestionCategory": false[ }"vsa", "sa", { "ls", "codemcq": "bloomslevel", "curiosity" "range": [], }, "labelformConfiguration": "Learning[ Level", { "multiselectcode": true "LearningOutcome", } "range": [], ] "label": "Learning Outcome", } "multiselect": false ] }, "questionLimit": { "valuecode": "30bloomslevel", "defaultValuerange": "10"[], }, "label": "optionsLimit": {Learning Level", "valuemultiselect": "5",true "defaultValue": "4"} }] } } |