Files
Aerbim/static/aerbimJS.js
2024-07-16 14:26:20 +03:00

718 lines
26 KiB
JavaScript

$(document).ready(function (){
if (document.querySelector(".header").dataset['page'] === 'True' && getInfoAboutUser()[0] !== 'mobile' && getInfoAboutUser()[0] !== 'laptop'){
resetSlider()
renderContent()
} else {
let el = document.querySelector(".container_sections_buttons")
if (el){
replaceHrefOnOnclick()
replace_select_language()
resetSlider()
autoPlaySlider()
resize_iframe()
}
}
if (getInfoAboutUser()[0] === 'laptop' || getInfoAboutUser()[0] === 'mobile'){
setInfInCurtainDocumentationMobile()
setButtonOpenMobileDocCurtain()
}
windowScrollDocPage()
})
function setButtonOpenMobileDocCurtain () {
let $content = $('.content_part_tree_els')
let $cont = document.createElement("div")
let $txt = document.createElement("div")
let $picture = document.createElement("picture")
let $source = document.createElement("source")
let $img = document.createElement("img")
$cont.classList.add("container_open_doc_curtain")
$txt.innerHTML = context_txt_translated
$txt.setAttribute("onclick",'openDocCurtainMobile()')
$txt.classList.add("container_open_doc_curtain_txt")
$picture.classList.add("container_open_doc_curtain_picture")
$source.srcset = '/static/images/arrow_open_documentation_curtain.svg'
$img.classList.add("container_open_doc_curtain_img")
$img.src = '/static/images/arrow_open_documentation_curtain.svg'
$cont.appendChild($txt)
$cont.appendChild($picture)
$picture.appendChild($source)
$picture.appendChild($img)
$($cont).insertAfter($(".breadcrumbs_documentation_block"))
}
function setInfInCurtainDocumentationMobile () {
let $doc_vers = $(".documentation_version")
let $container = document.createElement("div")
let $txt = document.createElement("div")
let $picture = document.createElement("picture")
let $source = document.createElement("source")
let $img = document.createElement("img")
$container.classList.add("container_top_txt_curtain_documentation")
$picture.classList.add("top_picture_curtain_documentation")
$txt.innerHTML = context_txt_translated
$txt.classList.add("top_txt_curtain_documentation")
$source.srcset = '/static/images/cross.svg'
$img.src = '/static/images/cross.svg'
$container.appendChild($txt)
$container.appendChild($picture)
$picture.appendChild($source)
$picture.setAttribute("onclick","closeDocCurtainMobile()")
$picture.appendChild($img)
$($container).insertBefore($doc_vers)
}
function openDocCurtainMobile () {
$("body").css({'overflow':'hidden'})
let $curtain = $(".left_curtain_documentation")
let $block_overlay = $(".block_overlay")
$curtain.css({left:0})
$block_overlay.removeClass("hide")
$block_overlay.addClass("show")
$block_overlay.css({zIndex:10000})
}
function closeDocCurtainMobile () {
$("body").css({'overflow':'unset'})
let $curtain = $(".left_curtain_documentation")
let $block_overlay = $(".block_overlay")
$curtain.css({left:'-320px'})
$block_overlay.addClass("hide")
$block_overlay.removeClass("show")
$block_overlay.css({zIndex:101})
}
autoplayInterval = null
function resize_iframe () {
$("iframe").each(function() {
let old_width = $(this).width()
$(this).width('100%');
var new_width = $(this).width ();
let height = $(this).height()
$(this).css("height", height/(old_width/new_width) + "px");
});
}
function getInfoAboutUser (){
let user_type = ''
if (screen.width <= 800){
user_type = 'mobile'
} else if (screen.width > 1024) {
user_type = 'desktop'
} else if (screen.width >= 800 && screen.width <= 1024) {
user_type = 'laptop'
}
return [user_type,screen.width]
}
function sendWidthAjax () {
let width = getInfoAboutUser()[1]
let data = {
'screen_width': width
}
return data
}
function renderContent (el=null) {
let data = sendWidthAjax()
if (!el) {
let section_button = document.querySelector(".section_btn")
data['section_url'] = section_button.dataset['url']
} else {
data['section_url'] = el.dataset['url']
}
data['csrfmiddlewaretoken'] = $('input[name=csrfmiddlewaretoken]').val();
let language = $('html').attr('lang');
data['lang'] = language
$.ajax({
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
url: '/get_content_for_section/',
type: "POST",
// async: true,
cache: false,
processData: false,
// contentType: false,
enctype: 'json',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
success: function(data){
document.querySelector(".content").innerHTML = data.html
let lang = getLang()
window.scrollTo(0, 0);
replaceHrefOnOnclick()
if (el){
history.pushState({
'section':data['section_url']
},
'',
`/${lang}/section/${el.dataset['url']}/`
)
}
if (window.location.href !== `${window.location.origin}/${lang}/`){
document.title = data.title
}
resetSlider()
autoPlaySlider()
replace_select_language()
resize_iframe()
},
error: function (data){
if (data.status !== 0){
alert(data.errors)
}
}
});
}
function getLang () {
let lang = ''
if (window.location.href.includes("/en/")){
lang = 'en'
} else if (window.location.href.includes("/ru/")){
lang = 'ru'
}
return lang
}
function replace_select_language () {
let select = document.querySelector(".name_language")
if (getInfoAboutUser()[0] === 'mobile' || getInfoAboutUser()[0] === 'laptop'){
select = document.querySelector(".name_language.curtain")
}
let lang_f_replace = getLang()
select.innerHTML = lang_f_replace
}
function replaceHrefOnOnclick () {
let elements = document.querySelectorAll('.section_btn')
let i = 0
elements.forEach(function (){
let cur_el = elements[i]
if (cur_el.attributes.hasOwnProperty("href")){
cur_el.setAttribute("onclick",`renderContent(this)`)
let str = cur_el.outerHTML
let str_f_replace = cur_el.href
str_f_replace = str_f_replace.replace(`${window.location.origin}`,'')
str_f_replace = `href="${str_f_replace}"`
str = str.replace(str_f_replace,'')
cur_el.outerHTML = str
}
i++
})
}
function faq_open_close () {
let faq = document.querySelector(".faq_container")
faq.classList.toggle("open")
faq.classList.toggle("close")
}
function open_select_language () {
let el = document.querySelector(".language_select")
if (getInfoAboutUser()[0] === 'mobile' || getInfoAboutUser()[0] === 'laptop'){
el = document.querySelector(".language_select.curtain")
}
el.classList.toggle("open")
el.classList.toggle("close")
}
function select_language (el) {
let txt = el.innerHTML
let select = document.querySelector(".name_language")
if (getInfoAboutUser()[0] === 'mobile' || getInfoAboutUser()[0] === 'laptop'){
select = document.querySelector(".name_language.curtain")
}
select.innerHTML = txt
let lang_f_replace = getLang()
lang_f_check = txt.toLowerCase()
// txt.toLowerCase() is selected lang:138
window.location.href = window.location.href.replace(`${lang_f_replace}`,txt.toLowerCase())
history.pushState({
'lang':lang_f_replace
},null,window.location.href.replace(`${lang_f_replace}`,txt.toLowerCase()))
open_select_language()
}
// curtain
function openCurtain (el) {
let curtain = document.querySelector(".curtain")
curtain.classList.toggle("open")
curtain.classList.toggle("close")
if (el.src.includes('burger_menu')){
el.src = '/static/images/close_menu.svg'
} else if (el.src.includes('close_menu')){
el.src = '/static/images/burger_menu.svg'
}
openOverlay()
}
function openOverlay () {
let overlay = document.querySelector(".block_overlay")
overlay.classList.toggle("show")
overlay.classList.toggle("hide")
removeScrollBody()
}
function removeScrollBody () {
let body = document.querySelector("body")
body.classList.toggle("n_scroll")
}
// slider
function change_slide (index_this_slide,type,list_lenght,new_slide_inf){
// stopAutoPlaySlider()
let new_index_slide = null
let this_slide = document.querySelector(`[data-id-slide="${index_this_slide}"]`)
let iterator_slide = document.querySelector(".iterator_slide")
if (type === 'next'){
new_index_slide = parseInt(index_this_slide) + 1
} else if (type === 'back'){
new_index_slide = parseInt(index_this_slide) - 1
}
if (parseInt(new_index_slide) > parseInt(list_lenght)){
new_index_slide = 1
} else if (parseInt(new_index_slide) < 1){
new_index_slide = list_lenght
}
let slide_f_show = document.querySelector(`[data-id-slide="${new_index_slide}"]`)
if (slide_f_show){
slide_f_show.classList.add("show")
slide_f_show.classList.remove("hide")
this_slide.classList.remove("show")
this_slide.classList.add("hide")
iterator_slide.innerHTML = `${new_index_slide} / ${list_lenght}`
}
if (new_slide_inf){
return slide_f_show
}
}
function autoPlaySlider () {
let next_slide = null
let new_slide = null
if (document.querySelector(".functions_btns_slider")){
if (!autoplayInterval){
autoplayInterval = setInterval(function (){
let datainf_cont
let dataset = null
if (!new_slide){
datainf_cont = document.querySelector(".functions_btns_slider")
} else {
datainf_cont = new_slide.querySelector(".functions_btns_slider")
}
dataset = datainf_cont.dataset
if (dataset){
let index_this_slide = dataset['indexSlide']
let list_lenght = dataset['lenghtSlides']
if (parseInt(list_lenght) > 1){
new_slide = change_slide(index_this_slide,'next',list_lenght,'new_slide_inf')
} else {
if (autoplayInterval){
clearInterval(autoplayInterval)
autoplayInterval = null
showOneSlide(index_this_slide)
}
}
}
},5000)
} else {
// autoPlaySlider()
}
}
}
function showOneSlide (index_this_slide) {
let slide = document.querySelector(`[data-id-slide="${index_this_slide}"]`)
slide.classList.add("show")
slide.classList.remove("hidden")
}
function resetSlider () {
if (autoplayInterval){
clearInterval(autoplayInterval)
autoplayInterval = null
}
}
// function stopAutoPlaySlider () {
// if (autoplayInterval){
// clearInterval(autoplayInterval)
// }
// }
// form feedback
function sendFormfeedback (el){
if (!document.querySelector(".container_content_form_feedback").classList.contains('hide')){
event.preventDefault()
let form = el.form
let formData = new FormData(form)
let btn_form = document.querySelector(".button_form_feedback")
if (!btn_form.classList.contains("hide")){
btn_form.classList.add('hide')
}
let language = $('html').attr('lang');
formData.append('lang', language)
$.ajax({
headers: { "X-CSRFToken": $('input[name=csrfmiddlewaretoken]').val() },
url: '/send_feedback_form/',
type: "POST",
// async: true,
cache: false,
processData: false,
enctype: 'multipart/form-data',
contentType: false,
// contentType: "application/json; charset=utf-8",
data: formData,
success: function(data){
document.querySelector(".place_f_after_send").innerHTML = data.html
document.querySelector(".place_f_after_send").classList.remove("hide")
document.querySelector(".container_content_form_feedback").classList.add('hide')
},
error: function (data){
document.querySelector(".form_feedback_content").innerHTML = data.responseJSON.left_form_html
document.querySelector(".checkbox_container").innerHTML = data.responseJSON.right_form_html
btn_form.classList.remove('hide')
}
});
}
}
function deleteErrorsInput (el) {
let parent = el.parentNode
let errors_container = parent.querySelector(".error_input_html")
if (errors_container){
let input = parent.querySelector(".input_form_feedback")
let checkbox_label = parent.querySelector(".label_feedback_form_checkbox")
if (input){
input.classList.remove('error')
} else if (checkbox_label){
checkbox_label.classList.remove("error")
} else {
let textarea = document.querySelector(".textarea_form_feedback")
textarea.classList.remove("error")
}
let str = errors_container.outerHTML
str = str.replace(str,'')
errors_container.outerHTML = str
}
}
function resetForm () {
let form = document.querySelector(".container_content_form_feedback")
form.classList.remove("hide")
let elements_form = document.querySelectorAll('.el_form_feedback')
for (let i = 0;i < elements_form.length;i++){
let cur_el = elements_form[i]
if (cur_el.value && cur_el.type !== 'checkbox') {
cur_el.value = ''
}
if (cur_el.checked){
cur_el.checked = false
}
let label_w_error = cur_el.parentNode.querySelector(".label_feedback_form_checkbox.error")
if (label_w_error){
label_w_error.classList.remove("error")
}
}
document.querySelector(".place_f_after_send").classList.add('hide')
let btn_form = document.querySelector(".button_form_feedback")
if (btn_form.classList.contains("hide")){
btn_form.classList.remove('hide')
}
}
function changeSlideProject (el,type) {
let cur_slide = document.querySelector(".el_container_projects_slider.show")
let dataset = cur_slide.dataset
if (dataset){
let index_cur_slide = parseInt(dataset['indexSlideProj'])
let count_slides = parseInt(dataset['countSlidesProj'])
let new_index_slide = null
if (type === 'next'){
new_index_slide = index_cur_slide + 1
} else if (type === 'back'){
new_index_slide = index_cur_slide - 1
}
if (new_index_slide > count_slides){
new_index_slide = 1
} else if (new_index_slide < 1){
new_index_slide = count_slides
}
let slide_f_processing = document.querySelector(`[data-index-slide-proj="${new_index_slide}"]`)
if (slide_f_processing){
slide_f_processing.classList.toggle("show")
slide_f_processing.classList.toggle("hide")
cur_slide.classList.toggle("show")
cur_slide.classList.toggle("hide")
}
}
}
// go to download plugin
function redirectToDownloadPlugin () {
let lang = document.querySelector(".name_language").innerHTML
if (getInfoAboutUser()[0] === 'mobile' || getInfoAboutUser()[0] === 'laptop'){
lang = document.querySelector(".name_language.curtain").innerHTML
}
// if (!window.location.href.includes(`${window.location.origin}/${lang}/section/3d-security-designer/`)){
// window.location.href = `${window.location.origin}/${lang}/section/3d-security-designer/#feedback_form`
// } else {
window.location.href = `${window.location.origin}/${lang}/section/3d-security-designer/#feedback_form`
// }
}
function transitToDocumentation() {
window.location.href = window.location.origin + '/' + getLang() + '/docs/3dsd/'
}
function openVersionSwitcher(el){
let $parent = el.closest(".documentation_version_switcher")
let $content_part = $parent.querySelector(".documentation_switcher_content_part")
let $arrow = $parent.querySelector(".documentation_switcher_arrow_picture")
$content_part.classList.toggle("hidden")
if ($arrow.style.rotate === '0deg' || $arrow.style.rotate === '') {
$($arrow).css({rotate: '180deg'})
let height = $content_part.offsetHeight
$content_part.style.bottom = '-' + height + "px"
$parent.style.borderBottom = '1px solid #fff'
} else {
$($arrow).css({rotate: '0deg'})
$parent.style.borderBottom = '1px solid #CCCED1FF'
}
$("body")[0].setAttribute("onclick",'closeVersionSwitcherOnBody()')
}
function closeVersionSwitcherOnBody () {
if (!event.srcElement.closest(".documentation_version_switcher")){
let $version_switcher_container_content = $(".documentation_switcher_content_part")
let $arrow = document.querySelector(".documentation_switcher_arrow_picture")
$version_switcher_container_content.addClass("hidden")
$(".documentation_version_switcher").css({borderBottom: '1px solid #CCCED1FF'})
if ($arrow.style.rotate !== '180deg'){
$($arrow).css({rotate: '180deg'})
} else {
$($arrow).css({rotate: '0deg'})
}
$("body")[0].setAttribute("onclick",'')
}
}
function choseItemTreeDocumentation (el){
let $tree = el.closest(".tree_documentation_container")
let $allChosingElementsTreeThirdLevel = $($tree).find(".element_third_level_content_part_tree")
let $allChosingElementsTreeSecondLevel = $($tree).find(".tree_documentation_container_second_level_txt")
let $allChosingElementsTreeFirstLevel = $($tree).find(".tree_documentation_container_first_level_txt")
$allChosingElementsTreeThirdLevel.each(function (){
if (el !== this){
this.classList.remove("chose")
}
})
$allChosingElementsTreeSecondLevel.each(function (){
if (el !== this){
this.classList.remove("chose")
}
})
$allChosingElementsTreeFirstLevel.each(function (){
if (el !== this){
this.classList.remove("chose")
}
})
el.classList.add("chose")
let url = window.location.origin + el.dataset['url']
window.location.href = url
}
function showContentPartTree (el) {
let $parent = el.parentNode
let $content_part = $parent.querySelector(".content_part_tree_documentation_container")
if (!$content_part){
$parent = $parent.parentNode
$content_part = $parent.querySelector(".content_part_tree_documentation_container")
}
let $arrow = $parent.querySelector(".tree_documentation_arrow_img")
$content_part.classList.toggle("hidden")
if ($arrow.style.rotate === '0deg' || $arrow.style.rotate === ''){
$($arrow).css({rotate: '90deg'})
} else {
$($arrow).css({rotate: '0deg'})
}
let scroll = $(window)[0].scrollY
$($(".left_curtain_documentation")[1]).find(".tree_documentation_container").css({height: 'fit-content'})
maxScroll = scroll + $(".documentation_block")[0].getBoundingClientRect().bottom - $(".left_curtain_documentation")[1].offsetHeight - 172
$($(".left_curtain_documentation")[1]).find(".tree_documentation_container").css({height: 'calc(100vh - 300px)'})
}
let waitingTop = null
let maxScroll = null
function windowScrollDocPage (){
if (getInfoAboutUser()[0] !== 'laptop' && getInfoAboutUser()[0] !== 'mobile'){
if (window.location.href.includes("docs")){
let $curtain = $(".left_curtain_documentation")
let scroll = $(window)[0].scrollY
if (scroll === 0){
waitingTop = $(".left_curtain_documentation")[0].getBoundingClientRect().top - 172
$(".left_curtain_documentation").find(".tree_documentation_container").css({height: 'fit-content'})
maxScroll = $(".documentation_block")[0].getBoundingClientRect().bottom - $(".left_curtain_documentation")[0].offsetHeight - 172
$(".left_curtain_documentation").find(".tree_documentation_container").css({height: 'calc(100vh - 300px)'})
}
let $new_curtain = $($curtain[1])
if (scroll < maxScroll || !maxScroll){
if (!$curtain[1] && waitingTop){
$new_curtain = $curtain.clone()
$new_curtain.insertAfter($curtain)
let $new_curtain_tree = $new_curtain.find(".tree_documentation_container")
$new_curtain_tree.css({height: 'calc(100vh - 245px);'})
}
if (scroll >= waitingTop && waitingTop){
$new_curtain.css({position:'fixed',top: 166,bottom:"unset"})
$($curtain[0]).css({opacity:0})
$($curtain[0]).find(".tree_documentation_container").css({display:'none'})
} else if (scroll < waitingTop && waitingTop) {
$new_curtain.remove()
$($curtain[0]).css({opacity:1})
$($curtain[0]).find(".tree_documentation_container").css({display:'block'})
} else if (!waitingTop){
waitingTop = $(".left_curtain_documentation")[0].getBoundingClientRect().top - 172
$(".left_curtain_documentation").find(".tree_documentation_container").css({height: 'fit-content'})
maxScroll = $(".documentation_block")[0].getBoundingClientRect().bottom - $(".left_curtain_documentation")[0].offsetHeight - 172
$(".left_curtain_documentation").find(".tree_documentation_container").css({height: 'calc(100vh - 300px)'})
}
} else {
if (!$curtain[1]){
$new_curtain = $curtain.clone()
$new_curtain.insertAfter($curtain)
let $new_curtain_tree = $new_curtain.find(".tree_documentation_container")
$new_curtain_tree.css({height: 'calc(100vh - 245px);'})
}
$new_curtain.find(".tree_documentation_container").css({height:'fit-content'})
$new_curtain.css({position:'absolute',bottom: 0,top: 'unset'})
$($curtain[0]).css({opacity:0})
}
}
}
}
$(window).scroll(function (){
if (getInfoAboutUser()[0] !== 'laptop' && getInfoAboutUser()[0] !== 'mobile'){
if (window.location.href.includes("docs")){
let $curtain = $(".left_curtain_documentation")
let scroll = $(window)[0].scrollY
if (scroll === 0){
waitingTop = $(".left_curtain_documentation")[0].getBoundingClientRect().top - 172
$(".left_curtain_documentation").find(".tree_documentation_container").css({height: 'fit-content'})
maxScroll = $(".documentation_block")[0].getBoundingClientRect().bottom - $(".left_curtain_documentation")[0].offsetHeight - 172
$(".left_curtain_documentation").find(".tree_documentation_container").css({height: 'calc(100vh - 300px)'})
}
let $new_curtain = $($curtain[1])
if (scroll < maxScroll || !maxScroll){
if (!$curtain[1] && waitingTop){
$new_curtain = $curtain.clone()
$new_curtain.insertAfter($curtain)
let $new_curtain_tree = $new_curtain.find(".tree_documentation_container")
$new_curtain_tree.css({height: 'calc(100vh - 245px);'})
}
if (scroll >= waitingTop && waitingTop){
$new_curtain.css({position:'fixed',top: 166,bottom:"unset"})
$($curtain[0]).css({opacity:0})
$($curtain[0]).find(".tree_documentation_container").css({display:'none'})
} else if (scroll < waitingTop && waitingTop) {
$curtain.find(".tree_documentation_container")[0].innerHTML = $new_curtain.find(".tree_documentation_container")[0].innerHTML
$new_curtain.remove()
$($curtain[0]).css({opacity:1})
$($curtain[0]).find(".tree_documentation_container").css({display:'block'})
} else if (!waitingTop){
waitingTop = $(".left_curtain_documentation")[0].getBoundingClientRect().top - 172
$(".left_curtain_documentation").find(".tree_documentation_container").css({height: 'fit-content'})
maxScroll = $(".documentation_block")[0].getBoundingClientRect().bottom - $(".left_curtain_documentation")[0].offsetHeight - 172
$(".left_curtain_documentation").find(".tree_documentation_container").css({height: 'calc(100vh - 300px)'})
}
} else {
if (!$curtain[1]){
$new_curtain = $curtain.clone()
$new_curtain.insertAfter($curtain)
let $new_curtain_tree = $new_curtain.find(".tree_documentation_container")
$new_curtain_tree.css({height: 'calc(100vh - 245px);'})
}
$new_curtain.find(".tree_documentation_container").css({height:'fit-content'})
$new_curtain.css({position:'absolute',bottom: 0,top: 'unset'})
$($curtain[0]).css({opacity:0})
}
}
}
})
function chooseVersionComplete (el) {
let url = el.dataset['url']
let title = el.dataset['title']
let $parent = el.closest(".documentation_version")
let $cur_selected = $parent.querySelector(".cur_documentation_version")
let $cont = el.closest(".documentation_switcher_content_part")
let $cont_parent = $cont.closest(".documentation_version_switcher")
$cont_parent.style.borderBottom = '1px solid #CCCED1FF'
$cont.classList.add("hidden")
$cur_selected.innerHTML = title
window.location.href = window.location.origin + url
}
function breadCrumbGo (el){
if (el.dataset){
let url = el.dataset['url']
window.location.href = window.location.origin + url
}
}
function changeCurArticle (el){
let url = el.dataset['url']
window.location.href = window.location.origin + url
}