@kineticdata/react
Version:
A React library for the Kinetic Platform
181 lines (180 loc) • 6.25 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FileResourceForm = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
var _immutable = require("immutable");
var _apis = require("../../../apis");
var _Form = require("../../form/Form");
var _Form2 = require("../../form/Form.helpers");
var dataSources = function dataSources(_ref) {
var fileResourceSlug = _ref.fileResourceSlug;
return {
fileResource: {
fn: _apis.fetchFileResource,
params: fileResourceSlug && [{
fileResourceSlug: fileResourceSlug,
include: 'details,securityPolicies'
}],
transform: function transform(result) {
return result.fileResource;
}
},
agents: {
fn: _apis.fetchAgentComponents,
params: [],
transform: function transform(result) {
return [{
label: 'System',
value: 'system'
}].concat((0, _toConsumableArray2["default"])((0, _immutable.get)(result, 'agents', []).map(function (agent) {
return {
label: agent.name,
value: agent.slug
};
})));
}
},
filestores: {
fn: function fn(options) {
return options && options.agentSlug ? (0, _apis.fetchFilestores)(options) : Promise.resolve([]);
},
params: function params(_ref2) {
var values = _ref2.values;
return [{
agentSlug: (0, _immutable.get)(values, 'agentSlug', 'system')
}];
},
transform: function transform(result) {
return (0, _immutable.get)(result, 'filestores', []).map(function (agent) {
return {
label: agent.name,
value: agent.slug
};
});
}
},
securityPolicyDefinitions: {
fn: _apis.fetchSecurityPolicyDefinitions,
params: [],
transform: function transform(result) {
return result.securityPolicyDefinitions;
}
}
};
};
var handleSubmit = function handleSubmit(_ref3) {
var fileResourceSlug = _ref3.fileResourceSlug;
return function (values) {
return (fileResourceSlug ? _apis.updateFileResource : _apis.createFileResource)({
fileResourceSlug: fileResourceSlug,
fileResource: values.toJS()
}).then((0, _Form2.handleFormErrors)('fileResource', 'There was a problem saving the File Resource.'));
};
};
var securityEndpoints = {
fileAccess: {
endpoint: 'File Access',
label: 'File Access',
types: ['Space', 'File Resource']
},
fileModification: {
endpoint: 'File Modification',
label: 'File Modification',
types: ['Space', 'File Resource']
}
};
var fields = function fields(_ref4) {
var fileResourceSlug = _ref4.fileResourceSlug;
return function (_ref5) {
var fileResource = _ref5.fileResource,
agents = _ref5.agents,
securityPolicyDefinitions = _ref5.securityPolicyDefinitions;
return (!fileResourceSlug || fileResource) && securityPolicyDefinitions && agents && [{
name: 'slug',
label: 'Slug',
type: 'text',
required: true,
initialValue: (0, _immutable.get)(fileResource, 'slug', '')
}, {
name: 'agentSlug',
label: 'Agent Slug',
type: 'select',
required: true,
initialValue: (0, _immutable.get)(fileResource, 'agentSlug', 'system'),
options: function options(_ref6) {
var agents = _ref6.agents;
return agents;
},
onChange: function onChange(_, _ref7) {
var setValue = _ref7.setValue;
return setValue('filestoreSlug', '');
}
}, {
name: 'filestoreSlug',
label: 'Filestore Slug',
type: 'select',
required: true,
initialValue: (0, _immutable.get)(fileResource, 'filestoreSlug', ''),
options: function options(_ref8) {
var filestores = _ref8.filestores;
return filestores;
}
}].concat((0, _toConsumableArray2["default"])(Object.entries(securityEndpoints).map(function (_ref9) {
var _ref10 = (0, _slicedToArray2["default"])(_ref9, 2),
endpointFieldName = _ref10[0],
endpoint = _ref10[1];
return {
name: endpointFieldName,
label: endpoint.label,
type: 'select',
options: function options(_ref11) {
var securityPolicyDefinitions = _ref11.securityPolicyDefinitions;
return securityPolicyDefinitions ? securityPolicyDefinitions.filter(function (definition) {
return endpoint.types.includes(definition.get('type'));
}).map(function (definition) {
return (0, _immutable.Map)({
value: definition.get('name'),
label: definition.get('name'),
type: definition.get('type')
});
}) : [];
},
initialValue: fileResource ? fileResource.get('securityPolicies').find(function (pol) {
return pol.get('endpoint') === endpoint.endpoint;
}, null, (0, _immutable.Map)({})).get('name', '') : '',
"transient": true
};
})), [{
name: 'securityPolicies',
label: 'Security Policies',
type: null,
visible: false,
serialize: function serialize(_ref12) {
var values = _ref12.values;
return Object.entries(securityEndpoints).map(function (_ref13) {
var _ref14 = (0, _slicedToArray2["default"])(_ref13, 2),
endpointFieldName = _ref14[0],
policy = _ref14[1];
return {
endpoint: policy.endpoint,
name: values.get(endpointFieldName)
};
}).filter(function (endpoint) {
return endpoint.name !== '';
});
},
initialValue: (0, _immutable.get)(fileResource, 'securityPolicies')
}]);
};
};
var FileResourceForm = exports.FileResourceForm = (0, _Form.generateForm)({
formOptions: ['fileResourceSlug'],
dataSources: dataSources,
fields: fields,
handleSubmit: handleSubmit
});
FileResourceForm.displayName = 'FileResourceForm';