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

update dialogs

This commit is contained in:
Luke Pulverenti 2016-08-29 03:12:24 -04:00
parent 31449f85de
commit 7acfaee309
15 changed files with 86 additions and 143 deletions

View file

@ -14,12 +14,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.4.193", "version": "1.4.197",
"_release": "1.4.193", "_release": "1.4.197",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.4.193", "tag": "1.4.197",
"commit": "e97de63ae9ed4e9f10fbd27da9de8e8a77ffd3fb" "commit": "253ef4d5fe1a4e7126ea48786342d3cb44c23b47"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.1", "_target": "^1.2.1",

View file

@ -873,7 +873,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
} }
} }
if (showTitle && forceName && overlayText && lines.length == 1) { if ((showTitle || !imgUrl) && forceName && overlayText && lines.length == 1) {
lines = []; lines = [];
} }
@ -1205,6 +1205,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
actionAttribute = ''; actionAttribute = '';
} }
className += ' card-withuserdata';
var positionTicksData = item.UserData && item.UserData.PlaybackPositionTicks ? (' data-positionticks="' + item.UserData.PlaybackPositionTicks + '"') : ''; var positionTicksData = item.UserData && item.UserData.PlaybackPositionTicks ? (' data-positionticks="' + item.UserData.PlaybackPositionTicks + '"') : '';
var collectionIdData = options.collectionId ? (' data-collectionid="' + options.collectionId + '"') : ''; var collectionIdData = options.collectionId ? (' data-collectionid="' + options.collectionId + '"') : '';
var playlistIdData = options.playlistId ? (' data-playlistid="' + options.playlistId + '"') : ''; var playlistIdData = options.playlistId ? (' data-playlistid="' + options.playlistId + '"') : '';
@ -1398,7 +1400,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
function onUserDataChanged(userData) { function onUserDataChanged(userData) {
var cards = document.querySelectorAll('.card[data-id="' + userData.ItemId + '"]'); var cards = document.querySelectorAll('.card-withuserdata[data-id="' + userData.ItemId + '"]');
for (var i = 0, length = cards.length; i < length; i++) { for (var i = 0, length = cards.length; i < length; i++) {
updateUserData(cards[i], userData); updateUserData(cards[i], userData);

View file

@ -200,22 +200,10 @@ define(['dom'], function (dom) {
var offset = getOffset(elem); var offset = getOffset(elem);
var posY = offset.top; offset.right = offset.left + offset.width;
var posX = offset.left; offset.bottom = offset.top + offset.height;
var width = offset.width; return offset;
var height = offset.height;
//var width = elem.offsetWidth;
//var height = elem.offsetHeight;
return {
left: posX,
top: posY,
width: width,
height: height,
right: posX + width,
bottom: posY + height
};
} }
function nav(activeElement, direction) { function nav(activeElement, direction) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -73,6 +73,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir
options.data = options.data || {}; options.data = options.data || {};
options.data.serverId = apiClient.serverInfo().Id; options.data.serverId = apiClient.serverInfo().Id;
options.icon = options.icon || getIconUrl(); options.icon = options.icon || getIconUrl();
options.badge = options.badge || getIconUrl('badge.png');
resetRegistration(); resetRegistration();

View file

@ -47,17 +47,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
this.removeEventListener(event.type, disableOneEvent); this.removeEventListener(event.type, disableOneEvent);
} }
/**
* Check if variable is a number.
*
* @param {Mixed} value
*s
* @return {Boolean}
*/
function isNumber(value) {
return !isNaN(parseFloat(value)) && isFinite(value);
}
/** /**
* Make sure that number is within the limits. * Make sure that number is within the limits.
* *
@ -71,10 +60,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
return number < min ? min : number > max ? max : number; return number < min ? min : number > max ? max : number;
} }
var pluginName = 'sly';
var className = 'Sly';
var namespace = pluginName;
// Other global values // Other global values
var dragMouseEvents = ['mousemove', 'mouseup']; var dragMouseEvents = ['mousemove', 'mouseup'];
var dragTouchEvents = ['touchmove', 'touchend']; var dragTouchEvents = ['touchmove', 'touchend'];
@ -107,7 +92,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
dragSource: null, // Selector or DOM element for catching dragging events. Default is FRAME. dragSource: null, // Selector or DOM element for catching dragging events. Default is FRAME.
mouseDragging: 1, // Enable navigation by dragging the SLIDEE with mouse cursor. mouseDragging: 1, // Enable navigation by dragging the SLIDEE with mouse cursor.
touchDragging: 1, // Enable navigation by dragging the SLIDEE with touch events. touchDragging: 1, // Enable navigation by dragging the SLIDEE with touch events.
releaseSwing: false, // Ease out on dragging swing release.
swingSpeed: 0.2, // Swing synchronization speed, where: 1 = instant, 0 = infinite. swingSpeed: 0.2, // Swing synchronization speed, where: 1 = instant, 0 = infinite.
dragThreshold: 3, // Distance in pixels before Sly recognizes dragging. dragThreshold: 3, // Distance in pixels before Sly recognizes dragging.
intervactive: null, // Selector for special interactive elements. intervactive: null, // Selector for special interactive elements.
@ -168,11 +152,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
cur: 0 cur: 0
}; };
// Items
var rel = {
activeItem: null
};
// Miscellaneous // Miscellaneous
var scrollSource = o.scrollSource ? o.scrollSource : frameElement; var scrollSource = o.scrollSource ? o.scrollSource : frameElement;
var dragSourceElement = o.dragSource ? o.dragSource : frameElement; var dragSourceElement = o.dragSource ? o.dragSource : frameElement;
@ -185,7 +164,7 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
delta: 0, delta: 0,
resetTime: 200 resetTime: 200
}; };
var historyID = 0;
var i, l; var i, l;
// Normalizing frame // Normalizing frame
@ -586,21 +565,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
return arguments[0]; return arguments[0];
} }
/**
* Keeps track of a dragging delta history.
*
* @return {Void}
*/
function draggingHistoryTick() {
// Looking at this, I know what you're thinking :) But as we need only 4 history states, doing it this way
// as opposed to a proper loop is ~25 bytes smaller (when minified with GCC), a lot faster, and doesn't
// generate garbage. The loop version would create 2 new variables on every tick. Unexaptable!
dragging.history[0] = dragging.history[1];
dragging.history[1] = dragging.history[2];
dragging.history[2] = dragging.history[3];
dragging.history[3] = dragging.delta;
}
/** /**
* Initialize continuous movement. * Initialize continuous movement.
* *
@ -649,16 +613,15 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
dragging.init = 0; dragging.init = 0;
dragging.source = event.target; dragging.source = event.target;
dragging.touch = isTouch; dragging.touch = isTouch;
dragging.pointer = isTouch ? event.touches[0] : event; var pointer = isTouch ? event.touches[0] : event;
dragging.initX = dragging.pointer.pageX; dragging.initX = pointer.pageX;
dragging.initY = dragging.pointer.pageY; dragging.initY = pointer.pageY;
dragging.initPos = isSlidee ? pos.cur : hPos.cur; dragging.initPos = isSlidee ? pos.cur : hPos.cur;
dragging.start = +new Date(); dragging.start = +new Date();
dragging.time = 0; dragging.time = 0;
dragging.path = 0; dragging.path = 0;
dragging.delta = 0; dragging.delta = 0;
dragging.locked = 0; dragging.locked = 0;
dragging.history = [0, 0, 0, 0];
dragging.pathToLock = isSlidee ? isTouch ? 30 : 10 : 0; dragging.pathToLock = isSlidee ? isTouch ? 30 : 10 : 0;
// Bind dragging events // Bind dragging events
@ -680,12 +643,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
if (isSlidee) { if (isSlidee) {
slideeElement.classList.add(o.draggedClass); slideeElement.classList.add(o.draggedClass);
} }
// Keep track of a dragging path history. This is later used in the
// dragging release swing calculation when dragging SLIDEE.
if (isSlidee) {
historyID = setInterval(draggingHistoryTick, 10);
}
} }
/** /**
@ -697,9 +654,9 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
*/ */
function dragHandler(event) { function dragHandler(event) {
dragging.released = event.type === 'mouseup' || event.type === 'touchend'; dragging.released = event.type === 'mouseup' || event.type === 'touchend';
dragging.pointer = dragging.touch ? event[dragging.released ? 'changedTouches' : 'touches'][0] : event; var pointer = dragging.touch ? event[dragging.released ? 'changedTouches' : 'touches'][0] : event;
dragging.pathX = dragging.pointer.pageX - dragging.initX; dragging.pathX = pointer.pageX - dragging.initX;
dragging.pathY = dragging.pointer.pageY - dragging.initY; dragging.pathY = pointer.pageY - dragging.initY;
dragging.path = sqrt(pow(dragging.pathX, 2) + pow(dragging.pathY, 2)); dragging.path = sqrt(pow(dragging.pathX, 2) + pow(dragging.pathY, 2));
dragging.delta = o.horizontal ? dragging.pathX : dragging.pathY; dragging.delta = o.horizontal ? dragging.pathX : dragging.pathY;
@ -734,13 +691,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
// Cancel dragging on release // Cancel dragging on release
if (dragging.released) { if (dragging.released) {
dragEnd(); dragEnd();
// Adjust path with a swing on mouse release
if (o.releaseSwing && dragging.slidee) {
dragging.swing = (dragging.delta - dragging.history[0]) / 40 * 300;
dragging.delta += dragging.swing;
dragging.tweese = abs(dragging.swing) > 10;
}
} }
slideTo(dragging.slidee ? round(dragging.initPos - dragging.delta) : handleToSlidee(dragging.initPos + dragging.delta)); slideTo(dragging.slidee ? round(dragging.initPos - dragging.delta) : handleToSlidee(dragging.initPos + dragging.delta));
@ -752,7 +702,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
* @return {Void} * @return {Void}
*/ */
function dragEnd() { function dragEnd() {
clearInterval(historyID);
dragging.released = true; dragging.released = true;
if (dragging.touch) { if (dragging.touch) {
@ -825,8 +774,6 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
*/ */
function scrollHandler(event) { function scrollHandler(event) {
event[namespace] = self;
// Ignore if there is no scrolling to be done // Ignore if there is no scrolling to be done
if (!o.scrollBy || pos.start === pos.end) { if (!o.scrollBy || pos.start === pos.end) {
return; return;
@ -862,8 +809,7 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
self.destroy = function () { self.destroy = function () {
dom.removeEventListener(window, 'resize', onResize, { dom.removeEventListener(window, 'resize', onResize, {
passive: true, passive: true
capture: true
}); });
// Reset native FRAME element scroll // Reset native FRAME element scroll
@ -946,8 +892,7 @@ define(['browser', 'layoutManager', 'dom', 'scrollStyles'], function (browser, l
if (!o.scrollWidth) { if (!o.scrollWidth) {
dom.addEventListener(window, 'resize', onResize, { dom.addEventListener(window, 'resize', onResize, {
passive: true, passive: true
capture: true
}); });
} }

View file

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

View file

@ -32,14 +32,14 @@
"iron-component-page": "polymerElements/iron-component-page#^1.1.6" "iron-component-page": "polymerElements/iron-component-page#^1.1.6"
}, },
"private": true, "private": true,
"homepage": "https://github.com/polymer/polymer", "homepage": "https://github.com/Polymer/polymer",
"_release": "1.6.1", "_release": "1.6.1",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "v1.6.1", "tag": "v1.6.1",
"commit": "1f197d9d7874b1e5808b2a5c26f34446a7d912fc" "commit": "1f197d9d7874b1e5808b2a5c26f34446a7d912fc"
}, },
"_source": "git://github.com/polymer/polymer.git", "_source": "git://github.com/Polymer/polymer.git",
"_target": "^1.1.0", "_target": "^1.2.0",
"_originalSource": "polymer/polymer" "_originalSource": "Polymer/polymer"
} }

View file

@ -1,4 +1,4 @@
define(['dialogHelper', 'paper-checkbox', 'emby-input', 'emby-button', 'paper-icon-button-light'], function (dialogHelper) { define(['dialogHelper', 'paper-checkbox', 'emby-input', 'emby-button', 'paper-icon-button-light', 'formDialogStyle'], function (dialogHelper) {
var extractedName; var extractedName;
var extractedYear; var extractedYear;

View file

@ -1,48 +1,50 @@
<div class="formDialogHeader" style="margin:0 0 2em;"> <div class="formDialogHeader">
<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"> <button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><i class="md-icon">&#xE5C4;</i></button>
<i class="md-icon">&#xE5C4;</i>
</button>
<div class="formDialogHeaderTitle"> <div class="formDialogHeaderTitle">
</div> </div>
</div> </div>
<form class="episodeCorrectionForm" style="margin:auto;"> <div class="formDialogContent smoothScrollY">
<div class="dialogContentInner dialog-content-centered">
<form class="episodeCorrectionForm">
<p><span class="inputFile"></span></p> <p><span class="inputFile"></span></p>
<div style="margin: 1em 0 1em;"> <div style="margin: 1em 0 1em;">
<div style="width:85%;display:inline-block;"> <div style="width:85%;display:inline-block;">
<label for="selectSeries" class="selectLabel">${LabelSeries}</label> <label for="selectSeries" class="selectLabel">${LabelSeries}</label>
<select id="selectSeries" data-mini="true" required="required"></select> <select id="selectSeries" data-mini="true" required="required"></select>
</div> </div>
<button type="button" is="paper-icon-button-light" id="btnNewSeries" class="autoSize" title="${ButtonNew}"> <button type="button" is="paper-icon-button-light" id="btnNewSeries" class="autoSize" title="${ButtonNew}">
<i class="md-icon">add</i> <i class="md-icon">add</i>
</button> </button>
</div>
<div class="fldSelectSeriesFolder hide" style="margin: 1em 0 1em;">
<div style="width:100%;display:inline-block;">
<label for="selectSeriesFolder" class="selectLabel">Series Root Folder</label>
<select id="selectSeriesFolder" data-mini="true"></select>
</div>
</div>
<div class="inputContainer">
<input is="emby-input" id="txtSeason" type="number" pattern="[0-9]*" required min="0" label="${LabelSeasonNumber}" />
</div>
<div class="inputContainer">
<input is="emby-input" id="txtEpisode" type="number" pattern="[0-9]*" required min="0" label="${LabelEpisodeNumber}" />
</div>
<div class="inputContainer">
<input is="emby-input" id="txtEndingEpisode" type="number" pattern="[0-9]*" min="0" label="${LabelEndingEpisodeNumber}" />
<div class="fieldDescription">${LabelEndingEpisodeNumberHelp}</div>
</div>
<div class="fldRemember hide">
<br />
<paper-checkbox type="checkbox" id="chkRememberCorrection">${OptionRememberOrganizeCorrection} <span class="extractedName" style="font-weight: bold; font-style: italic" /></paper-checkbox>
</div>
<br />
<button is="emby-button" type="submit" class="raised submit block">
<i class="md-icon">check</i>
<span>${ButtonOk}</span>
</button>
<input id="hfResultId" type="hidden" />
</form>
</div> </div>
<div class="fldSelectSeriesFolder hide" style="margin: 1em 0 1em;"> </div>
<div style="width:100%;display:inline-block;">
<label for="selectSeriesFolder" class="selectLabel">Series Root Folder</label>
<select id="selectSeriesFolder" data-mini="true"></select>
</div>
</div>
<div class="inputContainer">
<input is="emby-input" id="txtSeason" type="number" pattern="[0-9]*" required min="0" label="${LabelSeasonNumber}"/>
</div>
<div class="inputContainer">
<input is="emby-input" id="txtEpisode" type="number" pattern="[0-9]*" required min="0" label="${LabelEpisodeNumber}"/>
</div>
<div class="inputContainer">
<input is="emby-input" id="txtEndingEpisode" type="number" pattern="[0-9]*" min="0" label="${LabelEndingEpisodeNumber}"/>
<div class="fieldDescription">${LabelEndingEpisodeNumberHelp}</div>
</div>
<div class="fldRemember hide">
<br />
<paper-checkbox type="checkbox" id="chkRememberCorrection">${OptionRememberOrganizeCorrection} <span class="extractedName" style="font-weight: bold; font-style: italic" /></paper-checkbox>
</div>
<br />
<button is="emby-button" type="submit" class="raised submit block">
<i class="md-icon">check</i>
<span>${ButtonOk}</span>
</button>
<input id="hfResultId" type="hidden" />
</form>

View file

@ -144,6 +144,10 @@
function onDialogClosed() { function onDialogClosed() {
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
// hardcoding this to true for now until libraryOptions are taken into account
hasChanges = true;
currentDeferred.resolveWith(null, [hasChanges]); currentDeferred.resolveWith(null, [hasChanges]);
} }

View file

@ -303,7 +303,9 @@
} }
} }
else if (item.IsFolder) { else if (item.IsFolder) {
return id ? "itemlist.html?parentId=" + id : "#"; if (item.Type != "BoxSet") {
return id ? "itemlist.html?parentId=" + id : "#";
}
} }
if (item.Type == 'CollectionFolder') { if (item.Type == 'CollectionFolder') {

View file

@ -79,7 +79,6 @@
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
context: 'movies', context: 'movies',
lazy: true,
overlayPlayButton: true overlayPlayButton: true
}); });
} }
@ -90,7 +89,6 @@
shape: "backdrop", shape: "backdrop",
preferThumb: true, preferThumb: true,
context: 'movies', context: 'movies',
lazy: true,
cardLayout: true, cardLayout: true,
showTitle: true, showTitle: true,
showYear: true showYear: true
@ -102,8 +100,7 @@
items: result.Items, items: result.Items,
shape: "banner", shape: "banner",
preferBanner: true, preferBanner: true,
context: 'movies', context: 'movies'
lazy: true
}); });
} }
else if (viewStyle == "List") { else if (viewStyle == "List") {
@ -122,7 +119,6 @@
context: 'movies', context: 'movies',
showTitle: true, showTitle: true,
showYear: true, showYear: true,
lazy: true,
cardLayout: true cardLayout: true
}); });
} }
@ -134,7 +130,6 @@
shape: "portrait", shape: "portrait",
context: 'movies', context: 'movies',
centerText: true, centerText: true,
lazy: true,
overlayPlayButton: true overlayPlayButton: true
}); });
} }

