@kineticdata/react
Version:
A React library for the Kinetic Platform
267 lines (266 loc) • 7.4 kB
JavaScript
;
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;