Skip to content

Commit

Permalink
Merge branch 'master' into feature/expression-profiles
Browse files Browse the repository at this point in the history
# Conflicts:
#	gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/page/self/requestAccess/PersonOfInterestPanel.java
  • Loading branch information
mederly committed Jul 21, 2023
2 parents 5c18a30 + eb4ac4b commit 6c04a96
Show file tree
Hide file tree
Showing 299 changed files with 7,992 additions and 1,973 deletions.
14 changes: 14 additions & 0 deletions gui/admin-gui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion gui/admin-gui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"tempusdominus-bootstrap-4": "^5.39.2",
"webpack": "^5.76.0",
"webpack-cli": "^5.0.0",
"webpack-merge": "^5.8.0"
"webpack-merge": "^5.8.0",
"bootstrap4-toggle" : "^3.6.1"
}
}
11 changes: 11 additions & 0 deletions gui/admin-gui/src/frontend/js/midpoint-theme.js
Original file line number Diff line number Diff line change
Expand Up @@ -554,4 +554,15 @@ export default class MidPointTheme {
chart.draw(data)
});
}

/**
* used in SimulationModePanel.java
*
* @param compId
*/
initDropdownResize(panelId) {
var panel = $('#' + panelId);
panel.find("option.width-tmp-option").html(panel.find("select.resizing-select option:selected").text());
panel.find("select.resizing-select").width(panel.find("select.width-tmp-select").width());
}
}
2 changes: 2 additions & 0 deletions gui/admin-gui/src/frontend/js/vendors.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import '../../../node_modules/select2/dist/js/select2';

import '../../../node_modules/sparklines';

import '../../../node_modules/admin-lte/plugins/bootstrap-switch/js/bootstrap-switch';

import '../../../node_modules/ace-builds/src-noconflict/ace';

ace.config.setModuleUrl('ace/theme/eclipse',
Expand Down
16 changes: 16 additions & 0 deletions gui/admin-gui/src/frontend/scss/midpoint.scss
Original file line number Diff line number Diff line change
Expand Up @@ -1841,3 +1841,19 @@ th.debug-list-buttons {
background-color: $dark;
}
}

@each $color, $value in $theme-colors {
$backgroundValue: color-yiq($value);

.colored-form-#{$color}, .colored-form-#{$color}:hover, .colored-form-#{$color}:active, .colored-form-#{$color}:focus {
color: $value;
background-color: mix(#ffffff00, $value, 85%);
border-color: $value;

option {
background: $white;
color: $dark;
}
}

}
1 change: 1 addition & 0 deletions gui/admin-gui/src/frontend/scss/vendors.scss
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
@import "midpoint-variables";

@import "../../../node_modules/admin-lte/build/scss/adminlte";
@import "../../../node_modules/admin-lte/build/scss/plugins/bootstrap-switch";
@import "../../../node_modules/overlayscrollbars/css/OverlayScrollbars.css";
@import "../../../node_modules/datatables.net-bs4/css/dataTables.bootstrap4";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,9 @@ public abstract class MainObjectListPanel<O extends ObjectType> extends ObjectLi
private static final String OPERATION_DELETE_OBJECT = DOT_CLASS + "deleteObject";

private LoadableModel<ExecuteChangeOptionsDto> executeOptionsModel;

public MainObjectListPanel(String id, Class<O> type) {
this(id, type, null);
}

