UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

115 lines (114 loc) 2.94 kB
"use strict"; var _require = require('@forestadmin/context'), inject = _require.inject; var _ = require('lodash'); var _require2 = require('../../utils/integrations'), pushIntoApimap = _require2.pushIntoApimap; var INTEGRATION_NAME = 'mixpanel'; exports.createCollections = function (Implementation, apimap, collectionAndFieldName, options) { var _inject = inject(), modelsManager = _inject.modelsManager; var model = modelsManager.getModels()[collectionAndFieldName.split('.')[0]]; var modelName = Implementation.getModelName(model); var collectionDisplayName = _.capitalize(modelName); var fields = [{ field: 'id', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'event', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'date', type: 'Date', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'city', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'region', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'country', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'timezone', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'os', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'osVersion', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'browser', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }, { field: 'browserVersion', type: 'String', isVirtual: true, isFilterable: false, isSortable: false }]; if (options.integrations.mixpanel.customProperties) { // eslint-disable-next-line prefer-spread fields.push.apply(fields, options.integrations.mixpanel.customProperties.map(function (propertyName) { return { field: propertyName, type: 'String', isVirtual: true, isFilterable: false, isSortable: false }; })); } pushIntoApimap(apimap, { name: "".concat(modelName, "_mixpanel_events"), displayName: "".concat(collectionDisplayName, " Events"), icon: 'mixpanel', isVirtual: true, integration: INTEGRATION_NAME, isReadOnly: true, onlyForRelationships: true, paginationType: 'cursor', fields: fields }); }; exports.createFields = function (implementation, model, schemaFields) { schemaFields.push({ field: 'mixpanel_last_events', displayName: 'Last events', type: ['String'], reference: "".concat(implementation.getModelName(model), "_mixpanel_events.id"), column: null, integration: INTEGRATION_NAME }); };