public CourseNode getCourseDetails(int CourseId)
        {
            CourseNode courseNode = new CourseNode();

            courseNode.CourseId       = CourseId;
            courseNode.CourseSchedule = getCourseSchedule(CourseId);
            //courseNode.Prerequisites = getPrerequisite(CourseId);
            courseNode.Corequisites = getCorequisite(CourseId);
            return(courseNode);
        }
    public void SetCourse(Course c)
    {
        course = Instantiate(DegreeTree.instance.courseNode);
        course.SetCourse(c);

        DegreeTree.instance.currentCourses.Add(c);

        course.transform.SetParent(assignedContainer, false);
        removeCourseButton.interactable = true;
    }
Exemplo n.º 3
0
        public void AddCourse(CourseNode course)
        {
            if (string.IsNullOrWhiteSpace(course.CourseId))
            {
                throw new InvalidDataException(nameof(course.CourseId));
            }

            if (_courses.ContainsKey(course.CourseId))
            {
                throw new DuplicateNameException(nameof(course.CourseId));
            }

            _courses.Add(course.CourseId, course);
        }
Exemplo n.º 4
0
        public void CourseNodeValid_Serialize_Done()
        {
            // ----- Setup Environment -----

            CourseNode courseNode = new CourseNode
            {
                CourseCode   = "255",
                FieldOfStudy = "Math",
                MarkUp       = "HTML CONTENT HERE",
                PreReqs      = new List <Dependency>
                {
                    new DependencyAbsolute
                    {
                        courseIds = new HashSet <string>
                        {
                            "ENG210"
                        }
                    },
                    new DependencyNumberOfCourses(1)
                    {
                        courseIds = new HashSet <string>
                        {
                            "ENG150",
                            "MATH160"
                        }
                    }
                },
                CoReqs = new List <Dependency>
                {
                    new DependencyAbsolute
                    {
                        courseIds = new HashSet <string>
                        {
                            "SENG321"
                        }
                    }
                }
            };

            // ----- Action -----

            var jsonSting = JsonConvert.SerializeObject(courseNode);

            string expectedJson = "{\"CourseCode\":\"255\",\"FieldOfStudy\":\"Math\",\"MarkUp\":\"HTML CONTENT HERE\",\"PreReqs\":[{\"courseIds\":[\"ENG210\"],\"UserFriendlyCondition\":\"Absolute\"},{\"NumberOfCourses\":1,\"courseIds\":[\"ENG150\",\"MATH160\"],\"UserFriendlyCondition\":\"Courses\"}],\"CoReqs\":[{\"courseIds\":[\"SENG321\"],\"UserFriendlyCondition\":\"Absolute\"}],\"PreOrCoReqs\":null}";

            // ----- Expected Result -----

            Assert.AreEqual(expectedJson, jsonSting);
        }
Exemplo n.º 5
0
    public void AddCourse(Course course)
    {
        CourseNode cn = Instantiate(DegreeTree.instance.courseNode);

        cn.transform.SetParent(rect, false);

        cn.SetCourse(course);
        courses.Add(cn);

        Toggle t = Instantiate(togglePrefab);

        t.transform.SetParent(cn.transform, false);
        t.transform.position += (Vector3)toggleOffset;
        t.group = GetComponent <ToggleGroup>();
    }
        public void CourseRepoWithOneCourse_Save_FileSaved()
        {
            // ----- Setup Environment -----

            CourseNode courseNode = new CourseNode
            {
                CourseCode   = "255",
                FieldOfStudy = "Math",
                MarkUp       = "HTML CONTENT HERE",
                PreReqs      = new List <Dependency>
                {
                    new DependencyAbsolute
                    {
                        courseIds = new HashSet <string>
                        {
                            "ENG210"
                        }
                    },
                    new DependencyNumberOfCourses(1)
                    {
                        courseIds = new HashSet <string>
                        {
                            "ENG150",
                            "MATH160"
                        }
                    }
                },
                CoReqs = new List <Dependency>
                {
                    new DependencyAbsolute
                    {
                        courseIds = new HashSet <string>
                        {
                            "SENG321"
                        }
                    }
                }
            };

            CourseNodeRepo courseRepo = new CourseNodeRepo();

            courseRepo.AddCourse(courseNode);
            courseRepo.Save();
            courseRepo.Reload();
        }
Exemplo n.º 7
0
        public void Reload()
        {
            if (!Directory.Exists(_dataPath))
            {
                return;
            }

            _courses = new Dictionary <string, CourseNode>();

            foreach (var folder in new DirectoryInfo(_dataPath).GetDirectories())
            {
                foreach (var file in folder.GetFiles("*.JSON"))
                {
                    var        rawJson = File.ReadAllText(file.FullName);
                    CourseNode course  = (CourseNode)JsonConvert.DeserializeObject <CourseNode>(rawJson, jset);

                    _courses.Add(course.CourseId, course);
                }
            }
        }
