202 lines
4.7 KiB
TypeScript
202 lines
4.7 KiB
TypeScript
import { ObjectWithId } from './object-with-id'
|
|
|
|
// see /src/paperless/models.py
|
|
|
|
export enum OutputTypeConfig {
|
|
PDF = 'pdf',
|
|
PDF_A = 'pdfa',
|
|
PDF_A1 = 'pdfa-1',
|
|
PDF_A2 = 'pdfa-2',
|
|
PDF_A3 = 'pdfa-3',
|
|
}
|
|
|
|
export enum ModeConfig {
|
|
SKIP = 'skip',
|
|
REDO = 'redo',
|
|
FORCE = 'force',
|
|
SKIP_NO_ARCHIVE = 'skip_noarchive',
|
|
}
|
|
|
|
export enum ArchiveFileConfig {
|
|
NEVER = 'never',
|
|
WITH_TEXT = 'with_text',
|
|
ALWAYS = 'always',
|
|
}
|
|
|
|
export enum CleanConfig {
|
|
CLEAN = 'clean',
|
|
FINAL = 'clean-final',
|
|
NONE = 'none',
|
|
}
|
|
|
|
export enum ColorConvertConfig {
|
|
UNCHANGED = 'LeaveColorUnchanged',
|
|
RGB = 'RGB',
|
|
INDEPENDENT = 'UseDeviceIndependentColor',
|
|
GRAY = 'Gray',
|
|
CMYK = 'CMYK',
|
|
}
|
|
|
|
export enum ConfigOptionType {
|
|
String = 'string',
|
|
Number = 'number',
|
|
Select = 'select',
|
|
Boolean = 'boolean',
|
|
JSON = 'json',
|
|
File = 'file',
|
|
}
|
|
|
|
export const ConfigCategory = {
|
|
General: $localize`General Settings`,
|
|
OCR: $localize`OCR Settings`,
|
|
}
|
|
|
|
export interface ConfigOption {
|
|
key: string
|
|
title: string
|
|
type: ConfigOptionType
|
|
choices?: Array<{ id: string; name: string }>
|
|
config_key?: string
|
|
category: string
|
|
}
|
|
|
|
function mapToItems(enumObj: Object): Array<{ id: string; name: string }> {
|
|
return Object.keys(enumObj).map((key) => {
|
|
return {
|
|
id: enumObj[key],
|
|
name: enumObj[key],
|
|
}
|
|
})
|
|
}
|
|
|
|
export const PaperlessConfigOptions: ConfigOption[] = [
|
|
{
|
|
key: 'output_type',
|
|
title: $localize`Output Type`,
|
|
type: ConfigOptionType.Select,
|
|
choices: mapToItems(OutputTypeConfig),
|
|
config_key: 'PAPERLESS_OCR_OUTPUT_TYPE',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'language',
|
|
title: $localize`Language`,
|
|
type: ConfigOptionType.String,
|
|
config_key: 'PAPERLESS_OCR_LANGUAGE',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'pages',
|
|
title: $localize`Pages`,
|
|
type: ConfigOptionType.Number,
|
|
config_key: 'PAPERLESS_OCR_PAGES',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'mode',
|
|
title: $localize`Mode`,
|
|
type: ConfigOptionType.Select,
|
|
choices: mapToItems(ModeConfig),
|
|
config_key: 'PAPERLESS_OCR_MODE',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'skip_archive_file',
|
|
title: $localize`Skip Archive File`,
|
|
type: ConfigOptionType.Select,
|
|
choices: mapToItems(ArchiveFileConfig),
|
|
config_key: 'PAPERLESS_OCR_SKIP_ARCHIVE_FILE',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'image_dpi',
|
|
title: $localize`Image DPI`,
|
|
type: ConfigOptionType.Number,
|
|
config_key: 'PAPERLESS_OCR_IMAGE_DPI',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'unpaper_clean',
|
|
title: $localize`Clean`,
|
|
type: ConfigOptionType.Select,
|
|
choices: mapToItems(CleanConfig),
|
|
config_key: 'PAPERLESS_OCR_CLEAN',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'deskew',
|
|
title: $localize`Deskew`,
|
|
type: ConfigOptionType.Boolean,
|
|
config_key: 'PAPERLESS_OCR_DESKEW',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'rotate_pages',
|
|
title: $localize`Rotate Pages`,
|
|
type: ConfigOptionType.Boolean,
|
|
config_key: 'PAPERLESS_OCR_ROTATE_PAGES',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'rotate_pages_threshold',
|
|
title: $localize`Rotate Pages Threshold`,
|
|
type: ConfigOptionType.Number,
|
|
config_key: 'PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'max_image_pixels',
|
|
title: $localize`Max Image Pixels`,
|
|
type: ConfigOptionType.Number,
|
|
config_key: 'PAPERLESS_OCR_MAX_IMAGE_PIXELS',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'color_conversion_strategy',
|
|
title: $localize`Color Conversion Strategy`,
|
|
type: ConfigOptionType.Select,
|
|
choices: mapToItems(ColorConvertConfig),
|
|
config_key: 'PAPERLESS_OCR_COLOR_CONVERSION_STRATEGY',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'user_args',
|
|
title: $localize`OCR Arguments`,
|
|
type: ConfigOptionType.JSON,
|
|
config_key: 'PAPERLESS_OCR_USER_ARGS',
|
|
category: ConfigCategory.OCR,
|
|
},
|
|
{
|
|
key: 'app_logo',
|
|
title: $localize`Application Logo`,
|
|
type: ConfigOptionType.File,
|
|
config_key: 'PAPERLESS_APP_LOGO',
|
|
category: ConfigCategory.General,
|
|
},
|
|
{
|
|
key: 'app_title',
|
|
title: $localize`Application Title`,
|
|
type: ConfigOptionType.String,
|
|
config_key: 'PAPERLESS_APP_TITLE',
|
|
category: ConfigCategory.General,
|
|
},
|
|
]
|
|
|
|
export interface PaperlessConfig extends ObjectWithId {
|
|
output_type: OutputTypeConfig
|
|
pages: number
|
|
language: string
|
|
mode: ModeConfig
|
|
skip_archive_file: ArchiveFileConfig
|
|
image_dpi: number
|
|
unpaper_clean: CleanConfig
|
|
deskew: boolean
|
|
rotate_pages: boolean
|
|
rotate_pages_threshold: number
|
|
max_image_pixels: number
|
|
color_conversion_strategy: ColorConvertConfig
|
|
user_args: object
|
|
app_logo: string
|
|
app_title: string
|
|
}
|