Package com.taobao.zeus.web.platform.client.app.report.chart

Source Code of com.taobao.zeus.web.platform.client.app.report.chart.RunningJobTrend

package com.taobao.zeus.web.platform.client.app.report.chart;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.moxieapps.gwt.highcharts.client.Chart;
import org.moxieapps.gwt.highcharts.client.Legend;
import org.moxieapps.gwt.highcharts.client.Series;
import org.moxieapps.gwt.highcharts.client.ToolTip;
import org.moxieapps.gwt.highcharts.client.ToolTipData;
import org.moxieapps.gwt.highcharts.client.ToolTipFormatter;
import org.moxieapps.gwt.highcharts.client.Legend.VerticalAlign;
import org.moxieapps.gwt.highcharts.client.plotOptions.ColumnPlotOptions;

import com.google.gwt.event.logical.shared.AttachEvent;
import com.google.gwt.event.logical.shared.AttachEvent.Handler;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.form.DateField;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.taobao.zeus.web.platform.client.util.RPCS;
import com.taobao.zeus.web.platform.client.util.async.AbstractAsyncCallback;
/**
* 运行任务的趋势图
* 包括每天 成功运行的job,失败的job
* @author zhoufang
*
*/
public class RunningJobTrend implements IsWidget{

  private DateField start;
  private DateField end;
  private TextButton submit=new TextButton("查询",new SelectHandler() {
    @Override
    public void onSelect(SelectEvent event) {
      if(start.getValue()==null){
        start.markInvalid("请正确填写");
        return;
      }
      if(end.getValue()==null || end.getValue().after(new Date())){
        end.markInvalid("请正确填写");
        return;
      }
      if(start.getValue().after(end.getValue())){
        start.markInvalid("开始日期必须小于截止日期");
        return;
      }
      if(end.getValue().getTime()-start.getValue().getTime()>15*24*60*60*1000L){
        start.markInvalid("开启截止区间太大,请设置在2周以内");
        return;
      }
      Date endDate=new Date(end.getValue().getTime());
      endDate.setHours(23);
      endDate.setMinutes(59);
     
      RPCS.getReportService().runningJobs(start.getValue(), endDate, new AbstractAsyncCallback<List<Map<String,String>>>() {
        public void onSuccess(List<Map<String, String>> result) {
          String[] categories=new String[result.size()];
          Number[] successNum=new Number[result.size()];
          Number[] failNum=new Number[result.size()];
          for(int i=0;i<result.size();i++){
            Map<String, String> map=result.get(i);
            categories[i]=map.get("date");
            successNum[i]=map.get("success")==null?0:Integer.valueOf(map.get("success"));
            failNum[i]=map.get("fail")==null?0:Integer.valueOf(map.get("fail"));
          }
         
          final Chart chart=new Chart();
          chart.setType(Series.Type.COLUMN);
          chart.setChartTitleText("运行任务趋势图");
          chart.setColumnPlotOptions(new ColumnPlotOptions()
            .setPointPadding(0.2).setBorderWidth(0))
          .setLegend(new Legend()
            .setLayout(Legend.Layout.VERTICAL)
            .setAlign(Legend.Align.LEFT)
            .setVerticalAlign(VerticalAlign.TOP)
            .setX(100)
            .setY(70)
            .setFloating(true)
            .setBackgroundColor("#FFFFFF")
            .setShadow(true))
          .setToolTip(new ToolTip()
            .setFormatter(new ToolTipFormatter() {
              @Override
              public String format(ToolTipData toolTipData) {
                return toolTipData.getYAsLong()+"";
              }
            }));
         
          chart.getXAxis().setCategories(categories);
          chart.getYAxis().setAxisTitleText("数量");
          chart.addSeries(chart.createSeries().setName("成功的任务")
              .setPoints(successNum));
          chart.addSeries(chart.createSeries().setName("失败的任务")
              .setPoints(failNum));
         
          for(int i=0;i<container.getWidgetCount();i++){
            if(container.getWidget(i) instanceof Chart){
              container.remove(container.getWidget(i));
              break;
            }
          }
          container.add(chart,new VerticalLayoutData(1, -1));
        }
      });
     
    }
  });
  private VerticalLayoutContainer container=new VerticalLayoutContainer();
 
  public RunningJobTrend(){
    start=new DateField();
    start.setEditable(false);
    start.setValue(new Date(new Date().getTime()-7*24*60*60*1000L));
    end=new DateField();
    end.setEditable(false);
    end.setValue(new Date());
    HorizontalLayoutContainer form=new HorizontalLayoutContainer();
    form.add(new FieldLabel(start, "起始日期"),new HorizontalLayoutData(0.3,1));
    form.add(new FieldLabel(end,"截止日期"),new HorizontalLayoutData(0.3, 1));
    form.add(submit,new HorizontalLayoutData(-1,-1));
   
    container.add(form,new VerticalLayoutData(1, 30));
   
    container.addAttachHandler(new Handler() {
      public void onAttachOrDetach(AttachEvent event) {
        submit.fireEvent(new SelectEvent());
      }
    });
  }

  @Override
  public Widget asWidget() {
    return container;
  }
}
TOP

Related Classes of com.taobao.zeus.web.platform.client.app.report.chart.RunningJobTrend

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.