@kineticdata/react
Version:
A React library for the Kinetic Platform
88 lines (86 loc) • 2.67 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BridgeModelAttributeTable = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
var _Table = require("../../table/Table");
var _apis = require("../../../apis");
var _helpers = require("../../../helpers");
var clientSide = (0, _helpers.defineFilter)(true).startsWith('name', 'name').end();
// Handles bridge model api response by checking for error and also returning
// error if active mapping is not present. If valid returns object with the
// attributes and their mappings.
var handleBridgeModel = function handleBridgeModel(_ref) {
var _ref$bridgeModel = _ref.bridgeModel,
error = _ref$bridgeModel.error,
attributes = _ref$bridgeModel.attributes,
activeMappingName = _ref$bridgeModel.activeMappingName,
mappings = _ref$bridgeModel.mappings;
if (error) {
return {
error: error
};
}
var mapping = mappings.find(function (_ref2) {
var name = _ref2.name;
return name === activeMappingName;
});
if (!mapping) {
return {
error: 'Invalid bridge model, active mapping not found'
};
}
return {
attributes: attributes,
attributeMappings: mapping.attributes
};
};
var transform = function transform(_ref3) {
var attributes = _ref3.attributes,
attributeMappings = _ref3.attributeMappings;
return {
data: attributes.map(function (attribute) {
var mapping = attributeMappings.find(function (_ref4) {
var name = _ref4.name;
return name === attribute.name;
});
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, attribute), {}, {
structureField: mapping ? mapping.structureField || '' : null
});
})
};
};
var dataSource = function dataSource(_ref5) {
var modelName = _ref5.modelName;
return {
fn: function fn() {
return (0, _apis.fetchBridgeModel)({
modelName: modelName
}).then(handleBridgeModel);
},
clientSide: clientSide,
params: function params() {
return [{
modelName: modelName
}];
},
transform: transform
};
};
var columns = [{
value: 'name',
title: 'Name',
sortable: true
}, {
value: 'structureField',
title: 'Mapping',
type: 'text'
}];
var BridgeModelAttributeTable = exports.BridgeModelAttributeTable = (0, _Table.generateTable)({
columns: columns,
dataSource: dataSource,
tableOptions: ['modelName']
});
BridgeModelAttributeTable.displayName = 'BridgeModelAttributeTable';