Basic stats.

This commit is contained in:
Dominik Pantůček 2023-03-19 19:23:37 +01:00
parent ed6d9913de
commit e472292232
3 changed files with 11 additions and 2 deletions

View file

@ -101,6 +101,7 @@
(print-members-base-info MB))
(newline))
((print-stats)
(newline)
(print-members-base-stats
(members-base-stats MB)))
)

View file

@ -36,6 +36,7 @@
member-student?
member-nick
member-id
member-existing?
member-record-tests!
)
@ -129,6 +130,12 @@
(define (member-id mr)
(mr-ref mr 'id))
;; Returns true if the member has joined.
(define (member-existing? mr)
(let ((joined (mr-ref mr 'joined)))
(and joined
(month<? joined (*current-month*)))))
;; Performs module self-tests.
(define (member-record-tests!)
(run-tests

View file

@ -284,8 +284,9 @@
;; Returns a list two lists: keys, data.
;; Each data record contains values for all keys.
(define (members-base-stats mb)
(let ((keys '(month total active suspended students destroyed invalid)))
(define (members-base-stats mb-arg)
(let ((keys '(month total active suspended students destroyed invalid))
(mb (filter-members-by-predicate mb-arg member-existing?)))
(let mloop ((data '())
(month (*member-default-joined*)))
(if (month<? month (*current-month*))