messageController.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. angular.module('appMessage').controller('MessageController', ['$scope', '$filter', '$location', '$anchorScroll', '$element', function($scope, $filter, $location, $anchorScroll, $element) {
  2. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', '_Register', '', $scope);
  3. $scope.glued = true;
  4. $scope.count = true;
  5. $scope.appContent = {};
  6. $scope.sendMark = 0;
  7. $scope.receiveMark = 0;
  8. $scope.sMessageTime = [];
  9. $scope.rMessageTime = [];
  10. $scope.sendmessages = [];
  11. $scope.historymessages = [];
  12. $scope.initAppContent = function(appContentJson) {
  13. $scope.appContent = JSON.parse(appContentJson);
  14. };
  15. $scope.addMessage = function() {
  16. scroll(document.body);
  17. };
  18. $scope.showMessage = function(jsonStr) {
  19. console.log(jsonStr);
  20. jsonStr = jsonStr.replace(/ /g, "&nbsp");
  21. jsonStr = jsonStr.replace(/\r\n/g, "<br>");
  22. jsonStr = jsonStr.replace(/\r/g, "\\r");
  23. jsonStr = jsonStr.replace(/\n/g, "\\n");
  24. jsonStr = jsonStr.replace(/\t/g, "\\t");
  25. jsonStr = jsonStr.replace(/\f/g, "\\f");
  26. var msg = JSON.parse(jsonStr);
  27. $scope.sendmessages.push(msg);
  28. $scope.scrollHide();
  29. };
  30. $scope.showHistoryMessage = function(jsonStr) {
  31. console.log(jsonStr);
  32. jsonStr = jsonStr.replace(/ /g, "&nbsp");
  33. jsonStr = jsonStr.replace(/\r\n/g, "<br>");
  34. jsonStr = jsonStr.replace(/\r/g, "\\r");
  35. jsonStr = jsonStr.replace(/\n/g, "\\n");
  36. jsonStr = jsonStr.replace(/\t/g, "\\t");
  37. jsonStr = jsonStr.replace(/\f/g, "\\f");
  38. var msg = JSON.parse(jsonStr);
  39. $scope.historymessages.push(msg);
  40. };
  41. $scope.getHisTime = function(item) {
  42. var myDate = new Date();
  43. var nowDate = $filter("date")(myDate.getTime(), "yyyy-MM-dd");
  44. var messageDate = $filter("date")(item.ts, "yyyy-MM-dd");
  45. if (messageDate == nowDate)
  46. return $filter("date")(item.ts, "HH:mm:ss");
  47. else
  48. return $filter("date")(item.ts, "yyyy-MM-dd HH:mm:ss");
  49. };
  50. $scope.getCurTime = function(item) {
  51. var arr = $scope.appContent.directory.user.split("\\");
  52. var userself = arr[arr.length - 2];
  53. var getUserID = item.sender.indexOf(userself);
  54. var myDate = new Date();
  55. var nowDate = $filter("date")(myDate.getTime(), "yyyy-MM-dd");
  56. var messageDate = $filter("date")(item.ts, "yyyy-MM-dd");
  57. if (getUserID !== -1) {
  58. $scope.sMessageTime[$scope.sendMark] = item.ts;
  59. $scope.sendMark = $scope.sendMark + 1;
  60. $scope.receiveMark = 0;
  61. $scope.rMessageTime = [];
  62. } else {
  63. $scope.rMessageTime[$scope.receiveMark] = item.ts;
  64. $scope.receiveMark = $scope.receiveMark + 1;
  65. $scope.sendMark = 0;
  66. $scope.sMessageTime = [];
  67. }
  68. if ($scope.sendMark == 1 || $scope.receiveMark == 1) {
  69. return $filter("date")(item.ts, "HH:mm:ss");
  70. } else if ($scope.sendMark > 1 && Math.abs($scope.sMessageTime[$scope.sendMark - 1] - $scope.sMessageTime[0]) < 60000) {
  71. return $filter("date")(item.ts, "yyyy HH:mm:ss");
  72. } else if ($scope.receiveMark > 1 && Math.abs($scope.rMessageTime[$scope.receiveMark - 1] - $scope.rMessageTime[0]) < 60000) {
  73. return '';
  74. } else if ($scope.sendMark > 1 && Math.abs($scope.sMessageTime[$scope.sendMark - 1] - $scope.sMessageTime[0]) > 60000) {
  75. $scope.sMessageTime[0] = $scope.sMessageTime[$scope.sendMark - 1];
  76. $scope.sendMark = 1;
  77. return $filter("date")(item.ts, "HH:mm:ss");
  78. } else if ($scope.receiveMark > 1 && Math.abs($scope.rMessageTime[$scope.receiveMark - 1] - $scope.rMessageTime[0]) > 60000) {
  79. $scope.rMessageTime[0] = $scope.rMessageTime[$scope.receiveMark - 1];
  80. $scope.receiveMark = 1;
  81. return $filter("date")(item.ts, "HH:mm:ss");
  82. }
  83. };
  84. $scope.getMore = function() {
  85. if ($scope.count) {
  86. $scope.height = document.body.scrollHeight;
  87. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope);
  88. $scope.count = false;
  89. } else {
  90. angular.element(".i-More").addClass("hide");
  91. angular.element(".n-More").removeClass("hide");
  92. $scope.height = document.body.scrollHeight;
  93. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope);
  94. $scope.count = false;
  95. }
  96. };
  97. $scope.scrollWheel = function() {
  98. if (document.body.scrollTop == 0) {
  99. $scope.height = document.body.scrollHeight;
  100. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope);
  101. $scope.count = false;
  102. }
  103. };
  104. $scope.loadImages = function(data) {
  105. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadImages', JSON.stringify(data), $scope);
  106. };
  107. $scope.scrollHide = function() {
  108. angular.element("#body").addClass("scrollGlue");
  109. };
  110. $scope.scrollShow = function() {
  111. if (angular.element("#body").hasClass("scrollGlue")) {
  112. angular.element("#body").removeClass("scrollGlue");
  113. gotoBottom();
  114. } else angular.element("#body").removeClass("scrollGlue");
  115. };
  116. var gotoBottom = function() {
  117. $location.hash("bottom");
  118. $anchorScroll();
  119. };
  120. }])
  121. .animation(".animate", function() {
  122. return {
  123. enter: function(element, done) {
  124. var height = element.height();
  125. element.css({ position: 'relative', bottom: 0, opacity: 0 });
  126. element.animate({ bottom: 0, opacity: 1 }, 500, done);
  127. }
  128. };
  129. });