Skip to content
Snippets Groups Projects
Commit dd7cd975 authored by 2deep4real's avatar 2deep4real
Browse files

- DOM marquee

+ CanvasMarquee
parent 7b3a7dbc
No related branches found
No related tags found
No related merge requests found
{ {
"texts": [ "texts": [
"BETA-V01 - 28.06.2015", [
"BETA-V01 - 01.07.2015"
]
[
"Ihr wollt etwas beitragen?", "Ihr wollt etwas beitragen?",
"https://bitbucket.org/FsInformatikDortmund", "https://bitbucket.org/FsInformatikDortmund",
"ib.2deep4real.de" "ib.2deep4real.de"
],
[
"Euch gefällt das Design nicht?",
"Reicht am besten eigene Vorschläge ein"
]
] ]
} }
this.loaded = function(panel, config) { this.loaded = function(panel, config) {
console.log("scrollbar: register with config [" + config + "]"); console.log("scrollbar: register with config [" + config + "]");
var CM;
$(panel).append('<div data-scrollbar-view></div>'); function CanvasMarquee() {
var
me = this,
bgColor = "black",
fgColor = "yellow",
font = "vrr",
baseline = 0.7,
textID = -1,
amount = 2,
delay = 2,
width = 0,
height = 0,
left = 0,
marquee = null,
mctx = null,
strings = [],
texts = [];
this.scrollbar = { init = function() {
"config": config, marquee = $(panel).find('[data-marquee]')[0];
innerContainer: $(panel).find('[data-scrollbar-view]'), width = $(panel).width();
"panel": panel height = $(panel).height();
$(marquee).attr('width', width).attr('height', height);
width = $(marquee).width();
mctx = marquee.getContext('2d');
} }
var self = { 'me': this }; this.setTexts = function(t) {
strings = t;
self.u = function() {update.call(self.me)}; prerender();
self.r = function() {resize.call(self.me.scrollbar.innerContainer)}; textID = -1;
nextText();
}
/* var u = function() { this.resize = function() {
update(panel,config,innerContainer); oldWidth = width;
};*/ width = $(panel).width();
setInterval(self.u, 300000); height = $(panel).height();
$(marquee).attr('width', width).attr('height', height);
mctx = marquee.getContext('2d');
prerender();
left = left * width / oldWidth;
}
/*var r = function() { render = function() {
console.log(panel); if (left > -texts[textID].width) {
resize(panel, innerContainer); mctx.fillStyle = bgColor;
};*/ mctx.fillRect(0, 0, width, height);
mctx.drawImage(texts[textID].text, (left = left - (amount > 0 ? amount : 1)), 0);
window.requestAnimationFrame(render);
} else {
setTimeout(nextText, (delay >= 0 ? delay : 0) * 1000);
}
$(window).resize(self.r); }
self.u(); nextText = function() {
textID = (textID + 1) % texts.length;
left = width;
window.requestAnimationFrame(render);
} }
var update = function(panel,config,innerContainer) { prerender = function() {
console.log("scrollbar: get data [" + this.scrollbar.config + "]"); var fsize = height;
var self = this; mctx.font = fsize + "px " + font;
$.get("config/panel/scrollbar/oh14.json", function(decodedData) { for (var i = 0; i < strings.length; ++i) {
var var
tplScrl = $(self.scrollbar.panel).find('template[data-scrollbar]').html(), text = '+++ ' + strings[i].join(' +++ +++ ') + ' +++',
element = '', bWidth = mctx.measureText(text).width,
concatText = ''; buffer = document.createElement('canvas');
console.log("scrollbar: parse texts [" + self.scrollbar.config + "]"); $(buffer).attr("width", bWidth);
concatText = '+++&emsp;' + decodedData.texts.join('&emsp;+++&emsp;&emsp;&emsp;&emsp;+++&emsp;') + '&emsp;+++&emsp;&emsp;&emsp;&emsp;'; bctx = buffer.getContext('2d');
element = $(tplScrl).clone(); bctx.font = fsize + "px " + font;
$(element).html(concatText); bctx.fillStyle = fgColor;
console.log("scrollbar: insert new HTML [" + self.scrollbar.config + "]"); bctx.fillText(text, 0, fsize * baseline);
$(self.scrollbar.innerContainer).empty().append(element); texts.push({
//initMarquee(self.scrollbar.panel); 'text' : buffer,
resize(self.scrollbar.innerContainer); 'width' : bWidth
}); });
} }
}
var resize = function(innerContainer) { init();
//console.log(panel); }
var $.get("config/panel/scrollbar/oh14.json", function(decodedData) {
scale = $(innerContainer).innerHeight() / 100, CM = new CanvasMarquee();
text = $(innerContainer).find('[data-marquee]'), CM.setTexts(decodedData.texts);
// setze größen der schriften mit scale * n wobei n in prozent von panelhöhe $(window).resize(CM.resize);
textH = scale * 90; // der scrolltext });
// setze info nachricht größe
$(text).css('height', textH + 'px');
$(text).css('fontSize', (textH-2) + 'px');
$(text).css('lineHeight', textH + 'px');
} }
[data-scrollbar-view] {
position: relative;
width: 100%;
height: 100%;
background-color: #000000;
border-style: solid;
border-color: #000000;
padding: 0px;
box-sizing: border-box;
overflow: hidden;
font-family: vrr;
marquee {
background-color: #000000;
color: #FFC000;
}
[data-css-marquee] {
position: relative;
overflow: hidden;
width: 100%;
height: 100%;
display: inline-block;
background-color: #000000;
[data-css-marquee-text] {
position: absolute;
display: table-cell;
padding: 0px;
white-space: nowrap;
background-color: #000000;
color: #FFC000;
cursor:default;
}
}
}
\ No newline at end of file
<template data-scrollbar> <canvas data-marquee></canvas>
<marquee data-marquee data-speed="60"></marquee> \ No newline at end of file
</template>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment