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

added overview, genre, studio, tags, status, airdays, airtime to the edit metadata page

This commit is contained in:
Luis Miguel Almánzar 2013-06-08 23:04:41 -04:00
parent 4cdfe410b2
commit 3ad3e48333
3 changed files with 164 additions and 2 deletions

View file

@ -977,3 +977,7 @@ input[type="range"]::-ms-fill-upper {
max-width: 110px;
}
}
#editItemMetadataPage #txtOverview {
height: 70px;
}

View file

@ -34,6 +34,10 @@
<label for="txtDisplayMediaType">Display type:</label>
<input type="text" id="txtDisplayMediaType" name="txtDisplayMediaType" data-mini="true" />
</div>
<div data-role="fieldcontain" id="fldStatus" style="display: none;">
<label for="selectStatus">Status:</label>
<select name="selectStatus" id="selectStatus" data-mini="true"></select>
</div>
<div data-role="fieldcontain" id="fldArtist" style="display: none;">
<label for="txtArtist">Artist:</label>
<input type="text" id="txtArtist" name="txtArtist" data-mini="true" />
@ -70,6 +74,10 @@
<label for="txtHomePageUrl">Website:</label>
<input type="url" id="txtHomePageUrl" name="txtHomePageUrl" data-mini="true" />
</div>
<div data-role="fieldcontain">
<label for="txtOverview">Overview:</label>
<textarea name="txtOverview" id="txtOverview" data-mini="true" data-role="fieldcontain"></textarea>
</div>
<div data-role="fieldcontain">
<label for="txtPremiereDate">Release date:</label>
<input type="date" id="txtPremiereDate" name="txtPremiereDate" data-mini="true" />
@ -82,6 +90,14 @@
<label for="txtProductionYear">Year:</label>
<input type="number" id="txtProductionYear" name="txtProductionYear" data-mini="true" />
</div>
<div data-role="fieldcontain" id="fldAirDays" style="display: none;">
<label for="selectAirDays">Air Days:</label>
<select name="selectAirDays" id="selectAirDays" data-mini="true"></select>
</div>
<div data-role="fieldcontain" id="fldAirTime" style="display: none;">
<label for="txtAirTime">Air Time:</label>
<input type="time" id="txtAirTime" name="txtAirTime" data-mini="true" />
</div>
<div data-role="fieldcontain">
<label for="selectOfficialRating">Official rating:</label>
<select name="selectOfficialRating" id="selectOfficialRating" data-mini="true"></select>
@ -112,6 +128,36 @@
</div>
</div>
</div>
<div data-role="collapsible">
<h3>Genres</h3>
<div data-role="editableListviewContainer">
<div data-role="fieldcontain">
<input type="text" data-mini="true" />
<a data-role="button" data-theme="b" data-inline="true" data-mini="true" data-icon="plus" data-action="add">Add</a>
</div>
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listGenres"></ul>
</div>
</div>
<div data-role="collapsible">
<h3>Studios</h3>
<div data-role="editableListviewContainer">
<div data-role="fieldcontain">
<input type="text" data-mini="true" />
<a data-role="button" data-theme="b" data-inline="true" data-mini="true" data-icon="plus" data-action="add">Add</a>
</div>
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listStudios"></ul>
</div>
</div>
<div data-role="collapsible">
<h3>Tags</h3>
<div data-role="editableListviewContainer">
<div data-role="fieldcontain">
<input type="text" data-mini="true" />
<a data-role="button" data-theme="b" data-inline="true" data-mini="true" data-icon="plus" data-action="add">Add</a>
</div>
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listTags"></ul>
</div>
</div>
<div data-role="collapsible">
<h3>External Id's</h3>
<div>

View file

