{"id":1336,"date":"2021-11-28T11:33:18","date_gmt":"2021-11-28T02:33:18","guid":{"rendered":"https:\/\/sensor.krict.re.kr\/?p=1336"},"modified":"2023-05-02T23:35:49","modified_gmt":"2023-05-02T14:35:49","slug":"3%ec%84%b8%eb%8c%80-%ea%b3%84%ec%b8%a1%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/www.gassensor.kr\/?p=1336","title":{"rendered":"3\uc138\ub300 \uacc4\uce21\uae30"},"content":{"rendered":"<table>\n<tr>\n<th> \uad6c\ubd84 <\/th>\n<th>\uc885\ub958 <\/th>\n<th>\ub370\uc774\ud130 \uc120\ud0dd <\/th>\n<\/tr>\n<tr>\n<td rowspan=\"3\"> X \ucd95 <\/td>\n<td>\uce21\uc815\uc2dc\uac04<\/td>\n<td><span id=\"menuX_T\"><\/span><\/td>\n<\/tr>\n<tr>\n<td>Sensors<\/td>\n<td><span id=\"menuX_S\"><\/span><\/td>\n<\/tr>\n<tr>\n<td>Gas (sccm)<\/td>\n<td><span id=\"menuX_G\"><\/span><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\"> Y \ucd95 <\/td>\n<td>Sensors<\/td>\n<td><span id=\"menuY_S\"><\/span><\/td>\n<\/tr>\n<tr>\n<td>Gas (sccm)<\/td>\n<td><span id=\"menuY_G\"><\/span><\/td>\n<\/tr>\n<tr>\n<td rowspan=\"2\"> Y2 \ucd95 <\/td>\n<td>Sensors<\/td>\n<td><span id=\"menuY2_S\"><\/span><\/td>\n<\/tr>\n<tr>\n<td>Gas (sccm)<\/td>\n<td><span id=\"menuY2_G\"><\/span><\/td>\n<\/tr>\n<\/table>\n<p>\n<span id=\"dblist\"><\/span><button id=\"get_data\">\ub370\uc774\ud130 \uadf8\ub9ac\uae30<\/button>  <button id=\"download_data\">\ub370\uc774\ud130 \ub2e4\uc6b4\ub85c\ub4dc<\/button>    <button id=\"delete_data\">\uc0ad\uc81c\ud558\uae30<\/button><\/p>\n<div id=\"output\"><\/div>\n<div id=\"output_plot\"><\/div>\n<div id=\"id_show\"><\/div>\n<p><script src=\"https:\/\/cdn.plot.ly\/plotly-latest.min.js\"><\/script><br \/>\n<script>\njQuery(document).ready(function(){\n  var user_id = '';\n  if (user_id==='gassensor') {\n    jQuery(\"#delete_data\").show();\n  } else {\n    jQuery(\"#delete_data\").hide();\n  }\n  var json_timearray = [\n    { type: '\uce21\uc815\uc2dc\uac04', value: 'mt', checked: true }\n  ];\n  var json_sensorarray = [\n    { type:'MQ6', value: 'sensor1', checked: false }, \n    { type:'MQ7', value: 'sensor2', checked: false }, \n    { type:'MQ8', value: 'sensor3', checked: false }, \n    { type:'MQ9', value: 'sensor4', checked: false }, \n    { type:'SS2178', value: 'sensor5', checked: false },\n    { type:'SS2118', value: 'sensor6', checked: false },\n    { type:'SS2148', value: 'sensor7', checked: false },\n    { type:'SS21N8', value: 'sensor8', checked: false },\n    { type:'PID', value: 'sensor9', checked: false },\n    { type:'Temp', value: 'sensor10', checked: false }, \n    { type:'Humidity', value: 'sensor11', checked: false }\n  ];\n  var json_gasarray = [\n    { type:'Gas', value: 'gas1', checked: false }\n  ];\n  var optionX_T = optionXMenu(json_timearray,\"optionx\");\n  jQuery(\"#menuX_T\").html(optionX_T);\n  var optionX_S = optionXMenu(json_sensorarray,\"optionx\");\n  jQuery(\"#menuX_S\").html(optionX_S);\n  var optionX_G = optionXMenu(json_gasarray,\"optionx\");\n  jQuery(\"#menuX_G\").html(optionX_G);\n  json_sensorarray[0]['checked'] = true;\n  var optionY_S = checkXMenu(json_sensorarray,\"optiony\");\n  jQuery(\"#menuY_S\").html(optionY_S);\n  var optionY_G = checkXMenu(json_gasarray,\"optiony\");\n  jQuery(\"#menuY_G\").html(optionY_G);\n  json_sensorarray[0]['checked'] = false;\n  var optionY2_S = checkXMenu(json_sensorarray,\"optiony2\");\n  jQuery(\"#menuY2_S\").html(optionY2_S);\n  var optionY2_G = checkXMenu(json_gasarray,\"optiony2\");\n  jQuery(\"#menuY2_G\").html(optionY2_G);\n  jQuery.post(ajaxurl, {\n    action: 'ajax_action_connDW',\n    dbname: 'postgres',\n    tbname: 'measurement_krict_3rd_info',\n    schema: 'public',\n    query: 'SELECT * FROM public.measurements_krict_3rd_info ORDER BY did;',\n    params: ['']\n  }, function(res) {\n    var res_contents_json = JSON.parse(res);\n    jQuery(\"#dblist\").html(selectJsonMenu(res_contents_json,\"data_list\",0));\n    jQuery(\"#get_data\").click(function(){\n        var columnX = [];\n        var columnY = [];\n        var columnY2 = [];\n        var columns = []\n        jQuery('input:radio[name=\"optionx\"]').each(function() {\n            if(this.checked){\/\/checked \ucc98\ub9ac\ub41c \ud56d\ubaa9\uc758 \uac12\n                columnX.push(this.value);\n                columns.push(this.value);\n            }\n        });\n        jQuery('input:checkbox[name=\"optiony\"]').each(function() {\n            if(this.checked){\/\/checked \ucc98\ub9ac\ub41c \ud56d\ubaa9\uc758 \uac12\n                columnY.push(this.value); \n                columns.push(this.value);\n            }\n        });\n        jQuery('input:checkbox[name=\"optiony2\"]').each(function() {\n            if(this.checked){\/\/checked \ucc98\ub9ac\ub41c \ud56d\ubaa9\uc758 \uac12\n                columnY2.push(this.value); \n                columns.push(this.value);\n            }\n        });\n        var querycols = '';\n        for (var i=0; i < columns.length; i++) {\n            querycols += ' ' + columns[i] + ',';\n        }\n        querycols = querycols.substring(0,querycols.length-1)\n        var speed_index = parseInt(columns.length \/ 16.0 * 80);\n        jQuery(\"#output\").html(\"<b>Preparing for plotting the sensor data<\/b>\");\n        var choice = jQuery(\"#data_list\").val().toString();\n        var query_string = \"SELECT \" + querycols + \" FROM public.measurements_krict_3rd WHERE did = $1 AND mid % $2 = 0 ORDER BY mt ASC;\";\n            jQuery.post(ajaxurl, {\n                action: 'ajax_action_connDW',\n                dbname: 'postgres',\n                tbname: 'measurement_krict_3rd',\n                schema: 'public',\n                query: query_string,\n                params: [choice, speed_index]\n            }, function(data) {\n                var data_json = JSON.parse(data);\n                var data_arr = transpose(convert2array(data_json));\n                var traces = [];\n                for (var i = 1; i < columns.length ; i++) {\n                    var trace = {\n                        x: data_arr[0],\n                        y: data_arr[i],\n                        name: settingname(columns[i]),\n                        mode: 'lines'\n                    }\n                    if (columnY2.indexOf(columns[i])>=0) trace['yaxis'] = 'y2';\n                    console.log(trace);\n                    traces.push(trace);\n                }\n                var layout = {    \/\/ https:\/\/plotly.com\/javascript\/axes\/\n                    height: 500,\n                    xaxis: {\n                        title: settingname(columns[0])\n                    },\n                    yaxis: {\n                        title: 'Measured Values'\n                    },\n                    margin: { t: 50 } \n                };\n                if (columnY2.length>0) layout['yaxis2'] = { title: 'y2 axis values', overlaying:'y', side: 'right' };\n                console.log(layout);\n                Plotly.newPlot('output_plot', traces, layout);\n                jQuery(\"#output\").html(\"\");\n            });\n  });\n    jQuery(\"#download_data\").click(function(){\n        var columnX = [];\n        var columnY = [];\n        var columnY2 = [];\n        var columns = []\n        jQuery('input:radio[name=\"optionx\"]').each(function() {\n            if(this.checked){\/\/checked \ucc98\ub9ac\ub41c \ud56d\ubaa9\uc758 \uac12\n                columnX.push(this.value);\n                columns.push(this.value);\n            }\n        });\n        jQuery('input:checkbox[name=\"optiony\"]').each(function() {\n            if(this.checked){\/\/checked \ucc98\ub9ac\ub41c \ud56d\ubaa9\uc758 \uac12\n                columnY.push(this.value); \n                columns.push(this.value);\n            }\n        });\n        jQuery('input:checkbox[name=\"optiony2\"]').each(function() {\n            if(this.checked){\/\/checked \ucc98\ub9ac\ub41c \ud56d\ubaa9\uc758 \uac12\n                columnY2.push(this.value); \n                columns.push(this.value);\n            }\n        });\n        var querycols = '';\n        for (var i=0; i < columns.length; i++) {\n            querycols += ' ' + columns[i] + ',';\n        }\n        querycols = querycols.substring(0,querycols.length-1)\n        var speed_index = parseInt(columns.length \/ 16.0 * 80);\n        var filename = prompt(\"\uc800\uc7a5\ud560 \ud30c\uc77c\uba85\ub9cc \uc785\ub825\ud558\uc2ed\uc2dc\uc624. csv\ub294 \uc790\ub3d9\uc73c\ub85c \ubd99\uc2b5\ub2c8\ub2e4.\",\"graph\");\n        filename = filename + \".csv\";\n        jQuery(\"#output\").html(\"<b>Preparing for plotting the sensor data<\/b>\");\n        var choice = jQuery(\"#data_list\").val().toString();\n        console.log(choice);\n        console.log(speed_index);\n        var query_string = \"SELECT \" + querycols + \" FROM public.measurements_krict_3rd WHERE did = $1 AND mid % $2 = 0 ORDER BY mt ASC;\";\n            jQuery.post(ajaxurl, {\n                action: 'ajax_action_connDW',\n                dbname: 'postgres',\n                tbname: 'measurement_krict_3rd',\n                schema: 'public',\n                query: query_string,\n                params: [choice, speed_index]\n            }, function(data) {\n                var data_json = JSON.parse(data);\n                console.log(columns);\n                var data_arr = convert2array(data_json);\n                data_arr.unshift(columns);\n                jQuery(\"#output\").html(\"\");\n                exportToCsv(filename,data_arr);\n           });\n    });\n  });\n  jQuery(\"#delete_data\").click(function(){\n    var did_str = jQuery(\"#data_list\").val().toString();\n    if (confirm(\"\uc815\ub9d0\ub85c \ud574\ub2f9 \ub370\uc774\ud130\ub97c \uc0ad\uc81c\ud560\uae4c\uc694?\")) {\n      jQuery.post(ajaxurl, {\n        action: 'ajax_action_connDW',\n        dbname: 'postgres',\n        tbname: 'measurement_krict_3rd_info',\n        schema: 'public',\n        query: 'DELETE FROM public.measurements_krict_3rd_info WHERE did = $1;',\n        params: [did_str]\n      }, function(res) {\n        console.log(res);\n      });\n      jQuery.post(ajaxurl, {\n        action: 'ajax_action_connDW',\n        dbname: 'postgres',\n        tbname: 'measurement_krict_3rd',\n        schema: 'public',\n        query: 'DELETE FROM public.measurements_krict_3rd WHERE did = $1;',\n        params: [did_str]\n      }, function(res) {\n        console.log(res);\n      });  \n      location.reload();\n    }\n  });\n});\nfunction convert2array(data_json) { \n  var rows = [];\n  for (var i = 0; i < data_json.length; i++) {\n    var row = [];\n    for (key in data_json[i]) {\n      row.push(Number(data_json[i][key]));\n    }\n    rows.push(row);\n  }\n  return rows;\n}\nfunction transpose(matrix) {\n  const rows = matrix.length, cols = matrix[0].length;\n  const grid = [];\n  for (let j = 0; j < cols; j++) {\n    grid[j] = Array(rows);\n  }\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      grid[j][i] = matrix[i][j];\n    }\n  }\n  return grid;\n}\nfunction selectJsonMenu(json_array,id,init_index){\n  var menu = '<select id=\"' + id + '\">';\n  for (var i = 0; i < json_array.length; i++) {\n    if (i == init_index) {\n      menu += '<option value=\"' + json_array[i].did + '\" selected>' + json_array[i].did + ': ' + json_array[i].keyword + '<\/option>';\n    } else {\n      menu += '<option value=\"' + json_array[i].did + '\">' + json_array[i].did + ': ' + json_array[i].keyword + '<\/option>';\n    }\n  }\n  menu += '<\/select>';\n  return menu;\n}\nfunction optionXMenu(json_array, name){\n  var checkmenu = '';\n  for (var i = 0; i < json_array.length; i++) { \n    if (json_array[i].checked) {\n      checkmenu += '<input type=\"radio\" name=\"' + name + '\" value=\"' + json_array[i].value + '\" checked> &nbsp;' + json_array[i].type + '&nbsp;&nbsp;';\n    } else {\n      checkmenu += '<input type=\"radio\" name=\"' + name + '\" value=\"' + json_array[i].value + '\"> &nbsp;' + json_array[i].type + '&nbsp;&nbsp;';\n    }\n  }\n  return checkmenu;\n}\nfunction checkXMenu(json_array, name){\n  var checkmenu = '';\n  for (var i = 0; i < json_array.length; i++) {\n    if (json_array[i].checked) {\n      checkmenu += '<input type=\"checkbox\" name=\"' + name + '\" value=\"' + json_array[i].value + '\" checked> &nbsp;' + json_array[i].type + '&nbsp;&nbsp;';\n    } else {\n      checkmenu += '<input type=\"checkbox\" name=\"' + name + '\" value=\"' + json_array[i].value + '\"> &nbsp;' + json_array[i].type + '&nbsp;&nbsp;';\n    }\n  }\n  return checkmenu;\n}\nfunction settingname(name){\n  var colname = ['mt','sensor1','sensor2','sensor3','sensor4','sensor5','sensor6','sensor7','sensor8','sensor9','sensor10','sensor11','gas1'];\n  var names = ['Time(s)', 'MQ6','MQ7','MQ8','MQ9','SS2178','SS2118','SS2148','SS21N8','PID','RH','Gas 1'];\n  return names[colname.indexOf(name)];\n}\nfunction exportToCsv(filename, rows) {\n    var processRow = function (row) {\n        var finalVal = '';\n        for (var j = 0; j < row.length; j++) {\n            var innerValue = row[j] === null ? '' : row[j].toString();\n            if (row[j] instanceof Date) {\n                innerValue = row[j].toLocaleString();\n            };\n            var result = innerValue.replace(\/\"\/g, '\"\"');\n            if (result.search(\/(\"|,|\\n)\/g) >= 0)\n                result = '\"' + result + '\"';\n            if (j > 0)\n                finalVal += ',';\n            finalVal += result;\n        }\n        return finalVal + '\\n';\n    };\n    var csvFile = '';\n    for (var i = 0; i < rows.length; i++) {\n        csvFile += processRow(rows[i]);\n    }\n    var blob = new Blob([csvFile], { type: 'text\/csv;charset=utf-8;' });\n    if (navigator.msSaveBlob) { \/\/ IE 10+\n        navigator.msSaveBlob(blob, filename);\n    } else {\n        var link = document.createElement(\"a\");\n        if (link.download !== undefined) { \/\/ feature detection\n            \/\/ Browsers that support HTML5 download attribute\n            var url = URL.createObjectURL(blob);\n            link.setAttribute(\"href\", url);\n            link.setAttribute(\"download\", filename);\n            link.style.visibility = 'hidden';\n            document.body.appendChild(link);\n            link.click();\n            document.body.removeChild(link);\n        }\n    }\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p> [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"inline_featured_image":false},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=\/wp\/v2\/posts\/1336"}],"collection":[{"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1336"}],"version-history":[{"count":14,"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=\/wp\/v2\/posts\/1336\/revisions"}],"predecessor-version":[{"id":1794,"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=\/wp\/v2\/posts\/1336\/revisions\/1794"}],"wp:attachment":[{"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gassensor.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}