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

update metadata editor

This commit is contained in:
Luke Pulverenti 2015-09-19 22:06:56 -04:00
parent c08a709ad1
commit 0db16cad5a
44 changed files with 1125 additions and 438 deletions

View file

@ -23,14 +23,14 @@
"paper-styles": "polymerelements/paper-styles#^1.0.0", "paper-styles": "polymerelements/paper-styles#^1.0.0",
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
}, },
"homepage": "https://github.com/polymerelements/iron-flex-layout", "homepage": "https://github.com/PolymerElements/iron-flex-layout",
"_release": "1.0.3", "_release": "1.0.3",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "v1.0.3", "tag": "v1.0.3",
"commit": "e6c2cfec18354973ac03e70dcd8afcc3c72d09b9" "commit": "e6c2cfec18354973ac03e70dcd8afcc3c72d09b9"
}, },
"_source": "git://github.com/polymerelements/iron-flex-layout.git", "_source": "git://github.com/PolymerElements/iron-flex-layout.git",
"_target": "^1.0.0", "_target": "^1.0.0",
"_originalSource": "polymerelements/iron-flex-layout" "_originalSource": "PolymerElements/iron-flex-layout"
} }

View file

@ -15,7 +15,7 @@
<div id="items" class="itemsContainer paddedItemsContainer" style="text-align:center;"></div> <div id="items" class="itemsContainer paddedItemsContainer" style="text-align:center;"></div>
</div> </div>
<div data-role="panel" class="viewPanel" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>

View file

@ -273,8 +273,11 @@
dlg.setAttribute('with-backdrop', 'with-backdrop'); dlg.setAttribute('with-backdrop', 'with-backdrop');
dlg.setAttribute('role', 'alertdialog'); dlg.setAttribute('role', 'alertdialog');
// without this safari will scroll the background instead of the dialog contents // without this safari will scroll the background instead of the dialog contents
dlg.setAttribute('modal', 'modal'); // but not needed here since this is already on top of an existing dialog
// dlg.setAttribute('modal', 'modal');
// seeing max call stack size exceeded in the debugger with this // seeing max call stack size exceeded in the debugger with this
dlg.setAttribute('noAutoFocus', 'noAutoFocus'); dlg.setAttribute('noAutoFocus', 'noAutoFocus');
dlg.entryAnimation = 'scale-up-animation'; dlg.entryAnimation = 'scale-up-animation';

View file

@ -136,8 +136,11 @@
dlg.setAttribute('with-backdrop', 'with-backdrop'); dlg.setAttribute('with-backdrop', 'with-backdrop');
dlg.setAttribute('role', 'alertdialog'); dlg.setAttribute('role', 'alertdialog');
// without this safari will scroll the background instead of the dialog contents // without this safari will scroll the background instead of the dialog contents
dlg.setAttribute('modal', 'modal'); // but not needed here since this is already on top of an existing dialog
// dlg.setAttribute('modal', 'modal');
// seeing max call stack size exceeded in the debugger with this // seeing max call stack size exceeded in the debugger with this
dlg.setAttribute('noAutoFocus', 'noAutoFocus'); dlg.setAttribute('noAutoFocus', 'noAutoFocus');
dlg.entryAnimation = 'scale-up-animation'; dlg.entryAnimation = 'scale-up-animation';

View file

@ -0,0 +1,115 @@
(function ($, document, window, FileReader, escape) {
var currentItem;
function getBaseRemoteOptions() {
var options = {};
options.itemId = currentItem.Id;
return options;
}
function reload(page, item) {
Dashboard.showLoadingMsg();
if (item) {
reloadItem(page, item);
}
else {
ApiClient.getItem(Dashboard.getCurrentUserId(), currentItem.Id).done(function (item) {
reloadItem(page, item);
});
}
}
function reloadItem(page, item) {
currentItem = item;
}
function initEditor(page) {
}
function showEditor(itemId) {
Dashboard.showLoadingMsg();
ApiClient.ajax({
type: 'GET',
url: 'components/metadataeditor/metadataeditor.template.html'
}).done(function (template) {
ApiClient.getItem(Dashboard.getCurrentUserId(), itemId).done(function (item) {
var dlg = document.createElement('paper-dialog');
dlg.setAttribute('with-backdrop', 'with-backdrop');
dlg.setAttribute('role', 'alertdialog');
// without this safari will scroll the background instead of the dialog contents
dlg.setAttribute('modal', 'modal');
// seeing max call stack size exceeded in the debugger with this
dlg.setAttribute('noAutoFocus', 'noAutoFocus');
dlg.entryAnimation = 'scale-up-animation';
dlg.exitAnimation = 'fade-out-animation';
dlg.classList.add('fullscreen-editor-paper-dialog');
dlg.classList.add('ui-body-b');
dlg.classList.add('smoothScrollY');
var html = '';
html += '<h2 class="dialogHeader">';
html += '<paper-fab icon="arrow-back" class="mini btnCloseDialog"></paper-fab>';
html += '<div style="display:inline-block;margin-left:.6em;vertical-align:middle;">' + Globalize.translate('ButtonEdit') + '</div>';
html += '</h2>';
html += '<div class="editorContent">';
html += Globalize.translateDocument(template);
html += '</div>';
dlg.innerHTML = html;
document.body.appendChild(dlg);
initEditor(dlg);
// Has to be assigned a z-index after the call to .open()
$(dlg).on('iron-overlay-closed', onDialogClosed);
PaperDialogHelper.openWithHash(dlg, 'metadataeditor');
var editorContent = dlg.querySelector('.editorContent');
reload(editorContent, item);
$('.btnCloseDialog', dlg).on('click', closeDialog);
});
});
}
function closeDialog() {
history.back();
}
function onDialogClosed() {
$(this).remove();
Dashboard.hideLoadingMsg();
}
window.MetadataEditor = {
show: function (itemId) {
require(['components/paperdialoghelper'], function () {
Dashboard.importCss('css/metadataeditor.css');
showEditor(itemId);
});
}
};
})(jQuery, document, window, window.FileReader, escape);

View file

