import getNodeParameters from 'utility/get-node-parameters';
import FieldTableTemplate from 'template/page/type-details/field-table';
import NodeDetailsTemplate from 'template/page/node-details';
class TypeDetailsTemplate extends NodeDetailsTemplate {
protected getContentHtml(): string {
const node_content_html = super.getContentHtml();
const instances_html = this.getInstancesHtml();
return `
${node_content_html}
Instances:
${instances_html}
`;
}
protected getFieldTableHtml(): string {
const fields = this.getFields();
const template = new FieldTableTemplate({
fields
});
return template.render();
}
protected getNodeLabel(): string {
return 'type';
}
private getInstancesHtml(): string {
if (!this.hasInstanceUrls()) {
return 'No instances found.';
}
const instance_urls = this.getInstanceUrls();
const serialized_instances = instance_urls.map((instance_url) => {
const parameters = getNodeParameters(instance_url);
const instance_id = parameters.id;
return `
${instance_id}
`;
});
const list_html = serialized_instances.join('\n');
return `
`;
}
private hasInstanceUrls(): boolean {
const instance_urls = this.getInstanceUrls();
return instance_urls.length > 0;
}
private getInstanceUrls(): string[] {
const node = this.getNode();
return node.instances as string[];
}
}
export default TypeDetailsTemplate;