조민지

ejs errrorrrrrr

......@@ -18,8 +18,8 @@ app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'code')));
app.use('/',express.static(path.join(__dirname, 'public')));
app.use('/',express.static(path.join(__dirname, 'code')));
app.use('/name/:name/birth',express.static(path.join(__dirname, 'public')));
app.use('/name/:name/birth',express.static(path.join(__dirname, 'code')));
......
......@@ -25,9 +25,9 @@
<style type="text/css">
body {
background-image: url('background.jpg');
/* background-image: url('background.jpg');
background-repeat: no-repeat;
background-size: cover;
background-size: cover; */
/* background: linear-gradient( to bottom, #fbc2eb, #a6c1ee ); */
}
......@@ -41,6 +41,11 @@
font-size: 20px;
font-family: 'Yeon Sung', cursive;
}
#banner {
position: absolute;
top: 0;
width: 100%;
}
#footer {
position: absolute;
bottom: 0;
......@@ -55,7 +60,9 @@
</head>
<body>
<div style="width:100%; text-align: center; margin-top:170px;">
<img src="./background.jpg" alt="" style="z-index:-1; min-width: 100%; min-height: 100%">
<div id="banner">
<div style="width:100%; text-align: center; padding-top:170px;">
<h1 style="font-size:90px;">당신이 지금 죽을 확률은?</h1>
</div>
<br><br><br>
......@@ -73,6 +80,8 @@
</form>
</div>
</div>
<div id="footer">오픈소스SW개발 조민지 강환석 배희수</div>
</body>
......

204 KB

