update subtitle editor

This commit is contained in:
Luke Pulverenti 2016-05-31 11:29:00 -04:00
parent 6697f8685d
commit 5361e0d2a5
18 changed files with 446 additions and 406 deletions

View File

@ -15,12 +15,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.4.5", "version": "1.4.12",
"_release": "1.4.5", "_release": "1.4.12",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.4.5", "tag": "1.4.12",
"commit": "da29c275857fd674c0946c5f3138d3eaef03cbc8" "commit": "56918a494d703b9b3d47e47d28c0ff580eb5a002"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.0", "_target": "^1.2.0",

View File

@ -25,6 +25,7 @@
.formDialog .dialogContentInner { .formDialog .dialogContentInner {
padding-bottom: 10vh; padding-bottom: 10vh;
padding-top: .5em;
} }
.layout-tv .formDialog .dialogContentInner { .layout-tv .formDialog .dialogContentInner {
@ -32,7 +33,7 @@
} }
.formDialog .centeredContent { .formDialog .centeredContent {
max-width: 700px; max-width: 740px;
} }
.formDialog .dialogContentTitle { .formDialog .dialogContentTitle {

View File

@ -37,6 +37,8 @@ See [iron-iconset](#iron-iconset) and [iron-iconset-svg](#iron-iconset-svg) for
<g id="arrow-back"><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" /></g> <g id="arrow-back"><path d="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" /></g>
<g id="check"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" /></g> <g id="check"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" /></g>
<g id="info"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z" /></g> <g id="info"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z" /></g>
<g id="delete"><path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" /></g>
<g id="more-vert"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" /></g>
</defs> </defs>
</svg> </svg>
</iron-iconset-svg> </iron-iconset-svg>

View File

@ -32,6 +32,15 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper'], function (ap
}); });
} }
if (user.Policy.IsAdministrator) {
if (item.MediaType == 'Video' && item.Type != 'TvChannel' && item.Type != 'Program' && item.LocationType != 'Virtual') {
commands.push({
name: globalize.translate('sharedcomponents#EditSubtitles'),
id: 'editsubtitles'
});
}
}
if (item.CanDownload && appHost.supports('filedownload')) { if (item.CanDownload && appHost.supports('filedownload')) {
commands.push({ commands.push({
name: globalize.translate('sharedcomponents#Download'), name: globalize.translate('sharedcomponents#Download'),
@ -109,6 +118,15 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper'], function (ap
reject(); reject();
}); });
break;
}
case 'editsubtitles':
{
require(['subtitleEditor'], function (subtitleEditor) {
var serverId = apiClient.serverInfo().Id;
subtitleEditor.show(itemId, serverId).then(resolve, reject);
});
break; break;
} }
case 'refresh': case 'refresh':

View File

