diff --git a/pkg/arvo/app/neo.hoon b/pkg/arvo/app/neo.hoon index 56fc522054..8ef4d5f0ad 100644 --- a/pkg/arvo/app/neo.hoon +++ b/pkg/arvo/app/neo.hoon @@ -1564,9 +1564,9 @@ =. run (emit (do-card #/[p/our.bowl]/srv/sky %make %sky-eyre ~ ~)) =. run - (emit (do-card #/[p/our.bowl]/srv/sky %make %tree ~ ~)) + (emit (do-card #/[p/our.bowl]/tree %make %tree ~ ~)) =. run - (emit (do-card #/[p/our.bowl]/srv/sky %make %tree-eyre ~ ~)) + (emit (do-card #/[p/our.bowl]/srv/tree %make %tree-eyre ~ ~)) run ++ pess |=(=post:neo (~(pith press post) %out)) ++ clay-beak ^- path diff --git a/pkg/arvo/neo/cod/std/src/con/http-request-tree-diff.hoon b/pkg/arvo/neo/cod/std/src/con/http-request-tree-diff.hoon new file mode 100644 index 0000000000..79474bf1d9 --- /dev/null +++ b/pkg/arvo/neo/cod/std/src/con/http-request-tree-diff.hoon @@ -0,0 +1,17 @@ +/@ http-request +/@ tree-diff +/- serv=sky-server +:- [%http-request %$ %tree-diff] +|= =http-request +^- tree-diff +=/ pam (~(uni by pam:(parse-url:serv http-request)) (parse-form-body:serv http-request)) +=/ bod ~(. by pam) +=/ head (@tas (got:bod 'head')) +?+ head ~| [%unknown-head head] !! + %send-tomb + ~& >>> pith/(got:bod 'pith') + =/ path (stab (got:bod 'pith')) + [head (pave:neo path)] + %send-poke + [head *pith:neo *@tas *] +== \ No newline at end of file diff --git a/pkg/arvo/neo/cod/std/src/imp/hawk-eyre.hoon b/pkg/arvo/neo/cod/std/src/imp/hawk-eyre.hoon index 0477179003..1ab71f5274 100644 --- a/pkg/arvo/neo/cod/std/src/imp/hawk-eyre.hoon +++ b/pkg/arvo/neo/cod/std/src/imp/hawk-eyre.hoon @@ -25,7 +25,6 @@ %eyre-task =+ !<(=task:eyre:neo vax) =/ [eyre-id=@ta req=inbound-request:eyre] task - ?. =(['neo' 'sky' ~] (scag 2 (stab url.request.req))) ~|(not-a-sky-task/url.request.req !!) ?. authenticated.req =/ eyre=pith:neo #/[p/our.bowl]/$/eyre :_ pail diff --git a/pkg/arvo/neo/cod/std/src/imp/task.hoon b/pkg/arvo/neo/cod/std/src/imp/task.hoon index 718a837e18..2f37ddfbf5 100644 --- a/pkg/arvo/neo/cod/std/src/imp/task.hoon +++ b/pkg/arvo/neo/cod/std/src/imp/task.hoon @@ -58,6 +58,15 @@ =/ this !<(task state-vase) ?+ stud !! %gift + ::check if %del case from tree view + =/ =gift:neo !<(gift:neo vax) + =/ gift-card=[=pith:neo =loot:neo] + %+ snag 0 + ~(tap of:neo gift) + ?: =(mode.loot.gift-card %del) + =/ i (find [pith.gift-card ~] order.this) + ?~ i [~ task/!>(this)] + [~ task/!>(this(order (oust [(need i) 1] order.this)))] ::check if all kid tasks are done =/ dun (check-kids bowl) [~ task/!>(this(done dun, kids-done dun))] @@ -94,6 +103,7 @@ ?~ i `task/!>(this) :_ task/!>(this(order (oust [(need i) 1] order.this))) :~ [(welp here.bowl pith.diff) [%tomb ~]] + [(welp here.bowl pith.diff) [%cull ~]] == :: %reorder diff --git a/pkg/arvo/neo/cod/std/src/imp/tree-eyre-handler.hoon b/pkg/arvo/neo/cod/std/src/imp/tree-eyre-handler.hoon index ab13c88ac8..b24534dd43 100644 --- a/pkg/arvo/neo/cod/std/src/imp/tree-eyre-handler.hoon +++ b/pkg/arvo/neo/cod/std/src/imp/tree-eyre-handler.hoon @@ -1,4 +1,6 @@ /@ htmx-type=htmx +/@ tree-diff +/- serv=sky-server /* jquery /* htmx-js /* htmx-response-targets @@ -10,25 +12,26 @@ ^- kook:neo |% ++ state pro/%eyre-task -++ poke *(set stud:neo) +++ poke *(set stud:neo) ++ kids *kids:neo ++ deps +:: static dep to imp folder to create new shrub %- ~(gas by *band:neo) :~ :- %src ^- fief:neo :- req=| ^- quay:neo - :- [pro/%htmx ~] + :- [[%or pro/%htmx any/~ ~] ~] ^- (unit port:neo) :+ ~ %z %- ~(gas by *lads:neo) :~ :- & - `lash:neo`[any/~ ~] + `lash:neo`[[%or pro/%htmx any/~ ~] ~] == == ++ form |_ [=bowl:neo =aeon:neo =pail:neo] - ++ poke + ++ poke |= [=stud:neo =vase] ^- (quip card:neo pail:neo) !! @@ -39,6 +42,28 @@ =+ !<([eyre-id=@ta req=inbound-request:eyre] vase) ~& > req/req :_ [stud vase] + :: deps = band + :: band = (map term fief) + :: fief = [=deed =quay] + :: quay = (pair lash (unit port)) + :: port = (pair dare lads) + :: lads = (map pish lash) + :: lash = [state=curb poke=(set stud)] + :: + :: lore = (axal idea) + :: idea = [saga=(pair aeon pail) thru=(unit stud) pail] + :: saga = (pair aeon pail) + :: aeon = (pair ever oath) + :: ever - total shrub version + :: oath = (pair hash=@uvH seal=@uvH) + :: pail = (pair stud vase) + :: + :: src - (unit (pair pith lore)) + :: p.u.src - pith + :: q.u.src - lore + :: q.saga.idea.q.u.src - pail + :: ~(tap by q.u.q.quay.u.src) + :: q.q.pail ?~ src=(~(get by deps.bowl) %src) =/ stub=manx ;div @@ -51,7 +76,8 @@ ['content-type' 'text/html']~ stub == - ~& > src/p.u.src + :: ~& > src/p.u.src + :: ~& > all-deps/~(tap by deps) =/ here p.u.src ^- (list card:neo) ?+ method.request.req ~|(%unsupported-http-method !!) @@ -70,12 +96,19 @@ ['content-type' 'text/html']~ stub == + :: get lash from dep and pass pokes to poke-form + :: from src + :: ~& >>> + :: %+ turn ~(tap of:neo q.u.src) + :: |= [=pith:neo =idea:neo] + :: pail/(sell q.pail.idea) =/ bol *bowl:neo =. here.bol here =. our.bol our.bowl =. now.bol now.bowl =. eny.bol eny.bowl =. kids.bol q.u.src + ~& > pail/q.saga.u.reet =/ stub=manx ;div ;+ (view bol) @@ -87,6 +120,46 @@ ['content-type' 'text/html']~ stub == + %'POST' + =/ purl (parse-url:serv request.req) + =/ content-type (~(gut by pam.purl) 'content-type' 'text/html') + =/ body (parse-body:serv request.req) + =/ poke-stud + ^- stud:neo + ~| %no-stud-specified + (~(got by pam.purl) 'stud') + ~& >> poke-stud/poke-stud + =/ diff-vase + (http-request [poke-stud `request:http`request.req]) + ~& >>> diff-vase/diff-vase + =/ diff-type -:!<(tree-diff diff-vase) + =/ bol *bowl:neo + =. here.bol here + =. our.bol our.bowl + =. now.bol now.bowl + =. eny.bol eny.bowl + =/ stub=manx + :: ?+ diff-type + ;div + ;p: error + == + :: %send-poke + :: ;div + :: ;p: sent + :: == + :: %send-tomb + :: ;div + :: ;p: deleted + :: == + :: == + :- [#/[p/our.bowl]/tree %poke %tree-diff diff-vase] + %: eyre-cards + eyre-id + bol + 200 + ['content-type' 'text/html']~ + stub + == == -- -- @@ -149,12 +222,14 @@ :: only pith %+ turn ::only short paths - %+ sort + %+ sort %+ skim ~(tap of:neo kids.bowl) - |=([=pith:neo *] =(1 (lent pith))) + |= [=pith:neo *] + =(1 (lent pith)) aor - |= [=pith:neo *] - %- crip "[{(en-tape:pith:neo pith)}]" + |= [=pith:neo *] + %- crip + "[{(en-tape:pith:neo pith)}]" =/ row-template=tape (join ' 1fr ' (weld "[first-row]" `tape`first-kids)) ;div =style "display: grid; grid-template-rows: {row-template}; grid-template-columns: auto; padding: 12px;" @@ -163,7 +238,17 @@ ;div.p2: none =/ =pail:neo q.saga.u.node ;div - =style "grid-column-start: 1; grid-column-end: 2; grid-row-start: first-row; grid-row-end: first-row; padding: 8px; border: 2px solid black;border-radius: 6px; margin-top: 1rem;" + =style + """ + grid-column-start: 1; + grid-column-end: 2; + grid-row-start: first-row; + grid-row-end: first-row; + padding: 8px; + border: 2px solid black; + border-radius: 6px; + margin-top: 1rem; + """ ;p: {} ;+ (state-print pail) == @@ -178,47 +263,14 @@ =style "visibility: hidden" nothing == - ~& > pith/pith ;div =style "grid-column-start: {(scow %ud +((lent pith)))}; grid-column-end: {(scow %ud (add 2 (lent pith)))}; grid-row-start: {(en-tape:pith:neo [-.pith ~])};grid-row-end: {(en-tape:pith:neo [-.pith ~])}; padding: 8px; border: 2px solid black;border-radius: 6px;margin-top: 1rem;" ;h3: {(en-tape:pith:neo pith)} - ;+ - =/ pal=pail:neo q.saga.idea + ;+ (tomb-button bowl pith) ;div ;h3: state - ;+ (state-print pal) - ;form - =hx-post "/neo/tree{(en-tape:pith:neo pith)}?stud=type-diff" - =hx-target "find .loading" - ;input - =type "text" - =name "diff-type" - =oninput "this.setAttribute('value', this.value); this.parentNode.setAttribute('head', this.value);" - =autocomplete "off" - =placeholder "diff-type" - =required "" - ; - == - ;input - =type "text" - =name "pith" - =value "{(en-tape:pith:neo pith)}" - ; - == - ;input - =type "text" - =name "value1" - =oninput "this.setAttribute('value', this.value);" - =autocomplete "off" - =placeholder "value" - =required "" - ; - == - ;button.loader - ;span.loaded: create - ;span.loading: loading - == - == + ;+ (state-print q.saga.idea) + ;+ (poke-form pith) == == == @@ -233,4 +285,55 @@ (of-wall:format (~(win re (sell q.pail)) 0 80)) == :: +++ poke-form + |= =pith:neo + ^- manx + ;form + =hx-post "/neo/tree{(en-tape:pith:neo pith)}?stud=type-diff" + =hx-target "find .loading" + ;input + =type "text" + =name "diff-type" + =oninput "this.setAttribute('value', this.value); this.parentNode.setAttribute('head', this.value);" + =autocomplete "off" + =placeholder "diff-type" + =required "" + ; + == + ;input + =type "text" + =name "pith" + =value "{(en-tape:pith:neo pith)}" + ; + == + ;input + =type "text" + =name "value1" + =oninput "this.setAttribute('value', this.value);" + =autocomplete "off" + =placeholder "value" + =required "" + ; + == + ;button.loader + ;span.loaded: create + ;span.loading: loading + == + == +:: +++ tomb-button + |= [=bowl:neo =pith:neo] + ^- manx + ;form + =hx-post "/neo/tree{(en-tape:pith:neo here.bowl)}?stud=tree-diff&head=send-tomb" + =hx-swap "outerHTML" + =hx-target "find .loading" + ;button.loader + =name "pith" + =value (en-tape:pith:neo (welp here.bowl pith)) + ;span.loaded: tomb + ;span.loading: loading + == + == +:: -- \ No newline at end of file diff --git a/pkg/arvo/neo/cod/std/src/imp/tree-eyre.hoon b/pkg/arvo/neo/cod/std/src/imp/tree-eyre.hoon index 36c1c4dd56..f8ce28cce3 100644 --- a/pkg/arvo/neo/cod/std/src/imp/tree-eyre.hoon +++ b/pkg/arvo/neo/cod/std/src/imp/tree-eyre.hoon @@ -16,7 +16,8 @@ %eyre-task =+ !<(=task:eyre:neo vase) =/ [eyre-id=@ta req=inbound-request:eyre] task - ?. =(['neo' 'tree' ~] (scag 2 (stab url.request.req))) ~|(not-a-tree-task/url.request.req !!) + ::~& >> path-req/req + :: ?. =(['neo' 'tree' ~] (scag 2 (stab url.request.req))) ~|(not-a-tree-task/url.request.req !!) ~& >>> 'in tree!' ?. authenticated.req =/ eyre=pith:neo #/[p/our.bowl]/$/eyre diff --git a/pkg/arvo/neo/cod/std/src/imp/tree.hoon b/pkg/arvo/neo/cod/std/src/imp/tree.hoon index 450e3aad41..9bf3868ec5 100644 --- a/pkg/arvo/neo/cod/std/src/imp/tree.hoon +++ b/pkg/arvo/neo/cod/std/src/imp/tree.hoon @@ -1,8 +1,9 @@ /@ tree +/@ tree-diff ^- kook:neo |% ++ state pro/%tree -++ poke (sy %tree ~) +++ poke (sy %tree-diff ~) ++ kids *kids:neo ++ deps *deps:neo ++ form @@ -14,12 +15,27 @@ :_ tree/!>(~) ~ ++ poke - |= [=stud:neo =vase] - ^- (quip card:neo pail:neo) - ~& > stud/stud - =/ this !<(=tree q.pail) - ?+ stud !! - %tree [~ tree/vase] - == + |= [=stud:neo =vase] + ^- (quip card:neo pail:neo) + ~& > stud/stud + =/ this !<(=tree q.pail) + ?+ stud !! + :: %tree + :: [~ tree/vase] + :: + %tree-diff + =/ diff !<(tree-diff vase) + ~& >>> diff-tree-imp/diff + ?+ -.diff !! + %send-tomb + =/ =pith:neo +.diff + ~& >>> pith-tomb/pith + :_ tree/!>(~) + :~ + [pith %tomb ~] + [pith %cull ~] + == + == + == -- -- \ No newline at end of file diff --git a/pkg/arvo/neo/cod/std/src/pro/tree-diff.hoon b/pkg/arvo/neo/cod/std/src/pro/tree-diff.hoon index 418cd83109..2155429aa5 100644 --- a/pkg/arvo/neo/cod/std/src/pro/tree-diff.hoon +++ b/pkg/arvo/neo/cod/std/src/pro/tree-diff.hoon @@ -1,3 +1,4 @@ $% - [%send-diff =pith:neo type-diff=@tas val=*] + [%send-poke =pith:neo type-diff=@tas val=*] + [%send-tomb =pith:neo] == \ No newline at end of file