Skip to content

Commit 372c5d7

Browse files
authored
Support export talents to CSV with filters (#8273)
Signed-off-by: Anna Khismatullina <[email protected]>
1 parent b715b58 commit 372c5d7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+1295
-331
lines changed

Diff for: common/config/rush/pnpm-lock.yaml

+131-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: desktop/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,9 @@
215215
"@hcengineering/card": "^0.6.0",
216216
"@hcengineering/card-assets": "^0.6.0",
217217
"@hcengineering/card-resources": "^0.6.0",
218+
"@hcengineering/export": "^0.6.0",
219+
"@hcengineering/export-assets": "^0.6.0",
220+
"@hcengineering/export-resources": "^0.6.0",
218221
"electron-squirrel-startup": "~1.0.0",
219222
"dotenv": "~16.0.0",
220223
"electron-context-menu": "^4.0.4",

Diff for: desktop/src/ui/platform.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import client, { clientId } from '@hcengineering/client'
2121
import contactPlugin, { contactId } from '@hcengineering/contact'
2222
import { documentId } from '@hcengineering/document'
2323
import { driveId } from '@hcengineering/drive'
24+
import exportPlugin, { exportId } from '@hcengineering/export'
2425
import gmail, { gmailId } from '@hcengineering/gmail'
2526
import { hrId } from '@hcengineering/hr'
2627
import { imageCropperId } from '@hcengineering/image-cropper'
@@ -67,6 +68,7 @@ import '@hcengineering/chunter-assets'
6768
import '@hcengineering/contact-assets'
6869
import '@hcengineering/document-assets'
6970
import '@hcengineering/drive-assets'
71+
import '@hcengineering/export-assets'
7072
import '@hcengineering/gmail-assets'
7173
import '@hcengineering/hr-assets'
7274
import '@hcengineering/inventory-assets'
@@ -191,6 +193,7 @@ function configureI18n (): void {
191193
addStringsLoader(guestId, async (lang: string) => await import(`@hcengineering/guest-assets/lang/${lang}.json`))
192194
addStringsLoader(loveId, async (lang: string) => await import(`@hcengineering/love-assets/lang/${lang}.json`))
193195
addStringsLoader(printId, async (lang: string) => await import(`@hcengineering/print-assets/lang/${lang}.json`))
196+
addStringsLoader(exportId, async (lang: string) => await import(`@hcengineering/export-assets/lang/${lang}.json`))
194197
addStringsLoader(analyticsCollectorId, async (lang: string) => await import(`@hcengineering/analytics-collector-assets/lang/${lang}.json`))
195198
addStringsLoader(testManagementId, async (lang: string) => await import(`@hcengineering/test-management-assets/lang/${lang}.json`))
196199
addStringsLoader(surveyId, async (lang: string) => await import(`@hcengineering/survey-assets/lang/${lang}.json`))
@@ -251,6 +254,7 @@ export async function configurePlatform (): Promise<void> {
251254
setMetadata(analyticsCollector.metadata.EndpointURL, config.ANALYTICS_COLLECTOR_URL)
252255
setMetadata(aiBot.metadata.EndpointURL, config.AI_URL)
253256
setMetadata(presence.metadata.PresenceUrl, config.PRESENCE_URL ?? '')
257+
setMetadata(exportPlugin.metadata.ExportUrl, config.EXPORT_URL ?? '')
254258

255259
const languages = myBranding.languages !== undefined && myBranding.languages !== '' ? myBranding.languages.split(',').map((l) => l.trim()) : ['en', 'ru', 'es', 'pt', 'zh', 'fr', 'cs', 'it', 'de']
256260

@@ -318,6 +322,7 @@ export async function configurePlatform (): Promise<void> {
318322
addLocation(guestId, () => import(/* webpackChunkName: "guest" */ '@hcengineering/guest-resources'))
319323
addLocation(loveId, () => import(/* webpackChunkName: "love" */ '@hcengineering/love-resources'))
320324
addLocation(printId, () => import(/* webpackChunkName: "print" */ '@hcengineering/print-resources'))
325+
addLocation(exportId, () => import(/* webpackChunkName: "export" */ '@hcengineering/export-resources'))
321326
addLocation(textEditorId, () => import(/* webpackChunkName: "text-editor" */ '@hcengineering/text-editor-resources'))
322327
addLocation(testManagementId, () => import(/* webpackChunkName: "test-management" */ '@hcengineering/test-management-resources'))
323328
addLocation(surveyId, () => import(/* webpackChunkName: "survey" */ '@hcengineering/survey-resources'))
@@ -351,7 +356,6 @@ export async function configurePlatform (): Promise<void> {
351356
configureNotifications()
352357

353358
setMetadata(setting.metadata.BackupUrl, config.BACKUP_URL ?? '')
354-
setMetadata(setting.metadata.ExportUrl, config.EXPORT_URL ?? '')
355359

356360
if (config.INITIAL_URL !== '') {
357361
setLocationStorageKey('uberflow_child')

Diff for: dev/prod/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,9 @@
209209
"@hcengineering/card": "^0.6.0",
210210
"@hcengineering/card-assets": "^0.6.0",
211211
"@hcengineering/card-resources": "^0.6.0",
212+
"@hcengineering/export": "^0.6.0",
213+
"@hcengineering/export-assets": "^0.6.0",
214+
"@hcengineering/export-resources": "^0.6.0",
212215
"@sentry/svelte": "^8.52.1",
213216
"posthog-js": "~1.122.0"
214217
}

Diff for: dev/prod/public/config.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@
1919
"MODEL_VERSION": null,
2020
"STATS_URL": "http://localhost:4900",
2121
"PASSWORD_STRICTNESS": "none",
22-
"EXPORT_URL": "http://localhost:4009/export"
22+
"EXPORT_URL": "http://localhost:4009"
2323
}

Diff for: dev/prod/src/platform.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { desktopPreferencesId } from '@hcengineering/desktop-preferences'
3030
import { diffviewId } from '@hcengineering/diffview'
3131
import { documentId } from '@hcengineering/document'
3232
import { driveId } from '@hcengineering/drive'
33+
import exportPlugin, { exportId } from '@hcengineering/export'
3334
import gmail, { gmailId } from '@hcengineering/gmail'
3435
import guest, { guestId } from '@hcengineering/guest'
3536
import { hrId } from '@hcengineering/hr'
@@ -81,6 +82,7 @@ import '@hcengineering/desktop-preferences-assets'
8182
import '@hcengineering/diffview-assets'
8283
import '@hcengineering/document-assets'
8384
import '@hcengineering/drive-assets'
85+
import '@hcengineering/export-assets'
8486
import '@hcengineering/gmail-assets'
8587
import '@hcengineering/guest-assets'
8688
import '@hcengineering/hr-assets'
@@ -314,6 +316,7 @@ function configureI18n(): void {
314316
addStringsLoader(guestId, async (lang: string) => await import(`@hcengineering/guest-assets/lang/${lang}.json`))
315317
addStringsLoader(loveId, async (lang: string) => await import(`@hcengineering/love-assets/lang/${lang}.json`))
316318
addStringsLoader(printId, async (lang: string) => await import(`@hcengineering/print-assets/lang/${lang}.json`))
319+
addStringsLoader(exportId, async (lang: string) => await import(`@hcengineering/export-assets/lang/${lang}.json`))
317320
addStringsLoader(
318321
analyticsCollectorId,
319322
async (lang: string) => await import(`@hcengineering/analytics-collector-assets/lang/${lang}.json`)
@@ -425,6 +428,7 @@ export async function configurePlatform() {
425428
setMetadata(print.metadata.PrintURL, config.PRINT_URL)
426429
setMetadata(sign.metadata.SignURL, config.SIGN_URL)
427430
setMetadata(presence.metadata.PresenceUrl, config.PRESENCE_URL ?? '')
431+
setMetadata(exportPlugin.metadata.ExportUrl, config.EXPORT_URL ?? '')
428432

429433
const languages = myBranding.languages
430434
? (myBranding.languages as string).split(',').map((l) => l.trim())
@@ -503,6 +507,7 @@ export async function configurePlatform() {
503507
addLocation(guestId, () => import(/* webpackChunkName: "guest" */ '@hcengineering/guest-resources'))
504508
addLocation(loveId, () => import(/* webpackChunkName: "love" */ '@hcengineering/love-resources'))
505509
addLocation(printId, () => import(/* webpackChunkName: "print" */ '@hcengineering/print-resources'))
510+
addLocation(exportId, () => import(/* webpackChunkName: "export" */ '@hcengineering/export-resources'))
506511
addLocation(textEditorId, () => import(/* webpackChunkName: "text-editor" */ '@hcengineering/text-editor-resources'))
507512
addLocation(uploaderId, () => import(/* webpackChunkName: "uploader" */ '@hcengineering/uploader-resources'))
508513
addLocation(
@@ -535,7 +540,6 @@ export async function configurePlatform() {
535540
setMetadata(workbench.metadata.DefaultSpecial, myBranding.defaultSpecial ?? 'issues')
536541

537542
setMetadata(setting.metadata.BackupUrl, config.BACKUP_URL ?? '')
538-
setMetadata(setting.metadata.ExportUrl, config.EXPORT_URL ?? '')
539543

540544
initThemeStore()
541545
}

Diff for: models/recruit/src/index.ts

+25-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,31 @@ export function createModel (builder: Builder): void {
186186
createEvent: RecruitEvents.PlusTalentButtonClicked,
187187
createLabel: recruit.string.TalentCreateLabel,
188188
createComponent: recruit.component.CreateCandidate,
189-
createComponentProps: { shouldSaveDraft: false }
189+
createComponentProps: { shouldSaveDraft: false },
190+
exportVisible: true,
191+
exportConfig: {
192+
skipAttributes: ['_class', 'avatarType', 'space'],
193+
attributeKeyMap: { city: 'location' },
194+
attributeTransforms: {
195+
channels: {
196+
operations: [
197+
{
198+
type: 'group_by',
199+
config: {
200+
keyField: 'data.provider',
201+
valueField: 'data.value'
202+
}
203+
},
204+
{
205+
type: 'join',
206+
config: {
207+
delimiter: ', '
208+
}
209+
}
210+
]
211+
}
212+
}
213+
}
190214
},
191215
position: 'vacancy'
192216
},

Diff for: models/setting/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"@hcengineering/task": "^0.6.20",
4343
"@hcengineering/notification": "^0.6.23",
4444
"@hcengineering/templates": "^0.6.11",
45-
"@hcengineering/activity": "^0.6.0"
45+
"@hcengineering/activity": "^0.6.0",
46+
"@hcengineering/export": "^0.6.0"
4647
}
4748
}

Diff for: models/setting/src/index.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import {
3636
type WorkspaceSetting
3737
} from '@hcengineering/setting'
3838
import templates from '@hcengineering/templates'
39+
import exportPlugin from '@hcengineering/export'
3940
import setting from './plugin'
4041

4142
import workbench, { WidgetType } from '@hcengineering/model-workbench'
@@ -341,9 +342,9 @@ export function createModel (builder: Builder): void {
341342
core.space.Model,
342343
{
343344
name: 'export',
344-
label: setting.string.Export,
345-
icon: setting.icon.Export,
346-
component: setting.component.Export,
345+
label: exportPlugin.string.Export,
346+
icon: exportPlugin.icon.Export,
347+
component: exportPlugin.component.ExportSettings,
347348
group: 'settings-editor',
348349
role: AccountRole.User,
349350
order: 4800

Diff for: plugins/export-assets/.eslintrc.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module.exports = {
2+
extends: ['./node_modules/@hcengineering/platform-rig/profiles/assets/eslint.config.json'],
3+
parserOptions: {
4+
tsconfigRootDir: __dirname,
5+
project: './tsconfig.json'
6+
}
7+
}

0 commit comments

Comments
 (0)