1
|
package eu.dnetlib.repo.manager.client.enrichcontent.advancedsearch;
|
2
|
|
3
|
import com.google.gwt.event.dom.client.ClickEvent;
|
4
|
import com.google.gwt.event.dom.client.ClickHandler;
|
5
|
import com.google.gwt.user.client.Window;
|
6
|
import com.google.gwt.user.client.ui.FlowPanel;
|
7
|
import com.google.gwt.user.client.ui.IsWidget;
|
8
|
import com.google.gwt.user.client.ui.Widget;
|
9
|
import eu.dnetlib.gwt.client.MyFormGroup;
|
10
|
import eu.dnetlib.repo.manager.shared.broker.AdvQueryObject;
|
11
|
import org.gwtbootstrap3.client.ui.Alert;
|
12
|
import org.gwtbootstrap3.client.ui.Button;
|
13
|
import org.gwtbootstrap3.client.ui.Form;
|
14
|
import org.gwtbootstrap3.client.ui.constants.AlertType;
|
15
|
import org.gwtbootstrap3.client.ui.constants.ButtonType;
|
16
|
import org.gwtbootstrap3.client.ui.constants.FormType;
|
17
|
import org.gwtbootstrap3.extras.slider.client.ui.Range;
|
18
|
import org.gwtbootstrap3.extras.slider.client.ui.RangeSlider;
|
19
|
import org.gwtbootstrap3.extras.slider.client.ui.base.FormatterCallback;
|
20
|
|
21
|
/**
|
22
|
* Created by stefania on 11/1/16.
|
23
|
*/
|
24
|
public class EnrichContentAdvancedSearchForm implements IsWidget {
|
25
|
|
26
|
private FlowPanel enrichContentAdvancedSearchFormPanel = new FlowPanel();
|
27
|
|
28
|
private Alert enrichContentAdvancedSearchErrorAlert = new Alert();
|
29
|
private Alert enrichContentAdvancedSearchSuccessAlert = new Alert();
|
30
|
|
31
|
private Form enrichContentAdvancedSearchForm = new Form();
|
32
|
|
33
|
private RangeSlider trustSlider = new RangeSlider(0.00, 1.00, new Range(0.00, 1.00));
|
34
|
|
35
|
private MultiTextBoxFieldSet titles = new MultiTextBoxFieldSet("Title");
|
36
|
private MultiTextBoxFieldSet authors = new MultiTextBoxFieldSet("Author");
|
37
|
private MultiTextBoxFieldSet subjects = new MultiTextBoxFieldSet("Subject");
|
38
|
|
39
|
private MultiDateRangePickerFieldSet dates = new MultiDateRangePickerFieldSet("Date");
|
40
|
|
41
|
private FlowPanel actionButtons = new FlowPanel();
|
42
|
private Button search = new Button("Apply");
|
43
|
private Button clear = new Button("Clear");
|
44
|
|
45
|
private AdvancedSearchFormSelectionListener advancedSearchFormSelectionListener;
|
46
|
|
47
|
private String datasource;
|
48
|
private String topic;
|
49
|
|
50
|
public EnrichContentAdvancedSearchForm(String datasource, String topic) {
|
51
|
|
52
|
this.datasource = datasource;
|
53
|
this.topic = topic;
|
54
|
|
55
|
enrichContentAdvancedSearchFormPanel.addStyleName("advancedSearchForm");
|
56
|
|
57
|
enrichContentAdvancedSearchErrorAlert.setType(AlertType.DANGER);
|
58
|
enrichContentAdvancedSearchErrorAlert.setVisible(false);
|
59
|
enrichContentAdvancedSearchErrorAlert.setDismissable(false);
|
60
|
enrichContentAdvancedSearchFormPanel.add(enrichContentAdvancedSearchErrorAlert);
|
61
|
|
62
|
enrichContentAdvancedSearchSuccessAlert.setType(AlertType.SUCCESS);
|
63
|
enrichContentAdvancedSearchSuccessAlert.setVisible(false);
|
64
|
enrichContentAdvancedSearchSuccessAlert.setDismissable(false);
|
65
|
enrichContentAdvancedSearchFormPanel.add(enrichContentAdvancedSearchSuccessAlert);
|
66
|
|
67
|
enrichContentAdvancedSearchForm.addStyleName("uk-form-horizontal");
|
68
|
enrichContentAdvancedSearchFormPanel.add(enrichContentAdvancedSearchForm);
|
69
|
|
70
|
Form trustForm = new Form();
|
71
|
trustForm.addStyleName("uk-form-horizontal");
|
72
|
|
73
|
trustSlider.setEnabled(true);
|
74
|
trustSlider.setStep(0.01);
|
75
|
// trustSlider.addStyleName("trustSlider");
|
76
|
|
77
|
trustSlider.setFormatter(new FormatterCallback<Range>() {
|
78
|
@Override
|
79
|
public String formatTooltip(final Range range) {
|
80
|
return "Range: [" + range.getMinValue() + ", " + range.getMaxValue() + "]";
|
81
|
}
|
82
|
});
|
83
|
|
84
|
trustForm.add(new MyFormGroup(false, "Trust", trustSlider.asWidget()));
|
85
|
enrichContentAdvancedSearchForm.add(trustForm);
|
86
|
|
87
|
enrichContentAdvancedSearchForm.add(titles);
|
88
|
|
89
|
enrichContentAdvancedSearchForm.add(authors);
|
90
|
|
91
|
enrichContentAdvancedSearchForm.add(subjects);
|
92
|
|
93
|
enrichContentAdvancedSearchForm.add(dates);
|
94
|
|
95
|
Form actionsForm = new Form();
|
96
|
actionsForm.setType(FormType.HORIZONTAL);
|
97
|
|
98
|
actionButtons.addStyleName("actionButtons");
|
99
|
actionsForm.add(new MyFormGroup(false, null, actionButtons));
|
100
|
|
101
|
search.setType(ButtonType.PRIMARY);
|
102
|
search.addStyleName("advancedSearch");
|
103
|
search.addClickHandler(new ClickHandler() {
|
104
|
@Override
|
105
|
public void onClick(ClickEvent event) {
|
106
|
|
107
|
AdvQueryObject advQueryObject = createAdvancedQueryData();
|
108
|
|
109
|
if(advancedSearchFormSelectionListener!=null)
|
110
|
advancedSearchFormSelectionListener.criteriaSelected(advQueryObject);
|
111
|
}
|
112
|
});
|
113
|
actionButtons.add(search);
|
114
|
|
115
|
clear.setType(ButtonType.DEFAULT);
|
116
|
clear.addStyleName("clearCriteria");
|
117
|
clear.addClickHandler(new ClickHandler() {
|
118
|
@Override
|
119
|
public void onClick(ClickEvent event) {
|
120
|
|
121
|
clearSelections();
|
122
|
|
123
|
if(advancedSearchFormSelectionListener!=null)
|
124
|
advancedSearchFormSelectionListener.criteriaCleared(createClearQueryData());
|
125
|
}
|
126
|
});
|
127
|
actionButtons.add(clear);
|
128
|
|
129
|
enrichContentAdvancedSearchForm.add(actionsForm);
|
130
|
}
|
131
|
|
132
|
|
133
|
@Override
|
134
|
public Widget asWidget() {
|
135
|
return enrichContentAdvancedSearchFormPanel;
|
136
|
}
|
137
|
|
138
|
public interface AdvancedSearchFormSelectionListener {
|
139
|
|
140
|
void criteriaSelected(AdvQueryObject advQueryObject);
|
141
|
void criteriaCleared(AdvQueryObject advQueryObject);
|
142
|
}
|
143
|
|
144
|
public void setAdvancedSearchFormSelectionListener(AdvancedSearchFormSelectionListener advancedSearchFormSelectionListener) {
|
145
|
this.advancedSearchFormSelectionListener = advancedSearchFormSelectionListener;
|
146
|
}
|
147
|
|
148
|
private AdvQueryObject createAdvancedQueryData() {
|
149
|
|
150
|
AdvQueryObject advQueryObject = new AdvQueryObject();
|
151
|
|
152
|
advQueryObject.setDatasource(datasource);
|
153
|
advQueryObject.setTopic(topic);
|
154
|
|
155
|
Range trustSliderValue = trustSlider.getValue();
|
156
|
advQueryObject.setTrust(new eu.dnetlib.repo.manager.shared.broker.Range(trustSliderValue.getMinValue()+"", trustSliderValue.getMaxValue()+""));
|
157
|
|
158
|
advQueryObject.setTitles(titles.getValues());
|
159
|
advQueryObject.setAuthors(authors.getValues());
|
160
|
advQueryObject.setSubjects(subjects.getValues());
|
161
|
|
162
|
advQueryObject.setDates(dates.getSelectedDateRanges());
|
163
|
|
164
|
return advQueryObject;
|
165
|
}
|
166
|
|
167
|
private AdvQueryObject createClearQueryData() {
|
168
|
|
169
|
AdvQueryObject advQueryObject = new AdvQueryObject();
|
170
|
|
171
|
advQueryObject.setDatasource(datasource);
|
172
|
advQueryObject.setTopic(topic);
|
173
|
|
174
|
advQueryObject.setDates(dates.getSelectedDateRanges());
|
175
|
|
176
|
return advQueryObject;
|
177
|
}
|
178
|
|
179
|
private void clearSelections() {
|
180
|
|
181
|
trustSlider.setValue(new Range(0.00, 1.00));
|
182
|
|
183
|
titles.clear();
|
184
|
authors.clear();
|
185
|
subjects.clear();
|
186
|
|
187
|
dates.clear();
|
188
|
}
|
189
|
|
190
|
}
|