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

update sat/ip discovery

This commit is contained in:
Luke Pulverenti 2016-03-13 03:34:17 -04:00
parent 5c4854b777
commit 4fb729169f
10 changed files with 210 additions and 92 deletions

View file

@ -16,12 +16,12 @@
},
"devDependencies": {},
"ignore": [],
"version": "1.1.44",
"_release": "1.1.44",
"version": "1.1.45",
"_release": "1.1.45",
"_resolution": {
"type": "version",
"tag": "1.1.44",
"commit": "b1b66d4e81e6abad2f5369b442107577d0dac74e"
"tag": "1.1.45",
"commit": "4096a916053ab04935ebbe0dec9bbc491d66ae9d"
},
"_source": "git://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "~1.1.5",

View file

@ -13,38 +13,74 @@
return elem;
}
function getOffsets(elems) {
var doc = document;
var results = [];
if (!doc) {
return results;
}
var docElem = doc.documentElement;
var docElemValues = {
clientTop: docElem.clientTop,
clientLeft: docElem.clientLeft
};
var win = doc.defaultView;
var winValues = {
pageXOffset: win.pageXOffset,
pageYOffset: win.pageYOffset
};
var box;
var elem;
for (var i = 0, length = elems.length; i < length; i++) {
elem = elems[i];
// Support: BlackBerry 5, iOS 3 (original iPhone)
// If we don't have gBCR, just use 0,0 rather than error
if (elem.getBoundingClientRect) {
box = elem.getBoundingClientRect();
} else {
box = { top: 0, left: 0 };
}
results[i] = {
top: box.top,
left: box.left
};
}
return results;
}
function getPosition(options) {
var windowHeight = $(window).height();
var windowHeight = window.innerHeight;
if (windowHeight < 540) {
return null;
}
var pos = $(options.positionTo).offset();
var pos = getOffsets([options.positionTo])[0];
pos.top += $(options.positionTo).innerHeight() / 2;
pos.left += $(options.positionTo).innerWidth() / 2;
// Account for margins
pos.top -= 24;
pos.left -= 24;
pos.top += options.positionTo.offsetHeight / 2;
pos.left += options.positionTo.offsetWidth / 2;
// Account for popup size - we can't predict this yet so just estimate
pos.top -= (55 * options.items.length) / 2;
pos.left -= 80;
// Account for scroll position
pos.top -= $(window).scrollTop();
pos.left -= $(window).scrollLeft();
// Avoid showing too close to the bottom
pos.top = Math.min(pos.top, windowHeight - 300);
pos.left = Math.min(pos.left, $(window).width() - 300);
pos.left = Math.min(pos.left, window.innerWidth - 300);
// Do some boundary checking
pos.top = Math.max(pos.top, 0);
pos.left = Math.max(pos.left, 0);
pos.top = Math.max(pos.top, 10);
pos.left = Math.max(pos.left, 10);
return pos;
}
@ -58,13 +94,16 @@
function show(options) {
var pos = options.positionTo ? getPosition(options) : null;
// items
// positionTo
// showCancel
// title
var dialogOptions = {
removeOnClose: true,
enableHistory: options.enableHistory
enableHistory: options.enableHistory,
refit: pos == null
};
var backButton = false;
@ -82,7 +121,6 @@
}
var dlg = paperdialoghelper.createDialog(dialogOptions);
var pos = options.positionTo ? getPosition(options) : null;
dlg.classList.add('actionSheet');
@ -155,12 +193,6 @@
dlg.innerHTML = html;
if (pos) {
dlg.style.position = 'fixed';
dlg.style.left = pos.left + 'px';
dlg.style.top = pos.top + 'px';
}
if (layoutManager.tv) {
addCenterFocus(dlg);
}
@ -198,6 +230,12 @@
});
paperdialoghelper.open(dlg);
if (pos) {
dlg.style.position = 'fixed';
dlg.style.left = pos.left + 'px';
dlg.style.top = pos.top + 'px';
}
});
}

View file

@ -67,13 +67,6 @@
dlg.addEventListener('iron-overlay-closed', onDialogClosed);
dlg.open();
// It's not being positioned properly in firefox
if (!browser.chrome && !dlg.classList.contains('fixedSize')) {
setTimeout(function () {
dlg.refit();
}, 100);
}
if (dlg.getAttribute('data-lockscroll') == 'true' && !document.body.classList.contains('noScroll')) {
document.body.classList.add('noScroll');
removeScrollLockOnClose = true;
@ -211,49 +204,9 @@
return dlg;
}
function positionTo(dlg, elem) {
var windowHeight = $(window).height();
// If the window height is under a certain amount, don't bother trying to position
// based on an element.
if (windowHeight >= 540) {
var pos = $(elem).offset();
pos.top += elem.offsetHeight / 2;
pos.left += elem.offsetWidth / 2;
// Account for margins
pos.top -= 24;
pos.left -= 24;
// Account for popup size - we can't predict this yet so just estimate
pos.top -= $(dlg).height() / 2;
pos.left -= $(dlg).width() / 2;
// Account for scroll position
pos.top -= $(window).scrollTop();
pos.left -= $(window).scrollLeft();
// Avoid showing too close to the bottom
pos.top = Math.min(pos.top, windowHeight - 300);
pos.left = Math.min(pos.left, $(window).width() - 300);
// Do some boundary checking
pos.top = Math.max(pos.top, 0);
pos.left = Math.max(pos.left, 0);
dlg.style.position = 'fixed';
dlg.style.left = pos.left + 'px';
dlg.style.top = pos.top + 'px';
}
}
return {
open: open,
close: close,
createDialog: createDialog,
positionTo: positionTo
createDialog: createDialog
};
});

View file

