'use strict'; var appMessage = angular.module('appMessage', ['luegg.directives', 'ngAnimate']); 'use strict'; angular.module('appMessage').controller('MessageController', ['$scope', '$location', '$anchorScroll', function($scope, $location, $anchorScroll) { lxtalkClient.Invoke('{15180DEF-D508-45F7-BAEB-6486CD8752C8}', '_Register', '', $scope); $scope.glued = true; $scope.items = [{ "uid": "2636765", "senderDisplayName": "丽水市市委办公室", "sender": "0578+002682BECE10-lqq", "msgType": 0, "networkType": 1, "isDes": false, "length": 0, "isReaded": false, "contentType": 1, "receiver": "0578+002682BECE10-lsws", "fromClient": 0, "ts": "来自pc端", "id": 0, "content": "111111", "style": "" }, { content: "消息内容", style: '字体', fromClient: 2, //消息来源([0:PC],[1:iOS],[2:Android] id: "616ebe69e1c04c2ea9740a14457aaca6", isDes: 0, //是否加密消息 contentType: 1, // 消息类型([1,文本消息],[2,图片消息],[3,文件消息],[4,语音消息], [5,位置消息]) networkType: 1, //网络类型([1:wifi],[2:2G],[3:3G],[4:4G]) sender: "0578+0-ls_xxj1", senderDisplayName: "陆趣趣", length: 12312, ts: 12312312412 //时间搓 }, { content: "http://202.107.249.133:8125/e/8/2/4/f/e824fa94cbacff419a0ad611926710f9.dat?下载文件.docx", fromClient: 2, id: "253db476c6d140f0a1b4d4af5fcf2016", isDes: 0, contentType: 3, networkType: 1, sender: "0578+0-ls_xxj1", senderDisplayName: "陆趣趣", "ts": "来自pc端", length: 17359 }, { content: "../img/DefaultHeadImage_96.png", fromClient: 2, id: "253db476c6d140f0a1b4d4af5fcf2016", isDes: 0, contentType: 2, networkType: 1, sender: "0578+0-ls_xxj1", senderDisplayName: "陆趣趣", "ts": "来自pc端", length: 17359 }, { content: "../img/DefaultHeadImage_96.png", fromClient: 2, id: "253db476c6d140f0a1b4d4af5fcf2016", isDes: 0, contentType: 2, networkType: 1, sender: "0578+0-ls_xxj1", senderDisplayName: "陆趣趣", "ts": "来自pc端", length: 17359 }, { content: "../img/DefaultHeadImage_96.png", fromClient: 2, id: "253db476c6d140f0a1b4d4af5fcf2016", isDes: 0, contentType: 2, networkType: 1, sender: "0578+0-ls_xxj1", senderDisplayName: "陆趣趣", "ts": "来自pc端", length: 17359 }, { content: "http://202.107.249.133:8125/e/8/2/4/f/e824fa94cbacff419a0ad611926710f9.dat?下载文件.docx", fromClient: 2, id: "253db476c6d140f0a1b4d4af5fcf2016", isDes: 0, contentType: 3, networkType: 1, sender: "0578+0-ls_xxj1", senderDisplayName: "陆趣趣", "ts": "来自pc端", length: 17359 }, { content: "消息内容", style: { "family": "宋体", "size": 9, "color": 16711680 }, fromClient: 2, //消息来源([0:PC],[1:iOS],[2:Android] id: "616ebe69e1c04c2ea9740a14457aaca6", isDes: 0, //是否加密消息 contentType: 1, // 消息类型([1,文本消息],[2,图片消息],[3,文件消息],[4,语音消息], [5,位置消息]) networkType: 1, //网络类型([1:wifi],[2:2G],[3:3G],[4:4G]) sender: "0578+0-ls_xxj1", senderDisplayName: "陆趣趣", length: 12312, ts: 12312312412 //时间搓 } ]; $scope.appContent = {}; // $scope.guid = lxtalkClient.Invoke('register', 'talkview', $scope) $scope.sendmessages = []; $scope.historyitems = []; $scope.historymessages = []; $scope.pageSize = 1; $scope.pageNumber = 2; $scope.historyitems.push($scope.items.slice($scope.pageNumber * ($scope.pageSize - 1), $scope.pageNumber * $scope.pageSize)); for (var i = 0; i < $scope.pageNumber; i++) { if ($scope.historyitems[0][i] !== undefined) { $scope.historymessages.push($scope.historyitems[0][i]); } } $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) { var msg = JSON.parse(jsonStr); // $scope.items.unshift(msg); // console.log(msg); } $scope.getMore = function() { $scope.historyitems = []; $scope.pageSize = $scope.pageSize + 1; $scope.historyitems.push($scope.items.slice($scope.pageNumber * ($scope.pageSize - 1), $scope.pageNumber * $scope.pageSize)); for (var i = 0; i < $scope.pageNumber; i++) { if ($scope.historyitems[0][i] !== undefined) { $scope.historymessages.push($scope.historyitems[0][i]); } } } $scope.scrollHide = function() { angular.element("#body").addClass("scrollGlue"); } $scope.scrollShow = function() { angular.element("#body").removeClass("scrollGlue"); } }]) .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); } }; }); (function() { 'use strict'; angular .module('appMessage') .directive('ngCurrentMsg', CurrentMsg); CurrentMsg.inject = ['$location', '$anchorScroll', '$timeout']; function CurrentMsg($location, $anchorScroll, $timeout) { var directive = { link: link, restrict: 'A', scope: { msg: '=ngCurrentMsg', appContent: '=ngAppContent' } }; return directive; function link(scope, element, attrs) { var gotoBottom = function() { $location.hash("bottom"); $anchorScroll(); }; var replaceSystemFace = function(content) { //匹配表情 var g = (/\/\:([\w]+)/).exec(content); while (g !== null) { scope.appContent.faceConfig.sys.forEach(function(element) { content = content.replace(element.shortcut, ''); }, this); g = (/\/\:([\w]+)/).exec(content); } //匹配截图 var g = (/\[image\-src=\"([\w\W]+?)\"\]/i).exec(content); while (g !== null) { content = content.replace(g[0], function() { var html = '' + '' + ''; loadImg("local://" + scope.appContent.directory.received + g[1] + ".JPG", addImg); function loadImg(url, callback) { var img = new Image(); img.onload = function() { img.onload = null; callback(img); } img.src = url; //img.attr("defaulturl", "../images/img.png"); } function addImg(img) { //$(img).appendTo($(".image")); gotoBottom(); } return html; }); g = (/\[image\-src=\"([\w\W]+?)\"\]/i).exec(content); } //匹配网址 var i = 0; var m = content.match(/(((((http|ftp|https|HTTP|FTP|HTTPS):\/\/)[\w\-_]+)|www|WWW|[0-9]+)(\.(?!gif|jpg|png|mp3)[\w\-_]+)+([\w\-\.,@?^=%:/~\+#]*[\w\-\@?^=%/~\+#\r\n]))/ig); console.log(m); if (m == null) return content; content = content.replace(/(((((http|ftp|https|HTTP|FTP|HTTPS):\/\/)[\w\-_]+)|www|WWW|[0-9]+)(\.(?!gif|jpg|png|mp3)[\w\-_]+)+([\w\-\.,@?^=%:/~\+#]*[\w\-\@?^=%/~\+#\r\n]))/ig, function() { var html = ''; var g = (/((((http|ftp|https|HTTP|FTP|HTTPS):\/\/)[\w\-_]+)(\.[\w\-_]+)+([\w\-\.,@?^=%:/~\+#]*[\w\-\@?^=%/~\+#\r\n]))/ig).exec(m[i]); if (g == null) html = '' + m[i] + ''; else html = '' + m[i] + ''; i = i + 1; return html; }); return content; }; var replaceImage = function(content) {} var html = ''; var message = document.getElementById("message"); // 消息类型([1,文本消息],[2,图片消息],[3,文件消息], [4,位置消息],[5,语音消息]) if (scope.appContent === undefined || scope.appContent.faceConfig === undefined || scope.appContent.faceConfig.sys === undefined) { html = '' + scope.msg.content + ''; } else if (scope.msg.contentType == 1) { //var style = { style: "normal", weight: "normal" }; var style = JSON.parse(scope.msg.style); html = '' + replaceSystemFace(scope.msg.content) + ''; } else if (scope.msg.contentType == 2) { html = '' + '' + '通用的占位符缩略图' + '' + ''; } else if (scope.msg.contentType == 3) { element.css({ width: '275px' }); //element.addClass('file-message'); var reg = /\?[\W\w]*/; var fileName = decodeURIComponent(reg.exec(scope.msg.content).toString().substr(1)); html = '
' + '' + '文件名:' + fileName + '
大小:' + scope.msg.length + '
' + '
' + '打开  ' + '打开文件夹' + '
' + '
'; } else if (scope.msg.contentType == 4) { html = '' + '' + ''; } else if (scope.msg.contentType == 5) { html = '' + '' + ''; } console.log(html); var newElement = angular.element(html); element.append(newElement); // $(function() { // $("img.lazy").lazyload(); // }); message.addEventListener('load', gotoBottom()); } } })(); (function() { 'use strict'; angular .module('appMessage') .directive('ngHistoryMsg', HistoryMsg); HistoryMsg.inject = []; function HistoryMsg() { var directive = { link: link, restrict: 'A', scope: { msg: '=ngHistoryMsg', appContent: '=ngAppContent' } }; return directive; function link(scope, element, attrs) { var replaceSystemFace = function(content) { //匹配表情 var g = (/\/\:([\w]+)/).exec(content); while (g !== null) { scope.appContent.faceConfig.sys.forEach(function(element) { content = content.replace(element.shortcut, ''); }, this); g = (/\/\:([\w]+)/).exec(content); } //匹配截图 var g = (/\[image\-src=\"([\w\W]+?)\"\]/i).exec(content); while (g !== null) { content = content.replace(g[0], '' + '' + '' ); g = (/\[image\-src=\"([\w\W]+?)\"\]/i).exec(content); } //匹配网址 var i = 0; var m = content.match(/(((((http|ftp|https|HTTP|FTP|HTTPS):\/\/)[\w\-_]+)|www|WWW|[0-9]+)(\.(?!gif|jpg|png|mp3)[\w\-_]+)+([\w\-\.,@?^=%:/~\+#]*[\w\-\@?^=%/~\+#\r\n]))/ig); console.log(m); if (m == null) return content; content = content.replace(/(((((http|ftp|https|HTTP|FTP|HTTPS):\/\/)[\w\-_]+)|www|WWW|[0-9]+)(\.(?!gif|jpg|png|mp3)[\w\-_]+)+([\w\-\.,@?^=%:/~\+#]*[\w\-\@?^=%/~\+#\r\n]))/ig, function() { var html = ''; var g = (/((((http|ftp|https|HTTP|FTP|HTTPS):\/\/)[\w\-_]+)(\.[\w\-_]+)+([\w\-\.,@?^=%:/~\+#]*[\w\-\@?^=%/~\+#\r\n]))/ig).exec(m[i]); if (g == null) html = '' + m[i] + ''; else html = '' + m[i] + ''; i = i + 1; return html; }); return content; }; if (scope.msg.senderDisplayName === undefined || scope.msg.senderDisplayName == '') scope.msg.senderDisplayName = scope.msg.sender; var html = ''; // 消息类型([1,文本消息],[2,图片消息],[3,文件消息], [4,位置消息],[5,语音消息]) if (scope.appContent === undefined || scope.appContent.faceConfig === undefined || scope.appContent.faceConfig.sys === undefined) { html = '' + scope.msg.content + ''; } else if (scope.msg.contentType == 1) { //var style = { style: "normal", weight: "normal" }; var style = scope.msg.style; html = '' + replaceSystemFace(scope.msg.content) + ''; } else if (scope.msg.contentType == 2) { html = '' + '' + '通用的占位符缩略图' + '' + ''; } else if (scope.msg.contentType == 3) { // element.css({ // width: '300px' // }); //element.addClass('file-message'); var reg = /\?[\W\w]*/; var fileName = decodeURIComponent(reg.exec(scope.msg.content).toString().substr(1)); html = '
' + '' + '文件名:' + fileName + '
大小:' + scope.msg.length + '
' + '
' + '打开  ' + '打开文件夹' + '
' + '
'; } else if (scope.msg.contentType == 4) { html = '' + '' + ''; } else if (scope.msg.contentType == 5) { html = '' + '' + ''; } var html_g = '
' + '
' + '

' + scope.msg.senderDisplayName + '-2017-2-6 15:57:17 ' + scope.msg.ts + '

' + '
' + '
' + html + '
'; angular.element("#loadmore").prepend(html_g); $(function() { $("img.lazy").lazyload(); }); console.log(html_g); } } })();