起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2450|回复: 8

[结贴] 做不出来通过选择开始时间与结束时间来加载echarts数据,...

[复制链接]

20

主题

83

帖子

189

积分

初级会员

Rank: 2

积分
189
QQ
发表于 2016-12-21 20:44:24 | 显示全部楼层 |阅读模式
本帖最后由 技术小白 于 2016-12-21 21:03 编辑

我写的js代码,请帮忙看看
define(function(require){
        var $ = require("jquery");
        var justep = require("$UI/system/lib/justep");
        
        var Baas = require("$UI/system/lib/base/baas");
        var Model = function(){
                this.callParent();
        };
        var a;
        var leiM = wwa ;[img][/img]
        
        Model.prototype.modelLoad = function(event) {
                var moR1 = new Date().format('yyyy-MM-dd');
                var moR2 = moR1+" "+"00:00" ;
                document.getElementById("input1").value = moR2;
                this.comp("dateData").setValue("startDate", moR2);
                this.comp("dateData").setValue("endDate", new Date());
//                var foodData = this.comp("baasData1");//数据源
//                var sql = "DT BETWEEN '2016-11-18 00:00:00' AND '2016-11-19 00:00:00'";
//                foodData.setFilter("RunningPar",sql);//过滤条件
//                foodData.refreshData();
        e(this);
        };
        Model.prototype.button7Click = function(event){
                //e(this);
        };
        
        Model.prototype.baasData1CustomRefresh = function(event){
                var data = event.source;
                        Baas.sendRequest({
                        "url" : "/SYCEMS/SYCEMS", // servlet请求地址
                        "action" : "queryRunningPar", // action
                        "params" :{                        // action对应的参数
                                "columns" : Baas.getDataColumns(data),
                                "limit" : event.limit,
                                "offset" : event.offset
                        },  
                        "success" : function(resultData) {                //请求成功后的回调函数
                                var append = event.options && event.options.append;
                                a = resultData;
                                //console.log(a);
                                data.loadData(resultData, append);
                                
                        }                 
                        });
        };
        
        Date.prototype.format = function(format) {
            var o = {
                "M+": this.getMonth() + 1,
                "d+": this.getDate(),
                "h+": this.getHours(),
                "m+": this.getMinutes(),
                "s+": this.getSeconds(),
                "q+": Math.floor((this.getMonth() + 3) / 3),
                "S": this.getMilliseconds()
            };
            if (/(y+)/.test(format)) {
                format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
            }
            for (var k in o) {
                if (new RegExp("(" + k + ")").test(format)) {
                    format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
                }
            }
            return format;
                };

        function e(wm){
                var GDline1 = new Object;
            GDline1.a = a ;
            GDline1.SeriesData = [];//数据数组
            GDline1.dataRow1 = [];//一号线的数据
            GDline1.xAisxRow = [];//x轴坐标数据
            GDline1.visablelable = true;//是否可见
            GDline1.tempData = 0;
            GDline1.dateStr = [];//临时中间变量
         function echar(a, b) {//函数两个参数,a为数据源可以为json,b为可选参数,当b为1时,清空看echarts里面的值  
                /* a = eval(a);*/
                a=a.a;
                a=a.rows;
                if (b == 1) {
                    GDline1.dateStr.length = 0;
                    GDline1.dataRow1.length = 0;
                    GDline1.dataRow2.length = 0;
                    GDline1.xAisxRow.length = 0;
                }
                            for (var i = 0 ; i < a.length ; i++) {
                    if ((a[leiM].value)===null) {
                        GDline1.tempData = 0;
                    }
                    else {
                        GDline1.tempData = a[leiM].value;//10000
                    }
                    var paramt1 = {
                        name: GDline1.dateStr,
                        value: GDline1.tempData
                    };
                    GDline1.dataRow1.push(paramt1);
                    GDline1.xAisxRow.push(GDline1.dateStr);
                }
            }
           echar(GDline1,a);
                        //console.log(JSON.stringify(a));
                option = {
                         grid:{
                    x:50,
                    y:65,
                    x2:30,
                    y2:30,
                },
                            tooltip : {
                                trigger: 'axis'
                            },
                           
                            toolbox: {
                                    x: 'center',
                            top:'20%',
                                show : true,
                                feature : {
                                          dataZoom : {
                                      show : true,
                                      title : {
                                          dataZoom : '区域缩放',
                                          dataZoomReset : '区域缩放后退'
                                            }
                                        },
                                    mark : {show: false},
                                    dataView : {show: false, readOnly: false},
                                    magicType : {show: true, type: ['line', 'bar']},
                                    restore : {show: true},
                                    saveAsImage : {show: false}
                                }
                            },
                            calculable : false,
                            xAxis : [
                                {
                                        name: '时间',
                                        nameTextStyle: {
                                            color: '#576B95',
                                            fontSize: 8
                                        },
                                        splitLine: {                        //显示分界线
                                        show: false
                                    },
                                    type : 'category',
                                    boundaryGap : false,
                                    data : GDline1.xAisxRow
                                }
                            ],
                            yAxis : [
                                {        
                                        name: '温度(℃)',
                                        nameTextStyle: {
                                            color: '#576B95',
                                            fontSize: 8
                                        },
                                        splitLine: {                        //显示分界线
                                        show: false
                                    },
                                    type : 'value',
                                    axisLabel : {
                                        formatter: '{value}'
                                    }
                                }
                            ],
                            series : [
                                {
                                    name:'最高气温',
                                    type:'line',
                                    data:GDline1.dataRow1,
                                    markPoint : {
                                        data : [
                                            {type : 'max', name: '最大值'},
                                            {type : 'min', name: '最小值'}
                                        ]
                                    },
                                },
                            ]
                        };
                                            
        var myChart = echarts.init(wm.getElementByXid('main'));
        myChart.setOption(option);
        }
        return Model;
});
无标题.jpg
发表于 2016-12-22 10:25:48 | 显示全部楼层
echarts 有自己的数据格式!每次根据时间为过滤条件获取到新的数据后,需要重新获取data中的数据,改造成echarts 支持的格式,然后再次调用
  1. var myChart = echarts.init(wm.getElementByXid('main'));
  2.         myChart.setOption(option);
