/**
* @ngdoc directives
* @name TelegramMensagemGrupos
* @module s4c.directives.telegrammensagemgrupos.TelegramMensagemGrupos
*
* @description
* `TelegramMensagemGrupos` Controller da funcionalidade de mensagens em grupo do telegram
*
*
*/
(function () {
'use strict';
s4cTelegramMensagemGruposController.$inject = [
'$scope',
'TelegramService',
'CommService',
'$timeout',
'localize'
];
function s4cTelegramMensagemGruposController(
$scope,
TelegramService,
CommService,
$timeout,
localize
) {
$scope.groups = [];
$scope.mensagens = [];
$scope.page = 0;
$scope.isLoadingMorePages = false;
$scope.res = $scope.$root.res;
$scope.timestamp2string = function (timestamp) {
if (timestamp === null) {
return;
}
var date = new Date(timestamp);
var mom = moment(date);
var formattedDate = mom.format('DD/MM/YY - HH:mm');
return formattedDate;
};
TelegramService.getGroups().then(function (groups) {
$scope.groups = groups;
});
/**
* @method _reloadMessages
*
* @param {*} pageNumber
* @param {*} pageToNumber
*/
function _reloadMessages(pageNumber, pageToNumber) {
return TelegramService.getAllGroupMessages(pageNumber, pageToNumber)
.then(function (messages) {
$scope.mensagens = _.chain(messages)
.uniqBy('id')
.orderBy('id', 'desc')
.each(function (message) {
if (message.texto) {
message.texto = message.texto.trim();
}
})
.value();
$timeout(function () {
$scope.scrollToTop();
});
});
}
/**
* @method loadMoreMessages
*/
$scope.loadMoreMessages = function () {
var page = $scope.page;
$scope.page++;
$scope.isLoadingMorePages = true;
return TelegramService.getAllGroupMessages($scope.page)
.then(function (messages) {
if (messages.length <= 0 && $scope.page > 0) $scope.page--;
$scope.isLoadingMorePages = false;
$scope.mensagens = _.chain($scope.mensagens.concat(messages))
.uniqBy('id')
.orderBy('id', 'desc')
.value();
});
};
$scope.count_new_messages = 0;
$scope.isOutScroll = false;
/**
* @method adjustPositionFixedHead
*/
var adjustPositionFixedHead = function () {
document.querySelectorAll('s4c-telegram-mensagem-grupos .table-telegram-mensagem-grupos-header')[0].style.top = document.querySelectorAll('s4c-telegram-mensagem-grupos #mensagem-grupos-list-telegram')[0].scrollTop + 'px';
};
/**
* @method adjustFixedHead
*/
var adjustFixedHead = function () {
var headFxTh = document.querySelectorAll('s4c-telegram-mensagem-grupos .table-telegram-mensagem-grupos-header thead th');
var headTh = document.querySelectorAll('s4c-telegram-mensagem-grupos .table-telegram-mensagem-grupos thead th');
var tableWidth = document.querySelectorAll('s4c-telegram-mensagem-grupos .table-telegram-mensagem-grupos')[0].clientWidth;
document.querySelectorAll('s4c-telegram-mensagem-grupos .table-telegram-mensagem-grupos-header')[0].setAttribute('style', 'width:' + tableWidth + 'px');
for (var i = 0; i < headFxTh.length; i++) {
var width = headTh[i].clientWidth;
headFxTh[i].setAttribute('style', 'width:' + width + 'px');
}
};
/**
* @method onscroll_mensagem-grupos-list-telegram
*/
document.getElementById('mensagem-grupos-list-telegram').onscroll = function (e) {
adjustFixedHead();
adjustPositionFixedHead();
var objScroll = document.getElementById('mensagem-grupos-list-telegram');
var h = objScroll.offsetHeight;
if (objScroll.scrollTop > h) {
$scope.isOutScroll = true;
} else {
$scope.isOutScroll = false;
$scope.count_new_messages = 0;
}
};
/**
* @method scrollToTop
*/
$scope.scrollToTop = function () {
var objScroll = document.getElementById('mensagem-grupos-list-telegram');
objScroll.scrollTop = 0;
$scope.count_new_messages = 0;
};
/**
* @method scrollToBottom
*/
$scope.scrollToBottom = function () {
var objScroll = document.getElementById('mensagem-grupos-list-telegram');
var h = objScroll.offsetHeight;
var limit = objScroll.scrollHeight - h;
objScroll.scrollTop = limit;
$scope.count_new_messages = 0;
};
/**
* @method changeMessage
*/
$scope.changeMessage = function (countMessage) {
if ($scope.isOutScroll) {
$scope.count_new_messages += countMessage;
var objScroll = document.getElementById('mensagem-grupos-list-telegram');
objScroll.scrollTop += 36;
return;
}
$scope.scrollToTop();
};
CommService.on('mensageria_externa:mensagem', function (message) {
$scope.mensagens.unshift(message);
$timeout(function () {
$scope.changeMessage(1);
adjustFixedHead();
}, 50);
});
_reloadMessages(0, 0);
}
function s4cTelegramMensagemGrupos() {
return {
restrict: 'EA',
templateUrl: 'app/directives/telegram/telegram-mensagem-grupos/telegram.mensagem.grupos.html',
scope: {},
controller: s4cTelegramMensagemGruposController
};
}
angular.module('s4c.components.telegram')
.directive('s4cTelegramMensagemGrupos', s4cTelegramMensagemGrupos);
})();