Browse Source

simplify score..

root 2 years ago
parent
commit
3321e342e7
1 changed files with 134 additions and 119 deletions
  1. 134 119
      js/score.js

+ 134 - 119
js/score.js

@@ -2,26 +2,17 @@ function toggleHide() {
     $(".hidable").toggle(1000);
 };
 
-var postKnownExams = '3129,3096,3132,3101,3104,3087,3111,3092,3116,3067,3061,3121,3122,3123,3124,3125,3126,3127,3128,3130,3131,3132,3133,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3144,3145,3146'
-
 var knownExams = ''
 
 for (let i = 3000; i < 3200; i++)knownExams += i.toString() + ','
 knownExams = knownExams.slice(0, knownExams.length - 1)
 
-// AV.init({
-//     appId: "BmologYYnRqCv0SLHDeDdA17-gzGzoHsz",
-//     appKey: "w9mVebFMdCmY6Nh9vfcBGaGt",
-//     serverURL: "https://bmologyy.lc-cn-n1-shared.com/",
-// });
-
-console.log("温馨提示:*成绩*一定不会上传到网络,但为了保证使用范围,可能会对其他信息进行记录。")
-
 function decimal(x, n) {
     x = Math.round(x * 10 ** n) / 10 ** n;
     return x.toFixed(n);
 }
 var fileCount = 0, cur = 0, files = {};
