[ 2021. 이타 프로젝트는 집단지성과 새로운 라이프스타일을 통한 환경미션의 대중화를 추구합니다. ]
PROJECT
210409_records_데이터셋
<textarea spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea> xxxxxxxxxx <script> let catchpt; let catchpt_who; let catchpt_geo; let rundata; function fc_catchpt_geo(e) { return e.reduce(function (pre, value) { pre.push([value.lat, value.lng]); return pre; }, []); console.log("2done") } function runRecord(data) { let runArr = {}; for (var i = 0; i < data.length; i++) { d = data[i]; // var jupsum = d.reduce(function (pre, value) { // return pre + Number(value.numb); // }, 0); // if (!runArr[d["who"]]) { if (runArr[d.who] === undefined) { runArr[d.who] = {}; } if (runArr[d.who][d.clearnum] === undefined) { runArr[d.who][d.clearnum] = []; } if (runArr[d.who][d.clearnum].run === undefined) { runArr[d.who][d.clearnum].run = []; } runArr[d.who][d.clearnum].run.push({ "clearnum": d.clearnum, "types": d.types, "jupnum": d.numb, "routes": [d.lat, d.lng], "mTime": d.mTime, "mDate": d.mDate, "clock": d.clock, "event": d.event }) } for (key1 in runArr) { for (key2 in runArr[key1]) { var jupsum = 0; var dislap = 0; var startTime, EndTime; var runs = runArr[key1][key2].run for (var i = 0; i < runs.length; i++) { // runs.length = 5 0,1,2,3,4 jupsum += Number(runs[i].jupnum); startTime = FormatTime(runs[0].clock); endTime = FormatTime(runs[runs.length - 1].clock); lapTime = FormatTime(Number(runs[runs.length - 1].clock) - Number(runs[0].clock)); // console.log("loop", i) if (i > 0) { // console.log("dis_loop", i) dislap += Number(disGPS3(runs[i].routes[0], runs[i].routes[1], runs[i - 1].routes[0], runs[i - 1].routes[ 1])); // console.log("runs[i].routes,runs[i-1].routes------", dislap1, dislap2, dislap3) } // jupsum ////////////// // console.log("-----key2",jupsum, lapTime, dislap) } runArr[key1][key2].jupsum = jupsum runArr[key1][key2].startTime = startTime runArr[key1][key2].endTime = endTime runArr[key1][key2].lapTime = lapTime runArr[key1][key2].dislap = dislap console.log("key1------", key1) } } return runArr }; // general fuc function groupBy(xs, key) { return xs.reduce(function (rv, x) { var v = key instanceof Function ? key(x) : x[key]; (rv[v] = rv[v] || []).push(x); return rv; }, {}); }; ReadData_mclear_points() function ReadData_mclear_points() { $('.wrap-loading').show(); var data_read; //미리 함수에 data_read 로 변수를 두고, ajax 처리 후 success시 변수에 담아서 return 시키기 $.ajax({ url: "crud/read_mclear_JS.php", dataType: "json", async: false, success: function (data) { $('.wrap-loading').fadeOut(); catchpt = data; // console.log("초기 get obj arr 완료") // catchpt_who = groupBy(catchpt, 'who'); console.log("1. who로 정렬된 데이터 mclear셋 완료") // rundata = runRecord(catchpt); console.log("2. who로 정렬된 데이터 record셋 완료", rundata) // catchpt_geo = fc_catchpt_geo(catchpt); console.log("3.모든 포인트 > 맵에 사용 완료") naverMapping(catchpt_geo); }, error: function (e) { alert("값을 가져오지 못했습니다."); } }); // return data; } function cs(x) { console.log(x); } // original 외부 함수표현식으로 변수return 받음////////////////////////// // var catchpt = ReadData_mclear_points(); // var catchpt_who = groupBy(catchpt, 'who'); // var catchpt_geo = catchpt.reduce(function (pre, value) { // pre.push([value.lat, value.lng]); // return pre; // }, []); // console.log("catchpt", catchpt, catchpt_who, catchpt_geo)</script>
xxxxxxxxxx
<script>
let catchpt;
let catchpt_who;
let catchpt_geo;
let rundata;
function fc_catchpt_geo(e) {
return e.reduce(function (pre, value) {
pre.push([value.lat, value.lng]);
return pre;
}, []);
console.log("2done")
}
function runRecord(data) {
let runArr = {};
for (var i = 0; i < data.length; i++) {
d = data[i];
// var jupsum = d.reduce(function (pre, value) {
// return pre + Number(value.numb);
// }, 0);
// if (!runArr[d["who"]]) {
if (runArr[d.who] === undefined) {
runArr[d.who] = {};
if (runArr[d.who][d.clearnum] === undefined) {
runArr[d.who][d.clearnum] = [];
if (runArr[d.who][d.clearnum].run === undefined) {
runArr[d.who][d.clearnum].run = [];
runArr[d.who][d.clearnum].run.push({
"clearnum": d.clearnum,
"types": d.types,
"jupnum": d.numb,
"routes": [d.lat, d.lng],
"mTime": d.mTime,
"mDate": d.mDate,
"clock": d.clock,
"event": d.event
})
for (key1 in runArr) {
for (key2 in runArr[key1]) {
var jupsum = 0;
var dislap = 0;
var startTime, EndTime;
var runs = runArr[key1][key2].run
for (var i = 0; i < runs.length; i++) {
// runs.length = 5 0,1,2,3,4
jupsum += Number(runs[i].jupnum);
startTime = FormatTime(runs[0].clock);
endTime = FormatTime(runs[runs.length - 1].clock);
lapTime = FormatTime(Number(runs[runs.length - 1].clock) - Number(runs[0].clock));
// console.log("loop", i)
if (i > 0) {
// console.log("dis_loop", i)
dislap += Number(disGPS3(runs[i].routes[0], runs[i].routes[1], runs[i - 1].routes[0], runs[i - 1].routes[
1]));
// console.log("runs[i].routes,runs[i-1].routes------", dislap1, dislap2, dislap3)
// jupsum //////////////
// console.log("-----key2",jupsum, lapTime, dislap)
runArr[key1][key2].jupsum = jupsum
runArr[key1][key2].startTime = startTime
runArr[key1][key2].endTime = endTime
runArr[key1][key2].lapTime = lapTime
runArr[key1][key2].dislap = dislap
console.log("key1------", key1)
return runArr
};
// general fuc
function groupBy(xs, key) {
return xs.reduce(function (rv, x) {
var v = key instanceof Function ? key(x) : x[key];
(rv[v] = rv[v] || []).push(x);
return rv;
}, {});
ReadData_mclear_points()
function ReadData_mclear_points() {
$('.wrap-loading').show();
var data_read; //미리 함수에 data_read 로 변수를 두고, ajax 처리 후 success시 변수에 담아서 return 시키기
$.ajax({
url: "crud/read_mclear_JS.php",
dataType: "json",
async: false,
success: function (data) {
$('.wrap-loading').fadeOut();
catchpt = data; //
console.log("초기 get obj arr 완료") //
catchpt_who = groupBy(catchpt, 'who');
console.log("1. who로 정렬된 데이터 mclear셋 완료") //
rundata = runRecord(catchpt);
console.log("2. who로 정렬된 데이터 record셋 완료", rundata) //
catchpt_geo = fc_catchpt_geo(catchpt);
console.log("3.모든 포인트 > 맵에 사용 완료")
naverMapping(catchpt_geo);
},
error: function (e) {
alert("값을 가져오지 못했습니다.");
});
// return data;
function cs(x) {
console.log(x);
// original 외부 함수표현식으로 변수return 받음//////////////////////////
// var catchpt = ReadData_mclear_points();
// var catchpt_who = groupBy(catchpt, 'who');
// var catchpt_geo = catchpt.reduce(function (pre, value) {
// pre.push([value.lat, value.lng]);
// return pre;
// }, []);
// console.log("catchpt", catchpt, catchpt_who, catchpt_geo)
</script>
21.04.09.09:00
위계
alljupsum - jupsum - jupnum
alljuptime - juptime
alljupdis - jupdis
함수 내부에서 var 를 안쓰면 글로벌 변수가 되어버린다.
<textarea spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea> xxxxxxxxxx // plog Record data-fetching // 모든 store 개념의 글로벌 변수를 먼저 db fetch 한다. // ajax fetch 이후 success 내부에 함수형으로 프로세스를 실행한다. // global data store let catchpt; // plog 데이터 mclear db let catchpt_who; // who 정렬let catchpt_geo; // geo points arraylet rundata; // who-clearnum 정렬 function fc_catchpt_geo(e) { return e.reduce(function (pre, value) { pre.push([value.lat, value.lng]); return pre; }, []); // console.log("2done")} function runRecord(data) { let runArr = {}; for (var i = 0; i < data.length; i++) { d = data[i]; if (runArr[d.who] === undefined) { runArr[d.who] = {}; } if (runArr[d.who][d.clearnum] === undefined) { runArr[d.who][d.clearnum] = []; } if (runArr[d.who][d.clearnum].run === undefined) { runArr[d.who][d.clearnum].run = []; } if (runArr[d.who][d.clearnum].routes === undefined) { runArr[d.who][d.clearnum].routes = []; } // runArr[key1][key2].pics = pics; runArr[d.who][d.clearnum].routes.push([d.lat, d.lng]); runArr[d.who][d.clearnum].run.push({ "who": d.who, "clearnum": d.clearnum, "types": d.types, "jupnum": d.numb, "point": [d.lat, d.lng], "mTime": d.mTime, "mDate": d.mDate, "clock": d.clock, "event": d.event }) } for (key1 in runArr) { for (key2 in runArr[key1]) { var jupsum = 0; var dislap = 0; var starttime, endtime; var runs = runArr[key1][key2].run for (var i = 0; i < runs.length; i++) { // runs.length = 5 0,1,2,3,4 jupsum += Number(runs[i].jupnum); starttime = FormatTime(runs[0].clock); endtime = FormatTime(runs[runs.length - 1].clock); timelap = FormatTime(Number(runs[runs.length - 1].clock) - Number(runs[0].clock)); // console.log("loop", i) if (i > 0) { // console.log("dis_loop", i) dislap += Number(disGPS3(runs[i].point[0], runs[i].point[1], runs[i - 1].point[0], runs[i - 1].point[ 1])); // console.log("runs[i].point,runs[i-1].point------", dislap1, dislap2, dislap3) } // jupsum ////////////// // console.log("-----key2",jupsum, timelap, dislap) } runArr[key1][key2].jupsum = jupsum; runArr[key1][key2].starttime = starttime; runArr[key1][key2].endtime = endtime; runArr[key1][key2].timelap = timelap; runArr[key1][key2].dislap = dislap; console.log("key1------", key1) } } return runArr}; // general fuc function groupBy(xs, key) { return xs.reduce(function (rv, x) { var v = key instanceof Function ? key(x) : x[key]; (rv[v] = rv[v] || []).push(x); return rv; }, {});}; function ReadData_mclear_points() { $('.wrap-loading').show(); $.ajax({ url: "crud/read_mclear_JS.php", dataType: "json", async: false, success: function (data) { $('.wrap-loading').fadeOut(); catchpt = data; // console.log("초기 get obj arr 완료") // catchpt_who = groupBy(catchpt, 'who'); console.log("1. who로 정렬된 데이터 mclear셋 완료") // rundata = runRecord(catchpt); console.log("2. who로 정렬된 데이터 record셋 완료", rundata) stat_RecordBoard(rundata); console.log("0. 대쉬보드 메인 기록") recordGraph(catchpt_who[m_user]) console.log("r1. 오염물 분석 기록") catchpt_geo = fc_catchpt_geo(catchpt); console.log("3.모든 포인트 > 맵에 사용 완료") naverMapping(catchpt_geo); renderRecord(catchpt_who[m_user]) }, error: function (e) { alert("값을 가져오지 못했습니다."); } }); // return data;}function renderRecord(data) { if (data.length) { $('.jubtotal').text(data.length) } else { $('.jubtotal').text(0); } } $(document).ready(function () { ReadData_mclear_points(); }); function cs(x) { console.log(x);}
// plog Record data-fetching
// 모든 store 개념의 글로벌 변수를 먼저 db fetch 한다.
// ajax fetch 이후 success 내부에 함수형으로 프로세스를 실행한다.
// global data store
let catchpt; // plog 데이터 mclear db
let catchpt_who; // who 정렬
let catchpt_geo; // geo points array
let rundata; // who-clearnum 정렬
// console.log("2done")
if (runArr[d.who][d.clearnum].routes === undefined) {
runArr[d.who][d.clearnum].routes = [];
// runArr[key1][key2].pics = pics;
runArr[d.who][d.clearnum].routes.push([d.lat, d.lng]);
"who": d.who,
"point": [d.lat, d.lng],
var starttime, endtime;
starttime = FormatTime(runs[0].clock);
endtime = FormatTime(runs[runs.length - 1].clock);
timelap = FormatTime(Number(runs[runs.length - 1].clock) - Number(runs[0].clock));
dislap += Number(disGPS3(runs[i].point[0], runs[i].point[1], runs[i - 1].point[0], runs[i - 1].point[
// console.log("runs[i].point,runs[i-1].point------", dislap1, dislap2, dislap3)
// console.log("-----key2",jupsum, timelap, dislap)
runArr[key1][key2].jupsum = jupsum;
runArr[key1][key2].starttime = starttime;
runArr[key1][key2].endtime = endtime;
runArr[key1][key2].timelap = timelap;
runArr[key1][key2].dislap = dislap;
console.log("2. who로 정렬된 데이터 record셋 완료", rundata)
stat_RecordBoard(rundata);
console.log("0. 대쉬보드 메인 기록")
recordGraph(catchpt_who[m_user])
console.log("r1. 오염물 분석 기록")
renderRecord(catchpt_who[m_user])
function renderRecord(data) {
if (data.length) {
$('.jubtotal').text(data.length)
} else {
$('.jubtotal').text(0);
$(document).ready(function () {
ReadData_mclear_points();
210409_records_데이터셋
210409 8:00 1차
우아
~~~21.04.09.09:00
update
위계
alljupsum - jupsum - jupnum
alljuptime - juptime
alljupdis - jupdis
함수 내부에서 var 를 안쓰면 글로벌 변수가 되어버린다.
ver 2