使用Fusioncharts实现后台处理进度的前台展示

$('#userfile').AjaxFileUpload({
action: '/tool/uploadZip',
onChange: function(filename){
//console.log("Change");
$('#tip_text').text("正在上传");
interval = window.setInterval(function() {
var text = $("#tip_text").text();
if (text.length < 13) {
$('#tip_text').text(text + ".");
} else {
$('#tip_text').text("正在上传");
}
$.cookie('progress', 20);
}, 200);
//$("#tip_text").append("文件上传开始");
},
// secureuri: false,
// fileElementId:'test',
onSubmit: function(filename) {
return true;
},
onComplete: function(filename, response) {
window.clearInterval(interval);
$("#file_count").html( response.zip_info.file_list.length );
$("#tip_text").append("<br />文件上传完成,即将开始进行导入");
$.cookie('progress', 40);
zip_import(response, 0, response.zip_info.file_list.length);
}
});
文件上传后,使用JS记录下上传的文件以及Zip包内文件的数量,然后开始使用JS控制逐个文件的提交。这一部分处理的难点主要在于Zip的解压和进度控制。Zip的解压有PHP的ZipArchive类,可以很方便的获取Zip内的文件列表,以及指定读取某个文件。当获取了Zip文件包的列表数量之后,我就可以在前台使用JS控制逐个文件的读取。
FusionCharts.ready(function(){
var fusioncharts = new FusionCharts({
type: 'hlineargauge',
renderAt: 'realchart',
id: 'realtime-chart',
width: '400',
height: '170',
dataFormat: 'json',
dataSource: {
"chart": {
"theme": "fint",
"caption": "后台处理进度",
"subcaption": "www.dcod.com",
"lowerLimit": "0",
"upperLimit": "100",
"numberSuffix": "%",
"chartBottomMargin": "40",
"valueFontSize": "11",
"valueFontBold": "0"
},
"colorRange": {
"color": [{
"minValue": "0",
"maxValue": "35",
"label": "文件上传",
}, {
"minValue": "35",
"maxValue": "100",
"label": "解压与保存",
}]
},
"pointers": {
"pointer": [{
"value": "0"
}]
},
"trendPoints": {
"point": [
//Trendpoint
{
"startValue": "70",
"displayValue": " ",
"dashed": "1",
"showValues": "0"
}, {
"startValue": "85",
"displayValue": " ",
"dashed": "1",
"showValues": "0"
},
//Trendzone
{
"startValue": "70",
"endValue": "85",
"displayValue": " ",
"alpha": "40"
}
]
}
},
"events": {
"rendered":function(evtObj, argObj){
evtObj.sender.intervalVar = setInterval(function(){
console.log("Txt x");
//定时获取服务端的数据
var prcnt = $.cookie('progress');
//将数据提交给图表
FusionCharts.items["realtime-chart"].feedData("value=" + prcnt);
}, 5000);
},
"disposed":function(evtObj, argObj){
console.log('disposed');
clearInterval(evtObj.sender.intervalVar);
}
}
}
);
fusioncharts.render();
});
FusionCharts设置了一个轮训间隔,不断地从后台查询数据。因为我的后台处理过程都是在领带的ajax请求中完成的,所以采取了一个折衷的办法,ajax请求完成后,将进度写入到cookie中,然后FusionCharts定时从cookie中读取进度来进行展示。
使用Fusioncharts实现后台处理进度的前台展示的更多相关文章
- ASP.NET CORE使用WebUploader对大文件分片上传,并通过ASP.NET CORE SignalR实时反馈后台处理进度给前端展示
本次,我们来实现一个单个大文件上传,并且把后台对上传文件的处理进度通过ASP.NET CORE SignalR反馈给前端展示,比如上传一个大的zip压缩包文件,后台进行解压缩,并且对压缩包中的文件进行 ...
- jsp实时显示后台批处理进度 - out分块,简单的长连接方式
这两天在实现一个批处理操作,但是想让前台实时显示后台批处理进度,本想着用复杂一些的框架可以实现异步信息调用 但是鉴于是内部管理系统,且只有一两个人用到这个功能,所以做了一个简单的长连接方式的实时响应 ...
- Web页面实现后台数据处理进度与剩余时间的显示
1.页面后台代码添加如下属性: /// <summary> /// 总数 /// </summary> private double total { set { Session ...
- Asp.Net MVC页面显示后台处理进度问题
这个问题的背景是,用户通过浏览器上传文件或Excel数据到系统中,页面需要时时显示后台处理进度,以增强用户的体验. 在GitHub上找到一个一个项目,基本实现了这个功能,具体效果如下图 代码实现过程大 ...
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type
问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json ...
- 【spring mvc】后台API查询接口,get请求,后台Date字段接收前台String类型的时间,报错default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'createDate';
后台API查询接口,get请求,后台Date字段接收前台String类型的时间筛选条件 后台接口接收 使用的实体 而createDate字段在后台实体中是Date类型 报错信息: org.spring ...
- laydate控件后台返回的时间前台格式化
//功能:laydate控件后台返回的时间前台格式化 //参数:laydate控件值 function formatDate(strTime) { if ("" === strTi ...
- java后台获取和js拼接展示信息
java后台获取和js拼接展示信息: html页面代码: <div class="results-bd"> <table id="activityInf ...
随机推荐
- mysql 命令行操作1
查看版本号 :SELECT @@version;或者status; 1.设置数据库系统的事务隔离级别 mysql> set global transaction isolation level ...
- Android下安装应用不成功解决
在手机上安装应用程序不成功,可以尝试把手机连接电脑,然后使用adb进行安装,adb安装命令: adb install Android_65632.apk 当出现: success!就表示成功,但当不成 ...
- Python之路-python(css布局、JavaScript)
CSS布局 JavaScript css布局: 后台管理界面一:(左右标签都有下来菜单) 利用position: absolute;让某个标签固定在具体位置,然后使用overflow: auto;属性 ...
- 当利用pip安装模块出现错误时咋办
>在DOS窗口中到Python安装路径的scripts中执行 pip install pyperclip 出现错误 >>错误提示:Fatal error in launcher: ...
- jqgrid笔记
//重置列表请求url var url = "url?name="+name; $(grid_list_selector).jqGrid('setGridParam',{url:u ...
- nginx---------------nginx的nginx_status配置
1. 启用nginx status配置 在默认主机里面加上location或者你希望能访问到的主机里面. server { listen *:80 default_server; s ...
- JAVA静态代码审查之checkstyle
技术总监来巡查,刚巧前段时间遇到了一个问题还没解决,就拉着大牛开问.结果,问题是解决了,还附带了另一个问题,或是要求出来,没啥技术含量,但是很麻烦的一个东西:代码格式. 之前我写代码,因为屏幕比较小, ...
- echarts 用marlkline画线 同时配置中含有datazoom,怎么设置markline
由于项目需要设置边界值即用markline 画标线,通过echarts文档可以查看到(如下) 1.通过坐标点(xAxis和yAxis的设置) 通过网上搜索许多markline的配置都是通过下面来设置的 ...
- javascript中通过匿名函数进行事件绑定
- JsonUtil工具类
package comm; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collec ...