package fr.openwide.core.showcase.web.application.task.component;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.ResourceModel;
import fr.openwide.core.jpa.exception.SecurityServiceException;
import fr.openwide.core.jpa.exception.ServiceException;
import fr.openwide.core.jpa.more.business.task.model.QueuedTaskHolder;
import fr.openwide.core.jpa.more.util.binding.CoreJpaMoreBindings;
import fr.openwide.core.showcase.core.business.task.model.ShowcaseBatchReportBean;
import fr.openwide.core.wicket.markup.html.basic.CoreLabel;
import fr.openwide.core.wicket.markup.html.basic.CountLabel;
import fr.openwide.core.wicket.more.condition.Condition;
import fr.openwide.core.wicket.more.console.maintenance.task.component.TaskResultPanel;
import fr.openwide.core.wicket.more.console.maintenance.task.component.TaskStatusPanel;
import fr.openwide.core.wicket.more.console.maintenance.task.model.TaskBatchReportBeanModel;
import fr.openwide.core.wicket.more.markup.html.basic.DateLabel;
import fr.openwide.core.wicket.more.markup.html.basic.DefaultPlaceholderPanel;
import fr.openwide.core.wicket.more.markup.html.basic.EnclosureContainer;
import fr.openwide.core.wicket.more.markup.html.list.AbstractGenericItemListPanel;
import fr.openwide.core.wicket.more.markup.html.navigation.paging.HideablePagingNavigator;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.popover.BootstrapPopoverBehavior;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.popover.BootstrapPopoverOptions;
import fr.openwide.core.wicket.more.model.BindingModel;
import fr.openwide.core.wicket.more.util.DatePattern;
import fr.openwide.core.wicket.more.util.binding.CoreWicketMoreBindings;
public class TaskPortfolioPanel extends AbstractGenericItemListPanel<QueuedTaskHolder> {
private static final long serialVersionUID = 3388933897843193596L;
private final IModel<Integer> countModel;
public TaskPortfolioPanel(String id, IDataProvider<QueuedTaskHolder> dataProvider, int itemsPerPage) {
super(id, dataProvider, itemsPerPage);
setOutputMarkupId(true);
countModel = new PropertyModel<Integer>(dataProvider,
CoreWicketMoreBindings.iBindableDataProvider().size().getPath());
}
@Override
protected void onDetach() {
super.onDetach();
countModel.detach();
}
@Override
protected void onInitialize() {
super.onInitialize();
// Count
add(new CountLabel("topCount", "tasks.count", countModel));
// Pagers
add(new HideablePagingNavigator("topPager", getDataView()));
add(new HideablePagingNavigator("bottomPager", getDataView()));
}
@Override
protected void addItemColumns(Item<QueuedTaskHolder> item, IModel<? extends QueuedTaskHolder> itemModel) {
IModel<QueuedTaskHolder> queuedTaskHolderModel = item.getModel();
TaskResultPanel result = new TaskResultPanel("result", BindingModel.of(queuedTaskHolderModel, CoreJpaMoreBindings.queuedTaskHolder().result())).hideIfEmpty();
NotTreatedObjectsPanel notTreatedObjectsPanel = new NotTreatedObjectsPanel("notTreatedObjectsPanel",
new TaskBatchReportBeanModel<>(ShowcaseBatchReportBean.class, queuedTaskHolderModel));
EnclosureContainer notTreatedObjects = new EnclosureContainer("notTreatedObjects")
.condition(Condition.componentVisible(notTreatedObjectsPanel));
BootstrapPopoverOptions popoverOptions = new BootstrapPopoverOptions();
popoverOptions.setTitleModel(new ResourceModel("tasks.list.notTreatedObjects"));
popoverOptions.setContentComponent(notTreatedObjectsPanel);
popoverOptions.setHtml(true);
notTreatedObjects.add(new BootstrapPopoverBehavior(popoverOptions));
item.add(notTreatedObjectsPanel, notTreatedObjects);
item.add(
new CoreLabel("queueId", BindingModel.of(queuedTaskHolderModel, CoreJpaMoreBindings.queuedTaskHolder().queueId())).showPlaceholder(new ResourceModel("tasks.queue.default")),
new CoreLabel("type", BindingModel.of(queuedTaskHolderModel, CoreJpaMoreBindings.queuedTaskHolder().taskType())).showPlaceholder(),
new CoreLabel("name", BindingModel.of(queuedTaskHolderModel, CoreJpaMoreBindings.queuedTaskHolder().name())).showPlaceholder(),
new TaskStatusPanel("status", BindingModel.of(queuedTaskHolderModel, CoreJpaMoreBindings.queuedTaskHolder().status())).hideIfEmpty(), //.add(new EnclosureBehavior().model(statusModel)),
result,
new DefaultPlaceholderPanel("resultPlaceholder").condition(Condition.componentVisible(result)),
new DateLabel("creationDate", BindingModel.of(queuedTaskHolderModel, CoreJpaMoreBindings.queuedTaskHolder().creationDate()), DatePattern.SHORT_DATETIME).showPlaceholder(),
new DateLabel("startDate", BindingModel.of(queuedTaskHolderModel, CoreJpaMoreBindings.queuedTaskHolder().startDate()), DatePattern.SHORT_DATETIME).showPlaceholder(),
new DateLabel("endDate", BindingModel.of(queuedTaskHolderModel, CoreJpaMoreBindings.queuedTaskHolder().endDate()), DatePattern.SHORT_DATETIME).showPlaceholder()
);
}
@Override
protected void doDeleteItem(IModel<? extends QueuedTaskHolder> itemModel) throws ServiceException, SecurityServiceException {
}
@Override
protected boolean isActionAvailable() {
return false;
}
@Override
protected boolean isDeleteAvailable() {
return false;
}
@Override
protected boolean isEditAvailable() {
return false;
}
@Override
protected boolean hasWritePermissionOn(IModel<? extends QueuedTaskHolder> itemModel) {
return true;
}
}