chenos 452ecb5fc7
feat: formula plugin (#1344)
* 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)

* fix(plugin-workflow): avoid revision with ghost nodes (#941)

* fix(plugin-workflow): fix collection fieldset component (#942)

* feat(useSignup): customize success message

* feat: changed with associations (#943)

* feat: changed with associations

* fix: test error

* fix: test error

* fix: test

* fix(plugin-workflow): fix schedule trigger bug (#949)

* fix(plugin-workflow): skip time based test (#951)

* fix(plugin-workflow): test changedWithAssociations() (#950)

* fix(plugin-workflow): test changedWithAssociations()

* fix: toChangedWithAssociations

* fix(plugin-workflow): add test cases

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

* feat: docker optimizing (#948)

* chore: feat/docker-optimizing
* feat: docker nginx gzip config

* feat: ui schema cache (#877)

* feat(core/cache): support cache

* perf(plugins/ui-schema-storage): cache schema

* refactor(plugins/ui-schema-storage): handle schema cache in repository level, not in action

* fix(plugins/ui-schema-storage): jsonSchema use s_ + x-uid and properties use p_ + x-uid cache

prevent jsonSchema and properties cache override each other

* test(plugins/ui-schema-storage): add ui_schema repository with cache test

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

* test(plugins/ui-schema-storage): add ui_schema repository with cache test with readFromCache false

* fix(plugins/ui-schema-storage): repository insertAdjacent and patch method clear cache fix

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

* feat: add filter action to collection table (#953)

* feat: 数据表支持筛选

* feat: 数据表支持筛选

* feat: 数据表支持筛选

* feat: 数据表支持筛选

* fix: format code

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

* fix: default value of VERDACCIO_URL

* feat: add Dockerfile.official

* refactor(plugin-file-manager): move client code into plugin folder and enable path config (#913)

* Turkish language (#939)

* Türkçe dil dosyası eklendi. Turkish language added

* Türkçe dil düzenlemesi. Turkish language edit.

* fix: cannot find name 'antdTrTR'

* chore(versions): 😊 publish v0.7.6-alpha.2 (#954)

* Turkish readme (#955)

* Türkçe dil dosyası eklendi. Turkish language added

* Türkçe Açıklama sayfası. Turkish readme file added

* Turkish language link added

* turkish language link added

* fix: update readme

* fix(plugin-workflow): fix constant schedule trigger time (#956)

* feat: push ali docker registry (#957)

* feat: push ali docker registry

* fix: add VERDACCIO_URL

* fix: env

* fix: add VERDACCIO_URL to env

* fix: update VERDACCIO_URL

* fix: arg VERDACCIO_URL

* fix: update Dockerfile.official

* fix: build-args

* fix: network: host

* fix: ci

* fix: verdaccio:10104

* Update branch-docker-ci.yml

* Update branch-docker-ci.yml

* Update branch-docker-ci.yml

* Update branch-docker-ci.yml

* Update branch-docker-ci.yml

* Update branch-docker-ci.yml

* Update branch-docker-ci.yml

* feat: push acr

Co-authored-by: ChengLei Shao <chareice@live.com>

* feat: api service

* fix: api services

* feat(file-manager): support tencent cos (#958)

* feat: support tencent cos

* feat: normalize

* chore: update env example

* test: add cos

* Revert "feat: normalize"

This reverts commit 371880013c20b4cb4174ffaa15e0157acc5306c3.

* feat: normalize

* feat: tengxun to tencent

* chore: fix missing deps

* fix: locale

* fix: locale cos

* fix(database/formula-field): when formula's field caculate result is 0 it alse will be save (#962)

* fix: lerna ERR! EUNCOMMIT  M yarn.lock

* fix: driver-opts: network=host

* fix(ci): add verdaccio service

* chore(versions): 😊 publish v0.7.7-alpha.1 (#963)

* fix(plugin-workflow): fix workflow update action (#964)

* fix(ci): yarn config set network-timeout 600000

* fix: empty logic operator filter (#961)

* chore: fix incorrect deps (#970)

* feat: support show lunar day (#972)

* feat: support show lunar day

* fix: update yarn.lock

* fix: types error

Co-authored-by: Dunqing <dengqing0821@gmail.com>

* fix(ci): remove platforms

* chore: improve ci (#976)

* test: ci

* fix: ci error

* fix: on pull_request

* fix: paths

* fix: paths 'packages/**'

* feat: support show lunar day in week and day (#977)

Co-authored-by: qing <qing@imideMacBook-Air.local>

* fix(client/formula): set cursor focus on input (#959)

* fix(client/formula): set cursor focus on input

* fix(client/formula): when formula field name has contains the other one will case FormulaError

refactor partial implementation

* fix(client/table-selector-provider): make data range config effective (#960)

* fix(client/table-selector-provider): make data range config effective

* fix(client/table-selector): fix when save data range config filter lose

* fix(client/upload): fix upload mutiple files always uploading status (#974)

* Update README.md

* Update README.zh-CN.md

* Update README.tr-TR.md

* feat(calendar): support for add/remove repeats events (#988)

* feat(calendar): support for adding repeats

* feat: support delete events

* fix: has many same x-action

* feat: update better logic

* fix: exclude is not an array

* fix: handle parse cron error

* feat: support every_week, every_month, every_year

* fix(calendar): events cannot support moment (#1017)

* fix(calendar): events cannot support moment

* fix: avoid manipulating raw values

* feat: add excel function field (#906)

* feat: add excel function field

* fix: translations

* fix: documentation

* chore: remove console log

* chore: moved generation of parser to helper function; feat: added GET_DEEP function

* chore: improve tokenisation for when there are similar names;

* chore: move helper to utils

* fix: import from @nocobase/utils/client

* feat: integration as a plugin

* fix: remove excel function interface

* fix: locale

* fix: error

* refactor: formula plugin

* fix: improve code

* feat: update docs

* fix: error

* fix: update deps

* fix: remove formula

* fix:  bigint & test

* fix: result

* fix: double data type

* fix: maximum call stack size exceeded

* fix: improve code

* fix: improve code

* feat(cli): quickstart

* Revert "feat(cli): quickstart"

This reverts commit 99ad54afb6785c9180c46dd3e9e01e25da368218.

* fix: precision

* fix: migration

Co-authored-by: Michael DeGiovanni <m.degiovanni@gmail.com>
2023-01-10 09:48:46 +08:00

111 lines
3.3 KiB
TypeScript

import { Plugin } from '@nocobase/server';
import _ from 'lodash';
import path from 'path';
export class PresetNocoBase extends Plugin {
getBuiltInPlugins() {
const plugins = (process.env.PRESET_NOCOBASE_PLUGINS || '').split(',').filter(Boolean);
return _.uniq(
[
'error-handler',
'collection-manager',
'ui-schema-storage',
'ui-routes-storage',
'file-manager',
'system-settings',
'sequence-field',
'verification',
'users',
'acl',
'china-region',
'workflow',
'client',
'export',
'import',
'audit-logs',
'duplicator',
'iframe-block',
'math-formula-field',
'excel-formula-field',
].concat(plugins),
);
}
getLocalPlugins() {
const localPlugins = ['sample-hello', 'oidc', 'saml', 'map', 'snapshot-field'];
return localPlugins;
}
async addBuiltInPlugins(options?: any) {
const builtInPlugins = this.getBuiltInPlugins();
await this.app.pm.add(builtInPlugins, {
enabled: true,
builtIn: true,
installed: true,
});
const localPlugins = this.getLocalPlugins();
await this.app.pm.add(localPlugins, {});
await this.app.reload({ method: options.method });
}
afterAdd() {
this.app.on('beforeLoad', async (app, options) => {
if (options?.method !== 'upgrade') {
return;
}
const version = await this.app.version.get();
console.log(`The version number before upgrade is ${version}`);
const result = await this.app.version.satisfies('<0.8.0-alpha.1');
if (result) {
const r = await this.db.collectionExistsInDb('applicationPlugins');
if (r) {
console.log(`Clear the installed application plugins`);
await this.db.getRepository('applicationPlugins').destroy({ truncate: true });
await this.app.reload({ method: options.method });
}
}
});
this.app.on('beforeUpgrade', async (options) => {
const result = await this.app.version.satisfies('<0.8.0-alpha.1');
if (result) {
console.log(`Initialize all built-in plugins`);
await this.addBuiltInPlugins({ method: 'upgrade' });
}
const builtInPlugins = this.getBuiltInPlugins();
const plugins = await this.app.db.getRepository('applicationPlugins').find();
const pluginNames = plugins.map((p) => p.name);
await this.app.pm.add(
builtInPlugins.filter((plugin) => !pluginNames.includes(plugin)),
{
enabled: true,
builtIn: true,
installed: true,
},
);
const localPlugins = this.getLocalPlugins();
await this.app.pm.add(
localPlugins.filter((plugin) => !pluginNames.includes(plugin)),
{},
);
await this.app.reload({ method: 'upgrade' });
await this.app.db.sync();
});
this.app.on('beforeInstall', async (options) => {
console.log(`Initialize all built-in plugins`);
await this.addBuiltInPlugins({ method: 'install' });
});
}
beforeLoad() {
this.db.addMigrations({
namespace: this.getName(),
directory: path.resolve(__dirname, './migrations'),
context: {
plugin: this,
},
});
}
}
export default PresetNocoBase;