├── .cache
└── 325c8f456729b912b0d2134054eb7448-dfeeb2271cc2857eb0a45a5003c8bbee
├── .eslintrc
├── .gitignore
├── .storybook
├── addons.js
└── config.js
├── .whitesource
├── LICENSE
├── NOTES.md
├── README.md
├── _visuales
├── EventPoints-logo.ai
├── bg.ai
├── colores.psd
├── desktop
│ ├── UI-EventPoints-lato.png
│ └── UI-EventPoints-lato.psd
├── iconos-svg
│ ├── icon-01.svg
│ ├── icon-02.svg
│ ├── icon-03.svg
│ ├── icon-04.svg
│ ├── icon-05.svg
│ ├── icon-06.svg
│ ├── icon-07.svg
│ ├── icon-08.svg
│ ├── icon-09.svg
│ ├── icon-10.svg
│ ├── icon-11.svg
│ ├── icon-12.svg
│ ├── icon-13.svg
│ ├── icon-14.svg
│ └── icon-15.svg
├── mobile
│ ├── UI-EventPoints-Mobile-screen1.png
│ ├── UI-EventPoints-Mobile-screen2.png
│ ├── UI-EventPoints-Mobile-v1.gif
│ ├── UI-EventPoints-Mobile-v3.gif
│ ├── UI-EventPoints-Mobile.gif
│ ├── UI-EventPoints-Mobile_01_INICIO.psd
│ └── UI-EventPoints-Mobile_02_DETALLE.psd
└── pin.ai
├── package-lock.json
├── package.json
├── public
└── index.html
└── src
├── App.css
├── App.js
├── App.scss
├── components
├── Action.js
├── Data.js
├── DateEvent.css
├── DateEvent.js
├── DateEvent.scss
├── Detail.js
├── DetailButton.css
├── DetailButton.js
├── DetailButton.scss
├── Details.js
├── Event.css
├── Event.js
├── Event.scss
├── Events.css
├── Events.js
├── Events.scss
├── Header.js
├── Map.js
├── Marker.js
├── Popup.js
├── Search.js
├── Social.js
└── Time.js
├── images
├── UI-EventPoints-lato.psd
└── svg
│ ├── chevron-thin-right.svg
│ ├── clock.svg
│ └── euro.svg
├── index.js
└── stories
└── index.js
/.cache/325c8f456729b912b0d2134054eb7448-dfeeb2271cc2857eb0a45a5003c8bbee:
--------------------------------------------------------------------------------
1 | {"value":{"success":true,"data":{"latest":{"version":"3.4.11","info":{"plain":"If you see this message in your terminal, please open a GitHub issue"}}},"time":1540631109052},"type":"Object"}
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "react-app"
3 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 | /.vscode/
3 | # dependencies
4 | /node_modules
5 |
6 | # testing
7 | /coverage
8 |
9 | # production
10 | /build
11 |
12 | # misc
13 | .DS_Store
14 | .env.local
15 | .env.development.local
16 | .env.test.local
17 | .env.production.local
18 |
19 | npm-debug.log*
20 | yarn-debug.log*
21 | yarn-error.log*
22 |
--------------------------------------------------------------------------------
/.storybook/addons.js:
--------------------------------------------------------------------------------
1 | import '@storybook/addon-actions/register';
2 | import '@storybook/addon-links/register';
3 |
--------------------------------------------------------------------------------
/.storybook/config.js:
--------------------------------------------------------------------------------
1 | import { configure } from '@storybook/react';
2 |
3 | function loadStories() {
4 | require('../src/stories');
5 | }
6 |
7 | configure(loadStories, module);
8 |
--------------------------------------------------------------------------------
/.whitesource:
--------------------------------------------------------------------------------
1 | {
2 | "generalSettings": {
3 | "shouldScanRepo": true
4 | },
5 | "checkRunSettings": {
6 | "vulnerableCheckRunConclusionLevel": "success"
7 | }
8 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Loreto Vaquero Fontenla
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/NOTES.md:
--------------------------------------------------------------------------------
1 | ```
2 | event-points
3 | ├── .gitignore
4 | ├── package.json
5 | ├── node_modules
6 | │ ├── react
7 | │ └── react-dom
8 | │ └── leaflet (para el mapa)
9 | │ └── axios (llamada a las APIS's)
10 | ├── public
11 | │ └── index.html
12 | └── src
13 | ├── images
14 | │ └── branding_images
15 | ├── services
16 | │ ├── APIsCalling.js
17 | ├── components
18 | │ └── a-component
19 | │ └── a-component.js
20 | │ └── a-component.scss
21 | │ └── a-component.css
22 | │ └── b-component
23 | │ └── b-component.js
24 | │ └── b-component.scss
25 | │ └── b-component.css
26 | │ └── c-component
27 | │ └── c-component.js
28 | │ └── c-component.scss
29 | │ └── c-component.css
30 | └── index.js
31 | ```
32 |
33 | ```
34 | index.js
35 | │
36 | App.js
37 | ├── Header.js
38 | ├── Seacher.js
39 | ├── Events.js
40 | │ ├── Event.js
41 | │ └── Date.js
42 | │ └── Time.js
43 | ├── Details.js
44 | │ ├──Detail.js
45 | │ ├──Action.js
46 | │ ├──Social.js
47 | ├── Map.js
48 | └── Marker.js
49 | └── Popup.js
50 | ```
51 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Guild EventPoints
4 | - El proyecto EventPoints va a centralizar en un calendario único todos los eventos tecnológicos de interés para OWS. El 'core business' del proyecto son una serie de scrappers en Python que se encargarán de recoger los eventos de interés de diferentes orígenes de datos. Posteriormente mostraremos dichos datos en un calendario con su geolocalización y demás ;)
5 | - Repositorios:
6 | - [Eventpoints-backend](https://github.com/OSWeekends/eventpoints-backend)
7 | - [Eventpoints-frontend](https://github.com/OSWeekends/EventPoints#start-app)
8 | - Tecnología: React + Python + [Goblin DB](http://goblindb.osweekends.com/)
9 | - Facilitador:
10 | - Ricardo García-Duarte (Slack:@RicardoGDM / GitHub:[@rgarciaduarte](https://github.com/rgarciaduarte))
11 | - Equipo activo & contribuidores:
12 | - Adel Zarrouk (Slack:@Adel / GitHub:[@eidal](https://github.com/eidal))
13 | - Alba Hernández (Slack:@Albita / GitHub:[@Albametnet](https://github.com/Albametnet))
14 | - Alvaro Linares 'Chamo' (Slack:@Alvaro 'Chamo' Linares Cabre / GitHub:[@alvarolinarescabre](https://github.com/alvarolinarescabre))
15 | - Anna Branco (Slack:@Anna / GitHub:[@annabranco](https://github.com/annabranco))
16 | - Antonio Sejas (Slack:@Sejas / GitHub:[@sejas](https://github.com/sejas))
17 | - Carlos Fernandez (Slack:@carlosfdez / GitHub:[@carlosfdev](https://github.com/carlosfdev))
18 | - Daniel García Jones (Slack:@DGJones / GitHub:[@danielgj](https://github.com/danielgj))
19 | - Gema De Rus (Slack:@gemaderus / GitHub:[@gemaderus](https://github.com/gemaderus))
20 | - Leyla Vieira (Slack:@leyla)
21 | - Loreto Vaquero (Slack:@lvaquero / GitHub:[@VaqueroFontenla](https://github.com/VaqueroFontenla))
22 | - Lucas Bernalte (Slack:@lucasbernalte / GitHub:[@lucbpz](https://github.com/lucbpz))
23 | - Rumi Aguirre (Slack: @Rumi Aguirre / GitHub: [Rumi-Aguirre](https://github.com/Rumi-Aguirre))
24 | - Sebastian Cabanas (Slack:@Sebastiancbvz)
25 | - Mentores:
26 | - Jorge Baumann (Slack:@jbaumann / GitHub:[@baumannzone](https://github.com/baumannzone))
27 | - Ricardo García-Duarte (Slack:@RicardoGDM / GitHub:[@rgarciaduarte](https://github.com/rgarciaduarte))
28 | - Theba Gomez (Slack:@KoolTheba / GitHub:[@KoolTheba](https://github.com/KoolTheba))
29 | - Ulises Gascon (Slack:@ulisesgascon / GitHub:[@UlisesGascon](https://github.com/UlisesGascon))
30 | - Canal de Slack: **#pr_eventpoints_new*
31 | - **Estado: Creando scrappers y primeros componentes de front. Primeros commits y puesta en marcha.**
32 |
33 |
34 | ## Start app
35 | npm start
36 |
37 | ## Start Storybook
38 | npm run storybook
39 |
40 | 
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/_visuales/EventPoints-logo.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/EventPoints-logo.ai
--------------------------------------------------------------------------------
/_visuales/bg.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/bg.ai
--------------------------------------------------------------------------------
/_visuales/colores.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/colores.psd
--------------------------------------------------------------------------------
/_visuales/desktop/UI-EventPoints-lato.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/desktop/UI-EventPoints-lato.png
--------------------------------------------------------------------------------
/_visuales/desktop/UI-EventPoints-lato.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/desktop/UI-EventPoints-lato.psd
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-01.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
33 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-02.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-03.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
38 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-04.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-05.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-06.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-07.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-08.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-09.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-10.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-11.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-12.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-13.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
21 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-14.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
--------------------------------------------------------------------------------
/_visuales/iconos-svg/icon-15.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
--------------------------------------------------------------------------------
/_visuales/mobile/UI-EventPoints-Mobile-screen1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/mobile/UI-EventPoints-Mobile-screen1.png
--------------------------------------------------------------------------------
/_visuales/mobile/UI-EventPoints-Mobile-screen2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/mobile/UI-EventPoints-Mobile-screen2.png
--------------------------------------------------------------------------------
/_visuales/mobile/UI-EventPoints-Mobile-v1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/mobile/UI-EventPoints-Mobile-v1.gif
--------------------------------------------------------------------------------
/_visuales/mobile/UI-EventPoints-Mobile-v3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/mobile/UI-EventPoints-Mobile-v3.gif
--------------------------------------------------------------------------------
/_visuales/mobile/UI-EventPoints-Mobile.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/mobile/UI-EventPoints-Mobile.gif
--------------------------------------------------------------------------------
/_visuales/mobile/UI-EventPoints-Mobile_01_INICIO.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/mobile/UI-EventPoints-Mobile_01_INICIO.psd
--------------------------------------------------------------------------------
/_visuales/mobile/UI-EventPoints-Mobile_02_DETALLE.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/mobile/UI-EventPoints-Mobile_02_DETALLE.psd
--------------------------------------------------------------------------------
/_visuales/pin.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/_visuales/pin.ai
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "eventpoints-frontend",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "lint-staged": "^7.3.0",
7 | "prettier": "^1.14.3",
8 | "react": "^16.5.2",
9 | "react-dom": "^16.5.2",
10 | "react-router-dom": "^4.3.1",
11 | "react-scripts": "2.0.4"
12 | },
13 | "eslintConfig": {
14 | "extends": "react-app"
15 | },
16 | "browserslist": [
17 | ">0.2%",
18 | "not dead",
19 | "not ie <= 11",
20 | "not op_mini all"
21 | ],
22 | "scripts": {
23 | "build-css": "node-sass-chokidar src/ -o src/",
24 | "watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive",
25 | "start-js": "react-scripts start",
26 | "start": "npm-run-all -p watch-css start-js",
27 | "build-js": "react-scripts build",
28 | "build": "npm-run-all build-css build-js",
29 | "test": "react-scripts test --env=jsdom",
30 | "eject": "react-scripts eject",
31 | "storybook": "start-storybook -p 9009 -s public",
32 | "build-storybook": "build-storybook -s public"
33 | },
34 | "devDependencies": {
35 | "@storybook/addon-actions": "^4.0.0-alpha.4",
36 | "@storybook/addon-links": "^4.0.0-alpha.4",
37 | "@storybook/addons": "^4.0.0-alpha.4",
38 | "@storybook/react": "^4.0.0-alpha.4",
39 | "husky": "^1.1.2",
40 | "node-sass-chokidar": "^1.3.4",
41 | "npm-run-all": "^4.1.3"
42 | },
43 | "husky": {
44 | "hooks": {
45 | "pre-commit": "lint-staged"
46 | }
47 | },
48 | "lint-staged": {
49 | "src/**/*.{js,jsx,json,css}": [
50 | "prettier --single-quote --write",
51 | "git add"
52 | ]
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Eventpoints
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | *, *:before, *:after {
2 | box-sizing: inherit; }
3 |
4 | html, body {
5 | height: 100%; }
6 |
7 | html {
8 | box-sizing: border-box;
9 | -webkit-font-smoothing: antialiased; }
10 |
11 | body {
12 | padding: 0;
13 | margin: 0;
14 | font-family: 'Lato', sans-serif; }
15 |
16 | ul {
17 | list-style: none;
18 | margin: 0;
19 | padding: 0; }
20 |
21 | p {
22 | margin: 0; }
23 |
24 | h1, h2, h3, h4 {
25 | margin: 0; }
26 |
27 | .TextIcon {
28 | display: flex;
29 | align-items: center; }
30 |
31 | .container {
32 | font-family: Montserrat; }
33 |
34 | .flex-grid {
35 | display: flex; }
36 |
37 | .col {
38 | flex: 1; }
39 |
40 | @media (max-width: 400px) {
41 | .flex-grid {
42 | display: block; } }
43 |
44 | .events {
45 | flex-direction: row;
46 | flex-wrap: nowrap; }
47 |
48 | li {
49 | list-style-type: none; }
50 |
--------------------------------------------------------------------------------
/src/App.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
3 |
4 | import Header from './components/Header';
5 | import Search from './components/Search';
6 | import Events from './components/Events';
7 | import Details from './components/Details';
8 | import Map from './components/Map';
9 | import './App.css';
10 |
11 | class App extends Component {
12 | render() {
13 | return (
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | );
22 | }
23 | }
24 | export default App;
25 |
--------------------------------------------------------------------------------
/src/App.scss:
--------------------------------------------------------------------------------
1 | *, *:before, *:after {
2 | box-sizing: inherit;
3 | }
4 |
5 | html, body {
6 | height: 100%;
7 | }
8 |
9 | html {
10 | box-sizing: border-box;
11 | -webkit-font-smoothing: antialiased;
12 | }
13 |
14 | body {
15 | padding: 0;
16 | margin: 0;
17 | font-family: 'Lato', sans-serif;
18 | }
19 |
20 | ul {
21 | list-style: none;
22 | margin: 0;
23 | padding: 0;
24 | }
25 |
26 | p {
27 | margin: 0;
28 | }
29 |
30 | h1, h2, h3, h4 {
31 | margin: 0;
32 | }
33 |
34 | .TextIcon {
35 | display: flex;
36 | align-items: center;
37 | }
38 | .container {
39 | font-family: Montserrat;
40 | }
41 |
42 | .flex-grid {
43 | display: flex;
44 | }
45 |
46 | .col {
47 | flex: 1;
48 | }
49 |
50 | @media (max-width: 400px) {
51 | .flex-grid {
52 | display: block;
53 | }
54 | }
55 |
56 | .events {
57 | flex-direction: row;
58 | flex-wrap: nowrap;
59 | }
60 | li { list-style-type: none; }
61 |
--------------------------------------------------------------------------------
/src/components/Action.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 |
3 |
4 | class Action extends Component {
5 | render() {
6 | return (
7 |
8 |
9 | );
10 | }
11 | }
12 |
13 | export default Action;
14 |
--------------------------------------------------------------------------------
/src/components/Data.js:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | id: 1234455,
4 | title: "The State of Spanish and European VC with Tech.eu and Novobrief",
5 | date: "27/02/2018",
6 | description: "Tech and Novobrief will share our new full-year data on venture capitall activity across Europe, with a focus on Spanin and our outlook for 2017",
7 | address: "c/ Moreno Nieto 2, 28005, Madrid",
8 | prices: "10 €",
9 | time: "18:00h"
10 | },
11 | {
12 | id: 2,
13 | title: "Data Sciencie",
14 | date: "27/02/2018",
15 | description: "Tech and Novobrief will share our new full-year data on venture capitall activity across Europe, with a focus on Spanin and our outlook for 2017",
16 | address: "c/ Moreno Nieto 2, 28005, Madrid",
17 | prices: "10 €",
18 | time: "18:00h"
19 | },
20 | {
21 | id: 3,
22 | title: "The Stateee of Spanish and European VC with Tech.eu and Novobrief",
23 | date: "27/02/2018",
24 | description: "Tech and Novobrief will share our new full-year data on venture capitall activity across Europe, with a focus on Spanin and our outlook for 2017",
25 | address: "c/ Moreno Nieto 2, 28005, Madrid",
26 | prices: "10 €",
27 | time: "18:00h"
28 | },
29 | {
30 | id: 4,
31 | title: "Amazing React",
32 | date: "27/02/2018",
33 | description: "Tech and Novobrief will share our new full-year data on venture capitall activity across Europe, with a focus on Spanin and our outlook for 2017",
34 | address: "c/ Moreno Nieto 2, 28005, Madrid",
35 | prices: "10 €",
36 | time: "18:00h"
37 | }
38 | ];
--------------------------------------------------------------------------------
/src/components/DateEvent.css:
--------------------------------------------------------------------------------
1 | .date-event {
2 | flex-direction: column;
3 | background-color: #a42551;
4 | color: white;
5 | font-weight: 300; }
6 |
7 | .width-200 {
8 | width: 200px; }
9 |
--------------------------------------------------------------------------------
/src/components/DateEvent.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import './DateEvent.css';
3 |
4 | class DateEvent extends Component {
5 | render() {
6 | const date = new Date(this.props.date);
7 | const weekDay = date
8 | .toLocaleString('es-es', { weekday: 'short' })
9 | .toUpperCase()
10 | .substr(0, 3);
11 | const monthDay = date.getDate();
12 | const month = date
13 | .toLocaleString('es-es', { month: 'short' })
14 | .toUpperCase()
15 | .substr(0, 3);
16 | return (
17 |
18 |
{weekDay}
19 |
{monthDay}
20 |
{month}
21 |
22 | );
23 | }
24 | }
25 |
26 | export default DateEvent;
27 |
--------------------------------------------------------------------------------
/src/components/DateEvent.scss:
--------------------------------------------------------------------------------
1 | .date-event {
2 | flex-direction: column;
3 | background-color: #a42551;
4 | color: white;
5 | font-weight: 300;
6 | }
7 | .width-200 {
8 | width: 200px;
9 | }
--------------------------------------------------------------------------------
/src/components/Detail.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 |
3 | class Detail extends Component {
4 | render() {
5 | return (
6 |
7 |
8 | );
9 | }
10 | }
11 |
12 | export default Detail;
13 |
--------------------------------------------------------------------------------
/src/components/DetailButton.css:
--------------------------------------------------------------------------------
1 | .ButtonDetail {
2 | background-color: #818181;
3 | color: #fff;
4 | text-transform: uppercase;
5 | border: 0;
6 | width: 50%;
7 | outline: none;
8 | display: flex;
9 | justify-content: center;
10 | align-items: center;
11 | font-size: 14px; }
12 | .ButtonDetail .icon {
13 | margin-left: 0.6rem;
14 | width: 1.2rem; }
15 |
16 | .ButtonDetail.isActive {
17 | background-color: #D20047; }
18 |
--------------------------------------------------------------------------------
/src/components/DetailButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './DetailButton.scss';
3 |
4 | const DetailButton = ({onClick, className = ''}) => {
5 | return (
6 |
11 | )
12 | }
13 |
14 | export default DetailButton;
15 |
--------------------------------------------------------------------------------
/src/components/DetailButton.scss:
--------------------------------------------------------------------------------
1 | .ButtonDetail {
2 | background-color: #818181;
3 | color: #fff;
4 | text-transform: uppercase;
5 | border: 0;
6 | width: 50%;
7 | outline: none;
8 | display: flex;
9 | justify-content: center;
10 | align-items: center;
11 | font-size: 14px;
12 |
13 | .icon {
14 | margin-left: 0.6rem;
15 | width: 1.2rem;
16 | }
17 | }
18 |
19 | .ButtonDetail.isActive {
20 | background-color: #D20047;
21 | }
--------------------------------------------------------------------------------
/src/components/Details.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import Detail from './Detail';
3 | import Action from './Action';
4 | import Social from './Social';
5 |
6 | class Details extends Component {
7 | render() {
8 | return (
9 |
14 | );
15 | }
16 | }
17 |
18 | export default Details;
19 |
--------------------------------------------------------------------------------
/src/components/Event.css:
--------------------------------------------------------------------------------
1 | .Event {
2 | background-color: #212121;
3 | padding-top: 1rem; }
4 | .Event .icon {
5 | display: block;
6 | fill: #C7C7C7;
7 | margin-right: 0.3rem; }
8 |
9 | .EventTitle {
10 | color: #fff;
11 | padding: 0 1rem;
12 | margin-bottom: 0.5rem;
13 | text-transform: uppercase;
14 | font-size: 18px; }
15 |
16 | .EventDescription {
17 | color: #6B6B6B;
18 | padding: 0 1rem;
19 | font-size: 0.75rem;
20 | margin-bottom: 0.75rem; }
21 |
22 | .EventDetails {
23 | display: flex;
24 | justify-content: space-between; }
25 |
26 | .EventInfo {
27 | color: #C7C7C7;
28 | display: flex;
29 | align-items: center; }
30 |
31 | .EventInfo {
32 | display: flex;
33 | background-color: #5C5C5C;
34 | padding: 0.6rem 1rem;
35 | width: 50%; }
36 |
37 | .EventInfoItem {
38 | display: flex;
39 | align-items: center; }
40 | .EventInfoItem:first-child {
41 | margin-right: 0.5rem; }
42 | .EventInfoItem:first-child::after {
43 | content: '';
44 | display: inline-block;
45 | width: 1px;
46 | height: 10px;
47 | margin-left: 0.5rem;
48 | background-color: #C7C7C7; }
49 | .EventInfoItem .icon {
50 | width: 0.8rem; }
51 |
--------------------------------------------------------------------------------
/src/components/Event.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import DateEvent from './DateEvent';
3 | import Time from './Time';
4 | import DetailButton from './DetailButton';
5 | import './Event.scss';
6 | import '../images/svg/clock.svg';
7 | import '../images/svg/euro.svg';
8 |
9 | const Event = ({ event, onSelect, selected, color }) => {
10 | const css = selected ? 'Event is-selected' : 'Event';
11 |
12 | return (
13 |
14 | Date
15 | {event.title}
16 | {event.abstract}
17 |
18 |
19 | -
20 |
21 |
22 |
29 |
30 | 18:00
31 |
32 |
33 | -
34 |
35 |
36 |
44 |
45 | 10,00
46 |
47 |
48 |
49 |
{
51 | onSelect(event.id);
52 | }}
53 | />
54 |
55 |
56 | );
57 | };
58 |
59 | export default Event;
60 |
--------------------------------------------------------------------------------
/src/components/Event.scss:
--------------------------------------------------------------------------------
1 | .Event {
2 | background-color: #212121;
3 | padding-top: 1rem;
4 |
5 | .icon {
6 | display: block;
7 | fill: #C7C7C7;
8 | margin-right: 0.3rem;
9 | }
10 | }
11 |
12 | .EventTitle {
13 | color: #fff;
14 | padding: 0 1rem;
15 | margin-bottom: 0.5rem;
16 | text-transform: uppercase;
17 | font-size: 18px;
18 | }
19 |
20 | .EventDescription {
21 | color: #6B6B6B;
22 | padding: 0 1rem;
23 | font-size: 0.75rem;
24 | margin-bottom: 0.75rem;
25 | }
26 |
27 | .EventDetails {
28 | display: flex;
29 | justify-content: space-between;
30 | }
31 |
32 | .EventInfo {
33 | color: #C7C7C7;
34 | display: flex;
35 | align-items: center;
36 | }
37 |
38 | .EventInfo {
39 | display: flex;
40 | background-color: #5C5C5C;
41 | padding: 0.6rem 1rem;
42 | width: 50%;
43 | }
44 |
45 | .EventInfoItem {
46 | display: flex;
47 | align-items: center;
48 |
49 | &:first-child {
50 | margin-right: 0.5rem;
51 |
52 | &::after {
53 | content: '';
54 | display: inline-block;
55 | width: 1px;
56 | height: 10px;
57 | margin-left: 0.5rem;
58 | background-color: #C7C7C7;
59 | }
60 | }
61 |
62 | .icon {
63 | width: 0.8rem;
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/components/Events.css:
--------------------------------------------------------------------------------
1 | .Events {
2 | max-width: 380px;
3 | min-height: 100vh;
4 | background-color: #212121; }
5 |
--------------------------------------------------------------------------------
/src/components/Events.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import Event from './Event';
3 | import './Events.scss';
4 |
5 | class Events extends Component {
6 | constructor() {
7 | super();
8 |
9 | this.state = { load: 'loading', events: [] };
10 | this.requestEvents = this.requestEvents.bind(this);
11 |
12 | this.requestEvents();
13 | }
14 |
15 | async requestEvents() {
16 | const headers = new Headers();
17 | headers.set('Access-Control-Allow-Credentials', 'true');
18 | headers.set('Access-Control-Allow-Origin', '*');
19 | headers.set('Access-Control-Allow-Headers', '*');
20 | headers.set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, DELETE');
21 |
22 | const myInit = { headers: headers };
23 | try {
24 | const eventsResponse = await fetch(
25 | 'http://localhost:3000/api/v1/events',
26 | myInit
27 | );
28 | const events = await eventsResponse.json();
29 | this.setState({ events: events });
30 | } catch (e) {
31 | console.log(`Error while fetching: ${e}`);
32 | }
33 | }
34 |
35 | state = {
36 | current: null
37 | };
38 |
39 | onSelect = eventID => {
40 | this.setState({
41 | current: eventID
42 | });
43 | };
44 |
45 | render() {
46 | const data = this.state.events || [];
47 | const { current } = this.state;
48 | const colores = ['red', 'green', 'yellow', '#fabada', 'purple'];
49 |
50 | return (
51 |
52 | {data.map((event, index) => {
53 | const color = index % 5;
54 |
55 | const selected = event.id === current;
56 | return (
57 |
64 | );
65 | })}
66 |
67 | );
68 | }
69 | }
70 |
71 | export default Events;
72 |
--------------------------------------------------------------------------------
/src/components/Events.scss:
--------------------------------------------------------------------------------
1 | .Events {
2 | max-width: 380px;
3 | min-height: 100vh;
4 | background-color: #212121;
5 | }
--------------------------------------------------------------------------------
/src/components/Header.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 |
3 | class Header extends Component {
4 | render() {
5 | return HEADER
;
6 | }
7 | }
8 |
9 | export default Header;
10 |
--------------------------------------------------------------------------------
/src/components/Map.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import Marker from './Marker';
3 |
4 |
5 | class Map extends Component {
6 | render() {
7 | return (
8 |
9 |
10 |
11 | );
12 | }
13 | }
14 |
15 | export default Map;
16 |
--------------------------------------------------------------------------------
/src/components/Marker.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import Popup from './Popup';
3 |
4 |
5 | class Marker extends Component {
6 | render() {
7 | return (
8 |
9 |
10 | );
11 | }
12 | }
13 |
14 | export default Marker;
15 |
--------------------------------------------------------------------------------
/src/components/Popup.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 |
3 |
4 | class Popup extends Component {
5 | render() {
6 | return (
7 |
8 |
9 | );
10 | }
11 | }
12 |
13 | export default Popup;
14 |
--------------------------------------------------------------------------------
/src/components/Search.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 |
3 |
4 | class Search extends Component {
5 | render() {
6 | return (
7 |
8 |
9 | );
10 | }
11 | }
12 |
13 | export default Search;
14 |
--------------------------------------------------------------------------------
/src/components/Social.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 |
3 |
4 | class Social extends Component {
5 | render() {
6 | return (
7 |
8 |
9 | );
10 | }
11 | }
12 |
13 | export default Social;
14 |
--------------------------------------------------------------------------------
/src/components/Time.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 |
3 |
4 | class Time extends Component {
5 | render() {
6 | return (
7 |
8 |
9 | );
10 | }
11 | }
12 |
13 | export default Time;
14 |
--------------------------------------------------------------------------------
/src/images/UI-EventPoints-lato.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OSWeekends/EventPoints/2a075b2841fc2373e24ed2ea65ffde43a262c54c/src/images/UI-EventPoints-lato.psd
--------------------------------------------------------------------------------
/src/images/svg/chevron-thin-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/svg/clock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/images/svg/euro.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './App';
4 |
5 |
6 | ReactDOM.render(, document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/src/stories/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { storiesOf } from '@storybook/react';
4 | import { action } from '@storybook/addon-actions';
5 | import { linkTo } from '@storybook/addon-links';
6 |
7 | import { Button, Welcome } from '@storybook/react/demo';
8 | import Event from '../components/Event';
9 |
10 | const eventMock = {
11 | abstract:
12 | 'El email marketing es uno de los canales más potentes de adquisición de clientes. Por ello, TechHub lanza este Expert Talk con Clara Ávila, ...',
13 | abstract_details:
14 | 'El email marketing es uno de los canales más potentes de adquisición de clientes. Por ello, TechHub lanza este Expert Talk con Clara Ávila, responsable de contenido online en Save The Children, con experiencia en The Cocktail y autora del blog claraavilac. En él se profundizará en las distintas estrategias de marketing de contenidos y cómo obtener los mejores resultados.\n\nAgenda:- Email marketing - presente y futuro- Inbound marketing y categorías de contenido- Planificación de contenidos y automatización- Cómo preparar una campaña: contenidos del mensaje, prototipado- Cómo conseguir nuevos suscriptores- Analítica y KPIs- Best Practices',
15 | date: '2017-01-24T19:00:00Z',
16 | location: {
17 | lat: 40.41249699999999,
18 | lng: -3.7182264000000487,
19 | name: 'Campus Madrid',
20 | notes: 'Auditorium'
21 | },
22 | price: {
23 | details: 'estimado',
24 | isFree: true,
25 | isTrusted: false
26 | },
27 | source: {
28 | event_url:
29 | 'https://www.campus.co/madrid/en/events/ag1zfmd3ZWItY2FtcHVzcj8LEgZDYW1wdXMiBFJvb3QMCxIGQ2FtcHVzIgZtYWRyaWQMCxIFRXZlbnQiEmExOWowMDAwMDAxVHFhZUFBQww',
30 | logo:
31 | 'http://tetuanvalley.com/wp-content/uploads/2016/03/opengraph-768x403.jpg',
32 | name: 'Campus Madrid',
33 | url: 'http://campus.co/madrid'
34 | },
35 | target_url:
36 | 'https://www.techhub.com/events/improve-your-email-marketing-strategy-with-clara',
37 | title: 'Mejora tu estrategia de Email Marketing con Clara Ávila',
38 | id: 'b63ba480-f937-4ac2-8f16-46ce738a5231'
39 | };
40 |
41 | storiesOf('Welcome', module).add('to Storybook', () => (
42 |
43 | ));
44 |
45 | storiesOf('Button', module)
46 | .add('with text', () => (
47 |
48 | ))
49 | .add('with some emoji', () => (
50 |
55 | ));
56 |
57 | storiesOf('Event', module)
58 | .add('with no event', () => )
59 | .add('with event', () => );
60 |
--------------------------------------------------------------------------------