package org.gcube.portlets.user.geoportaldataviewer.client.ui.cms.project.relation; import java.util.List; import org.gcube.portlets.user.geoportaldataviewer.client.GeoportalDataViewerServiceAsync; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONParser; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.Widget; public class TimelineRelationPanel extends Composite { @UiField ScrollPanel timelineContainer; private static TimelineRelationPanelUiBinder uiBinder = GWT.create(TimelineRelationPanelUiBinder.class); interface TimelineRelationPanelUiBinder extends UiBinder { } public TimelineRelationPanel(String profileID, String projectID) { initWidget(uiBinder.createAndBindUi(this)); timelineContainer.getElement().setId("visualization"); Scheduler.get().scheduleDeferred(new ScheduledCommand() { public void execute() { GeoportalDataViewerServiceAsync.Util.getInstance().getRelationshipsForTimeline(profileID, projectID, new AsyncCallback>() { @Override public void onSuccess(List result) { JSONArray toJsonArr = new JSONArray(); for (int i = 0; i < result.size(); i++) { toJsonArr.set(i, JSONParser.parseStrict(result.get(i))); } instanceTimeline(timelineContainer.getElement().getId(), toJsonArr); } @Override public void onFailure(Throwable caught) { // TODO Auto-generated method stub } }); }; }); } public static native String instanceTimeline(String idDivContainer, JSONArray jsonItems) /*-{ console.log('showTimeline_instanceTimeline for json items: ' + jsonItems); console.log("showTimeline_template: " + $wnd.templateHandlebars); // DOM element where the Timeline will be attached var container = $doc.getElementById(idDivContainer); console.log("showTimeline_container: " + container); var myArray = $wnd.JSON.parse(jsonItems); console.log("showTimeline_jsonItems: " + myArray); var container = $doc.getElementById(idDivContainer); // Create a DataSet (allows two way data-binding) var items = new $wnd.vis.DataSet(myArray); // Create a Timeline var timeline = new $wnd.vis.Timeline(container, items, $wnd.optionsTimeline); }-*/; }