tachybase_todo/packages/plugins/import/src/client/ImportPluginProvider.tsx
chenos 89af2175de
Some features (#979)
* feat: add import client

* feat: add import server

* refactor: change export use library of file-saver

* refactor: upload excel file done

* refactor: upload xls transform

* feat: upload ui done

* feat: exclude unable import fields

* feat: excel file validator done

* feat: import done

* feat: import transform done

* fix: add import plugin in presets

* fix: explain will not output in template what is empty

* fix: config permission

* fix: permission skip

* fix: import password must be string

* fix: done close Modal

* fix: loop through, inserting data item by item

* fix: number calc with using mathjs

* fix: import plugin add locale

* fix: fix some bugs

* feat: bulk update done

* fix: transaction cannot be rolled back because it has been finished with state: rollback

* fix(plugin-system-settings): convert array to json

* fix(collection-manager): o2m is array type

* fix: missing RefreshActionInitializer

* fix(collection-manger): incorrect scope key parameter

* fix: can't access pages without permission via url (#826)

* feat(database): add sequence field type (#779)

* feat(database): add serialString field type

* feat(database): add serial string type field ui (skip ci)

* test(feat/database): test field options

* docs: demo

* fix(database): fix array table field behavior

* fix(database): fix serial type interface ui

* fix(database): add match logic for patterns changes

* fix(database): fix serial type query last bug in mysql

* refactor(database): refactor last record logic

* chore: revert modification on unnecessary file

* refactor(database): rename serialString type to sequence

Co-authored-by: chenos <chenlinxh@gmail.com>

* added Russian translation (#840)

* Russian translation

* Add files via upload

Add RU locale into index.ts
Bugs fixed in the ru_RU.ts

* Update index.ts

Correct lines 4 and 8

* feat: update option must have filter or filterByTk (#847)

* feat: update option must have filter or filterByTk

* fix: typo

* fix: typo

* feat(core/cache): support cache (#876)

* feat(core/cache): support cache

* build(create-nocobase-app): remove --cache-store-package cli option

* perf(core/cache): modify default cache config and remove unnecessary logic code

* fix: slow join query issued by appends field in find method of repository  (#845)

* fix: slow join query issue by appends field in repository.find

* feat: handle appending query in multiple relation repository

* feat: handle appending query in single relation repository

Co-authored-by: chenos <chenlinxh@gmail.com>

* fix: sort parameter is missing (#849)

* fix: 审计日志翻页sort丢失

* fix: 审计日志翻页sort丢失

* fix: 审计日志翻页sort丢失

Co-authored-by: 唐小爱 <tangxiaoai@192.168.0.103>

* fix(formula): support integer and fix NaN error (#879)

* fix(formula): support integer and fix NaN error

* style(formula-input): remove debugger

* fix(database): fix the index name too long error

* feat(collection-manager): inverse fields can be configured (#883)

* feat: inverse field

* feat: improve code

* feat: translations

* fix: required

* fix: run test by jest (#891)

* fix: unable to submit form during file upload (#892)

* fix(client/block-select-collection): fix select collection menu view error (#889)

* fix(client/block-select-collection): fix too many collection menu view error

* fix(client/relate-collection-field-menu): fix relate collection field menu view too long error

* fix(client/record-picker): support record-picker show format DataPicker (#888)

* fix(client/record-picker): support record-picker show format DataPicker

* fix(client/record-picker): undefined judgment and when change field's label refresh format in time

* feat: improve signin and signup page components

* feat(plugin-workflow): add concat calculator (#894)

* fix: single relation repository appends query issue (#901)

* fix: appends merge includes (#905)

* fix: build error

* fix(client): tab pane initializers for create form block

* fix: version judgment is not accurate

* fix: sync collection field default value (#907)

* feat: limit database identifier (#908)

* fix: cannot read properties of undefined (reading 'target')

* fix: appends merge now using primary key (#911)

* fix: appends merge now using primary key

* chore: console.log

* fix: unbind on error throwing (#914)

* feat: create with array of values (#912)

* feat: create with array of values

* chore: console.log

* chore: debug

* fix(client/route-switch): skip sub routes

* Feat: plugin workflow collection field (#919)

* feat(plugin-workflow): use Collectionfield component to render form

* fix(plugin-workflow): fix association types value assigning in nodes

* fix: missing menuItemGroupCss

* fix: multiple = false

* chore(versions): 😊 publish v0.7.5-alpha.1 (#920)

* fix(plugin-workflow): temp disable validation of collection field in node (#928)

* fix(plugin-workflow): fix schedule infinitely trigger when repeat not set (#926)

* Feat/plugin workflow collection field (#934)

* feat(plugin-workflow): support association constant simple input

* fix(plugin-workflow): remove useless code

* fix(plugin-workflow): add req context to processor (#936)

* feat: bulk update done

* feat: bulk edit done

* fix: fix import bug

* Update database.ts

* fix: workflow

* fix: error

* fix: plugin-import

* fix: handle locale

* fix: handle locale

* fix: allow email is undefined

* fix: action add loading

* fix: fix import bug

* fix: not allow sequence import

* fix: remove field not allow download template

* fix: remove field not allow download template

* fix: checkbox batch edit error

* fix: fix build edit

Co-authored-by: Semmy <semmywong@126.com>
Co-authored-by: Junyi <mytharcher@users.noreply.github.com>
Co-authored-by: arzanov <59161748+arzanov@users.noreply.github.com>
Co-authored-by: ChengLei Shao <chareice@live.com>
Co-authored-by: lyf-coder <58352715+lyf-coder@users.noreply.github.com>
Co-authored-by: katherinehhh <shunai.tang@hand-china.com>
Co-authored-by: 唐小爱 <tangxiaoai@192.168.0.103>
2022-10-31 23:22:33 +08:00

53 lines
1.7 KiB
TypeScript

import { SchemaComponentOptions } from '@nocobase/client';
import React, { useState } from 'react';
import { createPortal } from 'react-dom';
import { ImportActionInitializer, ImportDesigner, ImportInitializerProvider } from '.';
import { ImportContext } from './context';
import { ImportModal, ImportStatus } from './ImportModal';
import { useDownloadXlsxTemplateAction, useImportStartAction } from './useImportAction';
import { useShared } from './useShared';
export const ImportPluginProvider = (props: any) => {
const { uploadValidator, beforeUploadHandler, validateUpload } = useShared();
return (
<SchemaComponentOptions
components={{ ImportActionInitializer, ImportDesigner }}
scope={{
uploadValidator,
validateUpload,
beforeUploadHandler,
useDownloadXlsxTemplateAction,
useImportStartAction,
}}
>
<ImportInitializerProvider>
<ImportContextProvider>{props.children}</ImportContextProvider>
</ImportInitializerProvider>
</SchemaComponentOptions>
);
};
export const ImportContextProvider = (props: any) => {
const [importModalVisible, setImportModalVisible] = useState(false);
const [importStatus, setImportStatus] = useState<number>(ImportStatus.IMPORTING);
const [importResult, setImportResult] = useState<{
data: { type: string; data: any[] };
meta: { successCount: number; failureCount: number };
}>(null);
return (
<ImportContext.Provider
value={{
importModalVisible,
setImportModalVisible,
importStatus,
setImportStatus,
importResult,
setImportResult,
}}
>
{createPortal(<ImportModal></ImportModal>, document.body)}
{props.children}
</ImportContext.Provider>
);
};