forest-express
Version:
Official package for all Forest Express Lianas
115 lines (114 loc) • 2.94 kB
JavaScript
"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
});
};