#507 mediaInfo Queue WIP

This commit is contained in:
Tommy Mikkelsen 2022-07-21 15:47:25 +02:00
parent 5316d6793d
commit f095ee3938
3 changed files with 127 additions and 25 deletions

View file

@ -202,12 +202,27 @@
"Description": "The @:Modules.Download.Name module allows you to download medias, as well as local assets, from servers where you have been granted download rights",
"SelSrv": "Select Server",
"TT-Server": "Select the server to download from. If a server can't be selected, you have not been granted download rights from it",
"MediaInfoTitle": "Media Info",
"ShowQueue": "Show Queue",
"mediaInfo": {
"mediaInfoTitle": "Media Info",
"title": "Title",
"file": "Source File",
"type": "Type",
"status": "Status",
"serverID": "Source Server Id",
"serverName": "Source Server Name",
"libName": "Source Library Name",
"sourceUri": "Source Uri",
"targetDir": "Target Dir",
"size": "Size"
},
"Queue":{
"Name": "Download Queue",
"Description": "Here you see the items in the download queue, as well as start/stop the queue"
"Description": "Here you see the items in the download queue, as well as start/stop the queue",
"btnStartQueue": "Start Queue",
"btnStopQueue": "Stop Queue"
}
},
"ET": {
"Description": "@:Modules.ET.Name allows you to export detail information about the media in your libraries",

View file

@ -123,7 +123,7 @@
{ prop: 'Released',searchable: true,sortable: true, width: 30 },
{ prop: 'Added',searchable: true,sortable: true, width: 30 },
{ prop: 'Updated',searchable: true,sortable: true, width: 30 },
{ prop: 'Type', isHidden: true },
{ prop: 'Type', isHidden: true }
],
tableData: [],
tableAttribute: {
@ -141,7 +141,8 @@
{ prop: 'Key', isHidden: true },
{ prop: 'File',searchable: false,sortable: false, width: 100 },
{ prop: 'Type',searchable: false,sortable: false, width: 10 },
{ prop: 'Hash',isHidden: true }
{ prop: 'Hash',isHidden: true },
{ prop: 'Size', isHidden: true }
],
MItableData: [],
MItableAttribute: {
@ -192,6 +193,7 @@
details['mediaDir'] = this.selMediaDir;
details['title'] = this.selMediaTitle;
details['type'] = row['Type'];
details['size'] = row['Size'];
details['hash'] = key;
log.debug(`[Download.vue] (Select) - Adding ${key} with a value of: ${JSON.stringify(details)}`)
arr.push(details)
@ -225,6 +227,7 @@
if ( this.MItableData.map(function(x) {return x.Key; }).indexOf(parts[idx]['key']) == -1){
entry['Key'] = parts[idx]['key'];
entry['Type'] = response['data']['MediaContainer']['Metadata'][0]['type'];
entry['Size'] = parts[idx]['size'];
for (var x in this.selLibrary['location']){
if ( parts[idx]['file'].startsWith( this.selLibrary['location'][x]['path'] ) )
{
@ -269,7 +272,7 @@
this.isLoading = true;
await this.getMediaInfo(myarg['Key']);
this.selMediaTitle = myarg['Title'];
this.mediaInfoTitle = `${i18n.t("Modules.Download.MediaInfoTitle")} - ${myarg['Title']}`
this.mediaInfoTitle = `${i18n.t("Modules.Download.mediaInfo.mediaInfoTitle")} - ${myarg['Title']}`
// Stop Spinner
this.isLoading = false;
this.$refs['MediaInfo'].show();

View file

@ -8,8 +8,6 @@
</div>
<br>
<vue-virtual-table
@click="rowClicked"
:key="idx"
:config="tableConfig"
:data="tableData"
:bordered="tableAttribute.bordered"
@ -17,13 +15,35 @@
:language="tableAttribute.language"
:selectable="tableAttribute.selectable"
:itemHeight="tableAttribute.itemHeight">
<template slot-scope="scope" slot="actionCommon">
<button @click="up(scope.index, scope.row)" :disabled="queueRunning"><i class="fas fa-arrow-up"></i></button>
<button @click="down(scope.index, scope.row)" :disabled="queueRunning"><i class="fas fa-arrow-down"></i></button>
<button @click="del(scope.index, scope.row)" :disabled="queueRunning"><i class="fas fa-trash"></i></button>
<button @click="info(scope.index, scope.row)"><i class="fas fa-info"></i></button>
</template>
</vue-virtual-table>
<b-modal size="lg" ref="MediaInfo" hide-footer v-bind:title=this.mediaInfo.mediaInfoTitle>
<div>
<b-table striped :items="mediaInfoItems"></b-table>
</div>
</b-modal>
<br>
<div class="d-flex mx-auto">
<div class="buttons d-flex mx-auto"> <!-- Buttons -->
<b-button
type="is-primary"
@click="btnToggleQueue"
variant="success"
>
{{ this.btnQueueLabel }}</b-button>
</div>
</div>
{{ this.queueRunning }}
</b-container>
</template>
<script>
//import i18n from '../../../../i18n';
import i18n from '../../../../i18n';
//import store from '../../../../store';
import { wtconfig } from '../../General/wtutils';
//import { pms } from '../../General/pms';
@ -37,11 +57,18 @@
data() {
return {
tableConfig: [
{ prop: 'Title',searchable: true,sortable: true, width: 80 },
{ prop: 'File',searchable: true,sortable: true, width: 80 },
{ prop: 'Type',searchable: true,sortable: true, width: 30 },
{ prop: 'Status',searchable: true,sortable: true, width: 30 },
{ prop: 'Hash', isHidden: true }
{ prop: '_action', name: 'Action', actionName: 'actionCommon', width: 80 },
{ prop: 'title', name: i18n.t('Modules.Download.mediaInfo.title'), searchable: true,sortable: true, width: 80 },
{ prop: 'file', name: i18n.t('Modules.Download.mediaInfo.file'), searchable: true,sortable: true, width: 80 },
{ prop: 'type', name: i18n.t('Modules.Download.mediaInfo.type'), searchable: true,sortable: true, width: 30 },
{ prop: 'status', name: i18n.t('Modules.Download.mediaInfo.status'), searchable: true,sortable: true, width: 30 },
{ prop: 'hash', isHidden: true },
{ prop: 'key', isHidden: true },
{ prop: 'serverID', isHidden: true },
{ prop: 'serverName', isHidden: true },
{ prop: 'libName', isHidden: true },
{ prop: 'mediaDir', isHidden: true },
{ prop: 'size', isHidden: true }
],
tableData: [],
tableAttribute: {
@ -53,30 +80,87 @@
bordered: true,
hoverHighlight: true,
language: "en"
}
},
mediaInfo: {
mediaInfoTitle: ""
},
mediaInfoItems: [],
queueRunning: null,
btnQueueLabel: i18n.t('Modules.Download.Queue.btnStartQueue')
};
},
created() {
log.info(`[Queue.vue] (created) - Download Queue Created`);
this.GetQueue();
this.setCreatedStatus();
},
watch: {
},
computed: {
},
methods: {
up( index ){
if ( index > 0 ){
// Move one up
this.tableData.splice(index - 1, 0, this.tableData.splice(index, 1)[0]);
// Save to json
wtconfig.set('Download.Queue', this.tableData);
}
},
down( index ){
if ( index < this.tableData.length){
// Move one down
this.tableData.splice(index + 1, 0, this.tableData.splice(index, 1)[0]);
// Save to json
wtconfig.set('Download.Queue', this.tableData);
}
},
setCreatedStatus(){
this.queueRunning = wtconfig.get( 'Download.Status', false);
},
btnToggleQueue(){
if ( this.queueRunning ){
this.stopQueue();
this.btnQueueLabel = i18n.t('Modules.Download.Queue.btnStartQueue');
}
else {
this.startQueue();
this.btnQueueLabel = i18n.t('Modules.Download.Queue.btnStopQueue');
}
wtconfig.set('Download.Status', this.queueRunning);
},
stopQueue(){
this.queueRunning = false;
console.log('Ged 43-3 Queue stopped')
},
startQueue(){
this.queueRunning = true;
console.log('Ged 44-3 Queue started')
},
info(index, row){
this.mediaInfo.mediaInfoTitle = `${i18n.t("Modules.Download.mediaInfo.mediaInfoTitle")}: ${row['title']} - ${row['type']}`
this.mediaInfoItems = [];
this.mediaInfoItems.push({ " ": `${ i18n.t("Modules.Download.mediaInfo.title") }: ${row['title']}` });
this.mediaInfoItems.push({ " ": `${ i18n.t("Modules.Download.mediaInfo.file") } : ${row['file']}` });
if ( row['size'] ){
this.mediaInfoItems.push({ " ": `${ i18n.t("Modules.Download.mediaInfo.size") } : ${row['size']}` });
}
this.mediaInfoItems.push({ " ": `${ i18n.t("Modules.Download.mediaInfo.serverID") } : ${row['serverID']}` });
this.mediaInfoItems.push({ " ": `${ i18n.t("Modules.Download.mediaInfo.serverName") } : ${row['serverName']}` });
this.mediaInfoItems.push({ " ": `${ i18n.t("Modules.Download.mediaInfo.libName") } : ${row['libName']}` });
this.mediaInfoItems.push({ " ": `${ i18n.t("Modules.Download.mediaInfo.sourceUri") } : ${row['key']}` });
this.mediaInfoItems.push({ " ": `${ i18n.t("Modules.Download.mediaInfo.targetDir") } : ${row['mediaDir']}` });
this.$refs['MediaInfo'].show();
},
del(index, row){
log.info(`[Queue.vue] (del) - Delete index: ${index} with contents: ${ JSON.stringify(row) }`);
this.tableData.splice(index, 1);
wtconfig.set('Download.Queue', this.tableData);
},
GetQueue(){
log.info(`[Queue.vue] (GetQueue) - Get the queue`);
const arrQueue = wtconfig.get('Download.Queue');
for (var qItem in arrQueue){
let entry = {};
entry['Title'] = arrQueue[qItem]['title'];
entry['File'] = arrQueue[qItem]['file'];
entry['Type'] = arrQueue[qItem]['type'];
entry['Status'] = 'GED Idle';
entry['Hash'] = arrQueue[qItem];
this.tableData.push(entry); //Add qItem
}
this.tableData = wtconfig.get('Download.Queue');
}
}
}