@ -0,0 +1,318 @@
<form class="editItemMetadataForm editMetadataForm ">
<div class="metadataFormFields">
<div style="margin:2em 0 .5em;text-align:center;">
<paper-button raised class="submit">
<button class="btnSave clearButton" type="submit" data-role="none" style="display:inline-block;">
<iron-icon icon="check"></iron-icon><span>${ButtonSave}</span>
</button>
</paper-button>
<paper-button raised class="subdued btnRefresh btnSimpleRefresh" style="background-color:#673AB7;"><iron-icon icon="refresh"></iron-icon><span>${ButtonRefresh}</span></paper-button>
<paper-button id="btnIdentify" raised style="background-color:#009688;"><iron-icon icon="info"></iron-icon><span>${ButtonIdentify}</span></paper-button>
<paper-button raised class="subdued notext btnMore"><iron-icon icon="more-vert"></iron-icon></paper-button>
</div>
<div style="padding: 0 0 10px;">
<div id="fldContentType" style="display:none;">
<label for="selectContentType">${LabelContentType}</label>
<select id="selectContentType" data-mini="true"></select>
</div>
<div id="fldPath">
<paper-input id="txtPath" type="text" label="${LabelPath}" readonly></paper-input>
</div>
<div>
<paper-input id="txtName" type="text" label="${LabelName}" required="required"></paper-input>
</div>
<div id="fldSortName" style="display: none;">
<paper-input id="txtSortName" type="text" label="${LabelSortName}"></paper-input>
</div>
<div id="fldDateAdded" style="display: none;">
<paper-input id="txtDateAdded" type="date" label="${LabelDateAdded}"></paper-input>
</div>
<div id="fldStatus" style="display: none;margin:1em 0;">
<label for="selectStatus">${LabelStatus}</label>
<select id="selectStatus" data-mini="true"></select>
</div>
<div id="fldArtist" style="display: none;">
<paper-input id="txtArtist" type="text" label="${LabelArtists}" placeholder="${LabelArtistsHelp}"></paper-input>
</div>
<div id="fldAlbumArtist" style="display: none;">
<paper-input id="txtAlbumArtist" type="text" label="${LabelAlbumArtists}" placeholder="${LabelArtistsHelp}"></paper-input>
</div>
<div id="fldAlbum" style="display: none;">
<paper-input id="txtAlbum" type="text" label="${LabelAlbum}"></paper-input>
</div>
<div id="fldParentIndexNumber" style="display: none;">
<paper-input id="txtParentIndexNumber" type="number"></paper-input>
</div>
<div id="fldIndexNumber" style="display: none;">
<paper-input id="txtIndexNumber" type="number" pattern="[0-9]*"></paper-input>
</div>
<div id="fldCommunityRating" style="display: none;">
<paper-input id="txtCommunityRating" type="number" step=".1" min="0" max="10" label="${LabelCommunityRating}"></paper-input>
</div>
<div id="fldCommunityVoteCount" style="display: none;">
<paper-input id="txtCommunityVoteCount" type="number" step="1" label="${LabelVoteCount}"></paper-input>
</div>
<div id="fldMetascore" style="display: none;">
<paper-input id="txtMetascore" type="number" step="1" min="0" max="100" label="${LabelMetascore}"></paper-input>
</div>
<div id="fldCriticRating" style="display: none;">
<paper-input id="txtCriticRating" type="number" step=".1" label="${LabelCriticRating}"></paper-input>
</div>
<div id="fldCriticRatingSummary" style="display: none;">
<paper-input id="txtCriticRatingSummary" type="text" label="${LabelCriticRatingSummary}"></paper-input>
</div>
<div id="fldAwardSummary" style="display: none;">
<paper-input id="txtAwardSummary" type="text" label="${LabelAwardSummary}"></paper-input>
</div>
<div>
<paper-input id="txtHomePageUrl" type="text" label="${LabelWebsite}"></paper-input>
</div>
<div id="fldTagline" style="display: none;">
<paper-input id="txtTagline" type="text" label="${LabelTagline}"></paper-input>
</div>
<div>
<label for="txtOverview" class="likePaperLabel">${LabelOverview}</label>
<textarea id="txtOverview" class="likePaperText" data-role="none"></textarea>
<br />
</div>
<div id="fldShortOverview" style="display: none;">
<paper-input id="txtShortOverview" type="text" label="${LabelShortOverview}"></paper-input>
</div>
<div id="fldPremiereDate" style="display: none;">
<label for="txtPremiereDate" class="likePaperLabel">${LabelReleaseDate}</label>
<input id="txtPremiereDate" type="date" class="likePaperText" data-role="none" />
</div>
<div id="fldYear" style="display: none;">
<paper-input id="txtProductionYear" type="number" label="${LabelYear}"></paper-input>
</div>
<div id="fldPlaceOfBirth" style="display: none;">
<paper-input id="txtPlaceOfBirth" type="text" label="${LabelPlaceOfBirth}"></paper-input>
</div>
<div id="fldEndDate" style="display: none;">
<label for="txtEndDate" class="likePaperLabel">${LabelEndDate}</label>
<input id="txtEndDate" type="date" class="likePaperText" data-role="none" />
</div>
<div id="fldAirDays" style="display: none;">
<p>${LabelAirDays}</p>
<div>
<paper-checkbox class="chkAirDay" data-day="Sunday">${OptionSunday}</paper-checkbox>
<paper-checkbox class="chkAirDay" data-day="Monday">${OptionMonday}</paper-checkbox>
<paper-checkbox class="chkAirDay" data-day="Tuesday">${OptionTuesday}</paper-checkbox>
<paper-checkbox class="chkAirDay" data-day="Wednesday">${OptionWednesday}</paper-checkbox>
<paper-checkbox class="chkAirDay" data-day="Thursday">${OptionThursday}</paper-checkbox>
<paper-checkbox class="chkAirDay" data-day="Friday">${OptionFriday}</paper-checkbox>
<paper-checkbox class="chkAirDay" data-day="Saturday">${OptionSaturday}</paper-checkbox>
</div>
<br />
</div>
<div id="fldAirTime" style="display: none;">
<paper-input id="txtAirTime" type="text" label="${LabelAirTime}"></paper-input>
</div>
<div id="fldSeriesRuntime" style="display: none;">
<paper-input id="txtSeriesRuntime" type="number" label="${LabelRuntimeMinutes}"></paper-input>
</div>
<div id="fldOfficialRating" style="display: none;">
<br />
<label for="selectOfficialRating">${LabelParentalRating}</label>
<select id="selectOfficialRating" data-mini="true"></select>
</div>
<div id="fldCustomRating" style="display: none;">
<br />
<label for="selectCustomRating">${LabelCustomRating}</label>
<select id="selectCustomRating" data-mini="true"></select>
</div>
<div id="fldBudget" style="display: none;">
<paper-input id="txtBudget" type="number" label="${LabelBudget}"></paper-input>
</div>
<div id="fldRevenue" style="display: none;">
<paper-input id="txtRevenue" type="number" label="${LabelRevenue}"></paper-input>
</div>
<div id="fldOriginalAspectRatio" style="display: none;">
<paper-input id="txtOriginalAspectRatio" type="text" label="${LabelOriginalAspectRatio}"></paper-input>
</div>
<div id="fldPlayers" style="display: none;">
<paper-input id="txtPlayers" type="number" pattern="[0-9]*" label="${LabelPlayers}"></paper-input>
</div>
<div id="fld3dFormat" style="display: none;">
<br />
<label for="select3dFormat">${Label3DFormat}</label>
<select id="select3dFormat" data-mini="true">
<option value=""></option>
<option value="HalfSideBySide">HSBS</option>
<option value="HalfTopAndBottom">HTAB</option>
<option value="FullSideBySide">FSBS</option>
<option value="FullTopAndBottom">FTAB</option>
</select>
</div>
</div>
<br />
<div class="detailSection" id="collapsibleDvdEpisodeInfo" style="display: none;">
<h1>
${HeaderAlternateEpisodeNumbers}
</h1>
<div class="detailSectionContent">
<div>
<paper-input id="txtDvdSeasonNumber" type="number" pattern="[0-9]*" label="${LabelDvdSeasonNumber}"></paper-input>
</div>
<div>
<paper-input id="txtDvdEpisodeNumber" type="number" pattern="[0-9]*" label="${LabelDvdEpisodeNumber}"></paper-input>
</div>
<div>
<paper-input id="txtAbsoluteEpisodeNumber" type="number" pattern="[0-9]*" label="${LabelAbsoluteEpisodeNumber}"></paper-input>
</div>
</div>
</div>
<div class="detailSection" id="collapsibleSpecialEpisodeInfo" style="display: none;">
<h1>
${HeaderSpecialEpisodeInfo}
</h1>
<div class="detailSectionContent">
<div>
<paper-input id="txtAirsBeforeSeason" type="number" pattern="[0-9]*" label="${LabelAirsBeforeSeason}"></paper-input>
</div>
<div>
<paper-input id="txtAirsAfterSeason" type="number" pattern="[0-9]*" label="${LabelAirsAfterSeason}"></paper-input>
</div>
<div>
<paper-input id="txtAirsBeforeEpisode" type="number" pattern="[0-9]*" label="${LabelAirsBeforeEpisode}"></paper-input>
</div>
</div>
</div>
<div class="detailSection">
<h1>
${HeaderExternalIds}
</h1>
<div class="detailSectionContent">
<div class="externalIds editorFieldset">
</div>
</div>
</div>
<div class="detailSection" id="collapsibleDisplaySettings" style="display:none;">
<h1>
${HeaderDisplaySettings}
</h1>
<div class="detailSectionContent">
<div id="fldSourceType" style="display: none;" class="fldDisplaySetting">
<paper-input id="txtDisplayMediaType" type="text" label="${LabelTreatImageAs}"></paper-input>
</div>
<div id="fldDisplaySpecialsInline" class="fldDisplaySetting">
<br />
<paper-checkbox id="chkDisplaySpecialsInline">${LabelDisplaySpecialsWithinSeasons}</paper-checkbox>
</div>
<div id="fldDisplayOrder" class="fldDisplaySetting">
<label for="selectDisplayOrder" id="labelDisplayOrder">${LabelDisplayOrder}</label>
<select id="selectDisplayOrder" data-mini="true"></select>
</div>
</div>
</div>
<div data-role="collapsible" data-mini="true" id="countriesCollapsible" style="display: none; margin-top: 1em;">
<h3>${HeaderCountries}</h3>
<div data-role="editableListviewContainer">
<div>
<div style="display: inline-block; width: 80%;">
<input type="text" class="txtEditableListview" />
</div>
<paper-icon-button icon="add" onclick="EditItemMetadataPage.addElementToEditableListview(this)"></paper-icon-button>
</div>
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listCountries"></ul>
</div>
</div>
<div data-role="collapsible" data-mini="true" id="genresCollapsible" style="display: none; margin-top: 1em;">
<h3>${HeaderGenres}</h3>
<div data-role="editableListviewContainer">
<div>
<div style="display: inline-block; width: 80%;">
<input type="text" class="txtEditableListview" />
</div>
<paper-icon-button icon="add" onclick="EditItemMetadataPage.addElementToEditableListview(this)"></paper-icon-button>
</div>
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listGenres"></ul>
</div>
</div>
<div data-mini="true" data-role="collapsible" id="peopleCollapsible" style="display: none; margin-top: 1em;">
<h3>${HeaderPeople}</h3>
<div>
<br />
<button type="button" id="btnAddPerson" data-icon="plus" data-mini="true" data-theme="a">${ButtonAdd}</button>
<br />
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="peopleList"></ul>
</div>
</div>
<div data-mini="true" data-role="collapsible" id="keywordsCollapsible" style="display: none; margin-top: 1em;">
<h3>${HeaderPlotKeywords}</h3>
<div data-role="editableListviewContainer">
<div>
<div style="display: inline-block; width: 80%;">
<input type="text" class="txtEditableListview" />
</div>
<paper-icon-button icon="add" onclick="EditItemMetadataPage.addElementToEditableListview(this)"></paper-icon-button>
</div>
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listKeywords"></ul>
</div>
</div>
<div data-role="collapsible" data-mini="true" id="studiosCollapsible" style="display: none; margin-top: 1em;">
<h3>${HeaderStudios}</h3>
<div data-role="editableListviewContainer">
<div>
<div style="display: inline-block; width: 80%;">
<input type="text" class="txtEditableListview" />
</div>
<paper-icon-button icon="add" onclick="EditItemMetadataPage.addElementToEditableListview(this)"></paper-icon-button>
</div>
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listStudios"></ul>
</div>
</div>
<div data-mini="true" data-role="collapsible" id="tagsCollapsible" style="display: none; margin-top: 1em;">
<h3>${HeaderTags}</h3>
<div data-role="editableListviewContainer">
<div>
<div style="display: inline-block; width: 80%;">
<input type="text" class="txtEditableListview" />
</div>
<paper-icon-button icon="add" onclick="EditItemMetadataPage.addElementToEditableListview(this)"></paper-icon-button>
</div>
<ul data-role="listview" data-inset="true" data-split-icon="delete" id="listTags"></ul>
</div>
</div>
<div id="metadataSettingsCollapsible" style="display: none; margin-top: 3em;">
<h1>${HeaderMetadataSettings}</h1>
<div>
<div>
<label for="selectLanguage">${LabelMetadataDownloadLanguage}</label>
<select id="selectLanguage" data-mini="true"></select>
</div>
<div class="fieldDescription editorfieldDescription">${MessageLeaveEmptyToInherit}</div>
<br />
<div>
<label for="selectCountry">${LabelCountry}</label>
<select id="selectCountry" data-mini="true"></select>
</div>
<div class="fieldDescription editorfieldDescription">${MessageLeaveEmptyToInherit}</div>
<div>
<br /><br />
<paper-checkbox id="chkLockData" onchange="EditItemMetadataPage.setProviderSettingsContainerVisibility(this)">${LabelLockItemToPreventChanges}</paper-checkbox>
</div>
<br />
<div id="providerSettingsContainer" style="display: none">
</div>
</div>
</div>
<br />
<button type="submit" data-role="none" class="clearButton btnSave">
<paper-button raised class="submit block"><iron-icon icon="check"></iron-icon><span>${ButtonSave}</span></paper-button>
</button>
</div>
</form>

View file

@ -68,7 +68,10 @@
self.duration = function (val) { self.duration = function (val) {
return self.playerState.duration; // TODO
// This value doesn't seem to be getting reported properly
// Right now it's only used to determine if the player can seek, so for now we can mock it
return 1;
}; };
self.stop = function () { self.stop = function () {

View file

@ -704,8 +704,10 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
.detailSectionHeader { .detailSectionHeader {
background-clip: border-box; background-clip: border-box;
padding: .75em 0 .75em 1em; padding: 0 0 .25em .25em;
border-radius: 4px; background-color: transparent;
border-radius: 0;
margin-bottom: .5em;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
@ -718,15 +720,16 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
} }
.ui-body-a .detailSectionHeader { .ui-body-a .detailSectionHeader {
background-color: transparent;
border: 1px solid #ddd; border: 1px solid #ddd;
border-width: 0 0 1px 0; border-width: 0 0 1px 0;
border-radius: 0;
padding: 0 0 .25em .25em;
margin-bottom: .5em;
} }
.ui-body-a .detailSectionHeader, .ui-body-a .detailSectionHeader h3 { .ui-body-b .detailSectionHeader {
border: 1px solid #444;
border-width: 0 0 1px 0;
}
.detailSectionHeader, .detailSectionHeader h3 {
font-size: 20px; font-size: 20px;
} }
@ -734,10 +737,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
font-size: 13px; font-size: 13px;
} }
.ui-body-b .detailSectionHeader {
background-color: #141414;
}
.detailSectionHeaderButton { .detailSectionHeaderButton {
margin-left: 1em; margin-left: 1em;
} }
@ -1045,63 +1044,15 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
height: 24px; height: 24px;
border-radius: 50%; border-radius: 50%;
color: #fff; color: #fff;
background: rgba(82, 181, 75, .8); background: rgba(0, 0, 0, .8);
line-height: 16px; line-height: 19px;
} }
.syncWorkingIndicator { .workingSyncIndicator iron-icon {
background: rgba(255, 106, 0, .8); -webkit-animation: spin 3s infinite linear;
} -moz-animation: spin 3s infinite linear;
-o-animation: spin 3s infinite linear;
.pieIndicator { -ms-animation: spin 3s infinite linear;
height: 24px;
position: absolute;
top: 32px;
right: 29px;
vertical-align: middle;
}
.pieBackground {
background-color: rgb(82, 181, 75);
position: absolute;
width: 24px;
height: 24px;
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
-o-border-radius: 50px;
border-radius: 50px;
z-index: 1;
}
.pieIndicator iron-icon {
position: absolute;
z-index: 4;
color: #fff;
}
.pie {
position: absolute;
width: 24px;
height: 24px;
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
-o-border-radius: 50px;
border-radius: 50px;
clip: rect(0px, 12px, 24px, 0px);
background-color: rgba(10, 10, 10, 1);
z-index: 2;
}
.hold {
position: absolute;
width: 24px;
height: 24px;
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
-o-border-radius: 50px;
border-radius: 50px;
clip: rect(0px, 24px, 24px, 12px);
z-index: 3;
} }
.playedIndicator { .playedIndicator {
@ -1815,3 +1766,67 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
font-size: 40px; font-size: 40px;
} }
} }
@-webkit-keyframes spin {
0% {
-moz-transform: rotateZ(0deg);
-webkit-transform: rotateZ(0deg);
-o-transform: rotateZ(0deg);
-ms-transform: rotateZ(0deg);
}
100% {
-moz-transform: rotateZ(360deg);
-webkit-transform: rotateZ(360deg);
-o-transform: rotateZ(360deg);
-ms-transform: rotateZ(360deg);
}
}
@-moz-keyframes spin {
0% {
-moz-transform: rotateZ(0deg);
-webkit-transform: rotateZ(0deg);
-o-transform: rotateZ(0deg);
-ms-transform: rotateZ(0deg);
}
100% {
-moz-transform: rotateZ(360deg);
-webkit-transform: rotateZ(360deg);
-o-transform: rotateZ(360deg);
-ms-transform: rotateZ(360deg);
}
}
@-o-keyframes spin {
0% {
-moz-transform: rotateZ(0deg);
-webkit-transform: rotateZ(0deg);
-o-transform: rotateZ(0deg);
-ms-transform: rotateZ(0deg);
}
100% {
-moz-transform: rotateZ(360deg);
-webkit-transform: rotateZ(360deg);
-o-transform: rotateZ(360deg);
-ms-transform: rotateZ(360deg);
}
}
@-ms-keyframes spin {
0% {
-moz-transform: rotateZ(0deg);
-webkit-transform: rotateZ(0deg);
-o-transform: rotateZ(0deg);
-ms-transform: rotateZ(0deg);
}
100% {
-moz-transform: rotateZ(360deg);
-webkit-transform: rotateZ(360deg);
-o-transform: rotateZ(360deg);
-ms-transform: rotateZ(360deg);
}
}

