summaryrefslogtreecommitdiff
path: root/page.cgi
diff options
context:
space:
mode:
authorubq323 <ubq323@ubq323.website>2024-06-18 22:46:31 +0100
committerubq323 <ubq323@ubq323.website>2024-06-18 22:46:31 +0100
commit3a6c6b00eb4c62b24c5e5ca670142ac5a00d7847 (patch)
treeea841da8e25da3489f6ed0c050c2213095e981a8 /page.cgi
Diffstat (limited to 'page.cgi')
-rwxr-xr-xpage.cgi120
1 files changed, 120 insertions, 0 deletions
diff --git a/page.cgi b/page.cgi
new file mode 100755
index 0000000..6743f91
--- /dev/null
+++ b/page.cgi
@@ -0,0 +1,120 @@
+#!/usr/bin/env lua
+
+local foods = require'foods'
+local qs = require'qs'
+
+local days = {
+ "mon","tue","wed","thu","fri","sat","sun"
+}
+
+
+print"Content-type: text/html"
+print""
+
+local prev_foods = {}
+local Q = {}
+if os.getenv'REQUEST_METHOD' == 'POST' then
+ Q = qs.parse_qs(io.read())
+ local log = assert(io.open("/home/rebecca/pr/food/LOG", "a+"))
+ log:write(os.date("%Y-%m-%dT%H:%M:%S"))
+ for i=0,13 do
+ local prev_food = assert(tonumber(Q[tostring(i)]))
+ prev_foods[i] = prev_food
+ log:write(" "..prev_food)
+ end
+ log:write("\n")
+ log:close()
+else
+ for i=0,13 do
+ prev_foods[i] = 1
+ end
+end
+
+local counts = {}
+for i = 0,13 do
+ counts[i] = (counts[i] or 0) + 1
+end
+local start_day = tonumber(Q.start or 1)
+
+local function ok(fi, si)
+ return true
+end
+
+local function sel(sel_ix)
+ local opts = {}
+ for food_ix,food in ipairs(foods) do
+ if food_ix == prev_foods[sel_ix] then
+ table.insert(opts,
+ '<option selected value='..food_ix..'>'
+ .. food_ix .. ' ' .. food.name .. '</option>'
+ )
+ elseif ok(food_ix, sel_ix) then
+ table.insert(opts,
+ '<option '..'value='..food_ix..'>'
+ .. food_ix .. ' ' .. food.name .. '</option>'
+ )
+ end
+ end
+ return '<select name='..sel_ix..'>'
+ .. table.concat(opts,'\n') .. '</select>'
+end
+
+local function row(n)
+ local d = 1+((n+start_day-1)%7)
+ return '<tr>'
+ .. '<th>' .. days[d] .. '</th>'
+ .. '<td>' .. sel(2*n) .. '</td>'
+ .. '<td>' .. sel(2*n+1) .. '</td>'
+
+end
+
+
+print[[
+<form method=post>
+<label for=start>start on:</label>
+<select id=start name=start>
+]]
+for i,d in ipairs(days) do
+ local s = i == start_day and 'selected ' or ''
+ print('<option '..s..'value='..i..'>'..d..'</option>')
+end
+print[[
+</select>
+
+<table>
+<tr>
+ <th>\</th>
+ <th>lunch</th>
+ <th>dinner</th>
+</tr>
+]]
+for n=0,6 do print(row(n)) end
+print[[
+</table>
+<input type=submit value=check name=submit>
+<br>
+<hr>
+]]
+
+local ings = {}
+for _,fx in pairs(prev_foods) do
+ local food = foods[fx]
+ for k,v in pairs(foods[fx].ing) do
+ ings[k] = (ings[k] or 0) + v
+ end
+end
+local i2 = {}
+for k,v in pairs(ings) do
+ table.insert(i2,k)
+end
+table.sort(i2)
+print'<dl>'
+
+for _,g in ipairs(i2) do
+ print('<dt>'..g..'</dt>')
+ print('<dd>'..ings[g]..'x</dd>')
+end
+print'<hr>'
+for _,g in ipairs(i2) do
+ print(g..', ')
+end