UX Improvements for Home page and Accessibility Statement page

This commit is contained in:
2024-07-31 16:52:05 +01:00
parent 6f4e329258
commit 0201b85836
2341 changed files with 11763 additions and 296638 deletions

View File

@@ -0,0 +1,37 @@
<div class="{{ model.FLAG_OVERLAY }} {{ model.FLAG_COLLAPSED }} {{ model.FLAG_CARD }}" id="{{ model.ID_OVERLAY_CONFIRM }}" style="visibility: hidden;" z-index="2">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<h2>Are you sure?</h2>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<textarea id="{{ model.ID_TEXTAREA_CONFIRM }}" rows="4" cols="50"></textarea>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
{% set block_id = 'button_cancel' %}
{% include '_blocks_button_save_cancel.html' %}
{% set block_id = 'button_confirm' %}
{% include '_blocks_button_save_cancel.html' %}
</div>
</div>
<script>
function hookupOverlayConfirm(callbackSuccess) {
let overlay = $("#{{ model.ID_OVERLAY_CONFIRM }}");
let textarea = overlay.find('#{{ model.ID_TEXTAREA_CONFIRM }}');
let buttonCancel = overlay.find('#{{ model.ID_BUTTON_CANCEL }}');
let buttonConfirm = overlay.find('#{{ model.ID_BUTTON_CONFIRM }}');
buttonCancel.onclick = function() {
overlay.style.visibility = 'hidden';
};
buttonConfirm.onclick = function() {
overlay.style.visibility = 'hidden';
callbackSuccess(textarea.value);
};
}
function showOverlayConfirm() {
let overlay = $("#{{ model.ID_OVERLAY_CONFIRM }}");
overlay.style.visibility = 'visible';
}
</script>

View File

@@ -0,0 +1,29 @@
<div class="{{ model.FLAG_OVERLAY }} {{ model.FLAG_COLLAPSED }} {{ model.FLAG_CARD }}" id="{{ model.ID_OVERLAY_CONFIRM }}" style="visibility: hidden;" z-index="2">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<h2>Error:</h2>
<div id="{{ model.ID_LABEL_ERROR }}"></div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
{% set block_id = 'button_cancel' %}
{% include '_blocks_button_save_cancel.html' %}
</div>
</div>
<script>
function hookupOverlayConfirm() {
let overlay = $("#{{ model.ID_OVERLAY_CONFIRM }}");
let buttonCancel = overlay.find('#{{ model.ID_BUTTON_CANCEL }}');
buttonCancel.onclick = function() {
overlay.style.visibility = 'hidden';
};
}
hookupOverlayConfirm();
function showOverlayError(msgError) {
let overlay = $("#{{ model.ID_OVERLAY_CONFIRM }}");
let labelError = overlay.find('#{{ model.ID_LABEL_ERROR }}');
labelError.text(msgError);
overlay.style.visibility = 'visible';
}
</script>

View File

