diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AccountGridLoadService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AccountGridLoadService.java index db074268..7b2aee8b 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AccountGridLoadService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AccountGridLoadService.java @@ -16,6 +16,7 @@ import ru.micord.ervu.account_applications.component.model.Account; import ru.micord.ervu.account_applications.component.model.Person; import ru.micord.ervu.account_applications.component.model.dto.SearchRequest; import ru.micord.ervu.account_applications.component.model.dto.SearchResponse; +import ru.micord.ervu.account_applications.dao.RecruitmentDao; import ru.micord.ervu.account_applications.security.context.SecurityContext; import ru.micord.ervu.account_applications.security.model.jwt.UserSession; import ru.micord.ervu.account_applications.security.model.role.ErvuRoleAuthority; @@ -30,15 +31,20 @@ import ru.cg.webbpm.modules.webkit.beans.Behavior; */ @Service public class AccountGridLoadService extends Behavior implements GridService { + private static final String DOMAIN_IDS = "domainIds"; + private static final String DOMAIN_ID = "domainId"; private final SecurityContext securityContext; private final AccountFetchService accountService; - @Value("${ervu.role.admin:#{null}}") - private String ervuAdminRole; + private final RecruitmentDao recruitmentDao; + @Value("${ervu.security.role:#{null}}") + private String ervuSecurityRole; public AccountGridLoadService(SecurityContext securityContext, - AccountFetchService accountService) { + AccountFetchService accountService, + RecruitmentDao recruitmentDao) { this.securityContext = securityContext; this.accountService = accountService; + this.recruitmentDao = recruitmentDao; } @Override @@ -105,16 +111,30 @@ public class AccountGridLoadService extends Behavior implements GridService { Map filterMap = new HashMap<>(); UserSession userSession = securityContext.getUserSession(); Set roles = userSession.roles(); - if (ervuAdminRole == null - || roles.stream().noneMatch(role -> role.getAuthority().equals(ervuAdminRole))) { - filterMap.put("domainId", securityContext.getDomainId()); + if (ervuSecurityRole == null + || roles.stream().noneMatch(role -> role.getAuthority().equals(ervuSecurityRole))) { + List domainIds = recruitmentDao.getRecruitmentIdsWithParentByDomainId(securityContext.getDomainId()); + filterMap.put(DOMAIN_IDS, domainIds.toArray()); } if (filters != null && filters.length > 0) { filterMap.putAll(Arrays.stream(filters) .filter(filter -> filter.getFilterModels() != null && filter.getFilterModels().length > 0) .collect(Collectors.toMap( - filter -> getScriptInObject(filter.componentGuid, StaticFilterComponent.class).name, - filter -> filter.getFilterModels()[0].value, + filter -> { + String filterName = getScriptInObject(filter.componentGuid, StaticFilterComponent.class).name; + if (DOMAIN_ID.equals(filterName)) { + return DOMAIN_IDS; + } + return filterName; + }, + filter -> { + String filterName = getScriptInObject(filter.componentGuid, StaticFilterComponent.class).name; + Object filterValue = filter.getFilterModels()[0].value; + if (DOMAIN_ID.equals(filterName)) { + return recruitmentDao.getRecruitmentIdsWithParentByDomainId(filterValue.toString()).toArray(); + } + return filterValue; + }, (existing, replacement) -> replacement )) ); diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java index 9732d874..321ab4f2 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java @@ -39,8 +39,8 @@ public class RecruitmentGridService extends GridV2ServiceImpl { @LocalGraphSource(sourceFieldName = "loadDao") @NotNull public EntityColumn recruitmentColumn; - @Value("${ervu.role.admin:security_administrator}") - private String ervuAdminRole; + @Value("${ervu.security.role:security_administrator}") + private String ervuSecurityRole; public RecruitmentGridService(RecruitmentDao recruitmentDao, SecurityContext securityContext) { this.recruitmentDao = recruitmentDao; @@ -54,8 +54,8 @@ public class RecruitmentGridService extends GridV2ServiceImpl { List recruitmentIds; List updatedFilters = new ArrayList<>(Arrays.asList(filters)); Optional recruitmentFilterOpt = findRecruitmentFilter(updatedFilters); - if (ervuAdminRole != null && roles.stream().anyMatch(role -> role.getAuthority().equals( - ervuAdminRole))) { + if (ervuSecurityRole != null && roles.stream().anyMatch(role -> role.getAuthority().equals( + ervuSecurityRole))) { recruitmentIds = recruitmentFilterOpt.map( filter -> getChildRecruitmentIds(updatedFilters, filter)) .orElseGet(this::getAllRecruitmentIds); diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/TreeItemService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/TreeItemService.java index 982f6ca3..bb7ce940 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/TreeItemService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/TreeItemService.java @@ -47,8 +47,8 @@ public class TreeItemService { public EntityColumn businessIdColumn; @GraphSource(value = TreeItemRpcService.class, scanMode = GraphSource.ScanMode.SELF) public EntityColumn domainIdColumn; - @Value("${ervu.role.admin:security_administrator}") - private String ervuAdminRole; + @Value("${ervu.security.role:security_administrator}") + private String ervuSecurityRole; public TreeItemService(SecurityContext securityContext) { this.securityContext = securityContext; @@ -59,8 +59,8 @@ public class TreeItemService { UserSession userSession = securityContext.getUserSession(); Set roles = userSession.roles(); List filteredTreeItems = loadTreeItems(); - if (ervuAdminRole == null || roles.stream().noneMatch(role -> role.getAuthority().equals( - ervuAdminRole))) { + if (ervuSecurityRole == null || roles.stream().noneMatch(role -> role.getAuthority().equals( + ervuSecurityRole))) { filteredTreeItems = filteredTreeItems.stream() .filter(item -> item.domainId.equalsIgnoreCase(domainId)) .toList(); diff --git a/frontend/src/resources/css/components-autority.css b/frontend/src/resources/css/components-autority.css index 89793095..6fd55c75 100644 --- a/frontend/src/resources/css/components-autority.css +++ b/frontend/src/resources/css/components-autority.css @@ -445,6 +445,11 @@ .webbpm.account-applications grid-v2 { flex: 1; } + +.webbpm.account-applications grid-v2 { + flex: 1 1 auto; +} + .webbpm.account-applications * + grid-v2, .webbpm.account-applications grid-v2 ~ *:not([hidden]) { margin-top: var(--indent-small); @@ -461,13 +466,12 @@ .webbpm.account-applications ag-grid-angular .ag-filter .ag-filter-condition ~ * { display: none !important; } -.webbpm.account-applications ag-grid-angular .ag-root-wrapper { +.webbpm.account-applications ag-grid-angular :is(.ag-root-wrapper, .ag-header-viewport, .ag-header-container, .ag-header) { background-color: transparent; } .webbpm.account-applications ag-grid-angular .ag-header { border-top: 1px solid var(--btn-border); - border-radius: 0; - background-color: transparent; + border-radius: 0; } .webbpm.account-applications ag-grid-angular .ag-header-row { color: var(--color-text-mute); @@ -477,7 +481,7 @@ } .webbpm.account-applications ag-grid-angular .ag-header-row:not(:first-child) .ag-header-cell, .webbpm.account-applications ag-grid-angular .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group { - border-top: 0; + border-top: 0; } .webbpm.account-applications ag-grid-angular .ag-header-cell::after, .webbpm.account-applications ag-grid-angular .ag-header-group-cell::after { diff --git a/frontend/src/resources/css/inbox-autority.css b/frontend/src/resources/css/inbox-autority.css index 482db00e..a09716b2 100644 --- a/frontend/src/resources/css/inbox-autority.css +++ b/frontend/src/resources/css/inbox-autority.css @@ -75,6 +75,9 @@ body.webbpm.account-applications { --w-screen: min(calc(2*var(--w-content)), 2.5rem); /*40*/ --h-header: 60px; } +.webbpm.account-applications [class*="ag-theme-"] { + --ag-modal-overlay-background-color: transparent !important; +} .webbpm.account-applications a { color: var(--color-link); diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page index c722ac07..80f76c2c 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Список заявок.page @@ -875,7 +875,6 @@ a2091daf-e287-4f38-a35f-46bde202f639 Collapsible panel true - false false @@ -902,7 +901,6 @@ ca69506d-fd9f-43b7-8d18-d03c3b5fa756 Filter group true - false false @@ -924,6 +922,12 @@ true + + skipInitialLoading + + false + + @@ -1032,6 +1036,12 @@ false + + collectible + + false + + label @@ -1049,6 +1059,12 @@ true + + + treeValuesCacheStrategy + + "BY_PAGE_OBJECT_ID" + @@ -1154,7 +1170,6 @@ 55ffb039-3d8b-4e49-a0fa-e15b703f578e Vbox_current_user true - false false @@ -1978,7 +1993,6 @@ cd396279-39e3-459f-a8b6-af9894753da7 Vbox true - false false @@ -2651,7 +2665,6 @@ 03d3b749-1cc7-4f37-a8c1-701ffb00762e Hbox true - false false @@ -4462,7 +4475,6 @@ df951b69-a0bb-422e-b3ef-f5976671dba1 Grid true - false false