|
|
|
@ -1,6 +1,6 @@ |
|
|
|
<template> |
|
|
|
<template> |
|
|
|
<div class="contest-works"> |
|
|
|
<div class="contest-works"> |
|
|
|
<div class="contest-works__works"> |
|
|
|
<div class="contest-works__works" v-if="! $root.store.isMobile"> |
|
|
|
<div class="contest-works__column"> |
|
|
|
<div class="contest-works__column"> |
|
|
|
<contest-work v-for="contestWork in columns[0]" :key="contestWork.id" :contest-work="contestWork"></contest-work> |
|
|
|
<contest-work v-for="contestWork in columns[0]" :key="contestWork.id" :contest-work="contestWork"></contest-work> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -11,6 +11,9 @@ |
|
|
|
<contest-work v-for="contestWork in columns[2]" :key="contestWork.id" :contest-work="contestWork"></contest-work> |
|
|
|
<contest-work v-for="contestWork in columns[2]" :key="contestWork.id" :contest-work="contestWork"></contest-work> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="contest-works__works" v-if="$root.store.isMobile" style="display: block;"> |
|
|
|
|
|
|
|
<contest-work v-for="contestWork in contestWorks" :key="contestWork.id" :contest-work="contestWork"></contest-work> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div v-show="loading" class="contest-works__loader"><div class="loading-loader"></div></div> |
|
|
|
<div v-show="loading" class="contest-works__loader"><div class="loading-loader"></div></div> |
|
|
|
<div v-if="loaded && !contestWorks.length" class="contest-works__no-works">Здесь вы сможете увидеть работы участников после их добавления</div> |
|
|
|
<div v-if="loaded && !contestWorks.length" class="contest-works__no-works">Здесь вы сможете увидеть работы участников после их добавления</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -48,12 +51,33 @@ |
|
|
|
}, |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
computed: { |
|
|
|
columns() { |
|
|
|
columns() { |
|
|
|
|
|
|
|
const columnWidth = 300; |
|
|
|
|
|
|
|
const heights = [0, 0, 0]; |
|
|
|
const first = []; |
|
|
|
const first = []; |
|
|
|
const second = []; |
|
|
|
const second = []; |
|
|
|
const third = []; |
|
|
|
const third = []; |
|
|
|
|
|
|
|
let index = 0; |
|
|
|
for(let i=0; i < this.contestWorks.length; i++) { |
|
|
|
for(let i=0; i < this.contestWorks.length; i++) { |
|
|
|
const work = this.contestWorks[i]; |
|
|
|
const work = this.contestWorks[i]; |
|
|
|
[first, second, third][i % 3].push(work); |
|
|
|
let column = index % 3; |
|
|
|
|
|
|
|
const workHeight = work.img_height / work.img_width * columnWidth + 50; |
|
|
|
|
|
|
|
let minHeight = 0; |
|
|
|
|
|
|
|
if(i > 3){ |
|
|
|
|
|
|
|
for(let j=0; j < 3; j++){ |
|
|
|
|
|
|
|
let col = j % 3; |
|
|
|
|
|
|
|
if(! minHeight || heights[j] < minHeight){ |
|
|
|
|
|
|
|
minHeight = heights[j]; |
|
|
|
|
|
|
|
if(heights[column] - heights[j] > workHeight * 0.1){ |
|
|
|
|
|
|
|
column = j; |
|
|
|
|
|
|
|
index += j - column; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
heights[column] += workHeight; |
|
|
|
|
|
|
|
[first, second, third][column].push(work); |
|
|
|
|
|
|
|
index++; |
|
|
|
} |
|
|
|
} |
|
|
|
return [first, second, third]; |
|
|
|
return [first, second, third]; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -97,6 +121,7 @@ |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
flex-direction: column; |
|
|
|
margin-right: 20px; |
|
|
|
margin-right: 20px; |
|
|
|
|
|
|
|
width: 300px; |
|
|
|
} |
|
|
|
} |
|
|
|
.contest-works__loader { |
|
|
|
.contest-works__loader { |
|
|
|
width: 100%; |
|
|
|
width: 100%; |
|
|
|
|