platform/plugins/bitrix-resources/src/components/BitrixImport.svelte
Andrey Sobolev 27b003f35f
Support Bitrix Lead import (#2445)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2022-12-16 12:35:51 +06:00

62 lines
1.6 KiB
Svelte

<script lang="ts">
import { BitrixEntityMapping } from '@hcengineering/bitrix'
import { getEmbeddedLabel } from '@hcengineering/platform'
import { Card, createQuery } from '@hcengineering/presentation'
import setting, { Integration } from '@hcengineering/setting'
import { Label } from '@hcengineering/ui'
import { createEventDispatcher } from 'svelte'
import { BitrixClient } from '../client'
import bitrix from '../plugin'
import FieldMappingSynchronizer from './FieldMappingSynchronizer.svelte'
const mappingQuery = createQuery()
let mappings: BitrixEntityMapping[] = []
mappingQuery.query(
bitrix.class.EntityMapping,
{},
(res) => {
mappings = res
},
{
lookup: {
_id: {
fields: bitrix.class.FieldMapping
}
}
}
)
const dispatch = createEventDispatcher()
const q = createQuery()
let integration: Integration | undefined
q.query(setting.class.Integration, { type: bitrix.integrationType.Bitrix }, (res) => {
integration = res.shift()
})
$: bitrixClient = integration !== undefined ? new BitrixClient(integration.value) : undefined
let loading = false
</script>
<Card
label={getEmbeddedLabel('Bitrix Synchronization...')}
canSave={!loading}
fullSize={false}
okAction={() => {
dispatch('close')
}}
okLabel={getEmbeddedLabel('Close')}
on:close
>
{#if integration && bitrixClient}
{#each mappings as mapping}
<FieldMappingSynchronizer {mapping} {bitrixClient} bind:loading />
{/each}
{:else}
<Label label={getEmbeddedLabel('No integration configured')} />
{/if}
</Card>