* Persist live poll status in browser localStorage
* Prefix localStorage variables with 'sidekiq'
* Minor fix for default handling in localStorage timeInterval parsing
* Unminify rickshaw graph CSS so we can maintain it
* Initial BiDi support for the Web UI
BiDi means the web app can serve both LTR and RTL languages at the same time.
1. Bootstrap-RTL overrides Bootstrap 3.3 styles for RTL clients
2. Application CSS was preprocessed thru rtlcss and then hand-trimmed to contain only RTL-specific directives.
3. Dashboard was tweaked to hardcode LTR for footer and polling gadget
* Vendor bootstrap-rtl.css
* Various RTL style fixes, need to flip all pull-* elements
* Upgrade Rickshaw to latest, remove dupe CSS
* Add Arabic language (credit to Milena Novakova)
Add Hebrew placeholder
Added dir attribute to html tag
* changes
* Clean up HTTP header generation, add Content-Language response header
* Use correct locale for hebrew
* Remove jQuery.timeago
* Use new timeago.js library
This library is ~2KB, has no dependencies and includes several built-in locales.
It also updates the timestamp on the page in realtime.
* Set the timeago locale to the application locale
* Convert locale from hyphen to underscore
The localepassed by Rails/browser "Accept-Language" header needs to be
manipulated before being used by timeago.js
Migrate Sidekiq::Web a pure Rack application to avoid sinatra as
dependency. rack-protection is still needed.
The application is mounted on top of Rack::Builder, mantaining all of
the previous http interface.
Rack apps being used:
- Rack::File to serve assets
- Rack::Session::Cookie, the secret can be configured via
Sidekiq::Web.session_secret
- Rack::Protection, same as before when using sinatra
- Sidekiq::WebApplication, described below.
Sidekiq::WebApplication is a very simple rack application composed of a
Sidekiq::WebRouter and a Sidekiq::WebAction dispatcher. This terminology
was adopted to be able to mantain Sidekiq::Web as a Rack app.
The Router is heavily inspired on Rack::Router[0] (and in many parts
identical), however not being retrocompatible.
The Action is a wrapper to provide convenience, DRY code and maintain
the old interface.
I tried to mantain most of the old application structures so that
customizations and monkey-patches are easily adjustable or even
further work be done to enforce retrocompatibility.
Testing welcome!
0: https://github.com/pjb3/rack-router