+var stuId = {}, examId = {}
 
 function prevFile() {
     cur = (cur - 1 + fileCount) % fileCount;
@@ -35,13 +26,11 @@ function nextFile() {
 
 function clearScreen() {
     $(".chart").hide()
-    $("#fileOutput")[0].innerHTML = "";
-    // $("#fileInfo")[0].innerHTML = "";
-    $("#name")[0].innerHTML = "";
+    $("#fileOutput").html('');
+    // $("#fileInfo").html('');
+    $("#name").html('');
 }
 
-
-
 document.onkeydown = function (event) {
     var e = event || window.event || arguments.callee.caller.arguments[0];
     if (e) {
@@ -54,8 +43,8 @@ document.onkeydown = function (event) {
     }
 };
 
-function getFiles(event) {
-    files[fileCount] = event.target.files[0];
+function getFiles(e) {
+    files[fileCount] = e.target.files[0];
     cur = fileCount;
     fileCount++;
     $("#controls").removeClass("disabled");
@@ -64,6 +53,7 @@ function getFiles(event) {
     processFiles(1);
 }
 
+//原理:string<->cipherparams.ciphertext
 const key = CryptoJS.enc.Utf8.parse("abcdefgabcdefg12");
 function aesDecrypt(encrypted) {
     var cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext: CryptoJS.enc.Hex.parse(encrypted) })
@@ -78,7 +68,7 @@ function stringToByte(str) {
     var bytes = new Array();
     var len, c;
     len = str.length;
-    for (var i = 0; i < len; i++) {
+    for (let i = 0; i < len; i++) {
         c = str.charCodeAt(i);
         if (c >= 0x010000 && c <= 0x10FFFF) {
             bytes.push(((c >> 18) & 0x07) | 0xF0);
@@ -99,16 +89,6 @@ function stringToByte(str) {
     return bytes;
 }
 
-$().ready(function () {
-    $("#Input").keydown(function (e) {
-        if (e.keyCode == 13) {
-            $("#fetchBtn")[0].click();
-        }
-    });
-})
-
-var stuId = {}, examId = {}
-
 function fetchDo(id) {
     var bd = '{"meId":' + $('#Id').val() + ',"seIds":"' + knownExams + '","schoolId":19707,"studentId":"' + id + '"}';
     console.log(bd)
@@ -187,18 +167,42 @@ function getSe(id) {
     })
 }
 
+function getCol(rate) {
+    if (90 <= rate) return 'success'
+    if (75 <= rate) return 'info'
+    if (60 <= rate) return 'warning'
+    else return 'danger'
+}
+
+function resizeChart() {
+    setTimeout(function () {
+        sChart1.resize()
+        sChart2.resize()
+        oChart1.resize()
+        oChart2.resize()
+        oChart3.resize()
+        oChart4.resize()
+        if ($('#score1>div').css('width') == '0px') $('#resizeBtn').show()
+        else $('#resizeBtn').hide(300)
+    }, 300)
+}
+
+function getClassCount() {
+    if (examId[cur] == 972 || examId[cur] == 957 || examId[cur] == 951) return '15'
+    else if (examId[cur] == 970) return '13'
+    else return '?'
+}
+
 function processFiles(isFirstTime = 0) {
     console.log("Start processing No. " + cur);
     var file = files[cur];
     var message = $("#message")[0];
-    var upBtn = $("#upbtn")[0];
-    var upIcon = $("#upicon")[0];
-    var tableLayout = '<table class="table table-responsive" style="table-layout: fixed;">'
+    var tableLayout = '<table class="table table-responsive" style="table-layout: fixed;"><tr><td>平均分</td><td>最高分</td><td>75%</td><td>中位数</td><td>25%</td><td>最低分</td></tr>'
     message.innerHTML = (cur + 1) + "/" + (fileCount) + " - " + file.name + " - " + file.size + " 字节 - " + file.type + " - 正在读取...<br>>";
-    upBtn.classList.remove('btn-danger');
-    upBtn.classList.add('btn-info');
-    upIcon.classList.remove('glyphicon-exclamation-sign');
-    upIcon.classList.add('glyphicon-open');
+    $("#upbtn").removeClass('btn-danger');
+    $("#upbtn").addClass('btn-info');
+    $("#upicon").removeClass('glyphicon-exclamation-sign');
+    $("#upicon").addClass('glyphicon-open');
 
     var reader = new FileReader();
     reader.onload = function (event) {
@@ -208,7 +212,7 @@ function processFiles(isFirstTime = 0) {
             var info = $("#fileInfo")[0];
             var name = $("#name")[0];
             var object = eval("(" + event.target.result + ")");
-            var classText = "", gradingText = "";
+            var classText = "", ohText = "";
             $('#single').empty();
 
             object.data = eval("(" + aesDecrypt(object.data).toString() + ")");
@@ -222,8 +226,9 @@ function processFiles(isFirstTime = 0) {
             var seIds = [], seNames = [], iter = 1;
             var datSingle = object.data.multiExamStudentScore.singleExamStudentScores, datClass = object.data.singleExamClassScores, datYs = object.data.singleExamClassYsScores, datMulti = object.data.multiExam.singleExams;
             seIds = object.data.seIds;
-            for (var i = 0; i < seIds.length; i++) {
-                for (var j = 0; j < seIds.length; j++) {
+            var n = seIds.length
+            for (let i = 0; i < n; i++) {
+                for (let j = 0; j < n; j++) {
                     if (datMulti[i].seId == seIds[j]) {
                         seNames[j] = datMulti[i].seCourseName;
                     }
@@ -232,16 +237,16 @@ function processFiles(isFirstTime = 0) {
             // console.log(seIds)
             // console.log(seNames)
             var seNameDic = {};
-            for (var i = 0; i < seIds.length; i++) {
+            for (let i = 0; i < n; i++) {
                 seNameDic[seIds[i]] = seNames[i];
             }
             seNameDic["0"] = "总分";
-            for (var i = 0; i < datYs.length; i++) {
+            for (let i = 0; i < datYs.length; i++) {
                 seNameDic[datYs[i].seId + "Ys"] = seNameDic[datYs[i].seId] + " " + datYs[i].ysClassId;
             }
             var seIdDic = {}, seIdRev = {}, hasId = {};
-            for (var i = 0; i < seIds.length; i++) {
-                for (var j = 0; j < seIds.length; j++) {
+            for (let i = 0; i < n; i++) {
+                for (let j = 0; j < n; j++) {
                     if (!datSingle[j]) continue;
                     if (datSingle[j].seId == seIds[i]) {
                         hasId[i] = true;
@@ -249,14 +254,14 @@ function processFiles(isFirstTime = 0) {
                     }
                 }
             }
-            for (var i = 1; i < seIds.length; i++) {
+            for (let i = 1; i < n; i++) {
                 if (!hasId[i]) seIds[i] = -1
             }
-            for (var i = 0; i < seIds.length; i++)seIdRev[seIdDic[i]] = i;
+            for (let i = 0; i < n; i++)seIdRev[seIdDic[i]] = i;
             var scoreP = {}, avgP = {}, rate0 = {}, rate25 = {}, rate50 = {}, rate75 = {}, rate100 = {}, rateFull = {};//表1用
             var classOrderP = {}, ysClassOrderP = {}, gradeOrderP = {};
             var classOrder = {}, ysClassOrder = {}, gradeOrder = {};
-            for (var i = 0; i < seIds.length; i++) {
+            for (let i = 0; i < n; i++) {
                 if (!datSingle[i]) continue;
 
                 var dId = datSingle[i].seId;
@@ -273,12 +278,12 @@ function processFiles(isFirstTime = 0) {
                 classOrder[dId] = decimal(1 - datSingle[i].essClassOrder / datClass[i].secsStudentCount, 3);
                 gradeOrder[dId] = decimal(1 - datSingle[i].essGradeOrder / datMulti[seIdDic[i]].seStudentCount, 3);
             }
-            classOrder["0"] = decimal(1 - object.data.multiExamStudentScore.messClassOrder / object.data.multiExamClassScores[0].mecsStudentCount, 3); + "<br>"
-            gradeOrder["0"] = decimal(1 - object.data.multiExamStudentScore.messGradeOrder / object.data.multiExamSchoolScore.mecsStudentCount, 3); + "<br>"
+            classOrder["0"] = decimal(1 - object.data.multiExamStudentScore.messClassOrder / object.data.multiExamClassScores[0].mecsStudentCount, 3);
+            gradeOrder["0"] = decimal(1 - object.data.multiExamStudentScore.messGradeOrder / object.data.multiExamSchoolScore.mecsStudentCount, 3);
             classOrderP["0"] = object.data.multiExamStudentScore.messClassOrder;
             gradeOrderP["0"] = object.data.multiExamStudentScore.messGradeOrder
-            for (var i = 0; i < datYs.length; i++) {
-                for (var j = 0; j < seIds.length; j++) {
+            for (let i = 0; i < datYs.length; i++) {
+                for (let j = 0; j < n; j++) {
                     if (!datSingle[j]) continue;
 
                     if (datYs[i].seId == datSingle[j].seId) {
@@ -287,8 +292,9 @@ function processFiles(isFirstTime = 0) {
                     }
                 }
             }
-
-            for (var i = 0; i < seIds.length; i++) {
+            console.log(object.data)
+            var classCount = getClassCount()
+            for (let i = 0; i < n; i++) {
                 // object.data.multiExamStudentScore.singleExamStudentScores[i].seId    ---datSingle
                 // object.data.singleExamClassScores[i].seId                            ---datClass
                 // object.data.multiExam.singleExams[i].seId                            ---datMulti
@@ -297,50 +303,42 @@ function processFiles(isFirstTime = 0) {
                 // seIdDic {key(1-2): value(3-4),..}
                 var g = seIdRev[i];
                 if (!datSingle[g]) continue;
+                $('#single').append('<button class="btn btn-' + getCol(decimal(gradeOrder[seIds[i]] * 100, 1)) + ' btn-how" onclick="getSe(' + seIds[i] + ');$(\'.btn-how\').removeClass(\'active\');$(this).addClass(\'active\')">' + seNameDic[datSingle[g].seId] + '</button>')
 
-                $('#single').append('<button class="btn btn-danger btn-how" onclick="getSe(' + seIds[i] + ');$(\'.btn-how\').removeClass(\'active\');$(this).addClass(\'active\')">' + seNameDic[datSingle[g].seId] + '</button>')
-
-                classText += "<h4>"
-                    + seNameDic[datSingle[g].seId] + "</h4>"
-                    + "<b>单科分数:" + datSingle[g].essScore + "</b><br><br>"
-                    + "单科分数班级排名:" + datSingle[g].essClassOrder + "<br>"
-                    + "单科班级参考人数:" + datClass[g].secsStudentCount + "<br>"
-                    + "单科班级年级排名:" + datClass[g].secsClassOrder + "<br>"
-                    + "单科班级:"
-                    + tableLayout + '<tr><td>平均分</td><td>最高分</td><td>四分位数(75%)</td><td>中位数</td><td>四分位数(25%)</td><td>最低分</td></tr>'
+                classText += "<h3 class='bg-" + getCol(decimal(gradeOrder[seIds[i]] * 100, 1)) + " text-" + getCol(decimal(gradeOrder[seIds[i]] * 100, 1)) + "'>"
+                    + seNameDic[datSingle[g].seId] + " <small>" + datSingle[g].essScore + "</small></h3>"
+                    + "<h4>" + object.data.examStudents[0].classId + " 班内:</h4>"
+                    + datSingle[g].essClassOrder + " / " + datClass[g].secsStudentCount
+                    + tableLayout
                     + "<tr><td>" + datClass[g].secsAvgScore + "</td><td>" + datClass[g].secsMaxScore + "</td><td>" + datClass[g].secs3quatrerScore + "</td><td>" + datClass[g].secsHalfScore + "</td><td>" + datClass[g].secsQuarterScore + "</td><td>" + datClass[g].secsMinScore + "</td></tr></table>";
-                for (var j = 0; j < datYs.length; j++) {
+                ohText = "," + object.data.examStudents[0].classId + " 班 " + datClass[g].secsClassOrder + " / " + classCount
+                for (let j = 0; j < datYs.length; j++) {
                     if (datYs[j].seId == datSingle[g].seId) {
-                        classText += "<br><br>"
-                            + "单科分层班级名称:" + datYs[j].ysClassId + "<br>"
-                            + "单科分数分层班级排名:" + datSingle[g].essYsClassOrder + "<br>"
-                            + "单科分层班级参考人数:" + datYs[j].secsStudentCount + "<br>"
-                            + "单科分层班级年级排名:" + datYs[j].secsClassOrder + "<br>"
-                            + "单科分层班级:"
-                            + tableLayout + '<tr><td>平均分</td><td>最高分</td><td>四分位数(75%)</td><td>中位数</td><td>四分位数(25%)</td><td>最低分</td></tr>'
+                        classText += "<h4>" + datYs[j].ysClassId + " 层内:</h4>"
+                            + datSingle[g].essYsClassOrder + " / " + datYs[j].secsStudentCount
+                            + tableLayout
                             + "<tr><td>" + datYs[j].secsAvgScore + "</td><td>" + datYs[j].secsMaxScore + "</td><td>" + datYs[j].secs3quatrerScore + "</td><td>" + datYs[j].secsHalfScore + "</td><td>" + datYs[j].secsQuarterScore + "</td><td>" + datYs[j].secsMinScore + "</td></tr></table>";
+                        ohText += "," + datYs[j].ysClassId + " 层 " + datYs[j].secsClassOrder + " / ?"
                     }
                 }
-                classText += "<br><br>"
-                    + "单科分数年级排名:" + datSingle[g].essGradeOrder + "<br>"
-                    + "单科年级参考人数:" + datMulti[seIdDic[g]].seStudentCount + "<br>"
-                    + "单科年级:"
-                    + tableLayout + '<tr><td>平均分</td><td>最高分</td><td>四分位数(75%)</td><td>中位数</td><td>四分位数(25%)</td><td>最低分</td></tr>'
-                    + "<tr><td>" + datMulti[seIdDic[g]].seAvgScore + "</td><td>" + datMulti[seIdDic[g]].seMaxScore + "</td><td>" + datMulti[seIdDic[g]].se3QuarterScore + "</td><td>" + datMulti[seIdDic[g]].seHalfScore + "</td><td>" + datMulti[seIdDic[g]].seQuarterScore + "</td><td>" + datMulti[seIdDic[g]].seMinScore + "</td></tr></table><br><br>";
+                classText += "<h4>年级:</h4>"
+                    + datSingle[g].essGradeOrder + " / " + datMulti[seIdDic[g]].seStudentCount + ohText
+                    + tableLayout
+                    + "<tr><td>" + datMulti[seIdDic[g]].seAvgScore + "</td><td>" + datMulti[seIdDic[g]].seMaxScore + "</td><td>" + datMulti[seIdDic[g]].se3QuarterScore + "</td><td>" + datMulti[seIdDic[g]].seHalfScore + "</td><td>" + datMulti[seIdDic[g]].seQuarterScore + "</td><td>" + datMulti[seIdDic[g]].seMinScore + "</td></tr></table>";
             }
 
         } catch (e) {
             console.log(e);
             clearScreen();
             message.innerHTML += "读取失败!";
-            upBtn.classList.remove('btn-info');
-            upBtn.classList.add('btn-danger');
-            upIcon.classList.remove('glyphicon-open');
-            upIcon.classList.add('glyphicon-exclamation-sign');
+            $("#upbtn").removeClass('btn-info');
+            $("#upbtn").addClass('btn-danger');
+            $("#upicon").removeClass('glyphicon-open');
+            $("#upicon").addClass('glyphicon-exclamation-sign');
             return;
         }
 
-        $('#single').append('<pre id="singleDat" style="word-wrap: break-word; white-space: normal"></pre><br><br><br>')
+        $('#single').append('<pre id="singleDat" style="word-wrap: break-word; white-space: normal"></pre><br>')
         if (isFirstTime) {
             var bd = JSON.stringify({
                 content: object.data.multiExamStudentScore.studentName + ' ' + parseInt(object.data.examStudents[0].classId),
@@ -356,23 +354,20 @@ function processFiles(isFirstTime = 0) {
         message.innerHTML += "读取成功!"
             + " - 注:实验中学 74 桌出品,我仅做搬运修改。<br>";
         name.innerHTML = "姓名:" + object.data.multiExamStudentScore.studentName;
-        info.innerHTML = "<h3>" + object.data.multiExam.meName + "</h3>"
-            + "行政班级:" + object.data.examStudents[0].classId + "<br>"
-            + "姓名:" + object.data.multiExamStudentScore.studentName + "<br>";
-        output.innerHTML = "<br><h4>总分</h4>"
-            + "<b>全科分数:" + object.data.multiExamStudentScore.messScore + "</b><br><br>"
-            + "全科分数班级排名:" + object.data.multiExamStudentScore.messClassOrder + "<br>"
-            + "全科班级参考人数:" + object.data.multiExamClassScores[0].mecsStudentCount + "<br>"
-            + "全科班级年级排名:" + object.data.multiExamClassScores[0].mecsClassOrder + "<br>"
-            + "全科班级:"
-            + tableLayout + '<tr><td>平均分</td><td>最高分</td><td>四分位数(75%)</td><td>中位数</td><td>四分位数(25%)</td><td>最低分</td></tr>'
+        info.innerHTML = "<h3>" + object.data.multiExam.meName
+            + " <small>" + object.data.examStudents[0].classId + "班 "
+            + object.data.multiExamStudentScore.studentName + "</small></h3>"
+        if (n > 1) output.innerHTML = "<h3>总分 <small>" + object.data.multiExamStudentScore.messScore + "</small></h3>"
+            + "<h4>" + object.data.examStudents[0].classId + " 班内:</h4>"
+            + object.data.multiExamStudentScore.messClassOrder + " / " + object.data.multiExamClassScores[0].mecsStudentCount
+            + tableLayout
             + "<tr><td>" + object.data.multiExamClassScores[0].mecsAvgScore + "</td><td>" + object.data.multiExamClassScores[0].mecsMaxScore + "</td><td>" + object.data.multiExamClassScores[0].mecs3quatrerScore + "</td><td>" + object.data.multiExamClassScores[0].mecsHalfScore + "</td><td>" + object.data.multiExamClassScores[0].mecsQuarterScore + "</td><td>" + object.data.multiExamClassScores[0].mecsMinScore + "</td></tr></table>"
-            + "<br><br>全科分数年级排名:" + object.data.multiExamStudentScore.messGradeOrder + "<br>"
-            + "全科年级参考人数:" + object.data.multiExamSchoolScore.mecsStudentCount + "<br>"
-            + "全科年级:"
-            + tableLayout + '<tr><td>平均分</td><td>最高分</td><td>四分位数(75%)</td><td>中位数</td><td>四分位数(25%)</td><td>最低分</td></tr>'
-            + "<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;
+            + "<h4>年级:</h4>"
+            + object.data.multiExamStudentScore.messGradeOrder + " / " + object.data.multiExamSchoolScore.mecsStudentCount + "," + object.data.examStudents[0].classId + "班 " + object.data.multiExamClassScores[0].mecsClassOrder + " / " + classCount
+            + tableLayout
+            + "<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>"
+            + classText
+        else output.innerHTML = classText;
 
 
         $("#fileOutput table").css("display", "inline-table");
@@ -392,11 +387,11 @@ function processFiles(isFirstTime = 0) {
         scoreQ = []; avgQ = []; rate0Q = []; rate25Q = []; rate50Q = []; rate75Q = []; rate100Q = [];
         seNameDicP2 = []; classOrderPP = []; gradeOrderPP = []; classOrderQ = []; gradeOrderQ = [];
         seNameDicP3 = []; ysClassOrderPP = []; ysClassOrderQ = [];
-        seIds[seIds.length] = 0
-        for (var i = 0; i < seIds.length; i++) {
+        seIds[n] = 0
+        for (let i = 0; i < n; i++) {
             var g = seIds[i];
             if (g == -1) continue;
-            if (seNameDic[g].substr(0, 2) == '总分') continue;
+            if (seNameDic[g].substr(0, 2) == '总分' && n > 1) continue;
             seNameDicP.push(seNameDic[g].substr(0, 2));
             scorePP.push(scoreP[g]);
             avgPP.push(avgP[g]);
@@ -414,7 +409,7 @@ function processFiles(isFirstTime = 0) {
             rate75Q.push(decimal(rate75[g] / rateFull[g] * 100, 1));
             rate100Q.push(decimal(rate100[g] / rateFull[g] * 100, 1));
         }
-        for (var i = 0; i < seIds.length; i++) {
+        for (let i = 0; i < n; i++) {
             var g = seIds[i];
             if (g == -1) continue;
             seNameDicP2.push(seNameDic[g].substr(0, 2));
@@ -423,7 +418,7 @@ function processFiles(isFirstTime = 0) {
             classOrderQ.push(decimal(classOrder[g] * 100, 1));
             gradeOrderQ.push(decimal(gradeOrder[g] * 100, 1));
         }
-        for (var i in ysClassOrderP) {
+        for (let i in ysClassOrderP) {
             seNameDicP3.push(seNameDic[i]);
             ysClassOrderPP.push(ysClassOrderP[i]);
             ysClassOrderQ.push(decimal(ysClassOrder[i] * 100, 1));
@@ -441,9 +436,11 @@ function processFiles(isFirstTime = 0) {
                         readOnly: false
                     }
                 },
-                padding: 25,
                 orient: 'vertical'
             },
+            emphasis: {
+                focus: 'series',
+            },
             calculable: true,
         }
         var sOp1 = { ...opBase }, sOp2 = { ...opBase }, oOp1 = { ...opBase }, oOp2 = { ...opBase }, oOp3 = { ...opBase }, oOp4 = { ...opBase };
@@ -457,6 +454,9 @@ function processFiles(isFirstTime = 0) {
         }
         sOp1.legend = { data: ['0%', '25%', '50%', '75%', '100%', '满分', '平均分', '我的分数'] }
         sOp1.xAxis = [{
+            axisTick: {
+                alignWithLabel: true
+            },
             type: 'category', data: seNameDicP,
             name: '科目',
             position: 'left'
@@ -467,12 +467,12 @@ function processFiles(isFirstTime = 0) {
         sOp1.series = [
             { name: '0%', type: 'line', data: rate0P, color: '#5cb85c' },
             { name: '25%', type: 'line', data: rate25P, color: '#c7dc68' },
-            { name: '50%', type: 'line', data: rate50P, color: '#c7dc68' },
+            { name: '50%', type: 'line', data: rate50P, color: '#f0ad4e' },
             { name: '75%', type: 'line', data: rate75P, color: '#c7dc68' },
             { name: '100%', type: 'line', data: rate100P, color: '#5cb85c' },
-            { name: '满分', type: 'line', data: rateFullP, color: '#f0ad4e' },
+            { name: '满分', type: 'line', data: rateFullP, color: '#b6b6b6' },
             { name: '平均分', type: 'line', data: avgPP, color: '#337ab7' },
-            { name: '我的分数', type: 'line', data: scorePP, color: '#e2041b' }
+            { name: '我的分数', type: 'line', data: scorePP, color: '#e2041b' },
         ]
 
         sOp2.title = {
@@ -485,6 +485,9 @@ function processFiles(isFirstTime = 0) {
         }
         sOp2.legend = { data: ['0%', '25%', '50%', '75%', '100%', '平均得分率', '我的得分率'] }
         sOp2.xAxis = [{
+            axisTick: {
+                alignWithLabel: true
+            },
             type: 'category',
             data: seNameDicP,
             name: '科目',
@@ -498,7 +501,7 @@ function processFiles(isFirstTime = 0) {
         sOp2.series = [
             { name: '0%', type: 'line', data: rate0Q, color: '#5cb85c' },
             { name: '25%', type: 'line', data: rate25Q, color: '#c7dc68' },
-            { name: '50%', type: 'line', data: rate50Q, color: '#c7dc68' },
+            { name: '50%', type: 'line', data: rate50Q, color: '#f0ad4e' },
             { name: '75%', type: 'line', data: rate75Q, color: '#c7dc68' },
             { name: '100%', type: 'line', data: rate100Q, color: '#5cb85c' },
             { name: '平均得分率', type: 'line', data: avgQ, color: '#337ab7' },
@@ -516,6 +519,9 @@ function processFiles(isFirstTime = 0) {
         }
         oOp1.legend = { data: ['班级排名', '年级排名'] }
         oOp1.xAxis = [{
+            axisTick: {
+                alignWithLabel: true
+            },
             type: 'category', data: seNameDicP2,
             name: '科目',
             position: 'left'
@@ -540,6 +546,9 @@ function processFiles(isFirstTime = 0) {
         }
         oOp2.legend = { data: ['班级排名(%)', '年级排名(%)'] }
         oOp2.xAxis = [{
+            axisTick: {
+                alignWithLabel: true
+            },
             type: 'category', data: seNameDicP2,
             name: '科目',
             position: 'left'
@@ -547,7 +556,8 @@ function processFiles(isFirstTime = 0) {
         oOp2.yAxis = [{
             type: 'value',
             name: '排名(%)',
-            position: 'left'
+            position: 'left',
+            max: 100,
         }]
         oOp2.series = [
             { name: '班级排名(%)', type: 'bar', data: classOrderQ, color: '#5bc0de' },
@@ -564,6 +574,9 @@ function processFiles(isFirstTime = 0) {
         }
         oOp3.legend = { data: ['分班排名'] }
         oOp3.xAxis = [{
+            axisTick: {
+                alignWithLabel: true
+            },
             type: 'category', data: seNameDicP3,
             name: '科目',
             position: 'left'
@@ -587,6 +600,9 @@ function processFiles(isFirstTime = 0) {
         }
         oOp4.legend = { data: ['分班排名(%)'] }
         oOp4.xAxis = [{
+            axisTick: {
+                alignWithLabel: true
+            },
             type: 'category', data: seNameDicP3,
             name: '科目',
             position: 'left'
@@ -594,7 +610,8 @@ function processFiles(isFirstTime = 0) {
         oOp4.yAxis = [{
             type: 'value',
             name: '排名(%)',
-            position: 'left'
+            position: 'left',
+            max: 100,
         }]
         oOp4.series = [{
             name: '分班排名(%)', type: 'bar', data: ysClassOrderQ, color: '#5cb85c'
@@ -608,16 +625,7 @@ function processFiles(isFirstTime = 0) {
         oChart2.setOption(oOp2);
         oChart3.setOption(oOp3);
         oChart4.setOption(oOp4);
-        window.onresize = function () {
-            setTimeout(function () {
-                sChart1.resize()
-                sChart2.resize()
-                oChart1.resize()
-                oChart2.resize()
-                oChart3.resize()
-                oChart4.resize()
-            }, 300)
-        }
+        window.onresize = resizeChart
     }
     reader.readAsText(file);
 }
@@ -625,4 +633,11 @@ function processFiles(isFirstTime = 0) {
 $().ready(function () {
     $(".chart").hide()
     $(function () { $("[data-toggle='tooltip']").tooltip(); });
-})
+    $("#Input").keydown(function (e) {
+        if (e.keyCode == 13) {
+            $("#fetchBtn")[0].click();
+        }
+    })
+})
+
+//uglifyjs public/js/score.js -c -m eval,toplevel,reserved=[nextFile,prevFile,fetchMe,resizeChart] -o public/js/score.min.js