复制代码


重新渲染echarts 画面才可以的!
echarts  是第三方组件,不能够动态绑定实现!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

20

主题

83

帖子

189

积分

初级会员

Rank: 2

积分
189
QQ
 楼主| 发表于 2016-12-22 10:59:25 | 显示全部楼层
liangyongfei 发表于 2016-12-22 10:25
echarts 有自己的数据格式!每次根据时间为过滤条件获取到新的数据后,需要重新获取data中的数据,改造成ec ...

可是现在时间条件写不进去,
Model.prototype.modelLoad = function(event) {
//                var foodData = this.comp("baasData1");//数据源
//                var sql = "DT BETWEEN '2016-11-18 00:00:00' AND '2016-11-19 00:00:00'";
//                foodData.setFilter("RunningPar",sql);//过滤条件
//                foodData.refreshData();
}
与Model.prototype.baasData1CustomRefresh = function(event){
                var data = event.source;
                        Baas.sendRequest({
                        "url" : "/SYCEMS/SYCEMS", // servlet请求地址
                        "action" : "queryRunningPar", // action
                        "params" :{                        // action对应的参数
                                "columns" : Baas.getDataColumns(data),
                                "limit" : event.limit,
                                "offset" : event.offset
                        },  
                        "success" : function(resultData) {                //请求成功后的回调函数
                                var append = event.options && event.options.append;
                                a = resultData;
                                //console.log(a);
                                data.loadData(resultData, append);
                                
                        }                 
                        });
        };
只能执行其中一个
回复 支持 反对

