2021

2nd LIVE, 세컨드 라이브

COLLECTIVE ENVIRONMENT ACTION

[ 2021. 이타 프로젝트는 집단지성과 새로운 라이프스타일을 통한 환경미션의 대중화를 추구합니다. ]

210409_records_데이터셋

210409 8:00 1차

image-20210409084056660

 

<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>






우아~~~

21.04.09.09:00

 

 

update

위계

alljupsum - jupsum - jupnum

alljuptime - juptime 

alljupdis - jupdis

 

 

 


image-20210409235427669

함수 내부에서 var 를 안쓰면 글로벌 변수가 되어버린다. 

image-20210409235521494

 

 

ver 2

<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 array
let 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);
}