View file

@ -207,7 +207,7 @@
} }
.viewMenuBar.semiTransparent { .viewMenuBar.semiTransparent {
background-color: rgba(18, 18, 18, .75); background-color: rgba(18, 18, 18, .70);
} }
.paperLibraryViewNav { .paperLibraryViewNav {

View file

@ -496,15 +496,6 @@ select {
display: block; display: block;
} }
.ui-body-b select {
border-color: #1f1f1f;
background: #373737;
}
.ui-body-b select option {
color: #fff;
}
.ui-body-a select { .ui-body-a select {
background: none; background: none;
border-color: rgb(221, 221, 221); border-color: rgb(221, 221, 221);
@ -514,6 +505,15 @@ select {
color: #000; color: #000;
} }
.ui-body-b select {
border-color: #1f1f1f;
background: #373737;
}
.ui-body-b select option {
color: #fff;
}
a[data-role='button'], button:not([data-role='none']):not(.clearButton) { a[data-role='button'], button:not([data-role='none']):not(.clearButton) {
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-webkit-user-select: none; -webkit-user-select: none;

View file

@ -23,7 +23,7 @@
<label for="selectVideoDecoder">${LabelHardwareVideoDecoder}</label> <label for="selectVideoDecoder">${LabelHardwareVideoDecoder}</label>
<select id="selectVideoDecoder" data-mini="true"> <select id="selectVideoDecoder" data-mini="true">
<option value="">${OptionAuto}</option> <option value="">${OptionAuto}</option>
<option value="qsv">Intel QSV</option> <option value="qsv">Intel Quick Sync</option>
</select> </select>
<div class="fieldDescription">${LabelHardwareVideoDecoderHelp}</div> <div class="fieldDescription">${LabelHardwareVideoDecoderHelp}</div>
</li> </li>

View file

@ -27,7 +27,7 @@
<div class="selectionCommandsControlGroup"> <div class="selectionCommandsControlGroup">
<button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button> <button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button>
<button class="btnMergeVersions" data-mini="true" data-icon="recycle" data-inline="true" title="${ButtonGroupVersions}">${ButtonGroupVersions}</button> <button class="btnMergeVersions" data-mini="true" data-icon="recycle" data-inline="true" title="${ButtonGroupVersions}">${ButtonGroupVersions}</button>
<button class="btnSyncItems" data-mini="true" data-icon="refresh" data-inline="true" title="${ButtonSync}">${ButtonSync}</button> <button class="btnSyncItems" data-mini="true" data-icon="sync" data-inline="true" title="${ButtonSync}">${ButtonSync}</button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -40,7 +40,7 @@
<div class="homePageSection"> <div class="homePageSection">
<div> <div>
<h1 class="listHeader nextUpHeader" style="display:inline-block;vertical-align:middle;">${HeaderNextUp}</h1> <h1 class="listHeader nextUpHeader" style="display:inline-block;vertical-align:middle;">${HeaderNextUp}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="NextUp"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="submit mini categorySyncButton" data-category="NextUp"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
</div> </div>
<div id="nextUpItems" class="itemsContainer"> <div id="nextUpItems" class="itemsContainer">
</div> </div>

View file

@ -51,7 +51,7 @@
<a class="btnPlayExternalTrailer hide clearLink" href="#" target="_blank"><paper-button raised class="subdued"><iron-icon icon="play-arrow"></iron-icon><span>${ButtonPlayTrailer}</span></paper-button></a> <a class="btnPlayExternalTrailer hide clearLink" href="#" target="_blank"><paper-button raised class="subdued"><iron-icon icon="play-arrow"></iron-icon><span>${ButtonPlayTrailer}</span></paper-button></a>
<paper-button raised class="subdued btnRecord hide"><iron-icon icon="videocam"></iron-icon><span>${ButtonRecord}</span></paper-button> <paper-button raised class="subdued btnRecord hide"><iron-icon icon="videocam"></iron-icon><span>${ButtonRecord}</span></paper-button>
<paper-button raised class="subdued hide btnCancelRecording"><iron-icon icon="delete"></iron-icon><span>${ButtonCancelRecording}</span></paper-button> <paper-button raised class="subdued hide btnCancelRecording"><iron-icon icon="delete"></iron-icon><span>${ButtonCancelRecording}</span></paper-button>
<paper-button raised class="subdued btnSync hide"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="subdued btnSync hide"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
<paper-button raised class="subdued btnMoreCommands hide notext"><iron-icon icon="more-vert"></iron-icon></paper-button> <paper-button raised class="subdued btnMoreCommands hide notext"><iron-icon icon="more-vert"></iron-icon></paper-button>
<div class="detailUserDataIcons userDataIcons"></div> <div class="detailUserDataIcons userDataIcons"></div>
</div> </div>
@ -71,7 +71,7 @@
<a class="btnPlayExternalTrailer hide clearLink" href="#" target="_blank"><paper-button raised class="subdued"><iron-icon icon="play-arrow"></iron-icon><span>${ButtonPlayTrailer}</span></paper-button></a> <a class="btnPlayExternalTrailer hide clearLink" href="#" target="_blank"><paper-button raised class="subdued"><iron-icon icon="play-arrow"></iron-icon><span>${ButtonPlayTrailer}</span></paper-button></a>
<paper-button raised class="subdued btnRecord hide"><iron-icon icon="videocam"></iron-icon><span>${ButtonRecord}</span></paper-button> <paper-button raised class="subdued btnRecord hide"><iron-icon icon="videocam"></iron-icon><span>${ButtonRecord}</span></paper-button>
<paper-button raised class="subdued hide btnCancelRecording"><iron-icon icon="delete"></iron-icon><span>${ButtonCancelRecording}</span></paper-button> <paper-button raised class="subdued hide btnCancelRecording"><iron-icon icon="delete"></iron-icon><span>${ButtonCancelRecording}</span></paper-button>
<paper-button raised class="subdued btnSync hide"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="subdued btnSync hide"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
<paper-button raised class="subdued btnMoreCommands hide notext"><iron-icon icon="more-vert"></iron-icon></paper-button> <paper-button raised class="subdued btnMoreCommands hide notext"><iron-icon icon="more-vert"></iron-icon></paper-button>
<div class="detailUserDataIcons userDataIcons"></div> <div class="detailUserDataIcons userDataIcons"></div>
</div> </div>

View file

@ -16,7 +16,8 @@
<div id="items" class="itemsContainer" style="text-align:center;"></div> <div id="items" class="itemsContainer" style="text-align:center;"></div>
</div> </div>
<div data-role="panel" class="viewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner">
<form> <form>
<div> <div>
@ -58,7 +59,7 @@
</div> </div>
</form> </form>
</div> </div>
</div>
</div> </div>
</body> </body>
</html> </html>

View file

@ -107,7 +107,7 @@
<div id="latestRecordings" class="homePageSection hide"> <div id="latestRecordings" class="homePageSection hide">
<div> <div>
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestRecordings}</h1> <h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestRecordings}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="Latest"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="submit mini categorySyncButton" data-category="Latest"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
</div> </div>
<div class="recordingItems itemsContainer"></div> <div class="recordingItems itemsContainer"></div>
<br /> <br />
@ -133,7 +133,7 @@
</neon-animated-pages> </neon-animated-pages>
</div> </div>
<div data-role="panel" class="viewPanel channelViewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel channelViewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>
<div> <div>

View file

@ -34,7 +34,7 @@
<div id="resumableSection" style="display: none;" class="homePageSection"> <div id="resumableSection" style="display: none;" class="homePageSection">
<div> <div>
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderResume}</h1> <h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderResume}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="Resume"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="submit mini categorySyncButton" data-category="Resume"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
</div> </div>
<div id="resumableItems" class="itemsContainer"> <div id="resumableItems" class="itemsContainer">
@ -44,7 +44,7 @@
<div class="homePageSection"> <div class="homePageSection">
<div> <div>
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestMovies}</h1> <h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestMovies}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="Latest"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="submit mini categorySyncButton" data-category="Latest"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
</div> </div>
<div id="recentlyAddedItems" class="itemsContainer"> <div id="recentlyAddedItems" class="itemsContainer">
@ -72,11 +72,11 @@
<button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button> <button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button>
<button class="btnMergeVersions" data-mini="true" data-icon="recycle" data-inline="true" title="${ButtonGroupVersions}">${ButtonGroupVersions}</button> <button class="btnMergeVersions" data-mini="true" data-icon="recycle" data-inline="true" title="${ButtonGroupVersions}">${ButtonGroupVersions}</button>
<button class="btnAddToCollection" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToCollection}">${ButtonAddToCollection}</button> <button class="btnAddToCollection" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToCollection}">${ButtonAddToCollection}</button>
<button class="btnSyncItems" data-mini="true" data-icon="refresh" data-inline="true" title="${ButtonSync}">${ButtonSync}</button> <button class="btnSyncItems" data-mini="true" data-icon="sync" data-inline="true" title="${ButtonSync}">${ButtonSync}</button>
</div> </div>
</div> </div>
</div> </div>
<div class="itemsContainer"></div> <div class="itemsContainer" style="text-align:center;"></div>
</div> </div>
</neon-animatable> </neon-animatable>
<neon-animatable> <neon-animatable>
@ -87,7 +87,7 @@
<div class="listTopPaging"> <div class="listTopPaging">
</div> </div>
</div> </div>
<div class="itemsContainer"></div> <div class="itemsContainer" style="text-align:center;"></div>
<p class="noItemsMessage" style="display:none;text-align:center;">${MessageNoTrailersFound}</p> <p class="noItemsMessage" style="display:none;text-align:center;">${MessageNoTrailersFound}</p>
</div> </div>
</neon-animatable> </neon-animatable>
@ -139,7 +139,7 @@
</neon-animated-pages> </neon-animated-pages>
</div> </div>
<div data-role="panel" class="viewPanel movieViewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel movieViewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>
@ -248,7 +248,7 @@
</div> </div>
</div> </div>
<div data-role="panel" class="viewPanel trailerViewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel trailerViewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>
@ -290,7 +290,7 @@
</form> </form>
</div> </div>
</div> </div>
<div data-role="panel" class="viewPanel peopleViewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel peopleViewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>

