Fix negative chart values, add storage for charts


Fix negative chart values, add storage for charts

Ref T13279. I think I'm going to fling some stuff at the wall for a bit here and hope most of it sticks, so this series of changes may not be terribly cohesive or focused. Here:

The range of the chart is locked to "[0, 105% of max]". This is trying to make a pleasing extra margin above the maximum value, but currently just breaks charts with negative values. Later:

  • I'll probably let users customize this.
  • We should likely select 0 as the automatic minimum for charts with no negative values.
  • For charts with positive values, it would be nice to automatically pick a pleasantly round number (25, 100, 1000) as a maximum by default.

We don't have any storage for charts yet. Add some. This works like queries, where every possible configuration gets a short URL slug. Nothing writes or reads this yet.

Rename fn() to css_function(). This builds CSS functions for D3. The JS is likely to get substantial structural rewrites later on, fn() was just particularly offensive.

Test Plan: Viewed a fact series with negative values. Ran bin/storage upgrade.

Reviewers: amckinley

Reviewed By: amckinley

Subscribers: yelirekim, PHID-OPKG-gm6ozazyms6q6i22gyam

Maniphest Tasks: T13279

Differential Revision: https://secure.phabricator.com/D20438