Enhancement on annual analysis
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/performfish-analytics-portlet@179307 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
6dd76780df
commit
6f74617aba
|
@ -1,9 +1,22 @@
|
|||
|
||||
package org.gcube.portlets.user.performfishanalytics.client;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant.POPULATION_LEVEL;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.annualcontrollers.PerformFishAnnualAnalyticsController;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.controllers.PerformFishAnalyticsController;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.LoadPopulationTypeEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.util.DecodeParameterUtil;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.performfishservice.PerformFishInitParameter;
|
||||
|
||||
import com.google.gwt.core.client.EntryPoint;
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
/**
|
||||
* Entry point classes define <code>onModuleLoad()</code>.
|
||||
|
@ -15,6 +28,102 @@ public class PerformFishAnalytics implements EntryPoint {
|
|||
*/
|
||||
public void onModuleLoad() {
|
||||
|
||||
new PerformFishAnalyticsController();
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
@Override
|
||||
public void execute() {
|
||||
|
||||
Map<String, String> initParams = new HashMap<String, String>();
|
||||
for (String key : Window.Location.getParameterMap().keySet()) {
|
||||
try {
|
||||
String dKeY = DecodeParameterUtil.base64Decode(key);
|
||||
String eValue = Window.Location.getParameter(key);
|
||||
String dParam = DecodeParameterUtil.base64Decode(eValue);
|
||||
initParams.put(dKeY, dParam);
|
||||
} catch (Exception e) {
|
||||
GWT.log("Error: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
GWT.log("Decoded parameters: "+initParams);
|
||||
|
||||
|
||||
final String farmidParam = initParams.get(PerformFishAnalyticsConstant.QUERY_STRING_FARMID_PARAM);
|
||||
|
||||
if(farmidParam==null || farmidParam.isEmpty()){
|
||||
Window.alert("Error: no '"+PerformFishAnalyticsConstant.QUERY_STRING_FARMID_PARAM+"' param detected");
|
||||
return;
|
||||
}
|
||||
|
||||
final String annual = initParams.get(PerformFishAnalyticsConstant.QUERY_STRING_ANNUAL_PARAMETER);
|
||||
|
||||
boolean isAnnualCall = false;
|
||||
|
||||
try {
|
||||
isAnnualCall = Boolean.parseBoolean(annual);
|
||||
GWT.log("Read decoded isAnnual at: "+isAnnualCall);
|
||||
}catch (Exception e) {
|
||||
GWT.log("Forcing isAnnual at TRUE");
|
||||
isAnnualCall = false;
|
||||
}
|
||||
|
||||
String batchtypeParam = initParams.get(PerformFishAnalyticsConstant.QUERY_STRING_BATCHTYPE_PARAM);
|
||||
|
||||
//IS ANNUAL CALL
|
||||
if(isAnnualCall) {
|
||||
|
||||
//CALLING THE PORTLET WITH ANNUAL CONFIGURATION
|
||||
batchtypeParam = PerformFishAnalyticsConstant.BATCH_LEVEL.GROW_OUT_AGGREGATED_CLOSED_BATCHES.name();
|
||||
GWT.log("Hard cabling batchtypeParam as: "+batchtypeParam);
|
||||
|
||||
PerformFishInitParameter performFishInitParams = new PerformFishInitParameter();
|
||||
performFishInitParams.addParameter(PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM, batchtypeParam);
|
||||
performFishInitParams.addParameter(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM, farmidParam);
|
||||
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().validParameters(performFishInitParams, new AsyncCallback<PerformFishInitParameter>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(PerformFishInitParameter result) {
|
||||
PerformFishAnnualAnalyticsController controller = new PerformFishAnnualAnalyticsController();
|
||||
controller.setInitParmaters(result);
|
||||
PerformFishAnnualAnalyticsController.eventBus.fireEvent(new LoadPopulationTypeEvent(POPULATION_LEVEL.FARM.name(), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
|
||||
Window.alert(caught.getMessage());
|
||||
}
|
||||
});
|
||||
|
||||
}else {
|
||||
|
||||
//CALLING THE PORTLET WITHOUT ANNUAL CONFIGURATION
|
||||
if(batchtypeParam==null || batchtypeParam.isEmpty()){
|
||||
Window.alert("Error: no '"+PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM+"' param detected");
|
||||
return;
|
||||
}
|
||||
|
||||
PerformFishInitParameter performFishInitParams = new PerformFishInitParameter();
|
||||
performFishInitParams.addParameter(PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM, batchtypeParam);
|
||||
performFishInitParams.addParameter(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM, farmidParam);
|
||||
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().validParameters(performFishInitParams, new AsyncCallback<PerformFishInitParameter>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(PerformFishInitParameter result) {
|
||||
PerformFishAnalyticsController controller = new PerformFishAnalyticsController();
|
||||
controller.setInitParmaters(result);
|
||||
PerformFishAnalyticsController.eventBus.fireEvent(new LoadPopulationTypeEvent(POPULATION_LEVEL.BATCH.name(), null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
|
||||
Window.alert(caught.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,679 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.performfishanalytics.client.annualcontrollers;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.user.performfishanalytics.client.DataMinerAlgorithms;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant.POPULATION_LEVEL;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsServiceAsync;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.AddedBatchIdEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.AddedBatchIdEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.CallAlgorithmEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.CallAlgorithmEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.LoadBatchesEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.LoadBatchesEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.LoadPopulationTypeEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.LoadPopulationTypeEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.PerformFishFieldFormChangedEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.PerformFishFieldFormChangedEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SelectedKPIEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SelectedKPIEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SelectedPopulationTypeEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SelectedPopulationTypeEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SubmitRequestEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SubmitRequestEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.LoaderIcon;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.AnalyticsPanelResult;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.ShowResult;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.SubmitRequestPanel;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.KPI;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.OutputFile;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.csv.CSVFile;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.dataminer.DataMinerResponse;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.performfishservice.PerformFishInitParameter;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.performfishservice.PerformFishResponse;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Alert;
|
||||
import com.github.gwtbootstrap.client.ui.Modal;
|
||||
import com.github.gwtbootstrap.client.ui.Tab;
|
||||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.shared.HandlerManager;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.ComplexPanel;
|
||||
import com.google.gwt.user.client.ui.HTML;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.Panel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
/**
|
||||
* The Class PerformFishAnalyticsController.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Jan 16, 2019
|
||||
*/
|
||||
public class PerformFishAnnualAnalyticsController {
|
||||
|
||||
/** The Constant eventBus. */
|
||||
|
||||
public final static HandlerManager eventBus = new HandlerManager(null);
|
||||
|
||||
/** The view controller. */
|
||||
private PerformFishAnnualAnalyticsViewController viewAnnualController;
|
||||
|
||||
/** The decrypt parameters. */
|
||||
private PerformFishInitParameter decryptParameters;
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new perform fish analytics controller.
|
||||
*/
|
||||
public PerformFishAnnualAnalyticsController() {
|
||||
|
||||
registerHandlers();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the inits the parmaters.
|
||||
*
|
||||
* @param result the new inits the parmaters
|
||||
*/
|
||||
public void setInitParmaters(PerformFishInitParameter result) {
|
||||
this.decryptParameters = result;
|
||||
viewAnnualController = new PerformFishAnnualAnalyticsViewController();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register handlers.
|
||||
*/
|
||||
private void registerHandlers() {
|
||||
|
||||
eventBus.addHandler(LoadPopulationTypeEvent.TYPE, new LoadPopulationTypeEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onLoadPopulationType(
|
||||
LoadPopulationTypeEvent loadPopulationEvent) {
|
||||
|
||||
viewAnnualController.loadPopulationTypeForLevelAndBatchType(loadPopulationEvent.getPopulationName(), decryptParameters);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
eventBus.addHandler(CallAlgorithmEvent.TYPE, new CallAlgorithmEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onCall(CallAlgorithmEvent callAlgorithmEvent) {
|
||||
|
||||
callAlgorithm(callAlgorithmEvent.getAlgorithm(), callAlgorithmEvent.getFocusID(), callAlgorithmEvent.getInputKPI(), callAlgorithmEvent.getOutputKPI());
|
||||
}
|
||||
});
|
||||
|
||||
eventBus.addHandler(SelectedPopulationTypeEvent.TYPE, new SelectedPopulationTypeEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onSelectedPopulationType(
|
||||
SelectedPopulationTypeEvent selectedPopulationTypeEvent) {
|
||||
|
||||
viewAnnualController.setRootPopulationTypeForKPIs(selectedPopulationTypeEvent.getSelectedPopulationType());
|
||||
}
|
||||
});
|
||||
|
||||
eventBus.addHandler(SelectedKPIEvent.TYPE, new SelectedKPIEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onSelectedKPI(SelectedKPIEvent selectedKPI) {
|
||||
GWT.log("Selected KPI: "+selectedKPI);
|
||||
viewAnnualController.manageKPI(selectedKPI.getKpi(), selectedKPI.isChecked(), selectedKPI.getSelectedPopulationType());
|
||||
eventBus.fireEvent(new PerformFishFieldFormChangedEvent(null));
|
||||
|
||||
//viewController.manageAlgorithmsSubmit(selectedKPIsSize);
|
||||
// List<String> batchIds = viewController.getSelectedBatchID();
|
||||
// if(batchIds==null || batchIds.size()==0) {
|
||||
// viewController.enableAllAlgorithmsForSubmit(false);
|
||||
// }else
|
||||
|
||||
//viewController.manageAlgorithmsSubmit(selectedKPIsSize);
|
||||
}
|
||||
});
|
||||
|
||||
eventBus.addHandler(LoadBatchesEvent.TYPE, new LoadBatchesEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onLoadBatches(LoadBatchesEvent loadBatchesEvent) {
|
||||
|
||||
viewAnnualController.hideErrors();
|
||||
|
||||
final Map<String, List<String>> mapParameters = new HashMap<String, List<String>>();
|
||||
String farmId = decryptParameters.getParameters().get(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM);
|
||||
String batchType = viewAnnualController.getForm().getBatchType();
|
||||
|
||||
List<String> listYear = viewAnnualController.getForm().getYear();
|
||||
|
||||
mapParameters.put(PerformFishAnalyticsConstant.PERFORM_FISH_FARMID_PARAM, Arrays.asList(farmId));
|
||||
mapParameters.put(PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM, Arrays.asList(batchType));
|
||||
|
||||
if(!listYear.isEmpty()){
|
||||
mapParameters.put(PerformFishAnalyticsConstant.PERFORM_FISH_QUARTER_PARAM, listYear);
|
||||
}
|
||||
|
||||
final Modal modal = new Modal(true);
|
||||
modal.setCloseVisible(false);
|
||||
modal.hide(false);
|
||||
final VerticalPanel vp = new VerticalPanel();
|
||||
LoaderIcon loader = new LoaderIcon("Loading batch(es) from PerformFish service, please wait...");
|
||||
vp.add(loader);
|
||||
loader.show(true);
|
||||
modal.add(vp);
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().submitRequestToPerformFishService(mapParameters, new AsyncCallback<PerformFishResponse>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
modal.hide();
|
||||
Window.alert(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(PerformFishResponse performFishResponse) {
|
||||
modal.hide();
|
||||
viewAnnualController.managePerformFishServiceResponse(performFishResponse, mapParameters, POPULATION_LEVEL.BATCH);
|
||||
}
|
||||
});
|
||||
modal.show();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
eventBus.addHandler(PerformFishFieldFormChangedEvent.TYPE, new PerformFishFieldFormChangedEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onFieldFormChanged(
|
||||
PerformFishFieldFormChangedEvent performFishFieldFormChangedEvent) {
|
||||
|
||||
viewAnnualController.setReloadPerformFishServiceData(true);
|
||||
boolean isValidForm = viewAnnualController.validatePerformFishInputFields();
|
||||
|
||||
//viewController.resetBatchIdStatus();
|
||||
|
||||
if(isValidForm) {
|
||||
//boolean isKPIsSelected = viewAnnualController.validateKPIFields();
|
||||
int selectedKPIsSize = viewAnnualController.getSelectedKPIs().size();
|
||||
if(selectedKPIsSize>0) {
|
||||
viewAnnualController.enableAllAlgorithmsForSubmit(true);
|
||||
}else
|
||||
viewAnnualController.enableAllAlgorithmsForSubmit(false);
|
||||
|
||||
}else {
|
||||
//viewController.enableLoadBatches(false);
|
||||
viewAnnualController.enableAllAlgorithmsForSubmit(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
eventBus.addHandler(AddedBatchIdEvent.TYPE, new AddedBatchIdEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onAddedBatchId(AddedBatchIdEvent checkValidBatchIdEvent) {
|
||||
|
||||
boolean isBatchIdValid = viewAnnualController.validateBatchIdSelection();
|
||||
if(isBatchIdValid)
|
||||
viewAnnualController.enableAllAlgorithmsForSubmit(true);
|
||||
else
|
||||
viewAnnualController.enableAllAlgorithmsForSubmit(false);
|
||||
|
||||
//viewController.resyncSelectedKPIs();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
eventBus.addHandler(SubmitRequestEvent.TYPE, new SubmitRequestEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onSubmitRequest(SubmitRequestEvent submitRequestEvent) {
|
||||
|
||||
boolean isValidBatchId = viewAnnualController.validateBatchIdSelection();
|
||||
|
||||
boolean isValidKPI = viewAnnualController.validateKPIFields();
|
||||
|
||||
List<KPI> selectedKPI = viewAnnualController.getSelectedKPIs();
|
||||
viewAnnualController.manageAlgorithmsSubmit(selectedKPI.size());
|
||||
|
||||
if(isValidBatchId && isValidKPI){
|
||||
|
||||
switch (submitRequestEvent.getChartType()) {
|
||||
|
||||
case BOXPLOT:
|
||||
//UNARY
|
||||
//callAlgorithm(submitRequestEvent.getChartType(), viewController.getSelectedBatchID().get(0), selectedKPI, null);
|
||||
break;
|
||||
|
||||
case SCATTER:
|
||||
// if(selectedKPI.size()==2)
|
||||
// callAlgorithm(submitRequestEvent.getChartType(), viewController.getSelectedBatchID().get(0), selectedKPI, null);
|
||||
// else
|
||||
// Window.alert("Something seems wrong... You must select exactly two KPIs to execute the "+submitRequestEvent.getChartType());
|
||||
break;
|
||||
|
||||
case CORRELATION:
|
||||
//callDataMinerServiceForChartTypeCorrelation(viewController.getPerformFishResponse(), viewController.getRequestMapParameters());
|
||||
break;
|
||||
|
||||
case SPEEDOMETER:
|
||||
//UNARY
|
||||
//callAlgorithm(submitRequestEvent.getChartType(), viewController.getSelectedBatchID().get(0), selectedKPI, selectedKPI);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Call data miner service for chart type correlation.
|
||||
*
|
||||
* @param performFishResponse the perform fish response
|
||||
* @param performFishRequestParameters the perform fish request parameters
|
||||
*/
|
||||
private void callDataMinerServiceForChartTypeCorrelation(final PerformFishResponse performFishResponse, final Map<String, List<String>> performFishRequestParameters) {
|
||||
|
||||
GWT.log("Read perform fish response: "+performFishResponse);
|
||||
|
||||
String batchTableURL = performFishResponse.getMapParameters().get(PerformFishAnalyticsConstant.BATCHES_TABLE);
|
||||
|
||||
if(batchTableURL==null || batchTableURL.isEmpty())
|
||||
Window.alert("Something seems wrong. No batches tables matching with parameter "+PerformFishAnalyticsConstant.BATCHES_TABLE+" returned from service");
|
||||
|
||||
final Map<String, List<String>> mapParameters = new HashMap<String, List<String>>();
|
||||
|
||||
StringBuilder dataInputsFormatter = new StringBuilder();
|
||||
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_SCALEP_PARAM+"=BATCH;");
|
||||
String theBatchType = viewAnnualController.getForm().getBatchType();
|
||||
theBatchType = theBatchType.replace("_CLOSED_BATCHES", ""); //REMOVING SUFFIX _CLOSED_BATCHES FOR DATAMINER CALL
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_BATCHTYPE_PARAM+"="+theBatchType+";");
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_CHARTTYPE_PARAM+"="+ DataMinerAlgorithms.CORRELATION+";");
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_FARMFILE_PARAM+"="+batchTableURL+";");
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_FOCUS_PARAM+"=ID;");
|
||||
|
||||
String kpiCodes = "";
|
||||
for (KPI kpi : viewAnnualController.getSelectedKPIs()) {
|
||||
kpiCodes+=kpi.getCode()+"|";
|
||||
}
|
||||
//remove last |
|
||||
kpiCodes = kpiCodes.substring(0, kpiCodes.length()-1);
|
||||
dataInputsFormatter.append("inputKPI="+kpiCodes+";");
|
||||
//dataInputsFormatter.append("outputKPI=;");
|
||||
|
||||
String dataInParameters = dataInputsFormatter.toString();
|
||||
GWT.log("Calling DM service with client input parameters: "+dataInParameters);
|
||||
|
||||
mapParameters.put(PerformFishAnalyticsConstant.DATA_INPUTS, Arrays.asList(dataInParameters));
|
||||
|
||||
final SubmitRequestPanel submitRequestPanel = new SubmitRequestPanel("", 1);
|
||||
submitRequestPanel.showLoader(true, "Submitting "+DataMinerAlgorithms.CORRELATION.getName()+" request to DM Service...");
|
||||
String tabTitle = DataMinerAlgorithms.CORRELATION.getName().substring(0,1).toUpperCase()+DataMinerAlgorithms.CORRELATION.getName().toLowerCase().substring(1, DataMinerAlgorithms.CORRELATION.getName().length()); //CAMEL CASE
|
||||
final Tab tab = viewAnnualController.createTab(submitRequestPanel, tabTitle+" #"+(viewAnnualController.currentNumberOfTab()+1));
|
||||
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().callingDataMinerPerformFishCorrelationAnalysis(performFishResponse, mapParameters, new AsyncCallback<DataMinerResponse>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(DataMinerResponse dmResponse) {
|
||||
submitRequestPanel.showLoader(false, null);
|
||||
checkTabSpinner(submitRequestPanel, tab);
|
||||
AnalyticsPanelResult analyticsPanelResult = new AnalyticsPanelResult();
|
||||
analyticsPanelResult.addSelectedAreas(performFishRequestParameters.get(PerformFishAnalyticsConstant.PERFORM_FISH_AREA_PARAM));
|
||||
analyticsPanelResult.addSelectedKPIs(viewAnnualController.getSelectedKPIs());
|
||||
|
||||
|
||||
|
||||
//TODO COMMENTED NOW
|
||||
//analyticsPanelResult.addListBatchIds(viewController.getListBatchesID());
|
||||
|
||||
|
||||
|
||||
analyticsPanelResult.addParameters(PerformFishAnalyticsConstant.DATA_INPUTS, mapParameters, viewAnnualController.getForm().getBatchType());
|
||||
analyticsPanelResult.addResults(dmResponse);
|
||||
submitRequestPanel.addWidget(analyticsPanelResult);
|
||||
//viewController.geTabPanelView().addResult(resultPanel, "Analysis #"+(viewController.geTabPanelView().countTab()+1));
|
||||
//modal.hide();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
GWT.log(caught.toString());
|
||||
submitRequestPanel.showLoader(false, null);
|
||||
checkTabSpinner(submitRequestPanel, tab);
|
||||
try {
|
||||
AnalyticsPanelResult analyticsPanelResult = new AnalyticsPanelResult();
|
||||
analyticsPanelResult.addSelectedAreas(performFishRequestParameters.get(PerformFishAnalyticsConstant.PERFORM_FISH_AREA_PARAM));
|
||||
analyticsPanelResult.addSelectedKPIs(viewAnnualController.getSelectedKPIs());
|
||||
|
||||
//TODO COMMENTED NOW
|
||||
//analyticsPanelResult.addListBatchIds(viewController.getListBatchesID());
|
||||
|
||||
|
||||
analyticsPanelResult.addParameters(PerformFishAnalyticsConstant.DATA_INPUTS, mapParameters, viewAnnualController.getForm().getBatchType());
|
||||
submitRequestPanel.addWidget(analyticsPanelResult);
|
||||
}catch (Exception e) {
|
||||
// TODO: handle exception
|
||||
}
|
||||
|
||||
Alert error = new Alert(caught.getMessage());
|
||||
error.setClose(false);
|
||||
error.setType(AlertType.ERROR);
|
||||
submitRequestPanel.addWidget(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creating new TAB and calling DM algorithm.
|
||||
*
|
||||
* @param algorithm the algorithm
|
||||
* @param focusID the focus id
|
||||
* @param inputKPI the input kpi
|
||||
* @param outputKPI the output kpi
|
||||
*/
|
||||
private void callAlgorithm(DataMinerAlgorithms algorithm, String focusID, List<KPI> inputKPI, final List<KPI> outputKPI){
|
||||
|
||||
// List<String> listBatchID = viewController.getSelectedBatchID();
|
||||
//
|
||||
// if(listBatchID==null || listBatchID.size()==0)
|
||||
// Window.alert("Something seems wrong, no selected BatchID, try again");
|
||||
|
||||
SubmitRequestPanel submitRequestPanel = new SubmitRequestPanel("", 1);
|
||||
//submitRequestPanel.getElement().addClassName("ext-horizontal-panel");
|
||||
String tabTitle = algorithm.getName().substring(0,1).toUpperCase()+algorithm.getName().toLowerCase().substring(1, algorithm.getName().length()); //CAMEL CASE
|
||||
Tab tab = viewAnnualController.createTab(submitRequestPanel, tabTitle+" #"+(viewAnnualController.currentNumberOfTab()+1));
|
||||
|
||||
switch (algorithm) {
|
||||
case BOXPLOT:
|
||||
case SPEEDOMETER:
|
||||
|
||||
submitRequestPanel.setTotalRequests(inputKPI.size());
|
||||
for (KPI kpi : inputKPI) {
|
||||
String title = "KPI: "+kpi.getName();
|
||||
HTML toBigTitle = new HTML(title);
|
||||
toBigTitle.getElement().addClassName("to-big-title");
|
||||
submitRequestPanel.addWidget(toBigTitle);
|
||||
HorizontalPanel hp = new HorizontalPanel();
|
||||
hp.getElement().addClassName("ext-horizontal-panel");
|
||||
callDataMinerServiceForChart(viewAnnualController.getPerformFishResponse(), POPULATION_LEVEL.BATCH, Arrays.asList(kpi), Arrays.asList(kpi), algorithm, focusID, submitRequestPanel, hp, tab);
|
||||
//resultPanel.add(hp);
|
||||
submitRequestPanel.addWidget(hp);
|
||||
}
|
||||
break;
|
||||
case SCATTER:
|
||||
|
||||
if(inputKPI.get(0)==null || inputKPI.get(1)==null){
|
||||
submitRequestPanel.setTheTitle("Sorry, something seems wrong, the selected KPIs are not valid. Please try again");
|
||||
checkTabSpinner(submitRequestPanel, tab);
|
||||
return;
|
||||
// Window.alert("Something seems wrong, no selected BatchID, try again");
|
||||
}
|
||||
|
||||
String titleScatter = "KPI: "+inputKPI.get(0).getName() +" vs "+inputKPI.get(1).getName();
|
||||
submitRequestPanel.setTheTitle(titleScatter);
|
||||
|
||||
default:
|
||||
callDataMinerServiceForChart(viewAnnualController.getPerformFishResponse(), POPULATION_LEVEL.BATCH, inputKPI, outputKPI, algorithm, focusID, submitRequestPanel, submitRequestPanel.getContainerPanel(), tab);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Call data miner service for chart.
|
||||
*
|
||||
* @param performFishResponse the perform fish response
|
||||
* @param scalePValue the scale p value
|
||||
* @param inputKPI the input kpi
|
||||
* @param outputKPI the output kpi
|
||||
* @param chartType the chart type
|
||||
* @param focusID the focus id
|
||||
* @param requestPanel the request panel
|
||||
* @param panelContainer the panel
|
||||
* @param tab the tab
|
||||
*/
|
||||
private void callDataMinerServiceForChart(PerformFishResponse performFishResponse, POPULATION_LEVEL scalePValue, final List<KPI> inputKPI, final List<KPI> outputKPI, final DataMinerAlgorithms chartType, final String focusID, final SubmitRequestPanel requestPanel, final ComplexPanel panelContainer, final Tab tab) {
|
||||
|
||||
GWT.log("Read perform fish response: "+performFishResponse);
|
||||
|
||||
String batchTableURL = performFishResponse.getMapParameters().get(PerformFishAnalyticsConstant.BATCHES_TABLE);
|
||||
|
||||
if(batchTableURL==null || batchTableURL.isEmpty())
|
||||
Window.alert("Something seems wrong. No batches tables matching with parameter "+PerformFishAnalyticsConstant.BATCHES_TABLE+" returned from service");
|
||||
|
||||
|
||||
StringBuilder dataInputsFormatter = new StringBuilder();
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_SCALEP_PARAM+"="+scalePValue.name()+";");
|
||||
String theBatchType = viewAnnualController.getForm().getBatchType();
|
||||
theBatchType = theBatchType.replace("_CLOSED_BATCHES", ""); //REMOVING SUFFIX _CLOSED_BATCHES FOR DATAMINER CALL
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_BATCHTYPE_PARAM+"="+theBatchType+";");
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_CHARTTYPE_PARAM+"="+ chartType +";");
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_FARMFILE_PARAM+"="+batchTableURL+";");
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_FOCUS_PARAM+"="+focusID+";");
|
||||
//dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_FOCUS_PARAM+"=ID;");
|
||||
|
||||
if(inputKPI!=null && inputKPI.size()>0){
|
||||
String kpiCodes = "";
|
||||
for (KPI kpi : inputKPI) {
|
||||
kpiCodes+=kpi.getCode()+"|";
|
||||
}
|
||||
//remove last |
|
||||
kpiCodes = kpiCodes.substring(0, kpiCodes.length()-1);
|
||||
|
||||
GWT.log("Input KPICodes: "+kpiCodes);
|
||||
//ADDING KPIs code
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_INPUT_KPI_PARAM+"="+kpiCodes+";");
|
||||
|
||||
}
|
||||
|
||||
if(outputKPI!=null && outputKPI.size()>0){
|
||||
String kpiCodes = "";
|
||||
for (KPI kpi : outputKPI) {
|
||||
kpiCodes+=kpi.getCode()+"|";
|
||||
}
|
||||
//remove last |
|
||||
kpiCodes = kpiCodes.substring(0, kpiCodes.length()-1);
|
||||
|
||||
GWT.log("Output KPICodes: "+kpiCodes);
|
||||
//ADDING KPIs code
|
||||
dataInputsFormatter.append(PerformFishAnalyticsConstant.DM_OUTPUT_KPI_PARAM+"="+kpiCodes+";");
|
||||
|
||||
}
|
||||
|
||||
String dataInParameters = dataInputsFormatter.toString();
|
||||
GWT.log("Calling DM service with client input parameters: "+dataInParameters);
|
||||
|
||||
Map<String, List<String>> mapParameters = new HashMap<String, List<String>>();
|
||||
mapParameters.put(PerformFishAnalyticsConstant.DATA_INPUTS, Arrays.asList(dataInParameters));
|
||||
|
||||
final LoaderIcon loaderIcon = new LoaderIcon("Submitting request to "+chartType+" Analysis...");
|
||||
loaderIcon.setVisible(true);
|
||||
panelContainer.setVisible(true);
|
||||
panelContainer.add(loaderIcon);
|
||||
Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
|
||||
@Override
|
||||
public void execute() {
|
||||
loaderIcon.setFocus(true);
|
||||
}});
|
||||
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().callingDataMinerPerformFishAnalysis(mapParameters, new AsyncCallback<DataMinerResponse>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(DataMinerResponse dmResponse) {
|
||||
loaderIcon.setVisible(false);
|
||||
checkTabSpinner(requestPanel, tab);
|
||||
//field_unary_algorithm.setVisible(true);
|
||||
GWT.log("I'm displaying: "+dmResponse);
|
||||
displayOutputFilesAsStaticEntities(dmResponse, chartType, inputKPI, outputKPI, focusID, panelContainer, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
loaderIcon.setVisible(false);
|
||||
checkTabSpinner(requestPanel, tab);
|
||||
displayOutputFilesAsStaticEntities(null, chartType, inputKPI, outputKPI, focusID, panelContainer, true);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the spinner if all DM responses are returned.
|
||||
*
|
||||
* @param requestPanel the request panel
|
||||
* @param tab the tab
|
||||
*/
|
||||
private void checkTabSpinner(SubmitRequestPanel requestPanel, Tab tab){
|
||||
requestPanel.incrementCompletedRequests();
|
||||
int completed = requestPanel.getCompletedRequests();
|
||||
int total = requestPanel.getTotalRequests();
|
||||
|
||||
if(completed>=total) {
|
||||
viewAnnualController.noSpinner(tab);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display output files as static entities.
|
||||
*
|
||||
* @param dmResponse the dm response
|
||||
* @param chartType the chart type
|
||||
* @param inputKPIs the input kp is
|
||||
* @param outputKPIs the output kp is
|
||||
* @param focusID the focus id
|
||||
* @param container the container
|
||||
* @param displayError the display error
|
||||
*/
|
||||
private void displayOutputFilesAsStaticEntities(DataMinerResponse dmResponse, final DataMinerAlgorithms chartType, List<KPI> inputKPIs, List<KPI> outputKPIs, final String focusID, final Panel container, boolean displayError){
|
||||
|
||||
String title = displayError?"No results ":"";
|
||||
|
||||
if(displayError){
|
||||
Alert alert = new Alert(title);
|
||||
alert.setType(AlertType.ERROR);
|
||||
alert.setClose(false);
|
||||
alert.getElement().getStyle().setMargin(10, Unit.PX);
|
||||
container.add(alert);
|
||||
return;
|
||||
}
|
||||
|
||||
final String toTitle = title;
|
||||
|
||||
for (final OutputFile outputFile : dmResponse.getListOutput()) {
|
||||
|
||||
switch (outputFile.getDataType()) {
|
||||
case IMAGE:
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().getImageFile(outputFile, new AsyncCallback<String>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
//showAlert(caught.getMessage(), AlertType.ERROR, true, uib_vp_deanalanlysis_request_container);
|
||||
Window.alert(caught.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String base64Content) {
|
||||
|
||||
String title = toTitle;
|
||||
switch (chartType) {
|
||||
case BOXPLOT:
|
||||
title = chartType.getName()+" - on all batches<br>";
|
||||
title += "Blue dots indicate the selected batch(es): "+focusID;
|
||||
break;
|
||||
case CORRELATION:
|
||||
break;
|
||||
case DEA_ANALYSIS:
|
||||
break;
|
||||
case SCATTER:
|
||||
break;
|
||||
case SPEEDOMETER:
|
||||
title = "Speedometer<br>";
|
||||
title+= "Selected BATCH ID: "+focusID+"<br>";
|
||||
title+= "Normalized with respect to all batches in the VRE";
|
||||
break;
|
||||
case DEA_CHART:
|
||||
break;
|
||||
}
|
||||
|
||||
ShowResult showResult = new ShowResult(title);
|
||||
showResult.showImage(base64Content);
|
||||
container.add(showResult);
|
||||
|
||||
}
|
||||
});
|
||||
break;
|
||||
case CSV:
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().getCSVFile(outputFile, true, new AsyncCallback<CSVFile>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
//showAlert(caught.getMessage(), AlertType.ERROR, true, uib_vp_deanalanlysis_request_container);
|
||||
Window.alert(caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CSVFile result) {
|
||||
GWT.log("Displaying: "+result);
|
||||
|
||||
String title = toTitle;
|
||||
switch (chartType) {
|
||||
case BOXPLOT:
|
||||
if(result.getFileName().contains("_user")){
|
||||
title = "My Batch(es)";
|
||||
}else{
|
||||
title = "All batches in the VRE (including mine)";
|
||||
}
|
||||
break;
|
||||
case CORRELATION:
|
||||
break;
|
||||
case DEA_ANALYSIS:
|
||||
break;
|
||||
case SCATTER:
|
||||
break;
|
||||
case SPEEDOMETER:
|
||||
break;
|
||||
case DEA_CHART:
|
||||
break;
|
||||
}
|
||||
|
||||
ShowResult showResult = new ShowResult(title);
|
||||
showResult.showCSVFile(result);
|
||||
container.add(showResult);
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,482 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.performfishanalytics.client.annualcontrollers;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant.POPULATION_LEVEL;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsServiceAsync;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.BaseDockLayoutPanel;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.BodyPanel;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.CustomTreeModel;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.HeaderPanel;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewannualbinder.AnnualListKPIView;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewannualbinder.PerformFishAnnualAnalitycsFormView;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.PortletTitle;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.RecapSubmitPage;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.TabPanelView;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.KPI;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.Population;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.PopulationType;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.performfishservice.PerformFishInitParameter;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.performfishservice.PerformFishResponse;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Tab;
|
||||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.user.cellview.client.CellTree;
|
||||
import com.google.gwt.user.cellview.client.TreeNode;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.RootPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
|
||||
/**
|
||||
* The Class PerformFishAnnualAnalyticsViewController.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||
*
|
||||
* May 7, 2019
|
||||
*/
|
||||
public class PerformFishAnnualAnalyticsViewController {
|
||||
|
||||
/** The Constant PERFORM_FISH_ANALYTICS_DIV. */
|
||||
public static final String PERFORM_FISH_ANALYTICS_DIV = "perform-fish-analytics";
|
||||
|
||||
/** The base dock layout panel. */
|
||||
private BaseDockLayoutPanel baseDockLayoutPanel;
|
||||
|
||||
/** The header page. */
|
||||
private HeaderPanel headerPage;
|
||||
|
||||
/** The body page. */
|
||||
private BodyPanel bodyPage;
|
||||
|
||||
/** The batch ID and list KPI. */
|
||||
private AnnualListKPIView annualListKPIView;
|
||||
|
||||
/** The form. */
|
||||
private PerformFishAnnualAnalitycsFormView form;
|
||||
|
||||
/** The selected population. */
|
||||
private Population selectedPopulation;
|
||||
|
||||
/** The custom tree model. */
|
||||
private CustomTreeModel customTreeModel;
|
||||
|
||||
/** The tree. */
|
||||
private CellTree tree;
|
||||
|
||||
/** The west panel. */
|
||||
private VerticalPanel westPanel;
|
||||
|
||||
/** The est panel. */
|
||||
private VerticalPanel estPanel;
|
||||
|
||||
/** The recap page. */
|
||||
private RecapSubmitPage recapPage;
|
||||
|
||||
/** The tab panel. */
|
||||
private TabPanelView tabPanel;
|
||||
|
||||
/** The root panel. */
|
||||
private VerticalPanel rootPanel;
|
||||
|
||||
/** The reload perform fish service data. */
|
||||
private boolean reloadPerformFishServiceData = true;
|
||||
|
||||
/**
|
||||
* Instantiates a new perform fish analytics view controller.
|
||||
*/
|
||||
public PerformFishAnnualAnalyticsViewController() {
|
||||
initLayout();
|
||||
form = new PerformFishAnnualAnalitycsFormView();
|
||||
//customTreeModel = new CustomTreeModel();
|
||||
customTreeModel = new CustomTreeModel(PerformFishAnnualAnalyticsController.eventBus);
|
||||
annualListKPIView = new AnnualListKPIView();
|
||||
tree = new CellTree(customTreeModel, null);
|
||||
//tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
|
||||
westPanel.add(form);
|
||||
//estPanel.add(recapPage);
|
||||
//bodyPage.add(form);
|
||||
//tree.setWidth("600px");
|
||||
//tree.setSize("600px", "800px");
|
||||
annualListKPIView.add(tree);
|
||||
bodyPage.addWidget(annualListKPIView);
|
||||
bodyPage.addWidget(recapPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Inits the layout.
|
||||
*/
|
||||
private void initLayout(){
|
||||
rootPanel = new VerticalPanel();
|
||||
headerPage = new HeaderPanel();
|
||||
bodyPage = new BodyPanel();
|
||||
|
||||
baseDockLayoutPanel = new BaseDockLayoutPanel(Unit.PX);
|
||||
headerPage.showLoading(true, "Loading Data....");
|
||||
westPanel = new VerticalPanel();
|
||||
estPanel = new VerticalPanel();
|
||||
recapPage = new RecapSubmitPage();
|
||||
tabPanel = new TabPanelView();
|
||||
|
||||
headerPage.add(new PortletTitle("PerformFISH Statistical Analysis"));
|
||||
|
||||
//baseDockLayoutPanel.addNorth(headerPage, 60);
|
||||
baseDockLayoutPanel.addWest(westPanel, 500);
|
||||
//baseDockLayoutPanel.addEast(estPanel, 250);
|
||||
baseDockLayoutPanel.add(bodyPage);
|
||||
|
||||
tabPanel.getTabCreateRequestPanel().add(baseDockLayoutPanel);
|
||||
|
||||
rootPanel.add(headerPage);
|
||||
rootPanel.add(tabPanel);
|
||||
RootPanel.get(PERFORM_FISH_ANALYTICS_DIV).add(rootPanel);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates the tab.
|
||||
*
|
||||
* @param w the w
|
||||
* @param tabTitle the tab title
|
||||
* @return the tab
|
||||
*/
|
||||
public Tab createTab(Widget w, String tabTitle){
|
||||
return tabPanel.addAsTab(w, tabTitle, true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* No spinner.
|
||||
*
|
||||
* @param tab the tab
|
||||
*/
|
||||
public void noSpinner(Tab tab){
|
||||
tabPanel.setNoSpinner(tab);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Current number of tab.
|
||||
*
|
||||
* @return the int
|
||||
*/
|
||||
public int currentNumberOfTab(){
|
||||
|
||||
return tabPanel.countTab();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the base panel.
|
||||
*
|
||||
* @return the basePanel
|
||||
*/
|
||||
public BaseDockLayoutPanel getBasePanel() {
|
||||
|
||||
return baseDockLayoutPanel;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load population type for level and batch type.
|
||||
*
|
||||
* @param populationName the population name
|
||||
* @param decodedParameters the decoded parameters
|
||||
*/
|
||||
public void loadPopulationTypeForLevelAndBatchType(final String populationName, final PerformFishInitParameter decodedParameters){
|
||||
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().getListPopulationType(populationName, new AsyncCallback<List<PopulationType>>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<PopulationType> result) {
|
||||
|
||||
GWT.log("Loaded list of "+PopulationType.class.getSimpleName()+ ": "+result);
|
||||
headerPage.showLoading(false);
|
||||
|
||||
if(result.size()>0){
|
||||
String passedBatchType = decodedParameters.getParameters().get(PerformFishAnalyticsConstant.PERFORM_FISH_BATCH_TYPE_PARAM);
|
||||
for (PopulationType populationType : result) {
|
||||
|
||||
if(populationType.getName().compareToIgnoreCase(passedBatchType)==0){
|
||||
GWT.log("Found the passed batch type: "+populationType);
|
||||
selectedPopulation = result.get(0).getPopulation();
|
||||
form.addPopulationTypes(populationName, Arrays.asList(populationType), selectedPopulation);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
Window.alert("No batch type found for level: "+populationName);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
headerPage.showLoading(false);
|
||||
String error = "Error on getting Population Type for population: "+populationName;
|
||||
GWT.log(caught.getLocalizedMessage());
|
||||
Window.alert(error);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the root population type for kp is.
|
||||
*
|
||||
* @param rootPopulationType the new root population type for kp is
|
||||
*/
|
||||
public void setRootPopulationTypeForKPIs(final PopulationType rootPopulationType) {
|
||||
GWT.log("Set root: "+rootPopulationType);
|
||||
//customTreeModel.addChildrenListKPI(rootPopulationType.getListKPI());
|
||||
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().getPopulationTypeWithListKPI(rootPopulationType.getId(), new AsyncCallback<PopulationType>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
|
||||
Window.alert("Error on loading KPIs for population type: "+rootPopulationType.getName());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(PopulationType result) {
|
||||
|
||||
TreeNode rootNode = tree.getRootTreeNode();
|
||||
customTreeModel.setNewBatchType(result);
|
||||
// Open the first playlist by default.
|
||||
|
||||
//firstPlaylist.setChildOpen(0, true);
|
||||
|
||||
expandAllTreeNode(rootNode);
|
||||
|
||||
//IT SHOULD BE AN EVENT
|
||||
recapPage.removeAllSelected();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Expand all tree node.
|
||||
*
|
||||
* @param rootNode the root node
|
||||
*/
|
||||
private void expandAllTreeNode(TreeNode rootNode) {
|
||||
|
||||
if(rootNode==null || rootNode.getChildCount()==0)
|
||||
return;
|
||||
|
||||
for (int i=0; i<rootNode.getChildCount(); i++) {
|
||||
TreeNode childNode = rootNode.setChildOpen(i, true);
|
||||
expandAllTreeNode(childNode);
|
||||
//GWT.log("Opened child: "+childNode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Manage kpi.
|
||||
*
|
||||
* @param kpi the kpi
|
||||
* @param checked the checked
|
||||
* @param selectedPopulationType the selected population type
|
||||
*/
|
||||
public void manageKPI(KPI kpi, boolean checked, PopulationType selectedPopulationType) {
|
||||
recapPage.manageKPI(kpi, checked);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Manage algorithms submit.
|
||||
*
|
||||
* @param selectedKPIsSize the selected kp is size
|
||||
*/
|
||||
public void manageAlgorithmsSubmit(int selectedKPIsSize) {
|
||||
|
||||
recapPage.activeAllAlgorithms(false);
|
||||
|
||||
if(selectedKPIsSize>0){
|
||||
if(selectedKPIsSize==1){
|
||||
recapPage.activeBoxPlot(true);
|
||||
recapPage.activeSpeedometer(true);
|
||||
}else if(selectedKPIsSize==2){
|
||||
recapPage.activeAllAlgorithms(true);
|
||||
}else{
|
||||
//IS GREATER THAN 2
|
||||
recapPage.activeAllAlgorithms(true);
|
||||
recapPage.activeScatterPlot(false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enable all algorithms for submit.
|
||||
*
|
||||
* @param bool the bool
|
||||
*/
|
||||
public void enableAllAlgorithmsForSubmit(boolean bool){
|
||||
recapPage.activeAllAlgorithms(bool);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Manage perform fish service response.
|
||||
*
|
||||
* @param performFishResponse the perform fish response
|
||||
* @param mapParameters the map parameters
|
||||
* @param populationLevel the population level
|
||||
*/
|
||||
public void managePerformFishServiceResponse(
|
||||
PerformFishResponse performFishResponse,
|
||||
Map<String, List<String>> mapParameters, POPULATION_LEVEL populationLevel) {
|
||||
|
||||
annualListKPIView.managePerformFishServiceResponse(performFishResponse, mapParameters, populationLevel);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the perform fish response.
|
||||
*
|
||||
* @return the perform fish response
|
||||
*/
|
||||
public PerformFishResponse getPerformFishResponse() {
|
||||
|
||||
return annualListKPIView.getPerformFishResponse();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the map parameters.
|
||||
*
|
||||
* @return the map parameters
|
||||
*/
|
||||
public Map<String, List<String>> getRequestMapParameters() {
|
||||
|
||||
return annualListKPIView.getMapParameters();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validate kpi fields.
|
||||
*
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean validateKPIFields() {
|
||||
|
||||
bodyPage.hideError();
|
||||
List<KPI> selectedKPIs = recapPage.getSelectedKPIs();
|
||||
if(selectedKPIs.size()<1){
|
||||
//bodyPage.showAlert("Please select at least 1 KPI.", AlertType.ERROR);
|
||||
bodyPage.showAlert("Please select at least 1 KPI. Expand the KPI's levels and than select at least 1 KPI by checkbox", AlertType.ERROR);
|
||||
//recapPage.setError("You must select a KPI");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(selectedKPIs.size()>10){
|
||||
bodyPage.showAlert("Please select 10 KPI at most", AlertType.ERROR);
|
||||
//recapPage.setError("You must select a KPI");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate batch id selection.
|
||||
*
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean validateBatchIdSelection() {
|
||||
|
||||
//batchIDAndListKPI.showSelectionOK("Batch ID selection is valid", closable);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validate perform fish input fields.
|
||||
*
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean validatePerformFishInputFields() {
|
||||
return form.validateForm();
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Resync selected kp is.
|
||||
*/
|
||||
public void resyncSelectedKPIs() {
|
||||
|
||||
//customTreeModel.resync(getSelectedKPIs());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the form.
|
||||
*
|
||||
* @return the form
|
||||
*/
|
||||
public PerformFishAnnualAnalitycsFormView getForm() {
|
||||
|
||||
return form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide errors.
|
||||
*/
|
||||
public void hideErrors(){
|
||||
bodyPage.hideError();
|
||||
form.hideError(null, true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the selected kp is.
|
||||
*
|
||||
* @return the selected kp is
|
||||
*/
|
||||
public List<KPI> getSelectedKPIs(){
|
||||
|
||||
return recapPage.getSelectedKPIs();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if is reload perform fish service data.
|
||||
*
|
||||
* @return true, if is reload perform fish service data
|
||||
*/
|
||||
public boolean isReloadPerformFishServiceData() {
|
||||
|
||||
return reloadPerformFishServiceData;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the reload perform fish service data.
|
||||
*
|
||||
* @param reloadPerformFishServiceData the new reload perform fish service data
|
||||
*/
|
||||
public void setReloadPerformFishServiceData(boolean reloadPerformFishServiceData) {
|
||||
|
||||
this.reloadPerformFishServiceData = reloadPerformFishServiceData;
|
||||
}
|
||||
|
||||
}
|
|
@ -29,7 +29,6 @@ import org.gcube.portlets.user.performfishanalytics.client.event.SelectedPopulat
|
|||
import org.gcube.portlets.user.performfishanalytics.client.event.SubmitRequestEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SubmitRequestEventHandler;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.LoaderIcon;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.util.DecodeParameterUtil;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.AnalyticsPanelResult;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.ShowResult;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.viewbinder.SubmitRequestPanel;
|
||||
|
@ -46,7 +45,6 @@ import com.github.gwtbootstrap.client.ui.Tab;
|
|||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||
import com.github.gwtbootstrap.client.ui.constants.ControlGroupType;
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.event.shared.HandlerManager;
|
||||
|
@ -78,6 +76,7 @@ public class PerformFishAnalyticsController {
|
|||
/** The decrypt parameters. */
|
||||
private PerformFishInitParameter decryptParameters;
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new perform fish analytics controller.
|
||||
*/
|
||||
|
@ -85,6 +84,8 @@ public class PerformFishAnalyticsController {
|
|||
|
||||
registerHandlers();
|
||||
viewController = new PerformFishAnalyticsViewController();
|
||||
|
||||
/*viewAnnualController = new PerformFishAnnualAnalyticsViewController();
|
||||
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
@Override
|
||||
|
@ -180,8 +181,18 @@ public class PerformFishAnalyticsController {
|
|||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the inits the parmaters.
|
||||
*
|
||||
* @param result the new inits the parmaters
|
||||
*/
|
||||
public void setInitParmaters(PerformFishInitParameter result) {
|
||||
this.decryptParameters = result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register handlers.
|
||||
|
@ -193,7 +204,14 @@ public class PerformFishAnalyticsController {
|
|||
@Override
|
||||
public void onLoadPopulationType(
|
||||
LoadPopulationTypeEvent loadPopulationEvent) {
|
||||
viewController.loadPopulationTypeForLevelAndBatchType(loadPopulationEvent.getPopulationName(), decryptParameters);
|
||||
|
||||
viewController.loadPopulationTypeForLevelAndBatchType(loadPopulationEvent.getPopulationName(), decryptParameters);
|
||||
|
||||
// if(loadPopulationEvent.getPopulationName().equals(POPULATION_LEVEL.BATCH.name())) {
|
||||
//
|
||||
// }else {
|
||||
// viewAnnualController.loadPopulationTypeForLevelAndBatchType(loadPopulationEvent.getPopulationName(), decryptParameters);
|
||||
// }
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -621,7 +639,7 @@ public class PerformFishAnalyticsController {
|
|||
}
|
||||
|
||||
/**
|
||||
* Remove the spinner if all DM responses are returned
|
||||
* Remove the spinner if all DM responses are returned.
|
||||
*
|
||||
* @param requestPanel the request panel
|
||||
* @param tab the tab
|
||||
|
@ -756,4 +774,5 @@ public class PerformFishAnalyticsController {
|
|||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -102,7 +102,7 @@ public class PerformFishAnalyticsViewController {
|
|||
initLayout();
|
||||
form = new PerformFishAnalitycsFormView();
|
||||
//customTreeModel = new CustomTreeModel();
|
||||
customTreeModel = new CustomTreeModel();
|
||||
customTreeModel = new CustomTreeModel(PerformFishAnalyticsController.eventBus);
|
||||
batchIDAndListKPI = new BatchIDAndListKPIView();
|
||||
tree = new CellTree(customTreeModel, null);
|
||||
//tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
|
||||
|
|
|
@ -7,7 +7,6 @@ package org.gcube.portlets.user.performfishanalytics.client.view;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.portlets.user.performfishanalytics.client.controllers.PerformFishAnalyticsController;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SelectedKPIEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.KPI;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.PopulationType;
|
||||
|
@ -20,6 +19,7 @@ import com.google.gwt.cell.client.FieldUpdater;
|
|||
import com.google.gwt.cell.client.HasCell;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
import com.google.gwt.dom.client.Element;
|
||||
import com.google.gwt.event.shared.HandlerManager;
|
||||
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
|
@ -42,9 +42,11 @@ public class CustomTreeModel implements TreeViewModel {
|
|||
private final SingleSelectionModel<KPI> multiSelectionModel = new SingleSelectionModel<KPI>();
|
||||
private ListDataProvider<KPI> populationTypeProvider = new ListDataProvider<KPI>();
|
||||
private Cell<KPI> kpiCell;
|
||||
private HandlerManager eventBus;
|
||||
|
||||
// private ListDataProvider<KPI> dataProvider = new ListDataProvider<KPI>();
|
||||
public CustomTreeModel() {
|
||||
public CustomTreeModel(HandlerManager eventBus) {
|
||||
this.eventBus = eventBus;
|
||||
init();
|
||||
multiSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||
|
||||
|
@ -76,7 +78,7 @@ public class CustomTreeModel implements TreeViewModel {
|
|||
public void update(int index, KPI object, Boolean value) {
|
||||
// TODO Auto-generated method stub
|
||||
GWT.log("Checked: "+object.getName() + " value: "+value);
|
||||
PerformFishAnalyticsController.eventBus.fireEvent(new SelectedKPIEvent(null, object, value));
|
||||
eventBus.fireEvent(new SelectedKPIEvent(null, object, value));
|
||||
// cell.set(value);
|
||||
// dataGrid.redraw();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,233 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.performfishanalytics.client.viewannualbinder;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsConstant.POPULATION_LEVEL;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.PerformFishAnalyticsServiceAsync;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.controllers.PerformFishAnalyticsController;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.AddedBatchIdEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.view.LoaderIcon;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.csv.CSVFile;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.csv.CSVRow;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.performfishservice.PerformFishResponse;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Alert;
|
||||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.Style.Unit;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.ComplexPanel;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
/**
|
||||
* The Class BatchIDAndListKPIView.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||
* Feb 28, 2019
|
||||
*/
|
||||
public class AnnualListKPIView extends Composite {
|
||||
|
||||
/** The ui binder. */
|
||||
private static BatchIDAndListKPIViewUiBinder uiBinder =
|
||||
GWT.create(BatchIDAndListKPIViewUiBinder.class);
|
||||
|
||||
|
||||
/**
|
||||
* The Interface BatchIDAndListKPIViewUiBinder.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||
* Feb 28, 2019
|
||||
*/
|
||||
interface BatchIDAndListKPIViewUiBinder
|
||||
extends UiBinder<Widget, AnnualListKPIView> {
|
||||
}
|
||||
|
||||
/** The the panel container. */
|
||||
@UiField
|
||||
VerticalPanel the_panel_container;
|
||||
|
||||
|
||||
/** The the panel error. */
|
||||
@UiField
|
||||
HorizontalPanel the_panel_error;
|
||||
|
||||
|
||||
/** The perform fish response. */
|
||||
private PerformFishResponse performFishResponse;
|
||||
|
||||
/** The map parameters. */
|
||||
private Map<String, List<String>> mapParameters;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new batch id and list kpi view.
|
||||
*/
|
||||
public AnnualListKPIView() {
|
||||
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds the.
|
||||
*
|
||||
* @param w the w
|
||||
*/
|
||||
public void add(Widget w){
|
||||
the_panel_container.add(w);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage perform fish service response.
|
||||
*
|
||||
* @param performFishResponse the perform fish response
|
||||
* @param mapParameters the map parameters
|
||||
* @param level the level
|
||||
*/
|
||||
public void managePerformFishServiceResponse(
|
||||
PerformFishResponse performFishResponse,
|
||||
Map<String, List<String>> mapParameters, final POPULATION_LEVEL level) {
|
||||
this.performFishResponse = performFishResponse;
|
||||
this.mapParameters = mapParameters;
|
||||
|
||||
GWT.log("PerformFish Response: "+performFishResponse);
|
||||
|
||||
String fileURL = performFishResponse.getMapParameters().get(PerformFishAnalyticsConstant.BATCHES_TABLE_INTERNAL);
|
||||
|
||||
GWT.log("BatchesTable_internal is: "+fileURL);
|
||||
|
||||
//Managing the Perform Fish Service Response
|
||||
if(fileURL==null){
|
||||
showAlert("No select found for "+PerformFishAnalyticsConstant.BATCHES_TABLE_INTERNAL, AlertType.ERROR, false, the_panel_error);
|
||||
}else{
|
||||
|
||||
final LoaderIcon loader = new LoaderIcon("Loading Values...");
|
||||
the_panel_container.insert(loader, 1);
|
||||
|
||||
PerformFishAnalyticsServiceAsync.Util.getInstance().readCSVFile(fileURL, new AsyncCallback<CSVFile>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
loader.setVisible(false);
|
||||
the_panel_container.remove(loader);
|
||||
Window.alert(caught.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(CSVFile result) {
|
||||
loader.setVisible(false);
|
||||
the_panel_container.remove(loader);
|
||||
|
||||
if(result==null){
|
||||
showAlert("No value found for "+PerformFishAnalyticsConstant.BATCHES_TABLE_INTERNAL, AlertType.ERROR, false, the_panel_error);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//IT CAN BE "BATCH", "FARM", etc.
|
||||
String theScalePParamValue = level.name();
|
||||
int indexOfTheScaleValue = result.getHeaderRow().getListValues().indexOf(theScalePParamValue);
|
||||
|
||||
if(indexOfTheScaleValue>-1){
|
||||
List<CSVRow> rows = result.getValueRows();
|
||||
|
||||
if(rows==null || rows.isEmpty()){
|
||||
PerformFishAnalyticsController.eventBus.fireEvent(new AddedBatchIdEvent());
|
||||
return;
|
||||
}
|
||||
|
||||
for (CSVRow row : rows) {
|
||||
String valuePerScaleP = row.getListValues().get(indexOfTheScaleValue);
|
||||
//field_list_focus_id_dea.addItem(valuePerScaleP, valuePerScaleP);
|
||||
// uib_list_batch_id.addItem(valuePerScaleP, valuePerScaleP);
|
||||
// listBatchesID.add(valuePerScaleP);
|
||||
}
|
||||
|
||||
// uib_list_batch_id.addItem(PerformFishAnalyticsConstant.DM_FOCUS_ID_ALL_VALUE, PerformFishAnalyticsConstant.DM_FOCUS_ID_ALL_VALUE);
|
||||
// listBatchesID.add(PerformFishAnalyticsConstant.DM_FOCUS_ID_ALL_VALUE);
|
||||
|
||||
PerformFishAnalyticsController.eventBus.fireEvent(new AddedBatchIdEvent());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show alert.
|
||||
*
|
||||
* @param error the error
|
||||
* @param type the type
|
||||
* @param closable the closable
|
||||
* @param panel the panel
|
||||
*/
|
||||
private void showAlert(String error, AlertType type, boolean closable, ComplexPanel panel){
|
||||
panel.clear();
|
||||
Alert alert = new Alert(error);
|
||||
alert.setType(type);
|
||||
alert.setClose(closable);
|
||||
alert.getElement().getStyle().setMargin(10, Unit.PX);
|
||||
panel.add(alert);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show alert.
|
||||
*
|
||||
* @param error the error
|
||||
* @param type the type
|
||||
* @param closable the closable
|
||||
*/
|
||||
public void showAlert(String error, AlertType type, boolean closable){
|
||||
showAlert(error, type, closable, the_panel_error);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show selection ok.
|
||||
*
|
||||
* @param msg the msg
|
||||
* @param closable the closable
|
||||
*/
|
||||
public void showSelectionOK(String msg, boolean closable){
|
||||
showAlert(msg, AlertType.INFO, closable, the_panel_error);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the perform fish response.
|
||||
*
|
||||
* @return the performFishResponse
|
||||
*/
|
||||
public PerformFishResponse getPerformFishResponse() {
|
||||
|
||||
return performFishResponse;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the map parameters.
|
||||
*
|
||||
* @return the mapParameters
|
||||
*/
|
||||
public Map<String, List<String>> getMapParameters() {
|
||||
|
||||
return mapParameters;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
||||
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
|
||||
<ui:style>
|
||||
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<g:VerticalPanel ui:field="the_panel_container">
|
||||
<g:HorizontalPanel ui:field="the_panel_error"></g:HorizontalPanel>
|
||||
</g:VerticalPanel>
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
|
@ -0,0 +1,339 @@
|
|||
|
||||
package org.gcube.portlets.user.performfishanalytics.client.viewannualbinder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.user.performfishanalytics.client.annualcontrollers.PerformFishAnnualAnalyticsController;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.LoadPopulationTypeEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.PerformFishFieldFormChangedEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.client.event.SelectedPopulationTypeEvent;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.Population;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.PopulationType;
|
||||
import org.gcube.portlets.user.performfishanalytics.shared.Year;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Alert;
|
||||
import com.github.gwtbootstrap.client.ui.CheckBox;
|
||||
import com.github.gwtbootstrap.client.ui.ControlGroup;
|
||||
import com.github.gwtbootstrap.client.ui.ListBox;
|
||||
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||
import com.github.gwtbootstrap.client.ui.constants.ControlGroupType;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.dom.client.Document;
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.event.dom.client.DomEvent;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
|
||||
/**
|
||||
* The Class PerformFishAnalitycsFormView.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
|
||||
* Jan 22, 2019
|
||||
*/
|
||||
public class PerformFishAnnualAnalitycsFormView extends Composite {
|
||||
|
||||
/** The ui binder. */
|
||||
private static PerformFishAnalitycsFormViewUiBinder uiBinder =
|
||||
GWT.create(PerformFishAnalitycsFormViewUiBinder.class);
|
||||
|
||||
/**
|
||||
* The Interface CreateFolderConfigurationToThreddsSyncUiBinder.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 14,
|
||||
* 2018
|
||||
*/
|
||||
interface PerformFishAnalitycsFormViewUiBinder
|
||||
extends UiBinder<Widget, PerformFishAnnualAnalitycsFormView> {
|
||||
}
|
||||
/** The pager. */
|
||||
// @UiField
|
||||
// Pager pager;
|
||||
@UiField
|
||||
public ListBox field_select_population;
|
||||
@UiField
|
||||
protected ListBox field_select_population_type;
|
||||
@UiField
|
||||
ListBox field_select_year;
|
||||
@UiField
|
||||
ControlGroup cg_select_population;
|
||||
@UiField
|
||||
ControlGroup cg_select_population_type;
|
||||
@UiField
|
||||
ControlGroup cg_select_year;
|
||||
@UiField
|
||||
VerticalPanel errorPanel;
|
||||
@UiField
|
||||
CheckBox uib_check_all_year;
|
||||
|
||||
// @UiField
|
||||
// Fieldset fieldset_add_catalogue_bean;
|
||||
/** The folder id. */
|
||||
private String folderId;
|
||||
private Map<String, List<PopulationType>> mapPopulation =
|
||||
new HashMap<String, List<PopulationType>>();
|
||||
private Map<String, PopulationType> mapPopulationType =
|
||||
new HashMap<String, PopulationType>();
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new perform fish analitycs form view.
|
||||
*/
|
||||
public PerformFishAnnualAnalitycsFormView() {
|
||||
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
|
||||
field_select_population.addChangeHandler(new ChangeHandler() {
|
||||
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
|
||||
// String scope = field_select_scope.getSelectedItemText();
|
||||
String value = field_select_population.getSelectedValue();
|
||||
GWT.log("Selected POPULATION: " + value);
|
||||
PerformFishAnnualAnalyticsController.eventBus.fireEvent(new LoadPopulationTypeEvent(value, null));
|
||||
//PerformFishAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(field_select_population));
|
||||
}
|
||||
});
|
||||
|
||||
field_select_population_type.addChangeHandler(new ChangeHandler() {
|
||||
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
|
||||
String populatioTypeSelected = field_select_population_type.getSelectedValue();
|
||||
GWT.log("Selected population type: " + populatioTypeSelected);
|
||||
PopulationType opt = mapPopulationType.get(populatioTypeSelected);
|
||||
PerformFishAnnualAnalyticsController.eventBus.fireEvent(new SelectedPopulationTypeEvent(opt));
|
||||
fillYear(opt.getListYears());
|
||||
PerformFishAnnualAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(field_select_population_type));
|
||||
}
|
||||
});
|
||||
|
||||
field_select_year.addChangeHandler(new ChangeHandler() {
|
||||
|
||||
@Override
|
||||
public void onChange(ChangeEvent event) {
|
||||
|
||||
hideError(cg_select_year, false);
|
||||
PerformFishAnnualAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(field_select_year));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
uib_check_all_year.addClickHandler(new ClickHandler() {
|
||||
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
|
||||
boolean isChecked = uib_check_all_year.getValue();
|
||||
selectAllFields(field_select_year, isChecked);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Select all fields.
|
||||
*
|
||||
* @param listBox the list box
|
||||
* @param selected the selected
|
||||
*/
|
||||
private void selectAllFields(ListBox listBox, boolean selected){
|
||||
|
||||
for (int i=0; i<listBox.getItemCount(); i++) {
|
||||
listBox.setItemSelected(i, selected);
|
||||
}
|
||||
|
||||
PerformFishAnnualAnalyticsController.eventBus.fireEvent(new PerformFishFieldFormChangedEvent(listBox));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill population type.
|
||||
*
|
||||
* @param populationName
|
||||
* the population name
|
||||
* @param result
|
||||
* the result
|
||||
* @param population
|
||||
* the population
|
||||
*/
|
||||
public void addPopulationTypes(
|
||||
String populationName, List<PopulationType> result,
|
||||
Population population) {
|
||||
|
||||
mapPopulation.put(populationName, result);
|
||||
fillPopulationType(populationName, result, population);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill year.
|
||||
*
|
||||
* @param listQuarter the list quarter
|
||||
*/
|
||||
private void fillYear(List<Year> listQuarter) {
|
||||
|
||||
field_select_year.clear();
|
||||
if (listQuarter != null && listQuarter.size() > 0) {
|
||||
field_select_year.setEnabled(true);
|
||||
for (Year year : listQuarter) {
|
||||
field_select_year.addItem(year.getName(), year.getId());
|
||||
}
|
||||
}
|
||||
else {
|
||||
field_select_year.setEnabled(false);
|
||||
uib_check_all_year.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fill population type.
|
||||
*
|
||||
* @param populationName
|
||||
* the population name
|
||||
* @param result
|
||||
* the result
|
||||
* @param population
|
||||
* the population
|
||||
*/
|
||||
private void fillPopulationType(
|
||||
String populationName, List<PopulationType> result,
|
||||
Population population) {
|
||||
|
||||
field_select_population_type.clear();
|
||||
if (result != null && result.size() > 0) {
|
||||
field_select_population_type.setEnabled(true);
|
||||
mapPopulationType.clear();
|
||||
for (PopulationType popType : result) {
|
||||
field_select_population_type.addItem(
|
||||
popType.getName(), popType.getId());
|
||||
mapPopulationType.put(popType.getId(), popType);
|
||||
// if(thCatalogueBean.isDefault()){
|
||||
// field_select_catalogue_name.setSelectedValue(thCatalogueBean.getName());
|
||||
// }
|
||||
}
|
||||
// field_select_population_type.setSelectedValue(thCatalogueBean.getName());
|
||||
field_select_population_type.setSelectedValue(result.get(0).getName());
|
||||
DomEvent.fireNativeEvent(
|
||||
Document.get().createChangeEvent(),
|
||||
field_select_population_type);
|
||||
field_select_population.addItem(
|
||||
population.getName(), population.getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validate form.
|
||||
*
|
||||
* @return true, if successful
|
||||
*/
|
||||
public boolean validateForm() {
|
||||
|
||||
cg_select_year.setType(ControlGroupType.NONE);
|
||||
errorPanel.setVisible(false);
|
||||
// cg_remote_path.setType(ControlGroupType.NONE);
|
||||
if (field_select_year.getItemCount()>0 && field_select_year.getSelectedIndex() == -1) {
|
||||
cg_select_year.setType(ControlGroupType.INFO);
|
||||
showAlert("Please select a Year", AlertType.INFO);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show alert.
|
||||
*
|
||||
* @param txt the txt
|
||||
* @param type the type
|
||||
*/
|
||||
public void showAlert(String txt, AlertType type) {
|
||||
errorPanel.clear();
|
||||
errorPanel.setVisible(true);
|
||||
Alert msg = new Alert(txt);
|
||||
msg.setAnimation(true);
|
||||
msg.setClose(false);
|
||||
msg.setType(type);
|
||||
errorPanel.add(msg);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide error.
|
||||
*
|
||||
* @param cgroup the cgroup
|
||||
* @param forceHide the force hide
|
||||
*/
|
||||
public void hideError(ControlGroup cgroup, boolean forceHide){
|
||||
|
||||
if(forceHide){
|
||||
cg_select_year.setType(ControlGroupType.NONE);
|
||||
errorPanel.setVisible(false);
|
||||
}
|
||||
|
||||
if(cgroup!=null){
|
||||
cgroup.setType(ControlGroupType.NONE);
|
||||
}
|
||||
|
||||
errorPanel.setVisible(false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the batch type.
|
||||
*
|
||||
* @return the batch type
|
||||
*/
|
||||
public String getBatchType(){
|
||||
|
||||
return field_select_population_type.getSelectedItemText();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the sel level.
|
||||
*
|
||||
* @return the sel level
|
||||
*/
|
||||
public String getLevel(){
|
||||
return field_select_population.getSelectedItemText();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the year.
|
||||
*
|
||||
* @return the year
|
||||
*/
|
||||
public List<String> getYear(){
|
||||
return getSelected(field_select_year);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the selected.
|
||||
*
|
||||
* @param listBox the list box
|
||||
* @return the selected
|
||||
*/
|
||||
private List<String> getSelected(ListBox listBox){
|
||||
List<String> selected = new ArrayList<String>();
|
||||
for (int i=0; i<listBox.getItemCount(); i++) {
|
||||
if (listBox.isItemSelected(i)) {
|
||||
selected.add(listBox.getItemText(i));
|
||||
}
|
||||
}
|
||||
return selected;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
|
||||
<ui:style>
|
||||
.noBorder {
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
.marginToError {
|
||||
margin-left: 180px;
|
||||
}
|
||||
</ui:style>
|
||||
<g:HTMLPanel>
|
||||
<g:HTMLPanel ui:field="form_unit_fields">
|
||||
<g:VerticalPanel ui:field="errorPanel" styleName="{style.marginToError}">
|
||||
</g:VerticalPanel>
|
||||
<b:Form type="HORIZONTAL">
|
||||
<b:Fieldset styleName="{style.noBorder}">
|
||||
|
||||
<b:ControlGroup ui:field="cg_select_population_type">
|
||||
<b:ControlLabel for="cl_select_population_type">Batch Type</b:ControlLabel>
|
||||
<b:Controls>
|
||||
<b:ListBox name="Select a Population Type..." b:id="field_select_population_type"
|
||||
ui:field="field_select_population_type" addStyleNames="the_select_custom">
|
||||
</b:ListBox>
|
||||
</b:Controls>
|
||||
</b:ControlGroup>
|
||||
|
||||
<b:ControlGroup ui:field="cg_select_population">
|
||||
<b:ControlLabel for="cl_select_population">Level</b:ControlLabel>
|
||||
<b:Controls>
|
||||
<b:ListBox name="Select a Population..." b:id="field_select_population"
|
||||
ui:field="field_select_population" addStyleNames="the_select_custom">
|
||||
</b:ListBox>
|
||||
</b:Controls>
|
||||
</b:ControlGroup>
|
||||
|
||||
<b:ControlGroup ui:field="cg_select_year">
|
||||
<b:ControlLabel for="cl_select_year">Year</b:ControlLabel>
|
||||
<b:Controls>
|
||||
<b:InputAddOn>
|
||||
<b:ListBox name="Select Year..." b:id="field_select_year"
|
||||
ui:field="field_select_year" multipleSelect="true"
|
||||
addStyleNames="the_select_custom">
|
||||
</b:ListBox>
|
||||
<b:appendWidget>
|
||||
<b:CheckBox ui:field="uib_check_all_year" title="Select/Unselect All" />
|
||||
</b:appendWidget>
|
||||
</b:InputAddOn>
|
||||
</b:Controls>
|
||||
</b:ControlGroup>
|
||||
|
||||
</b:Fieldset>
|
||||
</b:Form>
|
||||
</g:HTMLPanel>
|
||||
<!-- <b:Pager left="Older" right="Submit Request" aligned="true" ui:field="pager"
|
||||
/> -->
|
||||
</g:HTMLPanel>
|
||||
</ui:UiBinder>
|
Loading…
Reference in New Issue