diff --git a/pkg/converters/dsv/custom_transaction_data_dsv_file_importer.go b/pkg/converters/dsv/custom_transaction_data_dsv_file_importer.go index 330232b1..49a629e2 100644 --- a/pkg/converters/dsv/custom_transaction_data_dsv_file_importer.go +++ b/pkg/converters/dsv/custom_transaction_data_dsv_file_importer.go @@ -29,6 +29,7 @@ import ( var supportedFileTypeSeparators = map[string]rune{ "custom_csv": ',', "custom_tsv": '\t', + "custom_ssv": ';', } var supportedFileEncodings = map[string]encoding.Encoding{ diff --git a/pkg/converters/dsv/custom_transaction_data_dsv_file_importer_test.go b/pkg/converters/dsv/custom_transaction_data_dsv_file_importer_test.go index 9092edea..ee7a6f25 100644 --- a/pkg/converters/dsv/custom_transaction_data_dsv_file_importer_test.go +++ b/pkg/converters/dsv/custom_transaction_data_dsv_file_importer_test.go @@ -17,10 +17,12 @@ import ( func TestIsDelimiterSeparatedValuesFileType(t *testing.T) { assert.True(t, IsDelimiterSeparatedValuesFileType("custom_csv")) assert.True(t, IsDelimiterSeparatedValuesFileType("custom_tsv")) + assert.True(t, IsDelimiterSeparatedValuesFileType("custom_ssv")) assert.False(t, IsDelimiterSeparatedValuesFileType("dsv")) assert.False(t, IsDelimiterSeparatedValuesFileType("csv")) assert.False(t, IsDelimiterSeparatedValuesFileType("tsv")) + assert.False(t, IsDelimiterSeparatedValuesFileType("ssv")) } func TestCustomTransactionDataDsvFileParser_ParseDsvFileLines(t *testing.T) { @@ -65,6 +67,26 @@ func TestCustomTransactionDataDsvFileParser_ParseDsvFileLines(t *testing.T) { assert.Equal(t, "2024-09-01 23:59:59", allLines[1][0]) assert.Equal(t, "T", allLines[1][1]) assert.Equal(t, "0.05", allLines[1][2]) + + importer, err = CreateNewCustomTransactionDataDsvFileParser("custom_ssv", "utf-8") + assert.Nil(t, err) + + allLines, err = importer.ParseDsvFileLines(context, []byte( + "2024-09-01 12:34:56;E;1.00\n"+ + "2024-09-01 23:59:59;T;0.05")) + assert.Nil(t, err) + + assert.Equal(t, 2, len(allLines)) + + assert.Equal(t, 3, len(allLines[0])) + assert.Equal(t, "2024-09-01 12:34:56", allLines[0][0]) + assert.Equal(t, "E", allLines[0][1]) + assert.Equal(t, "1.00", allLines[0][2]) + + assert.Equal(t, 3, len(allLines[1])) + assert.Equal(t, "2024-09-01 23:59:59", allLines[1][0]) + assert.Equal(t, "T", allLines[1][1]) + assert.Equal(t, "0.05", allLines[1][2]) } func TestCustomTransactionDataDsvFileImporter_MinimumValidData(t *testing.T) { diff --git a/src/consts/file.ts b/src/consts/file.ts index 5a1f53f0..dbf2d6cb 100644 --- a/src/consts/file.ts +++ b/src/consts/file.ts @@ -141,6 +141,11 @@ export const SUPPORTED_IMPORT_FILE_CATEGORY_AND_TYPES: ImportFileCategoryAndType type: 'custom_tsv', name: 'TSV (Tab-separated values) File', extensions: '.tsv,.txt', + }, + { + type: 'custom_ssv', + name: 'SSV (Semicolon-separated values) File', + extensions: '.txt', } ], supportedEncodings: SUPPORTED_FILE_ENCODINGS, @@ -163,6 +168,11 @@ export const SUPPORTED_IMPORT_FILE_CATEGORY_AND_TYPES: ImportFileCategoryAndType type: 'custom_tsv', name: 'TSV (Tab-separated values) File', extensions: '.tsv,.txt', + }, + { + type: 'custom_ssv', + name: 'SSV (Semicolon-separated values) File', + extensions: '.txt', } ], dataFromTextbox: true, diff --git a/src/locales/de.json b/src/locales/de.json index 55a2f355..b42b0864 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -2292,6 +2292,7 @@ "File Format": "File Format", "CSV (Comma-separated values) File": "CSV (Kommagetrennte Werte) Datei", "TSV (Tab-separated values) File": "TSV (Tabulatorgetrennte Werte) Datei", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File", "Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File", "Markdown File": "Markdown File", diff --git a/src/locales/en.json b/src/locales/en.json index 5aa79c23..91862c2a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -2292,6 +2292,7 @@ "File Format": "File Format", "CSV (Comma-separated values) File": "CSV (Comma-separated values) File", "TSV (Tab-separated values) File": "TSV (Tab-separated values) File", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File", "Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File", "Markdown File": "Markdown File", diff --git a/src/locales/es.json b/src/locales/es.json index 6157a442..7671780c 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -2292,6 +2292,7 @@ "File Format": "Formato de Archivo", "CSV (Comma-separated values) File": "Archivo CSV (valores separados por comas)", "TSV (Tab-separated values) File": "Archivo TSV (valores separados por tabulaciones)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Exportar a archivo CSV (Valores Separados por Comas)", "Export to TSV (Tab-separated values) File": "Exportar a archivo TSV (Valores Separados por Tabulaciones)", "Markdown File": "Archivo Markdown", diff --git a/src/locales/fr.json b/src/locales/fr.json index c460d684..bbfcb18b 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -2292,6 +2292,7 @@ "File Format": "Format de fichier", "CSV (Comma-separated values) File": "Fichier CSV (valeurs séparées par virgules)", "TSV (Tab-separated values) File": "Fichier TSV (valeurs séparées par tabulations)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Exporter vers un fichier CSV (valeurs séparées par virgules)", "Export to TSV (Tab-separated values) File": "Exporter vers un fichier TSV (valeurs séparées par tabulations)", "Markdown File": "Fichier Markdown", diff --git a/src/locales/it.json b/src/locales/it.json index c23b305f..e4221a9b 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -2292,6 +2292,7 @@ "File Format": "File Format", "CSV (Comma-separated values) File": "File CSV (valori separati da virgola)", "TSV (Tab-separated values) File": "File TSV (valori separati da tabulazione)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File", "Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File", "Markdown File": "Markdown File", diff --git a/src/locales/ja.json b/src/locales/ja.json index 6f379407..c6a4be26 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -2292,6 +2292,7 @@ "File Format": "File Format", "CSV (Comma-separated values) File": "CSV(コンマ区切り)ファイル", "TSV (Tab-separated values) File": "TSV(タブ区切り)ファイル", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File", "Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File", "Markdown File": "Markdown File", diff --git a/src/locales/kn.json b/src/locales/kn.json index 4b5f1063..62f2d3eb 100644 --- a/src/locales/kn.json +++ b/src/locales/kn.json @@ -2292,6 +2292,7 @@ "File Format": "ಫೈಲ್ ಫಾರ್ಮ್ಯಾಟ್", "CSV (Comma-separated values) File": "CSV (ಕಾಮಾ-ಪ್ರತ್ಯೇಕಿತ ಮೌಲ್ಯಗಳು) ಫೈಲ್", "TSV (Tab-separated values) File": "TSV (ಟ್ಯಾಬ್-ಪ್ರತ್ಯೇಕಿತ ಮೌಲ್ಯಗಳು) ಫೈಲ್", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "CSV (ಕಾಮಾ-ಪ್ರತ್ಯೇಕಿತ ಮೌಲ್ಯಗಳು) ಫೈಲ್‌ಗೆ ರಫ್ತು ಮಾಡಿ", "Export to TSV (Tab-separated values) File": "TSV (ಟ್ಯಾಬ್-ಪ್ರತ್ಯೇಕಿತ ಮೌಲ್ಯಗಳು) ಫೈಲ್‌ಗೆ ರಫ್ತು ಮಾಡಿ", "Markdown File": "Markdown ಫೈಲ್", diff --git a/src/locales/ko.json b/src/locales/ko.json index 058a0731..80ac30c5 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -2292,6 +2292,7 @@ "File Format": "파일 형식", "CSV (Comma-separated values) File": "CSV (쉼표로 구분된 값) 파일", "TSV (Tab-separated values) File": "TSV (탭으로 구분된 값) 파일", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "CSV (쉼표로 구분된 값) 파일로 내보내기", "Export to TSV (Tab-separated values) File": "TSV (탭으로 구분된 값) 파일로 내보내기", "Markdown File": "Markdown 파일", diff --git a/src/locales/nl.json b/src/locales/nl.json index 5faf3f92..9e2bf633 100644 --- a/src/locales/nl.json +++ b/src/locales/nl.json @@ -2292,6 +2292,7 @@ "File Format": "Bestandsformaat", "CSV (Comma-separated values) File": "CSV-bestand (komma-gescheiden waarden)", "TSV (Tab-separated values) File": "TSV-bestand (tab-gescheiden waarden)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Exporteren naar CSV-bestand (komma-gescheiden waarden)", "Export to TSV (Tab-separated values) File": "Exporteren naar TSV-bestand (tab-gescheiden waarden)", "Markdown File": "Markdown-bestand", diff --git a/src/locales/pt_BR.json b/src/locales/pt_BR.json index 0428b4fd..20f95185 100644 --- a/src/locales/pt_BR.json +++ b/src/locales/pt_BR.json @@ -2292,6 +2292,7 @@ "File Format": "Formato de Arquivo", "CSV (Comma-separated values) File": "Arquivo CSV (Valores separados por vírgulas)", "TSV (Tab-separated values) File": "Arquivo TSV (Valores separados por tabulações)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File", "Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File", "Markdown File": "Arquivo Markdown", diff --git a/src/locales/ru.json b/src/locales/ru.json index 08eee904..0b59c8c6 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -2292,6 +2292,7 @@ "File Format": "File Format", "CSV (Comma-separated values) File": "Файл CSV (значения, разделенные запятыми)", "TSV (Tab-separated values) File": "Файл TSV (значения, разделенные табуляцией)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File", "Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File", "Markdown File": "Markdown File", diff --git a/src/locales/sl.json b/src/locales/sl.json index 66ce41ac..b9ff3b04 100644 --- a/src/locales/sl.json +++ b/src/locales/sl.json @@ -2292,6 +2292,7 @@ "File Format": "Format datoteke", "CSV (Comma-separated values) File": "CSV datoteka", "TSV (Tab-separated values) File": "TSV datoteka", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Izvozi v CSV datoteko", "Export to TSV (Tab-separated values) File": "Izvozi v TSV datoteko", "Markdown File": "Markdown datoteka", diff --git a/src/locales/ta.json b/src/locales/ta.json index 26b47a35..a27be5b6 100644 --- a/src/locales/ta.json +++ b/src/locales/ta.json @@ -2292,6 +2292,7 @@ "File Format": "கோப்பு வடிவம்", "CSV (Comma-separated values) File": "CSV (காற்புள்ளி-தனிப்பட்ட மதிப்புகள்) கோப்பு", "TSV (Tab-separated values) File": "TSV (தாவல்-தனிப்பட்ட மதிப்புகள்) கோப்பு", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "CSV (காற்புள்ளி-தனிப்பட்ட மதிப்புகள்) கோப்பு‌க்கு ஏற்றுமதி செய்", "Export to TSV (Tab-separated values) File": "TSV (தாவல்-தனிப்பட்ட மதிப்புகள்) கோப்பு‌க்கு ஏற்றுமதி செய்", "Markdown File": "Markdown கோப்பு", diff --git a/src/locales/th.json b/src/locales/th.json index 364c9884..d622d8cb 100644 --- a/src/locales/th.json +++ b/src/locales/th.json @@ -2292,6 +2292,7 @@ "File Format": "รูปแบบไฟล์", "CSV (Comma-separated values) File": "ไฟล์ CSV (คั่นด้วยเครื่องหมายจุลภาค)", "TSV (Tab-separated values) File": "ไฟล์ TSV (คั่นด้วยแท็บ)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "ส่งออกเป็นไฟล์ CSV (คั่นด้วยเครื่องหมายจุลภาค)", "Export to TSV (Tab-separated values) File": "ส่งออกเป็นไฟล์ TSV (คั่นด้วยแท็บ)", "Markdown File": "ไฟล์ Markdown", diff --git a/src/locales/tr.json b/src/locales/tr.json index 301e67a1..4974e02d 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -2292,6 +2292,7 @@ "File Format": "Dosya Formatı", "CSV (Comma-separated values) File": "CSV (Virgülle ayrılmış değerler) Dosyası", "TSV (Tab-separated values) File": "TSV (Sekmeyle ayrılmış değerler) Dosyası", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "CSV (Virgülle ayrılmış değerler) Dosyasına Dışa Aktar", "Export to TSV (Tab-separated values) File": "TSV (Sekmeyle ayrılmış değerler) Dosyasına Dışa Aktar", "Markdown File": "Markdown Dosyası", diff --git a/src/locales/uk.json b/src/locales/uk.json index 4fcd620d..0979f234 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -2292,6 +2292,7 @@ "File Format": "File Format", "CSV (Comma-separated values) File": "Файл CSV (значення, розділені комами)", "TSV (Tab-separated values) File": "Файл TSV (значення, розділені табуляцією)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File", "Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File", "Markdown File": "Markdown File", diff --git a/src/locales/vi.json b/src/locales/vi.json index 3ea2ae83..921f7c58 100644 --- a/src/locales/vi.json +++ b/src/locales/vi.json @@ -2292,6 +2292,7 @@ "File Format": "File Format", "CSV (Comma-separated values) File": "Tệp CSV (Giá trị phân cách bằng dấu phẩy)", "TSV (Tab-separated values) File": "Tệp TSV (Giá trị phân cách bằng tab)", + "SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File", "Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File", "Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File", "Markdown File": "Markdown File", diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json index 5e1f0211..2cec4310 100644 --- a/src/locales/zh_Hans.json +++ b/src/locales/zh_Hans.json @@ -2292,6 +2292,7 @@ "File Format": "文件格式", "CSV (Comma-separated values) File": "CSV (逗号分隔的值) 文件", "TSV (Tab-separated values) File": "TSV (制表符分隔的值) 文件", + "SSV (Semicolon-separated values) File": "SSV (分号分隔的值) 文件", "Export to CSV (Comma-separated values) File": "导出到 CSV (逗号分隔的值) 文件", "Export to TSV (Tab-separated values) File": "导出到 TSV (制表符分隔的值) 文件", "Markdown File": "Markdown 文件", diff --git a/src/locales/zh_Hant.json b/src/locales/zh_Hant.json index c5ad6df2..49a1844e 100644 --- a/src/locales/zh_Hant.json +++ b/src/locales/zh_Hant.json @@ -2292,6 +2292,7 @@ "File Format": "檔案格式", "CSV (Comma-separated values) File": "CSV (逗號分隔的值) 檔案", "TSV (Tab-separated values) File": "TSV (定位點分隔的值) 檔案", + "SSV (Semicolon-separated values) File": "SSV (分號分隔的值) 檔案", "Export to CSV (Comma-separated values) File": "匯出為 CSV (逗號分隔的值) 檔案", "Export to TSV (Tab-separated values) File": "匯出為 TSV (定位點分隔的值) 檔案", "Markdown File": "Markdown 檔案", diff --git a/src/views/desktop/transactions/import/ImportDialog.vue b/src/views/desktop/transactions/import/ImportDialog.vue index 95a00b89..300065fa 100644 --- a/src/views/desktop/transactions/import/ImportDialog.vue +++ b/src/views/desktop/transactions/import/ImportDialog.vue @@ -715,6 +715,8 @@ function parseData(): void { uploadFile = KnownFileType.CSV.createFile(importData.value, 'import'); } else if (type === 'custom_tsv') { uploadFile = KnownFileType.TSV.createFile(importData.value, 'import'); + } else if (type === 'custom_ssv') { + uploadFile = KnownFileType.TXT.createFile(importData.value, 'import'); } else { snackbar.value?.showError('Parameter Invalid'); return;