From 474cb9c8871f5d0555aedfc867a8f4d7c6930f0c Mon Sep 17 00:00:00 2001 From: Andrey Sobolev Date: Fri, 27 Jan 2023 19:14:40 +0700 Subject: [PATCH] TSK-476: Bitrix import fixes (#2548) Signed-off-by: Andrey Sobolev --- common/config/rush/pnpm-lock.yaml | 17 +- dev/prod/tsconfig.json | 5 +- .../src/components/MessageBox.svelte | 24 +- .../src/components/message/Nodes.svelte | 2 +- packages/presentation/src/utils.ts | 2 +- plugins/attachment-resources/package.json | 4 + plugins/bitrix-resources/package.json | 9 +- .../src/components/BitrixConfigure.svelte | 8 +- .../src/components/BitrixFieldLookup.svelte | 3 +- .../src/components/BitrixImport.svelte | 7 +- .../src/components/CreateMapping.svelte | 9 +- .../src/components/EntityMapping.svelte | 13 +- .../FieldMappingSynchronizer.svelte | 311 ++---------- plugins/bitrix-resources/src/queue.ts | 6 + plugins/bitrix-resources/src/types.ts | 45 -- plugins/bitrix/package.json | 12 +- .../src/client.ts | 14 +- plugins/bitrix/src/index.ts | 164 +------ plugins/bitrix/src/sync.ts | 448 ++++++++++++++++++ plugins/bitrix/src/types.ts | 232 +++++++++ .../{bitrix-resources => bitrix}/src/utils.ts | 106 ++++- .../projects/ProjectPresenter.svelte | 6 +- plugins/view-resources/src/actionImpl.ts | 18 +- .../src/components/EditDoc.svelte | 20 +- plugins/view-resources/src/utils.ts | 15 + pods/account/src/index.ts | 9 + server/account/src/index.ts | 1 + 27 files changed, 948 insertions(+), 562 deletions(-) create mode 100644 plugins/bitrix-resources/src/queue.ts delete mode 100644 plugins/bitrix-resources/src/types.ts rename plugins/{bitrix-resources => bitrix}/src/client.ts (68%) create mode 100644 plugins/bitrix/src/sync.ts create mode 100644 plugins/bitrix/src/types.ts rename plugins/{bitrix-resources => bitrix}/src/utils.ts (76%) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index c5b4f2ea68..07803b3bd2 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -11768,7 +11768,7 @@ packages: dev: false file:projects/bitrix-resources.tgz_a1d864769aaf53d09b76fe134ab55e60: - resolution: {integrity: sha512-Wv/ATljkeBewaCxRNMoYjoX07HOl1PniT0kkDZUrqkxPW+fjqMSB2DrU0D/5CS39UAC4jOtTPV1yMCqz7r5smw==, tarball: file:projects/bitrix-resources.tgz} + resolution: {integrity: sha512-vXwCwfcCLy3cb6Dj8p8+XWglgI6aTUdr4sN5xzKqaL5soj1JwmEyWhHvafBJMWDpk8UsJUEGNB5Jpiw24n+q9A==, tarball: file:projects/bitrix-resources.tgz} id: file:projects/bitrix-resources.tgz name: '@rush-temp/bitrix-resources' version: 0.0.0 @@ -11807,13 +11807,14 @@ packages: dev: false file:projects/bitrix.tgz: - resolution: {integrity: sha512-LKlmOtIMjMgNCPKafSUsJm10okaehcJvYA4mrIrmNR9lHnbldRg3GlaglyOtXQR1fK3/KY/HTlOKzgP4xFnzpw==, tarball: file:projects/bitrix.tgz} + resolution: {integrity: sha512-DdNHQSCosOfpZzQR2nd3BOx33UVHTggxpLaGcJh0Jd4yW7FoKISS7xwBnQbHGtUNczHM9R0pNvKoVdpNNBHhnQ==, tarball: file:projects/bitrix.tgz} name: '@rush-temp/bitrix' version: 0.0.0 dependencies: '@2bad/bitrix': 2.5.0 '@rushstack/heft': 0.47.11 '@types/heft-jest': 1.0.3 + '@types/qs': 6.9.7 '@typescript-eslint/eslint-plugin': 5.42.1_d506b9be61cb4ac2646ecbc6e0680464 '@typescript-eslint/parser': 5.42.1_eslint@8.27.0+typescript@4.8.4 eslint: 8.27.0 @@ -11821,7 +11822,9 @@ packages: eslint-plugin-import: 2.26.0_eslint@8.27.0 eslint-plugin-n: 15.5.1_eslint@8.27.0 eslint-plugin-promise: 6.1.1_eslint@8.27.0 + fast-equals: 2.0.4 prettier: 2.7.1 + qs: 6.11.0 typescript: 4.8.4 transitivePeerDependencies: - supports-color @@ -13090,7 +13093,7 @@ packages: dev: false file:projects/model-all.tgz_typescript@4.8.4: - resolution: {integrity: sha512-AejnJ5pKXrdrHEdXX2AoOtbSX2mx0ceRbISCPyuvr1O9w8VKnmp43TGLOZEKVY3D+dmnjKj1+2+A+bAxMCUsQQ==, tarball: file:projects/model-all.tgz} + resolution: {integrity: sha512-KExZMGU3rzrjnf1pAwSlS4n0IEYrCONE9uXtbBQMokbcfQ/3YbeDGcDrvRdl7okj89wE47sUS088LY/22UzUMw==, tarball: file:projects/model-all.tgz} id: file:projects/model-all.tgz name: '@rush-temp/model-all' version: 0.0.0 @@ -14284,7 +14287,7 @@ packages: dev: false file:projects/openai.tgz: - resolution: {integrity: sha512-nplFlMK8VBiE2EBm11HhSpX74sZapWZ30sEWOHZfAv8AZqCINY0FOHP0Jwc+AVFtMzClx8NTCo6pgaNTLs0ixA==, tarball: file:projects/openai.tgz} + resolution: {integrity: sha512-O+mwmpb/LfabOFEsid8hIWuJpSombaoFJf3xTlH+pmi47h54Pwn8CsSjY3aZ2PdtvVjY5TK5vIQxKHxGNe3YiQ==, tarball: file:projects/openai.tgz} name: '@rush-temp/openai' version: 0.0.0 dependencies: @@ -14539,7 +14542,7 @@ packages: dev: false file:projects/pod-server.tgz: - resolution: {integrity: sha512-4IjhfCueH7UYdgcWfpeiciOQADpXCKj1C41rP6ZgHaIWzUErhMl2X/T5C2SQfp0nnbvpPWqWeqSPYYK2GGGkdw==, tarball: file:projects/pod-server.tgz} + resolution: {integrity: sha512-1gSQAnD3H3VvnxG3bDk/x+MKlmiR+dk1730YE7SjA0AmWcIaa40QqKPgCLpdhCrtDT/fwr0TFVjr3Bo8Z/vCHQ==, tarball: file:projects/pod-server.tgz} name: '@rush-temp/pod-server' version: 0.0.0 dependencies: @@ -14646,7 +14649,7 @@ packages: dev: false file:projects/prod.tgz_a9366fc5abe1de81e350f3e9b2acb628: - resolution: {integrity: sha512-wfzTNxTVOW15y2ZLXjebNfstBDQSIdSevMj0AorZ1SUWUVqQ8ZkO8XOI2wFwQdiGJplBTG0zVIDpZFdYBWF6mg==, tarball: file:projects/prod.tgz} + resolution: {integrity: sha512-oHJixn8gWZB93sHdI2epzD4DeR9Ff8y8njVa9Kr+QFk2p7IGH68FCTTA90Q61ysV7k07e/OED1ClxZ5hAthtgA==, tarball: file:projects/prod.tgz} id: file:projects/prod.tgz name: '@rush-temp/prod' version: 0.0.0 @@ -16286,7 +16289,7 @@ packages: dev: false file:projects/tool.tgz: - resolution: {integrity: sha512-VVNc6+f2BssTik3I3y+lBrBVkMz6sHygnom2/PvO/ZwEVKeWDN2rwpzZxj6n+RlPeCCvvcII9sXpPOAoJAnxnA==, tarball: file:projects/tool.tgz} + resolution: {integrity: sha512-OqWoKCsumcmAHkfsi+zF+Lt6uoamsg5W+/K3SGlPwovAIeo/Tyc+F0Sm9EKUe1OKX0FT9+dcQstcHRigNFSNQA==, tarball: file:projects/tool.tgz} name: '@rush-temp/tool' version: 0.0.0 dependencies: diff --git a/dev/prod/tsconfig.json b/dev/prod/tsconfig.json index 90dfb92b51..15b1d9ee19 100644 --- a/dev/prod/tsconfig.json +++ b/dev/prod/tsconfig.json @@ -3,7 +3,7 @@ "outDir": "./dist/", "noImplicitAny": true, "module": "esnext", - "target": "es2016", + "target": "es2021", "allowJs": true, "sourceMap": true, "skipLibCheck": true, @@ -11,7 +11,8 @@ "allowSyntheticDefaultImports": true, "lib": [ "es2016", - "dom" + "dom", + "ES2021.String" ] } } \ No newline at end of file diff --git a/packages/presentation/src/components/MessageBox.svelte b/packages/presentation/src/components/MessageBox.svelte index 2fa47c18e3..76fe8f1a32 100644 --- a/packages/presentation/src/components/MessageBox.svelte +++ b/packages/presentation/src/components/MessageBox.svelte @@ -23,8 +23,10 @@ export let message: IntlString export let params: Record = {} export let canSubmit = true + export let action: (() => Promise) | undefined = undefined const dispatch = createEventDispatcher() + let processing = false
@@ -36,10 +38,28 @@ label={presentation.string.Ok} size={'small'} kind={'primary'} - on:click={() => dispatch('close', true)} + loading={processing} + on:click={() => { + processing = true + if (action !== undefined) { + action().then(() => { + processing = false + dispatch('close', true) + }) + } else { + dispatch('close', true) + processing = false + } + }} /> {#if canSubmit} -
diff --git a/packages/presentation/src/components/message/Nodes.svelte b/packages/presentation/src/components/message/Nodes.svelte index bf07910627..34ac92454b 100644 --- a/packages/presentation/src/components/message/Nodes.svelte +++ b/packages/presentation/src/components/message/Nodes.svelte @@ -41,7 +41,7 @@ {:else if node.nodeName === 'HR'}
{:else if node.nodeName === 'IMG'} -
{@html node.outerHTML}
+
{@html node.outerHTML}
{:else if node.nodeName === 'H1'}

{:else if node.nodeName === 'H2'} diff --git a/packages/presentation/src/utils.ts b/packages/presentation/src/utils.ts index 4ea811e239..9304c832f1 100644 --- a/packages/presentation/src/utils.ts +++ b/packages/presentation/src/utils.ts @@ -206,7 +206,7 @@ export type AttributeCategory = 'object' | 'attribute' | 'inplace' | 'collection /** * @public */ -export const AttributeCategoryOrder = { attribute: 0, inplace: 1, collection: 2, array: 2 } +export const AttributeCategoryOrder = { attribute: 0, inplace: 1, collection: 2, array: 2, object: 3 } /** * @public diff --git a/plugins/attachment-resources/package.json b/plugins/attachment-resources/package.json index ab60f1fef0..ede01a4128 100644 --- a/plugins/attachment-resources/package.json +++ b/plugins/attachment-resources/package.json @@ -46,5 +46,9 @@ "filesize": "^8.0.3", "@hcengineering/preference": "^0.6.2", "@hcengineering/activity": "^0.6.0" + }, + "repository": "https://github.com/hcengineering/anticrm", + "publishConfig": { + "registry": "https://npm.pkg.github.com" } } diff --git a/plugins/bitrix-resources/package.json b/plugins/bitrix-resources/package.json index 9005e94dfa..b516e069ea 100644 --- a/plugins/bitrix-resources/package.json +++ b/plugins/bitrix-resources/package.json @@ -27,7 +27,8 @@ "prettier-plugin-svelte": "^2.8.0", "prettier": "^2.7.1", "svelte-check": "^2.8.0", - "typescript": "^4.3.5" + "typescript": "^4.3.5", + "@types/qs": "~6.9.7" }, "dependencies": { "@hcengineering/platform": "^0.6.8", @@ -38,6 +39,7 @@ "@hcengineering/text-editor": "^0.6.0", "@hcengineering/contact": "^0.6.9", "@hcengineering/lead": "^0.6.0", + "@hcengineering/login": "^0.6.1", "@hcengineering/setting": "^0.6.2", "@hcengineering/core": "^0.6.20", "@hcengineering/attachment": "^0.6.1", @@ -48,9 +50,12 @@ "@hcengineering/chunter": "^0.6.2", "p-queue": "~7.3.0", "qs": "~6.11.0", - "@types/qs": "~6.9.7", "@hcengineering/tags": "^0.6.3", "@hcengineering/tags-resources": "^0.6.0", "fast-equals": "^2.0.3" + }, + "repository": "https://github.com/hcengineering/anticrm", + "publishConfig": { + "registry": "https://npm.pkg.github.com" } } diff --git a/plugins/bitrix-resources/src/components/BitrixConfigure.svelte b/plugins/bitrix-resources/src/components/BitrixConfigure.svelte index 425fa39934..df85a6685f 100644 --- a/plugins/bitrix-resources/src/components/BitrixConfigure.svelte +++ b/plugins/bitrix-resources/src/components/BitrixConfigure.svelte @@ -20,18 +20,18 @@ import { createEventDispatcher, onMount } from 'svelte' import bitrix from '../plugin' - import { BitrixEntityMapping } from '@hcengineering/bitrix' + import { BitrixClient, BitrixEntityMapping, BitrixProfile, StatusValue } from '@hcengineering/bitrix' import { Button, eventToHTMLElement, IconAdd, Label, showPopup } from '@hcengineering/ui' - import { BitrixClient } from '../client' - import { BitrixProfile, StatusValue } from '../types' + import CreateMapping from './CreateMapping.svelte' import EntiryMapping from './EntityMapping.svelte' + import { bitrixQueue } from '../queue' export let integration: Integration const dispatch = createEventDispatcher() - const bitrixClient = new BitrixClient(integration.value) + const bitrixClient = new BitrixClient(integration.value, (op) => bitrixQueue.add(op)) let profile: BitrixProfile | undefined diff --git a/plugins/bitrix-resources/src/components/BitrixFieldLookup.svelte b/plugins/bitrix-resources/src/components/BitrixFieldLookup.svelte index 7768f533ec..23b42ec9e3 100644 --- a/plugins/bitrix-resources/src/components/BitrixFieldLookup.svelte +++ b/plugins/bitrix-resources/src/components/BitrixFieldLookup.svelte @@ -1,5 +1,5 @@ diff --git a/plugins/bitrix-resources/src/components/CreateMapping.svelte b/plugins/bitrix-resources/src/components/CreateMapping.svelte index 0ef7192edb..57bc335d98 100644 --- a/plugins/bitrix-resources/src/components/CreateMapping.svelte +++ b/plugins/bitrix-resources/src/components/CreateMapping.svelte @@ -13,9 +13,14 @@ const client = getClient() async function save (): Promise { - client.createDoc(bitrix.class.EntityMapping, bitrix.space.Mappings, { + await client.createDoc(bitrix.class.EntityMapping, bitrix.space.Mappings, { ofClass, - type + type, + comments: true, + attachments: true, + bitrixFields: {}, + fields: 0, + activity: false }) } diff --git a/plugins/bitrix-resources/src/components/EntityMapping.svelte b/plugins/bitrix-resources/src/components/EntityMapping.svelte index 2d1824c7be..9881f21d45 100644 --- a/plugins/bitrix-resources/src/components/EntityMapping.svelte +++ b/plugins/bitrix-resources/src/components/EntityMapping.svelte @@ -1,11 +1,18 @@