Mercurial > hgrepos > hgweb.cgi > skipweb
changeset 3491:1d96e03d02ed
add js and cgi
author | mituyuki <c115107@g.koeki-u.ac.jp> |
---|---|
date | Sat, 29 Jul 2017 15:48:05 +0900 |
parents | 9011d7448c3d |
children | 9b558db64e6e |
files | event/oasis2017/idol/idol.cgi event/oasis2017/idol/idol.js |
diffstat | 2 files changed, 91 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/event/oasis2017/idol/idol.cgi Sat Jul 29 15:48:05 2017 +0900 @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby22 +# -*- coding: utf-8 -*- +require 'cgi' +require 'json' +require 'sqlite3' +dbfile = './db/data.sq3' + +c = CGI.new({'accept_charset' => 'utf-8'}) +#print "Content-type: application/json; charset=UTF-8\n\n" +print "Content-type: text/plain; charset=UTF-8\n\n" + +value = c['value'].to_f +#tag = c['tag'] +#now = Time.now.to_s +db = SQLite3::Database.new(dbfile) +db.busy_timeout = 1000 +#db.execute("CREATE TABLE IF NOT EXISTS foo(tag text, time text, val real);") +db.execute("CREATE TABLE IF NOT EXISTS foo(time text, val real);") +#db.execute("INSERT INTO foo VALUES(?, ?, ?);", tag, now, value) +val = {} +#val['合計'] = +# db.execute("SELECT sum(val) FROM foo WHERE tag=?", tag)[0][0].to_f +#val['平均'] = +# db.execute("SELECT avg(val) FROM foo WHERE tag=?", tag)[0][0].to_f.round(2) +#res = db.execute("SELECT val FROM foo WHERE tag=?", tag) +#val['全件'] = res.collect{|row| row[0]} # 先頭カラムを集める +val['差'] = value + +puts JSON.pretty_generate(val)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/event/oasis2017/idol/idol.js Sat Jul 29 15:48:05 2017 +0900 @@ -0,0 +1,62 @@ +function game(){ + var gps = document.getElementById("get"); + var txt = document.getElementById("txt"); + var sa = document.getElementById("geosa"); + var num = 0, latlng; + var dis; + function tryGetGPS() { + if (fail == -1) {fail = 3;} + navigator.geolocation.getCurrentPosition( + onSuccess, onError,{ + maximumAge: 0, timeout: 3000, enableHighAccuracy: true + }); + } + function onSuccess(pos){ + if (num == 0){ + latlng = L.latLng([pos.coords.latitude, pos.coords.longitude]); + txt.textContent = "位置情報の取得に成功"; + num += 1; + } else { + var lat1 = L.latLng([pos.coords.latitude, pos.coords.longitude]); + dis = latlng.distanceTo(lat1) + dis = dis /= 5; + alert(dis); + sa.textContent = "移動によるボーナスポイント:"+dis; + txt.textContent = "位置情報の取得に成功"; + latlng = lat1; + document.getElementById('js-sub').addEventListener('click', submit); + } + } + var fail = 3; + function onError(err) { // 失敗時 + txt.textContent = "現在位置の取得失敗.(あと"+(--fail)+"回実行します)"; + if (fail > 0){ + tryGetGPS(); + } + else { + txt.textContent = "現在位置をよみとれません。QRコードからお楽しみ下さい" + + } + } + function respond(str) { + if (this.readyState == 4) { + var resp = JSON.parse(this.responseText); + var str = resp['差']; + document.getElementById('result').textContent = str; + } + } + function submit() { + if (dis != undefined) { + var conn = new XMLHttpRequest(); + conn.open('POST', './idol.cgi'); + conn.setRequestHeader( + 'Content-Type', 'application/x-www-form-urlencoded'); + conn.send('value='+encodeURIComponent(dis)) + conn.onreadystatechange = respond; + } + } + gps.addEventListener("click", function() {tryGetGPS();}, false); + document.getElementById('js-sub').addEventListener('click', submit); +} +document.addEventListener("DOMContentLoaded", function() { + game();}, false);