647 lines
18 KiB
JavaScript
647 lines
18 KiB
JavaScript
profile_tabs_f_static_map = new Map([
|
|
['chats','chat'],
|
|
['support_tickets','support'],
|
|
['show_cur_subscribe','my_subscribe'],
|
|
['change_profile','change_profile'],
|
|
['new_route_view_customer','create_route_for_customer'],
|
|
['new_route_view_mover','create_route_for_mover']
|
|
])
|
|
|
|
|
|
function select_tab_profile (el,url,owner_type=null) {
|
|
let data = {}
|
|
let confirm_url = `/user_account/${url}/`
|
|
if (url.includes('subscribe')){
|
|
confirm_url = `/subscribes/${url}/`
|
|
} else if (url.includes('new_route')){
|
|
data = {
|
|
'owner_type': owner_type
|
|
}
|
|
} else if (url.includes('get_routes')){
|
|
confirm_url = `/routes/${url}/`
|
|
}
|
|
|
|
$.ajax({
|
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
url: confirm_url,
|
|
type: "POST",
|
|
// async: true,
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
// enctype: 'json',
|
|
data: JSON.stringify(data),
|
|
success: function(data){
|
|
document.querySelector(".info_profile").innerHTML = data.html;
|
|
let list_div = document.querySelectorAll('.menu_profile div');
|
|
list_div.forEach(el=>{ el.classList.remove('selected'); });
|
|
el.classList.add('selected')
|
|
let body = document.querySelector("body")
|
|
body.style.overflow = "hidden"
|
|
let confirm_url_f_lang_ru = ''
|
|
let confirm_url_f_lang_en = ''
|
|
if (owner_type){
|
|
window.history.pushState(null, null, `/${document.documentElement.lang}/profile/page/${profile_tabs_f_static_map.get(`${url}_${owner_type}`)}/`)
|
|
confirm_url_f_lang_ru = `/ru/profile/page/${profile_tabs_f_static_map.get(`${url}_${owner_type}`)}/`
|
|
confirm_url_f_lang_en = `/en/profile/page/${profile_tabs_f_static_map.get(`${url}_${owner_type}`)}/`
|
|
} else {
|
|
window.history.pushState(null, null, `/${document.documentElement.lang}/profile/page/${profile_tabs_f_static_map.get(url)}/`)
|
|
confirm_url_f_lang_ru = `/ru/profile/page/${profile_tabs_f_static_map.get(url)}/`
|
|
confirm_url_f_lang_en = `/en/profile/page/${profile_tabs_f_static_map.get(url)}/`
|
|
}
|
|
document.querySelector("#ru_lang").href = confirm_url_f_lang_ru
|
|
document.querySelector("#en_lang").href = confirm_url_f_lang_en
|
|
|
|
|
|
middleWareJS()
|
|
|
|
},
|
|
error: function (data){
|
|
console.log(data)
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
function createTicketShow () {
|
|
$.ajax({
|
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
url: '/messages/support_create_ticket_form/',
|
|
type: "POST",
|
|
// async: true,
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
// enctype: 'json',
|
|
// data: formData,
|
|
success: function(data){
|
|
|
|
document.querySelector(".insert-tech-place").innerHTML = data.html;
|
|
middleWareJS()
|
|
},
|
|
});
|
|
}
|
|
|
|
function countLetters () {
|
|
event.preventDefault()
|
|
let area = document.querySelector(".el-form-create-ticket-textarea")
|
|
let count = area.value.length
|
|
let ins_area = document.querySelector(".letrs-count-span")
|
|
// let spans = document.querySelectorAll(".ins-span")
|
|
let count_div = ins_area.closest("div")
|
|
if (count < 500) {
|
|
let ins_area = document.querySelector(".letrs-count-span")
|
|
ins_area.innerHTML = count
|
|
if (count_div.classList.contains("disabled")){
|
|
count_div.classList.remove("disabled")
|
|
}
|
|
}
|
|
else {
|
|
ins_area.innerHTML = '500'
|
|
if (count_div.classList.contains("disabled")){
|
|
//
|
|
}
|
|
else {
|
|
count_div.classList.add("disabled")
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// var input;
|
|
|
|
|
|
// function inputQuest (){
|
|
// event.preventDefault()
|
|
// // let input = document.querySelector(".create-ticket-file")
|
|
// let input = document.createElement("input");
|
|
// input.setAttribute("type", "file")
|
|
// input.style.display = "none"
|
|
// input.click()
|
|
// // console.log("asd")
|
|
//
|
|
// return input
|
|
// }
|
|
//
|
|
//
|
|
// function attachFileCreateTicket () {
|
|
// let input = inputQuest()
|
|
// let file = input.files[0]
|
|
// // let file_url = URL.createObjectURL(file)
|
|
//
|
|
//
|
|
//
|
|
// let data = file
|
|
//
|
|
// }
|
|
//
|
|
// function attachFilemeassge (e,el,id_ticket=null,sender,receiver) {
|
|
// let input = inputQuest()
|
|
// let file = input.files[0]
|
|
// let int = setInterval(function (){
|
|
// file = input.files[0]
|
|
// if (file === undefined || file === null){
|
|
// //
|
|
// } else {
|
|
//
|
|
// // let file_1 = URL.createObjectURL(file)
|
|
// // let file_1 = URL.createObjectURL(file)
|
|
// // var reader = new FileReader();
|
|
// // var file = new ArrayBuffer(file);
|
|
// // let file_1 = reader.readAsArrayBuffer(file)
|
|
// // let file_1 = new ImageBitmap([file],{'type':file.type})
|
|
// let file_1 = new Blob ([file],{'type':file.type})
|
|
// // let url_ = URL.toDataURL(file_1)
|
|
// // let file_2 = file_1.text()
|
|
// // let reader = new ArrayBuffer(file_1);
|
|
// // reader.Base64.encode(file_1)
|
|
// let file_3 = URL.createObjectURL(file_1)
|
|
// let file_4 = $(file_1).toDataURL
|
|
// var reader = new FileReader();
|
|
// reader.readAsBinaryString(file_1);
|
|
// // let file_8 = new ImageBitmap(file,{'type':file.type})
|
|
// // var fs = require('fs'),
|
|
// data_1 = readFileSync(file);
|
|
// console.log(data.toString('base64'));
|
|
//
|
|
// // let file_url = URL.createObjectURL(file)
|
|
//
|
|
// let data = reader
|
|
// el.dataset['file_img'] = data
|
|
// input.remove()
|
|
// clearInterval(int)
|
|
// sendMessage(id_ticket,sender,receiver,'pst_img')
|
|
// }
|
|
//
|
|
// },1000)
|
|
//
|
|
//
|
|
// }
|
|
|
|
|
|
// function getBase64(file,el) {
|
|
// const reader = new FileReader()
|
|
// let file_new = null
|
|
// let file_new_p = new Promise(function () {
|
|
// reader.readAsDataURL(file)
|
|
// reader.onload = function () {
|
|
// file_new = JSON.stringify({
|
|
// 'file': reader.result,
|
|
// 'file_type': el.type,
|
|
// 'file_name': el.name
|
|
// })
|
|
//
|
|
// }
|
|
//
|
|
// })
|
|
// file_new_p.then(function (){
|
|
// return file_new
|
|
// })
|
|
// }
|
|
//
|
|
// async function fileListToBase64(fileList) {
|
|
// const files_for_data = []
|
|
//
|
|
// for (let i = 0; i < fileList.length; i++) {
|
|
// let el = fileList[i]
|
|
// files_for_data.push(getBase64(fileList[i],el))
|
|
// }
|
|
//
|
|
// return await Promise.all(files_for_data)
|
|
// }
|
|
function getBase64(file,el) {
|
|
const reader = new FileReader()
|
|
return new Promise(resolve => {
|
|
reader.onload = ev => {
|
|
resolve(file_new = JSON.stringify({
|
|
'file': reader.result,
|
|
'file_type': el.type,
|
|
'file_name': el.name,
|
|
'file_size': el.size
|
|
})
|
|
)
|
|
}
|
|
reader.readAsDataURL(file)
|
|
|
|
})
|
|
}
|
|
|
|
async function fileListToBase64(fileList=null,file=null) {
|
|
// create function which return resolved promise
|
|
// with data:base64 string
|
|
|
|
// here will be array of promisified functions
|
|
const promises = []
|
|
const promise = {}
|
|
let return_ = null
|
|
if (fileList) {
|
|
return_ = promises
|
|
// loop through fileList with for loop
|
|
for (let i = 0; i < fileList.length; i++) {
|
|
let el = fileList[i]
|
|
promises.push(getBase64(fileList[i], el))
|
|
}
|
|
return await Promise.all(return_)
|
|
} else if (file){
|
|
const promise = {}
|
|
return_ = promise
|
|
promise[file.name] = getBase64(file, file)
|
|
return await return_[file.name]
|
|
}
|
|
|
|
// array with base64 strings
|
|
// return await Promise.all(return_)
|
|
}
|
|
|
|
async function attachFilemeassge (el,id_ticket=null,sender=null,receiver=null,change_avatar=null){
|
|
// let file = el.files[0];
|
|
let fileList = el.files;
|
|
if (!change_avatar) {
|
|
if (el.files.length > 0) {
|
|
const files_for_data = await fileListToBase64(fileList)
|
|
let data = files_for_data
|
|
sendMessage(id_ticket, sender, receiver, data)
|
|
}
|
|
} else {
|
|
if (el.files.length > 0) {
|
|
let file = fileList[0]
|
|
const files_for_data = await fileListToBase64(null,file)
|
|
let data = files_for_data
|
|
return data
|
|
}
|
|
}
|
|
// let reader = new FileReader();
|
|
// let mas_for_for_each = []
|
|
|
|
// for (let i = 0;i < el.files.length;i++){
|
|
// let file_for_data_url_opert = el.files[i]
|
|
//
|
|
// reader.readAsDataURL(file_for_data_url_opert);
|
|
// reader.onload = function() {
|
|
// // console.log(reader.result);
|
|
// let file = JSON.stringify({
|
|
// 'file': reader.result,
|
|
// 'file_type': el.files[i].type,
|
|
// 'file_name': el.files[i].name
|
|
// })
|
|
// files_for_data.push(file)
|
|
// };
|
|
//
|
|
// reader.onerror = function() {
|
|
// console.log(reader.error);
|
|
// };
|
|
//
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
function change_profile_confirm (el){
|
|
event.preventDefault()
|
|
let form = el.form
|
|
let changed_elements = {}
|
|
for (let i = 0;i < form.length;i++){
|
|
let cur_el = form[i]
|
|
if (cur_el.localName !== 'button'){
|
|
let new_val = cur_el.value
|
|
let dataset = cur_el.dataset
|
|
let old_val = ''
|
|
if (dataset){
|
|
old_val = dataset['initialValue']
|
|
}
|
|
// if (old_val){
|
|
if (old_val === new_val){
|
|
//
|
|
} else {
|
|
changed_elements[cur_el.name] = cur_el.value
|
|
}
|
|
}
|
|
// }
|
|
}
|
|
|
|
|
|
$.ajax({
|
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
url: '/user_account/change_profile_confirm/',
|
|
type: "POST",
|
|
// async: true,
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
// enctype: 'json',
|
|
data: JSON.stringify(changed_elements),
|
|
success: function(data){
|
|
middleWareJS()
|
|
|
|
document.querySelector(".info_profile").innerHTML = data.html;
|
|
|
|
},
|
|
error: function (data){
|
|
|
|
document.querySelector(".avatar_user_profile").innerHTML = data.responseJSON.html;
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
async function upload_photo_f_profile (el,files) {
|
|
// if (!files){
|
|
const data = await attachFilemeassge(el, null, null, null, 'avatar')
|
|
// }
|
|
// if (files){
|
|
$.ajax({
|
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
url: '/user_account/change_avatar_confirm/',
|
|
type: "POST",
|
|
// async: true,
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
// enctype: 'json',
|
|
data: data,
|
|
success: function(data){
|
|
middleWareJS()
|
|
|
|
document.querySelector(".avatar_user_profile").src = data.url;
|
|
|
|
},
|
|
error: function (data){
|
|
|
|
document.querySelector(".avatar_user_profile").innerHTML = data.responseJSON.html;
|
|
|
|
}
|
|
});
|
|
// }
|
|
}
|
|
|
|
|
|
|
|
|
|
function createTicket (el) {
|
|
event.preventDefault()
|
|
let form = el.form
|
|
var formData = new FormData(form);
|
|
$.ajax({
|
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
url: '/messages/create_ticket/',
|
|
type: "POST",
|
|
// async: true,
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
// enctype: 'json',
|
|
data: formData,
|
|
success: function(data){
|
|
middleWareJS()
|
|
|
|
document.querySelector(".insert-tech-place").innerHTML = data.html;
|
|
|
|
},
|
|
error: function (data){
|
|
|
|
document.querySelector(".insert-tech-place").innerHTML = data.responseJSON.html;
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function selectedUserMessenger (ticket_id=null,user_id=null){
|
|
let loader = document.querySelector(".loader_chat_f_sw_chats")
|
|
let block_chat = document.querySelector(".block-chat")
|
|
if (loader){
|
|
loader.classList.toggle("show")
|
|
if (block_chat) {
|
|
block_chat.innerHTML = null
|
|
}
|
|
}
|
|
let data = null
|
|
let url = null
|
|
if (ticket_id !== null){
|
|
data = {
|
|
'ticket_id': ticket_id
|
|
}
|
|
url = 'support_show_chat_by_ticket/'
|
|
} else if (user_id !== null){
|
|
data = {
|
|
'user_id': user_id
|
|
}
|
|
url = 'show_chat_w_user/'
|
|
}
|
|
|
|
$.ajax({
|
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
url: '/messages/' + url,
|
|
type: "POST",
|
|
// async: true,
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
// enctype: 'json',
|
|
data: JSON.stringify(data),
|
|
success: function(data){
|
|
middleWareJS()
|
|
if (loader){
|
|
loader.classList.toggle("show")
|
|
}
|
|
document.querySelector(".info_profile").innerHTML = data.html;
|
|
document.querySelector(".enter-message-inp").focus()
|
|
document.querySelector(".tab_user_messanger.select").scrollIntoView({behavior: "smooth"});
|
|
|
|
|
|
},
|
|
error: function (data){
|
|
|
|
document.querySelector(".info_profile").innerHTML = data.responseJSON.html;
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function sendMessage(id_ticket=null,sender,receiver,files=null){
|
|
// import {sendMessageSocket} from "./chat_sockets";
|
|
if (!files){
|
|
event.preventDefault()
|
|
}
|
|
let text = document.querySelector(".enter-message-inp").value
|
|
document.querySelector(".enter-message-inp").value = null
|
|
let img = document.querySelector(".attach-file-btn-message").dataset["file_img"]
|
|
|
|
|
|
if (files){
|
|
|
|
let data = {}
|
|
if (id_ticket === null){
|
|
data = {
|
|
'sender': sender,
|
|
'receiver': receiver,
|
|
'text': '',
|
|
'files': files
|
|
}
|
|
} else {
|
|
data = {
|
|
'ticket_id': id_ticket,
|
|
'sender': sender,
|
|
'receiver': receiver,
|
|
'text': '',
|
|
'files': files
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
sendMessageSocket(data,img)
|
|
|
|
} else {
|
|
|
|
if (text.length === 0){
|
|
//
|
|
}
|
|
else {
|
|
let data = {}
|
|
if (id_ticket === null){
|
|
data = {
|
|
'sender': sender,
|
|
'receiver': receiver,
|
|
'text': text,
|
|
'img': img
|
|
}
|
|
} else {
|
|
data = {
|
|
'ticket_id': id_ticket,
|
|
'sender': sender,
|
|
'receiver': receiver,
|
|
'text': text,
|
|
'img': img
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// $.ajax({
|
|
// headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
// url: '/ru/messages/send_msg/',
|
|
// type: "POST",
|
|
// // async: true,
|
|
// cache: false,
|
|
// processData: false,
|
|
// contentType: false,
|
|
// // enctype: 'json',
|
|
// data: JSON.stringify(data),
|
|
// success: function(data){
|
|
// middleWareJS()
|
|
//
|
|
// document.querySelector(".container-messages").innerHTML = data.html;
|
|
// document.querySelector(".enter-message-inp").focus()
|
|
//
|
|
// },
|
|
// error: function (data){
|
|
//
|
|
// document.querySelector(".container-messages").innerHTML = data.responseJSON.error;
|
|
// document.querySelector(".enter-message-inp").focus()
|
|
// }
|
|
// });
|
|
|
|
sendMessageSocket(data)
|
|
}
|
|
}
|
|
}
|
|
|
|
function openTicket (ticket_id){
|
|
let data = {
|
|
'ticket_id': ticket_id
|
|
}
|
|
|
|
$.ajax({
|
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
url: '/messages/support_show_chat_by_ticket/',
|
|
type: "POST",
|
|
// async: true,
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
// enctype: 'json',
|
|
data: JSON.stringify(data),
|
|
success: function(data){
|
|
middleWareJS()
|
|
|
|
document.querySelector(".info_profile").innerHTML = data.html;
|
|
|
|
},
|
|
error: function (data){
|
|
|
|
document.querySelector(".info_profile").innerHTML = data.responseJSON.html;
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
function sendMessageEnter (e,id_ticket,sender,receiver){
|
|
if (e.keyCode === 13){
|
|
sendMessage(id_ticket,sender,receiver)
|
|
}
|
|
else {
|
|
//
|
|
}
|
|
}
|
|
|
|
function send_subscribe (id){
|
|
let data = {
|
|
'subscribe_id':id
|
|
}
|
|
$.ajax({
|
|
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
|
|
url: '/subscribes/subscribe_now/',
|
|
type: "POST",
|
|
// async: true,
|
|
cache: false,
|
|
processData: false,
|
|
contentType: false,
|
|
// enctype: 'json',
|
|
data: JSON.stringify(data),
|
|
success: function(data){
|
|
|
|
document.querySelector(".info_profile").innerHTML = data.html;
|
|
|
|
},
|
|
error: function (data){
|
|
|
|
document.querySelector(".info_profile").innerHTML = data.responseJSON.html;
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function show_header_list () {
|
|
let el = document.querySelector(".menu_profile_btn")
|
|
if (el) {
|
|
el.classList.toggle("show")
|
|
}
|
|
}
|
|
|
|
function open_curtain (left,right){
|
|
let curtain = ''
|
|
if (left){
|
|
curtain = document.querySelector(".menu_buttons")
|
|
|
|
} else if (right) {
|
|
curtain = ''
|
|
}
|
|
curtain.classList.toggle("close")
|
|
curtain.classList.toggle("open")
|
|
} |