all files / src/ util.js

98.11% Statements 52/53
78.57% Branches 22/28
100% Functions 7/7
98.08% Lines 51/52
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107                        16× 16× 28×   16×                 17× 17× 68×   17×         16× 16× 16× 28× 28× 17×   28× 48×   47×                 62× 62×   62× 53× 53× 53× 104×   53×   13×                 17×   17× 17×       17× 92× 92× 24×     17×      
'use strict';
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
 
var _deepcopy = require('deepcopy');
 
var _deepcopy2 = _interopRequireDefault(_deepcopy);
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
/**
 * (1, 3) => [1, 2, 3]
 * (0, 2) => [0, 1]
 */
var makeArray = function makeArray(start, length) {
  var arr = [];
  for (var i = 0; i < length; i += 1) {
    arr.push(start + i);
  }
  return arr;
};
 
exports['default'] = {
  /**
   * generate a virtual matrix used to generate real matrix with conflict detect
   * @return {array} a virtual matrix if generated.
   * @return {string} error message if conflict is detected.
   */
  generateVM: function generateVM(data) {
    var vm = [];
    var numData = data.map(function (item) {
      var newItem = (0, _deepcopy2['default'])(item);
      ['x', 'y', 'col', 'row'].forEach(function (key) {
        newItem[key] = parseInt(newItem[key], 10);
      });
      return newItem;
    });
    // const realMatrix = [[]];
    // let prevCell = { x: 0 };
    // conflict detect
    for (var i = 0; i < numData.length; i += 1) {
      var cell = numData[i];
      var indexArr = makeArray(cell.x, cell.col);
      for (var j = 0; j < indexArr.length; j += 1) {
        var index = indexArr[j];
        if (!vm[index]) {
          vm[index] = [];
        }
        for (var m = 0; m < cell.row; m += 1) {
          if (vm[index][m + cell.y]) {
            return 'Conflict detect: the conflicted cell is ' + JSON.stringify(cell);
          }
          vm[index][m + cell.y] = 1;
        }
      }
    }
    return {
      numData: numData,
      vm: vm
    };
  },
  getSubTotal: function getSubTotal(arr) {
    var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
    var end = arguments[2];
 
    if (typeof arr === 'string' || typeof arr === 'number') {
      var _length = end - start;
      var _total = 0;
      for (var i = 0; i < _length; i += 1) {
        _total += parseInt(arr, 10);
      }
      return _total;
    }
    console.log(arr);
    var length = (end === undefined ? arr.length : end) - start;
    var total = 0;
    for (var _i = 0; _i < length; _i += 1) {
      total += arr[start + _i] || arr[0];
    }
    return total;
  },
 
 
  /**
   * get the largest array from a 2d array
   */
  getLargestArr: function getLargestArr() {
    var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
 
    var largest = [];
    Iif (!arr) {
      return largest;
    }
 
    for (var i = 0; i < arr.length; i += 1) {
      var item = arr[i];
      if (item.length > largest.length) {
        largest = item;
      }
    }
    return largest;
  }
};
module.exports = exports['default'];