Files
tripwithbonus/static/js/user_profile_2.js
2023-10-22 14:35:23 +03:00

572 lines
15 KiB
JavaScript

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: JSON.stringify(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")
}
}