Skip to content

Commit

Permalink
campaign tile panel
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Apr 22, 2024
1 parent c2f11e9 commit b1861b3
Show file tree
Hide file tree
Showing 7 changed files with 194 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<wicket:enclosure child="tilesContainer">
<div class="d-flex flex-column flex-grow-1">
<div wicket:id="header"/>
<div class="row pt-3 card-footer mx-0" wicket:id="tilesContainer"/>
<div class="row pt-3 mx-0" wicket:id="tilesContainer"/>
<div class="d-flex card-header" wicket:id="footerContainer">
<div class="d-flex">
<div wicket:id="buttonToolbar"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.session.UserProfileStorage;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand Down Expand Up @@ -102,6 +103,7 @@ private void initLayout() {
ISortableDataProvider<O, String> provider = createProvider();
WebMarkupContainer tilesContainer = createTilesContainer(ID_TILES_CONTAINER, provider, tableId);
tilesContainer.add(new VisibleBehaviour(() -> viewToggleModel.getObject() == ViewToggle.TILE));
tilesContainer.add(AttributeModifier.append("class", getTilesContainerAdditionalClass()));
tilesContainer.setOutputMarkupId(true);
add(tilesContainer);

Expand Down Expand Up @@ -337,4 +339,8 @@ protected WebMarkupContainer createTilesButtonToolbar(String id) {
private void onSearchPerformed(AjaxRequestTarget target) {
refresh(target);
}

protected String getTilesContainerAdditionalClass() {
return "card-footer";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import java.util.List;
import java.util.stream.Collectors;

import com.evolveum.midpoint.web.page.admin.certification.component.CampaignCartPanel;
import com.evolveum.midpoint.web.page.admin.certification.component.CampaignsPanel;

import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
Expand All @@ -21,7 +21,6 @@
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Fragment;
Expand Down Expand Up @@ -53,7 +52,6 @@
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.data.BoxedTablePanel;
import com.evolveum.midpoint.gui.impl.component.data.provider.ObjectDataProvider;
import com.evolveum.midpoint.web.component.data.Table;
import com.evolveum.midpoint.web.component.data.column.*;
Expand All @@ -70,7 +68,6 @@
import com.evolveum.midpoint.web.page.admin.certification.dto.CertCampaignsSearchDto;
import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
import com.evolveum.midpoint.web.session.CertCampaignsStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignStateType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType;
Expand Down Expand Up @@ -175,9 +172,9 @@ private void initLayout() {
Form<?> mainForm = new MidpointForm<>(ID_MAIN_FORM);
add(mainForm);

CampaignCartPanel campaignCartPanel = new CampaignCartPanel(ID_CAMPAIGNS_TABLE);
campaignCartPanel.setOutputMarkupId(true);
mainForm.add(campaignCartPanel);
CampaignsPanel campaignsPanel = new CampaignsPanel(ID_CAMPAIGNS_TABLE);
campaignsPanel.setOutputMarkupId(true);
mainForm.add(campaignsPanel);

// CertCampaignListItemDtoProvider provider = createProvider();
// provider.setQuery(createCampaignsQuery());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!--
~ Copyright (c) 2024 Evolveum and contributors
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->

<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="d-flex flex-wrap w-100">
<div class="d-flex flex-wrap flex-grow-1 justify-content-start" wicket:id="selectTileCheckbox"/>
<div class="d-flex flex-wrap flex-grow-1 justify-content-end" wicket:id="status"/>
<a wicket:id="menu" class="d-flex flex-wrap flex-grow-1 justify-content-end">
<i class="fa fa-ellipsis-v"/>
</a>
</div>
<div class="font-weight-bold text-truncate w-100" wicket:id="title"/>
<div class="tile-description mt-2 text-center text-secondary flex-grow-1 info-box-icon w-100" wicket:id="description"/>
<div class="w-100">
<span wicket:message="CampaignTilePanel.progress" />
<div wicket:id="progressBar" />
</div>


<!-- <div wicket:id="infoPanel"/>-->
<!-- <div wicket:id="buttonsPanel"/>-->
</wicket:panel>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
/*
* Copyright (c) 2024 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.web.page.admin.certification.component;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.form.CheckBoxPanel;
import com.evolveum.midpoint.gui.api.component.progressbar.ProgressBar;
import com.evolveum.midpoint.gui.api.component.progressbar.ProgressBarPanel;
import com.evolveum.midpoint.gui.api.util.LocalizationUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.TemplateTile;
import com.evolveum.midpoint.schema.util.CertCampaignTypeUtil;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.jetbrains.annotations.NotNull;

import java.io.Serial;
import java.util.Collections;
import java.util.List;

public class CampaignTilePanel extends BasePanel<TemplateTile<SelectableBean<AccessCertificationCampaignType>>> {

@Serial private static final long serialVersionUID = 1L;

private static final String ID_SELECT_TILE_CHECKBOX = "selectTileCheckbox";
private static final String ID_STATUS = "status";
private static final String ID_MENU = "menu";
private static final String ID_TITLE = "title";
private static final String ID_DESCRIPTION = "description";
private static final String ID_PROGRESS_BAR = "progressBar";
private static final String ID_INFO_PANEL = "infoPanel";
private static final String ID_BUTTONS_PANEL = "buttonsPanel";

public CampaignTilePanel(String id, IModel<TemplateTile<SelectableBean<AccessCertificationCampaignType>>> model) {
super(id, model);
}

@Override
protected void onInitialize() {
super.onInitialize();
initLayout();
}

protected void initLayout() {
add(AttributeAppender.append("class", "catalog-tile-panel d-flex flex-column align-items-center bordered p-4"));

setOutputMarkupId(true);

CheckBoxPanel selectTileCheckbox = new CheckBoxPanel(ID_SELECT_TILE_CHECKBOX, getSelectedModel());
selectTileCheckbox.setOutputMarkupId(true);
add(selectTileCheckbox);

Label status = new Label(ID_STATUS, getStatusModel());
status.setOutputMarkupId(true);
add(status);

AjaxButton menu = new AjaxButton(ID_MENU) {
@Serial private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
// TODO implement
}
};
menu.setOutputMarkupId(true);
add(menu);

Label title = new Label(ID_TITLE, getTitleModel());
title.setOutputMarkupId(true);
add(title);

Label description = new Label(ID_DESCRIPTION, Model.of(getModelObject().getDescription()));
description.setOutputMarkupId(true);
add(description);

ProgressBarPanel progressBar = new ProgressBarPanel(ID_PROGRESS_BAR, createProgressBarModel());
progressBar.setOutputMarkupId(true);
add(progressBar);

}

private IModel<Boolean> getSelectedModel() {
return new IModel<>() {
@Serial private static final long serialVersionUID = 1L;
@Override
public Boolean getObject() {
return getModelObject().isSelected();
}

@Override
public void setObject(Boolean object) {
getModelObject().setSelected(object);
}
};
}
private IModel<String> getStatusModel() {
return Model.of(LocalizationUtil.translateEnum(getCampaign().getState()));
}

private IModel<String> getTitleModel() {
return Model.of(WebComponentUtil.getName(getCampaign()));
}

private AccessCertificationCampaignType getCampaign() {
return getModelObject().getValue().getValue();
}

protected @NotNull IModel<List<ProgressBar>> createProgressBarModel() {
return () -> {
AccessCertificationCampaignType campaign = getCampaign();
float completed = CertCampaignTypeUtil.getCasesCompletedPercentageAllStagesAllIterations(campaign);

ProgressBar progressBar = new ProgressBar(completed, ProgressBar.State.INFO);
return Collections.singletonList(progressBar);
};
}
}

0 comments on commit b1861b3

Please sign in to comment.