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:
parent
b894ebb453
commit
a81b1aaf2d
2 changed files with 80 additions and 2 deletions
|
@ -55,6 +55,43 @@
|
||||||
|
|
||||||
context.querySelector('#selectSeries').innerHTML = existingSeriesHtml;
|
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);
|
}, onApiFailure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,14 +100,32 @@
|
||||||
Dashboard.showLoadingMsg();
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
var resultId = dlg.querySelector('#hfResultId').value;
|
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 = {
|
var options = {
|
||||||
|
|
||||||
SeriesId: dlg.querySelector('#selectSeries').value,
|
SeriesId: seriesId,
|
||||||
SeasonNumber: dlg.querySelector('#txtSeason').value,
|
SeasonNumber: dlg.querySelector('#txtSeason').value,
|
||||||
EpisodeNumber: dlg.querySelector('#txtEpisode').value,
|
EpisodeNumber: dlg.querySelector('#txtEpisode').value,
|
||||||
EndingEpisodeNumber: dlg.querySelector('#txtEndingEpisode').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 () {
|
ApiClient.performEpisodeOrganization(resultId, options).then(function () {
|
||||||
|
@ -94,11 +149,23 @@
|
||||||
var seriesHtml = existingSeriesHtml;
|
var seriesHtml = existingSeriesHtml;
|
||||||
seriesHtml = seriesHtml + '<option selected value="##NEW##">' + currentNewItem.Name + '</option>';
|
seriesHtml = seriesHtml + '<option selected value="##NEW##">' + currentNewItem.Name + '</option>';
|
||||||
dlg.querySelector('#selectSeries').innerHTML = seriesHtml;
|
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 {
|
return {
|
||||||
show: function (item) {
|
show: function (item) {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
@ -162,6 +229,11 @@
|
||||||
showNewSeriesDialog(dlg);
|
showNewSeriesDialog(dlg);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
dlg.querySelector('#selectSeries').addEventListener('change', function (e) {
|
||||||
|
|
||||||
|
selectedSeriesChanged(dlg);
|
||||||
|
});
|
||||||
|
|
||||||
initEpisodeForm(dlg, item);
|
initEpisodeForm(dlg, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,12 @@
|
||||||
</div>
|
</div>
|
||||||
<paper-icon-button id="btnNewSeries" icon="add" title="${ButtonNew}"></paper-icon-button>
|
<paper-icon-button id="btnNewSeries" icon="add" title="${ButtonNew}"></paper-icon-button>
|
||||||
</div>
|
</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;">
|
<div style="margin: 1em 0;">
|
||||||
<paper-input id="txtSeason" type="number" pattern="[0-9]*" required min="0" label="${LabelSeasonNumber}"></paper-input>
|
<paper-input id="txtSeason" type="number" pattern="[0-9]*" required min="0" label="${LabelSeasonNumber}"></paper-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue