newRedrankvue.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. // dependency : newCommon
  2. var RedRankTable = new Module("#table-rank", "fcBiWorkerDaily");
  3. RedRankTable.slideLen = 16;
  4. RedRankTable.slides = 0;
  5. RedRankTable.parts = 4;
  6. RedRankTable.partLen = 4;
  7. RedRankTable.curSlide = 0;
  8. RedRankTable.drawData = function (data) {
  9. // showSlide
  10. this.showSlide(this.curSlide, data);
  11. };
  12. RedRankTable.showSlide = function (slide, data) {
  13. for(var part = 0; part < this.parts; part++){
  14. this.showPart(slide, part, data);
  15. }
  16. };
  17. RedRankTable.showPart = function(slide, part, data){
  18. var lpos = slide * this.slideLen + (part * this.partLen);
  19. var rpos = slide * this.slideLen + ((part+1) * this.partLen);
  20. var partList = [];
  21. for (var i = lpos; i < rpos; i++) {
  22. var one = data.getSorted(i);
  23. if(one == null || one == undefined) {
  24. partList[partList.length] = {passNum : 0, failNum: 0, failRate: 0, workerId: 0, fcDay: new Date().toLocaleDateString()};
  25. } else {
  26. partList[partList.length] = one.jsonObj;
  27. partList[partList.length].failRate = partList[partList.length].failRate/100.0;
  28. }
  29. partList[partList.length - 1].workerName = getUserName(partList[partList.length - 1].workerId);
  30. if("[用户:"+0+"]" == partList[partList.length - 1].workerName){
  31. partList[partList.length - 1].workerName = "-";
  32. }
  33. partList[partList.length - 1].color = true;
  34. }
  35. let k = newRedrankvue.parting[part].length;
  36. for(let i = 0; i < k; i++){
  37. newRedrankvue.parting[part].pop();
  38. }
  39. for(let i = 0; i < partList.length; i++){
  40. newRedrankvue.parting[part].push(partList[i]);
  41. }
  42. };
  43. RedRankTable.tickInterval = 1000;
  44. RedRankTable.tick = function(){
  45. var totalDataLen = this.activeData != null ? this.activeData.len() : 0;
  46. if(this.slides != Math.ceil(totalDataLen / this.slideLen)){
  47. this.slides = Math.ceil(totalDataLen / this.slideLen);
  48. this.curSlide = 0;
  49. } else {
  50. this.curSlide = (this.curSlide + 1) % this.slides;
  51. }
  52. };
  53. RedRankTable.init();
  54. var newRedrankvue = new Vue({
  55. el: '#redrank',
  56. data: {
  57. parting:[[{},{},{},{}], [{},{},{},{}], [{},{},{},{}], [{},{},{},{}]],
  58. title: '本厂今日生产能手榜'
  59. },
  60. methods: {
  61. clicktitle: function () {
  62. alert("Hello! This is Title");
  63. }
  64. }
  65. });
  66. var RedRankTablePlugin = new (function() {
  67. this.workerDailyService = new DataObjectService("fcBiWorkerDaily", ONDEMAND | AUTO | FAST, "?type=1");
  68. this.tick = function(obj){
  69. RedRankTable.setData(obj.workerDailyService.getList());
  70. };
  71. this.setup = function(obj){
  72. setInterval(obj.tick, 1000, obj);
  73. };
  74. this.setup(this);
  75. })();
  76. (function() {
  77. setInterval(RedRankTablePlugin.tick, 1000);
  78. })();