1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
This commit is contained in:
Luke Pulverenti 2017-01-27 18:07:14 -05:00
parent 82bcca376f
commit 8a6884abef
494 changed files with 256 additions and 120180 deletions

View file

@ -1,206 +1 @@
define(['connectionManager', 'playbackManager', 'events', 'inputManager', 'focusManager', 'embyRouter'], function (connectionManager, playbackManager, events, inputManager, focusManager, embyRouter) {
'use strict';
function notifyApp() {
inputManager.notify();
}
function displayMessage(cmd) {
var args = cmd.Arguments;
if (args.TimeoutMs) {
require(['toast'], function (toast) {
toast({ title: args.Header, text: args.Text });
});
}
else {
require(['alert'], function (alert) {
alert({ title: args.Header, text: args.Text });
});
}
}
function displayContent(cmd, apiClient) {
apiClient.getItem(apiClient.getCurrentUserId(), cmd.ItemId).then(function (item) {
embyRouter.showItem(item);
});
}
function processGeneralCommand(cmd, apiClient) {
// Full list
// https://github.com/MediaBrowser/MediaBrowser/blob/master/MediaBrowser.Model/Session/GeneralCommand.cs#L23
//console.log('Received command: ' + cmd.Name);
switch (cmd.Name) {
case 'Select':
inputManager.trigger('select');
return;
case 'Back':
inputManager.trigger('back');
return;
case 'MoveUp':
inputManager.trigger('up');
return;
case 'MoveDown':
inputManager.trigger('down');
return;
case 'MoveLeft':
inputManager.trigger('left');
return;
case 'MoveRight':
inputManager.trigger('right');
return;
case 'PageUp':
inputManager.trigger('pageup');
return;
case 'PageDown':
inputManager.trigger('pagedown');
return;
case 'SetRepeatMode':
playbackManager.setRepeatMode(cmd.Arguments.RepeatMode);
break;
case 'VolumeUp':
inputManager.trigger('volumeup');
return;
case 'VolumeDown':
inputManager.trigger('volumedown');
return;
case 'ChannelUp':
inputManager.trigger('channelup');
return;
case 'ChannelDown':
inputManager.trigger('channeldown');
return;
case 'Mute':
inputManager.trigger('mute');
return;
case 'Unmute':
inputManager.trigger('unmute');
return;
case 'ToggleMute':
inputManager.trigger('togglemute');
return;
case 'SetVolume':
notifyApp();
playbackManager.setVolume(cmd.Arguments.Volume);
break;
case 'SetAudioStreamIndex':
notifyApp();
playbackManager.setAudioStreamIndex(parseInt(cmd.Arguments.Index));
break;
case 'SetSubtitleStreamIndex':
notifyApp();
playbackManager.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index));
break;
case 'ToggleFullscreen':
inputManager.trigger('togglefullscreen');
return;
case 'GoHome':
inputManager.trigger('home');
return;
case 'GoToSettings':
inputManager.trigger('settings');
return;
case 'DisplayContent':
displayContent(cmd, apiClient);
break;
case 'GoToSearch':
inputManager.trigger('search');
return;
case 'DisplayMessage':
displayMessage(cmd);
break;
case 'ToggleOsd':
// todo
break;
case 'ToggleContextMenu':
// todo
break;
case 'TakeScreenShot':
// todo
break;
case 'SendKey':
// todo
break;
case 'SendString':
// todo
focusManager.sendText(cmd.Arguments.String);
break;
default:
console.log('processGeneralCommand does not recognize: ' + cmd.Name);
break;
}
notifyApp();
}
function onWebSocketMessageReceived(e, msg) {
var apiClient = this;
if (msg.MessageType === "Play") {
notifyApp();
var serverId = apiClient.serverInfo().Id;
if (msg.Data.PlayCommand === "PlayNext") {
playbackManager.queueNext({ ids: msg.Data.ItemIds, serverId: serverId });
}
else if (msg.Data.PlayCommand === "PlayLast") {
playbackManager.queue({ ids: msg.Data.ItemIds, serverId: serverId });
}
else {
playbackManager.play({ ids: msg.Data.ItemIds, startPositionTicks: msg.Data.StartPositionTicks, serverId: serverId });
}
}
else if (msg.MessageType === "Playstate") {
if (msg.Data.Command === 'Stop') {
inputManager.trigger('stop');
}
else if (msg.Data.Command === 'Pause') {
inputManager.trigger('pause');
}
else if (msg.Data.Command === 'Unpause') {
inputManager.trigger('play');
}
else if (msg.Data.Command === 'Seek') {
playbackManager.seek(msg.Data.SeekPositionTicks);
}
else if (msg.Data.Command === 'NextTrack') {
inputManager.trigger('next');
}
else if (msg.Data.Command === 'PreviousTrack') {
inputManager.trigger('previous');
} else {
notifyApp();
}
}
else if (msg.MessageType === "GeneralCommand") {
var cmd = msg.Data;
processGeneralCommand(cmd, apiClient);
}
}
function bindEvents(apiClient) {
events.off(apiClient, "websocketmessage", onWebSocketMessageReceived);
events.on(apiClient, "websocketmessage", onWebSocketMessageReceived);
}
connectionManager.getApiClients().forEach(bindEvents);
events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) {
bindEvents(newApiClient);
});
});
define(["connectionManager","playbackManager","events","inputManager","focusManager","embyRouter"],function(connectionManager,playbackManager,events,inputManager,focusManager,embyRouter){"use strict";function notifyApp(){inputManager.notify()}function displayMessage(cmd){var args=cmd.Arguments;args.TimeoutMs?require(["toast"],function(toast){toast({title:args.Header,text:args.Text})}):require(["alert"],function(alert){alert({title:args.Header,text:args.Text})})}function displayContent(cmd,apiClient){apiClient.getItem(apiClient.getCurrentUserId(),cmd.ItemId).then(function(item){embyRouter.showItem(item)})}function processGeneralCommand(cmd,apiClient){switch(cmd.Name){case"Select":return void inputManager.trigger("select");case"Back":return void inputManager.trigger("back");case"MoveUp":return void inputManager.trigger("up");case"MoveDown":return void inputManager.trigger("down");case"MoveLeft":return void inputManager.trigger("left");case"MoveRight":return void inputManager.trigger("right");case"PageUp":return void inputManager.trigger("pageup");case"PageDown":return void inputManager.trigger("pagedown");case"SetRepeatMode":playbackManager.setRepeatMode(cmd.Arguments.RepeatMode);break;case"VolumeUp":return void inputManager.trigger("volumeup");case"VolumeDown":return void inputManager.trigger("volumedown");case"ChannelUp":return void inputManager.trigger("channelup");case"ChannelDown":return void inputManager.trigger("channeldown");case"Mute":return void inputManager.trigger("mute");case"Unmute":return void inputManager.trigger("unmute");case"ToggleMute":return void inputManager.trigger("togglemute");case"SetVolume":notifyApp(),playbackManager.setVolume(cmd.Arguments.Volume);break;case"SetAudioStreamIndex":notifyApp(),playbackManager.setAudioStreamIndex(parseInt(cmd.Arguments.Index));break;case"SetSubtitleStreamIndex":notifyApp(),playbackManager.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index));break;case"ToggleFullscreen":return void inputManager.trigger("togglefullscreen");case"GoHome":return void inputManager.trigger("home");case"GoToSettings":return void inputManager.trigger("settings");case"DisplayContent":displayContent(cmd,apiClient);break;case"GoToSearch":return void inputManager.trigger("search");case"DisplayMessage":displayMessage(cmd);break;case"ToggleOsd":break;case"ToggleContextMenu":break;case"TakeScreenShot":break;case"SendKey":break;case"SendString":focusManager.sendText(cmd.Arguments.String);break;default:console.log("processGeneralCommand does not recognize: "+cmd.Name)}notifyApp()}function onWebSocketMessageReceived(e,msg){var apiClient=this;if("Play"===msg.MessageType){notifyApp();var serverId=apiClient.serverInfo().Id;"PlayNext"===msg.Data.PlayCommand?playbackManager.queueNext({ids:msg.Data.ItemIds,serverId:serverId}):"PlayLast"===msg.Data.PlayCommand?playbackManager.queue({ids:msg.Data.ItemIds,serverId:serverId}):playbackManager.play({ids:msg.Data.ItemIds,startPositionTicks:msg.Data.StartPositionTicks,serverId:serverId})}else if("Playstate"===msg.MessageType)"Stop"===msg.Data.Command?inputManager.trigger("stop"):"Pause"===msg.Data.Command?inputManager.trigger("pause"):"Unpause"===msg.Data.Command?inputManager.trigger("play"):"Seek"===msg.Data.Command?playbackManager.seek(msg.Data.SeekPositionTicks):"NextTrack"===msg.Data.Command?inputManager.trigger("next"):"PreviousTrack"===msg.Data.Command?inputManager.trigger("previous"):notifyApp();else if("GeneralCommand"===msg.MessageType){var cmd=msg.Data;processGeneralCommand(cmd,apiClient)}}function bindEvents(apiClient){events.off(apiClient,"websocketmessage",onWebSocketMessageReceived),events.on(apiClient,"websocketmessage",onWebSocketMessageReceived)}connectionManager.getApiClients().forEach(bindEvents),events.on(connectionManager,"apiclientcreated",function(e,newApiClient){bindEvents(newApiClient)})});

