@alfresco/adf-content-services
Version:
Alfresco ADF content services
107 lines • 13.8 kB
JavaScript
/*!
* @license
* Copyright © 2005-2025 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 { inject, Injectable } from '@angular/core';
import { CardViewDateItemModel, CardViewItemMatchValidator, CardViewTextItemModel, FileSizePipe, TranslationService } from '@alfresco/adf-core';
import * as i0 from "@angular/core";
export class BasicPropertiesService {
constructor() {
this.translationService = inject(TranslationService);
}
getProperties(node) {
const sizeInBytes = node.content ? node.content.sizeInBytes : '';
const mimeTypeName = node.content ? node.content.mimeTypeName : '';
const author = node.properties ? node.properties['cm:author'] : '';
const description = node.properties ? node.properties['cm:description'] : '';
const title = node.properties ? node.properties['cm:title'] : '';
return [
new CardViewTextItemModel({
label: 'CORE.METADATA.BASIC.NAME',
value: node.name,
key: 'properties.cm:name',
editable: true,
validators: [new CardViewItemMatchValidator('[\\/\\*\\\\"\\\\:|?<>]')]
}),
new CardViewTextItemModel({
label: 'CORE.METADATA.BASIC.TITLE',
value: title,
key: 'properties.cm:title',
editable: true
}),
new CardViewTextItemModel({
label: 'CORE.METADATA.BASIC.CREATOR',
value: node.createdByUser.displayName,
key: 'createdByUser.displayName',
editable: false
}),
new CardViewDateItemModel({
label: 'CORE.METADATA.BASIC.CREATED_DATE',
value: node.createdAt,
key: 'createdAt',
editable: false,
format: 'mediumDate'
}),
new CardViewTextItemModel({
label: 'CORE.METADATA.BASIC.SIZE',
value: sizeInBytes,
key: 'content.sizeInBytes',
pipes: [{ pipe: new FileSizePipe(this.translationService) }],
editable: false
}),
new CardViewTextItemModel({
label: 'CORE.METADATA.BASIC.MODIFIER',
value: node.modifiedByUser.displayName,
key: 'modifiedByUser.displayName',
editable: false
}),
new CardViewDateItemModel({
label: 'CORE.METADATA.BASIC.MODIFIED_DATE',
value: node.modifiedAt,
key: 'modifiedAt',
editable: false,
format: 'mediumDate'
}),
new CardViewTextItemModel({
label: 'CORE.METADATA.BASIC.MIMETYPE',
value: mimeTypeName,
key: 'content.mimeTypeName',
editable: false
}),
new CardViewTextItemModel({
label: 'CORE.METADATA.BASIC.AUTHOR',
value: author,
key: 'properties.cm:author',
editable: true
}),
new CardViewTextItemModel({
label: 'CORE.METADATA.BASIC.DESCRIPTION',
value: description,
key: 'properties.cm:description',
multiline: true,
editable: true
})
];
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BasicPropertiesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BasicPropertiesService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BasicPropertiesService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtcHJvcGVydGllcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW1ldGFkYXRhL3NlcnZpY2VzL2Jhc2ljLXByb3BlcnRpZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBS2hKLE1BQU0sT0FBTyxzQkFBc0I7SUFIbkM7UUFJWSx1QkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQTZFM0Q7SUEzRUcsYUFBYSxDQUFDLElBQVU7UUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxNQUFN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LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDYXJkVmlld0RhdGVJdGVtTW9kZWwsIENhcmRWaWV3SXRlbU1hdGNoVmFsaWRhdG9yLCBDYXJkVmlld1RleHRJdGVtTW9kZWwsIEZpbGVTaXplUGlwZSwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNpY1Byb3BlcnRpZXNTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gICAgZ2V0UHJvcGVydGllcyhub2RlOiBOb2RlKSB7XG4gICAgICAgIGNvbnN0IHNpemVJbkJ5dGVzID0gbm9kZS5jb250ZW50ID8gbm9kZS5jb250ZW50LnNpemVJbkJ5dGVzIDogJyc7XG4gICAgICAgIGNvbnN0IG1pbWVUeXBlTmFtZSA9IG5vZGUuY29udGVudCA/IG5vZGUuY29udGVudC5taW1lVHlwZU5hbWUgOiAnJztcbiAgICAgICAgY29uc3QgYXV0aG9yID0gbm9kZS5wcm9wZXJ0aWVzID8gbm9kZS5wcm9wZXJ0aWVzWydjbTphdXRob3InXSA6ICcnO1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IG5vZGUucHJvcGVydGllcyA/IG5vZGUucHJvcGVydGllc1snY206ZGVzY3JpcHRpb24nXSA6ICcnO1xuICAgICAgICBjb25zdCB0aXRsZSA9IG5vZGUucHJvcGVydGllcyA/IG5vZGUucHJvcGVydGllc1snY206dGl0bGUnXSA6ICcnO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQ2FyZFZpZXdUZXh0SXRlbU1vZGVsKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0NPUkUuTUVUQURBVEEuQkFTSUMuTkFNRScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5vZGUubmFtZSxcbiAgICAgICAgICAgICAgICBrZXk6ICdwcm9wZXJ0aWVzLmNtOm5hbWUnLFxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtuZXcgQ2FyZFZpZXdJdGVtTWF0Y2hWYWxpZGF0b3IoJ1tcXFxcL1xcXFwqXFxcXFxcXFxcIlxcXFxcXFxcOnw/PD5dJyldXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDYXJkVmlld1RleHRJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ09SRS5NRVRBREFUQS5CQVNJQy5USVRMRScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRpdGxlLFxuICAgICAgICAgICAgICAgIGtleTogJ3Byb3BlcnRpZXMuY206dGl0bGUnLFxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDYXJkVmlld1RleHRJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ09SRS5NRVRBREFUQS5CQVNJQy5DUkVBVE9SJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbm9kZS5jcmVhdGVkQnlVc2VyLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgICAgIGtleTogJ2NyZWF0ZWRCeVVzZXIuZGlzcGxheU5hbWUnLFxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ2FyZFZpZXdEYXRlSXRlbU1vZGVsKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0NPUkUuTUVUQURBVEEuQkFTSUMuQ1JFQVRFRF9EQVRFJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbm9kZS5jcmVhdGVkQXQsXG4gICAgICAgICAgICAgICAga2V5OiAnY3JlYXRlZEF0JyxcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiAnbWVkaXVtRGF0ZSdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDT1JFLk1FVEFEQVRBLkJBU0lDLlNJWkUnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBzaXplSW5CeXRlcyxcbiAgICAgICAgICAgICAgICBrZXk6ICdjb250ZW50LnNpemVJbkJ5dGVzJyxcbiAgICAgICAgICAgICAgICBwaXBlczogW3sgcGlwZTogbmV3IEZpbGVTaXplUGlwZSh0aGlzLnRyYW5zbGF0aW9uU2VydmljZSkgfV0sXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBDYXJkVmlld1RleHRJdGVtTW9kZWwoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ09SRS5NRVRBREFUQS5CQVNJQy5NT0RJRklFUicsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5vZGUubW9kaWZpZWRCeVVzZXIuZGlzcGxheU5hbWUsXG4gICAgICAgICAgICAgICAga2V5OiAnbW9kaWZpZWRCeVVzZXIuZGlzcGxheU5hbWUnLFxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQ2FyZFZpZXdEYXRlSXRlbU1vZGVsKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0NPUkUuTUVUQURBVEEuQkFTSUMuTU9ESUZJRURfREFURScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5vZGUubW9kaWZpZWRBdCxcbiAgICAgICAgICAgICAgICBrZXk6ICdtb2RpZmllZEF0JyxcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiAnbWVkaXVtRGF0ZSdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDT1JFLk1FVEFEQVRBLkJBU0lDLk1JTUVUWVBFJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbWltZVR5cGVOYW1lLFxuICAgICAgICAgICAgICAgIGtleTogJ2NvbnRlbnQubWltZVR5cGVOYW1lJyxcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDT1JFLk1FVEFEQVRBLkJBU0lDLkFVVEhPUicsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGF1dGhvcixcbiAgICAgICAgICAgICAgICBrZXk6ICdwcm9wZXJ0aWVzLmNtOmF1dGhvcicsXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IENhcmRWaWV3VGV4dEl0ZW1Nb2RlbCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdDT1JFLk1FVEFEQVRBLkJBU0lDLkRFU0NSSVBUSU9OJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAga2V5OiAncHJvcGVydGllcy5jbTpkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgbXVsdGlsaW5lOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cbn1cbiJdfQ==