@ -1,27 +1,52 @@
button.listItem {
background: transparent;
border: 0 !important;
cursor: pointer;
outline: none !important;
color: inherit;
width: 100%;
vertical-align: middle;
font-family: inherit;
font-size: inherit;
}
.listItem { .listItem {
display: flex; display: flex;
align-items: center; align-items: center;
text-align: left; text-align: left;
padding: .1em 1.25em !important; padding: .25em 1.25em !important;
outline: none !important;
} }
.listItem.largeImage { .listItem.largeImage {
padding: 1em 0 1em 1em; padding: 1em 0 1em 1em;
} }
.listItem > *:not(.listItemBody) {
flex-shrink: 0;
}
.listItemBody { .listItemBody {
flex-grow: 1; flex-grow: 1;
padding: .35em 1.25em; padding: .35em 1.25em;
overflow: hidden;
text-overflow: ellipsis;
} }
.listItemBody h3 { .listItemBody h3 {
margin: 0; margin: 0;
font-weight: normal; font-weight: normal;
padding: .25em 0;
overflow: hidden;
text-overflow: ellipsis;
} }
.layout-tv .listItemBody h3 {
padding: 0;
}
.listItemBodyText { .listItemBodyText {
padding: .25em 0; overflow: hidden;
text-overflow: ellipsis;
} }
.listItemImage { .listItemImage {
@ -32,6 +57,11 @@
flex-shrink: 0; flex-shrink: 0;
} }
.listItemIcon {
width: 3vh;
height: 3vh;
}
.listItem.largeImage .listItemImage { .listItem.largeImage .listItemImage {
width: 45vh; width: 45vh;
height: 30vh; height: 30vh;
@ -62,6 +92,11 @@
.paperList { .paperList {
padding: .5em 0; padding: .5em 0;
margin: 12px auto; margin: 1em auto;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
} }
.paperList.clear {
box-shadow: none !important;
background-color: transparent !important;
}

View File

@ -1,4 +1,4 @@
define(['itemHelper', 'mediaInfo', 'indicators', 'clearButtonStyle', 'css!./listview'], function (itemHelper, mediaInfo, indicators) { define(['itemHelper', 'mediaInfo', 'indicators', 'css!./listview'], function (itemHelper, mediaInfo, indicators) {
function getListViewHtml(items, options) { function getListViewHtml(items, options) {
@ -15,7 +15,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'clearButtonStyle', 'css!./list
var html = ''; var html = '';
var cssClass = "itemAction clearButton listItem"; var cssClass = "itemAction listItem";
var downloadWidth = 80; var downloadWidth = 80;

View File

@ -1,4 +1,4 @@
<div class="dialogHeader" style="margin:0 0 2em;"> <div class="dialogHeader">
<button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button> <button is="paper-icon-button-light" class="btnCancel" tabindex="-1"><iron-icon icon="arrow-back"></iron-icon></button>
<div class="dialogHeaderTitle"> <div class="dialogHeaderTitle">
${Edit} ${Edit}

View File

@ -68,5 +68,16 @@
"MessageItemsAdded": "Items added.", "MessageItemsAdded": "Items added.",
"OptionNew": "New...", "OptionNew": "New...",
"LabelPlaylist": "Playlist:", "LabelPlaylist": "Playlist:",
"AddToPlaylist": "Add to Playlist" "AddToPlaylist": "Add to Playlist",
"Subtitles": "Subtitles",
"DownloadSubtitles": "Download Subtitles",
"LabelLanguage": "Language:",
"Search": "Search",
"NoSubtitleSearchResultsFound": "No results found.",
"File": "File",
"MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?",
"ConfirmDeletion": "Confirm Deletion",
"MySubtitles": "My Subtitles",
"MessageDownloadQueued": "Download queued.",
"EditSubtitles": "Edit Subtitles"
} }

View File

@ -0,0 +1,3 @@
.subtitleEditorDialog .originalFileLabel {
margin-right: 1em;
}

View File

@ -1,6 +1,7 @@
define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'appStorage', 'connectionManager', 'loading', 'paper-fab', 'listViewStyle', 'paper-icon-button-light', 'css!./../formdialog'], function (dialogHelper, require, layoutManager, globalize, appStorage, connectionManager, loading) { define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'scrollHelper', 'appStorage', 'connectionManager', 'loading', 'focusManager', 'emby-select', 'listViewStyle', 'paper-icon-button-light', 'css!./../formdialog', 'html!./../icons/mediainfo.html', 'html!./../icons/nav.html', 'css!./subtitleeditor'], function (dialogHelper, require, layoutManager, globalize, scrollHelper, appStorage, connectionManager, loading, focusManager) {
var currentItem; var currentItem;
var hasChanges;
function showLocalSubtitles(context, index) { function showLocalSubtitles(context, index) {
@ -51,19 +52,23 @@
}).then(function () { }).then(function () {
hasChanges = true;
require(['toast'], function (toast) { require(['toast'], function (toast) {
toast(globalize.translate('MessageDownloadQueued')); toast(globalize.translate('sharedcomponents#MessageDownloadQueued'));
}); });
focusManager.autoFocus(context);
}); });
} }
function deleteLocalSubtitle(context, index) { function deleteLocalSubtitle(context, index) {
var msg = globalize.translate('MessageAreYouSureDeleteSubtitles'); var msg = globalize.translate('sharedcomponents#MessageAreYouSureDeleteSubtitles');
require(['confirm'], function (confirm) { require(['confirm'], function (confirm) {
confirm(msg, globalize.translate('HeaderConfirmDeletion')).then(function () { confirm(msg, globalize.translate('sharedcomponents#ConfirmDeletion')).then(function () {
loading.show(); loading.show();
@ -79,6 +84,7 @@
}).then(function () { }).then(function () {
hasChanges = true;
reload(context, apiClient, itemId); reload(context, apiClient, itemId);
}); });
}); });
@ -98,10 +104,10 @@
if (subs.length) { if (subs.length) {
html += '<h1 style="margin-top:1.5em;">' + globalize.translate('HeaderCurrentSubtitles') + '</h1>'; html += '<h1>' + globalize.translate('sharedcomponents#MySubtitles') + '</h1>';
if (layoutManager.tv) { if (layoutManager.tv) {
html += '<div>'; html += '<div class="paperList clear">';
} else { } else {
html += '<div class="paperList">'; html += '<div class="paperList">';
} }
@ -110,30 +116,19 @@
var itemHtml = ''; var itemHtml = '';
itemHtml += '<div class="listItem">'; var tagName = layoutManager.tv ? 'button' : 'div';
var className = layoutManager.tv && s.Path ? 'listItem btnDelete' : 'listItem';
itemHtml += '<paper-fab mini class="blue" icon="closed-caption" item-icon></paper-fab>'; itemHtml += '<' + tagName + ' class="' + className + '" data-index="' + s.Index + '">';
var atts = []; itemHtml += '<iron-icon class="listItemIcon" icon="mediainfo:closed-caption"></iron-icon>';
atts.push(s.Codec);
if (s.IsDefault) {
atts.push('Default');
}
if (s.IsForced) {
atts.push('Forced');
}
itemHtml += '<div class="listItemBody">'; itemHtml += '<div class="listItemBody">';
itemHtml += '<h3 class="listItemBodyText">'; itemHtml += '<h3 class="listItemBodyText">';
itemHtml += (s.Language || globalize.translate('LabelUnknownLanaguage')); itemHtml += s.DisplayTitle || '';
itemHtml += '</h3>'; itemHtml += '</h3>';
itemHtml += '<div class="secondary listItemBodyText">' + atts.join(' - ') + '</div>';
if (s.Path) { if (s.Path) {
itemHtml += '<div class="secondary listItemBodyText">' + (s.Path) + '</div>'; itemHtml += '<div class="secondary listItemBodyText">' + (s.Path) + '</div>';
} }
@ -141,11 +136,13 @@
itemHtml += '</a>'; itemHtml += '</a>';
itemHtml += '</div>'; itemHtml += '</div>';
if (s.Path) { if (!layoutManager.tv) {
itemHtml += '<button is="paper-icon-button-light" data-index="' + s.Index + '" title="' + globalize.translate('Delete') + '" class="btnDelete"><iron-icon icon="delete"></iron-icon></button>'; if (s.Path) {
itemHtml += '<button is="paper-icon-button-light" data-index="' + s.Index + '" title="' + globalize.translate('sharedcomponents#Delete') + '" class="btnDelete"><iron-icon icon="nav:delete"></iron-icon></button>';
}
} }
itemHtml += '</div>'; itemHtml += '</' + tagName + '>';
return itemHtml; return itemHtml;
@ -226,16 +223,19 @@
} }
html += '<h1>' + provider + '</h1>'; html += '<h1>' + provider + '</h1>';
if (layoutManager.tv) { if (layoutManager.tv) {
html += '<div>'; html += '<div class="paperList clear">';
} else { } else {
html += '<div class="paperList">'; html += '<div class="paperList">';
} }
lastProvider = provider; lastProvider = provider;
} }
html += '<div class="listItem">'; var tagName = layoutManager.tv ? 'button' : 'div';
var className = layoutManager.tv ? 'listItem btnOptions' : 'listItem';
html += '<paper-fab mini class="blue" icon="closed-caption" item-icon></paper-fab>'; html += '<' + tagName + ' class="' + className + '" data-subid="' + result.Id + '">';
html += '<iron-icon class="listItemIcon" icon="mediainfo:closed-caption"></iron-icon>';
html += '<div class="listItemBody">'; html += '<div class="listItemBody">';
@ -254,9 +254,11 @@
html += '<div class="secondary">' + /*(result.CommunityRating || 0) + ' / ' +*/ (result.DownloadCount || 0) + '</div>'; html += '<div class="secondary">' + /*(result.CommunityRating || 0) + ' / ' +*/ (result.DownloadCount || 0) + '</div>';
html += '<button type="button" is="paper-icon-button-light" data-subid="' + result.Id + '" title="' + globalize.translate('ButtonDownload') + '" class="btnDownload"><iron-icon icon="cloud-download"></iron-icon></button>'; if (!layoutManager.tv) {
html += '<button type="button" is="paper-icon-button-light" data-subid="' + result.Id + '" class="btnOptions"><iron-icon icon="nav:more-vert"></iron-icon></button>';
}
html += '</div>'; html += '</' + tagName + '>';
} }
if (results.length) { if (results.length) {
@ -295,6 +297,7 @@
context.querySelector('.noSearchResults').classList.add('hide'); context.querySelector('.noSearchResults').classList.add('hide');
function onGetItem(item) { function onGetItem(item) {
currentItem = item; currentItem = item;
fillSubtitleList(context, item); fillSubtitleList(context, item);
@ -359,66 +362,145 @@
function onSubtitleResultsClick(e) { function onSubtitleResultsClick(e) {
var btnDownload = parentWithClass(e.target, 'btnDownload'); var btnOptions = parentWithClass(e.target, 'btnOptions');
if (btnDownload) { if (btnOptions) {
var id = btnDownload.getAttribute('data-subid'); var subtitleId = btnOptions.getAttribute('data-subid');
var context = parentWithClass(btnDownload, 'subtitleEditorDialog'); var context = parentWithClass(btnOptions, 'subtitleEditorDialog');
downloadRemoteSubtitles(context, id); showDownloadOptions(btnOptions, context, subtitleId);
} }
} }
function showDownloadOptions(button, context, subtitleId) {
var items = [];
items.push({
name: Globalize.translate('sharedcomponents#Download'),
id: 'download'
});
require(['actionsheet'], function (actionsheet) {
actionsheet.show({
items: items,
positionTo: button
}).then(function (id) {
switch (id) {
case 'download':
downloadRemoteSubtitles(context, subtitleId);
break;
default:
break;
}
});
});
}
function onSubmitButtonClick(e) {
// Do a fake form submit this the button isn't a real submit button
var fakeSubmit = document.createElement('input');
fakeSubmit.setAttribute('type', 'submit');
fakeSubmit.style.display = 'none';
var form = parentWithClass(this, 'subtitleSearchForm');
form.appendChild(fakeSubmit);
fakeSubmit.click();
// Seeing issues in smart tv browsers where the form does not get submitted if the button is removed prior to the submission actually happening
setTimeout(function () {
form.removeChild(fakeSubmit);
}, 500);
}
function showEditorInternal(itemId, serverId, template) {
hasChanges = false;
var apiClient = connectionManager.getApiClient(serverId);
return apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) {
var dialogOptions = {
removeOnClose: true
};
if (layoutManager.tv) {
dialogOptions.size = 'fullscreen';
} else {
dialogOptions.size = 'small';
}
var dlg = dialogHelper.createDialog(dialogOptions);
dlg.classList.add('formDialog');
dlg.classList.add('subtitleEditorDialog');
dlg.innerHTML = globalize.translateDocument(template, 'sharedcomponents');
document.body.appendChild(dlg);
dlg.querySelector('.originalFileLabel').innerHTML = globalize.translate('sharedcomponents#File');
dlg.querySelector('.subtitleSearchForm').addEventListener('submit', onSearchSubmit);
var btnSubmit = dlg.querySelector('.btnSubmit');
if (layoutManager.tv) {
scrollHelper.centerFocus.on(dlg.querySelector('.dialogContent'), false);
dlg.querySelector('.btnSearchSubtitles').classList.add('hide');
} else {
btnSubmit.classList.add('hide');
}
var editorContent = dlg.querySelector('.dialogContent');
dlg.querySelector('.subtitleList').addEventListener('click', onSubtitleListClick);
dlg.querySelector('.subtitleResults').addEventListener('click', onSubtitleResultsClick);
apiClient.getCultures().then(function (languages) {
fillLanguages(editorContent, apiClient, languages);
});
dlg.querySelector('.btnCancel').addEventListener('click', function () {
dialogHelper.close(dlg);
});
btnSubmit.addEventListener('click', onSubmitButtonClick);
return new Promise(function (resolve, reject) {
dlg.addEventListener('close', function () {
if (hasChanges) {
resolve();
} else {
reject();
}
});
dialogHelper.open(dlg);
reload(editorContent, apiClient, item);
});
});
}
function showEditor(itemId, serverId) { function showEditor(itemId, serverId) {
loading.show(); loading.show();
require(['text!./subtitleeditor.template.html'], function (template) { return new Promise(function (resolve, reject) {
var apiClient = connectionManager.getApiClient(serverId); require(['text!./subtitleeditor.template.html'], function (template) {
apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { showEditorInternal(itemId, serverId, template).then(resolve, reject);
var dialogOptions = {
removeOnClose: true
};
if (layoutManager.tv) {
dialogOptions.size = 'fullscreen';
} else {
dialogOptions.size = 'small';
}
var dlg = dialogHelper.createDialog(dialogOptions);
dlg.classList.add('formDialog');
dlg.classList.add('subtitleEditorDialog');
dlg.innerHTML = globalize.translateDocument(template);
document.body.appendChild(dlg);
dlg.querySelector('.pathLabel').innerHTML = globalize.translate('MediaInfoFile');
dlg.querySelector('.subtitleSearchForm').addEventListener('submit', onSearchSubmit);
dialogHelper.open(dlg);
var editorContent = dlg.querySelector('.dialogContent');
dlg.querySelector('.subtitleList').addEventListener('click', onSubtitleListClick);
dlg.querySelector('.subtitleResults').addEventListener('click', onSubtitleResultsClick);
reload(editorContent, apiClient, item);
apiClient.getCultures().then(function (languages) {
fillLanguages(editorContent, apiClient, languages);
});
dlg.querySelector('.btnCancel').addEventListener('click', function () {
dialogHelper.close(dlg);
});
}); });
}); });
} }
return { return {

View File

@ -6,21 +6,23 @@
<div class="dialogContentInner centeredContent"> <div class="dialogContentInner centeredContent">
<div class="subtitleList" style="margin-bottom:2em;"></div> <div class="subtitleList" style="margin-bottom:2em;"></div>
<h1>${HeaderSearchForSubtitles}</h1> <h1>${DownloadSubtitles}</h1>
<p style="margin: 1.5em 0;" class="originalFile"><span class="mediaInfoLabel pathLabel"></span><span class="pathValue"></span></p> <p style="margin: 1.5em 0;" class="originalFile"><span class="originalFileLabel dimText"></span><span class="pathValue"></span></p>
<form class="subtitleSearchForm" style="max-width:none;"> <form class="subtitleSearchForm" style="max-width: none;">
<div style="display: inline-block; width: 85%;"> <div style="display: flex; align-items: center;">
<label for="selectLanguage" class="selectLabel">${LabelLanguage}</label> <div class="selectContainer" style="flex-grow: 1; margin-bottom: 0;">
<select autofocus id="selectLanguage" required="required" data-mini="true"></select> <select is="emby-select" id="selectLanguage" required="required" label="${LabelLanguage}"></select>
</div>
<button type="submit" is="paper-icon-button-light" title="${Search}" class="btnSearchSubtitles" style="flex-shrink: 0;"><iron-icon icon="search"></iron-icon></button>
</div> </div>
<button type="submit" is="paper-icon-button-light" title="${ButtonSearch}" class="btnSearchSubtitles"><iron-icon icon="search"></iron-icon></button> <paper-button raised style="display:block;" class="btnSubmit">${Search}</paper-button>
</form> </form>
<br /> <br />
<div class="subtitleResults"></div> <div class="subtitleResults"></div>
<div class="noSearchResults hide"> <div class="noSearchResults hide">
${MessageNoSubtitleSearchResultsFound} ${NoSubtitleSearchResultsFound}
</div> </div>
</div> </div>
</div> </div>

View File

@ -0,0 +1,174 @@
/* Swatches */
/* A
-----------------------------------------------------------------------------------------------------------*/
/* Bar: Toolbars, dividers, slider track */
.ui-bar-a,
.ui-page-theme-a .ui-bar-inherit,
html .ui-bar-a .ui-bar-inherit,
html .ui-body-a .ui-bar-inherit,
html body .ui-group-theme-a .ui-bar-inherit {
background-color: #e9e9e9 /*{a-bar-background-color}*/;
border-color: #ddd /*{a-bar-border}*/;
color: #333 /*{a-bar-color}*/;
font-weight: bold;
}
.ui-bar-a {
border-width: 1px;
border-style: solid;
}
/* Page and overlay */
.ui-page-theme-a .ui-panel-wrapper {
background-color: #f9f9f9 /*{a-page-background-color}*/;
border-color: #bbb /*{a-page-border}*/;
color: #333 /*{a-page-color}*/;
}
/* Body: Read-only lists, text inputs, collapsible content */
.ui-page-theme-a .ui-body-inherit,
html .ui-bar-a .ui-body-inherit,
html .ui-body-a .ui-body-inherit,
html body .ui-group-theme-a .ui-body-inherit,
html .ui-panel-page-container-a {
background-color: #fff /*{a-body-background-color}*/;
border-color: #ddd /*{a-body-border}*/;
color: #333 /*{a-body-color}*/;
}
/* Links */
.ui-page-theme-a a,
html .ui-bar-a a,
html .ui-body-a a,
html body .ui-group-theme-a a {
color: #388E3C /*{a-link-color}*/;
font-weight: bold;
}
.ui-page-theme-a a:visited,
html .ui-bar-a a:visited,
html .ui-body-a a:visited,
html body .ui-group-theme-a a:visited {
color: #388E3C /*{a-link-visited}*/;
}
.ui-page-theme-a a:hover,
html .ui-bar-a a:hover,
html .ui-body-a a:hover,
html body .ui-group-theme-a a:hover {
color: #1B5E20 /*{a-link-hover}*/;
}
.ui-page-theme-a a:active,
html .ui-bar-a a:active,
html .ui-body-a a:active,
html body .ui-group-theme-a a:active {
color: #1B5E20 /*{a-link-active}*/;
}
/* Button up */
.ui-page-theme-a .ui-btn,
html .ui-bar-a .ui-btn,
html .ui-body-a .ui-btn,
html body .ui-group-theme-a .ui-btn,
html head + body .ui-btn.ui-btn-a,
/* Button visited */
.ui-page-theme-a .ui-btn:visited,
html .ui-bar-a .ui-btn:visited,
html .ui-body-a .ui-btn:visited,
html body .ui-group-theme-a .ui-btn:visited,
html head + body .ui-btn.ui-btn-a:visited,
ul[data-role="listview"] a + a {
background-color: #f6f6f6 /*{a-bup-background-color}*/;
border-color: #ddd /*{a-bup-border}*/;
color: #333 /*{a-bup-color}*/;
}
/* Button hover */
.ui-page-theme-a .ui-btn:hover,
html .ui-bar-a .ui-btn:hover,
html .ui-body-a .ui-btn:hover,
html body .ui-group-theme-a .ui-btn:hover,
html head + body .ui-btn.ui-btn-a:hover {
background-color: #ededed /*{a-bhover-background-color}*/;
border-color: #ddd /*{a-bhover-border}*/;
color: #333 /*{a-bhover-color}*/;
}
/* Button down */
.ui-page-theme-a .ui-btn:active,
html .ui-bar-a .ui-btn:active,
html .ui-body-a .ui-btn:active,
html body .ui-group-theme-a .ui-btn:active,
html head + body .ui-btn.ui-btn-a:active {
background-color: #e8e8e8 /*{a-bdown-background-color}*/;
border-color: #ddd /*{a-bdown-border}*/;
color: #333 /*{a-bdown-color}*/;
}
/* Active button */
.ui-page-theme-a .ui-btn.ui-btn-active,
html .ui-bar-a .ui-btn.ui-btn-active,
html .ui-body-a .ui-btn.ui-btn-active,
html body .ui-group-theme-a .ui-btn.ui-btn-active,
html head + body .ui-btn.ui-btn-a.ui-btn-active,
/* Active checkbox icon */
.ui-page-theme-a .ui-checkbox-on:after,
html .ui-bar-a .ui-checkbox-on:after,
html .ui-body-a .ui-checkbox-on:after,
html body .ui-group-theme-a .ui-checkbox-on:after,
.ui-btn.ui-checkbox-on.ui-btn-a:after {
background-color: #3388cc /*{a-active-background-color}*/;
border-color: #3388cc /*{a-active-border}*/;
color: #fff /*{a-active-color}*/;
}
/* Active radio button icon */
.ui-page-theme-a .ui-radio-on:after,
html .ui-bar-a .ui-radio-on:after,
html .ui-body-a .ui-radio-on:after,
html body .ui-group-theme-a .ui-radio-on:after,
.ui-btn.ui-radio-on.ui-btn-a:after {
border-color: #3388cc /*{a-active-background-color}*/;
}
.jqmButtonNoText {
padding: 3px 4px !important;
border-radius: 4px !important;
vertical-align: top;
}
.ui-listview li h3 {
font-weight: 400;
}
.ui-listview > .ui-li-divider {
line-height: 1.5;
line-height: initial;
}
/*
Make all panels vertically scrollable
If this causes any problems then perhaps require a css class to activate
*/
.ui-panel.ui-panel-open {
position: fixed;
}
/* Show over now playing bar */
.ui-panel-display-overlay {
z-index: 1098;
}
.ui-panel-inner {
position: absolute;
top: 1px;
left: 0;
bottom: 0;
right: 0;
overflow: hidden;
}
.ui-slider-track.ui-mini .ui-slider-handle {
height: 18px;
width: 18px;
margin: -10px 0 0 -10px;
}

View File

@ -621,7 +621,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
.libraryPanelHeader { .libraryPanelHeader {
margin: 5px 0 15px 0; margin: 5px 0 15px 0;
font-size: 15px; font-size: 15px;
font-family: Montserrat;
} }
.libraryPanelHeader a { .libraryPanelHeader a {
@ -985,12 +984,6 @@ span.itemCommunityRating:not(:empty) + .userDataIcons {
font-weight: bold; font-weight: bold;
} }
@media all and (min-width: 650px) {
.libraryTabs .ui-btn-inner {
padding: .5em 15px !important;
}
}
/* All HTML5 progress enabled browsers */ /* All HTML5 progress enabled browsers */
.itemProgressBar { .itemProgressBar {
/* Turns off styling - not usually needed, but good to know. */ /* Turns off styling - not usually needed, but good to know. */

View File

@ -126,11 +126,6 @@
color: #ccc; color: #ccc;
} }
/* Fixes button running outside of list */
.btnRemoveFromEditorList .ui-btn-inner {
padding-right: 0 !important;
}
.chkAirDay { .chkAirDay {
padding: 0 2em 1em 0; padding: 0 2em 1em 0;
} }

View File

@ -1,175 +1,4 @@
/* Swatches */ /* Links */
/* A
-----------------------------------------------------------------------------------------------------------*/
/* Bar: Toolbars, dividers, slider track */
.ui-bar-a,
.ui-page-theme-a .ui-bar-inherit,
html .ui-bar-a .ui-bar-inherit,
html .ui-body-a .ui-bar-inherit,
html body .ui-group-theme-a .ui-bar-inherit {
background-color: #e9e9e9 /*{a-bar-background-color}*/;
border-color: #ddd /*{a-bar-border}*/;
color: #333 /*{a-bar-color}*/;
font-weight: bold;
}
.ui-bar-a {
border-width: 1px;
border-style: solid;
}
/* Page and overlay */
.ui-page-theme-a .ui-panel-wrapper {
background-color: #f9f9f9 /*{a-page-background-color}*/;
border-color: #bbb /*{a-page-border}*/;
color: #333 /*{a-page-color}*/;
}
/* Body: Read-only lists, text inputs, collapsible content */
.ui-page-theme-a .ui-body-inherit,
html .ui-bar-a .ui-body-inherit,
html .ui-body-a .ui-body-inherit,
html body .ui-group-theme-a .ui-body-inherit,
html .ui-panel-page-container-a {
background-color: #fff /*{a-body-background-color}*/;
border-color: #ddd /*{a-body-border}*/;
color: #333 /*{a-body-color}*/;
}
/* Links */
.ui-page-theme-a a,
html .ui-bar-a a,
html .ui-body-a a,
html body .ui-group-theme-a a {
color: #388E3C /*{a-link-color}*/;
font-weight: bold;
}
.ui-page-theme-a a:visited,
html .ui-bar-a a:visited,
html .ui-body-a a:visited,
html body .ui-group-theme-a a:visited {
color: #388E3C /*{a-link-visited}*/;
}
.ui-page-theme-a a:hover,
html .ui-bar-a a:hover,
html .ui-body-a a:hover,
html body .ui-group-theme-a a:hover {
color: #1B5E20 /*{a-link-hover}*/;
}
.ui-page-theme-a a:active,
html .ui-bar-a a:active,
html .ui-body-a a:active,
html body .ui-group-theme-a a:active {
color: #1B5E20 /*{a-link-active}*/;
}
/* Button up */
.ui-page-theme-a .ui-btn,
html .ui-bar-a .ui-btn,
html .ui-body-a .ui-btn,
html body .ui-group-theme-a .ui-btn,
html head + body .ui-btn.ui-btn-a,
/* Button visited */
.ui-page-theme-a .ui-btn:visited,
html .ui-bar-a .ui-btn:visited,
html .ui-body-a .ui-btn:visited,
html body .ui-group-theme-a .ui-btn:visited,
html head + body .ui-btn.ui-btn-a:visited,
ul[data-role="listview"] a + a {
background-color: #f6f6f6 /*{a-bup-background-color}*/;
border-color: #ddd /*{a-bup-border}*/;
color: #333 /*{a-bup-color}*/;
}
/* Button hover */
.ui-page-theme-a .ui-btn:hover,
html .ui-bar-a .ui-btn:hover,
html .ui-body-a .ui-btn:hover,
html body .ui-group-theme-a .ui-btn:hover,
html head + body .ui-btn.ui-btn-a:hover {
background-color: #ededed /*{a-bhover-background-color}*/;
border-color: #ddd /*{a-bhover-border}*/;
color: #333 /*{a-bhover-color}*/;
}
/* Button down */
.ui-page-theme-a .ui-btn:active,
html .ui-bar-a .ui-btn:active,
html .ui-body-a .ui-btn:active,
html body .ui-group-theme-a .ui-btn:active,
html head + body .ui-btn.ui-btn-a:active {
background-color: #e8e8e8 /*{a-bdown-background-color}*/;
border-color: #ddd /*{a-bdown-border}*/;
color: #333 /*{a-bdown-color}*/;
}
/* Active button */
.ui-page-theme-a .ui-btn.ui-btn-active,
html .ui-bar-a .ui-btn.ui-btn-active,
html .ui-body-a .ui-btn.ui-btn-active,
html body .ui-group-theme-a .ui-btn.ui-btn-active,
html head + body .ui-btn.ui-btn-a.ui-btn-active,
/* Active checkbox icon */
.ui-page-theme-a .ui-checkbox-on:after,
html .ui-bar-a .ui-checkbox-on:after,
html .ui-body-a .ui-checkbox-on:after,
html body .ui-group-theme-a .ui-checkbox-on:after,
.ui-btn.ui-checkbox-on.ui-btn-a:after {
background-color: #3388cc /*{a-active-background-color}*/;
border-color: #3388cc /*{a-active-border}*/;
color: #fff /*{a-active-color}*/;
}
/* Active radio button icon */
.ui-page-theme-a .ui-radio-on:after,
html .ui-bar-a .ui-radio-on:after,
html .ui-body-a .ui-radio-on:after,
html body .ui-group-theme-a .ui-radio-on:after,
.ui-btn.ui-radio-on.ui-btn-a:after {
border-color: #3388cc /*{a-active-background-color}*/;
}
/* B
-----------------------------------------------------------------------------------------------------------*/
/* Bar: Toolbars, dividers, slider track */
.ui-bar-b,
.ui-page-theme-b .ui-bar-inherit,
html .ui-bar-b .ui-bar-inherit,
html .ui-body-b .ui-bar-inherit,
html body .ui-group-theme-b .ui-bar-inherit {
background-color: #1d1d1d /*{b-bar-background-color}*/;
border-color: #1b1b1b /*{b-bar-border}*/;
color: #fff /*{b-bar-color}*/;
font-weight: bold;
}
.ui-bar-b {
border-width: 1px;
border-style: solid;
}
/* Page and overlay */
.ui-page-theme-b .ui-panel-wrapper {
background-color: #252525 /*{b-page-background-color}*/;
border-color: #454545 /*{b-page-border}*/;
color: #fff /*{b-page-color}*/;
}
/* Body: Read-only lists, text inputs, collapsible content */
.ui-page-theme-b .ui-body-inherit,
html .ui-bar-b .ui-body-inherit,
html .ui-body-b .ui-body-inherit,
html body .ui-group-theme-b .ui-body-inherit,
html .ui-panel-page-container-b {
background-color: #2a2a2a /*{b-body-background-color}*/;
border-color: #1d1d1d /*{b-body-border}*/;
color: #fff /*{b-body-color}*/;
}
/* Links */
.ui-body-b a { .ui-body-b a {
color: #52B54B /*{b-link-color}*/; color: #52B54B /*{b-link-color}*/;
font-weight: bold; font-weight: bold;
@ -187,68 +16,6 @@ html .ui-panel-page-container-b {
color: #2E7D32 /*{b-link-active}*/; color: #2E7D32 /*{b-link-active}*/;
} }
/* Button up */
.ui-page-theme-b .ui-btn,
html .ui-bar-b .ui-btn,
html .ui-body-b .ui-btn,
html body .ui-group-theme-b .ui-btn,
html head + body .ui-btn.ui-btn-b,
/* Button visited */
.ui-page-theme-b .ui-btn:visited,
html .ui-bar-b .ui-btn:visited,
html .ui-body-b .ui-btn:visited,
html body .ui-group-theme-b .ui-btn:visited,
html head + body .ui-btn.ui-btn-b:visited {
background-color: #333 /*{b-bup-background-color}*/;
border-color: #1f1f1f /*{b-bup-border}*/;
color: #fff /*{b-bup-color}*/;
}
/* Button hover */
.ui-page-theme-b .ui-btn:hover,
html .ui-bar-b .ui-btn:hover,
html .ui-body-b .ui-btn:hover,
html body .ui-group-theme-b .ui-btn:hover,
html head + body .ui-btn.ui-btn-b:hover {
background-color: #373737 /*{b-bhover-background-color}*/;
border-color: #1f1f1f /*{b-bhover-border}*/;
color: #fff /*{b-bhover-color}*/;
}
/* Button down */
.ui-page-theme-b .ui-btn:active,
html .ui-bar-b .ui-btn:active,
html .ui-body-b .ui-btn:active,
html body .ui-group-theme-b .ui-btn:active,
html head + body .ui-btn.ui-btn-b:active {
background-color: #404040 /*{b-bdown-background-color}*/;
border-color: #1f1f1f /*{b-bdown-border}*/;
color: #fff /*{b-bdown-color}*/;
}
/* Active button */
.ui-page-theme-b .ui-btn.ui-btn-active,
html .ui-bar-b .ui-btn.ui-btn-active,
html .ui-body-b .ui-btn.ui-btn-active,
html body .ui-group-theme-b .ui-btn.ui-btn-active,
html head + body .ui-btn.ui-btn-b.ui-btn-active,
/* Active checkbox icon */
.ui-page-theme-b .ui-checkbox-on:after,
html .ui-bar-b .ui-checkbox-on:after,
html .ui-body-b .ui-checkbox-on:after,
html body .ui-group-theme-b .ui-checkbox-on:after,
.ui-btn.ui-checkbox-on.ui-btn-b:after {
background-color: #22aadd /*{b-active-background-color}*/;
border-color: #22aadd /*{b-active-border}*/;
color: #fff /*{b-active-color}*/;
}
/* Active radio button icon */
.ui-page-theme-b .ui-radio-on:after,
html .ui-bar-b .ui-radio-on:after,
html .ui-body-b .ui-radio-on:after,
html body .ui-group-theme-b .ui-radio-on:after,
.ui-btn.ui-radio-on.ui-btn-b:after {
border-color: #22aadd /*{b-active-background-color}*/;
}
/* latin */ /* latin */
@font-face { @font-face {
font-family: 'Montserrat'; font-family: 'Montserrat';
@ -263,11 +30,6 @@ html body .ui-group-theme-b .ui-radio-on:after,
margin-left: 0; margin-left: 0;
} }
/* jQuery mobile adds a text shadow that seems unnecessary. */
* {
-webkit-font-smoothing: antialiased;
}
/* Remove IE mobile 300ms tap delay */ /* Remove IE mobile 300ms tap delay */
html { html {
-ms-touch-action: manipulation; -ms-touch-action: manipulation;
@ -298,6 +60,7 @@ body {
margin: 0; margin: 0;
padding: 0; padding: 0;
height: 100%; height: 100%;
-webkit-font-smoothing: antialiased;
} }
body.autoScrollY { body.autoScrollY {
@ -325,24 +88,18 @@ iron-icon {
overflow-y: hidden !important; overflow-y: hidden !important;
} }
.jqmButtonNoText {
padding: 3px 4px !important;
border-radius: 4px !important;
vertical-align: top;
}
.textlink { .textlink {
text-decoration: none; text-decoration: none;
} }
h1, h1 a { h1, h2, h3 {
font-weight: 300 !important; margin-top: 1em;
font-size: 24px;
} }
.ui-loader { h1, h1 a {
display: none !important; font-weight: 300 !important;
} font-size: 24px;
}
h2 { h2 {
font-weight: 400; font-weight: 400;
@ -369,42 +126,6 @@ h1 a:hover {
color: #52B54B !important; color: #52B54B !important;
} }
.ui-listview li h3 {
font-weight: 400;
}
.ui-listview > .ui-li-divider {
line-height: 1.5;
line-height: initial;
}
/*
Make all panels vertically scrollable
If this causes any problems then perhaps require a css class to activate
*/
.ui-panel.ui-panel-open {
position: fixed;
}
/* Show over now playing bar */
.ui-panel-display-overlay {
z-index: 1098;
}
.ui-panel-inner {
position: absolute;
top: 1px;
left: 0;
bottom: 0;
right: 0;
overflow: hidden;
}
.ui-slider-track.ui-mini .ui-slider-handle {
height: 18px;
width: 18px;
margin: -10px 0 0 -10px;
}
fieldset { fieldset {
border: none; border: none;
} }

View File

@ -1,4 +1,12 @@
<div id="libraryReportManagerPage" data-role="page" class="page libraryPage noSecondaryNavPage reportsPage" data-contextname="${HeaderReports}" data-require="paper-icon-button,jqmcheckbox,jqmcontrolgroup,jqmpanel,jqmcollapsible,jqmtable,scripts/reports,detailtablecss"> <div id="libraryReportManagerPage" data-role="page" class="page libraryPage noSecondaryNavPage reportsPage" data-contextname="${HeaderReports}" data-require="paper-icon-button,jqmcheckbox,jqmcontrolgroup,jqmpanel,jqmcollapsible,jqmtable,scripts/reports,detailtablecss">
<style>
/* Page and overlay */
.ui-page-theme-b .ui-panel-wrapper {
background-color: #252525 /*{b-page-background-color}*/;
border-color: #454545 /*{b-page-border}*/;
color: #fff /*{b-page-color}*/;
}
</style>
<div data-role="content"> <div data-role="content">
<div style="text-align: center;"> <div style="text-align: center;">
<div class="viewControls"> <div class="viewControls">

View File

@ -1899,7 +1899,7 @@ var AppInfo = {};
define("jstree", [bowerPath + "/jstree/dist/jstree", "css!thirdparty/jstree/themes/default/style.min.css"]); define("jstree", [bowerPath + "/jstree/dist/jstree", "css!thirdparty/jstree/themes/default/style.min.css"]);
define("jqmbase", ['css!thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.theme.css']); define("jqmbase", ['css!css/dashboard', 'css!thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.theme.css']);
define("jqmicons", ['jqmbase', 'css!thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.icons.css']); define("jqmicons", ['jqmbase', 'css!thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.icons.css']);
define("jqmtable", ['jqmbase', "thirdparty/jquerymobile-1.4.5/jqm.table", 'css!thirdparty/jquerymobile-1.4.5/jqm.table.css']); define("jqmtable", ['jqmbase', "thirdparty/jquerymobile-1.4.5/jqm.table", 'css!thirdparty/jquerymobile-1.4.5/jqm.table.css']);

View File

@ -184,11 +184,6 @@ paper-button.notext {
margin-right: 0; margin-right: 0;
} }
/*paper-toast {
background-color: #eee;
color: #000;
}*/
.bottomFab { .bottomFab {
bottom: 90px; bottom: 90px;
} }
@ -480,7 +475,7 @@ paper-textarea.mono textarea {
} }
.ui-body-b .paperList { .ui-body-b .paperList {
background-color: #323232; background-color: #2b2b2b;
} }
paper-dropdown-menu { paper-dropdown-menu {