浏览代码

#212 refactor import URL generation for chart extras

Falko Schindler 2 年之前
父节点
当前提交
26c362d81a
共有 2 个文件被更改,包括 17 次插入8 次删除
  1. 12 4
      nicegui/dependencies.py
  2. 5 4
      nicegui/elements/chart.py

+ 12 - 4
nicegui/dependencies.py

@@ -13,6 +13,10 @@ class Component:
     name: str
     path: Path
 
+    @property
+    def import_path(self) -> str:
+        return f'/_nicegui/components/{self.name}'
+
 
 @dataclass
 class Dependency:
@@ -21,6 +25,10 @@ class Dependency:
     dependents: Set[str]
     optional: bool
 
+    @property
+    def import_path(self) -> str:
+        return f'/_nicegui/dependencies/{self.id}/{self.path.name}'
+
 
 dependency_ids = IncrementingStringIds()
 
@@ -64,15 +72,15 @@ def generate_vue_content() -> Tuple[str, str, str]:
 
 def generate_js_imports(prefix: str) -> str:
     result = ''
-    for id, dependency in js_dependencies.items():
+    for dependency in js_dependencies.values():
         if dependency.optional:
             continue
         if not dependency.dependents.difference(globals.excludes):
             continue
-        result += f'import "{prefix}/_nicegui/dependencies/{id}/{dependency.path.name}";\n'
-    for name in js_components:
+        result += f'import "{prefix}{dependency.import_path}";\n'
+    for name, component in js_components.items():
         if name in globals.excludes:
             continue
-        result += f'import {{ default as {name} }} from "{prefix}/_nicegui/components/{name}";\n'
+        result += f'import {{ default as {name} }} from "{prefix}{component.import_path}";\n'
         result += f'app.component("{name}", {name});\n'
     return result

+ 5 - 4
nicegui/elements/chart.py

@@ -96,10 +96,11 @@ class Chart(Element):
         """
         super().__init__('chart')
         self._props['options'] = options
-        urls = [f'/_nicegui/dependencies/{id}/{dependency.path.name}'
-                for id, dependency in js_dependencies.items()
-                if dependency.optional and dependency.path.stem in extras and 'chart' in dependency.dependents]
-        self._props['extras'] = urls
+        self._props['extras'] = [
+            dependency.import_path
+            for dependency in js_dependencies.values()
+            if dependency.optional and dependency.path.stem in extras and 'chart' in dependency.dependents
+        ]
 
     @property
     def options(self) -> Dict: