UNPKG

@integec/grid-tools

Version:
334 lines (262 loc) 10.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createControlledEditProps = exports.computeAltIndexes = exports.sumHeight = exports.rawToValue = exports.toSelectionColProps = exports.extractAndFormatData = exports.formatData = exports.extractData = exports.eventBroadcaster = exports.isPositionValid = exports.extractColIdent = exports.extractPosition = exports.sumWidth = exports.normalizeBounds = exports.fromEmpty = void 0; var _add2 = _interopRequireDefault(require("ramda/src/add")); var _range2 = _interopRequireDefault(require("ramda/src/range")); var _toPairs2 = _interopRequireDefault(require("ramda/src/toPairs")); var _sortBy2 = _interopRequireDefault(require("ramda/src/sortBy")); var _map2 = _interopRequireDefault(require("ramda/src/map")); var _sum2 = _interopRequireDefault(require("ramda/src/sum")); var _compose2 = _interopRequireDefault(require("ramda/src/compose")); var _isNil2 = _interopRequireDefault(require("ramda/src/isNil")); var _isEmpty2 = _interopRequireDefault(require("ramda/src/isEmpty")); var _data = require("data.maybe"); var _moment = _interopRequireDefault(require("moment")); var _numeral = _interopRequireDefault(require("numeral")); var _constants = require("./constants.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } var fromEmpty = function fromEmpty(d) { return (0, _data.fromNullable)(d).chain(function (v) { return (0, _isEmpty2["default"])(v) ? (0, _data.Nothing)() : (0, _data.Just)(v); }); }; exports.fromEmpty = fromEmpty; var normalizeBounds = function normalizeBounds(selection) { if ((0, _isEmpty2["default"])(selection)) return selection; var x1 = selection.x1, y1 = selection.y1, x2 = selection.x2, y2 = selection.y2; var xMin = !(0, _isNil2["default"])(x2) ? Math.min(x1, x2) : x1; var xMax = !(0, _isNil2["default"])(x2) ? Math.max(x1, x2) : x1; var yMin = !(0, _isNil2["default"])(y2) ? Math.min(y1, y2) : y1; var yMax = !(0, _isNil2["default"])(y2) ? Math.max(y1, y2) : y1; return { x1: xMin, x2: xMax, y1: yMin, y2: yMax }; }; exports.normalizeBounds = normalizeBounds; var sumWidth = (0, _compose2["default"])(_sum2["default"], (0, _map2["default"])(function (_ref) { var width = _ref.width; return width; })); exports.sumWidth = sumWidth; var extractPosition = function extractPosition(evt) { return { rowIndex: (0, _data.fromNullable)(evt.target.getAttribute(_constants.ROW_INDEX_ATTRIBUTE)).map(parseInt).getOrElse(undefined), columnIndex: (0, _data.fromNullable)(evt.target.getAttribute(_constants.COLUMN_INDEX_ATTRIBUTE)).map(parseInt).getOrElse(undefined) }; }; exports.extractPosition = extractPosition; var extractColIdent = function extractColIdent(evt) { return evt.target.getAttribute(_constants.COL_IDENT_ATTRIBUTE); }; exports.extractColIdent = extractColIdent; var isPositionValid = function isPositionValid(pos) { return !(0, _isNil2["default"])(pos) && !(0, _isNil2["default"])(pos.rowIndex) && !(0, _isNil2["default"])(pos.columnIndex); }; exports.isPositionValid = isPositionValid; var eventBroadcaster = function eventBroadcaster(listeners) { return function (e) { return listeners.filter(function (l) { return !(0, _isNil2["default"])(l); }).forEach(function (l) { return l(e); }); }; }; exports.eventBroadcaster = eventBroadcaster; var extractData = function extractData(_ref2) { var header = _ref2.header, _ref2$rowData = _ref2.rowData, rowData = _ref2$rowData === void 0 ? [] : _ref2$rowData, dataFormat = _ref2.dataFormat; var dataGetter = header.dataGetter, type = header.type, ident = header.ident; var rawData = rowData[ident]; if (dataGetter) { return dataGetter({ header: header, rowData: rowData }); } if (type === 'date-time') { return (0, _isNil2["default"])(rowData) ? undefined : _moment["default"].isDate(rowData) ? (0, _moment["default"])(rawData).format(dataFormat) : _moment["default"].isMoment(rawData) ? rawData.formatData(dataFormat) : rawData; } return rawData; }; exports.extractData = extractData; var formatData = function formatData(_ref3) { var header = _ref3.header, value = _ref3.value, rowData = _ref3.rowData; var type = header.type, dataFormat = header.dataFormat, displayFormat = header.displayFormat, dataFormatter = header.dataFormatter; if (dataFormatter) { return dataFormatter({ header: header, value: value, rowData: rowData }); } if ((0, _isNil2["default"])(value)) { return ''; } if (type === 'num' && displayFormat) { return isNaN(parseInt(value)) ? value : (0, _numeral["default"])(value).format(displayFormat); } if (type === 'date-time' && displayFormat) { return (0, _moment["default"])(value, dataFormat).format(displayFormat); } return value + ''; }; exports.formatData = formatData; var extractAndFormatData = function extractAndFormatData(_ref4) { var header = _ref4.header, rowData = _ref4.rowData; return formatData({ header: header, value: extractData({ header: header, rowData: rowData }), rowData: rowData }); }; exports.extractAndFormatData = extractAndFormatData; var toSelectionColProps = function toSelectionColProps(keyValues) { if (!keyValues) { console.warn('called select Colprops with null or undefined'); return {}; } if (keyValues instanceof Map) { var choices = []; keyValues.forEach(function (value, key) { return choices.push({ text: value, value: key }); }); return { choices: choices, dataFormatter: function dataFormatter(_ref5) { var value = _ref5.value; return keyValues.has(value) ? keyValues.get(value) : value; } }; } else { return { choices: (0, _compose2["default"])((0, _map2["default"])(function (_ref6) { var _ref7 = _slicedToArray(_ref6, 2), value = _ref7[0], text = _ref7[1]; return { value: value, text: text }; }), (0, _sortBy2["default"])(function (_ref8) { var _ref9 = _slicedToArray(_ref8, 2), _ = _ref9[0], name = _ref9[1]; return name.toLowerCase(); }), _toPairs2["default"])(keyValues), dataFormatter: function dataFormatter(_ref10) { var value = _ref10.value; return (0, _isNil2["default"])(keyValues[value]) ? value : keyValues[value]; } }; } }; exports.toSelectionColProps = toSelectionColProps; var isIntermediateNumber = function isIntermediateNumber(value) { return value.endsWith('.') && value.lastIndexOf('.') === value.indexOf('.') && !(0, _isNil2["default"])((0, _numeral["default"])(value.replace('.', ''))) || value.trim().length === 1 && value.match('-') || value.endsWith('0') || value.endsWith(' '); }; var rawToValue = function rawToValue(_ref11) { var value = _ref11.value, _ref11$header = _ref11.header, type = _ref11$header.type, dataFormat = _ref11$header.dataFormat; // console.log('raw value is ', value) // TODO: timezone issue if (_moment["default"].isMoment(value)) { return value.format(dataFormat); } if (_moment["default"].isDate(value)) { return (0, _moment["default"])(value).format(dataFormat); } if (type === 'num' && typeof value === 'string') { if (value.trim().length === 0) return ''; if (isIntermediateNumber(value)) return value.trim(); var parsedValue = (0, _numeral["default"])(value).value(); // console.log('parsed value is ', parsedValue) if (isNaN(parsedValue) || (0, _isNil2["default"])(parsedValue)) return undefined; return parsedValue; } if (type === 'bool' && typeof value === 'string') { return [value.toLowerCase()].map(function (v) { return v === 'y' || v === 'yes' || v === 'true'; })[0]; } return value; }; exports.rawToValue = rawToValue; var sumHeight = function sumHeight(_ref12) { var _ref12$data = _ref12.data, data = _ref12$data === void 0 ? [] : _ref12$data, rowHeight = _ref12.rowHeight; if (typeof rowHeight === 'function') { return (0, _range2["default"])(0, data.length).map(rowHeight).reduce(_add2["default"]); } return rowHeight * data.length; }; exports.sumHeight = sumHeight; var computeAltIndexes = function computeAltIndexes(_ref13) { var data = _ref13.data, altBy = _ref13.altBy; if (altBy == null || data == null || data.length === 0) return null; var indexArray = data.map(altBy); var lastGroup = null; var result = []; var altIdx = 0; for (var i = 0; i < indexArray.length; i++) { var isAlt = lastGroup != null && lastGroup !== indexArray[i]; result.push(isAlt ? ++altIdx : altIdx); lastGroup = indexArray[i]; } return result.map(function (idx) { return idx % 2 === 1; }); }; exports.computeAltIndexes = computeAltIndexes; var createControlledEditProps = function createControlledEditProps(_ref14) { var data = _ref14.data, setData = _ref14.setData, processEdit = _ref14.processEdit; var onEdit = function onEdit(editInfo, focus) { setData(processEdit(editInfo)(data)); focus(); }; var onBatchUpdate = function onBatchUpdate(updates, focus) { setData(updates.map(processEdit).reduce(function (a, b) { return b(a); }, data)); focus(); }; return { onEdit: onEdit, onBatchUpdate: onBatchUpdate }; }; exports.createControlledEditProps = createControlledEditProps; //# sourceMappingURL=utils.js.map