Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Ability to load components dynamically based on configuration 
  2. Ability to load components dynamically on multiple levels based on configuration

Solution: 

Program

...

configuration based on components

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. 

Say for example, if the purpose of the program is to just see the coverage of textbooks, then the tool that is used in the program would expect a scope to be defined i.e: Board, Class, Medium, Subject, Framework. This can be the program configuration and nothing else would be required by the admin to see the coverage. 

The expected config of a tool will reside as a manifest inside each high level components.

Image Removed

toolmanifest.json for the above example would be: 

Code Block
languagejs
themeMidnight
{
  "Configuration": {
    "scope": {
      "classes":"",
      "subject":"",
      "board":"",
      "medium":"",
      "framework":""
    }
  }  
}

Let us take an example of a program whose purpose is to create content for different contentTypes such as PracticeSet, ExplanationExperientialCuriositySet, etc for each chapter in a given textbook. 

The workflow of the above mentioned program can be split into two parts

...

Let us take an example of a program whose purpose is to create content for different contentTypes such as PracticeSet, ExplanationExperientialCuriositySet, etc for each chapter in a given textbook. 

The workflow of the above mentioned program can be split into two parts

  1. Creation
  2. Review and Publish

Creation: 

In creation, a contributor with creator access visits the program and does the following

...

The above listed actions can more or less be broken down into the following highlevel components. 

  1. Collection Component Component
  2. ChapterList Component
  3. ContentCreation Component
  4. ContentUpload Component
  5. Preview Component

...

