mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Beautified all js in web dashboard
This commit is contained in:
parent
5895f209e7
commit
6bfd795635
346 changed files with 72978 additions and 375 deletions
|
@ -1 +1,74 @@
|
|||
define(["appSettings","pluginManager"],function(appSettings,pluginManager){"use strict";function addPackage(packageManager,pkg){packageManager.packagesList=packageManager.packagesList.filter(function(p){return p.name!==pkg.name}),packageManager.packagesList.push(pkg)}function removeUrl(url){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]");manifestUrls=manifestUrls.filter(function(i){return i!==url}),appSettings.set(settingsKey,JSON.stringify(manifestUrls))}function loadPackage(packageManager,url,throwError){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest,originalUrl=url;url+=-1===url.indexOf("?")?"?":"&",url+="t="+(new Date).getTime(),xhr.open("GET",url,!0);var onError=function(){!0===throwError?reject():(removeUrl(originalUrl),resolve())};xhr.onload=function(e){if(this.status<400){var pkg=JSON.parse(this.response);pkg.url=originalUrl,addPackage(packageManager,pkg);var plugins=pkg.plugins||[];pkg.plugin&&plugins.push(pkg.plugin);var promises=plugins.map(function(pluginUrl){return pluginManager.loadPlugin(packageManager.mapPath(pkg,pluginUrl))});Promise.all(promises).then(resolve,resolve)}else onError()},xhr.onerror=onError,xhr.send()})}function PackageManager(){this.packagesList=[]}var settingsKey="installedpackages1";return PackageManager.prototype.init=function(){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]"),instance=this;return Promise.all(manifestUrls.map(function(u){return loadPackage(instance,u)})).then(function(){return Promise.resolve()},function(){return Promise.resolve()})},PackageManager.prototype.packages=function(){return this.packagesList.slice(0)},PackageManager.prototype.install=function(url){return loadPackage(this,url,!0).then(function(pkg){var manifestUrls=JSON.parse(appSettings.get(settingsKey)||"[]");return-1===manifestUrls.indexOf(url)&&(manifestUrls.push(url),appSettings.set(settingsKey,JSON.stringify(manifestUrls))),pkg})},PackageManager.prototype.uninstall=function(name){var pkg=this.packagesList.filter(function(p){return p.name===name})[0];return pkg&&(this.packagesList=this.packagesList.filter(function(p){return p.name!==name}),removeUrl(pkg.url)),Promise.resolve()},PackageManager.prototype.mapPath=function(pkg,pluginUrl){var urlLower=pluginUrl.toLowerCase();if(0===urlLower.indexOf("http:")||0===urlLower.indexOf("https:")||0===urlLower.indexOf("file:"))return pluginUrl;var packageUrl=pkg.url;return packageUrl=packageUrl.substring(0,packageUrl.lastIndexOf("/")),packageUrl+="/",packageUrl+=pluginUrl},new PackageManager});
|
||||
define(["appSettings", "pluginManager"], function(appSettings, pluginManager) {
|
||||
"use strict";
|
||||
|
||||
function addPackage(packageManager, pkg) {
|
||||
packageManager.packagesList = packageManager.packagesList.filter(function(p) {
|
||||
return p.name !== pkg.name
|
||||
}), packageManager.packagesList.push(pkg)
|
||||
}
|
||||
|
||||
function removeUrl(url) {
|
||||
var manifestUrls = JSON.parse(appSettings.get(settingsKey) || "[]");
|
||||
manifestUrls = manifestUrls.filter(function(i) {
|
||||
return i !== url
|
||||
}), appSettings.set(settingsKey, JSON.stringify(manifestUrls))
|
||||
}
|
||||
|
||||
function loadPackage(packageManager, url, throwError) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var xhr = new XMLHttpRequest,
|
||||
originalUrl = url;
|
||||
url += -1 === url.indexOf("?") ? "?" : "&", url += "t=" + (new Date).getTime(), xhr.open("GET", url, !0);
|
||||
var onError = function() {
|
||||
!0 === throwError ? reject() : (removeUrl(originalUrl), resolve())
|
||||
};
|
||||
xhr.onload = function(e) {
|
||||
if (this.status < 400) {
|
||||
var pkg = JSON.parse(this.response);
|
||||
pkg.url = originalUrl, addPackage(packageManager, pkg);
|
||||
var plugins = pkg.plugins || [];
|
||||
pkg.plugin && plugins.push(pkg.plugin);
|
||||
var promises = plugins.map(function(pluginUrl) {
|
||||
return pluginManager.loadPlugin(packageManager.mapPath(pkg, pluginUrl))
|
||||
});
|
||||
Promise.all(promises).then(resolve, resolve)
|
||||
} else onError()
|
||||
}, xhr.onerror = onError, xhr.send()
|
||||
})
|
||||
}
|
||||
|
||||
function PackageManager() {
|
||||
this.packagesList = []
|
||||
}
|
||||
var settingsKey = "installedpackages1";
|
||||
return PackageManager.prototype.init = function() {
|
||||
var manifestUrls = JSON.parse(appSettings.get(settingsKey) || "[]"),
|
||||
instance = this;
|
||||
return Promise.all(manifestUrls.map(function(u) {
|
||||
return loadPackage(instance, u)
|
||||
})).then(function() {
|
||||
return Promise.resolve()
|
||||
}, function() {
|
||||
return Promise.resolve()
|
||||
})
|
||||
}, PackageManager.prototype.packages = function() {
|
||||
return this.packagesList.slice(0)
|
||||
}, PackageManager.prototype.install = function(url) {
|
||||
return loadPackage(this, url, !0).then(function(pkg) {
|
||||
var manifestUrls = JSON.parse(appSettings.get(settingsKey) || "[]");
|
||||
return -1 === manifestUrls.indexOf(url) && (manifestUrls.push(url), appSettings.set(settingsKey, JSON.stringify(manifestUrls))), pkg
|
||||
})
|
||||
}, PackageManager.prototype.uninstall = function(name) {
|
||||
var pkg = this.packagesList.filter(function(p) {
|
||||
return p.name === name
|
||||
})[0];
|
||||
return pkg && (this.packagesList = this.packagesList.filter(function(p) {
|
||||
return p.name !== name
|
||||
}), removeUrl(pkg.url)), Promise.resolve()
|
||||
}, PackageManager.prototype.mapPath = function(pkg, pluginUrl) {
|
||||
var urlLower = pluginUrl.toLowerCase();
|
||||
if (0 === urlLower.indexOf("http:") || 0 === urlLower.indexOf("https:") || 0 === urlLower.indexOf("file:")) return pluginUrl;
|
||||
var packageUrl = pkg.url;
|
||||
return packageUrl = packageUrl.substring(0, packageUrl.lastIndexOf("/")), packageUrl += "/", packageUrl += pluginUrl
|
||||
}, new PackageManager
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue