mirror of
https://github.com/WebTools-NG/WebTools-NG
synced 2024-11-22 19:13:19 +00:00
Merge pull request #241 from WebTools-NG/#239-Does-not-output-if-the-output-folder-does-NOT-exist
#239 does not output if the output folder does not exist
This commit is contained in:
commit
486b39102c
9 changed files with 113 additions and 50 deletions
|
@ -11,6 +11,7 @@
|
||||||
* [#233 Electron errors after updating](https://github.com/WebTools-NG/WebTools-NG/pull/233)
|
* [#233 Electron errors after updating](https://github.com/WebTools-NG/WebTools-NG/pull/233)
|
||||||
* [#234 Editing a custom level](https://github.com/WebTools-NG/WebTools-NG/pull/234)
|
* [#234 Editing a custom level](https://github.com/WebTools-NG/WebTools-NG/pull/234)
|
||||||
* [#238 We need a Text qualifier](https://github.com/WebTools-NG/WebTools-NG/pull/238)
|
* [#238 We need a Text qualifier](https://github.com/WebTools-NG/WebTools-NG/pull/238)
|
||||||
|
* [#239 Does not output if the output folder does NOT exist](https://github.com/WebTools-NG/WebTools-NG/pull/239)
|
||||||
|
|
||||||
## V0.1.13
|
## V0.1.13
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,11 @@
|
||||||
"Body": "{0} was released on Github on: {1}.",
|
"Body": "{0} was released on Github on: {1}.",
|
||||||
"Body2": "Click here for more info",
|
"Body2": "Click here for more info",
|
||||||
"Skip": "Don't show notification for this version anymore"
|
"Skip": "Don't show notification for this version anymore"
|
||||||
}
|
},
|
||||||
|
"ExportDir": "Select Export Directory",
|
||||||
|
"Browse": "Browse",
|
||||||
|
"ErrorNoOutDirMsg": "You need to define an output directory in the global settings page first",
|
||||||
|
"ErrorNoOutDirTitle": "No output directory defined"
|
||||||
},
|
},
|
||||||
"Modules": {
|
"Modules": {
|
||||||
"PlexTV": {
|
"PlexTV": {
|
||||||
|
@ -207,9 +211,7 @@
|
||||||
"ErrorNoServerSelectedMsg": "You need to select a server to extract from",
|
"ErrorNoServerSelectedMsg": "You need to select a server to extract from",
|
||||||
"Settings": {
|
"Settings": {
|
||||||
"Settings": "Settings",
|
"Settings": "Settings",
|
||||||
"Description": "Here you can define the settings for @:Modules.ET.Name",
|
"Description": "Here you can define the settings for @:Modules.ET.Name",
|
||||||
"Browse": "Browse",
|
|
||||||
"SelectOutDir": "Select Output Directory",
|
|
||||||
"ArraySep": "Delimiter for multiple info in same field",
|
"ArraySep": "Delimiter for multiple info in same field",
|
||||||
"ColumnSep": "Delimiter between columns in CSV file (Use 9 for TAB)",
|
"ColumnSep": "Delimiter between columns in CSV file (Use 9 for TAB)",
|
||||||
"TimeOut": "Timeout when requesting info from PMS in sec (Global setting)",
|
"TimeOut": "Timeout when requesting info from PMS in sec (Global setting)",
|
||||||
|
@ -238,9 +240,7 @@
|
||||||
"CreateExlsFile": "Creating Excel file",
|
"CreateExlsFile": "Creating Excel file",
|
||||||
"ProcessItem": "Processing item {count} of {total}",
|
"ProcessItem": "Processing item {count} of {total}",
|
||||||
"GetSectionItems": "Fetching items {idx} in chunks of {chunck} with a total of {totalSize}"
|
"GetSectionItems": "Fetching items {idx} in chunks of {chunck} with a total of {totalSize}"
|
||||||
},
|
},
|
||||||
"ErrorNoOutDirTitle": "No output directory defined",
|
|
||||||
"ErrorNoOutDirMsg": "You need to define an output directory in the settings page first",
|
|
||||||
"ErrorBadSepTitle": "Column separator issue",
|
"ErrorBadSepTitle": "Column separator issue",
|
||||||
"ErrorBadSep": "Column separator can only be one character"
|
"ErrorBadSep": "Column separator can only be one character"
|
||||||
},
|
},
|
||||||
|
|
|
@ -241,11 +241,11 @@
|
||||||
},
|
},
|
||||||
getMedia() {
|
getMedia() {
|
||||||
log.info("getMedia Called");
|
log.info("getMedia Called");
|
||||||
if (wtconfig.get('ET.OutPath', "") == "")
|
if (wtconfig.get('General.ExportPath', "") == "")
|
||||||
{
|
{
|
||||||
log.info('ET: No output dir defined')
|
log.info('ET: No output dir defined')
|
||||||
this.$bvToast.toast(this.$t("Modules.ET.ErrorNoOutDirMsg"), {
|
this.$bvToast.toast(this.$t("Common.ErrorNoOutDirMsg"), {
|
||||||
title: this.$t("Modules.ET.ErrorNoOutDirTitle"),
|
title: this.$t("Common.ErrorNoOutDirTitle"),
|
||||||
autoHideDelay: 3000,
|
autoHideDelay: 3000,
|
||||||
solid: true,
|
solid: true,
|
||||||
variant: 'primary',
|
variant: 'primary',
|
||||||
|
|
|
@ -2,15 +2,7 @@
|
||||||
<b-container fluid>
|
<b-container fluid>
|
||||||
<div class="col-lg-10 col-md-12 col-xs-12">
|
<div class="col-lg-10 col-md-12 col-xs-12">
|
||||||
<h1>{{ $t("Modules.ET.Settings.Settings") }}</h1>
|
<h1>{{ $t("Modules.ET.Settings.Settings") }}</h1>
|
||||||
<p>{{ $t("Modules.ET.Settings.Description") }}</p>
|
<p>{{ $t("Modules.ET.Settings.Description") }}</p>
|
||||||
<div>
|
|
||||||
<b-input-group id="outDir" :prepend="$t('Modules.ET.Settings.SelectOutDir')" class="mt-3">
|
|
||||||
<b-form-input id="outDirbox" name="outDirbox" v-model="outDirVal" :disabled=true v-bind:placeholder="$t('Modules.ET.Settings.SelectOutDir')" />
|
|
||||||
<b-input-group-append>
|
|
||||||
<b-button variant="info" v-on:click="browse">{{ $t("Modules.ET.Settings.Browse") }}</b-button>
|
|
||||||
</b-input-group-append>
|
|
||||||
</b-input-group>
|
|
||||||
</div>
|
|
||||||
<b-input-group id="ArraySepGrp" :prepend="$t('Modules.ET.Settings.ArraySep')" class="mt-3">
|
<b-input-group id="ArraySepGrp" :prepend="$t('Modules.ET.Settings.ArraySep')" class="mt-3">
|
||||||
<b-form-input id="ArraySep" name="ArraySep" type="text" class="form-control" v-model="ArraySep" :disabled=false :maxlength=1 @change="setArraySep()"></b-form-input>
|
<b-form-input id="ArraySep" name="ArraySep" type="text" class="form-control" v-model="ArraySep" :disabled=false :maxlength=1 @change="setArraySep()"></b-form-input>
|
||||||
</b-input-group>
|
</b-input-group>
|
||||||
|
@ -57,8 +49,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
outDirVal: wtconfig.get('ET.OutPath', i18n.t('Modules.ET.Settings.SelectOutDir')),
|
|
||||||
ArraySep: wtconfig.get('ET.ArraySep'),
|
ArraySep: wtconfig.get('ET.ArraySep'),
|
||||||
TextQualifierCSV: wtconfig.get('ET.TextQualifierCSV', '"'),
|
TextQualifierCSV: wtconfig.get('ET.TextQualifierCSV', '"'),
|
||||||
NotAvailIndicator: wtconfig.get('ET.NotAvail', 'N/A'),
|
NotAvailIndicator: wtconfig.get('ET.NotAvail', 'N/A'),
|
||||||
|
@ -89,17 +80,6 @@
|
||||||
wtconfig.set("ET." + cbItem, (this.cbSelected.includes(cbItem)))
|
wtconfig.set("ET." + cbItem, (this.cbSelected.includes(cbItem)))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
browse: function(){
|
|
||||||
log.debug('Start browsing for Output Directory');
|
|
||||||
const outDir = dialog.OpenDirectory( i18n.t("Modules.ET.Settings.SelectOutDir"), i18n.t("Common.Ok"));
|
|
||||||
//const outDir = dialog.OpenDirectory('Title', 'OK');
|
|
||||||
if (outDir)
|
|
||||||
{
|
|
||||||
wtconfig.set('ET.OutPath', outDir[0]);
|
|
||||||
this.outDirVal = outDir[0];
|
|
||||||
log.debug(`Selected Directory is ${outDir}`);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setColumnSep(val){
|
setColumnSep(val){
|
||||||
if (val.length > 1)
|
if (val.length > 1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -482,23 +482,31 @@ const excel2 = new class Excel {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
async getFileName({ Library, Level, Type }){
|
async getFileName({ Library, Level, Type, Module }){
|
||||||
const dateFormat = require('dateformat');
|
const dateFormat = require('dateformat');
|
||||||
const OutDir = wtconfig.get('ET.OutPath', wtutils.UserHomeDir)
|
const OutDir = wtconfig.get('General.ExportPath');
|
||||||
const timeStamp=dateFormat(new Date(), "yyyy.mm.dd_h.MM.ss");
|
const timeStamp=dateFormat(new Date(), "yyyy.mm.dd_h.MM.ss");
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
let outFile = store.getters.getSelectedServer.name + '_';
|
let outFile = store.getters.getSelectedServer.name + '_';
|
||||||
outFile += Library + '_';
|
outFile += Library + '_';
|
||||||
outFile += Level + '_';
|
outFile += Level + '_';
|
||||||
outFile += timeStamp + '.' + Type;
|
outFile += timeStamp + '.' + Type;
|
||||||
|
const targetDir = path.join(
|
||||||
|
OutDir, wtutils.AppName, Module);
|
||||||
const outFileWithPath = path.join(
|
const outFileWithPath = path.join(
|
||||||
OutDir, outFile);
|
targetDir, outFile);
|
||||||
|
// Make sure target dir exists
|
||||||
|
const fs = require('fs')
|
||||||
|
if (!fs.existsSync(targetDir)) {
|
||||||
|
fs.mkdirSync(targetDir);
|
||||||
|
}
|
||||||
|
log.info(`OutFile is ${outFileWithPath}`)
|
||||||
return outFileWithPath;
|
return outFileWithPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
async SaveWorkbook(Workbook, Library, Level, Type) {
|
async SaveWorkbook(Workbook, Library, Level, Type) {
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const name = await this.getFileName( { Library: Library, Level: Level, Type: Type })
|
const name = await this.getFileName( { Library: Library, Level: Level, Type: Type, Module: i18n.t('Modules.ET.Name') })
|
||||||
log.info('Saving output file as: ' + name)
|
log.info('Saving output file as: ' + name)
|
||||||
// Save Excel on Hard Disk
|
// Save Excel on Hard Disk
|
||||||
Workbook.xlsx.writeBuffer()
|
Workbook.xlsx.writeBuffer()
|
||||||
|
@ -825,11 +833,11 @@ const excel2 = new class Excel {
|
||||||
{
|
{
|
||||||
const header = excel2.GetHeader(level, libType)
|
const header = excel2.GetHeader(level, libType)
|
||||||
log.debug(`header: ${header}`);
|
log.debug(`header: ${header}`);
|
||||||
const strHeader = header.join(wtconfig.get('ET.ColumnSep', ','))
|
const strHeader = header.join(wtconfig.get('ET.ColumnSep', ','));
|
||||||
// Now we need to find out how many calls to make
|
// Now we need to find out how many calls to make
|
||||||
const call = await et.getLevelCall(libType, level)
|
const call = await et.getLevelCall(libType, level);
|
||||||
// Open a file stream
|
// Open a file stream
|
||||||
const tmpFile = await excel2.getFileName({ Library: libName, Level: level, Type: 'tmp' })
|
const tmpFile = await excel2.getFileName({ Library: libName, Level: level, Type: 'tmp', Module: i18n.t('Modules.ET.Name') });
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var stream = fs.createWriteStream(tmpFile, {flags:'a'});
|
var stream = fs.createWriteStream(tmpFile, {flags:'a'});
|
||||||
// Add the header
|
// Add the header
|
||||||
|
|
|
@ -23,6 +23,42 @@ const wtutils = new class WTUtils {
|
||||||
return configFileName;
|
return configFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get ExportDirPresent(){
|
||||||
|
|
||||||
|
|
||||||
|
log.info('Checking ExportPath')
|
||||||
|
const ExportPath = wtconfig.get('General.ExportPath', 'N/A');
|
||||||
|
if ( ExportPath == 'N/A' ){
|
||||||
|
log.error('ExportPath not defined');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const fs = require("fs");
|
||||||
|
if (fs.existsSync(ExportPath)) {
|
||||||
|
const path = require('path');
|
||||||
|
const appExportDir = path.join(ExportPath, wtutils.AppName);
|
||||||
|
if (!fs.existsSync(appExportDir))
|
||||||
|
{
|
||||||
|
log.debug('Export dir existed, but AppDir didnt')
|
||||||
|
fs.mkdirSync(appExportDir)
|
||||||
|
if (fs.existsSync(appExportDir))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
get RunningOS(){
|
get RunningOS(){
|
||||||
return process.platform;
|
return process.platform;
|
||||||
}
|
}
|
||||||
|
@ -245,9 +281,6 @@ const wtutils = new class WTUtils {
|
||||||
if ( wtconfig.get('ET.ColumnSep', 'N/A') == 'N/A' ){
|
if ( wtconfig.get('ET.ColumnSep', 'N/A') == 'N/A' ){
|
||||||
wtconfig.set('ET.ColumnSep', ',')
|
wtconfig.set('ET.ColumnSep', ',')
|
||||||
}
|
}
|
||||||
if ( wtconfig.get('ET.OutPath', 'N/A') == 'N/A' ){
|
|
||||||
wtconfig.set('ET.OutPath', '')
|
|
||||||
}
|
|
||||||
if ( wtconfig.get('ET.NotAvail', 'N/A') == 'N/A' ){
|
if ( wtconfig.get('ET.NotAvail', 'N/A') == 'N/A' ){
|
||||||
wtconfig.set('ET.NotAvail', 'N/A')
|
wtconfig.set('ET.NotAvail', 'N/A')
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,18 @@
|
||||||
<div class="col-lg-10 col-md-12 col-xs-12">
|
<div class="col-lg-10 col-md-12 col-xs-12">
|
||||||
<h1>{{ $t("Modules.GlobalSettings.Title") }}</h1>
|
<h1>{{ $t("Modules.GlobalSettings.Title") }}</h1>
|
||||||
<p>{{ $t("Modules.GlobalSettings.Description") }}</p>
|
<p>{{ $t("Modules.GlobalSettings.Description") }}</p>
|
||||||
|
<div>
|
||||||
|
<b-input-group id="exportDir" :prepend="$t('Common.ExportDir')" class="mt-3">
|
||||||
|
<b-form-input id="exportDirbox" type="text" name="exportDirbox" v-model="ExportDirVal" :disabled=true v-bind:placeholder="$t('Common.ExportDir')" />
|
||||||
|
<b-input-group-append>
|
||||||
|
<b-button variant="info" v-on:click="browse">{{ $t("Common.Browse") }}</b-button>
|
||||||
|
</b-input-group-append>
|
||||||
|
</b-input-group>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<b-input-group id="TimeOutGrp" :prepend="$t('Modules.GlobalSettings.TimeOut')" class="mt-3">
|
<b-input-group id="TimeOutGrp" :prepend="$t('Modules.GlobalSettings.TimeOut')" class="mt-3">
|
||||||
<b-form-input id="TimeOut" name="TimeOut" type="text" class="form-control" v-model="TimeOut" :disabled=false :maxlength=2 @change="setTimeOut()"></b-form-input>
|
<b-form-input id="TimeOut" name="TimeOut" type="text" class="form-control" v-model="TimeOut" :disabled=false :maxlength=2 @change="setTimeOut()"></b-form-input>
|
||||||
</b-input-group>
|
</b-input-group>
|
||||||
|
@ -57,9 +68,10 @@
|
||||||
|
|
||||||
wtutils, dialog, i18n
|
wtutils, dialog, i18n
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
ExportDirVal: wtconfig.get('General.ExportPath', i18n.t('Common.ExportDir')),
|
||||||
TimeOut: wtconfig.get('PMS.TimeOut'),
|
TimeOut: wtconfig.get('PMS.TimeOut'),
|
||||||
LogLevel: wtconfig.get('Log.fileLevel'),
|
LogLevel: wtconfig.get('Log.fileLevel'),
|
||||||
LogLevelConsole: wtconfig.get('Log.consoleLevel'),
|
LogLevelConsole: wtconfig.get('Log.consoleLevel'),
|
||||||
|
@ -69,6 +81,20 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
browse: function(){
|
||||||
|
log.debug('Start browsing for Export Directory');
|
||||||
|
const exportDir = dialog.OpenDirectory( i18n.t("Common.ExportDir"), i18n.t("Common.Ok"));
|
||||||
|
if (exportDir)
|
||||||
|
{
|
||||||
|
wtconfig.set('General.ExportPath', exportDir[0]);
|
||||||
|
this.ExportDirVal = exportDir[0];
|
||||||
|
log.debug(`Selected Directory is ${exportDir}`);
|
||||||
|
if (!wtutils.ExportDirPresent)
|
||||||
|
{
|
||||||
|
this.ExportDirVal = '*** ERROR ***';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
factoryReset() {
|
factoryReset() {
|
||||||
// Doing a factory reset
|
// Doing a factory reset
|
||||||
log.warn('Doing a factory reset');
|
log.warn('Doing a factory reset');
|
||||||
|
@ -167,7 +193,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
logLevels: function() {
|
logLevels: function() {
|
||||||
const options = ['error', 'warn', 'info', 'verbose', 'debug', 'silly'];
|
const options = ['error', 'warn', 'info', 'verbose', 'debug', 'silly'];
|
||||||
return options;
|
return options;
|
||||||
|
|
|
@ -68,7 +68,8 @@ export default {
|
||||||
mounted() {
|
mounted() {
|
||||||
log.info("Home Created");
|
log.info("Home Created");
|
||||||
this.checkLangUpdates();
|
this.checkLangUpdates();
|
||||||
this.UpdatePresent();
|
this.UpdatePresent();
|
||||||
|
this.CheckExportDir();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// Visit GitHub release page
|
// Visit GitHub release page
|
||||||
|
@ -152,11 +153,26 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
selLang, wtutils, selLangUpdated
|
||||||
|
},
|
||||||
|
async CheckExportDir() {
|
||||||
|
if ( wtutils.ExportDirPresent )
|
||||||
|
{
|
||||||
|
log.info('ExportDir OK');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log.error('ExportDir missing');
|
||||||
|
const bodyStr = i18n.t("Common.ErrorNoOutDirMsg");
|
||||||
|
this.$bvToast.toast(bodyStr, {
|
||||||
|
title: this.$t("Common.ErrorNoOutDirTitle"),
|
||||||
|
autoHideDelay: 400000,
|
||||||
|
solid: true,
|
||||||
|
variant: 'primary',
|
||||||
|
toaster: 'b-toaster-bottom-right'
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
selLang, i18n, wtutils, selLangUpdated
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,7 +249,6 @@
|
||||||
this.updateTbl(this.selSection);
|
this.updateTbl(this.selSection);
|
||||||
},
|
},
|
||||||
getFilterSettings() {
|
getFilterSettings() {
|
||||||
console.log('Ged get filter settings')
|
|
||||||
this.selFilterSetting = wtconfig.get('PMS.FilterSetting', 'AllSettings');
|
this.selFilterSetting = wtconfig.get('PMS.FilterSetting', 'AllSettings');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue