[Wheat-cvs] r1/web-dev/source/cardfile cardfile.ws,1.2,1.3 stack.html,1.2,1.3
Status: Pre-Alpha
Brought to you by:
mark_lentczner
From: Mark L. <mar...@us...> - 2005-04-15 17:38:52
|
Update of /cvsroot/wheat/r1/web-dev/source/cardfile In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv402/web-dev/source/cardfile Modified Files: cardfile.ws stack.html Log Message: displaying the table array card titles and body Index: cardfile.ws =================================================================== RCS file: /cvsroot/wheat/r1/web-dev/source/cardfile/cardfile.ws,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- cardfile.ws 2 Apr 2005 06:35:35 -0000 1.2 +++ cardfile.ws 15 Apr 2005 17:38:42 -0000 1.3 @@ -21,10 +21,24 @@ return \#stacks.last } stack-count(): { return #stacks.size() } + stack-by-title(title): { + i := 0 + while (i < #stacks.size()) { + if (#stacks[i].title == title) { + return \#stacks[i] + } + i += 1 + } + return ??? + } + render(request: r): { return $/library/render.redirect(\#stacks[0], request: \r); } expander: {:'/library/render/expander': + tt-title(): { + return #subject.title || "" + } tt-stack(): { #start-repeat() i := 0 @@ -85,6 +99,14 @@ containing-file(): { return \#container.container } + table-cols(): { return 3 } + table-rows(): { return (#table.size / #table-cols).ceiling + 1 } + table-card(row: i, col: j): { + k := i * #table-rows + j + if (#table[k]!) { return ??? } + else { return \#table[k] } + } + table-map(): { `` mostly for testing a := [ ] i := 0 @@ -123,7 +145,7 @@ $/library/render.url(\#subject, request:\#request)) } tt-title(): { - return #subject.title; + return #subject.title } tt-stacks(): { #expand(subject: \#subject.containing-file) @@ -131,41 +153,64 @@ tt-table-row(): { #start-repeat() - num-rows := #subject.table.size / 3 - i := 0 - while (i < num-rows) { - #expand(expand: {<:'/library/render/expander': - row: i - stack: \#subject - tt-table-card(): { - #start-repeat() - j := 0 - while (j < 3) { - k := #row * 3 + j; - if (#stack.table[k]?) { - #expand(subject: \#stack.table[k]) - } - else { - - } - j += 1 - } - } - }) - i += 1; + row := 0 + while (row < #subject.table-rows) { + #expand( + expander: \#row-expander, + subject: { row: row; stack: \#subject} + ) + row += 1; } } - tt-table-card(): { - + row-expander: {:'/library/render/expander': + tt-table-col(): { + #start-repeat() + col := 0 + while (col < #subject.stack.table-cols) { + #expand( + expander: \#col-expander, + subject: { + card: \\#subject.stack.table-card( + row: #subject.row, + col: col) + row: #subject.row + col: col + } + ) + col += 1 + } + } + + col-expander: {:'/library/render/expander': + tt-table-card(): { + if (#subject.card?) { #expand(subject: #subject.card) } + else { #skip() } + } + tt-add-href(): { + #attribute("href", + "add?row=" + #subject.row + ... + ";col=" + #subject.col + ) + } + } } } } card: { -- instance -- - title: ??? - body: ??? + title: "" + body: "" + -- public -- + expander: { :'/library/render/expander': + tt-title(): { + return #subject.title || "" + } + tt-body(): { + return #subject.body || "" + } + } } @@ -184,20 +229,25 @@ test-stack-basics(): { cf := $../cardfile.new() #assert-equals(2, cf.stack-count) - #assert-equals("stuff", cf.stacks[0].title) - #assert-equals("morgue", cf.stacks[1].title) - #assert-equals("change me", cf.stacks[0].table[0].title) - now := \cf.add-stack("now") + #assert-equals("morgue", cf.stack-by-title("morgue").title) + #assert-equals(???, cf.stack-by-title("not-present")) + + st-stuff := \cf.stack-by-title("stuff") + #assert-equals("stuff", st-stuff.title) + #assert-equals("change me", st-stuff.table.first.title) + + st-now := \cf.add-stack("now") #assert-equals(3, cf.stack-count) - #assert-equals("now", now.title) + #assert-equals("now", st-now.title) + #assert-equals("now", cf.stack-by-title("now").title) - later := \cf.add-stack("later") + st-later := \cf.add-stack("later") #assert-equals(4, cf.stack-count) - #assert-equals("later", later.title) + #assert-equals("later", st-later.title) #assert-equals(cf.absolute-path(), - now.containing-file.absolute-path()) + st-now.containing-file.absolute-path()) } test-card-basics(): { @@ -282,13 +332,13 @@ -- private -- setup(): { cf := $../cardfile.new() - cf.add-stack("now") - cf.add-stack("later") + st0 := \cf.add-stack("now") + st1 := \cf.add-stack("later") - st0 := \cf.stacks[0] st0.new-table-card(at: 0).title := "a" st0.new-table-card(at: 1).title := "b" st0.new-table-card(at: 2).title := "c" + st0.table[0].body := "hot stuff" l := [ "d", "e", "f", "g" ] i := 0 @@ -298,14 +348,38 @@ i += 1 } - st1 := \cf.stacks[1] st1.new-table-card(at: 1).title := "z" - st1.new-table-card(at: 4).title := "y" - st1.new-table-card(at: 6).title := "x" + st1.new-table-card(at: 3).title := "y" + st1.new-table-card(at: 5).title := "x" return cf; } + -- public -- + test-table-layout(): { + cf := #setup(); + + st := \cf.stack-by-title("morgue") + #assert-equals(1, st.table-rows) + #assert-equals(3, st.table-cols) + #assert-equals(???, st.table-card(row: 0, col: 0)) + + st := \cf.stack-by-title("later") + #assert-equals(3, st.table-rows) + #assert-equals(3, st.table-cols) + #assert-equals(???, st.table-card(row: 0, col: 0)) + #assert-equals("z", st.table-card(row: 0, col: 1).title) + #assert-equals(???, st.table-card(row: 0, col: 2)) + #assert-equals("y", st.table-card(row: 1, col: 0).title) + #assert-equals(???, st.table-card(row: 1, col: 1)) + #assert-equals("x", st.table-card(row: 1, col: 2).title) + #assert-equals(???, st.table-card(row: 2, col: 0)) + #assert-equals(???, st.table-card(row: 2, col: 1)) + #assert-equals(???, st.table-card(row: 2, col: 1)) + } + + -- private -- + sample-request(): { return $/library/render.tests.sample-request; } @@ -313,6 +387,10 @@ render(node): { return node.render(request: #sample-request); } + + expand-trace(node): { + return $/library/render.expand(subject: \\node, trace: true) + } -- public -- test-stack-render(): { @@ -330,6 +408,40 @@ #assert-contains("/stacks/3", html) } + test-stack-card-render(): { + cf := #setup() + st-now := \cf.stack-by-title("now") + + trace := #expand-trace(\st-now) + + #assert-equals("repeated", trace.action("table-row").value) + #assert-equals(3, trace.repeat-count("table-row")) + row-trace := trace.repeat-index("table-row", 0) + + #assert-equals("repeated", row-trace.action("table-col").value) + #assert-equals(3, row-trace.repeat-count("table-col")) + col-trace := row-trace.repeat-index("table-col", 0) + + #assert-equals("repeated", col-trace.action("table-card").value) + #assert-equals(1, col-trace.repeat-count("table-card")) + card-trace := col-trace.repeat-index("table-card", 0) + + #assert-equals("replaced", card-trace.action("title").value) + #assert-equals("a", card-trace.replacement("title")) + + #assert-equals("replaced", card-trace.action("body").value) + #assert-equals("hot stuff", card-trace.replacement("body")) + + col-trace := row-trace.repeat-index("table-col", 1) + card-trace := col-trace.repeat-index("table-card", 0) + + #assert-equals("replaced", card-trace.action("title").value) + #assert-equals("b", card-trace.replacement("title")) + + #assert-equals("replaced", card-trace.action("body").value) + #assert-equals("", card-trace.replacement("body")) + } + ``( things that are rendered @@ -340,10 +452,11 @@ stack tt-stacks (list of stacks) stack tt-title (trivial) stack tt-url (trivial) + stack tt-table-row (in proper order, proper number) + stack tt-table-col stack tt-table-card (proper card or place) stack tt-table-card-id - stack tt-table-card-url stack tt-table-card-delete-url stack tt-table-place-add-url stack tt-table-place-name @@ -359,6 +472,7 @@ card tt-title (trivial) card tt-body (writeup formatted, trivial) card tt-body-raw (trivial) + card tt-utl (trivial) ``) ``( operations when viewing a stack or a card come back as GETs and POSTs: Index: stack.html =================================================================== RCS file: /cvsroot/wheat/r1/web-dev/source/cardfile/stack.html,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- stack.html 2 Apr 2005 06:35:35 -0000 1.2 +++ stack.html 15 Apr 2005 17:38:42 -0000 1.3 @@ -17,13 +17,15 @@ <div id="content"> <table id="table"> <tr tt:name="table-row"> - <td td:name="table-card"><div class="place" id="placeA"> - <p>ⓐ</p> + <td tt:name="table-col"><div class="place" id="placeA"> + <p tt:name="place-label">ⓐ</p> <ul class="placeControls"> - <li><a href="?op=add;item=placeA" title="add new card">+</a></li> + <li><a tt:name="add-href" href="add?table=0" title="add new card"> + +</a></li> </ul> - <div class="card" id="cardA"> - <h2 title="drag to rearrange">Sew Sails</h2> + <div tt:name="table-card" class="card" id="cardA"> + <h2 title="drag to rearrange" tt:name="title">Sew Sails</h2> + <tt:span name="body"> <p>The sails should be rectangles that are approx. 30' by 8'. </p> <p>Traditionally they are made out of canvas, but in this @@ -31,13 +33,14 @@ hemp blend.</p> <p>We'd like them to be a sort of Robin's egg blue, though with a tinge of red. And maybe a cool white stripe.</p> + </tt:span> <ul class="cardControls"> <li><a href="cardA" title="view and edit card">✎</a></li> <li><a href="?op=delete;item=cardA" title="delete card">×</a></li> </ul> </div> </div></td> - <td><div class="place" id="placeB"> + <td tt:example="table-col"><div class="place" id="placeB"> <p>ⓑ</p> <ul class="placeControls"> <li><a href="?op=add;item=placeB" title="add new card">+</a></li> @@ -52,15 +55,16 @@ </div> </div> </td> - <td><div class="place" id="placeC"> + <td tt:example="table-col"><div class="place" id="placeC"> <p>ⓒ</p> <ul class="placeControls"> - <li><a href="?op=add;item=placeC" title="add new card">+</a></li> + <li><a href="?op=add;item=placeC" title="add new card"> <span style="display:none;"><tt:attribute for="href">add?table=<tt:span name="place-index">0</tt:span></tt:attribute></span> ++</a></li> </ul> </div> </td> </tr> - <tr> + <tr tt:example="table-row"> <td><div class="place" id="placeD"> <p>ⓓ</p> <ul class="placeControls"> @@ -97,7 +101,7 @@ </div> </div></td> </tr> - <tr> + <tr tt:example="table-row"> <td><div class="place" id="placeG"> <p>ⓖ</p> <ul class="placeControls"> |