View file

@ -68,7 +68,7 @@
<div class="selectionCommands" style="display: none;"> <div class="selectionCommands" style="display: none;">
<div class="selectionCommandsControlGroup"> <div class="selectionCommandsControlGroup">
<button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button> <button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button>
<button class="btnSyncItems" data-mini="true" data-icon="refresh" data-inline="true" title="${ButtonSync}">${ButtonSync}</button> <button class="btnSyncItems" data-mini="true" data-icon="sync" data-inline="true" title="${ButtonSync}">${ButtonSync}</button>
</div> </div>
</div> </div>
</div> </div>
@ -85,7 +85,7 @@
<div class="selectionCommands" style="display: none;"> <div class="selectionCommands" style="display: none;">
<div class="selectionCommandsControlGroup"> <div class="selectionCommandsControlGroup">
<button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button> <button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button>
<button class="btnSyncItems" data-mini="true" data-icon="refresh" data-inline="true" title="${ButtonSync}">${ButtonSync}</button> <button class="btnSyncItems" data-mini="true" data-icon="sync" data-inline="true" title="${ButtonSync}">${ButtonSync}</button>
</div> </div>
</div> </div>
</div> </div>
@ -102,7 +102,7 @@
<div class="selectionCommands" style="display: none;"> <div class="selectionCommands" style="display: none;">
<div class="selectionCommandsControlGroup"> <div class="selectionCommandsControlGroup">
<button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button> <button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button>
<button class="btnSyncItems" data-mini="true" data-icon="refresh" data-inline="true" title="${ButtonSync}">${ButtonSync}</button> <button class="btnSyncItems" data-mini="true" data-icon="sync" data-inline="true" title="${ButtonSync}">${ButtonSync}</button>
</div> </div>
</div> </div>
</div> </div>
@ -126,7 +126,7 @@
<div class="selectionCommands" style="display: none;"> <div class="selectionCommands" style="display: none;">
<div class="selectionCommandsControlGroup"> <div class="selectionCommandsControlGroup">
<button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button> <button class="btnAddToPlaylist" data-mini="true" data-icon="plus" data-inline="true" title="${ButtonAddToPlaylist}">${ButtonAddToPlaylist}</button>
<button class="btnSyncItems" data-mini="true" data-icon="refresh" data-inline="true" title="${ButtonSync}">${ButtonSync}</button> <button class="btnSyncItems" data-mini="true" data-icon="sync" data-inline="true" title="${ButtonSync}">${ButtonSync}</button>
</div> </div>
</div> </div>
</div> </div>
@ -136,7 +136,7 @@
</neon-animated-pages> </neon-animated-pages>
</div> </div>
<div data-role="panel" class="viewPanel albumsViewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel albumsViewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>
@ -192,7 +192,7 @@
</div> </div>
</div> </div>
<div data-role="panel" class="viewPanel artistsViewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel artistsViewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>
@ -227,7 +227,7 @@
</div> </div>
</div> </div>
<div data-role="panel" class="viewPanel albumArtistsViewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel albumArtistsViewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>
@ -263,7 +263,7 @@
</div> </div>
</div> </div>
<div data-role="panel" class="viewPanel songsViewPanel hide" data-theme="a" data-position="right" data-display="overlay" data-position-fixed="true"> <div data-role="panel" class="viewPanel songsViewPanel hide" data-theme="b" data-position="right" data-display="overlay" data-position-fixed="true">
<div class="ui-panel-inner"> <div class="ui-panel-inner">
<form> <form>

View file

@ -70,7 +70,7 @@
<a href="#" class="clearLink lnkSync hide"> <a href="#" class="clearLink lnkSync hide">
<paper-icon-item> <paper-icon-item>
<paper-fab class="listAvatar" icon="refresh" style="background-color:#673AB7;" item-icon></paper-fab> <paper-fab class="listAvatar" icon="sync" style="background-color:#673AB7;" item-icon></paper-fab>
<paper-item-body two-line> <paper-item-body two-line>
<div>${ButtonSyncSettings}</div> <div>${ButtonSyncSettings}</div>
<div secondary>${ButtonSyncSettingsHelp}</div> <div secondary>${ButtonSyncSettingsHelp}</div>

View file

@ -24,7 +24,7 @@
<div class="localSyncStatus hide" style="text-align:right;margin:0 0 1em;"> <div class="localSyncStatus hide" style="text-align:right;margin:0 0 1em;">
<span style="vertical-align: middle;margin-right:.5em;" class="labelSyncStatus">${LabelSyncStatus}</span> <span style="vertical-align: middle;margin-right:.5em;" class="labelSyncStatus">${LabelSyncStatus}</span>
<paper-spinner class="syncSpinner" active style="vertical-align: middle;"></paper-spinner> <paper-spinner class="syncSpinner" active style="vertical-align: middle;"></paper-spinner>
<paper-fab class="btnSyncNow bottomFab" icon="refresh" style="position:fixed;right:20px;background-color:#2ad;z-index:10;"></paper-fab> <paper-fab class="btnSyncNow bottomFab" icon="sync" style="position:fixed;right:20px;background-color:#2ad;z-index:10;"></paper-fab>
</div> </div>
<div class="syncActivity"> <div class="syncActivity">

View file

@ -1378,6 +1378,12 @@
}); });
} }
menuItems.push({
name: Globalize.translate('ButtonEditImages'),
id: 'editimages',
ironIcon: 'photo'
});
require(['actionsheet'], function () { require(['actionsheet'], function () {
ActionSheetElement.show({ ActionSheetElement.show({
@ -1393,6 +1399,9 @@
case 'delete': case 'delete':
LibraryBrowser.deleteItem(currentItem.Id); LibraryBrowser.deleteItem(currentItem.Id);
break; break;
case 'editimages':
LibraryBrowser.editImages(currentItem.Id);
break;
default: default:
break; break;
} }
@ -1443,8 +1452,6 @@
if (data.id != currentItem.Id) { if (data.id != currentItem.Id) {
//Dashboard.navigate('edititemmetadata.html?id=' + data.id);
//$.mobile.urlHistory.ignoreNextHashChange = true; //$.mobile.urlHistory.ignoreNextHashChange = true;
window.location.hash = 'editItemMetadataPage?id=' + data.id; window.location.hash = 'editItemMetadataPage?id=' + data.id;
reload(page); reload(page);

View file

@ -244,6 +244,17 @@
Events.on(page.querySelector('.btnTakeTour'), 'click', function () { Events.on(page.querySelector('.btnTakeTour'), 'click', function () {
takeTour(page, Dashboard.getCurrentUserId()); takeTour(page, Dashboard.getCurrentUserId());
}); });
});
pageIdOn('pageshowready', "indexPage", function () {
var page = this;
});
pageIdOn('pagebeforehide', "indexPage", function () {
var page = this;
}); });

View file

@ -752,6 +752,16 @@
}); });
}, },
editMetadata: function (itemId) {
Dashboard.navigate('edititemmetadata.html?id=' + itemId);
return;
require(['components/metadataeditor/metadataeditor'], function () {
MetadataEditor.show(itemId);
});
},
showMoreCommands: function (positionTo, itemId, commands) { showMoreCommands: function (positionTo, itemId, commands) {
var items = []; var items = [];
@ -861,7 +871,7 @@
break; break;
} }
case 'edit': case 'edit':
Dashboard.navigate('edititemmetadata.html?id=' + itemId); LibraryBrowser.editMetadata(itemId);
break; break;
case 'editsubtitles': case 'editsubtitles':
LibraryBrowser.editSubtitles(itemId); LibraryBrowser.editSubtitles(itemId);
@ -2345,26 +2355,19 @@
getSyncIndicator: function (item) { getSyncIndicator: function (item) {
if (item.SyncPercent) {
if (item.SyncPercent >= 100) {
return '<div class="syncIndicator"><iron-icon icon="refresh"></iron-icon></div>';
}
var degree = (item.SyncPercent / 100) * 360;
return '<div class="pieIndicator"><iron-icon icon="refresh"></iron-icon><div class="pieBackground"></div><div class="hold"><div class="pie" style="-webkit-transform: rotate(' + degree + 'deg);-moz-transform: rotate(' + degree + 'deg);-o-transform: rotate(' + degree + 'deg);transform: rotate(' + degree + 'deg);"></div></div></div>';
}
if (item.SyncStatus) {
if (item.SyncStatus == 'Queued' || item.SyncStatus == 'Converting' || item.SyncStatus == 'ReadyToTransfer' || item.SyncStatus == 'Transferring') {
return '<div class="syncIndicator syncWorkingIndicator"><iron-icon icon="refresh"></iron-icon></div>';
}
if (item.SyncStatus == 'Synced') { if (item.SyncStatus == 'Synced') {
return '<div class="syncIndicator"><iron-icon icon="refresh"></iron-icon></div>'; return '<div class="syncIndicator"><iron-icon icon="sync"></iron-icon></div>';
} }
var syncPercent = item.SyncPercent;
if (syncPercent) {
return '<div class="workingSyncIndicator syncIndicator"><iron-icon icon="sync"></iron-icon></div>';
}
if (item.SyncStatus == 'Queued' || item.SyncStatus == 'Converting' || item.SyncStatus == 'ReadyToTransfer' || item.SyncStatus == 'Transferring') {
return '<div class="workingSyncIndicator syncIndicator"><iron-icon icon="sync"></iron-icon></div>';
} }
return ''; return '';

View file

@ -428,7 +428,7 @@
break; break;
} }
case 'edit': case 'edit':
Dashboard.navigate('edititemmetadata.html?id=' + itemId); LibraryBrowser.editMetadata(itemId);
break; break;
case 'refresh': case 'refresh':
ApiClient.refreshItem(itemId, { ApiClient.refreshItem(itemId, {
@ -796,7 +796,7 @@
contentHtml += '<paper-button data-href="' + LibraryBrowser.getHref(item, context) + '" raised class="submit" style="background-color: #673AB7;" onclick="Dashboard.navigate(this.getAttribute(\'data-href\'));"><iron-icon icon="folder-open"></iron-icon><span>' + Globalize.translate('ButtonOpen') + '</span></paper-button>'; contentHtml += '<paper-button data-href="' + LibraryBrowser.getHref(item, context) + '" raised class="submit" style="background-color: #673AB7;" onclick="Dashboard.navigate(this.getAttribute(\'data-href\'));"><iron-icon icon="folder-open"></iron-icon><span>' + Globalize.translate('ButtonOpen') + '</span></paper-button>';
if (SyncManager.isAvailable(item, user)) { if (SyncManager.isAvailable(item, user)) {
contentHtml += '<paper-button raised class="submit btnSync"><iron-icon icon="refresh"></iron-icon><span>' + Globalize.translate('ButtonSync') + '</span></paper-button>'; contentHtml += '<paper-button raised class="submit btnSync"><iron-icon icon="sync"></iron-icon><span>' + Globalize.translate('ButtonSync') + '</span></paper-button>';
} }
contentHtml += '</div>'; contentHtml += '</div>';
@ -1273,7 +1273,6 @@
$('<div class="playedIndicator"></div>').insertAfter($('.cardOverlayTarget', card)); $('<div class="playedIndicator"></div>').insertAfter($('.cardOverlayTarget', card));
} }
$('.playedIndicator', card).html('<iron-icon icon="check"></iron-icon>'); $('.playedIndicator', card).html('<iron-icon icon="check"></iron-icon>');
$('.cardProgress', card).remove();
} }
else if (userData.UnplayedItemCount) { else if (userData.UnplayedItemCount) {
@ -1283,13 +1282,23 @@
} }
$('.playedIndicator', card).html(userData.UnplayedItemCount); $('.playedIndicator', card).html(userData.UnplayedItemCount);
} }
else {
$('.playedIndicator', card).remove();
var progressHtml = LibraryBrowser.getItemProgressBarHtml(userData); var progressHtml = LibraryBrowser.getItemProgressBarHtml(userData);
$('.cardProgress', card).html(progressHtml); if (progressHtml) {
var cardProgress = card.querySelector('.cardProgress');
if (!cardProgress) {
cardProgress = document.createElement('div');
cardProgress.classList.add('cardProgress');
$('.cardFooter', card).append(cardProgress);
}
cardProgress.innerHTML = progressHtml;
}
else {
$('.cardProgress', card).remove();
} }
} }

