From c2978785d9f0e487e5bde9c035d5671f37b66188 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Tue, 20 Jul 2021 11:43:46 +0800 Subject: [PATCH] fix(query-function): convert num string to float --- src/main/frontend/extensions/sci.cljs | 4 +++- src/main/frontend/handler/query.cljs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/frontend/extensions/sci.cljs b/src/main/frontend/extensions/sci.cljs index 922803a31..3b66dbe70 100644 --- a/src/main/frontend/extensions/sci.cljs +++ b/src/main/frontend/extensions/sci.cljs @@ -12,7 +12,9 @@ [s] (try (sci/eval-string s {:bindings {'sum sum - 'average average}}) + 'average average + 'parseFloat js/parseFloat + 'isNaN js/isNaN}}) (catch js/Error e (println "Query: sci eval failed:") (js/console.error e)))) diff --git a/src/main/frontend/handler/query.cljs b/src/main/frontend/handler/query.cljs index 06b87dc2a..72e28fca7 100644 --- a/src/main/frontend/handler/query.cljs +++ b/src/main/frontend/handler/query.cljs @@ -38,7 +38,9 @@ (let [vals (map #(get-in % [:block/properties f]) result) int? (some integer? vals)] `(~'fn [~'b] - (~'let [~'result (~'get-in ~'b [:block/properties ~f])] + (~'let [~'result-str (~'get-in ~'b [:block/properties ~f]) + ~'result-num (~'parseFloat ~'result-str) + ~'result (if (~'isNaN ~'result-num) ~'result-str ~'result-num)] (~'or ~'result (~'when ~int? 0)))))) :else