使用道具 举报

发表于 2016-12-22 11:29:24 | 显示全部楼层
技术小白 发表于 2016-12-22 10:59
可是现在时间条件写不进去,
Model.prototype.modelLoad = function(event) {
//                var fo ...

建议您,先在sql语句的控制台上,写出这个sql语句,可以正确执行查询到结果,没有语法错误!
然后再给data设置filter
setFilter 就相当于给where条件后面拼接的字符串!

请问你是什么数据库??支持BETWEEN  的语法吗??
或者换种写法  DT > '2016-11-18 00:00:00'  and DT < '2016-11-19 00:00:00'
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

20

主题

83

帖子

189

积分

初级会员

Rank: 2

积分
189
QQ
 楼主| 发表于 2016-12-22 14:17:42 | 显示全部楼层
liangyongfei 发表于 2016-12-22 11:29
建议您,先在sql语句的控制台上,写出这个sql语句,可以正确执行查询到结果,没有语法错误!
然后再给data ...

  var foodData = this.comp("baasData1");//数据源
                var sql = "DT BETWEEN '2016-11-18 00:00:00' AND '2016-11-19 00:00:00'";
                foodData.setFilter("RunningPar",sql);//过滤条件
                foodData.refreshData();
这段语句是正确的,但是加上这个Model.prototype.baasData1CustomRefresh,baasData接管刷新函数后,就不执行了
回复 支持 反对

使用道具 举报

发表于 2016-12-22 14:23:25 | 显示全部楼层
本帖最后由 liangyongfei 于 2016-12-22 14:24 编辑
技术小白 发表于 2016-12-22 14:17
var foodData = this.comp("baasData1");//数据源
                var sql = "DT BETWEEN '2016-11-18 ...

onCustomRefresh 就是专门用来接管刷新的!
普通的data组件一般都是接管这个事件进行刷新的!
但是baasData组件底层已经实现了,所以不要再接管它了!否则就相当于是自己实现刷新,不适用底层的方法!

如果你是自定义action 实现的!那么也可以接管它~!但是需要自己把参数传到后台,自己写sql实现!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

20

主题

83

帖子

189

积分

初级会员

Rank: 2

积分
189
QQ
 楼主| 发表于 2016-12-22 15:06:37 | 显示全部楼层
liangyongfei 发表于 2016-12-22 14:23
onCustomRefresh 就是专门用来接管刷新的!
普通的data组件一般都是接管这个事件进行刷新的!
但是baasDat ...

如果不接管刷新,怎么把数据库转为json数据
回复 支持 反对

使用道具 举报

发表于 2016-12-22 15:15:02 | 显示全部楼层
技术小白 发表于 2016-12-22 15:06
如果不接管刷新,怎么把数据库转为json数据

你是使用的baasData实现的吧!
访问baasServer ,返回的格式本来就是json对象!

你看下 action 的定义方法返回值都是JSONObject 类型的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

20

主题

83

帖子

189

积分

初级会员

Rank: 2

积分
189
QQ
 楼主| 发表于 2016-12-22 19:28:31 | 显示全部楼层
本帖最后由 技术小白 于 2016-12-22 19:46 编辑
liangyongfei 发表于 2016-12-22 15:15
你是使用的baasData实现的吧!
访问baasServer ,返回的格式本来就是json对象!

Model.prototype.modelLoad = function(event){
                Baas.sendRequest({
                        "url" : "/SYCEMS/SYCEMS", // servlet请求地址
                        "action" : "queryRunningPar", // action
                        "params" : { // action对应的参数
                                       "filter":"DT BETWEEN '2016-11-20 00:00:00' AND '2016-11-21 00:00:00'"
                        },
                        "success" : function(resultData) {
                                a = resultData;
                                console.log(resultData)
                        } // 请求成功后的回调方法
                });
        };写好了,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-22 12:05 , Processed in 0.067125 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表