Project

General

Profile

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
}
(1-1/2)