#3 Good progress on auxlists, not yet complete
This commit is contained in:
parent
d93619dff8
commit
19f1e7e513
|
@ -298,7 +298,7 @@
|
||||||
farkey (-> % :attrs :farkey)
|
farkey (-> % :attrs :farkey)
|
||||||
link-type (-> % :attrs :type)
|
link-type (-> % :attrs :type)
|
||||||
link-field (-> % :attrs :name)
|
link-field (-> % :attrs :name)
|
||||||
query-name (str "list-" entity-name "-by-" pretty-far)
|
query-name (list-related-query-name entity far-entity)
|
||||||
signature ":? :*"]
|
signature ":? :*"]
|
||||||
(hash-map
|
(hash-map
|
||||||
(keyword query-name)
|
(keyword query-name)
|
||||||
|
|
|
@ -89,8 +89,14 @@
|
||||||
|
|
||||||
|
|
||||||
(defn compose-get-menu-options
|
(defn compose-get-menu-options
|
||||||
[e property]
|
[property application]
|
||||||
;; TODO: doesn't handle the case of type="link"
|
;; TODO: doesn't handle the case of type="link"
|
||||||
|
(case (-> property :attrs :type)
|
||||||
|
"entity" (if-let [e (child-with-tag
|
||||||
|
application
|
||||||
|
:entity
|
||||||
|
#(= (-> % :attrs :name)
|
||||||
|
(-> property :attrs :entity)))]
|
||||||
(hash-map
|
(hash-map
|
||||||
(keyword (-> property :attrs :name))
|
(keyword (-> property :attrs :name))
|
||||||
(list
|
(list
|
||||||
|
@ -99,7 +105,56 @@
|
||||||
(query-name e :search-strings)
|
(query-name e :search-strings)
|
||||||
(query-name e :search-strings)
|
(query-name e :search-strings)
|
||||||
(keyword (-> property :attrs :farkey))
|
(keyword (-> property :attrs :farkey))
|
||||||
(list (keyword (-> property :attrs :name)) 'params))))
|
(list (keyword (-> property :attrs :name)) 'params)))
|
||||||
|
{})
|
||||||
|
;; "link" (list
|
||||||
|
;; 'do
|
||||||
|
;; (list
|
||||||
|
;; 'comment
|
||||||
|
;; "Can't yet handle link properties")
|
||||||
|
;; {})
|
||||||
|
;; (list
|
||||||
|
;; 'do
|
||||||
|
;; (list
|
||||||
|
;; 'comment
|
||||||
|
;; (str "Unexpedted type " (-> property :atts :type)))
|
||||||
|
{}))
|
||||||
|
|
||||||
|
|
||||||
|
(defn compose-fetch-auxlist-data
|
||||||
|
[auxlist entity application]
|
||||||
|
(let [p-name (-> auxlist :attrs :property)
|
||||||
|
property (child-with-tag entity
|
||||||
|
:property
|
||||||
|
#(= (-> % :attrs :name) p-name))
|
||||||
|
f-name (-> property :attrs :entity)
|
||||||
|
farside (child-with-tag application
|
||||||
|
:entity
|
||||||
|
#(= (-> % :attrs :name) f-name))]
|
||||||
|
(if (and (entity? entity) (entity? farside))
|
||||||
|
(hash-map
|
||||||
|
(keyword (auxlist-data-name auxlist))
|
||||||
|
(list
|
||||||
|
(symbol (str "db/" (list-related-query-name entity farside)))
|
||||||
|
'db/*db*
|
||||||
|
{:id (list :id 'params)}))
|
||||||
|
(do
|
||||||
|
(if-not
|
||||||
|
(entity? entity)
|
||||||
|
(*warn*
|
||||||
|
(str
|
||||||
|
"Entity '"
|
||||||
|
(-> entity :attrs :name)
|
||||||
|
"' passed to compose-fetch-auxlist-data is a non-entity")))
|
||||||
|
(if-not
|
||||||
|
(entity? farside)
|
||||||
|
(*warn*
|
||||||
|
(str
|
||||||
|
"Entity '"
|
||||||
|
f-name
|
||||||
|
"' (" farside ")
|
||||||
|
found in compose-fetch-auxlist-data is a non-entity")))
|
||||||
|
nil))))
|
||||||
|
|
||||||
|
|
||||||
(defn make-form-get-handler-content
|
(defn make-form-get-handler-content
|
||||||
|
@ -112,10 +167,14 @@
|
||||||
merge
|
merge
|
||||||
{:error (list :warnings 'record)
|
{:error (list :warnings 'record)
|
||||||
:record (list 'dissoc 'record :warnings)}
|
:record (list 'dissoc 'record :warnings)}
|
||||||
|
(concat
|
||||||
(map
|
(map
|
||||||
#(compose-get-menu-options e %)
|
#(compose-get-menu-options % a)
|
||||||
(filter #(:entity (:attrs %))
|
(filter #(:entity (:attrs %))
|
||||||
(descendants-with-tag e :property))))))
|
(descendants-with-tag e :property)))
|
||||||
|
(map
|
||||||
|
#(compose-fetch-auxlist-data % e a)
|
||||||
|
(descendants-with-tag f :auxlist))))))
|
||||||
|
|
||||||
|
|
||||||
(defn make-page-get-handler-content
|
(defn make-page-get-handler-content
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
:author "Simon Brooke"}
|
:author "Simon Brooke"}
|
||||||
adl.to-selmer-templates
|
adl.to-selmer-templates
|
||||||
(:require [adl-support.core :refer :all]
|
(:require [adl-support.core :refer :all]
|
||||||
|
[adl-support.forms-support :refer :all]
|
||||||
[adl.to-hugsql-queries :refer [expanded-token]]
|
[adl.to-hugsql-queries :refer [expanded-token]]
|
||||||
[adl-support.utils :refer :all]
|
[adl-support.utils :refer :all]
|
||||||
[clojure.java.io :refer [file make-parents resource]]
|
[clojure.java.io :refer [file make-parents resource]]
|
||||||
|
@ -577,7 +578,7 @@
|
||||||
(children-with-tag auxlist :field))
|
(children-with-tag auxlist :field))
|
||||||
{:tag :th :content [" "]})))}]}
|
{:tag :th :content [" "]})))}]}
|
||||||
(list-tbody
|
(list-tbody
|
||||||
(-> property :attrs :name)
|
(auxlist-data-name auxlist)
|
||||||
auxlist
|
auxlist
|
||||||
farside
|
farside
|
||||||
application)]}]})))
|
application)]}]})))
|
||||||
|
|
Loading…
Reference in a new issue