Skip to content

Commit

Permalink
MID-7976 role catalog menu, without javascript, cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Aug 8, 2022
1 parent 7b82fd5 commit 4ad491c
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 161 deletions.
105 changes: 0 additions & 105 deletions gui/admin-gui/src/frontend/js/list-group-menu.js

This file was deleted.

1 change: 0 additions & 1 deletion gui/admin-gui/src/frontend/js/midpoint.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import MidPointTheme from './midpoint-theme';
import MidPointAceEditor from "./ace-editor";
import "./list-group-menu";

window.MidPointTheme = new MidPointTheme();
window.MidPointAceEditor = new MidPointAceEditor();
4 changes: 4 additions & 0 deletions gui/admin-gui/src/frontend/scss/_list-group-menu.scss
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,10 @@ $list-group-item-padding-sm-x: 1rem;
border-top-width: $list-group-border-width;
}
}

&.open > .item-link > .chevron {
transform: rotate(270deg);
}
}

.list-group-submenu {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,42 @@ public void setItems(List<ListGroupMenuItem<T>> items) {
this.items = items;
}

public void activateItem(ListGroupMenuItem item) {
if (!item.getItems().isEmpty()) {
public void onItemClickPerformed(ListGroupMenuItem item) {
if (item.getItems().isEmpty()) {
getItems().forEach(i -> deactivateItem(i));
item.setActive(true);

return;
}

getItems().forEach(i -> deactivateItem(i));
item.setOpen(!item.isOpen());
}

public void activateFirstAvailableItem() {
for (ListGroupMenuItem i : items) {
if (activateFirstAvailableItem(i)) {
i.setOpen(true);
break;
}
}
}

public boolean activateFirstAvailableItem(ListGroupMenuItem item) {
List<ListGroupMenuItem> items = item.getItems();
if (items.isEmpty() && !item.isDisabled()) {
item.setActive(true);

return true;
}

for (ListGroupMenuItem i : items) {
if (activateFirstAvailableItem(i)) {
i.setOpen(true);
return true;
}
}

item.setActive(true);
return false;
}

private void deactivateItem(ListGroupMenuItem<T> item) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ public class ListGroupMenuItem<T extends Serializable> implements Serializable {

private boolean disabled;

private boolean open;

private T value;

private IModel<List<ListGroupMenuItem<T>>> items = Model.ofList(new ArrayList<>());
Expand Down Expand Up @@ -119,4 +121,20 @@ public IModel<List<ListGroupMenuItem<T>>> getItemsModel() {
public void setItemsModel(@NotNull IModel<List<ListGroupMenuItem<T>>> items) {
this.items = items;
}

public boolean isOpen() {
if (getItems().isEmpty()) {
return false;
}

return open;
}

public void setOpen(boolean open) {
if (getItems().isEmpty()) {
return;
}

this.open = open;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,18 +54,8 @@ protected void onComponentTag(ComponentTag tag) {
checkComponentTag(tag, "li");
}

// @Override
// public void renderHead(IHeaderResponse response) {
// super.renderHead(response);
//
// response.render(OnDomReadyHeaderItem.forScript("$(document).ready(function() { console.log('menu item', $('#"+getLink().getMarkupId()+"')); $('#"+getLink().getMarkupId()+"').listGroupMenu(); });"));
// }
//
// private AjaxLink getLink() {
// return (AjaxLink) get(ID_LINK);
// }

private void initLayout() {
add(AttributeAppender.append("class", () -> getModelObject().isOpen() ? "open" : null));
AjaxLink link = new AjaxLink<>(ID_LINK) {

@Override
Expand Down Expand Up @@ -101,7 +91,7 @@ public void onClick(AjaxRequestTarget target) {
link.add(chevron);

WebMarkupContainer itemsContainer = new WebMarkupContainer(ID_ITEMS_CONTAINER);
itemsContainer.add(AttributeAppender.append("style", () -> !getModelObject().isActive() ? "display: none;" : null));
itemsContainer.add(AttributeAppender.append("style", () -> !getModelObject().isOpen() ? "display: none;" : null));
itemsContainer.add(new VisibleBehaviour(() -> !getModelObject().getItems().isEmpty()));
add(itemsContainer);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,6 @@ public ListGroupMenuPanel(String id, IModel<ListGroupMenu<T>> model) {
initLayout();
}

@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);

response.render(OnDomReadyHeaderItem.forScript("$(document).ready(function() { console.log('menu item', $('#"+getMarkupId()+"')); $('#"+getMarkupId()+"').listGroupMenu(); });"));
}

@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
Expand All @@ -54,7 +47,6 @@ protected void onComponentTag(ComponentTag tag) {

private void initLayout() {
add(AttributeAppender.append("class", "list-group-menu"));
add(AttributeAppender.append("data-widget", "list-group-menu"));
setOutputMarkupId(true);

ListView<ListGroupMenuItem<T>> items = new ListView<>(ID_ITEMS, () -> getModelObject().getItems()) {
Expand All @@ -75,8 +67,8 @@ protected void onClickPerformed(AjaxRequestTarget target, ListGroupMenuItem item
}

protected void onMenuClickPerformed(AjaxRequestTarget target, ListGroupMenuItem<T> item) {
getModelObject().activateItem(item);
getModelObject().onItemClickPerformed(item);

// target.add(this);
target.add(this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.resource.AbstractResource;
import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.util.string.Strings;

Expand Down Expand Up @@ -205,7 +204,7 @@ protected Search load() {
@Override
protected ListGroupMenu<RoleCatalogQueryItem> load() {
ListGroupMenu<RoleCatalogQueryItem> menu = loadRoleCatalogMenu();
selectFirstMenu(menu);
menu.activateFirstAvailableItem();

return menu;
}
Expand Down Expand Up @@ -279,7 +278,7 @@ public void onClick(AjaxRequestTarget target) {

@Override
protected CatalogTile createTileObject(SelectableBean<ObjectType> object) {
CatalogTile t = new CatalogTile(GuiStyleConstants.CLASS_OBJECT_ROLE_ICON, WebComponentUtil.getName(object.getValue()));
CatalogTile t = new CatalogTile(GuiStyleConstants.CLASS_OBJECT_ROLE_ICON_COLORED, WebComponentUtil.getName(object.getValue()));
t.setDescription(object.getValue().getDescription());
t.setValue(object);

Expand Down Expand Up @@ -334,7 +333,7 @@ protected IModel<IResource> createPreferredImage(IModel<CatalogTile<SelectableBe
protected DisplayType createDisplayType(IModel<CatalogTile<SelectableBean<ObjectType>>> model) {
return new DisplayType()
.icon(new IconType()
.cssClass(GuiStyleConstants.CLASS_OBJECT_ROLE_ICON));
.cssClass(StringUtils.joinWith(" ", GuiStyleConstants.CLASS_OBJECT_ROLE_ICON, "fa-2x")));
}
};
}
Expand Down Expand Up @@ -502,31 +501,6 @@ private List<ListGroupMenuItem<RoleCatalogQueryItem>> loadMenuFromOrgTree(Object
return loadMenuFromOrgTree(ref, 1, 3);
}

private void selectFirstMenu(ListGroupMenu<RoleCatalogQueryItem> menu) {
for (ListGroupMenuItem item : menu.getItems()) {
boolean selected = selectFirstMenu(menu, item);
if (selected) {
break;
}
}
}

private boolean selectFirstMenu(ListGroupMenu<RoleCatalogQueryItem> menu, ListGroupMenuItem<RoleCatalogQueryItem> item) {
if (item.getItems().isEmpty()) {
menu.activateItem(item);
return true;
}

for (ListGroupMenuItem child : item.getItems()) {
boolean selected = selectFirstMenu(menu, child);
if (selected) {
return true;
}
}

return false;
}

private List<ListGroupMenuItem<RoleCatalogQueryItem>> loadMenuFromOrgTree(ObjectReferenceType ref, int currentLevel, int maxLevel) {
if (ref == null) {
return new ArrayList<>();
Expand Down

0 comments on commit 4ad491c

Please sign in to comment.