be-components 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/lib/commonjs/Competition/api/index.js +1 -1
  2. package/lib/commonjs/Competition/api/index.js.map +1 -1
  3. package/lib/commonjs/Competition/components/CompetitionPlay.js +1 -1
  4. package/lib/commonjs/Competition/components/CompetitionPlay.js.map +1 -1
  5. package/lib/commonjs/Competition/components/MarketsCard.js.map +1 -1
  6. package/lib/commonjs/Competition/index.js +37 -2
  7. package/lib/commonjs/Competition/index.js.map +1 -1
  8. package/lib/commonjs/CompetitionManager/api/index.js +153 -35
  9. package/lib/commonjs/CompetitionManager/api/index.js.map +1 -1
  10. package/lib/commonjs/CompetitionManager/components/AthleteSelector.js +170 -0
  11. package/lib/commonjs/CompetitionManager/components/AthleteSelector.js.map +1 -0
  12. package/lib/commonjs/CompetitionManager/components/CompetitionContestsForm.js +495 -423
  13. package/lib/commonjs/CompetitionManager/components/CompetitionContestsForm.js.map +1 -1
  14. package/lib/commonjs/CompetitionManager/components/CompetitionHeader.js +134 -0
  15. package/lib/commonjs/CompetitionManager/components/CompetitionHeader.js.map +1 -0
  16. package/lib/commonjs/CompetitionManager/components/CompetitionInfoForm.js +96 -73
  17. package/lib/commonjs/CompetitionManager/components/CompetitionInfoForm.js.map +1 -1
  18. package/lib/commonjs/CompetitionManager/components/CompetitionMatchMarketCard.js +147 -127
  19. package/lib/commonjs/CompetitionManager/components/CompetitionMatchMarketCard.js.map +1 -1
  20. package/lib/commonjs/CompetitionManager/components/CompetitionSettingsForm.js +38 -127
  21. package/lib/commonjs/CompetitionManager/components/CompetitionSettingsForm.js.map +1 -1
  22. package/lib/commonjs/CompetitionManager/components/ContestSelector.js +388 -0
  23. package/lib/commonjs/CompetitionManager/components/ContestSelector.js.map +1 -0
  24. package/lib/commonjs/CompetitionManager/components/ContestSettingsForm.js +436 -0
  25. package/lib/commonjs/CompetitionManager/components/ContestSettingsForm.js.map +1 -0
  26. package/lib/commonjs/CompetitionManager/components/MarketSelector.js +36 -26
  27. package/lib/commonjs/CompetitionManager/components/MarketSelector.js.map +1 -1
  28. package/lib/commonjs/CompetitionManager/index.js +492 -19
  29. package/lib/commonjs/CompetitionManager/index.js.map +1 -1
  30. package/lib/commonjs/Components/SearchBox.js +82 -0
  31. package/lib/commonjs/Components/SearchBox.js.map +1 -0
  32. package/lib/module/Competition/api/index.js +1 -1
  33. package/lib/module/Competition/api/index.js.map +1 -1
  34. package/lib/module/Competition/components/CompetitionPlay.js +1 -1
  35. package/lib/module/Competition/components/CompetitionPlay.js.map +1 -1
  36. package/lib/module/Competition/components/MarketsCard.js.map +1 -1
  37. package/lib/module/Competition/index.js +37 -2
  38. package/lib/module/Competition/index.js.map +1 -1
  39. package/lib/module/CompetitionManager/api/index.js +153 -35
  40. package/lib/module/CompetitionManager/api/index.js.map +1 -1
  41. package/lib/module/CompetitionManager/components/AthleteSelector.js +161 -0
  42. package/lib/module/CompetitionManager/components/AthleteSelector.js.map +1 -0
  43. package/lib/module/CompetitionManager/components/CompetitionContestsForm.js +493 -425
  44. package/lib/module/CompetitionManager/components/CompetitionContestsForm.js.map +1 -1
  45. package/lib/module/CompetitionManager/components/CompetitionHeader.js +127 -0
  46. package/lib/module/CompetitionManager/components/CompetitionHeader.js.map +1 -0
  47. package/lib/module/CompetitionManager/components/CompetitionInfoForm.js +99 -76
  48. package/lib/module/CompetitionManager/components/CompetitionInfoForm.js.map +1 -1
  49. package/lib/module/CompetitionManager/components/CompetitionMatchMarketCard.js +145 -127
  50. package/lib/module/CompetitionManager/components/CompetitionMatchMarketCard.js.map +1 -1
  51. package/lib/module/CompetitionManager/components/CompetitionSettingsForm.js +39 -131
  52. package/lib/module/CompetitionManager/components/CompetitionSettingsForm.js.map +1 -1
  53. package/lib/module/CompetitionManager/components/ContestSelector.js +379 -0
  54. package/lib/module/CompetitionManager/components/ContestSelector.js.map +1 -0
  55. package/lib/module/CompetitionManager/components/ContestSettingsForm.js +428 -0
  56. package/lib/module/CompetitionManager/components/ContestSettingsForm.js.map +1 -0
  57. package/lib/module/CompetitionManager/components/MarketSelector.js +34 -26
  58. package/lib/module/CompetitionManager/components/MarketSelector.js.map +1 -1
  59. package/lib/module/CompetitionManager/index.js +493 -20
  60. package/lib/module/CompetitionManager/index.js.map +1 -1
  61. package/lib/module/Components/SearchBox.js +73 -0
  62. package/lib/module/Components/SearchBox.js.map +1 -0
  63. package/lib/typescript/src/Competition/index.d.ts +2 -1
  64. package/lib/typescript/src/Competition/index.d.ts.map +1 -1
  65. package/lib/typescript/src/CompetitionManager/api/index.d.ts +32 -3
  66. package/lib/typescript/src/CompetitionManager/api/index.d.ts.map +1 -1
  67. package/lib/typescript/src/CompetitionManager/components/AthleteSelector.d.ts +18 -0
  68. package/lib/typescript/src/CompetitionManager/components/AthleteSelector.d.ts.map +1 -0
  69. package/lib/typescript/src/CompetitionManager/components/CompetitionContestsForm.d.ts +13 -1
  70. package/lib/typescript/src/CompetitionManager/components/CompetitionContestsForm.d.ts.map +1 -1
  71. package/lib/typescript/src/CompetitionManager/components/CompetitionHeader.d.ts +20 -0
  72. package/lib/typescript/src/CompetitionManager/components/CompetitionHeader.d.ts.map +1 -0
  73. package/lib/typescript/src/CompetitionManager/components/CompetitionInfoForm.d.ts +2 -1
  74. package/lib/typescript/src/CompetitionManager/components/CompetitionInfoForm.d.ts.map +1 -1
  75. package/lib/typescript/src/CompetitionManager/components/CompetitionMatchMarketCard.d.ts +1 -1
  76. package/lib/typescript/src/CompetitionManager/components/CompetitionMatchMarketCard.d.ts.map +1 -1
  77. package/lib/typescript/src/CompetitionManager/components/CompetitionSettingsForm.d.ts +3 -3
  78. package/lib/typescript/src/CompetitionManager/components/CompetitionSettingsForm.d.ts.map +1 -1
  79. package/lib/typescript/src/CompetitionManager/components/ContestSelector.d.ts +16 -0
  80. package/lib/typescript/src/CompetitionManager/components/ContestSelector.d.ts.map +1 -0
  81. package/lib/typescript/src/CompetitionManager/components/ContestSettingsForm.d.ts +15 -0
  82. package/lib/typescript/src/CompetitionManager/components/ContestSettingsForm.d.ts.map +1 -0
  83. package/lib/typescript/src/CompetitionManager/components/MarketSelector.d.ts +3 -2
  84. package/lib/typescript/src/CompetitionManager/components/MarketSelector.d.ts.map +1 -1
  85. package/lib/typescript/src/CompetitionManager/index.d.ts +2 -1
  86. package/lib/typescript/src/CompetitionManager/index.d.ts.map +1 -1
  87. package/lib/typescript/src/Components/SearchBox.d.ts +10 -0
  88. package/lib/typescript/src/Components/SearchBox.d.ts.map +1 -0
  89. package/package.json +2 -1
  90. package/src/Competition/api/index.ts +3 -3
  91. package/src/Competition/components/CompetitionPlay.tsx +1 -1
  92. package/src/Competition/components/MarketsCard.tsx +2 -2
  93. package/src/Competition/index.tsx +24 -4
  94. package/src/CompetitionManager/api/index.ts +71 -13
  95. package/src/CompetitionManager/components/AthleteSelector.tsx +127 -0
  96. package/src/CompetitionManager/components/CompetitionContestsForm.tsx +156 -261
  97. package/src/CompetitionManager/components/CompetitionHeader.tsx +101 -0
  98. package/src/CompetitionManager/components/CompetitionInfoForm.tsx +57 -45
  99. package/src/CompetitionManager/components/CompetitionMatchMarketCard.tsx +29 -70
  100. package/src/CompetitionManager/components/CompetitionSettingsForm.tsx +36 -103
  101. package/src/CompetitionManager/components/ContestSelector.tsx +269 -0
  102. package/src/CompetitionManager/components/ContestSettingsForm.tsx +281 -0
  103. package/src/CompetitionManager/components/MarketSelector.tsx +34 -23
  104. package/src/CompetitionManager/index.tsx +412 -16
  105. package/src/Components/SearchBox.tsx +54 -0
  106. package/src/types.d.ts +38 -4