Code Block
themeMidnight
{
  "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": [],
    "enumvalue": [
      "CONTRIBUTOR",
      "REVIEWER",
      "PUBLISHER"
    ]
  },
  "defaultRoles": [
    "CONTRIBUTOR"
  ],
  "config": {
    "onBoardForm": {
      "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",
            "categorystatus": "schoolLive",
          }
   "status": "Live"    ],
        }"index": 1
      }
    ]
  },
  "config": {
    "filterCategories": {
      "indexdefault": 1[
        }{
      ]     },"code": "framework",
          "frameworkdefaultValue": "NCF",",
          "Boardlabel": "APFramework",
    "Medium": "English",     "filterCategoryvisibility": false
[        {},
        {
"code": "class",         "rangecode": ["board",
          "defaultValue"Class: 6"AP",
          "Class 7label": "Board",
          "Class 8"visibility": false
        ]},
        {
"label": "Class",         "multiselectcode": false"medium",
          "defaultValue": ["English",
          "Class 6label": "Medium",
          "Class 7visibility",: false
        }
"Class 8"         ],
 
      "visibilitycustom": true[
      },  {
    {         "code": "subjectclass",
          "range": [
            "Class 6",
            "EnglishClass 7",
            "MathsClass 8"
          ],
          "label": "SubjectClass",
          "multiselect": false,
          "defaultValue": [
            "Class 6",
          "Class 7",
          "Class 8"],
         ],         "visibility": true
      }  },
  ],     "groupBy": {
  
   "value": "Subject",       "defaultValuecode": "Classsubject",
          "enumrange": [
        "Class",         "SubjectEnglish",
        "Board",         "MediumMaths"
      ]     }],

   "contentTypes": {       "namelabel": "ListSubject",
  of contentTypes",       "typemultiselect": "List",
  false,
   "value": [      "defaultValue": [
 {           "nameEnglish":
"Explanation",           "contentType": "ExplanationResource"],
          "mimeTypevisibility": [true
        }
   "application/pdf"   ]
    },
  ],  "contentTypes": {
       "thumbnailvalue": "",[
        {
 "description": "description",           "marksname": 5"Explanation",
          "resourceTypecontentType": "ExplanationResource",
          "AudiencemimeType": "",[
            "formConfigurationapplication/pdf":
[          ],
  {        "thumbnail": "",
          "codedescription": "LearningOutcomedescription",
  
           "rangemarks": []5,
  
           "labelresourceType": "Learning Outcome",
              "multiselectAudience": true"",
          "formConfiguration": [
},             {
              "code": "bloomslevelLearningOutcome",
              "range": [],
              "label": "Learning LevelOutcome",
              "multiselect": true
       
    }        },
  ],          {
"filesConfig": {             "acceptedcode": "pdfbloomslevel",
              "sizerange": "50"[],
              }
 "label": "Learning Level",
      },        "multiselect": {true
          "name": "Experimental", }
         "contentType": "ExperientialResource" ],
          "mimeTypefilesConfig": [{
            "video/mp4accepted": "pdf",
            "size": "video/webm",50"
          }
      "video/x-youtube"  },
        ],{
          "thumbnailname": "Experimental",
          "descriptioncontentType": "descriptionExperientialResource",
          "marksmimeType": [
5,           "resourceType": "video/mp4",
          "Audience":  "video/webm",
          "formConfiguration": [  "video/x-youtube"
          ],
       {   "thumbnail": "",
          "codedescription": "LearningOutcomedescription",
              "rangemarks": []5,
              "labelresourceType": "Learning Outcome",
              "multiselectAudience": true"",
          "formConfiguration": [
},             {
              "code": "bloomslevelLearningOutcome",
              "range": [],
              "label": "Learning LevelOutcome",
              "multiselect": true
            },
          ],  {
              "filesConfigcode": {"bloomslevel",
              "acceptedrange": "mp4[],
webm, youtube",             "sizelabel": "50Learning Level",
          }    "multiselect": true
   },         {}
          "name": "Practice Sets"],
          "contentTypefilesConfig": "PracticeQuestionSet", {
            "mimeTypeaccepted": ["mp4,         webm, youtube",
   "application/vnd.ekstep.ecml-archive"         "size": "50"
],          }
"questionCategories": [       },
     "vsa",
   {
          "name": "saPractice Sets",
          "contentType":  "laPracticeQuestionSet",
 
          "mcqmimeType": [
         ],   "application/vnd.ekstep.ecml-archive"
       "thumbnail": ""   ],
          "descriptionquestionCategories": "description", [
            "marksvsa":,
5,           "resourceType": "sa",
          "Audience":  "la",
            "formConfigurationmcq":
   [       ],
     {     "thumbnail": "",
          "codedescription": "LearningOutcomedescription",
              "rangemarks": []5,
              "labelresourceType": "Learning Outcome",
 
            "multiselectAudience": true"",
          "formConfiguration": [
},             {
              "code": "bloomslevelLearningOutcome",
              "range": [],
              "label": "Learning LevelOutcome",
              "multiselect": true
            },
          ]  {
      },
        {
          "name"code": "Curiositybloomslevel",
              "contentTyperange": "CuriosityQuestionSet"[],
              "mimeTypelabel": ["Learning Level",
           "application/vnd.ekstep.ecml-archive"    "multiselect": true
     ],       }
   "questionCategories": [      ]
      "curiosity"  },
        ],{
          "thumbnailname": "Curiosity",
          "descriptioncontentType": "descriptionCuriosityQuestionSet",
          "marksmimeType": [
 5,           "resourceType": ""application/vnd.ekstep.ecml-archive"
          ],
          "AudiencequestionCategories": "",[
            "formConfiguration": [curiosity"
          ],
       {   "thumbnail": "",
          "codedescription": "LearningOutcomedescription",
              "rangemarks": []5,
              "labelresourceType": "Learning Outcome",
              "multiselectAudience": true"",
          "formConfiguration": [
},             {
              "code": "bloomslevelLearningOutcome",
              "range": [],
              "label": "Learning LevelOutcome",
              "multiselect": true
            },
            ]{
              "code": "bloomslevel",
  }       ],       "defaultValuerange": [],
        {           "namelabel": "PracticeLearning SetsLevel",
              "contentTypemultiselect": "PracticeQuestionSet",true
          "mimeType": [ }
           "application/vnd.ekstep.ecml-archive"]
        }
  ],    ],
      "questionCategoriesdefaultValue": [
        {
          "vsaname": "Practice Sets",
           "contentType": "saPracticeQuestionSet",
            "lamimeType",: [
            "mcqapplication/vnd.ekstep.ecml-archive"
          ],
          "thumbnailquestionCategories": [
"",           "description": "descriptionvsa",
            "markssa":,
2,           "resourceType": "la",
          "Audience":  "mcq",
          "formConfiguration": [],
             {
   "thumbnail": "",
          "codedescription": "LearningOutcomedescription",
              "rangemarks": []2,
              "labelresourceType": "Learning Outcome",

             "multiselectAudience": false"",
          "formConfiguration": [
},             {
              "code": "bloomslevelLearningOutcome",
              "range": [],
              "label": "Learning Level",Outcome",
              "multiselect": false
            },
   "multiselect": true        {
    }           ]"code": "bloomslevel",
        }      "range": [],
      "enum": [       "label": "Learning "PracticeQuestionSetLevel",
              "Lessonplanmultiselect",: true
       "ExperientialResource",     }
   "FocusSpot",       ]
 "CuriosityQuestionSet",       }
 "ExplanationResource"       ]
    },
    "questionLimit": {
      "value": "30",
      "defaultValue": "10"
    },
    "optionsLimit": {
      "value": "5",
      "defaultValue": "4"
    }
  }
}