unserver-unify
Version:
93 lines (90 loc) • 2.8 kB
JavaScript
;
angular.module('bamboo.common').service('knowledgeBizModel', knowledgeBizModel);
knowledgeBizModel.$inject = ['$q', 'ApiService', '$translate'];
function knowledgeBizModel($q, ApiService, $translate) {
var self = this;
var chartData = {
labels: [],
datasets: [{
label: "" ,
backgroundColor: "rgba(255,99,132,0.2)",
borderColor: "rgba(255,99,132,1)",
pointBackgroundColor: "rgba(255,99,132,1)",
pointBorderColor: "#fff",
pointHoverBackgroundColor: "#fff",
pointHoverBorderColor: "rgba(255,99,132,1)",
data: []
}]
};
function getKnowledgeSourse(userknowledges) {
var displayKnowledges = [];
angular.forEach(userknowledges, function(value, key) {
// var childPerctg = [];
var _k = {
//child:childPerctg,
value: value,
key: key,
score: value.correct * 100 / value.counter,
}
displayKnowledges.push(_k);
// /console.log(value);
for (var i = 0; i <= 5; i++) {
if (value[i]) {
displayKnowledges.push({
level: i,
//counter:value[i].counter,
//correct:value[i].correct,
value: value[i],
score: value[i].correct * 100 / value[i].counter,
percentage: (value[i].correct * 100) / value[i].counter
});
}
}
});
return displayKnowledges;
}
function prepareRadarChart(knowledgeSourse) {
var labels = [];
var data = [];
//var charDict = {};
angular.forEach(knowledgeSourse, function(nlg, idx) {
if (nlg.key) {
var key = nlg.key.split(',').shift();
var value = nlg.value;
labels.push(key);
if (value.counter) {
data.push(value.correct * 100 / value.counter);
} else {
labels.pop();
}
}
});
chartData.labels = labels;
chartData.datasets[0].data = data;
$translate('Accuracy Rate(%)').then(function(data) {
chartData.datasets[0].label = data;
});
return chartData;
}
self.getRadarChartData = function(uid, lid) {
var info = {
cid: lid,
id: uid,
action: "getusercourseknowledges",
}
var deferred = $q.defer();
var promise = deferred.promise;
ApiService.post('/user', info).then(function(result) {;
var userscores = [];
if (result.data.success) {
var userknowledges = result.data.data || [];
var knowledgeSourse = getKnowledgeSourse(userknowledges);
var radarChartData = prepareRadarChart(knowledgeSourse);
deferred.resolve(radarChartData);
}else{
deferred.reject(result);
}
});
return promise;
}
}