@@ -1,56 +1,60 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }}">
<tr class="{{ model.FLAG_ROW_NEW }}" {{ model.ATTR_ID_PERMUTATION }}>
<td class="{{ model.FLAG_CATEGORY }}">
<select class="{{ model.FLAG_CATEGORY}}">
<select class="{{ model.FLAG_CATEGORY}}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>
{% for cat in model.category_list.categories %}
<option value="{{ cat.id_category }}">{{ cat.name }}</option>
{% endfor %}
</select>
</td>
<td class="{{ model.FLAG_PRODUCT }}">
<select class="{{ model.FLAG_PRODUCT }}"></select>
<select class="{{ model.FLAG_PRODUCT }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></select>
</td>
<td class="{{ model.FLAG_VARIATIONS }}">
<textarea class="{{ model.FLAG_VARIATIONS }}"></textarea>
<textarea class="{{ model.FLAG_VARIATIONS }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
</td>
<td class="{{ model.FLAG_QUANTITY_STOCK }}">
<input class="{{ model.FLAG_QUANTITY_STOCK }}" type="number" min="0" value="0">
<input class="{{ model.FLAG_QUANTITY_STOCK }}" type="number" min="0" value="0" {{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}>
</td>
<td class="{{ model.FLAG_QUANTITY_MIN }}">
<input class="{{ model.FLAG_QUANTITY_MIN }}" type="number" min="0" value="0">
<input class="{{ model.FLAG_QUANTITY_MIN }}" type="number" min="0" value="0" {{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}>
</td>
<td class="{{ model.FLAG_QUANTITY_MAX }}">
<input class="{{ model.FLAG_QUANTITY_MAX }}" type="number" min="0" value="0">
<input class="{{ model.FLAG_QUANTITY_MAX }}" type="number" min="0" value="0" {{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}>
</td>
<td class="{{ model.FLAG_COST_LOCAL }}">
<input class="{{ model.FLAG_COST_LOCAL }}" type="number" min="0" value="0">
</td>
<!-- <td><strong>{ { permutation.output_currency() }}</strong>{ { permutation.get_price_local() }}</td> -->
</tr>
{% else %}
<tr {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}" {{ model.ATTR_ID_PRODUCT }}="{{ product.id_product }}" {{ model.ATTR_ID_PERMUTATION }}="{{ permutation.id_permutation }}">
<tr {{ model.ATTR_ID_PERMUTATION }}="{{ permutation.id_permutation }}">
<td class="{{ model.FLAG_CATEGORY }}">
<select class="{{ model.FLAG_CATEGORY }}" {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}"></select>
<select class="{{ model.FLAG_CATEGORY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.id_category }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.id_category }}"> <!-- {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}" -->
{% for c in model.category_list.categories %}
<option value="{{ c.id_category }}" {{ "selected" if c.id_category == category.id_category else "" }}>{{ c.name }}</option>
{% endfor %}
</select>
</td>
<td class="{{ model.FLAG_PRODUCT }}">
<select class="{{ model.FLAG_PRODUCT }}" {{ model.ATTR_ID_PRODUCT }}="{{ product.id_product }}">
<select class="{{ model.FLAG_PRODUCT }}" {{ model.ATTR_VALUE_CURRENT }}="{{ product.id_product }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.id_product }}"> <!-- {{ model.ATTR_ID_PRODUCT }}="{{ product.id_product }} -->
{% for p in model.category_list.categories[model.category_list.get_index_category_from_id(category.id_category)].products %}
<option value="{{ p.id_product }}">{{ p.name }}</option>
<option value="{{ p.id_product }}" {{ "selected" if p.id_product == product.id_product else "" }}>{{ p.name }}</option>
{% endfor %}
</select>
</td>
<td class="{{ model.FLAG_VARIATIONS }}">
<textarea class="{{ model.FLAG_VARIATIONS }}">{{ permutation.output_variations() }}</textarea>
{% set block_id = 'Textarea_Product_Permutation_Variations' %}
{% include '_shared_store.html' %}
</td>
<td class="{{ model.FLAG_QUANTITY_STOCK }}">
<input class="{{ model.FLAG_QUANTITY_STOCK }}" type="number" min="0" value="{{ permutation.quantity_stock }}">
<input class="{{ model.FLAG_QUANTITY_STOCK }}" type="number" min="0" value="{{ permutation.quantity_stock }}" {{ model.ATTR_VALUE_CURRENT }}="{{ permutation.quantity_stock }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ permutation.quantity_stock }}">
</td>
<td class="{{ model.FLAG_QUANTITY_MIN }}">
<input class="{{ model.FLAG_QUANTITY_MIN }}" type="number" min="0" value="{{ permutation.quantity_min }}">
<input class="{{ model.FLAG_QUANTITY_MIN }}" type="number" min="0" value="{{ permutation.quantity_min }}" {{ model.ATTR_VALUE_CURRENT }}="{{ permutation.quantity_min }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ permutation.quantity_min }}">
</td>
<td class="{{ model.FLAG_QUANTITY_MAX }}">
<input class="{{ model.FLAG_QUANTITY_MAX }}" type="number" min="0" value="{{ permutation.quantity_max }}">
<input class="{{ model.FLAG_QUANTITY_MAX }}" type="number" min="0" value="{{ permutation.quantity_max }}" {{ model.ATTR_VALUE_CURRENT }}="{{ permutation.quantity_max }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ permutation.quantity_max }}">
</td>
<td class="{{ model.FLAG_COST_LOCAL }}">
<strong>{{ permutation.output_currency() }}</strong>{{ permutation.cost_local }}

View File

@@ -0,0 +1,109 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }}" {{ model.ATTR_ID_STOCK_ITEM }}>
<td class="{{ model.FLAG_CATEGORY }}">
<select class="{{ model.FLAG_CATEGORY}}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}>
{% for cat in model.category_list.categories %}
<option value="{{ cat.id_category }}">{{ cat.name }}</option>
{% endfor %}
</select>
</td>
<td class="{{ model.FLAG_PRODUCT }}">
<select class="{{ model.FLAG_PRODUCT }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></select>
</td>
<td class="{{ model.FLAG_VARIATIONS }}">
<textarea class="{{ model.FLAG_VARIATIONS }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
</td>
<td class="{{ model.FLAG_COST_LOCAL_VAT_INCL }}">
<input class="{{ model.FLAG_COST_LOCAL_VAT_INCL }}" type="number" min="0" value="0" {{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}>
</td>
<td class="{{ model.FLAG_DATE_PURCHASED }}">
<input class="{{ model.FLAG_DATE_PURCHASED }}" type="date" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
<td class="{{ model.FLAG_DATE_RECEIVED }}">
<input type="date" class="{{ model.FLAG_DATE_RECEIVED }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
<!--
<td class="{{ model.FLAG_IS_SEALED }}">
<input type="checkbox" class="{{ model.FLAG_IS_SEALED }}" "checked" {{ model.ATTR_VALUE_CURRENT }}="{{ model.FLAG_BOOL_TRUE }}" {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
-->
<td class="{{ model.FLAG_DATE_UNSEALED }}">
<input type="date" class="{{ model.FLAG_DATE_UNSEALED }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
<td class="{{ model.FLAG_DATE_EXPIRATION }}">
<input type="date" class="{{ model.FLAG_DATE_EXPIRATION }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
<!--
<td class="{{ model.FLAG_IS_CONSUMED }}">
<input type="checkbox" class="{{ model.FLAG_IS_CONSUMED }}" {{ model.ATTR_VALUE_CURRENT }}="{{ model.FLAG_BOOL_FALSE }}" {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
-->
<td class="{{ model.FLAG_DATE_CONSUMED }}">
<input type="date" class="{{ model.FLAG_DATE_CONSUMED }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
<td class="{{ model.FLAG_ACTIVE }}">
<input type="checkbox" class="{{ model.FLAG_ACTIVE }}" "checked" {{ model.ATTR_VALUE_CURRENT }}="{{ model.FLAG_BOOL_TRUE }}" {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
</tr>
{% else %}
<tr {{ model.ATTR_ID_STOCK_ITEM }}="{{ stock_item.id_stock_item }}">
<td class="{{ model.FLAG_CATEGORY }}">
<select class="{{ model.FLAG_CATEGORY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ category.id_category }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ category.id_category }}"> <!-- {{ model.ATTR_ID_CATEGORY }}="{{ category.id_category }}" -->
{% for c in model.category_list.categories %}
<option value="{{ c.id_category }}" {{ "selected" if c.id_category == category.id_category else "" }}>{{ c.name }}</option>
{% endfor %}
</select>
</td>
<td class="{{ model.FLAG_PRODUCT }}">
<select class="{{ model.FLAG_PRODUCT }}" {{ model.ATTR_VALUE_CURRENT }}="{{ product.id_product }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ product.id_product }}"> <!-- {{ model.ATTR_ID_PRODUCT }}="{{ product.id_product }} -->
{% for p in model.category_list.categories[model.category_list.get_index_category_from_id(category.id_category)].products %}
<option value="{{ p.id_product }}" {{ "selected" if p.id_product == product.id_product else "" }}>{{ p.name }}</option>
{% endfor %}
</select>
</td>
<td class="{{ model.FLAG_VARIATIONS }}">
{% set block_id = 'Textarea_Product_Permutation_Variations' %}
{% include '_shared_store.html' %}
</td>
<td class="{{ model.FLAG_CURRENCY }}">
{{ permutation.output_currency() }}
<select class="{{ model.FLAG_CURRENCY }}" {{ model.ATTR_VALUE_CURRENT }}="{{ permutation.id_currency }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ permutation.id_currency }}">
{% for currency in model.currency_list.currencies %}
<option value="{{ currency.id_currency }}" {{ "selected" if currency.id_currency == permutation.id_currency else "" }}>{{ currency.name }}</option>
{% endfor %}
</select>
</td>
<td class="{{ model.FLAG_COST_LOCAL_VAT_INCL }}">
<input type="number" step="0.001" value="{{ stock_item.cost_local_VAT_incl }}" {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.cost_local_VAT_incl }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.cost_local_VAT_incl }}" >
</td>
<td class="{{ model.FLAG_DATE_PURCHASED }}">
<input type="date" value="{{ stock_item.date_purchased }}" {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.date_purchased }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.date_purchased }}" />
</td>
<td class="{{ model.FLAG_DATE_RECEIVED }}">
<input type="date" value="{{ stock_item.date_received }}" {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.date_received }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.date_received }}" />
</td>
<!--
<td class="{{ model.FLAG_IS_SEALED }}">
<input type="checkbox" {{ "checked" if stock_item.is_sealed else "" }} {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.is_sealed }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.is_sealed }}" />
</td>
-->
<td class="{{ model.FLAG_DATE_UNSEALED }}">
<input type="date" value="{{ stock_item.date_unsealed }}" {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.date_unsealed }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.date_unsealed }}" />
</td>
<td class="{{ model.FLAG_DATE_EXPIRATION }}">
<input type="date" value="{{ stock_item.date_expiration }}" {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.date_expiration }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.date_expiration }}" />
</td>
<!--
<td class="{{ model.FLAG_IS_CONSUMED }}">
<input type="checkbox" {{ "checked" if stock_item.is_consumed else "" }} {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.is_consumed }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.is_consumed }}" />
</td>
-->
<td class="{{ model.FLAG_DATE_CONSUMED }}">
<input type="date" value="{{ stock_item.date_consumed }}" {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.date_consumed }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.date_consumed }}" />
</td>
<td class="{{ model.FLAG_ACTIVE }}">
<input type="checkbox" {{ "checked" if stock_item.active else "" }} {{ model.ATTR_VALUE_CURRENT }}="{{ stock_item.active }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ stock_item.active }}" />
</td>
</tr>
{% endif %}

