diff --git a/src/components/Match/Vision/VisionLog.jsx b/src/components/Match/Vision/VisionLog.jsx index 325e294bdb..97d67649fb 100644 --- a/src/components/Match/Vision/VisionLog.jsx +++ b/src/components/Match/Vision/VisionLog.jsx @@ -1,6 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import styled from 'styled-components'; +import items from 'dotaconstants/build/items.json'; import { threshold, formatSeconds } from 'utility'; import Table from 'components/Table'; import strings from 'lang'; @@ -76,7 +77,10 @@ function logWard(log) { const generateData = match => (log) => { const wardKiller = (log.left && log.left.player1) ? heroTd(match.players[log.left.player1]) : ''; - const duration = log.left ? log.left.time - log.entered.time : ''; + const duration = (log.left && log.left.time - log.entered.time) || (match && match.duration - log.entered.time); + + // necessary until https://github.com/odota/parser/pull/3 is implemented + const discrepancy = duration - Math.min(items[`ward_${log.type}`].attrib.find(x => x.key === 'lifetime').value, duration); const durationColor = log.type === 'observer' ? durationObserverColor(duration) : durationSentryColor(duration); @@ -84,8 +88,8 @@ const generateData = match => (log) => { ...match.players[log.player], type: , enter_time: formatSeconds(log.entered.time), - left_time: formatSeconds(log.left && log.left.time) || '-', - duration: {formatSeconds(duration)}, + left_time: formatSeconds(((log.left && log.left.time) || (match && match.duration)) - discrepancy) || '-', + duration: {formatSeconds(duration - discrepancy)}, killer: wardKiller, placement: logWard(log), }; diff --git a/src/components/Match/matchColumns.jsx b/src/components/Match/matchColumns.jsx index 2c80538d77..3755daa8ba 100644 --- a/src/components/Match/matchColumns.jsx +++ b/src/components/Match/matchColumns.jsx @@ -1058,9 +1058,11 @@ const computeAverage = (row, type) => { const totalDuration = []; row[`${type}_log`].forEach((ward) => { const findTime = row[`${type}_left_log`].find(x => x.ehandle === ward.ehandle); - const leftTime = (findTime && findTime.time) || row.duration; - const duration = Math.min(Math.max(leftTime - ward.time, 0), maxDuration); - totalDuration.push(duration); + const leftTime = (findTime && findTime.time) || false; + if (leftTime !== false) { // exclude wards that did not expire before game ended from average time + const duration = Math.min(Math.max(leftTime - ward.time, 0), maxDuration); + totalDuration.push(duration); + } }); let sum = 0; for (let i = 0; i < totalDuration.length; i += 1) {