Exemplo n.º 8
0
    void AddCourseNode(Course course, int columnID)
    {
        if (columnID >= columns.Count)
        {
            AddColumn(columnID - columns.Count + 1);
        }

        CourseNode cn = Instantiate(courseNode);

        cn.SetCourse(course);

        cn.rowID = columns[columnID].transform.childCount;
        cn.transform.SetParent(columns[columnID].transform, false);

        columns[columnID].GetComponent <VerticalLayoutGroup>().spacing += cn.rect.sizeDelta.y * 1.5f;

        cn.column   = columns[columnID].GetComponent <RectTransform>();
        cn.columnID = columnID;

        nodes.Add(cn);
        currentCourses.Add(course);

        if (cn.course.prereqs.Count > 0)
        {
            //look for prereq and join their row

            List <Course> done = new List <Course>();
            foreach (Prereq prereq in cn.course.prereqs)
            {
                foreach (Course c in prereq.equivalent)
                {
                    bool skip = false;

                    foreach (CourseNode node in nodes)
                    {
                        foreach (CourseNode checkEq in node.equivalent)
                        {
                            if (done.Contains(checkEq.course))
                            {
                                skip = true;
                                break;
                            }
                        }
                        if (skip)
                        {
                            break;
                        }

                        if (node.course == c)
                        {
                            done.Add(c);
                            if (node.equivalent.Count > 0)
                            {
                                UILineRenderer edge = DrawLine(node.rect.parent.GetComponent <RectTransform>(), cn.rect);
                                cn.backEdge.Add(edge);
                                node.rect.parent.GetComponent <OneOfNode>().forwardEdge.Add(edge);
                            }
                            else
                            {
                                UILineRenderer edge = DrawLine(node.rect, cn.rect);
                                cn.backEdge.Add(edge);
                                node.forwardEdge.Add(edge);
                            }
                            break;
                        }
                    }
                }
            }
        }
        else
        {
            //start a row if we are the only prereq for a course, and a row doesn't already exist for that req chain
        }
    }
Exemplo n.º 9
0
    // when adding courses, if they are the first in their column / row, make a layout group
    // can achieve ideal column / row setup?
    // -> add chain link when columnID = 0, if the course unlocks

    Vector2Int AddCourseNode(Course course, Vector2Int gridPos)
    {
        CourseNode cn = Instantiate(courseNode);

        cn.SetCourse(course);
        cn.columnID = gridPos.x;

        if (gridPos.x == 0)
        {
            //make a new chain
            CourseChain chain = Instantiate(treeRow).AddComponent <CourseChain>();
            chain.head = cn;
            chain.transform.SetParent(content, false);
            chains.Add(chain);

            cn.rowID = chains.Count - 1;

            GameObject chainLink = Instantiate(treeColumn);
            chainLink.transform.SetParent(chain.transform, false);
            chains[chains.Count - 1].chainLinks.Add(chainLink);

            cn.transform.SetParent(chains[chains.Count - 1].chainLinks[0].transform, false);
        }
        else
        {
            cn.rowID = gridPos.y;

            //parent node to chain[gridPos.y].getchild(gridPos.x)
            while (gridPos.x >= chains[gridPos.y].chainLinks.Count)
            {
                GameObject chainLink = Instantiate(treeColumn);
                chainLink.transform.SetParent(chains[gridPos.y].transform, false);
                chains[gridPos.y].chainLinks.Add(chainLink);
            }

            cn.transform.SetParent(chains[gridPos.y].chainLinks[gridPos.x].transform, false);
            if (chains[gridPos.y].GetComponent <HorizontalLayoutGroup>())
            {
                chains[gridPos.y].GetComponent <HorizontalLayoutGroup>().spacing += cn.rect.sizeDelta.x;
            }
            else if (chains[gridPos.y].GetComponent <VerticalLayoutGroup>())
            {
                chains[gridPos.y].GetComponent <VerticalLayoutGroup>().spacing += cn.rect.sizeDelta.x;
            }

            if (chains[gridPos.y].chainLinks[gridPos.x].GetComponent <VerticalLayoutGroup>())
            {
                chains[gridPos.y].chainLinks[gridPos.x].GetComponent <VerticalLayoutGroup>().spacing += cn.rect.sizeDelta.y;
            }
            else if (chains[gridPos.y].chainLinks[gridPos.x].GetComponent <HorizontalLayoutGroup>())
            {
                chains[gridPos.y].chainLinks[gridPos.x].GetComponent <HorizontalLayoutGroup>().spacing += cn.rect.sizeDelta.y;
            }
        }

        nodes.Add(cn);
        currentCourses.Add(course);

        if (cn.course.prereqs.Count > 0)
        {
            //look for prereq and join their row

            List <Course> done = new List <Course>();
            foreach (Prereq prereq in cn.course.prereqs)
            {
                foreach (Course c in prereq.equivalent)
                {
                    bool skip = false;

                    foreach (CourseNode node in nodes)
                    {
                        foreach (CourseNode checkEq in node.equivalent)
                        {
                            if (done.Contains(checkEq.course))
                            {
                                skip = true;
                                break;
                            }
                        }
                        if (skip)
                        {
                            break;
                        }

                        if (node.course == c)
                        {
                            done.Add(c);
                            if (node.equivalent.Count > 0)
                            {
                                UILineRenderer edge = DrawLine(node.rect.parent.GetComponent <RectTransform>(), cn.rect);
                                cn.backEdge.Add(edge);
                                node.rect.parent.GetComponent <OneOfNode>().forwardEdge.Add(edge);
                            }
                            else
                            {
                                UILineRenderer edge = DrawLine(node.rect, cn.rect);
                                cn.backEdge.Add(edge);
                                node.forwardEdge.Add(edge);
                            }
                            break;
                        }
                    }
                }
            }
        }

        return(new Vector2Int(cn.columnID, cn.rowID));
    }
Exemplo n.º 10
0
 public void AddNode(CourseNode node)
 {
     nodes.Add(node);
 }