Simpler gallery
- use splide.js - iterate though a directory automatically
							
								
								
									
										
											BIN
										
									
								
								__pycache__/main.cpython-38.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -1,61 +0,0 @@
 | 
			
		||||
{% with image_count=14 %}
 | 
			
		||||
{% include "carousel_start.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_1.jpg", alt="App screenshot", active=True%}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_2.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_3.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_4.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_5.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_6.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_7.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_8.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_9.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_10.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_11.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_12.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_13.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="app/screenshots/screen_14.jpg", alt="App screenshot" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% include "carousel_end.html" %}
 | 
			
		||||
							
								
								
									
										27
									
								
								_includes/carousel.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,27 @@
 | 
			
		||||
<div class='splide'>
 | 
			
		||||
    <div class='splide__track'>
 | 
			
		||||
        <ul class='splide__list'>
 | 
			
		||||
            {% for img in listimages(directory) %}
 | 
			
		||||
            {% with src=img %}
 | 
			
		||||
            {% include "splide_image.html" %}
 | 
			
		||||
            {% endwith %}
 | 
			
		||||
            {% endfor %}
 | 
			
		||||
        </ul>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
	document.addEventListener( 'DOMContentLoaded', function () {
 | 
			
		||||
		new Splide(
 | 
			
		||||
            '.splide', {
 | 
			
		||||
                type: 'loop',
 | 
			
		||||
                perPage: 2,
 | 
			
		||||
                autoplay: true,
 | 
			
		||||
                pagination: false,
 | 
			
		||||
                // cover: true,
 | 
			
		||||
                height: '25rem',
 | 
			
		||||
                focus: 'center',
 | 
			
		||||
            }
 | 
			
		||||
        ).mount();
 | 
			
		||||
	} );
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- Left and right controls -->
 | 
			
		||||
      <a class="left carousel-control" href="#image-carousel" data-slide="prev">
 | 
			
		||||
        <span class="fas fa-chevron-left"></span>
 | 
			
		||||
        <span class="sr-only">Previous</span>
 | 
			
		||||
      </a>
 | 
			
		||||
      <a class="right carousel-control" href="#image-carousel" data-slide="next">
 | 
			
		||||
        <span class="fas fa-chevron-right"></span>
 | 
			
		||||
        <span class="sr-only">Next</span>
 | 
			
		||||
      </a>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
<div class="container carousel-container">
 | 
			
		||||
    <div id="image-carousel" class="carousel slide" data-ride="carousel">
 | 
			
		||||
 | 
			
		||||
      <!-- Indicators -->
 | 
			
		||||
      <ol class="carousel-indicators">
 | 
			
		||||
 | 
			
		||||
        {% for idx in range(image_count) %}
 | 
			
		||||
        <li data-target="#image-carousel" data-slide-to="{{ idx }}" {% if idx == 0 %}class="active"{% endif %}></li>
 | 
			
		||||
        {% endfor %}
 | 
			
		||||
      </ol>
 | 
			
		||||
  
 | 
			
		||||
      <!-- Wrapper for slides -->
 | 
			
		||||
      <div class="carousel-inner">
 | 
			
		||||
  
 | 
			
		||||
