function narratorPrinter(appts) { appPosition = []; var presentLine = 0; var indent = 30; var position = 90 + clothesLineHeight; var scope = localStorage.getItem('scope'); var canvas = document.getElementById('narrator'); canvas.width = $(window).width(); var temp_height = (canvas.height * .13) + clothesLineHeight; $.each(appts,function(i,v) { if (!v.list) { return true; } temp_height = (temp_height + (numeral(100)).value()); }); if (temp_height > $(window).height()) { $('#narrator').height(temp_height); canvas.height = temp_height; } else { $('#narrator').height($(window).height()); canvas.height = $(window).height(); } ctx = canvas.getContext('2d'); ctx.beginPath(); headerPrinter(ctx,appts,'Narrator'); ctx.font = "400 26px arial"; var narration = []; $.each(appts, function(i,v) { if (typeof appts[i]['list'] !== undefined) { $.each(v['list'], function(item,value) { narration.push({ app: i, type: value['type'], server_time: value['server_time'], timestamp: value['timestamp'], text: appts[i]['formatted_name']}); }); } }); narration.sort(function(a,b) { if (a['timestamp'] < b['timestamp']) { return -1 }; if (a['timestamp'] > b['timestamp']) { return 1 } return 0; }); $.each(narration, function(i,v) { if (presentLine == 0 && v.timestamp > appts['__specs']['timestamp']) { position = position + 10; ctx.moveTo(0, position); ctx.lineTo(canvas.width, position); presentLine = 1; } var textWidth = ctx.measureText(v['text']).width; var text = v['text']; pseudoGenerator(appts,v['type'],0, position + 5); var words = text.split(' '); var master_copy = text.split(' '); var page_width = canvas.width - indent; var current_line = ''; $.each(words, function(n,word) { var current_width = ctx.measureText(current_line + ' ' + word).width + 30; var words_left = words.slice(n).join(' '); if (ctx.measureText(current_line + ' ' + words_left).width + 30 < page_width) { position = position + indent; ctx.fillText(current_line + ' ' + words_left, indent, position); appPosition.push([0 , position, indent + ctx.measureText(current_line + ' ' + words_left).width, position + 20, appts[v['app']]]); return false; } else { if (current_width > page_width) { position = position + indent; ctx.fillText(current_line, indent, position); appPosition.push([0 , position, indent + ctx.measureText(current_line).width, position + 20, appts[v['app']]]); current_line = word; if (words.length == n + 1) { position = position + indent; ctx.fillText(current_line, indent, position); appPosition.push([0 , position, indent + ctx.measureText(current_line).width, position + 20, appts[v['app']]]); } } else { current_line += ' ' + word; } } }); }); ctx.stroke(); ctx.fill(); }