// dependency : newCommon var RedRankTable = new Module("#table-rank", "fcBiWorkerDaily"); RedRankTable.slideLen = 16; RedRankTable.slides = 0; RedRankTable.parts = 4; RedRankTable.partLen = 4; RedRankTable.curSlide = 0; RedRankTable.drawData = function (data) { // showSlide this.showSlide(this.curSlide, data); }; RedRankTable.showSlide = function (slide, data) { for(var part = 0; part < this.parts; part++){ this.showPart(slide, part, data); } }; RedRankTable.showPart = function(slide, part, data){ var lpos = slide * this.slideLen + (part * this.partLen); var rpos = slide * this.slideLen + ((part+1) * this.partLen); var partList = []; for (var i = lpos; i < rpos; i++) { var one = data.getSorted(i); if(one == null || one === undefined) { partList[partList.length] = {passNum : 0, failNum: 0, failRate: 0, workerId: 0, fcDay: new Date().toLocaleDateString()}; } else { partList[partList.length] = one.jsonObj; partList[partList.length - 1].failRate = partList[partList.length - 1].failRate/100.0; } partList[partList.length - 1].workerName = getUserName(partList[partList.length - 1].workerId); if("[用户:"+0+"]" === partList[partList.length - 1].workerName){ partList[partList.length - 1].workerName = "-"; } partList[partList.length - 1].color = true; } let k = newRedrankvue.parting[part].length; for(let i = 0; i < k; i++){ newRedrankvue.parting[part].pop(); } for(let i = 0; i < partList.length; i++){ newRedrankvue.parting[part].push(partList[i]); } }; RedRankTable.tickInterval = 1000; RedRankTable.tick = function(){ var totalDataLen = this.activeData != null ? this.activeData.len() : 0; if(this.slides !== Math.ceil(totalDataLen / this.slideLen)){ this.slides = Math.ceil(totalDataLen / this.slideLen); this.curSlide = 0; } else { this.curSlide = (this.curSlide + 1) % this.slides; } }; RedRankTable.init(); var newRedrankvue = new Vue({ el: '#redrank', data: { parting:[[{},{},{},{}], [{},{},{},{}], [{},{},{},{}], [{},{},{},{}]], title: '本厂今日生产能手榜' }, methods: { clicktitle: function () { alert("Hello! This is Title"); }, useId: function () { this.useSort("Id"); }, usePass: function () { this.useSort("Pass"); }, useFail: function () { this.useSort("Fail"); }, useRate: function () { this.useSort("Rate"); }, useSort: function (column) { let sorter = function () {}; switch (column) { case "Pass": return RedRankTablePlugin.sortPass; case "Fail": return RedRankTablePlugin.sortFail; case "Rate": return RedRankTablePlugin.sortRate; case "Id": return RedRankTablePlugin.sortId; } RedRankTablePlugin.workerDailyService.list.sortBy(sorter); console.warn(column); } } }); var RedRankTablePlugin = new (function() { this.workerDailyService = new DataObjectService("fcBiWorkerDaily", ONDEMAND | AUTO | FAST, "?type=1"); this.tick = function(obj){ RedRankTable.setData(RedRankTablePlugin.workerDailyService.getList()); }; this.sortPass = function (l, r){ var q = {}; checkNull(l, r, q); if(q.out !== -2) return q.out; var t = calcCompare(l.jsonObj.passNum, r.jsonObj.passNum, q); return t; }; this.sortFail = function (l, r){ var q = {}; checkNull(l, r, q); if(q.out !== -2) return q.out; var t = calcCompare(l.jsonObj.failNum, r.jsonObj.failNum, q); return t; }; function checkNull(l, r, q) { if (l.jsonObj == null || l.jsonObj === undefined) { if (r.jsonObj == null || r.jsonObj === undefined) { q.out = 0; return; } q.out = -1; return; } if (r.jsonObj == null || r.jsonObj === undefined) { q.out = 1; return; } if(r.jsonObj == null || r.jsonObj === undefined){ q = 1; return; } q.out = -2; } function calcCompare(l, r, q) { if (l > r) { q = 1; } else if (l === r) { q = 0; } else if (l < r) { q = -1; } else { console.error("login error"); q = 0; } return q; } this.sortRate = function (l, r){ var q = {}; checkNull(l, r, q); if(q.out !== -2) return q.out; q = calcCompare(l.jsonObj.failRate, r.jsonObj.failRate, q); }; this.sortId = function (l, r){ var q = {}; checkNull(l, r, q); if(q.out !== -2) return q.out; var t = calcCompare(l.jsonObj.workerId, r.jsonObj.workerId, q); return t; }; this.setup = function(obj){ setInterval(obj.tick, 1000, obj); }; this.setup(this); })(); (function() { setInterval(RedRankTablePlugin.tick, 1000); })();