Skip to content

Commit

Permalink
feat(metadata): add metadata to csv/excel exports
Browse files Browse the repository at this point in the history
  • Loading branch information
cberthou committed Oct 25, 2022
1 parent 10058f0 commit 9cfac2d
Show file tree
Hide file tree
Showing 18 changed files with 127 additions and 404 deletions.
2 changes: 1 addition & 1 deletion src/common/utils/object.ts
Expand Up @@ -43,4 +43,4 @@ export const copy = <T extends SimpleObject>(a: T): T => ({ ...a });
/**
* To use instead of `object` or `{}`.
*/
export type SimpleObject = Record<string, unknown>;
export type SimpleObject<T = unknown> = Record<string, T | undefined>;
Expand Up @@ -13,7 +13,8 @@ export interface SedaPropertySelectorProps {
}

const isSedaField = (value: unknown): value is SedaField =>
typeof value === "string" && (sedaFields as string[]).includes(value);
// @ts-expect-error type assertion
typeof value === "string" && sedaFields.includes(value);

export const SedaPropertySelector: FC<SedaPropertySelectorProps> = ({
onChange,
Expand Down
117 changes: 0 additions & 117 deletions src/renderer/exporters/csv/csv-exporter-serializer.ts

This file was deleted.

7 changes: 6 additions & 1 deletion src/renderer/exporters/csv/csv-exporter-types.ts
Expand Up @@ -6,14 +6,19 @@ import type {
FilesAndFoldersMap,
} from "../../reducers/files-and-folders/files-and-folders-types";
import type { FilesAndFoldersMetadataMap } from "../../reducers/files-and-folders-metadata/files-and-folders-metadata-types";
import type { MetadataByEntity } from "../../reducers/metadata/metadata-types";
import type { SedaMetadataMapping } from "../../reducers/seda-configuration/seda-configuration-type";
import type { TagMap } from "../../reducers/tags/tags-types";

export interface CsvExporterData {
export interface CsvExportData {
aliases: AliasMap;
comments: CommentsMap;
elementsToDelete: string[];
filesAndFolders: FilesAndFoldersMap;
filesAndFoldersMetadata: FilesAndFoldersMetadataMap;
hashes?: HashesMap;
metadata: MetadataByEntity;
metadataKeys: string[];
sedaMapping: SedaMetadataMapping;
tags: TagMap;
}
21 changes: 2 additions & 19 deletions src/renderer/exporters/csv/csv-exporter.controller.ts
@@ -1,32 +1,15 @@
import { arrayToCsv } from "@common/utils/csv";
import type { HashesMap } from "@common/utils/hashes-types";
import type { Observable } from "rxjs";

import type {
AliasMap,
CommentsMap,
FilesAndFoldersMap,
} from "../../reducers/files-and-folders/files-and-folders-types";
import type { FilesAndFoldersMetadataMap } from "../../reducers/files-and-folders-metadata/files-and-folders-metadata-types";
import type { TagMap } from "../../reducers/tags/tags-types";
import { generateArrayExport$ } from "../../utils/array-export/array-export";
import type { ResultMessage } from "../../utils/batch-process/types";

export interface GenerateCsvExportOptions {
aliases: AliasMap;
comments: CommentsMap;
elementsToDelete?: string[];
filesAndFolders: FilesAndFoldersMap;
filesAndFoldersMetadata: FilesAndFoldersMetadataMap;
hashes?: HashesMap;
tags: TagMap;
}
import type { CsvExportData } from "./csv-exporter-types";

/**
* Asynchronously generates a csv export
* @param data
* @returns an observable that emits each time a file is computed and emits the export string as the last value
*/
export const generateCsvExport$ = (
data: GenerateCsvExportOptions
data: CsvExportData
): Observable<ResultMessage> => generateArrayExport$(data, arrayToCsv);
4 changes: 2 additions & 2 deletions src/renderer/exporters/csv/csv-exporter.ts
Expand Up @@ -3,8 +3,8 @@ import { translations } from "../../translations/translations";
import { getCsvExportParamsFromStore } from "../../utils/array-export";
import { handleFileExportThunk } from "../../utils/export";
import { notifyInfo } from "../../utils/notifications";
import type { GenerateCsvExportOptions } from "./csv-exporter.controller";
import { generateCsvExport$ } from "./csv-exporter.controller";
import type { CsvExportData } from "./csv-exporter-types";

/**
* Thunk that generates the csv array for the CSV export with the first line being
Expand All @@ -22,7 +22,7 @@ export const csvExporterThunk =

const exportData = getCsvExportParamsFromStore(getState());

const data: GenerateCsvExportOptions = {
const data: CsvExportData = {
...exportData,
};

Expand Down
88 changes: 0 additions & 88 deletions src/renderer/exporters/csv/tree-csv-exporter-serializer.ts

This file was deleted.

4 changes: 2 additions & 2 deletions src/renderer/exporters/excel/excel-exporter-controller.ts
Expand Up @@ -12,7 +12,7 @@ import type {
} from "../../utils/batch-process/types";
import { MessageTypes } from "../../utils/batch-process/types";
import { computeTreeStructureArray } from "../../utils/tree-representation";
import type { CsvExporterData } from "../csv/csv-exporter-types";
import type { CsvExportData } from "../csv/csv-exporter-types";
import type { CreateExcelWorkbookParams } from "./excel-exporter-common";
import {
CSV_EXPORT_PROGRESS_WEIGHT,
Expand Down Expand Up @@ -40,7 +40,7 @@ const createExcelWorkbook = (
};

export const generateExcelExport$ = (
data: CsvExporterData
data: CsvExportData
): Observable<ErrorMessage | ResultMessage> => {
return new Observable<ErrorMessage | ResultMessage>((subscriber) => {
const translator = translations.t.bind(translations);
Expand Down
8 changes: 5 additions & 3 deletions src/renderer/exporters/resip/resip-export.controller.ts
Expand Up @@ -7,8 +7,10 @@ import type {
FilesAndFoldersMap,
} from "../../reducers/files-and-folders/files-and-folders-types";
import type { FilesAndFoldersMetadataMap } from "../../reducers/files-and-folders-metadata/files-and-folders-metadata-types";
import type { Metadata } from "../../reducers/metadata/metadata-types";
import type { ActiveSedaFields } from "../../reducers/seda-configuration/seda-configuration-type";
import type {
ActiveSedaFields,
SedaMetadataMap,
} from "../../reducers/seda-configuration/seda-configuration-type";
import type { TagMap } from "../../reducers/tags/tags-types";
import { translations } from "../../translations/translations";
import { createAsyncWorkerForChildProcessControllerFactory } from "../../utils/async-worker/child-process";
Expand All @@ -29,7 +31,7 @@ interface GenerateResipExportOptions {
elementsToDelete: string[];
filesAndFolders: FilesAndFoldersMap;
filesAndFoldersMetadata: FilesAndFoldersMetadataMap;
sedaMetadata: Record<string, Metadata[]>;
sedaMetadata: SedaMetadataMap;
tags: TagMap;
}

Expand Down
9 changes: 7 additions & 2 deletions src/renderer/reducers/metadata/metadata-operations.ts
Expand Up @@ -4,6 +4,7 @@ import type {
EntityId,
EntityMetadataIndex,
Metadata,
MetadataByEntity,
MetadataContext,
MetadataDto,
MetadataId,
Expand Down Expand Up @@ -188,10 +189,14 @@ export const getMetadataByEntityId = (
.filter(isMetadata);
};

export const getMetadataList = (context: MetadataContext) => {
export const getMetadataList = (context: MetadataContext): Metadata[] => {
return uniqBy([...context.metadata.values()], "name");
};

export const getMetadataKeys = (context: MetadataContext): string[] => {
return getMetadataList(context).map(({ name }) => name);
};

export const deleteMetadata = (
context: MetadataContext,
metadata: Metadata
Expand Down Expand Up @@ -254,7 +259,7 @@ export const recordsToMetadata = (

export const getMetadataByEntity = (
context: MetadataContext
): Record<string, Metadata[]> => {
): MetadataByEntity => {
const metadataValues = [...context.metadata.values()];

return groupBy(metadataValues, "entity");
Expand Down
3 changes: 3 additions & 0 deletions src/renderer/reducers/metadata/metadata-types.ts
@@ -1,3 +1,4 @@
import type { SimpleObject } from "@common/utils/object";
import type { Action } from "redux";

export type MetadataId = number;
Expand Down Expand Up @@ -27,6 +28,8 @@ export interface SerializedMetadataContext {

export type MetadataDto = Omit<Metadata, "id">;

export type MetadataByEntity = SimpleObject<Metadata[]>;

/*
* Redux types
*/
Expand Down

0 comments on commit 9cfac2d

Please sign in to comment.