Metadata-Version: 2.1
Name: turbo-lazy
Version: 0.2.2
Summary: Turbo-Frame based Lazy Loading
Home-page: https://github.com/hotwire-django/turbo-lazy
Author: Julian Feinauer
Author-email: j.feinauer@pragmaticminds.de
License: UNKNOWN
Description: # Turbo-Lazy
        
        Basically, it comes down to the following statement:
        
            {% lazy 'apps.core.partial_views._machine_card' poll_status.machine_id %}
                {% include 'core/partials/_machine_card_loading.html' with name=poll_status.name machine_id=poll_status.machine_id %}
            {% endlazy %}
        
        The content inside the lazy tag is rendered right away in a turbo-frame with a src tag that points to an auto generated URL where the view given lazy controller is called (with the parameters given in the controller). So this can be a slow loading view as its lazy loaded.
        This is based on turbo-frames, i.e. the lazy loading is client initiated. With something like turbo-streams (and the django implementation), it would be possible to push the update from the server which would be even cooler (especially a single channel could be used for multiple elements).
        So, the page will be rendered as follows:
        
        ```{html}
        <turbo-frame id="1c87a216-6ad5-4320-861e-261caf3e5dd7" src="/lazy/?token=eyJpZCI6ICIxYzg3YTIxNi02YWQ1LTQzMjAtODYxZS0yNjFjYWYzZTVkZDciLCAidmlldyI6ICJhcHBzLmNvcmUucGFydGlhbF92aWV3cy5fbWFjaGluZV9jYXJkIiwgImFyZ3MiOiBbMV0sICJrd2FyZ3MiOiB7fX0=">   
            <div class="card bg-primary text-white mb-4">
                <div class="card-body">
            
                    <b>Machine 1</b>
                
                </div>
                <div class="card-footer" style="height: 7rem;">
                    
                    <div class="d-flex justify-content-center">
                        <div class="spinner-border" role="status">
                            <span class="sr-only">Loading...</span>
                        </div>
                    </div>
            
                </div>
                <div class="card-footer d-flex align-items-center justify-content-between">
                    
                    <a class="small text-white stretched-link"
                       href="/machine/1/" target="_top">View Details</a>
                    <div class="small text-white"><i class="fas fa-angle-right"></i></div>
            
                </div>
            </div>
        </turbo-frame>
        ```
        
        And a call to `/lazy/?token=...` will return the response of calling the view function 
        `apps.core.partial_views._machine_card` with given positional argument `poll_status.machine_id` also wrapped inside 
        a `<turbo-frame>` tag with the same `id` so that it will automatically swapped by turboframe.
        
        ## Example
        
        A complete example can be found under `example/django_example`.
        Go to this directory and proceed.
        
        Optionally, create a custom virtualenv
        ```
        python -m venv venv
        source venv/bin/activate
        pip install -r requirements.txt
        ```
        
        If you want to use the current snapshot of `turbo-lazy`install it via
        ```
        pip install ../../
        ```
        
        Then start everything via
        ```
        python manage.py migrate
        python manage.py runserver
        ```
        and go to
        ```
        http://localhost:8000/
        ```
        
        ## Release Notes
        
        **0.2.2**
        * The install dependency `django-tag-parser>=3.2` was missing in `setup.py`
        
        **0.2.1**
        * Template folder was accidentally named wrong in the published version
        
        **0.2.0**
        * Package renamed to 'turbo_lazy' and also root folder renamed to 'turbo_lazy'.
        * Template Tag `{% include_view %}` was added to integrate complete views into templates (in module `partials`)
        
        **0.1.2**
        * Complete working Django Example
        
        **0.1.1** 
        * Several minor fixes
        
        **0.1.0**
        * Initial Release
        
Keywords: turbo,hotwire,lazy
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.6, <4
Description-Content-Type: text/markdown
