UNPKG

jbzwebsdk

Version:

Shanghai jinbaozheng easy network technology Co.,Ltd sdk

864 lines (809 loc) 35.5 kB
"use strict"; /** * Created by cuppi on 2016/12/5. */ var _typeof2 = require("babel-runtime/helpers/typeof"); var _typeof3 = _interopRequireDefault(_typeof2); var _promise = require("babel-runtime/core-js/promise"); var _promise2 = _interopRequireDefault(_promise); var _map = require("babel-runtime/core-js/map"); var _map2 = _interopRequireDefault(_map); var _parseInt = require("babel-runtime/core-js/number/parse-int"); var _parseInt2 = _interopRequireDefault(_parseInt); var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); var _assign = require("babel-runtime/core-js/object/assign"); var _assign2 = _interopRequireDefault(_assign); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require("babel-runtime/helpers/createClass"); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } Object.defineProperty(exports, "__esModule", { value: true }); var JToolString_1 = require("../tool/JToolString"); var AutoSeatPicking_1 = require("../arithmetic/AutoSeatPicking"); var _cellSize = 30; var _cellRowSpace = 8; var _cellColSpace = 8; var instance = null; /** * 座位图管理类 * @module manager */ var SeatManager = function () { /** * 构造器 * @returns {*} */ function SeatManager() { (0, _classCallCheck3.default)(this, SeatManager); if (!instance) { instance = this; } return instance; } /** * 单例方法 * @returns {SeatManager} */ (0, _createClass3.default)(SeatManager, [{ key: "smartSeatsFromSeats", /** * 对原始座位图进行智能转换 * @param type 平台类型 * @param seatData 座位图原始数据 * @returns {Array} 智能座位图列表 */ value: function smartSeatsFromSeats(type, seatData) { var seatList = this.unitySeatWithSeatData(type, seatData); // 获取智能座位图 return this.smartSeatsWithSeats(type, seatList); } /** * 获取智能座位图元数据 * @param type 平台类型 * @param smartSeats 智能座位图 * @returns {{smartSeats: Array, seatRowData: Array.<*>}} 智能座位图详细信息 */ }, { key: "smartSeatDataFromSmartSeats", value: function smartSeatDataFromSmartSeats(type, smartSeats) { var seatRowData = this.rowDataFromSmartSeats(smartSeats); var seatContentData = this.seatContentDataFromSmartSeats(smartSeats); return (0, _assign2.default)({ smartSeats: smartSeats, seatRowData: seatRowData }, seatContentData); } /** * 对原始座位图进行智能转换 * @param type 平台类型 * @param seatData 座位图原始数据 * @returns {{smartSeats: Array, seatRowData: Array.<*>}} 智能座位图详细信息 */ }, { key: "smartSeatDataFromSeats", value: function smartSeatDataFromSeats(type, seatData) { // 获取智能座位图 var smartSeats = this.smartSeatsFromSeats(type, seatData); return this.smartSeatDataFromSmartSeats(type, smartSeats); } /** *********************** 下面的方法为内部方法 ******************** **/ /** * 统一座位格式 * @private * @param type * @param seatData * @returns {Array} */ }, { key: "unitySeatWithSeatData", value: function unitySeatWithSeatData(type, seatData) { if (!seatData) { return []; } if (type === 'maoyan' || type === 'meituan' || type === 'dazhong') { var _seatList = []; var sections = seatData.sections; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)(sections), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var section = _step.value; for (var sectionId in section) { if (section.hasOwnProperty(sectionId)) { var _seatMap = section[sectionId].seatMap; var _maxRow = section[sectionId].maxRow ? section[sectionId].maxRow : 0; var _maxColumn = section[sectionId].maxColumn ? section[sectionId].maxColumn : 0; for (var i = 0; i <= _maxRow; i++) { for (var j = 0; j <= _maxColumn; j++) { var seat = _seatMap[i + ':' + j]; // 去掉走廊 if (seat && seat.status !== 'E') { seat.sectionId = sectionId; // 时间复杂度多了 但是代码整洁 _seatList.push(seat); } } } } } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return _seatList; } // 淘票票预处理 if (type === 'taobao' && !seatData.regular) { seatData = this.handleTaoBaoSeatData(seatData); } var seatList = []; var seatMap = seatData.seatMap; var maxRow = seatData.maxRow; var maxColumn = seatData.maxColumn; // 获取基本座位图 if (type === 'danche') { for (var _i = 0; _i <= maxRow; _i++) { for (var _j = 0; _j <= maxColumn; _j++) { var _seat = seatMap[_i + ':' + _j]; if (_seat && _seat.isSeat) { // 时间复杂度多了 但是代码整洁 seatList.push(_seat); } } } } else if (type === 'baidu') { for (var _i2 = 0; _i2 <= maxRow; _i2++) { for (var _j2 = 0; _j2 <= maxColumn; _j2++) { var _seat2 = seatMap[_i2 + ':' + _j2]; if (_seat2 && _seat2.seatNo && _seat2.seatNo !== '') { _seat2.rowId = _i2; _seat2.columnId = _j2; // 时间复杂度多了 但是代码整洁 seatList.push(_seat2); } } } } else { for (var _i3 = 0; _i3 <= maxRow; _i3++) { for (var _j3 = 0; _j3 <= maxColumn; _j3++) { var _seat3 = seatMap[_i3 + ':' + _j3]; if (_seat3) { // 时间复杂度多了 但是代码整洁 seatList.push(_seat3); } } } } return seatList; } /** * 淘票票座位图处理 * @param seatData * @returns {*} */ }, { key: "handleTaoBaoSeatData", value: function handleTaoBaoSeatData(seatData) { var seatMap = seatData.seatMap; var seatRowList = []; var seatColList = []; for (var key in seatMap) { if (seatMap.hasOwnProperty(key)) { var location = key.split(':'); seatRowList.push(parseInt(location[0])); seatColList.push(parseInt(location[1])); } } seatRowList.sort(function (a, b) { return a - b && (a - b) / Math.abs(a - b); }); seatColList.sort(function (a, b) { return a - b && (a - b) / Math.abs(a - b); }); var closeRowSpace = {}; var closeColSpace = {}; for (var i = 1, l = Math.min(seatRowList.length, seatColList.length); i < l; i++) { var rowOffset = seatRowList[i] - seatRowList[i - 1]; if (closeRowSpace.hasOwnProperty(rowOffset)) { closeRowSpace[rowOffset]++; } else { closeRowSpace[rowOffset] = 1; } var colOffset = seatColList[i] - seatColList[i - 1]; if (closeColSpace.hasOwnProperty(colOffset)) { closeColSpace[colOffset]++; } else { closeColSpace[colOffset] = 1; } } var rowSpace = Number.MAX_VALUE; var rowStress = 0; for (var spaceString in closeRowSpace) { if (closeRowSpace.hasOwnProperty(spaceString)) { var space = parseInt(spaceString); if (space !== 0 && closeRowSpace[space] > rowStress) { rowSpace = space; rowStress = closeRowSpace[space]; } } } var colSpace = Number.MAX_VALUE; var colStress = 0; for (var _spaceString in closeColSpace) { var _space = parseInt(_spaceString); if (_space !== 0 && closeColSpace[_space] > colStress) { colSpace = _space; colStress = closeColSpace[_space]; } } var filteredSeatMap = {}; for (var _key in seatMap) { if (seatMap.hasOwnProperty(_key)) { var _location = _key.split(':'); var filteredRow = Math.floor(parseInt(_location[0]) / rowSpace); var filteredCol = Math.floor(parseInt(_location[1]) / colSpace); var rowId = Math.floor(seatMap[_key].rowId / rowSpace); var columnId = Math.floor(seatMap[_key].columnId / colSpace); filteredSeatMap[filteredRow + ':' + filteredCol] = (0, _assign2.default)({}, seatMap[_key], { rowId: rowId, columnId: columnId }); } } seatData.seatMap = filteredSeatMap; return seatData; } /** * 获取智能座位图通用方法 * @private * @param type 平台类型 * @param seatList 基本座位图 * @returns {Array} 智能座位图 */ }, { key: "smartSeatsWithSeats", value: function smartSeatsWithSeats(type, seatList) { var smartSeats = []; if (type === 'wangpiao') { smartSeats = this.smartSeatsWithWPSeats(seatList); } if (type === 'spider') { smartSeats = this.smartSeatsWithSPSeats(seatList); } if (type === 'maizuo') { smartSeats = this.smartSeatsWithMZSeats(seatList); } if (type === 'danche') { smartSeats = this.smartSeatsWithDCSeats(seatList); } if (type === 'maoyan' || type === 'meituan' || type === 'dazhong') { smartSeats = this.smartSeatsWithMYSeats(seatList); } if (type === 'baidu') { smartSeats = this.smartSeatsWithBDSeats(seatList); } if (type === 'taobao') { smartSeats = this.smartSeatsWithTBSeats(seatList); } var minRow = Number.MAX_VALUE; var minCol = Number.MAX_VALUE; smartSeats.forEach(function (seat) { minRow = Math.min(minRow, seat.row); minCol = Math.min(minCol, seat.col); }); smartSeats.forEach(function (seat) { seat.adjustRow = seat.row - minRow; seat.adjustCol = seat.col - minCol; seat.rowLocation -= minRow * (_cellSize + _cellRowSpace); seat.colLocation -= minCol * (_cellSize + _cellColSpace); }); return smartSeats; } /** * 获取网票智能座位图 * @private * @param seatList * @returns {Array} */ }, { key: "smartSeatsWithWPSeats", value: function smartSeatsWithWPSeats(seatList) { return seatList.map(function (seatModel) { var row = (0, _parseInt2.default)(seatModel.key.split(':').shift()); var col = (0, _parseInt2.default)(seatModel.key.split(':').pop()); var rowOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.rowName); var colOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.columnName); var rowNumber = JToolString_1.default.numberFromString(seatModel.Name.split(':').shift(), true, 1); var colNumber = JToolString_1.default.numberFromString(seatModel.Name.split(':').pop(), true, 1); return { rowOriNumber: rowOriNumber, colOriNumber: colOriNumber, row: row, col: col, rowNumber: rowNumber, colNumber: colNumber, seatModel: seatModel }; }).map(function (bridgeModel) { var seatRowModel = bridgeModel.seatModel; return (0, _assign2.default)({}, bridgeModel, { // N:lock Y:unLock status: seatRowModel.Status === 'Y' ? 0 : 1, rowLocation: bridgeModel.row * (_cellSize + _cellRowSpace), colLocation: bridgeModel.col * (_cellSize + _cellColSpace), loveIndex: (0, _parseInt2.default)(seatRowModel.LoveFlag) }); }); } /** * 获取蜘蛛智能座位图 * @private * @param seatList * @returns {Array} */ }, { key: "smartSeatsWithSPSeats", value: function smartSeatsWithSPSeats(seatList) { return seatList.map(function (seatModel) { var row = (0, _parseInt2.default)(seatModel.rowNum); var col = (0, _parseInt2.default)(seatModel.columnNum); var rowOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.rowName); var colOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.columnName); var rowNumber = JToolString_1.default.numberFromString(seatModel.rowId, true, 1); var colNumber = JToolString_1.default.numberFromString(seatModel.columnId, true, 1); return { rowOriNumber: rowOriNumber, colOriNumber: colOriNumber, row: row, col: col, rowNumber: rowNumber, colNumber: colNumber, seatModel: seatModel }; }).map(function (bridgeModel) { var seatRowModel = bridgeModel.seatModel; return (0, _assign2.default)({}, bridgeModel, { status: seatRowModel.isLock ? 1 : 0, rowLocation: bridgeModel.row * (_cellSize + _cellRowSpace), colLocation: bridgeModel.col * (_cellSize + _cellColSpace), loveIndex: (0, _parseInt2.default)(seatRowModel.loveIndex) }); }); } /** * 获取卖座智能座位图 * @private * @param seatList * @returns {Array} */ }, { key: "smartSeatsWithMZSeats", value: function smartSeatsWithMZSeats(seatList) { return seatList.map(function (seatModel) { var row = (0, _parseInt2.default)(seatModel.rowNum); var col = (0, _parseInt2.default)(seatModel.columnNum); var rowOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.rowName); var colOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.columnName); var rowNumber = JToolString_1.default.numberFromString(seatModel.rowId, true, 1); var colNumber = JToolString_1.default.numberFromString(seatModel.columnId, true, 1); // 上海百美汇影城 return { rowOriNumber: rowOriNumber, colOriNumber: colOriNumber, row: row, col: col, rowNumber: rowNumber, colNumber: colNumber, seatModel: seatModel }; }).map(function (bridgeModel) { var seatRowModel = bridgeModel.seatModel; return (0, _assign2.default)({}, bridgeModel, { status: seatRowModel.isLock === '1' ? 1 : 0, rowLocation: bridgeModel.row * (_cellSize + _cellRowSpace), colLocation: bridgeModel.col * (_cellSize + _cellColSpace), loveIndex: (0, _parseInt2.default)(seatRowModel.loveIndex) }); }); } /** * 获取单车智能座位图 * @private * @param seatList * @returns {Array} */ }, { key: "smartSeatsWithDCSeats", value: function smartSeatsWithDCSeats(seatList) { return seatList.map(function (seatModel) { var row = (0, _parseInt2.default)(seatModel.rowNum); var col = (0, _parseInt2.default)(seatModel.columnNum); var rowOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.rowName); var colOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.columnName); var rowNumber = JToolString_1.default.numberFromString(seatModel.rowId, true, 1); var colNumber = JToolString_1.default.numberFromString(seatModel.columnId, true, 1); return { rowOriNumber: rowOriNumber, colOriNumber: colOriNumber, row: row, col: col, rowNumber: rowNumber, colNumber: colNumber, seatModel: seatModel }; }).map(function (bridgeModel) { var seatRowModel = bridgeModel.seatModel; console.log(seatRowModel.loveIndex); return (0, _assign2.default)({}, bridgeModel, { status: seatRowModel.isLock ? 1 : 0, rowLocation: bridgeModel.row * (_cellSize + _cellRowSpace), colLocation: bridgeModel.col * (_cellSize + _cellColSpace), loveIndex: (0, _parseInt2.default)(seatRowModel.loveIndex) }); }); } /** * 获取猫眼智能座位图 * @private * @param seatList * @returns {Array} */ }, { key: "smartSeatsWithMYSeats", value: function smartSeatsWithMYSeats(seatList) { return seatList.map(function (seatModel) { var row = (0, _parseInt2.default)(seatModel.rowNo); var col = (0, _parseInt2.default)(seatModel.columnNo); var rowOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.rowId); var colOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.columnId); var rowNumber = JToolString_1.default.numberFromString(seatModel.rowId, true, 1); var colNumber = JToolString_1.default.numberFromString(seatModel.columnId, true, 1); return { rowOriNumber: rowOriNumber, colOriNumber: colOriNumber, row: row, col: col, rowNumber: rowNumber, colNumber: colNumber, seatModel: seatModel }; }).map(function (bridgeModel) { var seatRowModel = bridgeModel.seatModel; var loveIndex = 0; if (seatRowModel.status === 'L') { loveIndex = 1; } else if (seatRowModel.status === 'R') { loveIndex = 2; } return (0, _assign2.default)({}, bridgeModel, { status: seatRowModel.status === 'LK' ? 1 : 0, rowLocation: bridgeModel.row * (_cellSize + _cellRowSpace), colLocation: bridgeModel.col * (_cellSize + _cellColSpace), loveIndex: loveIndex }); }); } /** * 获取百度智能座位图 * @private * @param seatList * @returns {Array} */ }, { key: "smartSeatsWithBDSeats", value: function smartSeatsWithBDSeats(seatList) { return seatList.map(function (seatModel) { var row = (0, _parseInt2.default)(seatModel.rowId); var col = (0, _parseInt2.default)(seatModel.columnId); var rowOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.rowName); var colOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.columnName); var rowNumber = JToolString_1.default.numberFromString(seatModel.rowNo, true, 1); var colNumber = JToolString_1.default.numberFromString(seatModel.columnNo, true, 1); return { rowOriNumber: rowOriNumber, colOriNumber: colOriNumber, row: row, col: col, rowNumber: rowNumber, colNumber: colNumber, seatModel: seatModel }; }).map(function (bridgeModel) { var seatRowModel = bridgeModel.seatModel; return (0, _assign2.default)({}, bridgeModel, { status: seatRowModel.status === '2' ? 1 : 0, rowLocation: bridgeModel.row * (_cellSize + _cellRowSpace), colLocation: bridgeModel.col * (_cellSize + _cellColSpace), loveIndex: (0, _parseInt2.default)(seatRowModel.isLove), areaInfo: seatRowModel.area }); }); } /** * 获取淘票票智能座位图 * @param seatList * @returns {Array} */ }, { key: "smartSeatsWithTBSeats", value: function smartSeatsWithTBSeats(seatList) { return seatList.map(function (seatModel) { var row = (0, _parseInt2.default)(seatModel.rowId); var col = (0, _parseInt2.default)(seatModel.columnId); var rowOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.rowName); var colOriNumber = JToolString_1.default.numberRemoveLeftZero(seatModel.columnName); var rowNumber = JToolString_1.default.numberFromString(rowOriNumber, true, 1); var colNumber = JToolString_1.default.numberFromString(colOriNumber, true, 1); return { rowOriNumber: rowOriNumber, colOriNumber: colOriNumber, row: row, col: col, rowNumber: rowNumber, colNumber: colNumber, seatModel: seatModel }; }).map(function (bridgeModel) { var seatRowModel = bridgeModel.seatModel; var loveIndex = 0; loveIndex = seatRowModel.loveIndex; return (0, _assign2.default)({}, bridgeModel, { status: seatRowModel.status === 0 ? 1 : 0, rowLocation: bridgeModel.row * (_cellSize + _cellRowSpace), colLocation: bridgeModel.col * (_cellSize + _cellColSpace), loveIndex: loveIndex }); }); } /** * 获取座位图尺寸 * @private * @param smartSeats 智能座位图 * @returns {{width: *, height: *}} 座位图尺寸 */ }, { key: "seatContentSizeWithSmartSeats", value: function seatContentSizeWithSmartSeats(smartSeats) { // 计算座位图大小 var maxWidth = 0; var maxHeight = 0; var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = (0, _getIterator3.default)(smartSeats), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var smartSeatModel = _step2.value; if (maxWidth < smartSeatModel.colLocation) { maxWidth = smartSeatModel.colLocation; } if (maxHeight < smartSeatModel.rowLocation) { maxHeight = smartSeatModel.rowLocation; } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } var seatContentWidth = maxWidth + _cellSize; var seatContentHeight = maxHeight + _cellSize; return { 'width': seatContentWidth, 'height': seatContentHeight }; } /** * 获取座位图元数据 * @private * @param smartSeats 智能座位图 * @returns {{seatCellWidth: number, seatCellHeight: number, seatContentWidth, seatContentHeight}} */ }, { key: "seatContentDataFromSmartSeats", value: function seatContentDataFromSmartSeats(smartSeats) { var seatContentSize = this.seatContentSizeWithSmartSeats(smartSeats); return { 'seatCellRowSpace': _cellRowSpace, 'seatCellColSpace': _cellColSpace, 'seatCellWidth': _cellSize, 'seatCellHeight': _cellSize, 'seatContentWidth': seatContentSize.width, 'seatContentHeight': seatContentSize.height }; } /** * 获取行号数据 * @private * @param smartSeats 智能座位图 * @returns {Array.<*>} 返回行号数据 {rowNumber, colLocation} */ }, { key: "rowDataFromSmartSeats", value: function rowDataFromSmartSeats(smartSeats) { var dict = new _map2.default(); var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = (0, _getIterator3.default)(smartSeats), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var seat = _step3.value; var row = seat.rowNumber; if (dict.hasOwnProperty(row)) { continue; } dict.set(row, seat.rowLocation); } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } var allRowData = []; dict.forEach(function (value, key) { allRowData.push({ rowNumber: key, colLocation: value }); }); return allRowData.sort(function (a, b) { return a.rowNumber.toString().localeCompare(b.rowNumber.toString()); }); } }], [{ key: "defaultManager", value: function defaultManager() { return new SeatManager(); } /** * 智能选座 * @param smartSeats * @param count * @returns {Promise} */ }, { key: "smartAutoSelected", value: function smartAutoSelected(smartSeats, count) { return new _promise2.default(function (reduce, reject) { AutoSeatPicking_1.default.defaultManager().autoSelected(smartSeats, count, function (data) { reduce(data); }); }); } /** * 获取座位图时需要的参数 * @param platform 平台类型 * @param screening 平台数据 * @returns {Object} 平台需要的参数 */ }, { key: "seatParasFromScreening", value: function seatParasFromScreening(platform, screening) { var paras = {}; if (platform === 'wangpiao') { paras = { cinemaId: screening.cinemaId, showId: screening.showId }; } if (platform === 'spider') { paras = { cinemaId: screening.cinemaId, showId: screening.showId, hallId: screening.hallId }; } if (platform === 'maizuo') { paras = { showId: screening.showId }; } if (platform === 'danche') { paras = { showId: screening.showId }; } if (platform === 'maoyan' || platform === 'meituan' || platform === 'dazhong') { paras = { showId: screening.showId }; } if (platform === 'baidu') { paras = { showId: screening.showId }; } if (platform === 'taobao') { paras = { cinemaId: platform.cinemaId, showId: platform.showId, sectionId: platform.sectionId }; } return paras; } }, { key: "maoyanSeatCheck", value: function maoyanSeatCheck(selectedSeats, smartSeats) { var _this = this; var rows = []; selectedSeats.forEach(function (seat) { if (rows.indexOf(seat.row) === -1) { rows.push(seat.row); } }); var simpleSmartSeatsList = smartSeats.map(function (seat) { var isSel = selectedSeats.some(function (selSeat) { return selSeat.row === seat.row && selSeat.col === seat.col; }); return { row: seat.row, col: seat.col, status: isSel ? -1 : seat.status }; }).filter(function (seat) { return rows.indexOf(seat.row) !== -1; }); var simpleSmartSeatsRowList = rows.map(function (row) { return simpleSmartSeatsList.filter(function (seat) { return seat.row === row; }); }); var _loop = function _loop(i) { var simpleSmartSeatsRow = simpleSmartSeatsRowList[i]; simpleSmartSeatsRow.sort(function (a, b) { if (a.col > b.col) { return 1; } else { return -1; } }); var simpleSmartSeatsRowPieceList = []; var headIndex = Number.MIN_VALUE; var curPieceList = []; simpleSmartSeatsRow.forEach(function (seat, index) { if (seat.col - index !== headIndex) { curPieceList = [seat]; simpleSmartSeatsRowPieceList.push(curPieceList); headIndex = seat.col - index; } else { curPieceList.push(seat); } }); var visible = simpleSmartSeatsRowPieceList.map(function (simpleSmartSeatsRowPiece) { return _this.isVisibleChooseWithinRow(simpleSmartSeatsRowPiece); }).reduce(function (pre, cur) { return pre && cur; }, true); if (!visible) { return { v: false }; } }; for (var i = 0; i < simpleSmartSeatsRowList.length; i++) { var _ret = _loop(i); if ((typeof _ret === "undefined" ? "undefined" : (0, _typeof3.default)(_ret)) === "object") return _ret.v; } return true; } }, { key: "isVisibleChooseWithinRow", value: function isVisibleChooseWithinRow(simpleSmartSeats) { var left_space = 0; var right_space = 0; var sel_space = -1; for (var i = 0; i < simpleSmartSeats.length; i++) { var seat = simpleSmartSeats[i]; if (Math.abs(seat.status) !== 1) { left_space++; if (sel_space !== -1) { sel_space++; } } if (seat.status === 1) { if ((right_space === 1 || left_space === 1) && right_space * left_space) { return false; } right_space = 0; left_space = 0; sel_space = -1; } if (seat.status === -1) { if (left_space !== 0) { right_space = left_space; left_space = 0; } if (sel_space === 1) { return false; } sel_space = 0; } } return !((right_space === 1 || left_space === 1) && right_space * left_space); } }]); return SeatManager; }(); exports.default = SeatManager; //# sourceMappingURL=JManagerSeat.js.map