使用HTML/CSS/JQuery实现一个所见即所得的报表生成器
Implementing a WYSIWYG report builder using HTML/CSS/JQuery?
我正在开发一个仪表板,使用来自各种平台的API提取统计数据,如Google Analytics, Google AdWords等。
一旦用户提取了所有必要的数据并将其保存在数据库中,用户就可以方便地检索统计数据,并将其显示在仪表板的单个屏幕上,以及显示趋势的图形和其他图形小部件。
我想实现的最终结果是有一个所见即所得的报告生成器,如果可能的话,这样用户就可以设计页面的CSS/HTML并保存他们的报告模板,并最终将它们导出为PDF。我已经创建了我想要操作的CSS元素。然而,我希望允许用户选择如何布局和缩放这些CSS元素。然而,我不确定这样的实现有多复杂,以及如何实现这样的功能。
我已经研究并发现有JQuery插件允许拖动/调整CSS元素的大小,如:
http://jsfiddle.net/Ja4dY/1/$(function() {
var $foo = $('#foo').resizable().draggable();
$('#transform').on('click', function() {
$foo.css({
'-moz-transform': 'rotate(60deg)',
'-webkit-transform': 'rotate(60deg)',
'-ms-transform': 'rotate(60deg)'
});
});
});
是否可以将操作过的页面保存为模板?我假设我需要使用另一个插件将HTML页面导出为PDF。
是否有任何现有的工具做类似的事情?简而言之,我希望实现一个报告工具,可以保存自定义模板并导出为PDF。我试着四处看看,但什么也没找到,所以我想知道社区是否知道任何工具或工具组合可以实现这一目标。
对于我的问题造成的任何混乱,我深表歉意。提前感谢!更新小提琴http://jsfiddle.net/Ja4dY/260/点击"保存"后查看控制台,您可以轻松发布该数据。如果代码消失了,这里有一个备份:
HTML部分:<button id="rotate_left">Rotate left</button>
<button id="rotate_right">Rotate right</button>
<button id="save">Save</button>
<div class="template_area">
<div id="foo" class="template_box">Hello</div>
<div id="other" class="template_box">What's this?</div>
</div>
样式:
.template_area {
position: relative;
margin-top: 30px;
background: none #efefef;
height: 300px;
}
#foo {
border: 2px solid red;
width: 200px;
height: 150px;
position: absolute;
top: 150px;
left: 50px;
}
#other {
border: 2px solid blue;
width: 150px;
height: 50px;
position: absolute;
top: 100px;
left: 50px;
}
.selected_box {
border: 1px solid green !important;
}
脚本:
var selectedBox = false;
$(function() {
$('.template_box').resizable().draggable();
$('.template_box').on('click', function(e) {
var thisElement = $(this);
$('.template_box').removeClass('selected_box');
thisElement.addClass('selected_box');
selectedBox = thisElement;
});
function rotateElement( degree ) {
if ( !selectedBox.data('rotate') ) {
selectedBox.data('rotate', 0);
};
selectedBox.data('rotate', selectedBox.data('rotate')+degree);
selectedBox.css({
'-moz-transform': 'rotate(' + selectedBox.data('rotate') + 'deg)',
'-webkit-transform': 'rotate(' + selectedBox.data('rotate') + 'deg)',
'-ms-transform': 'rotate(' + selectedBox.data('rotate') + 'deg)'
});
};
$('#rotate_left').on('click', function(e) {
if ( selectedBox ) {
rotateElement( -30 );
};
});
$('#rotate_right').on('click', function(e) {
if ( selectedBox ) {
rotateElement( 30 );
};
});
$('#save').on('click', function() {
var toPost = [];
$('.template_box').each(function(i) {
var thisBox = $(this);
var id = thisBox.attr('id');
var left = thisBox.position().left;
var top = thisBox.position().top;
var rotate = thisBox.data('rotate') || 0;
var data = {
'id': id,
'left': left,
'top': top,
'rotate': rotate
};
toPost.push( data );
});
console.log( toPost );
});
});
这只是一个想法,JS代码并不完美。
相关文章:
- 基于Jquery的所见即所得,具有直播的可能性
- 代理一个网站能够在iframe中进行所见即所得编辑-它是如何工作的
- 使用PageMod将所有文本框转换为所见即所得HTML编辑器
- JavaScript:将所见即所得编辑器对实时站点的更改转换为jQuery操作
- 所见即所得编辑器适用于速度模板
- 输入法所见即所得编辑器不在mysql数据库中存储值
- 使用SCEditor(所见即所得BBCode)时无法验证空字段
- 如何使用我自己的所见即所得编辑器插入图像
- 所见即所得内容中的撤消和重做SWT中的可编辑内容;不起作用
- 如何在execCommand所见即所得编辑器中查找选定的文本字体大小和名称
- Meteor/Iron路由器-何时何地运行JS以交换到所见即所得
- 使用MathJax的数学方程所见即所得编辑器
- 如何制作一个非常基本的所见即所得
- 所见即所得,没有 HTML 标记
- Javascript - 在将标签环绕后重新选择文本不起作用?所见即所得
- Javascript:在所见即所得编辑器中的插入符号处粘贴文本
- Eclipse Web Development - 安装哪些插件以及如何获取 Dojo, Ajax - 所见即所得开发
- 使用 strip_tags() 和 preg_replace() 显示所见即所得/TinyMCE 文本编辑器中输入的文本
- 所见即所得的 XML 编辑器 Web 应用程序
- 使用HTML/CSS/JQuery实现一个所见即所得的报表生成器