be-components 1.6.1 → 1.6.3
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.
- package/lib/commonjs/Components/Icons.js +47 -0
- package/lib/commonjs/Components/Icons.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js +7 -1
- package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/EventMarket/index.js +7 -1
- package/lib/commonjs/MarketComponents/components/EventMarket/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/MarketButton/index.js +23 -11
- package/lib/commonjs/MarketComponents/components/MarketButton/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/OrderGradeBar.js +154 -0
- package/lib/commonjs/MarketComponents/components/OrderGradeBar.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/TeamEventMarket/api/index.js +10 -0
- package/lib/commonjs/MarketComponents/components/TeamEventMarket/api/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js +64 -10
- package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
- package/lib/module/Components/Icons.js +47 -0
- package/lib/module/Components/Icons.js.map +1 -1
- package/lib/module/MarketComponents/components/AthleteMarket/index.js +7 -1
- package/lib/module/MarketComponents/components/AthleteMarket/index.js.map +1 -1
- package/lib/module/MarketComponents/components/EventMarket/index.js +7 -1
- package/lib/module/MarketComponents/components/EventMarket/index.js.map +1 -1
- package/lib/module/MarketComponents/components/MarketButton/index.js +23 -11
- package/lib/module/MarketComponents/components/MarketButton/index.js.map +1 -1
- package/lib/module/MarketComponents/components/OrderGradeBar.js +148 -0
- package/lib/module/MarketComponents/components/OrderGradeBar.js.map +1 -0
- package/lib/module/MarketComponents/components/TeamEventMarket/api/index.js +10 -0
- package/lib/module/MarketComponents/components/TeamEventMarket/api/index.js.map +1 -1
- package/lib/module/MarketComponents/components/TeamEventMarket/index.js +64 -10
- package/lib/module/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
- package/lib/typescript/src/Components/Icons.d.ts +1 -0
- package/lib/typescript/src/Components/Icons.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts +3 -1
- package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/EventMarket/index.d.ts +3 -1
- package/lib/typescript/src/MarketComponents/components/EventMarket/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/MarketButton/index.d.ts +5 -2
- package/lib/typescript/src/MarketComponents/components/MarketButton/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/OrderGradeBar.d.ts +10 -0
- package/lib/typescript/src/MarketComponents/components/OrderGradeBar.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/TeamEventMarket/api/index.d.ts +1 -0
- package/lib/typescript/src/MarketComponents/components/TeamEventMarket/api/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts +7 -2
- package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/index.d.ts +6 -1
- package/lib/typescript/src/MarketComponents/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Components/Icons.tsx +23 -0
- package/src/MarketComponents/components/AthleteMarket/index.tsx +8 -2
- package/src/MarketComponents/components/EventMarket/index.tsx +8 -2
- package/src/MarketComponents/components/MarketButton/index.tsx +23 -9
- package/src/MarketComponents/components/OrderGradeBar.tsx +110 -0
- package/src/MarketComponents/components/TeamEventMarket/api/index.ts +6 -0
- package/src/MarketComponents/components/TeamEventMarket/index.tsx +46 -8
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { MarketProps, MarketSideOptionProps, OrderProps, TradeProps } from '../../../types';
|
|
2
|
+
import type { BestAvailableOrderProps, MarketProps, MarketSideOptionProps, OrderProps, TradeProps } from '../../../types';
|
|
3
3
|
type MarketButtonProps = {
|
|
4
4
|
market: MarketProps;
|
|
5
5
|
side_option: MarketSideOptionProps;
|
|
6
6
|
side_label?: string;
|
|
7
|
+
order?: BestAvailableOrderProps;
|
|
7
8
|
trade: TradeProps;
|
|
9
|
+
show_grades?: boolean;
|
|
8
10
|
onPress: (order: OrderProps) => void;
|
|
11
|
+
onLongPress: (trade: TradeProps) => void;
|
|
9
12
|
};
|
|
10
|
-
declare const MarketCard: ({ side_option, market, trade,
|
|
13
|
+
declare const MarketCard: ({ side_option, show_grades, market, trade, order, onPress, onLongPress }: MarketButtonProps) => React.JSX.Element;
|
|
11
14
|
export default MarketCard;
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/MarketComponents/components/MarketButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/MarketComponents/components/MarketButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK1H,KAAK,iBAAiB,GAAG;IACrB,MAAM,EAAC,WAAW,CAAC;IACnB,WAAW,EAAC,qBAAqB,CAAC;IAClC,UAAU,CAAC,EAAC,MAAM,CAAC;IACnB,KAAK,CAAC,EAAC,uBAAuB,CAAC;IAC/B,KAAK,EAAC,UAAU,CAAC;IACjB,WAAW,CAAC,EAAC,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC,KAAK,EAAC,UAAU,KAAK,IAAI,CAAC;IACpC,WAAW,EAAC,CAAC,KAAK,EAAC,UAAU,KAAK,IAAI,CAAA;CACzC,CAAA;AACD,QAAA,MAAM,UAAU,6EAA6E,iBAAiB,sBA8B7G,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type OrderGradeBarProps = {
|
|
3
|
+
mask?: boolean;
|
|
4
|
+
grade?: number;
|
|
5
|
+
view_type: 'card' | 'book' | 'market';
|
|
6
|
+
onSelectGrade?: () => void;
|
|
7
|
+
};
|
|
8
|
+
declare const OrderGradeBar: ({ grade, view_type, mask, onSelectGrade }: OrderGradeBarProps) => React.JSX.Element;
|
|
9
|
+
export default OrderGradeBar;
|
|
10
|
+
//# sourceMappingURL=OrderGradeBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrderGradeBar.d.ts","sourceRoot":"","sources":["../../../../../src/MarketComponents/components/OrderGradeBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAW,MAAM,OAAO,CAAC;AAuBhC,KAAK,kBAAkB,GAAG;IACtB,IAAI,CAAC,EAAC,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAC,MAAM,GAAC,QAAQ,CAAC;IAClC,aAAa,CAAC,EAAC,MAAM,IAAI,CAAA;CAC5B,CAAA;AAGD,QAAA,MAAM,aAAa,8CAA8C,kBAAkB,sBA2ElF,CAAA;AAGD,eAAe,aAAa,CAAA"}
|
|
@@ -6,5 +6,6 @@ declare const TeamEventMarketHelpers: {
|
|
|
6
6
|
getTimeDetail: (event: EventProps) => string | undefined;
|
|
7
7
|
sortNonPrimaryMarkets: (markets: MarketProps[], event_order_stats: EventOrderStatProps[]) => EventOrderStatProps[];
|
|
8
8
|
sortAthleteMarkets: (market: MarketProps, event_order_stats: EventOrderStatProps[], latest_trades: TradeProps[], athletes: AthleteProps[]) => AthleteProps[];
|
|
9
|
+
getEventStatus: (event: EventProps) => 'active' | 'closed' | 'inactive';
|
|
9
10
|
};
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/MarketComponents/components/TeamEventMarket/api/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE/G,OAAQ,EAAE,sBAAsB,EAAE,CAAA;AAClC,QAAA,MAAM,sBAAsB;+BACE,UAAU,WAAU,WAAW,EAAE,KAAE,WAAW,EAAE;kCAK9C,UAAU,WAAU,WAAW,EAAE,KAAE,WAAW,EAAE;2BAKtD,UAAU;qCAIA,WAAW,EAAE,qBAAoB,mBAAmB,EAAE;iCAI1D,WAAW,qBAAoB,mBAAmB,EAAE,iBAAgB,UAAU,EAAE,YAAW,YAAY,EAAE,KAAE,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/MarketComponents/components/TeamEventMarket/api/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE/G,OAAQ,EAAE,sBAAsB,EAAE,CAAA;AAClC,QAAA,MAAM,sBAAsB;+BACE,UAAU,WAAU,WAAW,EAAE,KAAE,WAAW,EAAE;kCAK9C,UAAU,WAAU,WAAW,EAAE,KAAE,WAAW,EAAE;2BAKtD,UAAU;qCAIA,WAAW,EAAE,qBAAoB,mBAAmB,EAAE;iCAI1D,WAAW,qBAAoB,mBAAmB,EAAE,iBAAgB,UAAU,EAAE,YAAW,YAAY,EAAE,KAAE,YAAY,EAAE;4BAW9H,UAAU,KAAE,QAAQ,GAAC,QAAQ,GAAC,UAAU;CAMlE,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { BestAvailableOrderProps, CompetitionProps, EventOrderStatProps, EventProps, MarketProps, OrderProps, TradeProps } from '../../../types';
|
|
2
|
+
import type { BestAvailableOrderProps, CompetitionProps, EventOrderStatProps, EventProps, MarketProps, OrderProps, SquaresCompetitionProps, TradeProps } from '../../../types';
|
|
3
3
|
type TeamEventMarketProps = {
|
|
4
4
|
event: EventProps;
|
|
5
5
|
markets: MarketProps[];
|
|
6
6
|
competition?: CompetitionProps;
|
|
7
|
+
squares_competition?: SquaresCompetitionProps;
|
|
7
8
|
latest_trades: TradeProps[];
|
|
8
9
|
best_available_orders: BestAvailableOrderProps[];
|
|
9
10
|
event_order_stats: EventOrderStatProps[];
|
|
@@ -17,9 +18,13 @@ type TeamEventMarketProps = {
|
|
|
17
18
|
}) => void;
|
|
18
19
|
onOrder: (order: OrderProps) => void;
|
|
19
20
|
onExpand?: (expanded: boolean) => void;
|
|
21
|
+
show_grades?: boolean;
|
|
20
22
|
onCompetitionSelect: (competition_id: string) => void;
|
|
23
|
+
onSquaresSelect: (sq_comp_id: string) => void;
|
|
21
24
|
onViewAdditionalMarkets: (event_id: string, event_type: string) => void;
|
|
25
|
+
onTradeLongPress: (trade: TradeProps) => void;
|
|
26
|
+
onActivate?: (event_id: string, event_type: string) => void;
|
|
22
27
|
};
|
|
23
|
-
declare const TeamEventMarket: ({ event, competition, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets }: TeamEventMarketProps) => React.JSX.Element;
|
|
28
|
+
declare const TeamEventMarket: ({ event, competition, squares_competition, show_grades, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onSquaresSelect, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets, onTradeLongPress, onActivate }: TeamEventMarketProps) => React.JSX.Element;
|
|
24
29
|
export default TeamEventMarket;
|
|
25
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/MarketComponents/components/TeamEventMarket/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAgB,uBAAuB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAyB,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/MarketComponents/components/TeamEventMarket/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAgB,uBAAuB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAyB,UAAU,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAapN,KAAK,oBAAoB,GAAG;IACxB,KAAK,EAAC,UAAU,CAAC;IACjB,OAAO,EAAC,WAAW,EAAE,CAAC;IACtB,WAAW,CAAC,EAAC,gBAAgB,CAAC;IAC9B,mBAAmB,CAAC,EAAC,uBAAuB,CAAC;IAC7C,aAAa,EAAC,UAAU,EAAE,CAAC;IAC3B,qBAAqB,EAAC,uBAAuB,EAAE,CAAC;IAChD,iBAAiB,EAAC,mBAAmB,EAAE,CAAC;IACxC,kBAAkB,EAAE,YAAY,GAAC,gBAAgB,CAAC;IAClD,MAAM,EAAC,CAAC,IAAI,EAAC;QAAE,QAAQ,EAAC,MAAM,CAAC;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,SAAS,EAAC,MAAM,CAAC;QAAC,SAAS,CAAC,EAAC,MAAM,CAAC;QAAC,OAAO,CAAC,EAAC,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnH,OAAO,EAAC,CAAC,KAAK,EAAC,UAAU,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAC,CAAC,QAAQ,EAAC,OAAO,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAC,OAAO,CAAC;IACrB,mBAAmB,EAAC,CAAC,cAAc,EAAC,MAAM,KAAK,IAAI,CAAC;IACpD,eAAe,EAAE,CAAC,UAAU,EAAC,MAAM,KAAK,IAAI,CAAC;IAC7C,uBAAuB,EAAE,CAAC,QAAQ,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,KAAK,IAAI,CAAC;IACtE,gBAAgB,EAAC,CAAC,KAAK,EAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,UAAU,CAAC,EAAC,CAAC,QAAQ,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,KAAK,IAAI,CAAA;CAC3D,CAAA;AACD,QAAA,MAAM,eAAe,2QAA2Q,oBAAoB,sBAwSnT,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
declare const _default: {
|
|
3
|
-
TeamEventMarket: ({ event, competition, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets }: {
|
|
3
|
+
TeamEventMarket: ({ event, competition, squares_competition, show_grades, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onSquaresSelect, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets, onTradeLongPress, onActivate }: {
|
|
4
4
|
event: import("../types").EventProps;
|
|
5
5
|
markets: import("../types").MarketProps[];
|
|
6
6
|
competition?: import("../types").CompetitionProps | undefined;
|
|
7
|
+
squares_competition?: import("../types").SquaresCompetitionProps | undefined;
|
|
7
8
|
latest_trades: import("../types").TradeProps[];
|
|
8
9
|
best_available_orders: import("../types").BestAvailableOrderProps[];
|
|
9
10
|
event_order_stats: import("../types").EventOrderStatProps[];
|
|
@@ -17,8 +18,12 @@ declare const _default: {
|
|
|
17
18
|
}) => void;
|
|
18
19
|
onOrder: (order: import("../types").OrderProps) => void;
|
|
19
20
|
onExpand?: ((expanded: boolean) => void) | undefined;
|
|
21
|
+
show_grades?: boolean | undefined;
|
|
20
22
|
onCompetitionSelect: (competition_id: string) => void;
|
|
23
|
+
onSquaresSelect: (sq_comp_id: string) => void;
|
|
21
24
|
onViewAdditionalMarkets: (event_id: string, event_type: string) => void;
|
|
25
|
+
onTradeLongPress: (trade: import("../types").TradeProps) => void;
|
|
26
|
+
onActivate?: ((event_id: string, event_type: string) => void) | undefined;
|
|
22
27
|
}) => import("react").JSX.Element;
|
|
23
28
|
};
|
|
24
29
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/MarketComponents/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/MarketComponents/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAEC"}
|
package/package.json
CHANGED
package/src/Components/Icons.tsx
CHANGED
|
@@ -1176,12 +1176,35 @@ const PickEmIcon = ({ color, size }:IconProps) => {
|
|
|
1176
1176
|
)
|
|
1177
1177
|
}
|
|
1178
1178
|
|
|
1179
|
+
const MarketClosedIcon = ({color, size}:IconProps) => {
|
|
1180
|
+
const ratio = 0.875
|
|
1181
|
+
let width = size ?? 20
|
|
1182
|
+
let height = width * ratio
|
|
1183
|
+
|
|
1184
|
+
return (
|
|
1185
|
+
<svg width={`${width}px`} height={`${height}px`} viewBox="0 0 24 21" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
|
1186
|
+
<title>closed-svgrepo-com</title>
|
|
1187
|
+
<g id="ss" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
1188
|
+
<g id="closed-svgrepo-com" fill={color??Colors.brand.midnight} fill-rule="nonzero">
|
|
1189
|
+
<path d="M22.3671706,9.53779698 L20.8694773,9.53779698 L13.0909374,1.75925702 C13.1721641,1.59612959 13.2181425,1.41242333 13.2181425,1.21814255 C13.2181425,0.546453564 12.671689,0 12,0 C11.328311,0 10.7818575,0.546453564 10.7818575,1.21814255 C10.7818575,1.41242333 10.8278359,1.59612959 10.9090626,1.75925702 L3.13052268,9.53779698 L1.63282937,9.53779698 C0.732492441,9.53779698 0,10.2702894 0,11.1706263 L0,18.6349892 C0,19.5353261 0.732492441,20.2678186 1.63282937,20.2678186 L22.3671706,20.2678186 C23.2675076,20.2678186 24,19.5353261 24,18.6349892 L24,11.1706263 C24,10.2702894 23.2675076,9.53779698 22.3671706,9.53779698 Z M12,0.777537797 C12.2429546,0.777537797 12.4406048,0.975187905 12.4406048,1.21814255 C12.4406048,1.46109719 12.2429546,1.6587473 12,1.6587473 C11.7570454,1.6587473 11.5593952,1.46109719 11.5593952,1.21814255 C11.5593952,0.975187905 11.7570454,0.777537797 12,0.777537797 Z M11.4588855,2.30907991 C11.622013,2.3903067 11.8057192,2.4362851 12,2.4362851 C12.1942808,2.4362851 12.377987,2.3903067 12.5411145,2.30907991 L19.7698315,9.53779698 L4.23016847,9.53779698 L11.4588855,2.30907991 Z M23.2224622,18.6349892 C23.2224622,19.1066436 22.8387732,19.4902808 22.3671706,19.4902808 L1.63282937,19.4902808 C1.16122678,19.4902808 0.777537797,19.1066436 0.777537797,18.6349892 L0.777537797,11.1706263 C0.777537797,10.6989719 1.16122678,10.3153348 1.63282937,10.3153348 L22.3671706,10.3153348 C22.8387732,10.3153348 23.2224622,10.6989719 23.2224622,11.1706263 L23.2224622,18.6349892 Z" id="Shape"></path>
|
|
1190
|
+
<path d="M3.29157667,13.2181425 C3.65396112,13.2181425 3.97829806,13.4476199 4.09860907,13.7892181 C4.16993521,13.9916371 4.39205184,14.0979525 4.59441901,14.02673 C4.79694168,13.9553521 4.90325702,13.7333909 4.83193089,13.5308683 C4.60224622,12.8787214 3.98322246,12.4406048 3.29157667,12.4406048 C2.39123974,12.4406048 1.6587473,13.1730972 1.6587473,14.0734341 L1.6587473,15.7321814 C1.6587473,16.6325184 2.39123974,17.3650108 3.29157667,17.3650108 C3.98239309,17.3650108 4.6012095,16.9276199 4.83136069,16.2765616 C4.90289417,16.0741425 4.79683801,15.8520259 4.59441901,15.7804406 C4.392,15.708959 4.16988337,15.8149633 4.09829806,16.0173823 C3.97772786,16.3583585 3.65354644,16.587473 3.29157667,16.587473 C2.81997408,16.587473 2.4362851,16.203784 2.4362851,15.7321814 L2.4362851,14.0734341 C2.4362851,13.6018315 2.81997408,13.2181425 3.29157667,13.2181425 Z" id="Path"></path>
|
|
1191
|
+
<path d="M7.85313175,16.587473 L6.16846652,16.587473 L6.16846652,12.8293737 C6.16846652,12.6146177 5.99440173,12.4406048 5.77969762,12.4406048 C5.56499352,12.4406048 5.39092873,12.6146177 5.39092873,12.8293737 L5.39092873,16.9762419 C5.39092873,17.1909978 5.56499352,17.3650108 5.77969762,17.3650108 L7.85313175,17.3650108 C8.06783585,17.3650108 8.24190065,17.1909978 8.24190065,16.9762419 C8.24190065,16.761486 8.06783585,16.587473 7.85313175,16.587473 Z" id="Path"></path>
|
|
1192
|
+
<path d="M9.92656587,12.4406048 C9.02622894,12.4406048 8.2937365,13.1730972 8.2937365,14.0734341 L8.2937365,15.7321814 C8.2937365,16.6325184 9.02622894,17.3650108 9.92656587,17.3650108 C10.8269028,17.3650108 11.5593952,16.6325184 11.5593952,15.7321814 L11.5593952,14.0734341 C11.5593952,13.1730972 10.8269028,12.4406048 9.92656587,12.4406048 Z M10.7818575,15.7321814 C10.7818575,16.203784 10.3981685,16.587473 9.92656587,16.587473 C9.45496328,16.587473 9.0712743,16.203784 9.0712743,15.7321814 L9.0712743,14.0734341 C9.0712743,13.6018315 9.45496328,13.2181425 9.92656587,13.2181425 C10.3981685,13.2181425 10.7818575,13.6018315 10.7818575,14.0734341 L10.7818575,15.7321814 Z" id="Shape"></path>
|
|
1193
|
+
<path d="M13.6587473,14.5140389 C13.1951274,14.5140389 12.8034557,14.2172786 12.8034557,13.8660907 C12.8034557,13.5149028 13.1951274,13.2181425 13.6587473,13.2181425 C14.0650886,13.2181425 14.4269028,13.4475162 14.500406,13.7516371 C14.5508423,13.9602765 14.7607775,14.0885702 14.9696242,14.0381857 C15.1783153,13.9877495 15.3066091,13.7777106 15.2561728,13.5689676 C15.0982289,12.915162 14.4263844,12.4406048 13.6587473,12.4406048 C12.7584104,12.4406048 12.0259179,13.0801037 12.0259179,13.8660907 C12.0259179,14.6520778 12.7584104,15.2915767 13.6587473,15.2915767 C14.1223672,15.2915767 14.5140389,15.5883369 14.5140389,15.9395248 C14.5140389,16.2907127 14.1223672,16.587473 13.6587473,16.587473 C13.252406,16.587473 12.8905918,16.3580994 12.8170886,16.0539784 C12.7666523,15.8452354 12.5565616,15.716527 12.3478704,15.7674298 C12.1391793,15.8178661 12.0108855,16.027905 12.0613218,16.2366479 C12.2192657,16.8904536 12.8911102,17.3650108 13.6587473,17.3650108 C14.5590842,17.3650108 15.2915767,16.7255119 15.2915767,15.9395248 C15.2915767,15.1535378 14.5590842,14.5140389 13.6587473,14.5140389 Z" id="Path"></path>
|
|
1194
|
+
<path d="M18.2203024,13.2181425 C18.4350065,13.2181425 18.6090713,13.0441296 18.6090713,12.8293737 C18.6090713,12.6146177 18.4350065,12.4406048 18.2203024,12.4406048 L16.1468683,12.4406048 C15.9321641,12.4406048 15.7580994,12.6146177 15.7580994,12.8293737 L15.7580994,16.9762419 C15.7580994,17.1909978 15.9321641,17.3650108 16.1468683,17.3650108 L18.2203024,17.3650108 C18.4350065,17.3650108 18.6090713,17.1909978 18.6090713,16.9762419 C18.6090713,16.761486 18.4350065,16.587473 18.2203024,16.587473 L16.5356371,16.587473 L16.5356371,15.2915767 L17.8056156,15.2915767 C18.0203197,15.2915767 18.1943844,15.1175637 18.1943844,14.9028078 C18.1943844,14.6880518 18.0203197,14.5140389 17.8056156,14.5140389 L16.5356371,14.5140389 L16.5356371,13.2181425 L18.2203024,13.2181425 Z" id="Path"></path>
|
|
1195
|
+
<path d="M19.8790497,12.4406048 L19.4643629,12.4406048 C19.2496587,12.4406048 19.075594,12.6146177 19.075594,12.8293737 L19.075594,16.9762419 C19.075594,17.1909978 19.2496587,17.3650108 19.4643629,17.3650108 L19.8790497,17.3650108 C21.2366825,17.3650108 22.3412527,16.2604406 22.3412527,14.9028078 C22.3412527,13.5451749 21.2366825,12.4406048 19.8790497,12.4406048 Z M19.8790497,16.587473 L19.8531317,16.587473 L19.8531317,13.2181425 L19.8790497,13.2181425 C20.8079482,13.2181425 21.5637149,13.9738575 21.5637149,14.9028078 C21.5637149,15.8317581 20.8079482,16.587473 19.8790497,16.587473 Z" id="Shape"></path>
|
|
1196
|
+
</g>
|
|
1197
|
+
</g>
|
|
1198
|
+
</svg>
|
|
1199
|
+
)
|
|
1200
|
+
}
|
|
1179
1201
|
|
|
1180
1202
|
|
|
1181
1203
|
export default {
|
|
1182
1204
|
SearchIcon,
|
|
1183
1205
|
LiquidityIcon,
|
|
1184
1206
|
EyeOnIcon,
|
|
1207
|
+
MarketClosedIcon,
|
|
1185
1208
|
AlertIcon,
|
|
1186
1209
|
PieIcon,
|
|
1187
1210
|
BankIcon,
|
|
@@ -21,13 +21,16 @@ type AthleteMarketProps = {
|
|
|
21
21
|
event_order_stats:EventOrderStatProps[],
|
|
22
22
|
default_price_view:'last_trade'|'best_available',
|
|
23
23
|
onOrder:(order:OrderProps) => void,
|
|
24
|
-
|
|
24
|
+
show_grades?:boolean,
|
|
25
|
+
onView:(data:{event_id:string, event_type:string, market_id:string, side_type:'athlete', side_id:string}) => void,
|
|
26
|
+
onTradeLongPress:(trade:TradeProps) => void
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
const AthleteMarket = ({ event, hide_stat_banner, width, athlete, market, event_order_stats, default_price_view, latest_trades, best_available_orders, onOrder, onView }:AthleteMarketProps) => {
|
|
29
|
+
const AthleteMarket = ({ event, hide_stat_banner, width, athlete, market, event_order_stats, default_price_view, latest_trades, show_grades, best_available_orders, onOrder, onView, onTradeLongPress }:AthleteMarketProps) => {
|
|
28
30
|
const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats);
|
|
29
31
|
|
|
30
32
|
const renderSides = (data:{ item:MarketSideOptionProps, index:number, market:MarketProps }) => {
|
|
33
|
+
const ba_order = best_available_orders.find(o => o.market_id == market.market_id && o.side_type == 'athlete' && o.side_id == athlete.athlete_id && o.side == data.item.side);
|
|
31
34
|
const side_details = MarketComponentHelpers.getTeamEventSideIds(event, market, data.item, athlete, undefined);
|
|
32
35
|
if(!side_details){ return <></> }
|
|
33
36
|
let trade = MarketButtonHelpers.getVisibleTrade(default_price_view, data.market, data.item, latest_trades, best_available_orders, side_details.side_id, side_details.reversed_side_id);
|
|
@@ -40,6 +43,9 @@ const AthleteMarket = ({ event, hide_stat_banner, width, athlete, market, event_
|
|
|
40
43
|
side_option={data.item}
|
|
41
44
|
market={data.market}
|
|
42
45
|
trade={trade}
|
|
46
|
+
show_grades={show_grades}
|
|
47
|
+
order={ba_order}
|
|
48
|
+
onLongPress={onTradeLongPress}
|
|
43
49
|
onPress={(order) => {
|
|
44
50
|
const order_title = MarketComponentHelpers.getOrderTitleForTeamEvent(order, market, event, athlete);
|
|
45
51
|
if(!order_title){ return alert('Unable to process order') }
|
|
@@ -17,15 +17,18 @@ type EventMarketProps = {
|
|
|
17
17
|
latest_trades:TradeProps[],
|
|
18
18
|
best_available_orders:BestAvailableOrderProps[],
|
|
19
19
|
event_order_stats:EventOrderStatProps[],
|
|
20
|
+
show_grades?:boolean,
|
|
20
21
|
default_price_view:'last_trade'|'best_available',
|
|
21
22
|
onOrder:(order:OrderProps) => void,
|
|
22
|
-
onView:(data: { event_id:string, event_type:string, market_id:string }) => void
|
|
23
|
+
onView:(data: { event_id:string, event_type:string, market_id:string }) => void,
|
|
24
|
+
onTradeLongPress:(trade:TradeProps) => void
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
const EventMarket = ({ width, event, market, latest_trades, best_available_orders, hide_market_banner, event_order_stats, default_price_view, onOrder, onView }:EventMarketProps) => {
|
|
27
|
+
const EventMarket = ({ width, event, market, latest_trades, best_available_orders, hide_market_banner, event_order_stats, show_grades, default_price_view, onOrder, onView, onTradeLongPress }:EventMarketProps) => {
|
|
26
28
|
const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats);
|
|
27
29
|
|
|
28
30
|
const renderSides = (data:{ item:MarketSideOptionProps, index:number, market:MarketProps }) => {
|
|
31
|
+
const ba_order = best_available_orders.find(o => o.market_id == market.market_id && o.side == data.item.side);
|
|
29
32
|
const side_details = MarketComponentHelpers.getTeamEventSideIds(event, market, data.item, undefined, undefined);
|
|
30
33
|
if(!side_details){ return }
|
|
31
34
|
let trade = MarketButtonHelpers.getVisibleTrade(default_price_view, data.market, data.item, latest_trades, best_available_orders, side_details.side_id, side_details.reversed_side_id);
|
|
@@ -40,6 +43,9 @@ const EventMarket = ({ width, event, market, latest_trades, best_available_order
|
|
|
40
43
|
side_option={data.item}
|
|
41
44
|
market={data.market}
|
|
42
45
|
side_label={side_label}
|
|
46
|
+
show_grades={show_grades}
|
|
47
|
+
order={ba_order}
|
|
48
|
+
onLongPress={onTradeLongPress}
|
|
43
49
|
trade={trade}
|
|
44
50
|
onPress={(order) => {
|
|
45
51
|
const order_title = MarketComponentHelpers.getOrderTitleForTeamEvent(order, market, event);
|
|
@@ -1,35 +1,49 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TouchableOpacity, View } from "react-native"
|
|
3
3
|
import Text from '../../../Components/Text';
|
|
4
|
-
import type { MarketProps, MarketSideOptionProps, OrderProps, TradeProps } from '../../../types';
|
|
4
|
+
import type { BestAvailableOrderProps, MarketProps, MarketSideOptionProps, OrderProps, TradeProps } from '../../../types';
|
|
5
5
|
import Colors from '../../../constants/colors';
|
|
6
6
|
import { MarketButtonHelpers } from './api';
|
|
7
|
+
import OrderGradeBar from '../OrderGradeBar';
|
|
7
8
|
|
|
8
9
|
type MarketButtonProps = {
|
|
9
10
|
market:MarketProps,
|
|
10
11
|
side_option:MarketSideOptionProps,
|
|
11
12
|
side_label?:string,
|
|
13
|
+
order?:BestAvailableOrderProps,
|
|
12
14
|
trade:TradeProps,
|
|
13
|
-
|
|
15
|
+
show_grades?:boolean,
|
|
16
|
+
onPress: (order:OrderProps) => void,
|
|
17
|
+
onLongPress:(trade:TradeProps) => void
|
|
14
18
|
}
|
|
15
|
-
const MarketCard = ({ side_option, market, trade,
|
|
19
|
+
const MarketCard = ({ side_option, show_grades, market, trade, order, onPress, onLongPress }:MarketButtonProps) => {
|
|
16
20
|
const { var_1, odds, color } = MarketButtonHelpers.getButtonLabel(market, side_option, trade);
|
|
17
21
|
const handlePress = () => {
|
|
18
22
|
return onPress(MarketButtonHelpers.getOrderFromTrade(trade))
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
return (
|
|
22
|
-
<TouchableOpacity
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
<TouchableOpacity
|
|
27
|
+
style={{ flex:1, backgroundColor:color, borderRadius:4}}
|
|
28
|
+
onPress={() => handlePress()}
|
|
29
|
+
onLongPress={() => onLongPress(trade)}
|
|
30
|
+
>
|
|
31
|
+
<View style={{ flex:1, padding:5, justifyContent:'center' }}>
|
|
32
|
+
{!market.var_1_required && market.show_side_option ?
|
|
33
|
+
<Text size={12} color={Colors.brand.midnight} weight='regular' textAlign='center'>{side_option.label.toUpperCase()}</Text>
|
|
27
34
|
:<></>}
|
|
28
35
|
{market.var_1_required ?
|
|
29
|
-
<Text size={12} color={Colors.brand.midnight} weight='
|
|
36
|
+
<Text size={12} color={Colors.brand.midnight} weight='regular' textAlign='center'>{var_1}</Text>
|
|
30
37
|
:<></>}
|
|
31
38
|
<Text style={{ marginTop:2 }} size={12} color={Colors.brand.midnight} weight='semibold' textAlign='center'>{odds}</Text>
|
|
32
39
|
</View>
|
|
40
|
+
{order ?
|
|
41
|
+
<OrderGradeBar
|
|
42
|
+
grade={order.grade}
|
|
43
|
+
view_type='market'
|
|
44
|
+
mask={!show_grades}
|
|
45
|
+
/>
|
|
46
|
+
:<></>}
|
|
33
47
|
</TouchableOpacity>
|
|
34
48
|
)
|
|
35
49
|
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import React, { } from 'react';
|
|
2
|
+
import { FlatList, View, TouchableOpacity } from 'react-native';
|
|
3
|
+
import { Icons } from '../../Components';
|
|
4
|
+
import Colors from '../../constants/colors';
|
|
5
|
+
|
|
6
|
+
//Typecast a grade box object
|
|
7
|
+
type GradeBoxType = {
|
|
8
|
+
min:number,
|
|
9
|
+
max:number,
|
|
10
|
+
success_color:string,
|
|
11
|
+
fail_color:string,
|
|
12
|
+
locked_color:string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//Stage the boxes and set the min / max and colors
|
|
16
|
+
const grade_boxes:GradeBoxType[] = [
|
|
17
|
+
{ min: 0, max: 79, success_color: 'rgba(125,205,133,0.2)', fail_color: 'rgba(213,87, 59, 0.2)', locked_color: Colors.shades.shade100 },
|
|
18
|
+
{ min: 80, max: 94, success_color: 'rgba(125,205,133,0.4)', fail_color: 'rgba(213,87, 59, 0.4)', locked_color: Colors.shades.shade100 },
|
|
19
|
+
{ min:95, max: 97.5, success_color: 'rgba(125,205,133,0.6)', fail_color: 'rgba(213,87, 59, 0.6)', locked_color: Colors.shades.shade100 },
|
|
20
|
+
{ min:97.6, max: 99.99, success_color: 'rgba(125,205,133,0.8)', fail_color: 'rgba(213,87, 59, 0)', locked_color: Colors.shades.shade100 },
|
|
21
|
+
{ min: 100, max: 200, success_color: 'rgba(125,205,133,1)', fail_color: 'rgba(213,87, 59, 0)', locked_color: Colors.shades.shade100 }
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
type OrderGradeBarProps = {
|
|
25
|
+
mask?:boolean,
|
|
26
|
+
grade?: number,
|
|
27
|
+
view_type: 'card'|'book'|'market',
|
|
28
|
+
onSelectGrade?:() => void
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//OrderGradeBar React Component
|
|
32
|
+
const OrderGradeBar = ({ grade, view_type, mask, onSelectGrade }:OrderGradeBarProps ) => {
|
|
33
|
+
|
|
34
|
+
//Get the player's role
|
|
35
|
+
let premium = true
|
|
36
|
+
if(mask){ premium = false }
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Renders the grade boxes
|
|
41
|
+
* @param data
|
|
42
|
+
* @returns
|
|
43
|
+
*/
|
|
44
|
+
const renderGradeBoxes = (data :{ item:GradeBoxType, index:number }) => {
|
|
45
|
+
if(!grade && grade !== 0){ return <></> }
|
|
46
|
+
//Check if the grade is greater than the minumum of the box
|
|
47
|
+
const filled = grade >= data.item.min ? true : false
|
|
48
|
+
const success = grade > 97.5 ? true : false
|
|
49
|
+
const locked = !premium ? true : false
|
|
50
|
+
//Render the box
|
|
51
|
+
return (
|
|
52
|
+
<View style={{ margin:2, height:15, width:15, borderRadius:4, backgroundColor:locked? data.item.locked_color : filled ? success ? data.item.success_color : data.item.fail_color : Colors.shades.shade100 }}>
|
|
53
|
+
{locked ?
|
|
54
|
+
<View style={{ position:'absolute', top:0, right:0, left:0, bottom:0, justifyContent:'center', alignItems:'center' }}>
|
|
55
|
+
<Icons.LockClosedIcon size={10} color={Colors.incentive.gold} />
|
|
56
|
+
</View>
|
|
57
|
+
:<></>}
|
|
58
|
+
</View>
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Renders the grade boxes
|
|
64
|
+
* @param data
|
|
65
|
+
* @returns
|
|
66
|
+
*/
|
|
67
|
+
const renderGradeDashes = (data :{ item:GradeBoxType, index:number }) => {
|
|
68
|
+
if(!grade && grade !== 0){ return <></> }
|
|
69
|
+
//Check if the grade is greater than the minumum of the box
|
|
70
|
+
const filled = grade >= data.item.min ? true : false
|
|
71
|
+
const success = grade > 97.5 ? true : false
|
|
72
|
+
const locked = !premium ? true : false
|
|
73
|
+
|
|
74
|
+
//Render the box
|
|
75
|
+
return (
|
|
76
|
+
<View style={{ margin:1, height:4, width:15, borderRadius:4, backgroundColor:locked? data.item.locked_color : filled ? success ? data.item.success_color : data.item.fail_color : Colors.shades.shade100 }} />
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if(!grade && grade !== 0){
|
|
81
|
+
return (
|
|
82
|
+
<></>
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if(view_type == 'market'){
|
|
87
|
+
const success = grade > 97.5 ? true : false
|
|
88
|
+
if(!premium){
|
|
89
|
+
return (<></>)
|
|
90
|
+
}
|
|
91
|
+
return (
|
|
92
|
+
<View style={{ height:3, backgroundColor:success?Colors.utility.success:Colors.utility.error, marginRight:3, marginLeft:3 }} />
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return (
|
|
97
|
+
<View>
|
|
98
|
+
<TouchableOpacity disabled={onSelectGrade ? false : true} onPress={() => onSelectGrade ? onSelectGrade() : console.log('')}>
|
|
99
|
+
{view_type === 'card' ?
|
|
100
|
+
<FlatList horizontal data={grade_boxes} renderItem={renderGradeBoxes} keyExtractor={(item) => item.min.toString()} />
|
|
101
|
+
:view_type === 'book' ?
|
|
102
|
+
<FlatList data={[ ...grade_boxes ].reverse()} renderItem={renderGradeDashes} keyExtractor={(item) => item.min.toString()} />
|
|
103
|
+
:<></>}
|
|
104
|
+
</TouchableOpacity>
|
|
105
|
+
</View>
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
export default OrderGradeBar
|
|
@@ -31,5 +31,11 @@ const TeamEventMarketHelpers = {
|
|
|
31
31
|
let new_order_count = market_stats.filter(s => s.side_id == b.athlete_id).reduce((a,b) => a + parseInt(b.open_order_count as string), 0)
|
|
32
32
|
return new_order_count - old_order_count
|
|
33
33
|
})
|
|
34
|
+
},
|
|
35
|
+
getEventStatus: (event:EventProps):'active'|'closed'|'inactive' => {
|
|
36
|
+
let status:'active'|'closed'|'inactive' = 'active'
|
|
37
|
+
if(['postponed','cancelled','canceled','complete','completed','closed','suspended'].includes(event.status)){ status = 'closed' }
|
|
38
|
+
if(!event.is_active){ status = 'inactive' }
|
|
39
|
+
return status
|
|
34
40
|
}
|
|
35
41
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import { View, Image, FlatList, TouchableOpacity, ActivityIndicator } from 'react-native';
|
|
3
|
-
import type { AthleteProps, BestAvailableOrderProps, CompetitionProps, EventOrderStatProps, EventProps, MarketProps, MarketSideOptionProps, OrderProps, TradeProps } from '../../../types';
|
|
3
|
+
import type { AthleteProps, BestAvailableOrderProps, CompetitionProps, EventOrderStatProps, EventProps, MarketProps, MarketSideOptionProps, OrderProps, SquaresCompetitionProps, TradeProps } from '../../../types';
|
|
4
4
|
import { view_styles } from '../../../constants/styles';
|
|
5
5
|
import { Button, Icons, LinearDiagnal, Text } from '../../../Components';
|
|
6
6
|
import {TeamEventMarketHelpers} from './api';
|
|
@@ -17,6 +17,7 @@ type TeamEventMarketProps = {
|
|
|
17
17
|
event:EventProps,
|
|
18
18
|
markets:MarketProps[],
|
|
19
19
|
competition?:CompetitionProps,
|
|
20
|
+
squares_competition?:SquaresCompetitionProps,
|
|
20
21
|
latest_trades:TradeProps[],
|
|
21
22
|
best_available_orders:BestAvailableOrderProps[],
|
|
22
23
|
event_order_stats:EventOrderStatProps[],
|
|
@@ -24,10 +25,14 @@ type TeamEventMarketProps = {
|
|
|
24
25
|
onView:(data:{ event_id:string, event_type:string, market_id:string, side_type?:string, side_id?:string }) => void,
|
|
25
26
|
onOrder:(order:OrderProps) => void,
|
|
26
27
|
onExpand?:(expanded:boolean) => void,
|
|
28
|
+
show_grades?:boolean,
|
|
27
29
|
onCompetitionSelect:(competition_id:string) => void,
|
|
28
|
-
|
|
30
|
+
onSquaresSelect: (sq_comp_id:string) => void,
|
|
31
|
+
onViewAdditionalMarkets: (event_id:string, event_type:string) => void,
|
|
32
|
+
onTradeLongPress:(trade:TradeProps) => void,
|
|
33
|
+
onActivate?:(event_id:string, event_type:string) => void
|
|
29
34
|
}
|
|
30
|
-
const TeamEventMarket = ({ event, competition, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets }:TeamEventMarketProps) => {
|
|
35
|
+
const TeamEventMarket = ({ event, competition, squares_competition, show_grades, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onSquaresSelect, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets, onTradeLongPress, onActivate }:TeamEventMarketProps) => {
|
|
31
36
|
const [ expanded_data, setExpandedData ] = useState<{
|
|
32
37
|
expanded:boolean,
|
|
33
38
|
loaded:boolean,
|
|
@@ -40,6 +45,7 @@ const TeamEventMarket = ({ event, competition, markets, latest_trades, best_avai
|
|
|
40
45
|
athletes:[]
|
|
41
46
|
})
|
|
42
47
|
const { expanded, athletes, loaded, loading } = expanded_data;
|
|
48
|
+
const event_status = TeamEventMarketHelpers.getEventStatus(event);
|
|
43
49
|
|
|
44
50
|
useEffect(() => {
|
|
45
51
|
MarketComponentApi.setEnvironment();
|
|
@@ -66,6 +72,7 @@ const TeamEventMarket = ({ event, competition, markets, latest_trades, best_avai
|
|
|
66
72
|
|
|
67
73
|
|
|
68
74
|
const renderSides = (data:{ item:MarketSideOptionProps, index:number, market:MarketProps }) => {
|
|
75
|
+
const ba_order = best_available_orders.find(o => o.market_id == data.market.market_id && o.side == data.item.side)
|
|
69
76
|
const side_details = MarketComponentHelpers.getTeamEventSideIds(event, data.market, data.item);
|
|
70
77
|
if(!side_details){ return <></> } //Bomb out if we cant get the side details
|
|
71
78
|
let trade = MarketButtonHelpers.getVisibleTrade(default_price_view, data.market, data.item, latest_trades, best_available_orders, side_details.side_id, side_details.reversed_side_id);
|
|
@@ -79,6 +86,9 @@ const TeamEventMarket = ({ event, competition, markets, latest_trades, best_avai
|
|
|
79
86
|
side_option={data.item}
|
|
80
87
|
market={data.market}
|
|
81
88
|
trade={trade}
|
|
89
|
+
order={ba_order}
|
|
90
|
+
show_grades={show_grades}
|
|
91
|
+
onLongPress={onTradeLongPress}
|
|
82
92
|
onPress={(order) => {
|
|
83
93
|
const order_title = MarketComponentHelpers.getOrderTitleForTeamEvent(order, data.market, event);
|
|
84
94
|
if(!order_title){ return alert('Unable to process order') }
|
|
@@ -112,9 +122,11 @@ const TeamEventMarket = ({ event, competition, markets, latest_trades, best_avai
|
|
|
112
122
|
event={event}
|
|
113
123
|
event_type='team'
|
|
114
124
|
athlete={athlete}
|
|
125
|
+
show_grades={show_grades}
|
|
115
126
|
market={market}
|
|
116
127
|
event_order_stats={[data.item]}
|
|
117
128
|
latest_trades={athlete_trades}
|
|
129
|
+
onTradeLongPress={onTradeLongPress}
|
|
118
130
|
default_price_view={default_price_view}
|
|
119
131
|
best_available_orders={athlete_orders}
|
|
120
132
|
onOrder={onOrder}
|
|
@@ -130,7 +142,9 @@ const TeamEventMarket = ({ event, competition, markets, latest_trades, best_avai
|
|
|
130
142
|
<EventMarket
|
|
131
143
|
event={event}
|
|
132
144
|
market={market}
|
|
145
|
+
onTradeLongPress={onTradeLongPress}
|
|
133
146
|
event_order_stats={[data.item]}
|
|
147
|
+
show_grades={show_grades}
|
|
134
148
|
latest_trades={event_trades}
|
|
135
149
|
best_available_orders={event_orders}
|
|
136
150
|
default_price_view={default_price_view}
|
|
@@ -170,6 +184,14 @@ const TeamEventMarket = ({ event, competition, markets, latest_trades, best_avai
|
|
|
170
184
|
return (
|
|
171
185
|
<View style={{ ...view_styles.section, borderWidth:1, borderColor:Colors.shades.shade600 }}>
|
|
172
186
|
<View nativeID='event_header_data' style={{ flexDirection:'row', padding:10, borderBottomWidth:1, borderBottomColor:Colors.shades.shade600 }}>
|
|
187
|
+
{onActivate ?
|
|
188
|
+
<Button
|
|
189
|
+
title={event_status == 'active' ? 'Refresh' : 'Activate'}
|
|
190
|
+
title_color={Colors.shades.white}
|
|
191
|
+
backgroundColor={Colors.utility.success}
|
|
192
|
+
onPress={() => onActivate(event.event_id, 'team')}
|
|
193
|
+
/>
|
|
194
|
+
:<></>}
|
|
173
195
|
<View style={{ flex:1 }}>
|
|
174
196
|
{event.event_sub_title ?
|
|
175
197
|
<Text size={12} color={Colors.brand.midnight} weight='semibold'>{event.event_sub_title}</Text>
|
|
@@ -219,6 +241,7 @@ const TeamEventMarket = ({ event, competition, markets, latest_trades, best_avai
|
|
|
219
241
|
</View>
|
|
220
242
|
</View>
|
|
221
243
|
</View>
|
|
244
|
+
{event_status == 'active' ?
|
|
222
245
|
<View nativeID='primary_market_details' style={{ padding:5 }}>
|
|
223
246
|
<View style={{ marginTop:5, marginBottom:5 }}>
|
|
224
247
|
<FlatList
|
|
@@ -237,32 +260,47 @@ const TeamEventMarket = ({ event, competition, markets, latest_trades, best_avai
|
|
|
237
260
|
keyExtractor={(item) => item.market_id.toString()}
|
|
238
261
|
/>
|
|
239
262
|
</View>
|
|
263
|
+
:
|
|
264
|
+
<TouchableOpacity disabled={!onActivate ? true: false} style={{ flex:0.5, padding:10, justifyContent:'center', alignItems:'center' }} onPress={() => onActivate ? onActivate(event.event_id, 'team') : console.log('')}>
|
|
265
|
+
<Icons.MarketClosedIcon size={60} color={Colors.brand.midnight} />
|
|
266
|
+
</TouchableOpacity>
|
|
267
|
+
}
|
|
240
268
|
</View>
|
|
241
|
-
|
|
242
|
-
|
|
269
|
+
{event_status == 'active' ?
|
|
270
|
+
<View style={{ backgroundColor:Colors.shades.shade100, padding:10, flexDirection:'row', alignItems:'center', flexWrap:'wrap', borderBottomLeftRadius:8, borderBottomRightRadius:8 }}>
|
|
271
|
+
<TouchableOpacity style={{ flex:1, flexDirection:'row', minWidth:115 }} onPress={() => {
|
|
243
272
|
if(!primary_markets[0]){ return }
|
|
244
273
|
onView({ event_id: event.event_id, event_type:'team', market_id: primary_markets[0].market_id });
|
|
245
274
|
}}>
|
|
246
275
|
<View style={{ backgroundColor:Colors.shades.white, height:30, width:30, borderRadius:100, justifyContent:'center', alignItems:'center', ...view_styles.float }}>
|
|
247
276
|
<Icons.LiquidityIcon color={Colors.brand.midnight} size={30}/>
|
|
248
277
|
</View>
|
|
249
|
-
<View style={{ marginLeft:
|
|
278
|
+
<View style={{ marginLeft:5 }}>
|
|
250
279
|
<Text theme='body_2'>Liquidity</Text>
|
|
251
280
|
<Text size={12} color={Colors.brand.electric} weight='semibold'>${liquidity.toFixed()} {open_order_count} Orders</Text>
|
|
252
281
|
</View>
|
|
253
282
|
</TouchableOpacity>
|
|
283
|
+
{squares_competition ?
|
|
284
|
+
<TouchableOpacity
|
|
285
|
+
style={{ marginRight:10, flexDirection:'row', alignItems:'center', padding:10, borderRadius:22, backgroundColor:Colors.highlights.highlight100, ...view_styles.float }}
|
|
286
|
+
onPress={() => onSquaresSelect(squares_competition.sq_comp_id)}>
|
|
287
|
+
<Icons.SquaresIcon size={18} color={Colors.shades.white} />
|
|
288
|
+
<Text style={{ marginLeft:5 }} size={14} color={Colors.shades.white} weight='semibold'>Squares</Text>
|
|
289
|
+
</TouchableOpacity>
|
|
290
|
+
:<></>}
|
|
254
291
|
{competition ?
|
|
255
292
|
<TouchableOpacity
|
|
256
|
-
style={{ marginRight:
|
|
293
|
+
style={{ marginRight:10, flexDirection:'row', alignItems:'center', padding:10, borderRadius:22, backgroundColor:Colors.highlights.highlight500, ...view_styles.float }}
|
|
257
294
|
onPress={() => onCompetitionSelect(competition.competition_id)}>
|
|
258
295
|
<Icons.PickEmIcon size={18} color={Colors.shades.white} />
|
|
259
|
-
<Text style={{ marginLeft:5 }} size={14} color={Colors.shades.white} weight='semibold'>Pick 6
|
|
296
|
+
<Text style={{ marginLeft:5 }} size={14} color={Colors.shades.white} weight='semibold'>Pick 6</Text>
|
|
260
297
|
</TouchableOpacity>
|
|
261
298
|
:<></>}
|
|
262
299
|
<TouchableOpacity style={{ height:35, width:35, justifyContent:'center', borderRadius:100, alignItems:'center', backgroundColor:Colors.shades.white, ...view_styles.float }} onPress={() => expandedEvent()}>
|
|
263
300
|
<Icons.ChevronIcon direction={expanded ? 'up' : 'down'} size={8} color={Colors.brand.midnight} />
|
|
264
301
|
</TouchableOpacity>
|
|
265
302
|
</View>
|
|
303
|
+
:<></>}
|
|
266
304
|
{expanded ?
|
|
267
305
|
<View>
|
|
268
306
|
<View style={{ flexDirection:'row', alignItems:'center' }}>
|