Commit c847f1af by JM Fantin

Merge branch 'revert-92434766' into 'master'

Revert "Merge branch 'acessoUsuario' into 'master'"

See merge request !44
2 parents 92434766 8996adb0
......@@ -2,9 +2,9 @@
"devToolsPort": 19002,
"expoServerPort": 19000,
"packagerPort": 19001,
"packagerPid": 16236,
"expoServerNgrokUrl": null,
"packagerNgrokUrl": null,
"ngrokPid": null,
"packagerPid": 8160,
"expoServerNgrokUrl": "https://xz-g8k.evote.rn-evote.exp.direct",
"packagerNgrokUrl": "https://packager.xz-g8k.evote.rn-evote.exp.direct",
"ngrokPid": 8220,
"webpackServerPort": null
}
\ No newline at end of file
......@@ -14,7 +14,6 @@ import AndamentoVotos from './src/screens/AndamentoVotos';
import Votacao from './src/screens/Votacao';
import Votar from './src/screens/Votar';
import Login from './src/screens/Login';
import { app } from 'firebase';
const AppNavigator = createStackNavigator(
{
......
......@@ -6829,10 +6829,6 @@
"prop-types": "^15.5.10"
}
},
"react-native-maps": {
"version": "github:expo/react-native-maps#e6f98ff7272e5d0a7fe974a41f28593af2d77bb2",
"from": "github:expo/react-native-maps#v0.22.1-exp.0"
},
"react-native-material-textfield": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/react-native-material-textfield/-/react-native-material-textfield-0.12.0.tgz",
......
......@@ -27,7 +27,16 @@ export default class CardSalaVotacao extends Component {
}
};
calculaDescricaoSala = (data, hora) => {
moment.updateLocale('pt-br');
let salaMoment = moment(`${data} ${hora}`, 'DD/MM/YYYY HH:mm')
return salaMoment.fromNow();
// return "daqui a pouco";
}
render() {
const { status, mensagem, titulo, onPress } = this.props;
......@@ -47,7 +56,7 @@ export default class CardSalaVotacao extends Component {
{titulo}
</Text>
<Text style={styles.subtitulo} numberOfLines={1} ellipsizeMode='tail'>
{mensagem}
{this.calculaDescricaoSala('23/05/2019', '19:00')}
</Text>
</View>
<Icon style={styles.icon}
......
import React, { Component } from 'react';
import { View, ScrollView, Dimensions, Text, FlatList } from 'react-native';
import { db } from '../config';
let salasRef = db.ref('salas/');
import BotaoNovaSala from '../components/BotaoNovaSala';
import React, { Component } from 'react';
import { View } from 'react-native';
import styles from '../styles/estilos';
import SemSalas from '../containers/SemSalas';
import CardSalaVotacao from '../components/CardSalaVotacao';
import Barra from '../components/Barra';
import BotaoAlternativa from '../components/BotaoAlternativa';
import moment from 'moment';
moment.defineLocale('pt-br', {
months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
},
calendar : {
sameDay: '[Hoje às] LT',
nextDay: '[Amanhã às] LT',
nextWeek: 'dddd [às] LT',
lastDay: '[Ontem às] LT',
lastWeek: function () {
return (this.day() === 0 || this.day() === 6) ?
'[Último] dddd [às] LT' : // Saturday + Sunday
'[Última] dddd [às] LT'; // Monday - Friday
},
sameElse: 'L'
},
relativeTime : {
future : 'em %s',
past : 'há %s',
s : 'poucos segundos',
ss : '%d segundos',
m : 'um minuto',
mm : '%d minutos',
h : 'uma hora',
hh : '%d horas',
d : 'um dia',
dd : '%d dias',
M : 'um mês',
MM : '%d meses',
y : 'um ano',
yy : '%d anos'
},
dayOfMonthOrdinalParse: /\d{1,2}º/,
ordinal : '%dº'
});
import SemSalas from '../containers/SemSalas';
import Barra from '../components/Barra'
class Historico extends Component {
constructor(props) {
......@@ -68,84 +16,36 @@ class Historico extends Component {
title: 'Histórico de Votações',
};
handleVisualizar = (item) => {
if (item)
this.props.navigation.navigate('Votacao', { 'sala': item });
handleVisualizar = (titulo) => {
if (titulo)
this.props.navigation.navigate('Andamento', { 'titulo': titulo });
else
this.props.navigation.navigate('Votacao', { 'sala': 'Não disponível' });
}
componentWillMount() {
salasRef.orderByChild("uid").on('value', snapshot => {
let salas = snapshot.val();
if (salas != null) {
salas = Object.values(salas);
this.setState(() => ({
salas
}))
}
});
}
getStatus = (dataFinal, dataInicial, horaFinal, horaInicial, informacaoExtra) => {
// fazer cálculo para retornar se está em andamento, encerrada ou se vai iniciar;
let firstMoment = moment(`${dataInicial} ${horaInicial}`, 'DD/MM/YYYY HH:mm');
let finalMoment = moment(`${dataFinal} ${horaFinal}`, 'DD/MM/YYYY HH:mm');
let nowMoment = moment();
if(firstMoment.diff(nowMoment)>0){
return informacaoExtra? `Disponível ${firstMoment.fromNow()}` : 'agendada';
}
if(finalMoment.diff(nowMoment)>=0){
return informacaoExtra? `Encerra ${finalMoment.fromNow()}` : 'andamento';
}
//console.log('enc');
return informacaoExtra? finalMoment.format('DD/MM/YYYY HH:mm') : 'encerrada';
this.props.navigation.navigate('Andamento', { 'titulo': 'Não disponível' });
}
render() {
const { salas, alternativas, selected } = this.state;
const { height } = Dimensions.get('screen');
return (
<View style={[styles.container, { height: height }]}>
<ScrollView style={{ maxHeight: height - 160, marginBottom: 5 }}>
<View>
{
salas.length > 0 ?
salas.map((item, index) =>
(this.getStatus(item.dataFinal,
item.dataInicial, item.horaFinal,
item.horaInicial, false))=='encerrada'?
<CardSalaVotacao
key={index}
onPress={() => this.handleVisualizar(item)}
status={this.getStatus(item.dataFinal,
item.dataInicial, item.horaFinal,
item.horaInicial)}
mensagem={this.getStatus(item.dataFinal,
item.dataInicial, item.horaFinal,
item.horaInicial, true)}
titulo={item.titulo}
/>:
null
)
:
<SemSalas
texto="Você não participou de votações prévias."
/>
}
</View>
</ScrollView>
<Barra
index={true}
onPress={() => this.props.navigation.navigate('Inicio')}
/>
<View style={styles.container}>
<View>
<CardSalaVotacao
key={1}
onPress = {() => this.handleVisualizar('Assembleia 1')}
status='encerrada'
mensagem='Votação do Sicredi'
titulo='Assembleia 1'
/>
<CardSalaVotacao
key={2}
onPress = {() => this.handleVisualizar('Assembleia 2')}
status='encerrada'
mensagem='Votação do Sicredi - centro'
titulo='Assembleia 2'
/>
</View>
<Barra
index = {true}
onPress={() => this.props.navigation.navigate('Inicio')} />
</View>
);
}
......
import React, { Component } from 'react';
import { View, ScrollView, Dimensions, Text, FlatList, AsyncStorage } from 'react-native';
import { View, ScrollView, Dimensions, Text, FlatList } from 'react-native';
import { db } from '../config';
let salasRef = db.ref('salas/');
import BotaoNovaSala from '../components/BotaoNovaSala';
......@@ -9,178 +9,136 @@ import CardSalaVotacao from '../components/CardSalaVotacao';
import Barra from '../components/Barra';
import BotaoAlternativa from '../components/BotaoAlternativa';
import moment from 'moment';
import AuthService from '../shared/AuthService';
moment.defineLocale('pt-br', {
months: 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D [de] MMMM [de] YYYY',
LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
},
calendar: {
sameDay: '[Hoje às] LT',
nextDay: '[Amanhã às] LT',
nextWeek: 'dddd [às] LT',
lastDay: '[Ontem às] LT',
lastWeek: function () {
return (this.day() === 0 || this.day() === 6) ?
'[Último] dddd [às] LT' : // Saturday + Sunday
'[Última] dddd [às] LT'; // Monday - Friday
},
sameElse: 'L'
calendar : {
sameDay: '[Hoje às] LT',
nextDay: '[Amanhã às] LT',
nextWeek: 'dddd [às] LT',
lastDay: '[Ontem às] LT',
lastWeek: function () {
return (this.day() === 0 || this.day() === 6) ?
'[Último] dddd [às] LT' : // Saturday + Sunday
'[Última] dddd [às] LT'; // Monday - Friday
},
sameElse: 'L'
},
relativeTime: {
future: 'em %s',
past: 'há %s',
s: 'poucos segundos',
ss: '%d segundos',
m: 'um minuto',
mm: '%d minutos',
h: 'uma hora',
hh: '%d horas',
d: 'um dia',
dd: '%d dias',
M: 'um mês',
MM: '%d meses',
y: 'um ano',
yy: '%d anos'
relativeTime : {
future : 'em %s',
past : 'há %s',
s : 'poucos segundos',
ss : '%d segundos',
m : 'um minuto',
mm : '%d minutos',
h : 'uma hora',
hh : '%d horas',
d : 'um dia',
dd : '%d dias',
M : 'um mês',
MM : '%d meses',
y : 'um ano',
yy : '%d anos'
},
dayOfMonthOrdinalParse: /\d{1,2}º/,
ordinal: '%dº'
ordinal : '%dº'
});
export default class Inicio extends Component {
constructor(props) {
super(props);
this.state = {
salas: [],
souAdm: false
alternativas: ['#00E576', 'BALALBLABLALBALLABLLBALALBLABLALBALLABLLBALALBLABLALBALLABLLBALALBLABLALBALLABLL', 'HAUHDASHDIASHDOA'],
selected: null
}
}
static navigationOptions = {
title: 'Votações disponíveis',
};
componentWillMount() {
salasRef.orderByChild("uid").on('value', snapshot => {
let salas = snapshot.val();
AsyncStorage.getItem('@UID').then(uid => {
if (salas != null) {
salas = Object.values(salas);
salas = salas.filter(sala => {
if(sala.adm_uid === uid){
return true;
}
if(sala.votantes){
return [...sala.votantes].filter(v => v.uid === uid).length;
}
});
this.setState(() => ({
salas, uid
}))
}
},
error => console.log('EEERROOOOU', error));
if (salas != null) {
salas = Object.values(salas);
this.setState(() => ({
salas
}))
}
});
}
getStatus = (dataFinal, dataInicial, horaFinal, horaInicial, informacaoExtra) => {
getStatus = (dataFinal, dataInicial, horaFinal, horaInicial) => {
// fazer cálculo para retornar se está em andamento, encerrada ou se vai iniciar;
this.testFunc();
let firstMoment = moment(`${dataInicial} ${horaInicial}`, 'DD/MM/YYYY HH:mm');
let finalMoment = moment(`${dataFinal} ${horaFinal}`, 'DD/MM/YYYY HH:mm');
let nowMoment = moment();
if (firstMoment.diff(nowMoment) > 0) {
let finalMoment = moment(`${dataFinal} ${horaFinal}`, 'DD/MM/YYYY HH:mm');
let nowMoment = moment();
return informacaoExtra ? `Disponível ${firstMoment.fromNow()}` : 'agendada';
if(firstMoment.diff(nowMoment)>0){
//console.log( 'ag');
return 'agendada';
}
if (finalMoment.diff(nowMoment) >= 0) {
return informacaoExtra ? `Encerra ${finalMoment.fromNow()}` : 'andamento';
if(finalMoment.diff(nowMoment)>=0){
//console.log( 'andam');
return 'andamento'
}
//console.log('enc');
return informacaoExtra ? finalMoment.format('DD/MM/YYYY HH:mm') : 'encerrada';
return 'encerrada';
}
handleVisualizar = (item) => {
const { uid } = this.state
if (item){
if(uid && item.adm_uid === uid){
return this.props.navigation.navigate('Andamento', { 'sala': item });
}
if (item)
this.props.navigation.navigate('Votacao', { 'sala': item });
} else {
else
this.props.navigation.navigate('Votacao', { 'sala': 'Não disponível' });
}
}
handleSelect = selected => {
this.setState({ selected });
}
testFunc = async () => {
// let res = await AsyncStorage.getItem('@UID');
}
getSalas = async () => {
}
getMinhasSalas = async salas => {
const uid = await AsyncStorage.get('@UID');
consol.log(uid)
return salas;
}
getDisponiveis = salas => {
return salas.map((item, index) => (
this.getStatus(item.dataFinal, item.dataInicial, item.horaFinal, item.horaInicial, false)
) != 'encerrada'
? <CardSalaVotacao
key={index}
onPress={() => this.handleVisualizar(item)}
status={this.getStatus(item.dataFinal,
item.dataInicial, item.horaFinal,
item.horaInicial)}
mensagem={this.getStatus(item.dataFinal,
item.dataInicial, item.horaFinal,
item.horaInicial, true)}
titulo={item.titulo}
/>
: null
)
}
render() {
const { salas, alternativas, selected } = this.state;
const { height } = Dimensions.get('screen');
// let x = await this.getMinhasSalas(salas);
return (
<View style={[styles.container, { height: height }]}>
<ScrollView style={{ maxHeight: height - 240, marginBottom: 5 }}>
<View>
{
salas.length > 0
? this.getDisponiveis(salas)
: <SemSalas texto={"No momento você não possui salas de votação disponíveis!"} />
salas.length > 0 ?
salas.map((item, index) =>
<CardSalaVotacao
key={index}
onPress={() => this.handleVisualizar(item)}
status={this.getStatus(item.dataFinal,
item.dataInicial, item.horaFinal,
item.horaInicial)}
mensagem={item.descricao}
titulo={item.titulo}
/>
)
:
<SemSalas
texto="No momento você não possui salas de votação disponíveis!"
/>
}
</View>
......@@ -197,4 +155,4 @@ export default class Inicio extends Component {
</View>
);
}
}
\ No newline at end of file
}
import React, { Component } from 'react';
import { View, Image, TextInput, TouchableOpacity,Text, StyleSheet, AsyncStorage } from 'react-native';
import { View, Image, TextInput, TouchableOpacity,Text, StyleSheet } from 'react-native';
import { auth } from '../config';
import InputEmail from '../components/InputEmail';
import InputSenha from '../components/InputSenha';
import styles from '../styles/estilos';
import AuthService from '../shared/AuthService';
export default class Login extends Component {
constructor(props) {
super(props)
this.state = {
salas: {},
email: 'dev@evote.com',
senha: '123456',
email: '',
senha: '',
errorMessage:''
}
}
......@@ -21,28 +20,14 @@ export default class Login extends Component {
const { email, senha } = this.state
auth
.signInWithEmailAndPassword(email, senha)
.then((data) => {
console.log(JSON.stringify(data));
// AuthService.setUID(data.user.uid).then(
AsyncStorage.setItem('@UID', data.user.uid).then(
() => this.props.navigation.navigate('Inicio')
)
//)
})
.catch(error => {
console.log(error);
this.setState({ errorMessage: 'E-mail ou senha incorretos.' })
})
.then((data) => this.props.navigation.navigate('Inicio'))
.catch(error => this.setState({ errorMessage: 'E-mail ou senha incorretos.' }))
}
static navigationOptions = {
title: 'Bem-vind@ ao eVote!',
};
static getUID = () => {
return AsyncStorage.getItem()
}
render(){
return(
<View style={styles.container}>
......@@ -54,16 +39,15 @@ export default class Login extends Component {
autoCorrect={false}
keyboardType='email-address'
returnKeyType="next"
label={'login'}
onChangeText={email => this.setState({ email })}
value={this.state.email}
placeholder='E-mail' />
<InputSenha
autoCorrect={false}
returnKeyType="go"
returnKeyType="go"
ref={(input)=> this.passwordInput = input}
placeholder='Senha'
label={'senha'}
onChangeText={senha => this.setState({ senha })}
value={this.state.senha}/>
......
import React, { Component } from 'react';
import { View, Text, ScrollView, AsyncStorage } from 'react-native';
import { View, Text, ScrollView } from 'react-native';
import Aviso from '../components/Aviso';
import BotaoAnterior from '../components/BotaoAnterior';
import BotaoProximo from '../components/BotaoProximo';
......@@ -40,13 +40,6 @@ export default class Sala extends Component {
headerLeft: null
};
componentWillMount(){
AsyncStorage.getItem('@UID').then(uid => {
this.setState({sala: {...this.state.sala, adm_uid: uid}});
},
error => console.log('EEERROOOOU', error));
}
horaInvalida = (hF,hI) => {
const { dataFinal, dataInicial } = this.state.sala;
if(dataFinal == dataInicial) {
......
import { AsyncStorage } from "react-native";
export class AuthService {
static setUID(uid) {
return AsyncStorage.setItem('@UID', uid);
}
static getUID() {
return AsyncStorage.getItem('@UID');
}
}
// export { AuthService }
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!