Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: developed contribution section in project page #173

Open
wants to merge 13 commits into
base: develop
Choose a base branch
from
Open
16,201 changes: 16,201 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions src/Components/Content/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import Projects from './../Projects';
import Home from './../Home';
import AboutUs from './../AboutUs';
import Contribute from '../Contribute';
import Events from '../Events';

function Content({ selected, titles }) {
if (selected === 0) {
Expand All @@ -12,6 +13,8 @@ function Content({ selected, titles }) {
return <AboutUs />;
} else if (selected === 3) {
return <Projects />;
} else if(selected === 4) {
return <Events />
}
if (selected === 5) {
return <Contribute />;
Expand Down
32 changes: 32 additions & 0 deletions src/Components/Events/Cards/CardBadge/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import React from 'react';
import {Text, Image, StyleSheet, View} from 'react-native';

const Badge = (props) => {
return (
<View style={styles.container}>
<Image style={styles.image} source={props.link} />
<Text style={styles.description}>{props.text}</Text>
</View>
);
};

const styles = StyleSheet.create({
container: {
flexDirection: 'row',
flexWrap: 'wrap',
marginTop: 16,
},
image: {
width: 32,
height: 32,
},
description: {
fontSize: 16,
color: '#103B81',
fontWeight: 200,
marginLeft: 16,
marginTop:8,
}
});

export default Badge;
68 changes: 68 additions & 0 deletions src/Components/Events/Cards/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import React from 'react';
import {Text, StyleSheet, View, Linking} from 'react-native';
import ScaledImage from '../../ScaledImage';
import { withCard } from './../../../Decorators/Card';
import Badge from './CardBadge';

const EventCard = ({ props, isOver }) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove isOver as it's not used anywhere

return (
<View style={styles.card} >
<ScaledImage width={286} source={props.highlights.source} />
<Text style={styles.title}>{props.title}</Text>
<Badge text={props.date} link={require('./../../../assets/events_and_highlights/calendar.png')} />
<Badge text={props.location} link={require('./../../../assets/events_and_highlights/location.png')} />
<Badge text={props.timings} link={require('./../../../assets/events_and_highlights/time.png')} />
<View style={{marginTop: 32}}>
{props.description.map((detail,index) => (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use index as key in the child when using map

<Text
style={{
color: '#103B81',
fontSize: 16,
fontWeight: '200'
}}
>
{detail.par}
</Text>
))}
</View>
<Text style={{
color: '#103B81',
fontSize: 16,
fontWeight: '400',
marginTop: 32,
}}
onPress={() => {Linking.openURL(props.know_more.link)}}
>
{props.know_more.par}
</Text>
</View>
);
};

const styles = StyleSheet.create({
card: {
flex: 1,
width: 286,
borderRadius: 4,
overflow: 'hidden',
},
cardContent: {
marginHorizontal: 18,
maeginVertical: 10
},
title: {
color: '#103B81',
fontWeight: '400',
fontSize: 16,
marginTop: 12,
},
desc: {
fontSize: 16,
color: '#103B81',
fontWeight: '200',
marginTop: 16,
},
})

export default withCard(EventCard);

59 changes: 59 additions & 0 deletions src/Components/Events/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import React from 'react';
import {View , StyleSheet, Text} from 'react-native';
import EventCard from './Cards';
import {getevents_highlights} from './../../content/events_and_highlights';
import SectionSubheader from './../SectionSubheader';

const events_highlight = getevents_highlights();

class Events extends React.Component {
render() {
return (
<View style={styles.container} >
<SectionSubheader
title={events_highlight.sections[0].title}
/>
{events_highlight.sections[0].content.map((detail,index) => {
return <Text style={styles.description} key={index}>{detail.par}</Text>;
})}
<View
style={{
flexDirection: 'row',
flexWrap: 'wrap',
marginTop: 30,
}}
>
{events_highlight.sections[1].events.map((event_detail,index) => (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove index as it's not being used anywhere

<EventCard
key={event_detail.title}
props={event_detail}
backgroundColor="#e7edfd"
padding={12}
/>
))}
</View>
</View>
);
}
}

const styles = StyleSheet.create({
container: {
width: '80%',
alignItems: 'left',
paddingLeft: 16,
paddingRight: 16,
marginTop: 30,
},
description: {
flex: 1,
marginTop: 20,
paddingLeft: 16,
fontSize: 18,
flexGrow: 1,
fontWeight: 150,
color: '#103B81',
textAlign: 'left',
}
});
export default Events;
44 changes: 44 additions & 0 deletions src/Components/Projects/Contribution/Box/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import React from 'react';
import { StyleSheet, View} from 'react-native';


const ContributionBox = ({ props,isOver }) => {
var hue = 0;
switch (true) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is dodgy i think simple if else would do here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done @annabauza please check it


case (props < 2):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can't we just use interpolation here?

hue = .4;
break;
case (props >=2 && props < 4):
hue = .6;
break;
case (props >=4 && props < 8):
hue = .7;
break;
case (props >=8 && props < 12):
hue = .9;
break;
case (props >=12 ):
hue = 1;
break;
default :
hue = 0;
break;
}
var colorCode = 'rgba(0, 113, 188,' + hue + ')';
return (
<View style={[style.box, {backgroundColor: colorCode}]}>

</View>
);
};

const style = StyleSheet.create({
box: {
width: 20,
height: 20,
margin: 2.5,
}
});

export default ContributionBox;
83 changes: 83 additions & 0 deletions src/Components/Projects/Contribution/ContributionRow.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
import ContributionBox from './Box';

class ContributionRow extends React.Component {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change class component to functional component (preferably arrow function).

I know both are same in terms of performance, but functional components are more concise and modern (and are used everywhere else). They don't have any disadvantages but may get optimized in future. Please refer https://www.twilio.com/blog/react-choose-functional-components for more information.

Do let me know if you face any trouble with functional components.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok i will use useEffect there and it will be done

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Bucky25 Are you saying about componentDidMount? If yes, there is a React hook called useEffect which you can use (refer to the link shared above)


constructor(props){
super(props);
this.state = {data: null}
}

componentDidMount(){
const endpoint = this.props.po.link;
const headers = {
"Authorization" : process.env.ACCESS_TOKEN
}
fetch(endpoint, {
"method" :"GET",
"headers" : headers
})
.then((resp) => resp.json())
.then((js) => this.setState({data: js}));
}

render() {
var Contributionrow = [];

const take = () =>{
Contributionrow.push(<Text style={styles.desc}>{this.props.po.name}</Text>);
var week = 0;
var days =0;
while (true) {
for (var i=6;i>=0;i--)
{
Contributionrow.push(
<ContributionBox props={this.state.data[51-week].days[i]} />
);
days++;
if(days>=30)break;
annabauza marked this conversation as resolved.
Show resolved Hide resolved
}
week++;
if(days>=30)break;
}
return null;
}

return (

<View>
{this.state.data === null ?
<Text style={styles.desc}>loading...</Text>
:
<View style={{
flexDirection: 'row',
flexWrap: 'wrap',
}}
>
{take()}
{Contributionrow}
</View>
}
</View>

);
}
};

const styles = StyleSheet.create({
desc: {
color: '#0071BC',
fontSize: 16,
fontWeight: '400',
width: 190,
margin:5,
},
box: {
flexDirection: 'row',
flexWrap: 'wrap',
marginTop: 10,
}
})

export default ContributionRow;
74 changes: 74 additions & 0 deletions src/Components/Projects/Contribution/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import React from 'react';
import { View, StyleSheet, Text } from 'react-native';
import SectionHeader from './../../SectionHeader';
import ContributionRow from './ContributionRow';
import ContributionBox from './Box';

const data = [
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move this to content folder please.

{
name : 'Anitab-org.github.io',
link : 'https://api.github.com/repos/anitab-org/anitab-org.github.io/stats/commit_activity',
},
{
name : 'Mentorship-backend',
link : 'https://api.github.com/repos/anitab-org/mentorship-backend/stats/commit_activity',
},
{
name : 'Mentorship-android',
link : 'https://api.github.com/repos/anitab-org/mentorship-android/stats/commit_activity',
},
{
name : 'Mentorship-ios',
link : 'https://api.github.com/repos/anitab-org/mentorship-ios/stats/commit_activity',
},
{
name : 'Portal',
link : 'https://api.github.com/repos/anitab-org/portal/stats/commit_activity',
},
{
name : 'Vms',
link : 'https://api.github.com/repos/anitab-org/vms/stats/commit_activity',
}
];

class Contribution extends React.Component {
render() {
return (
<View >
<SectionHeader title={'Last 30 Days Contribution'} />
<View style={{margin: 32}}>
{data.map((repo) => (
<ContributionRow po={repo} />
))
}
<View style={styles.description}>
<Text style={styles.text}>Less</Text>
<ContributionBox props={1} />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it will be good to rename it from props. The name is misleading.

<ContributionBox props={3} />
<ContributionBox props={6} />
<ContributionBox props={10} />
<ContributionBox props={13} />
<Text style={styles.text}>More</Text>
</View>
</View>
</View>
);
}
}

const styles = StyleSheet.create({
description: {
flexDirection: 'row',
flexWrap: 'wrap',
alignSelf: 'flex-end',
paddingRight: 480,
},
text: {
color: '#0071BC',
fontSize: 12,
fontWeight: '400',
padding: 5
},
});

export default Contribution;
4 changes: 2 additions & 2 deletions src/Components/Projects/ProjectCard/ProjectCardBadge/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ const styles = StyleSheet.create({
marginTop: 8,
},
image: {
width: 24,
height: 24,
width: 32,
height: 32,
},
title: {
color: '#103B81',
Expand Down
Loading