Project

General

Profile

1
package eu.dnetlib.repo.manager.client.getimpact;
2

    
3
import com.google.gwt.core.client.GWT;
4
import com.google.gwt.dom.client.Document;
5
import com.google.gwt.user.client.rpc.AsyncCallback;
6
import com.google.gwt.user.client.ui.FlowPanel;
7
import com.google.gwt.user.client.ui.HTML;
8
import com.google.gwt.user.client.ui.TabBar;
9
import com.google.gwt.user.client.ui.Widget;
10
import eu.dnetlib.domain.data.Repository;
11
import eu.dnetlib.gwt.client.MyFormGroup;
12
import eu.dnetlib.gwt.client.help.HelpService;
13
import eu.dnetlib.gwt.client.help.HelpServiceAsync;
14
import eu.dnetlib.repo.manager.client.AbstractRepositoryManagerWidget;
15
import eu.dnetlib.repo.manager.client.HelpCallback;
16
import eu.dnetlib.repo.manager.client.RepositoryManager;
17
import eu.dnetlib.repo.manager.client.RepositoryManagerWidget;
18
import eu.dnetlib.repo.manager.client.services.RepositoryService;
19
import eu.dnetlib.repo.manager.client.services.RepositoryServiceAsync;
20
import eu.dnetlib.repo.manager.client.widgets.ListOrGridViewOfDatasourcesWidget;
21
import eu.dnetlib.repo.manager.shared.DatasourcesCollection;
22
import org.gwtbootstrap3.client.ui.*;
23
import org.gwtbootstrap3.client.ui.constants.AlertType;
24

    
25
/**
26
 * Created by stefania on 4/4/16.
27
 */
28
public class GetImpactWidget extends AbstractRepositoryManagerWidget implements RepositoryManagerWidget {
29

    
30
    private String parentToken = "";
31
    private String restToken = "";
32

    
33
    private Alert errorAlert = new Alert();
34

    
35
    private FlowPanel getImpactContent = new FlowPanel();
36

    
37
    private static HelpServiceAsync helpService = GWT.create(HelpService.class);
38
    private RepositoryServiceAsync repositoryService = GWT.create(RepositoryService.class);
39

    
40
    public GetImpactWidget() {
41

    
42
        super();
43

    
44
        HTML title = new HTML("<h1 class=\"uk-article-title\">Metrics</h1>");
45
        title.addStyleName("uk-margin-medium-bottom");
46
        contentPanel.add(title);
47

    
48
        errorAlert.setType(AlertType.DANGER);
49
        errorAlert.setDismissable(false);
50
        errorAlert.setVisible(false);
51
        contentPanel.add(errorAlert);
52

    
53
        contentPanel.add(getImpactContent);
54
    }
55

    
56
    @Override
57
    public void clear() {
58

    
59
        getImpactContent.clear();
60
        errorAlert.setVisible(false);
61
        gridPanel.remove(helpPanel);
62
    }
63

    
64
    @Override
65
    public void reload() {
66

    
67
        errorAlert.setVisible(false);
68

    
69
        Document.get().getElementById("headerNoTransparent").removeClassName("tm-header-transparent");
70

    
71
        helpService.getHelpById(parentToken, new HelpCallback(helpPanel, gridPanel));
72

    
73
        final HTML loadingWheel = new HTML("<div class=\"loader-big\" style=\"text-align: center; padding-top: 170px; " +
74
                "color: rgb(47, 64, 80); font-weight: bold;\">Retrieving repositories...</div>" +
75
                "<div class=\"whiteFilm\"></div>");
76
        getImpactContent.addStyleName("loading-big");
77
        getImpactContent.add(loadingWheel);
78

    
79
        repositoryService.getRepositoriesOfUser(RepositoryManager.currentUser.getEmail(), true, false,
80
                new AsyncCallback<DatasourcesCollection>() {
81

    
82
                    @Override
83
                    public void onFailure(Throwable caught) {
84

    
85
                        getImpactContent.removeStyleName("loading-big");
86
                        getImpactContent.remove(loadingWheel);
87

    
88
                        errorAlert.setText("System error retrieving repositories.");
89
                        errorAlert.setVisible(true);
90
                    }
91

    
92
                    @Override
93
                    public void onSuccess(DatasourcesCollection datasourcesCollection) {
94

    
95
                        getImpactContent.removeStyleName("loading-big");
96
                        getImpactContent.remove(loadingWheel);
97

    
98
                        ListOrGridViewOfDatasourcesWidget listOrGridViewOfDatasourcesWidget =
99
                                new ListOrGridViewOfDatasourcesWidget(datasourcesCollection, "Choose the Datasource for which you would like to view or enable metrics",
100
                                        parentToken, "<i class=\"fa fa-eye\" aria-hidden=\"true\"></i>");
101

    
102
                        getImpactContent.add(listOrGridViewOfDatasourcesWidget.asWidget());
103
                    }
104
                });
105

    
106
//        getImpactBoxContent.add(new HTML("<div class=\"alert alert-warning\" style=\"margin-top: 20px\">This is a demo " +
107
//                "version of the page with graphs from <a src=\"www.openaire.eu\"><i style=\"margin-right:3px\" " +
108
//                "class=\"fa fa-external-link\"></i>OpenAIRE</a></div>"));
109
//
110
//        FlowPanel selectRepositoryPanel = new FlowPanel();
111
//        selectRepositoryPanel.addStyleName("selectRepositoryPanel");
112
//
113
//        Form form = new Form();
114
//        final ListBox repositoriesListBox = new ListBox();
115
//
116
//        form.add(new MyFormGroup(false, "Select repository to view metrics", repositoriesListBox));
117
//        selectRepositoryPanel.add(form);
118
//
119
//        getImpactBoxContent.add(selectRepositoryPanel);
120
//
121
////        repositoriesListBox.addItem("-- none selected --", "noneSelected");
122
//
123
//        repositoryService.getRepositoriesOfUser(RepositoryManager.currentUser.getEmail(), true, false,
124
//                new AsyncCallback<DatasourcesCollection>() {
125
//
126
//            @Override
127
//            public void onFailure(Throwable caught) {
128
//                repositoriesListBox.addItem("-- none selected --", "noneSelected");
129
//            }
130
//
131
//            @Override
132
//            public void onSuccess(DatasourcesCollection datasourcesCollection) {
133
//                for(Repository repository : datasourcesCollection.getDatasourcesOfUser()) {
134
//                    repositoriesListBox.addItem(repository.getOfficialName(), repository.getId());
135
//                }
136
//            }
137
//        });
138
//
139
//        getImpactBoxContent.add(createMockMetricsPanel());
140
    }
141

    
142
    @Override
143
    public void setToken(String parentToken, String rest) {
144
        this.parentToken = parentToken;
145
        this.restToken = rest;
146
    }
147

    
148
    @Override
149
    public void afterAdditionToRootPanel() {
150

    
151
    }
152
}
(3-3/6)