* Improve dark Web UI
Add a lot more contrast to various UI elements. This is a lot more usable to my old eyes.
* Remove table-white
* More constrast fixes
* 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
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
No more massive numbers of Sidekiq::Extensions::DelayedClass jobs! Now you’ll see the underlying Class.method call instead so the UI is much more intuitive.
This might also be necessary for ActiveJob.