207 lines
8.2 KiB
JavaScript
207 lines
8.2 KiB
JavaScript
|
/*eslint no-var: "error"*/
|
||
|
/*eslint no-console: "off"*/
|
||
|
/*eslint no-unused-vars: warn */
|
||
|
/*eslint max-len: ["error", { "code": 160 }] */
|
||
|
/*eslint-disable no-trailing-spaces */
|
||
|
/*eslint-env es6*/
|
||
|
// Put this file in path/to/plugin/amd/src
|
||
|
|
||
|
import {SimpleLine} from './simpleline/simpleline';
|
||
|
import {get_strings} from 'core/str';
|
||
|
import {load_strings} from './util/string-helper';
|
||
|
import {format_date,studyplanPageTiming,studyplanTiming} from './util/date-helper';
|
||
|
import {call} from 'core/ajax';
|
||
|
import notification from 'core/notification';
|
||
|
import {svgarcpath} from './util/svgarc';
|
||
|
import Debugger from './util/debugger';
|
||
|
import Config from 'core/config';
|
||
|
import {ProcessStudyplan, ProcessStudyplanPage, objCopy} from './studyplan-processor';
|
||
|
import TSComponents from './treestudyplan-components';
|
||
|
import {eventTypes as editSwEventTypes} from 'core/edit_switch';
|
||
|
|
||
|
// Make π available as a constant
|
||
|
const π = Math.PI;
|
||
|
// Gravity value for arrow lines - determines how much a line is pulled in the direction of the start/end before changing direction
|
||
|
const LINE_GRAVITY = 1.3;
|
||
|
|
||
|
|
||
|
export default {
|
||
|
install(Vue/*,options*/){
|
||
|
Vue.use(TSComponents);
|
||
|
let debug = new Debugger("treestudyplan-viewer");
|
||
|
|
||
|
let strings = load_strings({
|
||
|
report: {
|
||
|
loading: "loadinghelp@core",
|
||
|
studyplan_past: "studyplan_past",
|
||
|
studyplan_present: "studyplan_present",
|
||
|
studyplan_future: "studyplan_future",
|
||
|
back: "back",
|
||
|
},
|
||
|
invalid: {
|
||
|
error: 'error',
|
||
|
},
|
||
|
grading: {
|
||
|
ungraded: "ungraded",
|
||
|
graded: "graded",
|
||
|
allgraded: "allgraded",
|
||
|
unsubmitted: "unsubmitted",
|
||
|
nogrades: "nogrades",
|
||
|
unknown: "unknown",
|
||
|
},
|
||
|
completion: {
|
||
|
completed: "completion_completed",
|
||
|
incomplete: "completion_incomplete",
|
||
|
completed_pass: "completion_passed",
|
||
|
completed_fail: "completion_failed",
|
||
|
ungraded: "ungraded",
|
||
|
aggregation_all: "aggregation_all",
|
||
|
aggregation_any: "aggregation_any",
|
||
|
aggregation_one: "aggregation_one",
|
||
|
aggregation_overall_all: "aggregation_overall_all",
|
||
|
aggregation_overall_any: "aggregation_overall_any",
|
||
|
aggregation_overall_one: "aggregation_overall_one",
|
||
|
completion_not_configured: "completion_not_configured",
|
||
|
configure_completion: "configure_completion",
|
||
|
view_completion_report: "view_completion_report",
|
||
|
completion_incomplete: "completion_incomplete",
|
||
|
completion_failed: "completion_failed",
|
||
|
completion_pending: "completion_pending",
|
||
|
completion_progress: "completion_progress",
|
||
|
completion_completed: "completion_completed",
|
||
|
completion_good: "completion_good",
|
||
|
completion_excellent: "completion_excellent",
|
||
|
view_feedback: "view_feedback",
|
||
|
coursetiming_past: "coursetiming_past",
|
||
|
coursetiming_present: "coursetiming_present",
|
||
|
coursetiming_future: "coursetiming_future",
|
||
|
required_goal: "required_goal",
|
||
|
student_not_tracked: "student_not_tracked",
|
||
|
completion_not_enabled: "completion_not_enabled",
|
||
|
},
|
||
|
badge: {
|
||
|
share_badge: "share_badge",
|
||
|
dateissued: "dateissued",
|
||
|
dateexpire: "dateexpire",
|
||
|
badgeinfo: "badgeinfo",
|
||
|
badgeissuedstats: "badgeissuedstats",
|
||
|
completion_incomplete: "completion_incomplete_badge",
|
||
|
completion_completed: "completion_completed_badge",
|
||
|
completioninfo: "completioninfo",
|
||
|
badgedisabled: "badgedisabled"
|
||
|
},
|
||
|
course: {
|
||
|
completion_incomplete: "completion_incomplete",
|
||
|
completion_failed: "completion_failed",
|
||
|
completion_pending: "completion_pending",
|
||
|
completion_progress: "completion_progress",
|
||
|
completion_completed: "completion_completed",
|
||
|
completion_good: "completion_good",
|
||
|
completion_excellent: "completion_excellent",
|
||
|
view_feedback: "view_feedback",
|
||
|
coursetiming_past: "coursetiming_past",
|
||
|
coursetiming_present: "coursetiming_present",
|
||
|
coursetiming_future: "coursetiming_future",
|
||
|
required_goal: "required_goal",
|
||
|
student_not_tracked: "student_not_tracked",
|
||
|
not_enrolled: "not_enrolled",
|
||
|
},
|
||
|
competency: {
|
||
|
competency_not_configured: "competency_not_configured",
|
||
|
configure_competency: "configure_competency",
|
||
|
when: "when",
|
||
|
required: "required",
|
||
|
points: "points@core_grades",
|
||
|
heading: "competency_heading",
|
||
|
details: "competency_details",
|
||
|
results: "results",
|
||
|
unrated: "unrated",
|
||
|
progress: "completion_progress",
|
||
|
view_feedback: "view_feedback",
|
||
|
},
|
||
|
pageinfo: {
|
||
|
edit: 'period_edit',
|
||
|
fullname: 'studyplan_name',
|
||
|
shortname: 'studyplan_shortname',
|
||
|
startdate: 'studyplan_startdate',
|
||
|
enddate: 'studyplan_enddate',
|
||
|
description: 'studyplan_description',
|
||
|
duration: 'studyplan_duration',
|
||
|
details: 'studyplan_details',
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
/************************************
|
||
|
* *
|
||
|
* Treestudyplan Viewer components *
|
||
|
* *
|
||
|
************************************/
|
||
|
|
||
|
Vue.component('q-studyplanreport', {
|
||
|
props: {
|
||
|
structure: {
|
||
|
type: Object,
|
||
|
},
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
students: [],
|
||
|
studentresults: {},
|
||
|
|
||
|
sorting: {
|
||
|
name: "asc",
|
||
|
}
|
||
|
};
|
||
|
},
|
||
|
created() {
|
||
|
this.loadStudents();
|
||
|
},
|
||
|
computed: {
|
||
|
|
||
|
},
|
||
|
methods: {
|
||
|
loadStudents() {
|
||
|
const self = this;
|
||
|
call([{
|
||
|
methodname: 'local_treestudyplan_all_associated_grouped',
|
||
|
args: { studyplan_id: this.structure.studyplan.id}
|
||
|
}])[0].then(function(response){
|
||
|
self.students = response;
|
||
|
for(const group of self.students) {
|
||
|
for(const student of group.users){
|
||
|
self.studentresults[student.id] = {
|
||
|
loading: true,
|
||
|
results: [],
|
||
|
};
|
||
|
call([{
|
||
|
methodname: 'local_treestudyplan_get_report_data',
|
||
|
args: { pageid: self.structure.page.id,
|
||
|
userid: student.id,
|
||
|
firstperiod: self.structure.firstperiod,
|
||
|
lastperiod: self.structure.lastperiod,
|
||
|
}
|
||
|
}])[0].then(function(response){
|
||
|
self.studentresults[student.id].loading = false;
|
||
|
self.studentresults[student.id].results = response;
|
||
|
}).catch(notification.exception);
|
||
|
}
|
||
|
}
|
||
|
}).catch(notification.exception);
|
||
|
}
|
||
|
},
|
||
|
mounted() {
|
||
|
},
|
||
|
updated() {
|
||
|
},
|
||
|
template: `
|
||
|
<div>
|
||
|
|
||
|
</div>
|
||
|
`,
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
},
|
||
|
};
|