import Template from 'template'; import PermissionNode from 'type/node/permission'; import getNodeParameters from 'utility/get-node-parameters'; interface Input { readonly permissions: PermissionNode[]; } class PermissionsTableTemplate extends Template { protected getHtml(): string { if (!this.hasPermissions()) { return this.getEmptyHtml(); } const permission_rows_html = this.getPermissionRowsHtml(); return ` ${permission_rows_html}
Group Action type
`; } private getEmptyHtml(): string { return ` No permissions set. `; } private getPermissionRowsHtml(): string { const permissions = this.getPermissions(); const permission_rows = permissions.map((permission) => { return this.serializePermission(permission); }); return permission_rows.join('\n'); } private serializePermission(permission: PermissionNode): string { const group_url = permission.group; const parameters = getNodeParameters(group_url); const group_id = parameters.id; const action_type = permission.action_type; return ` ${group_id} ${action_type} `; } private hasPermissions(): boolean { const permissions = this.getPermissions(); return permissions.length > 0; } private getPermissions(): PermissionNode[] { const input = this.getInput(); return input.permissions; } } export default PermissionsTableTemplate;