adding javascript for when you don't have coffeescript around

This commit is contained in:
Iam Naughton Phier 2015-02-28 17:30:52 +02:00
parent bc115a7dab
commit 96781e8413

366
sahli.js
View file

@ -1,4 +1,4 @@
// Generated by CoffeeScript 1.4.0 // Generated by CoffeeScript 1.9.0
/* /*
.___________________________________, ___ .___________________________________, ___
@ -12,59 +12,49 @@ l__________/__________|___|______l__________j_____j
Coded by Sir Garbagetruck / Accession 2013 Coded by Sir Garbagetruck / Accession 2013
Uses fonts by DMG, http://trueschool.se Uses fonts by DMG, http://trueschool.se
Uses Andy Herbert's Ansilove.js for rendering. Uses Andy Herbert's Ansilove.js for rendering.
*/ */
(function() { (function() {
this.Sahli = (function() { this.Sahli = (function() {
var _this = this;
function Sahli() {} function Sahli() {}
Sahli.loadpic = function(picdata, inserthere) { Sahli.loadpic = function(picdata, inserthere) {
switch (picdata.filetype) { switch (picdata.filetype) {
case 'plain': case 'plain':
this.loadplain(picdata, inserthere); return this.loadplain(picdata, inserthere);
break;
case 'ansi': case 'ansi':
this.loadhugeansi(picdata, inserthere); return this.loadhugeansi(picdata, inserthere);
break;
case 'bin': case 'bin':
this.loadansi(picdata, inserthere); return this.loadhugeansi(picdata, inserthere);
break;
case 'xbin': case 'xbin':
this.loadansi(picdata, inserthere); return this.loadhugeansi(picdata, inserthere);
break;
case 'ice': case 'ice':
this.loadansi(picdata, inserthere); return this.loadhugeansi(picdata, inserthere);
break;
case 'avatar': case 'avatar':
this.loadavatar(picdata, inserthere); return this.loadavatar(picdata, inserthere);
break;
case 'pcboard': case 'pcboard':
this.loadansi(picdata, inserthere); return this.loadhugeansi(picdata, inserthere);
break;
case 'idf': case 'idf':
this.loadansi(picdata, inserthere); return this.loadhugeansi(picdata, inserthere);
break;
case 'adf': case 'adf':
this.loadansi(picdata, inserthere); return this.loadhugeansi(picdata, inserthere);
break;
case 'tundra': case 'tundra':
this.loadansi(picdata, inserthere); return this.loadhugeansi(picdata, inserthere);
break;
default: default:
this.loadplain(picdata, inserthere); return this.loadplain(picdata, inserthere);
} }
}; };
Sahli.loadplain = function(picdata, inserthere) { Sahli.loadplain = function(picdata, inserthere) {
var bgcolor, color, fname, pdiv, ptxt, req; var bgcolor, buf, color, fname, pdiv, ptxt, req;
pdiv = $('<div>'); pdiv = $('<div>');
req = new XMLHttpRequest; req = new XMLHttpRequest;
fname = this.location + '/' + picdata.file; fname = this.location + '/' + picdata.file;
ptxt = $('<pre></pre>'); buf = $('<span>');
buf.css({
'margin': '0 auto'
});
ptxt = $('<pre>');
color = this.calccolor(picdata.color); color = this.calccolor(picdata.color);
bgcolor = this.calccolor(picdata.bg); bgcolor = this.calccolor(picdata.bg);
pdiv.addClass('scrolly'); pdiv.addClass('scrolly');
@ -72,36 +62,42 @@ l__________/__________|___|______l__________j_____j
ptxt.css({ ptxt.css({
'color': color, 'color': color,
'background-color': bgcolor, 'background-color': bgcolor,
'margin': 'auto' 'margin': 'auto',
'display': 'inline-block'
}); });
ptxt.width(picdata.width * 8); ptxt.width(picdata.width * 8);
pdiv.width('100%'); this.origwidth = ptxt.width;
pdiv.width(ptxt.width);
pdiv.prepend(buf.clone());
pdiv.append(ptxt); pdiv.append(ptxt);
pdiv.append(buf);
req.overrideMimeType('text/plain; charset=ISO-8859-1'); req.overrideMimeType('text/plain; charset=ISO-8859-1');
req.onreadystatechange = function() { req.onreadystatechange = function() {
if (req.readyState === req.DONE) { if (req.readyState === req.DONE) {
if (req.status === 200 || req.status === 0) { if (req.status === 200 || req.status === 0) {
ptxt.text(this.responseText); ptxt.text(this.responseText);
inserthere.after(pdiv); inserthere.after(pdiv);
return $('body').scrollTop(0);
} else { } else {
this.loaderror(inserthere, fname, req.statusText, req.status); return this.loaderror(inserthere, fname, req.statusText, req.status);
} }
} }
}; };
req.open('GET', fname, true); req.open('GET', fname, true);
req.send(null); return req.send(null);
}; };
Sahli.loadansi = function(picdata, inserthere) { Sahli.loadansi = function(picdata, inserthere) {
var fname, pdiv; var fname, pdiv;
fname = this.location + '/' + picdata.file; fname = this.location + '/' + picdata.file;
pdiv = $('<div>'); pdiv = $('<div>');
AnsiLove.render(fname, (function(canv, SAUCE) { pdiv.addClass('scrolly');
return AnsiLove.render(fname, (function(canv, SAUCE) {
pdiv.append(canv); pdiv.append(canv);
inserthere.after(pdiv); inserthere.after(pdiv);
this.origwidth = canv.width; this.origwidth = canv.width;
this.origheight = canv.height; this.origheight = canv.height;
this.SAUCE = SAUCE; return this.SAUCE = SAUCE;
}), { }), {
'font': '80x25', 'font': '80x25',
'bits': '8', 'bits': '8',
@ -117,106 +113,294 @@ l__________/__________|___|______l__________j_____j
calcheight = 0; calcheight = 0;
canvwidth = 0; canvwidth = 0;
pdiv.css('display', 'inline-block'); pdiv.css('display', 'inline-block');
AnsiLove.splitRender(fname, (function(chunks, SAUCE) { pdiv.addClass('scrolly');
chunks.forEach(function(canv) { return AnsiLove.splitRender(fname, ((function(_this) {
canv.style.verticalAlign = 'bottom'; return function(chunks, SAUCE) {
pdiv.append(canv); chunks.forEach(function(canv) {
calcheight = calcheight + canv.height; canv.style.verticalAlign = 'bottom';
canvwidth = canv.width; pdiv.append(canv);
}); calcheight = calcheight + canv.height;
inserthere.after(pdiv); return canvwidth = canv.width;
this.SAUCE = SAUCE; });
this.origwidth = canvwidth; inserthere.after(pdiv);
this.origheight = calcheight; _this.SAUCE = SAUCE;
pdiv.width(canvwidth); _this.origwidth = canvwidth;
}), 30, { _this.origheight = calcheight;
return pdiv.width(canvwidth);
};
})(this)), 30, {
'bits': '8' 'bits': '8'
}); });
}; };
Sahli.loadavatar = function(picdata, inserthere) { Sahli.loadavatar = function(picdata, inserthere) {
alert('avatar', picdata, inserthere); return alert('avatar', picdata, inserthere);
}; };
Sahli.requestsahlifile = function(url) { Sahli.requestsahlifile = function(url) {
var _this = this;
this.loadkeys(); this.loadkeys();
this.DEBUG = false; this.DEBUG = false;
this.fullscreen = false;
this.scroll_speed = 5; this.scroll_speed = 5;
this.scroll_direction = 1; this.scroll_direction = 1;
this.asciiasgfx = false; this.asciiasgfx = false;
this.currentpic = 0; this.currentpic = 0;
return $.getJSON(url, function(json) { return $.getJSON(url, (function(_this) {
_this.filedata = json.filedata; return function(json) {
_this.slides = json.slides; _this.filedata = json.filedata;
_this.location = json.location; _this.slides = json.slides;
return alert("SAHLI READY TO GO\n" + _this.filedata.length + " Entries"); _this.location = json.location;
}); return alert("SAHLI READY TO GO\n" + _this.filedata.length + " Entries");
};
})(this));
}; };
Sahli.nextpic = function() { Sahli.nextpic = function() {
var filedata, i; var filedata, i, viewbox;
$('div#sahliviewer').children().remove(); viewbox = $('div#sahliviewer');
viewbox.children().remove();
$('#panel').empty();
Sahli.scroll_direction = 1;
Sahli.scroll_speed = 5;
i = Sahli.currentpic; i = Sahli.currentpic;
filedata = Sahli.filedata; filedata = Sahli.filedata;
filedata[i].pic = $('<h6>' + filedata[i].file + '</h6>'); filedata[i].pic = $('<h6>' + filedata[i].file + '</h6>');
Sahli.viewbox.append(filedata[i].pic); viewbox.append(filedata[i].pic);
Sahli.loadpic(filedata[i], filedata[i].pic); Sahli.loadpic(filedata[i], filedata[i].pic);
Sahli.currentpic += 1; Sahli.currentpic += 1;
if (Sahli.currentpic > filedata.length - 1) { if (Sahli.currentpic > filedata.length - 1) {
Sahli.currentpic = 0; Sahli.currentpic = 0;
} }
$('#panel').hide();
$('#outbox').show();
$('body').stop();
return $('body').scrollTop(0);
}; };
Sahli.gofullscreen = function() { Sahli.togglefullscreen = function() {
var docElm; var docElm;
docElm = document.documentElement; docElm = document.documentElement;
window.setTimeout(this.resizedrawbox, 100); if (this.fullscreen) {
if (docElm.requestFullscreen) { if (document.exitFullscreen) {
docElm.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT); document.exitFullscreen();
} else if (docElm.mozRequestFullScreen) { } else if (document.mozCancelFullScreen) {
docElm.mozRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); document.mozCancelFullScreen();
} else if (docElm.webkitRequestFullScreen) { } else if (document.webkitCancelFullScreen) {
docElm.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); document.webkitCancelFullScreen();
} }
}; return this.fullscreen = false;
} else {
Sahli.cancelfullscreen = function() { if (docElm.requestFullscreen) {
window.setTimeout(this.resizedrawbox, 100, this.nonfsheight); docElm.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
if (document.exitFullscreen) { } else if (docElm.mozRequestFullScreen) {
document.exitFullscreen(); docElm.mozRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
} else if (document.mozCancelFullScreen) { } else if (docElm.webkitRequestFullScreen) {
document.mozCancelFullScreen(); docElm.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
} else if (document.webkitCancelFullScreen) { }
document.webkitCancelFullScreen(); return this.fullscreen = true;
} }
}; };
Sahli.toggledebug = function() { Sahli.toggledebug = function() {
$('h1#top').fadeToggle(); $('h1#top').fadeToggle();
this.DEBUG = !this.DEBUG; return this.DEBUG = !this.DEBUG;
}; };
Sahli.keycode = function(char) { Sahli.keycode = function(char) {
return char.toUpperCase().charCodeAt(0); return char.toUpperCase().charCodeAt(0);
}; };
Sahli.loadkeys = function() { Sahli.calccolor = function(colorset) {
var _this = this; return "rgba(" + (colorset.toString()) + ")";
return $(document).on('keydown', function(ev) { };
switch (ev.which) {
case _this.keycode(' '): Sahli.loaderror = function(inserthere, fname, errortext, errorcode) {
return _this.nextpic(); var errstr;
case _this.keycode('s'): if (errorcode === 404) {
return alert("not spaaaace"); errstr = "Unable to find " + fname;
default: } else {
return console.log(ev.which); errstr = "error! " + errortext + " / code " + errorcode;
}
return inserthere.after($("<h1>").text("" + errstr));
};
Sahli.setscroll = function() {
var bottom, scrollbox, scrollto, steps;
scrollbox = $('body');
bottom = $('body').height();
scrollto = bottom;
scrollbox.stop(true);
if (this.scroll_direction === 1) {
this.scroll_direction = -1;
steps = bottom - scrollbox.scrollTop();
} else {
this.scroll_direction = 1;
scrollto = 0;
steps = scrollbox.scrollTop();
}
console.log(this.scroll_speed + " | " + steps);
return scrollbox.animate({
scrollTop: scrollto
}, this.scroll_speed * steps, 'linear');
};
Sahli.changespeed = function(speed) {
this.scroll_speed = speed;
$('body').stop();
this.scroll_direction = -this.scroll_direction;
return this.setscroll();
};
Sahli.changescrolldirection = function(direction) {
this.scroll_direction = direction;
$('body').stop();
return this.setscroll();
};
Sahli.zoom = function(amt) {
var newwidth, zoomee;
zoomee = $('div.scrolly');
if (amt != null) {
if (amt === 0) {
newwidth = this.origwidth;
} else {
newwidth = zoomee.width() + amt;
} }
}); console.log((zoomee.width()) + " " + newwidth);
zoomee.width(newwidth);
return $('canvas').width(newwidth);
} else {
if (zoomee.width() !== this.origwidth) {
zoomee.width(this.origwidthg);
return $('canvas').width('100%');
} else {
zoomee.width('100%');
return $('canvas').width('100%');
}
}
};
Sahli.panelmode = function() {
var canvs, colwidth, drawcol, fullpicheight, i, level, newheight, newwidth, num_strips, numcols, numpanels, outer, pic, scaling_factor, stripe_width, wh, ww, _i, _j, _k, _l, _len, _len1, _len2, _results;
$('#panel').toggle();
canvs = $('canvas');
if ($('.scrolly').width() === this.origwidth) {
$('.scrolly').width('100%');
$('#panel').empty();
ww = window.innerWidth;
wh = window.innerHeight;
numpanels = canvs.length;
fullpicheight = 0;
for (_i = 0, _len = canvs.length; _i < _len; _i++) {
i = canvs[_i];
fullpicheight = fullpicheight + i.height;
}
stripe_width = ww / Math.ceil(fullpicheight / ww);
num_strips = Math.sqrt((ww / stripe_width) * (fullpicheight / wh));
numcols = Math.floor(num_strips - 1);
scaling_factor = num_strips * (wh / fullpicheight);
newwidth = scaling_factor * canvs.height();
canvs.width(newwidth);
newheight = $(canvs[0]).height();
colwidth = ww / numcols;
outer = $('<div>');
for (i = _j = 1; 1 <= numcols ? _j <= numcols : _j >= numcols; i = 1 <= numcols ? ++_j : --_j) {
outer.append(this.createpanel(i, colwidth - 6));
}
outer.addClass('nosb');
$('#panel').append(outer);
$('#outbox').toggle();
level = 0;
drawcol = 1;
_results = [];
for (_k = 0, _len1 = canvs.length; _k < _len1; _k++) {
pic = canvs[_k];
$("#column" + drawcol).append(pic);
level = level + newheight;
if (level + (newheight / 2) > wh) {
level = 0;
_results.push(drawcol = drawcol + 1);
} else {
_results.push(void 0);
}
}
return _results;
} else {
$('.scrolly').width(this.origwidth);
$('#outbox').show();
for (_l = 0, _len2 = canvs.length; _l < _len2; _l++) {
pic = canvs[_l];
$('.scrolly').append(pic);
}
canvs.width(this.origwidth);
return $('body').scrollTop(0);
}
};
Sahli.createpanel = function(i, amt) {
var dcol;
dcol = $("<div id='column" + i + "'>" + i + "</div>");
dcol.addClass('panelcolumn');
return dcol.width(amt);
};
Sahli.loadkeys = function() {
return $(document).on('keydown', (function(_this) {
return function(ev) {
switch (ev.which) {
case _this.keycode(' '):
return _this.nextpic();
case _this.keycode('f'):
return _this.togglefullscreen();
case _this.keycode('s'):
return _this.setscroll();
case _this.keycode('t'):
$('body').scrollTop(0);
return _this.zoom(0);
case _this.keycode('b'):
return $('body').scrollTop($('body').height());
case _this.keycode('a'):
$('body').stop();
return _this.scroll_direction = -_this.scroll_direction;
case _this.keycode('z'):
return _this.zoom();
case _this.keycode('e'):
return _this.zoom(100);
case _this.keycode('r'):
return _this.zoom(-100);
case _this.keycode('w'):
return _this.changescrolldirection(-1);
case _this.keycode('x'):
return _this.changescrolldirection(1);
case _this.keycode('c'):
return _this.panelmode();
case _this.keycode('1'):
return _this.changespeed(1);
case _this.keycode('2'):
_this.changespeed(2);
return _this.scroll_speed = 2;
case _this.keycode('3'):
_this.changespeed(3);
return _this.scroll_speed = 3;
case _this.keycode('4'):
_this.changespeed(4);
return _this.scroll_speed = 4;
case _this.keycode('5'):
return _this.changespeed(5);
case _this.keycode('h'):
$('.help').css({
'left': '33%'
});
return $('.help').toggle('fast');
default:
return console.log(ev.which);
}
};
})(this));
}; };
return Sahli; return Sahli;
}).call(this); })();
}).call(this); }).call(this);