update naming project
This commit is contained in:
parent
4e71751d0f
commit
5623b7c147
14 changed files with 520 additions and 179 deletions
10
dashboard-ui/thirdparty/browser.js
vendored
10
dashboard-ui/thirdparty/browser.js
vendored
|
@ -907,7 +907,7 @@
|
|||
ua = ua.toLowerCase();
|
||||
|
||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(safari)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(msie) ([\w.]+)/.exec(ua) ||
|
||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||
|
@ -920,7 +920,7 @@
|
|||
|
||||
var browser = match[1] || "";
|
||||
|
||||
if (ua.indexOf("like gecko") != -1 && ua.indexOf('webkit') == -1 && ua.indexOf('opera') == -1) {
|
||||
if (ua.indexOf("like gecko") != -1 && ua.indexOf('webkit') == -1 && ua.indexOf('opera') == -1 && ua.indexOf('chrome') == -1 && ua.indexOf('safari') == -1) {
|
||||
browser = "msie";
|
||||
}
|
||||
|
||||
|
@ -945,16 +945,14 @@
|
|||
}
|
||||
|
||||
// Chrome is Webkit, but Webkit is also Safari.
|
||||
if (browser.chrome) {
|
||||
if (browser.chrome || $.browser.safari) {
|
||||
browser.webkit = true;
|
||||
} else if (browser.webkit) {
|
||||
browser.safari = true;
|
||||
}
|
||||
|
||||
var md = new MobileDetect(userAgent);
|
||||
|
||||
browser.mobile = md.mobile();
|
||||
|
||||
|
||||
if (browser.msie && !browser.mobile && userAgent.toLowerCase().indexOf("xbox") != -1) {
|
||||
browser.tv = true;
|
||||
}
|
||||
|
|
297
dashboard-ui/thirdparty/jquery.unveil-custom.js
vendored
297
dashboard-ui/thirdparty/jquery.unveil-custom.js
vendored
|
@ -8,7 +8,9 @@
|
|||
* https://github.com/luis-almeida
|
||||
*/
|
||||
|
||||
; (function ($) {
|
||||
(function ($) {
|
||||
|
||||
var unveilId = 0;
|
||||
|
||||
$.fn.unveil = function (threshold, callback) {
|
||||
|
||||
|
@ -18,18 +20,14 @@
|
|||
images = this,
|
||||
loaded;
|
||||
|
||||
unveilId++;
|
||||
var eventNamespace = 'unveil' + unveilId;
|
||||
|
||||
this.one("unveil", function () {
|
||||
var elem = this;
|
||||
var elemType = elem.tagName;
|
||||
var source = elem.getAttribute(attrib);
|
||||
if (source) {
|
||||
if (elemType === "DIV") {
|
||||
|
||||
elem.style.backgroundImage = "url('" + source + "')";
|
||||
|
||||
} else {
|
||||
elem.setAttribute("src", source);
|
||||
}
|
||||
ImageStore.setImageInto(elem, source);
|
||||
elem.setAttribute("data-src", '');
|
||||
}
|
||||
});
|
||||
|
@ -37,8 +35,8 @@
|
|||
function unveil() {
|
||||
var inview = images.filter(function () {
|
||||
var $e = $(this);
|
||||
if ($e.is(":hidden")) return;
|
||||
|
||||
if ($e.is(":hidden")) return;
|
||||
var wt = $w.scrollTop(),
|
||||
wb = wt + $w.height(),
|
||||
et = $e.offset().top,
|
||||
|
@ -49,10 +47,15 @@
|
|||
|
||||
loaded = inview.trigger("unveil");
|
||||
images = images.not(loaded);
|
||||
|
||||
if (!images.length) {
|
||||
$w.off('scroll.' + eventNamespace);
|
||||
$w.off('resize.' + eventNamespace);
|
||||
}
|
||||
}
|
||||
|
||||
$w.on('scroll.unveil', unveil);
|
||||
$w.on('resize.unveil', unveil);
|
||||
$w.on('scroll.' + eventNamespace, unveil);
|
||||
$w.on('resize.' + eventNamespace, unveil);
|
||||
|
||||
unveil();
|
||||
|
||||
|
@ -62,8 +65,274 @@
|
|||
|
||||
$.fn.lazyChildren = function () {
|
||||
|
||||
$(".lazy", this).unveil(0);
|
||||
var lazyItems = $(".lazy", this);
|
||||
|
||||
if (lazyItems.length) {
|
||||
lazyItems.unveil(0);
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
})(window.jQuery || window.Zepto);
|
||||
$.fn.lazyImage = function (url) {
|
||||
|
||||
return this.attr('data-src', url).unveil(0);
|
||||
};
|
||||
|
||||
})(window.jQuery || window.Zepto);
|
||||
|
||||
(function () {
|
||||
|
||||
// IndexedDB
|
||||
var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.OIndexedDB || window.msIndexedDB,
|
||||
dbVersion = 1.0;
|
||||
|
||||
var dbName = "emby3";
|
||||
var imagesStoreName = "images";
|
||||
|
||||
function createObjectStore(dataBase) {
|
||||
// Create an objectStore
|
||||
console.log("Creating objectStore");
|
||||
dataBase.createObjectStore(imagesStoreName);
|
||||
}
|
||||
|
||||
function openDb() {
|
||||
|
||||
var deferred = $.Deferred();
|
||||
|
||||
// Create/open database
|
||||
var request = indexedDB.open(dbName, dbVersion);
|
||||
|
||||
request.onerror = function (event) {
|
||||
|
||||
console.log("Error creating/accessing IndexedDB database");
|
||||
deferred.reject();
|
||||
};
|
||||
|
||||
request.onsuccess = function (event) {
|
||||
console.log("Success creating/accessing IndexedDB database");
|
||||
|
||||
var db = request.result || event.target.result;
|
||||
|
||||
db.onerror = function (event) {
|
||||
console.log("Error creating/accessing IndexedDB database");
|
||||
};
|
||||
|
||||
// Interim solution for Google Chrome to create an objectStore. Will be deprecated
|
||||
if (db.setVersion) {
|
||||
if (db.version != dbVersion) {
|
||||
var setVersion = db.setVersion(dbVersion);
|
||||
setVersion.onsuccess = function () {
|
||||
createObjectStore(db);
|
||||
deferred.resolveWith(null, [db]);
|
||||
};
|
||||
} else {
|
||||
deferred.resolveWith(null, [db]);
|
||||
}
|
||||
} else {
|
||||
deferred.resolveWith(null, [db]);
|
||||
}
|
||||
}
|
||||
|
||||
// For future use. Currently only in latest Firefox versions
|
||||
request.onupgradeneeded = function (event) {
|
||||
createObjectStore(event.target.result);
|
||||
};
|
||||
|
||||
return deferred.promise();
|
||||
}
|
||||
|
||||
function indexedDbImageStore() {
|
||||
|
||||
var self = this;
|
||||
|
||||
var openPromise = openDb().done(function (db) {
|
||||
|
||||
self._db = db;
|
||||
});
|
||||
|
||||
self.addImageToDatabase = function (blob, key) {
|
||||
|
||||
console.log("addImageToDatabase");
|
||||
|
||||
// Open a transaction to the database
|
||||
var transaction = self.db().transaction([imagesStoreName], "readwrite");
|
||||
|
||||
// Put the blob into the dabase
|
||||
var put = transaction.objectStore(imagesStoreName).put(blob, key);
|
||||
};
|
||||
|
||||
self.revokeUrl = function (url) {
|
||||
|
||||
// Get window.URL object
|
||||
var URL = window.URL || window.webkitURL;
|
||||
URL.revokeObjectURL(url);
|
||||
};
|
||||
|
||||
self.db = function () {
|
||||
|
||||
return self._db;
|
||||
};
|
||||
|
||||
self.get = function (key) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
var transaction = self.db().transaction([imagesStoreName], "readonly");
|
||||
|
||||
// Open a transaction to the database
|
||||
var getRequest = transaction.objectStore(imagesStoreName).get(key);
|
||||
|
||||
getRequest.onsuccess = function (event) {
|
||||
|
||||
var imgFile = event.target.result;
|
||||
|
||||
if (imgFile) {
|
||||
deferred.resolveWith(null, [imgFile]);
|
||||
} else {
|
||||
deferred.reject();
|
||||
}
|
||||
};
|
||||
|
||||
getRequest.onerror = function () {
|
||||
deferred.reject();
|
||||
};
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
self.getImageUrl = function (originalUrl) {
|
||||
|
||||
console.log('getImageUrl:' + originalUrl);
|
||||
|
||||
var key = CryptoJS.SHA1(originalUrl).toString();
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
self.get(key).done(function (url) {
|
||||
|
||||
deferred.resolveWith(null, [url]);
|
||||
|
||||
}).fail(function () {
|
||||
|
||||
self.downloadImage(originalUrl, key).done(function () {
|
||||
self.get(key).done(function (url) {
|
||||
|
||||
deferred.resolveWith(null, [url]);
|
||||
|
||||
}).fail(function () {
|
||||
|
||||
deferred.reject();
|
||||
});
|
||||
}).fail(function () {
|
||||
|
||||
deferred.reject();
|
||||
});
|
||||
});
|
||||
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
self.downloadImage = function (url, key) {
|
||||
|
||||
var deferred = DeferredBuilder.Deferred();
|
||||
|
||||
console.log('downloadImage:' + url);
|
||||
|
||||
// Create XHR
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open("GET", url, true);
|
||||
// Set the responseType to blob
|
||||
xhr.responseType = "arraybuffer";
|
||||
|
||||
xhr.addEventListener("load", function () {
|
||||
|
||||
if (xhr.status === 200) {
|
||||
console.log("Image retrieved");
|
||||
|
||||
try {
|
||||
|
||||
var arr = new Uint8Array(this.response);
|
||||
|
||||
// Convert the int array to a binary string
|
||||
// We have to use apply() as we are converting an *array*
|
||||
// and String.fromCharCode() takes one or more single values, not
|
||||
// an array.
|
||||
var raw = String.fromCharCode.apply(null, arr);
|
||||
|
||||
// This works!!!
|
||||
var b64 = btoa(raw);
|
||||
var dataURL = "data:image/jpeg;base64," + b64;
|
||||
|
||||
// Put the received blob into IndexedDB
|
||||
self.addImageToDatabase(dataURL, key);
|
||||
deferred.resolve();
|
||||
} catch (err) {
|
||||
deferred.reject();
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
|
||||
// Send XHR
|
||||
xhr.send();
|
||||
return deferred.promise();
|
||||
};
|
||||
|
||||
self.setImageInto = function (elem, url) {
|
||||
|
||||
//if (!self.db()) {
|
||||
// if (elem.tagName === "DIV") {
|
||||
|
||||
// elem.style.backgroundImage = "url('" + url + "')";
|
||||
|
||||
// } else {
|
||||
// elem.setAttribute("src", url);
|
||||
// }
|
||||
// return;
|
||||
//}
|
||||
|
||||
openPromise.done(function () {
|
||||
|
||||
self.getImageUrl(url).done(function (localUrl) {
|
||||
|
||||
if (elem.tagName === "DIV") {
|
||||
|
||||
elem.style.backgroundImage = "url('" + localUrl + "')";
|
||||
|
||||
} else {
|
||||
elem.setAttribute("src", localUrl);
|
||||
}
|
||||
|
||||
}).fail(function() {
|
||||
new simpleImageStore().setImageInto(elem, url);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
function simpleImageStore() {
|
||||
|
||||
var self = this;
|
||||
|
||||
self.setImageInto = function (elem, url) {
|
||||
|
||||
if (elem.tagName === "DIV") {
|
||||
|
||||
elem.style.backgroundImage = "url('" + url + "')";
|
||||
|
||||
} else {
|
||||
elem.setAttribute("src", url);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
if ($.browser.safari && indexedDB) {
|
||||
window.ImageStore = new indexedDbImageStore();
|
||||
} else {
|
||||
window.ImageStore = new simpleImageStore();
|
||||
}
|
||||
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue