import React from 'react';
import { isEmpty } from 'lodash';
import { Icon } from 'patternfly-react';
import IconInfoItem from './IconInfoItem';
import EmptyInfoItem from './EmptyInfoItem';
import StringInfoItem from './StringInfoItem';
import LinkInfoItem from './LinkInfoItem';
export const itemIteratorId = (template, ...rest) =>
`${template.templateFile}-${rest.join('-')}`;
export const additionalInfo = (template, editPath) => {
const infoAttrs = [
'name',
'locked',
'snippet',
'humanizedClassName',
'kind',
'templateFile',
];
return infoAttrs.map(attr => {
const key = itemIteratorId(template, attr);
const classNameMap = { Ptable: 'Partition Table' };
if (!template[attr]) {
return ;
}
switch (attr) {
case 'locked':
return (
);
case 'snippet':
return (
);
case 'humanizedClassName':
return (
classNameMap[templateObj[attribute]]
? classNameMap[templateObj[attribute]]
: templateObj[attribute]
}
key={key}
/>
);
case 'kind':
return ;
case 'templateFile':
return (
);
case 'name':
return (
);
default:
return '';
}
});
};
export const itemLeftContentIcon = template => {
let iconName = template.additionalInfo ? 'warning-triangle-o' : undefined;
if (!iconName) {
iconName = isEmpty(aggregatedErrors(template)) ? 'ok' : 'error-circle-o';
}
return ;
};
export const expandableContent = template => {
if (Object.keys(aggregatedMessages(template)).length !== 0) {
const msgs = aggregatedMessages(template);
const res = Object.keys(msgs).map(key => {
const errorMsgs = aggregatedMessages(template)[key];
return errorMsgs.map((errValue, idx) => (
{formatError(key, errValue)}
));
});
return ;
}
return There were no errors.;
};
const aggregatedErrors = template => {
const err = { ...template.errors } || {};
if (template.additionalErrors) {
err.additional = [template.additionalErrors];
}
return err;
};
const aggregatedMessages = template => {
const errors = aggregatedErrors(template);
if (template.additionalInfo) {
errors.info = [template.additionalInfo];
}
return errors;
};
const formatError = (key, value) => {
const omitKeys = ['base', 'additional', 'info'];
if (omitKeys.includes(key)) {
return value;
}
return `${key}: ${value}`;
};