View file

@ -40,7 +40,7 @@
var viewMenuBar = document.createElement('div'); var viewMenuBar = document.createElement('div');
viewMenuBar.classList.add('viewMenuBar'); viewMenuBar.classList.add('viewMenuBar');
viewMenuBar.classList.add('ui-bar-b'); viewMenuBar.classList.add('ui-body-b');
viewMenuBar.innerHTML = html; viewMenuBar.innerHTML = html;
document.body.appendChild(viewMenuBar); document.body.appendChild(viewMenuBar);
@ -356,7 +356,7 @@
html += '<a class="sidebarLink lnkMediaFolder lnkMySettings" onclick="return LibraryMenu.onLinkClicked(event, this);" data-itemid="mysync" href="mypreferencesmenu.html?userId=' + user.localUser.Id + '"><iron-icon icon="settings" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSettings') + '</span></a>'; html += '<a class="sidebarLink lnkMediaFolder lnkMySettings" onclick="return LibraryMenu.onLinkClicked(event, this);" data-itemid="mysync" href="mypreferencesmenu.html?userId=' + user.localUser.Id + '"><iron-icon icon="settings" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSettings') + '</span></a>';
} }
html += '<a class="sidebarLink lnkMediaFolder lnkMySync" data-itemid="mysync" onclick="return LibraryMenu.onLinkClicked(event, this);" href="mysync.html"><iron-icon icon="refresh" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSync') + '</span></a>'; html += '<a class="sidebarLink lnkMediaFolder lnkMySync" data-itemid="mysync" onclick="return LibraryMenu.onLinkClicked(event, this);" href="mysync.html"><iron-icon icon="sync" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSync') + '</span></a>';
if (Dashboard.isConnectMode()) { if (Dashboard.isConnectMode()) {
html += '<a class="sidebarLink lnkMediaFolder" data-itemid="selectserver" onclick="return LibraryMenu.onLinkClicked(event, this);" href="selectserver.html"><iron-icon icon="wifi" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSelectServer') + '</span></a>'; html += '<a class="sidebarLink lnkMediaFolder" data-itemid="selectserver" onclick="return LibraryMenu.onLinkClicked(event, this);" href="selectserver.html"><iron-icon icon="wifi" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSelectServer') + '</span></a>';

View file

