Package honeycrm.client.mvp.views

Source Code of honeycrm.client.mvp.views.ReportsSuggestionView$ReportsSuggestionViewUiBinder

package honeycrm.client.mvp.views;

import honeycrm.client.mvp.presenters.ReportsSuggestionPresenter.Display;
import honeycrm.client.reports.ReportData;
import honeycrm.client.reports.ReportMetaData;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DecoratedPopupPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.visualization.client.AbstractDataTable;
import com.google.gwt.visualization.client.AbstractDataTable.ColumnType;
import com.google.gwt.visualization.client.DataTable;
import com.google.gwt.visualization.client.visualizations.LineChart;
import com.google.gwt.visualization.client.visualizations.LineChart.Options;

public class ReportsSuggestionView extends Composite implements Display {
  private static ReportsSuggestionViewUiBinder uiBinder = GWT.create(ReportsSuggestionViewUiBinder.class);

  interface ReportsSuggestionViewUiBinder extends UiBinder<Widget, ReportsSuggestionView> {
  }

  public ReportsSuggestionView() {
    initWidget(uiBinder.createAndBindUi(this));
   
    close.setText("Close");
    relatedReportsLbl.setText("Related Reports");
    moreReportsLbl.setText("More Reports");
  }

  @UiField Label relatedReportsLbl;
  @UiField Label moreReportsLbl;
  @UiField FlowPanel chartPanel;
  @UiField VerticalPanel relatedReportsPanel;
  @UiField Button close;
  @UiField DecoratedPopupPanel panel;

  @Override
  public void setChart(ReportData<Map<Integer, Map<String, Integer>>> reportData, ReportMetaData reportMeta) {
    chartPanel.clear();
    chartPanel.add(new LineChart(getAbstractTable(reportData, reportMeta), getAreaOptions(reportMeta)));
  }

  @Override
  public void setRelatedReports(ReportMetaData[] relatedReports) {
    relatedReportsPanel.clear();

    if (0 == relatedReports.length) {
      relatedReportsPanel.add(new Label("(none)"));
    } else {
      for (int i = 0; i < relatedReports.length; i++) {
        relatedReportsPanel.add(new Hyperlink(relatedReports[i].getTitle(), "report " + relatedReports[i].getId()));
      }
    }
  }

  private Options getAreaOptions(final ReportMetaData report) {
    Options options = Options.create();
    options.setEnableTooltip(true);
    options.setTitleX("Year"); // TODO generalize
    options.setTitle("EUR"); // TODO generalize
    options.setWidth(600);
    options.setHeight(240);
    options.setMin(0.0);
    options.setTitle(report.getTitle());
    return options;
  }

  private AbstractDataTable getAbstractTable(final ReportData<Map<Integer, Map<String, Integer>>> report, final ReportMetaData reportMeta) {
    DataTable data = DataTable.create();
    data.addColumn(ColumnType.STRING, "Year"); // TODO generalize

    for (final String column : reportMeta.getColumns()) {
      data.addColumn(ColumnType.NUMBER, column);
    }

    data.addRows(report.getValues().size());

    int i = 0;
    for (final Map.Entry<Integer, Map<String, Integer>> entry : report.getValues().entrySet()) {
      data.setValue(i, 0, String.valueOf(entry.getKey()));

      final Map<String, Integer> annualValues = entry.getValue();
      final ArrayList<String> sortedKeys = new ArrayList<String>(annualValues.keySet());
      Collections.sort(sortedKeys);

      int column = 1;
      for (final String key : sortedKeys) {
        data.setValue(i, column++, entry.getValue().get(key));
      }

      i++;
    }

    return data;
  }
 
  @UiHandler("close")
  void onClose(ClickEvent event) {
//    panel.(); // <-- no effect..
    panel.getParent().removeFromParent();
  }
}
TOP

Related Classes of honeycrm.client.mvp.views.ReportsSuggestionView$ReportsSuggestionViewUiBinder

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.