(function () {
'use strict';
app.directive('clipChat', ClipChat);
function ClipChat() {//
var chatTemplate = '
' + '
' + '- {{message.date | amDateFormat:"YYYY.MM.DD HH:mm:ss"}}
' + '- ' + '
' + '
{{ message.user }}
' + '
{{ message.content }}
' + '
' + '
' + ' ' + '
';
var directive = {
restrict: 'EA',
template: chatTemplate,
replace: true,
scope: {
messages: "=",
idSelf: "=",
idOther: "="
},
link: function ($scope, $element, $attrs) {
$scope.newChatArray = function () {
var filtered = [];
for (var i = 0; i < $scope.messages.length; i++) {
var item = $scope.messages[i];
if ((item.idUser == $scope.idSelf || item.idOther == $scope.idSelf) && (item.idUser == $scope.idOther || item.idOther == $scope.idOther)) {
filtered.push(item);
}
}
return filtered;
};
$scope.displayDate = function (i) {
var prevDate, nextDate, diffMs, diffMins;
var messages = $scope.newChatArray();
if (i === 0) {
if (messages.length > 1) {
prevDate = new Date(messages[i].date);
nextDate = new Date(messages[i + 1].date);
diffMs = (nextDate - prevDate);
diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000);
} else {
return true
}
} else {
prevDate = new Date(messages[i - 1].date);
nextDate = new Date(messages[i].date);
diffMs = (nextDate - prevDate);
diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000);
}
if (diffMins > 1) {
return true;
} else {
return false;
}
};
$scope.nextDate = function (i) {
var prevDate, nextDate, diffMs, diffMins;
var messages = $scope.newChatArray();
if (i < messages.length - 1) {
prevDate = new Date(messages[i].date);
nextDate = new Date(messages[i + 1].date);
diffMs = (nextDate - prevDate);
diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000);
}
if (diffMins > 1) {
return true;
} else {
return false;
}
};
}
};
return directive;
}
app.directive('chatSubmit', SubmitChat);
function SubmitChat() {
var submitTemplate = '
' + '
';
var directive = {
restrict: 'EA',
template: submitTemplate,
replace: true,
scope: {
submitFunction: "=",
ngModel: "="
},
link: function ($scope, $element, $attrs) {
$scope.submitChat = function () {
$scope.submitFunction();
if (typeof $attrs.scrollElement !== "undefined") {
var scrlEl = angular.element($attrs.scrollElement);
var lastElement = scrlEl.find('.discussion > li:last');
if (lastElement.length)
scrlEl.scrollToElementAnimated(lastElement);
}
};
}
};
return directive;
}
})();