@ -1,6 +1,7 @@
(function () { (function () {
var syncPromise; var syncPromise;
var lastStart = 0;
window.LocalSync = { window.LocalSync = {
@ -13,6 +14,7 @@
if (!syncPromise) { if (!syncPromise) {
require(['multiserversync'], function () { require(['multiserversync'], function () {
lastStart = new Date().getTime();
syncPromise = new MediaBrowser.MultiServerSync(ConnectionManager).sync().done(function () { syncPromise = new MediaBrowser.MultiServerSync(ConnectionManager).sync().done(function () {
syncPromise = null; syncPromise = null;
@ -34,15 +36,23 @@
} }
}; };
Dashboard.ready(function () { var syncInterval = 1800000;
function restartInterval() {
if (LocalSync.isSupported) { if (LocalSync.isSupported) {
setInterval(function () { setInterval(function () {
LocalSync.startSync(); LocalSync.startSync();
}, 3600000); }, syncInterval);
if (lastStart > 0 && (now - lastStart) >= syncInterval) {
LocalSync.startSync();
}
} }
//LocalSync.startSync(); //LocalSync.startSync();
}); }
Dashboard.ready(restartInterval);
document.addEventListener("resume", restartInterval, false);
})(); })();

View file

@ -5,7 +5,6 @@
var self = this; var self = this;
var currentProgressInterval; var currentProgressInterval;
var canClientSeek;
var currentPlaylistIndex = 0; var currentPlaylistIndex = 0;
self.currentMediaRenderer = null; self.currentMediaRenderer = null;
@ -513,17 +512,19 @@
return supportsTextTracks; return supportsTextTracks;
}; };
self.updateCanClientSeek = function (mediaRenderer) { // Returns true if the player can seek using native client-side seeking functions
function canPlayerSeek() {
var mediaRenderer = self.currentMediaRenderer;
var currentSrc = self.getCurrentSrc(mediaRenderer); var currentSrc = self.getCurrentSrc(mediaRenderer);
if ((currentSrc || '').indexOf('.m3u8') != -1) { if ((currentSrc || '').indexOf('.m3u8') != -1) {
canClientSeek = true; return true;
} else { } else {
var duration = mediaRenderer.duration(); var duration = mediaRenderer.duration();
canClientSeek = duration && !isNaN(duration) && duration != Number.POSITIVE_INFINITY && duration != Number.NEGATIVE_INFINITY; return duration && !isNaN(duration) && duration != Number.POSITIVE_INFINITY && duration != Number.NEGATIVE_INFINITY;
}
} }
};
self.getCurrentSrc = function (mediaRenderer) { self.getCurrentSrc = function (mediaRenderer) {
return mediaRenderer.currentSrc(); return mediaRenderer.currentSrc();
@ -610,7 +611,7 @@
var mediaRenderer = self.currentMediaRenderer; var mediaRenderer = self.currentMediaRenderer;
if (canClientSeek && params == null) { if (canPlayerSeek() && params == null) {
mediaRenderer.currentTime(ticks / 10000); mediaRenderer.currentTime(ticks / 10000);
return; return;
@ -664,8 +665,6 @@
$(mediaRenderer).one("play", function () { $(mediaRenderer).one("play", function () {
self.updateCanClientSeek(this);
Events.on(this, 'ended', self.onPlaybackStopped); Events.on(this, 'ended', self.onPlaybackStopped);
$(this).one('ended', self.playNextAfterEnded); $(this).one('ended', self.playNextAfterEnded);
@ -742,7 +741,7 @@
if (positionSlider) { if (positionSlider) {
positionSlider.disabled = !((self.currentDurationTicks || 0) > 0 || canClientSeek); positionSlider.disabled = !((self.currentDurationTicks || 0) > 0 || canPlayerSeek());
} }
if (currentTimeElement) { if (currentTimeElement) {
@ -1600,7 +1599,7 @@
RunTimeTicks: mediaSource.RunTimeTicks RunTimeTicks: mediaSource.RunTimeTicks
}; };
state.PlayState.CanSeek = (mediaSource.RunTimeTicks || 0) > 0 || canClientSeek; state.PlayState.CanSeek = (mediaSource.RunTimeTicks || 0) > 0 || canPlayerSeek();
} }
if (item) { if (item) {
@ -1694,8 +1693,6 @@
self.onPlaybackStart = function (mediaRenderer, item, mediaSource) { self.onPlaybackStart = function (mediaRenderer, item, mediaSource) {
self.updateCanClientSeek(mediaRenderer);
var state = self.getPlayerStateInternal(mediaRenderer, item, mediaSource); var state = self.getPlayerStateInternal(mediaRenderer, item, mediaSource);
Events.trigger(self, 'playbackstart', [state]); Events.trigger(self, 'playbackstart', [state]);

View file

@ -1592,7 +1592,7 @@ var Dashboard = {
} }
}, },
getAppInfo: function (appName, deviceId, deviceName) { getAppInfo: function (appName, appVersion, deviceId, deviceName) {
function generateDeviceName() { function generateDeviceName() {
@ -1624,7 +1624,7 @@ var Dashboard = {
return name; return name;
} }
var appVersion = window.dashboardVersion; appVersion = appVersion || window.dashboardVersion;
appName = appName || "Emby Web Client"; appName = appName || "Emby Web Client";
deviceName = deviceName || generateDeviceName(); deviceName = deviceName || generateDeviceName();
@ -1991,7 +1991,7 @@ var AppInfo = {};
} }
} }
function init(deferred, capabilities, appName, deviceId, deviceName) { function init(deferred, capabilities, appName, appVersion, deviceId, deviceName) {
requirejs.config({ requirejs.config({
urlArgs: "v=" + window.dashboardVersion, urlArgs: "v=" + window.dashboardVersion,
@ -2174,7 +2174,7 @@ var AppInfo = {};
} }
require(deps, function () { require(deps, function () {
$.extend(AppInfo, Dashboard.getAppInfo(appName, deviceId, deviceName)); $.extend(AppInfo, Dashboard.getAppInfo(appName, appVersion, deviceId, deviceName));
initAfterDependencies(deferred, capabilities); initAfterDependencies(deferred, capabilities);
}); });
@ -2300,11 +2300,13 @@ var AppInfo = {};
require(['cordova/imagestore']); require(['cordova/imagestore']);
cordova.getAppVersion.getVersionNumber(function (appVersion) {
var capablities = Dashboard.capabilities(); var capablities = Dashboard.capabilities();
var name = $.browser.android ? "Emby for Android" : ($.browser.safari ? "Emby for iOS" : "Emby Mobile"); var name = $.browser.android ? "Emby for Android" : ($.browser.safari ? "Emby for iOS" : "Emby Mobile");
init(deferred, capablities, name, deviceId, device.model); init(deferred, capablities, name, appVersion, deviceId, device.model);
});
} }
function initCordova(deferred) { function initCordova(deferred) {
@ -2398,13 +2400,13 @@ pageClassOn('pageshow', "page", function () {
if (currentTheme == 'a') { if (currentTheme == 'a') {
docElem.classList.add('background-theme-a'); docElem.classList.add('background-theme-a');
docElem.classList.remove('background-theme-b'); docElem.classList.remove('background-theme-b');
docElem.classList.add('ui-body-a'); page.classList.add('ui-body-a');
docElem.classList.remove('ui-body-b'); page.classList.remove('ui-body-b');
} else { } else {
docElem.classList.add('background-theme-b'); docElem.classList.add('background-theme-b');
docElem.classList.remove('background-theme-a'); docElem.classList.remove('background-theme-a');
docElem.classList.add('ui-body-b'); page.classList.add('ui-body-b');
docElem.classList.remove('ui-body-a'); page.classList.remove('ui-body-a');
} }
if (currentTheme != 'a' && !$.browser.mobile) { if (currentTheme != 'a' && !$.browser.mobile) {

View file

@ -236,7 +236,7 @@
html += '<div class="formFields"></div>'; html += '<div class="formFields"></div>';
html += '<p>'; html += '<p>';
html += '<button type="submit" data-role="none" class="clearButton"><paper-button raised class="submit block"><iron-icon icon="refresh"></iron-icon><span>' + Globalize.translate('ButtonSync') + '</span></paper-button></button>'; html += '<button type="submit" data-role="none" class="clearButton"><paper-button raised class="submit block"><iron-icon icon="sync"></iron-icon><span>' + Globalize.translate('ButtonSync') + '</span></paper-button></button>';
html += '</p>'; html += '</p>';
html += '</form>'; html += '</form>';

View file

@ -55,7 +55,7 @@
html += '<div class="cardImage coveredCardImage lazy" data-src="' + imgUrl + '" style="' + style + '">'; html += '<div class="cardImage coveredCardImage lazy" data-src="' + imgUrl + '" style="' + style + '">';
if (job.Progress && job.Progress < 100) { if (job.Progress && job.Progress < 100) {
html += '<div class="cardFooter">'; html += '<div class="cardFooter fullCardFooter lightCardFooter">';
html += "<div class='cardText cardProgress'>"; html += "<div class='cardText cardProgress'>";
html += '<progress class="itemProgressBar" min="0" max="100" value="' + job.Progress + '"></progress>'; html += '<progress class="itemProgressBar" min="0" max="100" value="' + job.Progress + '"></progress>';
html += "</div>"; html += "</div>";
@ -147,14 +147,18 @@
var cardBoxCssClass = 'cardBox visualCardBox'; var cardBoxCssClass = 'cardBox visualCardBox';
var syncJobPage = 'syncjob.html'; var syncJobPage = 'syncjob.html';
var showTargetName = true;
if ($(page).hasClass('mySyncPage')) { if ($(page).hasClass('mySyncPage')) {
syncJobPage = 'mysyncjob.html'; syncJobPage = 'mysyncjob.html';
showTargetName = !hasLocalSync();
} }
for (var i = 0, length = jobs.length; i < length; i++) { for (var i = 0, length = jobs.length; i < length; i++) {
var job = jobs[i]; var job = jobs[i];
if (showTargetName) {
var targetName = job.TargetName || 'Unknown'; var targetName = job.TargetName || 'Unknown';
if (targetName != lastTargetName) { if (targetName != lastTargetName) {
@ -169,10 +173,11 @@
html += '<div class="detailSectionHeader">'; html += '<div class="detailSectionHeader">';
html += '<div style="display:inline-block;vertical-align:middle;">' + targetName + '</div>'; html += '<div>' + targetName + '</div>';
html += '</div>'; html += '</div>';
} }
}
html += getSyncJobHtml(page, job, cardBoxCssClass, syncJobPage); html += getSyncJobHtml(page, job, cardBoxCssClass, syncJobPage);
} }
@ -236,6 +241,10 @@
}); });
} }
function hasLocalSync() {
return Dashboard.capabilities().SupportsSync;
}
function reloadData(page) { function reloadData(page) {
Dashboard.showLoadingMsg(); Dashboard.showLoadingMsg();
@ -246,6 +255,10 @@
if ($(page).hasClass('mySyncPage')) { if ($(page).hasClass('mySyncPage')) {
options.UserId = Dashboard.getCurrentUserId(); options.UserId = Dashboard.getCurrentUserId();
if (hasLocalSync()) {
options.TargetId = ApiClient.deviceId();
}
} }
ApiClient.getJSON(ApiClient.getUrl('Sync/Jobs', options)).done(function (response) { ApiClient.getJSON(ApiClient.getUrl('Sync/Jobs', options)).done(function (response) {
@ -263,7 +276,16 @@
var page = $.mobile.activePage; var page = $.mobile.activePage;
if (msg.MessageType == "SyncJobs") { if (msg.MessageType == "SyncJobs") {
loadData(page, msg.Data);
var data = msg.Data;
if (hasLocalSync()) {
var targetId = ApiClient.deviceId();
data = data.filter(function (j) {
return TargetId = targetId;
});
}
loadData(page, data);
} }
} }

View file

@ -64,7 +64,7 @@
html += '<paper-fab class="listAvatar blue" style="background-image:url(\'' + imgUrl + '\');background-repeat:no-repeat;background-position:center center;background-size: cover;" item-icon></paper-fab>'; html += '<paper-fab class="listAvatar blue" style="background-image:url(\'' + imgUrl + '\');background-repeat:no-repeat;background-position:center center;background-size: cover;" item-icon></paper-fab>';
} }
else { else {
html += '<paper-fab class="listAvatar blue" icon="refresh" item-icon></paper-fab>'; html += '<paper-fab class="listAvatar blue" icon="sync" item-icon></paper-fab>';
} }
html += '<paper-item-body three-line>'; html += '<paper-item-body three-line>';

View file

@ -78,7 +78,7 @@ $.fn.taskButton = function (options) {
var id = button.getAttribute('data-taskid'); var id = button.getAttribute('data-taskid');
var key = 'scheduledTaskButton' + options.taskKey; var key = 'scheduledTaskButton' + options.taskKey;
var expectedValue = '4'; var expectedValue = new Date().getMonth() + '5';
if (appStorage.getItem(key) == expectedValue) { if (appStorage.getItem(key) == expectedValue) {
onScheduledTaskMessageConfirmed(button, id); onScheduledTaskMessageConfirmed(button, id);
@ -86,8 +86,9 @@ $.fn.taskButton = function (options) {
var msg = Globalize.translate('ConfirmMessageScheduledTaskButton'); var msg = Globalize.translate('ConfirmMessageScheduledTaskButton');
msg += '<br/>'; msg += '<br/>';
msg += '<br/>'; msg += '<div style="margin-top:1em;">';
msg += '<a href="scheduledtasks.html">' + Globalize.translate('ButtonScheduledTasks') + '</a>'; msg += '<a class="clearLink" href="scheduledtasks.html"><paper-button style="color:#3f51b5!important;margin:0;">' + Globalize.translate('ButtonScheduledTasks') + '</paper-button></a>';
msg += '</div>';
Dashboard.confirm(msg, Globalize.translate('HeaderConfirmation'), function (result) { Dashboard.confirm(msg, Globalize.translate('HeaderConfirmation'), function (result) {

View file

@ -1276,7 +1276,7 @@
"LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.",
"LabelConnectGuestUserName": "Their Emby username or email address:", "LabelConnectGuestUserName": "Their Emby username or email address:",
"LabelConnectUserName": "Emby username/email:", "LabelConnectUserName": "Emby username/email:",
"LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", "LabelConnectUserNameHelp": "Connect this local user to an online Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.",
"ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect",
"LabelExternalPlayers": "External players:", "LabelExternalPlayers": "External players:",
"LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.", "LabelExternalPlayersHelp": "Display buttons to play content in external players. This is only available on devices that support url schemes, generally Android and iOS. With external players there is generally no support for remote control or resuming.",
@ -1541,5 +1541,5 @@
"OptionEnableVideoFrameAnalysisHelp": "Extract detailed information about videos that can be used to make transcoding as efficient as possible. This will cause library scans to take longer.", "OptionEnableVideoFrameAnalysisHelp": "Extract detailed information about videos that can be used to make transcoding as efficient as possible. This will cause library scans to take longer.",
"LabelVideoFrameAnalysisLimit": "Limit frame by frame analysis to videos less than:", "LabelVideoFrameAnalysisLimit": "Limit frame by frame analysis to videos less than:",
"LabelHardwareVideoDecoder": "Hardware video decoder:", "LabelHardwareVideoDecoder": "Hardware video decoder:",
"LabelHardwareVideoDecoderHelp": "Available on supported systems only, and will revert to default when unavailable." "LabelHardwareVideoDecoderHelp": "Available on supported systems only."
} }

View file

@ -101,7 +101,7 @@
"MessageItemsAdded": "Items added", "MessageItemsAdded": "Items added",
"ButtonAddToCollection": "Add to collection", "ButtonAddToCollection": "Add to collection",
"HeaderSelectCertificatePath": "Select Certificate Path", "HeaderSelectCertificatePath": "Select Certificate Path",
"ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task and does not require any manual effort. To configure the scheduled task, see:",
"HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.",
"LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.",
"HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard",

View file

@ -16,7 +16,7 @@
</div> </div>
<div style="text-align:right;margin-top:-10px;"> <div style="text-align:right;margin-top:-10px;">
<button type="button" class="btnSync" data-icon="refresh" data-mini="true" data-inline="true">${ButtonConvertMedia}</button> <paper-button raised class="btnSync"><iron-icon icon="sync"></iron-icon><span>${ButtonConvertMedia}</span></paper-button>
<progress max="100" min="0" style="width:100px;display:none;" class="syncProgress"></progress> <progress max="100" min="0" style="width:100px;display:none;" class="syncProgress"></progress>
</div> </div>
<br /> <br />

View file

@ -3,7 +3,7 @@
} }
.viewMenuBar.semiTransparent { .viewMenuBar.semiTransparent {
background-color: rgba(27, 27, 27, .75); background-color: rgba(27, 27, 27, .70);
} }
.background-theme-b { .background-theme-b {

View file

@ -192,3 +192,198 @@ paper-tab {
/* Eliminate transparency to prevent clicks from passing through to the elements underneath */ /* Eliminate transparency to prevent clicks from passing through to the elements underneath */
background-color: rgb(26,26,26); background-color: rgb(26,26,26);
} }
/* Checkboxes */
input[type='checkbox'] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
-o-appearance: none;
appearance: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
height: 31px;
width: 51px;
position: relative;
border-radius: 16px;
cursor: pointer;
outline: 0;
z-index: 0;
margin: 0;
padding: 0;
border: none;
-webkit-transition-duration: 600ms;
-moz-transition-duration: 600ms;
transition-duration: 600ms;
-webkit-transition-timing-function: ease-in-out;
-moz-transition-timing-function: ease-in-out;
transition-timing-function: ease-in-out;
-webkit-touch-callout: none;
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: transparent;
-webkit-user-select: none;
}
.ui-body-a input[type='checkbox'] {
background-color: #e5e5e5;
}
.ui-body-b input[type='checkbox'] {
background-color: #1f1f1f;
}
input[type='checkbox']::before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
height: 27px;
width: 47px;
content: ' ';
position: absolute;
left: 2px;
top: 2px;
border-radius: 16px;
z-index: 1;
-webkit-transition-duration: 300ms;
-moz-transition-duration: 300ms;
transition-duration: 300ms;
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
.ui-body-a input[type='checkbox']::before {
background-color: #ffffff;
}
.ui-body-b input[type='checkbox']::before {
background-color: #000;
}
input[type='checkbox']::after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
height: 27px;
width: 27px;
content: ' ';
position: absolute;
border-radius: 27px;
background: #ffffff;
z-index: 2;
top: 2px;
left: 2px;
box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.25), 0px 4px 11px 0px rgba(0, 0, 0, 0.08), -1px 3px 3px 0px rgba(0, 0, 0, 0.14);
-webkit-transition: -webkit-transform 300ms, width 280ms;
-moz-transition: -moz-transform 300ms, width 280ms;
transition: transform 300ms, width 280ms;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
-webkit-transition-timing-function: cubic-bezier(0.42, 0.8, 0.58, 1.2);
-moz-transition-timing-function: cubic-bezier(0.42, 0.8, 0.58, 1.2);
transition-timing-function: cubic-bezier(0.42, 0.8, 0.58, 1.2);
}
input[type='checkbox']:checked {
background-color: #4CD964;
background-image: -webkit-linear-gradient(-90deg, #4CD964 0%, #4dd865 100%);
background-image: linear-gradient(-180deg,#4CD964 0%, #4dd865 100%);
}
input[type='checkbox']:checked::after {
-webkit-transform: translate3d(16px, 0, 0);
-moz-transform: translate3d(16px, 0, 0);
-ms-transform: translate3d(16px, 0, 0);
-o-transform: translate3d(16px, 0, 0);
transform: translate3d(16px, 0, 0);
right: 18px;
left: inherit;
}
input[type='checkbox']:active::after {
width: 35px;
}
input[type='checkbox']:checked::before, input[type='checkbox']:active::before {
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
}
input[type='checkbox']:disabled {
opacity: 0.5;
cursor: default;
-webkit-transition: none;
-moz-transition: none;
transition: none;
}
input[type='checkbox']:disabled:active::before, input[type='checkbox']:disabled:active::after, input[type='checkbox']:disabled:checked:active::before, input[type='checkbox']:disabled:checked::before {
width: 27px;
-webkit-transition: none;
-moz-transition: none;
transition: none;
}
input[type='checkbox']:disabled:active::before {
height: 27px;
width: 41px;
-webkit-transform: translate3d(6px, 0, 0);
-moz-transform: translate3d(6px, 0, 0);
-ms-transform: translate3d(6px, 0, 0);
-o-transform: translate3d(6px, 0, 0);
transform: translate3d(6px, 0, 0);
}
input[type='checkbox']:disabled:checked:active::before {
height: 27px;
width: 27px;
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
}
.ui-body-a input[type='checkbox'] {
background-color: #e5e5e5;
}
.ui-body-b input[type='checkbox'] {
background-color: #151515;
}
.ui-body-a input[type='checkbox']::before {
background-color: #ffffff;
}
.ui-body-b input[type='checkbox']::before {
background-color: #000;
}
.ui-body-a input[type='checkbox']::after {
background: #ffffff;
}
.ui-body-b input[type='checkbox']::after {
background: #444;
}
input[type='checkbox']:checked {
background-color: #4CD964;
background-image: -webkit-linear-gradient(-90deg, #4CD964 0%, #4dd865 100%);
background-image: linear-gradient(-180deg,#4CD964 0%, #4dd865 100%);
}

View file

@ -133,6 +133,9 @@ See [iron-iconset](#iron-iconset) and [iron-iconset-svg](#iron-iconset-svg) for
<g id="wifi"><path d="M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z" /></g> <g id="wifi"><path d="M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z" /></g>
<g id="ondemand-video"><path d="M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-6l-7 4V7z" /></g> <g id="ondemand-video"><path d="M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-6l-7 4V7z" /></g>
<g id="closed-caption"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z" /></g> <g id="closed-caption"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z" /></g>
<g id="sync"><path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z" /></g>
<g id="sync-disabled"><path d="M10 6.35V4.26c-.8.21-1.55.54-2.23.96l1.46 1.46c.25-.12.5-.24.77-.33zm-7.14-.94l2.36 2.36C4.45 8.99 4 10.44 4 12c0 2.21.91 4.2 2.36 5.64L4 20h6v-6l-2.24 2.24C6.68 15.15 6 13.66 6 12c0-1 .25-1.94.68-2.77l8.08 8.08c-.25.13-.5.25-.77.34v2.09c.8-.21 1.55-.54 2.23-.96l2.36 2.36 1.27-1.27L4.14 4.14 2.86 5.41zM20 4h-6v6l2.24-2.24C17.32 8.85 18 10.34 18 12c0 1-.25 1.94-.68 2.77l1.46 1.46C19.55 15.01 20 13.56 20 12c0-2.21-.91-4.2-2.36-5.64L20 4z" /></g>
<g id="sync-problem"><path d="M3 12c0 2.21.91 4.2 2.36 5.64L3 20h6v-6l-2.24 2.24C5.68 15.15 5 13.66 5 12c0-2.61 1.67-4.83 4-5.65V4.26C5.55 5.15 3 8.27 3 12zm8 5h2v-2h-2v2zM21 4h-6v6l2.24-2.24C18.32 8.85 19 10.34 19 12c0 2.61-1.67 4.83-4 5.65v2.09c3.45-.89 6-4.01 6-7.74 0-2.21-.91-4.2-2.36-5.64L21 4zm-10 9h2V7h-2v6z" /></g>
</defs> </defs>
</svg> </svg>
</iron-iconset-svg> </iron-iconset-svg>

View file

@ -8,6 +8,7 @@
top: 0; top: 0;
display: block; display: block;
} }
.ui-panel-closed { .ui-panel-closed {
width: 0; width: 0;
max-height: 100%; max-height: 100%;
@ -16,20 +17,25 @@
left: 0; left: 0;
clip: rect(1px,1px,1px,1px); clip: rect(1px,1px,1px,1px);
} }
.ui-panel-fixed { .ui-panel-fixed {
position: fixed; position: fixed;
bottom: -1px; /* Fixes gap on Chrome for Android */ bottom: -1px; /* Fixes gap on Chrome for Android */
padding-bottom: 1px; padding-bottom: 1px;
} }
.ui-panel-display-reveal { .ui-panel-display-reveal {
z-index: 1; z-index: 1;
} }
.ui-panel-display-push { .ui-panel-display-push {
z-index: 999; z-index: 999;
} }
.ui-panel-display-overlay { .ui-panel-display-overlay {
z-index: 1001; /* Fixed toolbars have z-index 1000 */ z-index: 1001; /* Fixed toolbars have z-index 1000 */
} }
.ui-panel-inner { .ui-panel-inner {
padding: 1em; padding: 1em;
} }
@ -38,9 +44,11 @@
.ui-panel-page-container { .ui-panel-page-container {
overflow-x: visible; overflow-x: visible;
} }
.ui-panel-page-container-themed .ui-page-active { .ui-panel-page-container-themed .ui-page-active {
background: none; background: none;
} }
.ui-panel-wrapper { .ui-panel-wrapper {
position: relative; position: relative;
min-height: inherit; min-height: inherit;
@ -64,6 +72,7 @@
z-index: 1002; z-index: 1002;
display: none; display: none;
} }
.ui-panel-dismiss-open { .ui-panel-dismiss-open {
display: block; display: block;
} }
@ -178,6 +187,7 @@
.ui-panel-dismiss-open.ui-panel-dismiss-position-left { .ui-panel-dismiss-open.ui-panel-dismiss-position-left {
left: 17em; left: 17em;
} }
.ui-panel-dismiss-open.ui-panel-dismiss-position-right { .ui-panel-dismiss-open.ui-panel-dismiss-position-right {
right: 17em; right: 17em;
} }
@ -188,33 +198,40 @@
-moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15); -moz-box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
box-shadow: inset -5px 0 5px rgba(0,0,0,.15); box-shadow: inset -5px 0 5px rgba(0,0,0,.15);
} }
.ui-panel-position-right.ui-panel-display-reveal { .ui-panel-position-right.ui-panel-display-reveal {
-webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15); -webkit-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
-moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15); -moz-box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
box-shadow: inset 5px 0 5px rgba(0,0,0,.15); box-shadow: inset 5px 0 5px rgba(0,0,0,.15);
} }
.ui-panel-display-overlay { .ui-panel-display-overlay {
-webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15); -webkit-box-shadow: 5px 0 5px rgba(0,0,0,.15);
-moz-box-shadow: 5px 0 5px rgba(0,0,0,.15); -moz-box-shadow: 5px 0 5px rgba(0,0,0,.15);
box-shadow: 5px 0 5px rgba(0,0,0,.15); box-shadow: 5px 0 5px rgba(0,0,0,.15);
} }
.ui-panel-position-right.ui-panel-display-overlay { .ui-panel-position-right.ui-panel-display-overlay {
-webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15); -webkit-box-shadow: -5px 0 5px rgba(0,0,0,.15);
-moz-box-shadow: -5px 0 5px rgba(0,0,0,.15); -moz-box-shadow: -5px 0 5px rgba(0,0,0,.15);
box-shadow: -5px 0 5px rgba(0,0,0,.15); box-shadow: -5px 0 5px rgba(0,0,0,.15);
} }
.ui-panel-open.ui-panel-position-left.ui-panel-display-push { .ui-panel-open.ui-panel-position-left.ui-panel-display-push {
border-right-width: 1px; border-right-width: 1px;
margin-right: -1px; margin-right: -1px;
} }
.ui-panel-page-content-position-left.ui-panel-page-content-display-push { .ui-panel-page-content-position-left.ui-panel-page-content-display-push {
margin-left: 1px; margin-left: 1px;
width: auto; width: auto;
} }
.ui-panel-open.ui-panel-position-right.ui-panel-display-push { .ui-panel-open.ui-panel-position-right.ui-panel-display-push {
border-left-width: 1px; border-left-width: 1px;
margin-left: -1px; margin-left: -1px;
} }
.ui-panel-page-content-position-right.ui-panel-page-content-display-push { .ui-panel-page-content-position-right.ui-panel-page-content-display-push {
margin-right: 1px; margin-right: 1px;
width: auto; width: auto;
@ -225,14 +242,25 @@
.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left { .ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-left {
margin-right: 17em; margin-right: 17em;
} }
.ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right { .ui-responsive-panel .ui-panel-page-content-open.ui-panel-page-content-position-right {
margin-left: 17em; margin-left: 17em;
} }
.ui-responsive-panel .ui-panel-page-content-open { .ui-responsive-panel .ui-panel-page-content-open {
width: auto; width: auto;
} }
.ui-responsive-panel .ui-panel-dismiss-display-push, .ui-responsive-panel .ui-panel-dismiss-display-push,
.ui-responsive-panel.ui-page-active ~ .ui-panel-dismiss-display-push { .ui-responsive-panel.ui-page-active ~ .ui-panel-dismiss-display-push {
display: none; display: none;
} }
} }
.ui-body-a.ui-panel {
background-color: #fff;
}
.ui-body-b.ui-panel {
background-color: #222;
}

View file

@ -31,33 +31,6 @@ div.ui-controlgroup-label {
font-size: 16px; font-size: 16px;
} }
/* Separators
-----------------------------------------------------------------------------------------------------------*/
/* Table opt-in classes: strokes between each row, and alternating row stripes */
/* Classes table-stroke and table-stripe are deprecated in 1.4. */
.table-stroke thead th,
.table-stripe thead th,
.table-stripe tbody tr:last-child {
border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
border-bottom: 1px solid rgba(0,0,0,.1);
}
.table-stroke tbody th,
.table-stroke tbody td {
border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback */
border-bottom: 1px solid rgba(0,0,0,.05);
}
.table-stripe.table-stroke tbody tr:last-child th,
.table-stripe.table-stroke tbody tr:last-child td {
border-bottom: 0;
}
.table-stripe tbody tr:nth-child(odd) td,
.table-stripe tbody tr:nth-child(odd) th {
background-color: #eeeeee; /* non-RGBA fallback */
background-color: rgba(0,0,0,.04);
}
/* Buttons /* Buttons
-----------------------------------------------------------------------------------------------------------*/ -----------------------------------------------------------------------------------------------------------*/
@ -224,7 +197,6 @@ html body .ui-group-theme-a .ui-bar-inherit {
} }
/* Page and overlay */ /* Page and overlay */
.ui-body-a,
.ui-page-theme-a .ui-panel-wrapper { .ui-page-theme-a .ui-panel-wrapper {
background-color: #f9f9f9 /*{a-page-background-color}*/; background-color: #f9f9f9 /*{a-page-background-color}*/;
border-color: #bbb /*{a-page-border}*/; border-color: #bbb /*{a-page-border}*/;
@ -232,7 +204,6 @@ html body .ui-group-theme-a .ui-bar-inherit {
} }
/* Body: Read-only lists, text inputs, collapsible content */ /* Body: Read-only lists, text inputs, collapsible content */
.ui-body-a,
.ui-page-theme-a .ui-body-inherit, .ui-page-theme-a .ui-body-inherit,
html .ui-bar-a .ui-body-inherit, html .ui-bar-a .ui-body-inherit,
html .ui-body-a .ui-body-inherit, html .ui-body-a .ui-body-inherit,
@ -370,7 +341,6 @@ html body .ui-group-theme-b .ui-bar-inherit {
} }
/* Page and overlay */ /* Page and overlay */
.ui-body-b,
.ui-page-theme-b .ui-panel-wrapper { .ui-page-theme-b .ui-panel-wrapper {
background-color: #252525 /*{b-page-background-color}*/; background-color: #252525 /*{b-page-background-color}*/;
border-color: #454545 /*{b-page-border}*/; border-color: #454545 /*{b-page-border}*/;
@ -378,7 +348,6 @@ html body .ui-group-theme-b .ui-bar-inherit {
} }
/* Body: Read-only lists, text inputs, collapsible content */ /* Body: Read-only lists, text inputs, collapsible content */
.ui-body-b,
.ui-page-theme-b .ui-body-inherit, .ui-page-theme-b .ui-body-inherit,
html .ui-bar-b .ui-body-inherit, html .ui-bar-b .ui-body-inherit,
html .ui-body-b .ui-body-inherit, html .ui-body-b .ui-body-inherit,
@ -390,29 +359,17 @@ html .ui-panel-page-container-b {
} }
/* Links */ /* Links */
.ui-page-theme-b a, .ui-body-b a {
html .ui-bar-b a,
html .ui-body-b a,
html body .ui-group-theme-b a {
color: #22aadd /*{b-link-color}*/; color: #22aadd /*{b-link-color}*/;
font-weight: bold; font-weight: bold;
} }
.ui-page-theme-b a:visited, .ui-body-b a:visited {
html .ui-bar-b a:visited,
html .ui-body-b a:visited,
html body .ui-group-theme-b a:visited {
color: #22aadd /*{b-link-visited}*/; color: #22aadd /*{b-link-visited}*/;
} }
.ui-page-theme-b a:hover, .ui-body-b a:hover {
html .ui-bar-b a:hover,
html .ui-body-b a:hover,
html body .ui-group-theme-b a:hover {
color: #0088bb /*{b-link-hover}*/; color: #0088bb /*{b-link-hover}*/;
} }
.ui-page-theme-b a:active, .ui-body-b a:active {
html .ui-bar-b a:active,
html .ui-body-b a:active,
html body .ui-group-theme-b a:active {
color: #0088bb /*{b-link-active}*/; color: #0088bb /*{b-link-active}*/;
} }
@ -495,26 +452,3 @@ html head + body .ui-body-b.ui-focus {
-moz-box-shadow: 0 0 12px #22aadd /*{b-active-background-color}*/; -moz-box-shadow: 0 0 12px #22aadd /*{b-active-background-color}*/;
box-shadow: 0 0 12px #22aadd /*{b-active-background-color}*/; box-shadow: 0 0 12px #22aadd /*{b-active-background-color}*/;
} }
/* Structure */
/* Disabled
-----------------------------------------------------------------------------------------------------------*/
/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */
.ui-disabled,
.ui-state-disabled,
button[disabled] {
filter: Alpha(Opacity=30);
opacity: .3;
cursor: default !important;
pointer-events: none;
}
/* Focus state outline
-----------------------------------------------------------------------------------------------------------*/
.ui-btn:focus,
.ui-btn.ui-focus {
outline: 0;
}

View file

@ -106,7 +106,7 @@ paper-button[raised].cancelDark {
color: #fff; color: #fff;
} }
.ui-body-b paper-button[raised][disabled].subdued { .ui-body-b paper-button[raised][disabled].subduedd {
background: #111; background: #111;
} }
@ -379,12 +379,16 @@ paper-menu-item {
color: inherit; color: inherit;
} }
.ui-body-a .paperCheckboxFieldDescription {
color: #333;
}
.ui-body-b .paperCheckboxFieldDescription { .ui-body-b .paperCheckboxFieldDescription {
color: #ccc; color: #ccc;
} }
.ui-body-b paper-checkbox #checkbox.paper-checkbox { .ui-body-b paper-checkbox #checkbox.paper-checkbox {
border-color: #ccc; border-color: #eee;
} }
.ui-body-b paper-checkbox #checkbox.checked.paper-checkbox { .ui-body-b paper-checkbox #checkbox.checked.paper-checkbox {
@ -402,24 +406,24 @@ paper-input label, paper-textarea label {
font-family: inherit !important; font-family: inherit !important;
} }
.ui-body-b paper-input label, .ui-body-b paper-textarea label { .ui-body-b .paper-input-container-0 .input-content.paper-input-container label, .ui-body-b .paper-input-container-0 .input-content.paper-input-container .paper-input-label, .ui-body-b paper-textarea label {
color: #858585 !important; color: #858585;
} }
.ui-body-a paper-input label, .ui-body-a paper-textarea label { .ui-body-a .paper-input-container-0 .input-content.paper-input-container label, .ui-body-a .paper-input-container-0 .input-content.paper-input-container .paper-input-label, .ui-body-a paper-textarea label {
color: #656565 !important; color: #656565;
} }
.ui-body-a .label-is-highlighted label { .ui-body-a .paper-input-container-0 .input-content.label-is-highlighted.paper-input-container label, .ui-body-a .paper-input-container-0 .input-content.label-is-highlighted.paper-input-container .paper-input-label {
color: green !important; color: green;
} }
.ui-body-b .label-is-highlighted label { .ui-body-b .paper-input-container-0 .input-content.label-is-highlighted.paper-input-container label, .ui-body-b .paper-input-container-0 .input-content.label-is-highlighted.paper-input-container .paper-input-label {
color: #52B54B !important; color: #52B54B;
} }
.ui-body-b paper-input input, .ui-body-b paper-textarea textarea { .ui-body-b .paper-input-container-0 .input-content.paper-input-container input, .ui-body-b .paper-input-container-0 .input-content.paper-input-container textarea, .ui-body-b .paper-input-container-0 .input-content.paper-input-container iron-autogrow-textarea, .ui-body-b .paper-input-container-0 .input-content.paper-input-container .paper-input-input {
color: #fff !important; color: #fff;
} }
paper-input .focused-line, paper-textarea .focused-line { paper-input .focused-line, paper-textarea .focused-line {

View file

@ -22,7 +22,7 @@
<div class="homePageSection"> <div class="homePageSection">
<div> <div>
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestEpisodes}</h1> <h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderLatestEpisodes}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="Latest"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="submit mini categorySyncButton" data-category="Latest"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
</div> </div>
<div id="latestEpisodes" class="itemsContainer"> <div id="latestEpisodes" class="itemsContainer">
</div> </div>

View file

@ -22,7 +22,7 @@
<div id="resumableSection" style="display: none;" class="scopedContent homePageSection"> <div id="resumableSection" style="display: none;" class="scopedContent homePageSection">
<div> <div>
<h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderResume}</h1> <h1 class="listHeader" style="display:inline-block;vertical-align:middle;">${HeaderResume}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="Resume"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="submit mini categorySyncButton" data-category="Resume"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
</div> </div>
<div id="resumableItems" class="itemsContainer"> <div id="resumableItems" class="itemsContainer">
@ -32,7 +32,7 @@
<div class="homePageSection"> <div class="homePageSection">
<div> <div>
<h1 class="listHeader nextUpHeader" style="display:inline-block;vertical-align:middle;">${HeaderNextUp}</h1> <h1 class="listHeader nextUpHeader" style="display:inline-block;vertical-align:middle;">${HeaderNextUp}</h1>
<paper-button raised class="submit mini categorySyncButton" data-category="NextUp"><iron-icon icon="refresh"></iron-icon><span>${ButtonSync}</span></paper-button> <paper-button raised class="submit mini categorySyncButton" data-category="NextUp"><iron-icon icon="sync"></iron-icon><span>${ButtonSync}</span></paper-button>
</div> </div>
<div id="nextUpItems" class="itemsContainer"> <div id="nextUpItems" class="itemsContainer">
</div> </div>

View file

@ -19333,6 +19333,9 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
<g id="wifi"><path d="M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z"></path></g> <g id="wifi"><path d="M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z"></path></g>
<g id="ondemand-video"><path d="M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-6l-7 4V7z"></path></g> <g id="ondemand-video"><path d="M21 3H3c-1.11 0-2 .89-2 2v12c0 1.1.89 2 2 2h5v2h8v-2h5c1.1 0 1.99-.9 1.99-2L23 5c0-1.11-.9-2-2-2zm0 14H3V5h18v12zm-5-6l-7 4V7z"></path></g>
<g id="closed-caption"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z"></path></g> <g id="closed-caption"><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-8 7H9.5v-.5h-2v3h2V13H11v1c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1zm7 0h-1.5v-.5h-2v3h2V13H18v1c0 .55-.45 1-1 1h-3c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v1z"></path></g>
<g id="sync"><path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"></path></g>
<g id="sync-disabled"><path d="M10 6.35V4.26c-.8.21-1.55.54-2.23.96l1.46 1.46c.25-.12.5-.24.77-.33zm-7.14-.94l2.36 2.36C4.45 8.99 4 10.44 4 12c0 2.21.91 4.2 2.36 5.64L4 20h6v-6l-2.24 2.24C6.68 15.15 6 13.66 6 12c0-1 .25-1.94.68-2.77l8.08 8.08c-.25.13-.5.25-.77.34v2.09c.8-.21 1.55-.54 2.23-.96l2.36 2.36 1.27-1.27L4.14 4.14 2.86 5.41zM20 4h-6v6l2.24-2.24C17.32 8.85 18 10.34 18 12c0 1-.25 1.94-.68 2.77l1.46 1.46C19.55 15.01 20 13.56 20 12c0-2.21-.91-4.2-2.36-5.64L20 4z"></path></g>
<g id="sync-problem"><path d="M3 12c0 2.21.91 4.2 2.36 5.64L3 20h6v-6l-2.24 2.24C5.68 15.15 5 13.66 5 12c0-2.61 1.67-4.83 4-5.65V4.26C5.55 5.15 3 8.27 3 12zm8 5h2v-2h-2v2zM21 4h-6v6l2.24-2.24C18.32 8.85 19 10.34 19 12c0 2.61-1.67 4.83-4 5.65v2.09c3.45-.89 6-4.01 6-7.74 0-2.21-.91-4.2-2.36-5.64L21 4zm-10 9h2V7h-2v6z"></path></g>
</defs> </defs>
</svg> </svg>
</iron-iconset-svg> </iron-iconset-svg>