diff --git a/.gitignore b/.gitignore index e8e4b73b..739f59dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store node_modules +/.vite /dist diff --git a/cypress.config.ts b/cypress.config.ts index 6495600c..182ec0fa 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -30,4 +30,4 @@ export default defineConfig({ bundler: "vite", }, }, -}); +}); \ No newline at end of file diff --git a/cypress/e2e/example.cy.ts b/cypress/e2e/example.cy.ts deleted file mode 100644 index d77c4a03..00000000 --- a/cypress/e2e/example.cy.ts +++ /dev/null @@ -1,17 +0,0 @@ -describe('template spec', () => { - it('passes', () => { - const startTime = performance.now() - - cy.visit('/'); - - cy.get('#app', { timeout: 2000 }).should('be.visible'); - - cy.then(() => { - const loadTime = performance.now() - startTime; - cy.log(`Vue app load time: ${loadTime}ms`); - expect(loadTime).to.be.lessThan(2000); - }); - - cy.screenshot('home') - }) -}) diff --git a/cypress/e2e/graph/graphView.cy.ts b/cypress/e2e/graph/graphView.cy.ts new file mode 100644 index 00000000..4246caaf --- /dev/null +++ b/cypress/e2e/graph/graphView.cy.ts @@ -0,0 +1,182 @@ +/* eslint-disable max-len */ +describe("Graph View E2E Tests", () => { + beforeEach(() => { + cy.intercept("GET", "https://raw.githubusercontent.com/Janooski/data/main/data/modules.json", { + fixture: "modules.json", + }).as("modules"); + + cy.intercept( + "GET", + "https://raw.githubusercontent.com/Janooski/data/main/data2I/categories.json", + { fixture: "categories.json" } + ).as("categories"); + + cy.visit( + "/#/plan/RheKoI_OOP1_AutPy_CN1_DMI_An1I_Dbs1_EnglScience-FP_OOP2_DigCod_CySec_AutoSpr_An2I_DatEng_KommIng2-WE1_AlgDat_Bsys1_AIFo_MsTe_CPl_SEP1_ExEv-ParProg_SecSoW_Bsys2_AIAp_DSy_SEProj_SEP2_DigBusI-PmQm_CoBau_UIP_AppArch_SAI21_WI2-CPlA_CldSol_BAI21_PhAI?startSemester=HS24" + ); + }); + + it("enable and disable graph modal", () => { + cy.get('[data-cy="activate-graph-button"]').click(); + cy.get('[data-cy="graph-vueflow"]').should("be.visible"); + + cy.get('[data-cy="graph-close-button"]').click(); + cy.get('[data-cy="graph-vueflow"]').should("not.exist"); + cy.get('body').screenshot("graphView.cy.ts/graph-view-disabled"); + + cy.get('[data-cy="activate-graph-button"]').click(); + cy.get('[data-cy="graph-vueflow"]').should("be.visible"); + cy.get('[data-cy="graph-vueflow"]').screenshot("graphView.cy.ts/graph-view-enabled"); + }); + + it("triggers fitView on FitViewButton click", () => { + cy.get('[data-cy="activate-graph-button"]').click(); + + cy.get('[data-cy="graph-vueflow"]').trigger("wheel", { + deltaY: -2000, + bubbles: true, + eventConstructor: "WheelEvent", + }); + + cy.get('[data-cy="fit-view-button"]').click(); + cy.wait(1000); + cy.contains('[data-cy="graph-vueflow"] a', "Bachelor-Arbeit Informatik").then(($el) => { + cy.get('[data-cy="graph-vueflow"]').then(($container) => { + const elRect = $el[0].getBoundingClientRect(); + const containerRect = $container[0].getBoundingClientRect(); + + expect(elRect.top, "element top ≥ container top").to.be.at.least(containerRect.top); + expect(elRect.bottom, "element bottom ≤ container bottom").to.be.at.most( + containerRect.bottom + ); + expect(elRect.left, "element left ≥ container left").to.be.at.least(containerRect.left); + expect(elRect.right, "element right ≤ container right").to.be.at.most(containerRect.right); + }); + }); + cy.get('[data-cy="graph-vueflow"]').screenshot("graphView.cy.ts/fit-view"); + }); + + it("modules can be removed and added", () => { + cy.get('[data-cy="activate-graph-button"]').click(); + + cy.contains('[data-cy="graph-vueflow"] a', "Bachelor-Arbeit Informatik") + .parent() + .find('[data-cy="remove-module-button"]') + .click({ force: true }); + cy.contains('[data-cy="graph-vueflow"] a', "Bachelor-Arbeit Informatik").should("not.exist"); + cy.get('[data-cy="fit-view-button"]').click(); + cy.get('[data-cy="graph-vueflow"]').screenshot("graphView.cy.ts/BA-removed"); + + cy.contains('[data-cy="graph-vueflow"] a', "Studienarbeit Informatik") + .parent() + .find('[data-cy="add-pedendent-modules-button"]') + .click({ force: true }); + + cy.get('[data-cy="graph-vueflow"] [data-cy="module-list"]').should("exist").and("be.visible"); + + cy.contains('[data-cy="graph-vueflow"] a', "Studienarbeit Informatik") + .parent() + .parent() + .click({ force: true }); + cy.contains('[data-cy="graph-vueflow"] a', "Bachelor-Arbeit Informatik").should("exist"); + cy.get('[data-cy="graph-vueflow"]').screenshot("graphView.cy.ts/BA-added"); + }); + + it("all modules are displayed", () => { + cy.get('[data-cy="activate-graph-button"]').click(); + const modules = [ + "RheKoI", + "OOP1", + "AutPy", + "CN1", + "DMI", + "An1I", + "Dbs1", + "EnglScience", + "OOP2", + "DigCod", + "CySec", + "AutoSpr", + "An2I", + "WE1", + "AlgDat", + "Bsys1", + "AIFo", + "MsTe", + "CPl", + "SEP1", + "ExEv", + "ParProg", + "SecSoW", + "Bsys2", + "AIAp", + "DSy", + "SEProj", + "SEP2", + "DigBusI", + "PmQm", + "CoBau", + "UIP", + "AppArch", + "SAI21", + "WI2", + "CPlA", + "CldSol", + "BAI21", + "PhAI", + ]; + modules.forEach((mod) => { + cy.get(`[data-cy="graph-vueflow"] [data-id="${mod}"]`).should("exist").and("be.visible"); + }); + }); + + it("all connects of modules do exist", () => { + cy.get('[data-cy="activate-graph-button"]').click(); + const connections = [ + "AutoSpr->AIFo", + "OOP1->AIFo", + "OOP1->AlgDat", + "OOP1->CPl", + "OOP1->CPlA", + "OOP1->CoBau", + "OOP1->OOP2", + "OOP1->MsTe", + "OOP1->ParProg", + "OOP1->SEP1", + "OOP1->SEProj", + "OOP1->WE1", + "OOP2->AIFo", + "OOP2->AlgDat", + "OOP2->CPl", + "OOP2->CPlA", + "OOP2->CoBau", + "OOP2->MsTe", + "OOP2->ParProg", + "OOP2->SEP1", + "OOP2->SEProj", + "OOP2->WE1", + "AlgDat->MsTe", + "AlgDat->CPlA", + "Dbs1->MsTe", + "Dbs1->DatEng", + "Bsys1->Bsys2", + "Bsys1->CPl", + "Bsys1->CPlA", + "Bsys1->CoBau", + "Bsys1->DSy", + "Bsys1->ParProg", + "Bsys1->SecSoW", + "Bsys2->CoBau", + "CN1->SecSoW", + "CPl->CPlA", + "SEP1->SEP2", + "SEP1->SEProj", + "SEProj->SAI21", + "AppArch->CldSol", + "SAI21->BAI21", + ]; + connections.forEach((conn) => { + cy.get(`[data-id="${conn}"]`).should("exist"); + }); + }); +}); diff --git a/cypress/e2e/graph/graphViewLoadingtime.ts b/cypress/e2e/graph/graphViewLoadingtime.ts new file mode 100644 index 00000000..99aa8384 --- /dev/null +++ b/cypress/e2e/graph/graphViewLoadingtime.ts @@ -0,0 +1,24 @@ +/* eslint-disable max-len */ +describe("Graph View E2E Tests", () => { + beforeEach(() => { + cy.visit( + "/#/plan/RheKoI_OOP1_AutPy_CN1_DMI_An1I_Dbs1_EnglScience-FP_OOP2_DigCod_CySec_AutoSpr_An2I_DatEng_KommIng2-WE1_AlgDat_Bsys1_AIFo_MsTe_CPl_SEP1_ExEv-ParProg_SecSoW_Bsys2_AIAp_DSy_SEProj_SEP2_DigBusI-PmQm_CoBau_UIP_AppArch_SAI21_WI2-CPlA_CldSol_BAI21_PhAI?startSemester=HS24" + ); + }); + + it("graph loads within acceptable time", () => { + const maxLoadTime = 2000; + const start = Date.now(); + + cy.get('[data-cy="activate-graph-button"]').click(); + + cy.then(() => { + const loadTime = Date.now() - start; + cy.log(`Graph loaded in ${loadTime}ms`); + expect(loadTime).to.be.lessThan(maxLoadTime); + }); + + cy.get('[data-id="OOP1"]').should("exist").and("be.visible"); + }); +}); + diff --git a/cypress/fixtures/categories.json b/cypress/fixtures/categories.json new file mode 100644 index 00000000..c6ebce61 --- /dev/null +++ b/cypress/fixtures/categories.json @@ -0,0 +1,1403 @@ +[ + { + "id": "Auf", + "required_ects": 48, + "name": "Aufbau", + "modules": [ + { + "id": "AIAp", + "name": "AI Applications", + "url": "allModules/40870_M_AIAp.json" + }, + { + "id": "AJwn", + "name": "Auf Jobsuche, was nun?", + "url": "allModules/57128_M_AJwn.json" + }, + { + "id": "AppArch", + "name": "Application Architecture", + "url": "allModules/28236_M_AppArch.json" + }, + { + "id": "BlCh", + "name": "Blockchain", + "url": "allModules/39041_M_BlCh.json" + }, + { + "id": "Bsys2", + "name": "Betriebssysteme 2", + "url": "allModules/37903_M_Bsys2.json" + }, + { + "id": "CN2", + "name": "Computernetze 2", + "url": "allModules/23311_M_CN2.json" + }, + { + "id": "CPl", + "name": "C++", + "url": "allModules/24357_M_CPl.json" + }, + { + "id": "CPlA", + "name": "C++ Advanced", + "url": "allModules/28684_M_CPlA.json" + }, + { + "id": "CldInf", + "name": "Cloud Infrastructure", + "url": "allModules/29855_M_CldInf.json" + }, + { + "id": "CldOp", + "name": "Cloud Operations", + "url": "allModules/55074_M_CldOp.json" + }, + { + "id": "CldSol", + "name": "Cloud Solutions", + "url": "allModules/37167_M_CldSol.json" + }, + { + "id": "CoBau", + "name": "Compilerbau", + "url": "allModules/40663_M_CoBau.json" + }, + { + "id": "ComGra", + "name": "Computer Grafik", + "url": "allModules/43801_M_ComGra.json" + }, + { + "id": "CyDef", + "name": "Cyber Defense", + "url": "allModules/38551_M_CyDef.json" + }, + { + "id": "DL", + "name": "Deep Learning", + "url": "allModules/31834_M_DL.json" + }, + { + "id": "DSy", + "name": "Distributed Systems", + "url": "allModules/39054_M_DSy.json" + }, + { + "id": "DatAna", + "name": "Data Analytics", + "url": "allModules/36034_M_DatAna.json" + }, + { + "id": "DatEng", + "name": "Data Engineering", + "url": "allModules/36038_M_DatEng.json" + }, + { + "id": "EmbSys1", + "name": "Embedded Systems 1", + "url": "allModules/22062_M_EmbSys1.json" + }, + { + "id": "EmbSys2", + "name": "Embedded Systems 2", + "url": "allModules/22068_M_EmbSys2.json" + }, + { + "id": "GenAI", + "name": "Generative AI", + "url": "allModules/43809_M_GenAI.json" + }, + { + "id": "HackL", + "name": "Hacking Lab", + "url": "allModules/36457_M_HackL.json" + }, + { + "id": "IBN", + "name": "Intent-Based Networking", + "url": "allModules/57056_M_IBN.json" + }, + { + "id": "IPCV1", + "name": "Image Processing and Computer Vision 1", + "url": "allModules/36264_M_IPCV1.json" + }, + { + "id": "IPCV2", + "name": "Image Processing and Computer Vision 2", + "url": "allModules/36269_M_IPCV2.json" + }, + { + "id": "IncResp", + "name": "Incident Response", + "url": "allModules/36473_M_IncResp.json" + }, + { + "id": "MGE", + "name": "Mobile and GUI Engineering", + "url": "allModules/28254_M_MGE.json" + }, + { + "id": "ML", + "name": "Statistical Machine Learning", + "url": "allModules/31838_M_ML.json" + }, + { + "id": "MOSIM", + "name": "Modellbildung und Simulation", + "url": "allModules/40139_M_MOSIM.json" + }, + { + "id": "MsTe", + "name": ".Net Technologien", + "url": "allModules/37247_M_MsTe.json" + }, + { + "id": "NIoSec", + "name": "Network and IoT Security", + "url": "allModules/42231_M_NIoSec.json" + }, + { + "id": "NetAut", + "name": "Network Automation", + "url": "allModules/56252_M_NetAut.json" + }, + { + "id": "PF", + "name": "Patterns und Frameworks", + "url": "allModules/39045_M_PF.json" + }, + { + "id": "PWWD", + "name": "Praxiswoche Webdesign", + "url": "allModules/57180_M_PWWD.json" + }, + { + "id": "ParProg", + "name": "Parallele Programmierung", + "url": "allModules/41462_M_ParProg.json" + }, + { + "id": "PlFSec", + "name": "Platform Security", + "url": "allModules/42227_M_PlFSec.json" + }, + { + "id": "SModSim", + "name": "System Modeling and Simulation", + "url": "allModules/38938_M_SModSim.json" + }, + { + "id": "SecSW", + "name": "Secure Software", + "url": "allModules/36488_M_SecSW.json" + }, + { + "id": "SecSoW", + "name": "Secure Software", + "url": "allModules/40311_M_SecSoW.json" + }, + { + "id": "ServDev", + "name": "Service Development (ITIL)", + "url": "allModules/37171_M_ServDev.json" + }, + { + "id": "UIP", + "name": "UI Patterns and Frameworks", + "url": "allModules/56946_M_UIP.json" + }, + { + "id": "UX", + "name": "User Experience", + "url": "allModules/41106_M_UX.json" + }, + { + "id": "WE2", + "name": "Web Engineering 2", + "url": "allModules/38945_M_WE2.json" + }, + { + "id": "WE3", + "name": "Web Engineering 3", + "url": "allModules/38901_M_WE3.json" + }, + { + "id": "WIoT", + "name": "Wireless and IoT", + "url": "allModules/37157_M_WIoT.json" + }, + { + "id": "WsoT", + "name": "Wireless and IoT", + "url": "allModules/40038_M_WsoT.json" + } + ] + }, + { + "id": "EP", + "required_ects": 12, + "name": "Engineering Practice", + "modules": [ + { + "id": "SE1", + "name": "Software-Engineering 1", + "url": "allModules/37893_M_SE1.json" + }, + { + "id": "SE2", + "name": "Software-Engineering 2", + "url": "allModules/37191_M_SE2.json" + }, + { + "id": "SEP1", + "name": "SE Practices 1", + "url": "allModules/39203_M_SEP1.json" + }, + { + "id": "SEP2", + "name": "SE Practices 2", + "url": "allModules/57233_M_SEP2.json" + }, + { + "id": "SEProj", + "name": "SE Project", + "url": "allModules/43712_M_SEProj.json" + } + ] + }, + { + "id": "Inf", + "required_ects": 136, + "name": "Informatik", + "modules": [ + { + "id": "AADL", + "name": "Applied AI with Deep Learning", + "url": "allModules/57207_M_AADL.json" + }, + { + "id": "AIAp", + "name": "AI Applications", + "url": "allModules/40870_M_AIAp.json" + }, + { + "id": "AIFo", + "name": "AI Foundations", + "url": "allModules/40866_M_AIFo.json" + }, + { + "id": "AJwn", + "name": "Auf Jobsuche, was nun?", + "url": "allModules/57128_M_AJwn.json" + }, + { + "id": "AlgDat", + "name": "Algorithmen und Datenstrukturen", + "url": "allModules/38881_M_AlgDat.json" + }, + { + "id": "AppArch", + "name": "Application Architecture", + "url": "allModules/28236_M_AppArch.json" + }, + { + "id": "AutPy", + "name": "Automatisierung mit Python", + "url": "allModules/38879_M_AutPy.json" + }, + { + "id": "AutoSpr", + "name": "Automaten und Sprachen", + "url": "allModules/24404_M_AutoSpr.json" + }, + { + "id": "BAI21", + "name": "Bachelor-Arbeit Informatik", + "url": "allModules/41626_M_BAI21.json" + }, + { + "id": "BlCh", + "name": "Blockchain", + "url": "allModules/39041_M_BlCh.json" + }, + { + "id": "Bsys1", + "name": "Betriebssysteme 1", + "url": "allModules/39080_M_Bsys1.json" + }, + { + "id": "Bsys2", + "name": "Betriebssysteme 2", + "url": "allModules/37903_M_Bsys2.json" + }, + { + "id": "CN1", + "name": "Computernetze 1", + "url": "allModules/39084_M_CN1.json" + }, + { + "id": "CN2", + "name": "Computernetze 2", + "url": "allModules/23311_M_CN2.json" + }, + { + "id": "CPl", + "name": "C++", + "url": "allModules/24357_M_CPl.json" + }, + { + "id": "CPlA", + "name": "C++ Advanced", + "url": "allModules/28684_M_CPlA.json" + }, + { + "id": "CldInf", + "name": "Cloud Infrastructure", + "url": "allModules/29855_M_CldInf.json" + }, + { + "id": "CldOp", + "name": "Cloud Operations", + "url": "allModules/55074_M_CldOp.json" + }, + { + "id": "CldSol", + "name": "Cloud Solutions", + "url": "allModules/37167_M_CldSol.json" + }, + { + "id": "CoBau", + "name": "Compilerbau", + "url": "allModules/40663_M_CoBau.json" + }, + { + "id": "ComGra", + "name": "Computer Grafik", + "url": "allModules/43801_M_ComGra.json" + }, + { + "id": "CyDef", + "name": "Cyber Defense", + "url": "allModules/38551_M_CyDef.json" + }, + { + "id": "CySec", + "name": "Cyber Security Foundations", + "url": "allModules/36478_M_CySec.json" + }, + { + "id": "DL", + "name": "Deep Learning", + "url": "allModules/31834_M_DL.json" + }, + { + "id": "DMI", + "name": "Diskrete Mathematik für Informatik", + "url": "allModules/24442_M_DMI.json" + }, + { + "id": "DSy", + "name": "Distributed Systems", + "url": "allModules/39054_M_DSy.json" + }, + { + "id": "DatAna", + "name": "Data Analytics", + "url": "allModules/36034_M_DatAna.json" + }, + { + "id": "DatEng", + "name": "Data Engineering", + "url": "allModules/36038_M_DatEng.json" + }, + { + "id": "Dbs1", + "name": "Datenbanksysteme 1", + "url": "allModules/39093_M_Dbs1.json" + }, + { + "id": "DigCod", + "name": "Digitale Codierungen", + "url": "allModules/38920_M_DigCod.json" + }, + { + "id": "EmbSys1", + "name": "Embedded Systems 1", + "url": "allModules/22062_M_EmbSys1.json" + }, + { + "id": "EmbSys2", + "name": "Embedded Systems 2", + "url": "allModules/22068_M_EmbSys2.json" + }, + { + "id": "FP", + "name": "Functional Programming", + "url": "allModules/39143_M_FP.json" + }, + { + "id": "FunProg", + "name": "Funktionale Programmierung", + "url": "allModules/38928_M_FunProg.json" + }, + { + "id": "GenAI", + "name": "Generative AI", + "url": "allModules/43809_M_GenAI.json" + }, + { + "id": "HackL", + "name": "Hacking Lab", + "url": "allModules/36457_M_HackL.json" + }, + { + "id": "IBN", + "name": "Intent-Based Networking", + "url": "allModules/57056_M_IBN.json" + }, + { + "id": "IPCV1", + "name": "Image Processing and Computer Vision 1", + "url": "allModules/36264_M_IPCV1.json" + }, + { + "id": "IPCV2", + "name": "Image Processing and Computer Vision 2", + "url": "allModules/36269_M_IPCV2.json" + }, + { + "id": "IncResp", + "name": "Incident Response", + "url": "allModules/36473_M_IncResp.json" + }, + { + "id": "MGE", + "name": "Mobile and GUI Engineering", + "url": "allModules/28254_M_MGE.json" + }, + { + "id": "ML", + "name": "Statistical Machine Learning", + "url": "allModules/31838_M_ML.json" + }, + { + "id": "MOSIM", + "name": "Modellbildung und Simulation", + "url": "allModules/40139_M_MOSIM.json" + }, + { + "id": "MsTe", + "name": ".Net Technologien", + "url": "allModules/37247_M_MsTe.json" + }, + { + "id": "NIoSec", + "name": "Network and IoT Security", + "url": "allModules/42231_M_NIoSec.json" + }, + { + "id": "NetAut", + "name": "Network Automation", + "url": "allModules/56252_M_NetAut.json" + }, + { + "id": "OOP1", + "name": "Objektorientierte Programmierung 1", + "url": "allModules/43813_M_OOP1.json" + }, + { + "id": "OOP2", + "name": "Objektorientierte Programmierung 2", + "url": "allModules/38910_M_OOP2.json" + }, + { + "id": "PF", + "name": "Patterns und Frameworks", + "url": "allModules/39045_M_PF.json" + }, + { + "id": "PWWD", + "name": "Praxiswoche Webdesign", + "url": "allModules/57180_M_PWWD.json" + }, + { + "id": "ParProg", + "name": "Parallele Programmierung", + "url": "allModules/41462_M_ParProg.json" + }, + { + "id": "PlFSec", + "name": "Platform Security", + "url": "allModules/42227_M_PlFSec.json" + }, + { + "id": "SAI21", + "name": "Studienarbeit Informatik", + "url": "allModules/40906_M_SAI21.json" + }, + { + "id": "SE1", + "name": "Software-Engineering 1", + "url": "allModules/37893_M_SE1.json" + }, + { + "id": "SE2", + "name": "Software-Engineering 2", + "url": "allModules/37191_M_SE2.json" + }, + { + "id": "SEP1", + "name": "SE Practices 1", + "url": "allModules/39203_M_SEP1.json" + }, + { + "id": "SEP2", + "name": "SE Practices 2", + "url": "allModules/57233_M_SEP2.json" + }, + { + "id": "SEProj", + "name": "SE Project", + "url": "allModules/43712_M_SEProj.json" + }, + { + "id": "SModSim", + "name": "System Modeling and Simulation", + "url": "allModules/38938_M_SModSim.json" + }, + { + "id": "SecSW", + "name": "Secure Software", + "url": "allModules/36488_M_SecSW.json" + }, + { + "id": "SecSoW", + "name": "Secure Software", + "url": "allModules/40311_M_SecSoW.json" + }, + { + "id": "ServDev", + "name": "Service Development (ITIL)", + "url": "allModules/37171_M_ServDev.json" + }, + { + "id": "UIP", + "name": "UI Patterns and Frameworks", + "url": "allModules/56946_M_UIP.json" + }, + { + "id": "UX", + "name": "User Experience", + "url": "allModules/41106_M_UX.json" + }, + { + "id": "WE1", + "name": "Web Engineering 1", + "url": "allModules/38891_M_WE1.json" + }, + { + "id": "WE2", + "name": "Web Engineering 2", + "url": "allModules/38945_M_WE2.json" + }, + { + "id": "WE3", + "name": "Web Engineering 3", + "url": "allModules/38901_M_WE3.json" + }, + { + "id": "WIoT", + "name": "Wireless and IoT", + "url": "allModules/37157_M_WIoT.json" + }, + { + "id": "WsoT", + "name": "Wireless and IoT", + "url": "allModules/40038_M_WsoT.json" + } + ] + }, + { + "id": "KomEng", + "required_ects": 12, + "name": "Kommunikation und Englisch", + "modules": [ + { + "id": "EnglHTw", + "name": "English: How Things work", + "url": "allModules/56496_M_EnglHTw.json" + }, + { + "id": "EnglScience", + "name": "English: The World of Science", + "url": "allModules/56504_M_EnglScience.json" + }, + { + "id": "FKIA", + "name": "Führungskommunikation im internationalen Arbeitsmarkt", + "url": "allModules/24427_M_FKIA.json" + }, + { + "id": "KommIng2", + "name": "Kommunikation 2 für IngenieurInnen (Teamkommunikation)", + "url": "allModules/37397_M_KommIng2.json" + }, + { + "id": "RKI", + "name": "Rhetorische Kommunikation für IngenieurInnen", + "url": "allModules/25661_M_RKI.json" + }, + { + "id": "RheKI", + "name": "Rhetorische Kommunikation für IngenieurInnen", + "url": "allModules/31909_M_RheKI.json" + }, + { + "id": "RheKoI", + "name": "Rhetorische Kommunikation für IngenieurInnen", + "url": "allModules/43277_M_RheKoI.json" + }, + { + "id": "SelTec", + "name": "English: Selling Technology", + "url": "allModules/45661_M_SelTec.json" + }, + { + "id": "TecBEC", + "name": "English Beyond Borders: Navigating Academic & Professional Success with IELTS", + "url": "allModules/55597_M_TecBEC.json" + } + ] + }, + { + "id": "MaPh", + "required_ects": 16, + "name": "Mathematik und Physik", + "modules": [ + { + "id": "An1I", + "name": "Analysis 1 für Informatik", + "url": "allModules/28151_M_An1I.json" + }, + { + "id": "An2I", + "name": "Analysis 2 für Informatik", + "url": "allModules/28156_M_An2I.json" + }, + { + "id": "ExEv", + "name": "Experimentieren und Evaluieren für Informatik", + "url": "allModules/24381_M_ExEv.json" + }, + { + "id": "FuVar", + "name": "Funktionen mehrerer Variablen", + "url": "allModules/10942_M_FuVar.json" + }, + { + "id": "IntTra", + "name": "Integraltransformationen", + "url": "allModules/15367_M_IntTra.json" + }, + { + "id": "KomFou1", + "name": "Komplexe Zahlen und Fourierreihen", + "url": "allModules/15546_M_KomFou1.json" + }, + { + "id": "MathFML", + "name": "Mathematical Foundations for Machine Learning", + "url": "allModules/31614_M_MathFML.json" + }, + { + "id": "NwP", + "name": "Naturwissenschaftliches Praktikum", + "url": "allModules/45138_M_NwP.json" + }, + { + "id": "Ph1Mech", + "name": "Physik 1 - Mechanik", + "url": "allModules/45143_M_Ph1Mech.json" + }, + { + "id": "Ph2HAT", + "name": "Physik 2 - Hydro-, Aero- und Thermodynamik", + "url": "allModules/22021_M_Ph2HAT.json" + }, + { + "id": "Ph3SWO", + "name": "Physik 3 - Schwingungen und Wellen, Optik", + "url": "allModules/45153_M_Ph3SWO.json" + }, + { + "id": "PhAI", + "name": "Physik Anwendungen für Informatik", + "url": "allModules/43544_M_PhAI.json" + }, + { + "id": "WrStat", + "name": "Wahrscheinlichkeitsrechnung und Statistik", + "url": "allModules/24489_M_WrStat.json" + } + ] + }, + { + "id": "RA", + "required_ects": 46, + "name": "Rahmenausbildung", + "modules": [ + { + "id": "AADL", + "name": "Applied AI with Deep Learning", + "url": "allModules/57207_M_AADL.json" + }, + { + "id": "AIFo", + "name": "AI Foundations", + "url": "allModules/40866_M_AIFo.json" + }, + { + "id": "AlgDat", + "name": "Algorithmen und Datenstrukturen", + "url": "allModules/38881_M_AlgDat.json" + }, + { + "id": "AutPy", + "name": "Automatisierung mit Python", + "url": "allModules/38879_M_AutPy.json" + }, + { + "id": "AutoSpr", + "name": "Automaten und Sprachen", + "url": "allModules/24404_M_AutoSpr.json" + }, + { + "id": "Bsys1", + "name": "Betriebssysteme 1", + "url": "allModules/39080_M_Bsys1.json" + }, + { + "id": "CN1", + "name": "Computernetze 1", + "url": "allModules/39084_M_CN1.json" + }, + { + "id": "CySec", + "name": "Cyber Security Foundations", + "url": "allModules/36478_M_CySec.json" + }, + { + "id": "DMI", + "name": "Diskrete Mathematik für Informatik", + "url": "allModules/24442_M_DMI.json" + }, + { + "id": "Dbs1", + "name": "Datenbanksysteme 1", + "url": "allModules/39093_M_Dbs1.json" + }, + { + "id": "DigCod", + "name": "Digitale Codierungen", + "url": "allModules/38920_M_DigCod.json" + }, + { + "id": "FP", + "name": "Functional Programming", + "url": "allModules/39143_M_FP.json" + }, + { + "id": "FunProg", + "name": "Funktionale Programmierung", + "url": "allModules/38928_M_FunProg.json" + }, + { + "id": "OOP1", + "name": "Objektorientierte Programmierung 1", + "url": "allModules/43813_M_OOP1.json" + }, + { + "id": "OOP2", + "name": "Objektorientierte Programmierung 2", + "url": "allModules/38910_M_OOP2.json" + }, + { + "id": "WE1", + "name": "Web Engineering 1", + "url": "allModules/38891_M_WE1.json" + } + ] + }, + { + "id": "SaBa", + "required_ects": 20, + "name": "Studien- Bachelorarbeit", + "modules": [ + { + "id": "BAI21", + "name": "Bachelor-Arbeit Informatik", + "url": "allModules/41626_M_BAI21.json" + }, + { + "id": "SAI21", + "name": "Studienarbeit Informatik", + "url": "allModules/40906_M_SAI21.json" + } + ] + }, + { + "id": "gwr", + "required_ects": 12, + "name": "Gesellschaft, Wirtschaft und Recht", + "modules": [ + { + "id": "BuPro", + "name": "Business Processes für Informatik", + "url": "allModules/40825_M_BuPro.json" + }, + { + "id": "BuRe1", + "name": "Business und Recht 1", + "url": "allModules/20780_M_BuRe1.json" + }, + { + "id": "BuRe2a", + "name": "Business und Recht 2 (a)", + "url": "allModules/45604_M_BuRe2a.json" + }, + { + "id": "DigBusI", + "name": "Digital Business für Informatik", + "url": "allModules/40316_M_DigBusI.json" + }, + { + "id": "IKAA", + "name": "Applied AI", + "url": "allModules/44202_M_IKAA.json" + }, + { + "id": "IKAAp", + "name": "Applied AI (Projektarbeit)", + "url": "allModules/44196_M_IKAA_p.json" + }, + { + "id": "IKAG", + "name": "Alternde Gesellschaften", + "url": "allModules/44020_M_IKAG.json" + }, + { + "id": "IKAK", + "name": "Gesundes Altern mit Hilfe von künstlicher Intelligenz", + "url": "allModules/44064_M_IKAK.json" + }, + { + "id": "IKAKp", + "name": "Gesundes Altern mit Hilfe von künstlicher Intelligenz (Projektarbeit)", + "url": "allModules/44067_M_IKAK_p.json" + }, + { + "id": "IKBD", + "name": "Behavioral Design", + "url": "allModules/55066_M_IKBD.json" + }, + { + "id": "IKBF", + "name": "Selbststeuerung im Beruf", + "url": "allModules/56707_M_IKBF.json" + }, + { + "id": "IKBH", + "name": "Behavioral Design", + "url": "allModules/56919_M_IKBH.json" + }, + { + "id": "IKBW", + "name": "Blickwechsel", + "url": "allModules/44040_M_IKBW.json" + }, + { + "id": "IKCC", + "name": "Co-Creation und Inclusive Design Methoden", + "url": "allModules/56710_M_IKCC.json" + }, + { + "id": "IKCCp", + "name": "Co-Creation und Inclusive Design Methoden (Projektarbeit)", + "url": "allModules/56713_M_IKCC_p.json" + }, + { + "id": "IKCG", + "name": "Corporate Governance and Sustainability", + "url": "allModules/56716_M_IKCG.json" + }, + { + "id": "IKDH", + "name": "Lernlabor «Digitalisieren Hands-on»", + "url": "allModules/44235_M_IKDH.json" + }, + { + "id": "IKDHp", + "name": "Lernlabor «Digitalisieren Hands-on» (Projektarbeit)", + "url": "allModules/44232_M_IKDH_p.json" + }, + { + "id": "IKDK", + "name": "Demokratie im Zeitalter von KI", + "url": "allModules/44043_M_IKDK.json" + }, + { + "id": "IKDKp", + "name": "Demokratie im Zeitalter von KI (Projektarbeit)", + "url": "allModules/44046_M_IKDK_p.json" + }, + { + "id": "IKDL", + "name": "Digitalisieren mit Low Code: Einen AI Chatbot selber bauen", + "url": "allModules/44250_M_IKDL.json" + }, + { + "id": "IKDLp", + "name": "Digitalisieren mit Low Code: Einen AI Chatbot selber bauen (Projektarbeit)", + "url": "allModules/44247_M_IKDL_p.json" + }, + { + "id": "IKDM_A", + "name": "Dream Team - Mentoringprogramm für die nächste Generation Teil A", + "url": "allModules/44241_M_IKDM_A.json" + }, + { + "id": "IKDM_B", + "name": "Dream Team - Mentoringprogramm für die nächste Generation Teil B", + "url": "allModules/44244_M_IKDM_B.json" + }, + { + "id": "IKEI", + "name": "Einsamkeit erforschen - wirtschaftliche, gesellschaftliche und private Dimensionen", + "url": "allModules/56720_M_IKEI.json" + }, + { + "id": "IKEIp", + "name": "Einsamkeit erforschen - wirtschaftliche, gesellschaftliche und private Dimensionen (Projektarbeit)", + "url": "allModules/56731_M_IKEI_p.json" + }, + { + "id": "IKEK", + "name": "Ethik & KI", + "url": "allModules/44049_M_IKEK.json" + }, + { + "id": "IKEKp", + "name": "Ethik & KI (Projektarbeit)", + "url": "allModules/44052_M_IKEK_p.json" + }, + { + "id": "IKFD", + "name": "Applied Frugal Design: Einfach gestalten, gesund leben", + "url": "allModules/56734_M_IKFD.json" + }, + { + "id": "IKFDp", + "name": "Applied Frugal Design: Einfach gestalten, gesund leben (Projektarbeit)", + "url": "allModules/56737_M_IKFD_p.json" + }, + { + "id": "IKFL", + "name": "Future Life Design: Successfully shaping your own life path", + "url": "allModules/56740_M_IKFL.json" + }, + { + "id": "IKFLp", + "name": "Future Life Design: Successfully shaping your own life path (Projektarbeit)", + "url": "allModules/56743_M_IKFL_p.json" + }, + { + "id": "IKGA", + "name": "Generative AI in der Planung", + "url": "allModules/44211_M_IKGA.json" + }, + { + "id": "IKGAp", + "name": "Generative AI in der Planung (Projektarbeit)", + "url": "allModules/44214_M_IKGA_p.json" + }, + { + "id": "IKGE", + "name": "Klimagerechte Stadt- und Gemeindeentwicklung", + "url": "allModules/44088_M_IKGE.json" + }, + { + "id": "IKGEp", + "name": "Klimagerechte Stadt- und Gemeindeentwicklung (Projektarbeit)", + "url": "allModules/44091_M_IKGE_p.json" + }, + { + "id": "IKGL", + "name": "Gesund leben und Langlebigkeit", + "url": "allModules/44061_M_IKGL.json" + }, + { + "id": "IKGS", + "name": "Knowhow und Technologien für nachhaltige Entwicklung im globalen Süden", + "url": "allModules/44190_M_IKGS.json" + }, + { + "id": "IKGSp", + "name": "Knowhow und Technologien für nachhaltige Entwicklung im globalen Süden (Projektarbeit)", + "url": "allModules/56922_M_IKGS_p.json" + }, + { + "id": "IKIE", + "name": "Interdisziplinär entwickeln - gerüstet für die technikbasierte Arbeitswelt", + "url": "allModules/44079_M_IKIE.json" + }, + { + "id": "IKII", + "name": "Ideen Inkubator Klimawende", + "url": "allModules/44073_M_IKII.json" + }, + { + "id": "IKIIp", + "name": "Ideen Inkubator Klimawende (Projektarbeit)", + "url": "allModules/44076_M_IKII_p.json" + }, + { + "id": "IKIS", + "name": "International Summer School for Sustainability", + "url": "allModules/56789_M_IKIS.json" + }, + { + "id": "IKISp", + "name": "International Summer School for Sustainability (Projektarbeit)", + "url": "allModules/56866_M_IKIS_p.json" + }, + { + "id": "IKKA", + "name": "Nachhaltigkeit und Klimaschutz angewandt", + "url": "allModules/44223_M_IKKA.json" + }, + { + "id": "IKKK", + "name": "Kommunale Klimawende", + "url": "allModules/44184_M_IKKK.json" + }, + { + "id": "IKKKp", + "name": "Kommunale Klimawende (Projektarbeit)", + "url": "allModules/44187_M_IKKK_p.json" + }, + { + "id": "IKKL", + "name": "Circular Economy", + "url": "allModules/44094_M_IKKL.json" + }, + { + "id": "IKKLp", + "name": "Circular Economy (Projektarbeit)", + "url": "allModules/44097_M_IKKL_p.json" + }, + { + "id": "IKKP", + "name": "Klimakrise: Kann die Politik die Welt noch retten?", + "url": "allModules/44226_M_IKKP.json" + }, + { + "id": "IKKPp", + "name": "Klimakrise: Kann die Politik die Welt noch retten? (Projektarbeit)", + "url": "allModules/44229_M_IKKP_p.json" + }, + { + "id": "IKLD", + "name": "Future Life Design: Den eigenen Lebensweg erfolgreich gestalten", + "url": "allModules/56925_M_IKLD.json" + }, + { + "id": "IKLDp", + "name": "Future Life Design: Den eigenen Lebensweg erfolgreich gestalten (Projektarbeit)", + "url": "allModules/56928_M_IKLD_p.json" + }, + { + "id": "IKLE", + "name": "IZM-Projekt", + "url": "allModules/44082_M_IKLE.json" + }, + { + "id": "IKLEp", + "name": "IZM-Projekt (Projektarbeit)", + "url": "allModules/44085_M_IKLE_p.json" + }, + { + "id": "IKLF", + "name": "Lernfähigkeit und Gedächtnis", + "url": "allModules/44100_M_IKLF.json" + }, + { + "id": "IKLK", + "name": "Lösungsorientierte Kommunikation für dynamische Arbeitswelten", + "url": "allModules/44103_M_IKLK.json" + }, + { + "id": "IKME", + "name": "Messbar gesund", + "url": "allModules/44115_M_IKME.json" + }, + { + "id": "IKMEp", + "name": "Messbar gesund (Projektarbeit)", + "url": "allModules/56875_M_IKME_p.json" + }, + { + "id": "IKMI", + "name": "Medien- und Informationskompetenz in Zeiten von KI", + "url": "allModules/44109_M_IKMI.json" + }, + { + "id": "IKMIp", + "name": "Medien- und Informationskompetenz in Zeiten von KI (Projektarbeit)", + "url": "allModules/44112_M_IKMI_p.json" + }, + { + "id": "IKMO", + "name": "Gemeinden & Städte von morgen. So gelingt nachhaltige Gemeindeentwicklung", + "url": "allModules/44055_M_IKMO.json" + }, + { + "id": "IKMOp", + "name": "Gemeinden & Städte von morgen. So gelingt nachhaltige Gemeindeentwicklung (Projektarbeit)", + "url": "allModules/44058_M_IKMO_p.json" + }, + { + "id": "IKNB", + "name": "Wasser und Klima: Nachhaltige Wasserbewirtschaftung auf Gemeindeebene", + "url": "allModules/44199_M_IKNB.json" + }, + { + "id": "IKNBp", + "name": "Wasser und Klima: Nachhaltige Wasserbewirtschaftung auf Gemeindeebene (Projektarbeit)", + "url": "allModules/57170_M_IKNB_p.json" + }, + { + "id": "IKNE", + "name": "Nachhaltige Ernährung für Körper, Geist und Klima", + "url": "allModules/56792_M_IKNE.json" + }, + { + "id": "IKNEp", + "name": "Nachhaltige Ernährung für Körper, Geist und Klima (Projektarbeit)", + "url": "allModules/56795_M_IKNE_p.json" + }, + { + "id": "IKNG", + "name": "Neue Narrative für eine nachhaltige Gesellschaft", + "url": "allModules/44121_M_IKNG.json" + }, + { + "id": "IKNGp", + "name": "Neue Narrative für eine nachhaltige Gesellschaft (Projektarbeit)", + "url": "allModules/44124_M_IKNG_p.json" + }, + { + "id": "IKNK", + "name": "New Work & KI", + "url": "allModules/44127_M_IKNK.json" + }, + { + "id": "IKNKp", + "name": "New Work & KI (Projektarbeit)", + "url": "allModules/44130_M_IKNK_p.json" + }, + { + "id": "IKNN", + "name": "Hackathon zu \"Netto-null in Gebäuden und Verkehr\"", + "url": "allModules/44070_M_IKNN.json" + }, + { + "id": "IKNW", + "name": "Die Nachhaltigkeitswoche: Eventfabrik und Zukunftsworkshops", + "url": "allModules/56802_M_IKNW.json" + }, + { + "id": "IKNWp", + "name": "Die Nachhaltigkeitswoche: Eventfabrik und Zukunftsworkshops (Projektarbeit)", + "url": "allModules/56804_M_IKNW_p.json" + }, + { + "id": "IKOW", + "name": "Offgrid Wasser und Sonne: Hands on", + "url": "allModules/56805_M_IKOW.json" + }, + { + "id": "IKOWp", + "name": "Offgrid Wasser und Sonne: Hands on (Projektarbeit)", + "url": "allModules/56806_M_IKOW_p.json" + }, + { + "id": "IKPE", + "name": "Psychologisches Empowerment in Veränderungs- und Wandlungsprozessen", + "url": "allModules/44139_M_IKPE.json" + }, + { + "id": "IKPH", + "name": "Prototyping für Startup-Ideen beim Hackathon", + "url": "allModules/56807_M_IKPH.json" + }, + { + "id": "IKPS", + "name": "Prototyping für Startup-Ideen", + "url": "allModules/44133_M_IKPS.json" + }, + { + "id": "IKPSp", + "name": "Prototyping für Startup-Ideen (Projektarbeit)", + "url": "allModules/44136_M_IKPS_p.json" + }, + { + "id": "IKRE", + "name": "Resilienz: Schlüsselkompetenz für innere Stärke", + "url": "allModules/44142_M_IKRE.json" + }, + { + "id": "IKSH", + "name": "Social and Human Robotic", + "url": "allModules/44145_M_IKSH.json" + }, + { + "id": "IKSM", + "name": "Strategisches Management von Naturgefahren", + "url": "allModules/44205_M_IKSM.json" + }, + { + "id": "IKSMp", + "name": "Strategisches Management von Naturgefahren (Projektarbeit)", + "url": "allModules/44208_M_IKSM_p.json" + }, + { + "id": "IKSS", + "name": "Ski-Nation Schweiz", + "url": "allModules/44220_M_IKSS.json" + }, + { + "id": "IKSSp", + "name": "Ski-Nation Schweiz (Projektarbeit)", + "url": "allModules/44217_M_IKSS_p.json" + }, + { + "id": "IKST", + "name": "Starkes Ich – Starkes Team", + "url": "allModules/44154_M_IKST.json" + }, + { + "id": "IKSTp", + "name": "Starkes Ich – Starkes Team (Projektarbeit)", + "url": "allModules/44157_M_IKST_p.json" + }, + { + "id": "IKSU", + "name": "Startup - Weg zur Gründung", + "url": "allModules/44253_M_IKSU.json" + }, + { + "id": "IKSUp", + "name": "Startup - Weg zur Gründung (Projektarbeit)", + "url": "allModules/44256_M_IKSU_p.json" + }, + { + "id": "IKSW", + "name": "Stadt der kurzen Wege", + "url": "allModules/44148_M_IKSW.json" + }, + { + "id": "IKSWp", + "name": "Stadt der kurzen Wege (Projektarbeit)", + "url": "allModules/44151_M_IKSW_p.json" + }, + { + "id": "IKTE", + "name": "The Internet of Everything", + "url": "allModules/44340_M_IKTE.json" + }, + { + "id": "IKTEp", + "name": "The Internet of Everything (Projektarbeit)", + "url": "allModules/44343_M_IKTE_p.json" + }, + { + "id": "IKTSV2", + "name": "IKTS_Vorlage 2ECTS", + "url": "allModules/43909_M_IKTSV2.json" + }, + { + "id": "IKTSV3", + "name": "IKTS_Vorlage 3ECTS", + "url": "allModules/43910_M_IKTSV3.json" + }, + { + "id": "IKTSV4", + "name": "IKTS_Vorlage 4ECTS", + "url": "allModules/43911_M_IKTSV4.json" + }, + { + "id": "IKUG", + "name": "Umwelt und Gesundheit", + "url": "allModules/44160_M_IKUG.json" + }, + { + "id": "IKUGp", + "name": "Umwelt und Gesundheit (Projektarbeit)", + "url": "allModules/44163_M_IKUG_p.json" + }, + { + "id": "IKVA", + "name": "Virtual Reality für gesundes Leben und Altern", + "url": "allModules/44172_M_IKVA.json" + }, + { + "id": "IKVAp", + "name": "Virtual Reality für gesundes Leben und Altern (Projektarbeit)", + "url": "allModules/44175_M_IKVA_p.json" + }, + { + "id": "IKVK", + "name": "Vielfalt, Chancengleichheit und Inklusion im KI-Zeitalter", + "url": "allModules/44166_M_IKVK.json" + }, + { + "id": "IKVKp", + "name": "Vielfalt, Chancengleichheit und Inklusion im KI-Zeitalter (Projektarbeit)", + "url": "allModules/44169_M_IKVK_p.json" + }, + { + "id": "IKVR", + "name": "Virtual Reality für Klima und Energie", + "url": "allModules/56195_M_IKVR.json" + }, + { + "id": "IKVRp", + "name": "Virtual Reality für Klima und Energie (Projektarbeit)", + "url": "allModules/44181_M_IKVR_p.json" + }, + { + "id": "LLDIG", + "name": "Lernlabor \"Digitalisieren Hands-on\"", + "url": "allModules/41732_M_LLDIG.json" + }, + { + "id": "PmQm", + "name": "Projekt- und Qualitätsmanagement", + "url": "allModules/28231_M_PmQm.json" + }, + { + "id": "VwlTg", + "name": "Volkswirtschaft und Technikgeschichte", + "url": "allModules/42760_M_VwlTg.json" + }, + { + "id": "WI2", + "name": "Business Processes für Informatik", + "url": "allModules/57174_M_WI2.json" + } + ] + } +] diff --git a/cypress/fixtures/modules.json b/cypress/fixtures/modules.json new file mode 100644 index 00000000..6a8e8006 --- /dev/null +++ b/cypress/fixtures/modules.json @@ -0,0 +1,3893 @@ +[ + { + "id": "AADL", + "name": "Applied AI with Deep Learning", + "url": "allModules/57207_M_AADL.json", + "ects": 2, + "isDeactivated": false, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "AIAp", + "name": "AI Applications", + "url": "allModules/40870_M_AIAp.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "AIFo", + "WE1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "AIFo", + "name": "AI Foundations", + "url": "allModules/40866_M_AIFo.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "An1I", + "An2I", + "AutoSpr", + "OOP1", + "OOP2" + ], + "dependentModuleIds": [ + "AIAp", + "GenAI" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "AJwn", + "name": "Auf Jobsuche, was nun?", + "url": "allModules/57128_M_AJwn.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "AlgDat", + "name": "Algorithmen und Datenstrukturen", + "url": "allModules/38881_M_AlgDat.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "OOP1", + "OOP2" + ], + "dependentModuleIds": [ + "CPlA", + "ComGra", + "MsTe" + ], + "successorModuleId": null, + "predecessorModuleId": "AD2", + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "An1I", + "name": "Analysis 1 für Informatik", + "url": "allModules/28151_M_An1I.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "AIFo", + "An2I", + "ComGra", + "IntTra", + "KomFou1", + "PhAI" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "An2I", + "name": "Analysis 2 für Informatik", + "url": "allModules/28156_M_An2I.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "An1I" + ], + "dependentModuleIds": [ + "AIFo", + "IntTra", + "PhAI", + "WrStat" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "AppArch", + "name": "Application Architecture", + "url": "allModules/28236_M_AppArch.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "SE1" + ], + "dependentModuleIds": [ + "CldSol" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "AutPy", + "name": "Automatisierung mit Python", + "url": "allModules/38879_M_AutPy.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "GenAI", + "SEProj" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "AutoSpr", + "name": "Automaten und Sprachen", + "url": "allModules/24404_M_AutoSpr.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "AIFo", + "FP" + ], + "successorModuleId": null, + "predecessorModuleId": "Math2I", + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "BAI21", + "name": "Bachelor-Arbeit Informatik", + "url": "allModules/41626_M_BAI21.json", + "ects": 12, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [ + "SAI21" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "BAI14", + "isMandatory": true, + "categoriesForColoring": [ + "Inf", + "SaBa" + ] + }, + { + "id": "BlCh", + "name": "Blockchain", + "url": "allModules/39041_M_BlCh.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "DSy" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "ADSB", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "Bsys1", + "name": "Betriebssysteme 1", + "url": "allModules/39080_M_Bsys1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "Bsys2", + "CPl", + "CPlA", + "CoBau", + "DSy", + "ParProg", + "PlFSec", + "SecSW", + "SecSoW" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "Bsys2", + "name": "Betriebssysteme 2", + "url": "allModules/37903_M_Bsys2.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "Bsys1" + ], + "dependentModuleIds": [ + "CoBau" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "BuPro", + "name": "Business Processes für Informatik", + "url": "allModules/40825_M_BuPro.json", + "ects": 4, + "isDeactivated": true, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": "WI2", + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "gwr" + ] + }, + { + "id": "BuRe1", + "name": "Business und Recht 1", + "url": "allModules/20780_M_BuRe1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "BuRe2a" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "gwr" + ] + }, + { + "id": "BuRe2a", + "name": "Business und Recht 2 (a)", + "url": "allModules/45604_M_BuRe2a.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "BuRe1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "gwr" + ] + }, + { + "id": "CN1", + "name": "Computernetze 1", + "url": "allModules/39084_M_CN1.json", + "ects": 6, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "CN2", + "CldInf", + "CySec", + "IBN", + "NIoSec", + "PlFSec", + "SecSW", + "SecSoW" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "CN2", + "name": "Computernetze 2", + "url": "allModules/23311_M_CN2.json", + "ects": 6, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "CN1" + ], + "dependentModuleIds": [ + "CldInf", + "IBN", + "NIoSec", + "PlFSec" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "CPl", + "name": "C++", + "url": "allModules/24357_M_CPl.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "Bsys1", + "OOP1", + "OOP2" + ], + "dependentModuleIds": [ + "CPlA" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "CPlA", + "name": "C++ Advanced", + "url": "allModules/28684_M_CPlA.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "AlgDat", + "Bsys1", + "CPl", + "OOP1", + "OOP2" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "Chin1", + "name": "Chinesisch 1", + "url": "allModules/28063_M_Chin1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "Chinese2", + "name": "Chinesisch 2", + "url": "allModules/36024_M_Chinese2.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "CldInf", + "name": "Cloud Infrastructure", + "url": "allModules/29855_M_CldInf.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "CN1", + "CN2" + ], + "dependentModuleIds": [ + "CldOp" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "CldOp", + "name": "Cloud Operations", + "url": "allModules/55074_M_CldOp.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "CldInf" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "CldSol", + "name": "Cloud Solutions", + "url": "allModules/37167_M_CldSol.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "AppArch" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "Clou", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "CoBau", + "name": "Compilerbau", + "url": "allModules/40663_M_CoBau.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "Bsys1", + "Bsys2", + "OOP1", + "OOP2", + "SE2" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "ComEng1", + "name": "Computer Engineering 1", + "url": "allModules/25232_M_ComEng1.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "ComEng2" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "ComEng2", + "name": "Computer Engineering 2", + "url": "allModules/23345_M_ComEng2.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "ComEng1" + ], + "dependentModuleIds": [ + "EmbSys1" + ], + "successorModuleId": null, + "predecessorModuleId": "CompT2", + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "ComGra", + "name": "Computer Grafik", + "url": "allModules/43801_M_ComGra.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "AlgDat", + "An1I", + "OOP1", + "OOP2" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "CyDef", + "name": "Cyber Defense", + "url": "allModules/38551_M_CyDef.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "CySec", + "HackL", + "SecSW" + ], + "dependentModuleIds": [ + "IncResp" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "CySec", + "name": "Cyber Security Foundations", + "url": "allModules/36478_M_CySec.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "CN1" + ], + "dependentModuleIds": [ + "CyDef", + "IncResp", + "NIoSec", + "PlFSec", + "SecSW", + "SecSoW" + ], + "successorModuleId": null, + "predecessorModuleId": "InfSi1", + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "DL", + "name": "Deep Learning", + "url": "allModules/31834_M_DL.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "ML" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "DMI", + "name": "Diskrete Mathematik für Informatik", + "url": "allModules/24442_M_DMI.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "FP", + "FunProg", + "KomFou1" + ], + "successorModuleId": null, + "predecessorModuleId": "Math1I", + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "DSy", + "name": "Distributed Systems", + "url": "allModules/39054_M_DSy.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "Bsys1", + "SE1" + ], + "dependentModuleIds": [ + "BlCh" + ], + "successorModuleId": null, + "predecessorModuleId": "DS1", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "DatAna", + "name": "Data Analytics", + "url": "allModules/36034_M_DatAna.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "Dbs1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "InfSys", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "DatEng", + "name": "Data Engineering", + "url": "allModules/36038_M_DatEng.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "Dbs1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "Dbs2", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "Dbs1", + "name": "Datenbanksysteme 1", + "url": "allModules/39093_M_Dbs1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "DatAna", + "DatEng", + "MsTe" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "DigBusI", + "name": "Digital Business für Informatik", + "url": "allModules/40316_M_DigBusI.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "WI1", + "isMandatory": false, + "categoriesForColoring": [ + "gwr" + ] + }, + { + "id": "DigCod", + "name": "Digitale Codierungen", + "url": "allModules/38920_M_DigCod.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "ICTh", + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "DigDes", + "name": "Digital Design", + "url": "allModules/40680_M_DigDes.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "EmbSys1", + "name": "Embedded Systems 1", + "url": "allModules/22062_M_EmbSys1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "ComEng2" + ], + "dependentModuleIds": [ + "EmbSys2" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "EmbSys2", + "name": "Embedded Systems 2", + "url": "allModules/22068_M_EmbSys2.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "EmbSys1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "EnglHTw", + "name": "English: How Things work", + "url": "allModules/56496_M_EnglHTw.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "EnglScience", + "name": "English: The World of Science", + "url": "allModules/56504_M_EnglScience.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "ExEv", + "name": "Experimentieren und Evaluieren für Informatik", + "url": "allModules/24381_M_ExEv.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "FKIA", + "name": "Führungskommunikation im internationalen Arbeitsmarkt", + "url": "allModules/24427_M_FKIA.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "FP", + "name": "Functional Programming", + "url": "allModules/39143_M_FP.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "AutoSpr", + "DMI", + "OOP1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "FunProg", + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "FranzKomm", + "name": "Französisch Kommunikation", + "url": "allModules/36421_M_FranzKomm.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "FranzKomm2" + ], + "successorModuleId": null, + "predecessorModuleId": "Franz1", + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "FranzKomm2", + "name": "Französisch Kommunikation 2", + "url": "allModules/38868_M_FranzKomm2.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "FranzKomm" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "FuVar", + "name": "Funktionen mehrerer Variablen", + "url": "allModules/10942_M_FuVar.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "FunProg", + "name": "Funktionale Programmierung", + "url": "allModules/38928_M_FunProg.json", + "ects": 4, + "isDeactivated": true, + "term": "", + "recommendedModuleIds": [ + "DMI" + ], + "dependentModuleIds": [], + "successorModuleId": "FP", + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "GenAI", + "name": "Generative AI", + "url": "allModules/43809_M_GenAI.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "AIFo", + "AutPy" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "HackL", + "name": "Hacking Lab", + "url": "allModules/36457_M_HackL.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "CyDef", + "IncResp" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "IBN", + "name": "Intent-Based Networking", + "url": "allModules/57056_M_IBN.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "CN1", + "CN2" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "SDW", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "IKAA", + "name": "Applied AI", + "url": "allModules/44202_M_IKAA.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKAAp", + "name": "Applied AI (Projektarbeit)", + "url": "allModules/44196_M_IKAA_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKAG", + "name": "Alternde Gesellschaften", + "url": "allModules/44020_M_IKAG.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKAK", + "name": "Gesundes Altern mit Hilfe von künstlicher Intelligenz", + "url": "allModules/44064_M_IKAK.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKAKp", + "name": "Gesundes Altern mit Hilfe von künstlicher Intelligenz (Projektarbeit)", + "url": "allModules/44067_M_IKAK_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKBD", + "name": "Behavioral Design", + "url": "allModules/55066_M_IKBD.json", + "ects": 2, + "isDeactivated": true, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "IKBH", + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKBF", + "name": "Selbststeuerung im Beruf", + "url": "allModules/56707_M_IKBF.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKBH", + "name": "Behavioral Design", + "url": "allModules/56919_M_IKBH.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": "IKBD", + "predecessorModuleId": "IKBD", + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKBW", + "name": "Blickwechsel", + "url": "allModules/44040_M_IKBW.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKCC", + "name": "Co-Creation und Inclusive Design Methoden", + "url": "allModules/56710_M_IKCC.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKCCp", + "name": "Co-Creation und Inclusive Design Methoden (Projektarbeit)", + "url": "allModules/56713_M_IKCC_p.json", + "ects": 3, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKCG", + "name": "Corporate Governance and Sustainability", + "url": "allModules/56716_M_IKCG.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKDH", + "name": "Lernlabor «Digitalisieren Hands-on»", + "url": "allModules/44235_M_IKDH.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKDHp", + "name": "Lernlabor «Digitalisieren Hands-on» (Projektarbeit)", + "url": "allModules/44232_M_IKDH_p.json", + "ects": 4, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKDK", + "name": "Demokratie im Zeitalter von KI", + "url": "allModules/44043_M_IKDK.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKDKp", + "name": "Demokratie im Zeitalter von KI (Projektarbeit)", + "url": "allModules/44046_M_IKDK_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKDL", + "name": "Digitalisieren mit Low Code: Einen AI Chatbot selber bauen", + "url": "allModules/44250_M_IKDL.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKDLp", + "name": "Digitalisieren mit Low Code: Einen AI Chatbot selber bauen (Projektarbeit)", + "url": "allModules/44247_M_IKDL_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKDM_A", + "name": "Dream Team - Mentoringprogramm für die nächste Generation Teil A", + "url": "allModules/44241_M_IKDM_A.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "IKDM_B" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKDM_B", + "name": "Dream Team - Mentoringprogramm für die nächste Generation Teil B", + "url": "allModules/44244_M_IKDM_B.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "IKDM_A" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKEI", + "name": "Einsamkeit erforschen - wirtschaftliche, gesellschaftliche und private Dimensionen", + "url": "allModules/56720_M_IKEI.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKEIp", + "name": "Einsamkeit erforschen - wirtschaftliche, gesellschaftliche und private Dimensionen (Projektarbeit)", + "url": "allModules/56731_M_IKEI_p.json", + "ects": 3, + "isDeactivated": false, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKEK", + "name": "Ethik & KI", + "url": "allModules/44049_M_IKEK.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKEKp", + "name": "Ethik & KI (Projektarbeit)", + "url": "allModules/44052_M_IKEK_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKFD", + "name": "Applied Frugal Design: Einfach gestalten, gesund leben", + "url": "allModules/56734_M_IKFD.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKFDp", + "name": "Applied Frugal Design: Einfach gestalten, gesund leben (Projektarbeit)", + "url": "allModules/56737_M_IKFD_p.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKFL", + "name": "Future Life Design: Successfully shaping your own life path", + "url": "allModules/56740_M_IKFL.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKFLp", + "name": "Future Life Design: Successfully shaping your own life path (Projektarbeit)", + "url": "allModules/56743_M_IKFL_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKGA", + "name": "Generative AI in der Planung", + "url": "allModules/44211_M_IKGA.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKGAp", + "name": "Generative AI in der Planung (Projektarbeit)", + "url": "allModules/44214_M_IKGA_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKGE", + "name": "Klimagerechte Stadt- und Gemeindeentwicklung", + "url": "allModules/44088_M_IKGE.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKGEp", + "name": "Klimagerechte Stadt- und Gemeindeentwicklung (Projektarbeit)", + "url": "allModules/44091_M_IKGE_p.json", + "ects": 3, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKGL", + "name": "Gesund leben und Langlebigkeit", + "url": "allModules/44061_M_IKGL.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKGS", + "name": "Knowhow und Technologien für nachhaltige Entwicklung im globalen Süden", + "url": "allModules/44190_M_IKGS.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKGSp", + "name": "Knowhow und Technologien für nachhaltige Entwicklung im globalen Süden (Projektarbeit)", + "url": "allModules/56922_M_IKGS_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKIE", + "name": "Interdisziplinär entwickeln - gerüstet für die technikbasierte Arbeitswelt", + "url": "allModules/44079_M_IKIE.json", + "ects": 2, + "isDeactivated": false, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKII", + "name": "Ideen Inkubator Klimawende", + "url": "allModules/44073_M_IKII.json", + "ects": 2, + "isDeactivated": false, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKIIp", + "name": "Ideen Inkubator Klimawende (Projektarbeit)", + "url": "allModules/44076_M_IKII_p.json", + "ects": 3, + "isDeactivated": false, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKIS", + "name": "International Summer School for Sustainability", + "url": "allModules/56789_M_IKIS.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKISp", + "name": "International Summer School for Sustainability (Projektarbeit)", + "url": "allModules/56866_M_IKIS_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKKA", + "name": "Nachhaltigkeit und Klimaschutz angewandt", + "url": "allModules/44223_M_IKKA.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKKK", + "name": "Kommunale Klimawende", + "url": "allModules/44184_M_IKKK.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKKKp", + "name": "Kommunale Klimawende (Projektarbeit)", + "url": "allModules/44187_M_IKKK_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKKL", + "name": "Circular Economy", + "url": "allModules/44094_M_IKKL.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKKLp", + "name": "Circular Economy (Projektarbeit)", + "url": "allModules/44097_M_IKKL_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKKP", + "name": "Klimakrise: Kann die Politik die Welt noch retten?", + "url": "allModules/44226_M_IKKP.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKKPp", + "name": "Klimakrise: Kann die Politik die Welt noch retten? (Projektarbeit)", + "url": "allModules/44229_M_IKKP_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKLD", + "name": "Future Life Design: Den eigenen Lebensweg erfolgreich gestalten", + "url": "allModules/56925_M_IKLD.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKLDp", + "name": "Future Life Design: Den eigenen Lebensweg erfolgreich gestalten (Projektarbeit)", + "url": "allModules/56928_M_IKLD_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKLE", + "name": "IZM-Projekt", + "url": "allModules/44082_M_IKLE.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKLEp", + "name": "IZM-Projekt (Projektarbeit)", + "url": "allModules/44085_M_IKLE_p.json", + "ects": 4, + "isDeactivated": false, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKLF", + "name": "Lernfähigkeit und Gedächtnis", + "url": "allModules/44100_M_IKLF.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKLK", + "name": "Lösungsorientierte Kommunikation für dynamische Arbeitswelten", + "url": "allModules/44103_M_IKLK.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKME", + "name": "Messbar gesund", + "url": "allModules/44115_M_IKME.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKMEp", + "name": "Messbar gesund (Projektarbeit)", + "url": "allModules/56875_M_IKME_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKMI", + "name": "Medien- und Informationskompetenz in Zeiten von KI", + "url": "allModules/44109_M_IKMI.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKMIp", + "name": "Medien- und Informationskompetenz in Zeiten von KI (Projektarbeit)", + "url": "allModules/44112_M_IKMI_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKMO", + "name": "Gemeinden & Städte von morgen. So gelingt nachhaltige Gemeindeentwicklung", + "url": "allModules/44055_M_IKMO.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKMOp", + "name": "Gemeinden & Städte von morgen. So gelingt nachhaltige Gemeindeentwicklung (Projektarbeit)", + "url": "allModules/44058_M_IKMO_p.json", + "ects": 3, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNB", + "name": "Wasser und Klima: Nachhaltige Wasserbewirtschaftung auf Gemeindeebene", + "url": "allModules/44199_M_IKNB.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNBp", + "name": "Wasser und Klima: Nachhaltige Wasserbewirtschaftung auf Gemeindeebene (Projektarbeit)", + "url": "allModules/57170_M_IKNB_p.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNE", + "name": "Nachhaltige Ernährung für Körper, Geist und Klima", + "url": "allModules/56792_M_IKNE.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNEp", + "name": "Nachhaltige Ernährung für Körper, Geist und Klima (Projektarbeit)", + "url": "allModules/56795_M_IKNE_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNG", + "name": "Neue Narrative für eine nachhaltige Gesellschaft", + "url": "allModules/44121_M_IKNG.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNGp", + "name": "Neue Narrative für eine nachhaltige Gesellschaft (Projektarbeit)", + "url": "allModules/44124_M_IKNG_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNK", + "name": "New Work & KI", + "url": "allModules/44127_M_IKNK.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNKp", + "name": "New Work & KI (Projektarbeit)", + "url": "allModules/44130_M_IKNK_p.json", + "ects": 3, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNN", + "name": "Hackathon zu \"Netto-null in Gebäuden und Verkehr\"", + "url": "allModules/44070_M_IKNN.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNW", + "name": "Die Nachhaltigkeitswoche: Eventfabrik und Zukunftsworkshops", + "url": "allModules/56802_M_IKNW.json", + "ects": 2, + "isDeactivated": false, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKNWp", + "name": "Die Nachhaltigkeitswoche: Eventfabrik und Zukunftsworkshops (Projektarbeit)", + "url": "allModules/56804_M_IKNW_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKOW", + "name": "Offgrid Wasser und Sonne: Hands on", + "url": "allModules/56805_M_IKOW.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKOWp", + "name": "Offgrid Wasser und Sonne: Hands on (Projektarbeit)", + "url": "allModules/56806_M_IKOW_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKPE", + "name": "Psychologisches Empowerment in Veränderungs- und Wandlungsprozessen", + "url": "allModules/44139_M_IKPE.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKPH", + "name": "Prototyping für Startup-Ideen beim Hackathon", + "url": "allModules/56807_M_IKPH.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKPS", + "name": "Prototyping für Startup-Ideen", + "url": "allModules/44133_M_IKPS.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKPSp", + "name": "Prototyping für Startup-Ideen (Projektarbeit)", + "url": "allModules/44136_M_IKPS_p.json", + "ects": 4, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKRE", + "name": "Resilienz: Schlüsselkompetenz für innere Stärke", + "url": "allModules/44142_M_IKRE.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSH", + "name": "Social and Human Robotic", + "url": "allModules/44145_M_IKSH.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSM", + "name": "Strategisches Management von Naturgefahren", + "url": "allModules/44205_M_IKSM.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSMp", + "name": "Strategisches Management von Naturgefahren (Projektarbeit)", + "url": "allModules/44208_M_IKSM_p.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSS", + "name": "Ski-Nation Schweiz", + "url": "allModules/44220_M_IKSS.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSSp", + "name": "Ski-Nation Schweiz (Projektarbeit)", + "url": "allModules/44217_M_IKSS_p.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKST", + "name": "Starkes Ich – Starkes Team", + "url": "allModules/44154_M_IKST.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSTp", + "name": "Starkes Ich – Starkes Team (Projektarbeit)", + "url": "allModules/44157_M_IKST_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSU", + "name": "Startup - Weg zur Gründung", + "url": "allModules/44253_M_IKSU.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSUp", + "name": "Startup - Weg zur Gründung (Projektarbeit)", + "url": "allModules/44256_M_IKSU_p.json", + "ects": 4, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSW", + "name": "Stadt der kurzen Wege", + "url": "allModules/44148_M_IKSW.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKSWp", + "name": "Stadt der kurzen Wege (Projektarbeit)", + "url": "allModules/44151_M_IKSW_p.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKTE", + "name": "The Internet of Everything", + "url": "allModules/44340_M_IKTE.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKTEp", + "name": "The Internet of Everything (Projektarbeit)", + "url": "allModules/44343_M_IKTE_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKTSV2", + "name": "IKTS_Vorlage 2ECTS", + "url": "allModules/43909_M_IKTSV2.json", + "ects": 2, + "isDeactivated": true, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKTSV3", + "name": "IKTS_Vorlage 3ECTS", + "url": "allModules/43910_M_IKTSV3.json", + "ects": 3, + "isDeactivated": true, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKTSV4", + "name": "IKTS_Vorlage 4ECTS", + "url": "allModules/43911_M_IKTSV4.json", + "ects": 4, + "isDeactivated": true, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKUG", + "name": "Umwelt und Gesundheit", + "url": "allModules/44160_M_IKUG.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKUGp", + "name": "Umwelt und Gesundheit (Projektarbeit)", + "url": "allModules/44163_M_IKUG_p.json", + "ects": 3, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKVA", + "name": "Virtual Reality für gesundes Leben und Altern", + "url": "allModules/44172_M_IKVA.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKVAp", + "name": "Virtual Reality für gesundes Leben und Altern (Projektarbeit)", + "url": "allModules/44175_M_IKVA_p.json", + "ects": 3, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKVK", + "name": "Vielfalt, Chancengleichheit und Inklusion im KI-Zeitalter", + "url": "allModules/44166_M_IKVK.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKVKp", + "name": "Vielfalt, Chancengleichheit und Inklusion im KI-Zeitalter (Projektarbeit)", + "url": "allModules/44169_M_IKVK_p.json", + "ects": 3, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKVR", + "name": "Virtual Reality für Klima und Energie", + "url": "allModules/56195_M_IKVR.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IKVRp", + "name": "Virtual Reality für Klima und Energie (Projektarbeit)", + "url": "allModules/44181_M_IKVR_p.json", + "ects": 3, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "GWRIKTS" + ] + }, + { + "id": "IPCV1", + "name": "Image Processing and Computer Vision 1", + "url": "allModules/36264_M_IPCV1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "DigPro1Engl", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "IPCV2", + "name": "Image Processing and Computer Vision 2", + "url": "allModules/36269_M_IPCV2.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "DigPro2Engl", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "IncResp", + "name": "Incident Response", + "url": "allModules/36473_M_IncResp.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "CyDef", + "CySec", + "HackL", + "SecSoW" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "Inno2", + "name": "Innovation 2", + "url": "allModules/20110_M_Inno2.json", + "ects": 2, + "isDeactivated": true, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": "Inno_2", + "predecessorModuleId": "StraProPla_e", + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "Inno_2", + "name": "Innovation 2: Operatives Innovationsmanagement", + "url": "allModules/43299_M_Inno_2.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "Inno2", + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "IntTra", + "name": "Integraltransformationen", + "url": "allModules/15367_M_IntTra.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "An1I", + "An2I", + "KomFou1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "Ital1", + "name": "Italienisch 1", + "url": "allModules/36015_M_Ital1.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "Ital2" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "Ital2", + "name": "Italienisch 2", + "url": "allModules/36011_M_Ital2.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "Ital1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "Jap1", + "name": "Japanisch 1", + "url": "allModules/28088_M_Jap1.json", + "ects": 2, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "Jap2" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "Jap2", + "name": "Japanisch 2", + "url": "allModules/28093_M_Jap2.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "Jap1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "KomFou1", + "name": "Komplexe Zahlen und Fourierreihen", + "url": "allModules/15546_M_KomFou1.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "An1I", + "DMI" + ], + "dependentModuleIds": [ + "IntTra" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "KommIng2", + "name": "Kommunikation 2 für IngenieurInnen (Teamkommunikation)", + "url": "allModules/37397_M_KommIng2.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "LLDIG", + "name": "Lernlabor \"Digitalisieren Hands-on\"", + "url": "allModules/41732_M_LLDIG.json", + "ects": 4, + "isDeactivated": true, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "gwr" + ] + }, + { + "id": "MGE", + "name": "Mobile and GUI Engineering", + "url": "allModules/28254_M_MGE.json", + "ects": 4, + "isDeactivated": true, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "UX" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "ML", + "name": "Statistical Machine Learning", + "url": "allModules/31838_M_ML.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "DL" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "MOSIM", + "name": "Modellbildung und Simulation", + "url": "allModules/40139_M_MOSIM.json", + "ects": 4, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "SIMUL", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "MathFML", + "name": "Mathematical Foundations for Machine Learning", + "url": "allModules/31614_M_MathFML.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "MathSem1", + "name": "Mathematisches Seminar 1", + "url": "allModules/45131_M_MathSem1.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "MathSem2" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "MathSem2", + "name": "Mathematisches Seminar 2", + "url": "allModules/24089_M_MathSem2.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "MathSem1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "MsTe", + "name": ".Net Technologien", + "url": "allModules/37247_M_MsTe.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "AlgDat", + "Dbs1", + "OOP1", + "OOP2" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "NIoSec", + "name": "Network and IoT Security", + "url": "allModules/42231_M_NIoSec.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "CN1", + "CN2", + "CySec" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "NISec", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "NetAut", + "name": "Network Automation", + "url": "allModules/56252_M_NetAut.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "NwP", + "name": "Naturwissenschaftliches Praktikum", + "url": "allModules/45138_M_NwP.json", + "ects": 2, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [ + "Ph1Mech" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "OOP1", + "name": "Objektorientierte Programmierung 1", + "url": "allModules/43813_M_OOP1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "AIFo", + "AlgDat", + "CPl", + "CPlA", + "CoBau", + "ComGra", + "FP", + "MsTe", + "OOP2", + "ParProg", + "SE1", + "SEP1", + "SEProj", + "WE1" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "OOP2", + "name": "Objektorientierte Programmierung 2", + "url": "allModules/38910_M_OOP2.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "OOP1" + ], + "dependentModuleIds": [ + "AIFo", + "AlgDat", + "CPl", + "CPlA", + "CoBau", + "ComGra", + "MsTe", + "ParProg", + "SE1", + "SEP1", + "SEProj", + "WE1" + ], + "successorModuleId": null, + "predecessorModuleId": "AD1", + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "PF", + "name": "Patterns und Frameworks", + "url": "allModules/39045_M_PF.json", + "ects": 4, + "isDeactivated": true, + "term": "HS", + "recommendedModuleIds": [ + "SE1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "APF", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "PWWD", + "name": "Praxiswoche Webdesign", + "url": "allModules/57180_M_PWWD.json", + "ects": 2, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "ParProg", + "name": "Parallele Programmierung", + "url": "allModules/41462_M_ParProg.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "Bsys1", + "OOP1", + "OOP2" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "Ph1Mech", + "name": "Physik 1 - Mechanik", + "url": "allModules/45143_M_Ph1Mech.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "NwP", + "Ph2HAT", + "Ph3SWO" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "Ph2HAT", + "name": "Physik 2 - Hydro-, Aero- und Thermodynamik", + "url": "allModules/22021_M_Ph2HAT.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "Ph1Mech" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "Ph3SWO", + "name": "Physik 3 - Schwingungen und Wellen, Optik", + "url": "allModules/45153_M_Ph3SWO.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "Ph1Mech" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "PhAI", + "name": "Physik Anwendungen für Informatik", + "url": "allModules/43544_M_PhAI.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "An1I", + "An2I" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "PlFSec", + "name": "Platform Security", + "url": "allModules/42227_M_PlFSec.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "Bsys1", + "CN1", + "CN2", + "CySec", + "SecSW" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "PFSec", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "PmQm", + "name": "Projekt- und Qualitätsmanagement", + "url": "allModules/28231_M_PmQm.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "gwr" + ] + }, + { + "id": "Python", + "name": "Python", + "url": "allModules/41489_M_Python.json", + "ects": 3, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "RKI", + "name": "Rhetorische Kommunikation für IngenieurInnen", + "url": "allModules/25661_M_RKI.json", + "ects": 4, + "isDeactivated": true, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": "RheKI", + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "RheKI", + "name": "Rhetorische Kommunikation für IngenieurInnen", + "url": "allModules/31909_M_RheKI.json", + "ects": 4, + "isDeactivated": true, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "RKI", + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "RheKoI", + "name": "Rhetorische Kommunikation für IngenieurInnen", + "url": "allModules/43277_M_RheKoI.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "RheKI", + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "SAI21", + "name": "Studienarbeit Informatik", + "url": "allModules/40906_M_SAI21.json", + "ects": 8, + "isDeactivated": false, + "term": "both", + "recommendedModuleIds": [ + "SEProj" + ], + "dependentModuleIds": [ + "BAI21" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": true, + "categoriesForColoring": [ + "Inf", + "SaBa" + ] + }, + { + "id": "SE1", + "name": "Software-Engineering 1", + "url": "allModules/37893_M_SE1.json", + "ects": 4, + "isDeactivated": true, + "term": "", + "recommendedModuleIds": [ + "OOP1", + "OOP2" + ], + "dependentModuleIds": [ + "AppArch", + "DSy", + "PF", + "SE2", + "UX" + ], + "successorModuleId": "SEP2", + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "EP", + "Inf" + ] + }, + { + "id": "SE2", + "name": "Software-Engineering 2", + "url": "allModules/37191_M_SE2.json", + "ects": 4, + "isDeactivated": true, + "term": "FS", + "recommendedModuleIds": [ + "SE1" + ], + "dependentModuleIds": [ + "CoBau" + ], + "successorModuleId": "SEP2", + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "EP", + "Inf" + ] + }, + { + "id": "SEP1", + "name": "SE Practices 1", + "url": "allModules/39203_M_SEP1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "OOP1", + "OOP2" + ], + "dependentModuleIds": [ + "SEP2", + "SEProj" + ], + "successorModuleId": null, + "predecessorModuleId": "SE1", + "isMandatory": true, + "categoriesForColoring": [ + "EP", + "Inf" + ] + }, + { + "id": "SEP2", + "name": "SE Practices 2", + "url": "allModules/57233_M_SEP2.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "SEP1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "SE2", + "isMandatory": true, + "categoriesForColoring": [ + "EP", + "Inf" + ] + }, + { + "id": "SEProj", + "name": "SE Project", + "url": "allModules/43712_M_SEProj.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "AutPy", + "OOP1", + "OOP2", + "SEP1" + ], + "dependentModuleIds": [ + "SAI21" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": true, + "categoriesForColoring": [ + "EP", + "Inf" + ] + }, + { + "id": "SModSim", + "name": "System Modeling and Simulation", + "url": "allModules/38938_M_SModSim.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "SPPRODUCTS", + "name": "SP-Smart Products", + "url": "allModules/35903_M_SPPRODUCTS.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "SecSW", + "name": "Secure Software", + "url": "allModules/36488_M_SecSW.json", + "ects": 4, + "isDeactivated": true, + "term": "FS", + "recommendedModuleIds": [ + "Bsys1", + "CN1", + "CySec" + ], + "dependentModuleIds": [ + "CyDef", + "PlFSec" + ], + "successorModuleId": "SecSoW", + "predecessorModuleId": "InfSi3", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "SecSoW", + "name": "Secure Software", + "url": "allModules/40311_M_SecSoW.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "Bsys1", + "CN1", + "CySec" + ], + "dependentModuleIds": [ + "IncResp" + ], + "successorModuleId": null, + "predecessorModuleId": "SecSW", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "SelTec", + "name": "English: Selling Technology", + "url": "allModules/45661_M_SelTec.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "ServDev", + "name": "Service Development (ITIL)", + "url": "allModules/37171_M_ServDev.json", + "ects": 4, + "isDeactivated": true, + "term": "", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "Span1", + "name": "Spanisch 1", + "url": "allModules/28097_M_Span1.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [ + "Span2" + ], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "Span2", + "name": "Spanisch 2", + "url": "allModules/44428_M_Span2.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "Span1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "TecBEC", + "name": "English Beyond Borders: Navigating Academic & Professional Success with IELTS", + "url": "allModules/55597_M_TecBEC.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "KomEng" + ] + }, + { + "id": "UIP", + "name": "UI Patterns and Frameworks", + "url": "allModules/56946_M_UIP.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "UX", + "name": "User Experience", + "url": "allModules/41106_M_UX.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "MGE", + "SE1" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "HCD", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "VwlTg", + "name": "Volkswirtschaft und Technikgeschichte", + "url": "allModules/42760_M_VwlTg.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "gwr" + ] + }, + { + "id": "WE1", + "name": "Web Engineering 1", + "url": "allModules/38891_M_WE1.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "OOP1", + "OOP2" + ], + "dependentModuleIds": [ + "AIAp", + "WE2" + ], + "successorModuleId": null, + "predecessorModuleId": "WED1", + "isMandatory": false, + "categoriesForColoring": [ + "Inf", + "RA" + ] + }, + { + "id": "WE2", + "name": "Web Engineering 2", + "url": "allModules/38945_M_WE2.json", + "ects": 4, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [ + "WE1" + ], + "dependentModuleIds": [ + "WE3" + ], + "successorModuleId": null, + "predecessorModuleId": "WED2", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "WE3", + "name": "Web Engineering 3", + "url": "allModules/38901_M_WE3.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "WE2" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "WI2", + "name": "Business Processes für Informatik", + "url": "allModules/57174_M_WI2.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "BuPro", + "isMandatory": false, + "categoriesForColoring": [ + "gwr" + ] + }, + { + "id": "WIoT", + "name": "Wireless and IoT", + "url": "allModules/37157_M_WIoT.json", + "ects": 4, + "isDeactivated": true, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": "WsoT", + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + }, + { + "id": "WSLS", + "name": "Workshop \"Lern-Support an der OST\"", + "url": "allModules/32766_M_WSLS.json", + "ects": 0, + "isDeactivated": false, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [] + }, + { + "id": "WrStat", + "name": "Wahrscheinlichkeitsrechnung und Statistik", + "url": "allModules/24489_M_WrStat.json", + "ects": 4, + "isDeactivated": false, + "term": "HS", + "recommendedModuleIds": [ + "An2I" + ], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": null, + "isMandatory": false, + "categoriesForColoring": [ + "MaPh" + ] + }, + { + "id": "WsoT", + "name": "Wireless and IoT", + "url": "allModules/40038_M_WsoT.json", + "ects": 4, + "isDeactivated": true, + "term": "FS", + "recommendedModuleIds": [], + "dependentModuleIds": [], + "successorModuleId": null, + "predecessorModuleId": "WIoT", + "isMandatory": false, + "categoriesForColoring": [ + "Auf", + "Inf" + ] + } +] diff --git a/package-lock.json b/package-lock.json index c970f158..c4d07297 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,10 @@ "@fortawesome/vue-fontawesome": "^3.0.5", "@headlessui/vue": "^1.7.23", "@tailwindcss/vite": "^4.0.0", + "@vue-flow/core": "^1.42.3", "bulma": "^0.9.3", + "dagre": "^0.8.5", + "elkjs": "^0.10.0", "tailwindcss": "^4.0.0", "vue": "^3.2.47", "vue-router": "^4.1.6", @@ -34,7 +37,6 @@ "@vue/tsconfig": "^0.4.0", "autoprefixer": "^10.4.17", "cypress": "^13.14.2", - "cypress-real-events": "^1.14.0", "eslint": "^8.44.0", "eslint-plugin-vue": "^9.15.1", "typescript": "^5.1.6", @@ -1642,14 +1644,14 @@ } }, "node_modules/@clerk/backend": { - "version": "1.29.1", - "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-1.29.1.tgz", - "integrity": "sha512-QMIKTGLJi+hUeEfV1E7Kqe+RSey72BcuMij25HCoBLt1PZVlcvKb9Cf9QM/zfZEFWaTGZk7xSoV42DRut81CyQ==", + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-1.32.1.tgz", + "integrity": "sha512-Y7Txq7L3JPilb4kreHpp+3z4HUta+A2LdcurayoUEQyIzBH93AXnWnuRX1EFgSaQ6THsUq5IwmhemETLitNdKg==", "dev": true, "license": "MIT", "dependencies": { - "@clerk/shared": "^3.7.2", - "@clerk/types": "^4.54.2", + "@clerk/shared": "^3.9.0", + "@clerk/types": "^4.58.1", "cookie": "1.0.2", "snakecase-keys": "8.0.1", "tslib": "2.8.1" @@ -1667,17 +1669,17 @@ } }, "node_modules/@clerk/shared": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-3.7.2.tgz", - "integrity": "sha512-gx0qSf1M0QPwoieTytMKZmV6rNfv/849bHpO+hXB3TbuLaZ8DTIG95pIa37C4LBHGgFO1qcyRydwoyAC5skrnQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-3.9.0.tgz", + "integrity": "sha512-M+2IwE8DUof7RAjo0iCNlr4pRuXo5g8rDvk7Q1L9xVFSh7N9aA87BX1ctmUbus/BKrCSDLRiYQ6V0uGATg9iNQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@clerk/types": "^4.54.2", + "@clerk/types": "^4.58.1", "dequal": "2.0.3", "glob-to-regexp": "0.4.1", "js-cookie": "3.0.5", - "std-env": "^3.8.1", + "std-env": "^3.9.0", "swr": "^2.3.3" }, "engines": { @@ -1697,15 +1699,15 @@ } }, "node_modules/@clerk/testing": { - "version": "1.4.41", - "resolved": "https://registry.npmjs.org/@clerk/testing/-/testing-1.4.41.tgz", - "integrity": "sha512-BvuxYLUcchdSGjYA22oKeWW3kqKz6j1DXUaESQq22yeXsWLaFJ6kKk71SZN4PDY6v4ZsLfEnSOPkVOA/T8qzFw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@clerk/testing/-/testing-1.7.0.tgz", + "integrity": "sha512-gtkiKhvwBGhJi21Crg/LG0cq/oL4nInpOhr7wHxES23ivpXDe8wEvNGHE8W9XhOqoNhNBEoWSI0dUZhgGuYI9g==", "dev": true, "license": "MIT", "dependencies": { - "@clerk/backend": "^1.29.1", - "@clerk/shared": "^3.7.2", - "@clerk/types": "^4.54.2", + "@clerk/backend": "^1.32.1", + "@clerk/shared": "^3.9.0", + "@clerk/types": "^4.58.1", "dotenv": "16.4.7" }, "engines": { @@ -1725,9 +1727,9 @@ } }, "node_modules/@clerk/types": { - "version": "4.54.2", - "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.54.2.tgz", - "integrity": "sha512-9z2odfkK58b8aa9GM6G5CmDefXKoGE8UG8f9cDp//Z4qYMqq2/uPHzDFYawJMu1Da2sUwgNeXEFqoaatXaBoXA==", + "version": "4.58.1", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.58.1.tgz", + "integrity": "sha512-bs1jQF4Nxw4a34q8TZEqY2Jyuj8kcMgYHUDCP060XkdvKWUqbQZW7Hb3YBrxTqLFLawku9cWpgP3/41Os1584g==", "license": "MIT", "dependencies": { "csstype": "3.1.3" @@ -1736,12 +1738,6 @@ "node": ">=18.17.0" } }, - "node_modules/@clerk/types/node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, "node_modules/@clerk/vue": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/@clerk/vue/-/vue-1.6.3.tgz", @@ -2801,6 +2797,16 @@ "node": ">=6" } }, + "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, "node_modules/@tailwindcss/node": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.0.tgz", @@ -3094,6 +3100,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "license": "MIT" + }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", @@ -3358,50 +3370,69 @@ "vscode-uri": "^3.0.8" } }, + "node_modules/@vue-flow/core": { + "version": "1.42.3", + "resolved": "https://registry.npmjs.org/@vue-flow/core/-/core-1.42.3.tgz", + "integrity": "sha512-ou7YUsqXyjI0GFj2psZnFv0vHRkYNpgm8L26jDoKf9py8E04n4nEGFIHBr19/6Ad6ArDbNNwVGmgzI2D/94D4A==", + "license": "MIT", + "dependencies": { + "@vueuse/core": "^10.5.0", + "d3-drag": "^3.0.0", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + }, + "peerDependencies": { + "vue": "^3.3.0" + } + }, "node_modules/@vue/compiler-core": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", - "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.47", + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map": "^0.6.1" + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", - "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.2.47", - "@vue/shared": "3.2.47" + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", - "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.47", - "@vue/compiler-dom": "3.2.47", - "@vue/compiler-ssr": "3.2.47", - "@vue/reactivity-transform": "3.2.47", - "@vue/shared": "3.2.47", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", - "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.2.47", - "@vue/shared": "3.2.47" + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/compiler-vue2": { @@ -3463,35 +3494,6 @@ } } }, - "node_modules/@vue/language-core/node_modules/@vue/compiler-core": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.34.tgz", - "integrity": "sha512-Z0izUf32+wAnQewjHu+pQf1yw00EGOmevl1kE+ljjjMe7oEfpQ+BI3/JNK7yMB4IrUsqLDmPecUrpj3mCP+yJQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.34", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/language-core/node_modules/@vue/compiler-dom": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.34.tgz", - "integrity": "sha512-3PUOTS1h5cskdOJMExCu2TInXuM0j60DRPpSCJDqOCupCfUZCJoyQmKtRmA8EgDNZ5kcEE7vketamRZfrEuVDw==", - "dev": true, - "dependencies": { - "@vue/compiler-core": "3.4.34", - "@vue/shared": "3.4.34" - } - }, - "node_modules/@vue/language-core/node_modules/@vue/shared": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.34.tgz", - "integrity": "sha512-x5LmiRLpRsd9KTjAB8MPKf0CDPMcuItjP0gbNqFCIgL1I8iYp4zglhj9w9FPCdIbHG2M91RVeIbArFfFTz9I3A==", - "dev": true - }, "node_modules/@vue/language-core/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -3517,60 +3519,54 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", - "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", - "dependencies": { - "@vue/shared": "3.2.47" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", - "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "license": "MIT", "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.47", - "@vue/shared": "3.2.47", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-core": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz", - "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "license": "MIT", "dependencies": { - "@vue/reactivity": "3.2.47", - "@vue/shared": "3.2.47" + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-dom": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", - "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "license": "MIT", "dependencies": { - "@vue/runtime-core": "3.2.47", - "@vue/shared": "3.2.47", - "csstype": "^2.6.8" + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz", - "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.2.47", - "@vue/shared": "3.2.47" + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" }, "peerDependencies": { - "vue": "3.2.47" + "vue": "3.5.13" } }, "node_modules/@vue/shared": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", - "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==" + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" }, "node_modules/@vue/tsconfig": { "version": "0.4.0", @@ -3578,6 +3574,94 @@ "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", "dev": true }, + "node_modules/@vueuse/core": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.11.1.tgz", + "integrity": "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.11.1", + "@vueuse/shared": "10.11.1", + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.11.1.tgz", + "integrity": "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.11.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.11.1.tgz", + "integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==", + "license": "MIT", + "dependencies": { + "vue-demi": ">=0.14.8" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -4561,9 +4645,10 @@ } }, "node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/cypress": { "version": "13.17.0", @@ -4624,16 +4709,6 @@ "node": "^16.0.0 || ^18.0.0 || >=20.0.0" } }, - "node_modules/cypress-real-events": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/cypress-real-events/-/cypress-real-events-1.14.0.tgz", - "integrity": "sha512-XmI8y3OZLh6cjRroPalzzS++iv+pGCaD9G9kfIbtspgv7GVsDt30dkZvSXfgZb4rAN+3pOkMVB7e0j4oXydW7Q==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "cypress": "^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x || ^14.x" - } - }, "node_modules/cypress/node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -4660,6 +4735,121 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "license": "MIT", + "dependencies": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -4897,6 +5087,12 @@ "dev": true, "license": "ISC" }, + "node_modules/elkjs": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.10.0.tgz", + "integrity": "sha512-v/3r+3Bl2NMrWmVoRTMBtHtWvRISTix/s9EfnsfEWApNrsmNjqgqJOispCGg46BPwIFdkag3N/HYSxJczvCm6w==", + "license": "EPL-2.0" + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -4943,7 +5139,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -5596,7 +5792,8 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", @@ -6239,6 +6436,15 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -7374,8 +7580,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -7506,9 +7711,10 @@ } }, "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.8" } @@ -8736,9 +8942,9 @@ } }, "node_modules/snakecase-keys/node_modules/type-fest": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.40.0.tgz", - "integrity": "sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -8757,6 +8963,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -9330,7 +9537,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9632,15 +9839,24 @@ "dev": true }, "node_modules/vue": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz", - "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.2.47", - "@vue/compiler-sfc": "3.2.47", - "@vue/runtime-dom": "3.2.47", - "@vue/server-renderer": "3.2.47", - "@vue/shared": "3.2.47" + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/vue-eslint-parser": { @@ -9988,6 +10204,16 @@ "dev": true, "license": "MIT" }, + "node_modules/workbox-build/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, "node_modules/workbox-build/node_modules/rollup": { "version": "2.79.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", diff --git a/package.json b/package.json index 7974b446..1e8d012b 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,10 @@ "@fortawesome/vue-fontawesome": "^3.0.5", "@headlessui/vue": "^1.7.23", "@tailwindcss/vite": "^4.0.0", + "@vue-flow/core": "^1.42.3", "bulma": "^0.9.3", + "dagre": "^0.8.5", + "elkjs": "^0.10.0", "tailwindcss": "^4.0.0", "vue": "^3.2.47", "vue-router": "^4.1.6", diff --git a/src/components/Graph.vue b/src/components/Graph.vue new file mode 100644 index 00000000..b934bf65 --- /dev/null +++ b/src/components/Graph.vue @@ -0,0 +1,145 @@ + + + diff --git a/src/components/GraphEdgeDefs.vue b/src/components/GraphEdgeDefs.vue new file mode 100644 index 00000000..00813683 --- /dev/null +++ b/src/components/GraphEdgeDefs.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/src/components/GraphFitViewButton.vue b/src/components/GraphFitViewButton.vue new file mode 100644 index 00000000..67fe4e60 --- /dev/null +++ b/src/components/GraphFitViewButton.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/src/components/GraphModule.vue b/src/components/GraphModule.vue new file mode 100644 index 00000000..01bd6e36 --- /dev/null +++ b/src/components/GraphModule.vue @@ -0,0 +1,167 @@ + + + diff --git a/src/components/GraphModuleHightlight.vue b/src/components/GraphModuleHightlight.vue new file mode 100644 index 00000000..03aaab45 --- /dev/null +++ b/src/components/GraphModuleHightlight.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/components/GraphModuleList.vue b/src/components/GraphModuleList.vue new file mode 100644 index 00000000..827a9ac2 --- /dev/null +++ b/src/components/GraphModuleList.vue @@ -0,0 +1,117 @@ + + + \ No newline at end of file diff --git a/src/components/GraphTooltip.vue b/src/components/GraphTooltip.vue new file mode 100644 index 00000000..013a0d1c --- /dev/null +++ b/src/components/GraphTooltip.vue @@ -0,0 +1,32 @@ + + + \ No newline at end of file diff --git a/src/components/Module.vue b/src/components/Module.vue index c6d517f6..0fd6740d 100644 --- a/src/components/Module.vue +++ b/src/components/Module.vue @@ -1,73 +1,37 @@ + diff --git a/src/components/ModuleCard.vue b/src/components/ModuleCard.vue new file mode 100644 index 00000000..4da474bb --- /dev/null +++ b/src/components/ModuleCard.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/components/Navigation.vue b/src/components/Navigation.vue index f68f220e..fc3caa92 100644 --- a/src/components/Navigation.vue +++ b/src/components/Navigation.vue @@ -1,96 +1,111 @@ @@ -134,11 +147,13 @@ import { defineComponent } from 'vue'; import { SignedIn, SignedOut, SignInButton, useAuth, UserButton } from '@clerk/vue' import { SemesterInfo } from "../helpers/semester-info"; -import ToggleDarkMode from './ToggleDarkMode.vue'; +import NavigationToggleDarkMode from './NavigationToggleDarkMode.vue'; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; import { library } from '@fortawesome/fontawesome-svg-core'; import { faChevronDown } from '@fortawesome/free-solid-svg-icons'; import SavedPlans from "./SavedPlans.vue"; +import NavigationToggleValidation from "./NavigationToggleValidation.vue"; +import GraphModal from '../components/Graph.vue'; library.add(faChevronDown); @@ -151,8 +166,10 @@ export default defineComponent({ SignedOut, SignInButton, UserButton, - ToggleDarkMode, - FontAwesomeIcon + NavigationToggleDarkMode, + FontAwesomeIcon, + NavigationToggleValidation, + GraphModal }, setup() { const { isSignedIn } = useAuth(); @@ -163,6 +180,7 @@ export default defineComponent({ }, data() { return { + showGraphModal: false, isBurgerActive: false, startSemesterName: SemesterInfo.latestAutumnSemester().toString(), categories: [ diff --git a/src/components/ToggleDarkMode.vue b/src/components/NavigationToggleDarkMode.vue similarity index 85% rename from src/components/ToggleDarkMode.vue rename to src/components/NavigationToggleDarkMode.vue index 5f1ca020..b913cead 100644 --- a/src/components/ToggleDarkMode.vue +++ b/src/components/NavigationToggleDarkMode.vue @@ -2,8 +2,8 @@