Revision 35939
Added by Stefania Martziou about 9 years ago
MonitorFundingRequestsWidget.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.client; |
2 | 2 |
|
3 |
import com.github.gwtbootstrap.client.ui.AccordionGroup;
|
|
4 |
import com.github.gwtbootstrap.client.ui.Alert;
|
|
3 |
import com.github.gwtbootstrap.client.ui.*;
|
|
4 |
import com.github.gwtbootstrap.client.ui.ListBox;
|
|
5 | 5 |
import com.github.gwtbootstrap.client.ui.constants.AlertType; |
6 |
import com.github.gwtbootstrap.client.ui.constants.AlternateSize; |
|
7 |
import com.github.gwtbootstrap.client.ui.constants.FormType; |
|
6 | 8 |
import com.github.gwtbootstrap.client.ui.constants.IconType; |
7 | 9 |
import com.github.gwtbootstrap.client.ui.event.HideEvent; |
8 | 10 |
import com.github.gwtbootstrap.client.ui.event.HideHandler; |
... | ... | |
11 | 13 |
import com.google.gwt.core.client.GWT; |
12 | 14 |
import com.google.gwt.dom.client.Document; |
13 | 15 |
import com.google.gwt.dom.client.Style; |
16 |
import com.google.gwt.event.dom.client.ChangeEvent; |
|
17 |
import com.google.gwt.event.dom.client.ChangeHandler; |
|
14 | 18 |
import com.google.gwt.i18n.client.DateTimeFormat; |
19 |
import com.google.gwt.user.client.Timer; |
|
15 | 20 |
import com.google.gwt.user.client.rpc.AsyncCallback; |
16 | 21 |
import com.google.gwt.user.client.ui.*; |
17 |
import eu.dnetlib.goldoa.domain.Request; |
|
18 |
import eu.dnetlib.goldoa.domain.RequestInfo; |
|
22 |
import com.google.gwt.user.client.ui.Label; |
|
23 |
import eu.dnetlib.client.widgets.FormFieldSet; |
|
24 |
import eu.dnetlib.client.widgets.TextBox; |
|
25 |
import eu.dnetlib.client.widgets.ValueChangeEvent; |
|
26 |
import eu.dnetlib.client.widgets.ValueChangeHandler; |
|
27 |
import eu.dnetlib.goldoa.domain.*; |
|
19 | 28 |
|
29 |
import java.util.Date; |
|
20 | 30 |
import java.util.List; |
21 | 31 |
|
22 | 32 |
/** |
... | ... | |
31 | 41 |
private Alert errorLabel = new Alert(); |
32 | 42 |
private Alert warningLabel = new Alert(); |
33 | 43 |
|
44 |
private FlowPanel sortAndFilterPanel = new FlowPanel(); |
|
45 |
private TextBox search = new TextBox(); |
|
46 |
private ListBox orderByTypes = new ListBox(); |
|
47 |
private ListBox sortByTypes = new ListBox(); |
|
48 |
|
|
34 | 49 |
private FlowPanel requestsForApprovalPanel = new FlowPanel(); |
35 | 50 |
|
36 | 51 |
private DateTimeFormat dtf = DateTimeFormat.getFormat("yyyy/MM/dd"); |
37 | 52 |
private DataServiceAsync dataService = GWT.create(DataService.class); |
38 | 53 |
|
54 |
private Timer timer; |
|
55 |
|
|
39 | 56 |
public MonitorFundingRequestsWidget() { |
40 | 57 |
|
41 | 58 |
monitorFundingRequestsPagePanel.addStyleName("content"); |
... | ... | |
58 | 75 |
warningLabel.setClose(false); |
59 | 76 |
warningLabel.setVisible(false); |
60 | 77 |
|
78 |
addUtilitiesBar(); |
|
79 |
|
|
61 | 80 |
requestsForApprovalPanel.addStyleName("requestsListPanel"); |
62 | 81 |
|
63 | 82 |
monitorFundingRequestsPagePanel.add(monitorFundingRequestsTitleLabel); |
64 | 83 |
monitorFundingRequestsPagePanel.add(monitorFundingRequestsInfoLabel); |
84 |
monitorFundingRequestsPagePanel.add(sortAndFilterPanel); |
|
65 | 85 |
monitorFundingRequestsPagePanel.add(errorLabel); |
66 | 86 |
monitorFundingRequestsPagePanel.add(warningLabel); |
67 | 87 |
monitorFundingRequestsPagePanel.add(requestsForApprovalPanel); |
... | ... | |
90 | 110 |
SidebarPanel sidebarPanel = new SidebarPanel("Help"); |
91 | 111 |
RootPanel.get("sidebar").add(sidebarPanel.asWidget()); |
92 | 112 |
|
93 |
final HTML loadingWheel = new HTML("<div class=\"loader-big\"></div><div class=\"whiteFilm\"></div>"); |
|
94 |
requestsForApprovalPanel.addStyleName("loading"); |
|
95 |
requestsForApprovalPanel.add(loadingWheel); |
|
113 |
search.setValue("", false); |
|
114 |
orderByTypes.setSelectedValue(RequestSortOrder.ASCENDING.name()); |
|
115 |
sortByTypes.setSelectedValue(RequestSort.DATE.name()); |
|
116 |
timer = null; |
|
96 | 117 |
|
97 |
dataService.getRequests(null, null, null, null, null, null, new AsyncCallback<List<RequestInfo>>() { |
|
118 |
loadRequests(null, null, RequestSort.DATE, RequestSortOrder.ASCENDING, null, null); |
|
119 |
} |
|
98 | 120 |
|
99 |
@Override
|
|
100 |
public void onFailure(Throwable throwable) {
|
|
121 |
@Override |
|
122 |
public void setToken(String token) {
|
|
101 | 123 |
|
102 |
requestsForApprovalPanel.removeStyleName("loading"); |
|
103 |
requestsForApprovalPanel.remove(loadingWheel); |
|
124 |
} |
|
104 | 125 |
|
105 |
errorLabel.setText("System error retrieving requests"); |
|
106 |
errorLabel.setVisible(true); |
|
126 |
private void addUtilitiesBar() { |
|
127 |
|
|
128 |
FlowPanel sortAndFilterBar = new FlowPanel(); |
|
129 |
sortAndFilterBar.addStyleName("sortAndFilterBar"); |
|
130 |
|
|
131 |
search.addStyleName("searchTextBox"); |
|
132 |
search.addStyleName("float-right"); |
|
133 |
search.setPlaceholder("Filter..."); |
|
134 |
search.setValueChangeHandler(new ValueChangeHandler() { |
|
135 |
@Override |
|
136 |
public void handle(ValueChangeEvent valueChangeEvent) { |
|
137 |
sortAndFilter(); |
|
107 | 138 |
} |
139 |
}); |
|
108 | 140 |
|
141 |
sortAndFilterBar.add(search); |
|
142 |
|
|
143 |
orderByTypes.addItem("Ascending", RequestSortOrder.ASCENDING.name()); |
|
144 |
orderByTypes.addItem("Descending", RequestSortOrder.DESCENDING.name()); |
|
145 |
orderByTypes.setAlternateSize(AlternateSize.SMALL); |
|
146 |
orderByTypes.addChangeHandler(new ChangeHandler() { |
|
109 | 147 |
@Override |
110 |
public void onSuccess(List<RequestInfo> requestInfoList) { |
|
148 |
public void onChange(ChangeEvent changeEvent) { |
|
149 |
sortAndFilter(); |
|
150 |
} |
|
151 |
}); |
|
111 | 152 |
|
112 |
requestsForApprovalPanel.removeStyleName("loading"); |
|
113 |
requestsForApprovalPanel.remove(loadingWheel); |
|
153 |
Form orderBy = new Form(); |
|
154 |
orderBy.setType(FormType.HORIZONTAL); |
|
155 |
orderBy.addStyleName("inlineBlock"); |
|
156 |
orderBy.add(new FormFieldSet("Order by", orderByTypes)); |
|
114 | 157 |
|
115 |
if(requestInfoList.isEmpty()) { |
|
116 |
warningLabel.setText("No available requests at the moment."); |
|
117 |
warningLabel.setVisible(true); |
|
118 |
} else { |
|
119 |
for(RequestInfo requestInfo : requestInfoList) |
|
120 |
drawRequestInfo(requestInfo); |
|
121 |
} |
|
158 |
sortByTypes.addItem("Date", RequestSort.DATE.name()); |
|
159 |
sortByTypes.addItem("Publication", RequestSort.PUBLICATION.name()); |
|
160 |
sortByTypes.addItem("Status", RequestSort.STATUS.name()); |
|
161 |
sortByTypes.setAlternateSize(AlternateSize.SMALL); |
|
162 |
sortByTypes.addChangeHandler(new ChangeHandler() { |
|
163 |
@Override |
|
164 |
public void onChange(ChangeEvent changeEvent) { |
|
165 |
sortAndFilter(); |
|
122 | 166 |
} |
123 | 167 |
}); |
124 | 168 |
|
169 |
Form sortBy = new Form(); |
|
170 |
sortBy.setType(FormType.HORIZONTAL); |
|
171 |
sortBy.addStyleName("inlineBlock"); |
|
172 |
sortBy.add(new FormFieldSet("Sort by", sortByTypes)); |
|
173 |
|
|
174 |
sortAndFilterBar.add(sortBy); |
|
175 |
sortAndFilterBar.add(orderBy); |
|
176 |
|
|
177 |
sortAndFilterPanel.add(sortAndFilterBar); |
|
125 | 178 |
} |
126 | 179 |
|
127 |
@Override |
|
128 |
public void setToken(String token) { |
|
180 |
private void sortAndFilter() { |
|
129 | 181 |
|
182 |
if(timer==null) { |
|
183 |
|
|
184 |
timer = new Timer() { |
|
185 |
|
|
186 |
@Override |
|
187 |
public void run() { |
|
188 |
|
|
189 |
RequestSort requestSort = RequestSort.valueOf(sortByTypes.getSelectedValue()); |
|
190 |
RequestSortOrder requestSortOrder = RequestSortOrder.valueOf(orderByTypes.getSelectedValue()); |
|
191 |
String term = null; |
|
192 |
if(!search.getValue().trim().equals("")) |
|
193 |
term = search.getValue().trim(); |
|
194 |
|
|
195 |
loadRequests(null, null, requestSort, requestSortOrder, null, term); |
|
196 |
} |
|
197 |
}; |
|
198 |
timer.schedule(300); |
|
199 |
|
|
200 |
} else { |
|
201 |
|
|
202 |
timer.cancel(); |
|
203 |
timer.schedule(300); |
|
204 |
} |
|
130 | 205 |
} |
131 | 206 |
|
207 |
private void loadRequests(Date from, Date to, RequestSort requestSortBy, RequestSortOrder order, RequestFilter requestFilter, String term) { |
|
208 |
|
|
209 |
final HTML loadingWheel = new HTML("<div class=\"loader-big\"></div><div class=\"whiteFilm\"></div>"); |
|
210 |
requestsForApprovalPanel.addStyleName("loading"); |
|
211 |
requestsForApprovalPanel.add(loadingWheel); |
|
212 |
|
|
213 |
dataService.getRequests(from, to, requestSortBy, order, requestFilter, term, |
|
214 |
new AsyncCallback<List<RequestInfo>>() { |
|
215 |
|
|
216 |
@Override |
|
217 |
public void onFailure(Throwable throwable) { |
|
218 |
|
|
219 |
requestsForApprovalPanel.clear(); |
|
220 |
requestsForApprovalPanel.removeStyleName("loading"); |
|
221 |
|
|
222 |
errorLabel.setText("System error retrieving requests"); |
|
223 |
errorLabel.setVisible(true); |
|
224 |
} |
|
225 |
|
|
226 |
@Override |
|
227 |
public void onSuccess(List<RequestInfo> requestInfoList) { |
|
228 |
|
|
229 |
requestsForApprovalPanel.clear(); |
|
230 |
requestsForApprovalPanel.removeStyleName("loading"); |
|
231 |
|
|
232 |
if (requestInfoList.isEmpty()) { |
|
233 |
warningLabel.setText("No available requests at the moment."); |
|
234 |
warningLabel.setVisible(true); |
|
235 |
} else { |
|
236 |
for (RequestInfo requestInfo : requestInfoList) |
|
237 |
drawRequestInfo(requestInfo); |
|
238 |
} |
|
239 |
} |
|
240 |
}); |
|
241 |
} |
|
242 |
|
|
132 | 243 |
private void drawRequestInfo(final RequestInfo requestInfo) { |
133 | 244 |
|
134 | 245 |
final AccordionGroup dataRequestAccordionItem = new AccordionGroup(); |
Also available in: Unified diff
Initial sort and filter bar in monitor funding requests