LIL-715 Не работает галерея работ

remotes/origin/editis_13-01-19
gzbender 7 years ago
parent 7ed17d4e5a
commit 71a583df7c
  1. 4
      apps/user/templates/user/edit-gallery.html
  2. 4
      project/templates/blocks/lil_store_js.html
  3. 11
      web/src/js/app.js
  4. 103
      web/src/js/modules/common.js
  5. 2
      web/src/js/modules/profile.js
  6. 2
      web/src/js/user-gallery-edit.js

@ -13,7 +13,7 @@
{% block pre_app_js %} {% block pre_app_js %}
<script> <script>
window.LIL_STORE.data.user_gallery_images = [{% for img in user.gallery.gallery_images.reverse %}{ window.LIL_STORE.data.userGalleryImages = [{% for img in user.gallery.gallery_images.reverse %}{
id: {{ img.id }}, id: {{ img.id }},
image_thumbnail_url: '{{ img.img.image_thumbnail.url }}', image_thumbnail_url: '{{ img.img.image_thumbnail.url }}',
image_id: {{ img.img.id }}, image_id: {{ img.img.id }},
@ -27,7 +27,7 @@
<div class="section__center center center_sm"> <div class="section__center center center_sm">
<div class="title">Редактировать работы</div> <div class="title">Редактировать работы</div>
<div> <div>
<block-images :images="$root.store.data.user_gallery_images" :access-token="$root.store.accessToken" no-title="1"/> <block-images :images="$root.store.data.userGalleryImages" :access-token="$root.store.accessToken" no-title="1"/>
</div> </div>
<a href="#" id="gallery-save" class="btn">Сохранить</a> <a href="#" id="gallery-save" class="btn">Сохранить</a>
</div> </div>

@ -33,5 +33,9 @@
isGiftCertificateUrl: {{ is_gift_certificate_url|yesno:"true,false" }}, isGiftCertificateUrl: {{ is_gift_certificate_url|yesno:"true,false" }},
}, },
data: {}, data: {},
urlIs: (urlPatternName) => {
return window.location.pathname.search(window.LIL_STORE.urls[urlPatternName]) > -1;
},
isIndexPage: window.location.pathname == '/',
}; };
</script> </script>

