1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Create new series backend implementation

This commit is contained in:
softworkz 2016-02-27 00:52:00 +01:00
parent b894ebb453
commit a81b1aaf2d
2 changed files with 80 additions and 2 deletions

View file

@ -55,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);
}
@ -63,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 () {
@ -94,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) {
@ -162,6 +229,11 @@
showNewSeriesDialog(dlg);
});
dlg.querySelector('#selectSeries').addEventListener('change', function (e) {
selectedSeriesChanged(dlg);
});
initEpisodeForm(dlg, item);
}

View file

@ -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>