2020-06-10 12:13:57 +00:00
|
|
|
<template>
|
2020-06-27 08:31:20 +00:00
|
|
|
<div class="p-tab p-tab-photo-advanced">
|
|
|
|
<div class="v-table__overflow">
|
|
|
|
<table class="v-datatable v-table theme--light">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td>UID</td>
|
|
|
|
<td>{{ model.UID | uppercase }}</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.DocumentID">
|
|
|
|
<td>Document ID</td>
|
|
|
|
<td>{{ model.DocumentID | uppercase }}</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2020-07-14 10:42:31 +00:00
|
|
|
<td :title="model.TypeSrc">
|
2020-07-14 17:07:06 +00:00
|
|
|
<translate>Type</translate> <v-icon v-if="model.TypeSrc === 'manual'" class="src">check</v-icon>
|
2020-07-14 10:42:31 +00:00
|
|
|
</td>
|
2020-06-30 09:36:36 +00:00
|
|
|
<td>
|
2020-07-14 10:42:31 +00:00
|
|
|
<v-select
|
|
|
|
@change="save"
|
|
|
|
flat solo
|
|
|
|
browser-autocomplete="off"
|
|
|
|
hide-details
|
|
|
|
color="secondary-dark"
|
|
|
|
v-model="model.Type"
|
|
|
|
:items="options.PhotoTypes()"
|
|
|
|
class="input-type">
|
|
|
|
</v-select>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
</tr>
|
|
|
|
<tr v-if="model.Path">
|
2020-06-30 09:36:36 +00:00
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Folder</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>{{ model.Path }}</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2020-06-30 09:36:36 +00:00
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Name</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>{{ model.Name }}</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.OriginalName">
|
2020-06-30 09:36:36 +00:00
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Original Name</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>
|
|
|
|
<v-text-field
|
|
|
|
@change="save"
|
|
|
|
flat solo dense hide-details v-model="model.OriginalName"
|
|
|
|
color="secondary-dark"
|
|
|
|
></v-text-field>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2020-07-14 10:42:31 +00:00
|
|
|
<td :title="model.TitleSrc">
|
2020-07-14 17:07:06 +00:00
|
|
|
<translate>Title</translate> <v-icon v-if="model.TitleSrc === 'manual'" class="src">check</v-icon>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>{{ model.Title }}</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2020-07-14 10:42:31 +00:00
|
|
|
<td :title="model.TakenSrc">
|
2020-07-14 17:07:06 +00:00
|
|
|
<translate>Taken</translate> <v-icon v-if="model.TakenSrc === 'manual'" class="src">check</v-icon>
|
2020-07-13 14:29:36 +00:00
|
|
|
</td>
|
2020-07-14 10:42:31 +00:00
|
|
|
<td>{{ model.getDateString() }}</td>
|
2020-07-13 14:29:36 +00:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>
|
|
|
|
<translate>Quality Score</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>
|
|
|
|
<v-rating v-model="model.Quality" :length="7" readonly small></v-rating>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2020-06-30 09:36:36 +00:00
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Resolution</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>{{ model.Resolution }} MP</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.CameraSerial">
|
2020-06-30 09:36:36 +00:00
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Camera Serial</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>{{ model.CameraSerial }}
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2020-06-30 09:36:36 +00:00
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Favorite</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>
|
|
|
|
<v-switch
|
|
|
|
@change="save"
|
|
|
|
hide-details
|
|
|
|
v-model="model.Favorite"
|
2020-07-03 15:35:10 +00:00
|
|
|
:label="model.Favorite ? $gettext('Yes') : $gettext('No')"
|
2020-06-27 08:31:20 +00:00
|
|
|
></v-switch>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
2020-06-30 09:36:36 +00:00
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Private</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
2020-06-27 08:31:20 +00:00
|
|
|
<td>
|
|
|
|
<v-switch
|
|
|
|
@change="save"
|
|
|
|
hide-details
|
|
|
|
v-model="model.Private"
|
2020-07-03 15:35:10 +00:00
|
|
|
:label="model.Private ? $gettext('Yes') : $gettext('No')"
|
2020-06-27 08:31:20 +00:00
|
|
|
></v-switch>
|
|
|
|
</td>
|
|
|
|
</tr>
|
2020-07-05 12:48:49 +00:00
|
|
|
<tr>
|
|
|
|
<td>
|
2020-07-06 12:35:25 +00:00
|
|
|
<translate key="Scan">Scan</translate>
|
2020-07-05 12:48:49 +00:00
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
<v-switch
|
|
|
|
@change="save"
|
|
|
|
hide-details
|
2020-07-06 12:35:25 +00:00
|
|
|
v-model="model.Scan"
|
|
|
|
:label="model.Scan ? $gettext('Yes') : $gettext('No')"
|
2020-07-05 12:48:49 +00:00
|
|
|
></v-switch>
|
|
|
|
</td>
|
|
|
|
</tr>
|
2020-07-14 10:42:31 +00:00
|
|
|
<tr>
|
|
|
|
<td :title="model.PlaceSrc">
|
2020-07-14 17:07:06 +00:00
|
|
|
<translate>Place</translate> <v-icon v-if="model.PlaceSrc === 'manual'" class="src">check</v-icon>
|
2020-07-14 10:42:31 +00:00
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ model.locationInfo() }}
|
|
|
|
</td>
|
|
|
|
</tr>
|
2020-07-06 08:32:37 +00:00
|
|
|
<tr v-if="model.Lat">
|
|
|
|
<td>
|
2020-07-06 09:46:09 +00:00
|
|
|
<translate>Latitude</translate>
|
2020-07-06 08:32:37 +00:00
|
|
|
</td>
|
|
|
|
<td>
|
2020-07-06 09:46:09 +00:00
|
|
|
{{ model.Lat }}
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.Lng">
|
|
|
|
<td>
|
|
|
|
<translate>Longitude</translate>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ model.Lng }}
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.Altitude">
|
|
|
|
<td>
|
|
|
|
<translate>Altitude</translate>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ model.Altitude }} m
|
2020-07-06 08:32:37 +00:00
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.Lat">
|
|
|
|
<td>
|
|
|
|
<translate>Accuracy</translate>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
<v-text-field
|
|
|
|
@change="save"
|
2020-07-12 06:27:05 +00:00
|
|
|
flat solo dense hide-details v-model="model.CellAccuracy"
|
2020-07-06 08:32:37 +00:00
|
|
|
color="secondary-dark"
|
|
|
|
type="number"
|
|
|
|
suffix="m"
|
2020-07-14 10:42:31 +00:00
|
|
|
style="width: 100px;"
|
2020-07-06 08:32:37 +00:00
|
|
|
></v-text-field>
|
|
|
|
</td>
|
|
|
|
</tr>
|
2020-06-27 08:31:20 +00:00
|
|
|
<tr>
|
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Created</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ formatTime(model.CreatedAt) }}
|
2020-06-27 08:31:20 +00:00
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Updated</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ formatTime(model.UpdatedAt) }}
|
2020-06-27 08:31:20 +00:00
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.EditedAt">
|
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Edited</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ formatTime(model.EditedAt) }}
|
2020-06-27 08:31:20 +00:00
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.CheckedAt">
|
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Checked</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ formatTime(model.CheckedAt) }}
|
2020-06-27 08:31:20 +00:00
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-if="model.DeletedAt">
|
|
|
|
<td>
|
2020-07-13 14:29:36 +00:00
|
|
|
<translate>Archived</translate>
|
2020-06-30 09:36:36 +00:00
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ formatTime(model.DeletedAt) }}
|
2020-06-27 08:31:20 +00:00
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
2020-06-10 12:13:57 +00:00
|
|
|
</div>
|
2020-06-27 08:31:20 +00:00
|
|
|
</div>
|
2020-06-10 12:13:57 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import Thumb from "model/thumb";
|
2020-06-30 09:36:36 +00:00
|
|
|
import {DateTime, Info} from "luxon";
|
2020-07-14 10:42:31 +00:00
|
|
|
import * as options from "resources/options";
|
2020-06-10 12:13:57 +00:00
|
|
|
|
|
|
|
export default {
|
|
|
|
name: 'p-tab-photo-advanced',
|
|
|
|
props: {
|
|
|
|
model: Object,
|
2020-07-06 08:32:37 +00:00
|
|
|
uid: String,
|
2020-06-10 12:13:57 +00:00
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
2020-07-14 10:42:31 +00:00
|
|
|
options: options,
|
2020-06-10 12:13:57 +00:00
|
|
|
config: this.$config.values,
|
|
|
|
readonly: this.$config.get("readonly"),
|
|
|
|
};
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
monthOptions() {
|
|
|
|
let result = [
|
|
|
|
{"Month": -1, "Name": this.$gettext("Unknown")},
|
|
|
|
];
|
|
|
|
|
|
|
|
const months = Info.months("long");
|
|
|
|
|
|
|
|
for (let i = 0; i < months.length; i++) {
|
|
|
|
result.push({"Month": i + 1, "Name": months[i]});
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
2020-06-30 09:36:36 +00:00
|
|
|
formatTime(s) {
|
2020-07-03 15:35:10 +00:00
|
|
|
return DateTime.fromISO(s).toLocaleString(DateTime.DATETIME_MED);
|
2020-06-30 09:36:36 +00:00
|
|
|
},
|
2020-06-10 12:13:57 +00:00
|
|
|
save() {
|
|
|
|
this.model.update();
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
this.$emit('close');
|
|
|
|
},
|
|
|
|
openPhoto() {
|
|
|
|
this.$viewer.show(Thumb.fromFiles([this.model]), 0)
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|