36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import {Injectable} from '@angular/core';
|
|
|
|
@Injectable({providedIn: 'root'})
|
|
export class FormFieldsService {
|
|
prepareGroup(group: any, params: any) {
|
|
let hiddenGroups = params.hidden?.groups || [];
|
|
let readonlyGroups = params.readonly?.groups || [];
|
|
if (params.hideGroupsTitles) group.title = null;
|
|
if (hiddenGroups.indexOf(group.name) !== -1) group.hidden = true;
|
|
if (readonlyGroups.indexOf(group.name) !== -1) group.readonly = true;
|
|
group.fields.data = group.fields?.data.map(field => {
|
|
return this.prepareField(field, params);
|
|
});
|
|
return group;
|
|
}
|
|
|
|
prepareField(field: any, params: any) {
|
|
let hiddenFields = params.hidden?.fields || [];
|
|
let readonlyFields = params.readonly?.fields || [];
|
|
let fieldTypes = params.fieldTypes || [];
|
|
if (fieldTypes.length && (fieldTypes.indexOf(field.type) === -1)) field.hidden = true;
|
|
if (hiddenFields.indexOf(field.name) !== -1) field.hidden = true;
|
|
if (readonlyFields.indexOf(field.name) !== -1) field.readonly = true;
|
|
return field;
|
|
}
|
|
|
|
prepareFieldValue(field: any) {
|
|
let result = field.value?.data || field.value || [];
|
|
if (result.data !== undefined) result = result.data;
|
|
if (!Array.isArray(result)) result = ((result !== null) && (result !== undefined)) ? [result] : [];
|
|
return result;
|
|
}
|
|
|
|
|
|
}
|