@@ -0,0 +1,101 @@
1
+ import React from 'react';
2
+ import { View, Image } from 'react-native';
3
+ import type { CompetitionProps } from '../../types';
4
+ import { Button, Text } from '../../Components';
5
+ import Colors from '../../constants/colors';
6
+ import { view_styles } from '../../constants/styles';
7
+
8
+ type CompetitionHeaderProps = {
9
+ width:number,
10
+ action_loading:boolean,
11
+ competition:CompetitionProps,
12
+ competition_valid: {
13
+ valid:boolean,
14
+ info:boolean,
15
+ contests:boolean,
16
+ contest_settings: boolean,
17
+ settings:boolean
18
+ },
19
+ onPause:() => void,
20
+ onResume: () => void,
21
+ onActivate: () => void
22
+ }
23
+
24
+ const CompetitionHeader = ({ width, action_loading, competition, competition_valid, onActivate, onPause, onResume }:CompetitionHeaderProps) => {
25
+
26
+ const handleActivate = () => {
27
+ if(!competition_valid.valid){
28
+ return alert(`Please complete all the required sections before activating`)
29
+ }
30
+ onActivate()
31
+ }
32
+
33
+ const handleResume = () => {
34
+ if(!competition_valid.valid){
35
+ return alert(`Please complete all the required sections before activating`)
36
+ }
37
+ onResume()
38
+ }
39
+
40
+ return (
41
+ <View style={{ backgroundColor:Colors.shades.white, flexGrow:1, minWidth:330, maxWidth:width }}>
42
+ <View nativeID="competition_header" style={{ flexDirection:'row', alignItems:'center', padding:20, borderBottomWidth:1, borderColor:Colors.shades.shade600 }}>
43
+ <View>
44
+ <Image
45
+ source={{ uri: competition.image?.url ?? 'https://res.cloudinary.com/hoabts6mc/image/upload/v1649737862/be_logo_jte2ux.webp' }}
46
+ style={{ height:50, width:50, borderRadius:4 }}
47
+ resizeMode="cover"
48
+ />
49
+ </View>
50
+ <View style={{ flex:1, marginLeft:10 }}>
51
+ <Text theme='header'>{competition.competition_name}</Text>
52
+ <Text style={{ marginTop:4 }} theme='header_2>'>{competition.competition_description}</Text>
53
+ </View>
54
+ {competition.status == 'pending'?
55
+ <Button
56
+ title={'ACTIVATE'}
57
+ style={{ opacity:competition_valid.valid ? 1: 0.5 }}
58
+ loading={action_loading}
59
+ title_color={Colors.shades.white}
60
+ backgroundColor={Colors.utility.success}
61
+ onPress={() => handleActivate()}
62
+ />
63
+ :<></>}
64
+ </View>
65
+ {competition.status != 'paused' ?
66
+ <View style={{ ...view_styles.section_header, backgroundColor:Colors.shades.shade100 }}>
67
+ <View style={{ flex:1 }}>
68
+ <Text theme='header'>COMPETITION IS ACTIVE</Text>
69
+ <Text style={{ marginTop:3 }} theme='body'>In order to edit this competition, you must first pause it.</Text>
70
+ </View>
71
+ <Button
72
+ title='PAUSE'
73
+ style={{ opacity:!action_loading && competition_valid.valid ? 1: 0.5 }}
74
+ loading={action_loading}
75
+ title_color={Colors.shades.white}
76
+ backgroundColor={Colors.utility.success}
77
+ onPress={() => onPause()}
78
+ />
79
+ </View>
80
+ :<></>}
81
+ {competition.status == 'paused' ?
82
+ <View style={{ ...view_styles.section_header, backgroundColor:Colors.shades.shade100 }}>
83
+ <View style={{ flex:1 }}>
84
+ <Text theme='header'>EDITING COMPETITION</Text>
85
+ <Text style={{ marginTop:3 }} theme='body'>Feel free to make changes. When done, simply press resume.</Text>
86
+ </View>
87
+ <Button
88
+ title='RESUME'
89
+ style={{ opacity:!action_loading && competition_valid.valid ? 1: 0.5 }}
90
+ loading={action_loading}
91
+ title_color={Colors.shades.white}
92
+ backgroundColor={Colors.brand.electric}
93
+ onPress={() => handleResume()}
94
+ />
95
+ </View>
96
+ :<></>}
97
+ </View>
98
+ )
99
+ }
100
+
101
+ export default CompetitionHeader
@@ -1,64 +1,104 @@
1
- import React, { useState } from 'react';
2
- import { View, TouchableOpacity } from "react-native"
1
+ import React, { useEffect, useState } from 'react';
2
+ import { View, TouchableOpacity, Image } from "react-native"
3
3
  import { view_styles } from "../../constants/styles"
