@aks-dev/easyui 1.0.142 → 1.0.144
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.
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: shiguo
|
|
3
3
|
* @Date: 2022-05-05 14:52:53
|
|
4
4
|
* @LastEditors: shiguo
|
|
5
|
-
* @LastEditTime: 2022-
|
|
5
|
+
* @LastEditTime: 2022-12-30 09:36:45
|
|
6
6
|
* @FilePath: /@aks-dev/easyui/lib/Echarts/EchartsView.tsx
|
|
7
7
|
*/
|
|
8
8
|
import * as React from 'react'
|
|
@@ -32,97 +32,73 @@ const EchartsView: React.FC<EchartsViewProps> = (props) => {
|
|
|
32
32
|
)
|
|
33
33
|
const WebViewRef: React.MutableRefObject<{ injectJavaScript: Function }> = React.useRef() as any
|
|
34
34
|
const containerRef = React.useRef<{ measure: (callback: MeasureOnSuccessCallback) => void }>()
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
const rootView = React.useRef<{
|
|
36
|
+
pageX: number;
|
|
37
|
+
pageY: number;
|
|
38
|
+
height: number;
|
|
39
|
+
width: number;
|
|
40
|
+
}>({ pageX: 0, pageY: 0, width: 0, height: 0 })
|
|
41
|
+
const getRootViewlayoutPromise = () => {
|
|
42
|
+
return new Promise((resovle, reject) => {
|
|
43
|
+
containerRef.current?.measure((...args) => {
|
|
44
|
+
if (args.length == 6) {
|
|
45
|
+
rootView.current = {
|
|
46
|
+
width: args[2],
|
|
47
|
+
height: args[3],
|
|
48
|
+
pageX: args[4],
|
|
49
|
+
pageY: args[5],
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// console.log('RootView', rootView.current)
|
|
53
|
+
resovle(args)
|
|
54
|
+
})
|
|
46
55
|
})
|
|
47
|
-
|
|
48
|
-
}, [props.style])
|
|
56
|
+
}
|
|
49
57
|
|
|
50
58
|
|
|
51
59
|
React.useLayoutEffect(() => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
var instance = echarts.getInstanceByDom(document.getElementById('main'));
|
|
58
|
-
if(instance == null){
|
|
59
|
-
document.getElementById('main').style.height = "${height}";
|
|
60
|
-
document.getElementById('main').style.width = "${width}";
|
|
61
|
-
instance = echarts.init(document.getElementById('main'));
|
|
62
|
-
}
|
|
63
|
-
instance.clear();
|
|
64
|
-
instance.setOption(${toString(props.option)});
|
|
65
|
-
})();
|
|
66
|
-
`
|
|
67
|
-
WebViewRef.current?.injectJavaScript(run);
|
|
68
|
-
|
|
69
|
-
return () => {
|
|
70
|
-
// console.log('useEffect relase')
|
|
60
|
+
; (async () => {
|
|
61
|
+
if (state.isLoaded) {
|
|
62
|
+
await getRootViewlayoutPromise()
|
|
63
|
+
let height = rootView.current.height ? `${rootView.current.height}px` : 'auto'
|
|
64
|
+
let width = rootView.current.width ? `${rootView.current.width}px` : 'auto'
|
|
71
65
|
const run = `
|
|
72
66
|
;(function() {
|
|
73
67
|
var instance = echarts.getInstanceByDom(document.getElementById('main'));
|
|
74
|
-
instance
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
if(instance == null){
|
|
69
|
+
document.getElementById('main').style.height = "${height}";
|
|
70
|
+
document.getElementById('main').style.width = "${width}";
|
|
71
|
+
instance = echarts.init(document.getElementById('main'));
|
|
77
72
|
}
|
|
73
|
+
instance.clear();
|
|
74
|
+
instance.setOption(${toString(props.option)});
|
|
78
75
|
})();
|
|
79
76
|
`
|
|
80
77
|
WebViewRef.current?.injectJavaScript(run);
|
|
78
|
+
|
|
79
|
+
return () => {
|
|
80
|
+
const run = `
|
|
81
|
+
;(function() {
|
|
82
|
+
var instance = echarts.getInstanceByDom(document.getElementById('main'));
|
|
83
|
+
instance.clear();
|
|
84
|
+
if(!instance.isDisposed()){
|
|
85
|
+
instance.dispose();
|
|
86
|
+
}
|
|
87
|
+
})();
|
|
88
|
+
`
|
|
89
|
+
|
|
90
|
+
WebViewRef.current?.injectJavaScript(run);
|
|
91
|
+
}
|
|
81
92
|
}
|
|
82
|
-
|
|
93
|
+
return undefined
|
|
94
|
+
})().catch(err => {
|
|
95
|
+
console.log(err)
|
|
96
|
+
})
|
|
83
97
|
|
|
84
98
|
|
|
85
|
-
return undefined
|
|
86
99
|
}, [props.option, state.isLoaded])
|
|
87
100
|
|
|
88
101
|
|
|
89
|
-
// React.useEffect(() => {
|
|
90
|
-
// console.log('useEffect', state.isLoaded)
|
|
91
|
-
|
|
92
|
-
// if (state.isLoaded) {
|
|
93
|
-
// const run = `
|
|
94
|
-
// ;(function() {
|
|
95
|
-
// var instance = echarts.getInstanceByDom(document.getElementById('main'));
|
|
96
|
-
// if(instance == null){
|
|
97
|
-
// instance = echarts.init(document.getElementById('main'));
|
|
98
|
-
// }
|
|
99
|
-
// instance.clear();
|
|
100
|
-
// instance.setOption(${toString(props.option)});
|
|
101
|
-
// })();
|
|
102
|
-
// `
|
|
103
|
-
// WebViewRef.current?.injectJavaScript(run);
|
|
104
|
-
|
|
105
|
-
// return () => {
|
|
106
|
-
// console.log('useEffect relase')
|
|
107
|
-
// const run = `
|
|
108
|
-
// ;(function() {
|
|
109
|
-
// var instance = echarts.getInstanceByDom(document.getElementById('main'));
|
|
110
|
-
// instance.clear();
|
|
111
|
-
// if(!instance.isDisposed()){
|
|
112
|
-
// instance.dispose();
|
|
113
|
-
// }
|
|
114
|
-
// })();
|
|
115
|
-
// `
|
|
116
|
-
// WebViewRef.current?.injectJavaScript(run);
|
|
117
|
-
// }
|
|
118
|
-
// }
|
|
119
|
-
|
|
120
|
-
// return undefined
|
|
121
|
-
|
|
122
|
-
// }, [props.option, state.isLoaded])
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
102
|
|
|
127
103
|
// const injectedJavaScript = (): string => {
|
|
128
104
|
// console.log('injectedJavaScript', props.option.xAxis.data)
|
|
@@ -182,6 +158,9 @@ const EchartsView: React.FC<EchartsViewProps> = (props) => {
|
|
|
182
158
|
dispatch({ isLoaded: true })
|
|
183
159
|
// console.log('onLoadEnd')
|
|
184
160
|
}}
|
|
161
|
+
onError={e => {
|
|
162
|
+
console.log('onError', e)
|
|
163
|
+
}}
|
|
185
164
|
source={{
|
|
186
165
|
baseUrl: '',
|
|
187
166
|
html: getHtml({ backgroundColor: (props.style as ViewStyle)?.backgroundColor || 'transparent' })
|
|
@@ -62,29 +62,34 @@ export default React.forwardRef((props: RefreshListProps, ref: React.Ref<any>) =
|
|
|
62
62
|
|
|
63
63
|
switch (mode) {
|
|
64
64
|
case 'FlatList':
|
|
65
|
-
|
|
65
|
+
let flatListProps: FlatListRefreshProps = props as FlatListRefreshProps
|
|
66
66
|
return (
|
|
67
67
|
<Animated.FlatList
|
|
68
68
|
{...rest as FlatListRefreshProps}
|
|
69
69
|
ref={ref}
|
|
70
70
|
refreshing={refreshState == RefreshState.HeaderRefreshing}
|
|
71
71
|
keyExtractor={(_, index) => { return `sg-index-FlatList-${seed}-${index}` }}
|
|
72
|
-
contentContainerStyle={
|
|
72
|
+
contentContainerStyle={flatListProps.data?.length ? {} : { height: "100%" }}
|
|
73
73
|
onRefresh={onRefresh}
|
|
74
74
|
onEndReachedThreshold={0.1}
|
|
75
75
|
onEndReached={onEndReached}
|
|
76
76
|
showsVerticalScrollIndicator={false}
|
|
77
|
-
ListHeaderComponent={(_) =>
|
|
78
|
-
|
|
77
|
+
ListHeaderComponent={(_) => (
|
|
78
|
+
<View style={{ display: 'flex', flexDirection: 'column' }}>
|
|
79
|
+
<ListHeaderComponent {...flatListProps} />
|
|
80
|
+
{flatListProps.ListHeaderComponent}
|
|
81
|
+
</View>
|
|
82
|
+
)}
|
|
83
|
+
ListFooterComponent={(_) => <ListFooterComponent {...flatListProps} />}
|
|
79
84
|
|
|
80
85
|
/>
|
|
81
86
|
)
|
|
82
87
|
|
|
83
88
|
case 'SectionList':
|
|
84
|
-
|
|
89
|
+
let sectionListProps:SectionListRefreshProps = props as SectionListRefreshProps;
|
|
85
90
|
const { ItemSeparatorComponent = (_) => (
|
|
86
91
|
<View style={{ height: 1 }} />
|
|
87
|
-
) } =
|
|
92
|
+
) } = sectionListProps
|
|
88
93
|
return (
|
|
89
94
|
<Animated.SectionList
|
|
90
95
|
{...rest as SectionListRefreshProps}
|
|
@@ -92,26 +97,32 @@ export default React.forwardRef((props: RefreshListProps, ref: React.Ref<any>) =
|
|
|
92
97
|
refreshing={refreshState == RefreshState.HeaderRefreshing}
|
|
93
98
|
onRefresh={onRefresh}
|
|
94
99
|
keyExtractor={(_, index) => { return `sg-index-SectionList-${seed}-${index}` }}
|
|
95
|
-
contentContainerStyle={
|
|
100
|
+
contentContainerStyle={sectionListProps.sections?.length > 0 ? {} : { height: "100%" }}
|
|
96
101
|
ItemSeparatorComponent={ItemSeparatorComponent}
|
|
97
102
|
onEndReachedThreshold={0.1}
|
|
98
103
|
onEndReached={onEndReached}
|
|
99
104
|
showsVerticalScrollIndicator={false}
|
|
100
|
-
ListHeaderComponent={(_) => <ListHeaderComponent {...
|
|
101
|
-
|
|
102
|
-
|
|
105
|
+
// ListHeaderComponent={(_) => <ListHeaderComponent {...sectionListProps} />}
|
|
106
|
+
ListHeaderComponent={(_) => (
|
|
107
|
+
<View style={{ display: 'flex', flexDirection: 'column' }}>
|
|
108
|
+
<ListHeaderComponent {...flatListProps} />
|
|
109
|
+
{sectionListProps.ListHeaderComponent}
|
|
110
|
+
</View>
|
|
111
|
+
)}
|
|
112
|
+
ListFooterComponent={(_) => <ListFooterComponent {...sectionListProps} />}
|
|
113
|
+
renderSectionHeader={sectionListProps.renderSectionHeader}
|
|
103
114
|
/>
|
|
104
115
|
)
|
|
105
116
|
|
|
106
117
|
case 'SwipeList':
|
|
118
|
+
let swipeListProps:SwipeListViewRefreshProps = props as SwipeListViewRefreshProps
|
|
107
119
|
const { renderHiddenItem = (data, rowMap) => (
|
|
108
120
|
<View style={{ backgroundColor: 'red', height: '100%', alignItems: 'flex-end', justifyContent: "center" }}>
|
|
109
121
|
<Text>Right </Text>
|
|
110
122
|
</View>
|
|
111
|
-
) } =
|
|
123
|
+
) } = swipeListProps
|
|
112
124
|
return (
|
|
113
125
|
<SwipeListView
|
|
114
|
-
|
|
115
126
|
{...rest as SwipeListViewRefreshProps}
|
|
116
127
|
rightOpenValue={-100}
|
|
117
128
|
leftOpenValue={0}
|
|
@@ -124,8 +135,13 @@ export default React.forwardRef((props: RefreshListProps, ref: React.Ref<any>) =
|
|
|
124
135
|
onEndReachedThreshold={0.1}
|
|
125
136
|
onEndReached={onEndReached}
|
|
126
137
|
showsVerticalScrollIndicator={false}
|
|
127
|
-
ListHeaderComponent={(
|
|
128
|
-
|
|
138
|
+
ListHeaderComponent={(_) => (
|
|
139
|
+
<View style={{ display: 'flex', flexDirection: 'column' }}>
|
|
140
|
+
<ListHeaderComponent {...flatListProps} />
|
|
141
|
+
{swipeListProps.ListHeaderComponent}
|
|
142
|
+
</View>
|
|
143
|
+
)}
|
|
144
|
+
ListFooterComponent={(args) => <ListFooterComponent {...swipeListProps} />}
|
|
129
145
|
renderHiddenItem={renderHiddenItem}
|
|
130
146
|
/>
|
|
131
147
|
|
|
@@ -170,7 +186,7 @@ const ListFooterComponent = React.memo((props: RefreshListProps) => {
|
|
|
170
186
|
</View>
|
|
171
187
|
)
|
|
172
188
|
case RefreshState.EmptyData:
|
|
173
|
-
if (props.
|
|
189
|
+
if (props.renderListEmptyComponent) return props.renderListEmptyComponent()
|
|
174
190
|
return (
|
|
175
191
|
<View style={{
|
|
176
192
|
width: '100%', height: '100%',
|
package/lib/RefreshList/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @Author: your name
|
|
3
3
|
* @Date: 2022-04-20 14:56:05
|
|
4
|
-
* @LastEditTime: 2022-
|
|
4
|
+
* @LastEditTime: 2022-12-29 10:46:57
|
|
5
5
|
* @LastEditors: shiguo
|
|
6
6
|
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
7
7
|
* @FilePath: /@aks-dev/easyui/lib/RefreshList/index.ts
|
|
@@ -29,7 +29,7 @@ type CommonProps = {
|
|
|
29
29
|
onFooterRefresh: (info: any) => void;
|
|
30
30
|
reload: () => void;
|
|
31
31
|
refreshState: RefreshState;
|
|
32
|
-
|
|
32
|
+
renderListEmptyComponent: () => React.ReactElement;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
|
|
@@ -52,7 +52,7 @@ export type SectionListRefreshProps = {
|
|
|
52
52
|
export type SwipeListViewRefreshProps = {
|
|
53
53
|
mode: 'SwipeList';
|
|
54
54
|
data: ItemT[];
|
|
55
|
-
} & IPropsSwipeListView<ItemT> & Partial<CommonProps
|
|
55
|
+
} & IPropsSwipeListView<ItemT> & Partial<CommonProps> & FlatListProps<ItemT> ;
|
|
56
56
|
|
|
57
57
|
export type RefreshListProps = FlatListRefreshProps | SwipeListViewRefreshProps | SectionListRefreshProps
|
|
58
58
|
|