diff --git a/.classpath b/.classpath index f83f87d..99f76aa 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -35,5 +35,5 @@ - + diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs index 6fd3d23..b136e10 100644 --- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs +++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs @@ -1,4 +1,4 @@ eclipse.preferences.version=1 -lastWarOutDir=/home/francesco-mangiacrapa/eclipse-workspace/performfish-analytics-portlet-TRUNK/target/performfish-analytics-portlet-0.2.0-SNAPSHOT +lastWarOutDir=/home/francesco-mangiacrapa/eclipse-workspace/performfish-analytics-portlet-TRUNK/target/performfish-analytics-portlet-0.3.0-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false \ No newline at end of file diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 2ef44fc..5216cf9 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,10 +1,10 @@ - + - + diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/annualcontrollers/PerformFishAnnualAnalyticsController.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/annualcontrollers/PerformFishAnnualAnalyticsController.java index 828293d..5e7e629 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/annualcontrollers/PerformFishAnnualAnalyticsController.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/annualcontrollers/PerformFishAnnualAnalyticsController.java @@ -86,6 +86,8 @@ public class PerformFishAnnualAnalyticsController { private String theFocusValue = null; private Map boxPlotOrderBy = new HashMap(); + + private Map synopticOrderBy = new HashMap(); /** @@ -846,8 +848,14 @@ public class PerformFishAnnualAnalyticsController { case DEA_CHART: break; case PERFORMFISH_SYNOPTIC_TABLE_FARM: - cssTableStyle = "synoptictable-farm"; - break; + if(!result.getFileName().contains("legend")) { + cssTableStyle = "synoptictable-farm"; + } + ShowResult showResultSin = new ShowResult(title); + showResultSin.showCSVFile(result, cssTableStyle); + displayingOrderedSynopticTable(dmResponse, result.getFileName(), container, showResultSin); + + return; } ShowResult showResult = new ShowResult(title); @@ -865,7 +873,42 @@ public class PerformFishAnnualAnalyticsController { } + /** + * Displaying ordered synoptic table. + * + * @param dmResponse the dm response + * @param fileName the file name + * @param container the container + * @param showResult the show result + */ + private void displayingOrderedSynopticTable(final DataMinerResponse dmResponse, String fileName, final Panel container, ShowResult showResult) { + int hashcode = dmResponse.hashCode(); + GWT.log("The hascode is: "+hashcode); + FlexTable flex = synopticOrderBy.get(hashcode); + + if(flex==null) { + GWT.log("The flextable is null"); + flex = new FlexTable(); + synopticOrderBy.put(hashcode, flex); + container.add(flex); + } + + if(fileName.toLowerCase().contains("legend")) { + flex.setWidget(0, 0, showResult); + }else { + flex.setWidget(flex.getRowCount()+1,0,showResult); + } + } + + /** + * Displaying ordered box plot. + * + * @param dmResponse the dm response + * @param title the title + * @param container the container + * @param showResult the show result + */ private void displayingOrderedBoxPlot(final DataMinerResponse dmResponse, String title, final Panel container, ShowResult showResult) { int hashcode = dmResponse.hashCode(); GWT.log("The hascode is: "+hashcode); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsController.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsController.java index ffe9f89..ed89501 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsController.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/controllers/PerformFishAnalyticsController.java @@ -83,6 +83,8 @@ public class PerformFishAnalyticsController { private PerformFishInitParameter decryptParameters; private Map boxPlotOrderBy = new HashMap(); + + private Map synopticOrderBy = new HashMap(); /** @@ -753,6 +755,7 @@ public class PerformFishAnalyticsController { String title = toTitle; switch (chartType) { case BOXPLOT: + if(result.getFileName().contains("_user")){ title = "My Batch(es)"; }else{ @@ -764,7 +767,9 @@ public class PerformFishAnalyticsController { ShowResult showResult = new ShowResult(title); showResult.showCSVFile(result, cssTableStyle); displayingOrderedBoxPlot(dmResponse, title, container, showResult); + return; + case CORRELATION: break; case DEA_ANALYSIS: @@ -776,10 +781,17 @@ public class PerformFishAnalyticsController { case DEA_CHART: break; case PERFORMFISH_SYNOPTICTABLE_BATCH: - cssTableStyle = "synoptictable-batch"; - break; + + if(!result.getFileName().contains("legend")) { + cssTableStyle = "synoptictable-batch"; + } + ShowResult showResultSin = new ShowResult(title); + showResultSin.showCSVFile(result, cssTableStyle); + displayingOrderedSynopticTable(dmResponse, result.getFileName(), container, showResultSin); + + return; } - + //ALL OTHER CASES ShowResult showResult = new ShowResult(title); showResult.showCSVFile(result, cssTableStyle); container.add(showResult); @@ -815,4 +827,23 @@ public class PerformFishAnalyticsController { flex.setWidget(0, 2, showResult); } } + + private void displayingOrderedSynopticTable(final DataMinerResponse dmResponse, String fileName, final Panel container, ShowResult showResult) { + int hashcode = dmResponse.hashCode(); + GWT.log("The hascode is: "+hashcode); + FlexTable flex = synopticOrderBy.get(hashcode); + + if(flex==null) { + GWT.log("The flextable is null"); + flex = new FlexTable(); + synopticOrderBy.put(hashcode, flex); + container.add(flex); + } + + if(fileName.toLowerCase().contains("legend")) { + flex.setWidget(0, 0, showResult); + }else { + flex.setWidget(flex.getRowCount()+1,0,showResult); + } + } } diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/AnalyticsAnnualPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/AnalyticsAnnualPanelResult.java index c50ea7d..c42b3d5 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/AnalyticsAnnualPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/AnalyticsAnnualPanelResult.java @@ -16,6 +16,7 @@ import org.gcube.portlets.user.performfishanalytics.client.event.CallAlgorithmEv import org.gcube.portlets.user.performfishanalytics.client.view.LoaderIcon; import org.gcube.portlets.user.performfishanalytics.client.view.util.CorrelationValueToColourUtil; import org.gcube.portlets.user.performfishanalytics.client.viewbinder.ShowResult; +import org.gcube.portlets.user.performfishanalytics.shared.FileContentType; 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; @@ -157,6 +158,8 @@ public class AnalyticsAnnualPanelResult extends Composite { private List selectedAreas; private HandlerManager theEventBus; + + private Map csvGenerated = new HashMap(); /** * Because this class has a default constructor, it can @@ -343,8 +346,12 @@ public class AnalyticsAnnualPanelResult extends Composite { // } public KPI getKPIForName(String name){ - - GWT.log("Searching KPI name: "+name); + + GWT.log("Searching KPI name: "+name+ " into: "); + for (KPI kpi : selectedKPIs) { + GWT.log("selected: "+kpi.getName()); + } + KPI foundKPI = null; String purgedName = name.trim(); for (KPI kpi : selectedKPIs) { @@ -446,13 +453,13 @@ public class AnalyticsAnnualPanelResult extends Composite { * @param dmResponse the dm response */ public void addResults(DataMinerResponse dmResponse) { + this.dmResponse = dmResponse; - + for (final OutputFile outputFile : dmResponse.getListOutput()) { - - switch (outputFile.getDataType()) { - case IMAGE: - PerformFishAnalyticsServiceAsync.Util.getInstance().getImageFile(outputFile, new AsyncCallback() { + + if(outputFile.getDataType().equals(FileContentType.CSV)){ + PerformFishAnalyticsServiceAsync.Util.getInstance().getCSVFile(outputFile, true, new AsyncCallback() { @Override public void onFailure(Throwable caught) { @@ -461,53 +468,64 @@ public class AnalyticsAnnualPanelResult extends Composite { } @Override - public void onSuccess(String base64Content) { - ShowResult showResult = new ShowResult(outputFile.getName()); - showResult.showImage(base64Content); - uib_vp_correlation_results_container.add(showResult); - + public void onSuccess(CSVFile result) { + + csvGenerated.put(result.getFileName(), result); + fillCorrelationMatrix(); } }); - break; - case CSV: - - //CORRELATION MATRIX - PerformFishAnalyticsServiceAsync.Util.getInstance().getCSVFile(outputFile, true, new AsyncCallback() { - - @Override - public void onFailure(Throwable caught) { - showAlert(caught.getMessage(), AlertType.ERROR, true, uib_vp_correlation_results_container); - - } + } + + } + } + + + /** + * Fill correlation matrix. + */ + private void fillCorrelationMatrix() { + + if(csvGenerated.size()<2) + return; + + String corrIndexFilename = null; + String corrFilename = null; + for (String fileName : csvGenerated.keySet()) { + if(fileName.contains("index")) { + corrIndexFilename = fileName; + }else { + corrFilename = fileName; + } + } + + GWT.log("Correlation Matrix Index File: "+corrIndexFilename); + GWT.log("Correlation Matrix File: "+corrFilename); + CSVFile corrIndexCsvFile = csvGenerated.get(corrIndexFilename); + CSVFile corrCsvFile = csvGenerated.get(corrFilename); + GWT.log("Correlation Matrix Index CSV: "+corrIndexCsvFile); + GWT.log("Correlation Matrix CSV: "+corrCsvFile); - @Override - public void onSuccess(CSVFile result) { - - GWT.log("Displaying: "+result); - HorizontalPanel hp = new HorizontalPanel(); - final FlexTable flexTable = new FlexTable(); - flexTable.setStyleName("fixedtable"); - flexTable.getElement().getStyle().setMarginBottom(10, Unit.PX); + HorizontalPanel hp = new HorizontalPanel(); + final FlexTable flexTable = new FlexTable(); + flexTable.setStyleName("fixedtable"); + flexTable.getElement().getStyle().setMarginBottom(10, Unit.PX); - flexTable.setWidget(0, 0,new Label("")); - -// for (KPI kpi : selectedKPIs) { -// GWT.log("Selected KPIs are: "+kpi); -// } - - CSVRow headerRow = result.getHeaderRow(); - //HEADER - for (int i=1; i 0 - }else{ - KPI columnKPI = getKPIForName(headerRow.getListValues().get(columnIndex)); - //Here the first index is the KPI name - KPI rowKPI = getKPIForName(row.getListValues().get(0)); - fillKPIReferenceForIndex(rowIndex, columnIndex, Arrays.asList(columnKPI, rowKPI)); - button.setText(" "); - button.setIcon(IconType.COMPASS); - button.setSize(ButtonSize.LARGE); - - button.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - - //callScatterAndDeaChart(rowIndex, columnIndex, button); - callScatter(rowIndex, columnIndex, button); - } - }); - } - - button.setType(ButtonType.LINK); - //APPLYING STYLE ONLY ON INTERNAL VALUES OF CSV - if(j>0) - button.getElement().getStyle().setColor("#000"); - - button.addAttachHandler(new AttachEvent.Handler() { - - @Override - public void onAttachOrDetach(AttachEvent event) { - if(theColor.startsWith("#")){ - GWT.log("Setting backgrounf color: "+theColor); - button.getElement().getParentElement().getStyle().setBackgroundColor(theColor); - } - } - }); - - flexTable.setWidget(rowIndex, j,button); - } - + } + //diagonal + else if(rowIndex==j){ + //rowValue should be 1 + //HTML dg = new HTML("1"); + HTML dg = new HTML(rowValue); + dg.getElement().getStyle().setFontSize(18, Unit.PX); + flexTable.setWidget(rowIndex, j,dg); + continue; + //j > 0 + }else{ + KPI columnKPI = getKPIForName(headerRow.getListValues().get(columnIndex)); + //Here the first index is the KPI name + KPI rowKPI = getKPIForName(row.getListValues().get(0)); + fillKPIReferenceForIndex(rowIndex, columnIndex, Arrays.asList(columnKPI, rowKPI)); + //button.setText(" "); + //button.setIcon(IconType.COMPASS); + //button.setSize(ButtonSize.LARGE); + + buttonHTML.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + //callScatterAndDeaChart(rowIndex, columnIndex, button); + callScatter(rowIndex, columnIndex, buttonHTML); } + }); + } - hp.add(flexTable); - - final FlexTable flexLegend = new FlexTable(); - flexLegend.setStyleName("simpletable"); - //flexLegend.getElement().getStyle().setBorderWidth(0, Unit.PX); - Map map = CorrelationValueToColourUtil.getMap(); - flexLegend.setWidget(0, 0, new Label("Legend")); - flexLegend.setWidget(0, 1, new HTML("")); - int i = 1; - for (String key : map.keySet()) { - final String rgbColor = map.get(key); - final HTML theLegendColor = new HTML(""); - flexLegend.setWidget(i, 0, theLegendColor); - flexLegend.setWidget(i, 1, new HTML(key)); - theLegendColor.addAttachHandler(new AttachEvent.Handler() { - - @Override - public void onAttachOrDetach(AttachEvent event) { - theLegendColor.getElement().getParentElement().getStyle().setBackgroundColor(rgbColor); - } - }); - - i++; - } + //button.setType(ButtonType.LINK); + //APPLYING STYLE ONLY ON INTERNAL VALUES OF CSV + if(j>0) + buttonHTML.getElement().getStyle().setColor("#000"); - flexLegend.getElement().getStyle().setMarginLeft(15, Unit.PX); - hp.add(flexLegend); - uib_vp_correlation_results_container.insert(hp,0); - } + buttonHTML.addAttachHandler(new AttachEvent.Handler() { + + @Override + public void onAttachOrDetach(AttachEvent event) { + if(theColor.startsWith("#")){ + GWT.log("Setting backgrounf color: "+theColor); + buttonHTML.getElement().getParentElement().getStyle().setBackgroundColor(theColor); + } + } }); - break; - default: - break; + flexTable.setWidget(rowIndex, j,buttonHTML); } } + + hp.add(flexTable); + + final FlexTable flexLegend = new FlexTable(); + flexLegend.setStyleName("simpletable"); + //flexLegend.getElement().getStyle().setBorderWidth(0, Unit.PX); + Map map = CorrelationValueToColourUtil.getMap(); + flexLegend.setWidget(0, 0, new Label("Legend")); + flexLegend.setWidget(0, 1, new HTML("")); + int i = 1; + for (String key : map.keySet()) { + final String rgbColor = map.get(key); + final HTML theLegendColor = new HTML(""); + flexLegend.setWidget(i, 0, theLegendColor); + flexLegend.setWidget(i, 1, new HTML(key)); + theLegendColor.addAttachHandler(new AttachEvent.Handler() { + + @Override + public void onAttachOrDetach(AttachEvent event) { + theLegendColor.getElement().getParentElement().getStyle().setBackgroundColor(rgbColor); + } + }); + + i++; + } + + flexLegend.getElement().getStyle().setMarginLeft(15, Unit.PX); + hp.add(flexLegend); + uib_vp_correlation_results_container.insert(hp,0); + } /** @@ -785,9 +803,9 @@ public class AnalyticsAnnualPanelResult extends Composite { * * @param rowIndex the row index * @param columnIndex the column index - * @param button the button + * @param buttonHTML the button */ - private void callScatter(int rowIndex, int columnIndex, Button button){ + private void callScatter(int rowIndex, int columnIndex, HTML buttonHTML){ String focusID = checkValidFocusID(); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/AnalyticsPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/AnalyticsPanelResult.java index 5d0f210..1797077 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/AnalyticsPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/AnalyticsPanelResult.java @@ -16,6 +16,7 @@ import org.gcube.portlets.user.performfishanalytics.client.controllers.PerformFi import org.gcube.portlets.user.performfishanalytics.client.event.CallAlgorithmEvent; import org.gcube.portlets.user.performfishanalytics.client.view.LoaderIcon; import org.gcube.portlets.user.performfishanalytics.client.view.util.CorrelationValueToColourUtil; +import org.gcube.portlets.user.performfishanalytics.shared.FileContentType; 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; @@ -28,10 +29,7 @@ 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.ButtonType; import com.github.gwtbootstrap.client.ui.constants.ControlGroupType; -import com.github.gwtbootstrap.client.ui.constants.IconType; -import com.github.gwtbootstrap.client.ui.resources.ButtonSize; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.dom.client.Style.Unit; @@ -154,6 +152,8 @@ public class AnalyticsPanelResult extends Composite { private List selectedKPIs; private List selectedAreas; + + private Map csvGenerated = new HashMap(); /** * Because this class has a default constructor, it can @@ -192,7 +192,7 @@ public class AnalyticsPanelResult extends Composite { List inputKPINames = getSelected(list_dea_input_kpi); List outputKPINames = getSelected(list_dea_output_kpi); - callDeaAnalysis(inputKPINames, outputKPINames, button_dea_analys_request); + //callDeaAnalysis(inputKPINames, outputKPINames, button_dea_analys_request); } }); @@ -447,12 +447,11 @@ public class AnalyticsPanelResult extends Composite { */ public void addResults(DataMinerResponse dmResponse) { this.dmResponse = dmResponse; - + for (final OutputFile outputFile : dmResponse.getListOutput()) { - - switch (outputFile.getDataType()) { - case IMAGE: - PerformFishAnalyticsServiceAsync.Util.getInstance().getImageFile(outputFile, new AsyncCallback() { + + if(outputFile.getDataType().equals(FileContentType.CSV)){ + PerformFishAnalyticsServiceAsync.Util.getInstance().getCSVFile(outputFile, true, new AsyncCallback() { @Override public void onFailure(Throwable caught) { @@ -461,53 +460,60 @@ public class AnalyticsPanelResult extends Composite { } @Override - public void onSuccess(String base64Content) { - ShowResult showResult = new ShowResult(outputFile.getName()); - showResult.showImage(base64Content); - uib_vp_correlation_results_container.add(showResult); - + public void onSuccess(CSVFile result) { + + csvGenerated.put(result.getFileName(), result); + fillCorrelationMatrix(); } }); - break; - case CSV: - - //CORRELATION MATRIX - PerformFishAnalyticsServiceAsync.Util.getInstance().getCSVFile(outputFile, true, new AsyncCallback() { - - @Override - public void onFailure(Throwable caught) { - showAlert(caught.getMessage(), AlertType.ERROR, true, uib_vp_correlation_results_container); - - } + } + + } + } + + private void fillCorrelationMatrix() { + + if(csvGenerated.size()<2) + return; + + String corrIndexFilename = null; + String corrFilename = null; + for (String fileName : csvGenerated.keySet()) { + if(fileName.contains("index")) { + corrIndexFilename = fileName; + }else { + corrFilename = fileName; + } + } + + GWT.log("Correlation Matrix Index File: "+corrIndexFilename); + GWT.log("Correlation Matrix File: "+corrFilename); + CSVFile corrIndexCsvFile = csvGenerated.get(corrIndexFilename); + CSVFile corrCsvFile = csvGenerated.get(corrFilename); + GWT.log("Correlation Matrix Index CSV: "+corrIndexCsvFile); + GWT.log("Correlation Matrix CSV: "+corrCsvFile); - @Override - public void onSuccess(CSVFile result) { - - GWT.log("Displaying: "+result); - HorizontalPanel hp = new HorizontalPanel(); - final FlexTable flexTable = new FlexTable(); - flexTable.setStyleName("fixedtable"); - flexTable.getElement().getStyle().setMarginBottom(10, Unit.PX); + HorizontalPanel hp = new HorizontalPanel(); + final FlexTable flexTable = new FlexTable(); + flexTable.setStyleName("fixedtable"); + flexTable.getElement().getStyle().setMarginBottom(10, Unit.PX); - flexTable.setWidget(0, 0,new Label("")); - -// for (KPI kpi : selectedKPIs) { -// GWT.log("Selected KPIs are: "+kpi); -// } - - CSVRow headerRow = result.getHeaderRow(); - //HEADER - for (int i=1; i 0 - }else{ - KPI columnKPI = getKPIForName(headerRow.getListValues().get(columnIndex)); - //Here the first index is the KPI name - KPI rowKPI = getKPIForName(row.getListValues().get(0)); - fillKPIReferenceForIndex(rowIndex, columnIndex, Arrays.asList(columnKPI, rowKPI)); - button.setText(" "); - button.setIcon(IconType.COMPASS); - button.setSize(ButtonSize.LARGE); - - button.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - - //callScatterAndDeaChart(rowIndex, columnIndex, button); - callScatter(rowIndex, columnIndex, button); - } - }); - } - - button.setType(ButtonType.LINK); - //APPLYING STYLE ONLY ON INTERNAL VALUES OF CSV - if(j>0) - button.getElement().getStyle().setColor("#000"); - - button.addAttachHandler(new AttachEvent.Handler() { - - @Override - public void onAttachOrDetach(AttachEvent event) { - if(theColor.startsWith("#")){ - GWT.log("Setting backgrounf color: "+theColor); - button.getElement().getParentElement().getStyle().setBackgroundColor(theColor); - } - } - }); - - flexTable.setWidget(rowIndex, j,button); - } - + } + //diagonal + else if(rowIndex==j){ + //rowValue should be 1 + //HTML dg = new HTML("1"); + HTML dg = new HTML(rowValue); + dg.getElement().getStyle().setFontSize(18, Unit.PX); + flexTable.setWidget(rowIndex, j,dg); + continue; + //j > 0 + }else{ + KPI columnKPI = getKPIForName(headerRow.getListValues().get(columnIndex)); + //Here the first index is the KPI name + KPI rowKPI = getKPIForName(row.getListValues().get(0)); + fillKPIReferenceForIndex(rowIndex, columnIndex, Arrays.asList(columnKPI, rowKPI)); + //button.setText(" "); + //button.setIcon(IconType.COMPASS); + //button.setSize(ButtonSize.LARGE); + + buttonHTML.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + + //callScatterAndDeaChart(rowIndex, columnIndex, button); + callScatter(rowIndex, columnIndex, buttonHTML); } + }); + } - hp.add(flexTable); - - final FlexTable flexLegend = new FlexTable(); - flexLegend.setStyleName("simpletable"); - //flexLegend.getElement().getStyle().setBorderWidth(0, Unit.PX); - Map map = CorrelationValueToColourUtil.getMap(); - flexLegend.setWidget(0, 0, new Label("Legend")); - flexLegend.setWidget(0, 1, new HTML("")); - int i = 1; - for (String key : map.keySet()) { - final String rgbColor = map.get(key); - final HTML theLegendColor = new HTML(""); - flexLegend.setWidget(i, 0, theLegendColor); - flexLegend.setWidget(i, 1, new HTML(key)); - theLegendColor.addAttachHandler(new AttachEvent.Handler() { - - @Override - public void onAttachOrDetach(AttachEvent event) { - theLegendColor.getElement().getParentElement().getStyle().setBackgroundColor(rgbColor); - } - }); - - i++; - } + //button.setType(ButtonType.LINK); + //APPLYING STYLE ONLY ON INTERNAL VALUES OF CSV + if(j>0) + buttonHTML.getElement().getStyle().setColor("#000"); - flexLegend.getElement().getStyle().setMarginLeft(15, Unit.PX); - hp.add(flexLegend); - uib_vp_correlation_results_container.insert(hp,0); - } + buttonHTML.addAttachHandler(new AttachEvent.Handler() { + + @Override + public void onAttachOrDetach(AttachEvent event) { + if(theColor.startsWith("#")){ + GWT.log("Setting backgrounf color: "+theColor); + buttonHTML.getElement().getParentElement().getStyle().setBackgroundColor(theColor); + } + } }); - break; - default: - break; + flexTable.setWidget(rowIndex, j,buttonHTML); } } + + hp.add(flexTable); + + final FlexTable flexLegend = new FlexTable(); + flexLegend.setStyleName("simpletable"); + //flexLegend.getElement().getStyle().setBorderWidth(0, Unit.PX); + Map map = CorrelationValueToColourUtil.getMap(); + flexLegend.setWidget(0, 0, new Label("Legend")); + flexLegend.setWidget(0, 1, new HTML("")); + int i = 1; + for (String key : map.keySet()) { + final String rgbColor = map.get(key); + final HTML theLegendColor = new HTML(""); + flexLegend.setWidget(i, 0, theLegendColor); + flexLegend.setWidget(i, 1, new HTML(key)); + theLegendColor.addAttachHandler(new AttachEvent.Handler() { + + @Override + public void onAttachOrDetach(AttachEvent event) { + theLegendColor.getElement().getParentElement().getStyle().setBackgroundColor(rgbColor); + } + }); + + i++; + } + + flexLegend.getElement().getStyle().setMarginLeft(15, Unit.PX); + hp.add(flexLegend); + uib_vp_correlation_results_container.insert(hp,0); + } /** @@ -691,36 +697,36 @@ public class AnalyticsPanelResult extends Composite { } - /** - * Call box plot and speedo meter. - * - * @param rowIndex the row index - * @param columnIndex the column index - * @param button the button - */ - private void callBoxPlotAndSpeedoMeter(int rowIndex, int columnIndex, Button button){ - - String focusID = checkValidFocusID(); - - if(focusID==null) - return; - - GWT.log("Called BoxPlotAndSpeedoMeter at rowIndex: "+rowIndex +", columnIndex: "+columnIndex); - HorizontalPanel hp = new HorizontalPanel(); - hp.getElement().addClassName("ext-horizontal-panel"); - HorizontalPanel boxPlot = new HorizontalPanel(); - HorizontalPanel speedometer = new HorizontalPanel(); - hp.add(boxPlot); - hp.add(speedometer); - //hp.getElement().addClassName("ext-horizontal-panel"); - field_unary_algorithm_container.add(hp); - //KPI selectKPI = getKPIForName(button.getText()); - List selectedKPI = getKPIForIndexes(rowIndex, columnIndex); - GWT.log("Selected KPI: "+selectedKPI); - field_unary_algorithm.setVisible(true); - callDataMinerServiceForChart(dataInputParameters, selectedKPI, null, DataMinerAlgorithms.BOXPLOT, focusID, boxPlot); - callDataMinerServiceForChart(dataInputParameters, selectedKPI, null, DataMinerAlgorithms.SPEEDOMETER, focusID, speedometer); - } +// /** +// * Call box plot and speedo meter. +// * +// * @param rowIndex the row index +// * @param columnIndex the column index +// * @param button the button +// */ +// private void callBoxPlotAndSpeedoMeter(int rowIndex, int columnIndex, Button button){ +// +// String focusID = checkValidFocusID(); +// +// if(focusID==null) +// return; +// +// GWT.log("Called BoxPlotAndSpeedoMeter at rowIndex: "+rowIndex +", columnIndex: "+columnIndex); +// HorizontalPanel hp = new HorizontalPanel(); +// hp.getElement().addClassName("ext-horizontal-panel"); +// HorizontalPanel boxPlot = new HorizontalPanel(); +// HorizontalPanel speedometer = new HorizontalPanel(); +// hp.add(boxPlot); +// hp.add(speedometer); +// //hp.getElement().addClassName("ext-horizontal-panel"); +// field_unary_algorithm_container.add(hp); +// //KPI selectKPI = getKPIForName(button.getText()); +// List selectedKPI = getKPIForIndexes(rowIndex, columnIndex); +// GWT.log("Selected KPI: "+selectedKPI); +// field_unary_algorithm.setVisible(true); +// callDataMinerServiceForChart(dataInputParameters, selectedKPI, null, DataMinerAlgorithms.BOXPLOT, focusID, boxPlot); +// callDataMinerServiceForChart(dataInputParameters, selectedKPI, null, DataMinerAlgorithms.SPEEDOMETER, focusID, speedometer); +// } /** @@ -754,35 +760,35 @@ public class AnalyticsPanelResult extends Composite { } - /** - * Call scatter and dea chart. - * - * @param rowIndex the row index - * @param columnIndex the column index - * @param button the button - */ - private void callScatterAndDeaChart(int rowIndex, int columnIndex, Button button){ - - String focusID = checkValidFocusID(); - - if(focusID==null) - return; - - GWT.log("Called ScatterAndDeaChart at rowIndex: "+rowIndex +", columnIndex: "+columnIndex); - HorizontalPanel hp = new HorizontalPanel(); - hp.getElement().addClassName("ext-horizontal-panel"); - HorizontalPanel scatter = new HorizontalPanel(); - HorizontalPanel deaChart = new HorizontalPanel(); - hp.add(scatter); - hp.add(deaChart); - //hp.getElement().addClassName("ext-horizontal-panel"); - field_binary_algorithm_container.add(hp); - List selectedKPI = getKPIForIndexes(rowIndex, columnIndex); - GWT.log("Selected KPI: "+selectedKPI); - field_binary_algorithm.setVisible(true); - callDataMinerServiceForChart(dataInputParameters, selectedKPI, null, DataMinerAlgorithms.SCATTER, focusID, scatter); - callDataMinerServiceForChart(dataInputParameters, selectedKPI, null, DataMinerAlgorithms.DEA_CHART, focusID, deaChart); - } +// /** +// * Call scatter and dea chart. +// * +// * @param rowIndex the row index +// * @param columnIndex the column index +// * @param button the button +// */ +// private void callScatterAndDeaChart(int rowIndex, int columnIndex, Button button){ +// +// String focusID = checkValidFocusID(); +// +// if(focusID==null) +// return; +// +// GWT.log("Called ScatterAndDeaChart at rowIndex: "+rowIndex +", columnIndex: "+columnIndex); +// HorizontalPanel hp = new HorizontalPanel(); +// hp.getElement().addClassName("ext-horizontal-panel"); +// HorizontalPanel scatter = new HorizontalPanel(); +// HorizontalPanel deaChart = new HorizontalPanel(); +// hp.add(scatter); +// hp.add(deaChart); +// //hp.getElement().addClassName("ext-horizontal-panel"); +// field_binary_algorithm_container.add(hp); +// List selectedKPI = getKPIForIndexes(rowIndex, columnIndex); +// GWT.log("Selected KPI: "+selectedKPI); +// field_binary_algorithm.setVisible(true); +// callDataMinerServiceForChart(dataInputParameters, selectedKPI, null, DataMinerAlgorithms.SCATTER, focusID, scatter); +// callDataMinerServiceForChart(dataInputParameters, selectedKPI, null, DataMinerAlgorithms.DEA_CHART, focusID, deaChart); +// } /** @@ -792,7 +798,7 @@ public class AnalyticsPanelResult extends Composite { * @param columnIndex the column index * @param button the button */ - private void callScatter(int rowIndex, int columnIndex, Button button){ + private void callScatter(int rowIndex, int columnIndex, HTML button){ String focusID = checkValidFocusID(); @@ -806,37 +812,37 @@ public class AnalyticsPanelResult extends Composite { } - /** - * Call dea analysis. - * - * @param inputKPINames the input kpi names - * @param outputKPINames the output kpi names - * @param button the button - */ - private void callDeaAnalysis(List inputKPINames, List outputKPINames, Button button){ - - HorizontalPanel hp = new HorizontalPanel(); - hp.getElement().addClassName("ext-horizontal-panel"); - HorizontalPanel deaAnalysis = new HorizontalPanel(); - hp.add(deaAnalysis); - //hp.getElement().addClassName("ext-horizontal-panel"); - uib_vp_deanalanlysis_algorithm_container.add(hp); - - List inputKPI = new ArrayList(); - for (String kpiName : inputKPINames) { - inputKPI.add(getKPIForName(kpiName)); - } - - List outputKPI = new ArrayList(); - for (String kpiName : outputKPINames) { - outputKPI.add(getKPIForName(kpiName)); - } - - - GWT.log("Calling Dea Analysys... with input: "+inputKPI+" and output: "+outputKPI); - uib_vp_deanalanlysis_algorithm.setVisible(true); - callDataMinerServiceForChart(dataInputParameters, inputKPI, outputKPI, DataMinerAlgorithms.DEA_ANALYSIS, "ID", deaAnalysis); - } +// /** +// * Call dea analysis. +// * +// * @param inputKPINames the input kpi names +// * @param outputKPINames the output kpi names +// * @param button the button +// */ +// private void callDeaAnalysis(List inputKPINames, List outputKPINames, Button button){ +// +// HorizontalPanel hp = new HorizontalPanel(); +// hp.getElement().addClassName("ext-horizontal-panel"); +// HorizontalPanel deaAnalysis = new HorizontalPanel(); +// hp.add(deaAnalysis); +// //hp.getElement().addClassName("ext-horizontal-panel"); +// uib_vp_deanalanlysis_algorithm_container.add(hp); +// +// List inputKPI = new ArrayList(); +// for (String kpiName : inputKPINames) { +// inputKPI.add(getKPIForName(kpiName)); +// } +// +// List outputKPI = new ArrayList(); +// for (String kpiName : outputKPINames) { +// outputKPI.add(getKPIForName(kpiName)); +// } +// +// +// GWT.log("Calling Dea Analysys... with input: "+inputKPI+" and output: "+outputKPI); +// uib_vp_deanalanlysis_algorithm.setVisible(true); +// callDataMinerServiceForChart(dataInputParameters, inputKPI, outputKPI, DataMinerAlgorithms.DEA_ANALYSIS, "ID", deaAnalysis); +// } /** diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/ShowResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/ShowResult.java index d5c4518..bcca8c8 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/ShowResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/ShowResult.java @@ -77,7 +77,10 @@ public class ShowResult extends Composite { public void showCSVFile(CSVFile csvFile, String cssStyleName){ final FlexTable flexTable = new FlexTable(); - flexTable.setStyleName(cssStyleName); + + if(cssStyleName!=null && !cssStyleName.isEmpty()) + flexTable.setStyleName(cssStyleName); + flexTable.getElement().getStyle().setMarginLeft(30, Unit.PX); flexTable.getElement().getStyle().setMarginRight(30, Unit.PX); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/PerformFishAnalyticsServiceImpl.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/PerformFishAnalyticsServiceImpl.java index da8dfe5..e4d9260 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/server/PerformFishAnalyticsServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/server/PerformFishAnalyticsServiceImpl.java @@ -721,11 +721,12 @@ public class PerformFishAnalyticsServiceImpl extends RemoteServiceServlet */ public List manageOutputsForPerformFishAnalysis(List output) { - OutputFile theOutputFile = null; + List newOutputFiles = new ArrayList(); try { Map> theLegendMap = new HashMap>(); + //FINDING THE FILE WIHT THE LEGEND for (OutputFile outputFile : output) { log.trace("outputFile: {}", outputFile.getName()); if(outputFile.getName().toLowerCase().contains("legend") && outputFile.getDataType().equals(FileContentType.CSV)){ @@ -744,24 +745,39 @@ public class PerformFishAnalyticsServiceImpl extends RemoteServiceServlet if(theLegendMap.size()>0){ log.info("Legend created as {}", theLegendMap.toString()); for (OutputFile outputFile : output) { - //THE FILE MUST NOT CONTAINT *_legend_* IN THE NAME - if(!outputFile.getName().toLowerCase().contains("legend") && outputFile.getDataType().equals(FileContentType.CSV)){ - CSVFile theCorrelationFile = getCSVFile(outputFile, true); + OutputFile theOutputFile = outputFile; + String toNameLower = outputFile.getName().toLowerCase(); + + //SKIPPING THE LEGEND + if(toNameLower.contains("legend")) { + continue; + } + + if(outputFile.getDataType().equals(FileContentType.CSV)) { + + //FINDING THE FILE *index* TO CREATE A NEW CSV REPLACING THE LABELS 'A','B','C', etc. WITH THE NAMES (THE KPI NAMES) CONTAINED IN THE LEGEND + if(toNameLower.contains("index")){ + CSVFile theCorrelationMatrixIndexCSVFile = getCSVFile(outputFile, true); try{ - theOutputFile = createCSVWithLegendValues(theCorrelationFile, theLegendMap); + theOutputFile = createCSVWithLegendValues(theCorrelationMatrixIndexCSVFile, theLegendMap); }catch(Exception e){ log.warn("Error thrown creating the CSV File with legend returning the original output file {}", outputFile); theOutputFile = outputFile; } - break; + //break; } } + + //RETURNING ALSO THE file correlation_matrix.csv for applying the COLORS + newOutputFiles.add(theOutputFile); + } + }else{ log.warn("The Legend file not found returning the original output files {}", output); return output; } - return Arrays.asList(theOutputFile); + return newOutputFiles; }catch (Exception e) { log.warn("Error occured managing the CSV File returing the original files extracted form .zip {}", output); @@ -895,7 +911,7 @@ public class PerformFishAnalyticsServiceImpl extends RemoteServiceServlet //delete the file; if(theFile!=null && deleteAfter){ try{ - Files.deleteIfExists(theFile.toPath()); + //Files.deleteIfExists(theFile.toPath()); }catch(Exception e){ //silent } diff --git a/src/main/resources/BATCH/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv b/src/main/resources/BATCH/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv index 6c0c7df..94b33b0 100644 --- a/src/main/resources/BATCH/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv +++ b/src/main/resources/BATCH/KPI/GROW_OUT_AGGREGATED_CLOSED_BATCHES.csv @@ -1,8 +1,8 @@ KPI CODE,KPI NAME - LEVEL 1,KPI NAME – LEVEL 2,KPI NAME - LEVEL 3 ,Dependency on treatments KPIs,, ,,Number of therapeutic treatments, -G9,,,Total number of antiparasitic treatments (n) -G10,,,Total number of antibiotic treatments (n) +G9,,,Total number of antiparasitic treatments (n) +G10,,,Total number of antibiotic treatments (n) ,Productivity KPIs,, G20,,Biomass produced per number of FTE employees (fish/FTE), G21,,Biomass produced per volumes of sea water used (ton produced/m^3), diff --git a/src/main/webapp/PerformFishAnalytics.css b/src/main/webapp/PerformFishAnalytics.css index 729e728..889ea0c 100644 --- a/src/main/webapp/PerformFishAnalytics.css +++ b/src/main/webapp/PerformFishAnalytics.css @@ -292,4 +292,15 @@ table.synoptictable-farm td:first-child { table.synoptictable-farm td:last-child { border-right: none; +} + +.my-active-html { + cursor: pointer; + font-size: 18px; + color: #0066cc !important; +/* text-decoration: underline; */ +} + +.my-active-html:hover{ + color: #000 !important; } \ No newline at end of file