使用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 ...
随机推荐
- Q的深层嵌套
1.如果将异步方法用同步的方式执行,try catch能捕获到错误,同时不会阻塞到主进程,因此console.log(3333)能执行. var fs = require('fs'); try { v ...
- js暂停的函数
// numberMillis 毫秒 function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() ...
- mogodb监控脚本
mongodb_server.py #! /bin/env python #-*- coding:utf8 -*- import sys import os from bson.timestamp i ...
- Wampserver 2.5 多站点配置方法
写在开头:本文适用于wampserver2.5版本,和wamp的老版本配置有语法上的区别,笔者正是因为被老版本的配置办法给整迷糊了所以才总结了一篇针对2.5版本的配置方法,如果您还停留在1.x或着已经 ...
- C++之路进阶——P2022
P2022 有趣的数 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10,11,2,3,4,5,6,7,8,9. 定义K在N个数中的位置为Q( ...
- 自己赚钱送女友iPhone做惊喜
都说谈恋爱是件费时费力又费钱的事情,你要给女朋友准备各种节日的惊喜,你要给女朋友买她喜欢的裙子,你要请女朋友吃各种美味的食物......但是也别抱怨,一个男人若是连自己女朋友的这点物质要求都满足不了的 ...
- c#制作一个屏幕保护程序
代码已上传github 实现思路:纯黑窗体去边框,加入标签. 使用Timmer让windows 10标签运动.限制标签的行为. 代码: int deltX = 10; int deltY ...
- 开源镜像源(转自[tanghuimin0713的博客])
参考: http://blog.csdn.net/longerzone/article/details/8437871 http://www.douban.com/note/375227086/ 1. ...
- .NET组件控件实例编程系列——5.DataGridView数值列和日期列
在使用DataGridView编辑数据的时候,编辑的单元格一般会显示为文本框,逻辑值和图片会自动显示对应类型的列.当然我们自己可以手工选择列的类型,例如ComboBox列.Button列.Link列. ...
- zw版·Halcon与delphi(兼谈opencv)
zw版·Halcon与delphi(兼谈opencv) QQ群 247994767(delphi与halcon) <Halcon与delphi>系列,早两年就想写,不过一方面,因为Halc ...