newRedrankvue.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. // dependency : newCommon
  2. var RedRankTable = new Module("#table-rank", "fcBiWorkerDaily");
  3. RedRankTable.slides = 0;
  4. RedRankTable.parts = 3;
  5. RedRankTable.partLen = 4;
  6. RedRankTable.slideLen = RedRankTable.parts * RedRankTable.partLen;
  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, totalNum:0, workerId: 0, fcDay: new Date().toLocaleDateString()};
  25. } else {
  26. partList[partList.length] = one.jsonObj;
  27. partList[partList.length - 1].failRate = partList[partList.length - 1].failRate/100.0;
  28. partList[partList.length - 1].totalNum = partList[partList.length - 1].failNum + partList[partList.length - 1].passNum;
  29. }
  30. partList[partList.length - 1].workerName = getUserName(partList[partList.length - 1].workerId);
  31. if("[用户:"+0+"]" === partList[partList.length - 1].workerName){
  32. partList[partList.length - 1].workerName = "-";
  33. }
  34. partList[partList.length - 1].color = true;
  35. }
  36. let k = newRedrankvue.parting[part].length;
  37. for(let i = 0; i < k; i++){
  38. newRedrankvue.parting[part].pop();
  39. }
  40. for(let i = 0; i < partList.length; i++){
  41. newRedrankvue.parting[part].push(partList[i]);
  42. }
  43. };
  44. RedRankTable.tickInterval = 2000;
  45. RedRankTable.tick = function(obj){
  46. var totalDataLen = obj.activeData != null ? obj.activeData.len() : 0;
  47. if(obj.slides !== Math.ceil(totalDataLen / obj.slideLen)){
  48. obj.slides = Math.ceil(totalDataLen / obj.slideLen);
  49. obj.curSlide = 0;
  50. } else {
  51. obj.curSlide = (obj.curSlide + 1) % obj.slides;
  52. }
  53. };
  54. RedRankTable.init();
  55. var newRedrankvue = new Vue({
  56. el: '#redrank',
  57. data: function () {
  58. var t = [];
  59. for(let i = 0; i < RedRankTable.parts; i++){
  60. var q = [];
  61. for(let j = 0; j < RedRankTable.partLen ; j++){
  62. q[j] = {};
  63. }
  64. t[i] = q;
  65. }
  66. return {
  67. parting : t,
  68. title: '本厂今日生产能手榜'
  69. }
  70. },
  71. methods: {
  72. clicktitle: function () {
  73. alert("Hello! This is Title");
  74. },
  75. useId: function () {
  76. this.useSort("Id");
  77. },
  78. usePass: function () {
  79. this.useSort("Pass");
  80. },
  81. useFail: function () {
  82. this.useSort("Fail");
  83. },
  84. useRate: function () {
  85. this.useSort("Rate");
  86. },
  87. useTotal: function () {
  88. this.useSort("Total");
  89. },
  90. useSort: function (column) {
  91. let sorter = function () {};
  92. switch (column) {
  93. case "Pass":
  94. sorter = RedRankTablePlugin.sortPass;
  95. case "Fail":
  96. sorter = RedRankTablePlugin.sortFail;
  97. case "Rate":
  98. sorter = RedRankTablePlugin.sortRate;
  99. case "Total":
  100. sorter = RedRankTablePlugin.sortTotal;
  101. case "Id":
  102. sorter = RedRankTablePlugin.sortId;
  103. }
  104. RedRankTablePlugin.workerDailyService.list.sortBy(sorter);
  105. console.warn(column);
  106. }
  107. }
  108. });
  109. var RedRankTablePlugin = new (function() {
  110. this.workerDailyService = new DataObjectService("fcBiWorkerDaily", ONDEMAND | AUTO | FAST, "?type=1");
  111. this.tick = function(obj){
  112. RedRankTable.setData(RedRankTablePlugin.workerDailyService.getList());
  113. };
  114. this.sortPass = function (l, r){
  115. var q = {};
  116. checkNull(l, r, q);
  117. if(q.out !== -2) return q.out;
  118. var t = calcCompare(l.jsonObj.passNum, r.jsonObj.passNum, q);
  119. return t;
  120. };
  121. this.sortFail = function (l, r){
  122. var q = {};
  123. checkNull(l, r, q);
  124. if(q.out !== -2) return q.out;
  125. var t = calcCompare(l.jsonObj.failNum, r.jsonObj.failNum, q);
  126. return t;
  127. };
  128. this.sortTotal = function (l, r){
  129. var q = {};
  130. checkNull(l, r, q);
  131. if(q.out !== -2) return q.out;
  132. var t = calcCompare(l.jsonObj.failNum + l.jsonObj.passNum, r.jsonObj.failNum + r.jsonObj.passNum, q);
  133. return t;
  134. };
  135. function checkNull(l, r, q) {
  136. if (l.jsonObj == null || l.jsonObj === undefined) {
  137. if (r.jsonObj == null || r.jsonObj === undefined) {
  138. q.out = 0;
  139. return;
  140. }
  141. q.out = -1;
  142. return;
  143. }
  144. if (r.jsonObj == null || r.jsonObj === undefined) {
  145. q.out = 1;
  146. return;
  147. }
  148. if(r.jsonObj == null || r.jsonObj === undefined){
  149. q = 1;
  150. return;
  151. }
  152. q.out = -2;
  153. }
  154. function calcCompare(l, r, q) {
  155. if (l > r) {
  156. q = 1;
  157. } else if (l === r) {
  158. q = 0;
  159. } else if (l < r) {
  160. q = -1;
  161. } else {
  162. console.error("login error");
  163. q = 0;
  164. }
  165. return q;
  166. }
  167. this.sortRate = function (l, r){
  168. var q = {};
  169. checkNull(l, r, q);
  170. if(q.out !== -2) return q.out;
  171. q = calcCompare(l.jsonObj.failRate, r.jsonObj.failRate, q);
  172. };
  173. this.sortId = function (l, r){
  174. var q = {};
  175. checkNull(l, r, q);
  176. if(q.out !== -2) return q.out;
  177. var t = calcCompare(l.jsonObj.workerId, r.jsonObj.workerId, q);
  178. return t;
  179. };
  180. this.setup = function(obj){
  181. setInterval(obj.tick, 1000, obj);
  182. };
  183. this.setup(this);
  184. })();
  185. (function() {
  186. setInterval(RedRankTablePlugin.tick, 1000);
  187. })();