Browse Source

add another chart

schtonn 2 years ago
parent
commit
d6b91a39f6
1 changed files with 166 additions and 21 deletions
  1. 166 21
      score/index.html

+ 166 - 21
score/index.html

@@ -33,6 +33,7 @@
                 try {
 
                     var output = document.getElementById("fileOutput");
+                    var info = document.getElementById("fileInfo");
                     var object = eval("(" + event.target.result + ")");
                     var classText = "", gradingText = "";
 
@@ -61,13 +62,18 @@
                             }
                         }
                     }
-                    var scoreP = {}, avgP = {};
+                    var scoreP = {}, avgP = {}, rate0 = {}, rate25 = {}, rate50 = {}, rate75 = {}, rate100 = {}, rateFull = {};//表1用
                     for (var i = 0; i < seIds.length; i++) {
                         scoreP[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = object.data.multiExamStudentScore.singleExamStudentScores[i].essScore;
-                    }
-                    for (var i = 0; i < seIds.length; i++) {
                         avgP[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = object.data.singleExamClassScores[i].secsAvgScore;
+                        rate0[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = object.data.singleExamClassScores[i].secsMinScore;
+                        rate25[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = object.data.singleExamClassScores[i].secsQuarterScore;
+                        rate50[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = object.data.singleExamClassScores[i].secsHalfScore;
+                        rate75[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = object.data.singleExamClassScores[i].secs3quatrerScore;
+                        rate100[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = object.data.singleExamClassScores[i].secsMaxScore;
+                        rateFull[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = object.data.multiExam.singleExams[seIdDic[i]].seFullScore;
                     }
+                    console.log("rat");
                     var scoreRate = {};
                     for (var i = 0; i < seIds.length; i++) {
                         scoreRate[object.data.multiExamStudentScore.singleExamStudentScores[i].seId] = decimal(object.data.multiExamStudentScore.singleExamStudentScores[i].essScore / object.data.multiExam.singleExams[seIdDic[i]].seFullScore, 3);
@@ -168,6 +174,7 @@
                         gradingText += "</tr></table><br><br>";
                     }
                 } catch (e) {
+                    console.log(e);
                     message.innerHTML += "<br>读取失败!";
                     output.innerHTML = "";
                     var charts = document.getElementsByClassName("chart");
@@ -185,10 +192,11 @@
                 // sheetOutput("各科分层班级排名一览表", ysClassOrder);
                 // sheetOutput("各科年级排名一览表", gradeOrder);
                 message.innerHTML += "<br>读取成功!"
-                output.innerHTML = "<br>注:实验中学 74 桌出品,我略作修改并加上了图表功能<del>,完成作者遗愿</del>。<br><br>"
+                info.innerHTML = "<br>注:实验中学 74 桌出品,因 2025 届高一开始大量使用,为防止原作者被追责,便搬运下来略作修改并加上了图表功能。<br><br>"
                     + "行政班级:" + object.data.examStudents[0].classId + "<br>"
                     + "姓名:" + object.data.multiExamStudentScore.studentName + "<br>"
-                    + "<br><h4>总分</h4>"
+                    + "<br><h4>班内一览表</h4>";
+                output.innerHTML = "<br><h4>总分</h4>"
                     + "全科分数:" + object.data.multiExamStudentScore.messScore + "<br><br>"
                     + "全科分数班级排名:" + object.data.multiExamStudentScore.messClassOrder + "<br>"
                     + "全科班级参考人数:" + object.data.multiExamClassScores[0].mecsStudentCount + "<br>"
@@ -203,7 +211,7 @@
                     + "<tr><td>" + object.data.multiExam.meAvgScore + "</td><td>" + object.data.multiExam.meMaxScore + "</td><td>" + object.data.multiExam.me3QuatrerScore + "</td><td>" + object.data.multiExam.meHalfScore + "</td><td>" + object.data.multiExam.meQuarterScore + "</td><td>" + object.data.multiExam.meMinScore + "</td></tr></table><br><br>"
                     + classText
                     + gradingText
-                    + "<h4>汇总</h4>";
+                    + "<h4>排名汇总</h4>";
 
 
                 $("#fileOutput table").css("display", "inline-table");
@@ -213,14 +221,16 @@
                 var charts = document.getElementsByClassName("chart");
                 for (i = 0; i < charts.length; i++)charts[i].style.display = '';
 
-                sChart = echarts.init(document.getElementById("score"));
+                sChart1 = echarts.init(document.getElementById("score1"));
+                sChart2 = echarts.init(document.getElementById("score2"));
                 oChart1 = echarts.init(document.getElementById("order1"));
                 oChart2 = echarts.init(document.getElementById("order2"));
                 oChart3 = echarts.init(document.getElementById("order3"));
                 oChart4 = echarts.init(document.getElementById("order4"));
 
 
-                seNameDicP = []; scorePP = []; avgPP = [];
+                seNameDicP = []; scorePP = []; avgPP = []; rate0P = []; rate25P = []; rate50P = []; rate75P = []; rate100P = []; rateFullP = [];
+                scoreQ = []; avgQ = []; rate0Q = []; rate25Q = []; rate50Q = []; rate75Q = []; rate100Q = [];
                 seNameDicP2 = []; classOrderPP = []; gradeOrderPP = []; classOrderQ = []; gradeOrderQ = [];
                 seNameDicP3 = []; ysClassOrderPP = []; ysClassOrderQ = [];
                 for (var i in scoreP) {
@@ -228,6 +238,19 @@
                     seNameDicP.push(seNameDic[i].substr(0, 2));
                     scorePP.push(scoreP[i]);
                     avgPP.push(avgP[i]);
+                    rate0P.push(rate0[i]);
+                    rate25P.push(rate25[i]);
+                    rate50P.push(rate50[i]);
+                    rate75P.push(rate75[i]);
+                    rate100P.push(rate100[i]);
+                    rateFullP.push(rateFull[i]);
+                    scoreQ.push(decimal(scoreP[i] / rateFull[i] * 100, 1));
+                    avgQ.push(decimal(avgP[i] / rateFull[i] * 100, 1));
+                    rate0Q.push(decimal(rate0[i] / rateFull[i] * 100, 1));
+                    rate25Q.push(decimal(rate25[i] / rateFull[i] * 100, 1));
+                    rate50Q.push(decimal(rate50[i] / rateFull[i] * 100, 1));
+                    rate75Q.push(decimal(rate75[i] / rateFull[i] * 100, 1));
+                    rate100Q.push(decimal(rate100[i] / rateFull[i] * 100, 1));
                 }
                 for (var i in classOrderP) {
                     seNameDicP2.push(seNameDic[i].substr(0, 2));
@@ -241,12 +264,12 @@
                     ysClassOrderPP.push(ysClassOrderP[i]);
                     ysClassOrderQ.push(decimal(ysClassOrder[i] * 100, 1));
                 }
-                var sOp = { //具体细节的描述
+                var sOp1 = { //具体细节的描述
                     textStyle: {
                         fontFamily: 'Noto Serif SC'
                     },
                     title: {
-                        text: '成绩与平均分',
+                        text: '分数(点击图例可隐藏内容)',
                         textStyle: { //主标题文本样式{"fontSize": 18,"fontWeight": "bolder","color": "#333"}
                             fontSize: 14,
                             fontStyle: 'normal',
@@ -257,7 +280,7 @@
                         trigger: 'axis'
                     },
                     legend: {
-                        data: ['成绩', '平均分']
+                        data: ['0%', '25%', '50%', '75%', '100%', '满分', '平均分', '我的分数']
                     },
                     toolbox: { //可以选择具体数据,柱状图,折线图,还原,保存图片的的切换选择
                         show: true,
@@ -292,17 +315,136 @@
                         position: 'left'
                     }],
                     series: [{
-                        name: '成绩',
-                        type: 'bar',// bar
-                        data: scorePP,
-                        color: '#fb7756'
-                    },
-                    {
+                        name: '0%',
+                        type: 'line',
+                        data: rate0P,
+                        color: '#99ab4e'
+                    }, {
+                        name: '25%',
+                        type: 'line',
+                        data: rate25P,
+                        color: '#c7dc68'
+                    }, {
+                        name: '50%',
+                        type: 'line',
+                        data: rate50P,
+                        color: '#c7dc68'
+                    }, {
+                        name: '75%',
+                        type: 'line',
+                        data: rate75P,
+                        color: '#c7dc68'
+                    }, {
+                        name: '100%',
+                        type: 'line',
+                        data: rate100P,
+                        color: '#99ab4e'
+                    }, {
+                        name: '满分',
+                        type: 'line',
+                        data: rateFullP,
+                        color: '#783c1d'
+                    }, {
                         name: '平均分',
-                        type: 'bar',//bar
+                        type: 'line',
                         data: avgPP,
-                        color: '#facd60'
+                        color: '#2792c3'
+                    }, {
+                        name: '我的分数',
+                        type: 'line',
+                        data: scorePP,
+                        color: '#e2041b'
+                    }
+
+                    ]
+                };
+                var sOp2 = { //具体细节的描述
+                    textStyle: {
+                        fontFamily: 'Noto Serif SC'
+                    },
+                    title: {
+                        text: '得分率',
+                        textStyle: { //主标题文本样式{"fontSize": 18,"fontWeight": "bolder","color": "#333"}
+                            fontSize: 14,
+                            fontStyle: 'normal',
+                            fontWeight: 'bold',
+                        },
+                    },
+                    tooltip: {
+                        trigger: 'axis'
+                    },
+                    legend: {
+                        data: ['0%', '25%', '50%', '75%', '100%', '平均得分率', '我的得分率']
+                    },
+                    toolbox: { //可以选择具体数据,柱状图,折线图,还原,保存图片的的切换选择
+                        show: true,
+                        feature: {
+                            dataView: {
+                                show: true,
+                                readOnly: false
+                            },
+                            magicType: {
+                                show: true,
+                                type: ['line', 'bar'] //可选折线图和柱状图
+                            },
+                            restore: {
+                                show: true  //恢复默认
+                            },
+                            saveAsImage: {
+                                show: true // 存储为图片的功能
+                            }
+                        }
+                    },
+                    calculable: true,
+                    xAxis: [{
+                        type: 'category',
+                        //name: 'min_sup(%)'
+                        data: seNameDicP,
+                        name: '科目',
+                        position: 'left'
+                    }],
+                    yAxis: [{
+                        type: 'value',
+                        name: '得分率(%)',
+                        position: 'left'
+                    }],
+                    series: [{
+                        name: '0%',
+                        type: 'line',
+                        data: rate0Q,
+                        color: '#99ab4e'
+                    }, {
+                        name: '25%',
+                        type: 'line',
+                        data: rate25Q,
+                        color: '#c7dc68'
+                    }, {
+                        name: '50%',
+                        type: 'line',
+                        data: rate50Q,
+                        color: '#c7dc68'
+                    }, {
+                        name: '75%',
+                        type: 'line',
+                        data: rate75Q,
+                        color: '#c7dc68'
+                    }, {
+                        name: '100%',
+                        type: 'line',
+                        data: rate100Q,
+                        color: '#99ab4e'
+                    }, {
+                        name: '平均得分率',
+                        type: 'line',
+                        data: avgQ,
+                        color: '#2792c3'
+                    }, {
+                        name: '我的得分率',
+                        type: 'line',
+                        data: scoreQ,
+                        color: '#e2041b'
                     }
+
                     ]
                 };
 
@@ -549,7 +691,8 @@
                 };
 
                 // 为echarts对象加载数据 
-                sChart.setOption(sOp);
+                sChart1.setOption(sOp1);
+                sChart2.setOption(sOp2);
                 oChart1.setOption(oOp1);
                 oChart2.setOption(oOp2);
                 oChart3.setOption(oOp3);
@@ -598,8 +741,10 @@
     </div>
 
     <div id="message"></div>
+    <div id="fileInfo"></div>
+    <div id="score1" class="chart" style="display: none"></div>
+    <div id="score2" class="chart" style="display: none"></div>
     <div id="fileOutput"></div>
-    <div id="score" class="chart" style="display: none"></div>
     <div id="order1" class="chart" style="display: none"></div>
     <div id="order2" class="chart" style="display: none"></div>
     <div id="order3" class="chart" style="display: none"></div>