<!-- <!DOCTYPE html>
<html>
<head>
<!-- font -->
<link href="https://fonts.googleapis.com/css?family=Nanum+Brush+Script&amp;subset=korean" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css?family=Yeon+Sung&amp;subset=korean" rel="stylesheet" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Highcharts Example</title>
<style type="text/css">
html {
margin: 0;
padding: 0;
}
body {
margin: 0;
padding: 0;
/* background: linear-gradient( to bottom, #65799B, rgb(38, 14, 41) ); */
/* background-color:#65799B; */
/* background-image: url("2.jpg");
background-repeat: no-repeat;
background-size: cover; */
}
#banner {
position: absolute;
top: 0;
width: 100%;
}
</style>
</head>
<body>
<script src="highcharts.js"></script>
<script src="modules/exporting.js"></script>
<script src="modules/export-data.js"></script>
<div id="banner">
<div id="container1" style="width:1260px; height: 400px; margin: 0 auto;"></div>
<div style="width:1275px; margin:0 auto;">
<div style="display: inline-block;">
<div id="container2" style="width:400px; height: 300px; padding:0; margin-left:0px;margin-right: 30px;"></div>
</div>
<div style="display: inline-block;">
<div id="container3" style="width:400px; height: 300px; padding:0; margin-left:0px;margin-right: 30px;"></div>
</div>
<div style="display: inline-block;">
<div id="container4" style="width:400px; height: 300px; padding:0; margin-left:0px;"></div>
</div>
</div>
<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
let client_data = {
birth: "<%=birth%>",
name: "<%=name%>"
}
var socket = io.connect('/', { transports: ['websocket'], upgrade: false });
socket.emit("connection", client_data);
socket.on("weatherInfo_minutely_send_to_client", (info) => { //서버에서 client에게 메세지 전송
console.log(info);
var date = new Date().getTime();
chart1.series[0].addPoint({
x: date,
y: info.death
});
chart2.series[0].addPoint({
x: date,
y: info.temperature
});
chart3.series[0].addPoint({
x: date,
y: info.wind
});
chart4.series[0].addPoint({
x: date,
y: info.rain
});
});
var chart1 = Highcharts.chart("container1", {
chart: {
type: "spline",
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
// events: {
// load: function () {
// // set up the updating of the chart each second
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = Math.random(); //여기에 새로 넣을 값
// series.addPoint({x:x,y:y,color:"#FFE08C"}, true, true);
// }, 1000); //1000=1초 -> 1분=60000
// }
// },
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
useUTC: false
},
title: {
text: "<%=name%>님의 실시간 사망 확률",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize:'32px'
}
},
xAxis: {
type: "datetime",
tickPixelInterval: 150,
labels: {
style: {
color: "white"
}
}
},
yAxis: {
title: {
text: "Value",
style: {
color: "white"
}
},
plotLines: [
{
value: 0,
width: 1,
color: "#808080"
}
],
labels: {
style: {
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 사망률 : {point.y:.2f}%"
},
legend: {
//enabled: false
layout: "vertical",
align: "left",
verticalAlign: "top",
x: 100,
y: 50,
floating: true,
borderWidth: 1,
backgroundColor:
(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
"#FFFFFF"
},
exporting: {
enabled: false
},
plotOptions: {
series: {
marker: {
radius: 6
}
}
},
series: [
{
name: "사망률",
data: (function () {
var deathArr = [],
time = new Date().getTime();
var length = <%=dataLen%>;
var i = -9; //얘는 시간계산용
var j = 0; //얘는 반복문용
for (; j < 10 - length; j++) {
deathArr.push({
x: time + i * 60000,
y: 0
})
i++;
}
<% probArr.forEach((probArr) => {%>
var temp;
temp = <%=probArr %>;
// for(;j<10;j++)
// {
// deathArr.push({
// x: time + i * 60000,
// y: temp
// })
// i++;
// }
deathArr.push({
x: time + i * 60000,
y: temp
})
i++;
<%}) %>
return deathArr;
})(),
color: "#FFFFFF"
}
]
});
var chart2 = Highcharts.chart("container2", {
chart: {
type: "spline",
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
// events: {
// load: function () {
// // set up the updating of the chart each second
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = Math.random(); //
// series.addPoint([x, y], true, true);
// }, 3000); //1000=1초
// }
// },
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
useUTC: false
},
title: {
text: "기온",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize:'25px'
}
},
xAxis: {
type: "datetime",
tickPixelInterval: 150,
labels: {
style: {
color: "white"
}
}
},
yAxis: {
title: {
text: "Value",
style: {
color: "white"
}
},
plotLines: [
{
value: 0,
width: 1,
color: "#808080"
}
],
labels: {
style: {
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 기온 : {point.y:.2f}도"
},
legend: {
//enabled: false
layout: "vertical",
align: "left",
verticalAlign: "top",
x: 100,
y: 50,
floating: true,
borderWidth: 1,
backgroundColor:
(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
"#FFFFFF"
},
exporting: {
enabled: false
},
series: [
{
name: "기온",
data: (function () {
var tempArr = [],
time = new Date().getTime();
var length = <%=dataLen%>;
var i = -9;
var j = 0;
for (j; j < 10 - length; j++) {
tempArr.push({
x: time + i * 60000,
y: 0
})
i++;
}
<% ptArr.forEach((ptArr) => {%>
var temp;
temp = <%=ptArr %>;
// for(j;j<10;j++)
// {
// tempArr.push({
// x: time + i * 60000,
// y: temp
// })
// i++;
// }
tempArr.push({
x: time + i * 60000,
y: temp
})
i++;
<%}) %>
return tempArr;
})(),
color: "#FFE08C"
}
]
});
var chart3 = Highcharts.chart("container3", {
chart: {
type: "spline",
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
// events: {
// load: function () {
// // set up the updating of the chart each second
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = Math.random(); //
// series.addPoint([x, y], true, true);
// }, 3000); //1000=1초
// }
// },
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
useUTC: false
},
title: {
text: "풍속",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize:'25px'
}
},
xAxis: {
type: "datetime",
tickPixelInterval: 150,
labels: {
style: {
color: "white"
}
}
},
yAxis: {
title: {
text: "Value",
style: {
color: "white"
}
},
plotLines: [
{
value: 0,
width: 1,
color: "#808080"
}
],
labels: {
style: {
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 풍속 : {point.y:.2f}m/s"
},
legend: {
//enabled: false
layout: "vertical",
align: "left",
verticalAlign: "top",
x: 100,
y: 50,
floating: true,
borderWidth: 1,
backgroundColor:
(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
"#FFFFFF"
},
exporting: {
enabled: false
},
series: [
{
name: "풍속",
data: (function () {
var windArr = [],
time = new Date().getTime();
var length = <%=dataLen%>;
var i = -9;
var j = 0;
for (j; j < 10 - length; j++) {
windArr.push({
x: time + i * 60000,
y: 0
})
i++;
}
<% wsArr.forEach((wsArr) => {%>
var temp;
temp = <%=wsArr %>;
// for(j;j<10;j++)
// {
// windArr.push({
// x: time + i * 60000,
// y: temp
// })
// i++;
// }
windArr.push({
x: time + i * 60000,
y: temp
})
i++;
<%}) %>
return windArr;
})(),
color: "#FFE08C"
}
] });
var chart4 = Highcharts.chart("container4", {
chart: {
type: "spline",
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
// events: {
// load: function () {
// // set up the updating of the chart each second
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = Math.random(); //
// series.addPoint([x, y], true, true);
// }, 3000); //1000=1초
// }
// },
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
useUTC: false
},
title: {
text: "강수량",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize:'25px'
}
},
xAxis: {
type: "datetime",
tickPixelInterval: 150,
labels: {
style: {
color: "white"
}
}
},
yAxis: {
title: {
text: "Value",
style: {
color: "white"
}
},
plotLines: [
{
value: 0,
width: 1,
color: "#808080"
}
],
labels: {
style: {
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 강수량 : {point.y:.2f}mm"
},
legend: {
//enabled: false
layout: "vertical",
align: "left",
verticalAlign: "top",
x: 100,
y: 50,
floating: true,
borderWidth: 1,
backgroundColor:
(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
"#FFFFFF"
},
exporting: {
enabled: false
},
series: [
{
name: "강수량",
data: (function () {
var rainArr = [],
time = new Date().getTime();
var length = <%=dataLen%>;
var i = -9;
var j = 0;
for (j; j < 10 - length; j++) {
rainArr.push({
x: time + i * 60000,
y: 0
})
i++;
}
<% rainArr.forEach((rainArr) => {%>
var temp;
temp = <%=rainArr %>;
// for(j;j<10;j++)
// {
// rainArr.push({
// x: time + i * 60000,
// y: temp
// })
// i++;
// }
rainArr.push({
x: time + i * 60000,
y: temp
})
i++;
<%}) %>
return rainArr;
})(),
color: "#FFE08C"
}
]
});
</script>
</div>
</body>
</html> -->
\ No newline at end of file
<!DOCTYPE html>
<!-- <!DOCTYPE html>
<html>
<head>
......@@ -11,13 +11,26 @@
<title>Highcharts Example</title>
<style type="text/css">
html {
margin: 0;
padding: 0;
}
body {
margin: 0;
padding: 0;
/* background: linear-gradient( to bottom, #65799B, rgb(38, 14, 41) ); */
/* background-color:#65799B; */
background-image: url("2.jpg");
/* background-image: url("2.jpg");
background-repeat: no-repeat;
background-size: cover;
background-size: cover; */
}
#banner {
position: absolute;
top: 0;
width: 100%;
}
</style>
</head>
......@@ -26,7 +39,10 @@
<script src="modules/exporting.js"></script>
<script src="modules/export-data.js"></script>
<div id="container1" style="width:1260px; height: 400px; margin: 0 auto"></div>
<img src="images/background.jpg" alt="" style="z-index:-1; min-width: 100%; min-height: 100%">
<div id="banner">
<div id="container1" style="width:1260px; height: 400px; margin: 0 auto;"></div>
<div style="width:1275px; margin:0 auto;">
<div style="display: inline-block;">
......@@ -41,49 +57,14 @@
</div>
</div>
<script src="/socket.io/socket.io.js"></script>
<script>
let client_data={
birth : "<%=birth%>",
name : "<%=name%>"
<script type="text/javascript">
let client_data = {
birth: "<%=birth%>",
name: "<%=name%>"
}
var socket = io.connect('/', { transports: ['websocket'], upgrade: false });
socket.emit("connection",client_data);
socket.on("weatherInfo_minutely_send_to_client", (info) => { //서버에서 client에게 메세지 전송
console.log(info);
var date = new Date().getTime();
chart1.series[0].addPoint({
x: date,
y: info.death,
color: "#FFE08C"
})
chart2.series[0].addPoint({
x: date,
y: info.temperature,
color: "#FFE08C"
})
chart3.series[0].addPoint({
x: date,
y: info.wind,
color: "#FFE08C"
})
chart4.series[0].addPoint({
x: date,
y: info.rain,
color: "#FFE08C"
})
});
</script>
<script type="text/javascript">
//사망률
var chart1 = Highcharts.chart("container1", {
chart: {
type: "spline",
......@@ -95,11 +76,13 @@
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = 0; //여기에 새로 넣을 값
// series.addPoint([x, y], true, true);
// }, 60000); //1000=1초 -> 1분=60000
// }
// y = Math.random(); //여기에 새로 넣을 값
// series.addPoint({x:x,y:y,color:"#FFE08C"}, true, true);
// }, 1000); //1000=1초 -> 1분=60000
// }
// },
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
......@@ -107,14 +90,13 @@
},
title: {
text: "<%=name%>님의 실시간 사망률",
text: "<%=name%>님의 실시간 사망률",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize: '32px'
fontSize:'32px'
}
},
xAxis: {
type: "datetime",
......@@ -124,7 +106,6 @@
color: "white"
}
}
},
yAxis: {
title: {
......@@ -133,6 +114,7 @@
color: "white"
}
},
plotLines: [
{
value: 0,
......@@ -145,6 +127,7 @@
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
......@@ -167,7 +150,7 @@
enabled: false
},
plotOptions: {
plotOptions: {
series: {
marker: {
radius: 6
......@@ -175,7 +158,6 @@
}
},
series: [
{
name: "사망률",
......@@ -220,8 +202,10 @@
color: "#FFFFFF"
}
]
});
//기온
var chart2 = Highcharts.chart("container2", {
chart: {
type: "spline",
......@@ -233,13 +217,13 @@
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = 0; //
// y = Math.random(); //
// series.addPoint([x, y], true, true);
// }, 60000); //1000=1초
// }
// }, 3000); //1000=1초
// }
backgroundColor: "rgba(255, 255, 255, 0.0)"
// },
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
......@@ -252,7 +236,7 @@
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize: '25px'
fontSize:'25px'
}
},
......@@ -284,10 +268,11 @@
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 사망률 : {point.y:.2f}%"
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 기온 : {point.y:.2f}도"
},
legend: {
//enabled: false
......@@ -350,7 +335,7 @@
}
]
});
//풍속
var chart3 = Highcharts.chart("container3", {
chart: {
type: "spline",
......@@ -362,13 +347,12 @@
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = 0; //
// y = Math.random(); //
// series.addPoint([x, y], true, true);
// }, 60000); //1000=1초
// }
// }, 3000); //1000=1초
// }
// },
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
......@@ -381,9 +365,8 @@
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize: '25px'
fontSize:'25px'
}
},
xAxis: {
type: "datetime",
......@@ -393,7 +376,6 @@
color: "white"
}
}
},
yAxis: {
title: {
......@@ -401,7 +383,6 @@
style: {
color: "white"
}
},
plotLines: [
{
......@@ -419,7 +400,7 @@
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 사망률 : {point.y:.2f}%"
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 풍속 : {point.y:.2f}m/s"
},
legend: {
//enabled: false
......@@ -480,9 +461,8 @@
color: "#FFE08C"
}
]
});
//강수량
] });
var chart4 = Highcharts.chart("container4", {
chart: {
type: "spline",
......@@ -494,13 +474,12 @@
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = 0; //
// y = Math.random(); //
// series.addPoint([x, y], true, true);
// }, 60000); //1000=1초
// }
// }, 3000); //1000=1초
// }
// },
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
......@@ -513,9 +492,8 @@
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize: '25px'
fontSize:'25px'
}
},
xAxis: {
type: "datetime",
......@@ -525,7 +503,6 @@
color: "white"
}
}
},
yAxis: {
title: {
......@@ -533,7 +510,6 @@
style: {
color: "white"
}
},
plotLines: [
{
......@@ -551,7 +527,7 @@
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 사망률 : {point.y:.2f}%"
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 강수량 : {point.y:.2f}mm"
},
legend: {
//enabled: false
......@@ -602,6 +578,7 @@
rainArr.push({
x: time + i * 60000,
y: temp
})
i++;
......@@ -613,8 +590,44 @@
}
]
});
var socket = io.connect('/', { transports: ['websocket'], upgrade: false });
socket.emit("connection", client_data);
socket.on("weatherInfo_minutely_send_to_client", (info) => { //서버에서 client에게 메세지 전송
console.log(info);
var date = new Date().getTime();
chart1.series[0].addPoint({
x: date,
y: info.death
});
console.log(chart1.series[0])
chart2.series[0].addPoint({
x: date,
y: info.temperature*1
});
console.log(chart2.series[0])
chart3.series[0].addPoint({
x: date,
y: info.wind*1
});
console.log(chart3.series[0])
chart4.series[0].addPoint({
x: date,
y: info.rain*1
});
console.log(chart4.series[0])
});
</script>
</div>
</body>
</html>
\ No newline at end of file
</html> -->
\ No newline at end of file
......
......@@ -6,9 +6,9 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<!-- font -->
<link href="https://fonts.googleapis.com/css?family=Nanum+Brush+Script&amp;subset=korean" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Yeon+Sung&amp;subset=korean" rel="stylesheet">
<!-- font -->
<link href="https://fonts.googleapis.com/css?family=Nanum+Brush+Script&amp;subset=korean" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Yeon+Sung&amp;subset=korean" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
......@@ -24,10 +24,19 @@
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<style type="text/css">
html,
{
margin: 0;
padding: 0;
}
body {
background-image: url('images/background.jpg');
margin: 0;
padding: 0;
/* background-image: url('background.jpg');
background-repeat: no-repeat;
background-size: cover;
background-size: cover; */
/* background: linear-gradient( to bottom, #fbc2eb, #a6c1ee ); */
}
......@@ -41,6 +50,13 @@
font-size: 20px;
font-family: 'Yeon Sung', cursive;
}
#banner {
position: absolute;
top: 0;
width: 100%;
}
#footer {
position: absolute;
bottom: 0;
......@@ -48,14 +64,16 @@
height: 50px;
text-align: center;
font-family: 'Yeon Sung', cursive;
color:white;
color: white;
}
</style>
</head>
<body>
<div style="width:100%; text-align: center; margin-top:170px;">
<img src="images/background.jpg" alt="" style="z-index:-1; min-width: 100%; min-height: 100%">
<div id="banner">
<div style="width:100%; text-align: center; padding-top:170px;">
<h1 style="font-size:90px;">당신이 지금 죽을 확률은?</h1>
</div>
<br><br><br>
......@@ -64,7 +82,7 @@
<div class="form-inline">
<label>이름</label>
<input type="text" name="name" class="form-control" placeholder="김철수" style="width:200px;">
&nbsp&nbsp&nbsp&nbsp
&nbsp &nbsp&nbsp&nbsp
<label>생년월일</label>
<input type="text" name="birth" class="form-control" placeholder="971009" style="width:200px;">
<br><br><br>
......@@ -73,6 +91,8 @@
</form>
</div>
</div>
<div id="footer">오픈소스SW개발 조민지 강환석 배희수</div>
</body>
......
<!DOCTYPE html>
<html>
<head>
<!-- font -->
<link href="https://fonts.googleapis.com/css?family=Nanum+Brush+Script&amp;subset=korean" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css?family=Yeon+Sung&amp;subset=korean" rel="stylesheet" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Highcharts Example</title>
<style type="text/css">
html {
margin: 0;
padding: 0;
}
body {
margin: 0;
padding: 0;
/* background: linear-gradient( to bottom, #65799B, rgb(38, 14, 41) ); */
/* background-color:#65799B; */
/* background-image: url("2.jpg");
background-repeat: no-repeat;
background-size: cover; */
}
#banner {
position: absolute;
top: 0;
width: 100%;
}
</style>
</head>
<body>
<script src="highcharts.js"></script>
<script src="modules/exporting.js"></script>
<script src="modules/export-data.js"></script>
<img src="images/background.jpg" alt="" style="z-index:-1; min-width: 100%; min-height: 100%">
<div id="banner">
<div id="container1" style="width:1260px; height: 400px; margin: 0 auto"></div>
<div style="width:1275px; margin:0 auto;">
<div style="display: inline-block;">
<div id="container2" style="width:400px; height: 300px; padding:0; margin-left:0px;margin-right: 30px;"></div>
</div>
<div style="display: inline-block;">
<div id="container3" style="width:400px; height: 300px; padding:0; margin-left:0px;margin-right: 30px;"></div>
</div>
<div style="display: inline-block;">
<div id="container4" style="width:400px; height: 300px; padding:0; margin-left:0px;"></div>
</div>
</div>
<script src="/socket.io/socket.io.js"></script>
<script>
let client_data = {
birth: "<%=birth%>",
name: "<%=name%>"
}
var socket = io.connect('/', { transports: ['websocket'], upgrade: false });
socket.emit("connection", client_data);
socket.on("weatherInfo_minutely_send_to_client", (info) => { //서버에서 client에게 메세지 전송
console.log(info);
var date = new Date().getTime();
chart1.series[0].addPoint({
x: date,
y: info.death,
color: "#FFE08C"
});
chart2.series[0] .addPoint({
x: date,
y: info.temperature,
color: "#FFE08C"
});
chart3.series[0].addPoint({
x: date,
y: info.wind,
color: "#FFE08C"
});
chart4.series[0].addPoint({
x: date,
y: info.rain,
color: "#FFE08C"
});
});
</script>
<script type="text/javascript">
//사망률
var chart1 = Highcharts.chart("container1", {
chart: {
type: "spline",
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
// events: {
// load: function () {
// // set up the updating of the chart each second
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = 0; //여기에 새로 넣을 값
// series.addPoint([x, y], true, true);
// }, 60000); //1000=1초 -> 1분=60000
// }
// }
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
useUTC: false
},
title: {
text: "<%=name%>님의 실시간 사망 확률",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize: '32px'
}
},
xAxis: {
type: "datetime",
tickPixelInterval: 150,
labels: {
style: {
color: "white"
}
}
},
yAxis: {
title: {
text: "Value",
style: {
color: "white"
}
},
plotLines: [
{
value: 0,
width: 1,
color: "#808080"
}
],
labels: {
style: {
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 사망률 : {point.y:.2f}%"
},
legend: {
//enabled: false
layout: "vertical",
align: "left",
verticalAlign: "top",
x: 100,
y: 50,
floating: true,
borderWidth: 1,
backgroundColor:
(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
"#FFFFFF"
},
exporting: {
enabled: false
},
plotOptions: {
series: {
marker: {
radius: 6
}
}
},
series: [
{
name: "사망률",
data: (function () {
var deathArr = [],
time = new Date().getTime();
var length = <%=dataLen%>;
var i = -9; //얘는 시간계산용
var j = 0; //얘는 반복문용
for (; j < 10 - length; j++) {
deathArr.push({
x: time + i * 60000,
y: 0
})
i++;
}
<% probArr.forEach((probArr) => {%>
var temp;
temp = <%=probArr %>;
// for(;j<10;j++)
// {
// deathArr.push({
// x: time + i * 60000,
// y: temp
// })
// i++;
// }
deathArr.push({
x: time + i * 60000,
y: temp
})
i++;
<%}) %>
return deathArr;
})(),
color: "#FFFFFF"
}
]
});
//기온
var chart2 = Highcharts.chart("container2", {
chart: {
type: "spline",
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
// events: {
// load: function () {
// // set up the updating of the chart each second
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = 0; //
// series.addPoint([x, y], true, true);
// }, 60000); //1000=1초
// }
// }
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
useUTC: false
},
title: {
text: "기온",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize: '25px'
}
},
xAxis: {
type: "datetime",
tickPixelInterval: 150,
labels: {
style: {
color: "white"
}
}
},
yAxis: {
title: {
text: "Value",
style: {
color: "white"
}
},
plotLines: [
{
value: 0,
width: 1,
color: "#808080"
}
],
labels: {
style: {
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 사망률 : {point.y:.2f}%"
},
legend: {
//enabled: false
layout: "vertical",
align: "left",
verticalAlign: "top",
x: 100,
y: 50,
floating: true,
borderWidth: 1,
backgroundColor:
(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
"#FFFFFF"
},
exporting: {
enabled: false
},
series: [
{
name: "기온",
data: (function () {
var tempArr = [],
time = new Date().getTime();
var length = <%=dataLen%>;
var i = -9;
var j = 0;
for (j; j < 10 - length; j++) {
tempArr.push({
x: time + i * 60000,
y: 0
})
i++;
}
<% ptArr.forEach((ptArr) => {%>
var temp;
temp = <%=ptArr %>;
// for(j;j<10;j++)
// {
// tempArr.push({
// x: time + i * 60000,
// y: temp
// })
// i++;
// }
tempArr.push({
x: time + i * 60000,
y: temp
})
i++;
<%}) %>
return tempArr;
})(),
color: "#FFE08C"
}
]
});
//풍속
var chart3 = Highcharts.chart("container3", {
chart: {
type: "spline",
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
// events: {
// load: function () {
// // set up the updating of the chart each second
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = 0; //
// series.addPoint([x, y], true, true);
// }, 60000); //1000=1초
// }
// }
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
useUTC: false
},
title: {
text: "풍속",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize: '25px'
}
},
xAxis: {
type: "datetime",
tickPixelInterval: 150,
labels: {
style: {
color: "white"
}
}
},
yAxis: {
title: {
text: "Value",
style: {
color: "white"
}
},
plotLines: [
{
value: 0,
width: 1,
color: "#808080"
}
],
labels: {
style: {
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 사망률 : {point.y:.2f}%"
},
legend: {
//enabled: false
layout: "vertical",
align: "left",
verticalAlign: "top",
x: 100,
y: 50,
floating: true,
borderWidth: 1,
backgroundColor:
(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
"#FFFFFF"
},
exporting: {
enabled: false
},
series: [
{
name: "풍속",
data: (function () {
var windArr = [],
time = new Date().getTime();
var length = <%=dataLen%>;
var i = -9;
var j = 0;
for (j; j < 10 - length; j++) {
windArr.push({
x: time + i * 60000,
y: 0
})
i++;
}
<% wsArr.forEach((wsArr) => {%>
var temp;
temp = <%=wsArr %>;
// for(j;j<10;j++)
// {
// windArr.push({
// x: time + i * 60000,
// y: temp
// })
// i++;
// }
windArr.push({
x: time + i * 60000,
y: temp
})
i++;
<%}) %>
return windArr;
})(),
color: "#FFE08C"
}
]
});
//강수량
var chart4 = Highcharts.chart("container4", {
chart: {
type: "spline",
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
// events: {
// load: function () {
// // set up the updating of the chart each second
// var series = this.series[0];
// setInterval(function () {
// var x = new Date().getTime(), // 현재 시간
// y = 0; //
// series.addPoint([x, y], true, true);
// }, 60000); //1000=1초
// }
// }
backgroundColor: "rgba(255, 255, 255, 0.0)"
},
time: {
useUTC: false
},
title: {
text: "강수량",
style: {
color: "#FFFFFF",
fontWeight: "bold",
fontFamily: 'Yeon Sung',
fontSize: '25px'
}
},
xAxis: {
type: "datetime",
tickPixelInterval: 150,
labels: {
style: {
color: "white"
}
}
},
yAxis: {
title: {
text: "Value",
style: {
color: "white"
}
},
plotLines: [
{
value: 0,
width: 1,
color: "#808080"
}
],
labels: {
style: {
color: "white"
}
}
},
tooltip: {
headerFormat: "<b>{series.name}</b><br/>",
pointFormat: "{point.x:%Y년%m월%d일 %H시%M분}<br/>의 사망률 : {point.y:.2f}%"
},
legend: {
//enabled: false
layout: "vertical",
align: "left",
verticalAlign: "top",
x: 100,
y: 50,
floating: true,
borderWidth: 1,
backgroundColor:
(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
"#FFFFFF"
},
exporting: {
enabled: false
},
series: [
{
name: "강수량",
data: (function () {
var rainArr = [],
time = new Date().getTime();
var length = <%=dataLen%>;
var i = -9;
var j = 0;
for (j; j < 10 - length; j++) {
rainArr.push({
x: time + i * 60000,
y: 0
})
i++;
}
<% rainArr.forEach((rainArr) => {%>
var temp;
temp = <%=rainArr %>;
// for(j;j<10;j++)
// {
// rainArr.push({
// x: time + i * 60000,
// y: temp
// })
// i++;
// }
rainArr.push({
x: time + i * 60000,
y: temp
})
i++;
<%}) %>
return rainArr;
})(),
color: "#FFE08C"
}
]
});
</script>
</div>
</body>
</html>
\ No newline at end of file