messageController.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. angular.module('appMessage').controller('MessageController', ['$scope', '$filter', '$location', '$anchorScroll', '$timeout', '$element', function($scope, $filter, $location, $anchorScroll, $timeout, $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.voicePlay = function($event) {
  19. var audio = $($event.target.parentElement.nextElementSibling)[0];
  20. var unread = $($event.target.nextElementSibling);
  21. var audioAll = $('audio');
  22. console.log($($event.target));
  23. console.log(audioAll);
  24. if (audio !== null) {
  25. if (audio.paused) {
  26. for (var i = 0, len = audioAll.length; i < len; i++) {
  27. if (!audioAll[i].paused) {
  28. $(audioAll[i].previousElementSibling.firstElementChild).removeClass("app-voice-play");
  29. $(audioAll[i].previousElementSibling.firstElementChild).addClass("app-voice-pause");
  30. audioAll[i].load();
  31. }
  32. }
  33. unread.removeClass("app-voice-unread");
  34. $($event.target).removeClass("app-voice-pause");
  35. $($event.target).addClass("app-voice-play");
  36. $timeout(function() {
  37. $($event.target).removeClass("app-voice-play");
  38. $($event.target).addClass("app-voice-pause");
  39. }, 1000 * audio.duration);
  40. audio.play();
  41. } else {
  42. $($event.target).removeClass("app-voice-play");
  43. $($event.target).addClass("app-voice-pause");
  44. audio.pause();
  45. audio.load();
  46. }
  47. }
  48. };
  49. $scope.showMessage = function(jsonStr) {
  50. console.log(jsonStr);
  51. jsonStr = jsonStr.replace(/ /g, "&nbsp");
  52. jsonStr = jsonStr.replace(/\r\n/g, "<br>");
  53. jsonStr = jsonStr.replace(/\r/g, "\\r");
  54. jsonStr = jsonStr.replace(/\n/g, "\\n");
  55. jsonStr = jsonStr.replace(/\t/g, "\\t");
  56. jsonStr = jsonStr.replace(/\f/g, "\\f");
  57. var msg = JSON.parse(jsonStr);
  58. $scope.sendmessages.push(msg);
  59. $scope.scrollHide();
  60. };
  61. $scope.showHistoryMessage = function(jsonStr) {
  62. console.log(jsonStr);
  63. jsonStr = jsonStr.replace(/ /g, "&nbsp");
  64. jsonStr = jsonStr.replace(/\r\n/g, "<br>");
  65. jsonStr = jsonStr.replace(/\r/g, "\\r");
  66. jsonStr = jsonStr.replace(/\n/g, "\\n");
  67. jsonStr = jsonStr.replace(/\t/g, "\\t");
  68. jsonStr = jsonStr.replace(/\f/g, "\\f");
  69. var msg = JSON.parse(jsonStr);
  70. $scope.historymessages.push(msg);
  71. };
  72. $scope.getUserhead = function(item) {
  73. var arr = $scope.appContent.directory.user.split("\\");
  74. var userself = arr[arr.length - 2];
  75. if (item.sender.indexOf(userself) !== -1)
  76. return 'user-head user-head-rt';
  77. else
  78. return 'user-head user-head-lf';
  79. };
  80. $scope.getHisTime = function(item) {
  81. var myDate = new Date();
  82. var nowDate = $filter("date")(myDate.getTime(), "yyyy-MM-dd");
  83. var messageDate = $filter("date")(item.ts, "yyyy-MM-dd");
  84. if (messageDate == nowDate)
  85. return $filter("date")(item.ts, "HH:mm:ss");
  86. else
  87. return $filter("date")(item.ts, "yyyy-MM-dd HH:mm:ss");
  88. };
  89. $scope.getCurTime = function(item) {
  90. var arr = $scope.appContent.directory.user.split("\\");
  91. var userself = arr[arr.length - 2];
  92. var getUserID = item.sender.indexOf(userself);
  93. var myDate = new Date();
  94. var nowDate = $filter("date")(myDate.getTime(), "yyyy-MM-dd");
  95. var messageDate = $filter("date")(item.ts, "yyyy-MM-dd");
  96. if (getUserID !== -1) {
  97. $scope.sMessageTime[$scope.sendMark] = item.ts;
  98. $scope.sendMark = $scope.sendMark + 1;
  99. $scope.receiveMark = 0;
  100. $scope.rMessageTime = [];
  101. } else {
  102. $scope.rMessageTime[$scope.receiveMark] = item.ts;
  103. $scope.receiveMark = $scope.receiveMark + 1;
  104. $scope.sendMark = 0;
  105. $scope.sMessageTime = [];
  106. }
  107. if ($scope.sendMark == 1 || $scope.receiveMark == 1 || Math.abs($scope.sMessageTime[$scope.sendMark - 1] - $scope.sMessageTime[0]) == 0 || Math.abs($scope.rMessageTime[$scope.receiveMark - 1] - $scope.rMessageTime[0]) == 0) {
  108. return $filter("date")(item.ts, "HH:mm:ss");
  109. } else if ($scope.sendMark > 1 && Math.abs($scope.sMessageTime[$scope.sendMark - 1] - $scope.sMessageTime[0]) <= 60000) {
  110. return '';
  111. } else if ($scope.receiveMark > 1 && Math.abs($scope.rMessageTime[$scope.receiveMark - 1] - $scope.rMessageTime[0]) <= 60000) {
  112. return '';
  113. } else if ($scope.sendMark > 1 && Math.abs($scope.sMessageTime[$scope.sendMark - 1] - $scope.sMessageTime[0]) > 60000) {
  114. $scope.sMessageTime[0] = $scope.sMessageTime[$scope.sendMark - 1];
  115. $scope.sendMark = 1;
  116. return $filter("date")(item.ts, "HH:mm:ss");
  117. } else if ($scope.receiveMark > 1 && Math.abs($scope.rMessageTime[$scope.receiveMark - 1] - $scope.rMessageTime[0]) > 60000) {
  118. $scope.rMessageTime[0] = $scope.rMessageTime[$scope.receiveMark - 1];
  119. $scope.receiveMark = 1;
  120. return $filter("date")(item.ts, "HH:mm:ss");
  121. }
  122. };
  123. $scope.getMore = function() {
  124. if ($scope.count) {
  125. $scope.height = document.body.scrollHeight;
  126. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope);
  127. $scope.count = false;
  128. } else {
  129. angular.element(".i-More").addClass("hide");
  130. angular.element(".n-More").removeClass("hide");
  131. $scope.height = document.body.scrollHeight;
  132. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope);
  133. $scope.count = false;
  134. }
  135. };
  136. $scope.scrollWheel = function() {
  137. if (document.body.scrollTop == 0) {
  138. $scope.height = document.body.scrollHeight;
  139. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope);
  140. $scope.count = false;
  141. }
  142. };
  143. $scope.loadImages = function(data) {
  144. lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadImages', JSON.stringify(data), $scope);
  145. };
  146. $scope.scrollHide = function() {
  147. angular.element("#body").addClass("scrollGlue");
  148. };
  149. $scope.scrollShow = function() {
  150. if (angular.element("#body").hasClass("scrollGlue")) {
  151. angular.element("#body").removeClass("scrollGlue");
  152. gotoBottom();
  153. } else angular.element("#body").removeClass("scrollGlue");
  154. };
  155. var gotoBottom = function() {
  156. $location.hash("bottom");
  157. $anchorScroll();
  158. };
  159. }])
  160. .animation(".animate", function() {
  161. return {
  162. enter: function(element, done) {
  163. var height = element.height();
  164. element.css({ position: 'relative', bottom: 0, opacity: 0 });
  165. element.animate({ bottom: 0, opacity: 1 }, 500, done);
  166. }
  167. };
  168. });