1
|
package eu.dnetlib.client.rightColumn;
|
2
|
|
3
|
import com.github.gwtbootstrap.client.ui.Heading;
|
4
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
5
|
import com.google.gwt.core.client.JsonUtils;
|
6
|
import com.google.gwt.event.dom.client.LoadEvent;
|
7
|
import com.google.gwt.event.dom.client.LoadHandler;
|
8
|
import com.google.gwt.http.client.Request;
|
9
|
import com.google.gwt.http.client.RequestBuilder;
|
10
|
import com.google.gwt.http.client.RequestCallback;
|
11
|
import com.google.gwt.http.client.RequestException;
|
12
|
import com.google.gwt.http.client.Response;
|
13
|
import com.google.gwt.user.client.Random;
|
14
|
import com.google.gwt.user.client.Window;
|
15
|
import com.google.gwt.user.client.ui.FlexTable;
|
16
|
import com.google.gwt.user.client.ui.FlowPanel;
|
17
|
import com.google.gwt.user.client.ui.HTML;
|
18
|
import com.google.gwt.user.client.ui.RootPanel;
|
19
|
import com.google.gwt.user.client.ui.Widget;
|
20
|
|
21
|
import eu.dnetlib.client.Generate;
|
22
|
import eu.dnetlib.client.widgets.AlertWidget;
|
23
|
import eu.dnetlib.shared.TableInfoResponse;
|
24
|
|
25
|
public class DataBox extends Widget{
|
26
|
|
27
|
private FlowPanel masterPanel = new FlowPanel();
|
28
|
private FlexTable tableOfContent = new FlexTable();
|
29
|
private TableInfoResponse tableInfoResponse;
|
30
|
private HTML loadingWheel = new HTML("<div class=\"loader-big\"></div><div class=\"whiteFilm\"></div>");
|
31
|
private AlertWidget infoAlert = new AlertWidget("Could not retrieve JSON", AlertType.ERROR);
|
32
|
|
33
|
public DataBox(){
|
34
|
|
35
|
|
36
|
// RootPanel.get("tableChart").clear();
|
37
|
final Heading infoHeading = new Heading(3);
|
38
|
infoHeading.setText("The table of contents will be displayed here..");
|
39
|
infoHeading.addStyleName("info-preview");
|
40
|
RootPanel.get("tableChart").add(infoHeading);
|
41
|
//designFakeDataBox();
|
42
|
|
43
|
|
44
|
Generate.getInstance().getThemeForTable().addStyleName("my-frame");
|
45
|
|
46
|
|
47
|
RootPanel.get("tableChart").add(Generate.getInstance().getThemeForTable());
|
48
|
Generate.getInstance().getThemeForTable().addLoadHandler(new LoadHandler() {
|
49
|
|
50
|
@Override
|
51
|
public void onLoad(LoadEvent event) {
|
52
|
// TODO Auto-generated method stub
|
53
|
RootPanel.get("tableChart").remove(infoHeading);
|
54
|
}
|
55
|
});
|
56
|
}
|
57
|
|
58
|
public DataBox(String URL){
|
59
|
|
60
|
RootPanel.get("tableChart").add(infoAlert);
|
61
|
RootPanel.get("tableChart").addStyleName("loading");
|
62
|
RootPanel.get("tableChart").add(loadingWheel);
|
63
|
bringTableInfoData(URL);
|
64
|
}
|
65
|
|
66
|
|
67
|
public void designDataBox(){
|
68
|
|
69
|
RootPanel.get("tableChart").clear();
|
70
|
|
71
|
tableOfContent.addStyleName("databox-table");
|
72
|
tableOfContent.getRowFormatter().addStyleName(0, "databox-header");
|
73
|
tableOfContent.setText(0, 0, "Values of categories");
|
74
|
int counter = 0;
|
75
|
|
76
|
for(int i=0;i<tableInfoResponse.getResponse().length();i++){//adding the tiles at the top of the table
|
77
|
for(int j=0;j<tableInfoResponse.getResponse().get(i).getTitles().length();j++){
|
78
|
counter++;
|
79
|
if(tableInfoResponse.getResponse().get(i).getTitles().get(j).equals("empty")){
|
80
|
tableOfContent.setText(0,counter,"Series "+ counter);
|
81
|
}else{
|
82
|
tableOfContent.setText(0,counter,tableInfoResponse.getResponse().get(i).getTitles().get(j)+"");
|
83
|
}
|
84
|
|
85
|
}
|
86
|
}
|
87
|
for(int i=0;i<tableInfoResponse.getResponse().length();i++){//adding the main values (1st column)
|
88
|
for(int j=0;j<tableInfoResponse.getResponse().get(i).getNaming().length();j++){
|
89
|
tableOfContent.getRowFormatter().addStyleName(j+1, "databox-data");
|
90
|
tableOfContent.setText(j+1, 0, tableInfoResponse.getResponse().get(i).getNaming().get(j).toString());
|
91
|
}
|
92
|
}
|
93
|
counter=0;
|
94
|
for(int i=0;i<tableInfoResponse.getResponse().length();i++){//adding the rest values(all the other columns)
|
95
|
for(int j=0;j<tableInfoResponse.getResponse().get(i).getValues().length();j++){
|
96
|
counter++;
|
97
|
for(int y=0;y<tableInfoResponse.getResponse().get(i).getValues().get(j).length();y++){
|
98
|
tableOfContent.setText(y+1, counter , Integer.parseInt(tableInfoResponse.getResponse().get(i).getValues().get(j).get(y))+"");
|
99
|
}
|
100
|
}
|
101
|
}
|
102
|
masterPanel.add(tableOfContent);
|
103
|
masterPanel.addStyleName("databox");
|
104
|
RootPanel.get("tableChart").add(masterPanel);
|
105
|
|
106
|
}
|
107
|
|
108
|
public void bringTableInfoData(String url){
|
109
|
|
110
|
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
|
111
|
|
112
|
try {
|
113
|
|
114
|
|
115
|
Request request = builder.sendRequest(null, new RequestCallback() {
|
116
|
|
117
|
@Override
|
118
|
public void onResponseReceived(Request request, Response response) {
|
119
|
|
120
|
if(response.getStatusCode()==200){
|
121
|
tableInfoResponse = JsonUtils.safeEval(response.getText().toString());
|
122
|
RootPanel.get("tableChart").removeStyleName("loading");
|
123
|
RootPanel.get("tableChart").remove(loadingWheel);
|
124
|
designDataBox();
|
125
|
|
126
|
}else{
|
127
|
RootPanel.get("tableChart").clear();
|
128
|
RootPanel.get("tableChart").add(infoAlert);
|
129
|
RootPanel.get("tableChart").removeStyleName("loading");
|
130
|
RootPanel.get("tableChart").remove(loadingWheel);
|
131
|
infoAlert.trigger();
|
132
|
}
|
133
|
}
|
134
|
|
135
|
@Override
|
136
|
public void onError(Request request, Throwable exception) {
|
137
|
RootPanel.get("tableChart").clear();
|
138
|
RootPanel.get("tableChart").add(infoAlert);
|
139
|
RootPanel.get("tableChart").removeStyleName("loading");
|
140
|
RootPanel.get("tableChart").remove(loadingWheel);
|
141
|
infoAlert.trigger();
|
142
|
}
|
143
|
});
|
144
|
} catch (RequestException e) {
|
145
|
RootPanel.get("tableChart").clear();
|
146
|
RootPanel.get("tableChart").add(infoAlert);
|
147
|
RootPanel.get("tableChart").removeStyleName("loading");
|
148
|
RootPanel.get("tableChart").remove(loadingWheel);
|
149
|
infoAlert.trigger();
|
150
|
}
|
151
|
}
|
152
|
|
153
|
public void DisplayError(String msg){
|
154
|
Window.alert(msg);
|
155
|
|
156
|
}
|
157
|
}
|