View file

@ -1229,7 +1229,7 @@ var AppInfo = {};
inputManager: embyWebComponentsBowerPath + "/inputmanager", inputManager: embyWebComponentsBowerPath + "/inputmanager",
qualityoptions: embyWebComponentsBowerPath + "/qualityoptions", qualityoptions: embyWebComponentsBowerPath + "/qualityoptions",
hammer: bowerPath + "/hammerjs/hammer.min", hammer: bowerPath + "/hammerjs/hammer.min",
pageJs: embyWebComponentsBowerPath + '/page.js/page', pageJs: embyWebComponentsBowerPath + '/pagejs/page',
focusManager: embyWebComponentsBowerPath + "/focusmanager", focusManager: embyWebComponentsBowerPath + "/focusmanager",
datetime: embyWebComponentsBowerPath + "/datetime", datetime: embyWebComponentsBowerPath + "/datetime",
globalize: embyWebComponentsBowerPath + "/globalize", globalize: embyWebComponentsBowerPath + "/globalize",
@ -2799,8 +2799,12 @@ var AppInfo = {};
return navigator.serviceWorker.ready; return navigator.serviceWorker.ready;
}).then(function (reg) { }).then(function (reg) {
if (!reg.sync) {
return Promise.resovle();
}
// https://github.com/WICG/BackgroundSync/blob/master/explainer.md // https://github.com/WICG/BackgroundSync/blob/master/explainer.md
return reg.sync.register('emby-sync').then(function() { return reg.sync.register('emby-sync').then(function () {
window.SyncRegistered = Dashboard.isConnectMode(); window.SyncRegistered = Dashboard.isConnectMode();
}); });
}); });