Code Cleanup
This commit is contained in:
parent
3bef1118b2
commit
c2c5383e10
|
@ -2,15 +2,15 @@
|
|||
/* eslint no-unused-vars: "off" */
|
||||
/* eslint linebreak-style: "off" */
|
||||
/* eslint no-trailing-spaces: "off" */
|
||||
/* eslint no-empty-function: "off" */
|
||||
/* eslint-env es6*/
|
||||
// Put this file in path/to/plugin/amd/src
|
||||
// You can call it anything you like
|
||||
|
||||
import {get_string,get_strings} from 'core/str';
|
||||
import {call} from 'core/ajax';
|
||||
import notification from 'core/notification';
|
||||
|
||||
//import {resetAllFormDirtyStates} from 'core_form/changechecker'; // Moodle 4.00+ only
|
||||
// Commented out: import {resetAllFormDirtyStates} from 'core_form/changechecker'; // Moodle 4.00+ only
|
||||
|
||||
import Vue from './vue/vue';
|
||||
|
||||
|
@ -27,9 +27,9 @@ import {addBrowserButtonEvent} from './util/browserbuttonevents';
|
|||
|
||||
import {loadStrings} from './util/string-helper';
|
||||
import {processStudyplan} from './studyplan-processor';
|
||||
import {download,upload} from './downloader';
|
||||
import {download, upload} from './downloader';
|
||||
import {studyplanTiming} from './util/date-helper';
|
||||
import { premiumenabled, premiumstatus } from "./util/premium";
|
||||
import {premiumenabled, premiumstatus} from "./util/premium";
|
||||
import mFormComponents from "./util/mform-helper";
|
||||
Vue.use(mFormComponents);
|
||||
|
||||
|
@ -41,22 +41,21 @@ Vue.use(BootstrapVue);
|
|||
|
||||
const debug = new Debugger("treestudyplan");
|
||||
|
||||
let resetAllFormDirtyStates = () => {};
|
||||
let resetAllFormDirtyStates = () => { };
|
||||
import('core_form/changechecker').then((ns) => {
|
||||
debug.info(ns);
|
||||
if(ns.resetAllFormDirtyStates) {
|
||||
if (ns.resetAllFormDirtyStates) {
|
||||
resetAllFormDirtyStates = ns.resetAllFormDirtyStates;
|
||||
}
|
||||
return;
|
||||
}).catch(()=>{});
|
||||
|
||||
|
||||
|
||||
let strings = loadStrings({
|
||||
studyplan: {
|
||||
studyplan_select_placeholder: 'studyplan_select_placeholder',
|
||||
advanced_import_from_file: 'advanced_import_from_file',
|
||||
advanced_create_from_template: 'advanced_create_from_template',
|
||||
studyplan_add: "studyplan_add",
|
||||
'studyplan_select_placeholder': 'studyplan_select_placeholder',
|
||||
'advanced_import_from_file': 'advanced_import_from_file',
|
||||
'advanced_create_from_template': 'advanced_create_from_template',
|
||||
'studyplan_add': "studyplan_add",
|
||||
},
|
||||
});
|
||||
|
||||
|
@ -66,21 +65,27 @@ let strings = loadStrings({
|
|||
* @param {int} categoryid The category we shoud attempt to work in (1:1 related to the context)
|
||||
* @param {object} options Options to be passed to this script
|
||||
*/
|
||||
export function init(contextid,categoryid,options) {
|
||||
export function init(contextid, categoryid, options) {
|
||||
// Make sure the id's are numeric and integer
|
||||
if(undefined === contextid || !Number.isInteger(Number(contextid)) || contextid < 1 ){ contextid = 1;}
|
||||
else { contextid = Number(contextid);} // ensure a numeric value instead of string
|
||||
if(undefined === categoryid || !Number.isInteger(Number(categoryid))){ categoryid = 0;}
|
||||
else { categoryid = Number(categoryid);} // ensure a numeric value instead of string
|
||||
if (undefined === contextid || !Number.isInteger(Number(contextid)) || contextid < 1) {
|
||||
contextid = 1;
|
||||
} else {
|
||||
contextid = Number(contextid); // Ensure a numeric value instead of string
|
||||
}
|
||||
if (undefined === categoryid || !Number.isInteger(Number(categoryid))) {
|
||||
categoryid = 0;
|
||||
} else {
|
||||
categoryid = Number(categoryid); // Ensure a numeric value instead of string
|
||||
}
|
||||
|
||||
debug.info("options",options);
|
||||
if ( options !== null && typeof options === 'object' && !Array.isArray(options) ) {
|
||||
if ( !options.defaultAggregation ) {
|
||||
debug.info("options", options);
|
||||
if (options !== null && typeof options === 'object' && !Array.isArray(options)) {
|
||||
if (!options.defaultAggregation) {
|
||||
options.defaultAggregation = "core";
|
||||
}
|
||||
|
||||
} else {
|
||||
options = { defaultAggregation: "core"};
|
||||
options = {defaultAggregation: "core"};
|
||||
}
|
||||
|
||||
// Setup the initial Vue app for this page
|
||||
|
@ -93,12 +98,12 @@ export function init(contextid,categoryid,options) {
|
|||
shortname: '',
|
||||
description: '',
|
||||
idnumber: '',
|
||||
slots : 4,
|
||||
slots: 4,
|
||||
startdate: '2020-08-01',
|
||||
enddate: '',
|
||||
context: contextid,
|
||||
aggregation: options.defaultAggregation,
|
||||
aggregation_config: '',
|
||||
'aggregation_config': '',
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -112,21 +117,21 @@ export function init(contextid,categoryid,options) {
|
|||
usedcontexts: [],
|
||||
},
|
||||
created() {
|
||||
this.$root.$on('studyplanRemoved',(studyplan)=>{
|
||||
this.$root.$on('studyplanRemoved', (studyplan)=>{
|
||||
|
||||
if(app.activestudyplan == studyplan){
|
||||
if (app.activestudyplan == studyplan) {
|
||||
app.activestudyplan = null;
|
||||
}
|
||||
|
||||
// remove studyplan from index list
|
||||
// Remove studyplan from index list
|
||||
let index = null;
|
||||
for(let idx in app.studyplans){
|
||||
if(app.studyplans[idx].id == studyplan.id){
|
||||
for (let idx in app.studyplans) {
|
||||
if (app.studyplans[idx].id == studyplan.id) {
|
||||
index = idx;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(index){
|
||||
if (index) {
|
||||
app.studyplans.splice(index, 1);
|
||||
}
|
||||
|
||||
|
@ -141,15 +146,14 @@ export function init(contextid,categoryid,options) {
|
|||
},
|
||||
computed: {
|
||||
premiumenabled,
|
||||
dropdown_title(){
|
||||
if(this.activestudyplan && this.activestudyplan.name){
|
||||
dropdownTitle() {
|
||||
if (this.activestudyplan && this.activestudyplan.name) {
|
||||
return this.activestudyplan.name;
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
return this.text.studyplan_select_placeholder;
|
||||
}
|
||||
},
|
||||
contextid(){
|
||||
contextid() {
|
||||
return contextid;
|
||||
},
|
||||
|
||||
|
@ -165,20 +169,20 @@ export function init(contextid,categoryid,options) {
|
|||
initialize() {
|
||||
call([{
|
||||
methodname: 'local_treestudyplan_list_studyplans',
|
||||
args: { context_id: contextid}
|
||||
}])[0].then(function(response){
|
||||
const timingval = { future: 0, present: 1, past: 2, };
|
||||
response.sort((a,b) => {
|
||||
args: {'context_id': contextid}
|
||||
}])[0].then(function(response) {
|
||||
const timingval = {future: 0, present: 1, past: 2};
|
||||
response.sort((a, b) => {
|
||||
const timinga = studyplanTiming(a);
|
||||
const timingb = studyplanTiming(b);
|
||||
|
||||
let t = timingval[timinga] - timingval[timingb];
|
||||
if(t == 0){
|
||||
// sort by start date if timing is equal
|
||||
if (t == 0) {
|
||||
// Sort by start date if timing is equal
|
||||
t = new Date(b.startdate).getTime() - new Date(a.startdate).getTime();
|
||||
|
||||
if (t == 0) {
|
||||
// sort by name if timing is equal
|
||||
// Sort by name if timing is equal
|
||||
t = a.name.localeCompare(b.name);
|
||||
}
|
||||
}
|
||||
|
@ -186,51 +190,54 @@ export function init(contextid,categoryid,options) {
|
|||
});
|
||||
app.studyplans = response;
|
||||
|
||||
// load studyplan from hash if applicable
|
||||
const hash = location.hash.replace('#','');
|
||||
if(hash){
|
||||
// Load studyplan from hash if applicable
|
||||
const hash = location.hash.replace('#', '');
|
||||
if (hash) {
|
||||
const id = hash;
|
||||
for(const p of app.studyplans) {
|
||||
for (const p of app.studyplans) {
|
||||
if (p.id == id) {
|
||||
app.selectStudyplan(id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}).catch(notification.exception);
|
||||
|
||||
call([{
|
||||
methodname: 'local_treestudyplan_list_available_categories',
|
||||
args: { operation: 'edit', refcontext_id: contextid}
|
||||
}])[0].then(function(response){
|
||||
args: {operation: 'edit', 'refcontext_id': contextid}
|
||||
}])[0].then(function(response) {
|
||||
app.usedcontexts = response;
|
||||
return;
|
||||
}).catch(notification.exception);
|
||||
|
||||
this.refreshTemplateCount();
|
||||
},
|
||||
refreshTemplateCount(){
|
||||
refreshTemplateCount() {
|
||||
call([{
|
||||
methodname: 'local_treestudyplan_count_templates',
|
||||
args: { }
|
||||
}])[0].then(function(response){
|
||||
}])[0].then(function(response) {
|
||||
app.templatecount = response;
|
||||
return;
|
||||
}).catch(notification.exception);
|
||||
},
|
||||
closeStudyplan() {
|
||||
app.activestudyplan = null;
|
||||
window.location.hash = '';
|
||||
},
|
||||
movedStudyplan(plan,from,to) {
|
||||
// reload the page in the new context (needed, since a number of links are not reactive in the page)
|
||||
movedStudyplan(plan, from, to) {
|
||||
// Reload the page in the new context (needed, since a number of links are not reactive in the page)
|
||||
const params = new URLSearchParams(location.search);
|
||||
params.delete('categoryid');
|
||||
params.set("contextid", to);
|
||||
setTimeout(() => {
|
||||
// Reload page in a timeout to give other form javasccript the change to remove the beforeunload handler.
|
||||
window.location.search = params.toString();
|
||||
},50);
|
||||
}, 50);
|
||||
},
|
||||
onStudyPlanCreated(newstudyplan){
|
||||
onStudyPlanCreated(newstudyplan) {
|
||||
if (newstudyplan.context_id != contextid) {
|
||||
// Study plan has changed context id - reload page into new context id and show the plan
|
||||
const params = new URLSearchParams(location.search);
|
||||
|
@ -244,69 +251,53 @@ export function init(contextid,categoryid,options) {
|
|||
app.selectStudyplan(newstudyplan.id);
|
||||
}
|
||||
},
|
||||
switchContext(ctxid){
|
||||
switchContext(ctxid) {
|
||||
const params = new URLSearchParams(location.search);
|
||||
params.delete('categoryid');
|
||||
params.set('contextid', ctxid);
|
||||
setTimeout(() => {
|
||||
// Reload page in a timeout to give other form javasccript the change to remove the beforeunload handler.
|
||||
window.location.href = window.location.pathname + "?" + params.toString();
|
||||
},50);
|
||||
}, 50);
|
||||
},
|
||||
selectStudyplan(studyplanid){
|
||||
// fetch studyplan
|
||||
selectStudyplan(studyplanid) {
|
||||
// Fetch studyplan
|
||||
app.loadingstudyplan = true;
|
||||
app.activestudyplan = null;
|
||||
call([{
|
||||
methodname: 'local_treestudyplan_get_studyplan_map',
|
||||
args: { id: studyplanid}
|
||||
}])[0].then(function(response){
|
||||
args: {id: studyplanid}
|
||||
}])[0].then(function(response) {
|
||||
app.activestudyplan = processStudyplan(response);
|
||||
debug.info('studyplan processed');
|
||||
app.loadingstudyplan = false;
|
||||
window.location.hash = app.activestudyplan.id;
|
||||
}).catch(function(error){
|
||||
return;
|
||||
}).catch(function(error) {
|
||||
notification.exception(error);
|
||||
app.loadingstudyplan = false;
|
||||
});
|
||||
},
|
||||
import_studyplan(){
|
||||
importStudyplan() {
|
||||
const self = this;
|
||||
upload((filename,content)=>{
|
||||
upload((filename, content)=>{
|
||||
call([{
|
||||
methodname: 'local_treestudyplan_import_plan',
|
||||
args: {
|
||||
content: content,
|
||||
format: "application/json",
|
||||
context_id: contextid,
|
||||
'context_id': contextid,
|
||||
},
|
||||
}])[0].then(function(response){
|
||||
if(response.success){
|
||||
}])[0].then(function(response) {
|
||||
if (response.success) {
|
||||
self.initialize();
|
||||
} else {
|
||||
debug.error("Import failed: ",response.msg);
|
||||
debug.error("Import failed: ", response.msg);
|
||||
}
|
||||
|
||||
return;
|
||||
}).catch(notification.exception);
|
||||
}, "application/json");
|
||||
},
|
||||
export_plan(plan,format){
|
||||
let self = this;
|
||||
if(format == undefined || !["json","csv"].includes(format)){
|
||||
format = "json";
|
||||
}
|
||||
call([{
|
||||
methodname: 'local_treestudyplan_export_plan',
|
||||
args: {
|
||||
studyplan_id: plan.id,
|
||||
format: format
|
||||
},
|
||||
}])[0].then(function(response){
|
||||
|
||||
download(plan.shortname+".json",response.content,response.format);
|
||||
}).catch(notification.exception);
|
||||
},
|
||||
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user