Archived
1
0
This repository has been archived on 2020-12-10. You can view files and clone it, but cannot push or open issues or pull requests.
old/assets/js/profile_page.js

161 lines
5.1 KiB
JavaScript
Raw Permalink Normal View History

2018-10-16 16:28:42 +00:00
let initSubHeaderOffsetTop = 500;
let parallaxActive = true;
$(document).ready(function () {
initSubHeaderOffsetTop = $('#profile-sub-header').offset().top;
$('section[data-type="background"]').each(function () {
var $bgobj = $(this);
$bgobj.css('height', parseFloat($('#profile-sub-header').css('top')) - $(window).scrollTop() - 60);
$(window).scroll(function () {
if (parallaxActive) {
let translateY = $('#profile-sub-header').css('transform');
if (translateY !== 'none') {
translateY = matrixToArray(translateY);
translateY = parseFloat(translateY[translateY.length - 1]);
} else {
translateY = 0;
}
$bgobj.css('height', 500 + translateY - $(window).scrollTop() - 60);
}
});
});
$('section[data-type="foreground"]').each(function () {
2018-12-30 17:44:45 +00:00
const $bgobj = $(this);
2018-10-16 16:28:42 +00:00
$(window).scroll(function () {
if (parallaxActive) {
2018-12-30 17:44:45 +00:00
const yPos = -($(window).scrollTop() / $bgobj.data('speed'));
const coords = '50% ' + yPos + 'px';
2018-10-16 16:28:42 +00:00
$bgobj.css({backgroundPosition: coords});
$bgobj.css('transform', 'translate3d(0,' + yPos + 'px, 0)')
}
});
});
});
function matrixToArray(str) {
return str.split('(')[1].split(')')[0].split(',');
}
$(window).scroll(function () {
const offsetTop = $(this).scrollTop() + 80;
const subheader = $('#profile-sub-header');
let translate = subheader.css('transform');
let translateY = 0;
if (translate !== 'none') {
translate = matrixToArray(translate);
translateY = parseFloat(translate[translate.length - 1]);
}
const logoContainer = $('.profile-picture-container');
const logo = $('.profile-picture');
const maxDelta = subheader.offset().top - (logoContainer.width() * .8 - 60) / 2;
// const maxDelta = (logoContainer.width() * .8) / 2;
// const delta = offsetTop - logoOffset - translateY;
const delta = offsetTop - 60;
let factor = 1 - delta / maxDelta;
factor = Math.min(Math.max(0, factor), 1);
const maxWidth = logoContainer.width() * .8;
const minWidth = 50;
const width = minWidth + factor * (maxWidth - minWidth);
const maxBorder = 5;
const border = factor * maxBorder;
const maxLeft = 50;
const minLeft = 100;
const left = minLeft + factor * (maxLeft - minLeft);
const minTransformX = -120;
const maxTransformX = -50;
const transformX = minTransformX + factor * (maxTransformX - minTransformX);
const minTransformY = -60;
const maxTransformY = -50;
const transformY = minTransformY + factor * (maxTransformY - minTransformY);
logo.css('width', width + 'px')
.css('border-width', border + 'px')
.css('left', left + '%')
.css('transform', `translate(${transformX}%, ${transformY}%)`);
$('.avatar-upload-overlay').css('width', width + 'px')
.css('height', width + 'px')
.css('left', left + '%')
.css('transform', `translate(${transformX}%, ${transformY}%)`);
const scrollTrigger = $('#scroll-trigger').offset().top;
if (offsetTop > scrollTrigger) {
2018-10-16 16:28:42 +00:00
parallaxActive = false;
subheader.addClass('fixedTop').css('top', 60 - translateY + 'px');
$('#profile-content').css('transform', `translateY(${translateY * -1}px)`)
} else if (offsetTop + 10 < scrollTrigger) {
2018-10-16 16:28:42 +00:00
parallaxActive = true;
subheader.removeClass('fixedTop');
2018-10-16 16:28:42 +00:00
}
});
const subButton = $('.subscribe-button');
const subbedClass = 'subbed';
subButton.on('click', function (e) {
sendFollowerRequest();
e.preventDefault();
});
function toggleSubbed(isSubbed) {
let count = subButton.attr('data-count');
if (isSubbed) {
subButton.removeClass(subbedClass);
count--;
} else {
subButton.addClass(subbedClass);
count++;
}
subButton.attr('data-count', count);
}
function sendFollowerRequest() {
$.ajax({
url: "/user/switchFollowing",
2018-10-16 16:28:42 +00:00
method: "POST",
success: function (data) {
switch (data.code) {
case 0:
$('#mustBeLoggedInModal').modal('show');
break;
case 1:
$('#cantFollowYourself').modal('show');
break;
case 10:
toggleSubbed(true);
break;
case 11:
toggleSubbed(false);
break;
default:
break;
}
},
});
}
$(document).ready(function () {
$(".vertical-tab-menu>.list-group>a").click(function (e) {
e.preventDefault();
$(this).siblings('a.active').removeClass("active");
$(this).addClass("active");
var index = $(this).index();
$(".vertical-tabs>.vertical-tab-content").removeClass("active");
$(".vertical-tabs>.vertical-tab-content").eq(index).addClass("active");
});
});