===== Technical Design Document - Learning Map =====
This document explains about various features of learning map functionality and its implementation. \\
===== Features =====
This feature brings the following functionalities into the system
* Create Custom Learning Map
* Assign Learning Map
* Search for the learning activities
* Know the details of what do you want to become ( Direction)
* Learningmap progress
* Learning activity details
===== LearningMap =====
Learningmap will be available to the user based on his profile and job role. System captures his profile information and pass it to learning map API. It provides the learningmap data in the required format.
===== Structure of LearningMap =====
All the learning activities encapsulated with competencies or path. All the path or competencies are connected to learning map. See the below screenshot. \\
{{:lm_structure.png?800|}}
===== Data Structure for LearningMap =====
Learningmap data needs to be processed into the following JSON format to support this feature.
{
"learningmaps": [
{
"id": "",
"name": "",
"role_of_lm": "",
"status": "",
"paths": [
{
"name": "",
"status": "",
"courses": [
{
"id": "",
"name": "",
"complex": "",
"duration": "",
"tags": "",
"dependencies": "",
"status": ""
}
]
}
]
}
]
}
Example data structure with sample data.
{
"learningmaps": [
{
"id": "1",
"name": "LM for Basic Programmer",
"role_of_lm": "Basic Programmer",
"status":"Inprogress",
"paths": [
{
"name": "Core programming",
"status":"Inprogress",
"courses": [
{
"id": "1",
"name": "C",
"complex": "easy",
"duration": "12",
"tags": "programming",
"dependencies": "",
"status":"Completed"
},
{
"id": "2",
"name": "C++",
"complex": "medium",
"duration": "18",
"tags": "programming",
"dependencies": "1",
"status":"Not started"
},
{
"id": "3",
"name": "Java",
"complex": "high",
"duration": "24",
"tags": "programming",
"dependencies": "1,2",
"status":"Inprogress"
}
]
},
{
"name": "DB programming",
"status":"Not started",
"courses": [
{
"id": "4",
"name": "Mysql",
"complex": "easy",
"duration": "10",
"tags": "db",
"dependencies": "",
"status":"Not started"
},
{
"id": "5",
"name": "Postgresql",
"complex": "easy",
"duration": "10",
"tags": "db",
"dependencies": "",
"status":"Not started"
}
]
}
]
} ]
}
]
}
===== Search Learning Activities =====
System allows user to search for the learning activities by its name and tags.Type the tag or learning activity name and click go.It displays the learning activities with point of interest icon. \\
{{:lm_search.png?800|}}
==== Direction API ====
User can see total no of hours required to obtain the new learning map from his current progress. This feature brings prerequisite course entities into the consideration before it calculates the total number of hours. Identified path will be shown in red color. \\
{{:lm_direction.png?800|}}
==== Create Custom LearningMap ====
This feature allows user to create his own custom map by available learning activities. Learning activities will be fetched through LearningActivities Search API based on user profile. Provided workflow below.
==== Step1: Click on "Create Map" button. ====
{{:createmap.png?800|}}
==== Step2: Search learning activities by name or using tags. ====
{{:createmap2.png?800|}}
==== Step3: Delete the not required learning activities by click on Delete button after select the object. ====
{{:createmap3.png?800|}}
==== Step4: Re order the learning activity and save it ====
{{:createmap5.png?800|}}
==== Step5: Save the learning map ====
{{:createmap6.png?800|}}
===== Assign Learning Map =====
By click on assign icon in the learning map, it will be assigned to the user. Assigned learning map will be displayed using assigned legend("Orange" color). As soon as learning activities completed, map will be updated dynamically using completed legend(green color)
{{:lm_progress.png?800|}}
===== Frameworks =====
Following are the open source frameworks used to obtain the core functionality of map.
1. FabricJS Framework \\
2. JSONPath Framework \\