UNPKG

replay-table

Version:

Visualize sport seasons with interactive standings

1,656 lines (1,241 loc) 142 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["replayTable"] = factory(); else root["replayTable"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 59); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (value) { return typeof value === 'string' || value instanceof String; }; /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (arr) { var validateElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (elem) { return true; }; if (!Array.isArray(arr)) { return false; } return arr.every(function (elem) { return validateElement(elem); }); }; ; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (input) { try { return JSON.parse(input.replace(/'/g, '"')); } catch (e) { return null; } }; ; /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; exports.default = function (obj) { var validateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (key) { return true; }; var validateValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (value) { return true; }; if (!obj || (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') { return false; } var areKeysValid = Object.keys(obj).every(function (key) { return validateKey(key); }); var areValuesValid = Object.values(obj).every(function (value) { return validateValue(value); }); return areKeysValid && areValuesValid; }; ; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (text) { console.log(text); }; /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var checkingFunctions = { alwaysTrue: function alwaysTrue(transformedData) { return true; }, hasOutcome: function hasOutcome(outcome) { return function (transformedData) { return transformedData.some(function (round) { return round.results.some(function (result) { return result.outcome === outcome; }); }); }; }, hasMatches: function hasMatches(transformedData) { return transformedData.some(function (round) { return round.results.some(function (result) { return result.match; }); }); } }; exports.default = { 'points': { check: checkingFunctions.alwaysTrue, calculate: function calculate(result) { return result.change || 0; } }, 'rounds': { check: checkingFunctions.alwaysTrue, calculate: function calculate(result) { return result.change === null ? 0 : 1; } }, 'wins': { check: checkingFunctions.hasOutcome('win'), calculate: function calculate(result) { return result.outcome === 'win' ? 1 : 0; } }, 'losses': { check: checkingFunctions.hasOutcome('loss'), calculate: function calculate(result) { return result.outcome === 'loss' ? 1 : 0; } }, 'draws': { check: checkingFunctions.hasOutcome('draw'), calculate: function calculate(result) { return result.outcome === 'draw' ? 1 : 0; } }, 'goalsFor': { check: checkingFunctions.hasMatches, calculate: function calculate(result) { return result.match ? result.match.score : 0; } }, 'goalsAgainst': { check: checkingFunctions.hasMatches, calculate: function calculate(result) { return result.match ? result.match.opponentScore : 0; } }, 'goalsDifference': { check: checkingFunctions.hasMatches, calculate: function calculate(result) { return result.match ? result.match.score - result.match.opponentScore : 0; } }, 'winningPercentage': { check: checkingFunctions.hasOutcome('win'), calculate: function calculate(calculatedResult) { return calculatedResult.rounds.total ? calculatedResult.wins.total / calculatedResult.rounds.total : 0; }, isPost: true } }; /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _csv = __webpack_require__(51); Object.defineProperty(exports, 'csv', { enumerable: true, get: function get() { return _interopRequireDefault(_csv).default; } }); var _json = __webpack_require__(52); Object.defineProperty(exports, 'json', { enumerable: true, get: function get() { return _interopRequireDefault(_json).default; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _play = __webpack_require__(73); Object.defineProperty(exports, 'play', { enumerable: true, get: function get() { return _interopRequireDefault(_play).default; } }); var _previous = __webpack_require__(74); Object.defineProperty(exports, 'previous', { enumerable: true, get: function get() { return _interopRequireDefault(_previous).default; } }); var _next = __webpack_require__(72); Object.defineProperty(exports, 'next', { enumerable: true, get: function get() { return _interopRequireDefault(_next).default; } }); var _slider = __webpack_require__(75); Object.defineProperty(exports, 'slider', { enumerable: true, get: function get() { return _interopRequireDefault(_slider).default; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (transformedData, userConfig) { var params = (0, _parametrize2.default)(_config2.default, userConfig); var enriched = calculators.enrich(transformedData, params); var sorted = calculators.sort(enriched, params); var positioned = calculators.position(sorted, params); return calculators.addMeta(positioned, params); }; var _calculators = __webpack_require__(36); var calculators = _interopRequireWildcard(_calculators); var _parametrize = __webpack_require__(17); var _parametrize2 = _interopRequireDefault(_parametrize); var _config = __webpack_require__(13); var _config2 = _interopRequireDefault(_config); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } ; /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (id, userConfig) { var config = (0, _getPresetConfig2.default)(userConfig.preset) || (0, _getEmptyConfig2.default)(configs); var extendedConfigs = (0, _extendConfigs2.default)(configs, config, userConfig); Object.keys(userConfig).filter(function (param) { return !reservedKeywords.includes(param); }).map(function (param) { return (0, _toCamelCase2.default)(param); }).forEach(function (param) { var module = (0, _mapParamToModule2.default)(param, extendedConfigs); if (module) { config[module][param] = extendedConfigs[module][param].parse(userConfig[param]); } else { (0, _warn2.default)('Sorry, there is no "' + param + '" parameter available. Ignoring it and moving on.'); } }); return (0, _addId2.default)(id, config); }; var _configs = __webpack_require__(40); var configs = _interopRequireWildcard(_configs); var _getPresetConfig = __webpack_require__(45); var _getPresetConfig2 = _interopRequireDefault(_getPresetConfig); var _getEmptyConfig = __webpack_require__(44); var _getEmptyConfig2 = _interopRequireDefault(_getEmptyConfig); var _extendConfigs = __webpack_require__(43); var _extendConfigs2 = _interopRequireDefault(_extendConfigs); var _mapParamToModule = __webpack_require__(15); var _mapParamToModule2 = _interopRequireDefault(_mapParamToModule); var _addId = __webpack_require__(42); var _addId2 = _interopRequireDefault(_addId); var _toCamelCase = __webpack_require__(23); var _toCamelCase2 = _interopRequireDefault(_toCamelCase); var _warn = __webpack_require__(4); var _warn2 = _interopRequireDefault(_warn); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } var reservedKeywords = ['preset']; ; /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (userConfig) { var source = _config2.default.source.validate(userConfig.source) && userConfig.source; if (!source) { (0, _crash2.default)('Please, check the data source. We couldn\'t get anything out from ' + userConfig.source); return; } var extractor = userConfig.extractor || (0, _guessExtractor2.default)(source); if (!_config2.default.extractor.validate(extractor)) { (0, _warn2.default)('We couldn\'t determine the extractor so we\'ll try to use the default one, which is ' + _config2.default.extractor.default); return extractors[_config2.default.extractor.default](source); } return extractors[extractor](source); }; var _extractors = __webpack_require__(6); var extractors = _interopRequireWildcard(_extractors); var _guessExtractor = __webpack_require__(53); var _guessExtractor2 = _interopRequireDefault(_guessExtractor); var _config = __webpack_require__(18); var _config2 = _interopRequireDefault(_config); var _crash = __webpack_require__(19); var _crash2 = _interopRequireDefault(_crash); var _warn = __webpack_require__(4); var _warn2 = _interopRequireDefault(_warn); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } ; /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (rawData, userConfig) { var params = (0, _initialize2.default)('transformer', _config2.default, transformersConfig, userConfig); var transformed = transformers[params.transformer](rawData, params); var filtered = params.filterItems.length > 0 ? postTransformers.filterItems(transformed, params.filterItems) : transformed; var collapsed = params.collapseToRounds ? postTransformers.collapseToRounds(filtered) : filtered; return params.insertStartRound ? postTransformers.insertStartRound(collapsed, params.insertStartRound) : collapsed; }; var _config = __webpack_require__(24); var _config2 = _interopRequireDefault(_config); var _configs = __webpack_require__(25); var transformersConfig = _interopRequireWildcard(_configs); var _initialize = __webpack_require__(16); var _initialize2 = _interopRequireDefault(_initialize); var _transformers = __webpack_require__(26); var transformers = _interopRequireWildcard(_transformers); var _postTransformers = __webpack_require__(66); var postTransformers = _interopRequireWildcard(_postTransformers); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } ; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (calculatedData, userConfig) { var params = (0, _initialize2.default)('visualizer', _config2.default, visualizersConfigs, userConfig); return new visualizers[params.visualizer](calculatedData, params); }; var _config = __webpack_require__(28); var _config2 = _interopRequireDefault(_config); var _configs = __webpack_require__(29); var visualizersConfigs = _interopRequireWildcard(_configs); var _initialize = __webpack_require__(16); var _initialize2 = _interopRequireDefault(_initialize); var _visualizers = __webpack_require__(31); var visualizers = _interopRequireWildcard(_visualizers); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } ; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _calculations = __webpack_require__(5); var _calculations2 = _interopRequireDefault(_calculations); var _validateArray = __webpack_require__(1); var _validateArray2 = _interopRequireDefault(_validateArray); var _isString = __webpack_require__(0); var _isString2 = _interopRequireDefault(_isString); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = { id: { default: '', parse: function parse(input) { return input; }, validate: _isString2.default }, orderBy: { default: ['points'], parse: function parse(input) { return input.split(','); }, validate: function validate(value) { return (0, _validateArray2.default)(value, function (value) { return _calculations2.default.hasOwnProperty(value); }); } } }; /***/ }), /* 14 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (orderBy) { return function (a, b) { var tieBreaker = orderBy.filter(function (calc) { return b[calc].total !== a[calc].total; })[0]; if (tieBreaker) { return b[tieBreaker].total - a[tieBreaker].total; } else { return 0; } }; }; ; /***/ }), /* 15 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (param, configs) { var modules = Object.keys(configs).filter(function (config) { return configs[config].hasOwnProperty(param); }); return modules.length > 0 ? modules[0] : null; }; ; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (processorField, moduleConfig, processorsConfigs, userConfig) { var processor = (0, _parametrize4.default)(_defineProperty({}, processorField, moduleConfig[processorField]), _defineProperty({}, processorField, userConfig[processorField]))[processorField]; var config = processorsConfigs.hasOwnProperty(processor) ? Object.assign({}, moduleConfig, processorsConfigs[processor]) : moduleConfig; return (0, _parametrize4.default)(config, userConfig); }; var _parametrize3 = __webpack_require__(17); var _parametrize4 = _interopRequireDefault(_parametrize3); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } ; /***/ }), /* 17 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (config, userConfig) { Object.keys(userConfig).filter(function (param) { return !config.hasOwnProperty(param); }).forEach(function (param) { return (0, _warn2.default)('Sorry, there is no "' + param + '" parameter available. Ignoring it and moving on.'); }); var params = Object.keys(config).reduce(function (obj, param) { return Object.assign(obj, _defineProperty({}, param, config[param].default)); }, {}); Object.keys(userConfig).filter(function (param) { return config.hasOwnProperty(param); }).forEach(function (param) { if (config[param].validate(userConfig[param])) { params[param] = userConfig[param]; } else if (userConfig[param] !== undefined) { (0, _warn2.default)('Sorry, we cannot accept ' + userConfig[param] + ' as ' + param + '. Moving on with the default value, which is ' + params[param] + '.'); } }); return params; }; var _warn = __webpack_require__(4); var _warn2 = _interopRequireDefault(_warn); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } ; /***/ }), /* 18 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _extractors = __webpack_require__(6); var extractors = _interopRequireWildcard(_extractors); var _isString = __webpack_require__(0); var _isString2 = _interopRequireDefault(_isString); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } exports.default = { id: { default: '', parse: function parse(input) { return input; }, validate: _isString2.default }, extractor: { default: 'csv', parse: function parse(input) { return input; }, validate: function validate(value) { return extractors.hasOwnProperty(value); } }, source: { default: undefined, parse: function parse(input) { return input; }, validate: _isString2.default } }; /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (text) { console.log(text); }; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (results, item) { var filter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; return results.map(function (round) { var result = round.results.filter(function (result) { return result.item === item; })[0]; return Object.assign({}, result, { roundMeta: round.meta }); }).filter(function (result) { return !filter || result.change !== null; }); }; ; /***/ }), /* 21 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (results) { return [].concat(_toConsumableArray(new Set(results.reduce(function (list, round) { return [].concat(_toConsumableArray(list), _toConsumableArray(round.results.map(function (result) { return result.item; }))); }, [])))); }; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } ; /***/ }), /* 22 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (number) { var zeroString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; if (number > 0) { return '+' + number; } else if (number < 0) { return number.toString(); } else { return zeroString; } }; ; /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (str) { return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); }); }; /***/ }), /* 24 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _transformers = __webpack_require__(26); var transformers = _interopRequireWildcard(_transformers); var _validateObject = __webpack_require__(3); var _validateObject2 = _interopRequireDefault(_validateObject); var _validateArray = __webpack_require__(1); var _validateArray2 = _interopRequireDefault(_validateArray); var _isString = __webpack_require__(0); var _isString2 = _interopRequireDefault(_isString); var _parseObject = __webpack_require__(2); var _parseObject2 = _interopRequireDefault(_parseObject); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } exports.default = { id: { default: '', parse: function parse(input) { return input; }, validate: _isString2.default }, transformer: { default: 'listOfMatches', parse: function parse(value) { return value; }, validate: function validate(value) { return transformers.hasOwnProperty(value); } }, changeToOutcome: { default: { 3: 'win', 1: 'draw', 0: 'loss' }, parse: function parse(input) { return (0, _parseObject2.default)(input); }, validate: function validate(obj) { return (0, _validateObject2.default)(obj, function (key) { return !Number.isNaN(key); }, function (value) { return ['win', 'draw', 'loss'].includes(value); }); } }, //post-transformers filterItems: { default: [], parse: function parse(input) { return input.split(','); }, validate: function validate(value) { return (0, _validateArray2.default)(value, _isString2.default); } }, insertStartRound: { default: '0', parse: function parse(input) { return input; }, validate: _isString2.default } }; /***/ }), /* 25 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _pointsTable = __webpack_require__(61); Object.defineProperty(exports, 'pointsTable', { enumerable: true, get: function get() { return _interopRequireDefault(_pointsTable).default; } }); var _listOfMatches = __webpack_require__(60); Object.defineProperty(exports, 'listOfMatches', { enumerable: true, get: function get() { return _interopRequireDefault(_listOfMatches).default; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }), /* 26 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _pointsTable = __webpack_require__(69); Object.defineProperty(exports, 'pointsTable', { enumerable: true, get: function get() { return _interopRequireDefault(_pointsTable).default; } }); var _listOfMatches = __webpack_require__(68); Object.defineProperty(exports, 'listOfMatches', { enumerable: true, get: function get() { return _interopRequireDefault(_listOfMatches).default; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _calculations = __webpack_require__(5); var _calculations2 = _interopRequireDefault(_calculations); var _numberToChange = __webpack_require__(22); var _numberToChange2 = _interopRequireDefault(_numberToChange); var _formatPosition = __webpack_require__(77); var _formatPosition2 = _interopRequireDefault(_formatPosition); var _mapParamToModule = __webpack_require__(15); var _mapParamToModule2 = _interopRequireDefault(_mapParamToModule); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Cell = function () { function Cell(column, result, params) { _classCallCheck(this, Cell); this.column = column; this.result = result; if (this[column]) { return this[column](result, params); } else if (_calculations2.default.hasOwnProperty(column)) { return this.makeCalculation(column, result, params); } else if (column.includes('.change')) { return this.makeChange(column, result, params); } else if (column.includes('spark')) { return this.makeSpark(column, result, params); } else if ((0, _mapParamToModule2.default)(column, result.extras)) { return this.makeExtra(column, result, params); } else { this.text = ''; this.classes = []; return this; } } _createClass(Cell, [{ key: 'position', value: function position(result, params) { this.text = (0, _formatPosition2.default)(result.position, params.positionWhenTied); this.classes = ['position']; return this; } }, { key: 'item', value: function item(result, params) { this.text = result.item; this.classes = ['item', 'clickable']; return this; } }, { key: 'match', value: function match(result, params) { this.text = result.match ? result.match.score + '-' + result.match.opponentScore + ' ' + result.match.opponent : ''; this.classes = ['change']; return this; } }, { key: 'outcome', value: function outcome(result, params) { this.text = ''; this.classes = ['outcome']; this.backgroundColor = params.colors[result.outcome] || 'transparent'; return this; } }, { key: 'goalsDifference', value: function goalsDifference(result, params) { this.text = (0, _numberToChange2.default)(result.goalsDifference.total, '0'); this.classes = ['calculation']; return this; } }, { key: 'winningPercentage', value: function winningPercentage(result, params) { this.text = result.winningPercentage.total.toFixed(3).toString().replace('0', ''); this.classes = ['calculation']; return this; } }, { key: 'round', value: function round(result, params) { this.text = result.roundMeta.name; this.classes = ['round', 'clickable']; return this; } }, { key: 'makeCalculation', value: function makeCalculation(column, result, params) { this.text = result[column].total; this.classes = ['calculation']; return this; } }, { key: 'makeChange', value: function makeChange(column, result, params) { var calc = column.replace('.change', ''); this.text = (0, _numberToChange2.default)(result[calc].change); this.classes = ['change']; return this; } }, { key: 'makeSpark', value: function makeSpark(column, result, params) { this.text = ''; this.classes = ['spark']; this.roundIndex = Number.parseInt(column.split('.')[1]); var itemResults = params.sparklinesData.get(result.item); if (this.roundIndex >= itemResults.length) { this.backgroundColor = 'transparent'; this.result = {}; } else { this.result = itemResults[this.roundIndex]; if (this.roundIndex === params.currentRound) { this.classes.push('current'); this.backgroundColor = params.currentSparkColors[itemResults[this.roundIndex].outcome] || 'transparent'; } else { this.backgroundColor = params.sparkColors[itemResults[this.roundIndex].outcome] || 'transparent'; } } return this; } }, { key: 'makeExtra', value: function makeExtra(column, result, params) { var extraType = (0, _mapParamToModule2.default)(column, result.extras); this.text = result.extras[extraType][column]; this.classes = ['extra-' + extraType]; return this; } }]); return Cell; }(); exports.default = Cell; ; /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _visualizers = __webpack_require__(31); var visualizers = _interopRequireWildcard(_visualizers); var _controls = __webpack_require__(7); var controls = _interopRequireWildcard(_controls); var _isString = __webpack_require__(0); var _isString2 = _interopRequireDefault(_isString); var _parseObject = __webpack_require__(2); var _parseObject2 = _interopRequireDefault(_parseObject); var _validateObject = __webpack_require__(3); var _validateObject2 = _interopRequireDefault(_validateObject); var _validateArray = __webpack_require__(1); var _validateArray2 = _interopRequireDefault(_validateArray); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } exports.default = { id: { default: '', parse: function parse(input) { return input; }, validate: _isString2.default }, visualizer: { default: 'classic', parse: function parse(input) { return input; }, validate: function validate(value) { return visualizers.hasOwnProperty(value); } }, controls: { default: ['play', 'previous', 'next', 'slider'], parse: function parse(input) { return input.split(','); }, validate: function validate(value) { return (0, _validateArray2.default)(value, function (value) { return controls.hasOwnProperty(value); }); } }, startFromRound: { default: null, parse: function parse(input) { return Number.parseInt(input, 10); }, validate: function validate(value) { return !value || !Number.isNaN(value); } }, roundsTotalNumber: { default: null, parse: function parse(input) { return Number.parseInt(input, 10) || undefined; }, validate: function validate(value) { return !value || !Number.isNaN(value); } }, positionWhenTied: { default: 'strict', parse: function parse(input) { return input; }, validate: function validate(value) { return ['strict', 'highest', 'range', 'average'].includes(value); } }, animationSpeed: { default: 1.0, parse: Number.parseFloat, validate: function validate(value) { return !Number.isNaN(value) && value > 0.0 && value <= 10.0; } } }; /***/ }), /* 29 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _classic = __webpack_require__(70); Object.defineProperty(exports, 'classic', { enumerable: true, get: function get() { return _interopRequireDefault(_classic).default; } }); var _sparklines = __webpack_require__(71); Object.defineProperty(exports, 'sparklines', { enumerable: true, get: function get() { return _interopRequireDefault(_sparklines).default; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }), /* 30 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray = function () { function sliceIterator(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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _controls = __webpack_require__(7); var Controls = _interopRequireWildcard(_controls); var _adjustDurations = __webpack_require__(76); var _adjustDurations2 = _interopRequireDefault(_adjustDurations); var _getRowsYs = __webpack_require__(78); var _getRowsYs2 = _interopRequireDefault(_getRowsYs); var _toCamelCase = __webpack_require__(23); var _toCamelCase2 = _interopRequireDefault(_toCamelCase); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var dispatchers = ['roundChange', 'play', 'pause', 'roundPreview', 'endPreview', 'drillDown', 'endDrillDown']; var _class = function () { function _class(data, params) { var _d, _this = this; _classCallCheck(this, _class); this.data = data; this.params = params; this.play = this.play.bind(this); this.pause = this.pause.bind(this); this.previous = this.previous.bind(this); this.next = this.next.bind(this); this.preview = this.preview.bind(this); this.endPreview = this.endPreview.bind(this); this.drillDown = this.drillDown.bind(this); this.endDrillDown = this.endDrillDown.bind(this); this.durations = (0, _adjustDurations2.default)(params.durations, params.animationSpeed); this.roundsTotalNumber = this.params.roundsTotalNumber || this.data.meta.lastRound; this.currentRound = params.startFromRound === null ? this.data.meta.lastRound : params.startFromRound; this.previewedRound = null; this.drilldown = {}; this.dispatch = (_d = d3).dispatch.apply(_d, dispatchers); this.dispatch.on('roundChange', function (roundMeta) { return _this.currentRound = roundMeta.index; }); this.dispatch.on('play', function () { return _this.isPlaying = true; }); this.dispatch.on('pause', function () { return _this.isPlaying = false; }); this.dispatch.on('roundPreview', function (roundMeta) { return _this.previewedRound = roundMeta.index; }); this.dispatch.on('endPreview', function (roundMeta) { return _this.previewedRound = null; }); this.dispatch.on('drillDown', function (item) { _this.tableContainer.classed('drilldowned', true); _this.drilldown.item = item; }); this.dispatch.on('endDrillDown', function (item) { _this.tableContainer.classed('drilldowned', false); _this.drilldown = {}; }); this.selector = params.id ? '#' + params.id : '.replayTable'; this.controlsContainer = d3.select(this.selector).append('div').attr('class', 'controls-container ' + params.visualizer); this.controls = this.renderControls(this.controlsContainer, this.params.controls); this.tableContainer = d3.select(this.selector).append('div').attr('class', 'table-container ' + params.visualizer); var _renderTable = this.renderTable(this.data.results[this.currentRound].results); var _renderTable2 = _slicedToArray(_renderTable, 3); this.table = _renderTable2[0]; this.rows = _renderTable2[1]; this.cells = _renderTable2[2]; this.ys = this.rows.nodes().map(function (n) { return n.getBoundingClientRect().top; }); this.initialPositions = this.data.results[this.currentRound].results.reduce(function (obj, res) { return Object.assign(obj, _defineProperty({}, res.item, res.position.strict - 1)); }, {}); } _createClass(_class, [{ key: 'renderControls', value: function renderControls(container, list) { var _this2 = this; var controls = container.append('div').attr('class', 'controls'); var roundMeta = this.data.results[this.currentRound].meta; var controlsObject = {}; var args = { play: [controls, roundMeta, this.play, this.pause], previous: [controls, roundMeta, this.previous], next: [controls, roundMeta, this.next], slider: [controls, this.data.meta.lastRound, this.roundsTotalNumber, roundMeta, this.preview, this.endPreview] }; list.forEach(function (control) { return controlsObject[control] = new (Function.prototype.bind.apply(Controls[control], [null].concat(_toConsumableArray(args[control]))))(); }); Object.keys(controlsObject).forEach(function (ctrl) { var control = controlsObject[ctrl]; dispatchers.forEach(function (dispatcher) { var method = (0, _toCamelCase2.default)('on-' + dispatcher); if (control[method]) { _this2.dispatch.on(dispatcher + '.' + ctrl, control[method].bind(control)); } }); }); return controls; } }, { key: 'move', value: function move(roundIndex, delay, duration) { var _this3 = this; var cells = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.cells; var nextPositions = this.data.results[roundIndex].results.reduce(function (obj, res) { return Object.assign(obj, _defineProperty({}, res.item, res.position.strict - 1)); }, {}); return new Promise(function (resolve, reject) { var transitionsFinished = 0; cells.transition().delay(delay).duration(duration).style('transform', function (cell) { var initialY = _this3.ys[_this3.initialPositions[cell.result.item]]; var nextY = _this3.ys[nextPositions[cell.result.item]]; return 'translateY(' + (nextY - initialY) + 'px)'; }).each(function () { return ++transitionsFinished; }).on('end', function () { if (! --transitionsFinished) { resolve(); } }); }); } }, { key: 'first', value: function first() { return this.to(0); } }, { key: 'last', value: function last() { return this.to(this.data.meta.lastRound); } }, { key: 'previous', value: function previous() { if (this.currentRound > 0) { return this.to(this.currentRound - 1); } } }, { key: 'next', value: function next() { if (this.currentRound < this.data.meta.lastRound) { return this.to(this.currentRound + 1); } } }, { key: 'play', value: function play() { var _this4 = this; var stopAt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.data.meta.lastRound; this.dispatch.call('play'); var playFunction = function playFunction() { if (_this4.currentRound === stopAt || !_this4.isPlaying) { _this4.pause(); } else { Promise.resolve(_this4.next()).then(function () { return setTimeout(playFunction, _this4.durations.freeze); }); } }; if (this.currentRound === this.data.meta.lastRound) { Promise.resolve(this.first()).then(function () { return setTimeout(playFunction, _this4.durations.freeze); }); } else { Promise.resolve(this.next()).then(function () { return setTimeout(playFunction, _this4.durations.freeze); }); } } }, { key: 'pause', value: function pause() { this.dispatch.call('pause'); } }, { key: 'endPreview', value: function endPreview() { var _this5 = this; var move = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; var end = function end() { _this5.dispatch.call('endPreview', _this5, _this5.data.results[_this5.currentRound].meta); return Promise.resolve(); }; if (this.previewedRound === null || this.previewedRound === this.currentRound) { return end(); } else if (!move) { return Promise.resolve(this.preview(this.currentRound)).then(end); } else {