Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/reports
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Jun 3, 2020
2 parents 025da8f + 742702a commit 50b5721
Show file tree
Hide file tree
Showing 662 changed files with 12,462 additions and 5,953 deletions.
4 changes: 2 additions & 2 deletions gui/admin-gui/pom.xml
Expand Up @@ -102,8 +102,8 @@
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.webjars.bower</groupId>
<artifactId>adminlte</artifactId>
<groupId>com.evolveum.webjars</groupId>
<artifactId>AdminLTE</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
Expand Down
Expand Up @@ -16,7 +16,7 @@
import com.evolveum.midpoint.model.api.AssignmentObjectRelation;
import com.evolveum.midpoint.model.api.ModelAuthorizationAction;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.api.util.DefaultColumnUtils;
import com.evolveum.midpoint.model.common.util.DefaultColumnUtils;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
Expand Down Expand Up @@ -271,7 +271,7 @@ protected String getFilename() {
}

@Override
protected void createReportPerformed(SearchFilterType filter, List<Integer> indexOfColumns, AjaxRequestTarget target) {
protected void createReportPerformed(String name, SearchFilterType filter, List<Integer> indexOfColumns, AjaxRequestTarget target) {
PrismContext prismContext = getPageBase().getPrismContext();
PrismObjectDefinition<ReportType> def = prismContext.getSchemaRegistry().findObjectDefinitionByType(ReportType.COMPLEX_TYPE);
PrismObject<ReportType> obj = null;
Expand All @@ -286,41 +286,43 @@ protected void createReportPerformed(SearchFilterType filter, List<Integer> inde
ReportType report = obj.asObjectable();
String oid = UUID.randomUUID().toString();
report.setOid(oid);
String name = getPageBase().createStringResource("ObjectTypeGuiDescriptor.report").getString()+ "-" + oid;
if (StringUtils.isEmpty(name)) {
name = getPageBase().createStringResource("ObjectTypeGuiDescriptor.report").getString() + "-" + oid;
}
report.setName(WebComponentUtil.createPolyFromOrigString(name));
report.setReportEngine(ReportEngineSelectionType.COLLECTION);
ObjectCollectionReportEngineConfigurationType objectCollection = new ObjectCollectionReportEngineConfigurationType();
objectCollection.setUseOnlyReportView(true);
CompiledObjectCollectionView view = getObjectCollectionView();
CollectionRefSpecificationType collection = new CollectionRefSpecificationType();
if (view == null) {
objectCollection.setView(resolveSelectedColumn(indexOfColumns, getDefaultView()));
} else {
objectCollection.setView(resolveSelectedColumn(indexOfColumns, view.toGuiObjectListViewType()));
}
CollectionRefSpecificationType collection = new CollectionRefSpecificationType();
if (view.getCollection() != null && view.getCollection().getCollectionRef() != null) {
if (!QNameUtil.match(view.getCollection().getCollectionRef().getType(), ArchetypeType.COMPLEX_TYPE)) {
collection.setBaseCollectionRef(view.getCollection());
} else {
CollectionRefSpecificationType baseCollection = new CollectionRefSpecificationType();
try {
baseCollection.setFilter(getPageBase().getQueryConverter().createSearchFilterType(view.getFilter()));
collection.setBaseCollectionRef(baseCollection);
} catch (SchemaException e) {
LOGGER.error("Couldn't create filter for archetype");
getPageBase().error(getString("MainObjectListPanel.message.error.createArchetypeFilter"));
target.add(getPageBase().getFeedbackPanel());
if (view.getCollection() != null && view.getCollection().getCollectionRef() != null) {
if (!QNameUtil.match(view.getCollection().getCollectionRef().getType(), ArchetypeType.COMPLEX_TYPE)) {
collection.setBaseCollectionRef(view.getCollection());
} else {
CollectionRefSpecificationType baseCollection = new CollectionRefSpecificationType();
try {
baseCollection.setFilter(getPageBase().getQueryConverter().createSearchFilterType(view.getFilter()));
collection.setBaseCollectionRef(baseCollection);
} catch (SchemaException e) {
LOGGER.error("Couldn't create filter for archetype");
getPageBase().error(getString("MainObjectListPanel.message.error.createArchetypeFilter"));
target.add(getPageBase().getFeedbackPanel());
}
}
}
}
if (filter != null) {
collection.setFilter(filter);
} else if (view.getCollection() == null) {
} else if (view == null || view.getCollection() == null) {
try {
SearchFilterType allFilter = prismContext.getQueryConverter().createSearchFilterType(prismContext.queryFactory().createAll());
collection.setFilter(allFilter);
} catch (SchemaException e) {
LOGGER.error("Couldn't create all filter");
LOGGER.error("Couldn't create all filter", e);
getPageBase().error(getString("MainObjectListPanel.message.error.createAllFilter"));
target.add(getPageBase().getFeedbackPanel());
return;
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.SerializableSupplier;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.home.PageDashboardConfigurable;
import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusPresentationProperties;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -723,7 +724,44 @@ protected List<CompiledObjectCollectionView> getAllApplicableArchetypeViews() {
return getPageBase().getCompiledGuiProfile().findAllApplicableArchetypeViews(WebComponentUtil.classToQName(getPageBase().getPrismContext(), getType()));
}

private CompiledObjectCollectionView dashboardWidgetView;

protected CompiledObjectCollectionView getObjectCollectionView() {
if (dashboardWidgetView != null) {
return dashboardWidgetView;
}
PageParameters parameters = getPageBase().getPageParameters();
String dashboardOid = parameters == null ? null : parameters.get(PageBase.PARAMETER_DASHBOARD_TYPE_OID).toString();
String dashboardWidgetName = parameters == null ? null : parameters.get(PageBase.PARAMETER_DASHBOARD_WIDGET_NAME).toString();

if (!StringUtils.isEmpty(dashboardOid) && !StringUtils.isEmpty(dashboardWidgetName)) {
Task task = getPageBase().createSimpleTask("Create view from dashboard");
@NotNull DashboardType dashboard = WebModelServiceUtils.loadObject(DashboardType.class, dashboardOid, getPageBase(), task, task.getResult()).getRealValue();
if (dashboard != null) {
for (DashboardWidgetType widget :dashboard.getWidget()) {
if (widget.getIdentifier().equals(dashboardWidgetName)
&& widget.getData() != null && widget.getData().getCollection() != null
&& widget.getData().getCollection().getCollectionRef() != null) {
ObjectReferenceType ref = widget.getData().getCollection().getCollectionRef();
ObjectCollectionType collection = (ObjectCollectionType)WebModelServiceUtils.loadObject(ref,
getPageBase(), task, task.getResult()).getRealValue();
try {
@NotNull CompiledObjectCollectionView compiledView = getPageBase().getModelInteractionService()
.compileObjectCollectionView(collection.asPrismObject(), null, task, task.getResult());
if (widget.getPresentation() != null && widget.getPresentation().getView() != null) {
getPageBase().getModelInteractionService().applyView(compiledView, widget.getPresentation().getView());
}
compiledView.setCollection(widget.getData().getCollection());
dashboardWidgetView = compiledView;
} catch (SchemaException | CommunicationException | ConfigurationException | SecurityViolationException | ExpressionEvaluationException
| ObjectNotFoundException e) {
LOGGER.error("Couldn't compile collection " + collection.getName(), e);
}
break;
}
}
}
}
String collectionName = getCollectionNameParameterValue().toString();
return getPageBase().getCompiledGuiProfile().findObjectCollectionView(WebComponentUtil.classToQName(getPageBase().getPrismContext(), getType()), collectionName);
}
Expand Down
Expand Up @@ -21,6 +21,7 @@
import com.evolveum.midpoint.web.component.search.Search;
import com.evolveum.prism.xml.ns._public.query_3.SearchFilterType;

import org.apache.commons.lang.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
Expand Down Expand Up @@ -97,6 +98,7 @@ public T getObject() {
return super.wrapModel(model);
}
};
IModel<String> name = Model.of("");
final AbstractAjaxDownloadBehavior ajaxDownloadBehavior = new AbstractAjaxDownloadBehavior() {
private static final long serialVersionUID = 1L;

Expand All @@ -106,7 +108,10 @@ public IResourceStream getResourceStream() {
}

public String getFileName() {
return CsvDownloadButtonPanel.this.getFilename();
if (StringUtils.isEmpty(name.getObject())) {
return CsvDownloadButtonPanel.this.getFilename();
}
return name.getObject();
}
};

Expand Down Expand Up @@ -146,7 +151,7 @@ public void onClick(AjaxRequestTarget target) {
}
exportableColumnsIndex.clear();
ExportingPanel exportingPanel = new ExportingPanel(getPageBase().getMainPopupBodyId(),
getDataTable(), exportableColumnsIndex, useExportSizeLimit, search) {
getDataTable(), exportableColumnsIndex, useExportSizeLimit, search, name) {
private static final long serialVersionUID = 1L;

@Override
Expand All @@ -155,8 +160,13 @@ public void exportPerformed(AjaxRequestTarget target) {
}

@Override
protected void createReportPerformed(SearchFilterType filter, AjaxRequestTarget target) {
CsvDownloadButtonPanel.this.createReportPerformed(filter, exportableColumnsIndex, target);
protected void createReportPerformed(String name, SearchFilterType filter, AjaxRequestTarget target) {
CsvDownloadButtonPanel.this.createReportPerformed(name, filter, exportableColumnsIndex, target);
}

@Override
public boolean isVisibleCreateReportOption() {
return CsvDownloadButtonPanel.this.isVisibleCreateReportOption();
}
};
getPageBase().showMainPopup(exportingPanel, target);
Expand All @@ -178,6 +188,10 @@ protected void createReportPerformed(SearchFilterType filter, AjaxRequestTarget

protected abstract String getFilename();

protected abstract void createReportPerformed(SearchFilterType filter, List<Integer> indexOfColumns, AjaxRequestTarget target);
protected abstract void createReportPerformed(String name, SearchFilterType filter, List<Integer> indexOfColumns, AjaxRequestTarget target);

public boolean isVisibleCreateReportOption() {
return true;
}

}
Expand Up @@ -15,6 +15,7 @@
import com.evolveum.midpoint.prism.crypto.EncryptionException;
import com.evolveum.midpoint.prism.crypto.Protector;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
import com.evolveum.midpoint.web.page.admin.users.PageUser;
import com.evolveum.midpoint.web.page.self.*;
import com.evolveum.midpoint.web.security.MidPointApplication;
Expand Down Expand Up @@ -193,7 +194,7 @@ public boolean isVisible() {
|| pageBase instanceof PageRoleSelfProfile || pageBase instanceof PageServiceSelfProfile) {
return false;
}
if (pageBase instanceof PageUser && !((PageUser) pageBase).isLoggedInUserPage()
if (pageBase instanceof PageAdminFocus && !((PageAdminFocus) pageBase).isLoggedInFocusPage()
&& model.getObject() != null){
return true;
}
Expand Down
Expand Up @@ -20,10 +20,10 @@
<link href="css/font-evosome.css" type="text/css" rel="stylesheet"/>

<wicket:link>
<link href="../../../../../../webjars/adminlte/2.3.11/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="../../../../../../webjars/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="../../../../../../webjars/ionicons/3.0.0/dist/css/ionicons.min.css" rel="stylesheet" type="text/css" />
<link href="../../../../../../webjars/adminlte/2.3.11/plugins/datatables/dataTables.bootstrap.css" rel="stylesheet" type="text/css" />
<link href="../../../../../../webjars/AdminLTE/2.4.18/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="../../../../../../webjars/AdminLTE/2.4.18/bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="../../../../../../webjars/AdminLTE/2.4.18/bower_components/Ionicons/css/ionicons.min.css" rel="stylesheet" type="text/css" />
<link href="../../../../../../webjars/AdminLTE/2.4.18/bower_components/datatables.net-bs/css/dataTables.bootstrap.css" rel="stylesheet" type="text/css" />
</wicket:link>

<link href="wro/admin-lte.css" type="text/css" rel="stylesheet"/>
Expand Down Expand Up @@ -55,7 +55,7 @@
<header wicket:id="mainHeader" class="main-header" style="max-height:550px;">
<!-- Logo -->
<a class="custom-logo" wicket:id="customLogo">
<i wicket:id="customLogoImgCss"/>
<i wicket:id="customLoOgoImgCss"/>
<img wicket:id="customLogoImgSrc"/>
</a>
<a class="logo" wicket:id="logo">
Expand All @@ -64,7 +64,7 @@
<!-- Header Navbar: style can be found in header.less -->
<nav wicket:id="navigation" role="navigation" class="navbar navbar-static-top">
<!-- Sidebar toggle button-->
<a wicket:id="menuToggle" role="button" data-toggle="offcanvas" class="sidebar-toggle" href="#">
<a wicket:id="menuToggle" role="button" data-toggle="push-menu" class="sidebar-toggle" href="#">
<span class="sr-only"><wicket:message key="PageTemplate.toggleNavigation"/></span>
</a>

Expand Down Expand Up @@ -145,10 +145,10 @@
</div>

<wicket:link>
<script src="../../../../../../webjars/adminlte/2.3.11/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<script src="../../../../../../webjars/adminlte/2.3.11/plugins/slimScroll/jquery.slimscroll.min.js" type="text/javascript"></script>
<script src='../../../../../../webjars/adminlte/2.3.11/plugins/fastclick/fastclick.js'></script>
<script src="../../../../../../webjars/adminlte/2.3.11/dist/js/app.min.js" type="text/javascript"></script>
<script src="../../../../../../webjars/AdminLTE/2.4.18/bower_components/bootstrap/dist/js/bootstrap.min.js" type="text/javascript"></script>
<script src="../../../../../../webjars/AdminLTE/2.4.18/bower_components/jquery-slimscroll/jquery.slimscroll.min.js" type="text/javascript"></script>
<script src='../../../../../../webjars/AdminLTE/2.4.18/bower_components/fastclick/lib/fastclick.js'></script>
<script src="../../../../../../webjars/AdminLTE/2.4.18/dist/js/adminlte.min.js" type="text/javascript"></script>
</wicket:link>

<script type="text/javascript" src="js/bootstrap-select/bootstrap-select.js"></script>
Expand Down
Expand Up @@ -238,6 +238,8 @@ public abstract class PageBase extends WebPage implements ModelServiceLocator {
private static final int DEFAULT_BREADCRUMB_STEP = 2;
public static final String PARAMETER_OBJECT_COLLECTION_TYPE_OID = "collectionOid";
public static final String PARAMETER_OBJECT_COLLECTION_NAME = "collectionName";
public static final String PARAMETER_DASHBOARD_TYPE_OID = "dashboardOid";
public static final String PARAMETER_DASHBOARD_WIDGET_NAME = "dashboardWidgetName";
public static final String PARAMETER_SEARCH_BY_NAME = "name";

private static final String CLASS_DEFAULT_SKIN = "skin-blue-light";
Expand Down Expand Up @@ -776,7 +778,7 @@ public void renderHead(IHeaderResponse response) {
skinCssString = info.getSkin();
}

String skinCssPath = String.format("../../../../../../webjars/adminlte/2.3.11/dist/css/skins/%s.min.css", skinCssString);
String skinCssPath = String.format("../../../../../../webjars/AdminLTE/2.4.18/dist/css/skins/%s.min.css", skinCssString);
response.render(CssHeaderItem.forReference(
new CssResourceReference(
PageBase.class, skinCssPath)
Expand Down Expand Up @@ -2747,7 +2749,12 @@ public <IW extends ItemWrapper> Panel initItemPanel(String panelId, QName typeNa
public <C extends Containerable> Panel initContainerValuePanel(String id, IModel<PrismContainerValueWrapper<C>> model,
ItemPanelSettings settings) {
//TODO find from registry first
return new PrismContainerValuePanel<>(id, model, settings);
return new PrismContainerValuePanel<C, PrismContainerValueWrapper<C>>(id, model, settings) {
@Override
protected boolean isRemoveButtonVisible() {
return false;
}
};
}

public Clock getClock() {
Expand Down
Expand Up @@ -85,7 +85,6 @@
import com.evolveum.midpoint.web.component.util.Selectable;
import com.evolveum.midpoint.web.component.util.SelectableBeanImpl;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.PageDialog;
import com.evolveum.midpoint.web.page.admin.archetype.PageArchetype;
import com.evolveum.midpoint.web.page.admin.cases.PageCase;
import com.evolveum.midpoint.web.page.admin.reports.PageReport;
Expand Down Expand Up @@ -2228,8 +2227,6 @@ public static PageBase getPageBase(Component component) {
Page page = component.getPage();
if (page instanceof PageBase) {
return (PageBase) page;
} else if (page instanceof PageDialog) {
return ((PageDialog) page).getPageBase();
} else {
throw new IllegalStateException("Couldn't determine page base for " + page);
}
Expand Down

0 comments on commit 50b5721

Please sign in to comment.