Overview
Comment: | Add one hour caching to graphs |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d4e4b804a807a6510f76fcff1d2dc711 |
User & Date: | bohwaz on 2020-12-09 18:41:41 |
Other Links: | manifest | tags |
Context
2020-12-09
| ||
18:42 | Make sure to unlink fees from a deleted year check-in: 2e04cd892d user: bohwaz tags: trunk | |
18:41 | Add one hour caching to graphs check-in: d4e4b804a8 user: bohwaz tags: trunk | |
18:23 | $target is not used check-in: 79206bfe3d user: bohwaz tags: trunk | |
Changes
Modified src/include/lib/Garradin/Accounting/Graph.php from [a1b33675d1] to [01efa75756].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php namespace Garradin\Accounting; use Garradin\Entities\Accounting\Account; use Garradin\Entities\Accounting\Line; use Garradin\Entities\Accounting\Transaction; use Garradin\Utils; use Garradin\Config; use Garradin\DB; use const Garradin\ADMIN_COLOR1; use const Garradin\ADMIN_COLOR2; use const Garradin\ADMIN_URL; use KD2\DB\EntityManager; use KD2\Graphics\SVG\Plot; use KD2\Graphics\SVG\Plot_Data; | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php namespace Garradin\Accounting; use Garradin\Entities\Accounting\Account; use Garradin\Entities\Accounting\Line; use Garradin\Entities\Accounting\Transaction; use Garradin\Utils; use Garradin\Config; use Garradin\DB; use Garradin\Static_Cache; use const Garradin\ADMIN_COLOR1; use const Garradin\ADMIN_COLOR2; use const Garradin\ADMIN_URL; use KD2\DB\EntityManager; use KD2\Graphics\SVG\Plot; use KD2\Graphics\SVG\Plot_Data; |
︙ | ︙ | |||
56 57 58 59 60 61 62 63 64 65 66 67 68 69 | const MONTHLY_INTERVAL = 2635200; // 1 month static public function plot(string $type, array $criterias, int $interval = self::WEEKLY_INTERVAL, int $width = 700) { if (!array_key_exists($type, self::PLOT_TYPES)) { throw new \InvalidArgumentException('Unknown type'); } $plot = new Plot($width, 300); $lines = self::PLOT_TYPES[$type]; $data = []; foreach ($lines as $label => $line_criterias) { | > > > > > > | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | const MONTHLY_INTERVAL = 2635200; // 1 month static public function plot(string $type, array $criterias, int $interval = self::WEEKLY_INTERVAL, int $width = 700) { if (!array_key_exists($type, self::PLOT_TYPES)) { throw new \InvalidArgumentException('Unknown type'); } $cache_id = sha1(json_encode(func_get_args())); if (!Static_Cache::expired($cache_id)) { return Static_Cache::get($cache_id); } $plot = new Plot($width, 300); $lines = self::PLOT_TYPES[$type]; $data = []; foreach ($lines as $label => $line_criterias) { |
︙ | ︙ | |||
109 110 111 112 113 114 115 | $plot->add($line); if ($i >= count($colors)) $i = 0; } } | | > > > > > > > > > > | 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | $plot->add($line); if ($i >= count($colors)) $i = 0; } } $out = $plot->output(); Static_Cache::store($cache_id, $out); return $out; } static public function pie(string $type, array $criterias) { if (!array_key_exists($type, self::PIE_TYPES)) { throw new \InvalidArgumentException('Unknown type'); } $cache_id = sha1(json_encode(func_get_args())); if (!Static_Cache::expired($cache_id)) { return Static_Cache::get($cache_id); } $pie = new Pie(700, 300); $pie_criterias = self::PIE_TYPES[$type]; $data = Reports::getClosingSumsWithAccounts(array_merge($criterias, $pie_criterias), 'ABS(sum) DESC'); $others = 0; |
︙ | ︙ | |||
157 158 159 160 161 162 163 | if ($others != 0) { $pie->add(new Pie_Data(abs($others) / 100, 'Autres', '#ccc')); } $pie->togglePercentage(true); | | > > > > | 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | if ($others != 0) { $pie->add(new Pie_Data(abs($others) / 100, 'Autres', '#ccc')); } $pie->togglePercentage(true); $out = $pie->output(); Static_Cache::store($cache_id, $out); return $out; } static protected function getColors() { $config = Config::getInstance(); $c1 = $config->get('couleur1') ?: ADMIN_COLOR1; $c2 = $config->get('couleur2') ?: ADMIN_COLOR2; |
︙ | ︙ |
Modified src/www/admin/acc/reports/graph_pie.php from [ca1e3741d3] to [f97272ab9f].
1 2 3 4 5 6 7 8 9 | <?php namespace Garradin; use Garradin\Accounting\Graph; require_once __DIR__ . '/_inc.php'; header('Content-Type: image/svg+xml'); | > > > > | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin; use Garradin\Accounting\Graph; require_once __DIR__ . '/_inc.php'; header('Content-Type: image/svg+xml'); $expiry = time() + 1800; $hash = sha1('pie_' . json_encode($criterias)); if (!Utils::HTTPCache($hash, $expiry)) { echo Graph::pie(qg('type'), $criterias); } |
Modified src/www/admin/acc/reports/graph_plot.php from [041f1bcddf] to [77ffd7aec0].
1 2 3 4 5 6 7 8 9 | <?php namespace Garradin; use Garradin\Accounting\Graph; require_once __DIR__ . '/_inc.php'; header('Content-Type: image/svg+xml'); | > > > > | > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin; use Garradin\Accounting\Graph; require_once __DIR__ . '/_inc.php'; header('Content-Type: image/svg+xml'); $expiry = time() + 1800; $hash = sha1('plot_' . json_encode($criterias)); if (!Utils::HTTPCache($hash, $expiry)) { echo Graph::plot(qg('type'), $criterias); } |
Modified src/www/admin/acc/reports/graph_plot_all.php from [d2282ca501] to [80e43ce701].
1 2 3 4 5 6 7 8 9 10 11 | <?php namespace Garradin; use Garradin\Accounting\Graph; require_once __DIR__ . '/../_inc.php'; qv(['type' => 'string|required']); header('Content-Type: image/svg+xml'); | > > > > | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php namespace Garradin; use Garradin\Accounting\Graph; require_once __DIR__ . '/../_inc.php'; qv(['type' => 'string|required']); header('Content-Type: image/svg+xml'); $expiry = time() + 1800; $hash = sha1('plot_all'); if (!Utils::HTTPCache($hash, $expiry)) { echo Graph::plot(qg('type'), [], Graph::MONTHLY_INTERVAL, 600); } |