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

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

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

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.i18n.shared.DateTimeFormat;
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.form.DateField;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
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统计信息
* 主要是排出失败任务最多的几个负责人,督促改进
* @author zhoufang
*
*/
public class OwnerJobTrend implements IsWidget{

  private DateField date;
  private TextButton submit=new TextButton("查询",new SelectHandler(){
    public void onSelect(SelectEvent event) {
      if(!date.validate()){
        return;
      }
      RPCS.getReportService().ownerFailJobs(date.getValue(), new AbstractAsyncCallback<List<Map<String,String>>>() {
        private DateTimeFormat format=DateTimeFormat.getFormat("yyyy年MM月dd日");
        public void onSuccess(final List<Map<String, String>> result) {
          final String[] categories=new String[result.size()];
          Number[] numbers=new Number[result.size()];
          for(int i=0;i<result.size();i++){
            Map<String, String> map=result.get(i);
            categories[i]=map.get("uname")==null?map.get("uid"):map.get("uname");
            numbers[i]=Integer.valueOf(map.get("count"));
          }
          final Chart chart=new Chart();
          chart.setType(Series.Type.COLUMN);
          chart.setChartTitleText(format.format(date.getValue())+"责任人失败任务统计图");
          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() {
              public String format(ToolTipData toolTipData) {
                int index=0;
                for(int i=0;i<categories.length;i++){
                  if(categories[i].equals(toolTipData.getXAsString())){
                    index=i;
                    break;
                  }
                }
                String value= toolTipData.getYAsLong()+"个任务<br/>";
                int count=Integer.valueOf(result.get(index).get("count"));
                if(count>0){
                  for(int i=0;i<count;i++){
                    value+=result.get(index).get("history"+i)+"<br/>";
                  }
                }
                index++;
                return value;
              }
            }));
         
          chart.getXAxis().setCategories(categories);
          chart.getYAxis().setAxisTitleText("失败任务数");
          chart.addSeries(chart.createSeries().setName("失败的任务")
              .setPoints(numbers));
         
          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 OwnerJobTrend(){
    date=new DateField();
    date.setEditable(false);
    date.setAllowBlank(false);
    date.setValue(new Date());
   
    HorizontalLayoutContainer form=new HorizontalLayoutContainer();
    form.add(new FieldLabel(date,"日期"),new HorizontalLayoutData());
    form.add(submit,new HorizontalLayoutData());
   
    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.OwnerJobTrend

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.