View File

@@ -0,0 +1,9 @@
{% if block_id == 'button_save' %}
<button id="{{ model.ID_BUTTON_SAVE }}" type="submit" class="{{ model.FLAG_BUTTON_SUBMIT }}">Save</button>
{% elif block_id == 'button_cancel' %}
<button id="{{ model.ID_BUTTON_CANCEL }}" class="{{ model.FLAG_BUTTON_CANCEL }}">Cancel</button>
{% elif block_id == 'button_add' %}
<button id="{{ model.ID_BUTTON_ADD }}" class="{{ model.FLAG_BUTTON_ADD }}">Add new</button>
{% elif block_id == 'button_confirm' %}
<button id="{{ model.ID_BUTTON_CONFIRM }}" class="{{ model.FLAG_BUTTON_SUBMIT }}">Confirm</button>
{% endif %}

View File

@@ -46,8 +46,10 @@
<p>If you find any problems not listed on this page or think were not meeting accessibility requirements, contact: {{ model.app.MAIL_CONTACT_PUBLIC }} or complete our Contact Us form.
If you need information on this website in a different format like accessible PDF, large print, easy read, audio recording or braille:
{% set block_id = 'button_get_in_touch' %}
{% include '_shared.html' %}
</p>
{% set block_id = 'button_get_in_touch' %}
{% include '_shared.html' %}
<p>
Well consider your request and get back to you in 7 days.
<!-- If you cannot view the map on our contact us page, email us for directions. -->
@@ -61,7 +63,7 @@
You must link to either the EASS or ECNI websites.]
-->
<br>
<h2>Technical information about this websites accessibility</h2>
<!--
@@ -175,6 +177,7 @@
</p>
-->
<br>
<h2>Preparation of this accessibility statement</h2>
<!--
[Note: the wording about when the statement was prepared and reviewed is required.

View File

@@ -2,8 +2,6 @@
{% extends 'layout.html' %}
{% block title %}{{ model.title }}{% endblock %}
{% block page_body %}
<!-- Include Stylesheet -->
<link rel="stylesheet" href="{{ url_for('static', filename='css/home.css') }}" />

View File

@@ -1,127 +0,0 @@
{% extends 'layout.html' %}
{% block page_body %}
<!--
{ % set product = model.product %}
{ % set permutation = product.get_permutation_selected() %}
-->
{% set block_id = 'styles' %}
{% include '_shared_store.html' %}
<script>console.log("test 1");</script>
<link rel="stylesheet" href="{{ url_for('static', filename='css/store_product.css') }}">
<!-- HTML content -->
<div class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<form id="{{ model.ID_FORM_CONTACT }}" class="container" action="{{ url_for('contact') }}" method="POST">
{{ model.form_filters.hidden_tag() }}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.id_category.label }}
{{ model.form_filters.id_category() }}
{% for error in model.form_filters.id_category.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.id_product.label }}
{{ model.form_filters.id_product() }}
{% for error in model.form_filters.id_product.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.is_out_of_stock.label }}
{{ model.form_filters.is_out_of_stock() }}
{% for error in model.form_filters.is_out_of_stock.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.quantity_min.label }}
{{ model.form_filters.quantity_min() }}
{% for error in model.form_filters.quantity_min.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.quantity_max.label }}
{{ model.form_filters.quantity_max() }}
{% for error in model.form_filters.quantity_max.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
</form>
</div>
<!--
<div class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
</div>
</div>
-->
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<head>
<tr>
<th class="{{ model.FLAG_CATEGORY }}">Category</th>
<th class="{{ model.FLAG_PRODUCT }}">Product</th>
<th class="{{ model.FLAG_VARIATIONS }}">Variations</th>
<th class="{{ model.FLAG_QUANTITY_STOCK }}">Quantity Stock</th>
<th class="{{ model.FLAG_QUANTITY_MIN }}">Quantity Min</th>
<th class="{{ model.FLAG_QUANTITY_MAX }}">Quantity Max</th>
<th class="{{ model.FLAG_COST_LOCAL }}">Cost</th>
<!-- <th>Price</th> -->
</tr>
</head>
<tbody>
{% set is_blank_row = False %}
{% for category in model.category_list.categories %}
{% for product in category.products %}
{% for permutation in product.permutations %}
{% include '_block_store_permutation.html' %}
{% endfor %}
{% endfor %}
{% endfor %}
{% set is_blank_row = True %}
{% include '_block_store_permutation.html' %}
</tbody>
</table>
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/store_product.js') }}"></script>
<script>
// pass arguments from model to JS
var attrIdCategory = "{{ model.ATTR_ID_CATEGORY }}";
var attrIdProduct = "{{ model.ATTR_ID_PRODUCT }}";
var attrIdPermutation = "{{ model.ATTR_ID_PERMUTATION }}";
var flagCategory = "{{ model.FLAG_CATEGORY }}";
var flagProduct = "{{ model.FLAG_PRODUCT }}";
var flagVariations = "{{ model.FLAG_VARIATIONS }}";
var flagQuantityStock = "{{ model.FLAG_QUANTITY_STOCK }}";
var flagQuantityMin = "{{ model.FLAG_QUANTITY_MIN }}";
var flagQuantityMax = "{{ model.FLAG_QUANTITY_MAX }}";
var flagCostLocal = "{{ model.FLAG_COST_LOCAL }}";
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_PRODUCT }}";
var idFilterCategory = "{{ model.ID_FILTER_CATEGORY }}";
var idFilterProduct = "{{ model.ID_FILTER_PRODUCT }}";
var idFilterOutOfStock = "{{ model.ID_FILTER_OUT_OF_STOCK }}";
var idFilterQuantityMin = "{{ model.ID_FILTER_QUANTITY_MIN }}";
var idFilterQuantityMax = "{{ model.ID_FILTER_QUANTITY_MAX }}";
var dictListsProducts = {{ model.category_list.to_dict_lists_products() }};
var listCategories = {{ model.category_list.to_list_categories() }};
var listProducts = {{ model.category_list.to_list_products() }};
// hookup elements
$(document).ready(function() {
console.log('Hooking up store product page...');
hookupStorePageProduct();
});
</script>
{% endblock %}

