diff --git a/changelog.xml b/changelog.xml
index 03d12fb..ce341c8 100644
--- a/changelog.xml
+++ b/changelog.xml
@@ -5,6 +5,7 @@
Added Core Services support [ticket #18291]
Added Detached REs support [ticket #18815]
Added the alphabetical sorting of tabs [ticket #18754]
+ Added TOC menu in reports [ticket #18753]
diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/ApplicationPresenter.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/ApplicationPresenter.java
index db1ae48..4f0b35a 100644
--- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/ApplicationPresenter.java
+++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/ApplicationPresenter.java
@@ -1,8 +1,11 @@
package org.gcube.portlets.user.accountingdashboard.client.application;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.gcube.portlets.user.accountingdashboard.client.application.controller.Controller;
import org.gcube.portlets.user.accountingdashboard.client.application.menu.MenuPresenter;
+import org.gcube.portlets.user.accountingdashboard.client.place.NameTokens;
import com.google.gwt.user.client.Window;
import com.google.inject.Inject;
@@ -15,6 +18,7 @@ import com.gwtplatform.mvp.client.presenter.slots.PermanentSlot;
import com.gwtplatform.mvp.client.proxy.NavigationEvent;
import com.gwtplatform.mvp.client.proxy.NavigationHandler;
import com.gwtplatform.mvp.client.proxy.Proxy;
+import com.gwtplatform.mvp.shared.proxy.PlaceRequest;
/**
*
@@ -24,6 +28,9 @@ import com.gwtplatform.mvp.client.proxy.Proxy;
public class ApplicationPresenter
extends Presenter
implements NavigationHandler {
+
+ private static Logger logger = java.util.logging.Logger.getLogger("");
+
interface PresenterView extends View {
}
@@ -36,11 +43,10 @@ public class ApplicationPresenter
private MenuPresenter menuPresenter;
private Controller controller;
-
@Inject
- ApplicationPresenter(EventBus eventBus, PresenterView view, ApplicationPresenterProxy proxy, MenuPresenter menuPresenter,
- Controller controller) {
+ ApplicationPresenter(EventBus eventBus, PresenterView view, ApplicationPresenterProxy proxy,
+ MenuPresenter menuPresenter, Controller controller) {
super(eventBus, view, proxy, RevealType.Root);
this.menuPresenter = menuPresenter;
this.controller = controller;
@@ -63,16 +69,21 @@ public class ApplicationPresenter
@Override
public void onNavigation(NavigationEvent navigationEvent) {
- Window.scrollTo(0, 0);
- // PlaceRequest placeRequest=navigationEvent.getRequest();
- // placeManager.revealPlace(placeRequest);
-
+ if (navigationEvent != null) {
+ PlaceRequest placeRequest = navigationEvent.getRequest();
+ logger.log(Level.FINE, "Navigation: " + placeRequest);
+ // If the navigation is related to mainarea scrollbar is not reset
+ if (placeRequest.getNameToken().compareTo(NameTokens.getMainArea()) != 0) {
+ Window.scrollTo(0, 0);
+ }
+ // placeManager.revealPlace(placeRequest);
+ } else {
+ Window.scrollTo(0, 0);
+ }
}
-
- private void callHello(){
+
+ private void callHello() {
controller.callHello();
}
-
-
}
diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/report/ReportAreaView.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/report/ReportAreaView.java
index 42e2d23..aca97d2 100644
--- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/report/ReportAreaView.java
+++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/report/ReportAreaView.java
@@ -12,9 +12,13 @@ import org.gcube.portlets.user.accountingdashboard.client.resources.AppResources
import org.gcube.portlets.user.accountingdashboard.shared.data.ReportData;
import org.gcube.portlets.user.accountingdashboard.shared.data.ReportElementData;
+import com.github.gwtbootstrap.client.ui.NavHeader;
+import com.github.gwtbootstrap.client.ui.NavLink;
import com.github.gwtbootstrap.client.ui.Tab;
import com.github.gwtbootstrap.client.ui.TabPanel;
+import com.github.gwtbootstrap.client.ui.WellNavList;
import com.github.gwtbootstrap.client.ui.base.IconAnchor;
+import com.github.gwtbootstrap.client.ui.constants.IconType;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
@@ -96,6 +100,31 @@ public class ReportAreaView extends ViewWithUiHandlers
Tab tab = new Tab();
tab.setHeading(category);
HTMLPanel tabContent = new HTMLPanel("");
+ if(categories.get(category).size()>0){
+ WellNavList toc=new WellNavList();
+ toc.addStyleName(resources.uiDataCss().uiDataReportToc());
+ NavHeader navHeader=new NavHeader();
+ if(categories.get(category).size()>1){
+ navHeader.setText("Available Graphs");
+ }else {
+ navHeader.setText("Available Graph");
+ }
+ toc.add(navHeader);
+ for (Chart chart : categories.get(category)) {
+ ReportElementData reData=chart.getReportElementData();
+ StringBuilder navLinkText=new StringBuilder();
+ navLinkText.append(reData.getLabel());
+ //navLinkText.append("[");
+ //navLinkText.append(reData.getCategory());
+ //navLinkText.append("]");
+ NavLink navLink=new NavLink(navLinkText.toString(),"#"+chart.getName());
+ navLink.setIcon(IconType.BAR_CHART);
+ navLink.addStyleName(resources.uiDataCss().uiDataReportTocNavLink());
+ toc.add(navLink);
+ }
+ tabContent.add(toc);
+ }
+
for (Chart chart : categories.get(category)) {
tabContent.add(chart);
}
diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/report/chartjs/Chart.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/report/chartjs/Chart.java
index 479e2cd..3ed5ae6 100644
--- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/report/chartjs/Chart.java
+++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/application/mainarea/report/chartjs/Chart.java
@@ -46,6 +46,14 @@ public class Chart extends HTMLPanel {
}
+ public String getName() {
+ return name;
+ }
+
+ public ReportElementData getReportElementData() {
+ return reportElementData;
+ }
+
public void forceLayout() {
redrawChart();
}
@@ -181,9 +189,9 @@ public class Chart extends HTMLPanel {
heading += "," + recordData.getX();
datasetRow += "," + recordData.getY();
}
-
- var csvData=heading+"\n"+datasetRow + "\n";
- var csvDataEncoded=encodeURI(csvData);
+
+ var csvData = heading + "\n" + datasetRow + "\n";
+ var csvDataEncoded = encodeURI(csvData);
csvContent += csvDataEncoded;
} else {
var datasetRow = seriesData.getLabel();
@@ -191,8 +199,8 @@ public class Chart extends HTMLPanel {
var recordData = dataRow[j];
datasetRow += "," + recordData.getY();
}
- var csvData=datasetRow + "\n";
- var csvDataEncoded=encodeURI(csvData);
+ var csvData = datasetRow + "\n";
+ var csvDataEncoded = encodeURI(csvData);
csvContent += csvDataEncoded;
}
}
diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/resources/AppResources.java b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/resources/AppResources.java
index 5074505..b6c4d36 100644
--- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/resources/AppResources.java
+++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/resources/AppResources.java
@@ -38,7 +38,11 @@ public interface AppResources extends ClientBundle {
String uiDataReportPanel();
String uiDataReportTabPanel();
-
+
+ String uiDataReportToc();
+
+ String uiDataReportTocNavLink();
+
String uiDataChartWrapper();
String uiDataChartCanvas();
diff --git a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/resources/uiData.css b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/resources/uiData.css
index 54511a0..05a206b 100644
--- a/src/main/java/org/gcube/portlets/user/accountingdashboard/client/resources/uiData.css
+++ b/src/main/java/org/gcube/portlets/user/accountingdashboard/client/resources/uiData.css
@@ -67,6 +67,22 @@
max-width: 800px;
}
+/* TOC WellNavList */
+.uiDataReportToc {
+ padding: 8px 0px;
+ max-width: 600px;
+}
+
+/* TOC NavLink */
+.uiDataReportTocNavLink {
+ color: rgb(59, 89, 152);
+}
+
+/* TOC NavLink href */
+.uiDataReportTocNavLink a {
+ color: rgb(59, 89, 152);
+}
+
/* Chart */
.uiDataChartWrapper {