Skip to content

Commit 4981fea

Browse files
author
Goran Mekić
committed
Simplify layout
1 parent 92bb7e0 commit 4981fea

File tree

6 files changed

+111
-98
lines changed

6 files changed

+111
-98
lines changed

app/js/components/Calendar.jsx

+2-73
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,15 @@
11
var React = require('react');
2-
var Day = require('./Day.jsx')
32
var Menu = require('./Menu.jsx')
3+
var Title = require('./Title.jsx')
44
var Week = require('./Week.jsx')
55

66
var Calendar = React.createClass({
7-
getInitialState: function() {
8-
var current_date = new Date();
9-
var month_names = [
10-
'January',
11-
'February',
12-
'March',
13-
'April',
14-
'May',
15-
'June',
16-
'July',
17-
'August',
18-
'September',
19-
'October',
20-
'November',
21-
'December'
22-
];
23-
var current_month_number = current_date.getMonth();
24-
var current_month_name = month_names[current_month_number];
25-
var days_in_week = [
26-
{
27-
'name': 'Monday',
28-
'number': 1
29-
},
30-
{
31-
'name': 'Tuesday',
32-
'number': 2,
33-
},
34-
{
35-
'name': 'Wednesday',
36-
'number': 3,
37-
},
38-
{
39-
'name': 'Thursday',
40-
'number': 4,
41-
},
42-
{
43-
'name': 'Friday',
44-
'number': 5,
45-
},
46-
{
47-
'name': 'Saturday',
48-
'number': 6,
49-
},
50-
{
51-
'name': 'Sunday',
52-
'number': 0,
53-
}
54-
];
55-
return {
56-
days: days_in_week,
57-
current_month_name: current_month_name,
58-
current_month_number: current_month_number,
59-
};
60-
},
61-
62-
current_day_number: null,
63-
64-
componentWillMount: function() {
65-
this.current_day_number = new Date().getDay();
66-
},
67-
687
render: function() {
698
return (
709
<div className="calendar">
7110
<Menu/>
72-
{/* <h1>{this.state.current_month_name}</h1> */}
11+
<Title/>
7312
<Week/>
74-
{this.state.days.map((day) => {
75-
var classes = "u-1/7 text--center content-item";
76-
if (this.current_day_number === day.number) {
77-
classes += " current";
78-
}
79-
if (day.number === 6 || day.number === 0) {
80-
classes += " weekend"
81-
}
82-
return <Day day={day.name} classes={classes}/>
83-
})}
8413
</div>
8514
);
8615
}

app/js/components/Day.jsx

+27-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,34 @@
11
var React = require('react');
22

33
var Day = React.createClass({
4-
render() {
5-
return (
6-
<div className={this.props.classes}>
7-
{this.props.day}
8-
</div>
9-
);
4+
render() {
5+
var hours = [];
6+
for (var hour = 0; hour < 24; hour++) {
7+
realHour = hour;
8+
if (hour > 12) {
9+
realHour -= 12;
10+
}
11+
12+
if (hour > 11) {
13+
realHour = String(realHour) + 'pm';
14+
}
15+
else {
16+
realHour = String(realHour) + 'am';
17+
}
18+
hours.push(realHour);
1019
}
20+
return (
21+
<div className="u-1/7 day">
22+
<span className="u-6/7 day-name">{this.props.day}</span>
23+
<span className="u-1/7 day-of-month">{this.props.dayOfMonth}</span>
24+
{hours.map((hour) => {
25+
return(
26+
<div className="hour" title={hour}></div>
27+
);
28+
})}
29+
</div>
30+
);
31+
}
1132
});
1233

1334
module.exports = Day;

app/js/components/Title.jsx

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
var React = require('react');
2+
3+
var Title = React.createClass({
4+
render() {
5+
return (
6+
<div className="title">
7+
<div className="u-1/3 title--item title--previous">
8+
<a href="#">&lt;</a>
9+
</div>
10+
<div className="u-1/3 title--item title--data">
11+
<h3>September</h3>
12+
</div>
13+
<div className="u-1/3 title--item title--next">
14+
<a href="#">&gt;</a>
15+
</div>
16+
</div>
17+
);
18+
}
19+
});
20+
21+
module.exports = Title;

app/js/components/Week.jsx

+27-17
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,34 @@
11
var React = require('react');
2+
var Day = require('./Day.jsx');
23

34
var Week = React.createClass({
4-
render() {
5-
return (
6-
<div className="title">
7-
<div className="u-1/3 title--item title--previous">
8-
<a href="#">&lt;</a>
9-
<span className="text--small"><br/></span>
10-
</div>
11-
<div className="u-1/3 title--item title--data">
12-
<h3>September</h3> <br/>
13-
<span className="text--small">(11 - 17)</span>
14-
</div>
15-
<div className="u-1/3 title--item title--next">
16-
<a href="#">&gt;</a>
17-
<span className="text--small"><br/></span>
18-
</div>
19-
</div>
20-
);
5+
render() {
6+
var days = [];
7+
var day_names = [
8+
"Monday",
9+
"Tuesday",
10+
"Wednesday",
11+
"Thursday",
12+
"Friday",
13+
"Saturday",
14+
"Sunday"
15+
];
16+
for (var day = 1; day <= 7; day++) {
17+
days.push({
18+
dayOfMonth: day,
19+
day: day_names[day-1]
20+
});
2121
}
22+
return (
23+
<div className="content">
24+
{days.map((day) => {
25+
return (
26+
<Day dayOfMonth={day.dayOfMonth} day={day.day}/>
27+
);
28+
})}
29+
</div>
30+
);
31+
}
2232
});
2333

2434
module.exports = Week;

app/sass/_title.scss

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
background: #333;
44
background: linear-gradient(#333, #000);
55
line-height: 15px;
6-
height: 45px;
6+
height: 36px;
77
}
88

99
.title--item {

app/sass/style.scss

+33-1
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,43 @@
3737
@import "menu";
3838
@import "title";
3939

40+
html, body{
41+
height: 100%;
42+
}
43+
4044
body {
41-
background: #888;
45+
background: #aaa;
4246
background: linear-gradient(#aaa, #555);
4347
}
4448

4549
.text--small {
4650
font-size: 80%;
4751
}
52+
53+
.day {
54+
display: inline-block;
55+
text-align: center;
56+
border-right: 1px solid #444;
57+
}
58+
59+
.day:last-child {
60+
border-right: none;
61+
}
62+
63+
.day-name {
64+
height: 4%;
65+
display: inline-block;
66+
}
67+
68+
.content {
69+
height: calc(100vh - 36px - 36px);
70+
}
71+
72+
.hour {
73+
height: 4%;
74+
border-top: 1px solid #aaa;
75+
}
76+
77+
.day-of-month {
78+
font-size: 80%;
79+
}

0 commit comments

Comments
 (0)