polygon-website-foss/js/3D/ThumbnailView.js

229 lines
5.9 KiB
JavaScript

(function() {
/**
* @return {?}
*/
function updateClockElement() {
/** @type {string} */
var myNav = navigator.userAgent.toLowerCase();
return myNav.indexOf("msie") != -1 ? parseInt(myNav.split("msie")[1]) : false;
}
/**
* @return {undefined}
*/
function accept_specialinput() {
if (updateClockElement() < 11 && updateClockElement() !== false) {
// Roblox.GenericModal.open(_imageWin, "/images/Icons/img-alert.png", InsufficientIEText);
polygon.buildModal({ header: _imageWin, image: "/img/error.png", body: InsufficientIEText, buttons: [{class: 'btn btn-primary px-4', dismiss: true, text: 'OK'}] });
} else {
// Roblox.GenericModal.open(_imageWin, "/images/Icons/img-alert.png", UnsupportedText);
polygon.buildModal({ header: _imageWin, image: "/img/error.png", body: UnsupportedText, buttons: [{class: 'btn btn-primary px-4', dismiss: true, text: 'OK'}] });
}
}
/**
* @return {?}
*/
function init() {
try {
/** @type {!Element} */
var canvas = document.createElement("canvas");
return !!window.WebGLRenderingContext && (canvas.getContext("webgl") || canvas.getContext("experimental-webgl"));
} catch (t) {
return false;
}
}
/**
* @return {?}
*/
function updateStates() {
return $(ThumbnailHolder).data("3d-thumbs-enabled") !== undefined ? true : false;
}
/**
* @return {?}
*/
function resolve() {
return callback(CanUseThreeDee) === true;
}
/**
* @param {boolean} data
* @return {undefined}
*/
function fieldsWatch(data) {
getData(CanUseThreeDee, data);
}
/**
* @param {string} db
* @param {boolean} store
* @return {undefined}
*/
function getData(db, store) {
if (typeof localStorage != "undefined" && localStorage != null) {
localStorage.setItem(db, store);
}
}
/**
* @param {string} db
* @return {?}
*/
function callback(db) {
if (typeof localStorage != "undefined" && localStorage != null) {
var args = localStorage.getItem(db);
return args == "true" || false;
}
return false;
}
/**
* @return {undefined}
*/
function start() {
if (updateStates()) {
/**
* @param {boolean} dirMagnitude
* @return {undefined}
*/
var blockButtonFunc = function(dirMagnitude) {
if (dirMagnitude === true) {
ThreeDeeToggle.text("Disable 3D");
} else {
ThreeDeeToggle.text("Enable 3D");
}
};
var dir = resolve();
var ThreeDeeToggle = $(".enable-three-dee");
blockButtonFunc(dir);
ThreeDeeToggle.css("visibility", "visible");
ThreeDeeToggle.on("click", function() {
if (!init()) {
accept_specialinput();
return;
}
/** @type {boolean} */
dir = !dir;
fieldsWatch(dir);
if (dir === false) {
click();
} else {
upload();
}
blockButtonFunc(dir);
});
}
}
/**
* @return {undefined}
*/
function install() {
if (f) {
var e = ThumbnailContainer.find(ThumbnailHolder);
var r = e.data("url");
ThumbnailContainer.load(r, function() {
ThumbnailImg = ThumbnailContainer.find(ThumbnailSpan);
go();
});
}
}
/**
* @return {undefined}
*/
function go() {
if (init() && resolve() && updateStates()) {
upload();
start();
} else {
click();
start();
}
}
/**
* @return {undefined}
*/
function upload() {
createForm();
try {
e = ThumbnailImg.load3DThumbnail(function(labelElements) {
ThumbnailContainer.find("canvas").not(labelElements).remove();
}, function(error){ console.log(error); });
} catch (conv_reverse_sort) {
console.log("An error occurred while loading 3D thumb:");
console.log(conv_reverse_sort);
click();
}
}
/**
* @return {undefined}
*/
function exec() {
if (e !== undefined) {
e.cancel();
}
}
/**
* @return {undefined}
*/
function d() {
exec();
ThumbnailContainer.find("canvas").remove();
ThumbnailContainer.find(".thumbnail-spinner").remove();
}
/**
* @return {undefined}
*/
function createForm() {
var $trashTreeContextMenu = ThumbnailContainer.find(ThumbnailSpan + " > img");
$trashTreeContextMenu.hide();
}
/**
* @return {undefined}
*/
function _updateVolumeImg() {
if (f) {
ThumbnailImg.find(" > img").attr("src", SpinnerLocation);
}
}
/**
* @return {undefined}
*/
function click() {
d();
ThumbnailImg.find(" > img").show();
var expRecords = ThumbnailContainer.find("span[data-retry-url]");
if (expRecords.length > 0) {
_updateVolumeImg();
// expRecords.loadRobloxThumbnails();
}
}
/** @type {boolean} */
var f = false;
var ThumbnailContainer;
var ThumbnailImg;
var e;
/** @type {string} */
var ThumbnailHolder = ".thumbnail-holder";
/** @type {string} */
var ThumbnailSpan = ".thumbnail-span";
/** @type {string} */
var SpinnerLocation = "/images/Spinners/ajax_loader_blue_300.gif";
/** @type {string} */
var _imageWin = "3D Thumbnails";
/** @type {string} */
var UnsupportedText = "Your browser or operating system does not support 3D thumbnails.";
/** @type {string} */
var InsufficientIEText = "Please upgrade to the latest version of <a href='http://www.microsoft.com/InternetExplorer'>Internet Explorer</a> in order to view 3D thumbnails.";
/** @type {string} */
var CanUseThreeDee = "RobloxUse3DThumbnails";
$(function() {
if ($(ThumbnailHolder).length > 0) {
if ($(ThumbnailHolder).data("reset-enabled-every-page") !== undefined) {
fieldsWatch(false);
}
ThumbnailContainer = $(ThumbnailHolder).parent();
ThumbnailImg = ThumbnailContainer.find(ThumbnailSpan);
go();
/** @type {boolean} */
f = true;
}
});
return { showSpinner : _updateVolumeImg, reloadThumbnail : install };
})();