diff --git a/src/components/GenericTable.tsx b/src/components/GenericTable.tsx index 712a59f1..cc86509d 100644 --- a/src/components/GenericTable.tsx +++ b/src/components/GenericTable.tsx @@ -89,7 +89,11 @@ export class GenericTableOps { static readonly defaultFormatter = (val: any) => "" + val; static readonly htmlFormatter = (val: React.ReactNode) => val; static readonly intFormatter = (val: any) => "" + (val.value as number).toFixed(0); - static readonly percentFormatter = (val: any) => ((val.value as number)*100.0).toFixed(1); //(no % it's too ugly) + static readonly percentFormatter = (val: any) => { + return (val.value >= 1) ? + ((val.value as number)*100.0).toFixed(0) //(remove the .0 in the 100% case) + : ((val.value as number)*100.0).toFixed(1); //(no % it's too ugly) + } static readonly pointsFormatter = (val: any) => (val.value as number).toFixed(1); static readonly defaultCellMeta = (key: string, value: any) => ""; static readonly defaultColorPicker = (val: any, cellMeta: string) => undefined; @@ -130,9 +134,10 @@ export class GenericTableOps { colName: string, toolTip: string, rowSpan: (key: string) => number = GenericTableOps.defaultRowSpanCalculator, className: string = "", - colFormatterOverride: (val: any) => string | React.ReactNode = GenericTableOps.defaultFormatter + colFormatterOverride: (val: any) => string | React.ReactNode = GenericTableOps.defaultFormatter, + widthOverride: number = 8 ) { - return new GenericTableColProps(colName, toolTip, 8, true, + return new GenericTableColProps(colName, toolTip, widthOverride, true, colFormatterOverride, GenericTableOps.defaultColorPicker, rowSpan, undefined, className ); diff --git a/src/components/LineupFilter.tsx b/src/components/LineupFilter.tsx index a30011f7..8c0c3ead 100644 --- a/src/components/LineupFilter.tsx +++ b/src/components/LineupFilter.tsx @@ -39,6 +39,7 @@ const LineupFilter: React.FunctionComponent = ({onStats, startingState, o luck: startLuck, lineupLuck: startLineupLuck, showLineupLuckDiags: startShowLineupLuckDiags, // Filters etc + decorate: startDecorate, showTotal: startShowTotal, maxTableSize: startMaxTableSize, minPoss: startMinPoss, @@ -75,6 +76,7 @@ const LineupFilter: React.FunctionComponent = ({onStats, startingState, o luck: startLuck, lineupLuck: startLineupLuck, showLineupLuckDiags: startShowLineupLuckDiags, // Filters etc + decorate: startDecorate, showTotal: startShowTotal, maxTableSize: startMaxTableSize, minPoss: startMinPoss, diff --git a/src/components/LineupStatsTable.tsx b/src/components/LineupStatsTable.tsx index 08a1a15f..46537156 100644 --- a/src/components/LineupStatsTable.tsx +++ b/src/components/LineupStatsTable.tsx @@ -31,6 +31,8 @@ import GenericTogglingMenuItem from './shared/GenericTogglingMenuItem'; import LuckAdjDiagView from './diags/LuckAdjDiagView'; // Util imports +import { LineupDisplayUtils } from "../utils/stats/LineupDisplayUtils"; +import { RatingUtils } from "../utils/stats/RatingUtils"; import { LineupUtils } from "../utils/stats/LineupUtils"; import { CbbColors } from "../utils/CbbColors"; import { CommonTableDefs } from "../utils/CommonTableDefs"; @@ -89,6 +91,11 @@ const LineupStatsTable: React.FunctionComponent = ({lineupStats, teamStat /** Whether we are showing the luck config modal */ const [ showLuckConfig, setShowLuckConfig ] = useState(false); + /** Whether to badge/colorize the lineups */ + const [ decorateLineups, setDecorateLineups ] = useState(_.isNil(startingState.decorate) ? + ParamDefaults.defaultLineupDecorate : startingState.decorate + ); + // (slight delay when typing into the filter to make it more responsive) const [ timeoutId, setTimeoutId ] = useState(-1); const [ tmpFilterStr, setTmpFilterStr ] = useState(filterStr); @@ -104,19 +111,21 @@ const LineupStatsTable: React.FunctionComponent = ({lineupStats, teamStat lineupLuck: adjustForLuck, showLineupLuckDiags: showLuckAdjDiags, // Misc filters + decorate: decorateLineups, showTotal: showTotals, minPoss: minPoss, maxTableSize: maxTableSize, sortBy: sortBy, filter: filterStr }).omit(_.flatten([ + (decorateLineups == ParamDefaults.defaultLineupDecorate) ? [ 'decorate' ] : [], (showTotals == ParamDefaults.defaultLineupShowTotal) ? [ 'showTotal' ] : [], _.isEqual(luckConfig, ParamDefaults.defaultLuckConfig) ? [ 'luck' ] : [], !adjustForLuck ? [ 'lineupLuck' ] : [], (showLuckAdjDiags == ParamDefaults.defaultOnOffLuckDiagMode) ? [ 'showLineupLuckDiags' ] : [] ])).value(); onChangeState(newState); - }, [ showTotals, minPoss, maxTableSize, sortBy, filterStr, + }, [ decorateLineups, showTotals, minPoss, maxTableSize, sortBy, filterStr, luckConfig, adjustForLuck, showLuckAdjDiags ]); // 3] Utils @@ -126,13 +135,28 @@ const LineupStatsTable: React.FunctionComponent = ({lineupStats, teamStat const genderYearLookup = `${startingState.gender}_${startingState.year}`; const avgEfficiency = efficiencyAverages[genderYearLookup] || efficiencyAverages.fallback; + /** Need baseline player info for tooltip view/lineup decoration */ + const baselinePlayerInfo = _.fromPairs( + (rosterStats.baseline || []).map((mutableP: any) => { + // Add ORtg to lineup stats: + const [ oRtg, adjORtg, oRtgDiag ] = RatingUtils.buildORtg(mutableP, avgEfficiency, false); + const [ dRtg, adjDRtg, dRtgDiag ] = RatingUtils.buildDRtg(mutableP, avgEfficiency, false); + mutableP.off_rtg = oRtg; + mutableP.off_adj_rtg = adjORtg; + mutableP.def_rtg = dRtg; + mutableP.def_adj_rtg = adjDRtg; + + return [ mutableP.key, mutableP ]; + }) + ); + // The luck baseline can either be the user-selecteed baseline or the entire season const [ baseOrSeasonTeamStats, baseOrSeason3PMap ] = (() => { if (adjustForLuck) { switch (luckConfig.base) { case "baseline": return [ - teamStats.baseline, _.fromPairs((rosterStats.baseline || []).map((p: any) => [ p.key, p ])) + teamStats.baseline, baselinePlayerInfo ]; default: //("season") return [ @@ -214,11 +238,13 @@ const LineupStatsTable: React.FunctionComponent = ({lineupStats, teamStat const sortedCodesAndIds = (lineup.key == totalLineupId) ? undefined : PositionUtils.orderLineup(codesAndIds, positionFromPlayerKey, teamSeasonLookup); - const perLineupPlayerMap = _.fromPairs(codesAndIds.map((cid: { code: string, id: string }) => { + const perLineupPlayerLuckMap = _.fromPairs(codesAndIds.map((cid: { code: string, id: string }) => { return [ cid.id, baseOrSeason3PMap[cid.id] ]; })); const luckAdj = (adjustForLuck && lineup?.doc_count) ? [ - LuckUtils.calcOffTeamLuckAdj(lineup, rosterStats.baseline || [], baseOrSeasonTeamStats, perLineupPlayerMap, avgEfficiency), + LuckUtils.calcOffTeamLuckAdj( + lineup, rosterStats.baseline || [], baseOrSeasonTeamStats, perLineupPlayerLuckMap, avgEfficiency + ), LuckUtils.calcDefTeamLuckAdj(lineup, baseOrSeasonTeamStats, avgEfficiency), ] as [OffLuckAdjustmentDiags, DefLuckAdjustmentDiags] : undefined; @@ -226,9 +252,14 @@ const LineupStatsTable: React.FunctionComponent = ({lineupStats, teamStat LuckUtils.injectLuck(lineup, luckAdj?.[0], luckAdj?.[1]); } + const perLineupBaselinePlayerMap = _.fromPairs(codesAndIds.map((cid: { code: string, id: string }) => { + return [ cid.id, baselinePlayerInfo[cid.id] || {} ]; + })) as Record>; const title = sortedCodesAndIds ? - sortedCodesAndIds.map((cid: { code: string, id: string}) => cid.code).join(" / ") : - "Weighted Total"; + LineupDisplayUtils.buildDecoratedLineup( + lineup.key, sortedCodesAndIds, perLineupBaselinePlayerMap, positionFromPlayerKey, "off_adj_rtg", decorateLineups + ) : "Weighted Total"; + const stats = { off_title: title, def_title: "", ...lineup }; return _.flatten([ [ GenericTableOps.buildDataRow(stats, offPrefixFn, offCellMetaFn) ], @@ -361,7 +392,7 @@ const LineupStatsTable: React.FunctionComponent = ({lineupStats, teamStat @@ -369,6 +400,11 @@ const LineupStatsTable: React.FunctionComponent = ({lineupStats, teamStat + setDecorateLineups(!decorateLineups)} + /> { @@ -50,4 +50,28 @@ describe("LineupStatsTable", () => { ); expect(toJson(wrapper)).toMatchSnapshot(); }); + test("LineupStatsTable - should create snapshot (with individual data - plain, luck, luck diags)", () => { + const testData = { + lineups: sampleLineupStatsResponse.responses[0].aggregations.lineups.buckets + }; + const teamData = _.merge( + sampleTeamStatsResponse.aggregations.tri_filter.buckets, + { global: {}, onOffMode: true } + ); + const playerData = { + baseline: samplePlayerStatsResponse.aggregations.tri_filter.buckets.on.player.buckets, + global: samplePlayerStatsResponse.aggregations.tri_filter.buckets.baseline.player.buckets + }; + const dummyChangeStateCallback = (stats: LineupFilterParams) => {}; + const wrapper = shallow( + + ); + expect(toJson(wrapper)).toMatchSnapshot(); + }); }); diff --git a/src/components/__tests__/__snapshots__/LineupStatsTable.test.tsx.snap b/src/components/__tests__/__snapshots__/LineupStatsTable.test.tsx.snap index d5711777..d8403626 100644 --- a/src/components/__tests__/__snapshots__/LineupStatsTable.test.tsx.snap +++ b/src/components/__tests__/__snapshots__/LineupStatsTable.test.tsx.snap @@ -40,7 +40,7 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu @@ -59,6 +59,5572 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu sm="1" > + + + + + + + + + + + + + + + Max Lineups + + + + + + + + + + Min Poss # + + + + + + + + + + Sort By + + + + + + + + + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+
+ } + placement="auto" + > + + + + + AaWiggins + + + + + + ; + + + , + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DaMorsell + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + ErAyala + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + +
, + ], + "off_to": Object { + "value": 0.14285714285714285, + }, + "players_array": Object { + "hits": Object { + "hits": Array [ + Object { + "_id": "k5mWzG4B8OZ7gWZVgjRk", + "_index": "bigten_2019", + "_score": 4.760141, + "_source": Object { + "players": Array [ + Object { + "code": "AaWiggins", + "id": "Wiggins, Aaron", + }, + Object { + "code": "AnCowan", + "id": "Cowan, Anthony", + }, + Object { + "code": "DaMorsell", + "id": "Morsell, Darryl", + }, + Object { + "code": "ErAyala", + "id": "Ayala, Eric", + }, + Object { + "code": "JaSmith", + "id": "Smith, Jalen", + }, + ], + }, + "_type": "_doc", + }, + ], + "max_score": 4.760141, + "total": Object { + "relation": "eq", + "value": 38, + }, + }, + }, + "total_def_2p_attempts": Object { + "value": 92, + }, + "total_def_2p_made": Object { + "value": 40, + }, + "total_def_2pmid_attempts": Object { + "value": 52, + }, + "total_def_2pmid_made": Object { + "value": 17, + }, + "total_def_2prim_attempts": Object { + "value": 40, + }, + "total_def_2prim_made": Object { + "value": 23, + }, + "total_def_3p_attempts": Object { + "value": 66, + }, + "total_def_3p_made": Object { + "value": 19, + }, + "total_def_drb": Object { + "value": 68, + }, + "total_def_fga": Object { + "value": 158, + }, + "total_def_fta": Object { + "value": 47, + }, + "total_def_orb": Object { + "value": 19, + }, + "total_def_pts": Object { + "value": 171, + }, + "total_off_2p_attempts": Object { + "value": 102, + }, + "total_off_2p_made": Object { + "value": 52, + }, + "total_off_2pmid_attempts": Object { + "value": 44, + }, + "total_off_2pmid_made": Object { + "value": 12, + }, + "total_off_2prim_attempts": Object { + "value": 58, + }, + "total_off_2prim_made": Object { + "value": 40, + }, + "total_off_3p_attempts": Object { + "value": 65, + }, + "total_off_3p_made": Object { + "value": 18, + }, + "total_off_drb": Object { + "value": 90, + }, + "total_off_fga": Object { + "value": 167, + }, + "total_off_fta": Object { + "value": 83, + }, + "total_off_orb": Object { + "value": 39, + }, + "total_off_pts": Object { + "value": 218, + }, + }, + "kind": "data-row", + "prefixFn": [Function], + "tableFieldsOverride": undefined, + }, + GenericTableDataRow { + "cellMetaFn": [Function], + "dataObj": Object { + "def_2p": Object { + "value": 0.43478260869565216, + }, + "def_2pmid": Object { + "value": 0.3269230769230769, + }, + "def_2pmidr": Object { + "value": 0.3291139240506329, + }, + "def_2prim": Object { + "value": 0.575, + }, + "def_2primr": Object { + "value": 0.25316455696202533, + }, + "def_3p": Object { + "value": 0.2878787878787879, + }, + "def_3pr": Object { + "value": 0.4177215189873418, + }, + "def_adj_opp": Object { + "value": 95.56989795918368, + }, + "def_adj_ppp": Object { + "value": 85.47619047619048, + }, + "def_assist": Object { + "value": 0.48, + }, + "def_efg": Object { + "value": 0.43354430379746833, + }, + "def_ftr": Object { + "value": 0.2974683544303797, + }, + "def_orb": Object { + "value": 0.1743119266055046, + }, + "def_poss": Object { + "value": 189, + }, + "def_ppp": Object { + "value": 90.47619047619048, + }, + "def_title": "", + "def_to": Object { + "value": 0.14285714285714285, + }, + "doc_count": 38, + "key": "AaWiggins_AnCowan_DaMorsell_ErAyala_JaSmith", + "off_2p": Object { + "value": 0.5098039215686274, + }, + "off_2pmid": Object { + "value": 0.2727272727272727, + }, + "off_2pmidr": Object { + "value": 0.2634730538922156, + }, + "off_2prim": Object { + "value": 0.6896551724137931, + }, + "off_2primr": Object { + "value": 0.3473053892215569, + }, + "off_3p": Object { + "value": 0.27692307692307694, + }, + "off_3pr": Object { + "value": 0.38922155688622756, + }, + "off_adj_opp": Object { + "value": 103.93650793650794, + }, + "off_adj_ppp": Object { + "value": 116.22448979591837, + }, + "off_assist": Object { + "value": 0.52, + }, + "off_efg": Object { + "value": 0.47305389221556887, + }, + "off_ftr": Object { + "value": 0.49700598802395207, + }, + "off_orb": Object { + "value": 0.3644859813084112, + }, + "off_poss": Object { + "value": 196, + }, + "off_ppp": Object { + "value": 111.22448979591837, + }, + "off_title": Array [ + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DaMorsell + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + ErAyala + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + +
, + ], + "off_to": Object { + "value": 0.14285714285714285, + }, + "players_array": Object { + "hits": Object { + "hits": Array [ + Object { + "_id": "k5mWzG4B8OZ7gWZVgjRk", + "_index": "bigten_2019", + "_score": 4.760141, + "_source": Object { + "players": Array [ + Object { + "code": "AaWiggins", + "id": "Wiggins, Aaron", + }, + Object { + "code": "AnCowan", + "id": "Cowan, Anthony", + }, + Object { + "code": "DaMorsell", + "id": "Morsell, Darryl", + }, + Object { + "code": "ErAyala", + "id": "Ayala, Eric", + }, + Object { + "code": "JaSmith", + "id": "Smith, Jalen", + }, + ], + }, + "_type": "_doc", + }, + ], + "max_score": 4.760141, + "total": Object { + "relation": "eq", + "value": 38, + }, + }, + }, + "total_def_2p_attempts": Object { + "value": 92, + }, + "total_def_2p_made": Object { + "value": 40, + }, + "total_def_2pmid_attempts": Object { + "value": 52, + }, + "total_def_2pmid_made": Object { + "value": 17, + }, + "total_def_2prim_attempts": Object { + "value": 40, + }, + "total_def_2prim_made": Object { + "value": 23, + }, + "total_def_3p_attempts": Object { + "value": 66, + }, + "total_def_3p_made": Object { + "value": 19, + }, + "total_def_drb": Object { + "value": 68, + }, + "total_def_fga": Object { + "value": 158, + }, + "total_def_fta": Object { + "value": 47, + }, + "total_def_orb": Object { + "value": 19, + }, + "total_def_pts": Object { + "value": 171, + }, + "total_off_2p_attempts": Object { + "value": 102, + }, + "total_off_2p_made": Object { + "value": 52, + }, + "total_off_2pmid_attempts": Object { + "value": 44, + }, + "total_off_2pmid_made": Object { + "value": 12, + }, + "total_off_2prim_attempts": Object { + "value": 58, + }, + "total_off_2prim_made": Object { + "value": 40, + }, + "total_off_3p_attempts": Object { + "value": 65, + }, + "total_off_3p_made": Object { + "value": 18, + }, + "total_off_drb": Object { + "value": 90, + }, + "total_off_fga": Object { + "value": 167, + }, + "total_off_fta": Object { + "value": 83, + }, + "total_off_orb": Object { + "value": 39, + }, + "total_off_pts": Object { + "value": 218, + }, + }, + "kind": "data-row", + "prefixFn": [Function], + "tableFieldsOverride": undefined, + }, + GenericTableSeparator { + "kind": "separator", + }, + GenericTableDataRow { + "cellMetaFn": [Function], + "dataObj": Object { + "def_2p": Object { + "value": 0.3793103448275862, + }, + "def_2pmid": Object { + "value": 0.25806451612903225, + }, + "def_2pmidr": Object { + "value": 0.36470588235294116, + }, + "def_2prim": Object { + "value": 0.5185185185185185, + }, + "def_2primr": Object { + "value": 0.3176470588235294, + }, + "def_3p": Object { + "value": 0.3333333333333333, + }, + "def_3pr": Object { + "value": 0.3176470588235294, + }, + "def_adj_opp": Object { + "value": 93.37927927927929, + }, + "def_adj_ppp": Object { + "value": 75.47619047619048, + }, + "def_assist": Object { + "value": 0.47, + }, + "def_efg": Object { + "value": 0.4176470588235294, + }, + "def_ftr": Object { + "value": 0.2823529411764706, + }, + "def_orb": Object { + "value": 0.24561403508771928, + }, + "def_poss": Object { + "value": 114, + }, + "def_ppp": Object { + "value": 77.19298245614036, + }, + "def_title": "", + "def_to": Object { + "value": 0.2719298245614035, + }, + "doc_count": 27, + "key": "AaWiggins_AnCowan_DaMorsell_DoScott_JaSmith", + "off_2p": Object { + "value": 0.39285714285714285, + }, + "off_2pmid": Object { + "value": 0.14814814814814814, + }, + "off_2pmidr": Object { + "value": 0.3103448275862069, + }, + "off_2prim": Object { + "value": 0.6206896551724138, + }, + "off_2primr": Object { + "value": 0.3333333333333333, + }, + "off_3p": Object { + "value": 0.22580645161290322, + }, + "off_3pr": Object { + "value": 0.3563218390804598, + }, + "off_adj_opp": Object { + "value": 106.32105263157895, + }, + "off_adj_ppp": Object { + "value": 96.22448979591837, + }, + "off_assist": Object { + "value": 0.53, + }, + "off_efg": Object { + "value": 0.3735632183908046, + }, + "off_ftr": Object { + "value": 0.5517241379310345, + }, + "off_orb": Object { + "value": 0.29508196721311475, + }, + "off_poss": Object { + "value": 111, + }, + "off_ppp": Object { + "value": 89.1891891891892, + }, + "off_title": Array [ + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DaMorsell + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DoScott + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + +
, + ], + "off_to": Object { + "value": 0.18018018018018017, + }, + "players_array": Object { + "hits": Object { + "hits": Array [ + Object { + "_id": "apmWzG4B8OZ7gWZVgTSi", + "_index": "bigten_2019", + "_score": 4.760141, + "_source": Object { + "players": Array [ + Object { + "code": "AaWiggins", + "id": "Wiggins, Aaron", + }, + Object { + "code": "AnCowan", + "id": "Cowan, Anthony", + }, + Object { + "code": "DaMorsell", + "id": "Morsell, Darryl", + }, + Object { + "code": "DoScott", + "id": "Scott, Donta", + }, + Object { + "code": "JaSmith", + "id": "Smith, Jalen", + }, + ], + }, + "_type": "_doc", + }, + ], + "max_score": 4.760141, + "total": Object { + "relation": "eq", + "value": 27, + }, + }, + }, + "total_def_2p_attempts": Object { + "value": 58, + }, + "total_def_2p_made": Object { + "value": 22, + }, + "total_def_2pmid_attempts": Object { + "value": 31, + }, + "total_def_2pmid_made": Object { + "value": 8, + }, + "total_def_2prim_attempts": Object { + "value": 27, + }, + "total_def_2prim_made": Object { + "value": 14, + }, + "total_def_3p_attempts": Object { + "value": 27, + }, + "total_def_3p_made": Object { + "value": 9, + }, + "total_def_drb": Object { + "value": 43, + }, + "total_def_fga": Object { + "value": 85, + }, + "total_def_fta": Object { + "value": 24, + }, + "total_def_orb": Object { + "value": 14, + }, + "total_def_pts": Object { + "value": 88, + }, + "total_off_2p_attempts": Object { + "value": 56, + }, + "total_off_2p_made": Object { + "value": 22, + }, + "total_off_2pmid_attempts": Object { + "value": 27, + }, + "total_off_2pmid_made": Object { + "value": 4, + }, + "total_off_2prim_attempts": Object { + "value": 29, + }, + "total_off_2prim_made": Object { + "value": 18, + }, + "total_off_3p_attempts": Object { + "value": 31, + }, + "total_off_3p_made": Object { + "value": 7, + }, + "total_off_drb": Object { + "value": 43, + }, + "total_off_fga": Object { + "value": 87, + }, + "total_off_fta": Object { + "value": 48, + }, + "total_off_orb": Object { + "value": 18, + }, + "total_off_pts": Object { + "value": 99, + }, + }, + "kind": "data-row", + "prefixFn": [Function], + "tableFieldsOverride": undefined, + }, + GenericTableDataRow { + "cellMetaFn": [Function], + "dataObj": Object { + "def_2p": Object { + "value": 0.3793103448275862, + }, + "def_2pmid": Object { + "value": 0.25806451612903225, + }, + "def_2pmidr": Object { + "value": 0.36470588235294116, + }, + "def_2prim": Object { + "value": 0.5185185185185185, + }, + "def_2primr": Object { + "value": 0.3176470588235294, + }, + "def_3p": Object { + "value": 0.3333333333333333, + }, + "def_3pr": Object { + "value": 0.3176470588235294, + }, + "def_adj_opp": Object { + "value": 93.37927927927929, + }, + "def_adj_ppp": Object { + "value": 75.47619047619048, + }, + "def_assist": Object { + "value": 0.47, + }, + "def_efg": Object { + "value": 0.4176470588235294, + }, + "def_ftr": Object { + "value": 0.2823529411764706, + }, + "def_orb": Object { + "value": 0.24561403508771928, + }, + "def_poss": Object { + "value": 114, + }, + "def_ppp": Object { + "value": 77.19298245614036, + }, + "def_title": "", + "def_to": Object { + "value": 0.2719298245614035, + }, + "doc_count": 27, + "key": "AaWiggins_AnCowan_DaMorsell_DoScott_JaSmith", + "off_2p": Object { + "value": 0.39285714285714285, + }, + "off_2pmid": Object { + "value": 0.14814814814814814, + }, + "off_2pmidr": Object { + "value": 0.3103448275862069, + }, + "off_2prim": Object { + "value": 0.6206896551724138, + }, + "off_2primr": Object { + "value": 0.3333333333333333, + }, + "off_3p": Object { + "value": 0.22580645161290322, + }, + "off_3pr": Object { + "value": 0.3563218390804598, + }, + "off_adj_opp": Object { + "value": 106.32105263157895, + }, + "off_adj_ppp": Object { + "value": 96.22448979591837, + }, + "off_assist": Object { + "value": 0.53, + }, + "off_efg": Object { + "value": 0.3735632183908046, + }, + "off_ftr": Object { + "value": 0.5517241379310345, + }, + "off_orb": Object { + "value": 0.29508196721311475, + }, + "off_poss": Object { + "value": 111, + }, + "off_ppp": Object { + "value": 89.1891891891892, + }, + "off_title": Array [ + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DaMorsell + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DoScott + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + +
, + ], + "off_to": Object { + "value": 0.18018018018018017, + }, + "players_array": Object { + "hits": Object { + "hits": Array [ + Object { + "_id": "apmWzG4B8OZ7gWZVgTSi", + "_index": "bigten_2019", + "_score": 4.760141, + "_source": Object { + "players": Array [ + Object { + "code": "AaWiggins", + "id": "Wiggins, Aaron", + }, + Object { + "code": "AnCowan", + "id": "Cowan, Anthony", + }, + Object { + "code": "DaMorsell", + "id": "Morsell, Darryl", + }, + Object { + "code": "DoScott", + "id": "Scott, Donta", + }, + Object { + "code": "JaSmith", + "id": "Smith, Jalen", + }, + ], + }, + "_type": "_doc", + }, + ], + "max_score": 4.760141, + "total": Object { + "relation": "eq", + "value": 27, + }, + }, + }, + "total_def_2p_attempts": Object { + "value": 58, + }, + "total_def_2p_made": Object { + "value": 22, + }, + "total_def_2pmid_attempts": Object { + "value": 31, + }, + "total_def_2pmid_made": Object { + "value": 8, + }, + "total_def_2prim_attempts": Object { + "value": 27, + }, + "total_def_2prim_made": Object { + "value": 14, + }, + "total_def_3p_attempts": Object { + "value": 27, + }, + "total_def_3p_made": Object { + "value": 9, + }, + "total_def_drb": Object { + "value": 43, + }, + "total_def_fga": Object { + "value": 85, + }, + "total_def_fta": Object { + "value": 24, + }, + "total_def_orb": Object { + "value": 14, + }, + "total_def_pts": Object { + "value": 88, + }, + "total_off_2p_attempts": Object { + "value": 56, + }, + "total_off_2p_made": Object { + "value": 22, + }, + "total_off_2pmid_attempts": Object { + "value": 27, + }, + "total_off_2pmid_made": Object { + "value": 4, + }, + "total_off_2prim_attempts": Object { + "value": 29, + }, + "total_off_2prim_made": Object { + "value": 18, + }, + "total_off_3p_attempts": Object { + "value": 31, + }, + "total_off_3p_made": Object { + "value": 7, + }, + "total_off_drb": Object { + "value": 43, + }, + "total_off_fga": Object { + "value": 87, + }, + "total_off_fta": Object { + "value": 48, + }, + "total_off_orb": Object { + "value": 18, + }, + "total_off_pts": Object { + "value": 99, + }, + }, + "kind": "data-row", + "prefixFn": [Function], + "tableFieldsOverride": undefined, + }, + GenericTableSeparator { + "kind": "separator", + }, + GenericTableDataRow { + "cellMetaFn": [Function], + "dataObj": Object { + "def_2p": Object { + "value": 0.34, + }, + "def_2pmid": Object { + "value": 0.13636363636363635, + }, + "def_2pmidr": Object { + "value": 0.23655913978494625, + }, + "def_2prim": Object { + "value": 0.5, + }, + "def_2primr": Object { + "value": 0.3010752688172043, + }, + "def_3p": Object { + "value": 0.23255813953488372, + }, + "def_3pr": Object { + "value": 0.46236559139784944, + }, + "def_adj_opp": Object { + "value": 93.46372549019607, + }, + "def_adj_ppp": Object { + "value": 75.47619047619048, + }, + "def_assist": Object { + "value": 0.48, + }, + "def_efg": Object { + "value": 0.34408602150537637, + }, + "def_ftr": Object { + "value": 0.2903225806451613, + }, + "def_orb": Object { + "value": 0.38571428571428573, + }, + "def_poss": Object { + "value": 97, + }, + "def_ppp": Object { + "value": 80.41237113402062, + }, + "def_title": "", + "def_to": Object { + "value": 0.21649484536082475, + }, + "doc_count": 24, + "key": "AaWiggins_AnCowan_DoScott_ErAyala_JaSmith", + "off_2p": Object { + "value": 0.4642857142857143, + }, + "off_2pmid": Object { + "value": 0.4, + }, + "off_2pmidr": Object { + "value": 0.2604166666666667, + }, + "off_2prim": Object { + "value": 0.5161290322580645, + }, + "off_2primr": Object { + "value": 0.3229166666666667, + }, + "off_3p": Object { + "value": 0.375, + }, + "off_3pr": Object { + "value": 0.4166666666666667, + }, + "off_adj_opp": Object { + "value": 104.70927835051546, + }, + "off_adj_ppp": Object { + "value": 114.22448979591837, + }, + "off_assist": Object { + "value": 0.52, + }, + "off_efg": Object { + "value": 0.5052083333333334, + }, + "off_ftr": Object { + "value": 0.19791666666666666, + }, + "off_orb": Object { + "value": 0.3684210526315789, + }, + "off_poss": Object { + "value": 102, + }, + "off_ppp": Object { + "value": 109.80392156862744, + }, + "off_title": Array [ + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DoScott + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + ErAyala + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + +
, + ], + "off_to": Object { + "value": 0.20588235294117646, + }, + "players_array": Object { + "hits": Object { + "hits": Array [ + Object { + "_id": "FJmWzG4B8OZ7gWZVjTbp", + "_index": "bigten_2019", + "_score": 4.760141, + "_source": Object { + "players": Array [ + Object { + "code": "AaWiggins", + "id": "Wiggins, Aaron", + }, + Object { + "code": "AnCowan", + "id": "Cowan, Anthony", + }, + Object { + "code": "DoScott", + "id": "Scott, Donta", + }, + Object { + "code": "ErAyala", + "id": "Ayala, Eric", + }, + Object { + "code": "JaSmith", + "id": "Smith, Jalen", + }, + ], + }, + "_type": "_doc", + }, + ], + "max_score": 4.760141, + "total": Object { + "relation": "eq", + "value": 24, + }, + }, + }, + "total_def_2p_attempts": Object { + "value": 50, + }, + "total_def_2p_made": Object { + "value": 17, + }, + "total_def_2pmid_attempts": Object { + "value": 22, + }, + "total_def_2pmid_made": Object { + "value": 3, + }, + "total_def_2prim_attempts": Object { + "value": 28, + }, + "total_def_2prim_made": Object { + "value": 14, + }, + "total_def_3p_attempts": Object { + "value": 43, + }, + "total_def_3p_made": Object { + "value": 10, + }, + "total_def_drb": Object { + "value": 36, + }, + "total_def_fga": Object { + "value": 93, + }, + "total_def_fta": Object { + "value": 27, + }, + "total_def_orb": Object { + "value": 27, + }, + "total_def_pts": Object { + "value": 78, + }, + "total_off_2p_attempts": Object { + "value": 56, + }, + "total_off_2p_made": Object { + "value": 26, + }, + "total_off_2pmid_attempts": Object { + "value": 25, + }, + "total_off_2pmid_made": Object { + "value": 10, + }, + "total_off_2prim_attempts": Object { + "value": 31, + }, + "total_off_2prim_made": Object { + "value": 16, + }, + "total_off_3p_attempts": Object { + "value": 40, + }, + "total_off_3p_made": Object { + "value": 15, + }, + "total_off_drb": Object { + "value": 43, + }, + "total_off_fga": Object { + "value": 96, + }, + "total_off_fta": Object { + "value": 19, + }, + "total_off_orb": Object { + "value": 21, + }, + "total_off_pts": Object { + "value": 112, + }, + }, + "kind": "data-row", + "prefixFn": [Function], + "tableFieldsOverride": undefined, + }, + GenericTableDataRow { + "cellMetaFn": [Function], + "dataObj": Object { + "def_2p": Object { + "value": 0.34, + }, + "def_2pmid": Object { + "value": 0.13636363636363635, + }, + "def_2pmidr": Object { + "value": 0.23655913978494625, + }, + "def_2prim": Object { + "value": 0.5, + }, + "def_2primr": Object { + "value": 0.3010752688172043, + }, + "def_3p": Object { + "value": 0.23255813953488372, + }, + "def_3pr": Object { + "value": 0.46236559139784944, + }, + "def_adj_opp": Object { + "value": 93.46372549019607, + }, + "def_adj_ppp": Object { + "value": 75.47619047619048, + }, + "def_assist": Object { + "value": 0.48, + }, + "def_efg": Object { + "value": 0.34408602150537637, + }, + "def_ftr": Object { + "value": 0.2903225806451613, + }, + "def_orb": Object { + "value": 0.38571428571428573, + }, + "def_poss": Object { + "value": 97, + }, + "def_ppp": Object { + "value": 80.41237113402062, + }, + "def_title": "", + "def_to": Object { + "value": 0.21649484536082475, + }, + "doc_count": 24, + "key": "AaWiggins_AnCowan_DoScott_ErAyala_JaSmith", + "off_2p": Object { + "value": 0.4642857142857143, + }, + "off_2pmid": Object { + "value": 0.4, + }, + "off_2pmidr": Object { + "value": 0.2604166666666667, + }, + "off_2prim": Object { + "value": 0.5161290322580645, + }, + "off_2primr": Object { + "value": 0.3229166666666667, + }, + "off_3p": Object { + "value": 0.375, + }, + "off_3pr": Object { + "value": 0.4166666666666667, + }, + "off_adj_opp": Object { + "value": 104.70927835051546, + }, + "off_adj_ppp": Object { + "value": 114.22448979591837, + }, + "off_assist": Object { + "value": 0.52, + }, + "off_efg": Object { + "value": 0.5052083333333334, + }, + "off_ftr": Object { + "value": 0.19791666666666666, + }, + "off_orb": Object { + "value": 0.3684210526315789, + }, + "off_poss": Object { + "value": 102, + }, + "off_ppp": Object { + "value": 109.80392156862744, + }, + "off_title": Array [ + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DoScott + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + ErAyala + + + + + + ; + + +
, + + + Wiggins, Aaron: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Cowan, Anthony: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + +
, + ], + "off_to": Object { + "value": 0.20588235294117646, + }, + "players_array": Object { + "hits": Object { + "hits": Array [ + Object { + "_id": "FJmWzG4B8OZ7gWZVjTbp", + "_index": "bigten_2019", + "_score": 4.760141, + "_source": Object { + "players": Array [ + Object { + "code": "AaWiggins", + "id": "Wiggins, Aaron", + }, + Object { + "code": "AnCowan", + "id": "Cowan, Anthony", + }, + Object { + "code": "DoScott", + "id": "Scott, Donta", + }, + Object { + "code": "ErAyala", + "id": "Ayala, Eric", + }, + Object { + "code": "JaSmith", + "id": "Smith, Jalen", + }, + ], + }, + "_type": "_doc", + }, + ], + "max_score": 4.760141, + "total": Object { + "relation": "eq", + "value": 24, + }, + }, + }, + "total_def_2p_attempts": Object { + "value": 50, + }, + "total_def_2p_made": Object { + "value": 17, + }, + "total_def_2pmid_attempts": Object { + "value": 22, + }, + "total_def_2pmid_made": Object { + "value": 3, + }, + "total_def_2prim_attempts": Object { + "value": 28, + }, + "total_def_2prim_made": Object { + "value": 14, + }, + "total_def_3p_attempts": Object { + "value": 43, + }, + "total_def_3p_made": Object { + "value": 10, + }, + "total_def_drb": Object { + "value": 36, + }, + "total_def_fga": Object { + "value": 93, + }, + "total_def_fta": Object { + "value": 27, + }, + "total_def_orb": Object { + "value": 27, + }, + "total_def_pts": Object { + "value": 78, + }, + "total_off_2p_attempts": Object { + "value": 56, + }, + "total_off_2p_made": Object { + "value": 26, + }, + "total_off_2pmid_attempts": Object { + "value": 25, + }, + "total_off_2pmid_made": Object { + "value": 10, + }, + "total_off_2prim_attempts": Object { + "value": 31, + }, + "total_off_2prim_made": Object { + "value": 16, + }, + "total_off_3p_attempts": Object { + "value": 40, + }, + "total_off_3p_made": Object { + "value": 15, + }, + "total_off_drb": Object { + "value": 43, + }, + "total_off_fga": Object { + "value": 96, + }, + "total_off_fta": Object { + "value": 19, + }, + "total_off_orb": Object { + "value": 21, + }, + "total_off_pts": Object { + "value": 112, + }, + }, + "kind": "data-row", + "prefixFn": [Function], + "tableFieldsOverride": undefined, + }, + GenericTableSeparator { + "kind": "separator", + }, + ] + } + tableFields={ + Object { + "2p": GenericTableColProps { + "className": "", + "colName": "2P%", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "2 point field goal percentage", + "widthUnits": 2, + }, + "2pmid": GenericTableColProps { + "className": "", + "colName": "2P% mid", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "2 point field goal percentage (mid range)", + "widthUnits": 2, + }, + "2pmidr": GenericTableColProps { + "className": "", + "colName": "2PR mid", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Percentage of mid range 2 pointers taken against all field goals", + "widthUnits": 2, + }, + "2prim": GenericTableColProps { + "className": "", + "colName": "2P% rim", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "2 point field goal percentage (layup/dunk/etc)", + "widthUnits": 2, + }, + "2primr": GenericTableColProps { + "className": "", + "colName": "2PR rim", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Percentage of layup/dunk/etc 2 pointers taken against all field goals", + "widthUnits": 2, + }, + "3p": GenericTableColProps { + "className": "", + "colName": "3P%", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "3 point field goal percentage", + "widthUnits": 2, + }, + "3pr": GenericTableColProps { + "className": "", + "colName": "3PR", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Percentage of 3 pointers taken against all field goals", + "widthUnits": 2, + }, + "adj_opp": GenericTableColProps { + "className": "", + "colName": "SoS", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Weighted average of the offensive or defensive efficiencies of the lineups' opponents", + "widthUnits": 2, + }, + "adj_ppp": GenericTableColProps { + "className": "", + "colName": "Adj P/100", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Approximate schedule-adjusted Points per 100 possessions", + "widthUnits": 2, + }, + "assist": GenericTableColProps { + "className": "", + "colName": "A%", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Assist % for selected lineups", + "widthUnits": 2, + }, + "efg": GenericTableColProps { + "className": "", + "colName": "eFG%", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Effective field goal% (3 pointers count 1.5x as much) for selected lineups", + "widthUnits": 2, + }, + "ftr": GenericTableColProps { + "className": "", + "colName": "FTR", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Free throw rate for selected lineups", + "widthUnits": 2, + }, + "orb": GenericTableColProps { + "className": "", + "colName": "OR%", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Offensive rebounding % for selected lineups", + "widthUnits": 2, + }, + "poss": GenericTableColProps { + "className": "", + "colName": "Poss", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Total number of possessions for selected lineups", + "widthUnits": 2, + }, + "ppp": GenericTableColProps { + "className": "", + "colName": "P/100", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Points per 100 possessions", + "widthUnits": 2, + }, + "sep0": GenericTableColProps { + "className": "", + "colName": "", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "", + "widthUnits": 0.5, + }, + "sep1": GenericTableColProps { + "className": "", + "colName": "", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "", + "widthUnits": 0.5, + }, + "sep2a": GenericTableColProps { + "className": "", + "colName": "", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "", + "widthUnits": 0.5, + }, + "sep2b": GenericTableColProps { + "className": "", + "colName": "", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "", + "widthUnits": 0.05, + }, + "sep3": GenericTableColProps { + "className": "", + "colName": "", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "", + "widthUnits": 0.5, + }, + "sep4": GenericTableColProps { + "className": "", + "colName": "", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "", + "widthUnits": 0.05, + }, + "title": GenericTableColProps { + "className": "small", + "colName": "", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": true, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "", + "widthUnits": 16, + }, + "to": GenericTableColProps { + "className": "", + "colName": "TO%", + "colorPicker": [Function], + "formatter": [Function], + "isTitle": false, + "missingData": undefined, + "rowSpan": [Function], + "toolTip": "Turnover % for selected lineups", + "widthUnits": 2, + }, + } + } + /> + + + + +`; + +exports[`LineupStatsTable LineupStatsTable - should create snapshot (with individual data - plain, luck, luck diags) 1`] = ` + + + + + + + + + Filter + + + + + + + + + @@ -272,27 +5838,27 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": "asc:diff_to", }, Object { - "label": "ORB% (Desc. / Offensive)", + "label": "OR% (Desc. / Offensive)", "value": "desc:off_orb", }, Object { - "label": "ORB% (Asc. / Offensive)", + "label": "OR% (Asc. / Offensive)", "value": "asc:off_orb", }, Object { - "label": "ORB% (Desc. / Defensive)", + "label": "OR% (Desc. / Defensive)", "value": "desc:def_orb", }, Object { - "label": "ORB% (Asc. / Defensive)", + "label": "OR% (Asc. / Defensive)", "value": "asc:def_orb", }, Object { - "label": "ORB% (Desc. / Off-Def)", + "label": "OR% (Desc. / Off-Def)", "value": "desc:diff_orb", }, Object { - "label": "ORB% (Asc. / Off-Def)", + "label": "OR% (Asc. / Off-Def)", "value": "asc:diff_orb", }, Object { @@ -596,6 +6162,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.25316455696202533, }, "def_3p": Object { + "old_value": 0.2878787878787879, + "override": "Luck adjusted", "value": 0.2878787878787879, }, "def_3pr": Object { @@ -605,12 +6173,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 95.56989795918368, }, "def_adj_ppp": Object { + "old_value": 85.47619047619048, + "override": "Adjustment derived from Def 3P%", "value": 85.47619047619048, }, "def_assist": Object { "value": 0.48, }, "def_efg": Object { + "old_value": 0.43354430379746833, + "override": "Adjustment derived from Def 3P%", "value": 0.43354430379746833, }, "def_ftr": Object { @@ -623,6 +6195,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 189, }, "def_ppp": Object { + "old_value": 90.47619047619048, + "override": "Adjustment derived from Def 3P%", "value": 90.47619047619048, }, "def_title": "", @@ -647,6 +6221,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3473053892215569, }, "off_3p": Object { + "old_value": 0.27692307692307694, + "override": "Luck adjusted", "value": 0.27692307692307694, }, "off_3pr": Object { @@ -656,12 +6232,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 103.93650793650794, }, "off_adj_ppp": Object { + "old_value": 116.22448979591837, + "override": "Adjustment derived from Off 3P%", "value": 116.22448979591837, }, "off_assist": Object { "value": 0.52, }, "off_efg": Object { + "old_value": 0.47305389221556887, + "override": "Adjustment derived from Off 3P%", "value": 0.47305389221556887, }, "off_ftr": Object { @@ -674,9 +6254,86 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 196, }, "off_ppp": Object { + "old_value": 111.22448979591837, + "override": "Adjustment derived from Off 3P%", "value": 111.22448979591837, }, - "off_title": "AaWiggins / DaMorsell / JaSmith / ErAyala / AnCowan", + "off_title": + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + AnCowan / AaWiggins / JaSmith / ErAyala / DaMorsell + + +
, "off_to": Object { "value": 0.14285714285714285, }, @@ -823,6 +6480,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.25316455696202533, }, "def_3p": Object { + "old_value": 0.2878787878787879, + "override": "Luck adjusted", "value": 0.2878787878787879, }, "def_3pr": Object { @@ -832,12 +6491,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 95.56989795918368, }, "def_adj_ppp": Object { + "old_value": 85.47619047619048, + "override": "Adjustment derived from Def 3P%", "value": 85.47619047619048, }, "def_assist": Object { "value": 0.48, }, "def_efg": Object { + "old_value": 0.43354430379746833, + "override": "Adjustment derived from Def 3P%", "value": 0.43354430379746833, }, "def_ftr": Object { @@ -850,6 +6513,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 189, }, "def_ppp": Object { + "old_value": 90.47619047619048, + "override": "Adjustment derived from Def 3P%", "value": 90.47619047619048, }, "def_title": "", @@ -874,6 +6539,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3473053892215569, }, "off_3p": Object { + "old_value": 0.27692307692307694, + "override": "Luck adjusted", "value": 0.27692307692307694, }, "off_3pr": Object { @@ -883,12 +6550,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 103.93650793650794, }, "off_adj_ppp": Object { + "old_value": 116.22448979591837, + "override": "Adjustment derived from Off 3P%", "value": 116.22448979591837, }, "off_assist": Object { "value": 0.52, }, "off_efg": Object { + "old_value": 0.47305389221556887, + "override": "Adjustment derived from Off 3P%", "value": 0.47305389221556887, }, "off_ftr": Object { @@ -901,9 +6572,86 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 196, }, "off_ppp": Object { + "old_value": 111.22448979591837, + "override": "Adjustment derived from Off 3P%", "value": 111.22448979591837, }, - "off_title": "AaWiggins / DaMorsell / JaSmith / ErAyala / AnCowan", + "off_title": + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + AnCowan / AaWiggins / JaSmith / ErAyala / DaMorsell + + +
, "off_to": Object { "value": 0.14285714285714285, }, @@ -1031,6 +6779,79 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "prefixFn": [Function], "tableFieldsOverride": undefined, }, + GenericTableTextRow { + "className": "small pt-2", + "kind": "text-row", + "text": , + }, GenericTableSeparator { "kind": "separator", }, @@ -1053,6 +6874,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3176470588235294, }, "def_3p": Object { + "old_value": 0.3333333333333333, + "override": "Luck adjusted", "value": 0.3333333333333333, }, "def_3pr": Object { @@ -1062,12 +6885,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 93.37927927927929, }, "def_adj_ppp": Object { + "old_value": 75.47619047619048, + "override": "Adjustment derived from Def 3P%", "value": 75.47619047619048, }, "def_assist": Object { "value": 0.47, }, "def_efg": Object { + "old_value": 0.4176470588235294, + "override": "Adjustment derived from Def 3P%", "value": 0.4176470588235294, }, "def_ftr": Object { @@ -1080,6 +6907,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 114, }, "def_ppp": Object { + "old_value": 77.19298245614036, + "override": "Adjustment derived from Def 3P%", "value": 77.19298245614036, }, "def_title": "", @@ -1104,6 +6933,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3333333333333333, }, "off_3p": Object { + "old_value": 0.22580645161290322, + "override": "Luck adjusted", "value": 0.22580645161290322, }, "off_3pr": Object { @@ -1113,12 +6944,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 106.32105263157895, }, "off_adj_ppp": Object { + "old_value": 96.22448979591837, + "override": "Adjustment derived from Off 3P%", "value": 96.22448979591837, }, "off_assist": Object { "value": 0.53, }, "off_efg": Object { + "old_value": 0.3735632183908046, + "override": "Adjustment derived from Off 3P%", "value": 0.3735632183908046, }, "off_ftr": Object { @@ -1131,9 +6966,86 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 111, }, "off_ppp": Object { + "old_value": 89.1891891891892, + "override": "Adjustment derived from Off 3P%", "value": 89.1891891891892, }, - "off_title": "AaWiggins / DaMorsell / JaSmith / DoScott / AnCowan", + "off_title": + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + AnCowan / AaWiggins / JaSmith / DoScott / DaMorsell + + +
, "off_to": Object { "value": 0.18018018018018017, }, @@ -1280,6 +7192,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3176470588235294, }, "def_3p": Object { + "old_value": 0.3333333333333333, + "override": "Luck adjusted", "value": 0.3333333333333333, }, "def_3pr": Object { @@ -1289,12 +7203,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 93.37927927927929, }, "def_adj_ppp": Object { + "old_value": 75.47619047619048, + "override": "Adjustment derived from Def 3P%", "value": 75.47619047619048, }, "def_assist": Object { "value": 0.47, }, "def_efg": Object { + "old_value": 0.4176470588235294, + "override": "Adjustment derived from Def 3P%", "value": 0.4176470588235294, }, "def_ftr": Object { @@ -1307,6 +7225,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 114, }, "def_ppp": Object { + "old_value": 77.19298245614036, + "override": "Adjustment derived from Def 3P%", "value": 77.19298245614036, }, "def_title": "", @@ -1331,6 +7251,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3333333333333333, }, "off_3p": Object { + "old_value": 0.22580645161290322, + "override": "Luck adjusted", "value": 0.22580645161290322, }, "off_3pr": Object { @@ -1340,12 +7262,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 106.32105263157895, }, "off_adj_ppp": Object { + "old_value": 96.22448979591837, + "override": "Adjustment derived from Off 3P%", "value": 96.22448979591837, }, "off_assist": Object { "value": 0.53, }, "off_efg": Object { + "old_value": 0.3735632183908046, + "override": "Adjustment derived from Off 3P%", "value": 0.3735632183908046, }, "off_ftr": Object { @@ -1358,9 +7284,86 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 111, }, "off_ppp": Object { + "old_value": 89.1891891891892, + "override": "Adjustment derived from Off 3P%", "value": 89.1891891891892, }, - "off_title": "AaWiggins / DaMorsell / JaSmith / DoScott / AnCowan", + "off_title": + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + AnCowan / AaWiggins / JaSmith / DoScott / DaMorsell + + +
, "off_to": Object { "value": 0.18018018018018017, }, @@ -1488,6 +7491,79 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "prefixFn": [Function], "tableFieldsOverride": undefined, }, + GenericTableTextRow { + "className": "small pt-2", + "kind": "text-row", + "text": , + }, GenericTableSeparator { "kind": "separator", }, @@ -1510,6 +7586,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3010752688172043, }, "def_3p": Object { + "old_value": 0.23255813953488372, + "override": "Luck adjusted", "value": 0.23255813953488372, }, "def_3pr": Object { @@ -1519,12 +7597,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 93.46372549019607, }, "def_adj_ppp": Object { + "old_value": 75.47619047619048, + "override": "Adjustment derived from Def 3P%", "value": 75.47619047619048, }, "def_assist": Object { "value": 0.48, }, "def_efg": Object { + "old_value": 0.34408602150537637, + "override": "Adjustment derived from Def 3P%", "value": 0.34408602150537637, }, "def_ftr": Object { @@ -1537,6 +7619,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 97, }, "def_ppp": Object { + "old_value": 80.41237113402062, + "override": "Adjustment derived from Def 3P%", "value": 80.41237113402062, }, "def_title": "", @@ -1561,6 +7645,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3229166666666667, }, "off_3p": Object { + "old_value": 0.375, + "override": "Luck adjusted", "value": 0.375, }, "off_3pr": Object { @@ -1570,12 +7656,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 104.70927835051546, }, "off_adj_ppp": Object { + "old_value": 114.22448979591837, + "override": "Adjustment derived from Off 3P%", "value": 114.22448979591837, }, "off_assist": Object { "value": 0.52, }, "off_efg": Object { + "old_value": 0.5052083333333334, + "override": "Adjustment derived from Off 3P%", "value": 0.5052083333333334, }, "off_ftr": Object { @@ -1588,9 +7678,86 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 102, }, "off_ppp": Object { + "old_value": 109.80392156862744, + "override": "Adjustment derived from Off 3P%", "value": 109.80392156862744, }, - "off_title": "AaWiggins / DoScott / JaSmith / ErAyala / AnCowan", + "off_title": + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + AnCowan / AaWiggins / JaSmith / ErAyala / DoScott + + +
, "off_to": Object { "value": 0.20588235294117646, }, @@ -1737,6 +7904,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3010752688172043, }, "def_3p": Object { + "old_value": 0.23255813953488372, + "override": "Luck adjusted", "value": 0.23255813953488372, }, "def_3pr": Object { @@ -1746,12 +7915,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 93.46372549019607, }, "def_adj_ppp": Object { + "old_value": 75.47619047619048, + "override": "Adjustment derived from Def 3P%", "value": 75.47619047619048, }, "def_assist": Object { "value": 0.48, }, "def_efg": Object { + "old_value": 0.34408602150537637, + "override": "Adjustment derived from Def 3P%", "value": 0.34408602150537637, }, "def_ftr": Object { @@ -1764,6 +7937,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 97, }, "def_ppp": Object { + "old_value": 80.41237113402062, + "override": "Adjustment derived from Def 3P%", "value": 80.41237113402062, }, "def_title": "", @@ -1788,6 +7963,8 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 0.3229166666666667, }, "off_3p": Object { + "old_value": 0.375, + "override": "Luck adjusted", "value": 0.375, }, "off_3pr": Object { @@ -1797,12 +7974,16 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 104.70927835051546, }, "off_adj_ppp": Object { + "old_value": 114.22448979591837, + "override": "Adjustment derived from Off 3P%", "value": 114.22448979591837, }, "off_assist": Object { "value": 0.52, }, "off_efg": Object { + "old_value": 0.5052083333333334, + "override": "Adjustment derived from Off 3P%", "value": 0.5052083333333334, }, "off_ftr": Object { @@ -1815,9 +7996,86 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "value": 102, }, "off_ppp": Object { + "old_value": 109.80392156862744, + "override": "Adjustment derived from Off 3P%", "value": 109.80392156862744, }, - "off_title": "AaWiggins / DoScott / JaSmith / ErAyala / AnCowan", + "off_title": + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + AnCowan / AaWiggins / JaSmith / ErAyala / DoScott + + +
, "off_to": Object { "value": 0.20588235294117646, }, @@ -1945,6 +8203,79 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "prefixFn": [Function], "tableFieldsOverride": undefined, }, + GenericTableTextRow { + "className": "small pt-2", + "kind": "text-row", + "text": , + }, GenericTableSeparator { "kind": "separator", }, @@ -2086,7 +8417,7 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu }, "orb": GenericTableColProps { "className": "", - "colName": "ORB%", + "colName": "OR%", "colorPicker": [Function], "formatter": [Function], "isTitle": false, @@ -2181,7 +8512,7 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "missingData": undefined, "rowSpan": [Function], "toolTip": "", - "widthUnits": 0.5, + "widthUnits": 0.05, }, "title": GenericTableColProps { "className": "small", @@ -2192,7 +8523,7 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (no individu "missingData": undefined, "rowSpan": [Function], "toolTip": "", - "widthUnits": 8, + "widthUnits": 16, }, "to": GenericTableColProps { "className": "", @@ -2254,7 +8585,7 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi @@ -2273,6 +8604,11 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi sm="1" > + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + + + + + + ; + + + , + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + ErAyala + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DaMorsell + + + + + +
, + ], "off_to": Object { "value": 0.14285714285714285, }, @@ -3117,7 +10024,578 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi "off_ppp": Object { "value": 111.22448979591837, }, - "off_title": "AnCowan / AaWiggins / JaSmith / ErAyala / DaMorsell", + "off_title": Array [ + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + ErAyala + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DaMorsell + + + + + +
, + ], "off_to": Object { "value": 0.14285714285714285, }, @@ -3347,7 +10825,578 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi "off_ppp": Object { "value": 89.1891891891892, }, - "off_title": "AnCowan / AaWiggins / JaSmith / DoScott / DaMorsell", + "off_title": Array [ + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DoScott + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DaMorsell + + + + + +
, + ], "off_to": Object { "value": 0.18018018018018017, }, @@ -3574,7 +11623,578 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi "off_ppp": Object { "value": 89.1891891891892, }, - "off_title": "AnCowan / AaWiggins / JaSmith / DoScott / DaMorsell", + "off_title": Array [ + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DoScott + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Morsell, Darryl: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DaMorsell + + + + + +
, + ], "off_to": Object { "value": 0.18018018018018017, }, @@ -3804,7 +12424,578 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi "off_ppp": Object { "value": 109.80392156862744, }, - "off_title": "AnCowan / AaWiggins / JaSmith / ErAyala / DoScott", + "off_title": Array [ + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + ErAyala + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DoScott + + + + + +
, + ], "off_to": Object { "value": 0.20588235294117646, }, @@ -4031,7 +13222,578 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi "off_ppp": Object { "value": 109.80392156862744, }, - "off_title": "AnCowan / AaWiggins / JaSmith / ErAyala / DoScott", + "off_title": Array [ + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AnCowan + + + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + AaWiggins + + + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + JaSmith + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + ErAyala + + + + + + ; + + +
, + + + Cowan, Anthony: s-PG +
+
+ + ORtg 113 on 25%, DRB 9% +
+
+ + +
+
+ + Wiggins, Aaron: WG +
+
+ + ORtg 98 on 21%, DRB 14% +
+
+ + +
+
+ + Smith, Jalen: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Ayala, Eric: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + Scott, Donta: ?? +
+
+ + ORtg 0 on 0%, DRB 0% +
+
+ + +
+
+ + } + placement="auto" + > + + + + + DoScott + + + + + +
, + ], "off_to": Object { "value": 0.20588235294117646, }, @@ -4300,7 +14062,7 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi }, "orb": GenericTableColProps { "className": "", - "colName": "ORB%", + "colName": "OR%", "colorPicker": [Function], "formatter": [Function], "isTitle": false, @@ -4395,7 +14157,7 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi "missingData": undefined, "rowSpan": [Function], "toolTip": "", - "widthUnits": 0.5, + "widthUnits": 0.05, }, "title": GenericTableColProps { "className": "small", @@ -4406,7 +14168,7 @@ exports[`LineupStatsTable LineupStatsTable - should create snapshot (with indivi "missingData": undefined, "rowSpan": [Function], "toolTip": "", - "widthUnits": 8, + "widthUnits": 16, }, "to": GenericTableColProps { "className": "", diff --git a/src/components/__tests__/__snapshots__/RosterCompareTable.test.tsx.snap b/src/components/__tests__/__snapshots__/RosterCompareTable.test.tsx.snap index 2d4a4b58..8ee1623e 100644 --- a/src/components/__tests__/__snapshots__/RosterCompareTable.test.tsx.snap +++ b/src/components/__tests__/__snapshots__/RosterCompareTable.test.tsx.snap @@ -151,7 +151,7 @@ exports[`RosterCompareTable RosterCompareTable - should create snapshot 1`] = ` } >
- 100.0 + 100
- 100.0 + 100
- 100.0 + 100
- 100.0 + 100
CbbColors.redToGreen.domain(CbbColors.diff10Domaip100nRedGreen)(val).toString(); - public static readonly def_diff10_p100_redGreen = (val: number) => CbbColors.greenToRed.domain(CbbColors.diff10Domaip100nRedGreen)(val).toString(); + private static readonly diff10Domainp100RedGreen = [ -10, 0, 10 ]; + public static readonly off_diff10_p100_redGreen = (val: number) => CbbColors.redToGreen.domain(CbbColors.diff10Domainp100RedGreen)(val).toString(); + public static readonly def_diff10_p100_redGreen = (val: number) => CbbColors.greenToRed.domain(CbbColors.diff10Domainp100RedGreen)(val).toString(); public static readonly diff10_p100_redGreen: CbbColorTuple = [ CbbColors.off_diff10_p100_redGreen, CbbColors.def_diff10_p100_redGreen ]; // Around 0 (blue/orange): private static readonly diff10DomainBlueOrange = [ -0.10, 0, 0.10 ]; diff --git a/src/utils/CommonTableDefs.ts b/src/utils/CommonTableDefs.ts index 5d8f5729..7c0af855 100644 --- a/src/utils/CommonTableDefs.ts +++ b/src/utils/CommonTableDefs.ts @@ -145,14 +145,14 @@ export class CommonTableDefs { // LINEUP: static readonly lineupTable = { //accessors vs column metadata - "title": GenericTableOps.addTitle("", "", CommonTableDefs.rowSpanCalculator, "small"), + "title": GenericTableOps.addTitle("", "", CommonTableDefs.rowSpanCalculator, "small", GenericTableOps.htmlFormatter, 16), "sep0": GenericTableOps.addColSeparator(), "ppp": GenericTableOps.addPtsCol("P/100", "Points per 100 possessions", CommonTableDefs.picker(...CbbColors.pp100)), "adj_ppp": GenericTableOps.addPtsCol("Adj P/100", "Approximate schedule-adjusted Points per 100 possessions", CommonTableDefs.picker(...CbbColors.pp100)), "sep1": GenericTableOps.addColSeparator(), "efg": GenericTableOps.addPctCol("eFG%", "Effective field goal% (3 pointers count 1.5x as much) for selected lineups", CommonTableDefs.picker(...CbbColors.eFG)), "to": GenericTableOps.addPctCol("TO%", "Turnover % for selected lineups", CommonTableDefs.picker(...CbbColors.tOver)), - "orb": GenericTableOps.addPctCol("ORB%", "Offensive rebounding % for selected lineups", CommonTableDefs.picker(...CbbColors.oReb)), + "orb": GenericTableOps.addPctCol("OR%", "Offensive rebounding % for selected lineups", CommonTableDefs.picker(...CbbColors.oReb)), "ftr": GenericTableOps.addPctCol("FTR", "Free throw rate for selected lineups", CommonTableDefs.picker(...CbbColors.ftr)), "sep2a": GenericTableOps.addColSeparator(), "assist": GenericTableOps.addPctCol("A%", "Assist % for selected lineups", CommonTableDefs.picker(...CbbColors.ast)), @@ -165,7 +165,7 @@ export class CommonTableDefs { "2p": GenericTableOps.addPctCol("2P%", "2 point field goal percentage", CommonTableDefs.picker(...CbbColors.fg2P)), "2pmid": GenericTableOps.addPctCol("2P% mid", "2 point field goal percentage (mid range)", CommonTableDefs.picker(...CbbColors.fg2P_mid)), "2prim": GenericTableOps.addPctCol("2P% rim", "2 point field goal percentage (layup/dunk/etc)", CommonTableDefs.picker(...CbbColors.fg2P_rim)), - "sep4": GenericTableOps.addColSeparator(), + "sep4": GenericTableOps.addColSeparator(0.05), "poss": GenericTableOps.addIntCol("Poss", "Total number of possessions for selected lineups", GenericTableOps.defaultColorPicker), "adj_opp": GenericTableOps.addPtsCol("SoS", "Weighted average of the offensive or defensive efficiencies of the lineups' opponents", GenericTableOps.defaultColorPicker), }; @@ -180,7 +180,7 @@ export class CommonTableDefs { "sep1": GenericTableOps.addColSeparator(), "efg": GenericTableOps.addPctCol("eFG%", "Effective field goal% (3 pointers count 1.5x as much) for selected lineups", CommonTableDefs.picker(...CbbColors.eFG)), "to": GenericTableOps.addPctCol("TO%", "Turnover % for selected lineups", CommonTableDefs.picker(...CbbColors.tOver)), - "orb": GenericTableOps.addPctCol("ORB%", "Offensive rebounding % for selected lineups", CommonTableDefs.picker(...CbbColors.oReb)), + "orb": GenericTableOps.addPctCol("OR%", "Offensive rebounding % for selected lineups", CommonTableDefs.picker(...CbbColors.oReb)), "ftr": GenericTableOps.addPctCol("FTR", "Free throw rate for selected lineups", CommonTableDefs.picker(...CbbColors.ftr)), "sep2a": GenericTableOps.addColSeparator(), "assist": GenericTableOps.addPctCol("A%", "Assist % for selected lineups", CommonTableDefs.picker(...CbbColors.ast)), diff --git a/src/utils/FilterModels.ts b/src/utils/FilterModels.ts index 56bb2d4e..57a76bf5 100644 --- a/src/utils/FilterModels.ts +++ b/src/utils/FilterModels.ts @@ -68,6 +68,7 @@ export type LineupFilterParams = { } & { // These params need to be explicitly merged in buildParamsFromState(true) // For sorting in the generated table: + decorate?: boolean, showTotal?: boolean, minPoss?: string, maxTableSize?: string, @@ -118,6 +119,7 @@ export class ParamDefaults { static readonly defaultPlayerPosDiagMode = false; // Lineup static readonly defaultLineupShowTotal = false; + static readonly defaultLineupDecorate = true; static readonly defaultLineupMinPos = "5"; static readonly defaultLineupMaxTableSize = "50"; static readonly defaultLineupSortBy = "desc:off_poss"; diff --git a/src/utils/HistoryManager.ts b/src/utils/HistoryManager.ts index c5bbb834..87a30342 100644 --- a/src/utils/HistoryManager.ts +++ b/src/utils/HistoryManager.ts @@ -212,6 +212,7 @@ export class HistoryManager { // Other params const otherParamArray = _.flatMap([ + _.isNil(p.decorate) || p.decorate ? [ ] : [ `plain` ], p.showTotal ? [ `show-total` ] : [], p.sortBy && (p.sortBy != ParamDefaults.defaultLineupSortBy) ? [ `sort:${p.sortBy || ParamDefaults.defaultLineupSortBy}` ] : [], p.filter ? [ `filter:'${tidyQuery(p.filter)}'` ] : [], diff --git a/src/utils/__tests__/HistoryManager.test.ts b/src/utils/__tests__/HistoryManager.test.ts index 2b759801..7653a576 100644 --- a/src/utils/__tests__/HistoryManager.test.ts +++ b/src/utils/__tests__/HistoryManager.test.ts @@ -80,6 +80,7 @@ describe("HistoryManager", () => { year: "2018/19", gender: "Women", baseQuery: "test ''", maxTableSize: 11, minRank: "1", maxRank: "370", + decorate: true, minPoss: 10, sortBy: "test-sort", filter: "Test'Filter", luck: { base: "baseline" }, @@ -93,13 +94,14 @@ describe("HistoryManager", () => { year: "2018/19", gender: "Women", baseQuery: "test ''", maxTableSize: 11, minRank: "1", maxRank: "370", + decorate: false, showTotal: true, minPoss: 10, sortBy: "test-sort", filter: "Test'Filter", lineupLuck: true }; expect(HistoryManager.filterSummary("lineup-", lineup3)).toBe( - `Lineups: 2018/19 team2 (W): query:'test ""', lineup-luck (max:11, min-poss:10, show-total, sort:test-sort, filter:'Test"Filter')` + `Lineups: 2018/19 team2 (W): query:'test ""', lineup-luck (max:11, min-poss:10, plain, show-total, sort:test-sort, filter:'Test"Filter')` ); }); test("HistoryManager - teamReportFilterSummary", () => { diff --git a/src/utils/stats/LineupDisplayUtils.css b/src/utils/stats/LineupDisplayUtils.css new file mode 100644 index 00000000..378bcc4f --- /dev/null +++ b/src/utils/stats/LineupDisplayUtils.css @@ -0,0 +1,28 @@ +.assistBadge::after { + content: "A" +} +.megaAssistBadge::after { + content: "A"; + font-weight: 700; +} +.freeThrowBadge::after { + content: "F" +} +.megaFreeThrowBadge::after { + content: "F"; + font-weight: 700; +} +.twoPointBadge::after { + content: "2"; +} +.megaTwoPointBadge::after { + content: "2"; + font-weight: 700; +} +.threePointBadge::after { + content: "3"; +} +.megaThreePointBadge::after { + content: "3"; + font-weight: 700; +} diff --git a/src/utils/stats/LineupDisplayUtils.tsx b/src/utils/stats/LineupDisplayUtils.tsx new file mode 100644 index 00000000..7c70be23 --- /dev/null +++ b/src/utils/stats/LineupDisplayUtils.tsx @@ -0,0 +1,145 @@ + +// Bootstrap imports: +import 'bootstrap/dist/css/bootstrap.min.css'; +import Badge from 'react-bootstrap/Badge'; +import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; +import Tooltip from 'react-bootstrap/Tooltip'; + +// Lodash: +import _ from "lodash"; + +// Util imports +import { CbbColors } from "../CbbColors"; + +import "./LineupDisplayUtils.css"; + +/** Encapsulates some of the logic used to build decorated lineups in LineupStatsTable */ +export class LineupDisplayUtils { + + /** Builds an information (over-)loaded lineup HTML */ + static buildDecoratedLineup( + key: string, + sortedLineup: { code: string, id: string }[], + perLineupPlayerMap: Record>, + positionFromPlayerKey: Record, + colorField: string, + decorateLineup: boolean + ) { + const tooltip = LineupDisplayUtils.buildTooltipTexts( + key, sortedLineup, perLineupPlayerMap, positionFromPlayerKey + ); + if (decorateLineup) { + return sortedLineup.map((cid: { code: string, id: string }, pid: number) => { + return { + LineupDisplayUtils.buildDecoratedPlayer(cid, perLineupPlayerMap, colorField, pid == 4) + }; + }); + } else { + return + {sortedLineup.map((cid: { code: string, id: string}) => cid.code).join(" / ")} + ; + } + } + + /** Builds a tooltip element for the entire lineup */ + static buildTooltipTexts( + key: string, + sortedLineup: { code: string, id: string }[], + perLineupPlayerMap: Record>, + positionFromPlayerKey: Record + ) { + const tooltipTexts = _.flatMap(sortedLineup, (cid: {id: string, code: string}) => { + return LineupDisplayUtils.buildTooltipText(cid, perLineupPlayerMap, positionFromPlayerKey); + }); + const tooltip = {_.map(tooltipTexts, + (t: string, i: number) => {t}
+ )}
; + + return tooltip; + } + + private static buildTooltipText( + cid: { code: string, id: string }, + perLineupPlayerMap: Record>, + positionFromPlayerKey: Record + ) { + // Some minimal info: + const playerInfo = perLineupPlayerMap[cid.id] || {}; + const oRtgStr = (playerInfo.off_rtg?.value || 0).toFixed(0); + const usageStr = (100*(playerInfo.off_usage?.value || 0)).toFixed(0) + "%"; + const defRbStr = (100*(playerInfo.def_orb?.value || 0)).toFixed(0) + "%"; + return [ + `${cid.id}: ${positionFromPlayerKey[cid.id]?.posClass || "??"}`, + `ORtg ${oRtgStr} on ${usageStr}, DRB ${defRbStr}`, + "" + ]; + } + + /** Builds the player HTML within a lineup */ + static buildDecoratedPlayer( + cid: { code: string, id: string }, + perLineupPlayerMap: Record>, + colorField: string, + finalPlayer: boolean + ) { + const fontWeight = (playerInfo: Record) => { + const usage = _.max( + [ 0.10, _.min( + [ playerInfo.off_usage?.value || 0.20, 0.35 ] + )] + ); + return 100*_.round((usage < 0.20) ? //10 == 100 weight + 1 + (usage-0.10)*40 : //20 == 500 weight + 5 + (usage-0.20)*20, 0); //35 ~= 800 weight + }; + + const colorChooser = (field: string) => { + switch(field) { + case "off_adj_rtg": return CbbColors.off_diff10_p100_redGreen; + case "def_adj_rtg": return CbbColors.def_diff10_p100_redGreen; + case "off_3pr": return CbbColors.fgr_offDef; + default: return (val: number) => CbbColors.malformedDataColor; + }; + }; + + const singleColorField = (playerInfo: Record, field: string) => { + const val = playerInfo[field]?.value; + const color = colorChooser(field)(val) + "80"; //(opacity at the end) + return color; + }; + + const buildBadges = (playerInfo: Record) => { + const _3pr = playerInfo.off_3pr?.value; + const ftr = playerInfo.off_ftr?.value; + const assist = playerInfo.off_assist?.value; + return + { _3pr <= 0.05 ? : null } + { _3pr >= 0.05 && _3pr < 0.2 ? : null } + { _3pr >= 0.45 && _3pr < 0.6 ? : null } + { _3pr >= 0.6 ? : null } + { ftr > 0.35 && ftr < 0.60 ? : null } + { ftr >= 0.6 ? : null } + { assist >= 0.18 && assist < 0.25 ? : null } + { assist >= 0.25 ? : null } + ; + }; + + const playerInfo = perLineupPlayerMap[cid.id]; + return + + {cid.code} + + {buildBadges(playerInfo)} + {finalPlayer ? null : ; } + ; + } + +} diff --git a/src/utils/stats/PositionalManualFixes.ts b/src/utils/stats/PositionalManualFixes.ts index 9c6a368a..79319d4e 100644 --- a/src/utils/stats/PositionalManualFixes.ts +++ b/src/utils/stats/PositionalManualFixes.ts @@ -36,6 +36,15 @@ const Maryland_2018_2020 = [ /** Team/season -> lineups -> positional overrides */ export const relativePositionFixes: Record = { + // 13/7/2020: Pack plays the point with Nickens at the SG + "Men_Maryland_2014/5": [{ + key: [ "JaNickens", "RiPack", undefined, undefined, undefined ], + rule: [ + { code: "RiPack", id: "Pack, Richaud" }, + { code: "JaNickens", id: "Nickens, Jared" }, + undefined, undefined, undefined + ] + }], "Men_Maryland_2018/9": Maryland_2018_2020, "Men_Maryland_2019/20": Maryland_2018_2020.concat([ // 7/10/2020: Lindo plays the 4 alongside Jalen Smith diff --git a/src/utils/stats/__tests__/LineupDisplayUtils.test.tsx b/src/utils/stats/__tests__/LineupDisplayUtils.test.tsx new file mode 100644 index 00000000..481ea302 --- /dev/null +++ b/src/utils/stats/__tests__/LineupDisplayUtils.test.tsx @@ -0,0 +1,89 @@ +import renderer from 'react-test-renderer'; +import React from 'react'; +import { LineupDisplayUtils } from '../LineupDisplayUtils'; +import { shallow } from 'enzyme' +import toJson from 'enzyme-to-json' + +describe("LineupDisplayUtils", () => { + + const testLineup = [ + { code: "p1", id: "player1" }, + { code: "p2", id: "player2" }, + { code: "p3", id: "player3" }, + { code: "p4", id: "player4" }, + { code: "p5", id: "player5" }, + ]; + const positionFromPlayerKey = { //(just used for display) + "player1": { posClass: "p-PG" }, + "player2": { posClass: "CG" }, + "player3": { posClass: "WG" }, + "player4": { posClass: "WF" }, + "player5": { posClass: "PF/C" }, + }; + const perLineupPlayerMap = { + "player1": { // *3* A + off_rtg: { value: 101 }, off_adj_rtg: { value : 0.5 }, //(rtg just used for display) + off_usage: { value: 0.1 }, off_assist: { value: 0.20 }, + off_3pr: { value: 0.8 }, off_ftr: { value: 0.1 }, + def_orb: { value: 0.05 }, //(just used for display) + }, + "player2": { // *A* *F* + off_rtg: { value: 102 }, off_adj_rtg: { value : 1.0 }, //(rtg just used for display) + off_usage: { value: 0.15 }, off_assist: { value: 0.30 }, + off_3pr: { value: 0.3 }, off_ftr: { value: 0.9 }, + def_orb: { value: 0.10 }, //(just used for display) + }, + "player3": { // *2* + off_rtg: { value: 103 }, off_adj_rtg: { value : 1.5 }, //(rtg just used for display) + off_usage: { value: 0.20 }, off_assist: { value: 0.15 }, + off_3pr: { value: 0.01 }, off_ftr: { value: 0.3 }, + def_orb: { value: 0.15 }, //(just used for display) + }, + "player4": { // 2 F + off_rtg: { value: 104 }, off_adj_rtg: { value : 2.0 }, //(rtg just used for display) + off_usage: { value: 0.25 }, off_assist: { value: 0.15 }, + off_3pr: { value: 0.15 }, off_ftr: { value: 0.5 }, + def_orb: { value: 0.20 }, //(just used for display) + }, + "player5": { // 3 A F + off_rtg: { value: 105 }, off_adj_rtg: { value : 2.5 }, //(rtg just used for display) + off_usage: { value: 0.30 }, off_assist: { value: 0.20 }, + off_3pr: { value: 0.50 }, off_ftr: { value: 0.5 }, + def_orb: { value: 0.25 }, //(just used for display) + }, + } + + test("buildDecoratedLineup - plain version", () => { + const component = renderer.create( + { + LineupDisplayUtils.buildDecoratedLineup( + "p1_p2_p3_p4_p5", testLineup, perLineupPlayerMap, positionFromPlayerKey, "off_adj_rtg", false + ) + } + ); + const tree = component.toJSON(); + expect(tree).toMatchSnapshot(); + }); + test("buildDecoratedLineup - decorated version", () => { + const component = renderer.create( + { + LineupDisplayUtils.buildDecoratedLineup( + "p1_p2_p3_p4_p5", testLineup, perLineupPlayerMap, positionFromPlayerKey, "off_adj_rtg", true + ) + } + ); + const tree = component.toJSON(); + expect(tree).toMatchSnapshot(); + }); + test("buildDecoratedLineup - buildTooltipTexts", () => { + const component = renderer.create( + { + LineupDisplayUtils.buildTooltipTexts( + "p1_p2_p3_p4_p5", testLineup, perLineupPlayerMap, positionFromPlayerKey + ) + } + ); + const tree = component.toJSON(); + expect(tree).toMatchSnapshot(); + }); +}); diff --git a/src/utils/stats/__tests__/__snapshots__/LineupDisplayUtils.test.tsx.snap b/src/utils/stats/__tests__/__snapshots__/LineupDisplayUtils.test.tsx.snap new file mode 100644 index 00000000..c26ebc69 --- /dev/null +++ b/src/utils/stats/__tests__/__snapshots__/LineupDisplayUtils.test.tsx.snap @@ -0,0 +1,338 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`LineupDisplayUtils buildDecoratedLineup - buildTooltipTexts 1`] = ` + +