UNPKG

dtable-utils

Version:

dtable common utils

50 lines (44 loc) 2 kB
'use strict'; 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;