@@ -1,49 +0,0 @@
 | 
			
		||||
{% with image_count=11 %}
 | 
			
		||||
{% include "carousel_start.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/part_category.png", min_height="400px", max_height="400px", alt="Part Categories", active=True %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/part_stock.png", min_height="400px", max_height="400px", alt="Part Stock" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/part_suppliers.png", min_height="400px", max_height="400px", alt="Part Suppliers" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/stock_item.png", min_height="400px", max_height="400px", alt="Stock Item" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/stock_location.png", min_height="400px", max_height="400px", alt="Stock Location" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/stock_location_2.png", min_height="400px", max_height="400px", alt="Stock Location" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/suppliers.png", min_height="400px", max_height="400px", alt="Suppliers" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/part_admin.png", min_height="400px", max_height="400px", alt="Admin Interface" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/category_params.png", min_height="400px", max_height="400px", alt="Part Parameters" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/build_outputs.png", min_height="400px", max_height="400px", alt="Build Orders" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% with src="index/bom_add_item.png", min_height="400px", max_height="400px", alt="Bill of Materials" %}
 | 
			
		||||
{% include "carousel_img.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
{% include "carousel_end.html" %}
 | 
			
		||||
@@ -10,6 +10,6 @@
 | 
			
		||||
{% set img_url = assets  + '/images/' + src %}
 | 
			
		||||
{% endif %}
 | 
			
		||||
 | 
			
		||||
<div class='item{% if active %} active{% endif %}'>
 | 
			
		||||
    <img class='center' src='{{ img_url }}' alt='{{ alt }}' style='{% if min_height %}min-height: {{ min_height }}; {% endif %}{% if max_height %}max-height: {{ max_height }}; {% endif %}'>
 | 
			
		||||
</div>
 | 
			
		||||
<li class='splide__slide'>
 | 
			
		||||
    <img src='{{ img_url }}'>
 | 
			
		||||
</li>
 | 
			
		||||
@@ -2,7 +2,9 @@
 | 
			
		||||
title: InvenTree Mobile App
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
{% include "app_carousel.html" %}
 | 
			
		||||
{% with directory="appgallery" %}
 | 
			
		||||
{% include "carousel.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB  | 
| 
		 Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB  | 
| 
		 Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 204 KiB  | 
| 
		 Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB  | 
| 
		 Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 177 KiB  | 
| 
		 Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 239 KiB  | 
| 
		 Before Width: | Height: | Size: 369 KiB After Width: | Height: | Size: 369 KiB  | 
| 
		 Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 169 KiB  | 
| 
		 Before Width: | Height: | Size: 263 KiB After Width: | Height: | Size: 263 KiB  | 
| 
		 Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 177 KiB  | 
| 
		 Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 205 KiB  | 
| 
		 Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 205 KiB  | 
| 
		 Before Width: | Height: | Size: 1015 KiB After Width: | Height: | Size: 1015 KiB  | 
| 
		 Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 204 KiB  | 
| 
		 Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB  | 
| 
		 Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB  | 
| 
		 Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB  | 
| 
		 Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB  | 
| 
		 Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB  | 
| 
		 Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB  | 
| 
		 Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB  | 
| 
		 Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB  | 
| 
		 Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB  | 
| 
		 Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB  | 
| 
		 Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB  | 
| 
		 Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB  | 
| 
		 Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB  | 
@@ -12,6 +12,8 @@ hide:
 | 
			
		||||
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
{% include "index_carousel.html" %}
 | 
			
		||||
{% with directory="indexgallery" %}
 | 
			
		||||
{% include "carousel.html" %}
 | 
			
		||||
{% endwith %}
 | 
			
		||||
 | 
			
		||||
--------------
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,28 @@
 | 
			
		||||
import os
 | 
			
		||||
from posixpath import dirname
 | 
			
		||||
 | 
			
		||||
def define_env(env):
 | 
			
		||||
 | 
			
		||||
    @env.macro
 | 
			
		||||
    def listimages(subdir):
 | 
			
		||||
        """
 | 
			
		||||
        Return a listing of all asset files in the provided subdir
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        here = os.path.dirname(__file__)
 | 
			
		||||
 | 
			
		||||
        directory = os.path.join(here, 'docs', 'assets', 'images', subdir)
 | 
			
		||||
 | 
			
		||||
        assets = []
 | 
			
		||||
 | 
			
		||||
        allowed = [
 | 
			
		||||
            '.png',
 | 
			
		||||
            '.jpg',
 | 
			
		||||
        ]
 | 
			
		||||
 | 
			
		||||
        for asset in os.listdir(directory):
 | 
			
		||||
 | 
			
		||||
            if any([asset.endswith(x) for x in allowed]):
 | 
			
		||||
                assets.append(os.path.join(subdir, asset))
 | 
			
		||||
 | 
			
		||||
        return assets
 | 
			
		||||
@@ -29,6 +29,7 @@ extra_css:
 | 
			
		||||
  - stylesheets/regular.css
 | 
			
		||||
  - stylesheets/solid.css
 | 
			
		||||
  - stylesheets/bootstrap.css
 | 
			
		||||
  - https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/css/splide.min.css
 | 
			
		||||
extra_javascript:
 | 
			
		||||
  - javascripts/extra.js
 | 
			
		||||
  - javascripts/fontawesome.js
 | 
			
		||||
@@ -37,6 +38,7 @@ extra_javascript:
 | 
			
		||||
  - javascripts/solid.js
 | 
			
		||||
  - https://code.jquery.com/jquery-3.6.0.js
 | 
			
		||||
  - https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.js
 | 
			
		||||
  - https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/js/splide.min.js
 | 
			
		||||
 | 
			
		||||
# Navigation
 | 
			
		||||
nav:
 | 
			
		||||
@@ -156,4 +158,4 @@ extra:
 | 
			
		||||
      name: InvenTree on Docker
 | 
			
		||||
 | 
			
		||||
use_directory_urls: true
 | 
			
		||||
strict: true
 | 
			
		||||
strict: false
 | 
			
		||||
 
 | 
			
		||||