Versions Compared

Key

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

Introduction: 

This document describes the design for Programs to integrate with Sunbird Portal and also discusses the ability of Programs to support and launch multiple programs for various adopters.

Overview: 

Currently, Programs are used by a single adopter to run a specific activity within a defined scope which uses minimum configuration. It is currently used to create a specific set of content types. (Example: QuestionSet creation). By and large it is used for creation purpose. 

Problem Definition: 

Program portal should be able to support to launch multiple programs configured for various adopters. A program can have more than one activity. Each activity can take its own configuration. An admin of the program adopter should be able to define the scope, actions, tools etc based on the activity/purpose. Programs on the portal should be able to handle multiple active programs at a time. 

Key Area to be analysed:

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

Solution: 

Program configurations based on components

...

If we put together all the component and its required configurations into a module/highlevel component the following would be the overall configuration.

Code Block
languagejs
themeMidnight
{
  "pageAssemblyId":"",
  "scope": {
    "classes":"",
    "subject":""
  },
  "collectionType":{
    "name": "Collection type",
    "type": "string",
    "enum": "Textbook, Course"  
  },
  "contentTypes": {
    "name": "List of contentTypes",
    "type": "List",
    "enum": ["PracticeQuestionSet", "Lessonplan", "ExperientialResource", "FocusSpot", "CuriosityQuestionSet", "ExplanationResource"]
  },
  "questionCategories":{
    "name": "List of AssessmentItem Categorys",
    "type": "List",
    "enum": ["VSA", "SA", "LA", "MCQ", "CuriosityQuestion"],
    "hints": "When PracticeQuestionSet is set for contentTypes AssessmentItem Categorys must be"
  },
  "ckEditorConfig": {}
}


With this basic set of configurations, a program can be created by an admin of the program

Code Block
languagejs
themeMidnight
{
  "id": "api.program.read",
  "result": {
    "programId": "",
    "description": "",
    "endDate": "",
    "name": "",
    "slug": "",
    "startDate": "",
    "status": "",
    "type": "",
    "tools": {
      "tool1": {
        "name": "",
        "configurationValues": "",
        "actionMappings": {
          "actions": "",
          "role": []
        }
      },
      "tool2": {
        "name": "",
        "configurationValues": "",
        "actionMappings": {
          "actions": "",
          "role": []
        }
      }
    },
    "config": {
      "roles": [
        {
          "role": "CONTRIBUTOR"
        },
        {
          "role": "REVIEWER"
        }
      ],
      "onBoardForm": {
        "templateName": "onBoardingForm",
        "action": "onboard",
        "fields": [
          {
            "code": "class",
            "dataType": "text",
            "name": "Class",
            "label": "Class",
            "description": "Class",
            "inputType": "select",
            "required": false,
            "displayProperty": "Editable",
            "visible": true,
            "range": [
              {
                "identifier": "Class 1",
                "code": "class1",
                "name": "Class 1",
                "description": "Class 1",
                "index": 1,
                "category": "class",
                "status": "Live"
              },
              {
                "identifier": "Class 2",
                "code": "class2",
                "name": "Class 2",
                "description": "Class 2",
                "index": 2,
                "category": "class",
                "status": "Live"
              },
              {
                "identifier": "Class 3",
                "code": "class3",
                "name": "Class 3",
                "description": "Class 3",
                "index": 3,
                "category": "class",
                "status": "Live"
              }
            ],
            "index": 1
          }
        ]
      },
      "scope": {
        "board": [
          "NCERT"
        ],
        "gradeLevel": [
          "Kindergarten",
          "Grade 1",
          "Grade 2",
          "Grade 3",
          "Grade 4"
        ],
        "medium": [
          "English"
        ],
        "subject": [
          "Hindi",
          "Mathematics",
          "English",
          "Telugu"
        ],
        "topics": [
          ""
        ],
        "framework": "",
        "channel": ""
      }
    },
    "defaultRoles": [
      "CONTRIBUTOR"
    ]
  }
}