dtable-utils
Version:
dtable common utils
50 lines (44 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var core = require('../core.js');
var sort = require('../../constants/sort.js');
/**
* Sort multiple-select
* @param {array} leftOptionIds the ids of options
* @param {array} rightOptionIds
* @param {string} sort_type e.g. 'up' | 'down'
* @param {object} option_id_index_map e.g. { [option.id]: 0, ... }
* @returns number
*/
var sortMultipleSelect = function sortMultipleSelect(leftOptionIds, rightOptionIds, _ref) {
var sort_type = _ref.sort_type,
option_id_index_map = _ref.option_id_index_map;
var emptyLeftOptionIds = !leftOptionIds || leftOptionIds.length === 0;
var emptyRightOptionIds = !rightOptionIds || rightOptionIds.length === 0;
if (emptyLeftOptionIds && emptyRightOptionIds) return 0;
if (emptyLeftOptionIds) return 1;
if (emptyRightOptionIds) return -1;
var leftOptionIndexes = core.getMultipleIndexesOrderbyOptions(leftOptionIds, option_id_index_map);
var rightOptionIndexes = core.getMultipleIndexesOrderbyOptions(rightOptionIds, option_id_index_map);
var leftOptionsLen = leftOptionIndexes.length;
var rightOptionsLen = rightOptionIndexes.length;
// current multiple select equal to next multiple select.
if (leftOptionsLen === rightOptionsLen && (leftOptionsLen === 0 || leftOptionIndexes.join('') === rightOptionIndexes.join(''))) {
return 0;
}
var len = Math.min(leftOptionsLen, rightOptionsLen);
for (var i = 0; i < len; i++) {
if (leftOptionIndexes[i] > rightOptionIndexes[i]) {
return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
}
if (leftOptionIndexes[i] < rightOptionIndexes[i]) {
return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
}
}
if (leftOptionsLen > rightOptionsLen) {
return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
}
return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
};
exports.getMultipleIndexesOrderbyOptions = core.getMultipleIndexesOrderbyOptions;
exports.sortMultipleSelect = sortMultipleSelect;