Skip to content

Commit

Permalink
feat: Added support for common delimiter (#695)
Browse files Browse the repository at this point in the history
  • Loading branch information
chavda-bhavik authored Jul 16, 2024
2 parents f8788bd + d73229a commit 720d976
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -285,10 +285,15 @@ export class BaseReview {
if (typeof val === 'string') val = val.trim();
if (multiSelectColumnHeadings[heading]) {
if (val)
val = val.replace(
new RegExp(`^[${multiSelectColumnHeadings[heading]}]+|[${multiSelectColumnHeadings[heading]}]+$`, 'g'),
''
);
val = val
.replace(
new RegExp(`^[${multiSelectColumnHeadings[heading]}]+|[${multiSelectColumnHeadings[heading]}]+$`, 'g'),
''
)
.replace(
new RegExp(`[${multiSelectColumnHeadings[heading]}]{2,}`, 'g'),
multiSelectColumnHeadings[heading]
);
acc.checkRecord[heading] = !val ? [] : val.split(multiSelectColumnHeadings[heading]);
} else acc.checkRecord[heading] = val;

Expand Down
10 changes: 8 additions & 2 deletions apps/api/src/app/review/usecases/do-review/do-review.usecase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@ import { APIMessages } from '@shared/constants';
import { BaseReview } from './base-review.usecase';
import { BATCH_LIMIT } from '@shared/services/sandbox';
import { StorageService } from '@impler/shared/dist/services/storage';
import { PaymentAPIService, ColumnTypesEnum, UploadStatusEnum, ITemplateSchemaItem } from '@impler/shared';
import {
PaymentAPIService,
ColumnTypesEnum,
UploadStatusEnum,
ITemplateSchemaItem,
ColumnDelimiterEnum,
} from '@impler/shared';
import { UploadRepository, ValidatorRepository, FileRepository, DalService } from '@impler/dal';

interface ISaveResults {
Expand Down Expand Up @@ -48,7 +54,7 @@ export class DoReview extends BaseReview {
const numberColumnHeadings = new Set<string>();
(columns as ITemplateSchemaItem[]).forEach((column) => {
if (column.type === ColumnTypesEnum.SELECT && column.allowMultiSelect)
multiSelectColumnHeadings[column.key] = column.delimiter || ',';
multiSelectColumnHeadings[column.key] = column.delimiter || ColumnDelimiterEnum.COMMA;
if (column.type === ColumnTypesEnum.NUMBER || column.type === ColumnTypesEnum.DOUBLE)
numberColumnHeadings.add(column.key);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Writable } from 'stream';
import { ValidateFunction } from 'ajv';
import { Injectable, BadRequestException } from '@nestjs/common';

import { ColumnTypesEnum, ITemplateSchemaItem, UploadStatusEnum } from '@impler/shared';
import { ColumnDelimiterEnum, ColumnTypesEnum, ITemplateSchemaItem, UploadStatusEnum } from '@impler/shared';
import { UploadRepository, ValidatorRepository, DalService } from '@impler/dal';

import { APIMessages } from '@shared/constants';
Expand Down Expand Up @@ -67,7 +67,7 @@ export class DoReReview extends BaseReview {
const multiSelectColumnHeadings: Record<string, string> = {};
(columns as ITemplateSchemaItem[]).forEach((column) => {
if (column.type === ColumnTypesEnum.SELECT && column.allowMultiSelect)
multiSelectColumnHeadings[column.key] = column.delimiter || ',';
multiSelectColumnHeadings[column.key] = column.delimiter || ColumnDelimiterEnum.COMMA;
});

uniqueFieldData.forEach((item) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
UploadStatusEnum,
replaceVariablesInObject,
DestinationsEnum,
ColumnDelimiterEnum,
} from '@impler/shared';
import { QueueService } from '@shared/services/queue.service';
import { DalService, TemplateEntity, UploadRepository } from '@impler/dal';
Expand Down Expand Up @@ -76,7 +77,7 @@ export class StartProcess {
parsesdCustomSchema.forEach((item: ITemplateSchemaItem) => {
if (item.defaultValue) defaultValuesObj[item.key] = item.defaultValue;
if (item.type === ColumnTypesEnum.SELECT && item.allowMultiSelect)
multiSelectHeadings[item.key] = item.delimiter;
multiSelectHeadings[item.key] = item.delimiter || ColumnDelimiterEnum.COMMA;
});
}

Expand Down
6 changes: 4 additions & 2 deletions apps/api/src/app/shared/services/file/file.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cwd } from 'node:process';
import * as xlsxPopulate from 'xlsx-populate';
import { CONSTANTS } from '@shared/constants';
import { ParseConfig, parse } from 'papaparse';
import { ColumnTypesEnum, Defaults, FileEncodingsEnum } from '@impler/shared';
import { ColumnDelimiterEnum, ColumnTypesEnum, Defaults, FileEncodingsEnum } from '@impler/shared';
import { EmptyFileException } from '@shared/exceptions/empty-file.exception';
import { InvalidFileException } from '@shared/exceptions/invalid-file.exception';
import { IExcelFileHeading } from '@shared/types/file.types';
Expand Down Expand Up @@ -105,7 +105,9 @@ export class ExcelFileService {
const columnName = this.getExcelColumnNameFromIndex(index + 1);
const columnHeadingCellName = columnName + '1';
if (heading.type === ColumnTypesEnum.SELECT && heading.allowMultiSelect)
worksheet.cell(columnHeadingCellName).value(heading.key + '#MULTI' + '#' + (heading.delimiter || ','));
worksheet
.cell(columnHeadingCellName)
.value(heading.key + '#MULTI' + '#' + (heading.delimiter || ColumnDelimiterEnum.COMMA));
else worksheet.cell(columnHeadingCellName).value(heading.key);
worksheet.column(columnName).style('numberFormat', '@');
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Injectable } from '@nestjs/common';
import { ColumnTypesEnum, FileNameService, FileMimeTypesEnum } from '@impler/shared';
import { ColumnTypesEnum, FileNameService, FileMimeTypesEnum, ColumnDelimiterEnum } from '@impler/shared';
import { StorageService } from '@impler/shared/dist/services/storage';
import { ColumnEntity, TemplateRepository } from '@impler/dal';
import { IExcelFileHeading } from '@shared/types/file.types';
Expand All @@ -21,7 +21,7 @@ export class SaveSampleFile {
type: columnItem.type as ColumnTypesEnum,
selectValues: columnItem.selectValues,
isFrozen: columnItem.isFrozen,
delimiter: columnItem.delimiter,
delimiter: columnItem.delimiter || ColumnDelimiterEnum.COMMA,
isRequired: columnItem.isRequired,
dateFormats: columnItem.dateFormats,
allowMultiSelect: columnItem.allowMultiSelect,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
ITemplateSchemaItem,
ColumnTypesEnum,
getRecordFormat,
ColumnDelimiterEnum,
} from '@impler/shared';
import {
ColumnRepository,
Expand Down Expand Up @@ -98,7 +99,7 @@ export class MakeUploadEntry {
dateFormats: Array.isArray(schemaItem.dateFormats)
? schemaItem.dateFormats.map((format) => format.toUpperCase())
: Defaults.DATE_FORMATS,
delimiter: schemaItem.delimiter,
delimiter: schemaItem.delimiter || ColumnDelimiterEnum.COMMA,
isUnique: schemaItem.isUnique || false,
defaultValue: schemaItem.defaultValue,
allowMultiSelect: schemaItem.allowMultiSelect,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
FileNameService,
ITemplateSchemaItem,
ColumnTypesEnum,
ColumnDelimiterEnum,
} from '@impler/shared';
import { StorageService } from '@impler/shared/dist/services/storage';
import {
Expand Down Expand Up @@ -172,7 +173,7 @@ export class SendWebhookDataConsumer extends BaseConsumer {
customSchema.forEach((item: ITemplateSchemaItem) => {
if (item.defaultValue) defaultValueObj[item.key] = item.defaultValue;
if (item.type === ColumnTypesEnum.SELECT && item.allowMultiSelect)
multiSelectHeadings[item.key] = item.delimiter || ',';
multiSelectHeadings[item.key] = item.delimiter || ColumnDelimiterEnum.COMMA;
});
}

Expand Down
3 changes: 2 additions & 1 deletion apps/widget/src/hooks/Phase3/usePhase3.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
IRecord,
ReviewDataTypesEnum,
numberFormatter,
ColumnDelimiterEnum,
} from '@impler/shared';
import { SelectEditor } from './SelectEditor';
import { MultiSelectEditor } from './MultiSelectEditor';
Expand Down Expand Up @@ -92,7 +93,7 @@ export function usePhase3({ onNext }: IUsePhase3Props) {
case ColumnTypesEnum.SELECT:
columnItem.type = 'text';
columnItem.renderer = 'custom';
columnItem.delimiter = column.delimiter || ',';
columnItem.delimiter = column.delimiter || ColumnDelimiterEnum.COMMA;
columnItem.selectOptions = column.selectValues;
columnItem.editor = column.allowMultiSelect ? MultiSelectEditor : SelectEditor;
break;
Expand Down

0 comments on commit 720d976

Please sign in to comment.