From e41bd2beee70d1f247da950d26b2612f69ae9934 Mon Sep 17 00:00:00 2001 From: stu Date: Tue, 10 Sep 2024 22:48:19 +0800 Subject: [PATCH 1/2] support non cdn version using client configs --- anvil.yaml | 3 +++ client_code/Tabulator/_helpers.py | 4 ++-- client_code/Tabulator/_js_tabulator.py | 13 ++++++++++++- client_code/Tabulator/form_template.yaml | 4 ++-- theme/assets/tabulator-tables/css/tabulator.min.css | 2 ++ .../css/tabulator_bootstrap3.min.css | 2 ++ .../css/tabulator_bootstrap4.min.css | 2 ++ .../css/tabulator_bootstrap5.min.css | 2 ++ .../tabulator-tables/css/tabulator_bulma.min.css | 2 ++ .../css/tabulator_materialize.min.css | 2 ++ .../tabulator-tables/css/tabulator_midnight.min.css | 2 ++ .../tabulator-tables/css/tabulator_modern.min.css | 2 ++ .../css/tabulator_semanticui.min.css | 2 ++ .../tabulator-tables/css/tabulator_simple.min.css | 2 ++ .../tabulator-tables/css/tabulator_site.min.css | 2 ++ .../css/tabulator_site_dark.min.css | 2 ++ .../assets/tabulator-tables/js/tabulator_esm.min.js | 3 +++ .../tabulator-tables/js/tabulator_esm.min.js.map | 1 + 18 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 theme/assets/tabulator-tables/css/tabulator.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_bootstrap3.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_bootstrap4.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_bootstrap5.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_bulma.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_materialize.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_midnight.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_modern.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_semanticui.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_simple.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_site.min.css create mode 100644 theme/assets/tabulator-tables/css/tabulator_site_dark.min.css create mode 100644 theme/assets/tabulator-tables/js/tabulator_esm.min.js create mode 100644 theme/assets/tabulator-tables/js/tabulator_esm.min.js.map diff --git a/anvil.yaml b/anvil.yaml index 94ea5a5..f29d940 100644 --- a/anvil.yaml +++ b/anvil.yaml @@ -13,3 +13,6 @@ startup_form: null native_deps: {head_html: ''} db_schema: {} renamed: true +config_schema: + client: + cdn: {type: boolean, default_value: true} diff --git a/client_code/Tabulator/_helpers.py b/client_code/Tabulator/_helpers.py index 1aa0f24..f53a94c 100644 --- a/client_code/Tabulator/_helpers.py +++ b/client_code/Tabulator/_helpers.py @@ -11,7 +11,7 @@ except ImportError: in_designer = False -from ._js_tabulator import TabulatorModule +from ._js_tabulator import TabulatorModule, theme_url _RE_SNAKE = RegExp("_[a-z]", "g") _replace = String.prototype.replace @@ -104,7 +104,7 @@ def _inject_theme(theme): link = document.createElement("link") if theme in _themes: theme = "_" + theme if theme != "standard" else "" - theme = f"https://cdn.jsdelivr.net/npm/tabulator-tables@6.2.0/dist/css/tabulator{theme}.min.css" + theme = theme_url.format(theme) link.href = theme link.rel = "stylesheet" link.crossorigin = "anonymous" diff --git a/client_code/Tabulator/_js_tabulator.py b/client_code/Tabulator/_js_tabulator.py index 25358de..11682ec 100644 --- a/client_code/Tabulator/_js_tabulator.py +++ b/client_code/Tabulator/_js_tabulator.py @@ -1,11 +1,22 @@ # SPDX-License-Identifier: MIT # Copyright (c) 2022 Stu Cork +import anvil from anvil.js import import_from, report_exceptions from anvil.js.window import Function # from anvil.js.window import TabulatorModule -url = "https://cdn.skypack.dev/pin/tabulator-tables@v6.2.0-cLdAJBWLGfS7gDBKHqT0/mode=imports,min/optimized/tabulator-tables.js" +url = "https://cdn.skypack.dev/pin/tabulator-tables@v6.2.5-B1KrV1TyUSjV9ySkbbZY/mode=imports,min/optimized/tabulator-tables.js" + +theme_url = ( + "https://cdn.jsdelivr.net/npm/tabulator-tables@6.2.5/dist/css/tabulator{}.min.css" +) + +config = anvil.app.get_client_config("tabulator") +if not config.get("cdn", True): + url = "./_/theme/tabulator-tables/js/tabulator_esm.min.js" + theme_url = "./_/theme/tabulator-tables/css/tabulator{}.min.css" + TabulatorModule = import_from(url) diff --git a/client_code/Tabulator/form_template.yaml b/client_code/Tabulator/form_template.yaml index f9b5490..721f247 100644 --- a/client_code/Tabulator/form_template.yaml +++ b/client_code/Tabulator/form_template.yaml @@ -69,9 +69,9 @@ container: properties: {tooltip: '', background: '', foreground: '', border: '', visible: true, role: null, html: "
\n
\n\
\n\n