1 line
No EOL
14 KiB
Text
1 line
No EOL
14 KiB
Text
{"version":3,"file":"page-edit-plan.min.js","sources":["../src/page-edit-plan.js"],"sourcesContent":["/*eslint no-var: \"error\" */\n/*eslint no-unused-vars: \"off\" */\n/*eslint linebreak-style: \"off\" */\n/*eslint no-trailing-spaces: \"off\" */\n/*eslint-env es6*/\n// Put this file in path/to/plugin/amd/src\n// You can call it anything you like\n\nimport {get_string,get_strings} from 'core/str';\nimport {call} from 'core/ajax';\nimport notification from 'core/notification';\n\nimport Vue from './vue/vue';\n\n\nimport EditorComponents from './studyplan-editor-components';\nVue.use(EditorComponents);\n\nimport TSComponents from './treestudyplan-components';\nVue.use(TSComponents);\n\nimport ModalComponents from './modedit-modal';\nVue.use(ModalComponents);\nimport Debugger from './util/debugger';\n\nimport {load_strings} from './util/string-helper';\nimport {ProcessStudyplan} from './studyplan-processor';\nimport {download,upload} from './downloader';\n\nimport PortalVue from './portal-vue/portal-vue.esm';\nVue.use(PortalVue);\nimport BootstrapVue from './bootstrap-vue/bootstrap-vue.esm';\nVue.use(BootstrapVue);\n\nimport {Drag, Drop, DropList} from './vue-easy-dnd/vue-easy-dnd.esm';\nVue.component('drag',Drag);\nVue.component('drop',Drop);\nVue.component('drop-list',DropList);\n\nconst debug = new Debugger(\"treestudyplan\");\n\nlet strings = load_strings({\n studyplan: {\n studyplan_select_placeholder: 'studyplan_select_placeholder',\n },\n});\n\n/**\n * Initialize the Page\n * @param {int} contextid The context we should attempt to work in (1:1 related to the category)\n * @param {int} categoryid The category we shoud attempt to work in (1:1 related to the context)\n */\nexport function init(contextid,categoryid) {\n // Make sure the id's are numeric and integer\n if(undefined === contextid || !Number.isInteger(Number(contextid)) || contextid < 1 ){ contextid = 1;} \n else { contextid = Number(contextid);} // ensure a numeric value instead of string\n if(undefined === categoryid || !Number.isInteger(Number(categoryid))){ categoryid = 0;}\n else { categoryid = Number(categoryid);} // ensure a numeric value instead of string\n\n const in_systemcontext = (contextid <= 1);\n\n // Setup the initial Vue app for this page\n let app = new Vue({\n el: '#root',\n data: {\n create: {\n studyplan: {\n name: '',\n shortname: '',\n description: '',\n idnumber: '',\n slots : 4,\n startdate: '2020-08-01',\n enddate: '',\n context: contextid,\n aggregation: 'bistate',\n aggregation_config: '',\n }\n },\n toolbox: {\n right: true,\n },\n activestudyplan: null,\n loadingstudyplan: false,\n studyplans: [],\n frameworks: [],\n badges: [],\n courses: [],\n text: strings.studyplan,\n usedcontexts: [],\n },\n created() {\n this.$root.$on('studyplanRemoved',(studyplan)=>{\n \n if(app.activestudyplan == studyplan){\n app.activestudyplan = null;\n }\n\n // remove studyplan from index list\n let index = null;\n for(let idx in app.studyplans){\n if(app.studyplans[idx].id == studyplan.id){\n index = idx;\n break;\n }\n }\n if(index){\n app.studyplans.splice(index, 1);\n }\n\n });\n },\n mounted() {\n call([{\n methodname: 'local_treestudyplan_list_studyplans',\n args: { context_id: contextid}\n }])[0].done(function(response){\n const timingval = { future: 0, present: 1, past: 2, };\n response.sort((a,b) => {\n const timinga = TSComponents.studyplanTiming(a);\n const timingb = TSComponents.studyplanTiming(b);\n\n let t = timingval[timinga] - timingval[timingb];\n if(t == 0){\n // sort by start date if timing is equal\n t = new Date(b.startdate).getTime() - new Date(a.startdate).getTime();\n \n if (t == 0) {\n // sort by name if timing is equal\n t = a.name.localeCompare(b.name);\n }\n }\n return t;\n }); \n app.studyplans = response;\n\n // load studyplan from hash if applicable\n const hash = location.hash.replace('#','');\n if(hash){\n for(let idx in app.studyplans){\n if(app.studyplans[idx].id == hash){\n app.selectStudyplan(app.studyplans[idx]);\n break;\n }\n }\n }\n }).fail(notification.exception);\n call([{\n methodname: 'local_treestudyplan_list_badges',\n args: {}\n }])[0].done(function(response){\n app.badges = response;\n }).fail(notification.exception); \n call([{\n methodname: 'local_treestudyplan_map_categories',\n args: {root_id: categoryid}\n }])[0].done(function(response){\n app.courses = response;\n }).fail(notification.exception); \n call([{\n methodname: 'local_treestudyplan_list_used_categories',\n args: { operation: 'edit'}\n }])[0].done(function(response){\n app.usedcontexts = response;\n }).fail(notification.exception); \n\n },\n computed: {\n dropdown_title(){\n if(this.activestudyplan && this.activestudyplan.name){\n return this.activestudyplan.name;\n }\n else{\n return this.text.studyplan_select_placeholder;\n }\n },\n contextid(){\n return contextid;\n },\n filterComponentType(){\n return {\n item: false,\n component: true,\n span: 1,\n type: 'filter',\n };\n },\n },\n methods: {\n closeStudyplan() {\n app.activestudyplan = null;\n location.hash = '';\n }, \n movedStudyplan(plan,from,to) {\n // reload the page in the new context (needed, since a number of links are not reactive in the page)\n const params = new URLSearchParams(location.search);\n params.delete('categoryid');\n params.set(\"contextid\", to);\n window.location.search = params.toString();\n },\n onStudyPlanCreated(newstudyplan){\n app.studyplans.push(newstudyplan);\n app.selectStudyplan(newstudyplan);\n\n },\n switchContext(ctx){\n const params = new URLSearchParams(location.search);\n params.set('categoryid', ctx.id);\n window.location.search = params.toString();\n \n },\n selectStudyplan(studyplan){\n // fetch studyplan\n app.loadingstudyplan = true;\n app.activestudyplan = null;\n call([{\n methodname: 'local_treestudyplan_get_studyplan_map',\n args: { id: studyplan.id}\n }])[0].done(function(response){\n app.activestudyplan = ProcessStudyplan(response,true);\n debug.info('studyplan processed');\n app.loadingstudyplan = false;\n location.hash = app.activestudyplan.id;\n }).fail(function(error){\n notification.exception(error);\n app.loadingstudyplan = false;\n });\n },\n import_studyplan(){\n upload((filename,content)=>{\n call([{\n methodname: 'local_treestudyplan_import_plan',\n args: {\n content: content,\n format: \"application/json\",\n context_id: contextid,\n },\n }])[0].done(function(response){\n if(response.success){\n location.reload();\n } else {\n debug.error(\"Import failed: \",response.msg);\n }\n \n }).fail(notification.exception); \n }, \"application/json\");\n },\n export_plan(plan,format){\n let self = this;\n if(format == undefined || ![\"json\",\"csv\"].includes(format)){\n format = \"json\";\n }\n call([{\n methodname: 'local_treestudyplan_export_plan',\n args: {\n studyplan_id: plan.id,\n format: format\n },\n }])[0].done(function(response){\n \n download(plan.shortname+\".json\",response.content,response.format);\n }).fail(notification.exception); \n },\n },\n });\n}\n\n"],"names":["contextid","categoryid","undefined","Number","isInteger","app","Vue","el","data","create","studyplan","name","shortname","description","idnumber","slots","startdate","enddate","context","aggregation","aggregation_config","toolbox","right","activestudyplan","loadingstudyplan","studyplans","frameworks","badges","courses","text","strings","usedcontexts","created","$root","$on","index","idx","id","splice","mounted","methodname","args","context_id","done","response","timingval","future","present","past","sort","a","b","timinga","TSComponents","studyplanTiming","timingb","t","Date","getTime","localeCompare","hash","location","replace","selectStudyplan","fail","notification","exception","root_id","operation","computed","dropdown_title","this","studyplan_select_placeholder","filterComponentType","item","component","span","type","methods","closeStudyplan","movedStudyplan","plan","from","to","params","URLSearchParams","search","delete","set","window","toString","onStudyPlanCreated","newstudyplan","push","switchContext","ctx","debug","info","error","import_studyplan","filename","content","format","success","reload","msg","export_plan","includes","studyplan_id","use","EditorComponents","ModalComponents","PortalVue","BootstrapVue","Drag","Drop","DropList","Debugger"],"mappings":"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"} |