mirror of
https://github.com/scratchfoundation/scratchjr.git
synced 2025-02-17 17:01:12 -05:00
Home.js module
This commit is contained in:
parent
1f1a56b1a7
commit
184a899061
1 changed files with 303 additions and 293 deletions
|
@ -2,318 +2,328 @@
|
|||
// Home Screen
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
var Home = function () {};
|
||||
Home.frame;
|
||||
Home.time;
|
||||
Home.scrollvalue;
|
||||
import Lobby from './Lobby';
|
||||
import iOS from '../iPad/iOS';
|
||||
import IO from '../iPad/IO';
|
||||
import Project from '../editor/ui/Project';
|
||||
import Localization from '../utils/Localization';
|
||||
import ScratchAudio from '../utils/ScratchAudio';
|
||||
import Vector from '../geom/Vector';
|
||||
import {gn, newHTML, isTablet} from '../utils/lib';
|
||||
|
||||
Home.init = function () {
|
||||
Home.version = Lobby.version;
|
||||
Home.time = (new Date()) - 0;
|
||||
Home.frame = gn('htmlcontents');
|
||||
var inner = newHTML('div', 'inner', Home.frame);
|
||||
var div = newHTML('div', 'scrollarea', inner);
|
||||
div.setAttribute('id', 'scrollarea');
|
||||
Home.frame.ontouchstart = Home.handleTouchStart;
|
||||
Home.frame.ontouchend = Home.handleTouchEnd;
|
||||
Home.displayYourProjects();
|
||||
};
|
||||
let frame;
|
||||
let scrollvalue;
|
||||
let version;
|
||||
let timeoutEvent;
|
||||
|
||||
////////////////////////////
|
||||
// Home Screen
|
||||
////////////////////////////
|
||||
export default class Home {
|
||||
static init () {
|
||||
version = Lobby.version;
|
||||
frame = gn('htmlcontents');
|
||||
var inner = newHTML('div', 'inner', frame);
|
||||
var div = newHTML('div', 'scrollarea', inner);
|
||||
div.setAttribute('id', 'scrollarea');
|
||||
frame.ontouchstart = Home.handleTouchStart;
|
||||
frame.ontouchend = Home.handleTouchEnd;
|
||||
Home.displayYourProjects();
|
||||
}
|
||||
|
||||
Home.emptyProjectThumbnail = function (parent) {
|
||||
var tb = newHTML('div', 'projectthumb', parent);
|
||||
newHTML('div', 'aproject empty', tb);
|
||||
tb.id = 'newproject';
|
||||
};
|
||||
////////////////////////////
|
||||
// Home Screen
|
||||
////////////////////////////
|
||||
|
||||
//////////////////////////
|
||||
// Events
|
||||
//////////////////////////
|
||||
static emptyProjectThumbnail (parent) {
|
||||
var tb = newHTML('div', 'projectthumb', parent);
|
||||
newHTML('div', 'aproject empty', tb);
|
||||
tb.id = 'newproject';
|
||||
}
|
||||
|
||||
Home.handleTouchStart = function (e) {
|
||||
Home.dragging = false;
|
||||
Home.holding = false;
|
||||
// if ((t.nodeName == "INPUT") || (t.nodeName == "FORM")) return;
|
||||
var mytarget = Home.getMouseTarget(e);
|
||||
if ((mytarget != Home.actionTarget) && Home.actionTarget && (Home.actionTarget.childElementCount > 2)) {
|
||||
Home.actionTarget.childNodes[Home.actionTarget.childElementCount - 1].style.visibility = 'hidden';
|
||||
}
|
||||
Home.actionTarget = mytarget;
|
||||
Home.initialPt = Events.getTargetPoint(e);
|
||||
if (Home.actionTarget) {
|
||||
holdit(Home.actionTarget);
|
||||
}
|
||||
function holdit () {
|
||||
Home.frame.ontouchmove = Home.handleMove;
|
||||
var repeat = function () {
|
||||
if (Home.actionTarget && (Home.actionTarget.childElementCount > 2)) {
|
||||
Home.actionTarget.childNodes[Home.actionTarget.childElementCount - 1].style.visibility = 'visible';
|
||||
//////////////////////////
|
||||
// Events
|
||||
//////////////////////////
|
||||
|
||||
Home.holding = true;
|
||||
}
|
||||
};
|
||||
Home.timeoutEvent = setTimeout(repeat, 500);
|
||||
}
|
||||
Home.scrolltop = document.body.scrollTop;
|
||||
};
|
||||
|
||||
Home.handleMove = function (e) {
|
||||
var pt = Events.getTargetPoint(e);
|
||||
var delta = Vector.diff(pt, Home.initialPt);
|
||||
if (!Home.dragging && (Vector.len(delta) > 20)) {
|
||||
Home.dragging = true;
|
||||
}
|
||||
if (!Home.dragging) {
|
||||
return;
|
||||
}
|
||||
if (Home.timeoutEvent) {
|
||||
clearTimeout(Home.timeoutEvent);
|
||||
}
|
||||
Home.timeoutEvent = undefined;
|
||||
};
|
||||
|
||||
Home.getMouseTarget = function (e) {
|
||||
var t = e.target;
|
||||
if (t == frame) {
|
||||
return null;
|
||||
}
|
||||
if (t.parentNode && !t.parentNode.tagName) {
|
||||
return null;
|
||||
}
|
||||
while (t.parentNode && (t.parentNode != frame) && (t.parentNode.getAttribute('class') != 'scrollarea')) {
|
||||
t = t.parentNode;
|
||||
}
|
||||
return (!t.parentNode || (t.parentNode == frame)) ? null : t;
|
||||
};
|
||||
|
||||
Home.handleTouchEnd = function (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (e.touches && (e.touches.length > 1)) {
|
||||
return;
|
||||
}
|
||||
if (isTablet) {
|
||||
Home.frame.ontouchmove = undefined;
|
||||
} else {
|
||||
Home.frame.onmousemove = undefined;
|
||||
}
|
||||
if (Home.timeoutEvent) {
|
||||
clearTimeout(Home.timeoutEvent);
|
||||
}
|
||||
Home.timeoutEvent = undefined;
|
||||
if (Home.dragging) {
|
||||
return;
|
||||
}
|
||||
Home.performAction(e);
|
||||
};
|
||||
|
||||
Home.performAction = function (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (!Home.actionTarget) {
|
||||
return;
|
||||
}
|
||||
if (Home.holding) {
|
||||
return;
|
||||
}
|
||||
var md5 = Home.actionTarget.id;
|
||||
switch (Home.getAction(e)) {
|
||||
case 'project':
|
||||
ScratchAudio.sndFX('keydown.wav');
|
||||
if (md5 && (md5 == 'newproject')) {
|
||||
Home.createNewProject();
|
||||
} else if (md5) {
|
||||
iOS.setfile('homescroll.sjr', gn('wrapc').scrollTop, function () {
|
||||
doNext(md5);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
ScratchAudio.sndFX('cut.wav');
|
||||
Project.thumbnailUnique(Home.actionTarget.thumb, Home.actionTarget.id, function (isUnique) {
|
||||
if (isUnique) {
|
||||
iOS.remove(Home.actionTarget.thumb, iOS.trace);
|
||||
}
|
||||
});
|
||||
iOS.setfield(iOS.database, Home.actionTarget.id, 'deleted', 'YES', Home.removeProjThumb);
|
||||
break;
|
||||
default:
|
||||
if (Home.actionTarget && (Home.actionTarget.childElementCount > 2)) {
|
||||
static handleTouchStart (e) {
|
||||
Home.dragging = false;
|
||||
Home.holding = false;
|
||||
// if ((t.nodeName == "INPUT") || (t.nodeName == "FORM")) return;
|
||||
var mytarget = Home.getMouseTarget(e);
|
||||
if ((mytarget != Home.actionTarget) && Home.actionTarget && (Home.actionTarget.childElementCount > 2)) {
|
||||
Home.actionTarget.childNodes[Home.actionTarget.childElementCount - 1].style.visibility = 'hidden';
|
||||
}
|
||||
break;
|
||||
}
|
||||
function doNext () {
|
||||
iOS.analyticsEvent('lobby', 'existing_project_edited');
|
||||
window.location.href = 'editor.html?pmd5=' + md5 + '&mode=edit';
|
||||
}
|
||||
};
|
||||
|
||||
Home.createNewProject = function () {
|
||||
iOS.analyticsEvent('lobby', 'project_created');
|
||||
var obj = {};
|
||||
// XXX: for localization, the new project name should likely be refactored
|
||||
obj.name = Home.getNextName(Localization.localize('NEW_PROJECT_PREFIX'));
|
||||
obj.version = Home.version;
|
||||
obj.mtime = (new Date()).getTime().toString();
|
||||
IO.createProject(obj, Home.gotoEditor);
|
||||
};
|
||||
|
||||
Home.gotoEditor = function (md5) {
|
||||
iOS.setfile('homescroll.sjr', gn('wrapc').scrollTop, function () {
|
||||
doNext(md5);
|
||||
});
|
||||
function doNext (md5) {
|
||||
window.location.href = 'editor.html?pmd5=' + md5 + '&mode=edit';
|
||||
}
|
||||
};
|
||||
|
||||
// Project names are given by reading the DOM elements of existing projects...
|
||||
Home.getNextName = function (name) {
|
||||
var pn = [];
|
||||
var div = gn('scrollarea');
|
||||
for (var i = 0; i < div.childElementCount; i++) {
|
||||
if (div.childNodes[i].id == 'newproject') {
|
||||
continue;
|
||||
Home.actionTarget = mytarget;
|
||||
Home.initialPt = Events.getTargetPoint(e);
|
||||
if (Home.actionTarget) {
|
||||
holdit(Home.actionTarget);
|
||||
}
|
||||
pn.push(div.childNodes[i].childNodes[1].childNodes[0].textContent);
|
||||
}
|
||||
var n = 1;
|
||||
while (pn.indexOf(name + ' ' + n) > -1) {
|
||||
n++;
|
||||
}
|
||||
return name + ' ' + n;
|
||||
};
|
||||
function holdit () {
|
||||
frame.ontouchmove = Home.handleMove;
|
||||
var repeat = function () {
|
||||
if (Home.actionTarget && (Home.actionTarget.childElementCount > 2)) {
|
||||
Home.actionTarget.childNodes[Home.actionTarget.childElementCount - 1].style.visibility = 'visible';
|
||||
|
||||
Home.removeProjThumb = function () {
|
||||
if (Home.actionTarget && Home.actionTarget.parentNode) {
|
||||
Home.actionTarget.parentNode.removeChild(Home.actionTarget);
|
||||
Home.holding = true;
|
||||
}
|
||||
};
|
||||
timeoutEvent = setTimeout(repeat, 500);
|
||||
}
|
||||
Home.scrolltop = document.body.scrollTop;
|
||||
}
|
||||
Home.actionTarget = undefined;
|
||||
};
|
||||
|
||||
Home.getAction = function (e) {
|
||||
if (!Home.actionTarget) {
|
||||
return 'none';
|
||||
static handleMove (e) {
|
||||
var pt = Events.getTargetPoint(e);
|
||||
var delta = Vector.diff(pt, Home.initialPt);
|
||||
if (!Home.dragging && (Vector.len(delta) > 20)) {
|
||||
Home.dragging = true;
|
||||
}
|
||||
if (!Home.dragging) {
|
||||
return;
|
||||
}
|
||||
if (timeoutEvent) {
|
||||
clearTimeout(timeoutEvent);
|
||||
}
|
||||
timeoutEvent = undefined;
|
||||
}
|
||||
var shown = (Home.actionTarget.childElementCount > 2) ?
|
||||
Home.actionTarget.childNodes[Home.actionTarget.childElementCount - 1].style.visibility == 'visible' :
|
||||
false;
|
||||
if (e && shown) {
|
||||
var t;
|
||||
if (window.event) {
|
||||
t = window.event.srcElement;
|
||||
|
||||
static getMouseTarget = function (e) {
|
||||
var t = e.target;
|
||||
if (t == frame) {
|
||||
return null;
|
||||
}
|
||||
if (t.parentNode && !t.parentNode.tagName) {
|
||||
return null;
|
||||
}
|
||||
while (t.parentNode && (t.parentNode != frame) && (t.parentNode.getAttribute('class') != 'scrollarea')) {
|
||||
t = t.parentNode;
|
||||
}
|
||||
return (!t.parentNode || (t.parentNode == frame)) ? null : t;
|
||||
}
|
||||
|
||||
static handleTouchEnd = function (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (e.touches && (e.touches.length > 1)) {
|
||||
return;
|
||||
}
|
||||
if (isTablet) {
|
||||
frame.ontouchmove = undefined;
|
||||
} else {
|
||||
t = e.target;
|
||||
frame.onmousemove = undefined;
|
||||
}
|
||||
if (t.getAttribute('class') == 'closex') {
|
||||
return 'delete';
|
||||
if (timeoutEvent) {
|
||||
clearTimeout(timeoutEvent);
|
||||
}
|
||||
timeoutEvent = undefined;
|
||||
if (Home.dragging) {
|
||||
return;
|
||||
}
|
||||
Home.performAction(e);
|
||||
}
|
||||
|
||||
static performAction (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (!Home.actionTarget) {
|
||||
return;
|
||||
}
|
||||
if (Home.holding) {
|
||||
return;
|
||||
}
|
||||
var md5 = Home.actionTarget.id;
|
||||
switch (Home.getAction(e)) {
|
||||
case 'project':
|
||||
ScratchAudio.sndFX('keydown.wav');
|
||||
if (md5 && (md5 == 'newproject')) {
|
||||
Home.createNewProject();
|
||||
} else if (md5) {
|
||||
iOS.setfile('homescroll.sjr', gn('wrapc').scrollTop, function () {
|
||||
doNext(md5);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 'delete':
|
||||
ScratchAudio.sndFX('cut.wav');
|
||||
Project.thumbnailUnique(Home.actionTarget.thumb, Home.actionTarget.id, function (isUnique) {
|
||||
if (isUnique) {
|
||||
iOS.remove(Home.actionTarget.thumb, iOS.trace);
|
||||
}
|
||||
});
|
||||
iOS.setfield(iOS.database, Home.actionTarget.id, 'deleted', 'YES', Home.removeProjThumb);
|
||||
break;
|
||||
default:
|
||||
if (Home.actionTarget && (Home.actionTarget.childElementCount > 2)) {
|
||||
Home.actionTarget.childNodes[Home.actionTarget.childElementCount - 1].style.visibility = 'hidden';
|
||||
}
|
||||
break;
|
||||
}
|
||||
function doNext () {
|
||||
iOS.analyticsEvent('lobby', 'existing_project_edited');
|
||||
window.location.href = 'editor.html?pmd5=' + md5 + '&mode=edit';
|
||||
}
|
||||
}
|
||||
return 'project';
|
||||
};
|
||||
|
||||
//////////////////////////
|
||||
// Gather projects
|
||||
//////////////////////////
|
||||
|
||||
Home.displayYourProjects = function () {
|
||||
iOS.getfile('homescroll.sjr', gotScrollsState);
|
||||
function gotScrollsState (str) {
|
||||
var num = Number(atob(str));
|
||||
Home.scrollvalue = (num.toString() == 'NaN') ? 0 : num;
|
||||
var json = {};
|
||||
json.cond = 'deleted = ? AND version = ? AND gallery IS NULL';
|
||||
json.items = ['name', 'thumbnail', 'id', 'isgift'];
|
||||
json.values = ['NO', Home.version];
|
||||
json.order = 'ctime desc';
|
||||
IO.query(iOS.database, json, Home.displayProjects);
|
||||
}
|
||||
};
|
||||
|
||||
Home.displayProjects = function (str) {
|
||||
var data = JSON.parse(str);
|
||||
var div = gn('scrollarea');
|
||||
while (div.childElementCount > 0) {
|
||||
div.removeChild(div.childNodes[0]);
|
||||
}
|
||||
Home.emptyProjectThumbnail(div);
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
Home.addProjectLink(div, data[i]);
|
||||
}
|
||||
setTimeout(function () {
|
||||
Lobby.busy = false;
|
||||
}, 1000);
|
||||
if (gn('wrapc')) {
|
||||
gn('wrapc').scrollTop = Home.scrollvalue;
|
||||
}
|
||||
};
|
||||
|
||||
Home.addProjectLink = function (parent, aa) {
|
||||
var data = IO.parseProjectData(aa);
|
||||
var id = data.id;
|
||||
var th = data.thumbnail;
|
||||
if (!th) {
|
||||
return;
|
||||
}
|
||||
var thumb = (typeof th === 'string') ? JSON.parse(th) : th;
|
||||
var pc = thumb.pagecount ? thumb.pagecount : 1;
|
||||
var tb = newHTML('div', 'projectthumb', parent);
|
||||
tb.setAttribute('id', id);
|
||||
tb.type = 'projectthumb';
|
||||
tb.thumb = thumb.md5;
|
||||
var mt = newHTML('div', 'aproject p' + pc, tb);
|
||||
Home.insertThumbnail(mt, 192, 144, thumb);
|
||||
var label = newHTML('div', 'projecttitle', tb);
|
||||
var txt = newHTML('h4', undefined, label);
|
||||
txt.textContent = data.name;
|
||||
|
||||
var bow = newHTML('div', 'share', tb);
|
||||
var ribbonHorizontal = newHTML('div', 'ribbonHorizontal', tb);
|
||||
var ribbonVertical = newHTML('div', 'ribbonVertical', tb);
|
||||
|
||||
if (data.isgift != '0') {
|
||||
// If it's a gift, show the bow and ribbon
|
||||
bow.style.visibility = 'visible';
|
||||
ribbonHorizontal.style.visibility = 'visible';
|
||||
ribbonVertical.style.visibility = 'visible';
|
||||
static createNewProject () {
|
||||
iOS.analyticsEvent('lobby', 'project_created');
|
||||
var obj = {};
|
||||
// XXX: for localization, the new project name should likely be refactored
|
||||
obj.name = Home.getNextName(Localization.localize('NEW_PROJECT_PREFIX'));
|
||||
obj.version = version;
|
||||
obj.mtime = (new Date()).getTime().toString();
|
||||
IO.createProject(obj, Home.gotoEditor);
|
||||
}
|
||||
|
||||
newHTML('div', 'closex', tb);
|
||||
};
|
||||
|
||||
Home.insertThumbnail = function (p, w, h, data) {
|
||||
var md5 = data.md5;
|
||||
var img = newHTML('img', undefined, p);
|
||||
if (md5) {
|
||||
IO.getAsset(md5, drawMe);
|
||||
}
|
||||
function drawMe (url) {
|
||||
img.src = url;
|
||||
}
|
||||
};
|
||||
|
||||
Events = function () {};
|
||||
|
||||
Events.getTargetPoint = function (e) {
|
||||
if (isTablet) {
|
||||
if (e.touches && (e.touches.length > 0)) {
|
||||
return {
|
||||
x: e.touches[0].pageX,
|
||||
y: e.touches[0].pageY
|
||||
};
|
||||
} else if (e.changedTouches) {
|
||||
return {
|
||||
x: e.changedTouches[0].pageX,
|
||||
y: e.changedTouches[0].pageY
|
||||
};
|
||||
static gotoEditor (md5) {
|
||||
iOS.setfile('homescroll.sjr', gn('wrapc').scrollTop, function () {
|
||||
doNext(md5);
|
||||
});
|
||||
function doNext (md5) {
|
||||
window.location.href = 'editor.html?pmd5=' + md5 + '&mode=edit';
|
||||
}
|
||||
}
|
||||
return {
|
||||
x: e.clientX,
|
||||
y: e.clientY
|
||||
};
|
||||
};
|
||||
|
||||
// Project names are given by reading the DOM elements of existing projects...
|
||||
static getNextName (name) {
|
||||
var pn = [];
|
||||
var div = gn('scrollarea');
|
||||
for (var i = 0; i < div.childElementCount; i++) {
|
||||
if (div.childNodes[i].id == 'newproject') {
|
||||
continue;
|
||||
}
|
||||
pn.push(div.childNodes[i].childNodes[1].childNodes[0].textContent);
|
||||
}
|
||||
var n = 1;
|
||||
while (pn.indexOf(name + ' ' + n) > -1) {
|
||||
n++;
|
||||
}
|
||||
return name + ' ' + n;
|
||||
}
|
||||
|
||||
static removeProjThumb () {
|
||||
if (Home.actionTarget && Home.actionTarget.parentNode) {
|
||||
Home.actionTarget.parentNode.removeChild(Home.actionTarget);
|
||||
}
|
||||
Home.actionTarget = undefined;
|
||||
}
|
||||
|
||||
static getAction (e) {
|
||||
if (!Home.actionTarget) {
|
||||
return 'none';
|
||||
}
|
||||
var shown = (Home.actionTarget.childElementCount > 2) ?
|
||||
Home.actionTarget.childNodes[Home.actionTarget.childElementCount - 1].style.visibility == 'visible' :
|
||||
false;
|
||||
if (e && shown) {
|
||||
var t;
|
||||
if (window.event) {
|
||||
t = window.event.srcElement;
|
||||
} else {
|
||||
t = e.target;
|
||||
}
|
||||
if (t.getAttribute('class') == 'closex') {
|
||||
return 'delete';
|
||||
}
|
||||
}
|
||||
return 'project';
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
// Gather projects
|
||||
//////////////////////////
|
||||
|
||||
static displayYourProjects () {
|
||||
iOS.getfile('homescroll.sjr', gotScrollsState);
|
||||
function gotScrollsState (str) {
|
||||
var num = Number(atob(str));
|
||||
scrollvalue = (num.toString() == 'NaN') ? 0 : num;
|
||||
var json = {};
|
||||
json.cond = 'deleted = ? AND version = ? AND gallery IS NULL';
|
||||
json.items = ['name', 'thumbnail', 'id', 'isgift'];
|
||||
json.values = ['NO', version];
|
||||
json.order = 'ctime desc';
|
||||
IO.query(iOS.database, json, Home.displayProjects);
|
||||
}
|
||||
}
|
||||
|
||||
static displayProjects (str) {
|
||||
var data = JSON.parse(str);
|
||||
var div = gn('scrollarea');
|
||||
while (div.childElementCount > 0) {
|
||||
div.removeChild(div.childNodes[0]);
|
||||
}
|
||||
Home.emptyProjectThumbnail(div);
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
Home.addProjectLink(div, data[i]);
|
||||
}
|
||||
setTimeout(function () {
|
||||
Lobby.busy = false;
|
||||
}, 1000);
|
||||
if (gn('wrapc')) {
|
||||
gn('wrapc').scrollTop = scrollvalue;
|
||||
}
|
||||
}
|
||||
|
||||
static addProjectLink (parent, aa) {
|
||||
var data = IO.parseProjectData(aa);
|
||||
var id = data.id;
|
||||
var th = data.thumbnail;
|
||||
if (!th) {
|
||||
return;
|
||||
}
|
||||
var thumb = (typeof th === 'string') ? JSON.parse(th) : th;
|
||||
var pc = thumb.pagecount ? thumb.pagecount : 1;
|
||||
var tb = newHTML('div', 'projectthumb', parent);
|
||||
tb.setAttribute('id', id);
|
||||
tb.type = 'projectthumb';
|
||||
tb.thumb = thumb.md5;
|
||||
var mt = newHTML('div', 'aproject p' + pc, tb);
|
||||
Home.insertThumbnail(mt, 192, 144, thumb);
|
||||
var label = newHTML('div', 'projecttitle', tb);
|
||||
var txt = newHTML('h4', undefined, label);
|
||||
txt.textContent = data.name;
|
||||
|
||||
var bow = newHTML('div', 'share', tb);
|
||||
var ribbonHorizontal = newHTML('div', 'ribbonHorizontal', tb);
|
||||
var ribbonVertical = newHTML('div', 'ribbonVertical', tb);
|
||||
|
||||
if (data.isgift != '0') {
|
||||
// If it's a gift, show the bow and ribbon
|
||||
bow.style.visibility = 'visible';
|
||||
ribbonHorizontal.style.visibility = 'visible';
|
||||
ribbonVertical.style.visibility = 'visible';
|
||||
}
|
||||
|
||||
newHTML('div', 'closex', tb);
|
||||
}
|
||||
|
||||
static insertThumbnail (p, w, h, data) {
|
||||
var md5 = data.md5;
|
||||
var img = newHTML('img', undefined, p);
|
||||
if (md5) {
|
||||
IO.getAsset(md5, drawMe);
|
||||
}
|
||||
function drawMe (url) {
|
||||
img.src = url;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Events {
|
||||
static getTargetPoint = function (e) {
|
||||
if (isTablet) {
|
||||
if (e.touches && (e.touches.length > 0)) {
|
||||
return {
|
||||
x: e.touches[0].pageX,
|
||||
y: e.touches[0].pageY
|
||||
};
|
||||
} else if (e.changedTouches) {
|
||||
return {
|
||||
x: e.changedTouches[0].pageX,
|
||||
y: e.changedTouches[0].pageY
|
||||
};
|
||||
}
|
||||
}
|
||||
return {
|
||||
x: e.clientX,
|
||||
y: e.clientY
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue