Skip to content

Commit

Permalink
campaign tile panel changes
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Apr 23, 2024
1 parent 0764d8e commit e19103f
Show file tree
Hide file tree
Showing 6 changed files with 235 additions and 51 deletions.
5 changes: 5 additions & 0 deletions gui/admin-gui/src/frontend/scss/midpoint.scss
Original file line number Diff line number Diff line change
Expand Up @@ -1926,6 +1926,11 @@ th.debug-list-buttons {
}
}

.campaign-tile-panel {
width: 400px !important;
height: 370px !important;
}

@each $breakpoint in map-keys($grid-breakpoints) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
@include media-breakpoint-up($breakpoint, $grid-breakpoints) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
<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"/>
<span 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">
<span class="d-flex flex-wrap flex-grow-1 justify-content-end col-md-3" wicket:id="status"/>
<a wicket:id="menu" class="d-flex flex-wrap flex-grow-1 justify-content-end col-md-1">
<i class="fa fa-ellipsis-v"/>
</a>
</div>
<div class="font-weight-bold text-truncate w-100" wicket:id="title"/>
<div class="font-weight-bold text-truncate w-100 mt-2" 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 mt-3">
<label>
Expand All @@ -25,16 +25,19 @@
</div>
<div class="d-flex flex-wrap w-100 text-secondary">
<div class="d-flex flex-wrap flex-grow-1 justify-content-start" wicket:id="deadline"/>
<div class="d-flex flex-wrap flex-grow-1 justify-content-end" >
<div class="d-flex flex-wrap flex-grow-1 justify-content-end col-md-2" >
<i class="fa fa-circle-half-stroke mt-1 mr-1"></i>
<div wicket:id="stage"/>
</div>
<div class="d-flex flex-wrap flex-grow-1 justify-content-end" >
<div class="d-flex flex-wrap flex-grow-1 justify-content-end col-md-2" >
<i class="fa fa-rotate-right mt-1 mr-1"></i>
<div wicket:id="iteration"/>
</div>
</div>

<!-- <div wicket:id="buttonsPanel"/>-->
<a class="w-100 mt-3 btn btn-sm" wicket:id="actionButton">
<i class="mr-1" wicket:id="actionButtonIcon"></i>
<span wicket:id="actionButtonLabel" />
</a>
</wicket:panel>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

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

import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.component.BadgePanel;
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;
Expand All @@ -17,10 +19,14 @@
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.web.page.admin.certification.helpers.CampaignStateHelper;
import com.evolveum.midpoint.xml.ns._public.common.common_3.AccessCertificationCampaignType;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
Expand All @@ -43,7 +49,11 @@ public class CampaignTilePanel extends BasePanel<TemplateTile<SelectableBean<Acc
private static final String ID_DEADLINE = "deadline";
private static final String ID_STAGE = "stage";
private static final String ID_ITERATION = "iteration";
private static final String ID_BUTTONS_PANEL = "buttonsPanel";
private static final String ID_ACTION_BUTTON = "actionButton";
private static final String ID_ACTION_BUTTON_LABEL = "actionButtonLabel";
private static final String ID_ACTION_BUTTON_ICON = "actionButtonIcon";

CampaignStateHelper campaignStateHelper;

