angular.module('appMessage').controller('MessageController', ['$scope', '$filter', '$location', '$anchorScroll', '$element', function($scope, $filter, $location, $anchorScroll, $element) { lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', '_Register', '', $scope); $scope.glued = true; $scope.count = true; $scope.appContent = {}; $scope.sendMark = 0; $scope.receiveMark = 0; $scope.sMessageTime = []; $scope.rMessageTime = []; $scope.sendmessages = []; $scope.historymessages = []; $scope.initAppContent = function(appContentJson) { $scope.appContent = JSON.parse(appContentJson); }; $scope.addMessage = function() { scroll(document.body); }; $scope.showMessage = function(jsonStr) { console.log(jsonStr); jsonStr = jsonStr.replace(/ /g, " "); jsonStr = jsonStr.replace(/\r\n/g, "
"); jsonStr = jsonStr.replace(/\r/g, "\\r"); jsonStr = jsonStr.replace(/\n/g, "\\n"); jsonStr = jsonStr.replace(/\t/g, "\\t"); jsonStr = jsonStr.replace(/\f/g, "\\f"); var msg = JSON.parse(jsonStr); $scope.sendmessages.push(msg); $scope.scrollHide(); }; $scope.showHistoryMessage = function(jsonStr) { console.log(jsonStr); jsonStr = jsonStr.replace(/ /g, " "); jsonStr = jsonStr.replace(/\r\n/g, "
"); jsonStr = jsonStr.replace(/\r/g, "\\r"); jsonStr = jsonStr.replace(/\n/g, "\\n"); jsonStr = jsonStr.replace(/\t/g, "\\t"); jsonStr = jsonStr.replace(/\f/g, "\\f"); var msg = JSON.parse(jsonStr); $scope.historymessages.push(msg); }; $scope.getHisTime = function(item) { var myDate = new Date(); var nowDate = $filter("date")(myDate.getTime(), "yyyy-MM-dd"); var messageDate = $filter("date")(item.ts, "yyyy-MM-dd"); if (messageDate == nowDate) return $filter("date")(item.ts, "HH:mm:ss"); else return $filter("date")(item.ts, "yyyy-MM-dd HH:mm:ss"); }; $scope.getCurTime = function(item) { var arr = $scope.appContent.directory.user.split("\\"); var userself = arr[arr.length - 2]; var getUserID = item.sender.indexOf(userself); var myDate = new Date(); var nowDate = $filter("date")(myDate.getTime(), "yyyy-MM-dd"); var messageDate = $filter("date")(item.ts, "yyyy-MM-dd"); if (getUserID !== -1) { $scope.sMessageTime[$scope.sendMark] = item.ts; $scope.sendMark = $scope.sendMark + 1; $scope.receiveMark = 0; $scope.rMessageTime = []; } else { $scope.rMessageTime[$scope.receiveMark] = item.ts; $scope.receiveMark = $scope.receiveMark + 1; $scope.sendMark = 0; $scope.sMessageTime = []; } if ($scope.sendMark == 1 || $scope.receiveMark == 1) { return $filter("date")(item.ts, "HH:mm:ss"); } else if ($scope.sendMark > 1 && Math.abs($scope.sMessageTime[$scope.sendMark - 1] - $scope.sMessageTime[0]) < 60000) { return $filter("date")(item.ts, "yyyy HH:mm:ss"); } else if ($scope.receiveMark > 1 && Math.abs($scope.rMessageTime[$scope.receiveMark - 1] - $scope.rMessageTime[0]) < 60000) { return ''; } else if ($scope.sendMark > 1 && Math.abs($scope.sMessageTime[$scope.sendMark - 1] - $scope.sMessageTime[0]) > 60000) { $scope.sMessageTime[0] = $scope.sMessageTime[$scope.sendMark - 1]; $scope.sendMark = 1; return $filter("date")(item.ts, "HH:mm:ss"); } else if ($scope.receiveMark > 1 && Math.abs($scope.rMessageTime[$scope.receiveMark - 1] - $scope.rMessageTime[0]) > 60000) { $scope.rMessageTime[0] = $scope.rMessageTime[$scope.receiveMark - 1]; $scope.receiveMark = 1; return $filter("date")(item.ts, "HH:mm:ss"); } }; $scope.getMore = function() { if ($scope.count) { $scope.height = document.body.scrollHeight; lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope); $scope.count = false; } else { angular.element(".i-More").addClass("hide"); angular.element(".n-More").removeClass("hide"); $scope.height = document.body.scrollHeight; lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope); $scope.count = false; } }; $scope.scrollWheel = function() { if (document.body.scrollTop == 0) { $scope.height = document.body.scrollHeight; lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadHistoryMessages', '', $scope); $scope.count = false; } }; $scope.loadImages = function(data) { lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', 'LoadImages', JSON.stringify(data), $scope); }; $scope.scrollHide = function() { angular.element("#body").addClass("scrollGlue"); }; $scope.scrollShow = function() { if (angular.element("#body").hasClass("scrollGlue")) { angular.element("#body").removeClass("scrollGlue"); gotoBottom(); } else angular.element("#body").removeClass("scrollGlue"); }; var gotoBottom = function() { $location.hash("bottom"); $anchorScroll(); }; }]) .animation(".animate", function() { return { enter: function(element, done) { var height = element.height(); element.css({ position: 'relative', bottom: 0, opacity: 0 }); element.animate({ bottom: 0, opacity: 1 }, 500, done); } }; });