UNPKG

@kineticdata/react

Version:
267 lines (266 loc) 7.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.KappSubmissionTable = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray")); var _immutable = require("immutable"); var _Table = require("../../table/Table"); var _apis = require("../../../apis"); var applyMeta = function applyMeta(query, op, rvalue) { return rvalue ? query[op](rvalue) : query; }; var applyOp = function applyOp(query, op, lvalue, rvalue) { return rvalue ? query[op](lvalue, rvalue) : query; }; var submissionSearch = function submissionSearch(_ref, include) { var filters = _ref.filters, pageSize = _ref.pageSize, sortColumn = _ref.sortColumn, sortDirection = _ref.sortDirection; var query = new _apis.SubmissionSearch().includes((0, _immutable.Set)([].concat((0, _toConsumableArray2["default"])(typeof include === 'string' ? include.split(',') : Array.isArray(include) ? include : []), ['details', 'form'])).toJS()).sortBy(sortColumn || 'createdAt').sortDirection(sortDirection.toLocaleUpperCase()).limit(pageSize); applyMeta(query, 'coreState', filters.get('coreState')); applyMeta(query, 'startDate', filters.get('startDate') && new Date("".concat(filters.get('startDate'), "T00:00:00"))); applyMeta(query, 'endDate', filters.get('endDate') && new Date("".concat(filters.get('endDate'), "T00:00:00"))); applyOp(query, 'eq', 'handle', filters.get('handle')); applyOp(query, 'eq', 'submittedBy', filters.getIn(['submittedBy', 'username'])); filters.get('values', (0, _immutable.Map)()).forEach(function (value, field) { return applyOp(query, 'eq', "values[".concat(field, "]"), value); }); return query.build(); }; var dataSource = function dataSource(_ref2) { var formSlug = _ref2.formSlug, kappSlug = _ref2.kappSlug, include = _ref2.include; return { fn: _apis.searchSubmissions, params: function params(paramData) { return [{ kapp: kappSlug, form: paramData.filters.getIn(['form', 'slug'], formSlug), pageToken: paramData.nextPageToken, search: submissionSearch(paramData, include) }]; }, transform: function transform(result) { return { data: result.submissions, nextPageToken: result.nextPageToken }; } }; }; var onValidateFilters = function onValidateFilters(filters) { return filters.getIn(['values', 'value'], (0, _immutable.List)()).reduce(function (valid, value) { return valid && value.get('field') !== '' ? value.get('value') !== '' : valid; }, true); }; var filterDataSources = function filterDataSources(_ref3) { var kappSlug = _ref3.kappSlug, formSlug = _ref3.formSlug; return { kapp: { fn: _apis.fetchKapp, params: [{ kappSlug: kappSlug, include: 'fields' }], transform: function transform(result) { return result.kapp; } }, form: { fn: function fn(formSlug) { return formSlug ? (0, _apis.fetchForm)({ kappSlug: kappSlug, formSlug: formSlug, include: 'fields' }) : null; }, params: function params(_ref4) { var values = _ref4.values; return [(0, _immutable.getIn)(values, ['form', 'slug'], formSlug)]; }, transform: function transform(result) { return result && result.form; } }, fieldOptions: { fn: function fn(form, kapp) { return form ? form.get('fields').toArray() : kapp.get('fields').toArray(); }, params: function params(_ref5) { var form = _ref5.form, kapp = _ref5.kapp; return kapp && [form, kapp]; }, transform: function transform(result) { return result.map(function (field) { return { label: field.get('name'), value: field.get('name') }; }); } }, coreStateOptions: { fn: function fn() { return _apis.VALID_KAPP_CORE_STATES; }, params: [], transform: function transform(coreStates) { return coreStates.map(function (coreState) { return { label: coreState, value: coreState }; }); } } }; }; var filters = function filters(_ref6) { var kappSlug = _ref6.kappSlug, formSlug = _ref6.formSlug; return function (_ref7) { var coreStateOptions = _ref7.coreStateOptions; return coreStateOptions && [{ label: 'Start Date', name: 'startDate', type: 'date' }, { label: 'End Date', name: 'endDate', type: 'date' }, { label: 'Handle', name: 'handle', pattern: /[A-F0-9]{6}/, patternMessage: 'Handles only contain characters A-F and 0-9, and are exactly 6 characters long', type: 'text' }, !formSlug && { label: 'Form', name: 'form', type: 'form', search: { kappSlug: kappSlug } }, { label: 'Submitted By', name: 'submittedBy', type: 'user' }, { label: 'State', name: 'coreState', type: 'select', options: coreStateOptions }, { label: 'Values', name: 'values', type: 'map', options: function options(_ref8) { var fieldOptions = _ref8.fieldOptions; return fieldOptions; } }]; }; }; var columns = [{ value: 'closedAt', title: 'Closed At', sortable: true, toggleable: true }, { value: 'closedBy', title: 'Closed By', sortable: false, toggleable: true }, { value: 'coreState', title: 'Core State', sortable: false, toggleable: true }, { value: 'createdAt', title: 'Created At', sortable: true, toggleable: true }, { value: 'createdBy', title: 'Created By', sortable: false, toggleable: true }, { value: 'currentPage', title: 'Current Page', sortable: false, toggleable: true }, { value: 'handle', title: 'Handle', sortable: false, toggleable: false, columnOrder: 'first' }, { value: 'id', title: 'ID', sortable: false, toggleable: true }, { value: 'label', title: 'Label', sortable: false, toggleable: true }, { value: 'origin', title: 'Origin', sortable: false, toggleable: true }, { value: 'parent', title: 'Parent', sortable: false, toggleable: true }, { value: 'sessionToken', title: 'Session Token', sortable: false, toggleable: true }, { value: 'submittedAt', title: 'Submitted At', sortable: true, toggleable: true }, { value: 'submittedBy', title: 'Submitted By', sortable: false, toggleable: true }, { value: 'type', title: 'Type', sortable: false, toggleable: true }, { value: 'updatedAt', title: 'Updated At', sortable: true, toggleable: true }, { value: 'updatedBy', title: 'Updated By', sortable: false, toggleable: true }]; var KappSubmissionTable = exports.KappSubmissionTable = (0, _Table.generateTable)({ tableOptions: ['kappSlug', 'formSlug', 'datastore', 'include'], columns: columns, dataSource: dataSource, filterDataSources: filterDataSources, filters: filters, onValidateFilters: onValidateFilters }); KappSubmissionTable.displayName = 'KappSubmissionTable'; var _default = exports["default"] = KappSubmissionTable;