Skip to content

Instantly share code, notes, and snippets.

@Matthew238
Last active June 6, 2016 09:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Matthew238/efc246bbe00f1f7c17a9 to your computer and use it in GitHub Desktop.
Save Matthew238/efc246bbe00f1f7c17a9 to your computer and use it in GitHub Desktop.
Chrome上での実行とそのデバッガーの利用を前提とした高専ロボコンDBのキャンパスコード生成のためのhtmlファイルに内包されたJavaScriptソースコード。
<!-- -*- encoding: utf-8 -*- -->
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
</style>
<script src="http://maps.google.com/maps/api/js?v=3&sensor=false"
type="text/javascript" charset="UTF-8"></script>
<script type="text/javascript" charset="UTF-8">
//<![CDATA[
var tableHeader = "地区コード, キャンパス名, 略称, 緯度, 経度, キャンパスコード";
var campusTable = [
[1, "旭川工業高等専門学校", "旭川", 0, 0, 0],
[1, "釧路工業高等専門学校", "釧路", 0, 0, 0],
[1, "苫小牧工業高等専門学校", "苫小牧", 0, 0, 0],
[1, "函館工業高等専門学校", "函館", 0, 0, 0],
[1, "札幌市立高等専門学校", "札幌", 0, 0, 0],
[2, "八戸工業高等専門学校", "八戸", 0, 0, 0],
[2, "秋田工業高等専門学校", "秋田", 39.772519, 140.079455, 0],
[2, "一関工業高等専門学校", "一関", 38.923780, 141.107268, 0],
[2, "仙台高等専門学校名取キャンパス", "仙台名取", 0, 0, 0],
[2, "仙台高等専門学校広瀬キャンパス", "仙台広瀬", 0, 0, 0],
[2, "鶴岡工業高等専門学校", "鶴岡", 0, 0, 0],
[2, "福島工業高等専門学校", "福島", 0, 0, 0],
[3, "長岡工業高等専門学校", "長岡", 0, 0, 0],
[3, "長野工業高等専門学校", "長野", 0, 0, 0],
[3, "茨城工業高等専門学校", "茨城", 0, 0, 0],
[3, "小山工業高等専門学校", "小山", 36.318303, 139.842072, 0],
[3, "群馬工業高等専門学校", "群馬", 0, 0, 0],
[3, "東京工業高等専門学校", "東京", 35.639265, 139.298829, 0],
[3, "サレジオ工業高等専門学校", "サレジオ", 0, 0, 0],
[3, "東京都立産業技術高等専門学校荒川キャンパス", "産技荒川", 35.734483, 139.809449, 0],
[3, "東京都立産業技術高等専門学校品川キャンパス", "産技品川", 35.606994, 139.749091, 0],
[3, "木更津工業高等専門学校", "木更津", 0, 0, 0],
[3, "桐蔭学園工業高等専門学校", "桐蔭", 35.566209, 139.518228, 0],
[4, "石川工業高等専門学校", "石川", 36.662102, 136.738340, 0],
[4, "富山高等専門学校射水キャンパス", "富山射水", 36.758859, 137.158814, 0],
[4, "富山高等専門学校本郷キャンパス", "富山本郷", 36.650966, 137.243970, 0],
[4, "金沢工業高等専門学校", "金沢", 0, 0, 0],
[4, "福井工業高等専門学校", "福井", 0, 0, 0],
[4, "岐阜工業高等専門学校", "岐阜", 0, 0, 0],
[4, "沼津工業高等専門学校", "沼津", 0, 0, 0],
[4, "豊田工業高等専門学校", "豊田", 0, 0, 0],
[4, "鈴鹿工業高等専門学校", "鈴鹿", 0, 0, 0],
[4, "鳥羽商船高等専門学校", "鳥羽商船", 0, 0, 0],
[5, "舞鶴工業高等専門学校", "舞鶴", 0, 0, 0],
[5, "明石工業高等専門学校", "明石", 0, 0, 0],
[5, "神戸市立工業高等専門学校", "神戸", 0, 0, 0],
[5, "大阪府立大学工業高等専門学校", "大阪府大", 0, 0, 0],
[5, "近畿大学工業高等専門学校", "近大", 0, 0, 0],
[5, "奈良工業高等専門学校", "奈良", 0, 0, 0],
[5, "和歌山工業高等専門学校", "和歌山", 0, 0, 0],
[6, "米子工業高等専門学校", "米子", 0, 0, 0],
[6, "松江工業高等専門学校", "松江", 0, 0, 0],
[6, "津山工業高等専門学校", "津山", 0, 0, 0],
[6, "呉工業高等専門学校", "呉", 0, 0, 0],
[6, "広島商船高等専門学校", "広島商船", 34.253456, 132.904204, 0],
[6, "大島商船高等専門学校", "大島商船", 0, 0, 0],
[6, "徳山工業高等専門学校", "徳山", 0, 0, 0],
[6, "宇部工業高等専門学校", "宇部", 0, 0, 0],
[7, "香川高等専門学校高松キャンパス", "香川高松", 0, 0, 0],
[7, "香川高等専門学校詫間キャンパス", "香川詫間", 0, 0, 0],
[7, "新居浜工業高等専門学校", "新居浜", 0, 0, 0],
[7, "弓削商船高等専門学校", "弓削商船", 34.253254, 133.207525, 0],
[7, "阿南工業高等専門学校", "阿南", 0, 0, 0],
[7, "高知工業高等専門学校", "高知", 0, 0, 0],
[8, "北九州工業高等専門学校", "北九州", 0, 0, 0],
[8, "大分工業高等専門学校", "大分", 0, 0, 0],
[8, "久留米工業高等専門学校", "久留米", 0, 0, 0],
[8, "有明工業高等専門学校", "有明", 0, 0, 0],
[8, "佐世保工業高等専門学校", "佐世保", 0, 0, 0],
[8, "熊本高等専門学校熊本キャンパス", "熊本熊本", 32.876771, 130.747864, 0],
[8, "熊本高等専門学校八代キャンパス", "熊本八代", 0, 0, 0],
[8, "都城工業高等専門学校", "都城", 0, 0, 0],
[8, "鹿児島工業高等専門学校", "鹿児島", 0, 0, 0],
[8, "沖縄工業高等専門学校", "沖縄", 0, 0, 0],
[9, "Electronic Engineering Polytechnic Institute of Surabaya", "スラバヤ", -7.276785, 112.794882, 0],
];
var counter = 0;
var interval = 1000; // 単位ミリ秒
function getCoordinate( name ) {
var geocoder = new google.maps.Geocoder();
var i;
var calleeName;
if ( !arguments.callee.name ) {
calleeName = "getCoordinate";
} else {
calleeName = arguments.callee.name;
}
campusTable.forEach( function( v, j ) {
if ( name.match( v[1] ) ) {
i = j;
//break;
return false;
}
});
geocoder.geocode({'address': name}, function(result, status) {
switch (status) {
case google.maps.GeocoderStatus.OK:
if ( campusTable[i][3] == 0 && campusTable[i][4] == 0 ) { // 調査済ではないキャンパスのみ処理
campusTable[i][3] = Math.round( result[0].geometry.location.lat() * 1000000 ) / 1000000;
campusTable[i][4] = Math.round( result[0].geometry.location.lng() * 1000000 ) / 1000000;
var style = "color:black; font-weight:normal;";
console.log( '%c%s :「%s」の緯度・経度取得完了。', style, calleeName, name );
} else {
var style = "color:blue; font-weight:bold;";
console.log( '%c%s : 「%s」は予め配列に設定されていた緯度・経度を優先しました。', style, calleeName, name );
}
break;
case google.maps.GeocoderStatus.ZERO_RESULTS:
if ( campusTable[i][3] == 0 ) {
var style = "color:red; font-weight:bold;";
console.log( '%c%s : 「%s」の緯度・経度を検索できませんでした。', style, calleeName, name );
} else {
var style = "color:blue; font-weight:bold;";
console.log( '%c%s : 「%s」は検索できませんでしたが、予め配列に設定されていた緯度・経度を優先しました。', style, calleeName, name );
}
break;
default:
if ( campusTable[i][3] == 0 ) {
var style = "color:orange; font-weight:bold;";
console.log( '%c%s : 「%s」の緯度・経度は何らかの理由で検索できませんでした。', style, calleeName, name );
} else {
var style = "color:blue; font-weight:bold;";
console.log( '%c%s : 「%s」は検索できませんでしたが、予め配列に設定されていた緯度・経度を優先しました。', style, calleeName, name );
}
break;
}
counter++;
if ( counter == campusTable.length ) {
var style = "color:black; font-weight:normal;";
console.log( '%c%s : 全キャンパスの緯度・経度検索終了', style, calleeName );
}
});
}
function retreive() {
counter = 0;
campusTable.forEach( function( v, i ) {
var timer = setTimeout( function() {
getCoordinate( v[1] );
}, interval * i );
});
}
function show() {
document.getElementById( "result" ).innerHTML += tableHeader + "</br>";
campusTable.forEach( function( campus ) {
document.getElementById( "result" ).innerHTML += campus.join( ", " );
document.getElementById( "result" ).innerHTML += "</br>";
});
}
function sort() {
var sortedCampusTable = [];
for ( var i = 1 ; i < 10 ; i++ ) {
var campuses = campusTable.filter( function( campus ) {
return campus[0] == i;
});
campuses.sort( function( a, b ){
if ( a[3] > b[3] ) return -1;
if ( a[3] < b[3] ) return 1;
if ( a[4] > b[4] ) return -1;
if ( a[4] < b[4] ) return 1;
return 0;
});
Array.prototype.push.apply( sortedCampusTable, campuses );
}
campusTable = sortedCampusTable;
}
function encode() {
var style = "color:black; font-weight:normal;";
var caleeName;
if ( !arguments.callee.name ) {
calleeName = "encode";
} else {
calleeName = arguments.callee.name;
}
campusTable.forEach( function( v, i ) {
v[5] = parseInt( v[0].toString() + (("00") + (i + 1)).substr(-2).toString() + "0" );
console.log( '%c%s : %s : %d', style, calleeName, v[2], v[5] );
});
}
function flush() {
document.getElementById( "result" ).innerHTML = "";
}
function download() {
if ( !window.File ) {
window.alert("このブラウザではFile APIが使えないので、「表示」させてコピー&ペーストして下さい。");
return;
}
var csvString = "";
csvString += tableHeader + "\r\n";
campusTable.forEach( function( v, i ) {
csvString += v.join( "," );
csvString += '\r\n';
});
console.log( csvString );
var blob = new Blob( [ csvString ], { type: 'text/csv' } );
window.URL = window.URL || window.webkitURL;
var a = document.createElement( "a" );
a.href = URL.createObjectURL( blob );
a.target = '_blank';
a.download = 'campus_code.csv';
a.click();
URL.revokeObjectURL( a );
}
//]]>
</script>
</head>
<body>
<div>
<input type="button" onclick="retreive()" value=" 検 索 " />
<input type="button" onclick="show()" value=" 表 示 " />
<input type="button" onclick="sort()" value=" ソート " />
<input type="button" onclick="encode()" value=" エンコード " />
<input type="button" onclick="flush()" value=" 表示消去 " />
<input type="button" onclick="download()" value="ダウンロード" />
</div>
<div id="download"></div>
<div id="result"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment