185 lines
5.5 KiB
Java
185 lines
5.5 KiB
Java
package org.gcube.portlets.user.accountingdashboard.client.application.mainarea.filter;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import org.gcube.portlets.user.accountingdashboard.client.application.event.RequestReportEvent;
|
|
import org.gcube.portlets.user.accountingdashboard.client.application.event.RequestReportEvent.RequestReportEventHandler;
|
|
import org.gcube.portlets.user.accountingdashboard.client.application.mainarea.filter.scopetree.ScopeTreeModel;
|
|
import org.gcube.portlets.user.accountingdashboard.client.resources.AppResources;
|
|
import org.gcube.portlets.user.accountingdashboard.client.resources.ScopeTreeResources;
|
|
import org.gcube.portlets.user.accountingdashboard.shared.data.RequestReportData;
|
|
import org.gcube.portlets.user.accountingdashboard.shared.data.ScopeData;
|
|
|
|
import com.github.gwtbootstrap.client.ui.ListBox;
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.i18n.client.DateTimeFormat;
|
|
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
|
|
import com.google.gwt.i18n.client.LocaleInfo;
|
|
import com.google.gwt.uibinder.client.UiBinder;
|
|
import com.google.gwt.uibinder.client.UiField;
|
|
import com.google.gwt.user.cellview.client.CellTree;
|
|
import com.google.gwt.user.cellview.client.TreeNode;
|
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
import com.google.gwt.user.datepicker.client.CalendarUtil;
|
|
import com.google.gwt.view.client.ListDataProvider;
|
|
|
|
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
|
|
|
|
/**
|
|
*
|
|
* @author Giancarlo Panichi
|
|
*
|
|
*/
|
|
public class FilterAreaView extends ViewWithUiHandlers<FilterAreaPresenter>
|
|
implements FilterAreaPresenter.FilterAreaView {
|
|
|
|
private static Logger logger = java.util.logging.Logger.getLogger("");
|
|
|
|
interface Binder extends UiBinder<Widget, FilterAreaView> {
|
|
}
|
|
|
|
@UiField
|
|
HTMLPanel periodPanel;
|
|
|
|
@UiField
|
|
HTMLPanel explorePanel;
|
|
|
|
@UiField(provided = true)
|
|
ListBox yearStart;
|
|
|
|
@UiField(provided = true)
|
|
ListBox monthStart;
|
|
|
|
@UiField(provided = true)
|
|
ListBox yearEnd;
|
|
|
|
@UiField(provided = true)
|
|
ListBox monthEnd;
|
|
|
|
@UiField(provided = true)
|
|
CellTree scopeTree;
|
|
|
|
private ListDataProvider<ScopeData> dataProvider;
|
|
@SuppressWarnings("unused")
|
|
private AppResources resources;
|
|
|
|
private ScopeData scopeData;
|
|
|
|
@Inject
|
|
FilterAreaView(Binder uiBinder, AppResources resources) {
|
|
this.resources = resources;
|
|
init();
|
|
initWidget(uiBinder.createAndBindUi(this));
|
|
|
|
}
|
|
|
|
private void init() {
|
|
yearStart = new ListBox();
|
|
yearStart.setMultipleSelect(false);
|
|
|
|
yearEnd = new ListBox();
|
|
yearEnd.setMultipleSelect(false);
|
|
|
|
Date now = new Date();
|
|
String currentYear = DateTimeFormat.getFormat(PredefinedFormat.YEAR).format(now);
|
|
logger.log(Level.FINE, "Current year: " + currentYear);
|
|
int year = Integer.parseInt(currentYear);
|
|
for (int i = 2015; i <= year; i++) {
|
|
yearStart.addItem(String.valueOf(i));
|
|
yearEnd.addItem(String.valueOf(i));
|
|
}
|
|
|
|
// returns a String array with localized names of the months
|
|
String[] months = LocaleInfo.getCurrentLocale().getDateTimeFormatInfo().monthsFull();
|
|
logger.log(Level.FINE, "Months: " + months.length);
|
|
monthStart = new ListBox();
|
|
monthStart.setMultipleSelect(false);
|
|
|
|
monthEnd = new ListBox();
|
|
monthEnd.setMultipleSelect(false);
|
|
|
|
for (int i = 0; i < months.length; i++) {
|
|
monthStart.addItem(months[i]);
|
|
monthEnd.addItem(months[i]);
|
|
}
|
|
|
|
dataProvider = new ListDataProvider<ScopeData>();
|
|
|
|
RequestReportEventHandler handler = new RequestReportEventHandler() {
|
|
|
|
@Override
|
|
public void onData(RequestReportEvent event) {
|
|
scopeData = event.getScopeData();
|
|
requestReport();
|
|
|
|
}
|
|
};
|
|
|
|
ScopeTreeModel scopeTreeModel = new ScopeTreeModel(dataProvider, handler);
|
|
ScopeTreeResources scopeTreeResources = GWT.create(ScopeTreeResources.class);
|
|
scopeTree = new CellTree(scopeTreeModel, null, scopeTreeResources);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
public void displayScopeData(ScopeData scopeData) {
|
|
ArrayList<ScopeData> scopeDataList = new ArrayList<>();
|
|
scopeDataList.add(scopeData);
|
|
this.scopeData=scopeData;
|
|
dataProvider.setList(scopeDataList);
|
|
dataProvider.refresh();
|
|
dataProvider.flush();
|
|
TreeNode root = scopeTree.getRootTreeNode();
|
|
root.setChildOpen(root.getIndex(), true);
|
|
|
|
}
|
|
|
|
private void requestReport() {
|
|
DateTimeFormat dateTimeFormat = DateTimeFormat.getFormat("yyyy-M-dd");
|
|
|
|
String yearS = yearStart.getValue();
|
|
String monthS = monthStart.getValue();
|
|
|
|
Date dateStart = null;
|
|
try {
|
|
String dStart=yearS + "-" + monthS + "-01";
|
|
logger.fine("DateTemp1: "+dStart);
|
|
dateStart = dateTimeFormat.parse(dStart);
|
|
logger.fine("DateStart: "+dStart);
|
|
} catch (Exception e) {
|
|
logger.log(Level.SEVERE,"Error in start date: "+e.getLocalizedMessage(),e);
|
|
|
|
}
|
|
|
|
String yearE = yearEnd.getValue();
|
|
String monthE = monthEnd.getValue();
|
|
|
|
Date dateEnd = null;
|
|
try {
|
|
String dEnd=yearE + "-" + monthE + "-01";
|
|
logger.fine("DateTemp2: "+dEnd);
|
|
dateEnd = dateTimeFormat.parse(dEnd);
|
|
CalendarUtil.addMonthsToDate(dateEnd, 1);
|
|
CalendarUtil.addDaysToDate(dateEnd, -1);
|
|
logger.fine("DateEnd: "+dateEnd);
|
|
|
|
} catch (Exception e) {
|
|
logger.log(Level.SEVERE,"Error in end date: "+e.getLocalizedMessage(),e);
|
|
}
|
|
|
|
RequestReportData requestReportData=new RequestReportData(scopeData, dateStart, dateEnd);
|
|
getUiHandlers().getReport(requestReportData);
|
|
|
|
}
|
|
|
|
}
|