@ -32,14 +32,14 @@
"web-component-tester": "^4.0.0",
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
},
"homepage": "https://github.com/polymerelements/iron-icon",
"homepage": "https://github.com/PolymerElements/iron-icon",
"_release": "1.0.8",
"_resolution": {
"type": "version",
"tag": "v1.0.8",
"commit": "f36b38928849ef3853db727faa8c9ef104d611eb"
},
"_source": "git://github.com/polymerelements/iron-icon.git",
"_source": "git://github.com/PolymerElements/iron-icon.git",
"_target": "^1.0.0",
"_originalSource": "polymerelements/iron-icon"
"_originalSource": "PolymerElements/iron-icon"
}

View file

@ -36,7 +36,7 @@
"tag": "v1.2.5",
"commit": "06bd256eacfd70f959c4aed8c03c221f01074c0f"
},
"_source": "git://github.com/polymerelements/iron-selector.git",
"_source": "git://github.com/PolymerElements/iron-selector.git",
"_target": "^1.0.0",
"_originalSource": "polymerelements/iron-selector"
"_originalSource": "PolymerElements/iron-selector"
}

View file

@ -2,15 +2,6 @@
font-size: 15px;
}
.ui-body-b a:visited {
color: #007AFF /*{b-link-visited}*/;
}
.ui-body-b a {
color: #007AFF /*{b-link-color}*/;
font-weight: 500;
}
.ui-body-b select {
-webkit-appearance: none;
}

View file

@ -17,7 +17,7 @@
<div class="readOnlyContent" style="margin-top: 2em;">
<h1>HD Homerun Setup</h1>
<h1>HD Homerun</h1>
<form>
<div>

View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html>
<head>
<title>${TitleLiveTV}</title>
</head>
<body>
<div id="liveTvTunerProviderSatPage" data-role="page" class="page type-interior liveTvSettingsPage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Live%20TV" data-require="scripts/livetvtunerprovider-satip,paper-input">
<div data-role="content">
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="livetvstatus.html" data-role="button" class="ui-btn-active">${TabTuners}</a>
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
<a href="appservices.html?context=livetv" data-role="button">${TabExternalServices}</a>
</div>
<div class="readOnlyContent" style="margin-top: 2em;">
<h1>DVB</h1>
<form>
<div>
<div>
<paper-input class="txtDevicePath" label="${LabelPath}" required="required" readonly></paper-input>
</div>
<br />
<div>
<button type="submit" data-role="none" class="clearButton">
<paper-button raised class="submit block"><iron-icon icon="check"></iron-icon><span>${ButtonSave}</span></paper-button>
</button>
<paper-button raised class="cancel block btnCancel" onclick="history.back();"><iron-icon icon="close"></iron-icon><span>${ButtonCancel}</span></paper-button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -74,7 +74,11 @@
html += '</div>';
html += '</paper-item-body>';
html += '<paper-icon-button icon="refresh" data-tunerid="' + tuner.Id + '" title="' + Globalize.translate('ButtonResetTuner') + '" class="btnResetTuner"></paper-icon-button>';
if (tuner.CanReset) {
html += '<paper-icon-button icon="refresh" data-tunerid="' + tuner.Id + '" title="' + Globalize.translate('ButtonResetTuner') + '" class="btnResetTuner"></paper-icon-button>';
}
html += '</paper-icon-item>';
}
@ -201,7 +205,7 @@
html += '<paper-item-body two-line>';
html += '<a class="clearLink" href="' + href + '">';
html += '<div>';
html += getTunerName(device.Type);
html += device.FriendlyName || getTunerName(device.Type);
html += '</div>';
html += '<div secondary>';
@ -367,6 +371,8 @@
return 'M3U Playlist';
case 'hdhomerun':
return 'HDHomerun';
case 'satip':
return 'DVB';
default:
return 'Unknown';
}
@ -445,6 +451,11 @@
var menuItems = [];
//menuItems.push({
// name: getTunerName('satip'),
// id: 'satip'
//});
menuItems.push({
name: 'HDHomerun',
id: 'hdhomerun'

View file

@ -0,0 +1,84 @@
(function ($, document, window) {
function reload(page, providerId) {
page.querySelector('.txtDevicePath').value = '';
if (providerId) {
ApiClient.getNamedConfiguration("livetv").then(function (config) {
var info = config.TunerHosts.filter(function (i) {
return i.Id == providerId;
})[0];
page.querySelector('.txtDevicePath').value = info.Url || '';
});
}
}
function submitForm(page) {
Dashboard.showLoadingMsg();
var id = getParameterByName('id');
if (id) {
ApiClient.getNamedConfiguration("livetv").then(function (config) {
var info = config.TunerHosts.filter(function (i) {
return i.Id == id;
})[0];
info.Url = page.querySelector('.txtDevicePath').value;
submitTunerInfo(page, info);
});
} else {
var info = {
Type: 'satip',
Url: page.querySelector('.txtDevicePath').value
};
submitTunerInfo(page, info);
}
}
function submitTunerInfo(page, info) {
ApiClient.ajax({
type: "POST",
url: ApiClient.getUrl('LiveTv/TunerHosts'),
data: JSON.stringify(info),
contentType: "application/json"
}).then(function () {
Dashboard.processServerConfigurationUpdateResult();
Dashboard.navigate('livetvstatus.html');
}, function () {
Dashboard.hideLoadingMsg();
Dashboard.alert({
message: Globalize.translate('ErrorSavingTvProvider')
});
});
}
$(document).on('pageinit', "#liveTvTunerProviderSatPage", function () {
var page = this;
$('form', page).on('submit', function () {
submitForm(page);
return false;
});
}).on('pageshow', "#liveTvTunerProviderSatPage", function () {
var providerId = getParameterByName('id');
var page = this;
reload(page, providerId);
});
})(jQuery, document, window);