Toggle navigation
Toggle navigation
This project
Loading...
Sign in
mobile
/
YH_RNComponent
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
孙凯
8 years ago
Commit
4168a7f39346f72d8ad8a79bf064b58af210723b
1 parent
ff8537f0
添加 index ListView UI review by zhanglixia
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
133 additions
and
16 deletions
js/classify/components/brand/Brand.js
js/classify/components/brand/IndexListView.js
js/classify/reducers/brand/brandActions.js
js/classify/utils/Utils.js
js/classify/components/brand/Brand.js
View file @
4168a7f
...
...
@@ -22,7 +22,7 @@ import AllBrandListCell from './AllBrandListCell';
import
NewHotBannerListCell
from
'./NewHotBannerListCell'
;
import
BrandSearch
from
'./BrandSearch'
;
import
LoadingIndicator
from
'../../../common/components/LoadingIndicator'
;
import
IndexListView
from
'./IndexListView'
;
export
default
class
Brand
extends
Component
{
constructor
(
props
)
{
...
...
@@ -68,18 +68,18 @@ export default class Brand extends Component {
return
(
<
View
style
=
{
styles
.
header
}
>
<
TouchableOpacity
<
TouchableOpacity
activeOpacity
=
{
1
}
onPress
=
{()
=>
{
this
.
props
.
onPressSearch
&&
this
.
props
.
onPressSearch
();
// this.searchBar && this.searchBar.focus();
}}
>
<
YH_SearchBar
<
YH_SearchBar
ref
=
{(
c
)
=>
{
this
.
searchBar
=
c
;
}}
editable
=
{
false
}
editable
=
{
false
}
/
>
<
/TouchableOpacity
>
{
banner
?
<
BrandSwiper
resource
=
{
banner
}
onPressSlideItem
=
{
this
.
props
.
onPressSlideItem
}
/>:null
}
...
...
@@ -90,9 +90,13 @@ export default class Brand extends Component {
}
renderSectionHeader
(
sectionData
,
sectionID
)
{
let
title
=
sectionID
;
if
(
sectionID
==
'0-9'
)
{
title
=
'0'
;
}
return
(
<
View
style
=
{
styles
.
sessionTitle
}
>
<
Text
style
=
{
styles
.
sessionText
}
>
{
sectionID
}
<
/Text
>
<
Text
style
=
{
styles
.
sessionText
}
>
{
title
}
<
/Text
>
<
/View
>
);
}
...
...
@@ -166,7 +170,7 @@ export default class Brand extends Component {
return
(
<
View
style
=
{
styles
.
container
}
>
<
ChannelFliter
selectID
=
{
channelFliter
}
onChannelPressFliter
=
{
this
.
props
.
onChannelPressFliter
}
/
>
<
ListView
contentContainerStyle
=
{
contentContainerStyle
}
enableEmptySections
=
{
true
}
...
...
@@ -177,10 +181,13 @@ export default class Brand extends Component {
/
>
{
showSearch
?
<
BrandSearch
data
=
{
search
}
data
=
{
search
}
onTextChange
=
{
this
.
props
.
onTextChange
}
onClickCancel
=
{
this
.
props
.
onClickCancel
}
/> : null
}
<
IndexListView
dataSource
=
{
list
}
/
>
{
showSearch
?
<
BrandSearch
style
=
{
styles
.
search
}
data
=
{
search
}
/> : null
}
<
LoadingIndicator
isVisible
=
{
isFetching
}
/
>
...
...
@@ -220,4 +227,6 @@ let styles = StyleSheet.create({
width
,
backgroundColor
:
'#e5e5e5'
,
},
search
:
{
},
});
...
...
js/classify/components/brand/IndexListView.js
0 → 100644
View file @
4168a7f
'use strict'
;
import
React
from
'react'
;
import
ReactNative
from
'react-native'
;
import
{
isEmptyObject
}
from
'../../utils/Utils'
;
const
{
View
,
Image
,
Text
,
TouchableOpacity
,
Dimensions
,
StyleSheet
,
}
=
ReactNative
;
export
default
class
IndexListView
extends
React
.
Component
{
constructor
(
props
)
{
super
(
props
);
}
render
()
{
let
{
dataSource
}
=
this
.
props
;
if
(
isEmptyObject
(
dataSource
))
{
return
null
;
}
let
keyData
=
[];
for
(
var
k
in
dataSource
)
{
let
name
=
k
;
if
(
k
==
'0-9'
)
{
name
=
'0'
;
}
keyData
.
push
(
<
Text
style
=
{
styles
.
text
}
>
{
name
}
<
/Text>
)
;
}
return
(
<
View
style
=
{
styles
.
container
}
>
{
keyData
.
map
((
elem
,
index
)
=>
{
return
elem
;})}
<
/View
>
);
}
}
let
{
width
,
height
}
=
Dimensions
.
get
(
'window'
);
let
styles
=
StyleSheet
.
create
({
container
:
{
position
:
'absolute'
,
width
:
10
,
top
:
35
,
bottom
:
1
,
right
:
1
,
backgroundColor
:
'rgba(255,255,255,0.2)'
,
justifyContent
:
'center'
,
},
text
:
{
justifyContent
:
'center'
,
textAlign
:
'center'
,
fontSize
:
10
,
color
:
'black'
,
fontWeight
:
'bold'
,
backgroundColor
:
'transparent'
,
marginTop
:
2
,
}
});
...
...
js/classify/reducers/brand/brandActions.js
View file @
4168a7f
...
...
@@ -2,6 +2,7 @@
import
ReactNative
from
'react-native'
;
import
BrandService
from
'../../services/BrandService'
;
import
{
isEmptyObject
}
from
'../../utils/Utils'
;
const
{
SET_TYPE
,
...
...
@@ -167,14 +168,17 @@ export function getBrandList(channel) {
}
return
new
BrandService
(
app
.
host
).
getBrandList
(
channel
)
.
then
(
json
=>
{
let
payload
=
parseListResources
(
json
);
if
(
channel
==
0
)
{
dispatch
(
getBrandListForBoySuccess
(
json
));
dispatch
(
getBrandListForBoySuccess
(
payload
));
}
else
if
(
channel
==
1
)
{
dispatch
(
getBrandListForGirlSuccess
(
json
));
dispatch
(
getBrandListForGirlSuccess
(
payload
));
}
else
if
(
channel
==
2
)
{
dispatch
(
getBrandListForKidSuccess
(
json
));
dispatch
(
getBrandListForKidSuccess
(
payload
));
}
else
if
(
channel
==
3
)
{
dispatch
(
getBrandListForLifeStyleSuccess
(
json
));
dispatch
(
getBrandListForLifeStyleSuccess
(
payload
));
}
})
.
catch
(
error
=>
{
...
...
@@ -191,6 +195,36 @@ export function getBrandList(channel) {
};
}
export
function
parseListResources
(
json
)
{
let
all_list_old
=
json
.
all_list
;
let
hot_list
=
json
.
hot_list
;
let
new_list
=
json
.
new_list
;
if
(
isEmptyObject
(
all_list_old
))
{
return
json
;
}
let
reg
=
/^
[
a-zA-Z
]
*$/
;
let
all_list
=
{};
let
otherList
=
[];
for
(
let
k
in
all_list_old
)
{
if
(
reg
.
test
(
k
))
{
all_list
[
k
]
=
all_list_old
[
k
];
}
else
{
Array
.
prototype
.
push
.
apply
(
otherList
,
all_list_old
[
k
]);
}
}
all_list
[
'0-9'
]
=
otherList
;
return
{
all_list
,
hot_list
,
new_list
,
};
}
export
function
getBrandResourceForBoyRequest
()
{
return
{
type
:
GET_BRAND_RESOURCE_FOR_BOY_REQUEST
,
...
...
@@ -357,7 +391,7 @@ export function searchHistory() {
});
})
.
catch
(
error
=>
{
});
};
}
...
...
@@ -372,7 +406,7 @@ export function insertSearchHistory(keyword) {
});
})
.
catch
(
error
=>
{
});
};
}
...
...
@@ -387,7 +421,7 @@ export function clearSearchHistory() {
});
})
.
catch
(
error
=>
{
});
};
}
...
...
@@ -478,7 +512,7 @@ export function filteBrandForKeyword(text) {
let
{
app
,
brand
}
=
getState
();
let
{
search
}
=
brand
;
};
}
\ No newline at end of file
}
...
...
js/classify/utils/Utils.js
View file @
4168a7f
...
...
@@ -21,3 +21,10 @@ export function getSlicedUrl(src, width, height, mode = 1) {
}
return
newSrc
;
}
export
function
isEmptyObject
(
obj
)
{
for
(
var
key
in
obj
)
{
return
false
;
}
return
true
;
}
...
...
Please
register
or
login
to post a comment