No description
Find a file
2026-09-28 13:04:54 +01:00
src/gaza_stats Added codox documentation generation; updated README. 2026-09-28 13:00:03 +01:00
all-donations.png first commit 2026-09-27 15:34:12 +01:00
LICENSE.md first commit 2026-09-27 15:34:12 +01:00
project.clj Uhhhmmm... I may just have messed up my codox source path pattern... 2026-09-28 13:04:54 +01:00
README.md Uhhhmmm... I may just have messed up my codox source path pattern... 2026-09-28 13:04:54 +01:00

gaza-stats

A Clojure library designed to explore donations data for people in Gaza whose accounts have been verified by the Gaza Verified volunteers.

Graph of donations between April 2024 and today

Dependencies

Usage

This is a very experimental, unfinished and unpolished library designed for use with leiningen. To use, clone this repository, connect to the directory into which you cloned it, and type lein repl.

At present several useful functions are implemented:

accounts-with-donations-by-date-range

(accounts-with-donations-by-date-range start-date end-date)

Return a list of maps, each representing one account from the gaza.onl database, with a key :donations, whose value is a float representing the total donations received by that account between the dates start-date (exclusive) and end-date (inclusive). Date arguments should be supplied as java.time.LocalDate objects, or as strings in the format yyyy-mm-dd.

view source

chart-accounts-with-donations-by-months-in-range

(chart-accounts-with-donations-by-months-in-range start-date end-date)

Return a chart with one line for each calendar month covering from start-date (inclusive) to end-date (inclusive). Arguments should be supplied as java.time.LocalDate objects, or as strings in the format yyyy-mm-dd, showing donations as for chart-donations-by-accounts-in-date-range, q.v.

TODO: There are currently two problems with this at present: chart legends are not displayed in sequential order; and there appears to be occasional spurious data (but I don’t know why).

view source

chart-donations-as-percentage-in-date-range

(chart-donations-as-percentage-in-date-range start-date end-date)

Return a chart of donations received by individual accounts between start-date (exclusive) and end-date (inclusive). Arguments should be supplied as java.time.LocalDate objects, or as strings in the format yyyy-mm-dd. Accounts are identified in the chart only by rank order.

view source

chart-donations-by-accounts-in-date-range

(chart-donations-by-accounts-in-date-range start-date end-date)

Return a chart of donations received by individual accounts between start-date (exclusive) and end-date (inclusive). Arguments should be supplied as java.time.LocalDate objects, or as strings in the format yyyy-mm-dd. Accounts are identified in the chart only by rank order.

view source

chart-donations-by-weeks

(chart-donations-by-weeks start-date end-date key)

Create and return an XY chart of data on field represented by key of donations made between start-date and end-date. Arguments may be supplied as java.time.LocalDate objects, or as strings in the format yyyy-mm-dd.

view source

chart-number-donations-by-weeks

(chart-number-donations-by-weeks start-date end-date)

Create and return an XY chart of data on number of donations made between start-date and end-date. Arguments may be supplied as java.time.LocalDate objects, or as strings in the format yyyy-mm-dd.

view source

chart-total-donations-by-weeks

(chart-total-donations-by-weeks start-date end-date)

Create and return an XY chart of data on total donations made between start-date and end-date. Arguments may be supplied as java.time.LocalDate objects, or as strings in the format yyyy-mm-dd.

view source

enhance-account-with-donations

(enhance-account-with-donations account-map sd ed)

Take this account_map, which must at least have a valid value for the key :campaign_url and return a similar map including the key :donations, whose value is a float representing the total donations received by that campaign URL between the dates sd (exclusive) and ed (inclusive). Date arguments should be supplied as java.time.LocalDate objects.

view source

total-donations-by-weeks

(total-donations-by-weeks start-date)``(total-donations-by-weeks start-date end-date)

Return a list of pairs [java.time.LocalDate date, float amount](file:///home/simon/workspace/gaza-stats/docs/codox/java.time.LocalDate date, float amount) representing the total of donations made between start-date and end-date. Arguments may be supplied as java.time.LocalDate objects, or as strings in the format yyyy-mm-dd. If end-date is not supplied, data for a single week will be returned.

view source

Viewing charts

In your REPL, invoke (require '[com.hypirion.clj-xchart :refer [view]]). You can then invoke view on a chart returned by the above function, for example:

(view (chart-total-donations-by-weeks "2024-04-01" "2026-09-20"))

NOTE: Data

This code is designed to explore data in a SQLite database which it expects to be called app.db and find in its resources directory. This database is not included in this repository but may be downloaded from here.

NOTE: Use of SQL Korma

I used SQL Korma in this project because I know it and I like it, but it is no longer maintained and its website is no longer online. The last version I could find on the Internet Archive is here. The source code is on Github. It might be better to rewrite so as not to use it, especially given that (at present) the SQL usage is trivial.

License

Copyright © 2026 Simon Brooke.

This program and the accompanying materials are made available under the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.