bird-api
Version:
日本の野鳥 Web API
95 lines (90 loc) • 11.5 kB
JavaScript
(function() {
var app;
app = angular.module('myApp', ['chart.js']);
app.controller('birdNameHistogram', [
'$scope', '$http', function($scope, $http) {
$scope.content = '日本ではカモ類の多くは渡り鳥ですが、カルガモは留鳥で、年中観察することができます。\nマガモは渡りを行いますが、日本で繁殖する場合もあります。\n滋賀県米原市にある三島池はマガモの繁殖の南限地として有名です。\n琵琶湖では、ヒドリガモ、コガモ、オナガガモ、キンクロハジロ、ホシハジロ、スズガモなどのカモ類が多く見られます。\nこれらのうち、ヒドリガモ、コガモ、オナガガモ、キンクロハジロ、ホシハジロは狩猟鳥です。\nコガモは狩猟者から「べ」と呼ばれます。\nその他に、カワアイサ、ウミアイサ、ミコアイサなどのアイサ類、コブハクチョウやコハクチョウ、ヒシクイ、オオヒシクイなどのガン類も見られます。';
$scope.APIbase = 'http://bird-api.biwako.io/v1/';
return $scope.request = function() {
var data, key, labels, options, ref, value;
if ($scope.histogram != null) {
labels = [];
data = [];
ref = $scope.histogram[$scope.rank];
for (key in ref) {
value = ref[key];
labels.push(key);
data.push(value);
}
$scope.labels = labels;
$scope.data = data;
return;
} else {
$scope.histogram = {};
}
options = {
method: 'GET',
url: $scope.APIbase + 'inclusion?content=' + $scope.content
};
return $http(options).then(function(arg) {
var data, histogram, j, len, ref1, sp, subRequests;
data = arg.data;
histogram = data.histogram;
subRequests = [];
ref1 = data.histogram;
for (j = 0, len = ref1.length; j < len; j++) {
sp = ref1[j];
options = {
method: 'GET',
url: $scope.APIbase + 'birds/' + sp.species.ja
};
subRequests.push($http(options));
}
return Promise.all(subRequests).then(function(results) {
var buffer, buffers, frequency, i, ja, k, l, len1, len2, m, rank, ref2, ref3, ref4, taxnomy;
buffers = [];
for (i = k = 0, ref2 = histogram.length - 1; 0 <= ref2 ? k <= ref2 : k >= ref2; i = 0 <= ref2 ? ++k : --k) {
results[i].data.taxonomies.unshift({
rank: 'species',
ja: results[i].data.name.ja
});
ref3 = results[i].data.taxonomies;
for (l = 0, len1 = ref3.length; l < len1; l++) {
taxnomy = ref3[l];
buffers.push({
frequency: histogram[i].frequency,
ja: taxnomy.ja,
rank: taxnomy.rank
});
}
}
for (m = 0, len2 = buffers.length; m < len2; m++) {
buffer = buffers[m];
rank = buffer.rank;
ja = buffer.ja;
frequency = buffer.frequency;
if ($scope.histogram[rank] == null) {
$scope.histogram[rank] = {};
}
if ($scope.histogram[rank][ja] == null) {
$scope.histogram[rank][ja] = 0;
}
$scope.histogram[rank][ja] += frequency;
}
labels = [];
data = [];
ref4 = $scope.histogram[$scope.rank];
for (key in ref4) {
value = ref4[key];
labels.push(key);
data.push(value);
}
$scope.labels = labels;
return $scope.data = data;
});
});
};
}
]);
}).call(this);
//# sourceMappingURL=data:application/json;base64,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LElBQUwsQ0FBVSxLQUFWO0FBRko7WUFHQSxNQUFNLENBQUMsTUFBUCxHQUFnQjttQkFDaEIsTUFBTSxDQUFDLElBQVAsR0FBYztVQTVCWixDQURWO1FBVGdCLENBQXBCO01BakJhO0lBWnJCLENBSGdDO0dBQXBDO0FBREEiLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIvc291cmNlLyIsInNvdXJjZXNDb250ZW50IjpbImFwcCA9IGFuZ3VsYXIubW9kdWxlICdteUFwcCcsIFsnY2hhcnQuanMnXVxuYXBwLmNvbnRyb2xsZXIgJ2JpcmROYW1lSGlzdG9ncmFtJywgW1xuICAgICckc2NvcGUnXG4gICAgJyRodHRwJ1xuICAgICgkc2NvcGUsICRodHRwKSAtPlxuICAgICAgICAkc2NvcGUuY29udGVudCA9ICcnJ1xuICAgICAgICAgICAg5pel5pys44Gn44Gv44Kr44Oi6aGe44Gu5aSa44GP44Gv5rih44KK6bOl44Gn44GZ44GM44CB44Kr44Or44Ks44Oi44Gv55WZ6bOl44Gn44CB5bm05Lit6Kaz5a+f44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCXG4gICAgICAgICAgICDjg57jgqzjg6Ljga/muKHjgorjgpLooYzjgYTjgb7jgZnjgYzjgIHml6XmnKzjgafnuYHmrpbjgZnjgovloLTlkIjjgoLjgYLjgorjgb7jgZnjgIJcbiAgICAgICAgICAgIOa7i+izgOecjOexs+WOn+W4guOBq+OBguOCi+S4ieWztuaxoOOBr+ODnuOCrOODouOBrue5geauluOBruWNl+mZkOWcsOOBqOOBl+OBpuacieWQjeOBp+OBmeOAglxuICAgICAgICAgICAg55C155C25rmW44Gn44Gv44CB44OS44OJ44Oq44Ks44Oi44CB44Kz44Ks44Oi44CB44Kq44OK44Ks44Ks44Oi44CB44Kt44Oz44Kv44Ot44OP44K444Ot44CB44Ob44K344OP44K444Ot44CB44K544K644Ks44Oi44Gq44Gp44Gu44Kr44Oi6aGe44GM5aSa44GP6KaL44KJ44KM44G+44GZ44CCXG4gICAgICAgICAgICDjgZPjgozjgonjga7jgYbjgaHjgIHjg5Ljg4njg6rjgqzjg6LjgIHjgrPjgqzjg6LjgIHjgqrjg4rjgqzjgqzjg6LjgIHjgq3jg7Pjgq/jg63jg4/jgrjjg63jgIHjg5vjgrfjg4/jgrjjg63jga/ni6nnjJ/ps6XjgafjgZnjgIJcbiAgICAgICAgICAgIOOCs+OCrOODouOBr+eLqeeMn+iAheOBi+OCieOAjOOBueOAjeOBqOWRvOOBsOOCjOOBvuOBmeOAglxuICAgICAgICAgICAg44Gd44Gu5LuW44Gr44CB44Kr44Ov44Ki44Kk44K144CB44Km44Of44Ki44Kk44K144CB44Of44Kz44Ki44Kk44K144Gq44Gp44Gu44Ki44Kk44K16aGe44CB44Kz44OW44OP44Kv44OB44On44Km44KE44Kz44OP44Kv44OB44On44Km44CB44OS44K344Kv44Kk44CB44Kq44Kq44OS44K344Kv44Kk44Gq44Gp44Gu44Ks44Oz6aGe44KC6KaL44KJ44KM44G+44GZ44CCXG4gICAgICAnJydcbiAgICAgICAgJHNjb3BlLkFQSWJhc2UgPSAnaHR0cDovL2JpcmQtYXBpLmJpd2Frby5pby92MS8nXG5cbiAgICAgICAgJHNjb3BlLnJlcXVlc3QgPSAtPlxuICAgICAgICAgICAgaWYgJHNjb3BlLmhpc3RvZ3JhbT9cbiAgICAgICAgICAgICAgICBsYWJlbHMgPSBbXVxuICAgICAgICAgICAgICAgIGRhdGEgPSBbXVxuICAgICAgICAgICAgICAgIGZvciBrZXksdmFsdWUgb2YgJHNjb3BlLmhpc3RvZ3JhbVskc2NvcGUucmFua11cbiAgICAgICAgICAgICAgICAgICAgbGFiZWxzLnB1c2gga2V5XG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaCB2YWx1ZVxuICAgICAgICAgICAgICAgICRzY29wZS5sYWJlbHMgPSBsYWJlbHNcbiAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YSA9IGRhdGFcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAkc2NvcGUuaGlzdG9ncmFtID0ge31cblxuICAgICAgICAgICAgb3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJ1xuICAgICAgICAgICAgICAgIHVybDogJHNjb3BlLkFQSWJhc2UgKyAnaW5jbHVzaW9uP2NvbnRlbnQ9JyArICRzY29wZS5jb250ZW50XG5cbiAgICAgICAgICAgICRodHRwKG9wdGlvbnMpLnRoZW4gKHtkYXRhfSkgLT5cbiAgICAgICAgICAgICAgICBoaXN0b2dyYW0gPSBkYXRhLmhpc3RvZ3JhbVxuICAgICAgICAgICAgICAgIHN1YlJlcXVlc3RzID0gW11cbiAgICAgICAgICAgICAgICBmb3Igc3AgaW4gZGF0YS5oaXN0b2dyYW1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICRzY29wZS5BUEliYXNlICsgJ2JpcmRzLycgKyBzcC5zcGVjaWVzLmphXG4gICAgICAgICAgICAgICAgICAgIHN1YlJlcXVlc3RzLnB1c2ggJGh0dHAob3B0aW9ucylcblxuICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKHN1YlJlcXVlc3RzKVxuICAgICAgICAgICAgICAgICAgICAudGhlbiAocmVzdWx0cykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICMgdHJhbnNmb3JtIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVycyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBbMC4uaGlzdG9ncmFtLmxlbmd0aC0xXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0uZGF0YS50YXhvbm9taWVzLnVuc2hpZnQge3Jhbms6J3NwZWNpZXMnLCBqYTogcmVzdWx0c1tpXS5kYXRhLm5hbWUuamF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRheG5vbXkgaW4gcmVzdWx0c1tpXS5kYXRhLnRheG9ub21pZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVycy5wdXNoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeTogaGlzdG9ncmFtW2ldLmZyZXF1ZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamE6IHRheG5vbXkuamFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbms6IHRheG5vbXkucmFua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBidWZmZXIgaW4gYnVmZmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBidWZmZXIucmFua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphID0gYnVmZmVyLmphXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5ID0gYnVmZmVyLmZyZXF1ZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAkc2NvcGUuaGlzdG9ncmFtW3JhbmtdP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuaGlzdG9ncmFtW3JhbmtdID0ge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgJHNjb3BlLmhpc3RvZ3JhbVtyYW5rXVtqYV0/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5oaXN0b2dyYW1bcmFua11bamFdID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5oaXN0b2dyYW1bcmFua11bamFdICs9IGZyZXF1ZW5jeVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LHZhbHVlIG9mICRzY29wZS5oaXN0b2dyYW1bJHNjb3BlLnJhbmtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzLnB1c2gga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUubGFiZWxzID0gbGFiZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0YSA9IGRhdGFcbl1cbiJdfQ==