public MainObjectListPanel(String id, Class<O> type, Collection<SelectorOptions<GetOperationOptions>> options) {
super(id, type, options);
super(id, type);
executeOptionsModel = new LoadableModel<>(false) {

@Override
Expand All @@ -97,8 +93,8 @@ protected ExecuteChangeOptionsDto load() {
};
}

public MainObjectListPanel(String id, Class<O> type, Collection<SelectorOptions<GetOperationOptions>> options, ContainerPanelConfigurationType config) {
super(id, type, options, config);
public MainObjectListPanel(String id, Class<O> type, ContainerPanelConfigurationType config) {
super(id, type, config);
executeOptionsModel = new LoadableModel<>(false) {

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
import java.util.function.Supplier;
import java.util.stream.Collectors;

import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
Expand All @@ -25,11 +28,8 @@
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.ContainerableListPanel;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectOrdering;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.gui.impl.component.data.provider.SelectableBeanObjectDataProvider;
import com.evolveum.midpoint.web.component.data.column.ColumnUtils;
import com.evolveum.midpoint.web.component.data.column.ObjectNameColumn;
Expand All @@ -52,12 +52,12 @@ public abstract class ObjectListPanel<O extends ObjectType> extends Containerabl
/**
* @param defaultType specifies type of the object that will be selected by default. It can be changed.
*/
public ObjectListPanel(String id, Class<O> defaultType, Collection<SelectorOptions<GetOperationOptions>> options) {
super(id, defaultType, options);
public ObjectListPanel(String id, Class<O> defaultType) {
super(id, defaultType);
}

public ObjectListPanel(String id, Class<O> defaultType, Collection<SelectorOptions<GetOperationOptions>> options, ContainerPanelConfigurationType config) {
super(id, defaultType, options, config);
public ObjectListPanel(String id, Class<O> defaultType, ContainerPanelConfigurationType config) {
super(id, defaultType, config);
}

protected String getSearchByNameParameterValue() {
Expand All @@ -73,8 +73,16 @@ protected String getSearchByNameParameterValue() {
return value.toString();
}

protected final SelectableBeanObjectDataProvider<O> createSelectableBeanObjectDataProvider(SerializableSupplier<ObjectQuery> querySuplier,
protected final SelectableBeanObjectDataProvider<O> createSelectableBeanObjectDataProvider(
SerializableSupplier<ObjectQuery> querySuplier,
SerializableFunction<SortParam<String>, List<ObjectOrdering>> orderingSuplier) {
return createSelectableBeanObjectDataProvider(querySuplier, orderingSuplier, null);
}

protected final SelectableBeanObjectDataProvider<O> createSelectableBeanObjectDataProvider(
SerializableSupplier<ObjectQuery> querySuplier,
SerializableFunction<SortParam<String>, List<ObjectOrdering>> orderingSuplier,
Collection<SelectorOptions<GetOperationOptions>> options) {
SelectableBeanObjectDataProvider<O> provider = new SelectableBeanObjectDataProvider<>(
getPageBase(), getSearchModel(), null) {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -107,7 +115,7 @@ public Set<O> getSelected() {
}
};
provider.setCompiledObjectCollectionView(getObjectCollectionView());
provider.setOptions(getOptions());
provider.setOptions(options);
return provider;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public PopupObjectListPanel(String id, Class<O> defaultType, boolean multiselect

public PopupObjectListPanel(String id, Class<O> defaultType, Collection<SelectorOptions<GetOperationOptions>> options,
boolean multiselect) {
super(id, defaultType, options);
super(id, defaultType);
this.multiselect = multiselect;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.util.Collection;
import java.util.Iterator;

import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.schema.GetOperationOptions;
Expand Down Expand Up @@ -69,7 +70,6 @@ public AutoCompleteTextPanel(String id, final IModel<T> model, Class<T> type,
this.strict = strict;
}


public AutoCompleteTextPanel(String id, final IModel<T> model, Class<T> type, IAutoCompleteRenderer<T> renderer) {
super(id);

Expand Down Expand Up @@ -137,19 +137,11 @@ protected LookupTableType getLookupTable() {

protected LookupTableType getLookupTable() {
if (lookupTableOid != null) {
Task task = getPageBase().createSimpleTask("Load lookup table");
OperationResult result = task.getResult();
Collection<SelectorOptions<GetOperationOptions>> options = WebModelServiceUtils
.createLookupTableRetrieveOptions(getPageBase().getSchemaService());
PrismObject<LookupTableType> prismLookupTable = WebModelServiceUtils.loadObject(LookupTableType.class, lookupTableOid, options, getPageBase(), task, result);
if (prismLookupTable != null) {
return prismLookupTable.asObjectable();
}
}
return WebComponentUtil.loadLookupTable(lookupTableOid, getPageBase());
}
return null;
}


@Override
public FormComponent<T> getBaseFormComponent() {
return (FormComponent<T>) get(ID_INPUT);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/*
* Copyright (C) 2010-2023 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.autocomplete;

import java.util.Collection;
import java.util.function.Function;

import com.evolveum.midpoint.util.logging.TraceManager;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismPropertyValue;
import com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple;
import com.evolveum.midpoint.repo.common.expression.Expression;
import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext;
import com.evolveum.midpoint.repo.common.expression.ExpressionFactory;
import com.evolveum.midpoint.schema.constants.ExpressionConstants;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DOMUtil;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

public interface AutocompleteConfigurationMixin {

Trace LOGGER = TraceManager.getTrace(AutocompleteConfigurationMixin.class);

default <O extends ObjectType> String getDisplayNameFromExpression(
String contextDesc, @Nullable ExpressionType expressionType,
@NotNull Function<PrismObject<O>, String> defaultDisplayNameFunction,
@NotNull PrismObject<O> object, @NotNull BasePanel<?> panel) {

if (expressionType == null) {
return defaultDisplayNameFunction.apply(object);
}

ModelServiceLocator locator = panel.getPageBase();

Task task = panel.getPageBase().getPageTask();
OperationResult result = task.getResult();

try {
ExpressionFactory factory = locator.getExpressionFactory();
PrismContext ctx = object.getPrismContext();
PrismPropertyDefinition<String> outputDefinition = ctx.definitionFactory().createPropertyDefinition(
ExpressionConstants.OUTPUT_ELEMENT_NAME, DOMUtil.XSD_STRING);

Expression<PrismPropertyValue<String>, PrismPropertyDefinition<String>> expression =
factory.makeExpression(expressionType, outputDefinition, MiscSchemaUtil.getExpressionProfile(), contextDesc, task, result);

VariablesMap variables = new VariablesMap();
variables.put(ExpressionConstants.VAR_OBJECT, object, object.getDefinition());

ExpressionEvaluationContext context = new ExpressionEvaluationContext(null, variables, contextDesc, task);
context.setExpressionFactory(factory);
PrismValueDeltaSetTriple<PrismPropertyValue<String>> outputTriple = expression.evaluate(context, result);
if (outputTriple == null) {
return null;
}
Collection<PrismPropertyValue<String>> outputValues = outputTriple.getNonNegativeValues();
if (outputValues.isEmpty()) {
return null;
}
if (outputValues.size() > 1) {
return null;
}
return outputValues.iterator().next().getRealValue();
} catch (Exception ex) {
result.recordFatalError(ex);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't evaluate expression for group selection and user display name", ex);
}

return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,22 @@ public abstract class CsvDownloadButtonPanel extends BasePanel {

private static final String ID_EXPORT_DATA = "exportData";

private final boolean canCountBeforeExporting;
// private final boolean canCountBeforeExporting;
List<Integer> exportableColumnsIndex = new ArrayList<>();

public CsvDownloadButtonPanel(String id, boolean canCountBeforeExporting) {
super(id);
this.canCountBeforeExporting = canCountBeforeExporting;
// public CsvDownloadButtonPanel(String id, boolean canCountBeforeExporting) {
// super(id);
// this.canCountBeforeExporting = canCountBeforeExporting;
// }

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

public CsvDownloadButtonPanel(String id) {
this(id, true);
super(id);
}

private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -140,13 +145,13 @@ public void onClick(AjaxRequestTarget target) {
if (exportSizeLimit < 0) {
askForSizeLimitConfirmation = false;
} else {
if (canCountBeforeExporting) {
// if (canCountBeforeExporting) {
IDataProvider<?> dataProvider = getDataTable().getDataProvider();
long size = dataProvider.size();
askForSizeLimitConfirmation = size > exportSizeLimit;
} else {
askForSizeLimitConfirmation = true; // size is unknown
}
// } else {
// askForSizeLimitConfirmation = true; // size is unknown
// }
}
Long useExportSizeLimit = null;
if (askForSizeLimitConfirmation) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,21 @@
*/
package com.evolveum.midpoint.gui.api.component.data.provider;

import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;

import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider;

import com.evolveum.midpoint.prism.query.ObjectQuery;

import java.util.Collection;

public interface ISelectableDataProvider<S> extends ISortableDataProvider<S, String> {

void setQuery(ObjectQuery query);

default boolean canCountBeforeExport() {
return true;
}

}

0 comments on commit 6c04a96

Please sign in to comment.