esoftplay-event 0.0.2-v → 0.0.2-x
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/event/additional.tsx +1 -1
- package/event/additional_new.tsx +565 -0
- package/event/artist.tsx +7 -6
- package/event/artist_detail.tsx +5 -3
- package/event/artist_detailv2.tsx +129 -69
- package/event/artistv2.tsx +2 -11
- package/event/capture.tsx +2 -0
- package/event/countdown.tsx +10 -6
- package/event/detail.tsx +10 -13
- package/event/detail2.tsx +63 -61
- package/event/loading_page.tsx +62 -82
- package/event/order_detail.tsx +13 -6
- package/event/order_detail_upgrade_payment.tsx +3 -2
- package/event/order_reschedule.tsx +28 -15
- package/event/payment_subscribe.tsx +18 -0
- package/event/point_events.tsx +35 -0
- package/event/point_redemption.tsx +101 -0
- package/event/point_redemption_exchange.tsx +60 -0
- package/event/point_redemption_input.tsx +56 -0
- package/event/point_redemption_success.tsx +50 -0
- package/event/point_summary.tsx +48 -0
- package/event/schedule.tsx +1 -1
- package/event/schedule2.tsx +86 -0
- package/event/seat_map_new.tsx +4 -4
- package/event/ticket_list2.tsx +13 -3
- package/event/ticket_list_item.tsx +61 -0
- package/event/ticket_list_new.tsx +710 -0
- package/event/tms_dashboard.tsx +62 -25
- package/event/tms_gate.tsx +7 -13
- package/event/tms_home.tsx +4 -4
- package/id.json +6 -1
- package/package.json +1 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// withHooks
|
|
2
|
+
import { EventButton } from 'esoftplay/cache/event/button/import';
|
|
3
|
+
import { EventHeader } from 'esoftplay/cache/event/header/import';
|
|
4
|
+
import { LibIcon } from 'esoftplay/cache/lib/icon/import';
|
|
5
|
+
import { LibNavigation } from 'esoftplay/cache/lib/navigation/import';
|
|
6
|
+
import { LibStyle } from 'esoftplay/cache/lib/style/import';
|
|
7
|
+
import { useEffect } from 'react';
|
|
8
|
+
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import { ScrollView, Text, TouchableOpacity, View } from 'react-native';
|
|
11
|
+
import Animated, { useAnimatedStyle, useSharedValue, withRepeat, withTiming } from 'react-native-reanimated';
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
export interface EventPoint_redemptionArgs {
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
export interface EventPoint_redemptionProps {
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
export default function m(props: EventPoint_redemptionProps): any {
|
|
21
|
+
const opacity = useSharedValue(1)
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
opacity.value = withRepeat(
|
|
25
|
+
withTiming(0.7, {
|
|
26
|
+
duration: 1000,
|
|
27
|
+
}),
|
|
28
|
+
-1, // infinite
|
|
29
|
+
true // reverse
|
|
30
|
+
)
|
|
31
|
+
}, [])
|
|
32
|
+
const animatedStyle = useAnimatedStyle(() => ({
|
|
33
|
+
opacity: opacity.value,
|
|
34
|
+
}))
|
|
35
|
+
|
|
36
|
+
let mainColor = /* exchange */"#059669" /* redem #002045 */
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
|
|
40
|
+
<EventHeader title='Point Redemption' subtitle='NAMA EVENT NIH' />
|
|
41
|
+
<ScrollView>
|
|
42
|
+
<TouchableOpacity onPress={() => {
|
|
43
|
+
LibNavigation.navigateForResult('component/scanner').then((value) => {
|
|
44
|
+
LibNavigation.navigate('event/point_redemption_input', { qr: value })
|
|
45
|
+
})
|
|
46
|
+
}} style={{ margin: 10, backgroundColor: '#fff', borderRadius: 10, overflow: 'hidden', ...LibStyle.elevation(2) }}>
|
|
47
|
+
<View style={{ backgroundColor: '#002045', padding: 30 }}>
|
|
48
|
+
<Animated.View style={[
|
|
49
|
+
{
|
|
50
|
+
width: 50,
|
|
51
|
+
height: 50,
|
|
52
|
+
borderRadius: 25,
|
|
53
|
+
backgroundColor: '#4A607A',
|
|
54
|
+
justifyContent: 'center', alignContent: 'center', alignItems: 'center', alignSelf: 'center'
|
|
55
|
+
},
|
|
56
|
+
animatedStyle,
|
|
57
|
+
]}>
|
|
58
|
+
<LibIcon name='qrcode-scan' color='#fff' size={30} />
|
|
59
|
+
</Animated.View>
|
|
60
|
+
</View>
|
|
61
|
+
<View style={{ padding: 10 }}>
|
|
62
|
+
<View style={{ flexDirection: 'row' }}>
|
|
63
|
+
<View style={{ flex: 1, marginRight: 10 }}>
|
|
64
|
+
<Text allowFontScaling={false} style={{ fontSize: 17, fontWeight: 'bold' }}>Penukaran Point</Text>
|
|
65
|
+
<Text allowFontScaling={false} style={{}}>Pindai QR member untuk menambahkan poin dari struk belanja{/* atau memproses penukaran poin. */}</Text>
|
|
66
|
+
</View>
|
|
67
|
+
<View>
|
|
68
|
+
<View style={{ padding: 5, borderRadius: 5, backgroundColor: '#FFEFD7' }}>
|
|
69
|
+
<LibIcon name='shield-key-outline' />
|
|
70
|
+
</View>
|
|
71
|
+
</View>
|
|
72
|
+
</View>
|
|
73
|
+
</View>
|
|
74
|
+
<EventButton style={{ margin: 10 }} label='Scan QR Member' backgroundColor='#001B3C' onPress={() => {
|
|
75
|
+
LibNavigation.navigateForResult('component/scanner').then((value) => {
|
|
76
|
+
// LibNavigation.navigate('event/point_redemption_input', { qr: value })
|
|
77
|
+
LibNavigation.navigate('event/point_redemption_exchange', { qr: value })
|
|
78
|
+
})
|
|
79
|
+
}} />
|
|
80
|
+
</TouchableOpacity>
|
|
81
|
+
|
|
82
|
+
<Text allowFontScaling={false} style={{ margin: 10, marginBottom: 0, letterSpacing: 1.5, fontWeight: 'bold' }}>RIWAYAT PENUKARAN</Text>
|
|
83
|
+
|
|
84
|
+
<View style={{ margin: 10, marginBottom: 0, borderWidth: 1, borderColor: '#C5C7C8', borderRadius: 10, padding: 10, flexDirection: 'row' }}>
|
|
85
|
+
<View>
|
|
86
|
+
<View style={{ padding: 5, borderRadius: 5, backgroundColor: '#B2C8E6' }}>
|
|
87
|
+
<LibIcon name={'file-document'} color='#fff' />
|
|
88
|
+
</View>
|
|
89
|
+
</View>
|
|
90
|
+
<View style={{ flex: 1, marginLeft: 10, alignContent: 'center', justifyContent: 'center' }}>
|
|
91
|
+
<Text allowFontScaling={false} style={{ fontSize: 16 }}>{"Redeem struk belanja"}</Text>
|
|
92
|
+
</View>
|
|
93
|
+
<View style={{ alignContent: 'center', justifyContent: 'center' }}>
|
|
94
|
+
<Text allowFontScaling={false} style={{ fontSize: 22, fontWeight: 'bold', color: LibStyle.colorGreen }}>{"+ 400"}</Text>
|
|
95
|
+
</View>
|
|
96
|
+
</View>
|
|
97
|
+
|
|
98
|
+
</ScrollView>
|
|
99
|
+
</View>
|
|
100
|
+
)
|
|
101
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// withHooks
|
|
2
|
+
import { EventButton } from 'esoftplay/cache/event/button/import';
|
|
3
|
+
import { EventHeader } from 'esoftplay/cache/event/header/import';
|
|
4
|
+
import { LibFont } from 'esoftplay/cache/lib/font/import';
|
|
5
|
+
import { LibIcon } from 'esoftplay/cache/lib/icon/import';
|
|
6
|
+
import { LibPicture } from 'esoftplay/cache/lib/picture/import';
|
|
7
|
+
import { LibStyle } from 'esoftplay/cache/lib/style/import';
|
|
8
|
+
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import { ScrollView, Text, TouchableOpacity, View } from 'react-native';
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export interface EventPoint_redemption_exchangeArgs {
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
export interface EventPoint_redemption_exchangeProps {
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
export default function m(props: EventPoint_redemption_exchangeProps): any {
|
|
20
|
+
return (
|
|
21
|
+
<View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
|
|
22
|
+
<EventHeader />
|
|
23
|
+
<ScrollView>
|
|
24
|
+
|
|
25
|
+
<View style={{ margin: 15, marginBottom: 0, padding: 10, borderRadius: 10, backgroundColor: '#059669', overflow: 'hidden' }}>
|
|
26
|
+
<View style={{ opacity: 0.3, height: 100, width: 150, top: -40, right: -40, position: 'absolute', }}>
|
|
27
|
+
<LibIcon name='shield-check' size={150} color='#fff' />
|
|
28
|
+
</View>
|
|
29
|
+
<View style={{ marginBottom: 20, flexDirection: 'row' }}>
|
|
30
|
+
<LibPicture source={{ uri: 'https://0.soompi.io/wp-content/uploads/2025/11/17232014/karina-chanel-beauty-2.jpg' }} style={{ height: 50, width: 50, borderRadius: 30 }} />
|
|
31
|
+
<View style={{ marginLeft: 10, alignContent: 'center', justifyContent: 'center', }}>
|
|
32
|
+
<Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16, color: '#fff' }}>{"KATARINABLUEEE"}</Text>
|
|
33
|
+
<Text allowFontScaling={false} style={{ letterSpacing: 1, color: '#fff' }}>{"katarinabluee@gmail.com"}</Text>
|
|
34
|
+
</View>
|
|
35
|
+
</View>
|
|
36
|
+
<Text allowFontScaling={false} style={{ color: '#fff', fontFamily: LibFont('SFProText'), letterSpacing: 1, fontSize: 12 }}>{"POINT TERSEDIA"}</Text>
|
|
37
|
+
<Text allowFontScaling={false} style={{ color: '#fff', marginTop: 5, fontFamily: LibFont('DecoNumbers'), fontSize: 36, letterSpacing: 1.5 }}>{"1000"}<Text style={{ fontSize: 14, fontWeight: 'normal' }}>{" POINT"}</Text> </Text>
|
|
38
|
+
</View>
|
|
39
|
+
|
|
40
|
+
<Text allowFontScaling={false} style={{ margin: 15, marginBottom: 0, letterSpacing: 1.5, fontWeight: 'bold' }}>REWARD TERSEDIA</Text>
|
|
41
|
+
|
|
42
|
+
<TouchableOpacity style={{ margin: 15, marginBottom: 0, borderWidth: 1, borderColor: '#C5C7C8', backgroundColor: '#fff', borderRadius: 10, padding: 10, flexDirection: 'row', alignContent: 'center', alignItems: 'center' }}>
|
|
43
|
+
<View>
|
|
44
|
+
<View style={{ padding: 5, borderRadius: 5, backgroundColor: '#4EDEA3' }}>
|
|
45
|
+
<LibIcon name={'medal'} color='#fff' />
|
|
46
|
+
</View>
|
|
47
|
+
</View>
|
|
48
|
+
<View style={{ flex: 1, marginLeft: 10, marginRight: 10, alignContent: 'center', justifyContent: 'center' }}>
|
|
49
|
+
<Text allowFontScaling={false} style={{ fontFamily: LibFont('ArialBold'), fontSize: 16 }}>{"Redeem struk belanja untuk tas bigbang besar warna kuning"}</Text>
|
|
50
|
+
<Text allowFontScaling={false} style={{ marginTop: 5, fontSize: 20, fontFamily: LibFont('DecoNumbers'), color: LibStyle.colorGreen }}>{"400 Point"}</Text>
|
|
51
|
+
</View>
|
|
52
|
+
<LibIcon name='checkbox-blank-circle-outline' color='#059669' />
|
|
53
|
+
</TouchableOpacity>
|
|
54
|
+
|
|
55
|
+
</ScrollView>
|
|
56
|
+
<EventButton style={{ margin: 10 }} backgroundColor={"#059669"} label='TUKARKAN' onPress={() => { }} />
|
|
57
|
+
|
|
58
|
+
</View>
|
|
59
|
+
)
|
|
60
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// withHooks
|
|
2
|
+
import { EventButton } from 'esoftplay/cache/event/button/import';
|
|
3
|
+
import { EventHeader } from 'esoftplay/cache/event/header/import';
|
|
4
|
+
import { LibFont } from 'esoftplay/cache/lib/font/import';
|
|
5
|
+
import { LibInput } from 'esoftplay/cache/lib/input/import';
|
|
6
|
+
import { LibKeyboard_avoid } from 'esoftplay/cache/lib/keyboard_avoid/import';
|
|
7
|
+
import { LibNavigation } from 'esoftplay/cache/lib/navigation/import';
|
|
8
|
+
import { LibPicture } from 'esoftplay/cache/lib/picture/import';
|
|
9
|
+
import { LibStyle } from 'esoftplay/cache/lib/style/import';
|
|
10
|
+
|
|
11
|
+
import React from 'react';
|
|
12
|
+
import { ScrollView, Text, View } from 'react-native';
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
export interface EventPoint_redemption_inputArgs {
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
export interface EventPoint_redemption_inputProps {
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
export default function m(props: EventPoint_redemption_inputProps): any {
|
|
22
|
+
const { qr } = LibNavigation.getArgsAll(props)
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
|
|
26
|
+
<EventHeader title='Input Kupon Member' />
|
|
27
|
+
<LibKeyboard_avoid>
|
|
28
|
+
<ScrollView>
|
|
29
|
+
<View style={{ margin: 15, marginBottom: 0, backgroundColor: '#fff', padding: 10, borderWidth: 1, borderRadius: 10, borderColor: '#7992BD', flexDirection: 'row' }}>
|
|
30
|
+
<LibPicture source={{ uri: 'https://0.soompi.io/wp-content/uploads/2025/11/17232014/karina-chanel-beauty-2.jpg' }} style={{ height: 50, width: 50, borderRadius: 30 }} />
|
|
31
|
+
<View style={{ marginLeft: 10, alignContent: 'center', justifyContent: 'center', }}>
|
|
32
|
+
<Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16, color: '#002045' }}>{"KATARINABLUEEE"}</Text>
|
|
33
|
+
<Text allowFontScaling={false} style={{ letterSpacing: 1 }}>{"katarinabluee@gmail.com"}</Text>
|
|
34
|
+
</View>
|
|
35
|
+
</View>
|
|
36
|
+
|
|
37
|
+
<View style={{ margin: 15, backgroundColor: '#002045', padding: 10, borderRadius: 10 }}>
|
|
38
|
+
<Text allowFontScaling={false} style={{ color: '#fff', letterSpacing: 1 }}>{"Point saat ini"}</Text>
|
|
39
|
+
<Text allowFontScaling={false} style={{ color: '#fff', fontFamily: LibFont('DecoNumbers'), fontSize: 40, marginTop: 5, letterSpacing: 1.5 }}>{"1000"}</Text>
|
|
40
|
+
</View>
|
|
41
|
+
|
|
42
|
+
<Text allowFontScaling={false} style={{ alignSelf: 'center', fontWeight: 'bold', marginTop: 15, fontSize: 16, color: '#002045' }}>{"MASUKKAN TOTAL HARGA STRUK"}</Text>
|
|
43
|
+
<View style={{ flex: 1, width: LibStyle.width / 2, alignSelf: 'center' }}>
|
|
44
|
+
<LibInput
|
|
45
|
+
style={{ textAlign: 'center', fontSize: 30, marginTop: -10 }}
|
|
46
|
+
keyboardType='phone-pad'
|
|
47
|
+
/>
|
|
48
|
+
</View>
|
|
49
|
+
</ScrollView>
|
|
50
|
+
<EventButton style={{ margin: 15 }} label='Lanjutkan Penukaran' backgroundColor='#002045' onPress={() => {
|
|
51
|
+
LibNavigation.navigate('event/point_redemption_success')
|
|
52
|
+
}} />
|
|
53
|
+
</LibKeyboard_avoid>
|
|
54
|
+
</View>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// withHooks
|
|
2
|
+
import { EventButton } from 'esoftplay/cache/event/button/import';
|
|
3
|
+
import { EventHeader } from 'esoftplay/cache/event/header/import';
|
|
4
|
+
import { LibFont } from 'esoftplay/cache/lib/font/import';
|
|
5
|
+
import { LibIcon } from 'esoftplay/cache/lib/icon/import';
|
|
6
|
+
import { LibPicture } from 'esoftplay/cache/lib/picture/import';
|
|
7
|
+
import { LibStyle } from 'esoftplay/cache/lib/style/import';
|
|
8
|
+
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import { ScrollView, Text, View } from 'react-native';
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export interface EventPoint_redemption_successArgs {
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
export interface EventPoint_redemption_successProps {
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
export default function m(props: EventPoint_redemption_successProps): any {
|
|
20
|
+
return (
|
|
21
|
+
<View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
|
|
22
|
+
<EventHeader />
|
|
23
|
+
<ScrollView>
|
|
24
|
+
<View style={{ padding: 10, marginTop: 30, alignContent: 'center', alignItems: 'center', justifyContent: 'center' }}>
|
|
25
|
+
<View style={{ height: 100, width: 100, alignContent: 'center', alignItems: 'center', justifyContent: 'center', borderRadius: 50, backgroundColor: '#002045' }}>
|
|
26
|
+
<LibIcon name='check-circle' color='#fff' size={50} />
|
|
27
|
+
</View>
|
|
28
|
+
<Text allowFontScaling={false} style={{ marginTop: 20, fontSize: 20, fontFamily: LibFont('ArialBold') }}>Point berhasil ditambahkan</Text>
|
|
29
|
+
<Text allowFontScaling={false} style={{ fontFamily: LibFont('SFProText'), marginTop: 3 }}>Transaksi telah berhasil diproses.</Text>
|
|
30
|
+
</View>
|
|
31
|
+
|
|
32
|
+
<View style={{ margin: 15, padding: 10, backgroundColor: '#fff', borderRadius: 10 }}>
|
|
33
|
+
<View style={{ paddingBottom: 10, flexDirection: 'row', borderBottomWidth: 1, borderBottomColor: LibStyle.colorBgGrey }}>
|
|
34
|
+
<LibPicture source={{ uri: 'https://0.soompi.io/wp-content/uploads/2025/11/17232014/karina-chanel-beauty-2.jpg' }} style={{ height: 50, width: 50, borderRadius: 30 }} />
|
|
35
|
+
<View style={{ marginLeft: 10, alignContent: 'center', justifyContent: 'center', }}>
|
|
36
|
+
<Text allowFontScaling={false} style={{ fontWeight: 'bold', fontSize: 16, color: '#002045' }}>{"KATARINABLUEEE"}</Text>
|
|
37
|
+
<Text allowFontScaling={false} style={{ letterSpacing: 1 }}>{"katarinabluee@gmail.com"}</Text>
|
|
38
|
+
</View>
|
|
39
|
+
</View>
|
|
40
|
+
<View style={{ marginTop: 15, borderRadius: 10, padding: 10, backgroundColor: '#AEC7F5' }}>
|
|
41
|
+
<Text allowFontScaling={false} style={{ color: '#000', letterSpacing: 1, fontFamily: LibFont('SFProText') }}>{"Point diperoleh"}</Text>
|
|
42
|
+
<Text allowFontScaling={false} style={{ color: '#002045', marginTop: 5, fontFamily: LibFont('DecoNumbers'), fontSize: 40, letterSpacing: 1.5 }}>{"+1000"}<Text style={{ fontSize: 14 }}> point</Text></Text>
|
|
43
|
+
</View>
|
|
44
|
+
</View>
|
|
45
|
+
|
|
46
|
+
</ScrollView>
|
|
47
|
+
<EventButton style={{ margin: 10 }} backgroundColor={"#002045"} label='Kembali' onPress={() => { }} />
|
|
48
|
+
</View>
|
|
49
|
+
)
|
|
50
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// withHooks
|
|
2
|
+
import { EventHeader } from 'esoftplay/cache/event/header/import';
|
|
3
|
+
import { LibFont } from 'esoftplay/cache/lib/font/import';
|
|
4
|
+
import { LibIcon } from 'esoftplay/cache/lib/icon/import';
|
|
5
|
+
import { LibStyle } from 'esoftplay/cache/lib/style/import';
|
|
6
|
+
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import { ScrollView, Text, View } from 'react-native';
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
export interface EventPoint_summaryArgs {
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
export interface EventPoint_summaryProps {
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
export default function m(props: EventPoint_summaryProps): any {
|
|
18
|
+
return (
|
|
19
|
+
<View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
|
|
20
|
+
<EventHeader title='Point Saya' />
|
|
21
|
+
<ScrollView>
|
|
22
|
+
|
|
23
|
+
<View style={{ margin: 15, marginBottom: 0, padding: 10, borderRadius: 10, backgroundColor: '#059669', height: 120, overflow: 'scroll' }}>
|
|
24
|
+
<View style={{ opacity: 0.3, height: 100, width: 150, top: -40, right: -40, position: 'absolute', }}>
|
|
25
|
+
<LibIcon name='star-circle' size={150} color='#fff' />
|
|
26
|
+
</View>
|
|
27
|
+
<Text allowFontScaling={false} style={{ color: '#fff', fontFamily: LibFont('SFProText'), letterSpacing: 1, fontSize: 12 }}>{"POINT SAAT INI"}</Text>
|
|
28
|
+
<Text allowFontScaling={false} style={{ color: '#fff', fontFamily: LibFont('SFProText'), fontWeight: 'bold', fontSize: 36, letterSpacing: 1.5 }}>{"1000"}<Text style={{ fontSize: 14, fontWeight: 'normal' }}>{" POINT"}</Text> </Text>
|
|
29
|
+
</View>
|
|
30
|
+
|
|
31
|
+
<View style={{ margin: 15, marginBottom: 0,backgroundColor:'#E1E3E4', borderWidth: 1, borderColor: '#C5C7C8', borderRadius: 10, padding: 10, flexDirection: 'row' }}>
|
|
32
|
+
<View>
|
|
33
|
+
<View style={{ padding: 5, borderRadius: 333, backgroundColor: '#059669' }}>
|
|
34
|
+
<LibIcon name={'piggy-bank-outline'} color='#fff' />
|
|
35
|
+
</View>
|
|
36
|
+
</View>
|
|
37
|
+
<View style={{ flex: 1, marginLeft: 10 }}>
|
|
38
|
+
<Text allowFontScaling={false} style={{ fontSize: 12, letterSpacing: 1.5, fontWeight: 'bold' }}>{"CARA DAPAT POINT"}</Text>
|
|
39
|
+
<Text allowFontScaling={false} style={{ fontSize: 12, letterSpacing: 1 }}>{"Dapatkan poin dengan melakukan pembelian di area event dan menukarka struk pembelian ke booth penukaran"}</Text>
|
|
40
|
+
</View>
|
|
41
|
+
</View>
|
|
42
|
+
|
|
43
|
+
<Text allowFontScaling={false} style={{ margin: 15, marginBottom: 0, letterSpacing: 1.5, fontWeight: 'bold' }}>RIWAYAT PENUKARAN</Text>
|
|
44
|
+
|
|
45
|
+
</ScrollView>
|
|
46
|
+
</View>
|
|
47
|
+
)
|
|
48
|
+
}
|
package/event/schedule.tsx
CHANGED
|
@@ -21,7 +21,7 @@ export interface EventScheduleProps {
|
|
|
21
21
|
|
|
22
22
|
}
|
|
23
23
|
export default function m(props: EventScheduleProps): any {
|
|
24
|
-
const { schedule, dataBookingEvent, order_type, tax, is_multiprice } = LibNavigation.getArgsAll(props)
|
|
24
|
+
const { url, schedule, dataBookingEvent, order_type, tax, is_multiprice } = LibNavigation.getArgsAll(props)
|
|
25
25
|
const [qty, setQty] = useSafeState<number>(dataBookingEvent?.qty || 1)
|
|
26
26
|
|
|
27
27
|
function add(quota?: any, quota_used?: any): void {
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// withHooks
|
|
2
|
+
import { EventHeader } from 'esoftplay/cache/event/header/import';
|
|
3
|
+
import { LibCurl } from 'esoftplay/cache/lib/curl/import';
|
|
4
|
+
import { LibLoading } from 'esoftplay/cache/lib/loading/import';
|
|
5
|
+
import { LibNavigation } from 'esoftplay/cache/lib/navigation/import';
|
|
6
|
+
import { LibPicture } from 'esoftplay/cache/lib/picture/import';
|
|
7
|
+
import { LibStyle } from 'esoftplay/cache/lib/style/import';
|
|
8
|
+
import { LibToastProperty } from 'esoftplay/cache/lib/toast/import';
|
|
9
|
+
import { LibVideoProperty } from 'esoftplay/cache/lib/video/import';
|
|
10
|
+
import { LibWebview } from 'esoftplay/cache/lib/webview/import';
|
|
11
|
+
import esp from 'esoftplay/esp';
|
|
12
|
+
import useSafeState from 'esoftplay/state';
|
|
13
|
+
import { useEffect } from 'react';
|
|
14
|
+
|
|
15
|
+
import React from 'react';
|
|
16
|
+
import { ScrollView, Text, TouchableOpacity, View } from 'react-native';
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
export interface EventSchedule2Args {
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
export interface EventSchedule2Props {
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
function m(props: EventSchedule2Props): any {
|
|
26
|
+
const { url } = LibNavigation.getArgsAll(props)
|
|
27
|
+
|
|
28
|
+
const [result, setResult] = useSafeState()
|
|
29
|
+
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
loadData()
|
|
32
|
+
}, [])
|
|
33
|
+
|
|
34
|
+
function loadData() {
|
|
35
|
+
new LibCurl(url, null, (res, msg) => {
|
|
36
|
+
setResult(res)
|
|
37
|
+
}, (err) => {
|
|
38
|
+
LibToastProperty.show(err?.message)
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (!result) {
|
|
43
|
+
return <LibLoading />
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function renderArtist(item: any, i: number) {
|
|
47
|
+
return (
|
|
48
|
+
<View key={i} style={{ margin: 15 }}>
|
|
49
|
+
{
|
|
50
|
+
item?.image != "" &&
|
|
51
|
+
<LibPicture source={{ uri: item?.image }} style={{ height: LibStyle.width * 9 / 16, width: LibStyle.width, marginTop: -15, marginLeft: -15, resizeMode: 'cover' }} />
|
|
52
|
+
}
|
|
53
|
+
<Text allowFontScaling={false} style={{ marginTop: 10, fontFamily: "Arial", fontSize: 16, fontWeight: "bold", fontStyle: "normal", letterSpacing: 0, marginBottom: 7 }}>{item?.name || ""}</Text>
|
|
54
|
+
<View style={{ borderRadius: 10, overflow: 'hidden' }}>
|
|
55
|
+
{
|
|
56
|
+
item?.description != "" &&
|
|
57
|
+
<LibWebview source={{ html: item?.description }} onFinishLoad={() => { }} style={{ marginLeft: -20 }} />
|
|
58
|
+
}
|
|
59
|
+
</View>
|
|
60
|
+
{
|
|
61
|
+
item?.video != "" &&
|
|
62
|
+
<>
|
|
63
|
+
<Text allowFontScaling={false} style={{ marginLeft: 0, marginHorizontal: 20, marginTop: 10, fontFamily: "Arial", fontSize: 13, fontWeight: "bold", fontStyle: "normal", lineHeight: 22, letterSpacing: 0, color: "#4a4a4a" }} >{esp.lang("event/schedule", "text_vide")}</Text>
|
|
64
|
+
<TouchableOpacity style={{ borderRadius: 10, overflow: 'hidden' }} onPress={() => LibNavigation.navigate('lib/video', { code: item?.video })} >
|
|
65
|
+
<LibPicture source={{ uri: LibVideoProperty.getUrlThumbnail(item?.video) }} style={{ height: LibStyle.width * 9 / 16, width: LibStyle.width - 30, marginLeft: 0, marginHorizontal: 20, resizeMode: 'cover' }} />
|
|
66
|
+
</TouchableOpacity>
|
|
67
|
+
</>
|
|
68
|
+
}
|
|
69
|
+
</View>
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return (
|
|
74
|
+
<View style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }}>
|
|
75
|
+
<EventHeader />
|
|
76
|
+
|
|
77
|
+
<ScrollView>
|
|
78
|
+
{
|
|
79
|
+
result?.length > 0 && result?.map?.(renderArtist)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
</ScrollView>
|
|
83
|
+
|
|
84
|
+
</View>
|
|
85
|
+
)
|
|
86
|
+
}
|
package/event/seat_map_new.tsx
CHANGED
|
@@ -43,7 +43,7 @@ export function clearHoldedSeats() {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
export default function m(props: any): any {
|
|
46
|
-
const { dataTicket
|
|
46
|
+
const { dataTicket } = LibNavigation.getArgsAll<any>(props)
|
|
47
47
|
const qty = dataTicket?.qty
|
|
48
48
|
|
|
49
49
|
const eventData = {
|
|
@@ -282,7 +282,7 @@ export default function m(props: any): any {
|
|
|
282
282
|
price_id: dataTicket?.selected_ticket?.price_id,
|
|
283
283
|
ondate: dataTicket?.ondate || dataTicket?.selected_ticket?.list?.ondate
|
|
284
284
|
}, (res, msg) => {
|
|
285
|
-
|
|
285
|
+
|
|
286
286
|
setBoundingBox(res.metadata.bounding_box)
|
|
287
287
|
let x = res.layout.split(';').map((item: any) => item.split(',')).map(([x, y, seatName, status]: any) => [Number(x), Number(y), seatName, Number(status)])
|
|
288
288
|
let updated = updateIndexByRes(x, seatBooked)
|
|
@@ -306,6 +306,7 @@ export default function m(props: any): any {
|
|
|
306
306
|
}, (res, msg) => {
|
|
307
307
|
loadDataSeatmap(res)
|
|
308
308
|
setErrBookedSeat(undefined)
|
|
309
|
+
|
|
309
310
|
}, (err) => {
|
|
310
311
|
setErrBookedSeat(err?.message)
|
|
311
312
|
})
|
|
@@ -335,7 +336,7 @@ export default function m(props: any): any {
|
|
|
335
336
|
|
|
336
337
|
return (
|
|
337
338
|
<View key={scale} style={{ flex: 1, backgroundColor: LibStyle.colorBgGrey }} >
|
|
338
|
-
<EventHeader title={esp.lang("event/seat_map", "header_title")} />
|
|
339
|
+
<EventHeader title={esp.lang("event/seat_map", "header_title")} subtitle={dataTicket?.selected_ticket?.type} />
|
|
339
340
|
<View style={{ flex: 1 }}>
|
|
340
341
|
<View style={{ marginBottom: 5, }}>
|
|
341
342
|
<ScrollView style={{ padding: 10, paddingLeft: 0, }} horizontal>
|
|
@@ -358,7 +359,6 @@ export default function m(props: any): any {
|
|
|
358
359
|
style={{
|
|
359
360
|
width: width * scale,
|
|
360
361
|
height: height * scale,
|
|
361
|
-
padding: 10,
|
|
362
362
|
backgroundColor: LibStyle.colorBgGrey,
|
|
363
363
|
|
|
364
364
|
}}>
|
package/event/ticket_list2.tsx
CHANGED
|
@@ -139,7 +139,7 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
139
139
|
|
|
140
140
|
const [unAvailableResult, setUnavailableResult] = useLazyState<any>()
|
|
141
141
|
const [, setHasAdditionGlobal, getHasAdditionGlobal] = useLazyState<any>()
|
|
142
|
-
const [availableResult, setAvailableResult, getAvailableResult] = useSafeState<
|
|
142
|
+
const [availableResult, setAvailableResult, getAvailableResult] = useSafeState<any>()
|
|
143
143
|
const [, setDataPostBooking, getDataPostBooking] = useLazyState<any>([])
|
|
144
144
|
const [dataAddition, setDataAddition] = useSafeState<any>([])
|
|
145
145
|
const [isPass, setIsPass] = useSafeState(true)
|
|
@@ -252,6 +252,7 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
const selectedPriceIds = getDataPostBooking().filter((x: any) => x.selected == 1).map((x: any) => x.price_id)
|
|
255
|
+
|
|
255
256
|
curlPriceConfig(selectedPriceIds, (filteredFee) => {
|
|
256
257
|
const editedDataTicket = getDataPostBooking().map((item: any) => {
|
|
257
258
|
const priceId = item.price_id;
|
|
@@ -263,10 +264,20 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
263
264
|
}
|
|
264
265
|
return item;
|
|
265
266
|
})
|
|
267
|
+
|
|
268
|
+
// esp.log({
|
|
269
|
+
// order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
|
|
270
|
+
// dataEvent: dataEvent,
|
|
271
|
+
// dataTicket: editedDataTicket.filter((x: any) => x.selected == 1),
|
|
272
|
+
// subscribed: subscribed,
|
|
273
|
+
// url_payment: urlPayment,
|
|
274
|
+
// show_fee_percentage
|
|
275
|
+
// });
|
|
276
|
+
|
|
266
277
|
LibNavigation.navigate('payment/ticket_multi', {
|
|
267
278
|
order_type: EventConfigProperty?.state()?.get()?.order_type?.ticket,
|
|
268
279
|
dataEvent: dataEvent,
|
|
269
|
-
dataTicket: editedDataTicket,
|
|
280
|
+
dataTicket: editedDataTicket?.filter((item: any) => item.selected == 1),
|
|
270
281
|
subscribed: subscribed,
|
|
271
282
|
url_payment: urlPayment,
|
|
272
283
|
show_fee_percentage
|
|
@@ -304,7 +315,6 @@ export default function m(props: EventTicket_list2Props): any {
|
|
|
304
315
|
|
|
305
316
|
function loadData() {
|
|
306
317
|
new LibCurl(url, null, (res, msg) => {
|
|
307
|
-
esp.log(res, url);
|
|
308
318
|
const availablePriceType = LibObject.update(res, (arr: any[]) => arr.filter((x) => x.status != 0))('price_type')
|
|
309
319
|
const unAvailablePriceType = LibObject.update(res, (arr: any[]) => arr.filter((x) => x.status == 0))('price_type')
|
|
310
320
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// withHooks
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export interface EventTicket_list_itemArgs {
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
export interface EventTicket_list_itemProps {
|
|
11
|
+
|
|
12
|
+
}
|
|
13
|
+
export default function m(props: EventTicket_list_itemProps): any {
|
|
14
|
+
let priceList = [
|
|
15
|
+
{
|
|
16
|
+
"price_id": "2679",
|
|
17
|
+
"name": "Online Generate",
|
|
18
|
+
"price_date": "0",
|
|
19
|
+
"use_code": "0",
|
|
20
|
+
"price_type_info": "",
|
|
21
|
+
"status": "1",
|
|
22
|
+
"currency": "IDR",
|
|
23
|
+
"qty_min": "1",
|
|
24
|
+
"qty_max": "10",
|
|
25
|
+
"label": "",
|
|
26
|
+
"label_color": "#000000",
|
|
27
|
+
"list": [
|
|
28
|
+
{
|
|
29
|
+
"date_id": 0,
|
|
30
|
+
"ondate": "0000-00-00",
|
|
31
|
+
"price": "0.00",
|
|
32
|
+
"status": "1",
|
|
33
|
+
"quota_used": 0,
|
|
34
|
+
"show_price": 1,
|
|
35
|
+
"index_id": "2679-0000-00-00"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"url_config": "https://api.test.bbo.co.id/v2/event_detail_price_config"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"price_id": "2680",
|
|
42
|
+
"name": "Online by date Generate",
|
|
43
|
+
"price_date": "1",
|
|
44
|
+
"use_code": "0",
|
|
45
|
+
"price_type_info": "",
|
|
46
|
+
"status": 0,
|
|
47
|
+
"currency": "IDR",
|
|
48
|
+
"qty_min": "1",
|
|
49
|
+
"qty_max": "10",
|
|
50
|
+
"label": "",
|
|
51
|
+
"label_color": "#000000",
|
|
52
|
+
"list": [],
|
|
53
|
+
"url_config": "https://api.test.bbo.co.id/v2/event_detail_price_config"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<View>
|
|
59
|
+
</View>
|
|
60
|
+
)
|
|
61
|
+
}
|