public CampaignTilePanel(String id, IModel<TemplateTile<SelectableBean<AccessCertificationCampaignType>>> model) {
super(id, model);
Expand All @@ -52,20 +62,23 @@ public CampaignTilePanel(String id, IModel<TemplateTile<SelectableBean<AccessCer
@Override
protected void onInitialize() {
super.onInitialize();

campaignStateHelper = new CampaignStateHelper(getCampaign().getState());

initLayout();
}

protected void initLayout() {
add(AttributeAppender.append("class",
"catalog-tile-panel d-flex flex-column align-items-center bordered p-4"));
"campaign-tile-panel 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());
BadgePanel status = new BadgePanel(ID_STATUS, getStatusModel());
status.setOutputMarkupId(true);
add(status);

Expand Down Expand Up @@ -104,6 +117,29 @@ public void onClick(AjaxRequestTarget target) {
iteration.setOutputMarkupId(true);
add(iteration);

AjaxLink<Void> actionButton = new AjaxLink<>(ID_ACTION_BUTTON) {
@Serial private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
// TODO implement
}
};
actionButton.add(AttributeModifier.append("class", campaignStateHelper.getNextAction().getActionCssClass()));
actionButton.setOutputMarkupId(true);
add(actionButton);

Label actionButtonLabel = new Label(ID_ACTION_BUTTON_LABEL,
createStringResource(campaignStateHelper.getNextAction().getActionLabelKey()));
actionButtonLabel.setOutputMarkupId(true);
actionButton.add(actionButtonLabel);

WebMarkupContainer actionButtonIcon = new WebMarkupContainer(ID_ACTION_BUTTON_ICON);
actionButtonIcon.add(AttributeModifier.append("class", campaignStateHelper.getNextAction().getActionIcon().getCssClass()));
actionButtonIcon.setOutputMarkupId(true);
actionButton.add(actionButtonIcon);


}

private IModel<Boolean> getSelectedModel() {
Expand All @@ -120,8 +156,8 @@ public void setObject(Boolean object) {
}
};
}
private IModel<String> getStatusModel() {
return Model.of(LocalizationUtil.translateEnum(getCampaign().getState()));
private IModel<Badge> getStatusModel() {
return Model.of(campaignStateHelper.createBadge());
}

private IModel<String> getTitleModel() {
Expand Down Expand Up @@ -155,4 +191,5 @@ private IModel<String> getStageModel() {
private IModel<String> getIterationModel() {
return Model.of("" + CertCampaignTypeUtil.norm(getCampaign().getIteration()));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,36 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="row">
<div class="col-sm-12 col-md-5 col-lg-4 col-xxl-2 d-flex flex-column align-items-stretch gap-3">
<div wicket:id="viewToggle"/>
</div>
<div class="col-sm-12 col-md-7 col-lg-8 col-xxl-10 role-catalog-tiles-table" wicket:id="campaignsPanel"/>
<div class="w-100 role-catalog-tiles-table" wicket:id="campaignsPanel"/>
</div>
<wicket:fragment wicket:id="headerFragment">
<div class="d-flex flex-column">
<div class="card-header d-flex">
<wicket:enclosure child="viewToggle">
<div class="mr-auto pr-4 justify-content-start">
<div wicket:id="viewToggle"/>
</div>
</wicket:enclosure>
<div class="btn btn-default" wicket:id="bulkActionButton"/>
<div class="ml-auto flex-grow-1 justify-content-end" wicket:id="panelHeader"/>
</div>
<div class="card-header d-flex flex-column" style="min-height: 5.4rem;" wicket:id="selectedItemsContainer">
<span>
<wicket:message key="SelectObjectClassesStepPanel.selectedItem"/>
</span>
<div class="d-flex flex-wrap gap-2">
<wicket:container wicket:id="selectedItemContainer">
<div class="btn-sm btn-primary d-flex mr-2" style="cursor: auto;">
<div class="text-break" wicket:id="selectedItem"/>
<a wicket:id="deselectButton">
<i class="fa fa-xmark ml-2 text-white"></i>
</a>
</div>
</wicket:container>
</div>
</div>
</div>
</wicket:fragment>
</wicket:panel>

</html>
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@
import com.evolveum.midpoint.gui.impl.component.tile.*;
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.data.column.*;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.certification.PageCertCampaign;
import com.evolveum.midpoint.web.page.admin.certification.dto.CertCampaignListItemDto;
Expand All @@ -37,6 +39,11 @@
import org.apache.wicket.behavior.AttributeAppender;
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.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
Expand Down Expand Up @@ -112,28 +119,24 @@ protected String getTilesContainerAdditionalClass() {
return null;
}

// @Override
// protected CatalogTile<SelectableBean<AccessCertificationCampaignType>> createTileObject(
// SelectableBean<AccessCertificationCampaignType> campaign) {
// if (campaign == null) {
// return new CatalogTile();
// }
// PrismObject<AccessCertificationCampaignType> campaignObject = campaign.getValue().asPrismObject();
// String icon = IconAndStylesUtil.createDefaultColoredIcon(campaignObject.getValue().getTypeName());
//
// SelectableObjectTilePanel<AccessCertificationCampaignType> tile =
// new SelectableObjectTilePanel<>(icon, Model.of(campaign));
// tile.setDescription(campaign.getValue().getDescription());
// tile.setValue(campaign);
//
//// RoundedIconPanel.State checkState = computeCheckState(campaign.getOid());
//// tile.setCheckState(checkState);
////
//// String checkTitle = computeCheckTitle(campaign.getOid());
//// tile.setCheckTitle(checkTitle);
//
// return tile;
// }
@Override
protected Fragment createHeaderFragment(String id) {
Fragment headerFragment = super.createHeaderFragment(id);

AjaxButton button = new AjaxButton("bulkActionButton", createStringResource("PageBase.button.bulkOperation")) {
@Serial private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
// TODO implement
}
};
button.setOutputMarkupId(true);
// selectedItemsContainer.add(new VisibleBehaviour(() -> isSelectedItemsPanelVisible()));
headerFragment.add(button);

return headerFragment;
}

@Override
protected Component createTile(String id,
Expand All @@ -153,7 +156,7 @@ protected SelectableBeanObjectDataProvider<AccessCertificationCampaignType> crea

@Override
protected String getTileCssClasses() {
return "col-12 col-md-6 col-lg-4 col-xxl-5i px-2";
return "col-12 col-md-6 col-lg-4 col-xxl-6i px-2";
}

@Override
Expand All @@ -176,6 +179,11 @@ protected IModel<List<AccessCertificationCampaignType>> getSelectedItemsModel()
return () -> new ArrayList<>(getProvider().getSelected());
}

@Override
protected boolean isTogglePanelVisible() {
return true;
}

};
add(tilesTable);

Expand All @@ -202,19 +210,19 @@ protected List<Toggle<ViewToggle>> load() {
}
};

TogglePanel<ViewToggle> viewToggle = new TogglePanel<>(ID_VIEW_TOGGLE, items) {

@Override
protected void itemSelected(AjaxRequestTarget target, IModel<Toggle<ViewToggle>> item) {
super.itemSelected(target, item);

tilesTable.getViewToggleModel().setObject(item.getObject().getValue());
tilesTable.getTable().refreshSearch();
target.add(CampaignsPanel.this);
}
};
viewToggle.add(new VisibleEnableBehaviour(() -> items.getObject().size() > 1));
add(viewToggle);
// TogglePanel<ViewToggle> viewToggle = new TogglePanel<>(ID_VIEW_TOGGLE, items) {
//
// @Override
// protected void itemSelected(AjaxRequestTarget target, IModel<Toggle<ViewToggle>> item) {
// super.itemSelected(target, item);
//
// tilesTable.getViewToggleModel().setObject(item.getObject().getValue());
// tilesTable.getTable().refreshSearch();
// target.add(CampaignsPanel.this);
// }
// };
// viewToggle.add(new VisibleEnableBehaviour(() -> items.getObject().size() > 1));
// add(viewToggle);

}

Expand Down

0 comments on commit e19103f

Please sign in to comment.