diff --git a/assets/css/extra.css b/assets/css/extra.css index 0be3fb1..c443207 100644 --- a/assets/css/extra.css +++ b/assets/css/extra.css @@ -112,7 +112,7 @@ color: #777620; } -#document-send-contact a, #document-send-order a { +#document-send-contact a, #document-send-order a , #document-send a { float: left; font-family: 'pfdintextcomppro-regular', sans-serif; color: #373737; @@ -138,3 +138,10 @@ .documentsChat > p { font-size: 20px; } + + +#message-chat-order-space, #message-chat-team-space { + height: 312px; + display: block; + overflow: auto; +} diff --git a/assets/js/chat.js b/assets/js/chat.js index f38847e..06eacb9 100644 --- a/assets/js/chat.js +++ b/assets/js/chat.js @@ -9,6 +9,7 @@ var SocketHandler = function () { sock.send('{"dummy": 1}'); }, 15000); }; + sock.onmessage = function (event) { console.log(event.data); var message = JSON.parse(event.data); @@ -48,6 +49,10 @@ var SocketHandler = function () { inbox.innerHTML += '
' + senderName + '
' + timeMessage + '' + textMessage + '
' + senderName + '
' + v.created + '' + '' + v.text + '
'; }); + var height = inbox.scrollHeight; + inbox.scrollTop = height; } }); diff --git a/chat/chat.py b/chat/chat.py index 7c53ff4..79b38ad 100644 --- a/chat/chat.py +++ b/chat/chat.py @@ -57,6 +57,7 @@ class ChatHandler(websocket.WebSocketHandler): sender_id = message_data['data']['sender_id'] recipent_id = message_data['data']['recipent_id'] order_id = message_data['data'].get('order_id', None) + team_id = message_data['data'].get('team_id', None) message = message_data['data'].get('chat_message', None) docs_send_links = message_data['data'].get('document_send_links', None) @@ -73,7 +74,7 @@ class ChatHandler(websocket.WebSocketHandler): if team_value and not recipent_id: recipent_id = sender_id - order_value = "NULL" if order_id is None else order_id + order_value = "NULL" if order_id is None or not order_id else order_id insert_sql = "INSERT INTO chat_message (id,text,created, sender_id,recipent_id," \ " private_type,team_id, order_id,is_delete,is_new) " \ diff --git a/chat/serializers.py b/chat/serializers.py index d8c07cc..765bfd5 100644 --- a/chat/serializers.py +++ b/chat/serializers.py @@ -62,7 +62,7 @@ class MessageSerializer(ModelSerializer): out = obj.text documents = obj.documents.all() if len(documents)>0: - documents_str = '{{ yteam }} @@ -290,14 +289,10 @@
Чаты: {% if request.user.pk != torder.team.owner.pk %} - {{ torder.team.owner.username }}, - {% endif %} - {% for tuser in yteam.contractors.all %} - {% if request.user.pk != tuser.pk %} - {{ tuser.username }}, + {{ yteam.owner.username }}, {% endif %} + {% for tuser in yteam.contractors.all %}{{ tuser.username }}, + {% endfor %}
@@ -332,6 +327,26 @@Для заметок
+ +' + file.name + '
'; + var htmlImg = '' + file.name + ''; var document_send = $(htmlImg).appendTo("#document-send"); }); }, @@ -496,7 +511,7 @@ $(".team-order-block").on('click', function () { - $('.team-order-block').each(function () { + $('.team-order-block, .team-block').each(function () { $(this).removeClass('orAct'); }); $(this).addClass('orAct'); @@ -508,6 +523,8 @@ var inbox = document.getElementById('message-chat-team-space'); inbox.innerHTML = ''; + var docList = document.getElementById('documentTeamSpace'); + docList.innerHTML = ''; $.ajax({ url: '/api/message', @@ -526,11 +543,86 @@ '' + senderName + '
' + v.created + '' + '' + v.text + '
'; }); + var height = inbox.scrollHeight; + inbox.scrollTop = height; + } + }); + + $.ajax({ + url:'/api/documents', + type: 'GET', + data:{ + csrfmiddlewaretoken: csrftoken, + 'order': orderId, + 'team': teamId, + 'is_delete': false, + 'is_send': true, + }, + dataType: 'json', + success: function (json){ + $.each(json.results, function (i, v) { + docList.innerHTML += '' + senderName + '
' + v.created + '' + v.text + '
' + senderName + '
' + v.created + '' + '' + v.text + '
'; }); + + var height = inbox.scrollHeight; + inbox.scrollTop = height; } }); @@ -796,23 +891,29 @@ var teamId = $("#team-chat-form #teamId").val(); var orderId = $("#team-chat-form #orderTeamId").val(); var documentSendIds = $("#documentSendIds").val(); - var teamDocumentIds = documentSendIds.split(';'); - teamDocumentIds.pop(); - socket.add_team_message({ - "format_type": "add_message_team", - "data": { - "sender_id": senderId, - "recipent_id": recipentId, - "chat_message": chatMessage, - "team_id": teamId, - "order_id": orderId, - } - }); + if(chatMessage) { + var sendLinks = $("#document-send a"); + var sendLinkIds = ""; + $.each(sendLinks, function(i, v){ + sendLinkIds += $(this).attr('data-id') + ';'; + }); + socket.add_team_message({ + "format_type": "add_message_team", + "data": { + "sender_id": senderId, + "recipent_id": recipentId, + "chat_message": chatMessage, + "team_id": teamId, + "order_id": orderId, + "document_send_links": sendLinkIds, + } + }); - $("#team-chat-form #chatText").val(""); - $("#document-send").html(""); - $("#documentSendIds").val(""); + $("#team-chat-form #chatText").val(""); + $("#document-send").html(""); + $("#documentSendIds").val(""); + } }); diff --git a/chat/templates/chat_customer.html b/chat/templates/chat_customer.html index e58861a..1d9fc2d 100644 --- a/chat/templates/chat_customer.html +++ b/chat/templates/chat_customer.html @@ -61,8 +61,7 @@