{ "version": 3, "sources": ["libs/crm/static/src/lib/shared-components/list-objects/list-objects-table.service.ts"], "sourcesContent": ["import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { MatSort } from '@angular/material/sort';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RxState } from '@rx-angular/state';\nimport {\n CrmObjectInterface,\n FieldSchemaInterface,\n FieldType,\n FieldValueInterface,\n FilterOperator,\n ListCrmObjectsResponseInterface,\n} from '@vendasta/crm';\nimport { GalaxyFilterInterface } from '@vendasta/galaxy/filter/chips';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport {\n CellData,\n DateData,\n GalaxyDataSource,\n PagedListRequestInterface,\n PagedResponseInterface,\n PhoneData,\n Row,\n TextData,\n} from '@vendasta/galaxy/table';\nimport { GalaxyColumnDef } from '@vendasta/galaxy/table/src/table.interface';\nimport { BehaviorSubject, Observable, asyncScheduler, combineLatest, of } from 'rxjs';\nimport { catchError, distinctUntilChanged, map, observeOn, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { TaskTableCustomizationService } from '../../shared-services/table-customization/task-table-customization.service';\nimport { CrmFormService } from '../../shared-services/crm-services/crm-form.service';\nimport { CrmObjectService } from '../../shared-services/crm-services/crm-object-service/crm-object.service';\nimport { CrmTableStateService } from '../../shared-services/crm-services/crm-object-service/crm-table-state.service';\nimport { ActivityType, ObjectType } from '../../tokens-and-interfaces';\nimport { LIST_OBJECTS_DEFAULT_PAGE_SIZE } from '../../constants';\nimport { CRMTrackingService } from '../../shared-services/page-analytics.service';\nimport { PreviewObjectService } from '../../shared-services/preview-object.service';\nimport { CrmInjectionToken, CrmDependencies } from '../../tokens-and-interfaces';\nimport {\n ColumnDataInterface,\n TableCustomizationServiceInterface,\n ContactTableCustomizationService,\n CompanyTableCustomizationService,\n SystemFieldIds,\n} from '../../shared-services';\n\ninterface ColumnDef extends GalaxyColumnDef {\n external_id?: string;\n}\n\n@Injectable()\nexport class ListObjectsTableService implements OnDestroy {\n dataSource: GalaxyDataSource;\n columns$: Observable = this.state.select('columns');\n groupConfigs$: Observable = this.state.select('groupConfigs');\n initialLoading$: Observable = this.state.select('initialLoading');\n deletedObjectIds$: Observable = this.state.select('deletedObjectIds');\n showEmptyState$: Observable = combineLatest([\n this.initialLoading$,\n this.state.select('receivedObject'),\n ]).pipe(map(([loading, hasObjects]) => !loading && !hasObjects));\n showObjects$: Observable = combineLatest([this.initialLoading$, this.showEmptyState$]).pipe(\n map(([loading, showEmptyState]) => !loading && !showEmptyState),\n );\n private data$$ = new BehaviorSubject([]);\n readonly data$ = combineLatest([this.data$$, this.deletedObjectIds$]).pipe(\n map(([rows, deleted]) => rows.filter((r) => !deleted.includes(r.crmObjectId || ''))),\n );\n filters: GalaxyFilterInterface[] = [];\n sorting: MatSort[] = [];\n private baseColumnIds: string[] = [];\n private showActions = true;\n\n constructor(\n @Inject(CrmInjectionToken) private readonly config: CrmDependencies,\n private readonly objectsService: CrmObjectService,\n private readonly fieldsService: CrmFormService,\n private readonly state: RxState,\n private readonly translate: TranslateService,\n private readonly previewObjectService: PreviewObjectService,\n private readonly trackingService: CRMTrackingService,\n private readonly contactCustomization: ContactTableCustomizationService,\n private readonly companyCustomization: CompanyTableCustomizationService,\n private readonly taskCustomization: TaskTableCustomizationService,\n private readonly tableStateService: CrmTableStateService,\n private readonly snackService: SnackbarService,\n private readonly crmFormService: CrmFormService,\n ) {\n const initial: ComponentState = {\n objectType: 'Contact', // this must have a default value, but the service should be initialized with setObjectType\n fieldSchemas: [],\n columns: [],\n groupConfigs: [],\n initialLoading: true,\n receivedObject: false,\n deletedObjectIds: [],\n };\n this.state.set(initial);\n\n const schemas$: Observable = combineLatest([\n this.config.namespace$,\n this.state.select('objectType'),\n ]).pipe(\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n switchMap(([, objectType]) => this.fieldsService.listAllObjectFields$(objectType)),\n );\n this.state.connect(\n schemas$.pipe(\n map((schemas) => {\n const newState: Partial = {\n fieldSchemas: schemas,\n };\n return newState;\n }),\n ),\n );\n\n this.state.connect(\n schemas$.pipe(\n observeOn(asyncScheduler),\n map((schemas: FieldSchemaInterface[]) => schemas.map((schema) => this.fieldSchemaToTableColumn(schema))),\n switchMap((columns: GalaxyColumnDef[]) => combineLatest([this.applyColumnLayout$(columns)])),\n map(([columns]) =>\n this.customizedColumns(this.state.get('objectType'), columns, false, this.state.get('activityType')),\n ),\n map((columns) => this.addStaticColumns(columns)),\n switchMap((columns) => {\n return this.showBaseColumns(columns);\n }),\n switchMap((columns) => {\n return this.tableStateService.initializeLocalStorageColumns(columns);\n }),\n switchMap((columns) => this.addColumnGroups(columns)),\n ),\n );\n\n this.state.connect(\n this.config.namespace$.pipe(\n distinctUntilChanged(),\n map(() => ({ initialLoading: true })),\n ),\n );\n\n const paginatedAPI = {\n get: (\n req: PagedListRequestInterface,\n ): Observable> => {\n req.filters = this.filters;\n const results = this.listObjects(req).pipe(\n catchError(() => {\n this.snackService.openErrorSnack('ERRORS.GENERIC_MESSAGE');\n return of({\n crmObjects: [],\n pagingMetadata: {\n nextCursor: '',\n hasMore: false,\n },\n }) as Observable;\n }),\n tap((resp) => {\n const receivedObject = this.state.get('receivedObject');\n if (!receivedObject && (resp?.crmObjects || []).length > 0) {\n this.state.set({ receivedObject: true });\n }\n }),\n tap(() => {\n if (req.searchOptions?.text) {\n this.trackingService.trackEvent(this.state.get('objectType'), 'searched-crm-object', {\n searchFields: req.searchOptions.fields,\n });\n }\n }),\n tap((resp) => this.data$$.next(resp.crmObjects || [])),\n withLatestFrom(this.state.select('fieldSchemas')),\n map(([objectListResp, schemas]) => {\n const rows = this.crmObjectsToTableRows(objectListResp?.crmObjects || [], schemas);\n return {\n data: rows,\n pagingMetadata: {\n nextCursor: objectListResp?.pagingMetadata?.nextCursor || '',\n hasMore: objectListResp?.pagingMetadata?.hasMore || false,\n totalResults: objectListResp?.pagingMetadata?.totalResults || Infinity,\n },\n } as PagedResponseInterface;\n }),\n );\n\n return combineLatest([results, this.state.select('deletedObjectIds')]).pipe(\n map(([rows, deleted]) => {\n rows.data = rows.data.filter((r) => !deleted.includes(r.id));\n return rows;\n }),\n );\n },\n };\n this.dataSource = new GalaxyDataSource(paginatedAPI);\n }\n\n applyColumnLayout$(columns: ColumnDef[]): Observable {\n return this.fieldsService.listAllObjectFieldGroups$(this.state.get('objectType')).pipe(\n map((fieldGroups) => {\n const fieldIds: string[] = fieldGroups.reduce(\n (r: string[], fieldGroup) => r.concat(fieldGroup.fieldIds ?? []),\n [],\n );\n\n const sortedColumns: ColumnDef[] = JSON.parse(JSON.stringify(columns));\n sortedColumns.sort((a, b) => {\n let indexA = fieldIds.indexOf(a.id);\n if (indexA === -1 && a.external_id) {\n indexA = fieldIds.indexOf(a.external_id);\n }\n let indexB = fieldIds.indexOf(b.id);\n if (indexB === -1 && b.external_id) {\n indexB = fieldIds.indexOf(b.external_id);\n }\n if (indexA === -1) {\n return 1;\n }\n if (indexB === -1) {\n return -1;\n }\n return indexA - indexB;\n });\n\n const firstFieldGroupFieldIds = fieldGroups[0]?.fieldIds ?? [];\n for (const column of sortedColumns) {\n if (firstFieldGroupFieldIds.includes(column.id)) {\n continue;\n }\n column.hidden = true;\n }\n\n return sortedColumns;\n }),\n );\n }\n\n addStaticColumns(columns: GalaxyColumnDef[]): GalaxyColumnDef[] {\n if (!this.showActions) {\n return columns;\n }\n const actionsColumn: GalaxyColumnDef = {\n id: 'actions',\n title: this.translate.instant('LIST_OBJECTS_TABLE.ACTIONS_COLUMN.TITLE'),\n pinned: true,\n stickyEnd: true,\n sortable: false,\n };\n return [...columns, actionsColumn];\n }\n\n addColumnGroups(columns: GalaxyColumnDef[]): Observable> {\n return this.crmFormService.listAllObjectFieldGroups$(this.state.get('objectType')).pipe(\n map((groups) => {\n const groupConfigs: GalaxyColumnDef[] = groups.map((group) => {\n return {\n id: this.translate.instant(group.fieldGroupId ?? 'Custom'),\n title: this.translate.instant(group.description ?? 'Custom fields'),\n columns: (group.fieldIds || []).map((fieldId) => {\n return columns.find((column) => {\n return column.id === fieldId;\n });\n }),\n };\n });\n return groupConfigs;\n }),\n map((groups) => {\n const newState: Partial = {\n columns: columns,\n groupConfigs: groups,\n };\n return newState;\n }),\n );\n }\n\n private moveItemsToBeginning(columns: GalaxyColumnDef[], identifiersToMove: string[]): GalaxyColumnDef[] {\n const movedToFront: GalaxyColumnDef[] = [];\n\n for (const id of identifiersToMove) {\n const col = columns.find((c) => c.id === id);\n if (col) {\n movedToFront.push(col);\n }\n }\n const movedToBack = columns.filter((c) => !movedToFront.find((m) => m.id === c.id));\n return [...movedToFront, ...movedToBack];\n }\n\n showBaseColumns(columns: GalaxyColumnDef[]): Observable {\n return of(false).pipe(\n map((isMobile) => {\n if (isMobile) {\n return columns;\n }\n for (const col of this.baseColumnIds) {\n const index = columns.findIndex((c) => c.id === col);\n if (index > -1) {\n columns[index].hidden = false;\n }\n }\n return this.moveItemsToBeginning(columns, this.baseColumnIds);\n }),\n );\n }\n\n deleteObject(objectId: string): Observable {\n return this.state.select('objectType').pipe(\n switchMap((objectType) => this.objectsService.deleteCrmObject(objectType, objectId)),\n withLatestFrom(this.state.select('deletedObjectIds')),\n tap(([, deleted]) => {\n this.state.set({ deletedObjectIds: [...deleted, objectId] });\n return this.state;\n }),\n take(1),\n );\n }\n\n setObjectType(objectType: ObjectType): void {\n this.state.set({ objectType: objectType });\n }\n\n setActivityType(activityType: ActivityType): void {\n this.state.set({ activityType: activityType });\n }\n\n setBaseColumns(baseColumnIds: string[]): void {\n this.baseColumnIds = baseColumnIds;\n }\n\n setShowActions(showActions: boolean): void {\n this.showActions = showActions;\n }\n\n private listObjects(\n req: PagedListRequestInterface,\n ): Observable {\n return this.state.select('objectType').pipe(\n observeOn(asyncScheduler),\n tap(() =>\n this.state.set({\n deletedObjectIds: [],\n }),\n ),\n switchMap((objectType) => {\n const filterGroup = this.objectsService.convertFilters([...(req.filters || [])]);\n if (filterGroup && objectType === 'Activity') {\n const activityType = this.state.get('activityType');\n if (activityType) {\n filterGroup.filters?.push(this.getActivityTypeFilter(activityType));\n }\n }\n\n let sortBy = this.objectsService.convertSortBy(req.sorting);\n if (!sortBy?.length) {\n const objType = this.state.get('activityType') || this.state.get('objectType');\n sortBy = this.getTableCustomizationService(objType)?.defaultSortingOptions;\n }\n\n return this.objectsService.listObjects(objectType, {\n search: {\n searchTerm: req?.searchOptions?.text || '',\n },\n filtersV2: filterGroup,\n pagingOptions: {\n cursor: req?.pagingOptions?.cursor,\n pageSize: req?.pagingOptions?.pageSize,\n },\n sortBy: sortBy ?? [],\n });\n }),\n map((resp) => {\n // clear preview on user interaction\n if (!this.listRequestIsPristine(req)) {\n this.previewObjectService.clearPreview();\n } else {\n resp.crmObjects = this.previewObjectService.withPreview(resp.crmObjects || []);\n }\n return resp;\n }),\n tap(() => {\n this.state.set({ initialLoading: false });\n }),\n );\n }\n\n private getTableCustomizationService(\n objectType: ObjectType | ActivityType,\n ): TableCustomizationServiceInterface | undefined {\n switch (objectType) {\n case 'Contact':\n return this.contactCustomization;\n case 'Company':\n return this.companyCustomization;\n case 'Task':\n return this.taskCustomization;\n }\n return undefined;\n }\n\n private getActivityTypeFilter(activityType: ActivityType) {\n return {\n fieldId: SystemFieldIds.ActivityType,\n operator: FilterOperator.FILTER_OPERATOR_IS,\n values: [\n {\n string: activityType,\n },\n ],\n };\n }\n\n private fieldSchemaToTableColumn(schema: FieldSchemaInterface): ColumnDef {\n return {\n id: schema.fieldId || '',\n external_id: schema.externalId || '',\n title: schema.fieldName,\n sortable: true,\n };\n }\n\n private crmObjectsToTableRows(objects: CrmObjectInterface[], schemas: FieldSchemaInterface[]): Row[] {\n const schemaMap: { [schemaId: string]: FieldSchemaInterface } = {};\n schemas.forEach((schema) => {\n if (!schema?.fieldId) {\n return;\n }\n schemaMap[schema.fieldId] = schema;\n });\n\n const objType = this.state.get('activityType') || this.state.get('objectType');\n return (\n objects?.map((obj) => {\n const columnData: ColumnDataInterface = {};\n obj?.fields?.forEach((field) => {\n if (!field?.fieldId) {\n return;\n }\n columnData[field.fieldId] = this.getValueByType(field, schemaMap[field.fieldId]);\n });\n this.customizeRowData(objType, obj, schemaMap, columnData);\n\n return {\n id: obj?.crmObjectId || '',\n data: columnData,\n };\n }) || []\n );\n }\n\n private getValueByType(field: FieldValueInterface, schema: FieldSchemaInterface): CellData {\n switch (schema?.fieldType) {\n case FieldType.FIELD_TYPE_CURRENCY:\n case FieldType.FIELD_TYPE_INTEGER:\n return {\n cellType: 'integer',\n value: field.integerValue,\n };\n case FieldType.FIELD_TYPE_FLOAT:\n return {\n cellType: 'float',\n value: field.floatValue,\n };\n case FieldType.FIELD_TYPE_DATETIME:\n case FieldType.FIELD_TYPE_DATE:\n return this.dateData(field.dateValue);\n case FieldType.FIELD_TYPE_PHONE:\n return this.phoneData(field.stringValue);\n case FieldType.FIELD_TYPE_STRING:\n case FieldType.FIELD_TYPE_EMAIL:\n return this.textData(field.stringValue);\n case FieldType.FIELD_TYPE_DROPDOWN:\n return this.dropDownOptionData(schema, field.stringValue);\n case FieldType.FIELD_TYPE_BOOLEAN:\n return {\n cellType: 'boolean',\n value: field.booleanValue,\n };\n case FieldType.FIELD_TYPE_TAG:\n case FieldType.FIELD_TYPE_STRING_LIST:\n return {\n cellType: 'tags',\n value: field?.stringValues?.values || [],\n };\n default:\n return undefined;\n }\n }\n\n private dropDownOptionData(schema: FieldSchemaInterface, value?: string): TextData {\n const label = schema?.dropdownOptions?.find((o) => o?.value === value)?.label;\n return this.textData(label || value);\n }\n\n private textData(value?: string, link?: string): TextData {\n return {\n cellType: 'text',\n value: value || '',\n link: link || '',\n };\n }\n\n private phoneData(value?: string): PhoneData {\n return {\n cellType: 'phone',\n value: value,\n };\n }\n\n private dateData(value?: Date): DateData {\n return {\n cellType: 'date',\n value: value,\n };\n }\n\n private listRequestIsPristine(req: PagedListRequestInterface): boolean {\n return (\n !req?.pagingOptions?.cursor &&\n req?.pagingOptions?.pageSize === LIST_OBJECTS_DEFAULT_PAGE_SIZE &&\n !req?.searchOptions?.text &&\n !req?.searchOptions?.fields?.length &&\n !req?.filters?.length &&\n !req.sorting?.length\n );\n }\n\n private customizedColumns(\n objectType: ObjectType,\n columns: ColumnDef[],\n isMobile: boolean,\n activityType?: ActivityType,\n ): GalaxyColumnDef[] {\n return this.getTableCustomizationService(activityType || objectType)?.customizeColumns(columns, isMobile) || [];\n }\n\n private customizeRowData(\n objectType: ObjectType | ActivityType,\n obj: CrmObjectInterface,\n schemaMap: { [schemaId: string]: FieldSchemaInterface },\n columnData: ColumnDataInterface,\n ) {\n return this.getTableCustomizationService(objectType)?.customizeRowData(obj, schemaMap, columnData);\n }\n\n lookupRowDisplayName(id: string): Observable {\n return this.data$$.pipe(\n map((rows) => {\n const row = rows.find((r) => r.crmObjectId == id);\n if (!row) {\n return id;\n }\n const firstName = row?.fields?.find((f) => f.externalId == 'standard__first_name')?.stringValue;\n const lastName = row?.fields?.find((f) => f.externalId == 'standard__last_name')?.stringValue;\n if (firstName || lastName) {\n return `${firstName} ${lastName}`.trim();\n }\n const email = row?.fields?.find((f) => f.externalId == 'standard__email')?.stringValue;\n if (email) {\n return email;\n }\n const phone = row?.fields?.find((f) => f.externalId == 'standard__phone_number')?.stringValue;\n if (phone) {\n return phone;\n }\n return id;\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.previewObjectService.clearPreview();\n }\n}\n\ninterface ComponentState {\n objectType: ObjectType;\n activityType?: ActivityType;\n fieldSchemas: FieldSchemaInterface[];\n columns: GalaxyColumnDef[];\n groupConfigs: GalaxyColumnDef[];\n initialLoading: boolean;\n receivedObject: boolean;\n deletedObjectIds: string[];\n}\n"], "mappings": "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", "names": ["ListObjectsTableService", "constructor", "config", "objectsService", "fieldsService", "state", "translate", "previewObjectService", "trackingService", "contactCustomization", "companyCustomization", "taskCustomization", "tableStateService", "snackService", "crmFormService", "columns$", "select", "groupConfigs$", "initialLoading$", "deletedObjectIds$", "showEmptyState$", "combineLatest", "pipe", "map", "loading", "hasObjects", "showObjects$", "showEmptyState", "data$$", "BehaviorSubject", "data$", "rows", "deleted", "filter", "r", "includes", "crmObjectId", "filters", "sorting", "baseColumnIds", "showActions", "initial", "objectType", "fieldSchemas", "columns", "groupConfigs", "initialLoading", "receivedObject", "deletedObjectIds", "set", "schemas$", "namespace$", "distinctUntilChanged", "a", "b", "JSON", "stringify", "switchMap", "listAllObjectFields$", "connect", "schemas", "observeOn", "asyncScheduler", "schema", "fieldSchemaToTableColumn", "applyColumnLayout$", "customizedColumns", "get", "addStaticColumns", "showBaseColumns", "initializeLocalStorageColumns", "addColumnGroups", "paginatedAPI", "req", "results", "listObjects", "catchError", "openErrorSnack", "of", "crmObjects", "pagingMetadata", "nextCursor", "hasMore", "tap", "resp", "length", "searchOptions", "text", "trackEvent", "searchFields", "fields", "next", "withLatestFrom", "objectListResp", "data", "crmObjectsToTableRows", "totalResults", "Infinity", "id", "dataSource", "GalaxyDataSource", "listAllObjectFieldGroups$", "fieldGroups", "fieldIds", "reduce", "fieldGroup", "concat", "sortedColumns", "parse", "sort", "indexA", "indexOf", "external_id", "indexB", "firstFieldGroupFieldIds", "column", "hidden", "actionsColumn", "title", "instant", "pinned", "stickyEnd", "sortable", "groups", "group", "fieldGroupId", "description", "fieldId", "find", "moveItemsToBeginning", "identifiersToMove", "movedToFront", "col", "c", "push", "movedToBack", "m", "isMobile", "index", "findIndex", "deleteObject", "objectId", "deleteCrmObject", "take", "setObjectType", "setActivityType", "activityType", "setBaseColumns", "setShowActions", "filterGroup", "convertFilters", "getActivityTypeFilter", "sortBy", "convertSortBy", "objType", "getTableCustomizationService", "defaultSortingOptions", "search", "searchTerm", "filtersV2", "pagingOptions", "cursor", "pageSize", "listRequestIsPristine", "withPreview", "clearPreview", "SystemFieldIds", "ActivityType", "operator", "FilterOperator", "FILTER_OPERATOR_IS", "values", "string", "externalId", "fieldName", "objects", "schemaMap", "forEach", "obj", "columnData", "field", "getValueByType", "customizeRowData", "fieldType", "FieldType", "FIELD_TYPE_CURRENCY", "FIELD_TYPE_INTEGER", "cellType", "value", "integerValue", "FIELD_TYPE_FLOAT", "floatValue", "FIELD_TYPE_DATETIME", "FIELD_TYPE_DATE", "dateData", "dateValue", "FIELD_TYPE_PHONE", "phoneData", "stringValue", "FIELD_TYPE_STRING", "FIELD_TYPE_EMAIL", "textData", "FIELD_TYPE_DROPDOWN", "dropDownOptionData", "FIELD_TYPE_BOOLEAN", "booleanValue", "FIELD_TYPE_TAG", "FIELD_TYPE_STRING_LIST", "stringValues", "label", "dropdownOptions", "o", "link", "LIST_OBJECTS_DEFAULT_PAGE_SIZE", "customizeColumns", "lookupRowDisplayName", "row", "firstName", "f", "lastName", "trim", "email", "phone", "ngOnDestroy", "\u0275\u0275inject", "CrmInjectionToken", "CrmObjectService", "CrmFormService", "RxState", "TranslateService", "PreviewObjectService", "CRMTrackingService", "ContactTableCustomizationService", "CompanyTableCustomizationService", "TaskTableCustomizationService", "CrmTableStateService", "SnackbarService", "factory", "\u0275fac", "_ListObjectsTableService"] }