@ -37,10 +37,6 @@ if (process.env.NODE_ENV === 'development') {
Vue.config.devtools = true; Vue.config.devtools = true;
} }
window.urlIs = (urlPatternName) => {
return window.location.pathname.search(window.LIL_STORE.urls[urlPatternName]) > -1;
};
const components = { const components = {
UploadContestWork, UploadContestWork,
ContestWorks, ContestWorks,
@ -50,11 +46,11 @@ const components = {
Object.assign(components, window.LIL_STORE.components); Object.assign(components, window.LIL_STORE.components);
if(urlIs('faq')){ if(window.LIL_STORE.urlIs('faq')){
const FAQ = require('../components/FAQ.vue'); const FAQ = require('../components/FAQ.vue');
components['faq'] = FAQ.default; components['faq'] = FAQ.default;
} }
if(urlIs('userProfileEdit') || urlIs('userBonuses')){ if(window.LIL_STORE.urlIs('userProfileEdit') || window.LIL_STORE.urlIs('userBonuses')){
const profile = require("./modules/profile"); const profile = require("./modules/profile");
profile.main(); profile.main();
} }
@ -64,6 +60,7 @@ const app = new Vue({
data() { data() {
return { return {
store: window.LIL_STORE, store: window.LIL_STORE,
} }, }
},
components: components components: components
}); });

@ -44,64 +44,67 @@ $(document).ready(function () {
}); });
//===========REVIEWS=============== //===========REVIEWS===============
const $reviews = $('.reviews'); if(window.LIL_STORE.isIndexPage){
const $reviewsWrap = $('.reviews__wrap'); const $reviews = $('.reviews');
const reviewImages = $reviews.data('review-images').split(','); const $reviewsWrap = $('.reviews__wrap');
const reviewsHeight = $reviews.height(); const reviewImages = $reviews.data('review-images').split(',');
let reviewsScrollInterval = null; const reviewsHeight = $reviews.height();
let reviewsScrollActive = false; let reviewsScrollInterval = null;
let currentReviewNum = 10; let reviewsScrollActive = false;
let reviewsLoading = 0; let currentReviewNum = 10;
const reviewsScrollFn = () => { let reviewsLoading = 0;
if(! reviewsScrollActive){ const reviewsScrollFn = () => {
clearInterval(reviewsScrollInterval); if(! reviewsScrollActive){
reviewsScrollInterval = null; clearInterval(reviewsScrollInterval);
} reviewsScrollInterval = null;
for(let item of $reviewsWrap.find('.reviews__item')){ }
let $item = $(item); for(let item of $reviewsWrap.find('.reviews__item')){
let $item = $(item);
let top = parseFloat($reviewsWrap.css('top'));
let marginTop = parseFloat($reviewsWrap.css('marginTop'));
if(marginTop + top + $item.outerHeight(true) >= 0){
break;
}
$reviewsWrap.css('marginTop', (marginTop + $item.outerHeight(true)) + 'px');
$item.remove();
}
let top = parseFloat($reviewsWrap.css('top')); let top = parseFloat($reviewsWrap.css('top'));
let marginTop = parseFloat($reviewsWrap.css('marginTop')); let marginTop = parseFloat($reviewsWrap.css('marginTop'));
if(marginTop + top + $item.outerHeight(true) >= 0){ $reviewsWrap.css('top', top - 100 + 'px');
break; if(($reviewsWrap.height() + top + marginTop < reviewsHeight + 500) && ! reviewsLoading){
} for(let i=0; i<5; i++){
$reviewsWrap.css('marginTop', (marginTop + $item.outerHeight(true)) + 'px'); currentReviewNum = (currentReviewNum >= (reviewImages.length - 1)) ? 0 : (currentReviewNum + 1);
$item.remove(); let $img = $(`<img class="reviews__item">`);
} $img[0].src = `${window.LIL_STORE.staticUrl}img/reviews/${reviewImages[currentReviewNum]}.png`;
let top = parseFloat($reviewsWrap.css('top')); reviewsLoading++;
let marginTop = parseFloat($reviewsWrap.css('marginTop'));
$reviewsWrap.css('top', top - 100 + 'px');
if(($reviewsWrap.height() + top + marginTop < reviewsHeight + 500) && ! reviewsLoading){
for(let i=0; i<5; i++){
currentReviewNum = (currentReviewNum >= (reviewImages.length - 1)) ? 0 : (currentReviewNum + 1);
let $img = $(`<img class="reviews__item">`);
$img[0].src = `${window.LIL_STORE.staticUrl}img/reviews/${reviewImages[currentReviewNum]}.png`;
reviewsLoading++;
$img[0].onload = () => { $img[0].onload = () => {
reviewsLoading--; reviewsLoading--;
$reviewsWrap.append($img); $reviewsWrap.append($img);
}; };
}
} }
} };
}
const checkScroll = e => { const checkScroll = e => {
const scrollTop = window.pageYOffset; const scrollTop = window.pageYOffset;
const reviewsTop = $reviews[0].offsetTop; const reviewsTop = $reviews[0].offsetTop;
if(scrollTop + window.innerHeight > reviewsTop - 200 && scrollTop < reviewsTop + reviewsHeight){ if(scrollTop + window.innerHeight > reviewsTop - 200 && scrollTop < reviewsTop + reviewsHeight){
if(! reviewsScrollInterval){ if(! reviewsScrollInterval){
reviewsScrollActive = true; reviewsScrollActive = true;
reviewsScrollInterval = setInterval(reviewsScrollFn, 3000); reviewsScrollInterval = setInterval(reviewsScrollFn, 3000);
reviewsScrollFn(); reviewsScrollFn();
}
}
else{
reviewsScrollActive = false;
} }
} }
else{
reviewsScrollActive = false;
}
}
$(window).scroll(checkScroll); $(window).scroll(checkScroll);
checkScroll(); checkScroll();
}
if(window.LIL_STORE.flags.isReferralUrl){ if(window.LIL_STORE.flags.isReferralUrl){
if(window.LIL_STORE.user.id){ if(window.LIL_STORE.user.id){

@ -4,7 +4,7 @@ import ClipboardJS from 'clipboard';
import {showNotification} from './notification'; import {showNotification} from './notification';
export const main = () => { export const main = () => {
if(urlIs('userBonuses')){ if(window.LIL_STORE.urlIs('userBonuses')){
$('#referrer-url').select().click(function(){ $('#referrer-url').select().click(function(){
$(this).select(); $(this).select();
}); });

@ -7,7 +7,7 @@ window.LIL_STORE.components['block-images'] = BlockImages;
$(document).ready(function () { $(document).ready(function () {
$('#gallery-save').click(e => { $('#gallery-save').click(e => {
e.preventDefault(); e.preventDefault();
api.saveUserGallery(window.LIL_STORE._user_gallery_images).then(response => { api.saveUserGallery(window.LIL_STORE.data.userGalleryImages).then(response => {
window.location.href = '/user/profile/#works'; window.location.href = '/user/profile/#works';
}); });
}); });

Loading…
Cancel
Save