Gear Guys,
This mail is a kind of follow-up to the thread started here:
https://www.mail-archive.com/picolisp@software-lab.de/msg09124.html .
Based on Alex's tips I have set up my database like this:
(class +Agenda +Entity)
(rel id (+Key +Number))
(rel date (+Ref +Date))
(rel mag (+Idx +String))
(rel year (+Aux +Ref +Number) (week))
(rel monthnum (+Ref +Number))
(rel monthtxt (+Idx +String))
(rel week (+Ref +Number))
(rel daynum (+Ref +Number))
(rel daytxt (+Idx +String))
(rel status (+Idx +String))
I read the data from a text file which is in reverse order and looks
like this for the current month:
# ===== Agenda =====
"date" "mag" "status"
# ===== 2019 =====
# ----- october
2019-10-31 XYZ ?
2019-10-30 XYZ ?
2019-10-29 XYZ ?
2019-10-28 XYZ ?
2019-10-27 XYZ Rh
2019-10-26 XYZ Rh
2019-10-25 XYZ Cp
2019-10-24 XYZ Cp
2019-10-23 XYZ Cp
2019-10-22 XYZ Cp
2019-10-21 XYZ Cp
2019-10-20 XYZ Rh
2019-10-19 XYZ J
2019-10-18 XYZ J
2019-10-17 XYZ O
2019-10-16 XYZ F
2019-10-15 XYZ Rh
2019-10-14 XYZ F
2019-10-13 XYZ F
2019-10-12 XYZ Rh
2019-10-11 XYZ Liv
2019-10-10 XYZ O
2019-10-09 XYZ Rh
2019-10-08 XYZ O
2019-10-07 XYZ F
2019-10-06 XYZ Rh
2019-10-05 XYZ J
2019-10-04 XYZ J
2019-10-03 XYZ Rdm
2019-10-02 XYZ J
2019-10-01 XYZ F
I read and feed the database with the following function:
(de feedAgendaDB (X)
(in (list "grep" "-v" "#" X)
(line) # skip the first line.
(until (eof)
# file schema: "date" "mag" "status"
(let (Dat (read) Mag (read) Stat (read))
(new! '(+Agenda)
# DB schema: "id" "date" "mag" "year" "monthnum"
"monthtxt" "week" "daynum" "daytxt" "status"
'id (format (pack (split (chop Dat) "-")))
'date ($dat Dat "-")
'mag Mag
'year (format (car (mapcar pack (split (chop Dat)
"-"))))
'monthnum (format (cadr (mapcar pack (split (chop
Dat) "-"))))
'monthtxt (get *MonFmt (format (cadr (mapcar pack
(split (chop Dat) "-")))))
'week (week ($dat Dat "-"))
'daynum (format (pack (get (split (chop Dat) "-") 3)))
'daytxt (day ($dat Dat "-"))
'status Stat ) ) ) ) )
where X is the file path.
In order to display the results of data queries I use these functions:
(setq *Params (-10 -9 -8 -7 -11 -11 -7 -8 -11 -8))
(de agendaShowOne (This)
(let Fmt *Params
(with This
(tab Fmt (: id) (: date) (: mag) (: year) (: monthnum)
(: monthtxt) (: week) (: daynum) (: daytxt) (:
status) ) ) ) )
(de agendaShowAll (X)
(mapcar agendaShowOne X) )
So far my main use of the data is to query the database to see what
happen during one week and I do it this way:
(agendaShowAll (reverse (collect 'year '+Agenda (2019 41))))
with this result for the week 41:
20191007 737645 mag150 2019 10 October 41 7
Monday F
20191008 737646 mag150 2019 10 October 41 8
Tuesday O
20191009 737647 mag150 2019 10 October 41 9
Wednesday Rh
20191010 737648 mag150 2019 10 October 41 10
Thursday O
20191011 737649 mag150 2019 10 October 41 11
Friday Liv
20191012 737650 mag150 2019 10 October 41 12
Saturday Rh
20191013 737651 mag150 2019 10 October 41 13
Sunday F
**My question is about the week 42 for which the result of the query is:**
(agendaShowAll (reverse (collect 'year '+Agenda (2019 42))))
20191016 737654 mag150 2019 10 October 42 16
Wednesday F
20191017 737655 mag150 2019 10 October 42 17
Thursday O
20191018 737656 mag150 2019 10 October 42 18
Friday J
20191019 737657 mag150 2019 10 October 42 19
Saturday J
20191020 737658 mag150 2019 10 October 42 20
Sunday Rh
20191014 737652 mag150 2019 10 October 42 14
Monday F
20191015 737653 mag150 2019 10 October 42 15
Tuesday Rh
The result starts with "Wednesday" instead of "Monday" as for the week
41 or other weeks! Is there any reason explaining this strange
behaviour? What am I doing wrong?
For what is worth I'm using PIL:
(version)
18.9.5
on Manjaro linux.
Thanks, best,
Eric
--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe