{"id":490,"date":"2016-07-14T14:16:01","date_gmt":"2016-07-14T05:16:01","guid":{"rendered":"https:\/\/fdada.info\/?page_id=490"},"modified":"2026-05-30T00:56:06","modified_gmt":"2026-05-29T15:56:06","slug":"graph_tool","status":"publish","type":"page","link":"https:\/\/fdada.info\/fdada\/home\/graph\/graph_tool\/","title":{"rendered":"<!--04-01-->\u30b0\u30e9\u30d5\u4f5c\u6210\u30c4\u30fc\u30eb"},"content":{"rendered":"<!-- category=graph lang=ja -->\r\n\r\n<!-- Ignite UI Required Combined CSS Files -->\r\n<link href=\"\/igniteui\/css\/themes\/metro\/infragistics.theme.css\" rel=\"stylesheet\" \/>\r\n<link href=\"\/igniteui\/css\/structure\/infragistics.css\" rel=\"stylesheet\" \/>\r\n<link href=\"\/igniteui\/css\/structure\/modules\/infragistics.ui.chart.css\" rel=\"stylesheet\" \/>\r\n\r\n<!-- JavaScript Library Dependencies -->\r\n<script src=\"https:\/\/ajax.aspnetcdn.com\/ajax\/modernizr\/modernizr-2.8.3.js\"><\/script>\r\n<script src=\"https:\/\/code.jquery.com\/jquery-1.9.1.min.js\"><\/script>\r\n<script src=\"https:\/\/code.jquery.com\/ui\/1.10.3\/jquery-ui.min.js\"><\/script>\r\n\r\n<!-- Ignite UI Required Combined JavaScript Files -->\r\n<script src=\"\/igniteui\/js\/infragistics.core.js\"><\/script>\r\n<script src=\"\/igniteui\/js\/infragistics.dv.js\"><\/script>\r\n<script src=\"\/igniteui\/js\/infragistics.lob.js\"><\/script>\r\n<script src=\"\/igniteui\/js\/demos\/js\/external\/FileSaver.js\"><\/script>\r\n\r\n<!-- HTML Goes Here -->\r\n\r\n<!-- igDataChart \u306b\u306f\u4ee5\u4e0b\u306e\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u304c\u5fc5\u8981\uff01\uff01 -->\r\n<style>\r\n.chart {\r\n\tposition: relative;\r\n\tfloat: left;\r\n\tmargin-right: 10px;\r\n}\r\n<\/style>\r\n\r\n<!-- \u305d\u306e\u4ed6\u30b9\u30bf\u30a4\u30eb -->\r\n<style>\r\n.box-label {\r\n\tcolor:#fff;\r\n\tbackground-color:darkblue;\r\n\tfont-size: 14px;\r\n\tpadding: 6px 0 7px 7px;\r\n}\r\n\r\ntable.graph {\r\n\tborder: 5px #fff solid;\r\n\ttable-layout: fixed;\r\n}\r\n\r\ntd.data-item {\r\n\tborder: 5px #fff solid;\r\n}\r\n\r\ninput.select-button {\r\n\twidth: 80px;\r\n\tfont-size: 14px;\r\n\tmargin-top: 5px;\r\n\tmargin-left: 20px;\r\n\tmargin-right: 20px;\r\n}\r\n\r\ninput.redraw-button {\r\n\twidth: 80px;\r\n\tmargin-top: 15px;\r\n\tmargin-left: 20px;\r\n\tmargin-right: 20px;\r\n\tfont-size: 14px;\r\n\tfont-weight: bold;\r\n\tpadding: 10px 10px;\r\n\tcolor: #fff;\r\n\tborder-style: none;\r\n\tborder-radius: 5px;\r\n\tbox-shadow: 2px 2px 3px 1px #666;\r\n\t-moz-box-shadow: 2px 2px 3px 1px #666;\r\n\t-webkit-box-shadow: 2px 2px 3px 1px #666;\r\n\ttext-shadow: 1px 1px 2px #000;\r\n\tbackground: -moz-linear-gradient(bottom, #36d, #248 50%, #36d);\r\n\tbackground: -webkit-gradient(linear, left bottom, left top, from(#36d), color-stop(0.5, #248), to(#36d));\r\n\t-moz-border-radius: 5px;\r\n\t-webkit-border-radius: 5px;\r\n}\r\ninput.redraw-button:hover {\r\n\topacity: 0.8;\r\n}\r\n\r\n.site-content ul > li.ui-igtree-node {\r\n\tbackground: none;\r\n\tmargin: 3px 0px 0px 0px;\r\n\tpadding: 6px 0px 0px 15px;\r\n\tline-height: 1.0em;\r\n\tclear: left; \r\n}\r\n\r\n.site-content ul > li {\r\n\tbackground: none;\r\n\tmargin: 0px;\r\n\tpadding: 0px;\r\n\tfloat: left;\r\n}\r\n\r\ndiv.leftbox {\r\n\tfloat: left;\r\n\ttext-align: left;\r\n}\r\n\r\ndiv.rightbox {\r\n\tfloat: right;\r\n\tmargin-right: 20px;\r\n}\r\n\r\ndiv.clear {\r\n\tclear: both;\r\n}\r\n\r\n.text-margin1 {\r\n\tmargin: 4px 3px 4px 3px;\r\n}\r\n\r\n#xStartDatePicker,\r\n#xEndDatePicker,\r\n#yMinText,\r\n#yMaxText {\r\n\tpadding: 0;\r\n\tmargin: 0;\r\n\ttext-align: right;\r\n}\r\n<\/style>\r\n\r\n<div class=\"leftbox\">\r\n\t<h3>\u4f7f\u3044\u65b9<\/h3>\r\n<\/div>\r\n<div class=\"rightbox\">\r\n\t<p align=\"right\"><a href=\"..\/graph_tool_usage\" target=\"_blank\"><font size=\"2\"><b>\u30d8\u30eb\u30d7<\/b><\/font><\/a><\/p>\r\n<\/div>\r\n<div class=\"clear\"><\/div>\r\n\r\n<ol>\r\n\t<li>\"\u30c7\u30fc\u30bf\u306e\u9078\u629e\"\u3088\u308a\u4e0b\u306b\u3042\u308b\u4e09\u89d2\u5f62\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c4\u30ea\u30fc\u30e1\u30cb\u30e5\u30fc\u3092\u5c55\u958b\u3057\u307e\u3059\u3002<\/li>\r\n\t<li>\u30b0\u30e9\u30d5\u63cf\u753b\u3057\u305f\u3044\u30c7\u30fc\u30bf\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u9078\u629e\u3057\u307e\u3059\u3002<\/li>\r\n\t<li>\u753b\u9762\u4e2d\u592e\u306e\u300c\u63cf\u753b\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u30b0\u30e9\u30d5\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/li>\r\n\t<li>\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3057\u305f\u3044\u5834\u5408\u306f\u3001\"\u30b0\u30e9\u30d5\u306b\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\"\u306e\u4e0b\u306b\u3042\u308b\u30c7\u30fc\u30bf\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3001\u518d\u5ea6\u3001\u300c\u63cf\u753b\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002<\/li>\r\n<\/ol>\r\n\r\n<span style=\"margin-left: 12px;\">\u203b\u300c\u6cbf\u5cb8\u90e8\u300d\u300c\u53d6\u6c34\u53e3\u4ed8\u8fd1\u300d\u300c\u6d77\u6c34\u300d\u300c\u5730\u4e0b\u6c34\u300d\u306e\u30c7\u30fc\u30bf\u66f4\u65b0\u3092\u4f11\u6b62\u3057\u3066\u3044\u307e\u3059\u3002 <\/span>\r\n\r\n<table class=\"graph\">\r\n\t<tr>\r\n\t\t<td width=\"360\" valign=\"top\" class=\"data-item\">\r\n\t\t\t<div class=\"box-label\">\u30c7\u30fc\u30bf\u306e\u9078\u629e<\/div>\r\n\t\t\t<!-- div style=\"width:360px; height:400px; overflow:scroll; overflow-x:hidden;\" -->\r\n\t\t\t<div style=\"background-color: #F5F5F5; min-width: 300px; max-height:360px; overflow-y:auto;\">\r\n\t\t\t\t<ul id=\"tree\" style=\"overflow:hidden;\"><\/ul>\r\n\t\t\t<\/div>\r\n\t\t\t<div>\r\n\t\t\t\t<input type=\"checkbox\" id=\"chkPartialData\" onClick=\"changeGraphData()\">\u4e8b\u6545\u5f8c3\u9031\u9593<\/input>\r\n\t\t\t<\/div>\r\n\t\t\t<br\/>\r\n\t\t\t<div style=\"margin: 0px 0px 0px 20px;\">\u6e29\u5ea6\u6e2c\u5b9a\u70b9\u306f<a href=\"http:\/\/www.tepco.co.jp\/nu\/fukushima-np\/f1\/pla\/2018\/images1\/figure-j.pdf\" target=\"_blank\">\u3053\u3061\u3089(TEPCO)<\/a><\/div>\r\n\t\t\t<div style=\"margin: 0px 0px 0px 20px;\">\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u30dd\u30b9\u30c8\u306f<a href=\"http:\/\/www.tepco.co.jp\/nu\/fukushima-np\/f1\/images\/2012monitoring\/f1_MP_L-j.gif\" target=\"_blank\">\u3053\u3061\u3089(TEPCO)<\/a><\/div>\r\n\t\t<\/td>\r\n\t\t<td valign=\"top\" class=\"data-item\">\r\n\t\t\t<div class=\"box-label\">\u64cd\u4f5c<\/div>\r\n\t\t\t<br\/>\r\n\t\t\t<input type=\"button\" class=\"select-button\" value=\"&gt;&gt;\" onClick=\"addRow()\"\/>\r\n\t\t\t<br\/>\r\n\t\t\t<input type=\"button\" class=\"select-button\" value=\"&lt;&lt;\" onClick=\"deleteRow()\"\/>\r\n\t\t\t<br\/>\r\n\t\t\t<input type=\"button\" class=\"redraw-button\" value=\"\u63cf\u753b\" onClick=\"redrawClicked()\"\/>\r\n\t\t\t<br\/>\r\n\t\t<\/td>\r\n\t\t<td valign=\"top\" class=\"data-item\">\r\n\t\t\t<div class=\"box-label\">\u30b0\u30e9\u30d5\u306b\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf<\/div>\r\n\t\t\t<div style=\" height:360px; overflow-y:auto;\">\r\n\t\t\t\t<table id=\"grid\"><\/table>\r\n\t\t\t<\/div>\r\n\t\t<\/td>\r\n\t<\/tr>\r\n\t<tr>\r\n\t\t<td colspan=\"3\" class=\"data-item\">\r\n\t\t\t<div class=\"box-label\">\u30b0\u30e9\u30d5<\/div>\r\n\t\t\t<div class=\"leftbox\" style=\"margin: 10px 2px 5px 10px;\">\r\n\t\t\t\t\u30c9\u30e9\u30c3\u30b0: \u7bc4\u56f2\u3092\u30ba\u30fc\u30e0\u3002Shift\uff0b\u30c9\u30e9\u30c3\u30b0: \u8868\u793a\u7bc4\u56f2\u3092\u79fb\u52d5\u3002\u53f3\u4e0a\u306e\u30ea\u30bb\u30c3\u30c8\u30dc\u30bf\u30f3\u304b\u3089\u30ea\u30bb\u30c3\u30c8\u53ef\u80fd\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"rightbox\" style=\"margin: 10px 2px 5px 10px;\">\r\n\t\t\t\t<button id=\"resetZoom\">\u30ea\u30bb\u30c3\u30c8<\/button>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"clear\"\/>\r\n\t\t\t<div id=\"chart\" class=\"chartContainer\"><\/div>\r\n\t\t\t<div id=\"zoom\"><\/div>\r\n\t\t<\/td>\r\n\t<\/tr>\r\n\t<tr>\r\n\t\t<td colspan=\"3\" class=\"data-item\">\r\n\t\t\t<div id=\"legend\" class=\"chartContainer\"><\/div>\r\n\t\t<\/td>\r\n\t<\/tr>\r\n\t<tr>\r\n\t\t<td colspan=\"3\">\r\n\t\t\t<div style=\"display:inline-flex;\">\r\n\t\t\t\t<input type=\"checkbox\" id=\"chkScatter\" onClick=\"changeSeriesType()\">\u6563\u5e03\u56f3<\/input>\r\n\t\t\t<\/div>\r\n\t\t<\/td>\r\n\t<\/tr>\r\n\t<tr>\r\n\t\t<td colspan=\"3\">\r\n\t\t\t<div style=\"display:inline-flex;\">\r\n\t\t\t\t<div class=\"text-margin1\">X\u8ef8&nbsp;&nbsp;<\/div>\r\n\t\t\t\t<input type=\"text\" id=\"xStartDatePicker\"\/><div class=\"text-margin1\">\u304b\u3089<\/div>\r\n\t\t\t\t<input type=\"text\" id=\"xEndDatePicker\"\/><div class=\"text-margin1\">\u307e\u3067<\/div> \r\n\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/td>\r\n\t<\/tr>\r\n\t<tr>\r\n\t\t<td colspan=\"3\">\r\n\t\t\t<div style=\"display:inline-flex;\">\r\n\t\t\t\t<div class=\"text-margin1\">Y\u8ef8&nbsp;&nbsp;<\/div>\r\n\t\t\t\t<input id=\"combo\" \/>&nbsp;&nbsp;\r\n\t\t\t\t<label for=\"yMinText\" class=\"text-margin1\">\u6700\u5c0f\u5024<\/label>\r\n\t\t\t\t<input type=\"text\" id=\"yMinText\" \/>\r\n\t\t\t\t<label for=\"yMaxText\" class=\"text-margin1\">\u6700\u5927\u5024<\/label>\r\n\t\t\t\t<input type=\"text\" id=\"yMaxText\"\/>&nbsp;&nbsp;\r\n\t\t\t\t<input type=\"checkbox\" id=\"chkLog\">\u5bfe\u6570\u8ef8<\/input>&nbsp;&nbsp;\r\n\t\t\t\t<input type=\"button\" onclick=\"setYMinMaxAxis()\" value=\"\u8a2d\u5b9a\"\/>&nbsp;\r\n\t\t\t\t<input type=\"button\" onclick=\"resetYAxisRange()\" value=\"\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3059\"\/>&nbsp;\r\n\t\t\t\t<div id=\"errorMessage\" style=\"color: red;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/td>\r\n\t<\/tr>\r\n\t<tr id=\"csv_tr\" style=\"\">\r\n\t\t<td colspan=\"3\">\r\n\t\t\t<div style=\"display:inline-flex;\">\r\n\t\t\t\t<input type=\"button\" onclick=\"handleDownload()\" value=\"CSV\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\"\/>\r\n\t\t\t<\/div>\r\n\t\t<\/td>\r\n\t<\/tr>\r\n\t<tr>\r\n\t\t<td colspan=\"3\">\r\n\t\t\t<div style=\"display:inline-flex;\">\r\n\t\t\t\t<input type=\"button\" value=\"\u753b\u50cf\u3068\u3057\u3066\u4fdd\u5b58\" onclick=\"ExportImage()\"\/>&nbsp;&nbsp;\r\n\t\t\t\t<input type=\"button\" value=\"\u30b0\u30e9\u30d5\u8a2d\u5b9a\u4fdd\u5b58\" onClick=\"saveAllAsCookies()\"\/>&nbsp;\r\n\t\t\t\t<input type=\"button\" value=\"\u30b0\u30e9\u30d5\u8a2d\u5b9a\u5fa9\u5143\" onClick=\"restoreAllByCookies()\"\/>\r\n\t\t\t<\/div>\r\n\t\t<\/td>\r\n\t<\/tr>\r\n<\/table>\r\n\r\n<script>\r\n\r\n\tvar wholeDataDir = \"\/data\/graph.260529\/\";\r\n\tvar partialDataDir = \"\/data\/graph.3weeks\/\";\r\n\tvar dataDir = wholeDataDir;\r\n\r\n\tvar downloadFlag = false; \/\/ CSV \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6a5f\u80fd\u306e\u30aa\u30f3\u30fb\u30aa\u30d5\r\n\tvar INDEX = 0;\r\n\tvar tableRows = [];\r\n\tvar prevTableRows = [];\r\n\tvar dataDef; \/\/ \u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u3057\u305f\r\n\tvar dupNum = {}; \/\/ \u30b0\u30e9\u30d5\u306e\u30b7\u30ea\u30fc\u30ba\u540d\u306b\u3064\u3051\u308b\"[1]\"\u306e\u3088\u3046\u306a\u6587\u5b57\u5217\r\n\tvar timelineDataSource = {};\r\n\tvar timeLine = [];\r\n\tvar prevJSONS = [];\r\n\tvar prevChkScatter = false;\r\n\tvar yAxisMinMax = {};\r\n\tvar nNewSeries = 0;\r\n\tvar bRecoveredByCookie = false;\r\n\tvar bSeriesChanged = false;\r\n\tvar bFirstRedraw = false;\r\n\tvar bDataDefUpdated = false;\r\n\r\n\t\/\/\/\r\n\t\/\/\/ Cookie\r\n\t\/\/\/\r\n\tfunction GetCookies() {\r\n\t\tvar result = {};\r\n\t\tvar allcookies = document.cookie;\r\n\t\tif ( allcookies != '' ) {\r\n\t\t\tvar cookies = allcookies.split( '; ' );\r\n\t\t\tfor( var i = 0; i < cookies.length; i++ ) {\r\n\t\t\t\tvar cookie = cookies[ i ].split( '=' );\r\n\t\t\t\t\/\/ \u30af\u30c3\u30ad\u30fc\u306e\u540d\u524d\u3092\u30ad\u30fc\u3068\u3057\u3066 \u914d\u5217\u306b\u8ffd\u52a0\u3059\u308b\r\n\t\t\t\tresult[ cookie[ 0 ] ] = decodeURIComponent( cookie[ 1 ] );\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction setCookieNameValue( cookieName, cookieValue ) {\r\n\t\tvar expire = new Date();\r\n\t\texpire.setTime( expire.getTime() + 1000 * 60 * 60 * 24 * 365 * 10 );\r\n\t\tvar expireStr = ' expires=' + expire.toUTCString();\r\n\t\t\/\/var expireStr = ' expires=Fri, 31 Dec 9999 23:59:59 GMT';\r\n\t\tvar cookieStr = cookieName + '=' + encodeURIComponent( cookieValue ) + ';' + expireStr;\r\n\t\tdocument.cookie = cookieStr;\r\n\t}\r\n\r\n\tfunction DeleteAllCookies() {\r\n\t\tvar cookies = GetCookies();\r\n\t\tvar date = new Date();\r\n\t\tdate.setTime( date.getTime() - 1 );\r\n\r\n\t\tvar patterns = [\r\n\t\t\tnew RegExp( \"ID\\\\d{3}\" ),\r\n\t\t\tnew RegExp( \"DataName\\\\d{3}\" ),\r\n\t\t\tnew RegExp( \"Category\\\\d{3}\" ),\r\n\t\t\tnew RegExp( \"Source\\\\d{3}\" ),\r\n\t\t\tnew RegExp( \"CsvSource\\\\d{3}\" ),\r\n\t\t\tnew RegExp( \"CsvFileName\\\\d{3}\" ),\r\n\t\t\tnew RegExp( \"yAxis\\\\d{1,2}\" ),\r\n\t\t\tnew RegExp( \"Left\" ),\r\n\t\t\tnew RegExp( \"Top\" ),\r\n\t\t\tnew RegExp( \"Width\" ),\r\n\t\t\tnew RegExp( \"Height\" ),\r\n\t\t\tnew RegExp( \"Scatter\" ),\r\n\t\t\tnew RegExp( \"PartialData\" )\r\n\t\t];\r\n\r\n\t\tObject.keys( cookies ).forEach( function( v ) { patterns.forEach( function( v2 ) { if ( v2.test( v ) ) { var cookieStr = v + '=; expires=' + date.toUTCString(); document.cookie = cookieStr; } } ) } );\r\n\t}\r\n\r\n\tfunction saveTableRowsToCookie() {\r\n\t\tfor ( var i = 0; i < tableRows.length; i++ ) {\r\n\t\t\tvar key = ( '000' + i ).slice( -3 );\r\n\t\t\tsetCookieNameValue( 'ID'\t\t\t+ key, tableRows[ i ].ID );\r\n\t\t\tsetCookieNameValue( 'DataName'\t\t+ key, tableRows[ i ].DataName );\r\n\t\t\tsetCookieNameValue( 'Category'\t\t+ key, tableRows[ i ].Category );\r\n\t\t\tsetCookieNameValue( 'Source'\t\t+ key, tableRows[ i ].Source );\r\n\t\t\tsetCookieNameValue( 'CsvSource'\t\t+ key, tableRows[ i ].CsvSource );\r\n\t\t\tsetCookieNameValue( 'CsvFileName'\t+ key, tableRows[ i ].CsvFileName );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction restoreTableRowsFromCookies() {\r\n\r\n\t\tvar i = 0;\r\n\t\tvar cookies = GetCookies();\r\n\t\tvar cookieNames = Object.keys( cookies );\r\n\t\tif ( cookieNames.some( function(v) { return v === 'ID000'; } ) ) {\r\n\t\t\tdeleteAllRows();\r\n\t\t\tINDEX = 0;\r\n\t\t\tdeleteAllJSONLines();\r\n\t\t\tdeleteAllYAxes();\r\n\t\t\t$( \"#chart\" ).igDataChart( 'resetZoom' );\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\twhile( true ) {\r\n\t\t\tvar key = ( '000' + i ).slice( -3 );\r\n\t\t\tif ( cookieNames.some( function(v) { return v === 'ID' + key; } ) ) {\r\n\t\t\t\tib\t\t   = cookies[ 'ID'\t\t\t+ key ];\r\n\t\t\t\tdataname   = cookies[ 'DataName'\t+ key ];\r\n\t\t\t\tcateg\t   = cookies[ 'Category'\t+ key ];\r\n\t\t\t\tsource\t   = cookies[ 'Source'\t\t+ key ];\r\n\t\t\t\tcsvsource  = cookies[ 'CsvSource'\t+ key ];\r\n\t\t\t\tcsvfname   = cookies[ 'CsvFileName'\t+ key ];\r\n\t\t\t\taddRow();\r\n\t\t\t} else {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tfunction saveYAxiesToCookies() {\r\n\t\tvar a = Object.keys( yAxisMinMax );\r\n\t\tfor ( var i = 0; i < a.length; i++ ) {\r\n\t\t\tvar key = a[ i ];\r\n\t\t\tsetCookieNameValue( key + 'Min', yAxisMinMax[ a[ i ] ].minimumValue );\r\n\t\t\tsetCookieNameValue( key + 'Max', yAxisMinMax[ a[ i ] ].maximumValue );\r\n\t\t\tsetCookieNameValue( key + 'Log', yAxisMinMax[ a[ i ] ].isLogarithmic ? 1 : 0 );\r\n\t\t\tsetCookieNameValue( key + 'Title', yAxisMinMax[ a[ i ] ].title );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction restoreYAxiesFromCookies() {\r\n\t\tyAxisMinMax = {};\r\n\t\tvar cookies = GetCookies();\r\n\t\tvar cookieNames = Object.keys( cookies );\r\n\t\tvar cookieNamePattern = \/(yAxis[0-9]+)Min\/;\r\n\t\tfor ( var i = 0; i < cookieNames.length; i++ ) {\r\n\t\t\tvar result = cookieNames[ i ].match( cookieNamePattern );\r\n\t\t\tif ( result != null ) {\r\n\t\t\t\tvar key = result[ 1 ];\r\n\t\t\t\tvar min = parseFloat( cookies[ key + 'Min' ] );\r\n\t\t\t\tvar max = parseFloat( cookies[ key + 'Max' ] );\r\n\t\t\t\tvar log = parseInt( cookies[ key + 'Log' ] );\r\n\t\t\t\tvar tit = cookies[ key + 'Title' ];\r\n\t\t\t\tif ( !isNaN( min ) && !isNaN( max ) && !isNaN( log ) ) {\r\n\t\t\t\t\tif ( log == 1 ) {\r\n\t\t\t\t\t\tyAxisMinMax[ key ] = { minimumValue: min, maximumValue: max, isLogarithmic: true, title: tit };\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tyAxisMinMax[ key ] = { minimumValue: min, maximumValue: max, isLogarithmic: false, title: tit };\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction saveChartRangeToCookies() {\r\n\t\tif ( !isNaN( chartLeft ) && !isNaN( chartTop ) && !isNaN( chartWidth ) && !isNaN( chartHeight )\r\n\t\t\t && !( chartLeft == 0 && chartTop == 0 && chartWidth == 1 && chartHeight == 1 && INDEX == 0 ) ) {\r\n\t\t\tsetCookieNameValue( \"Left\", chartLeft );\r\n\t\t\tsetCookieNameValue( \"Top\" , chartTop );\r\n\t\t\tsetCookieNameValue( \"Width\", chartWidth );\r\n\t\t\tsetCookieNameValue( \"Height\", chartHeight );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction restoreChartRangeFromCookies() {\r\n\t\tvar cookies = GetCookies();\r\n\t\tvar left1 = parseFloat( cookies[ \"Left\" ] );\r\n\t\tvar top1 = parseFloat( cookies[ \"Top\" ] );\r\n\t\tvar width1 = parseFloat( cookies[ \"Width\" ] );\r\n\t\tvar height1 = parseFloat( cookies[ \"Height\" ] );\r\n\t\tif ( !isNaN( left1 ) && !isNaN( top1 ) && !isNaN( width1 ) && !isNaN( height1 ) ) {\r\n\t\t\t$( \"#chart\" ).igDataChart( \"option\", \"windowRect\", { left: left1, top:  top1, width: width1, height: height1 } );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction saveChkScatterToCookies() {\r\n\t\tif ( $( \"#chkScatter\" ).is( \":checked\" ) ) {\r\n\t\t\tsetCookieNameValue( \"Scatter\", 1 );\r\n\t\t} else {\r\n\t\t\tsetCookieNameValue( \"Scatter\", 0 );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction restoreChkScatterFromCookies() {\r\n\t\tvar cookies = GetCookies();\r\n\t\tvar flag = parseInt( cookies[ \"Scatter\" ] );\r\n\t\tif ( flag == 1 ) {\r\n\t\t\t$( \"#chkScatter\" ).prop( \"checked\",  true );\r\n\t\t} else {\r\n\t\t\t$( \"#chkScatter\" ).prop( \"checked\",  false );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction saveChkPartialDataToCookies() {\r\n\t\tif ( $( \"#chkPartialData\" ).is( \":checked\" ) ) {\r\n\t\t\tsetCookieNameValue( \"PartialData\", 1 );\r\n\t\t} else {\r\n\t\t\tsetCookieNameValue( \"PartialData\", 0 );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction restoreChkPartialDataFromCookies() {\r\n\t\tvar cookies = GetCookies();\r\n\t\tvar flag = parseInt( cookies[ \"PartialData\" ] );\r\n\t\tif ( flag == 1 ) {\r\n\t\t\t$( \"#chkPartialData\" ).prop( \"checked\", true );\r\n\t\t} else {\r\n\t\t\t$( \"#chkPartialData\" ).prop( \"checked\", false );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction restoreAllByCookies() {\r\n\t\tif( restoreTableRowsFromCookies() ) {\r\n\t\t\trestoreChkScatterFromCookies();\r\n\t\t\trestoreChkPartialDataFromCookies();\r\n\t\t\tredrawGraph();  \/\/ dataDef \u304c\u3067\u304d\u3066\u3044\u308b\u3053\u3068\u304c\u524d\u63d0\r\n\t\t\tif ( prevJSONS.length > 0 ) {\r\n\t\t\t\tbRecoveredByCookie = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction saveAllAsCookies() {\r\n\t\tDeleteAllCookies();\r\n\t\tsaveTableRowsToCookie();\r\n\t\tsaveYAxiesToCookies();\r\n\t\tsaveChartRangeToCookies();\r\n\t\tsaveChkScatterToCookies();\r\n\t\tsaveChkPartialDataToCookies();\r\n\t}\r\n\r\n\tfunction restoreChartAxiesFromCookies() {\r\n\t\trestoreChartRangeFromCookies();\r\n\t\trestoreYAxiesFromCookies();\r\n\t}\r\n\r\n\t\/\/\/\r\n\t\/\/\/ CSV download\r\n\t\/\/\/\r\n\tvar CSVHeader1 = {};\r\n\tvar CSVHeader2 = {};\r\n\tvar CSVHeader3 = {};\r\n\tvar CSVHeader4 = {};\r\n\r\n\tfunction getCSVHeader() {\r\n\t\tvar sources = [];\r\n\t\tvar csvHeaders1 = [\"\"];\r\n\t\tvar csvHeaders2 = [\"\"];\r\n\t\tvar csvHeaders3 = [\"\"];\r\n\t\tvar csvHeaders4 = [\"\"];\r\n\t\tvar retStr = \"\";\r\n\t\tfor( var i in prevJSONS ) {\r\n\t\t\tvar json = prevJSONS[ i ];\r\n\t\t\tsources[ sources.length ] = '\"' + json + '\"';\r\n\t\t\tcsvHeaders1[ csvHeaders1.length ] = '\"' + CSVHeader1[ json ] + '\"';\r\n\t\t\tcsvHeaders2[ csvHeaders2.length ] = '\"' + CSVHeader2[ json ] + '\"';\r\n\t\t\tcsvHeaders3[ csvHeaders3.length ] = '\"' + CSVHeader3[ json ] + '\"';;\r\n\t\t\tcsvHeaders4[ csvHeaders4.length ] = '\"' + CSVHeader4[ json ] + '\"';;\r\n\t\t}\r\n\t\tretStr += csvHeaders1.join() + \"\\r\\n\";\r\n\t\tretStr += csvHeaders2.join() + \"\\r\\n\";\r\n\t\tretStr += csvHeaders3.join() + \"\\r\\n\";\r\n\t\tretStr += csvHeaders4.join() + \"\\r\\n\";\r\n\t\treturn retStr;\r\n\t}\r\n\r\n\tfunction getCSVLine( tidx ) {\r\n\t\tvar sources = prevJSONS;\r\n\t\tvar retLine = timeLine[ tidx ];\r\n\t\tfor( var i = 0; i < sources.length; i++ ) {\r\n\t\t\tif ( typeof timelineDataSource[ sources[ i ] ][ timeLine[ tidx ] ] === 'undefined' ) {\r\n\t\t\t\tretLine = retLine + ',';\r\n\t\t\t} else if ( timelineDataSource[ sources[ i ] ][ timeLine[ tidx ] ] == null ) {\r\n\t\t\t\tretLine = retLine + ',';\r\n\t\t\t} else {\r\n\t\t\t\tvar y2 = timelineDataSource[ sources[ i ] ][ timeLine[ tidx ] ];\r\n\t\t\t\tretLine = retLine + ',' + y2;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn ( retLine + '\\r\\n' );\r\n\t}\r\n\r\n\tfunction getCSVLines() {\r\n\t\tvar date1 = new Date( $( \"#xStartDatePicker\" ).igDatePicker( \"option\", \"value\" ) );\r\n\t\tdate1 = new Date( date1.getFullYear(), date1.getMonth(), date1.getDate(), 0, 0, 0, 0 );\r\n\t\tvar date2 = new Date( $( \"#xEndDatePicker\" ).igDatePicker(\"option\", \"value\" ) );\r\n\t\tdate2 = new Date( date2.getFullYear(), date2.getMonth(), date2.getDate(), 0, 0, 0, 0 );\r\n\t\tvar retCSVLines = \"\";\r\n\t\tfor( var i in timeLine ) {\r\n\t\t\tvar date\t\t= timeLine[ i ];\r\n\t\t\tvar dateA\t\t= date.split( ' ' );\r\n\t\t\tvar dateAymd\t= dateA[ 0 ];\r\n\t\t\tvar dateAymds\t= dateAymd.split( '\/' );\r\n\t\t\tvar dateAYear\t= dateAymds[ 0 ];\r\n\t\t\tvar dateAMonth\t= dateAymds[ 1 ];\r\n\t\t\tvar dateADay\t= dateAymds[ 2 ];\r\n\t\t\tvar dateB = new Date( dateAYear, dateAMonth - 1, dateADay, 0, 0, 0, 0 );\r\n\t\t\tvar dateTime = dateB.getTime();\r\n\t\t\tif ( date1.getTime() <= dateTime && dateTime < date2.getTime() + 24 * 60 * 60 * 1000 ) {\r\n\t\t\t\tretCSVLines += getCSVLine( i )\r\n\t\t\t} else if ( date2.getTime() + 24 * 60 * 60 * 1000 <= dateTime ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retCSVLines;\r\n\t}\r\n\r\n\tfunction handleDownload() {\r\n\t\tvar a = [];\r\n\t\tprevJSONS.forEach( function( v ) { timelineDataSource[ v ].Value.forEach( function(v2) { a[ a.length ] = v2.x; } ); } );\r\n\t\tvar aa = {};\r\n\t\ta.forEach( function( x ) { aa[ x ] = 0; } );\r\n\t\ta = Object.keys( aa );\r\n\t\ta.sort();\r\n\t\ttimeLine = a;\r\n\t\tvar content = getCSVHeader() + getCSVLines();\r\n\t\tvar mimeType = 'text\/csv';\r\n\t\tvar name\t = 'plotdata.csv';\r\n\t\tvar bom  = new Uint8Array( [ 0xEF, 0xBB, 0xBF ] );\r\n\t\tvar blob = new Blob( [ bom, content ], { type : mimeType } );\r\n\t\tvar a = document.createElement('a');\r\n\t\ta.download = name;\r\n\t\ta.target   = '_blank';\r\n\t\tif ( window.navigator.msSaveBlob ) {\r\n\t\t\t\/\/ for IE\r\n\t\t\twindow.navigator.msSaveBlob( blob, name );\r\n\t\t\t\/\/window.navigator.msSaveOrOpenBlob( blob, name );\r\n\t\t} else if ( window.URL && window.URL.createObjectURL ) {\r\n\t\t\t\/\/ for Firefox\r\n\t\t\ta.href = window.URL.createObjectURL( blob );\r\n\t\t\tdocument.body.appendChild( a );\r\n\t\t\ta.click();\r\n\t\t\tdocument.body.removeChild( a );\r\n\t\t} else if ( window.webkitURL && window.webkitURL.createObject ) {\r\n\t\t\t\/\/ for Chrome\r\n\t\t\ta.href = window.webkitURL.createObjectURL( blob );\r\n\t\t\ta.click();\r\n\t\t} else {\r\n\t\t\t\/\/ for Safari\r\n\t\t\twindow.open( 'data:' + mimeType + ';base64,' + window.Base64.encode(content), '_blank' );\r\n\t\t}\r\n\t}\r\n\r\n\t\/\/\/\r\n\t\/\/\/\r\n\t\/\/\/\r\n\tfunction rowExistInTable( ib, dataName, category, src ) {\r\n\t\tvar len = tableRows.length;\r\n\t\tif ( len == 0 )\r\n\t\t\treturn false;\r\n\t\tfor ( var i = 0; i < len; i++ ) {\r\n\t\t\tvar row = tableRows[ i ];\r\n\t\t\tif ( ib == row.ID && dataName == row.DataName && category == row.Category && src == row.Source ) {\r\n\t\t\t\t$( \"#grid\" ).igGridSelection( \"selectRow\", i );\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doesntExist2( jsonFile, jsonFileArray ) {\r\n\t\tfor ( var i in jsonFileArray ) {\r\n\t\t\tif ( jsonFile == jsonFileArray[ i ] )\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tvar ib;\r\n\tvar dataname;\r\n\tvar categ;\r\n\tvar source;\r\n\tvar csvsource;\r\n\tvar csvfname;\r\n\tvar chartLeft, chartTop, chartWidth, chartHeight;\r\n\r\n\tfunction addRow() {\r\n\t\tvar index = tableRows.length;\r\n\t\tif ( ib == null || dataname == null || categ == null )\r\n\t\t\treturn;\r\n\t\tif ( index > 0 && rowExistInTable( ib, dataname, categ, source ) )\r\n\t\t\treturn;\r\n\t\tprevTableRows = [];\r\n\t\tfor ( var i2 = 0; i2 < tableRows.length; i2++ ) {\r\n\t\t\tprevTableRows[ i2 ] = tableRows[ i2 ];\r\n\t\t}\r\n\t\ttableRows[ index ] = { ID: ib, DataName: dataname, Category: categ, Source: source, CsvSource: csvsource, CsvFileName: csvfname };\r\n\t\tvar tmpTableRows = [];\r\n\t\tfor ( var i = 0; i < tableRows.length; i++ ) {\r\n\t\t\ttmpTableRows[ i ] = tableRows[ i ]\r\n\t\t}\r\n\t\t$( \"#grid\" ).igGrid( \"option\", \"dataSource\", tmpTableRows );\r\n\t\t$( \"#grid\" ).igGridSelection( \"selectRow\", index );\r\n\t}\r\n\r\n\tfunction deleteRow() {\r\n\t\tvar row = $( \"#grid\" ).igGridSelection( \"selectedRow\" );\r\n\t\tvar indexAfterDeleting = ( row.index == ( tableRows.length - 1 ) ) ? ( row.index - 1 ) : row.index;\r\n\t\tvar tmpRows = [];\r\n\t\tif ( row ) {\r\n\t\t\tvar i2 = 0;\r\n\t\t\tprevTableRows = [];\r\n\t\t\tfor( var i = 0; i < tableRows.length; i++ ) {\r\n\t\t\t\tprevTableRows[ i ] = tableRows[ i ];\r\n\t\t\t\tif ( i == row.index )\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\ttmpRows[ i2 ] = tableRows[ i ];\r\n\t\t\t\ti2++;\r\n\t\t\t}\r\n\t\t\t$( \"#grid\" ).igGrid( \"option\", \"dataSource\", tmpRows );\r\n\t\t\ttableRows = [];\r\n\t\t\tfor( var ii = 0; ii < tmpRows.length ; ii++ ) {\r\n\t\t\t\ttableRows[ii] = tmpRows[ ii ];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif ( tableRows.length > 0 ) {\r\n\t\t\t$( \"#grid\" ).igGridSelection( \"selectRow\", indexAfterDeleting );\r\n\t\t} else {\r\n\t\t\t $( \"grid\" ).igGridSelection( \"clearSelection\" );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction deleteAllRows() {\r\n\t\ttableRows = [];\r\n\t\t$( \"#grid\" ).igGrid( \"option\", \"dataSource\", tableRows );\r\n\t\t$( \"#grid\" ).igGridSelection( \"clearSelection\" );\r\n\t}\r\n\r\n\tfunction redrawGraph() {\r\n\t\tnNewSeries = 0;\r\n\t\tvar currJSONS = [];\r\n\t\tfor( var i7 in tableRows ) {\r\n\t\t\tcurrJSONS[ i7 ] = tableRows[ i7 ].Source;\r\n\t\t}\r\n\t\tif ( INDEX == 0 ) {\r\n\t\t\tfor( var i5 = 0; i5 < currJSONS.length; i5++ ) {\r\n\t\t\t\taddJSONLine( currJSONS[ i5 ] );\r\n\t\t\t\tprevJSONS[ i5 ] = currJSONS[ i5 ];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor( var i2 = 0; i2 < prevJSONS.length; i2++ ) {\r\n\t\t\t\tif ( doesntExist2( prevJSONS[ i2 ], currJSONS ) ) {\r\n\t\t\t\t\tdeleteJSONLine( prevJSONS[ i2 ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\/\/\r\n\t\t\t\/\/ \u4f7f\u308f\u308c\u3066\u3044\u306a\u3044Y\u8ef8\u306e\u5b9a\u7fa9\u3092\u524a\u9664\r\n\t\t\t\/\/\r\n\t\t\t\/\/ \u73fe\u5728\u306e\u8ef8\u306e\u5b9a\u7fa9\r\n\t\t\tvar axes = $( \"#chart\" ).igDataChart( 'option', 'axes' );\r\n\t\t\t\/\/ \u73fe\u5728\u6b8b\u3063\u3066\u3044\u308b\u30b7\u30ea\u30fc\u30ba\u306e\u5b9a\u7fa9\u304b\u3089\u3001\u4f7f\u7528\u3055\u308c\u3066\u3044\u308bY\u8ef8\u306e\u540d\u524d\u306e\u914d\u5217\u3092\u53d6\u308a\u51fa\u3059\r\n\t\t\tvar usingYAxisNames = $( \"#chart\" ).igDataChart( 'option', 'series' ).map( function( series ) {\r\n\t\t\t\treturn series.yAxis;\r\n\t\t\t} );\r\n\t\t\tvar removeYAxes = [];\r\n\t\t\tfor ( var i4 = 0; i4 < axes.length; i4++ ) {\r\n\t\t\t\tvar axis = axes[ i4 ];\r\n\t\t\t\t\/\/ X\u8ef8\u306f\u5bfe\u8c61\u5916\r\n\t\t\t\tif ( axis.name === \"xAxis\" ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t\/\/ \u4f7f\u7528\u4e2d\u306eY\u8ef8\u3082\u5bfe\u8c61\u5916\r\n\t\t\t\tif ( usingYAxisNames.indexOf(axis.name) > -1 ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\t\/\/ \u524a\u9664\u5bfe\u8c61\u306eY\u8ef8\u3068\u3057\u3066\u8ffd\u52a0\r\n\t\t\t\tremoveYAxes.push( { name: axis.name, remove: true } );\r\n\t\t\t}\r\n\t\t\t\/\/ \u524a\u9664\u5b9f\u884c\r\n\t\t\t$( \"#chart\" ).igDataChart( 'option', 'axes', removeYAxes );\r\n\t\t\t\/\/ \u30b3\u30f3\u30dc\u30dc\u30c3\u30af\u30b9\u3082\u5909\u3048\u308b(\u4e0b\u306e addJSONLine \u304c\u547c\u3070\u308c\u306a\u3044\u53ef\u80fd\u6027\u3082\u3042\u308b)\r\n\t\t\tselectionChangedYAxisCombo();\r\n\t\t\tfor( var i = 0; i < currJSONS.length; i++ ) {\r\n\t\t\t\tif ( doesntExist2( currJSONS[ i ], prevJSONS ) ) {\r\n\t\t\t\t\taddJSONLine( currJSONS[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tprevJSONS = [];\r\n\t\t\tfor( var i6 in currJSONS ) {\r\n\t\t\t\tprevJSONS[ i6 ] = currJSONS[ i6 ];\r\n\t\t\t}\r\n\t\t}\r\n\t\tINDEX++;\r\n\t}\r\n\r\n\tfunction changeSeriesType() {\r\n\t\tdeleteAllJSONLines();\r\n\t\tprevJSONS = [];\r\n\t\tredrawGraph();\r\n\t\t$( \"#yMinText\" ).igNumericEditor( \"option\", \"value\", \"\" );\r\n\t\t$( \"#yMaxText\" ).igNumericEditor( \"option\", \"value\", \"\" );\r\n\t\t$( \"#chkLog\" ).prop( \"checked\", false );\r\n\t}\r\n\r\n\tfunction deleteAllJSONLines() {\r\n\t\tvar seriesNames = $( \"#chart\" ).igDataChart( 'option', 'series' ).map( function( series ) {\r\n\t\t\treturn series.name;\r\n\t\t} );\r\n\t\tif ( seriesNames === null || seriesNames.length === 0 )\r\n\t\t\treturn;\r\n\t\tfor( var i = 0; i < seriesNames.length; i++ ) {\r\n\t\t\tdeleteJSONLine( seriesNames[ i ] );\r\n\t\t}\r\n\t\tprevJSONS = [];\r\n\t}\r\n\r\n\tfunction deleteAllYAxes() {\r\n\t\t\/\/ \u73fe\u5728\u306e\u8ef8\u306e\u5b9a\u7fa9\r\n\t\tvar axes = $( \"#chart\" ).igDataChart( 'option', 'axes' );\r\n\t\tvar removeYAxes = [];\r\n\t\tfor ( var i4 = 0; i4 < axes.length; i4++ ) {\r\n\t\t\tvar axis = axes[ i4 ];\r\n\t\t\t\/\/ X\u8ef8\u306f\u5bfe\u8c61\u5916\r\n\t\t\tif ( axis.name === \"xAxis\" ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t\/\/ \u524a\u9664\u5bfe\u8c61\u306eY\u8ef8\u3068\u3057\u3066\u8ffd\u52a0\r\n\t\t\tremoveYAxes.push( { name: axis.name, remove: true } );\r\n\t\t}\r\n\t\t\/\/ \u524a\u9664\u5b9f\u884c\r\n\t\t$( \"#chart\" ).igDataChart( 'option', 'axes', removeYAxes );\r\n\t}\r\n\r\n\tfunction resetYAxisRange() {\r\n\t\tyAxisMinMax = {};\r\n\t\tchangeSeriesType();\r\n\t\t$( \"#chart\" ).igDataChart( 'resetZoom' );\r\n\t}\r\n\r\n\tvar UNIT_ARRAY = [];\r\n\r\n\tfunction getYAxisName( unitStr ) {\r\n\t\tvar n = getIndexInArray( unitStr );\r\n\t\tvar retYAxisName = \"yAxis\" + n;\r\n\t\treturn retYAxisName;\r\n\t}\r\n\r\n\tfunction getIndexInArray( unitStr ) {\r\n\t\tfor ( var i in UNIT_ARRAY ) {\r\n\t\t\tif ( UNIT_ARRAY[ i ] == unitStr )\r\n\t\t\t\treturn i;\r\n\t\t}\r\n\t\tvar n = UNIT_ARRAY.length;\r\n\t\tUNIT_ARRAY[ n ] = unitStr;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction getDataNameFromDataDef( ddef, jsonFName ) {\r\n\t\tvar retDataName = \"\";\r\n\t\tfor( let i in ddef ) {\r\n\t\t\tif( ddef[ i ].Source == jsonFName ) {\r\n\t\t\t\tvar cats = ddef[ i ].Category.split( \":\" );\r\n\t\t\t\tif( cats.length > 1 ) {\r\n\t\t\t\t\tretDataName = ddef[ i ].DataName + \"(\" + cats[ 0 ] + \")\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tretDataName = ddef[ i ].DataName;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retDataName;\r\n\t}\r\n\r\n\tfunction setCSVHeader( ddef, jsonFName, dataName, unit ) {\r\n\t\tfor( let i in ddef ) {\r\n\t\t\tif( ddef[ i ].Source == jsonFName ) {\r\n\t\t\t\tvar cats = ddef[ i ].Category.split( \":\" );\r\n\t\t\t\tif( cats.length > 1 ) {\r\n\t\t\t\t\tCSVHeader1[ jsonFName ] = cats[ 0 ];\r\n\t\t\t\t\tCSVHeader2[ jsonFName ] = cats[ 1 ];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tCSVHeader1[ jsonFName ] = cats[ 0 ];\r\n\t\t\t\t\tCSVHeader2[ jsonFName ] = '';\r\n\t\t\t\t}\r\n\t\t\t\tCSVHeader3[ jsonFName ] = dataName;\r\n\t\t\t\tCSVHeader4[ jsonFName ] = unit;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getYTitleFromDataDef( ddef, jsonFName, uni ) {\r\n\t\tvar retDataName = uni;\r\n\t\tfor( let i in ddef ) {\r\n\t\t\tif( ddef[ i ].Source == jsonFName ) {\r\n\t\t\t\tvar cats = ddef[ i ].Category.split( \":\" );\r\n\t\t\t\tif( cats.length > 1 ) {\r\n\t\t\t\t\tretDataName = cats[ 1 ] + \"(\" + uni + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retDataName;\r\n\t}\r\n\r\n\tfunction addJSONLine( jsonFileName ) {\r\n\r\n\t\t$.getJSON( jsonFileName, function( d ) {\r\n\t\t\tvar data1 = d.Value;\r\n\t\t\tvar unit = d.Unit;\r\n\t\t\tvar yAxisWhat;\r\n\t\t\tvar yAxis;\r\n\t\t\tvar yTitle;\r\n\t\t\tyAxisName = getYAxisName( unit );\r\n\t\t\tyTitle = getYTitleFromDataDef( dataDef, jsonFileName, unit );\r\n\t\t\tvar axes = $( \"#chart\" ).igDataChart( 'option', 'axes' );\r\n\t\t\tvar bLogarithmic = axes.some( function( ax ) { if ( ax.name === yAxisName ) { return ax.isLogarithmic; } else { return false; } } );\r\n\r\n\t\t\tyAxis = {\r\n\t\t\t\tname: yAxisName,\r\n\t\t\t\ttype: \"numericY\",\r\n\t\t\t\tmajorStroke: \"#C0C0C0\",\r\n\t\t\t\ttitle: yTitle,\r\n\t\t\t\tisLogarithmic: bLogarithmic\r\n\t\t\t};\r\n\t\t\tvar dataName = getDataNameFromDataDef( dataDef, jsonFileName );\r\n\t\t\tdataName = dataName + ( dupNum[ jsonFileName ] == 0 ? \"\" : \"[\" + dupNum[ jsonFileName ] + \"]\" );\r\n\t\t\tsetCSVHeader( dataDef, jsonFileName, dataName, unit );\r\n\t\t\tvar data2 = convertXY( data1, dataName, unit );\r\n\t\t\tvar series0 = [];\r\n\t\t\tif ( $( \"#chkScatter\" ).is( \":checked\" ) == false ) {\r\n\t\t\t\tseries0[ 0 ] = {\r\n\t\t\t\t\tname: jsonFileName,\r\n\t\t\t\t\ttitle: dataName,\r\n\t\t\t\t\tshowTooltip: true,\r\n\t\t\t\t\tdataSource: data2,\r\n\t\t\t\t\ttype: \"scatterLine\",\r\n\t\t\t\t\txAxis: \"xAxis\",\r\n\t\t\t\t\tyAxis: yAxisName,\r\n\t\t\t\t\txMemberPath: \"x!convertDateToTime\",\r\n\t\t\t\t\tyMemberPath: \"y!convertValueToNumber\",\r\n\t\t\t\t\tcoercionMethods: {\r\n\t\t\t\t\t\tconvertDateToTime: function( date ) {\r\n\t\t\t\t\t\t\treturn date.getTime();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\tconvertValueToNumber: function( value ) {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tif ( !value ) {\r\n\t\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn parseFloat( value );\r\n\t\t\t\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t\t\t   return null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tverticalAxisVisibility: \"collapsed\",\r\n\t\t\t\t\tlegend: { element: \"legend\" },\r\n\t\t\t\t\tmarkerTemplate: {\r\n\t\t\t\t\t\tmeasure: function( measureInfo ) {\r\n\t\t\t\t\t\t\tmeasureInfo.width = 10;\r\n\t\t\t\t\t\t\tmeasureInfo.height = 10;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\trender: function( renderInfo ) {\r\n\t\t\t\t\t\t\tcreateMarker( renderInfo );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tseries0[ 0 ] = {\r\n\t\t\t\t\tname: jsonFileName,\r\n\t\t\t\t\ttitle: dataName,\r\n\t\t\t\t\tshowTooltip: true,\r\n\t\t\t\t\tdataSource: data2,\r\n\t\t\t\t\ttype: \"scatter\",\r\n\t\t\t\t\txAxis: \"xAxis\",\r\n\t\t\t\t\tyAxis: yAxisName,\r\n\t\t\t\t\txMemberPath: \"x!convertDateToTime\",\r\n\t\t\t\t\tyMemberPath: \"y!convertValueToNumber\",\r\n\t\t\t\t\tcoercionMethods: {\r\n\t\t\t\t\t\tconvertDateToTime: function( date ) {\r\n\t\t\t\t\t\t\treturn date.getTime();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\tconvertValueToNumber: function( value ) {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tif ( !value ) {\r\n\t\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn parseFloat( value );\r\n\t\t\t\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tverticalAxisVisibility: \"collapsed\",\r\n\t\t\t\t\tlegend: { element: \"legend\" },\r\n\t\t\t\t\tmarkerType: \"circle\"\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t$( \"#chart\" ).igDataChart( 'option', 'axes', [ yAxis ] );\r\n\t\t\t$( \"#chart\" ).igDataChart( \"option\", \"series\", series0 );\r\n\t\t\tvar axes = $( \"#chart\" ).igDataChart( \"option\", \"axes\" );\r\n\t\t\t$( \"#zoom\" ).igZoombar( \"clone\" ).igDataChart( \"option\", \"axes\", $( axes[ 0 ] ) );\r\n\t\t\t$( \"#zoom\" ).igZoombar( \"clone\" ).igDataChart( \"option\", \"axes\", $.extend( true, [], [ yAxis ], [ { labelVisibility: \"collapsed\" } ] ) );\r\n\t\t\t$( \"#zoom\" ).igZoombar( \"clone\" ).igDataChart( \"option\", \"axes\", $.extend( true, [], $( axes[ 0 ] ), [ { labelVisibility: \"collapsed\" } ] ) );\r\n\t\t\t$( \"#zoom\" ).igZoombar( \"clone\" ).igDataChart( \"option\", \"series\", series0 );\r\n\t\t\t$( \"#zoom\" ).igZoombar( \"clone\" ).igDataChart( \"option\", \"series\", [ { name: jsonFileName, legendItemVisibility: \"collapsed\" } ] );\r\n\t\t\tvar sources = Object.keys( timelineDataSource );\r\n\t\t\tif ( sources.some( function( v ) { return v == jsonFileName; } ) ) {\r\n\t\t\t\t\/*** Nothing to do. ***\/\r\n\t\t\t} else {\r\n\t\t\t\ttimelineDataSource[ jsonFileName ] = d;\r\n\t\t\t\td.Value.forEach( function( x ) { timelineDataSource[ jsonFileName ][ x.x ] = x.y; } );\r\n\t\t\t}\r\n\t\t} )\r\n\t\t.always( function() {\r\n\t\t\tselectionChangedYAxisCombo();\r\n\t\t\tif ( $( \"#chkScatter\" ).is( \":checked\" ) !== prevChkScatter ) {\r\n\t\t\t\tbSeriesChanged = true;\r\n\t\t\t}\r\n\t\t\tprevChkScatter = $( \"#chkScatter\" ).is( \":checked\" );\r\n\t\t\tif ( bRecoveredByCookie || bSeriesChanged ) {\r\n\t\t\t\tnNewSeries++;\r\n\t\t\t\tif ( prevJSONS.length == nNewSeries ) {\r\n\t\t\t\t\tsetTimeout( function () {\r\n\t\t\t\t\t\tif ( bRecoveredByCookie || bSeriesChanged === false ) {\r\n\t\t\t\t\t\t\trestoreChartAxiesFromCookies();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbSeriesChanged = false;\r\n\t\t\t\t\t\tbRecoveredByCookie = false;\r\n\t\t\t\t\t\tvar axes = $( \"#chart\" ).igDataChart( 'option', 'axes' );\r\n\t\t\t\t\t\tvar a = Object.keys( yAxisMinMax );\r\n\t\t\t\t\t\tfor( var i = 0; i < a.length; i++ ) {\r\n\t\t\t\t\t\t\tif ( axes.some( function( ax ) { return ax.title === yAxisMinMax[ a[ i ] ].title; } ) ) {\r\n\t\t\t\t\t\t\tvar aa = axes.filter( function( ax ) { return ax.title === yAxisMinMax[ a[ i ] ].title; } );\r\n\t\t\t\t\t\t\t$( \"#chart\" ).igDataChart( \"option\", \"axes\",\r\n\t\t\t\t\t\t\t\t[ {\r\n\t\t\t\t\t\t\t\t\tname: aa[ 0 ].name,\r\n\t\t\t\t\t\t\t\t\tminimumValue: yAxisMinMax[ a[ i ] ].minimumValue,\r\n\t\t\t\t\t\t\t\t\tmaximumValue: yAxisMinMax[ a[ i ] ].maximumValue,\r\n\t\t\t\t\t\t\t\t\tisLogarithmic: yAxisMinMax[ a[ i ] ].isLogarithmic\r\n\t\t\t\t\t\t\t\t} ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 3000 );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tfunction deleteJSONLine( jsonFileName ) {\r\n\t\t$( \"#chart\" ).igDataChart( \"option\", \"series\", [ { name: jsonFileName, remove: true } ] );\r\n\t\t$( \"#zoom\" ).igZoombar( \"clone\" ).igDataChart( \"option\", \"series\", [ { name: jsonFileName, remove: true } ] );\r\n\t}\r\n\r\n\tfunction selectionChangedYAxisCombo() {\r\n\t\tvar yAxisCombo = [];\r\n\t\tvar axes = $( \"#chart\" ).igDataChart( 'option', 'axes' );\r\n\t\tfor ( var i4 = 0; i4 < axes.length; i4++ ) {\r\n\t\t\tvar axis = axes[ i4 ];\r\n\t\t\tif ( axis.name === \"xAxis\" ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tyAxisCombo.push( { Name: axis.title, Value: axis.name } );\r\n\t\t}\r\n\t\t$( \"#combo\" ).igCombo( 'option', 'dataSource', yAxisCombo );\r\n\t\tvar items = $( \"#combo\" ).igCombo( 'selectedItems' );\r\n\t\tif ( items === null || items.length === 0 ) {\r\n\t\t\t$( \"#yMinText\" ).igNumericEditor( \"option\", \"value\", \"\" );\r\n\t\t\t$( \"#yMaxText\" ).igNumericEditor( \"option\", \"value\", \"\" );\r\n\t\t\t$( \"#chkLog\" ).prop( \"checked\", false );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction stringToDate( datetimeStr ) {\r\n\t\tvar s = datetimeStr.match( \/[0-9]+\/g );\r\n\t\tvar a = [];\r\n\t\tfor( var i = 0; i < s.length; i++ ) {\r\n\t\t\ta[ i ] = parseInt( s[ i ] );\r\n\t\t}\r\n\t\treturn new Date( a[0], a[1] - 1, a[2], a[3], a[4], a[5], 0 );\r\n\t}\r\n\r\n\tfunction convertXY( xyArray, tipDesc, uni ) {\r\n\t\tvar retArray = [];\r\n\t\tfor ( var i = 0; i < xyArray.length; i++ ) {\r\n\t\t\tvar d = stringToDate( xyArray[ i ].x );\r\n\t\t\tvar v = xyArray[ i ].y;\r\n\t\t\tretArray[ i ] = { x: d, y: v, mark: 0, title: tipDesc, unit: uni };\r\n\t\t}\r\n\t\tfor ( var ib = 0; ib < retArray.length; ib++ ) {\r\n\t\t\tif( ( retArray.length === 1 )\r\n\t\t\t\t|| ( retArray.length > 0 && ib === 0 && ( retArray[ ib + 1 ].y === null || !retArray[ ib + 1 ].y ) )\r\n\t\t\t\t|| ( retArray.length > 0 && ib === retArray.length - 1 && ( retArray[ ib - 1 ].y === null || !retArray[ ib - 1 ].y ) )\r\n\t\t\t\t|| ( retArray.length > 1 && ib > 0 && ib < retArray.length - 1 && ( retArray[ ib - 1 ].y === null || !retArray[ ib - 1 ].y ) && (retArray[ ib + 1 ].y === null || !retArray[ ib + 1 ].y ) ) ) {\r\n\t\t\t\tretArray[ ib ].mark = 1;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retArray;\r\n\t}\r\n\r\n\tfunction createMarker( renderInfo ) {\r\n\t\tvar ctx = renderInfo.context;\r\n\t\tvar x = renderInfo.xPosition;\r\n\t\tvar y = renderInfo.yPosition;\r\n\t\tvar size = 10;\r\n\t\tvar heightHalf = size \/ 2.0;\r\n\t\tvar widthHalf = size \/ 2.0;\r\n\r\n\t\tif ( renderInfo.isHitTestRender ) {\r\n\t\t\t\/\/\tThis is called for tooltip hit test only\r\n\t\t\t\/\/\tRough marker rectangle size calculation\r\n\t\t\tctx.fillStyle = renderInfo.data.actualItemBrush().fill();\r\n\t\t\tctx.fillRect( x - widthHalf, y - heightHalf, size, size );\r\n\t\t} else {\r\n\t\t\tvar data = renderInfo.data;\r\n\t\t\tif( data.item() !== null ) {\r\n\t\t\t\tif ( data.item()[ \"mark\" ] > 0 ) {\r\n\t\t\t\t\t\/\/ \u30b0\u30e9\u30d5\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u8272\u3092\u53d6\u308a\u51fa\u3059\r\n\t\t\t\t\tvar brush = data.actualItemBrush().fill();\r\n\t\t\t\t\tvar outline = data.outline().fill();\r\n\t\t\t\t\t\/\/ \u30de\u30fc\u30ab\u30fc\u3092\u30d7\u30ed\u30c3\u30c8\r\n\t\t\t\t\tctx.beginPath();\r\n\t\t\t\t\tctx.arc( x, y, 2, 0, 2 * Math.PI, false );\r\n\t\t\t\t\tctx.fillStyle = brush;\r\n\t\t\t\t\tctx.fill();\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = outline;\r\n\t\t\t\t\tctx.stroke();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction convertDataDef( ddefs ) {\r\n\r\n\t\tfunction getCategories( ddefs ) {\r\n\t\t\tvar cats = [];\r\n\t\t\tvar bExist = false;\r\n\t\t\tfor( var i = 0; i < ddefs.length; i++ ) {\r\n\t\t\t\tfor( var j = 0; j < cats.length; j++ ) {\r\n\t\t\t\t\tif ( cats[ j ] == ddefs[ i ].Category ) {\r\n\t\t\t\t\t\tbExist = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif ( bExist == false ) {\r\n\t\t\t\t\tvar index = cats.length;\r\n\t\t\t\t\tcats[ index ] = ddefs[ i ].Category;\r\n\t\t\t\t}\r\n\t\t\t\tbExist = false;\r\n\t\t\t}\r\n\t\t\treturn cats;\r\n\t\t}\r\n\r\n\t\tfunction getDataNames( categ, ddefs ) {\r\n\t\t\tvar dataNames = [];\r\n\t\t\tvar index = dataNames.length;\r\n\t\t\tfor( var i = 0; i < ddefs.length; i++ ) {\r\n\t\t\t\tif ( ddefs[ i ].Category == categ ) {\r\n\t\t\t\t\tvar element = { DataName: ddefs[ i ].DataName, Source: ddefs[ i ].Source };\r\n\t\t\t\t\tif ( dataNames.indexOf( element ) < 0 ) {\r\n\t\t\t\t\t\tdataNames[ index ] = element;\r\n\t\t\t\t\t\tindex = dataNames.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn dataNames;\r\n\t\t}\r\n\r\n\t\tfunction getGouki( categ2 ) {\r\n\t\t\tvar retData = [];\r\n\t\t\tvar pattern = \/:\/g;\r\n\t\t\tvar onahama = \"\u5c0f\u540d\u6d5c\";\r\n\t\t\tvar i2 = 0;\r\n\t\t\tfor( var i = 0; i < categ2.length; i++ ) {\r\n\t\t\t\tif( categ2[ i ].match( pattern ) ) {\r\n\t\t\t\t\tvar goukicate = categ2[ i ].split( \":\" );\r\n\t\t\t\t\tif( retData.indexOf( goukicate[ 0 ] ) < 0 ) {\r\n\t\t\t\t\t\tretData[ i2++ ] = goukicate[ 0 ];\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif( retData.indexOf( onahama ) < 0 ) {\r\n\t\t\t\t\t\tretData[ i2++ ] = onahama;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn retData;\r\n\t\t}\r\n\r\n\t\tfunction getCategory( gouki, categories ) {\r\n\t\t\tvar pat = gouki + \":\";\r\n\t\t\tvar regExp = new RegExp( pat, \"g\" );\r\n\t\t\tvar matched = [];\r\n\t\t\tvar unmatched = [];\r\n\t\t\tvar i2 = 0;\r\n\t\t\tvar i3 = 0;\r\n\t\t\tfor( var i = 0; i < categories.length; i++ ) {\r\n\t\t\t\tif( categories[ i ].match( regExp ) ) {\r\n\t\t\t\t\tmatched[ i2++ ] = categories[ i ];\r\n\t\t\t\t}\r\n\t\t\t\tif( categories[ i ].match( \/:\/g ) == null ) {\r\n\t\t\t\t\tunmatched[ i3++ ] = categories[ i ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif( i2 > 0 ) {\r\n\t\t\t\treturn matched;\r\n\t\t\t} else {\r\n\t\t\t\treturn unmatched;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar retData2 = [];\r\n\t\tvar categories2 = getCategories( ddefs );\r\n\t\tvar gouki = getGouki( categories2 );\r\n\t\tfor( var i2 = 0; i2 < gouki.length; i2++ ) {\r\n\t\t\tretData2[ i2 ] = { ID: (i2 + 1), Gouki: gouki[ i2 ], CategorySet: [] };\r\n\t\t\tvar categories = getCategory( gouki[ i2 ], categories2 );\r\n\t\t\tvar retData = [];\r\n\t\t\tfor( var i = 0; i < categories.length; i++ ) {\r\n\t\t\t\tvar dataNames = getDataNames( categories[ i ], ddefs );\r\n\t\t\t\tvar index = retData.length;\r\n\t\t\t\tvar pat = gouki[ i2 ] + \":\";\r\n\t\t\t\tvar regExp = new RegExp( pat, \"g\" );\r\n\t\t\t\tvar cate;\r\n\t\t\t\tif( categories[ i ].match( regExp ) ) {\r\n\t\t\t\t\tcate = categories[ i ].replace( regExp, \"\" );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcate = categories[ i ];\r\n\t\t\t\t}\r\n\t\t\t\tretData[ index ] = { ID: (i+1), CategoryName: cate, DataSet: [] };\r\n\t\t\t\tfor( var j = 0; j < dataNames.length; j++ ) {\r\n\t\t\t\t\tvar elements = dataNames[ j ].Source.split( \"\/\" );\r\n\t\t\t\t\tvar n = elements.length - 1;\r\n\t\t\t\t\telements[ n ] = elements[ n ].replace( \/json$\/i, \"csv\" );\r\n\t\t\t\t\tvar csvFileName = elements[ n ];\r\n\t\t\t\t\telements[ n ] = \"csv\/\" + elements[ n ];\r\n\t\t\t\t\tvar csvPath = elements.join(\"\/\"); \r\n\t\t\t\t\tretData[ index ].DataSet[ j ] = {\r\n\t\t\t\t\t\tID: ( j + 1 ),\r\n\t\t\t\t\t\tDataName: dataNames[ j ].DataName,\r\n\t\t\t\t\t\tCategory: categories[ i ],\r\n\t\t\t\t\t\tSource: dataNames[ j ].Source,\r\n\t\t\t\t\t\tCsvSource: csvPath,\r\n\t\t\t\t\t\tCsvFileName: csvFileName\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfor( var i3 = 0; i3 < retData.length; i3++ ) {\r\n\t\t\t\tretData2[ i2 ].CategorySet[ i3 ] = retData[ i3 ];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn retData2;\r\n\t}\r\n\r\n\tfunction redrawClicked() {\r\n\t\tif ( bDataDefUpdated ) {\r\n\t\t\tbFirstRedraw = true;\r\n\t\t\tbDataDefUpdated = false;\r\n\t\t}\r\n\t\tredrawGraph();\r\n\t}\r\n\r\n\tfunction changeGraphData() {\r\n\t\tif ( $( \"#chkPartialData\" ).is( \":checked\" ) ) {\r\n\t\t\tdataDir = partialDataDir;\r\n\t\t} else {\r\n\t\t\tdataDir = wholeDataDir;\r\n\t\t}\r\n\t\tdeleteAllRows();\r\n\t\tredrawGraph();\r\n\t\tupdateDataDef();\r\n\t}\r\n\r\n\tfunction encodeFileName( fname ) {\r\n\t\tvar elements = fname.split( \"\/\" );\r\n\t\tvar n = elements.length - 1;\r\n\t\treturn encodeURIComponent( elements[ n ] );\r\n\t}\r\n\r\n\tfunction updateDataDef() {\r\n\r\n\t\t$.getJSON( dataDir + \"data_def.json\", function( d ) {\r\n\t\t\t\/\/ \u30d5\u30a1\u30a4\u30eb\u540d\u306e\u30a8\u30f3\u30b3\u30fc\u30c9\r\n\t\t\tfor( var i = 0; i < d.length; i++ ) {\r\n\t\t\t\td[ i ].Source = dataDir + encodeFileName( d[ i ].Source );\r\n\t\t\t}\r\n\t\t\tdataDef = d;\r\n\r\n\t\t\tvar data = convertDataDef( d );\r\n\r\n\t\t\t$( \"#tree\" ).igTree( {\r\n\t\t\t\tdataSource: data, \/\/JSON Array defined above\r\n\t\t\t\tbindings: { \r\n\t\t\t\t\ttextKey: \"Gouki\",\r\n\t\t\t\t\tvalueKey: \"ID\",\r\n\t\t\t\t\tchildDataProperty: \"CategorySet\",\r\n\t\t\t\t\tbindings: {\r\n\t\t\t\t\t\ttextKey: \"CategoryName\",\r\n\t\t\t\t\t\tvalueKey: \"ID\",\r\n\t\t\t\t\t\tchildDataProperty: \"DataSet\",\r\n\t\t\t\t\t\tbindings: {\r\n\t\t\t\t\t\t\ttextKey: \"DataName\",\r\n\t\t\t\t\t\t\tvalueKey: \"ID\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t} )\r\n\t\t.always( function() {\r\n\t\t\t for( var i = 0; i < dataDef.length; i++ ) {\r\n\t\t\t\t var jsonFileName = dataDef[ i ].Source;\r\n\t\t\t\t var n = 0;\r\n\t\t\t\t for( var j = 0; j < i; j++ ) {\r\n\t\t\t\t\t if( dataDef[ j ].Category == dataDef[ i ].Category && dataDef[ j ].DataName == dataDef[ i ].DataName ) {\r\n\t\t\t\t\t\tn++;\r\n\t\t\t\t\t }\r\n\t\t\t\t }\r\n\t\t\t\t dupNum[ jsonFileName ] = n;\r\n\t\t\t }\r\n\t\t} )\r\n\r\n\t\tbDataDefUpdated = true;\r\n\t}\r\n\r\n    $( function () {\r\n\r\n\t\tupdateDataDef();\r\n\r\n\t\t$( \"#tree\" ).on( \"igtreenodeclick\", function( evt, ui ) {\r\n\t\t\tif ( ui.node.data.DataName ) {\r\n\t\t\t\tib\t\t = ui.node.data.ID;\r\n\t\t\t\tdataname = ui.node.data.DataName;\r\n\t\t\t\tcateg\t = ui.node.data.Category;\r\n\t\t\t\tsource\t = ui.node.data.Source;\r\n\t\t\t\tcsvsource= ui.node.data.CsvSource;\r\n\t\t\t\tcsvfname = ui.node.data.CsvFileName;\r\n\t\t\t} else {\r\n\t\t\t\tib\t\t = null;\r\n\t\t\t\tdataname = null;\r\n\t\t\t\tcateg\t = null;\r\n\t\t\t\tsource\t = null;\r\n\t\t\t\tcsvsource= null;\r\n\t\t\t\tcsvfname = null;\r\n\t\t\t\tvar node = $( \"#tree\" ).igTree( \"nodeByPath\", ui.node.path );\r\n\t\t\t\tvar isExpanded = $(\"#tree\").igTree(\"isExpanded\", node);\r\n\t\t\t\tif ( isExpanded ) {\r\n\t\t\t\t\t$( \"#tree\" ).igTree( \"collapse\", node );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$( \"#tree\" ).igTree( \"expand\", node );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$( \"#tree\" ).on( \"igtreenodedoubleclick\", function( evt, ui ) {\r\n\t\t\taddRow();\r\n\t\t} );\r\n\r\n\t\t$( \"#grid\" ).igGrid( {\r\n\t\t\twidth: '100%',\r\n\t\t\tcolumns: [\r\n\t\t\t\t{ headerText: \"Category\", key: \"Category\", dataType: \"string\", width: \"20%\" },\r\n\t\t\t\t{ headerText: \"DataName\", key: \"DataName\", dataType: \"string\", width: \"70%\" },\r\n\t\t\t\t{ headerText: \"js\", key: \"Source\", dataType: \"string\", width: \"0%\", hidden: true },\r\n\t\t\t\t{ headerText: \"Path\", key: \"CsvSource\", dataType: \"string\", width: \"0%\", hidden: true },\r\n\t\t\t\t{ headerText: \"DL\", key: \"CsvFileName\", dataType: \"string\", width: \"10%\", hidden: !downloadFlag, template: \"<a href=\\\"${CsvSource}\\\" download=\\\"${CsvFileName}\\\"><img src=\\\"\/develop\/images\/graph\/icon_csv.png\\\"><\/a>\" },\r\n\t\t\t],\r\n\t\t\tdataSource: tableRows,\r\n\t\t\tautoGenerateColumns: false,\r\n\t\t\tautofitLastColumn: false,\r\n\t\t\tfeatures: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Selection\",\r\n\t\t\t\t\tmode: \"row\",\r\n\t\t\t\t\tmultipleSelection: false,\r\n\t\t\t\t\tactivation: true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tname: \"Selection\"\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t} );\r\n\r\n\t\t$( \"#grid\" ).dblclick( function( evt ) {\r\n\t\t\tdeleteRow();\r\n\t\t} );\r\n\r\n\t\tvar chart = $( \"#chart\" ),\r\n\t\t\tzoombar = $( \"#zoom\" ),\r\n\t\t\tpopoverTimeout = 0,\r\n\t\t\tpopoverLeft,\r\n\t\t\tpopoverRight,\r\n\t\t\tlastTarget,\r\n\t\t\tcurrentlyDragged,\r\n\t\t\tzoomParams;\r\n\r\n\t\tchart.igDataChart( {\r\n\t\t\twidth: \"100%\",\r\n\t\t\theight: \"500px\",\r\n\t\t\taxes: [ {\r\n\t\t\t\tname: \"xAxis\",\r\n\t\t\t\ttype: \"numericX\",\r\n\t\t\t\tformatLabel: function( time ) {\r\n\t\t\t\t\tvar date = new Date( time );\r\n\t\t\t\t\tvar ret = date.getFullYear();\r\n\t\t\t\t\tret += \"\/\";\r\n\t\t\t\t\tret += date.getMonth() + 1;\r\n\t\t\t\t\tret += \"\/\";\r\n\t\t\t\t\tret += date.getDate();\r\n\t\t\t\t\tret += \"  \";\r\n\t\t\t\t\tret += date.getHours();\r\n\t\t\t\t\tret += \":\";\r\n\t\t\t\t\tret += date.getMinutes();\r\n\t\t\t\t\treturn ret;\r\n\t\t\t\t},\r\n\t\t\t\tlabelAngle: 35,\r\n\t\t\t\tlabelExtent: 80,\r\n\t\t\t\t\/\/ title: \"\u6642\u523b\",\r\n\t\t\t\tmarkerType: \"none\"\r\n\t\t\t} ],\r\n\t\t\tseries: [],\r\n\t\t\thorizontalZoomable: true,\r\n\t\t\tverticalZoomable: true,\r\n\t\t\twindowResponse: \"immediate\",\r\n\t\t\trefreshCompleted: function( e, ui ) {\r\n\t\t\t\tvar viewport = chart.igDataChart( \"option\", \"gridAreaRect\" ),\r\n\t\t\t\tleftMostValue = chart.igDataChart( \"unscaleValue\", \"xAxis\", viewport.left ),\r\n\t\t\t\trightMostValue = chart.igDataChart( \"unscaleValue\", \"xAxis\", viewport.left + viewport.width );\r\n\t\t\t\t\/\/ get the dates corresponding to the values\r\n\t\t\t\tleftMostValue = new Date( leftMostValue );\r\n\t\t\t\trightMostValue = new Date( rightMostValue );\r\n\r\n\t\t\t\t$( \"#xStartDatePicker\" ).igDatePicker( \"value\", leftMostValue );\r\n\t\t\t\t$( \"#xEndDatePicker\" ).igDatePicker( \"value\", rightMostValue );\r\n\r\n\t\t\t\t\/\/setYMinMaxText();\r\n\r\n\t\t\t\t\/\/ set the dates to the popover\r\n\t\t\t\tif ( popoverLeft.data( \"igPopover\" ) ) {\r\n\t\t\t\t\tpopoverLeft.igPopover( \"setContent\", $.ig.formatter( leftMostValue, \"date\", \"date\" ) );\r\n\t\t\t\t}\r\n\t\t\t\tif ( popoverRight.data( \"igPopover\" ) ) {\r\n\t\t\t\t\tpopoverRight.igPopover( \"setContent\", $.ig.formatter( rightMostValue, \"date\", \"date\" ) );\r\n\t\t\t\t}\r\n\t\t\t\tif ( bFirstRedraw == true ) {\r\n\t\t\t\t\tif ( $( \"#chkPartialData\" ).is( \":checked\" ) ) {\r\n\t\t\t\t\t\t\/\/var xMin = new Date( 2011, 2, 11, 0, 0, 0, 0 ).getTime();\r\n\t\t\t\t\t\t\/\/var xMax = new Date( 2012, 2, 18, 0, 0, 0, 0 ).getTime();\r\n\t\t\t\t\t\t\/\/$( \"#chart\" ).igDataChart( \"option\", \"axes\", [ { name: \"xAxis\", minimumValue: min, maximumValue: max } ] );\r\n\t\t\t\t\t\tvar newLeft = ( new Date( 2011, 2, 11, 0, 0, 0, 0 ).getTime() - leftMostValue ) \/ ( rightMostValue - leftMostValue ) * 100;\r\n\t\t\t\t\t\tnewLeft = Math.max( 0, Math.min( 100, newLeft ) );\r\n\t\t\t\t\t\tvar newRight = ( new Date( 2011, 2, 18, 0, 0, 0, 0 ).getTime() - leftMostValue ) \/ ( rightMostValue - leftMostValue ) * 100;\r\n\t\t\t\t\t\tnewRight = Math.max( 0, Math.min( 100, newRight ) );\r\n\t\t\t\t\t\t$( \"#zoom\" ).igZoombar( \"zoom\", newLeft, newRight - newLeft );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar newLeft = ( new Date( 2011, 2, 11, 0, 0, 0, 0 ).getTime() - leftMostValue ) \/ ( rightMostValue - leftMostValue ) * 100;\r\n\t\t\t\t\t\tnewLeft = Math.max( 0, Math.min( 100, newLeft ) );\r\n\t\t\t\t\t\tvar newRight = 100;\r\n\t\t\t\t\t\t$( \"#zoom\" ).igZoombar( \"zoom\", newLeft, newRight - newLeft );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbFirstRedraw = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tzoomParams = {\r\n\t\t\t\t\t\tleft: ui.chart.actualWindowRect ? ui.chart.actualWindowRect.left : 0.35,\r\n\t\t\t\t\t\twidth: ui.chart.actualWindowRect ? ui.chart.actualWindowRect.width : 0.30\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\twindowRectChanged: function( evt, ui ) {\r\n\t\t\t\tif ( !isNaN( ui.newLeft ) && !isNaN( ui.newTop ) && !isNaN( ui.newWidth ) && !isNaN( ui.newHeight )\r\n\t\t\t\t\t && !( ui.newLeft == 0 && ui.newTop == 0 && ui.newWidth == 1 && ui.newHeight == 1 && INDEX == 0 ) ) {\r\n\t\t\t\t\tchartLeft\t= ui.newLeft;\r\n\t\t\t\t\tchartTop\t= ui.newTop;\r\n\t\t\t\t\tchartWidth\t= ui.newWidth;\r\n\t\t\t\t\tchartHeight = ui.newHeight;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\ttooltipShown: function( evt, ui ) {\r\n\t\t\t\tvar tooltip = ui.element;\r\n\t\t\t\tvar title = \"<span style='color: \" + ui.actualSeriesBrush + \"'>\" + ui.item.title + \"<\/span><br \/>\";\r\n\t\t\t\tvar date = ui.item.x;\r\n\t\t\t\tvar formattedDate = \"\u65e5\u6642\uff1a\" + date.getFullYear() + \"\/\" +  ( date.getMonth() + 1 ) + \"\/\" + date.getDate() + \" \" + date.getHours() + \":\" + ( \"00\" + date.getMinutes()).slice( -2 ) + \"<br \/>\";\r\n\t\t\t\tvar val = \"<label id='valueText'>\u5024<\/label>:\" + \"<label id='yValue'>\" + ui.item.y + \" (\" + ui.item.unit + \")\" + \"<\/label>\";\r\n\t\t\t\t$( tooltip ).html( title + formattedDate + val );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$( '#resetZoom' ).on( 'click', function() {\r\n\t\t\tchart.igDataChart( 'resetZoom' );\r\n\t\t} );\r\n\r\n\t\t$( \"#zoom\" ).igZoombar( {\r\n\t\t\ttarget: \"#chart\",\r\n\t\t\tdefaultZoomWindow: {\r\n\t\t\t\tleft: 0,\r\n\t\t\t\twidth: 100\r\n\t\t\t},\r\n\t\t\tzoomWindowMinWidth: 0.0,\r\n\t\t\twindowResized: function( evt, ui ) {\r\n\t\t\t\tvar target = $( evt.originalEvent.target ),\r\n\t\t\t\t\thandle = target.hasClass( \"ui-igzoombar-window-handle\" ) ?\r\n\t\t\t\t\ttarget : lastTarget,\r\n\t\t\t\t\tcontainer =handle ? handle.igPopover( \"container\" ).parent().parent(): null;\r\n\t\t\t\tif ( target.hasClass(\"ui-igzoombar-window-handle\" ) ) {\r\n\t\t\t\t\tlastTarget = target;\r\n\t\t\t\t}\r\n\t\t\t\tif ( currentlyDragged && handle[ 0 ] !== currentlyDragged[ 0 ] ) {\r\n\t\t\t\t\t currentlyDragged.igPopover( \"hide\" );\r\n\t\t\t\t}\r\n\t\t\t\t\/\/ show the popover if it's not already visible\r\n\t\t\t\tif ( container && !container.is( \":visible\" ) ) {\r\n\t\t\t\t\thandle.igPopover( \"show\" );\r\n\t\t\t\t}\r\n\t\t\t\tif ( handle ) {\r\n\t\t\t\t\t\/\/ update popovers position\r\n\t\t\t\t\thandle.igPopover( \"setCoordinates\", {\r\n\t\t\t\t\t\ttop: handle.offset().top - container.outerHeight(),\r\n\t\t\t\t\t\tleft: handle.offset().left - container.outerWidth() \/ 2 + 5\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tcurrentlyDragged = handle;\r\n\t\t\t\t\tif ( popoverTimeout > 0 ) {\r\n\t\t\t\t\t\tclearTimeout( popoverTimeout );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpopoverTimeout = setTimeout( function() {\r\n\t\t\t\t\t\tpopoverLeft.igPopover( \"hide\" );\r\n\t\t\t\t\t\tpopoverRight.igPopover( \"hide\" );\r\n\t\t\t\t\t\tpopoverTimeout = 0;\r\n\t\t\t\t\t}, 2000 );\r\n\t\t\t\t\t\/\/ finally reset the buttonset\r\n\t\t\t\t\t\/\/$(\"#buttonset input\").removeAttr(\"checked\");\r\n\t\t\t\t\t\/\/$(\"#buttonset\").buttonset(\"refresh\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tpopoverLeft = $( \"#zoom_zoombar_mask_left_handle\" );\r\n\t\tpopoverRight = $( \"#zoom_zoombar_mask_right_handle\" );\r\n\r\n\t\tpopoverLeft.igPopover( {\r\n\t\t\tdirection: \"top\",\r\n\t\t\tshowOn: \"focus\"\r\n\t\t} );\r\n\r\n\t\tpopoverRight.igPopover( {\r\n\t\t\tdirection: \"top\",\r\n\t\t\tshowOn: \"focus\"\r\n\t\t} );\r\n\r\n\t\t$( \"#xStartDatePicker\" ).igDatePicker( {\r\n\t\t\theight: 24,\r\n\t\t\twidth:\t100,\r\n\t\t\tvalueChanged: function( evt, ui ) {\r\n\t\t\t\tvar xMin = $( \"#chart\" ).igDataChart( \"getActualMinimumValue\", \"xAxis\" );\r\n\t\t\t\tvar xMax = $( \"#chart\" ).igDataChart( \"getActualMaximumValue\", \"xAxis\" );\r\n\t\t\t\tvar newLeft = ( ui.newValue.setHours( 0, 0, 0, 0 ) - xMin ) \/ ( xMax - xMin ) * 100;\r\n\t\t\t\tnewLeft = Math.max( 0, Math.min( 100, newLeft ) );\r\n\t\t\t\tvar currentZoom = $( \"#zoom\" ).igZoombar( \"zoom\" );\r\n\t\t\t\t$( \"#zoom\" ).igZoombar( \"zoom\", newLeft, currentZoom.width + currentZoom.left - newLeft );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$( \"#xEndDatePicker\" ).igDatePicker( {\r\n\t\t\theight: 24,\r\n\t\t\twidth:\t100,\r\n\t\t\tvalueChanged: function( evt, ui ) {\r\n\t\t\t\tvar xMin = $( \"#chart\" ).igDataChart( \"getActualMinimumValue\", \"xAxis\" );\r\n\t\t\t\tvar xMax = $( \"#chart\" ).igDataChart( \"getActualMaximumValue\", \"xAxis\" );\r\n\t\t\t\tvar newRight = ( ui.newValue.setHours( 0, 0, 0, 0 ) - xMin ) \/ ( xMax - xMin ) * 100;\r\n\t\t\t\tnewRight = Math.max( 0, Math.min( 100, newRight ) );\r\n\t\t\t\tvar currentZoom = $( \"#zoom\" ).igZoombar( \"zoom\" );\r\n\t\t\t\t$( \"#zoom\" ).igZoombar( \"zoom\", currentZoom.left, newRight- currentZoom.left );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$( \"#yMinText\" ).igNumericEditor( {\r\n\t\t\tdataType: \"double\",\r\n\t\t\tmaxDecimals: 10,\r\n\t\t\theight: 25,\r\n\t\t\twidth: 75\r\n\t\t} );\r\n\r\n\t\t$( \"#yMaxText\" ).igNumericEditor( {\r\n\t\t\tdataType: \"double\",\r\n\t\t\tmaxDecimals: 10,\r\n\t\t\theight: 25,\r\n\t\t\twidth: 75\r\n\t\t} );\r\n\r\n\t\t$( \"#combo\" ).igCombo( {\r\n\t\t\t  dataSource: [],\r\n\t\t\t  textKey: \"Name\",\r\n\t\t\t  valueKey: \"Value\",\r\n\t\t\t  width: \"170px\",\r\n\t\t\t  height: \"25px\",\r\n\t\t\t  autoComplete: true,\r\n\t\t\t  selectionChanged: function( evt, ui ) {\r\n\t\t\t\t  if ( ui.items.length > 0 ) {\r\n\t\t\t\t\t  SetYAxisRangeTextBox( ui.items[ 0 ].data.Value, ui.items[ 0 ].data.Name );\r\n\t\t\t\t  }\r\n\t\t\t  }\r\n\t\t } );\r\n\r\n\t\t $( \"#combo\" ).igCombo( \"comboWrapper\" ).find( \".ui-igcombo-clear\" ).on( \"click\", function() {\r\n\t\t\t $( \"#yMinText\" ).igNumericEditor( \"option\", \"value\", \"\" );\r\n\t\t\t $( \"#yMaxText\" ).igNumericEditor( \"option\", \"value\", \"\" );\r\n\t\t\t $( \"#chkLog\" ).prop( \"checked\", false );\r\n\t\t } );\r\n\r\n\t\t if ( downloadFlag === false ) {\r\n\t\t\t document.getElementById( \"csv_tr\" ).style.display = 'none';\r\n\t\t }\r\n\r\n\t} );\r\n\r\n\tfunction ExportImage() {\r\n\t\tvar img = $( '#chart' ).igDataChart( \"exportImage\", $( '#chart' ).width(), $( '#chart' ).height() );\r\n\t\tvar image_data = atob( img.src.split( ',' )[ 1 ] );\r\n\t\tvar arraybuffer = new ArrayBuffer( image_data.length );\r\n\t\tvar view = new Uint8Array( arraybuffer );\r\n\t\tfor ( var i=0; i<image_data.length; i++ ) {\r\n\t\t\tview[ i ] = image_data.charCodeAt( i ) & 0xff;\r\n\t\t}\r\n\t\tvar blob = new Blob( [ arraybuffer ], { type: 'image\/jpeg' } );\r\n\t\tsaveAs( blob, \"img.jpg\" );\r\n\t}\r\n\r\n\tfunction SetYAxisRangeTextBox( axisName, axisTitle ) {\r\n\t\tvar topMostValue\t= $( \"#chart\" ).igDataChart( \"getActualMaximumValue\", axisName );\r\n\t\tvar bottomMostValue = $( \"#chart\" ).igDataChart( \"getActualMinimumValue\", axisName );\r\n\t\t$( \"#yMinText\" ).igNumericEditor( \"option\", \"value\", bottomMostValue );\r\n\t\t$( \"#yMaxText\" ).igNumericEditor( \"option\", \"value\", topMostValue );\r\n\t\tif ( Object.keys( yAxisMinMax ).some( function( ax ) { return yAxisMinMax[ ax ].title === axisTitle; } ) ) {\r\n\t\t\tvar aa = Object.keys( yAxisMinMax ).filter( function( ax ) { return yAxisMinMax[ ax ].title === axisTitle; } );\r\n\t\t\t$( \"#chkLog\" ).prop( \"checked\", yAxisMinMax[ aa[ 0 ] ].isLogarithmic );\r\n\t\t} else {\r\n\t\t\t$( \"#chkLog\" ).prop( \"checked\", false );\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setYMinMaxAxis() {\r\n\t\tvar items = $( \"#combo\" ).igCombo( \"selectedItems\" );\r\n\t\tif ( items !== null && items.length > 0 ) {\r\n\t\t\tvar axisName  = items[ 0 ].data.Value;\r\n\t\t\tvar axisTitle = items[ 0 ].data.Name;\r\n\t\t\tvar min = $( \"#yMinText\" ).igNumericEditor( \"option\", \"value\" );\r\n\t\t\tvar max = $( \"#yMaxText\" ).igNumericEditor( \"option\", \"value\" );\r\n\t\t\tif ( min < max ) {\r\n\t\t\t\tif ( $( \"#chkLog\" ).prop( \"checked\" ) === false ) {\r\n\t\t\t\t\t$( \"#chart\" ).igDataChart( \"option\", \"axes\", [ { name: axisName, minimumValue: min, maximumValue: max, isLogarithmic: false } ] );\r\n\t\t\t\t\tyAxisMinMax[ axisName ] = { minimumValue: min, maximumValue: max, isLogarithmic: false, title: axisTitle };\r\n\t\t\t\t} else if ( 0 < min ) {\r\n\t\t\t\t\t$( \"#chart\" ).igDataChart( \"option\", \"axes\", [ { name: axisName, minimumValue: min, maximumValue: max, isLogarithmic: true } ] );\r\n\t\t\t\t\tyAxisMinMax[ axisName ] = { minimumValue: min, maximumValue: max, isLogarithmic: true, title: axisTitle };\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$( \"#chkLog\" ).prop( \"checked\", false );\r\n\t\t\t\t\t$( \"#errorMessage\" ).text( \"\u5bfe\u6570\u8ef8\u306e\u6700\u5c0f\u5024\u304c 0 \u4ee5\u4e0b\u3067\u3059\u3002\" );\r\n\t\t\t\t\t$( \"#errorMessage\" ).stop( true, true ).fadeIn( 200 ).fadeOut( 3000 );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t$( \"#errorMessage\" ).text( \"\u6700\u5c0f\u5024\u2267\u6700\u5927\u5024\" );\r\n\t\t\t\t$( \"#errorMessage\" ).stop( true, true ).fadeIn( 200 ).fadeOut( 3000 );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n<\/script>\r\n","protected":false},"excerpt":{"rendered":"\u4f7f\u3044\u65b9 \u30d8\u30eb\u30d7 \"\u30c7\u30fc\u30bf\u306e\u9078\u629e\"\u3088\u308a\u4e0b\u306b\u3042\u308b\u4e09\u89d2\u5f62\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c4\u30ea\u30fc\u30e1\u30cb\u30e5\u30fc\u3092\u5c55\u958b\u3057\u307e\u3059\u3002 \u30b0\u30e9\u30d5\u63cf\u753b\u3057\u305f\u3044\u30c7\u30fc\u30bf\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u9078\u629e\u3057\u307e\u3059\u3002 \u753b\u9762\u4e2d\u592e\u306e\u300c\u63cf\u753b\u300d\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u30b0\u30e9\u30d5\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002 \u30c7\u30fc\u30bf [&hellip;]","protected":false},"author":1,"featured_media":0,"parent":229,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","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,"footnotes":""},"class_list":["post-490","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/pages\/490","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/comments?post=490"}],"version-history":[{"count":85,"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/pages\/490\/revisions"}],"predecessor-version":[{"id":5309,"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/pages\/490\/revisions\/5309"}],"up":[{"embeddable":true,"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/pages\/229"}],"wp:attachment":[{"href":"https:\/\/fdada.info\/fdada\/wp-json\/wp\/v2\/media?parent=490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}