@integec/grid-tools
Version:
Integ Grid Tools
334 lines (262 loc) • 10.4 kB
JavaScript
;
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