File diff suppressed because one or more lines are too long

View file

@ -1,113 +1 @@
define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'dom'], function (inputmanager, focusManager, browser, layoutManager, events, dom) {
'use strict';
var self = {};
var lastMouseInputTime = new Date().getTime();
var isMouseIdle;
function mouseIdleTime() {
return new Date().getTime() - lastMouseInputTime;
}
function notifyApp() {
inputmanager.notifyMouseMove();
}
var lastMouseMoveData;
dom.addEventListener(document, 'mousemove', function (e) {
var eventX = e.screenX;
var eventY = e.screenY;
// if coord don't exist how could it move
if (typeof eventX === "undefined" && typeof eventY === "undefined") {
return;
}
var obj = lastMouseMoveData;
if (!obj) {
lastMouseMoveData = {
x: eventX,
y: eventY
};
return;
}
// if coord are same, it didn't move
if (Math.abs(eventX - obj.x) < 10 && Math.abs(eventY - obj.y) < 10) {
return;
}
obj.x = eventX;
obj.y = eventY;
lastMouseInputTime = new Date().getTime();
notifyApp();
if (isMouseIdle) {
isMouseIdle = false;
document.body.classList.remove('mouseIdle');
events.trigger(self, 'mouseactive');
}
}, {
passive: true
});
function onMouseEnter(e) {
var parent = focusManager.focusableParent(e.target);
if (parent) {
focusManager.focus(e.target);
}
}
function enableFocusWithMouse() {
if (!layoutManager.tv) {
return false;
}
if (browser.xboxOne) {
return true;
}
if (browser.tv) {
return true;
}
return false;
}
function initMouseFocus() {
dom.removeEventListener(document, 'mouseenter', onMouseEnter, {
capture: true,
passive: true
});
if (enableFocusWithMouse()) {
dom.addEventListener(document, 'mouseenter', onMouseEnter, {
capture: true,
passive: true
});
}
}
initMouseFocus();
events.on(layoutManager, 'modechange', initMouseFocus);
setInterval(function () {
if (mouseIdleTime() >= 5000) {
isMouseIdle = true;
document.body.classList.add('mouseIdle');
events.trigger(self, 'mouseidle');
}
}, 5000);
return self;
});
define(["inputManager","focusManager","browser","layoutManager","events","dom"],function(inputmanager,focusManager,browser,layoutManager,events,dom){"use strict";function mouseIdleTime(){return(new Date).getTime()-lastMouseInputTime}function notifyApp(){inputmanager.notifyMouseMove()}function onMouseEnter(e){var parent=focusManager.focusableParent(e.target);parent&&focusManager.focus(e.target)}function enableFocusWithMouse(){return!!layoutManager.tv&&(!!browser.xboxOne||!!browser.tv)}function initMouseFocus(){dom.removeEventListener(document,"mouseenter",onMouseEnter,{capture:!0,passive:!0}),enableFocusWithMouse()&&dom.addEventListener(document,"mouseenter",onMouseEnter,{capture:!0,passive:!0})}var isMouseIdle,lastMouseMoveData,self={},lastMouseInputTime=(new Date).getTime();return dom.addEventListener(document,"mousemove",function(e){var eventX=e.screenX,eventY=e.screenY;if("undefined"!=typeof eventX||"undefined"!=typeof eventY){var obj=lastMouseMoveData;return obj?void(Math.abs(eventX-obj.x)<10&&Math.abs(eventY-obj.y)<10||(obj.x=eventX,obj.y=eventY,lastMouseInputTime=(new Date).getTime(),notifyApp(),isMouseIdle&&(isMouseIdle=!1,document.body.classList.remove("mouseIdle"),events.trigger(self,"mouseactive")))):void(lastMouseMoveData={x:eventX,y:eventY})}},{passive:!0}),initMouseFocus(),events.on(layoutManager,"modechange",initMouseFocus),setInterval(function(){mouseIdleTime()>=5e3&&(isMouseIdle=!0,document.body.classList.add("mouseIdle"),events.trigger(self,"mouseidle"))},5e3),self});