Fixed gallery filtering and sorting

This commit is contained in:
Joel Collins 2020-01-29 18:01:01 +00:00
parent b9ae730c73
commit c938a1d7ff
2 changed files with 26 additions and 22 deletions

View file

@ -7,11 +7,11 @@
<img <img
class="uk-width-1-1" class="uk-width-1-1"
:data-src="thumbnail" :data-src="thumbnail"
:alt="metadata.id" :alt="metadata.image.id"
width="300" width="300"
height="225" height="225"
uk-img uk-img
@click="$root.$emit('globalUpdateCaptureFolder', metadata.id)" @click="$root.$emit('globalUpdateCaptureFolder', metadata.image.id)"
/> />
</a> </a>
</div> </div>
@ -22,14 +22,14 @@
uk-grid uk-grid
> >
<div class="uk-margin-remove-top uk-padding-remove uk-width-expand"> <div class="uk-margin-remove-top uk-padding-remove uk-width-expand">
<b>{{ metadata.type || "Dataset" }}: </b> {{ metadata.name }} <b>{{ metadata.type || "Dataset" }}: </b> {{ metadata.image.name }}
</div> </div>
</div> </div>
<div <div
class="uk-text-meta uk-margin-remove-top uk-padding-remove uk-width-expand" class="uk-text-meta uk-margin-remove-top uk-padding-remove uk-width-expand"
> >
<time>{{ metadata.acquisitionDate }}</time> <time>{{ metadata.image.acquisitionDate }}</time>
</div> </div>
<div <div
class="uk-text-meta uk-margin-remove-top uk-padding-remove uk-width-auto" class="uk-text-meta uk-margin-remove-top uk-padding-remove uk-width-auto"
@ -40,7 +40,7 @@
<div class="uk-card-footer uk-padding-small"> <div class="uk-card-footer uk-padding-small">
<span <span
v-for="tag in metadata.tags" v-for="tag in metadata.image.tags"
:key="tag" :key="tag"
class="uk-label uk-margin-small-right deletable-label" class="uk-label uk-margin-small-right deletable-label"
> >
@ -51,13 +51,13 @@
<div :id="metadataModalID" uk-modal> <div :id="metadataModalID" uk-modal>
<div class="uk-modal-dialog uk-modal-body"> <div class="uk-modal-dialog uk-modal-body">
<button class="uk-modal-close-default" type="button" uk-close></button> <button class="uk-modal-close-default" type="button" uk-close></button>
<h2 class="uk-modal-title">{{ metadata.basename }}</h2> <h2 class="uk-modal-title">{{ metadata.image.name }}</h2>
<p><b>Time: </b>{{ metadata.acquisitionDate }}</p> <p><b>Time: </b>{{ metadata.image.acquisitionDate }}</p>
<p><b>ID: </b>{{ metadata.id }}</p> <p><b>ID: </b>{{ metadata.image.id }}</p>
<hr /> <hr />
<div v-for="(value, key) in metadata.annotations" :key="key"> <div v-for="(value, key) in metadata.image.annotations" :key="key">
<p> <p>
<b>{{ key }}: </b>{{ value }} <b>{{ key }}: </b>{{ value }}
</p> </p>
@ -100,7 +100,7 @@ export default {
methods: { methods: {
makeModalName: function(prefix) { makeModalName: function(prefix) {
return prefix + this.metadata.id; return prefix + this.metadata.image.id;
} }
} }
}; };

View file

@ -167,13 +167,15 @@ export default {
scans[id].isScan = true; scans[id].isScan = true;
scans[id].captures = []; scans[id].captures = [];
scans[id].metadata = { scans[id].metadata = {
name: dataset.name, image: {
acquisitionDate: dataset.acquisitionDate, name: dataset.name,
id: dataset.id, acquisitionDate: dataset.acquisitionDate,
id: dataset.id,
tags: [],
annotations: {}
},
type: dataset.type type: dataset.type
}; };
scans[id].metadata.tags = [];
scans[id].metadata.annotations = {};
} }
// Add the capture object to the scan // Add the capture object to the scan
@ -181,15 +183,15 @@ export default {
// Add missing scan metadata, prioritising first capture // Add missing scan metadata, prioritising first capture
for (var key of Object.keys(annotations)) { for (var key of Object.keys(annotations)) {
if (!(key in scans[id].metadata.annotations)) { if (!(key in scans[id].metadata.image.annotations)) {
scans[id].metadata.annotations[key] = annotations[key]; scans[id].metadata.image.annotations[key] = annotations[key];
} }
} }
// Append missing tags // Append missing tags
for (var tag of tags) { for (var tag of tags) {
if (!scans[id].metadata.tags.includes(tag)) { if (!scans[id].metadata.image.tags.includes(tag)) {
scans[id].metadata.tags.push(tag); scans[id].metadata.image.tags.push(tag);
} }
} }
@ -313,7 +315,7 @@ export default {
var includeCapture = false; var includeCapture = false;
// Filter by selected tags // Filter by selected tags
var tags = capture.metadata.tags; var tags = capture.metadata.image.tags;
let checker = (arr, target) => target.every(v => arr.includes(v)); let checker = (arr, target) => target.every(v => arr.includes(v));
// True if all tags match // True if all tags match
includeCapture = checker(tags, filterTags); includeCapture = checker(tags, filterTags);
@ -330,8 +332,10 @@ export default {
sortCaptures: function(list) { sortCaptures: function(list) {
// Sort a list of captures by metadata time // Sort a list of captures by metadata time
function compare(a, b) { function compare(a, b) {
if (a.metadata.time < b.metadata.time) return -1; if (a.metadata.image.acquisitionDate < b.metadata.image.acquisitionDate)
if (a.metadata.time > b.metadata.time) return 1; return -1;
if (a.metadata.image.acquisitionDate > b.metadata.image.acquisitionDate)
return 1;
return 0; return 0;
} }