Project

General

Profile

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