diff --git a/shared/static/scripts/sx-browser.js b/shared/static/scripts/sx-browser.js index eb3254e..3214d2e 100644 --- a/shared/static/scripts/sx-browser.js +++ b/shared/static/scripts/sx-browser.js @@ -1926,16 +1926,16 @@ return forEach(function(form) { return (isSxTruthy((isSxTruthy(!isProcessed(form // try-client-route var tryClientRoute = function(pathname) { return (function() { var match = findMatchingRoute(pathname, _pageRoutes); - return (isSxTruthy(isNil(match)) ? false : (isSxTruthy(get(match, "has-data")) ? false : (function() { + return (isSxTruthy(isNil(match)) ? false : (isSxTruthy(get(match, "has-data")) ? (logInfo((String("sx:route server (has data) ") + String(pathname))), false) : (function() { var contentSrc = get(match, "content"); var closure = sxOr(get(match, "closure"), {}); var params = get(match, "params"); - return (isSxTruthy(sxOr(isNil(contentSrc), isEmpty(contentSrc))) ? false : (function() { + return (isSxTruthy(sxOr(isNil(contentSrc), isEmpty(contentSrc))) ? (logWarn((String("sx:route no content for ") + String(pathname))), false) : (function() { var env = merge(closure, params); var rendered = tryEvalContent(contentSrc, env); - return (isSxTruthy(isNil(rendered)) ? false : (function() { + return (isSxTruthy(isNil(rendered)) ? (logWarn((String("sx:route eval failed for ") + String(pathname))), false) : (function() { var target = domQueryById("main-panel"); - return (isSxTruthy(isNil(target)) ? false : (domSetTextContent(target, ""), domAppend(target, rendered), hoistHeadElementsFull(target), processElements(target), sxHydrateElements(target), logInfo((String("sx:route client ") + String(pathname))), true)); + return (isSxTruthy(isNil(target)) ? (logWarn("sx:route #main-panel not found"), false) : (domSetTextContent(target, ""), domAppend(target, rendered), hoistHeadElementsFull(target), processElements(target), sxHydrateElements(target), logInfo((String("sx:route client ") + String(pathname))), true)); })()); })()); })())); @@ -3023,6 +3023,7 @@ callExpr.push(dictGet(kwargs, k)); } } } return sxRenderWithEnv(source, merged); } catch (e) { + console.warn("sx:route eval error", e); return NIL; } } @@ -3370,6 +3371,10 @@ callExpr.push(dictGet(kwargs, k)); } } if (typeof console !== "undefined") console.log("[sx-ref] " + msg); } + function logWarn(msg) { + if (typeof console !== "undefined") console.warn("[sx-ref] " + msg); + } + function logParseError(label, text, err) { if (typeof console === "undefined") return; var msg = err && err.message ? err.message : String(err); diff --git a/shared/sx/ref/bootstrap_js.py b/shared/sx/ref/bootstrap_js.py index 04c708b..c63e54e 100644 --- a/shared/sx/ref/bootstrap_js.py +++ b/shared/sx/ref/bootstrap_js.py @@ -497,6 +497,7 @@ class JSEmitter: "store-env-attr": "storeEnvAttr", "to-kebab": "toKebab", "log-info": "logInfo", + "log-warn": "logWarn", "log-parse-error": "logParseError", "parse-and-load-style-dict": "parseAndLoadStyleDict", "_page-routes": "_pageRoutes", @@ -2625,6 +2626,7 @@ PLATFORM_ORCHESTRATION_JS = """ } return sxRenderWithEnv(source, merged); } catch (e) { + console.warn("sx:route eval error", e); return NIL; } } @@ -2974,6 +2976,10 @@ PLATFORM_BOOT_JS = """ if (typeof console !== "undefined") console.log("[sx-ref] " + msg); } + function logWarn(msg) { + if (typeof console !== "undefined") console.warn("[sx-ref] " + msg); + } + function logParseError(label, text, err) { if (typeof console === "undefined") return; var msg = err && err.message ? err.message : String(err); diff --git a/shared/sx/ref/orchestration.sx b/shared/sx/ref/orchestration.sx index 27b9c3f..cbf901a 100644 --- a/shared/sx/ref/orchestration.sx +++ b/shared/sx/ref/orchestration.sx @@ -545,19 +545,19 @@ (if (nil? match) false (if (get match "has-data") - false + (do (log-info (str "sx:route server (has data) " pathname)) false) (let ((content-src (get match "content")) (closure (or (get match "closure") {})) (params (get match "params"))) (if (or (nil? content-src) (empty? content-src)) - false + (do (log-warn (str "sx:route no content for " pathname)) false) (let ((env (merge closure params)) (rendered (try-eval-content content-src env))) (if (nil? rendered) - false + (do (log-warn (str "sx:route eval failed for " pathname)) false) (let ((target (dom-query-by-id "main-panel"))) (if (nil? target) - false + (do (log-warn "sx:route #main-panel not found") false) (do (dom-set-text-content target "") (dom-append target rendered)