initial
This commit is contained in:
commit
91386bcc67
9 changed files with 740 additions and 0 deletions
1
.agignore
Normal file
1
.agignore
Normal file
|
@ -0,0 +1 @@
|
|||
static/jquery-ui/
|
163
app.py
Normal file
163
app.py
Normal file
|
@ -0,0 +1,163 @@
|
|||
import flask
|
||||
import sqlite3
|
||||
from datetime import datetime
|
||||
|
||||
from flask import Flask, render_template, redirect, url_for, request, jsonify
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
|
||||
import sqlalchemy.exc
|
||||
from sqlalchemy_utils import PasswordType
|
||||
|
||||
# from sqlalchemy import Column, Integer, String
|
||||
# from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
# TODO: sqlalchemy?
|
||||
|
||||
# schema:
|
||||
# Utente: uid, username, password
|
||||
# TipoRadio: trid, tipo
|
||||
# Avvistamento: aid, uid, tipo_radio, data, commento
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///map.db"
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
|
||||
class User(db.Model):
|
||||
__tablename__ = "user"
|
||||
|
||||
uid = db.Column(db.Integer, primary_key=True, nullable=False)
|
||||
username = db.Column(db.String, unique=True)
|
||||
password = db.Column(PasswordType(schemes=["pbkdf2_sha512"]))
|
||||
|
||||
rapporti = db.relationship("RapportoRicezione")
|
||||
|
||||
|
||||
class TipoRadio(db.Model):
|
||||
__tablename__ = "tiporadio"
|
||||
tid = db.Column(db.Integer, primary_key=True, nullable=False)
|
||||
nome = db.Column(db.Unicode)
|
||||
descrizione = db.Column(db.Unicode)
|
||||
|
||||
rapporti = db.relationship("RapportoRicezione")
|
||||
|
||||
|
||||
class RapportoRicezione(db.Model):
|
||||
__tablename__ = "rapporto"
|
||||
|
||||
rid = db.Column(db.Integer, primary_key=True)
|
||||
uid = db.Column(db.Integer, db.ForeignKey("user.uid"))
|
||||
tid = db.Column(db.Integer, db.ForeignKey("tiporadio.tid"))
|
||||
|
||||
date = db.Column(db.Date, default=lambda: datetime.now())
|
||||
|
||||
lat = db.Column(db.Float)
|
||||
lng = db.Column(db.Float)
|
||||
|
||||
comprensibile = db.Column(db.Integer) # TODO: >= 0 <= 5
|
||||
stabilita = db.Column(db.Integer) # TODO: >= 0 <= 5
|
||||
|
||||
author = db.relationship(User, back_populates="rapporti")
|
||||
tipo_radio = db.relationship(TipoRadio, back_populates="rapporti")
|
||||
|
||||
def serialize(self):
|
||||
d = {k:v for k,v in self.__dict__.items() if not k.startswith('_')}
|
||||
d['colore'] = self.colore
|
||||
d['radius'] = self.radius
|
||||
d['explaination'] = self.explaination
|
||||
return d
|
||||
|
||||
@property
|
||||
def colore(self):
|
||||
c = self.comprensibile
|
||||
if c > 3:
|
||||
return 'green'
|
||||
if c > 1:
|
||||
return 'yellow'
|
||||
return 'red'
|
||||
|
||||
@property
|
||||
def radius(self):
|
||||
return self.stabilita * 70
|
||||
|
||||
@property
|
||||
def explaination(self):
|
||||
return 'Aggiunto il %s da %s' % (self.date, self.author.username)
|
||||
|
||||
def __repr__(self):
|
||||
return "<Rapporto %s del %s>" % (self.rid, self.date)
|
||||
|
||||
|
||||
@app.before_first_request
|
||||
def init_db():
|
||||
db.create_all()
|
||||
|
||||
try:
|
||||
anon = User(username="anonymous", password="antani")
|
||||
db.session.add(anon)
|
||||
db.session.commit()
|
||||
except sqlalchemy.exc.IntegrityError:
|
||||
db.session.rollback()
|
||||
|
||||
for nome in ["radiolina portatile", "autoradio", "stereo fisso dentro casa"]:
|
||||
try:
|
||||
t = TipoRadio(nome=nome)
|
||||
db.session.add(t)
|
||||
db.session.commit()
|
||||
except sqlalchemy.exc.IntegrityError:
|
||||
db.session.rollback()
|
||||
|
||||
cnt = int(RapportoRicezione.query.count())
|
||||
if cnt == 0:
|
||||
for i in range(6):
|
||||
r = RapportoRicezione(
|
||||
uid=User.query.filter(User.username == "anonymous")[0].uid,
|
||||
tid=TipoRadio.query.all()[0].tid,
|
||||
stabilita=i,
|
||||
comprensibile=i,
|
||||
lat=43.8199 - i * 0.01,
|
||||
lng=11.22185 + i * 0.03,
|
||||
)
|
||||
db.session.add(r)
|
||||
db.session.commit()
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def home():
|
||||
return render_template("index.html")
|
||||
|
||||
@app.route("/add")
|
||||
def add():
|
||||
return render_template("add.html")
|
||||
|
||||
|
||||
@app.route("/api/rapporti/get")
|
||||
def get_rapporti():
|
||||
query = RapportoRicezione.query.all()
|
||||
# TODO: usa query params per filtrare in base a $cose
|
||||
return jsonify(dict(rapporti=[r.serialize() for r in query]))
|
||||
|
||||
@app.route("/api/rapporti/add", methods=['POST'])
|
||||
def add_rapporto():
|
||||
anon = User.query.filter(User.username=='anonymous')[0].uid
|
||||
r = RapportoRicezione(
|
||||
uid=anon,
|
||||
lat=request.form['lat'],
|
||||
lng=request.form['lng'],
|
||||
stabilita=request.form['stabilita'],
|
||||
comprensibile=request.form['comprensibile'],
|
||||
|
||||
)
|
||||
db.session.add(r)
|
||||
db.session.commit()
|
||||
|
||||
r = RapportoRicezione.query.get(r.rid)
|
||||
return jsonify(r.serialize())
|
||||
|
||||
@app.route("/api/rapporti/delete", methods=['POST'])
|
||||
def delete_rapporto():
|
||||
r = RapportoRicezione.query.get(int(request.form['rid']))
|
||||
db.session.delete(r)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify(True)
|
11
requirements.txt
Normal file
11
requirements.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
Click==7.0
|
||||
Flask-SQLAlchemy==2.4.1
|
||||
Flask==1.1.1
|
||||
Jinja2==2.11.1
|
||||
MarkupSafe==1.1.1
|
||||
SQLAlchemy-Utils==0.36.1
|
||||
SQLAlchemy==1.3.13
|
||||
Werkzeug==1.0.0
|
||||
itsdangerous==1.1.0
|
||||
passlib==1.7.2
|
||||
six==1.14.0
|
333
static/jquery-ui/AUTHORS.txt
Normal file
333
static/jquery-ui/AUTHORS.txt
Normal file
|
@ -0,0 +1,333 @@
|
|||
Authors ordered by first contribution
|
||||
A list of current team members is available at http://jqueryui.com/about
|
||||
|
||||
Paul Bakaus <paul.bakaus@gmail.com>
|
||||
Richard Worth <rdworth@gmail.com>
|
||||
Yehuda Katz <wycats@gmail.com>
|
||||
Sean Catchpole <sean@sunsean.com>
|
||||
John Resig <jeresig@gmail.com>
|
||||
Tane Piper <piper.tane@gmail.com>
|
||||
Dmitri Gaskin <dmitrig01@gmail.com>
|
||||
Klaus Hartl <klaus.hartl@gmail.com>
|
||||
Stefan Petre <stefan.petre@gmail.com>
|
||||
Gilles van den Hoven <gilles@webunity.nl>
|
||||
Micheil Bryan Smith <micheil@brandedcode.com>
|
||||
Jörn Zaefferer <joern.zaefferer@gmail.com>
|
||||
Marc Grabanski <m@marcgrabanski.com>
|
||||
Keith Wood <kbwood@iinet.com.au>
|
||||
Brandon Aaron <brandon.aaron@gmail.com>
|
||||
Scott González <scott.gonzalez@gmail.com>
|
||||
Eduardo Lundgren <eduardolundgren@gmail.com>
|
||||
Aaron Eisenberger <aaronchi@gmail.com>
|
||||
Joan Piedra <theneojp@gmail.com>
|
||||
Bruno Basto <b.basto@gmail.com>
|
||||
Remy Sharp <remy@leftlogic.com>
|
||||
Bohdan Ganicky <bohdan.ganicky@gmail.com>
|
||||
David Bolter <david.bolter@gmail.com>
|
||||
Chi Cheng <cloudream@gmail.com>
|
||||
Ca-Phun Ung <pazu2k@gmail.com>
|
||||
Ariel Flesler <aflesler@gmail.com>
|
||||
Maggie Wachs <maggie@filamentgroup.com>
|
||||
Scott Jehl <scottjehl@gmail.com>
|
||||
Todd Parker <todd@filamentgroup.com>
|
||||
Andrew Powell <andrew@shellscape.org>
|
||||
Brant Burnett <btburnett3@gmail.com>
|
||||
Douglas Neiner <doug@dougneiner.com>
|
||||
Paul Irish <paul.irish@gmail.com>
|
||||
Ralph Whitbeck <ralph.whitbeck@gmail.com>
|
||||
Thibault Duplessis <thibault.duplessis@gmail.com>
|
||||
Dominique Vincent <dominique.vincent@toitl.com>
|
||||
Jack Hsu <jack.hsu@gmail.com>
|
||||
Adam Sontag <ajpiano@ajpiano.com>
|
||||
Carl Fürstenberg <carl@excito.com>
|
||||
Kevin Dalman <development@allpro.net>
|
||||
Alberto Fernández Capel <afcapel@gmail.com>
|
||||
Jacek Jędrzejewski (http://jacek.jedrzejewski.name)
|
||||
Ting Kuei <ting@kuei.com>
|
||||
Samuel Cormier-Iijima <sam@chide.it>
|
||||
Jon Palmer <jonspalmer@gmail.com>
|
||||
Ben Hollis <bhollis@amazon.com>
|
||||
Justin MacCarthy <Justin@Rubystars.biz>
|
||||
Eyal Kobrigo <kobrigo@hotmail.com>
|
||||
Tiago Freire <tiago.freire@gmail.com>
|
||||
Diego Tres <diegotres@gmail.com>
|
||||
Holger Rüprich <holger@rueprich.de>
|
||||
Ziling Zhao <zilingzhao@gmail.com>
|
||||
Mike Alsup <malsup@gmail.com>
|
||||
Robson Braga Araujo <robsonbraga@gmail.com>
|
||||
Pierre-Henri Ausseil <ph.ausseil@gmail.com>
|
||||
Christopher McCulloh <cmcculloh@gmail.com>
|
||||
Andrew Newcomb <ext.github@preceptsoftware.co.uk>
|
||||
Lim Chee Aun <cheeaun@gmail.com>
|
||||
Jorge Barreiro <yortx.barry@gmail.com>
|
||||
Daniel Steigerwald <daniel@steigerwald.cz>
|
||||
John Firebaugh <john_firebaugh@bigfix.com>
|
||||
John Enters <github@darkdark.net>
|
||||
Andrey Kapitcyn <ru.m157y@gmail.com>
|
||||
Dmitry Petrov <dpetroff@gmail.com>
|
||||
Eric Hynds <eric@hynds.net>
|
||||
Chairat Sunthornwiphat <pipo@sixhead.com>
|
||||
Josh Varner <josh.varner@gmail.com>
|
||||
Stéphane Raimbault <stephane.raimbault@gmail.com>
|
||||
Jay Merrifield <fracmak@gmail.com>
|
||||
J. Ryan Stinnett <jryans@gmail.com>
|
||||
Peter Heiberg <peter@heiberg.se>
|
||||
Alex Dovenmuehle <adovenmuehle@gmail.com>
|
||||
Jamie Gegerson <git@jamiegegerson.com>
|
||||
Raymond Schwartz <skeetergraphics@gmail.com>
|
||||
Phillip Barnes <philbar@gmail.com>
|
||||
Kyle Wilkinson <kai@wikyd.org>
|
||||
Khaled AlHourani <me@khaledalhourani.com>
|
||||
Marian Rudzynski <mr@impaled.org>
|
||||
Jean-Francois Remy <jeff@melix.org>
|
||||
Doug Blood <dougblood@gmail.com>
|
||||
Filippo Cavallarin <filippo.cavallarin@codseq.it>
|
||||
Heiko Henning <heiko@thehennings.ch>
|
||||
Aliaksandr Rahalevich <saksmlz@gmail.com>
|
||||
Mario Visic <mario@mariovisic.com>
|
||||
Xavi Ramirez <xavi.rmz@gmail.com>
|
||||
Max Schnur <max.schnur@gmail.com>
|
||||
Saji Nediyanchath <saji89@gmail.com>
|
||||
Corey Frang <gnarf37@gmail.com>
|
||||
Aaron Peterson <aaronp123@yahoo.com>
|
||||
Ivan Peters <ivan@ivanpeters.com>
|
||||
Mohamed Cherif Bouchelaghem <cherifbouchelaghem@yahoo.fr>
|
||||
Marcos Sousa <falecomigo@marcossousa.com>
|
||||
Michael DellaNoce <mdellanoce@mailtrust.com>
|
||||
George Marshall <echosx@gmail.com>
|
||||
Tobias Brunner <tobias@strongswan.org>
|
||||
Martin Solli <msolli@gmail.com>
|
||||
David Petersen <public@petersendidit.com>
|
||||
Dan Heberden <danheberden@gmail.com>
|
||||
William Kevin Manire <williamkmanire@gmail.com>
|
||||
Gilmore Davidson <gilmoreorless@gmail.com>
|
||||
Michael Wu <michaelmwu@gmail.com>
|
||||
Adam Parod <mystic414@gmail.com>
|
||||
Guillaume Gautreau <guillaume+github@ghusse.com>
|
||||
Marcel Toele <EleotleCram@gmail.com>
|
||||
Dan Streetman <ddstreet@ieee.org>
|
||||
Matt Hoskins <matt@nipltd.com>
|
||||
Giovanni Giacobbi <giovanni@giacobbi.net>
|
||||
Kyle Florence <kyle.florence@gmail.com>
|
||||
Pavol Hluchý <lopo@losys.sk>
|
||||
Hans Hillen <hans.hillen@gmail.com>
|
||||
Mark Johnson <virgofx@live.com>
|
||||
Trey Hunner <treyhunner@gmail.com>
|
||||
Shane Whittet <whittet@gmail.com>
|
||||
Edward A Faulkner <ef@alum.mit.edu>
|
||||
Adam Baratz <adam@adambaratz.com>
|
||||
Kato Kazuyoshi <kato.kazuyoshi@gmail.com>
|
||||
Eike Send <eike.send@gmail.com>
|
||||
Kris Borchers <kris.borchers@gmail.com>
|
||||
Eddie Monge <eddie@eddiemonge.com>
|
||||
Israel Tsadok <itsadok@gmail.com>
|
||||
Carson McDonald <carson@ioncannon.net>
|
||||
Jason Davies <jason@jasondavies.com>
|
||||
Garrison Locke <gplocke@gmail.com>
|
||||
David Murdoch <david@davidmurdoch.com>
|
||||
Benjamin Scott Boyle <benjamins.boyle@gmail.com>
|
||||
Jesse Baird <jebaird@gmail.com>
|
||||
Jonathan Vingiano <jvingiano@gmail.com>
|
||||
Dylan Just <dev@ephox.com>
|
||||
Hiroshi Tomita <tomykaira@gmail.com>
|
||||
Glenn Goodrich <glenn.goodrich@gmail.com>
|
||||
Tarafder Ashek-E-Elahi <mail.ashek@gmail.com>
|
||||
Ryan Neufeld <ryan@neufeldmail.com>
|
||||
Marc Neuwirth <marc.neuwirth@gmail.com>
|
||||
Philip Graham <philip.robert.graham@gmail.com>
|
||||
Benjamin Sterling <benjamin.sterling@kenzomedia.com>
|
||||
Wesley Walser <waw325@gmail.com>
|
||||
Kouhei Sutou <kou@clear-code.com>
|
||||
Karl Kirch <karlkrch@gmail.com>
|
||||
Chris Kelly <ckdake@ckdake.com>
|
||||
Jason Oster <jay@kodewerx.org>
|
||||
Felix Nagel <info@felixnagel.com>
|
||||
Alexander Polomoshnov <alex.polomoshnov@gmail.com>
|
||||
David Leal <dgleal@gmail.com>
|
||||
Igor Milla <igor.fsp.milla@gmail.com>
|
||||
Dave Methvin <dave.methvin@gmail.com>
|
||||
Florian Gutmann <f.gutmann@chronimo.com>
|
||||
Marwan Al Jubeh <marwan.aljubeh@gmail.com>
|
||||
Milan Broum <midlis@googlemail.com>
|
||||
Sebastian Sauer <info@dynpages.de>
|
||||
Gaëtan Muller <m.gaetan89@gmail.com>
|
||||
Michel Weimerskirch <michel@weimerskirch.net>
|
||||
William Griffiths <william@ycymro.com>
|
||||
Stojce Slavkovski <stojce@gmail.com>
|
||||
David Soms <david.soms@gmail.com>
|
||||
David De Sloovere <david.desloovere@outlook.com>
|
||||
Michael P. Jung <michael.jung@terreon.de>
|
||||
Shannon Pekary <spekary@gmail.com>
|
||||
Dan Wellman <danwellman@hotmail.com>
|
||||
Matthew Edward Hutton <meh@corefiling.co.uk>
|
||||
James Khoury <james@jameskhoury.com>
|
||||
Rob Loach <robloach@gmail.com>
|
||||
Alberto Monteiro <betimbrasil@gmail.com>
|
||||
Alex Rhea <alex.rhea@gmail.com>
|
||||
Krzysztof Rosiński <rozwell69@gmail.com>
|
||||
Ryan Olton <oltonr@gmail.com>
|
||||
Genie <386@mail.com>
|
||||
Rick Waldron <waldron.rick@gmail.com>
|
||||
Ian Simpson <spoonlikesham@gmail.com>
|
||||
Lev Kitsis <spam4lev@gmail.com>
|
||||
TJ VanToll <tj.vantoll@gmail.com>
|
||||
Justin Domnitz <jdomnitz@gmail.com>
|
||||
Douglas Cerna <douglascerna@yahoo.com>
|
||||
Bert ter Heide <bertjh@hotmail.com>
|
||||
Jasvir Nagra <jasvir@gmail.com>
|
||||
Yuriy Khabarov <13real008@gmail.com>
|
||||
Harri Kilpiö <harri.kilpio@gmail.com>
|
||||
Lado Lomidze <lado.lomidze@gmail.com>
|
||||
Amir E. Aharoni <amir.aharoni@mail.huji.ac.il>
|
||||
Simon Sattes <simon.sattes@gmail.com>
|
||||
Jo Liss <joliss42@gmail.com>
|
||||
Guntupalli Karunakar <karunakarg@yahoo.com>
|
||||
Shahyar Ghobadpour <shahyar@gmail.com>
|
||||
Lukasz Lipinski <uzza17@gmail.com>
|
||||
Timo Tijhof <krinklemail@gmail.com>
|
||||
Jason Moon <jmoon@socialcast.com>
|
||||
Martin Frost <martinf55@hotmail.com>
|
||||
Eneko Illarramendi <eneko@illarra.com>
|
||||
EungJun Yi <semtlenori@gmail.com>
|
||||
Courtland Allen <courtlandallen@gmail.com>
|
||||
Viktar Varvanovich <non4eg@gmail.com>
|
||||
Danny Trunk <dtrunk90@gmail.com>
|
||||
Pavel Stetina <pavel.stetina@nangu.tv>
|
||||
Michael Stay <metaweta@gmail.com>
|
||||
Steven Roussey <sroussey@gmail.com>
|
||||
Michael Hollis <hollis21@gmail.com>
|
||||
Lee Rowlands <lee.rowlands@previousnext.com.au>
|
||||
Timmy Willison <timmywillisn@gmail.com>
|
||||
Karl Swedberg <kswedberg@gmail.com>
|
||||
Baoju Yuan <the_guy_1987@hotmail.com>
|
||||
Maciej Mroziński <maciej.k.mrozinski@gmail.com>
|
||||
Luis Dalmolin <luis.nh@gmail.com>
|
||||
Mark Aaron Shirley <maspwr@gmail.com>
|
||||
Martin Hoch <martin@fidion.de>
|
||||
Jiayi Yang <tr870829@gmail.com>
|
||||
Philipp Benjamin Köppchen <xgxtpbk@gws.ms>
|
||||
Sindre Sorhus <sindresorhus@gmail.com>
|
||||
Bernhard Sirlinger <bernhard.sirlinger@tele2.de>
|
||||
Jared A. Scheel <jared@jaredscheel.com>
|
||||
Rafael Xavier de Souza <rxaviers@gmail.com>
|
||||
John Chen <zhang.z.chen@intel.com>
|
||||
Robert Beuligmann <robertbeuligmann@gmail.com>
|
||||
Dale Kocian <dale.kocian@gmail.com>
|
||||
Mike Sherov <mike.sherov@gmail.com>
|
||||
Andrew Couch <andy@couchand.com>
|
||||
Marc-Andre Lafortune <github@marc-andre.ca>
|
||||
Nate Eagle <nate.eagle@teamaol.com>
|
||||
David Souther <davidsouther@gmail.com>
|
||||
Mathias Stenbom <mathias@stenbom.com>
|
||||
Sergey Kartashov <ebishkek@yandex.ru>
|
||||
Avinash R <nashpapa@gmail.com>
|
||||
Ethan Romba <ethanromba@gmail.com>
|
||||
Cory Gackenheimer <cory.gack@gmail.com>
|
||||
Juan Pablo Kaniefsky <jpkaniefsky@gmail.com>
|
||||
Roman Salnikov <bardt.dz@gmail.com>
|
||||
Anika Henke <anika@selfthinker.org>
|
||||
Samuel Bovée <samycookie2000@yahoo.fr>
|
||||
Fabrício Matté <ult_combo@hotmail.com>
|
||||
Viktor Kojouharov <vkojouharov@gmail.com>
|
||||
Pawel Maruszczyk (http://hrabstwo.net)
|
||||
Pavel Selitskas <p.selitskas@gmail.com>
|
||||
Bjørn Johansen <post@bjornjohansen.no>
|
||||
Matthieu Penant <thieum22@hotmail.com>
|
||||
Dominic Barnes <dominic@dbarnes.info>
|
||||
David Sullivan <david.sullivan@gmail.com>
|
||||
Thomas Jaggi <thomas@responsive.ch>
|
||||
Vahid Sohrabloo <vahid4134@gmail.com>
|
||||
Travis Carden <travis.carden@gmail.com>
|
||||
Bruno M. Custódio <bruno@brunomcustodio.com>
|
||||
Nathanael Silverman <nathanael.silverman@gmail.com>
|
||||
Christian Wenz <christian@wenz.org>
|
||||
Steve Urmston <steve@urm.st>
|
||||
Zaven Muradyan <megalivoithos@gmail.com>
|
||||
Woody Gilk <shadowhand@deviantart.com>
|
||||
Zbigniew Motyka <zbigniew.motyka@gmail.com>
|
||||
Suhail Alkowaileet <xsoh.k7@gmail.com>
|
||||
Toshi MARUYAMA <marutosijp2@yahoo.co.jp>
|
||||
David Hansen <hansede@gmail.com>
|
||||
Brian Grinstead <briangrinstead@gmail.com>
|
||||
Christian Klammer <christian314159@gmail.com>
|
||||
Steven Luscher <jquerycla@steveluscher.com>
|
||||
Gan Eng Chin <engchin.gan@gmail.com>
|
||||
Gabriel Schulhof <gabriel.schulhof@intel.com>
|
||||
Alexander Schmitz <arschmitz@gmail.com>
|
||||
Vilhjálmur Skúlason <vis@dmm.is>
|
||||
Siebrand Mazeland <siebrand@kitano.nl>
|
||||
Mohsen Ekhtiari <mohsenekhtiari@yahoo.com>
|
||||
Pere Orga <gotrunks@gmail.com>
|
||||
Jasper de Groot <mail@ugomobi.com>
|
||||
Stephane Deschamps <stephane.deschamps@gmail.com>
|
||||
Jyoti Deka <dekajp@gmail.com>
|
||||
Andrei Picus <office.nightcrawler@gmail.com>
|
||||
Ondrej Novy <novy@ondrej.org>
|
||||
Jacob McCutcheon <jacob.mccutcheon@gmail.com>
|
||||
Monika Piotrowicz <monika.piotrowicz@gmail.com>
|
||||
Imants Horsts <imants.horsts@inbox.lv>
|
||||
Eric Dahl <eric.c.dahl@gmail.com>
|
||||
Dave Stein <dave@behance.com>
|
||||
Dylan Barrell <dylan@barrell.com>
|
||||
Daniel DeGroff <djdegroff@gmail.com>
|
||||
Michael Wiencek <mwtuea@gmail.com>
|
||||
Thomas Meyer <meyertee@gmail.com>
|
||||
Ruslan Yakhyaev <ruslan@ruslan.io>
|
||||
Brian J. Dowling <bjd-dev@simplicity.net>
|
||||
Ben Higgins <ben@extrahop.com>
|
||||
Yermo Lamers <yml@yml.com>
|
||||
Patrick Stapleton <github@gdi2290.com>
|
||||
Trisha Crowley <trisha.crowley@gmail.com>
|
||||
Usman Akeju <akeju00+github@gmail.com>
|
||||
Rodrigo Menezes <rod333@gmail.com>
|
||||
Jacques Perrault <jacques_perrault@us.ibm.com>
|
||||
Frederik Elvhage <frederik.elvhage@googlemail.com>
|
||||
Will Holley <willholley@gmail.com>
|
||||
Uri Gilad <antishok@gmail.com>
|
||||
Richard Gibson <richard.gibson@gmail.com>
|
||||
Simen Bekkhus <sbekkhus91@gmail.com>
|
||||
Chen Eshchar <eshcharc@gmail.com>
|
||||
Bruno Pérel <brunoperel@gmail.com>
|
||||
Mohammed Alshehri <m@dralshehri.com>
|
||||
Lisa Seacat DeLuca <ldeluca@us.ibm.com>
|
||||
Anne-Gaelle Colom <coloma@westminster.ac.uk>
|
||||
Adam Foster <slimfoster@gmail.com>
|
||||
Luke Page <luke.a.page@gmail.com>
|
||||
Daniel Owens <daniel@matchstickmixup.com>
|
||||
Michael Orchard <morchard@scottlogic.co.uk>
|
||||
Marcus Warren <marcus@envoke.com>
|
||||
Nils Heuermann <nils@world-of-scripts.de>
|
||||
Marco Ziech <marco@ziech.net>
|
||||
Patricia Juarez <patrixd@gmail.com>
|
||||
Ben Mosher <me@benmosher.com>
|
||||
Ablay Keldibek <atomio.ak@gmail.com>
|
||||
Thomas Applencourt <thomas.applencourt@irsamc.ups-tlse.fr>
|
||||
Jiabao Wu <jiabao.foss@gmail.com>
|
||||
Eric Lee Carraway <github@ericcarraway.com>
|
||||
Victor Homyakov <vkhomyackov@gmail.com>
|
||||
Myeongjin Lee <aranet100@gmail.com>
|
||||
Liran Sharir <lsharir@gmail.com>
|
||||
Weston Ruter <weston@xwp.co>
|
||||
Mani Mishra <manimishra902@gmail.com>
|
||||
Hannah Methvin <hannahmethvin@gmail.com>
|
||||
Leonardo Balter <leonardo.balter@gmail.com>
|
||||
Benjamin Albert <benjamin_a5@yahoo.com>
|
||||
Michał Gołębiowski <m.goleb@gmail.com>
|
||||
Alyosha Pushak <alyosha.pushak@gmail.com>
|
||||
Fahad Ahmad <fahadahmad41@hotmail.com>
|
||||
Matt Brundage <github@mattbrundage.com>
|
||||
Francesc Baeta <francesc.baeta@gmail.com>
|
||||
Piotr Baran <piotros@wp.pl>
|
||||
Mukul Hase <mukulhase@gmail.com>
|
||||
Konstantin Dinev <kdinev@mail.bw.edu>
|
||||
Rand Scullard <rand@randscullard.com>
|
||||
Dan Strohl <dan@wjcg.net>
|
||||
Maksim Ryzhikov <rv.maksim@gmail.com>
|
||||
Amine HADDAD <haddad@allegorie.tv>
|
||||
Amanpreet Singh <apsdehal@gmail.com>
|
||||
Alexey Balchunas <bleshik@gmail.com>
|
||||
Peter Kehl <peter.kehl@gmail.com>
|
||||
Peter Dave Hello <hsu@peterdavehello.org>
|
||||
Johannes Schäfer <johnschaefer@gmx.de>
|
||||
Ville Skyttä <ville.skytta@iki.fi>
|
||||
Ryan Oriecuia <ryan.oriecuia@visioncritical.com>
|
69
static/js/addmap.js
Normal file
69
static/js/addmap.js
Normal file
|
@ -0,0 +1,69 @@
|
|||
function viewMap() {
|
||||
var map = L.map('mapid').setView([43.797, 11.2400], 11);
|
||||
// Set up the OSM layer
|
||||
L.tileLayer(
|
||||
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
|
||||
).addTo(map);
|
||||
|
||||
$.getJSON('/api/rapporti/get', function(data) {
|
||||
for(var i in data.rapporti) {
|
||||
var p = data.rapporti[i]
|
||||
L.circle([p.lat, p.lng], {
|
||||
color: p.colore,
|
||||
fillColor:p.colore,
|
||||
fillOpacity: 0.2,
|
||||
opacity: 0.7,
|
||||
radius: p.radius,
|
||||
}).addTo(map)
|
||||
}
|
||||
})
|
||||
|
||||
function addPointToDb(dati) {
|
||||
$.post('/api/rapporti/add', dati
|
||||
, function(p) {
|
||||
console.log(p)
|
||||
L.circle([p.lat, p.lng], {
|
||||
color: p.colore,
|
||||
fillColor:p.colore,
|
||||
fillOpacity: 0.5,
|
||||
radius: p.radius,
|
||||
}).addTo(map)
|
||||
})
|
||||
}
|
||||
|
||||
function onFormSubmit() {
|
||||
addPointToDb({
|
||||
lat: $('#pointform input[name=lat]').val(),
|
||||
lng: $('#pointform input[name=lng]').val(),
|
||||
stabilita: $('#pointform select[name=stabilita]').val(),
|
||||
comprensibile: $('#pointform select[name=comprensibile]').val(),
|
||||
})
|
||||
$('#pointform').addClass('hidden')
|
||||
return false;
|
||||
}
|
||||
|
||||
function onMapClick(e) {
|
||||
console.log('click', e)
|
||||
console.log(e.latlng)
|
||||
var stabilita = 3
|
||||
console.log(map.getZoom())
|
||||
if(map.getZoom() > 15) {
|
||||
stabilita = 19 - map.getZoom()
|
||||
}
|
||||
console.log('st', stabilita)
|
||||
$('#pointform input[name=lat]').val(e.latlng.lat)
|
||||
$('#pointform input[name=lng]').val(e.latlng.lng)
|
||||
$('#pointform select[name=stabilita]').val(stabilita)
|
||||
$('#pointform').removeClass('hidden')
|
||||
// TODO: aggiungi punto temporaneo, ma poi va rimosso
|
||||
|
||||
}
|
||||
|
||||
map.on('click', onMapClick)
|
||||
$('#addPoint').on('click', onFormSubmit)
|
||||
}
|
||||
jQuery(function($) {
|
||||
$('#mapid').css('height', $(window).height() - 200)
|
||||
viewMap()
|
||||
})
|
||||
|
55
static/js/viewmap.js
Normal file
55
static/js/viewmap.js
Normal file
|
@ -0,0 +1,55 @@
|
|||
RapportoMarker = L.Circle.extend({ options: { originalData: 0 } });
|
||||
|
||||
function viewMap() {
|
||||
var map = L.map('mapid').setView([43.797, 11.2400], 11);
|
||||
// Set up the OSM layer
|
||||
L.tileLayer(
|
||||
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
|
||||
).addTo(map);
|
||||
$.getJSON('/api/rapporti/get', function(data) {
|
||||
for(var i in data.rapporti) {
|
||||
var p = data.rapporti[i]
|
||||
var marker = new RapportoMarker([p.lat, p.lng], {
|
||||
color: p.colore,
|
||||
fillColor:p.colore,
|
||||
fillOpacity: 0.3,
|
||||
radius: p.radius,
|
||||
originalData: p,
|
||||
})
|
||||
marker.addTo(map).bindPopup(p.explaination)
|
||||
marker.off('click')
|
||||
marker.on('click', onMarkerClicked)
|
||||
}
|
||||
})
|
||||
function onMarkerClicked(evt) {
|
||||
console.log('T', this)
|
||||
var data = evt.target.options.originalData
|
||||
var rid = data.rid
|
||||
$('#dialog').html('<div class="explaination"></div><div class="actions"></div>')
|
||||
$('#dialog .explaination').text(data.explaination)
|
||||
$('#dialog .actions').html('<button class="btn-elimina">Elimina</button>')
|
||||
$('#dialog').attr('title', rid)
|
||||
$('#dialog').data('rid', rid)
|
||||
$('#dialog').data('marker', this)
|
||||
$('#dialog').dialog({
|
||||
modal: true,
|
||||
beforeClose: function(event, ui) {
|
||||
$('#dialog').dialog('destroy')
|
||||
$('#dialog')[0].outerHTML = '<div id="dialog"></div>'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
$('body').on('click', '.btn-elimina', function onCancella(evt) {
|
||||
var rid = $('#dialog').data('rid')
|
||||
console.log('cancelliamo?', rid)
|
||||
$.post('/api/rapporti/delete', {rid: rid}, function() {
|
||||
map.removeLayer($('#dialog').data('marker'))
|
||||
$('#dialog').dialog('close')
|
||||
})
|
||||
})
|
||||
}
|
||||
jQuery(function($) {
|
||||
$('#mapid').css('height', $(window).height() - 200)
|
||||
viewMap()
|
||||
})
|
33
templates/add.html
Normal file
33
templates/add.html
Normal file
|
@ -0,0 +1,33 @@
|
|||
{% extends 'base.html' %}
|
||||
{% block extra_scripts %}
|
||||
<script src="{{url_for('static', filename='js/addmap.js')}}">
|
||||
</script>
|
||||
{% endblock extra_scripts %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<form id="pointform" class="hidden">
|
||||
<label>Ricezione</label> <select name="comprensibile">
|
||||
<option value="0">Segnale del tutto assente</option>
|
||||
<option value="1">Tracce vaghe di una radio in sottofondo</option>
|
||||
<option value="2">Si capisce che c'è una radio, ma non si capisce nulla</option>
|
||||
<option value="3">La ricezione è disturbata ma con attenzione si capisce cosa stanno dicendo o il
|
||||
genere di
|
||||
musica che sta passando</option>
|
||||
<option value="4">si capisce cosa dicono o che canzone sta andando ma ci sono fruscii e disturbi vari</option>
|
||||
<option value="5">Segnale limpido, si sente bene</option>
|
||||
</select>
|
||||
|
||||
<label>Questa osservazione si verifica</label> <select name="stabilita">
|
||||
<option value="1">Solo in un punto precisissimo. Se ti sposti anche di poco, non vale più</option>
|
||||
<option value="2">Nel raggio di 30 metri, in base a come giochi con l'atenna</option>
|
||||
<option value="3">In tutta la piazza, muovere l'antenna o cambiare radio cambia poco</option>
|
||||
<option value="4">Nel raggio di 500 metri</option>
|
||||
<option value="5">In tutto il quartiere</option>
|
||||
</select>
|
||||
<input type="hidden" name="lat" />
|
||||
<input type="hidden" name="lng" />
|
||||
<button id="addPoint">Aggiungi</button>
|
||||
</form>
|
||||
{% endblock content %}
|
||||
|
63
templates/base.html
Normal file
63
templates/base.html
Normal file
|
@ -0,0 +1,63 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
{% block all_css %}
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
|
||||
integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
|
||||
crossorigin=""/>
|
||||
{% block extra_css %}
|
||||
{% endblock extra_css %}
|
||||
{% endblock all_css %}
|
||||
<style>
|
||||
#mapid { height: 700px; z-index: 2;}
|
||||
.hidden { display: none; }
|
||||
nav > ul {
|
||||
background: #fbfbfb;
|
||||
padding: 1em 0;
|
||||
}
|
||||
nav li { display: inline; }
|
||||
nav li.brand { padding-right: 2em; }
|
||||
nav li.navigation {
|
||||
border: 1px solid gray;
|
||||
border-radius: 0.4em;
|
||||
padding: 0.1em 1em;
|
||||
}a[href] {
|
||||
color: darkred;
|
||||
font-size: 1.4em;
|
||||
font-family: Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
}
|
||||
/*.ui-dialog, .ui-front, #dialog { z-index: 1000 !important; }*/
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<ul>
|
||||
<li class="brand"><strong>WomMap</strong></li>
|
||||
<li class="navigation"><a href="{{url_for('home')}}">Vedi</a></li>
|
||||
<li class="navigation"><a href="{{url_for('add')}}">Aggiungi</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
{% block main %}
|
||||
<div id="main">
|
||||
<div id="content">
|
||||
{% block content %}
|
||||
{% endblock content %}
|
||||
</div>
|
||||
<div id="mapid"></div>
|
||||
</div>
|
||||
{% endblock main %}
|
||||
|
||||
{% block all_scripts %}
|
||||
<!-- Make sure you put this AFTER Leaflet's CSS -->
|
||||
<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"
|
||||
integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew=="
|
||||
crossorigin=""></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
{% block extra_scripts %}
|
||||
{% endblock extra_scripts %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
|
12
templates/index.html
Normal file
12
templates/index.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
{% extends 'base.html' %}
|
||||
{% block extra_css %}
|
||||
<link rel="stylesheet" href="{{url_for('static', filename='jquery-ui/jquery-ui.min.css')}}" />
|
||||
{% endblock extra_css %}
|
||||
{% block extra_scripts %}
|
||||
<script src="{{url_for('static', filename='js/viewmap.js')}}"> </script>
|
||||
<script src="{{url_for('static', filename='jquery-ui/jquery-ui.min.js')}}"> </script>
|
||||
{% endblock extra_scripts %}
|
||||
|
||||
{% block content %}
|
||||
<div id="dialog"></div>
|
||||
{% endblock content %}
|
Loading…
Reference in a new issue