/* eslint no-var: "error" */ /* eslint no-unused-vars: "off" */ /* eslint linebreak-style: "off" */ /* eslint no-trailing-spaces: "off" */ /* eslint-env es6*/ import {call} from 'core/ajax'; import notification from 'core/notification'; import Vue from './vue/vue'; import Debugger from './util/debugger'; import {loadStrings} from './util/string-helper'; import SRComponents from './studyplan-report-components'; Vue.use(SRComponents); import RVComponents from './report-viewer-components'; Vue.use(RVComponents); import ModalComponents from './modedit-modal'; Vue.use(ModalComponents); import PortalVue from './portal-vue/portal-vue.esm'; Vue.use(PortalVue); import BootstrapVue from './bootstrap-vue/bootstrap-vue'; Vue.use(BootstrapVue); let debug = new Debugger("treestudyplanviewer"); let strings = loadStrings({ studyplanReport: { studyplan: 'studyplan', page: 'studyplanpage', periods: 'periods', period: 'period', loading: 'loading@core', all: 'all@core', from: 'from@core', to: 'to@core', }, }); /** * Initialize the Page * @param {Number} studyplanid The id of the studyplan we need to view * @param {Number} pageid The id of the studyplan page we need to view * @param {Number} firstperiod The number of the first period to view * @param {Number} lastperiod The number of the last period to view */ export function init(studyplanid, pageid, firstperiod, lastperiod) { if (undefined === pageid || !Number.isInteger(Number(pageid)) || undefined === studyplanid || !Number.isInteger(Number(studyplanid))) { debug.error("Error: studyplan id and page id not provided as integer numbers to script.", studyplanid, pageid, firstperiod, lastperiod); return; // Do not continue if plan and page are not proper integers } // Ensure a numeric value instead of string. studyplanid = Number(studyplanid); pageid = Number(pageid); // Startup app. const app = new Vue({ el: '#root', data: { structure: null, studyplan: null, page: null, text: strings.studyplanReport, }, created() { // On creation, load the page as specified this.loadStructure(pageid, firstperiod, lastperiod); }, computed: { }, methods: { loadStructure(pageid, firstperiod, lastperiod) { const self = this; this.structure = null; // Starts loading icon. Hides old data. call([{ methodname: 'local_treestudyplan_get_report_structure', args: {pageid: pageid, firstperiod: firstperiod, lastperiod: lastperiod } }])[0].then((response) => { self.structure = response; self.studyplan = response.studyplan; self.page = response.page; return; }).catch(notification.exception); }, selectedPage(e) { debug.info("SelectedPage", e); const pageid = e.target.value; this.loadStructure(pageid); }, selectedFirstPeriod(e) { debug.info("selectedFirstPeriod", e); let f = e.target.value; let l = this.structure.lastperiod; if (l < f) { l = f; } this.loadStructure(this.page.id, f, l); }, selectedLastPeriod(e) { debug.info("selectedLastPeriod", e); let f = this.structure.firstperiod; let l = e.target.value; if (l < f) { l = f; } this.loadStructure(this.page.id, f, l); }, }, }); }