replay-table
Version:
Visualize sport seasons with interactive standings
1,656 lines (1,241 loc) • 142 kB
JavaScript
(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 {