mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge pull request #1501 from softworkz/AutoOrganizeNewSeries
AutoOrganize new Series - Backend Implementation
This commit is contained in:
commit
8d71447f12
2 changed files with 82 additions and 3 deletions
|
@ -29,6 +29,7 @@
|
|||
context.querySelector('#txtSeason').value = item.ExtractedSeasonNumber;
|
||||
context.querySelector('#txtEpisode').value = item.ExtractedEpisodeNumber;
|
||||
context.querySelector('#txtEndingEpisode').value = item.ExtractedEndingEpisodeNumber;
|
||||
context.querySelector('.extractedName').value = item.ExtractedName;
|
||||
|
||||
extractedName = item.ExtractedName;
|
||||
extractedYear = item.ExtractedYear;
|
||||
|
@ -54,6 +55,43 @@
|
|||
|
||||
context.querySelector('#selectSeries').innerHTML = existingSeriesHtml;
|
||||
|
||||
ApiClient.getVirtualFolders().then(function (result) {
|
||||
|
||||
//var movieLocations = [];
|
||||
var seriesLocations = [];
|
||||
|
||||
for (var n = 0; n < result.length; n++) {
|
||||
|
||||
var virtualFolder = result[n];
|
||||
|
||||
for (var i = 0, length = virtualFolder.Locations.length; i < length; i++) {
|
||||
var location = {
|
||||
value: virtualFolder.Locations[i],
|
||||
display: virtualFolder.Name + ': ' + virtualFolder.Locations[i]
|
||||
};
|
||||
|
||||
//if (virtualFolder.CollectionType == 'movies') {
|
||||
// movieLocations.push(location);
|
||||
//}
|
||||
if (virtualFolder.CollectionType == 'tvshows') {
|
||||
seriesLocations.push(location);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var seriesFolderHtml = seriesLocations.map(function (s) {
|
||||
return '<option value="' + s.value + '">' + s.display + '</option>';
|
||||
}).join('');
|
||||
|
||||
if (seriesLocations.length > 1) {
|
||||
// If the user has multiple folders, add an empty item to enforce a manual selection
|
||||
seriesFolderHtml = '<option value=""></option>' + seriesFolderHtml;
|
||||
}
|
||||
|
||||
context.querySelector('#selectSeriesFolder').innerHTML = seriesFolderHtml;
|
||||
|
||||
}, onApiFailure);
|
||||
|
||||
}, onApiFailure);
|
||||
}
|
||||
|
||||
|
@ -62,14 +100,32 @@
|
|||
Dashboard.showLoadingMsg();
|
||||
|
||||
var resultId = dlg.querySelector('#hfResultId').value;
|
||||
var seriesId = dlg.querySelector('#selectSeries').value;
|
||||
|
||||
var targetFolder;
|
||||
var newProviderIds;
|
||||
var newSeriesName;
|
||||
var newSeriesYear;
|
||||
|
||||
if (seriesId == "##NEW##" && currentNewItem != null) {
|
||||
seriesId = null;
|
||||
newProviderIds = JSON.stringify(currentNewItem.ProviderIds);
|
||||
newSeriesName = currentNewItem.Name;
|
||||
newSeriesYear = currentNewItem.ProductionYear;
|
||||
targetFolder = dlg.querySelector('#selectSeriesFolder').value;
|
||||
}
|
||||
|
||||
var options = {
|
||||
|
||||
SeriesId: dlg.querySelector('#selectSeries').value,
|
||||
SeriesId: seriesId,
|
||||
SeasonNumber: dlg.querySelector('#txtSeason').value,
|
||||
EpisodeNumber: dlg.querySelector('#txtEpisode').value,
|
||||
EndingEpisodeNumber: dlg.querySelector('#txtEndingEpisode').value,
|
||||
RememberCorrection: dlg.querySelector('#chkRememberCorrection').checked
|
||||
RememberCorrection: dlg.querySelector('#chkRememberCorrection').checked,
|
||||
NewSeriesProviderIds: newProviderIds,
|
||||
NewSeriesName: newSeriesName,
|
||||
NewSeriesYear: newSeriesYear,
|
||||
TargetFolder: targetFolder
|
||||
};
|
||||
|
||||
ApiClient.performEpisodeOrganization(resultId, options).then(function () {
|
||||
|
@ -93,11 +149,23 @@
|
|||
var seriesHtml = existingSeriesHtml;
|
||||
seriesHtml = seriesHtml + '<option selected value="##NEW##">' + currentNewItem.Name + '</option>';
|
||||
dlg.querySelector('#selectSeries').innerHTML = seriesHtml;
|
||||
selectedSeriesChanged(dlg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function selectedSeriesChanged(dlg) {
|
||||
var seriesId = dlg.querySelector('#selectSeries').value;
|
||||
|
||||
if (seriesId == "##NEW##") {
|
||||
dlg.querySelector('.fldSelectSeriesFolder').classList.remove('hide');
|
||||
}
|
||||
else {
|
||||
dlg.querySelector('.fldSelectSeriesFolder').classList.add('hide');
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
show: function (item) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
@ -161,6 +229,11 @@
|
|||
showNewSeriesDialog(dlg);
|
||||
});
|
||||
|
||||
dlg.querySelector('#selectSeries').addEventListener('change', function (e) {
|
||||
|
||||
selectedSeriesChanged(dlg);
|
||||
});
|
||||
|
||||
initEpisodeForm(dlg, item);
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,12 @@
|
|||
</div>
|
||||
<paper-icon-button id="btnNewSeries" icon="add" title="${ButtonNew}"></paper-icon-button>
|
||||
</div>
|
||||
<div class="fldSelectSeriesFolder hide" style="margin: 1em 0 1em;">
|
||||
<div style="width:100%;display:inline-block;">
|
||||
<label for="selectSeriesFolder" class="selectLabel">Series Root Folder</label>
|
||||
<select id="selectSeriesFolder" data-mini="true" required="required"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin: 1em 0;">
|
||||
<paper-input id="txtSeason" type="number" pattern="[0-9]*" required min="0" label="${LabelSeasonNumber}"></paper-input>
|
||||
</div>
|
||||
|
@ -27,7 +33,7 @@
|
|||
</div>
|
||||
<div class="fldRemember hide">
|
||||
<br />
|
||||
<paper-checkbox type="checkbox" id="chkRememberCorrection">${OptionRememberOrganizeCorrection}</paper-checkbox>
|
||||
<paper-checkbox type="checkbox" id="chkRememberCorrection">${OptionRememberOrganizeCorrection} <span class="extractedName" style="font-weight: bold; font-style: italic" /></paper-checkbox>
|
||||
</div>
|
||||
<br />
|
||||
<button type="submit" data-role="none" class="clearButton">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue