Giter Site home page Giter Site logo

city-of-bloomington / inroads Goto Github PK

View Code? Open in Web Editor NEW
9.0 12.0 4.0 9.38 MB

Digital service to publish road, sidewalk and parking status information including closings, lane reductions and reservations. Generates feeds for Waze Connected Cities program.

Home Page: https://bloomington.in.gov/inroads

License: GNU Affero General Public License v3.0

PHP 78.58% Shell 0.67% JavaScript 6.37% HTML 0.86% Makefile 0.21% SCSS 12.24% Jinja 1.07%
php road-events municipalities waze-ccp waze

inroads's Introduction

inRoads

inRoads is a digital service developed by the City of Bloomington. inRoads is used to manage and publish road, sidewalk and parking status information including closings, lane reductions, noise permits and parking reservations. It provides not only current information about road events, but future planned events as well.inRoads streamlines the process of creating and managing road, sidewalk, parking and other location-relevant municipal events (noise permits, etc.). inRoads publishes its data to the web, to email lists and through multiple open data formats. It also provides a Waze feed usable for communities participating in the Waze Connected Cities program.

The service is provided through an open source PHP application that stores road event data using Google's Calendar API and notifies subscribers via email. The Open Layers (http://openlayers.org/) library provides map rendering functionality. The inRoads interface is built on top of a theming system, allowing other cities and organizations to deploy inRoads in a way that complies with their own visual standards guidelines. This makes setup and installation easier, and also makes it possible to apply updates to the code without losing customizations. CAS and LDAP form the authentication layer, however other solutions specific to other agencies could be integrated with the application.

inRoads is in live production use at https://bloomington.in.gov/inroads

Requirements

  • Linux
  • Apache
  • MySQL >= 8.0
  • PHP >= 7.4

Dev Requirements

If you want to build this project you'll need

  • Linux - the Makefile is written assuming bash
  • composer - PHP dependency manager
  • gettext - for compiling language files
  • sassc - libsass for compiling SASS files

inroads's People

Contributors

charlesbrandt avatar hiesterd avatar inghamn avatar rbdietz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

inroads's Issues

Event list datetimes are confusing

Really they don't make a whole lot of sense.

We are sorting based on the start date of the road closing, which could be several months ago.

Many are all-day events, and have no time portion

Some are recurring events, however we are not displaying the recurrence that falls withing the date range searched for.

Telling Google to sort the events requires us to get the parent event - not the recurrence information that falls within the search range.

Display time information

Nearly all of the current calendar items were entered as AllDay events, even though there was time information in the description.

We need update the clean up the current data, adding the time information. The web application must display the time information in the event listings.

Way to toggle between Map view and Schedule view

Map view is the current, default view. It would also be nice to be able to switch to a schedule based view that either replaces the text list/map combo, or pops up a modal dialog containing that view.

Way to delete an event

Is it possible to delete an event with the inRoads interface, or is this only available via the Google calendar itself?

View Single map is not loading geography

The code for looking up the geography for the event is expecting certain markup that's not there on the viewSingle screen.

I need to unify the map data loading between event search and view single.

Section to link to other feeds / formats

This will be a small section to put links to subscribe to the email distribution group, or find other feeds to the calendar. This will require the calendar in use to be publicly visible.

Toggle event list items

When events in the list are selected, we expand them as well as add coloration and other things. Clicking the item again does nothing. We should implement deselecting an event item when that item is clicked while in a selected state.

Error messages are not displayed correctly

We need CSS for the error messages. Right now, there' getting messed up inside the map.

For instance, when you try to edit an event, and there's an error of any sort.

Departments need phone numbers

We need to move the department information out of the Event class.

This might mean we go as far as creating a local database table for them. However; we could possible live with a configuration variable in site_config.inc

Attachments

It would be nice to display attachments to events, as well as have the application support uploading attachments to events.

Board of public works often attaches the permit authorizing the event, as a PDF.

Currently the police department reviews them before their patrols. The permit is public information, so it would be fine to display the attachments.

Cron script for sending weekly posts to Google Group

We are going to start by replicating existing functionality.

Currently, we are sending out weekly emails to a small recipient list. Road Closings needs to be able to automatically generate email messages and send them to the Google Group we set up.

Javascript for event form

We want the RRULE selection to display and hide the various fieldsets based on the frequency the user chooses. This can probably be done just like it was in the current content manager.

Add city boundaries

We are hosting a city boundary as a layer in GeoServer. We should try and import that layer using WMS.

Different default value for time range

The default date chooser drop down value should be "Today", not "chooseDates"

Also, a few language updates for filter section:

"How many closures to show" -> "Show closures for:"

"Search" button should be "Filter"

Custom start/end date urls not handled in search for

When you come to the site with start and end dates in the URL that do not match any of the presets, the search form needs to correctly set up the custom date selection as the current selection.

Also, right now, javascript is creating the extra chooseDates item in the presets. We need to figure out a way to do it, so the translated text is shown.

Add JSON and XML output

We also want the search results available as a JSON and XML feed. It doesn't need to be Open511, just generic for now.

We probably still want to do Open511 in the future.

Empty results state

If a user sends a search query that returns zero results, they should see an empty state that reduces confusion about the lack results returned, and might help them change their query so they get results.

Create Google Group

We are going to use a google group to allow us to send emails to subscribers. The group needs to be public, but only allow city users to post messages.

Public citizens should only have read-only access.

Add browser compatibility warning

This application does not support older browsers. Our application should warn people when they should expect this application not to work—and that alternatives are available.

Icons for event types

We are probably going to want icons for each of the possible types of road events. Here are the types that are currently in use on the calendar:

  • Road Closed
  • Local Only
  • Lane Restrictions
  • Reserved Meters
  • Noise Permit
  • Use of Sidewalk

Footer content causing scrollbars

The footer content seems to be extending beyond the allowed height, causing scrollbars to show up on the overall page. I'm guessing it's just a padding declaration somewhere.
screen

Now, Today, Tomorrow adjustments

The ranges "Today" and "Tomorrow" should be set to midnight to midnight for the corresponding day.
"Now" should also be an option that only includes currently active events.

The default should be set to "Today"

Reproduce textual information format

We already send out emails to the newspaper in a certain format. We should reproduce this textual format in the display.

North Woodlawn Avenue from East 13th Street to East 17th Street
March 2, 2015 through September 18, 2015
ROAD CLOSED; expect to detour, signage in place.
Milestone Contractors has scheduled a road construction project. If you experience any problems with this project, please contact City Planning and Transportation at 349-3423.

South Rockport Road from South Rogers Street to West Tapp Road
March 16, 2015 through June 30, 2015
LOCAL TRAFFIC ONLY; expect delays, signage in place.
Dave O'Mara Contractor has scheduled a road construction project. If you experience any problems with this project, please contact City Planning and Transportation at 349-3423.

East 17th Street from North Fee Lane to North Lingelbach Lane
May 11, 2015 through August 7, 2015
ROAD CLOSED; expect to detour, signage in place.
E & B Paving has scheduled a road construction project. If you experience any problems with this project, please contact City Planning and Transportation at 349-3423.

Road closing type

Similar to department information, we will parse the type of road work being done from the summary.

The edit form needs to offer the types as a drop-down, and save the information back into the summary.

Implement basemap style in configuration

So far, I've only hard coded the basemap javascript URLs. We need to pull out the api keys and urls so this can be changed more easily. Also, we don't want our api keys in the source code.

Add filters for event types

We want to be able to show just a small set of the event types.

We need to add a select multiple input for selecting the events to include in the results. The default choices should not include Noise Permits, Reserved Meters, and Sidewalk closures.

Google User account for interaction

So, I have been glossing over this, but it came to a head when I tried to implement posting to the Google Group.

Use the Google Web Service API's requires all interaction be done on behalf of a valid Google User account. So far, I've been using my own Google account to test things out. But we may want to create a special account or something for this application.

I ran into this when I tried to limit posting to Managers or Owners of the google group. However, once again, only valid Google accounts can be a manager or owner of the google group.

Google Group posting types should be configurable

We don't really want to post all the event types to the Google Group. For us, we only want Road Closings, Lane Restrictions, and Local Only. We should leave off Noise Permits, Sidewalk Closures, and Reserved Meters.

The crons script for posting to the group needs configuration to select which event types to include.

Search for events by date range

The interface should allow users to filter road closures for a specified date range.

The default should be what is closed now (today).

We talked about maybe only doing three pre-existing searches: past, present, and future

Add departments to events

We want to display contact information for the department responsible for handling the road closing event. The department information should come from Directory.

Create link for JSON feed

In the footer, we need to render the link to the JSON feed for whatever is currently being viewed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.