diff --git a/public/js/components/Cis/Mylv/LvMenu.js b/public/js/components/Cis/Mylv/LvMenu.js index f0ce41aca..7f30de4eb 100644 --- a/public/js/components/Cis/Mylv/LvMenu.js +++ b/public/js/components/Cis/Mylv/LvMenu.js @@ -9,6 +9,10 @@ export default { type:Array, default:null, }, + preselectedMenu: { + type: Object, + default: null, + }, }, data(){ return{ @@ -44,11 +48,26 @@ export default { }, + back: function(){ + if(this.preselectedMenu){ + this.$emit('hideModal'); + }else{ + this.$emit('update:isMenuSelected', false); + } + }, + }, + watch:{ + 'preselectedMenu': function (newValue) { + if (newValue) { + this.selectedMenu = newValue; + this.$emit("update:isMenuSelected", true); + } + } }, template:/*html*/`
- +

{{selectedMenu.name}}

diff --git a/public/js/components/Cis/Mylv/LvUebersicht.js b/public/js/components/Cis/Mylv/LvUebersicht.js index 51a9076ba..6670a0c76 100644 --- a/public/js/components/Cis/Mylv/LvUebersicht.js +++ b/public/js/components/Cis/Mylv/LvUebersicht.js @@ -7,7 +7,13 @@ export default { type:Object, required:true, default:null, - } + }, + // prop used to preselect a menu item and skip the grid overview + preselectedMenu: { + type: Object, + required: false, + default: null, + } }, data(){ return { @@ -28,12 +34,15 @@ export default { this.isMenuSelected = false; }, showModal: function(){ - - this.$fhcApi.factory.addons.getLvMenu(this.event.lehrveranstaltung_id, this.event.studiensemester_kurzbz).then(res =>{ - if(res.data){ - this.menu = res.data; - } - }); + if(!this.preselectedMenu){ + this.$fhcApi.factory.addons.getLvMenu(this.event.lehrveranstaltung_id, this.event.studiensemester_kurzbz).then(res =>{ + if(res.data){ + this.menu = res.data; + } + }); + }else{ + this.isMenuSelected = true; + } }, }, mounted(){ @@ -47,7 +56,7 @@ export default { diff --git a/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js b/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js index dd6c57b30..5acf29221 100755 --- a/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js +++ b/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js @@ -1,10 +1,14 @@ import LvPruefungen from "./Lv/Pruefungen.js"; import LvInfo from "./Lv/Info.js"; import Phrasen from "../../../../../mixins/Phrasen.js"; +import LvUebersicht from "../../LvUebersicht.js"; // TODO(chris): L10n export default { + components:{ + LvUebersicht, + }, mixins: [ Phrasen ], @@ -29,7 +33,9 @@ export default { data: () => { return { pruefungen: null, - info: null + info: null, + menu: null, + preselectedMenuItem: null, } }, computed: { @@ -44,6 +50,28 @@ export default { } }, methods: { + openLvOption(menuItem){ + if (menuItem.id == "core_menu_mailanstudierende"){ + window.location.href = menuItem.c4_link; + }else{ + this.preselectedMenuItem = menuItem; + Vue.nextTick(() => { + this.$refs.lvUebersicht.show(); + }); + } + }, + onShowDropdown(){ + //load menu + this.$fhcApi.factory.addons.getLvMenu(this.lehrveranstaltung_id, this.studien_semester) + .then(res => { + this.menu = res.data; + }) + .catch((error) => this.$fhcAlert.handleSystemError); + }, + onHideDropdown(){ + //reset menu + this.menu = null; + }, openPruefungen() { if (!this.pruefungen) { this.pruefungen = true; @@ -71,7 +99,15 @@ export default { } } }, - template: `
+ template: /*html*/`
+ + +
{{module}}
@@ -80,11 +116,26 @@ export default {