/* global console */
/* global visualizer */
/* global jQuery */
(function($, visualizer){
function initActionsButtons(v) {
if($('a.visualizer-action[data-visualizer-type=copy]').length > 0) {
var clipboard = new Clipboard('a.visualizer-action[data-visualizer-type=copy]'); // jshint ignore:line
clipboard.on('success', function(e) {
window.alert(v.i10n['copied']);
});
}
$('a.visualizer-action[data-visualizer-type!=copy]').off('click').on('click', function(e) {
var type = $(this).attr( 'data-visualizer-type' );
var chart = $(this).attr( 'data-visualizer-chart-id' );
var container = $(this).attr( 'data-visualizer-container-id' );
var lock = $('.visualizer-front.visualizer-front-' + chart);
var mime = $(this).attr( 'data-visualizer-mime' );
console.log(mime);
lock.lock();
e.preventDefault();
$.ajax({
url : v.rest_url.replace('#id#', chart).replace('#type#', type),
success: function(data) {
if (data && data.data) {
switch(type){
case 'csv':
var blob = new Blob([data.data.csv], {type: mime });
if(window.navigator.msSaveOrOpenBlob){
window.navigator.msSaveOrOpenBlob(blob, data.data.name);
} else {
var url = window.URL.createObjectURL(blob);
var $a = $("");
$a.attr("href", url);
$("body").append($a);
$a.attr("download", data.data.name);
$a[0].click();
setTimeout(function () {
window.URL.revokeObjectURL(url);
$a.remove();
}, 100);
}
break;
case 'xls':
if(window.navigator.msSaveOrOpenBlob){
blob = new Blob([s2ab(atob(data.data.raw))], {type: '' });
window.navigator.msSaveOrOpenBlob(blob, data.data.name);
} else {
var $a = $(""); // jshint ignore:line
$a.attr("href", data.data.csv);
$("body").append($a);
$a.attr("download", data.data.name);
$a[0].click();
$a.remove();
}
break;
case 'print':
$('body').trigger('visualizer:action:specificchart', {action: 'print', id: container, data: data.data.csv});
break;
default:
if(window.visualizer_perform_action) {
window.visualizer_perform_action(type, chart, data.data);
}
break;
}
}
lock.unlock();
}
});
});
}
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i=0; i !== s.length; ++i) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
}
$(document).ready(function(){
$('body').trigger('visualizer:render:chart:start', visualizer);
initActionsButtons(visualizer);
registerDefaultActions();
});
function registerDefaultActions(){
$('body').off('visualizer:action:specificchart:defaultprint').on('visualizer:action:specificchart:defaultprint', function(event, v){
var iframe = $('