Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Administrator User Interface: Fixed an issue of adding or removing links to elements, when managing the assignment of multiple elements. For example, when managing multiple templates and their assignment to nodes.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UI Core: Tables have an additional way to handle selection, in the form of a Map. Has to be enabled per table with the @useSelectionMap@ Input. Allows for the @indeterminate@ state to be set and correctly handled.
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@
"de": "Einschränkungen zuweisen"
},
"assign_objectProperty_to_nodes_title": {
"en": "Assign objectProperty \"{{ entityName }}\" to Nodes",
"de": "Objekteigenschaft „{{ entityName }}“ zu Nodes zuweisen"
"en": "Restrict Object Properties to Nodes",
"de": "Objekt-Eigenschaften auf Nodes einschränken"
},
"assign_user_to_roles": {
"en": "Assign User to Roles",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ import {
} from '@admin-ui/common';
import { Injectable } from '@angular/core';
import { EntityIdType, Node, Raw } from '@gentics/cms-models';
import { GcmsApi } from '@gentics/cms-rest-clients-angular';
import { Observable, forkJoin, of } from 'rxjs';
import { GCMSRestClientService } from '@gentics/cms-rest-client-angular';
import { Observable } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import { BaseEntityHandlerService } from '../base-entity-handler/base-entity-handler';
import { ErrorHandler } from '../error-handler';
Expand All @@ -45,7 +45,7 @@ export class ObjectPropertyHandlerService

constructor(
errorHandler: ErrorHandler,
protected api: GcmsApi,
protected client: GCMSRestClientService,
protected notification: I18nNotificationService,
) {
super(errorHandler);
Expand All @@ -71,7 +71,7 @@ export class ObjectPropertyHandlerService
data: EntityCreateRequestModel<EditableEntity.OBJECT_PROPERTY>,
params?: EntityCreateRequestParams<EditableEntity.OBJECT_PROPERTY>,
): Observable<EntityCreateResponseModel<EditableEntity.OBJECT_PROPERTY>> {
return this.api.objectproperties.createObjectProperty(data).pipe(
return this.client.objectProperty.create(data).pipe(
tap(res => {
const name = this.displayName(res.objectProperty);
this.nameMap[res.objectProperty.id] = name;
Expand Down Expand Up @@ -101,7 +101,7 @@ export class ObjectPropertyHandlerService
id: string | number,
params?: EntityLoadRequestParams<EditableEntity.OBJECT_PROPERTY>,
): Observable<EntityLoadResponseModel<EditableEntity.OBJECT_PROPERTY>> {
return this.api.objectproperties.getObjectProperty(id).pipe(
return this.client.objectProperty.get(id).pipe(
tap(res => {
const name = this.displayName(res.objectProperty);
this.nameMap[res.objectProperty.id] = name;
Expand All @@ -124,7 +124,7 @@ export class ObjectPropertyHandlerService
data: EntityUpdateRequestModel<EditableEntity.OBJECT_PROPERTY>,
params?: EntityUpdateRequestParams<EditableEntity.OBJECT_PROPERTY>,
): Observable<EntityUpdateResponseModel<EditableEntity.OBJECT_PROPERTY>> {
return this.api.objectproperties.updateObjectProperty(id, data).pipe(
return this.client.objectProperty.update(id, data).pipe(
tap(res => {
const name = this.displayName(res.objectProperty);
this.nameMap[res.objectProperty.id] = name;
Expand Down Expand Up @@ -152,8 +152,8 @@ export class ObjectPropertyHandlerService
}

delete(id: string | number, params?: EntityDeleteRequestParams<EditableEntity.OBJECT_PROPERTY>): Observable<void> {
return this.api.objectproperties.deleteObjectProperty(id).pipe(
tap(() => {
return this.client.objectProperty.delete(id).pipe(
discard(() => {
const name = this.nameMap[id];

if (!name) {
Expand All @@ -177,7 +177,7 @@ export class ObjectPropertyHandlerService
body?: EntityListRequestModel<EditableEntity.OBJECT_PROPERTY>,
params?: EntityListRequestParams<EditableEntity.OBJECT_PROPERTY>,
): Observable<EntityListResponseModel<EditableEntity.OBJECT_PROPERTY>> {
return this.api.objectproperties.getObjectProperties(params).pipe(
return this.client.objectProperty.list(params).pipe(
tap(res => {
res.items.forEach(objCat => {
const name = this.displayName(objCat);
Expand All @@ -204,8 +204,8 @@ export class ObjectPropertyHandlerService
devtoolPackage: string,
entityId: string | number,
): Observable<void> {
return this.api.devTools.addObjectPropertyToPackage(devtoolPackage, entityId).pipe(
tap(() => {
return this.client.devTools.assignObjectProperty(devtoolPackage, entityId).pipe(
discard(() => {
this.notification.show({
message: 'objectProperty.objectProperty_successfully_added_to_package',
type: 'success',
Expand All @@ -222,8 +222,8 @@ export class ObjectPropertyHandlerService
devtoolPackage: string,
entityId: string | number,
): Observable<void> {
return this.api.devTools.removeObjectPropertyFromPackage(devtoolPackage, entityId).pipe(
tap(() => {
return this.client.devTools.unassignObjectProperty(devtoolPackage, entityId).pipe(
discard(() => {
this.notification.show({
message: 'objectProperty.objectProperty_successfully_removed_from_package',
type: 'success',
Expand All @@ -241,7 +241,7 @@ export class ObjectPropertyHandlerService
body?: DevToolEntityListRequestModel<EditableEntity.OBJECT_PROPERTY>,
params?: DevToolEntityListRequestParams<EditableEntity.OBJECT_PROPERTY>,
): Observable<DevToolEntityListResponseModel<EditableEntity.OBJECT_PROPERTY>> {
return this.api.devTools.getObjectproperties(devtoolPackage, params).pipe(
return this.client.devTools.listObjectProperties(devtoolPackage, params).pipe(
tap(res => {
res.items.forEach(objCat => {
const name = this.displayName(objCat);
Expand All @@ -266,48 +266,32 @@ export class ObjectPropertyHandlerService
}

getLinkedNodes(objectPropertyId: EntityIdType): Observable<Node<Raw>[]> {
return this.api.objectproperties.getObjectPropertyLinkedNodes(objectPropertyId).pipe(
return this.client.objectProperty.listNodes(objectPropertyId).pipe(
map(res => res.items),
);
}

changeNodeRestrictions(
objectPropertyId: EntityIdType,
nodeIdsToRestrict: EntityIdType[] = [],
nodesCurrentlyRestricted: EntityIdType[] = [],
): Observable<void> {
const reqs = [];
const execute = (): Observable<void> => {
if (reqs.length === 0) {
// do nothing
return of();
}
return forkJoin(reqs).pipe(
// no need for explicit return value
discard(),
// display toast notification
tap(() => this.notification.show({
type: 'success',
message: 'objectProperty.operation_linked_to_nodes_successful',
})),
this.catchAndRethrowError(),
);
};

if (nodeIdsToRestrict.length === 0) {
// if none selected
reqs.push(this.api.objectproperties.unlinkObjectPropertiesFromNodes([objectPropertyId], nodesCurrentlyRestricted));
return execute();
}
if (nodesCurrentlyRestricted.length > 0) {
// don't remove nodes supposed to remain linked
const filteredNodes = nodesCurrentlyRestricted.filter(i => nodeIdsToRestrict.some(j => i !== j));
reqs.push(this.api.objectproperties.unlinkObjectPropertiesFromNodes([objectPropertyId], filteredNodes));
}
if (nodeIdsToRestrict.length > 0) {
reqs.push(this.api.objectproperties.linkObjectPropertiesToNodes([objectPropertyId], nodeIdsToRestrict));
}
addNodeRestriction(objectPropertyIds: number[], nodeIds: number[]): Observable<void> {
return this.client.objectProperty.linkToNode({
targetIds: objectPropertyIds,
ids: nodeIds,
}).pipe(discard(() => {
this.notification.show({
type: 'success',
message: 'objectProperty.operation_linked_to_nodes_successful',
});
}));
}

return execute();
removeNodeRestriction(objectPropertyIds: number[], nodeIds: number[]): Observable<void> {
return this.client.objectProperty.unlinkFromNode({
ids: nodeIds,
targetIds: objectPropertyIds,
}).pipe(discard(() => {
this.notification.show({
type: 'success',
message: 'objectProperty.operation_linked_to_nodes_successful',
});
}));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ export class GroupOperations extends ExtendedEntityOperationsBase<'group'> {
* @param id The ID of the `Group` to be moved.
* @param parentTargetId The ID of the `Group` that should be the new parent group.
*/
moveSubgroup(id: number, parentTargetId: number): Observable<Group<Raw>> {
moveSubgroup(id: string | number, parentTargetId: number): Observable<Group<Raw>> {
return this.api.group.moveSubgroup(id, parentTargetId).pipe(
map(response => response.group),
switchMap(movedGroup =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ <h5>{{ constructs?.length === 1 ? ('modal.assign_construct_to_nodes_title' | i18
[showSearch]="true"
[hideActions]="true"
[disabled]="loading"
[selected]="selectedIds"
(selectedChange)="selectionChange($event)"
[useSelectionMap]="true"
[(selected)]="selected"
></gtx-node-table>
</div>

Expand Down
Loading