@ -30,6 +30,23 @@
Dashboard.hideLoadingMsg();
});
$(page).on('click', 'ul[data-role="listview"] li a.removeBtn', function () {
var list = $(this).parents('ul[data-role="listview"]');
$(this).parent().remove();
list.listview('refresh');
});
$('[data-role="editableListviewContainer"] a[data-action="add"]', page).click(function () {
var input = $(this).parent().find('input[type="text"]');
var text = input.val();
input.val('');
if (text == '') return;
var list = $(this).parents('[data-role="editableListviewContainer"]').find('ul[data-role="listview"]');
var items = editableListViewValues(list);
items.push(text);
populateListView(list, items);
});
}
function setFieldVisibilities(page, item) {
@ -79,6 +96,15 @@
$('#fldTvdb', page).hide();
$('#fldTvCom', page).hide();
}
if (item.Type == "Series") {
$('#fldStatus', page).show();
$('#fldAirDays', page).show();
$('#fldAirTime', page).show();
} else {
$('#fldStatus', page).hide();
$('#fldAirDays', page).hide();
$('#fldAirTime', page).hide();
}
if (item.Type == "Audio") {
$('#fldArtist', page).show();
@ -169,8 +195,18 @@
select.val(item.CustomRating || "").selectmenu('refresh');
});
var selectStatus = $('#selectStatus', page);
populateStatus(selectStatus);
selectStatus.val(item.Status || "").selectmenu('refresh');
var selectAirDays = $('#selectAirDays', page);
populateAirDays(selectAirDays);
selectAirDays.val(item.AirDays || "").selectmenu('refresh');
populateListView($('#listGenres', page), item.Genres);
populateListView($('#listStudios', page), item.Studios.map(function (element) { return element.Name; }));
populateListView($('#listTags', page), item.Tags);
$('#txtName', page).val(item.Name || "");
$('#txtOverview', page).val(item.Overview || "");
$('#txtSortName', page).val(item.SortName || "");
$('#txtDisplayMediaType', page).val(item.DisplayMediaType || "");
$('#txtCommunityRating', page).val(item.CommunityRating || "");
@ -221,6 +257,7 @@
}
$('#txtProductionYear', page).val(item.ProductionYear || "");
$('#txtAirTime', page).val(convertTo24HourFormat(item.AirTime || ""));
$('#txtOriginalAspectRatio', page).val(item.AspectRatio || "");
@ -236,6 +273,41 @@
}
function convertTo24HourFormat(time) {
if (time == "")
return time;
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var ampm = time.match(/\s(.*)$/)[1];
ampm = ampm.toUpperCase();
if (ampm == "PM" && hours < 12) hours = hours + 12;
if (ampm == "AM" && hours == 12) hours = 0;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if (hours < 10) sHours = "0" + sHours;
if (minutes < 10) sMinutes = "0" + sMinutes;
return sHours + ":" + sMinutes;
}
function convertTo12HourFormat(time) {
if (time == "")
return time;
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var ampm = "AM";
if (hours >= 12) {
ampm = "PM";
hours = hours - 12;
hours = hours == 0 ? 12 : hours;
}
hours = hours == 0 ? 12 : hours;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if (hours < 10) sHours = "0" + sHours;
if (minutes < 10) sMinutes = "0" + sMinutes;
return sHours + ":" + sMinutes + " " + ampm;
}
function populateLanguages(allCultures, select) {
var html = "";
@ -278,6 +350,39 @@
select.html(html).selectmenu("refresh");
}
function populateStatus(select) {
var html = "";
html += "<option value=''></option>";
html += "<option value='Continuing'>Continuing</option>";
html += "<option value='Ended'>Ended</option>";
select.html(html).selectmenu("refresh");
}
function populateAirDays(select) {
var days = new Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
var html = "";
html += "<option value=''></option>";
for (var i = 0; i < days.length; i++) {
html += "<option value='" + days[i] + "'>" + days[i] + "</option>";
}
select.html(html).selectmenu("refresh");
}
function populateListView(list, items) {
items = items || new Array();
items.sort(function(a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); });
var html = '';
for (var i = 0; i < items.length; i++) {
html += '<li><a class="data">' + items[i] + '</a><a class="removeBtn"></a></li>';
}
list.html(html).listview('refresh');
}
function editableListViewValues(list) {
return list.find('a.data').map(function () { return $(this).text(); }).get();
}
function editItemMetadataPage() {
var self = this;
@ -304,6 +409,13 @@
Album: $('#txtAlbum', form).val(),
AlbumArtist: $('#txtAlbumArtist', form).val(),
Artists: [$('#txtArtist', form).val()],
Overview: $('#txtOverview', form).val(),
Status: $('#selectStatus', form).val(),
AirDays: $('#selectAirDays', form).val(),
AirTime: convertTo12HourFormat($('#txtAirTime', form).val()),
Genres: editableListViewValues($("#listGenres", form)),
Tags: editableListViewValues($("#listTags", form)),
Studios: editableListViewValues($("#listStudios", form)).map(function (element) { return { Name: element }; }),
PremiereDate: $('#txtPremiereDate', form).val(),
EndDate: $('#txtEndDate', form).val(),