Spaces:
Running
Running
File size: 2,510 Bytes
372531f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import React from 'react';
import {getHost} from '../../helpers/getHost'
interface AccessReportProps {
accessData: {
pdf?: string;
docx?: string;
json?: string;
};
chatBoxSettings: {
report_type?: string;
};
report: string;
}
const AccessReport: React.FC<AccessReportProps> = ({ accessData, chatBoxSettings, report }) => {
const host = getHost();
const getReportLink = (dataType: 'pdf' | 'docx' | 'json'): string => {
// Early return if path is not available
if (!accessData?.[dataType]) {
console.warn(`No ${dataType} path provided`);
return '#';
}
const path = accessData[dataType] as string;
// Clean the path - remove leading/trailing slashes and handle outputs/ prefix
const cleanPath = path
.trim()
.replace(/^\/+|\/+$/g, ''); // Remove leading/trailing slashes
// Only prepend outputs/ if it's not already there
const finalPath = cleanPath.startsWith('outputs/')
? cleanPath
: `outputs/${cleanPath}`;
return `${host}/${finalPath}`;
};
// Safety check for accessData
if (!accessData || typeof accessData !== 'object') {
return null;
}
return (
<div className="flex justify-center mt-4">
<a
href={getReportLink('pdf')}
className="bg-purple-500 text-white active:bg-purple-600 font-bold uppercase text-sm px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150"
target="_blank"
rel="noopener noreferrer">
View as PDF
</a>
<a
href={getReportLink('docx')}
className="bg-purple-500 text-white active:bg-purple-600 font-bold uppercase text-sm px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150"
target="_blank"
rel="noopener noreferrer">
Download DocX
</a>
{chatBoxSettings?.report_type === 'research_report' && (
<a
href={getReportLink('json')}
className="bg-purple-500 text-white active:bg-purple-600 font-bold uppercase text-sm px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150"
target="_blank"
rel="noopener noreferrer">
Download Logs
</a>
)}
</div>
);
};
export default AccessReport; |