Update
parent
b172e3b730
commit
bac7071f52
|
@ -11,8 +11,8 @@
|
||||||
@update="scrollChange"
|
@update="scrollChange"
|
||||||
>
|
>
|
||||||
<h1 v-if="item.head" class="head">Vue is awesome!</h1>
|
<h1 v-if="item.head" class="head">Vue is awesome!</h1>
|
||||||
<div v-else class="user">
|
<div v-else class="photo">
|
||||||
{{ item.name }}
|
<img v-for="img of item.photos" :src="img.src" :key="img.file_id" />
|
||||||
</div>
|
</div>
|
||||||
</RecycleScroller>
|
</RecycleScroller>
|
||||||
</div>
|
</div>
|
||||||
|
@ -21,20 +21,17 @@
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
const list = [];
|
|
||||||
for (let i = 0; i < 1000; i++) {
|
|
||||||
list.push({
|
|
||||||
id: i,
|
|
||||||
name: 'bla' + i,
|
|
||||||
size: 32,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return {
|
return {
|
||||||
list: list,
|
list: [],
|
||||||
count: list.length,
|
count: 0,
|
||||||
|
ncols: 5,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.fetchList();
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
genList() {
|
genList() {
|
||||||
this.count++;
|
this.count++;
|
||||||
|
@ -47,9 +44,66 @@ export default {
|
||||||
head: true,
|
head: true,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
scrollChange(startIndex, endIndex) {
|
scrollChange(startIndex, endIndex) {
|
||||||
console.log('scrollChange', startIndex, endIndex);
|
console.log('scrollChange', startIndex, endIndex);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
async fetchList() {
|
||||||
|
const res = await fetch('/apps/betterphotos/api/list');
|
||||||
|
const data = await res.json();
|
||||||
|
const nrows = Math.ceil(data.length / this.ncols) + 5;
|
||||||
|
|
||||||
|
this.list.push({
|
||||||
|
id: -1,
|
||||||
|
size: 64,
|
||||||
|
head: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add n rows to the list
|
||||||
|
for (let i = 0; i < nrows; i++) {
|
||||||
|
this.list.push({
|
||||||
|
id: i,
|
||||||
|
photos: [],
|
||||||
|
size: 100,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const headIdx = 0;
|
||||||
|
let rowIdx = headIdx + 1;
|
||||||
|
|
||||||
|
// Add all rows
|
||||||
|
for (const p of data) {
|
||||||
|
// Check if we ran out of rows
|
||||||
|
if (rowIdx >= this.list.length || this.list[rowIdx].head) {
|
||||||
|
this.list.splice(rowIdx, 0, {
|
||||||
|
id: rowIdx,
|
||||||
|
photos: [],
|
||||||
|
size: 100,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Go to the next row
|
||||||
|
if (this.list[rowIdx].photos.length >= this.ncols) {
|
||||||
|
rowIdx++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the photo to the row
|
||||||
|
this.list[rowIdx].photos.push({
|
||||||
|
id: p.file_id,
|
||||||
|
src: `/core/preview?fileId=${p.file_id}&x=250&y=250`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get rid of any extra rows
|
||||||
|
let spliceCount = 0;
|
||||||
|
for (let i = rowIdx + 1; i < this.list.length && !this.list[i].head; i++) {
|
||||||
|
spliceCount++;
|
||||||
|
}
|
||||||
|
if (spliceCount > 0) {
|
||||||
|
this.list.splice(rowIdx + 1, spliceCount);
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -59,8 +113,13 @@ export default {
|
||||||
height: 300px;
|
height: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.user {
|
.photo {
|
||||||
height: 32px;
|
height: 100px;
|
||||||
|
}
|
||||||
|
.photo img {
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
.head {
|
.head {
|
||||||
height: 64px;
|
height: 64px;
|
||||||
|
|
Loading…
Reference in New Issue