Searching lists works; paging lists still doesn't, but is closer.
This commit is contained in:
parent
7dfff9f9ee
commit
8d32850b8f
|
@ -140,7 +140,7 @@
|
||||||
(let [entity-name (safe-name (:name (:attrs entity)) :sql)
|
(let [entity-name (safe-name (:name (:attrs entity)) :sql)
|
||||||
pretty-name (singularise entity-name)
|
pretty-name (singularise entity-name)
|
||||||
query-name (str "search-strings-" entity-name)
|
query-name (str "search-strings-" entity-name)
|
||||||
signature ":? :1"
|
signature ":? :*"
|
||||||
properties (remove #(#{"link"}(:type (:attrs %))) (all-properties entity))]
|
properties (remove #(#{"link"}(:type (:attrs %))) (all-properties entity))]
|
||||||
(hash-map
|
(hash-map
|
||||||
(keyword query-name)
|
(keyword query-name)
|
||||||
|
@ -168,12 +168,12 @@
|
||||||
string?
|
string?
|
||||||
(map
|
(map
|
||||||
#(str
|
#(str
|
||||||
"(if (:" (-> % :attrs :name) " params) \"OR "
|
"(if (:" (-> % :attrs :name) " params) (str \"OR "
|
||||||
(case (base-type % application)
|
(case (-> % :attrs :type)
|
||||||
("string" "text")
|
("string" "text")
|
||||||
(str
|
(str
|
||||||
(safe-name (-> % :attrs :name) :sql)
|
(safe-name (-> % :attrs :name) :sql)
|
||||||
" LIKE '%:" (-> % :attrs :name) "%'")
|
" LIKE '%\" (:" (-> % :attrs :name) " params) \"%'")
|
||||||
("date" "time" "timestamp")
|
("date" "time" "timestamp")
|
||||||
(str
|
(str
|
||||||
(safe-name (-> % :attrs :name) :sql)
|
(safe-name (-> % :attrs :name) :sql)
|
||||||
|
@ -181,12 +181,12 @@
|
||||||
"entity"
|
"entity"
|
||||||
(str
|
(str
|
||||||
(safe-name (-> % :attrs :name) :sql)
|
(safe-name (-> % :attrs :name) :sql)
|
||||||
"_expanded LIKE '%:" (-> % :attrs :name) "%'")
|
"_expanded LIKE '%\" (:" (-> % :attrs :name) " params) \"%'")
|
||||||
(str
|
(str
|
||||||
(safe-name (-> % :attrs :name) :sql)
|
(safe-name (-> % :attrs :name) :sql)
|
||||||
" = :"
|
" = :"
|
||||||
(-> % :attrs :name)))
|
(-> % :attrs :name)))
|
||||||
"\")")
|
"\"))")
|
||||||
properties))))
|
properties))))
|
||||||
(order-by-clause entity "lv_")
|
(order-by-clause entity "lv_")
|
||||||
"--~ (if (:offset params) \"OFFSET :offset \")"
|
"--~ (if (:offset params) \"OFFSET :offset \")"
|
||||||
|
|
|
@ -140,49 +140,53 @@
|
||||||
(defn make-list-handler-content
|
(defn make-list-handler-content
|
||||||
[f e a n]
|
[f e a n]
|
||||||
(list
|
(list
|
||||||
'let
|
'let
|
||||||
(vector
|
(vector
|
||||||
'records
|
'records
|
||||||
(list
|
|
||||||
'if
|
|
||||||
(list
|
|
||||||
'some
|
|
||||||
(set (map #(keyword (-> % :attrs :name)) (all-properties e)))
|
|
||||||
(list 'keys 'params))
|
|
||||||
(list
|
|
||||||
'support/do-or-log-error
|
|
||||||
(list
|
(list
|
||||||
(symbol (str "db/search-strings-" (:name (:attrs e))))
|
'if
|
||||||
(symbol "db/*db*")
|
(list
|
||||||
'params)
|
'some
|
||||||
:message (str
|
(set (map #(keyword (-> % :attrs :name)) (all-properties e)))
|
||||||
"Error while searching "
|
(list 'keys 'params))
|
||||||
(singularise (:name (:attrs e)))
|
(list 'do
|
||||||
" records")
|
(list (symbol "log/debug") (list (symbol (str "db/search-strings-" (:name (:attrs e)) "-sqlvec")) 'params))
|
||||||
:error-return {:warnings [(str
|
(list
|
||||||
"Error while searching "
|
'support/do-or-log-error
|
||||||
(singularise (:name (:attrs e)))
|
(list
|
||||||
" records")]})
|
(symbol (str "db/search-strings-" (:name (:attrs e))))
|
||||||
(list
|
(symbol "db/*db*")
|
||||||
'support/do-or-log-error
|
'params)
|
||||||
(list
|
:message (str
|
||||||
(symbol
|
"Error while searching "
|
||||||
(str
|
(singularise (:name (:attrs e)))
|
||||||
"db/list-"
|
" records")
|
||||||
(:name (:attrs e))))
|
:error-return {:warnings [(str
|
||||||
(symbol "db/*db*") {})
|
"Error while searching "
|
||||||
:message (str
|
(singularise (:name (:attrs e)))
|
||||||
"Error while fetching "
|
" records")]}))
|
||||||
(singularise (:name (:attrs e)))
|
(list 'do
|
||||||
" records")
|
(list (symbol "log/debug") (list (symbol (str "db/list-" (:name (:attrs e)) "-sqlvec")) 'params))
|
||||||
:error-return {:warnings [(str
|
(list
|
||||||
"Error while fetching "
|
'support/do-or-log-error
|
||||||
(singularise (:name (:attrs e)))
|
(list
|
||||||
" records")]})))
|
(symbol
|
||||||
(list 'if
|
(str
|
||||||
(list :warnings 'records)
|
"db/list-"
|
||||||
'records
|
(:name (:attrs e))))
|
||||||
{:records 'records})))
|
(symbol "db/*db*") {})
|
||||||
|
:message (str
|
||||||
|
"Error while fetching "
|
||||||
|
(singularise (:name (:attrs e)))
|
||||||
|
" records")
|
||||||
|
:error-return {:warnings [(str
|
||||||
|
"Error while fetching "
|
||||||
|
(singularise (:name (:attrs e)))
|
||||||
|
" records")]}))))
|
||||||
|
(list 'if
|
||||||
|
(list :warnings 'records)
|
||||||
|
'records
|
||||||
|
{:records 'records})))
|
||||||
|
|
||||||
|
|
||||||
(defn make-handler
|
(defn make-handler
|
||||||
|
|
|
@ -665,11 +665,7 @@
|
||||||
"time" "time"
|
"time" "time"
|
||||||
"text")
|
"text")
|
||||||
base-name (:property (:attrs field))
|
base-name (:property (:attrs field))
|
||||||
search-name (safe-name
|
search-name (safe-name base-name :sql)]
|
||||||
(if
|
|
||||||
(= (:type (:attrs property)) "entity")
|
|
||||||
(str base-name "_expanded") base-name)
|
|
||||||
:sql)]
|
|
||||||
(hash-map
|
(hash-map
|
||||||
:tag :th
|
:tag :th
|
||||||
:content
|
:content
|
||||||
|
@ -728,18 +724,10 @@
|
||||||
{:back-links
|
{:back-links
|
||||||
{:tag :div
|
{:tag :div
|
||||||
:content
|
:content
|
||||||
[
|
[{:tag :div :attrs {:class "back-link-container"}
|
||||||
{:tag :div :attrs {:class "back-link-container"}
|
|
||||||
:content
|
:content
|
||||||
["{% ifequal params.offset \"0\" %}"
|
[{:tag :a :attrs {:id "prev-selector" :class "back-link"}
|
||||||
{:tag :a
|
:content ["Previous"]}]}]}
|
||||||
:attrs {:id "back-link" :class "back-link" :href "{{servlet-context}}/admin"}
|
|
||||||
:content ["Back"]}
|
|
||||||
"{% else %}"
|
|
||||||
{:tag :a :attrs {:id "prev-selector" :class "back-link"}
|
|
||||||
:content ["Previous"]}
|
|
||||||
"{% endifunequal %}"]}
|
|
||||||
]}
|
|
||||||
:big-links
|
:big-links
|
||||||
{:tag :div
|
{:tag :div
|
||||||
:content
|
:content
|
||||||
|
@ -765,8 +753,8 @@
|
||||||
:method "POST"}
|
:method "POST"}
|
||||||
:content
|
:content
|
||||||
[(csrf-widget)
|
[(csrf-widget)
|
||||||
{:tag :input :attrs {:id "offset" :type "hidden" :value "{{params.offset|default:0}}"}}
|
{:tag :input :attrs {:id "offset" :name "offset" :type "hidden" :value "{{params.offset|default:0}}"}}
|
||||||
{:tag :input :attrs {:id "limit" :type "hidden" :value "{{params.limit|default:50}}"}}
|
{:tag :input :attrs {:id "limit" :name "limit" :type "hidden" :value "{{params.limit|default:50}}"}}
|
||||||
{:tag :table
|
{:tag :table
|
||||||
:attrs {:caption (:name (:attrs entity))}
|
:attrs {:caption (:name (:attrs entity))}
|
||||||
:content
|
:content
|
||||||
|
@ -779,21 +767,26 @@
|
||||||
var ow = document.getElementById('offset');
|
var ow = document.getElementById('offset');
|
||||||
var lw = document.getElementById('limit');
|
var lw = document.getElementById('limit');
|
||||||
form.addEventListener('submit', function() {
|
form.addEventListener('submit', function() {
|
||||||
ow.value='0';
|
ow.value='0';
|
||||||
});
|
});
|
||||||
|
|
||||||
{% ifunequal params.offset \"0\" %}
|
var prevSelector = document.getElementById('prev-selector');
|
||||||
document.getElementById('prev-selector').addEventListener('click', function () {
|
if (prevSelector != null) {
|
||||||
ow.value=(parseInt(ow.value)-parseInt(lw.value));
|
prevSelector.addEventListener('click', function () {
|
||||||
console.log('Updated offset to ' + ow.value);
|
if (parseInt(ow.value)===0) {
|
||||||
form.submit();
|
window.location = '{{servlet-context}}/admin';
|
||||||
});
|
} else {
|
||||||
{% endifunequal %}
|
ow.value=(parseInt(ow.value)-parseInt(lw.value));
|
||||||
|
console.log('Updated offset to ' + ow.value);
|
||||||
|
form.submit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
document.getElementById('next-selector').addEventListener('click', function () {
|
document.getElementById('next-selector').addEventListener('click', function () {
|
||||||
ow.value=(parseInt(ow.value)+parseInt(lw.value));
|
ow.value=(parseInt(ow.value)+parseInt(lw.value));
|
||||||
console.log('Updated offset to ' + ow.value);
|
console.log('Updated offset to ' + ow.value);
|
||||||
form.submit();
|
form.submit();
|
||||||
});")}))
|
});")}))
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue