Updated Added Resources

This commit is contained in:
Francesco Mangiacrapa 2024-02-12 17:33:18 +01:00
parent 301c19d369
commit ee7ea99740
1 changed files with 46 additions and 21 deletions

View File

@ -1,6 +1,7 @@
package org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.resources;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.CKanMetadataPublisher;
@ -9,6 +10,7 @@ import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.AddResou
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.DeleteResourceEvent;
import org.gcube.portlets.widgets.ckandatapublisherwidget.client.events.DeleteResourceEventHandler;
import org.gcube.portlets.widgets.ckandatapublisherwidget.shared.ResourceElementBean;
import org.gcube.portlets.widgets.mpformbuilder.client.ui.utils.LoaderIcon;
import com.github.gwtbootstrap.client.ui.Accordion;
import com.github.gwtbootstrap.client.ui.AccordionGroup;
@ -24,6 +26,7 @@ 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.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
@ -46,17 +49,22 @@ public class AddedResourcesSummary extends Composite {
// list of added resources (beans)
List<ResourceElementBean> addedResources;
LinkedHashMap<Integer, Accordion> mapAddedResources = new LinkedHashMap<Integer, Accordion>();
@UiField
VerticalPanel addResourcesPanel;
@UiField
Alert alertMessage;
FlowPanel alertPanel = new FlowPanel();
public AddedResourcesSummary(HandlerManager eventBus) {
initWidget(uiBinder.createAndBindUi(this));
alertMessage.setType(AlertType.ERROR);
alertMessage.setClose(true);
alertMessage.add(alertPanel);
// save bus
this.eventBus = eventBus;
// bind on add resource event
@ -81,21 +89,18 @@ public class AddedResourcesSummary extends Composite {
final ResourceElementBean justAddedResource = addResourceEvent.getResource();
// Build an accordion to show resource info
Accordion accordion = new Accordion();
final Accordion accordion = new Accordion();
AccordionGroup accordionGroup = new AccordionGroup();
accordionGroup.setHeading("* " + justAddedResource.getName());
accordionGroup.getHeading().getElement().getStyle().setBackgroundColor("#FFEDBE");
accordionGroup.getHeading().getElement().getStyle().setBackgroundColor("#f1f3f9");
accordion.add(accordionGroup);
// add sub-info such as url and description
Paragraph pUrl = new Paragraph();
HTML htmlURL = new HTML();
if (justAddedResource.getUrl() != null) {
pUrl.setText("URL:");
HTML htmlLink = new HTML();
htmlLink.setHTML(
"<a href=" + justAddedResource.getUrl() + ">" + justAddedResource.getUrl() + "</a>");
// pUrl.add(pUrl);
pUrl.add(htmlLink);
htmlURL.setHTML(
"URL: <a href=" + justAddedResource.getUrl() + ">" + justAddedResource.getUrl() + "</a>");
}
Paragraph pDescription = new Paragraph();
pDescription.setText("Description : " + justAddedResource.getDescription());
@ -114,7 +119,7 @@ public class AddedResourcesSummary extends Composite {
});
// fill accordion
accordionGroup.add(pUrl);
accordionGroup.add(htmlURL);
accordionGroup.add(pDescription);
accordionGroup.add(deleteButton);
@ -123,6 +128,8 @@ public class AddedResourcesSummary extends Composite {
// add to the panel
addResourcesPanel.add(accordion);
mapAddedResources.put(justAddedResource.getBeanID(), accordion);
}
});
@ -140,13 +147,18 @@ public class AddedResourcesSummary extends Composite {
toDeleteButton.setEnabled(false);
LoaderIcon loader = new LoaderIcon("Deleting resource, please wait...");
setAlertMessage(loader, null, AlertType.INFO, true);
// find it
for (int i = 0; i < addedResources.size(); i++) {
if (addedResources.get(i).equals(toDelete)) {
// get the associated widget and remove it
final Widget widget = addResourcesPanel.getWidget(i);
// final Widget widget = addResourcesPanel.getWidget(i);
final Accordion toDeleteAccordion = mapAddedResources.get(toDelete.getBeanID());
// remote call to remove it from the dataset
CKanMetadataPublisher.ckanServices.deleteResourceFromDataset(toDelete,
@ -154,26 +166,24 @@ public class AddedResourcesSummary extends Composite {
@Override
public void onSuccess(Boolean result) {
if (result) {
setAlertMessage(null, "The resource described by " + toDelete.getName()
+ " has been deleted!", AlertType.SUCCESS, true);
// remove from the list
addedResources.remove(toDelete);
alertMessage.setType(AlertType.SUCCESS);
alertMessage.setHTML("The resource described by " + toDelete.getName()
+ " has been deleted!");
widget.removeFromParent();
addResourcesPanel.remove(toDeleteAccordion);
} else {
alertMessage.setVisible(true);
alertMessage.setHTML("Sorry, the resource described by "
+ toDelete.getName() + " cannot be deleted");
setAlertMessage(null, "Sorry, the resource described by "
+ toDelete.getName() + " cannot be deleted", AlertType.SUCCESS,
true);
}
}
@Override
public void onFailure(Throwable caught) {
toDeleteButton.setEnabled(false);
alertMessage.setVisible(true);
alertMessage.setHTML(caught.getMessage());
setAlertMessage(null, caught.getMessage(), AlertType.ERROR, true);
}
});
@ -184,6 +194,21 @@ public class AddedResourcesSummary extends Composite {
});
}
private void setAlertMessage(LoaderIcon loader, String message, AlertType type, boolean visible) {
alertPanel.clear();
if (loader != null) {
alertPanel.add(loader);
}
alertMessage.setType(type);
alertMessage.setVisible(visible);
if (message != null) {
alertPanel.add(new HTML(message));
}
}
public HandlerManager getEventBus() {
return eventBus;
}