Skip to content

Commit

Permalink
MID-7976 created badge and badge-list panel, work on conflict item panel
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jun 20, 2022
1 parent f0be5a7 commit 0a5a2be
Show file tree
Hide file tree
Showing 12 changed files with 153 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.api.component.wizard;
package com.evolveum.midpoint.gui.api.component;

import java.io.Serializable;

Expand All @@ -14,6 +14,27 @@
*/
public class Badge implements Serializable {

public enum State {
PRIMARY("badge badge-primary"),
SECONDARY("badge badge-secondary"),
SUCCESS("badge badge-success"),
DANGER("badge badge-danger"),
WARNING("badge badge-warning"),
INFO("badge badge-info"),
LIGHT("badge badge-light"),
DARK("badge badge-dark");

String css;

State(String css) {
this.css = css;
}

public String getCss() {
return css;
}
}

private String cssClass;

private String iconCssClass;
Expand Down Expand Up @@ -42,6 +63,14 @@ public void setCssClass(String cssClass) {
this.cssClass = cssClass;
}

public void setCssClass(State state) {
if (state == null) {
setCssClass((String) null);
} else {
setCssClass(state.getCss());
}
}

public String getIconCssClass() {
return iconCssClass;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!--
~ Copyright (c) 2010-2018 Evolveum
~ Copyright (c) 2022 Evolveum and contributors
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
Expand All @@ -9,10 +9,7 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<wicket:container wicket:id="badges">
<span wicket:id="badge">
<i class="mr-1" wicket:id="icon"></i>
<span wicket:id="text"/>
</span>
<span wicket:id="badge"/>
</wicket:container>
</wicket:panel>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.gui.api.component.wizard;
package com.evolveum.midpoint.gui.api.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.web.component.util.VisibleBehaviour;
Expand All @@ -24,16 +26,14 @@
/**
* Created by Viliam Repan (lazyman).
*/
public class BadgePanel extends BasePanel<List<Badge>> {
public class BadgeListPanel extends BasePanel<List<Badge>> {

private static final long serialVersionUID = 1L;

private static final String ID_BADGES = "badges";
private static final String ID_BADGE = "badge";
private static final String ID_ICON = "icon";
private static final String ID_TEXT = "text";

public BadgePanel(String id, IModel<List<Badge>> model) {
public BadgeListPanel(String id, IModel<List<Badge>> model) {
super(id, model);

initLayout();
Expand All @@ -46,20 +46,7 @@ private void initLayout() {

@Override
protected void populateItem(ListItem<Badge> item) {
WebMarkupContainer badge = new WebMarkupContainer(ID_BADGE);
badge.add(AttributeAppender.append("class", () -> item.getModelObject().getCssClass()));
badge.add(new VisibleBehaviour(() ->
StringUtils.isNotEmpty(item.getModelObject().getText()) || StringUtils.isNotEmpty(item.getModelObject().getIconCssClass())));

WebMarkupContainer icon = new WebMarkupContainer(ID_ICON);
icon.add(AttributeAppender.append("class", () -> item.getModelObject().getIconCssClass()));
icon.add(new VisibleBehaviour(() -> StringUtils.isNotEmpty(item.getModelObject().getIconCssClass())));
badge.add(icon);

Label text = new Label(ID_TEXT, () -> item.getModelObject().getText());
badge.add(text);

item.add(badge);
item.add(new BadgePanel(ID_BADGE, item.getModel()));
}
};
add(badges);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!--
~ Copyright (c) 2010-2018 Evolveum
~
~ 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>
<i class="mr-1" wicket:id="icon"></i>
<span wicket:id="text"/>
</wicket:panel>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (c) 2022 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.gui.api.component;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;

/**
* Created by Viliam Repan (lazyman).
*/
public class BadgePanel extends BasePanel<Badge> {

private static final long serialVersionUID = 1L;
private static final String ID_ICON = "icon";
private static final String ID_TEXT = "text";

public BadgePanel(String id, IModel<Badge> model) {
super(id, model);

initLayout();
}

@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);

checkComponentTag(tag, "span");
}

private void initLayout() {
add(AttributeAppender.append("class", () -> getModelObject().getCssClass()));
add(new VisibleBehaviour(() -> StringUtils.isNotEmpty(getModelObject().getText()) || StringUtils.isNotEmpty(getModelObject().getIconCssClass())));

WebMarkupContainer icon = new WebMarkupContainer(ID_ICON);
icon.add(AttributeAppender.append("class", () -> getModelObject().getIconCssClass()));
icon.add(new VisibleBehaviour(() -> StringUtils.isNotEmpty(getModelObject().getIconCssClass())));
add(icon);

Label text = new Label(ID_TEXT, () -> getModelObject().getText());
add(text);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
import java.util.ArrayList;
import java.util.List;

import com.evolveum.midpoint.web.component.util.SerializableConsumer;
import com.evolveum.midpoint.web.component.util.SerializableSupplier;
import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.component.BadgeListPanel;

import org.apache.wicket.Application;
import org.apache.wicket.Component;
Expand All @@ -39,7 +39,7 @@ default String appendCssToWizard() {
}

default Component createHeaderContent(String id) {
return new BadgePanel(id, getTitleBadges());
return new BadgeListPanel(id, getTitleBadges());
}

default IModel<String> getTitle() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<div class="card-body">
<div class="d-flex gap-2 border-bottom border-gray align-items-center pb-3 mb-3">
<h5 class="mb-0">#1 Permission duplication conflict</h5>
<span class="badge badge-danger">Fatal conflict</span>
<span wicket:id="badge"/>
</div>

There is an conflict with <a class="mx-1" href="#"><i class="fa fa-puzzle-piece"></i> Office 365: Microsoft Word</a> and <a class="mx-1" href="#"><i class="fa fa-puzzle-piece"></i> Office 365 Package</a>
Expand Down Expand Up @@ -43,7 +43,9 @@ <h5 class="mb-0">#1 Permission duplication conflict</h5>

<div class="main-button-bar mt-4">
<a class="btn btn-primary">Fix conflict</a>
<a class="btn btn-link">Let midPoint try to fix it</a>
<wicket:remove>
<a class="btn btn-link">Let midPoint try to fix it</a>
</wicket:remove>
</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,38 @@

package com.evolveum.midpoint.gui.impl.page.self.requestAccess;

import com.evolveum.midpoint.gui.api.component.BasePanel;

import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.component.BadgePanel;
import com.evolveum.midpoint.gui.api.component.BasePanel;

/**
* Created by Viliam Repan (lazyman).
*/
public class ConflictItemPanel extends BasePanel<Conflict> {

private static final long serialVersionUID = 1L;

private static final String ID_BADGE = "badge";

public ConflictItemPanel(String id, IModel<Conflict> model) {
super(id, model);

initLayout();
}

private void initLayout() {
BadgePanel badge = new BadgePanel(ID_BADGE, () -> {
Conflict c = getModelObject();
Badge b = new Badge();
b.setCssClass(c.isWarning() ? Badge.State.WARNING : Badge.State.DANGER);

String key = c.isWarning() ? "ConflictItemPanel.badgeWarning" : "ConflictItemPanel.badgeFatalConflict";
b.setText(getString(key));

return b;
});
add(badge);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,25 @@
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;

import org.apache.wicket.model.Model;

/**
* Created by Viliam Repan (lazyman).
*/
public class ConflictSolverPanel extends BasePanel<RequestAccess> {

private static final long serialVersionUID = 1L;

private static final String BADGE_COLOR_UNRESOLVED = "badge badge-danger";
private static final String BADGE_COLOR_RESOLVED = "badge badge-success";
private static final String BADGE_COLOR_SKIPPED = "badge badge-info";

private static final String ID_TOGGLE = "toggle";
private static final String ID_ITEMS = "items";
private static final String ID_ITEM = "item";

private IModel<ConflictState> selected = Model.of((ConflictState) null);

public ConflictSolverPanel(String id, IModel<RequestAccess> model) {
super(id, model);

Expand All @@ -42,9 +50,8 @@ protected List<Toggle<ConflictState>> load() {

for (ConflictState cs : ConflictState.values()) {
Toggle<ConflictState> t = new Toggle<>(null, getString(cs));
if (cs == ConflictState.UNRESOLVED) {
t.setActive(true);

if (cs == ConflictState.UNRESOLVED) {
long count = getModelObject().getConflicts().stream().filter(c -> ConflictState.UNRESOLVED.equals(c.getState())).count();
if (count > 0) {
t.setBadgeCss("badge badge-danger");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,11 +210,11 @@ public void setRelation(QName relation) {
}

public long getWarningCount() {
return conflicts.stream().filter(c -> c.isWarning()).count();
return getConflicts().stream().filter(c -> c.isWarning()).count();
}

public long getErrorCount() {
return conflicts.stream().filter(c -> !c.isWarning()).count();
return getConflicts().stream().filter(c -> !c.isWarning()).count();
}

public void clearCart() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
import org.apache.wicket.model.Model;
import org.apache.wicket.util.string.Strings;

import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.component.result.Toast;
import com.evolveum.midpoint.gui.api.component.wizard.Badge;
import com.evolveum.midpoint.gui.api.component.wizard.WizardStepPanel;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@

package com.evolveum.midpoint.gui.impl.page.self.requestAccess;

import com.evolveum.midpoint.gui.api.component.wizard.Badge;
import com.evolveum.midpoint.gui.api.component.wizard.WizardStepPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import java.util.ArrayList;
import java.util.List;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import java.util.ArrayList;
import java.util.List;
import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.component.wizard.WizardStepPanel;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

/**
* Created by Viliam Repan (lazyman).
Expand Down

0 comments on commit 0a5a2be

Please sign in to comment.