aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore288
-rw-r--r--pollutometer-php/app/.htaccess7
-rw-r--r--pollutometer-php/app/AppCache.php7
-rw-r--r--pollutometer-php/app/AppKernel.php54
-rw-r--r--pollutometer-php/app/Resources/views/base.html.twig33
-rw-r--r--pollutometer-php/app/Resources/views/default/AllData.html.twig35
-rw-r--r--pollutometer-php/app/Resources/views/default/LastWeekData.html.twig35
-rw-r--r--pollutometer-php/app/Resources/views/default/TrainSchedule.html.twig28
-rw-r--r--pollutometer-php/app/Resources/views/default/index.html.twig34
-rw-r--r--pollutometer-php/app/config/config.yml69
-rw-r--r--pollutometer-php/app/config/config_dev.yml41
-rw-r--r--pollutometer-php/app/config/config_prod.yml22
-rw-r--r--pollutometer-php/app/config/config_test.yml16
-rw-r--r--pollutometer-php/app/config/parameters.yml12
-rw-r--r--pollutometer-php/app/config/parameters.yml.dist19
-rw-r--r--pollutometer-php/app/config/routing.yml3
-rw-r--r--pollutometer-php/app/config/routing_dev.yml14
-rw-r--r--pollutometer-php/app/config/security.yml24
-rw-r--r--pollutometer-php/app/config/services.yml38
-rwxr-xr-xpollutometer-php/bin/console27
-rwxr-xr-xpollutometer-php/bin/symfony_requirements146
-rw-r--r--pollutometer-php/clean.sh1
-rw-r--r--pollutometer-php/composer.json72
-rw-r--r--pollutometer-php/composer.lock3602
-rw-r--r--pollutometer-php/phpunit.xml.dist31
-rw-r--r--pollutometer-php/rebuild.sh2
-rw-r--r--pollutometer-php/src/.htaccess7
-rw-r--r--pollutometer-php/src/AppBundle/AppBundle.php9
-rw-r--r--pollutometer-php/src/AppBundle/Controller/AllDataAverageController.php66
-rw-r--r--pollutometer-php/src/AppBundle/Controller/AllDataController.php43
-rw-r--r--pollutometer-php/src/AppBundle/Controller/HomeController.php60
-rw-r--r--pollutometer-php/src/AppBundle/Controller/LastWeekDataAverageController.php66
-rw-r--r--pollutometer-php/src/AppBundle/Controller/LastWeekDataController.php42
-rw-r--r--pollutometer-php/src/AppBundle/Controller/NewDataController.php42
-rw-r--r--pollutometer-php/src/AppBundle/Controller/TrainScheduleController.php110
-rw-r--r--pollutometer-php/src/AppBundle/Utils/Aqi.php43
-rw-r--r--pollutometer-php/tests/AppBundle/Controller/DefaultControllerTest.php18
-rw-r--r--pollutometer-php/var/SymfonyRequirements.php817
-rw-r--r--pollutometer-php/var/cache/.gitkeep0
-rw-r--r--pollutometer-php/var/logs/.gitkeep0
-rw-r--r--pollutometer-php/var/sessions/.gitkeep0
-rw-r--r--pollutometer-php/web.config35
-rw-r--r--pollutometer-php/web/.htaccess68
-rw-r--r--pollutometer-php/web/app.php21
-rw-r--r--pollutometer-php/web/app_dev.php31
-rw-r--r--pollutometer-php/web/apple-touch-icon.pngbin0 -> 2092 bytes
-rw-r--r--pollutometer-php/web/config.php422
-rw-r--r--pollutometer-php/web/favicon.icobin0 -> 6518 bytes
-rw-r--r--pollutometer-php/web/js/AllDataChart.js63
-rw-r--r--pollutometer-php/web/js/LastWeekDataChart.js63
-rw-r--r--pollutometer-php/web/js/realtime.js110
-rw-r--r--pollutometer-php/web/robots.txt5
52 files changed, 6513 insertions, 288 deletions
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 940794e..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,288 +0,0 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
-
-# User-specific files
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-
-# Visual Studio 2015 cache/options directory
-.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUNIT
-*.VisualState.xml
-TestResult.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# .NET Core
-project.lock.json
-project.fragment.lock.json
-artifacts/
-**/Properties/launchSettings.json
-
-*_i.c
-*_p.c
-*_i.h
-*.ilk
-*.meta
-*.obj
-*.pch
-*.pdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# JustCode is a .NET coding add-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# TODO: Comment the next line if you want to checkin your web deploy settings
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# The packages folder can be ignored because of Package Restore
-**/packages/*
-# except build/, which is used as an MSBuild target.
-!**/packages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/packages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-node_modules/
-
-# Typescript v1 declaration files
-typings/
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# JetBrains Rider
-.idea/
-*.sln.iml
-
-# CodeRush
-.cr/
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
diff --git a/pollutometer-php/app/.htaccess b/pollutometer-php/app/.htaccess
new file mode 100644
index 0000000..fb1de45
--- /dev/null
+++ b/pollutometer-php/app/.htaccess
@@ -0,0 +1,7 @@
+<IfModule mod_authz_core.c>
+ Require all denied
+</IfModule>
+<IfModule !mod_authz_core.c>
+ Order deny,allow
+ Deny from all
+</IfModule>
diff --git a/pollutometer-php/app/AppCache.php b/pollutometer-php/app/AppCache.php
new file mode 100644
index 0000000..639ec2c
--- /dev/null
+++ b/pollutometer-php/app/AppCache.php
@@ -0,0 +1,7 @@
+<?php
+
+use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
+
+class AppCache extends HttpCache
+{
+}
diff --git a/pollutometer-php/app/AppKernel.php b/pollutometer-php/app/AppKernel.php
new file mode 100644
index 0000000..ef068e0
--- /dev/null
+++ b/pollutometer-php/app/AppKernel.php
@@ -0,0 +1,54 @@
+<?php
+
+use Symfony\Component\HttpKernel\Kernel;
+use Symfony\Component\Config\Loader\LoaderInterface;
+
+class AppKernel extends Kernel
+{
+ public function registerBundles()
+ {
+ $bundles = [
+ new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
+ new Symfony\Bundle\SecurityBundle\SecurityBundle(),
+ new Symfony\Bundle\TwigBundle\TwigBundle(),
+ new Symfony\Bundle\MonologBundle\MonologBundle(),
+ new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
+ new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
+ new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
+ new AppBundle\AppBundle(),
+ ];
+
+ if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
+ $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
+ $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
+ $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
+
+ if ('dev' === $this->getEnvironment()) {
+ $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
+ $bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle();
+ }
+ }
+
+ return $bundles;
+ }
+
+ public function getRootDir()
+ {
+ return __DIR__;
+ }
+
+ public function getCacheDir()
+ {
+ return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
+ }
+
+ public function getLogDir()
+ {
+ return dirname(__DIR__).'/var/logs';
+ }
+
+ public function registerContainerConfiguration(LoaderInterface $loader)
+ {
+ $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
+ }
+}
diff --git a/pollutometer-php/app/Resources/views/base.html.twig b/pollutometer-php/app/Resources/views/base.html.twig
new file mode 100644
index 0000000..f8d8374
--- /dev/null
+++ b/pollutometer-php/app/Resources/views/base.html.twig
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8" />
+ <title>{% block title %}Welcome!{% endblock %}</title>
+ {% block stylesheets %}{% endblock %}
+ <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.1/css/bulma.min.css"/>
+ </head>
+ <body>
+ <nav class="navbar" role="navigation" aria-label="main navigation" style="margin: 0 0 3em 0">
+ <div class="navbar-brand">
+ <a class="navbar-item" href="/">
+ <img src="https://cdn3.iconfinder.com/data/icons/christmas-icon-set-pixel-perfect/64/christmas-color-12-512.png" alt="Pollutometer" width="50px" height="auto">
+ <span>Pollutometer</span>
+ </a>
+ <a class="navbar-item" href="/AllData">
+ <span>All Data</span>
+ </a>
+ <a class="navbar-item" href="/LastWeekData">
+ <span>Last Week Data</span>
+ </a>
+ <a class="navbar-item" href="/TrainSchedule">
+ <span>Train Schedule</span>
+ </a>
+ </div>
+ </nav>
+ <div class="container">
+ {% block body %}{% endblock %}
+ </div>
+ {% block javascripts %}{% endblock %}
+ </body>
+</html>
diff --git a/pollutometer-php/app/Resources/views/default/AllData.html.twig b/pollutometer-php/app/Resources/views/default/AllData.html.twig
new file mode 100644
index 0000000..7bc33af
--- /dev/null
+++ b/pollutometer-php/app/Resources/views/default/AllData.html.twig
@@ -0,0 +1,35 @@
+{% extends 'base.html.twig' %}
+
+{% block body %}
+<div class="columns">
+ <div class="column is-narrow">
+<table class="table">
+ <thead class="thead">
+ <tr class="tr">
+ <th>TimeStamp</th>
+ <th>Co</th>
+ <th>No</th>
+ <th>So</th>
+ </tr>
+ </thead>
+ <tbody class="tbody">
+ <tr class="tr">
+ {% for table in data %}
+ <td class="td">{{ table.TimeStamp }}</td>
+ <td class="td">{{ table.Co }}</td>
+ <td class="td">{{ table.No }}</td>
+ <td class="td">{{ table.So }}</td>
+ </tr>
+ </tbody>
+ {% endfor %}
+</table>
+ </div>
+ <div class="column">
+<canvas id="ctx"></canvas>
+ </div>
+</div>
+{% endblock %}
+{% block javascripts %}
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.bundle.min.js"></script>
+ <script src="{{ asset('js/AllDataChart.js') }}"></script
+{% endblock %} \ No newline at end of file
diff --git a/pollutometer-php/app/Resources/views/default/LastWeekData.html.twig b/pollutometer-php/app/Resources/views/default/LastWeekData.html.twig
new file mode 100644
index 0000000..fdc6dd9
--- /dev/null
+++ b/pollutometer-php/app/Resources/views/default/LastWeekData.html.twig
@@ -0,0 +1,35 @@
+{% extends 'base.html.twig' %}
+
+{% block body %}
+<div class="columns">
+ <div class="column is-narrow">
+<table class="table">
+ <thead class="thead">
+ <tr class="tr">
+ <th>TimeStamp</th>
+ <th>Co</th>
+ <th>No</th>
+ <th>So</th>
+ </tr>
+ </thead>
+ <tbody class="tbody">
+ <tr class="tr">
+ {% for table in data %}
+ <td class="td">{{ table.TimeStamp }}</td>
+ <td class="td">{{ table.Co }}</td>
+ <td class="td">{{ table.No }}</td>
+ <td class="td">{{ table.So }}</td>
+ </tr>
+ </tbody>
+ {% endfor %}
+</table>
+ </div>
+ <div class="column">
+<canvas id="ctx"></canvas>
+ </div>
+</div>
+{% endblock %}
+{% block javascripts %}
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.bundle.min.js"></script>
+ <script src="{{ asset('js/LastWeekDataChart.js') }}"></script
+{% endblock %} \ No newline at end of file
diff --git a/pollutometer-php/app/Resources/views/default/TrainSchedule.html.twig b/pollutometer-php/app/Resources/views/default/TrainSchedule.html.twig
new file mode 100644
index 0000000..efc94ec
--- /dev/null
+++ b/pollutometer-php/app/Resources/views/default/TrainSchedule.html.twig
@@ -0,0 +1,28 @@
+{% extends 'base.html.twig' %}
+
+{% block body %}
+<table class="table">
+ <thead class="thead">
+ <tr class="tr">
+ <th>Name</th>
+ <th>Time</th>
+ <th>Date</th>
+ <th>Destination</th>
+ <th>AQI</th>
+ </tr>
+ </thead>
+ <tbody class="tbody">
+ <tr class="tr">
+ {% for table in data %}
+ <td class="td">{{ table.name }}</td>
+ <td class="td">{{ table.time }}</td>
+ <td class="td">{{ table.date }}</td>
+ <td class="td">{{ table.finalStop }}</td>
+ <td class="td">{{ table.direction }}</td>
+ </tr>
+ </tbody>
+ {% endfor %}
+</table>
+{% endblock %}
+{% block javascripts %}
+{% endblock %} \ No newline at end of file
diff --git a/pollutometer-php/app/Resources/views/default/index.html.twig b/pollutometer-php/app/Resources/views/default/index.html.twig
new file mode 100644
index 0000000..176f519
--- /dev/null
+++ b/pollutometer-php/app/Resources/views/default/index.html.twig
@@ -0,0 +1,34 @@
+{% extends 'base.html.twig' %}
+
+{% block body %}
+ <div class="columns">
+ <div class="column">
+ <table class="table">
+ <thead class="thead">
+ <tr class="tr">
+ <th class="td">TimeStamp</th>
+ <th class="td">Co</th>
+ <th class="td">No</th>
+ <th class="td">So</th>
+ </tr>
+ </thead>
+ <tbody class="tbody">
+ <tr id="latest" class="tr">
+ <td class="td">{{ TimeStamp }}</td>
+ <td class="td">{{ Co }}</td>
+ <td class="td">{{ No }}</td>
+ <td class="td">{{ So }}</td>
+ </tr>
+ </tbody>
+ </table>
+ <p id="aq">The current air quality index is <strong>{{ Aqi }}</strong></p>
+ </div>
+ <div class="column">
+ <img src="https://www.ourair.org/wp-content/uploads/AQItable.gif">
+ </div>
+ </div>
+
+{% endblock %}
+{% block javascripts %}
+ <script src="{{ asset('js/realtime.js') }}"></script>
+{% endblock %}
diff --git a/pollutometer-php/app/config/config.yml b/pollutometer-php/app/config/config.yml
new file mode 100644
index 0000000..4819c20
--- /dev/null
+++ b/pollutometer-php/app/config/config.yml
@@ -0,0 +1,69 @@
+imports:
+ - { resource: parameters.yml }
+ - { resource: security.yml }
+ - { resource: services.yml }
+
+# Put parameters here that don't need to change on each machine where the app is deployed
+# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
+parameters:
+ locale: en
+
+framework:
+ #esi: ~
+ #translator: { fallbacks: ['%locale%'] }
+ secret: '%secret%'
+ router:
+ resource: '%kernel.project_dir%/app/config/routing.yml'
+ strict_requirements: ~
+ form: ~
+ csrf_protection: ~
+ validation: { enable_annotations: true }
+ #serializer: { enable_annotations: true }
+ templating:
+ engines: ['twig']
+ default_locale: '%locale%'
+ trusted_hosts: ~
+ session:
+ # https://symfony.com/doc/current/reference/configuration/framework.html#handler-id
+ handler_id: session.handler.native_file
+ save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
+ fragments: ~
+ http_method_override: true
+ assets: ~
+ php_errors:
+ log: true
+
+# Twig Configuration
+twig:
+ debug: '%kernel.debug%'
+ strict_variables: '%kernel.debug%'
+
+# Doctrine Configuration
+doctrine:
+ dbal:
+ driver: pdo_mysql
+ host: '%database_host%'
+ port: '%database_port%'
+ dbname: '%database_name%'
+ user: '%database_user%'
+ password: '%database_password%'
+ charset: UTF8
+ # if using pdo_sqlite as your database driver:
+ # 1. add the path in parameters.yml
+ # e.g. database_path: '%kernel.project_dir%/var/data/data.sqlite'
+ # 2. Uncomment database_path in parameters.yml
+ # 3. Uncomment next line:
+ #path: '%database_path%'
+
+ orm:
+ auto_generate_proxy_classes: '%kernel.debug%'
+ naming_strategy: doctrine.orm.naming_strategy.underscore
+ auto_mapping: true
+
+# Swiftmailer Configuration
+swiftmailer:
+ transport: '%mailer_transport%'
+ host: '%mailer_host%'
+ username: '%mailer_user%'
+ password: '%mailer_password%'
+ spool: { type: memory }
diff --git a/pollutometer-php/app/config/config_dev.yml b/pollutometer-php/app/config/config_dev.yml
new file mode 100644
index 0000000..3a43646
--- /dev/null
+++ b/pollutometer-php/app/config/config_dev.yml
@@ -0,0 +1,41 @@
+imports:
+ - { resource: config.yml }
+
+framework:
+ router:
+ resource: '%kernel.project_dir%/app/config/routing_dev.yml'
+ strict_requirements: true
+ profiler: { only_exceptions: false }
+
+web_profiler:
+ toolbar: true
+ intercept_red