Skip to content

Commit

Permalink
Merge pull request #64 from Declow/partial-ui-libs
Browse files Browse the repository at this point in the history
Made it possible to fetch aggrid without prior instantiation.
  • Loading branch information
Declow authored Oct 9, 2024
2 parents 9400708 + 6bd8d1e commit 1029914
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 17 deletions.
6 changes: 3 additions & 3 deletions uiwiz/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,9 +217,9 @@ async def decorated(*dec_args, **dec_kwargs) -> Response:
for key, value in response.headers.items():
standard_headers[key] = value

return self.return_funtion_response(
HTMLResponse(content=Frame.get_stack().render(), headers=standard_headers)
)
content = "".join([Frame.get_stack().render(), Frame.get_stack().render_ext()])

return self.return_funtion_response(HTMLResponse(content=content, headers=standard_headers))

self.__ensure_request_response_signature__(decorated)

Expand Down
6 changes: 3 additions & 3 deletions uiwiz/element.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,12 +228,12 @@ def get_target(self, target: Union[Callable, str, "Element", None]) -> str:
return target

def render_libs(self, lst_libs: list[str]) -> str:
lst = set()
lst = []
for lib in lst_libs:
if lib.endswith("css"):
lst.add('<link href="%s" rel="stylesheet" type="text/css" />' % lib)
lst.insert(0, '<link href="%s" rel="stylesheet" type="text/css" />' % lib)
elif lib.endswith("js"):
lst.add('<script src="%s"></script>' % lib)
lst.append('<script src="%s"></script>' % lib)
else:
raise Exception("lib type not supported, supported types css, js")
return "".join(lst)
Expand Down
14 changes: 7 additions & 7 deletions uiwiz/elements/aggrid/aggrid.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@

htmx.defineExtension("hx-aggrid", {
onEvent: function (name, evt) {
if (name === "htmx:afterProcessNode") {
console.log(evt);
const element = evt.detail.elt;
gridHandler(element, null, null);
}

if (name === "htmx:afterSettle") {
const response = JSON.parse(evt.detail.xhr.response);
const cols = response["cols"];
Expand Down Expand Up @@ -52,4 +46,10 @@ function createOrGetCurrentGrid(element, cols, rows) {
_uiWizardGrids[element.id] = gridApi;
}
return gridApi;
}
}

elements = document.querySelectorAll("[hx-aggrid]");

elements.forEach((element) => {
gridHandler(element, null, null);
});
2 changes: 1 addition & 1 deletion uiwiz/elements/aggrid/aggrid.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
JS_PATH = Path(__file__).parent / "aggrid.js"


class Aggrid(Element, extensions=[CSS_PATH, JS_PATH, LIB_PATH]):
class Aggrid(Element, extensions=[CSS_PATH, LIB_PATH, JS_PATH]):
class OPTIONS(str, Enum):
autoSizeColumn = "autoSizeAll"
fitColumnContent = "sizeToFit"
Expand Down
7 changes: 4 additions & 3 deletions uiwiz/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import asyncio
import os
from pathlib import Path
from typing import TYPE_CHECKING, Optional, Union
from typing import TYPE_CHECKING, List, Optional, Union
from uuid import uuid4

from uiwiz.asgi_request_middelware import get_request
Expand All @@ -28,7 +28,7 @@ def __init__(self) -> None:
self.oob_elements: list[Element] = []
self.id_count: int = 0 # used for element id
self.scripts: list[str] = []
self.extensions: set[str] = set()
self.extensions: List[str] = []
self.app = get_request().app
self.last_id = None
self.title: Optional[str] = None
Expand Down Expand Up @@ -85,7 +85,8 @@ def add_extension(self, cls, extensions: Optional[Union[list[Path], Path]]) -> N
_, filename = os.path.split(extension)
prefix = f"/_static/extension/{cls.__name__}/"
endpoint = prefix + filename
self.extensions.add(endpoint)
if extension not in self.extensions:
self.extensions.append(endpoint)

@classmethod
def get_stack(cls) -> "Frame":
Expand Down

0 comments on commit 1029914

Please sign in to comment.