Skip to content

Commit

Permalink
[REFACTORING]: refactored VitalityDataExportUtils
Browse files Browse the repository at this point in the history
  • Loading branch information
Olga Yasnopolskaya committed Jan 28, 2025
1 parent 68f1fd8 commit 0e786f0
Showing 1 changed file with 21 additions and 83 deletions.
104 changes: 21 additions & 83 deletions v6y-apps/front/src/commons/utils/VitalityDataExportUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ import FileSaver from 'file-saver';
import { json2csv } from 'json-2-csv';
import { Json2CsvOptions } from 'json-2-csv/lib/types';

interface ExportDataToCSVProps {
data: ApplicationType[] | KeywordType[] | EvolutionType[] | DependencyType[] | AuditType[];
baseName: string;
}

const EXPORT_CSV_OPTIONS: Json2CsvOptions = {
delimiter: {
field: ';',
Expand All @@ -25,98 +30,31 @@ const buildCSVFileName = (baseName: string) => {
return `${baseName}_${year}_${month}_${day}.csv`;
};

export const exportAppListDataToCSV = (appList: ApplicationType[]) => {
try {
if (!appList?.length) {
return false;
}

const csvData = json2csv(appList, EXPORT_CSV_OPTIONS);
const csvBlob = new Blob([csvData], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(csvBlob, buildCSVFileName('VitalityAppList'));

return true;
} catch {
return false;
}
};

export const exportAppDetailsDataToCSV = (appDetails: ApplicationType) => {
try {
if (!appDetails) {
return false;
}

const csvData = json2csv([appDetails], EXPORT_CSV_OPTIONS);
const csvBlob = new Blob([csvData], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(csvBlob, buildCSVFileName('VitalityAppDetails'));

return true;
} catch {
return false;
}
};

export const exportAppQualityIndicatorsToCSV = (indicators: KeywordType[]) => {
try {
if (!indicators?.length) {
return false;
}

const csvData = json2csv(indicators, EXPORT_CSV_OPTIONS);
const csvBlob = new Blob([csvData], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(csvBlob, buildCSVFileName('VitalityAppDetails'));

return true;
} catch {
return false;
}
};

export const exportAppEvolutionsToCSV = (evolutions: EvolutionType[]) => {
try {
if (!evolutions?.length) {
return false;
}

const csvData = json2csv(evolutions, EXPORT_CSV_OPTIONS);
const csvBlob = new Blob([csvData], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(csvBlob, buildCSVFileName('VitalityAppDetails'));

return true;
} catch {
return false;
}
};

export const exportAppDependenciesToCSV = (dependencies: DependencyType[]) => {
const exportDataToCSV = ({ data, baseName }: ExportDataToCSVProps): boolean => {
try {
if (!dependencies?.length) {
if (!data?.length) {
return false;
}

const csvData = json2csv(dependencies, EXPORT_CSV_OPTIONS);
const csvData = json2csv(data, EXPORT_CSV_OPTIONS);
const csvBlob = new Blob([csvData], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(csvBlob, buildCSVFileName('VitalityAppDetails'));
FileSaver.saveAs(csvBlob, buildCSVFileName(baseName));

return true;
} catch {
return false;
}
};

export const exportAppAuditReportsToCSV = (auditReports: AuditType[]) => {
try {
if (!auditReports?.length) {
return false;
}

const csvData = json2csv(auditReports, EXPORT_CSV_OPTIONS);
const csvBlob = new Blob([csvData], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(csvBlob, buildCSVFileName('VitalityAppDetails'));

return true;
} catch {
return false;
}
};
export const exportAppListDataToCSV = (appList: ApplicationType[]) =>
exportDataToCSV({ data: appList, baseName: 'VitalityAppList' });
export const exportAppDetailsDataToCSV = (appDetails: ApplicationType) =>
exportDataToCSV({ data: [appDetails], baseName: 'VitalityAppDetails' });
export const exportAppQualityIndicatorsToCSV = (indicators: KeywordType[]) =>
exportDataToCSV({ data: indicators, baseName: 'VitalityAppQualityIndicators' });
export const exportAppEvolutionsToCSV = (evolutions: EvolutionType[]) =>
exportDataToCSV({ data: evolutions, baseName: 'VitalityAppEvolutions' });
export const exportAppDependenciesToCSV = (dependencies: DependencyType[]) =>
exportDataToCSV({ data: dependencies, baseName: 'VitalityAppDependencies' });
export const exportAppAuditReportsToCSV = (auditReports: AuditType[]) =>
exportDataToCSV({ data: auditReports, baseName: 'VitalityAppAuditReports' });

0 comments on commit 0e786f0

Please sign in to comment.