@beeflow/beeflow_ajax_js
v1.0.18
Published
Library to maintain ajax and websockets communication without writing complicated code in JS
Readme
BeeflowAjaxPy
The library to maintain ajax and websockets communication without writing complicated code in JS
Installation
$ npm i @beeflow/beeflow_ajax_jsTo use server side Python package install
$ pip install beeflow-ajaxIn the css and js folders you can find files, that you need to add to your HTML file.
css/BeeflowAjax.css- declaration for classes for IDE helperjs/js-url-2.3.0.min.js- library used byjs/BeeflowAjax.js- beeflow ajax library including websocketjs/BeeflowAjaxSwalMessages.js- definition of messages that use sweet alerts (you need to have sweet alerts library)
Usage examples - HTML / JavaScript
Ajax
Delete button with confirmation
<a href="https://some.web.example/api/v1/record/<int:record_id>" data-method="delete"
data-confirm="Are you sure you want to delete this record?"
class="ajax-link" title="Delete record"
data-callback="() => { console.log('Hello world!') }">delete</a>Form
<form action="https://some.web.example/api/v1/record/" method="post" class="ajax-form">
<input type="text" name="some_data">
<input type="submit" name="submit" value="Send">
</form>Select
<select data-ajax-datasource="https://some.web.example/api/v1/record/all" data-defaul-value="10"
data-url-value="language_code=pl"></select>Sending data using own script
BeeflowAjax.send("https://some.web.example/api/v1/record/", {"some": "data"}, submitButton, callbackMethod, 'POST');WebSocket
Initialisation
BeeflowAjax.websocket.init("ws://some.web.example/api/v1/ws/<any:connectionId>", {some: "data"}, () => {
consolr.log('Callback function')
})Form
<form action="https://some.web.example/api/v1/record/" method="post" class="websocket-form">
<input type="text" name="some_data">
<input type="submit" name="submit" value="Send">
</form>Usage examples - Python
Ajax
Django
from django.http import HttpResponse # or any response class
from rest_framework.views import APIView
from beeflow_ajax.lib import AjaxResponse
...
class SomeView(APIView):
ajax = AjaxResponse(HttpResponse)
def get(self, request, id: int, *args, **kwargs):
return self.ajax.assign("#some-html-element-id", f"Received id: {id}").response(*args, **kwargs)FastAPI
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from starlette import status
from beeflow_ajax.lib import AjaxResponse
router = APIRouter()
@router.get("/some-view-id", status_code=status.HTTP_200_OK)
async def new_game(db: Session = Depends(get_db)):
ajax = AjaxResponse()
# as we didn't pass any response object to the AjaxResponse initializer, response() method will return dictionary
return ajax.assign("#some-html-element-id", f"Received id: {id}").response()