[MNT-24575] Added APIS and models folder information dialog (#10460)

* [MNT-24575] Added APIs folder information

* [MNT-24575] Added models

* [MNT-24575] Added constructors to model

* [MNT-24575] Added documentation

* [MNT-24575] Added documentation

* [MNT-24575] Addressed Code review comments

* [MNT-24575] Added unit tests. Fixed typo

* [MNT-24575] Fixed accesibility issue in DialogComponent. Fixed typo in enum

* [MNT-24575] Fixed typo, incorrect ACS version, and incorrect imports

* [MNT-24575] Added unit tests to js-api

* Empty commit to trigger GHA

* [ci:force] Empty force commit to trigger GHA

* [MNT-24575] Fixed linting issue

* [MNT-24575] Removed redundant *

* [ci:force] Empty force commit to trigger GHA
This commit is contained in:
swapnil-verma-gl
2025-01-07 15:21:44 +05:30
committed by GitHub
parent 2a1691836e
commit 4787470707
13 changed files with 503 additions and 2 deletions

View File

@@ -28,7 +28,9 @@ import {
NodeBodyMove,
NodeBodyUpdate,
NodeChildAssociationPaging,
NodeEntry
NodeEntry,
SizeDetailsEntry,
JobIdBodyEntry
} from '../model';
import { BaseApi } from './base.api';
import { throwIfNotDefined } from '../../../assert';
@@ -960,4 +962,50 @@ export class NodesApi extends BaseApi {
returnType: DirectAccessUrlEntry
});
}
/**
* Initiate a new request to calculate folder size.
*
* **Note:** this endpoint is available in Alfresco 25.1.0 and newer versions.
* @param nodeId Node Id
* @returns The job id which can be used to track request status
*/
initiateFolderSizeCalculation(nodeId: string): Promise<JobIdBodyEntry> {
throwIfNotDefined(nodeId, 'nodeId');
const pathParams = {
nodeId
};
return this.post({
path: '/nodes/{nodeId}/size-details',
pathParams,
returnType: JobIdBodyEntry
});
}
/**
* Gets the size of a folder.
*
* **Note:** this endpoint is available in Alfresco 25.1.0 and newer versions.
* @param nodeId Node Id
* @param jobId Job Id
* @returns Folder details
*/
getFolderSizeInfo(nodeId: string, jobId: string): Promise<SizeDetailsEntry> {
throwIfNotDefined(nodeId, 'nodeId');
throwIfNotDefined(jobId, 'jobId');
const pathParams = {
nodeId,
jobId
};
return this.get({
path: 'nodes/{nodeId}/size-details/{jobId}',
pathParams,
returnType: SizeDetailsEntry
});
}
}

View File

@@ -25,6 +25,8 @@ All URIs are relative to *https://localhost/alfresco/api/-default-/public/alfres
| [unlockNode](#unlockNode) | **POST** /nodes/{nodeId}/unlock | Unlock a node |
| [updateNode](#updateNode) | **PUT** /nodes/{nodeId} | Update a node |
| [updateNodeContent](#updateNodeContent) | **PUT** /nodes/{nodeId}/content | Update node content |
| [initiateFolderSizeCalculation](#initiateFolderSizeCalculation) | **POST** /nodes/{nodeId}/size-details | Initiate a new request to calculate folder size |
| [getFolderSizeInfo](#getFolderSizeInfo) | **GET** /nodes/{nodeId}/size-details/{jobId} | Gets the details of a folder |
## copyNode
@@ -1196,6 +1198,67 @@ nodesApi.updateNodeContent(`<nodeId>`, contentBodyUpdate, opts).then((data) => {
console.log('API called successfully. Returned data: ' + data);
});
```
## initiateFolderSizeCalculation
Initiates a new request to calculate folder size.
> this endpoint is available in **Alfresco 25.1.0** and newer versions.
Initiates a request to calculate the size of the node with identifier **nodeId**.
**Parameters**
| Name | Type | Description |
|-----------------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **nodeId** | string | The identifier of a node. |
**Return type**: [JobIdBodyEntry](#JobIdBodyEntry)
**Example**
```javascript
import {AlfrescoApi, NodesApi} from '@alfresco/js-api';
const alfrescoApi = new AlfrescoApi(/*..*/);
const nodesApi = new NodesApi(alfrescoApi);
const contentBodyUpdate = {};
const opts = {};
nodesApi.initiateFolderSizeCalculation(`<nodeId>`).then((data) => {
console.log('API called successfully. Returned data: ' + data);
});
```
## getFolderSizeInfo
Gets the size details of a folder
> this endpoint is available in **Alfresco 25.1.0** and newer versions.
Fetches the size details of folder with the identifier **nodeId**
**Parameters**
| Name | Type | Description |
|------------|----------|------------------------------------------------------------------------------------|
| **nodeId** | string | The identifier of a node. |
| **jobId** | string | The identifier for the job which is calculating the currently selected node's size |
**Return type**: [SizeDetailsEntry](#SizeDetailsEntry)
**Example**
```javascript
import {AlfrescoApi, NodesApi} from '@alfresco/js-api';
const alfrescoApi = new AlfrescoApi(/*..*/);
const nodesApi = new NodesApi(alfrescoApi);
const contentBodyUpdate = {};
const opts = {};
nodesApi.getFolderSizeInfo(`<nodeId>`, `<jobId>`).then((data) => {
console.log('API called successfully. Returned data: ' + data);
});
```
# Models
@@ -1409,6 +1472,39 @@ nodesApi.updateNodeContent(`<nodeId>`, contentBodyUpdate, opts).then((data) => {
| isInheritanceEnabled | boolean |
| locallySet | [PermissionElement[]](PermissionElement.md) |
# JobIdBodyEntry
**Properties**
| Name | Type |
|-----------|-------------------------|
| **entry** | [JobIdBody](#JobIdBody) |
# JobIdBody
**Properties**
| Name | Type | Description | Notes |
|-----------|--------|---------------------------------------------------------------------------------------|-------------------|
| **jobId** | string | Id of the job that can be used to track the status of folder size calculation request | [default to null] |
# SizeDetailsEntry
**Properties**
| Name | Type |
|-----------|-----------------------------|
| **entry** | [SizeDetails](#SizeDetails) |
# SizeDetails
**Properties**
| Name | Type | Description | Notes |
|-------------------|--------|-----------------------------------------------------------------------------|------------------|
| **id** | string | Unique alphanumeric id unique to this response request | [default to null]|
| **sizeInBytes** | string | Size of the folder in bytes | [default to null]|
| **calculatedAt** | string | Timestamp of when the folder size was calculated | [default to null]|
| **numberOfFiles** | number | Number of files present within the folder | [default to null]|
| **status** | string | Status of the request. Can be 'NOT-INITIATED', 'IN-PROGRESS' or 'COMPLETED' | [default to null]|
| **jobId** | string | The job ID which was used to track down the folder details | [default to null]|

View File

@@ -211,3 +211,7 @@ export * from './versionPagingList';
export * from './deletedNode';
export * from './nodeAssociation';
export * from './nodeChildAssociation';
export * from './sizeDetails';
export * from './sizeDetailsEntry';
export * from './jobIdBody';
export * from './jobIdBodyEntry';

View File

@@ -0,0 +1,24 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export class JobIdBody {
jobId: string;
constructor(jobIdBody: JobIdBody) {
this.jobId = jobIdBody.jobId;
}
}

View File

@@ -0,0 +1,29 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { JobIdBody } from './jobIdBody';
export class JobIdBodyEntry {
entry: JobIdBody;
constructor(input?: Partial<JobIdBodyEntry>) {
if (input) {
Object.assign(this, input);
this.entry = input.entry ? new JobIdBody(input.entry) : undefined;
}
}
}

View File

@@ -0,0 +1,42 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export class SizeDetails {
id: string;
sizeInBytes: string;
calculatedAt: string;
numberOfFiles: number;
status: SizeDetails.StatusEnum;
jobId: string;
constructor(entry: SizeDetails) {
this.id = entry.id;
this.sizeInBytes = entry.sizeInBytes;
this.calculatedAt = entry.calculatedAt;
this.numberOfFiles = entry.numberOfFiles;
this.status = entry.status;
this.jobId = entry.jobId;
}
}
export namespace SizeDetails {
export type StatusEnum = 'IN-PROGRESS' | 'COMPLETED' | 'NOT-INITIATED';
export const StatusEnum = {
IN_PROGRESS: 'IN-PROGRESS' as StatusEnum,
COMPLETE: 'COMPLETED' as StatusEnum,
NOT_INITIATED: 'NOT-INITIATED' as StatusEnum
};
}

View File

@@ -0,0 +1,29 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { SizeDetails } from './sizeDetails';
export class SizeDetailsEntry {
entry: SizeDetails;
constructor(input?: Partial<SizeDetailsEntry>) {
if (input) {
Object.assign(this, input);
this.entry = input.entry ? new SizeDetails(input.entry) : undefined;
}
}
}