4
4
  //import ImageUploader from '../../Components/ImageUploader';
5
5
  import type { CompetitionProps } from '../../types';
6
- import { Icons, Switch, Text, TextInput } from '../../Components';
6
+ import { Button, Icons, Switch, Text, TextInput } from '../../Components';
7
7
  import Colors from '../../constants/colors';
8
+ import ImageUploader from '../../Components/ImageUploader';
8
9
  //import DropDown from '../../Components/Dropdown';
9
10
 
10
11
  type CompetitionInfoFormProps = {
11
12
  competition:CompetitionProps,
13
+ is_valid?:boolean,
12
14
  width: number,
13
15
  onCompetitionUpdate:(competition:CompetitionProps) => void
14
16
  }
15
17
 
16
- const CompetitionInfoForm = ({ competition, width, onCompetitionUpdate }:CompetitionInfoFormProps) => {
18
+ const CompetitionInfoForm = ({ is_valid, competition, width, onCompetitionUpdate }:CompetitionInfoFormProps) => {
17
19
  const [ expanded, setExpanded ] = useState(false);
20
+ const [ draft_competition, setDraftCompetition ] = useState<CompetitionProps | undefined>(undefined);
18
21
 
22
+ useEffect(() => {
23
+ setDraftCompetition(competition)
24
+ },[competition])
19
25
 
20
-
26
+ if(!draft_competition){ return <></> }
27
+ const is_changed = JSON.stringify(draft_competition) != JSON.stringify(competition) ? true : false;
21
28
  return (
22
29
  <View style={{ ...view_styles.section, flexGrow:1 }}>
23
- <TouchableOpacity style={view_styles.section_header} onPress={() => setExpanded(!expanded)}>
24
- <View style={{ flex:1 }}>
30
+ <TouchableOpacity style={{ ...view_styles.section_header, maxWidth:width}} onPress={() => setExpanded(!expanded)}>
31
+ {is_valid ?
32
+ <Icons.CheckCirlceIcon size={16} color={Colors.utility.success} />
33
+ :
34
+ <Icons.AlertIcon size={16} color={Colors.utility.warning} />
35
+ }
36
+ <View style={{ flex:1, marginLeft:10 }}>
25
37
  <Text theme='header'>Competition Information</Text>
26
38
  <Text style={{ marginTop:3 }} theme='body'>Manage the high level information of this competition</Text>
27
39
  </View>
40
+ {is_changed ?
41
+ <Button
42
+ title='SAVE'
43
+ padding={10}
44
+ title_color={Colors.shades.white}
45
+ backgroundColor={Colors.utility.success}
46
+ onPress={() => onCompetitionUpdate(draft_competition)}
47
+ />
48
+ :
28
49
  <Icons.ChevronIcon direction={expanded ? 'up' : 'down'} color={Colors.brand.midnight} size={8} />
50
+ }
29
51
  </TouchableOpacity>
30
52
  {expanded ?
31
- <View nativeID="competition_info" style={{ ...view_styles.section_body, minWidth:300, maxWidth:width }}>
53
+ <View nativeID="competition_info" style={{ ...view_styles.section_body, padding:10, minWidth:300, maxWidth:width, backgroundColor:Colors.shades.shade100 }}>
32
54
 
33
- <View nativeID="competition_name" style={{ ...view_styles.body_row, flexWrap:'wrap', maxWidth:width}}>
55
+ <View nativeID="competition_image" style={{ ...view_styles.body_row, flexWrap:'wrap', maxWidth:width, borderBottomWidth:1, borderColor:Colors.shades.shade600 }}>
56
+ <View style={{ flex:1, margin:5, minWidth:200 }}>
57
+ <Text theme='header_2'>Competition Image</Text>
58
+ <Text style={{ marginTop:3 }} theme='body'>Give this competition an image so it is recognizable to those trying to join.</Text>
59
+ </View>
60
+ <ImageUploader
61
+ public_id={`comp_image_${competition.competition_id}_${Math.random()}`}
62
+ onFinishUpload={obj => onCompetitionUpdate({ ...draft_competition, image: { ...obj, url:obj.secure_url } })}
63
+ >
64
+ <Image
65
+ source={{ uri: competition.image?.url }}
66
+ style={{ height: 50, width:50, borderRadius:4 }}
67
+ resizeMode='cover'
68
+ />
69
+ <Text size={12} color={Colors.brand.electric} textAlign='center'>CHANGE</Text>
70
+ </ImageUploader>
71
+ </View>
72
+
73
+ <View nativeID="competition_name" style={{ ...view_styles.body_row, flexWrap:'wrap', maxWidth:width, borderBottomWidth:1, borderColor:Colors.shades.shade600 }}>
34
74
  <View style={{ flex:1, margin:5, minWidth:200 }}>
35
75
  <Text theme='header_2'>Competition Name</Text>
36
76
  <Text style={{ marginTop:3 }} theme='body'>Give the competition a memorable name that aligns with the type and payout.</Text>
37
77
  </View>
38
78
  <TextInput
39
79
  style={{ ...view_styles.input, flexGrow:1, margin:5 }}
40
- onChangeText={(text) => onCompetitionUpdate({ ...competition, competition_name:text })}
41
- value={competition.competition_name}
80
+ onChangeText={(text) => setDraftCompetition({ ...draft_competition, competition_name:text })}
81
+ value={draft_competition.competition_name}
42
82
  placeholder="Competition Name"
43
83
  placeholderTextColor={Colors.brand.slate}
44
84
  />
45
85
  </View>
46
86
 
47
- <View nativeID="competition_description" style={{ ...view_styles.body_row, flexWrap:'wrap', maxWidth:width}}>
48
- <View style={{ flex:1, margin:5, minWidth:200 }}>
87
+ <View nativeID="competition_description" style={{ ...view_styles.body_row, flexWrap:'wrap', maxWidth:width, marginTop:10, borderBottomWidth:1, borderColor:Colors.shades.shade600 }}>
88
+ <View style={{ flex:1, margin:5, minWidth:200 }}>
49
89
  <Text theme='header_2'>Competition Description</Text>
50
90
  <Text style={{ marginTop:3 }} theme='body'>Give the competition a memorable description that would entice users to participate.</Text>
51
91
  </View>
52
92
  <TextInput
53
93
  style={{ ...view_styles.input, flexGrow:1, margin:5 }}
54
- onChangeText={(text) => onCompetitionUpdate({ ...competition, competition_description:text })}
55
- value={competition.competition_description}
94
+ onChangeText={(text) => setDraftCompetition({ ...draft_competition, competition_description:text })}
95
+ value={draft_competition.competition_description}
56
96
  placeholder="Pick 5 games ATS from NFL Week 6 matchups"
57
97
  placeholderTextColor={Colors.brand.slate}
58
98
  />
59
99
  </View>
60
100
 
61
- <View nativeID="invite_only" style={{ ...view_styles.body_row, flexWrap:'wrap' }}>
101
+ <View nativeID="invite_only" style={{ ...view_styles.body_row, flexWrap:'wrap', marginTop:10, borderBottomWidth:1, borderColor:Colors.shades.shade600 }}>
62
102
  <View style={{ flex:1, margin:5, marginRight:15 }}>
63
103
  <Text theme='header_2'>Make Private</Text>
64
104
  <Text style={{ marginTop:3 }} theme='body'>Only access this competition using an invite code.</Text>
@@ -66,37 +106,9 @@ const CompetitionInfoForm = ({ competition, width, onCompetitionUpdate }:Competi
66
106
  <Switch
67
107
  value={competition.invite_only}
68
108
  switch_type="on_off"
69
- onChange={(value) => onCompetitionUpdate({ ...competition, invite_only: value })}
70
- />
71
- </View>
72
- {false ?
73
- <View nativeID="competition_description" style={{ ...view_styles.body_row, flexWrap:'wrap', maxWidth:width}}>
74
- <View style={{ flex:1, margin:5, minWidth:200 }}>
75
- <Text theme='header_2'>League Name</Text>
76
- <Text style={{ marginTop:3 }} theme='body'>Set the name of the league</Text>
77
- </View>
78
- <TextInput
79
- style={{ ...view_styles.input, flexGrow:1 }}
80
- onChangeText={(text) => onCompetitionUpdate({ ...competition, league_name:text })}
81
- value={competition.league_name}
82
- placeholder="Add a league name"
83
- placeholderTextColor={Colors.brand.slate}
84
- />
85
- </View>
86
- :<></>}
87
- {false ?
88
- <View nativeID="invite_only" style={{ ...view_styles.body_row, flexWrap:'wrap' }}>
89
- <View style={{ flex:1, margin:5, minWidth:200 }}>
90
- <Text theme='header_2'>Additional Prize</Text>
91
- <Text style={{ marginTop:3 }} theme='body'>Is there an additional prize that will be delivered?</Text>
92
- </View>
93
- <Switch
94
- value={competition.prize_override ? true : false}
95
- switch_type="on_off"
96
- onChange={(value) => onCompetitionUpdate({ ...competition, prize_override: value ? 'Additional Prize!': undefined })}
109
+ onChange={(value) => onCompetitionUpdate({ ...draft_competition, invite_only: value })}
97
110
  />
98
111
  </View>
99
- :<></>}
100
112
  </View>
101
113
  :<></>}
102
114
  </View>
@@ -1,10 +1,9 @@
1
- //import { TouchableOpacity, View } from "react-native"
2
- //import { v4 } from 'uuid';
3
- import React from "react"
1
+ import { TouchableOpacity, View } from "react-native"
2
+ import React, { useState } from "react"
4
3
  import type { CompetitionMatchMarketProps, MarketProps } from "../../types";
5
- //import { ManageCompetitionHelpers } from "../api";
6
- //import { Text } from "../../Components";
7
- //import Colors from "../../constants/colors";
4
+ import { Button, Text, TextInput } from "../../Components";
5
+ import Colors from "../../constants/colors";
6
+ import { ManageCompetitionHelpers } from "../api";
8
7
 
9
8
 
10
9
  type CompetitionMatchMarketCardProps = {
@@ -20,38 +19,24 @@ type CompetitionMatchMarketCardProps = {
20
19
  onGenerateMarkets: () => void
21
20
  }
22
21
 
23
- const CompetitionMatchMarketCard = ({ }:CompetitionMatchMarketCardProps) => {
24
-
25
- /*
26
- const [ setDraftCompetitionMatchMarket ] = useState<CompetitionMatchMarketProps | undefined>(undefined)
22
+ const CompetitionMatchMarketCard = ({ market, competition_match_markets, onUpdateMarkets }:CompetitionMatchMarketCardProps) => {
23
+ const [ draft_competition_match_market, setDraftCompetitionMatchMarket ] = useState<CompetitionMatchMarketProps | undefined>(undefined)
27
24
 
28
25
  const trade_side = competition_match_markets.find(cmm => cmm.side == market.trade_side);
29
- let trade_side_pick_pct = 0, o_side_pick_pct = 0;
30
26
  const o_side = competition_match_markets.find(cmm => cmm.side != market.trade_side);
31
- let total_count = 0
32
- if(competition_summaries){
33
- total_count = competition_summaries.reduce((a,b) => a + parseFloat(b.count), 0)
34
- let trade_side_summary = competition_summaries.find(cs => cs.side == market.trade_side)
35
- let o_side_summary = competition_summaries.find(cs => cs.side != market.trade_side)
36
- if(trade_side_summary){
37
- trade_side_pick_pct = trade_side_summary.count / total_count
38
- }
39
- if(o_side_summary){
40
- o_side_pick_pct = o_side_summary.count / total_count
41
- }
42
- }
43
- */
44
- /*
27
+
28
+
29
+
45
30
 
46
31
  const isCMMValid = (cmm:CompetitionMatchMarketProps) => {
47
- if(isNaN(cmm.odds)){ return false }
48
- if(isNaN(cmm.var_1)){ return false }
49
- if(market.type != 'Spread' && cmm.var_1 < 0){ return false }
32
+ if(isNaN(cmm.odds as number)){ return false }
33
+ if(isNaN(cmm.var_1 as number)){ return false }
34
+ if(market.type != 'Spread' && parseFloat(cmm.var_1 as string) < 0){ return false }
50
35
  if(market.var_1_required && cmm.var_1 == 0){ return false }
51
36
  return true
52
37
  }
53
- */
54
- /*
38
+
39
+
55
40
  const handleUpdateCMM = () => {
56
41
  if(!draft_competition_match_market){ return }
57
42
  //First check if the draft one is valie
@@ -62,22 +47,21 @@ const CompetitionMatchMarketCard = ({ }:CompetitionMatchMarketCardProps) => {
62
47
  //now we need to flip sides
63
48
  let other_cmm = competition_match_markets.find(ncm => ncm.side != cmm.side)
64
49
  if(other_cmm){
65
- console.log('THERE WAS AN OTHER SIDE')
66
50
  other_cmm.var_1 = cmm.var_1
67
- other_cmm.odds = cmm.odds * -1
51
+ other_cmm.odds = parseFloat(cmm.odds as string) * -1
68
52
  other_cmm.probability = ManageCompetitionHelpers.calcProbabilityFromOdds(other_cmm.odds)
69
53
  } else {
70
54
  return alert('NOT HANDLED. PLEASE AUTO GENERATE FIRST')
71
55
  }
72
56
  if(market.type == 'Spread'){
73
- other_cmm.var_1 = other_cmm.var_1 * -1
57
+ other_cmm.var_1 = parseFloat(other_cmm.var_1 as string) * -1
74
58
  }
75
- onUpdateMarkets([{ ...cmm, probability: ManageCompetitionHelpers.calcProbabilityFromOdds(cmm.odds), status:'pending' }, { ...other_cmm, status:'pending'}])
59
+ onUpdateMarkets([{ ...cmm, probability: ManageCompetitionHelpers.calcProbabilityFromOdds(parseFloat(cmm.odds as string)), status:'pending' }, { ...other_cmm, status:'pending'}])
76
60
  return setDraftCompetitionMatchMarket(undefined)
77
61
  }
78
- */
62
+
79
63
 
80
- /*
64
+
81
65
 
82
66
  if(draft_competition_match_market){
83
67
  return (
@@ -86,13 +70,13 @@ const CompetitionMatchMarketCard = ({ }:CompetitionMatchMarketCardProps) => {
86
70
  {market.var_1_required ?
87
71
  <TextInput
88
72
  style={{ padding:10, borderRadius:4, backgroundColor:Colors.shades.white, marginRight:20 }}
89
- value={draft_competition_match_market.var_1}
73
+ value={draft_competition_match_market.var_1 as string}
90
74
  onChangeText={(text) => setDraftCompetitionMatchMarket({ ...draft_competition_match_market, var_1: text })}
91
75
  />
92
76
  :<></>}
93
77
  <TextInput
94
78
  style={{ padding:10, borderRadius:4, backgroundColor:Colors.shades.white }}
95
- value={draft_competition_match_market.odds}
79
+ value={draft_competition_match_market.odds as string}
96
80
  onChangeText={(text) => setDraftCompetitionMatchMarket({ ...draft_competition_match_market, odds: text })}
97
81
  />
98
82
  <Button
@@ -104,52 +88,27 @@ const CompetitionMatchMarketCard = ({ }:CompetitionMatchMarketCardProps) => {
104
88
  </View>
105
89
  )
106
90
  }
107
- */
108
-
109
- /*
110
- if(!trade_side || !o_side){
111
- return (
112
- <View style={{ flexDirection:'row' }}>
113
- <TouchableOpacity style={{ justifyContent:'center', alignItems:'center', padding:5, borderRadius:4, backgroundColor:Colors.shades.shade100 }} onPress={() => {
114
- setDraftCompetitionMatchMarket({ ...ManageCompetitionHelpers.createEmptyCompetitionMatchMarket(market, side_id), event_id, event_type, competition_match_id, competition_match_market_id: v4(), pair_id:v4() })
115
- }}>
116
- <Icons.UserIcon size={14} color={Colors.brand.midnight} />
117
- <Text style={{ marginTop:5 }} size={12} color={Colors.brand.midnight} weight='bold'>Enter Manually</Text>
118
- </TouchableOpacity>
119
- <TouchableOpacity style={{ justifyContent:'center', marginLeft:5, alignItems:'center', padding:5, borderRadius:4, backgroundColor:Colors.shades.shade100 }} onPress={() => onGenerateMarkets()}>
120
- <Icons.SettingsIcon size={14} color={Colors.brand.electric} />
121
- <Text style={{ marginTop:5 }} size={12} color={Colors.brand.electric} weight='bold'>Try Auto</Text>
122
- </TouchableOpacity>
123
- </View>
124
- )
125
- }
126
-
127
- */
128
91
 
129
- return <></>
130
- /*
131
92
  if(!o_side || !trade_side){ return <></> }
132
93
 
133
94
  return (
134
95
  <View style={{ flexDirection:'row' }}>
135
96
  <View>
136
- <Text style={{ marginBottom:2 }} size={12} color={Colors.brand.midnight} weight='semibold' textAlign="center">{(o_side_pick_pct*100).toFixed()} % Picked</Text>
137
- <TouchableOpacity style={{ width:75, padding:5, backgroundColor:o_side.status == 'error' ? Colors.highlights.highlight300Faded :Colors.shades.shade600, borderRadius:4, marginRight:3 }} onPress={() => setDraftCompetitionMatchMarket(o_side)}>
138
- <Text textAlign="center" size={12} color={Colors.brand.midnight} weight='semibold'>{o_side.side.toUpperCase()}{market.var_1_required?` ${ManageCompetitionHelpers.getVar1Label(o_side.var_1, market)}`:''}</Text>
139
- <Text textAlign="center" size={12} color={Colors.brand.midnight} weight='semibold'>{ManageCompetitionHelpers.getOddsLabel(o_side.odds)}</Text>
97
+ <TouchableOpacity disabled style={{ width:75, padding:5, backgroundColor:o_side.status == 'error' ? Colors.highlights.highlight300Faded :Colors.shades.shade600, borderRadius:4, marginRight:3 }} onPress={() => setDraftCompetitionMatchMarket(o_side)}>
98
+ <Text textAlign="center" size={12} color={Colors.brand.midnight} weight='semibold'>{o_side.side.toUpperCase()}{market.var_1_required?` ${ManageCompetitionHelpers.getVar1Label(o_side.var_1 as number, market)}`:''}</Text>
99
+ <Text textAlign="center" size={12} color={Colors.brand.midnight} weight='semibold'>{ManageCompetitionHelpers.getOddsLabel(o_side.odds as number)}</Text>
140
100
  </TouchableOpacity>
141
101
  </View>
142
102
  <View>
143
- <Text style={{ marginBottom:2 }} size={12} color={Colors.brand.midnight} weight='semibold' textAlign="center">{(trade_side_pick_pct*100).toFixed()} % Picked</Text>
144
- <TouchableOpacity style={{ width:75, padding:5, backgroundColor:trade_side.status == 'error' ? Colors.highlights.highlight300Faded :Colors.shades.shade600, borderRadius:4, marginLeft:3 }} onPress={() => setDraftCompetitionMatchMarket(trade_side)}>
145
- <Text textAlign="center" size={12} color={Colors.brand.midnight} weight='semibold'>{trade_side.side.toUpperCase()}{market.var_1_required?` ${ManageCompetitionHelpers.getVar1Label(trade_side.var_1, market)}`:''}</Text>
146
- <Text textAlign="center" size={12} color={Colors.brand.midnight} weight='semibold'>{ManageCompetitionHelpers.getOddsLabel(trade_side.odds)}</Text>
103
+ <TouchableOpacity disabled style={{ width:75, padding:5, backgroundColor:trade_side.status == 'error' ? Colors.highlights.highlight300Faded :Colors.shades.shade600, borderRadius:4, marginLeft:3 }} onPress={() => setDraftCompetitionMatchMarket(trade_side)}>
104
+ <Text textAlign="center" size={12} color={Colors.brand.midnight} weight='semibold'>{trade_side.side.toUpperCase()}{market.var_1_required?` ${ManageCompetitionHelpers.getVar1Label(trade_side.var_1 as number, market)}`:''}</Text>
105
+ <Text textAlign="center" size={12} color={Colors.brand.midnight} weight='semibold'>{ManageCompetitionHelpers.getOddsLabel(trade_side.odds as number)}</Text>
147
106
  </TouchableOpacity>
148
107
  </View>
149
108
 
150
109
  </View>
151
110
  )
152
- */
111
+
153
112
  }
154
113
 
155
114
  export default CompetitionMatchMarketCard