View File

@@ -0,0 +1,146 @@
{% extends 'layout.html' %}
{% block page_body %}
<!--
{ % set product = model.product %}
{ % set permutation = product.get_permutation_selected() %}
-->
{% set block_id = 'styles' %}
{% include '_shared_store.html' %}
<script>console.log("test 1");</script>
<link rel="stylesheet" href="{{ url_for('static', filename='css/store_product_permutation.css') }}">
<!-- HTML content -->
<form id="{{ model.ID_FORM_FILTERS_PERMUTATIONS }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('permutations_post') }}" method="POST"> <!-- {{ model.FLAG_CONTAINER }} -->
{{ model.form_filters.hidden_tag() }}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.id_category.label }}
{{ model.form_filters.id_category() }}
{% for error in model.form_filters.id_category.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.id_product.label }}
{{ model.form_filters.id_product() }}
{% for error in model.form_filters.id_product.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.is_out_of_stock.label }}
{{ model.form_filters.is_out_of_stock() }}
{% for error in model.form_filters.is_out_of_stock.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.quantity_min.label }}
{{ model.form_filters.quantity_min() }}
{% for error in model.form_filters.quantity_min.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.quantity_max.label }}
{{ model.form_filters.quantity_max() }}
{% for error in model.form_filters.quantity_max.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<!--
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }} {{ model.FLAG_CONTAINER_INPUT }}">
{ { model.form_filters.submit() }}
</div>
-->
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_save' %}
{% include '_blocks_button_save_cancel.html' %}
{% set block_id = 'button_cancel' %}
{% include '_blocks_button_save_cancel.html' %}
{% set block_id = 'button_add' %}
{% include '_blocks_button_save_cancel.html' %}
</div>
</div>
</form>
<!--
<div class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
</div>
</div>
-->
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<thead>
<tr>
<th class="{{ model.FLAG_CATEGORY }}">Category</th>
<th class="{{ model.FLAG_PRODUCT }}">Product</th>
<th class="{{ model.FLAG_VARIATIONS }}">Variations</th>
<th class="{{ model.FLAG_QUANTITY_STOCK }}">Quantity Stock</th>
<th class="{{ model.FLAG_QUANTITY_MIN }}">Quantity Min</th>
<th class="{{ model.FLAG_QUANTITY_MAX }}">Quantity Max</th>
<th class="{{ model.FLAG_COST_LOCAL }}">Cost</th>
<!-- <th>Price</th> -->
</tr>
</thead>
<tbody>
{% set is_blank_row = False %}
{% for category in model.category_list.categories %}
{% for product in category.products %}
{% for permutation in product.permutations %}
{% include '_block_store_permutation.html' %}
{% endfor %}
{% endfor %}
{% endfor %}
{% set is_blank_row = True %}
{% include '_block_store_permutation.html' %}
</tbody>
</table>
{% include '_block_overlay_confirm.html' %}
{% include '_block_overlay_error.html' %}
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/store_product_permutation.js') }}"></script>
<script>
// pass arguments from model to JS
var attrIdCategory = "{{ model.ATTR_ID_CATEGORY }}";
var attrIdProduct = "{{ model.ATTR_ID_PRODUCT }}";
var attrIdPermutation = "{{ model.ATTR_ID_PERMUTATION }}";
var flagCategory = "{{ model.FLAG_CATEGORY }}";
var flagProduct = "{{ model.FLAG_PRODUCT }}";
var flagVariations = "{{ model.FLAG_VARIATIONS }}";
var flagQuantityStock = "{{ model.FLAG_QUANTITY_STOCK }}";
var flagQuantityMin = "{{ model.FLAG_QUANTITY_MIN }}";
var flagQuantityMax = "{{ model.FLAG_QUANTITY_MAX }}";
var flagCostLocal = "{{ model.FLAG_COST_LOCAL }}";
var flagIsOutOfStock = "{{ model.FLAG_IS_OUT_OF_STOCK }}";
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATION }}";
var idFilterCategory = "#{{ model.ID_FILTER_CATEGORY }}";
var idFilterProduct = "#{{ model.ID_FILTER_PRODUCT }}";
var idFilterIsOutOfStock = "#{{ model.ID_FILTER_IS_OUT_OF_STOCK }}";
var idFilterQuantityMin = "#{{ model.ID_FILTER_QUANTITY_MIN }}";
var idFilterQuantityMax = "#{{ model.ID_FILTER_QUANTITY_MAX }}";
var idFormFiltersPermutations = "#{{ model.ID_FORM_FILTERS_PERMUTATIONS }}";
var keyPermutations = "{{ model.KEY_PERMUTATIONS }}";
var dictListsProducts = {{ model.category_list.to_dict_lists_products() | tojson | safe }};
var listCategories = {{ model.category_list.to_list_categories() | tojson | safe }};
var listProducts = {{ model.category_list.to_list_products() | tojson | safe }};
// hookup elements
$(document).ready(function() {
console.log('Hooking up store product permutation page...');
hookupStorePageProductPermutation();
});
</script>
{% endblock %}

