Merge branch 'master' of https://bitbucket.org/PekopT/archilance into artur
commit
1cade30ac4
14 changed files with 442 additions and 936 deletions
@ -1,683 +1,74 @@ |
|||||||
|
var SocketHandler = function () { |
||||||
function csrfSafeMethod(method) { |
|
||||||
// these HTTP methods do not require CSRF protection
|
domain = domain.replace(':' + port, ''); |
||||||
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); |
var url = 'ws://' + domain + ':8888/chat/' + userId + '/'; |
||||||
|
var sock = new WebSocket(url); |
||||||
|
var intervalId; |
||||||
|
sock.onopen = function () { |
||||||
|
console.log("Start connect"); |
||||||
|
intervalId = setInterval(function () { |
||||||
|
sock.send('{"dummy": 1}'); |
||||||
|
}, 150000); |
||||||
|
}; |
||||||
|
sock.onmessage = function (event) { |
||||||
|
console.log(event.data); |
||||||
|
var message = JSON.parse(event.data); |
||||||
|
var inbox; |
||||||
|
if (message.answer_type == 'contact' || message.answer_type == 'add_message_contact') { |
||||||
|
inbox = document.getElementById('message-chat-space'); |
||||||
|
} else if (message.answer_type == 'order' || message.answer_type == 'add_message_order') { |
||||||
|
inbox = document.getElementById('message-chat-order-space'); |
||||||
|
} else if (message.answer_type == 'add_message_team') { |
||||||
|
inbox = document.getElementById('message-chat-team-space'); |
||||||
} |
} |
||||||
|
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">ВЫ</p> <span>Сейчас</span></div>' + |
||||||
|
'<p class="textCommChat">' + message.msg + '</p></div>'; |
||||||
|
|
||||||
var SocketHandler = function () { |
}; |
||||||
var userId = {{ request.user.pk }}; |
|
||||||
var url = 'ws://127.0.0.1:8888/chat/' + userId + '/'; |
|
||||||
var sock = new WebSocket(url); |
|
||||||
var intervalId; |
|
||||||
sock.onopen = function () { |
|
||||||
console.log("Start connect"); |
|
||||||
intervalId = setInterval(function () { |
|
||||||
sock.send('{"dummy": 1}'); |
|
||||||
}, 150000); |
|
||||||
}; |
|
||||||
sock.onmessage = function (event) { |
|
||||||
console.log(event.data); |
|
||||||
var message = JSON.parse(event.data); |
|
||||||
var inbox; |
|
||||||
|
|
||||||
if (message.answer_type == 'contact' || message.answer_type == 'add_message_contact') { |
|
||||||
inbox = document.getElementById('message-chat-space'); |
|
||||||
} else if (message.answer_type == 'order' || message.answer_type == 'add_message_order') { |
|
||||||
inbox = document.getElementById('message-chat-order-space'); |
|
||||||
} else if(message.answer_type == 'add_message_team'){ |
|
||||||
inbox = document.getElementById('message-chat-team-space'); |
|
||||||
} |
|
||||||
console.log(message.answer_type); |
|
||||||
console.log(message.msg); |
|
||||||
|
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">ВЫ</p> <span>13.0.2016</span></div>' + |
|
||||||
'<p class="textCommChat">' + message.msg + '</p></div>'; |
|
||||||
}; |
|
||||||
|
|
||||||
this.send_contact_message = function (userId) { |
|
||||||
var data = { |
|
||||||
"format_type": "add_message", |
|
||||||
"user_id": userId |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
console.log(data); |
|
||||||
}; |
|
||||||
|
|
||||||
this.add_team_message = function(messageData){ |
|
||||||
|
|
||||||
console.log(messageData); |
|
||||||
sock.send(JSON.stringify(messageData)); |
|
||||||
} |
|
||||||
|
|
||||||
this.add_contact_message = function (messageData) { |
|
||||||
console.log(messageData); |
|
||||||
sock.send(JSON.stringify(messageData)); |
|
||||||
}; |
|
||||||
|
|
||||||
this.send_message = function (form) { |
|
||||||
var elements = form.elements; |
|
||||||
var data = {}; |
|
||||||
var i = 0; |
|
||||||
for (var i; i < elements.length; i++) { |
|
||||||
if (elements[i].name == 'message') { |
|
||||||
data[elements[i].name] = elements[i].value; |
|
||||||
} |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
var textareaMessage = document.getElementById("message"); |
|
||||||
textareaMessage.value = ""; |
|
||||||
} |
|
||||||
|
|
||||||
|
this.send_order_message = function (orderId) { |
||||||
|
var data = { |
||||||
|
"format_type": "order_message", |
||||||
|
"order_id": orderId |
||||||
} |
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
$(function () { |
console.log(data); |
||||||
var currentChatUser = {{ request.user.pk }}; |
}; |
||||||
var socket = new SocketHandler(); |
|
||||||
var form = document.getElementById('message_form'); |
this.send_contact_message = function (userId) { |
||||||
var csrftoken = getCookie('csrftoken'); |
var data = { |
||||||
|
"format_type": "add_message", |
||||||
setTimeout(function(){ |
"user_id": userId |
||||||
$(".user-block").first().trigger('click'); |
} |
||||||
}, 10); |
sock.send(JSON.stringify(data)); |
||||||
|
console.log(data); |
||||||
setTimeout(function(){ |
}; |
||||||
$(".order-block").first().trigger('click'); |
|
||||||
}, 100); |
this.add_team_message = function (messageData) { |
||||||
|
|
||||||
setTimeout(function(){ |
console.log(messageData); |
||||||
$(".team-order-block").first().trigger('click'); |
sock.send(JSON.stringify(messageData)); |
||||||
}, 1000); |
} |
||||||
|
|
||||||
|
this.add_contact_message = function (messageData) { |
||||||
var url = '/work_sell/basic/'; |
console.log(messageData); |
||||||
$('#upload-document-team').fileupload({ |
sock.send(JSON.stringify(messageData)); |
||||||
url: url, |
}; |
||||||
crossDomain: false, |
|
||||||
beforeSend: function (xhr, settings) { |
this.send_message = function (form) { |
||||||
$('#progress .progress-bar').css( |
var elements = form.elements; |
||||||
'width', |
var data = {}; |
||||||
'0%' |
var i = 0; |
||||||
); |
for (var i; i < elements.length; i++) { |
||||||
if (!csrfSafeMethod(settings.type)) { |
if (elements[i].name == 'message') { |
||||||
xhr.setRequestHeader("X-CSRFToken", csrftoken); |
data[elements[i].name] = elements[i].value; |
||||||
} |
|
||||||
}, |
|
||||||
dataType: 'json', |
|
||||||
done: function (e, data) {; |
|
||||||
$.each(data.result.files, function (index, file) { |
|
||||||
var currentValue = $("#documentSendIds").val(); |
|
||||||
currentValue += file.id + ';'; |
|
||||||
$("#documentSendIds").val(currentValue); |
|
||||||
var htmlImg = '<p>'+ file.name+'</p>'; |
|
||||||
var document_send = $(htmlImg).appendTo("#document-send"); |
|
||||||
}); |
|
||||||
}, |
|
||||||
progressall: function (e, data) { |
|
||||||
var progress = parseInt(data.loaded / data.total * 100, 10); |
|
||||||
$('#progress .progress-bar').css( |
|
||||||
'width', |
|
||||||
progress + '%' |
|
||||||
); |
|
||||||
} |
|
||||||
}).prop('disabled', !$.support.fileInput) |
|
||||||
.parent().addClass($.support.fileInput ? undefined : 'disabled'); |
|
||||||
|
|
||||||
|
|
||||||
$("#approve-stages").on('click', function(){ |
|
||||||
$(".stage-block-approve").each(function(){ |
|
||||||
var stageId = $(this).attr('data-id'); |
|
||||||
}); |
|
||||||
}); |
|
||||||
|
|
||||||
$(".team-chat-user").on('click',function(e){ |
|
||||||
e.stopPropagation(); |
|
||||||
var recipentId = $(this).attr('data-id'); |
|
||||||
$("#team-chat-form #recipentId").val(recipentId); |
|
||||||
}); |
|
||||||
|
|
||||||
$(".team-order-block").on('click', function(){ |
|
||||||
|
|
||||||
$('.team-order-block').each(function () { |
|
||||||
$(this).removeClass('orAct'); |
|
||||||
}); |
|
||||||
$(this).addClass('orAct'); |
|
||||||
|
|
||||||
var teamId = $(this).attr('data-team-id'); |
|
||||||
var orderId = $(this).attr('data-order-id'); |
|
||||||
$("#team-chat-form #teamId").val(teamId); |
|
||||||
$("#team-chat-form #orderId").val(orderId); |
|
||||||
|
|
||||||
var inbox = document.getElementById('message-chat-team-space'); |
|
||||||
inbox.innerHTML = ''; |
|
||||||
|
|
||||||
$.ajax({ |
|
||||||
url: '/api/message', |
|
||||||
type: 'GET', |
|
||||||
data: {csrfmiddlewaretoken: csrftoken, 'team': teamId,'order': orderId}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
var senderName = 'Вы'; |
|
||||||
var className = 'youChat'; |
|
||||||
if (v.sender.id !== currentChatUser) { |
|
||||||
senderName = v.sender.username; |
|
||||||
className = ''; |
|
||||||
} |
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">' + senderName + '</p> <span>' + v.created + '</span></div>' + |
|
||||||
'<p class="textCommChat">' + v.text + '</p></div>'; |
|
||||||
}); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
// Вытащить сообщения для чата заказа
|
|
||||||
$('.order-block').on('click', function () { |
|
||||||
$('.order-block').each(function () { |
|
||||||
$(this).removeClass('orAct'); |
|
||||||
}); |
|
||||||
$(this).addClass('orAct'); |
|
||||||
|
|
||||||
var orderId = $(this).attr('data-id'); |
|
||||||
var recipentId = $(this).attr('data-recipent-id'); |
|
||||||
$("#chat-contractor-order #orderId").val(orderId); |
|
||||||
$("#add-form-order-note #orderNote").val(orderId); |
|
||||||
|
|
||||||
$("#chat-contractor-order #recipentOrderId").val(recipentId); |
|
||||||
$("#add-form-order-note #recipentNote").val(recipentId); |
|
||||||
|
|
||||||
var inbox = document.getElementById('message-chat-order-space'); |
|
||||||
inbox.innerHTML = ''; |
|
||||||
|
|
||||||
$.ajax({ |
|
||||||
url: '/api/message', |
|
||||||
type: 'GET', |
|
||||||
data: {csrfmiddlewaretoken: csrftoken, 'order': orderId}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
var senderName = 'Вы'; |
|
||||||
var className = 'youChat'; |
|
||||||
if (v.sender.id !== currentChatUser) { |
|
||||||
senderName = v.sender.username; |
|
||||||
className = ''; |
|
||||||
} |
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">' + senderName + '</p> <span>' + v.created + '</span></div>' + |
|
||||||
'<p class="textCommChat">' + v.text + '</p></div>'; |
|
||||||
}); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
$.ajax({ |
|
||||||
url: '/api/note/', |
|
||||||
type: 'GET', |
|
||||||
data: {csrfmiddlewaretoken: csrftoken, 'order': orderId}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
console.log(json.results); |
|
||||||
var noteHtmlInbox = ''; |
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
noteHtmlInbox += '<li>'+ v.text +'<li>'; |
|
||||||
|
|
||||||
}); |
|
||||||
$(".notes-block").html(noteHtmlInbox); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
$.ajax({ |
|
||||||
url: '/api/stages/', |
|
||||||
type: 'GET', |
|
||||||
data: {csrfmiddlewaretoken: csrftoken, 'order': orderId}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
console.log(json.results); |
|
||||||
var htmlInbox = ""; |
|
||||||
var stagesReservedHtml = ""; |
|
||||||
if (json.results.length > 0) { |
|
||||||
|
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
if(v.is_paid){ |
|
||||||
stagesReservedHtml += '<li class="reserved">Сумма за этап '+ i +'.Зарезервирована.</li>'; |
|
||||||
}else{ |
|
||||||
stagesReservedHtml += '<li class="unreserved">Сумма за этап '+ i +'.Не зарезервирована.</li>'; |
|
||||||
} |
|
||||||
htmlInbox += '<div data-id="' + v.id + '" class="numberStepp box-sizing stage-block-approve"><div class="insetNumStepp">' + |
|
||||||
'<p class="titleNumStepp"><span>Этап ' + v.pos + '</span>' + v.name + '</p>' + |
|
||||||
'<p class="textNumStepp">Результаты этапа:' + v.result + '</p><div>' + |
|
||||||
'<p>'+ v.status+'</p><span>' + v.cost + '<i class="fa fa-rub"></i></span></div></div></div>'; |
|
||||||
}); |
|
||||||
htmlInbox += '<div class="textAreaBlock2 FFD box-sizing disTab"><a id="approve-stages" href="javascript:void()">согласовать</a></div>'; |
|
||||||
|
|
||||||
} |
|
||||||
$("#order-stages").html(htmlInbox); |
|
||||||
$(".stages-paid").html(stagesReservedHtml); |
|
||||||
|
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
$('#add-note-button').on('click', function(){ |
|
||||||
$.ajax({ |
|
||||||
url: '/api/note/', |
|
||||||
type: 'POST', |
|
||||||
beforeSend: function (xhr) { |
|
||||||
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')) |
|
||||||
}, |
|
||||||
data:$("#add-form-order-note").serialize(), |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
console.log(json); |
|
||||||
$("#add-form-order-note #chat2").val(""); |
|
||||||
|
|
||||||
}, |
|
||||||
error: function(e){ |
|
||||||
console.log('error'); |
|
||||||
console.log(e); |
|
||||||
} |
|
||||||
}); |
|
||||||
}); |
|
||||||
|
|
||||||
// Вытащить сообщения для конактов
|
|
||||||
$('.user-block').on('click', function () { |
|
||||||
var userId = $(this).attr('data-id'); |
|
||||||
$("#contact-chat-form #recipentId").val(userId); |
|
||||||
var inbox = document.getElementById('message-chat-space'); |
|
||||||
inbox.innerHTML = ''; |
|
||||||
$.ajax({ |
|
||||||
url: '/api/message', |
|
||||||
type: 'GET', |
|
||||||
data: { |
|
||||||
csrfmiddlewaretoken: csrftoken, |
|
||||||
'operand': 'in', |
|
||||||
'sender_id': currentChatUser, |
|
||||||
'recipent_id': userId |
|
||||||
}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
console.log(v.sender.id); |
|
||||||
var senderName = 'Вы'; |
|
||||||
var className = 'youChat'; |
|
||||||
if (v.sender.id == userId) { |
|
||||||
senderName = v.sender.username; |
|
||||||
className = ''; |
|
||||||
} |
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat ' + className + '"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">' + senderName + '</p> <span>' + v.created + '</span></div>' + |
|
||||||
'<p class="textCommChat">' + v.text + '</p></div>'; |
|
||||||
}); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
//Добавить сообщение для исполнителей в группе
|
|
||||||
$("#add-team-chat-message").on('click', function(){ |
|
||||||
var chatMessage = $("#team-chat-form #chatText").val(); |
|
||||||
var recipentId = $("#team-chat-form #recipentId").val(); |
|
||||||
var senderId = $("#team-chat-form #senderId").val(); |
|
||||||
var teamId = $("#team-chat-form #teamId").val(); |
|
||||||
var orderId = $("#team-chat-form #orderId").val(); |
|
||||||
|
|
||||||
var documentSendIds = $("#documentSendIds").val(); |
|
||||||
console.log(documentSendIds); |
|
||||||
var teamDocumentIds = documentSendIds.split(';'); |
|
||||||
teamDocumentIds.pop(); |
|
||||||
console.log(teamDocumentIds); |
|
||||||
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, |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$("#team-chat-form #chatText").val(""); |
|
||||||
}); |
|
||||||
|
|
||||||
// Добавить сообщение для контакта
|
|
||||||
$('#contact-chat-add-message').on('click', function () { |
|
||||||
var chatMessage = $("#chat").val(); |
|
||||||
var recipentId = $("#recipentId").val(); |
|
||||||
var senderId = $("#senderId").val(); |
|
||||||
|
|
||||||
socket.add_contact_message({ |
|
||||||
"format_type": "add_message_contact", |
|
||||||
"data": { |
|
||||||
"sender_id": senderId, |
|
||||||
"recipent_id": recipentId, |
|
||||||
"chat_message": chatMessage, |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
var inbox = $('#message-chat-space').html(); |
|
||||||
$('#message-chat-space').html(inbox + '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">Вы</p> <span>Сейчас</span></div>' + |
|
||||||
'<p class="textCommChat">' + chatMessage + '</p></div>'); |
|
||||||
|
|
||||||
$("#chat").val(""); |
|
||||||
}); |
|
||||||
|
|
||||||
$('#order-chat-add-message').on('click', function () { |
|
||||||
var chatMessage = $("#chat-contractor-order #chat").val(); |
|
||||||
var recipentId = $("#chat-contractor-order #recipentOrderId").val(); |
|
||||||
var senderId = $("#chat-contractor-order #senderOrderId").val(); |
|
||||||
var orderId = $("#chat-contractor-order #orderId").val(); |
|
||||||
|
|
||||||
socket.add_contact_message({ |
|
||||||
"format_type": "add_message_order", |
|
||||||
"data": { |
|
||||||
"sender_id": senderId, |
|
||||||
"recipent_id": recipentId, |
|
||||||
"chat_message": chatMessage, |
|
||||||
"order_id": orderId, |
|
||||||
|
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
$("#chat-contractor-order #chat").val(""); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
|
|
||||||
$(function () { |
|
||||||
var currentChatUser = {{ request.user.pk }}; |
|
||||||
var socket = new SocketHandler(); |
|
||||||
var form = document.getElementById('message_form'); |
|
||||||
var csrftoken = getCookie('csrftoken'); |
|
||||||
setTimeout(function(){ |
|
||||||
$(".user-block").first().trigger('click'); |
|
||||||
}, 10); |
|
||||||
|
|
||||||
setTimeout(function(){ |
|
||||||
$(".order-block").first().trigger('click'); |
|
||||||
}, 100); |
|
||||||
|
|
||||||
$("#order-stages").on('click', "#addStagesForm", function(){ |
|
||||||
$(".new-stages-form").each(function(i,v){ |
|
||||||
console.log($(this).serialize()); |
|
||||||
alert($(this).serialize()); |
|
||||||
|
|
||||||
$.ajax({ |
|
||||||
url: '/api/stages/', |
|
||||||
type: 'POST', |
|
||||||
beforeSend: function (xhr) { |
|
||||||
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')) |
|
||||||
}, |
|
||||||
data:$(this).serialize(), |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
console.log(json); |
|
||||||
}, |
|
||||||
error: function(e){ |
|
||||||
console.log('error'); |
|
||||||
console.log(e); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
}); |
|
||||||
|
|
||||||
$('#order-stages-tab').on('change', '#countStage', function(){ |
|
||||||
var countStage = parseInt($(this).val()); |
|
||||||
var updateFormStages = $(".update-stages-form"); |
|
||||||
|
|
||||||
alert(updateFormStages.length); |
|
||||||
alert(typeof updateFormStages.length); |
|
||||||
var limitCount = countStage + 1; |
|
||||||
for (var i = 2; i < limitCount; i++) { |
|
||||||
var stageCopy = $("#stage1").clone().attr("id", "stage" + i).addClass("stages_form"); |
|
||||||
$("#stage1").after(stageCopy); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
$('.order-block').on('click', function () { |
|
||||||
$("#chat-order-add").css("display", "block"); |
|
||||||
$("#formsetStage").css("display","block"); |
|
||||||
|
|
||||||
$('.order-block').each(function () { |
|
||||||
$(this).removeClass('orAct'); |
|
||||||
}); |
|
||||||
|
|
||||||
$(this).addClass('orAct'); |
|
||||||
var orderId = $(this).attr('data-id'); |
|
||||||
var recipentId = $(this).attr('data-recipent-id'); |
|
||||||
$("#chat-order-add #orderId").val(orderId); |
|
||||||
$("#chat-order-add #recipentId").val(recipentId); |
|
||||||
$(".orderStagesInput").val(orderId); |
|
||||||
var inbox = document.getElementById('message-chat-order-space'); |
|
||||||
inbox.innerHTML = ''; |
|
||||||
$.ajax({ |
|
||||||
url: '/api/message', |
|
||||||
type: 'GET', |
|
||||||
data: {csrfmiddlewaretoken: csrftoken, 'order': orderId}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
var senderName = 'Вы'; |
|
||||||
var className = 'youChat'; |
|
||||||
|
|
||||||
if (v.sender.id !== currentChatUser) { |
|
||||||
senderName = v.sender.username; |
|
||||||
className = ''; |
|
||||||
} |
|
||||||
|
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat ' + className + '"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">' + senderName + '</p><span>' + v.created + '</span></div>' + |
|
||||||
'<p class="textCommChat">' + v.text + '</p></div>'; |
|
||||||
}); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
$.ajax({ |
|
||||||
url: '/api/stages/', |
|
||||||
type: 'GET', |
|
||||||
data: {csrfmiddlewaretoken: csrftoken, 'order': orderId}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
var stageCount = json.results.length; |
|
||||||
if (stageCount == 0){ |
|
||||||
stageCountVal = 1; |
|
||||||
}else{ |
|
||||||
stageCountVal = stageCount; |
|
||||||
} |
|
||||||
|
|
||||||
var htmlInbox = ""; |
|
||||||
|
|
||||||
var htmlInboxStage = '<p class="textStepss">Какое кол-во этапов подразумевает работа? ' + |
|
||||||
'<input type="text" id="countStage" value="'+ stageCountVal +'"size="3"/></p>'; |
|
||||||
|
|
||||||
if (stageCount == 0){ |
|
||||||
htmlInboxStage += '<div class="numberStepp box-sizing" id="stage1">' + |
|
||||||
'<p>Этап <span class="stage-span-id">1</span></p><form class="new-stages-form" id="stage-form">' + |
|
||||||
'<label for="">Название</label><input class="form-control" name="name" type="text" />' + |
|
||||||
'<label for="">Цена</label><input class="form-control" name="cost" type="text" />' + |
|
||||||
'<input class="form-control" name="order" type="text" value="'+ orderId +'" class="orderStagesInput"/> />' + |
|
||||||
'<label for="">Срок</label><input class="form-control" name="term" type="text" />' + |
|
||||||
'<label for="">Результат</label><input class="form-control" name="result" type="text" />' + |
|
||||||
'</form></div>'; |
|
||||||
} |
|
||||||
var statusNotAgreed = true; |
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
if (v.status == "not_agreed") { |
|
||||||
htmlInbox += '<div class="numberStepp box-sizing">' + |
|
||||||
'<p>Этап</p><form class="update-stages-form" id="stage-form-'+ v.pos +'">' + |
|
||||||
'<label for="">Название</label><input class="form-control" type="text" value="'+ v.name +'" />' + |
|
||||||
'<label for="">Цена</label><input class="form-control" type="text" value="'+ v.cost +'" />' + |
|
||||||
'<input class="form-control" type="hidden" value="'+ v.order +'" />' + |
|
||||||
'<label for="">Срок</label><input class="form-control" type="text" value="'+ v.term +'" />' + |
|
||||||
'<label for="">Результат</label><input class="form-control" type="text" value="'+ v.result +'" />' + |
|
||||||
'</form></div>'; |
|
||||||
} else { |
|
||||||
statusNotAgreed = false; |
|
||||||
htmlInboxStage = ""; |
|
||||||
htmlInbox += '<div class="numberStepp box-sizing"><div class="insetNumStepp">' + |
|
||||||
'<p class="titleNumStepp"><span>Этап ' + v.pos + '</span>' + v.name + '</p>' + |
|
||||||
'<p class="textNumStepp">Результаты этапа:' + v.result + '</p><div>' + |
|
||||||
'<p>до 16.03.2015</p><span>' + v.cost + '<i class="fa fa-rub"></i></span></div></div></div>'; |
|
||||||
|
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
if (statusNotAgreed) { |
|
||||||
htmlInbox += '<div class="box-sizing disTab" style="text-align:center;"><div class="checkbox"><input type="checkbox" style="opacity:1">Перейти в режим безопасной сделки' + |
|
||||||
'</div></div><div class="textAreaBlock2 box-sizing disTab">' + |
|
||||||
'<a href="javascript:void()" id="addStagesForm">отправить на согласование</a> </div>'; |
|
||||||
} |
|
||||||
htmlInbox = htmlInboxStage + htmlInbox; |
|
||||||
$("#order-stages").html(htmlInbox); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
// Вытащить сообщения для конактов
|
|
||||||
$('.user-block').on('click', function () { |
|
||||||
var userId = $(this).attr('data-id'); |
|
||||||
$("#contact-chat-form #recipentId").val(userId); |
|
||||||
var inbox = document.getElementById('message-chat-space'); |
|
||||||
inbox.innerHTML = ''; |
|
||||||
$.ajax({ |
|
||||||
url: '/api/message', |
|
||||||
type: 'GET', |
|
||||||
data: { |
|
||||||
csrfmiddlewaretoken: csrftoken, |
|
||||||
'operand': 'in', |
|
||||||
'sender_id': currentChatUser, |
|
||||||
'recipent_id': userId |
|
||||||
}, |
|
||||||
dataType: 'json', |
|
||||||
success: function (json) { |
|
||||||
$.each(json.results, function (i, v) { |
|
||||||
var senderName = 'Вы'; |
|
||||||
var className = 'youChat'; |
|
||||||
if (v.sender.id == userId) { |
|
||||||
senderName = v.sender.username; |
|
||||||
className = ''; |
|
||||||
} |
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat ' + className + '"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">' + senderName + '</p> <span>' + v.created + '</span></div>' + |
|
||||||
'<p class="textCommChat">' + v.text + '</p></div>'; |
|
||||||
}); |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
$('#contact-chat-add-message').on('click', function () { |
|
||||||
var chatMessage = $("#chat").val(); |
|
||||||
var recipentId = $("#recipentId").val(); |
|
||||||
var senderId = $("#senderId").val(); |
|
||||||
|
|
||||||
socket.add_contact_message({ |
|
||||||
"format_type": "add_message_contact", |
|
||||||
"data": { |
|
||||||
"sender_id": senderId, |
|
||||||
"recipent_id": recipentId, |
|
||||||
"chat_message": chatMessage, |
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
$("#chat").val(""); |
|
||||||
}); |
|
||||||
|
|
||||||
$('#order-chat-add-message').on('click', function () { |
|
||||||
var chatMessage = $("#chat-order-add #chat").val(); |
|
||||||
var recipentId = $("#chat-order-add #recipentId").val(); |
|
||||||
var senderId = $("#chat-order-add #senderId").val(); |
|
||||||
var orderId = $("#chat-order-add #orderId").val(); |
|
||||||
|
|
||||||
socket.add_contact_message({ |
|
||||||
"format_type": "add_message_order", |
|
||||||
"data": { |
|
||||||
"sender_id": senderId, |
|
||||||
"recipent_id": recipentId, |
|
||||||
"chat_message": chatMessage, |
|
||||||
"order_id": orderId, |
|
||||||
|
|
||||||
} |
|
||||||
}); |
|
||||||
|
|
||||||
$("#chat-order-add #chat").val(""); |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
var userId = '{{ request.user.pk }}'; |
|
||||||
|
|
||||||
var SocketHandler = function () { |
|
||||||
var url = 'ws://127.0.0.1:8888/chat/' + userId + '/'; |
|
||||||
var sock = new WebSocket(url); |
|
||||||
var intervalId; |
|
||||||
sock.onopen = function () { |
|
||||||
console.log("Start connect"); |
|
||||||
intervalId = setInterval(function () { |
|
||||||
sock.send('{"dummy": 1}'); |
|
||||||
}, 150); |
|
||||||
}; |
|
||||||
sock.onmessage = function (event) { |
|
||||||
console.log(event.data); |
|
||||||
var message = JSON.parse(event.data); |
|
||||||
var inbox; |
|
||||||
if (message.answer_type == 'contact') { |
|
||||||
inbox = document.getElementById('message-chat-space'); |
|
||||||
} else if (message.answer_type == 'order' || message.answer_type == 'add_order') { |
|
||||||
inbox = document.getElementById('message-chat-order-space') |
|
||||||
} |
|
||||||
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
|
||||||
'<p class="nameCommChat">Иванов</p> <span>13.0.2016</span></div>' + |
|
||||||
'<p class="textCommChat">' + message.msg + '</p></div>'; |
|
||||||
|
|
||||||
}; |
|
||||||
|
|
||||||
this.send_order_message = function (orderId) { |
|
||||||
var data = { |
|
||||||
"format_type": "order_message", |
|
||||||
"order_id": orderId |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
console.log(data); |
|
||||||
}; |
|
||||||
|
|
||||||
this.send_contact_message = function (userId) { |
|
||||||
var data = { |
|
||||||
"format_type": "add_message", |
|
||||||
"user_id": userId |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
console.log(data); |
|
||||||
}; |
|
||||||
|
|
||||||
this.add_contact_message = function (messageData) { |
|
||||||
console.log(messageData); |
|
||||||
sock.send(JSON.stringify(messageData)); |
|
||||||
}; |
|
||||||
|
|
||||||
this.send_message = function (form) { |
|
||||||
var elements = form.elements; |
|
||||||
var data = {}; |
|
||||||
var i = 0; |
|
||||||
for (var i; i < elements.length; i++) { |
|
||||||
if (elements[i].name == 'message') { |
|
||||||
data[elements[i].name] = elements[i].value; |
|
||||||
} |
|
||||||
} |
|
||||||
sock.send(JSON.stringify(data)); |
|
||||||
var textareaMessage = document.getElementById("message"); |
|
||||||
textareaMessage.value = ""; |
|
||||||
|
|
||||||
} |
} |
||||||
} |
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
var textareaMessage = document.getElementById("message"); |
||||||
|
textareaMessage.value = ""; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,75 @@ |
|||||||
|
var SocketHandler = function () { |
||||||
|
var userId = {{ request.user.pk }}; |
||||||
|
var domain = '{{ request.META.HTTP_HOST }}'; |
||||||
|
var port = '{{ request.META.SERVER_PORT }}'; |
||||||
|
domain = domain.replace(':' + port, ''); |
||||||
|
var url = 'ws://' + domain + ':8888/chat/' + userId + '/'; |
||||||
|
var sock = new WebSocket(url); |
||||||
|
var intervalId; |
||||||
|
sock.onopen = function () { |
||||||
|
console.log("Start connect"); |
||||||
|
intervalId = setInterval(function () { |
||||||
|
sock.send('{"dummy": 1}'); |
||||||
|
}, 150000); |
||||||
|
}; |
||||||
|
sock.onmessage = function (event) { |
||||||
|
console.log(event.data); |
||||||
|
var message = JSON.parse(event.data); |
||||||
|
var inbox; |
||||||
|
if (message.answer_type == 'contact' || message.answer_type == 'add_message_contact') { |
||||||
|
inbox = document.getElementById('message-chat-space'); |
||||||
|
} else if (message.answer_type == 'order' || message.answer_type == 'add_message_order') { |
||||||
|
inbox = document.getElementById('message-chat-order-space'); |
||||||
|
} else if (message.answer_type == 'add_message_team') { |
||||||
|
inbox = document.getElementById('message-chat-team-space'); |
||||||
|
} |
||||||
|
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">ВЫ</p> <span>Сейчас</span></div>' + |
||||||
|
'<p class="textCommChat">' + message.msg + '</p></div>'; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
this.send_order_message = function (orderId) { |
||||||
|
var data = { |
||||||
|
"format_type": "order_message", |
||||||
|
"order_id": orderId |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
console.log(data); |
||||||
|
}; |
||||||
|
|
||||||
|
this.send_contact_message = function (userId) { |
||||||
|
var data = { |
||||||
|
"format_type": "add_message", |
||||||
|
"user_id": userId |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
console.log(data); |
||||||
|
}; |
||||||
|
|
||||||
|
this.add_team_message = function (messageData) { |
||||||
|
|
||||||
|
console.log(messageData); |
||||||
|
sock.send(JSON.stringify(messageData)); |
||||||
|
} |
||||||
|
|
||||||
|
this.add_contact_message = function (messageData) { |
||||||
|
console.log(messageData); |
||||||
|
sock.send(JSON.stringify(messageData)); |
||||||
|
}; |
||||||
|
|
||||||
|
this.send_message = function (form) { |
||||||
|
var elements = form.elements; |
||||||
|
var data = {}; |
||||||
|
var i = 0; |
||||||
|
for (var i; i < elements.length; i++) { |
||||||
|
if (elements[i].name == 'message') { |
||||||
|
data[elements[i].name] = elements[i].value; |
||||||
|
} |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
var textareaMessage = document.getElementById("message"); |
||||||
|
textareaMessage.value = ""; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,68 @@ |
|||||||
|
var SocketHandler = function () { |
||||||
|
var domain = '{{ request.META.HTTP_HOST }}'; |
||||||
|
var port = '{{ request.META.SERVER_PORT }}'; |
||||||
|
domain = domain.replace(':' + port, ''); |
||||||
|
var url = 'ws://' + domain + ':8888/chat/' + userId + '/'; |
||||||
|
var sock = new WebSocket(url); |
||||||
|
var intervalId; |
||||||
|
sock.onopen = function () { |
||||||
|
console.log("Start connect"); |
||||||
|
intervalId = setInterval(function () { |
||||||
|
sock.send('{"dummy": 1}'); |
||||||
|
}, 150000); |
||||||
|
}; |
||||||
|
sock.onmessage = function (event) { |
||||||
|
console.log(event.data); |
||||||
|
var message = JSON.parse(event.data); |
||||||
|
var inbox; |
||||||
|
if (message.answer_type == 'contact' || message.answer_type == 'add_message_contact') { |
||||||
|
inbox = document.getElementById('message-chat-space'); |
||||||
|
} else if (message.answer_type == 'order' || message.answer_type == 'add_message_order') { |
||||||
|
inbox = document.getElementById('message-chat-order-space'); |
||||||
|
} else if (message.answer_type == 'add_message_team') { |
||||||
|
inbox = document.getElementById('message-chat-team-space'); |
||||||
|
} |
||||||
|
inbox.innerHTML += '<div class="col-lg-12 insetCommChat"><div class="topCommChat">' + |
||||||
|
'<p class="nameCommChat">Вы</p> <span>Сейчас</span></div>' + |
||||||
|
'<p class="textCommChat">' + message.msg + '</p></div>'; |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
this.send_order_message = function (orderId) { |
||||||
|
var data = { |
||||||
|
"format_type": "order_message", |
||||||
|
"order_id": orderId |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
console.log(data); |
||||||
|
}; |
||||||
|
|
||||||
|
this.send_contact_message = function (userId) { |
||||||
|
var data = { |
||||||
|
"format_type": "add_message", |
||||||
|
"user_id": userId |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
console.log(data); |
||||||
|
}; |
||||||
|
|
||||||
|
this.add_contact_message = function (messageData) { |
||||||
|
console.log(messageData); |
||||||
|
sock.send(JSON.stringify(messageData)); |
||||||
|
}; |
||||||
|
|
||||||
|
this.send_message = function (form) { |
||||||
|
var elements = form.elements; |
||||||
|
var data = {}; |
||||||
|
var i = 0; |
||||||
|
for (var i; i < elements.length; i++) { |
||||||
|
if (elements[i].name == 'message') { |
||||||
|
data[elements[i].name] = elements[i].value; |
||||||
|
} |
||||||
|
} |
||||||
|
sock.send(JSON.stringify(data)); |
||||||
|
var textareaMessage = document.getElementById("message"); |
||||||
|
textareaMessage.value = ""; |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,5 @@ |
|||||||
|
<div class="rating"> |
||||||
|
<div class="ratingInset" style="clip:rect(0px, {{ current_indicator_px }}px, 50px, 0px);"></div> |
||||||
|
<div class="iconRating"></div> |
||||||
|
</div> |
||||||
|
<p class="ratingPer">{{ current_indicator }}%</p> |
||||||
Loading…
Reference in new issue