UNPKG

@kineticdata/react

Version:
181 lines (180 loc) 6.25 kB
"use strict"; 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';