View File

@@ -0,0 +1,151 @@
{% extends 'layout.html' %}
{% block page_body %}
{% set block_id = 'styles' %}
{% include '_shared_store.html' %}
<script>console.log("test 1");</script>
<link rel="stylesheet" href="{{ url_for('static', filename='css/store_stock_item.css') }}">
<!-- HTML content -->
<form id="{{ model.ID_FORM_FILTERS_STOCK }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}" action="{{ url_for('stock_filter') }}" method="POST"> <!-- {{ model.FLAG_CONTAINER }} -->
{{ model.form_filters.hidden_tag() }}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.id_category.label }}
{{ model.form_filters.id_category() }}
{% for error in model.form_filters.id_category.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.id_product.label }}
{{ model.form_filters.id_product() }}
{% for error in model.form_filters.id_product.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.is_out_of_stock.label }}
{{ model.form_filters.is_out_of_stock() }}
{% for error in model.form_filters.is_out_of_stock.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.quantity_min.label }}
{{ model.form_filters.quantity_min() }}
{% for error in model.form_filters.quantity_min.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{{ model.form_filters.quantity_max.label }}
{{ model.form_filters.quantity_max() }}
{% for error in model.form_filters.quantity_max.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
</div>
<!--
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }} {{ model.FLAG_CONTAINER_INPUT }}">
{ { model.form_filters.submit() }}
</div>
-->
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_save' %}
{% include '_blocks_button_save_cancel.html' %}
{% set block_id = 'button_cancel' %}
{% include '_blocks_button_save_cancel.html' %}
{% set block_id = 'button_add' %}
{% include '_blocks_button_save_cancel.html' %}
</div>
</div>
</form>
<!--
<div class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
</div>
</div>
-->
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<thead>
<tr>
<th class="{{ model.FLAG_CATEGORY }}">Category</th>
<th class="{{ model.FLAG_PRODUCT }}">Product</th>
<th class="{{ model.FLAG_VARIATIONS }}">Variations</th>
<th class="{{ model.FLAG_CURRENCY }}">Currency</th>
<th class="{{ model.FLAG_COST_LOCAL_VAT_INCL }}">Cost Local (VAT incl.)</th>
<th class="{{ model.FLAG_DATE_PURCHASED}}">Date Purchased</th>
<th class="{{ model.FLAG_DATE_RECEIVED }}">Date Received</th>
<th class="{{ model.FLAG_LOCATION_STORAGE }}">Storage Location</th>
<!--<th class="{{ model.FLAG_IS_SEALED }}">Is Sealed</th>-->
<th class="{{ model.FLAG_DATE_UNSEALED }}">Date Unsealed</th>
<th class="{{ model.FLAG_DATE_EXPIRATION }}">Date Expiration</th>
<!--<th class="{{ model.FLAG_IS_CONSUMED }}">Is Consumed</th>-->
<th class="{{ model.FLAG_DATE_CONSUMED }}">Date Consumed</th>
<th class="{{ model.FLAG_ACTIVE }}">Active</th>
</tr>
</thead>
<tbody>
{% set is_blank_row = False %}
{% for category in model.category_list.categories %}
{% for product in category.products %}
{% for permutation in product.permutations %}
{% for stock_item in permutation.stock_items %}
{% set is_blank_row = False %}
{% include '_block_store_stock_item.html' %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
{% set is_blank_row = True %}
{% include '_block_store_stock_item.html' %}
</tbody>
</table>
{% include '_block_overlay_confirm.html' %}
{% include '_block_overlay_error.html' %}
{% set block_id = 'scripts' %}
{% include '_shared_store.html' %}
<!-- Include JavaScript -->
<script src="{{ url_for('static', filename='js/store_stock_item.js') }}"></script>
<script>
// pass arguments from model to JS
var attrIdCategory = "{{ model.ATTR_ID_CATEGORY }}";
var attrIdProduct = "{{ model.ATTR_ID_PRODUCT }}";
var attrIdPermutation = "{{ model.ATTR_ID_PERMUTATION }}";
var flagCategory = "{{ model.FLAG_CATEGORY }}";
var flagProduct = "{{ model.FLAG_PRODUCT }}";
var flagVariations = "{{ model.FLAG_VARIATIONS }}";
var flagQuantityStock = "{{ model.FLAG_QUANTITY_STOCK }}";
var flagQuantityMin = "{{ model.FLAG_QUANTITY_MIN }}";
var flagQuantityMax = "{{ model.FLAG_QUANTITY_MAX }}";
var flagCostLocal = "{{ model.FLAG_COST_LOCAL }}";
var flagIsOutOfStock = "{{ model.FLAG_IS_OUT_OF_STOCK }}";
var hashPageCurrent = "{{ model.HASH_PAGE_STORE_STOCK }}";
var idFilterCategory = "#{{ model.ID_FILTER_CATEGORY }}";
var idFilterProduct = "#{{ model.ID_FILTER_PRODUCT }}";
var idFilterIsOutOfStock = "#{{ model.ID_FILTER_IS_OUT_OF_STOCK }}";
var idFilterQuantityMin = "#{{ model.ID_FILTER_QUANTITY_MIN }}";
var idFilterQuantityMax = "#{{ model.ID_FILTER_QUANTITY_MAX }}";
var idFormFiltersPermutations = "#{{ model.ID_FORM_FILTERS_PERMUTATIONS }}";
var keyPermutations = "{{ model.KEY_PERMUTATIONS }}";
var dictListsProducts = {{ model.category_list.to_dict_lists_products() | tojson | safe }};
var listCategories = {{ model.category_list.to_list_categories() | tojson | safe }};
var listProducts = {{ model.category_list.to_list_products() | tojson | safe }};
// hookup elements
$(document).ready(function() {
console.log('Hooking up store stock page...');
hookupStorePageStockItem();
});
</script>
{% endblock %}

View File

@@ -78,4 +78,12 @@
var keyRegion = "{{ model.KEY_REGION }}";
var keyUrlCheckout = "{{ model.KEY_URL_CHECKOUT }}";
</script>
{% elif block_id == 'Textarea_Product_Permutation_Variations' %}
<textarea
class="{{ model.FLAG_VARIATIONS }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ permutation.output_variations_jsonify() }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ permutation.output_variations_jsonify() }}"
>{{ permutation.output_variations() }}</textarea>
{% elif block_id == 'Textarea_Product_Permutation_Variations_Blank' %}
<textarea class="{{ model.FLAG_VARIATIONS }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}></textarea>
{% endif %}

View File

@@ -42,6 +42,9 @@
<script>
var attrTextCollapsed = "{{ model.ATTR_TEXT_COLLAPSED }}";
var attrTextExpanded = "{{ model.ATTR_TEXT_EXPANDED }}";
var attrValueCurrent = "{{ model.ATTR_VALUE_CURRENT }}";
var attrValuePrevious = "{{ model.ATTR_VALUE_PREVIOUS }}";
var attrValueNew = "{{ model.ATTR_VALUE_NEW }}";
var flagBtnOverlayClose = "{{ model.FLAG_BTN_OVERLAY_CLOSE }}";
var flagBtnSubmit = "{{ model.FLAG_BTN_SUBMIT }}";
var flagCard = "{{ model.FLAG_CARD }}";
@@ -50,8 +53,10 @@
var flagColumn = "{{ model.FLAG_COLUMN }}";
var flagContainer = "{{ model.FLAG_CONTAINER }}";
var flagContainerInput = "{{ model.FLAG_CONTAINER_INPUT }}";
var flagDirty = "{{ model.FLAG_DIRTY }}";
var flagExpanded = "{{ model.FLAG_EXPANDED }}";
var flagInitialised = "{{ model.FLAG_INITIALISED }}";
var flagOverlay = "{{ model.FLAG_OVERLAY }}";
var flagRow = "{{ model.FLAG_ROW }}";
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
@@ -61,18 +66,27 @@
var hashPageHome = "{{ model.HASH_PAGE_HOME }}";
var hashPageServices = "{{ model.HASH_PAGE_SERVICES }}";
var hashPageStoreHome = "{{ model.HASH_PAGE_STORE_HOME }}";
var hashPageStorePermutations = "{{ model.HASH_PAGE_STORE_PERMUTATIONS }}";
var hashPageStoreProduct = "{{ model.HASH_PAGE_STORE_PRODUCT }}";
var hashPageStoreProductPermutation = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATION }}";
var hashPageStoreProductPermutationFilter = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATION_FILTER }}";
var hashPageStoreProductPermutationSave = "{{ model.HASH_PAGE_STORE_PRODUCT_PERMUTATION_SAVE }}";
var idButtonAdd = "#{{ model.ID_BUTTON_ADD }}";
var idButtonCancel = "#{{ model.ID_BUTTON_CANCEL }}";
var idButtonConfirm = "#{{ model.ID_BUTTON_CONFIRM }}";
var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}";
var idButtonSave = "#{{ model.ID_BUTTON_SAVE }}";
var idFormCurrency = "#{{ model.ID_FORM_CURRENCY }}";
var idFormDeliveryRegion = "#{{ model.ID_FORM_DELIVERY_REGION }}";
var idFormIsIncludedVAT = "#{{ model.ID_FORM_IS_INCLUDED_VAT }}";
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
var idNavContact = "#{{ model.ID_NAV_CONTACT }}";
var idNavHome = "#{{ model.ID_NAV_HOME }}";
var idNavServices = "#{{ model.ID_NAV_SERVICES }}";
var idNavStoreHome = "#{{ model.ID_NAV_STORE_HOME }}";
var idNavStorePermutations = "#{{ model.ID_NAV_STORE_PERMUTATIONS }}";
var idNavStoreProduct = "#{{ model.ID_NAV_STORE_PRODUCT }}";
var idOverlayConfirm = "#{{ model.ID_OVERLAY_CONFIRM }}";
var idOverlayError = "#{{ model.ID_OVERLAY_ERROR }}";
var idOverlayHamburger = "#{{ model.ID_OVERLAY_HAMBURGER }}";
var idPageBody = "#{{ model.ID_PAGE_BODY }}";
var idTableMain = "#{{ model.ID_TABLE_MAIN }}";