Feat: Assessment page complete and new Home page layout for marketing phase 1 of the customer acquisition plan and offering a demo and for trainers to join the alpha trials. Reporting images created for radar diagram of Command mastery by Command Category; line graph of single command progress measured by obedience level, response latency, and compliance duration over time; Calendar Entries page filtered to unpaid bill calendary entries created using dummy data created in web server as database implementation not yet started.

This commit is contained in:
2025-07-30 19:57:47 +01:00
parent d38bf51345
commit e1fedaf773
93 changed files with 2605 additions and 875 deletions

View File

@@ -0,0 +1,72 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_CALENDAR_ENTRY }}" {{ model.ATTR_ID_CALENDAR_ENTRY }}>
<td class="{{ model.FLAG_DATE_FROM }} {{ model.FLAG_DATE_TO }} {{ model.FLAG_DATE_PREVIEW }}">
<div class="{{ model.FLAG_DATE_FROM }}"></div>
{#
<div>-</div>
<div class="{{ model.FLAG_DATE_TO }}"></div>
#}
</td>
<td class="{{ model.FLAG_NAME }}">
<input type="text"
class="{{ model.FLAG_NAME }}"
{{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
<td class="{{ model.FLAG_IS_CALENDAR_ENTRY_TYPE_BILL }}">
<input type="checkbox"
class="{{ model.FLAG_IS_CALENDAR_ENTRY_TYPE_BILL }}"
{{ model.ATTR_VALUE_CURRENT }}="true" {{ model.ATTR_VALUE_PREVIOUS }}="true"
checked />
</td>
<td class="{{ model.FLAG_PRICE }}">
<input type="number" min="0" step="0.01"
class="{{ model.FLAG_PRICE }}"
{{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}="0"
value="0" />
</td>
{#
{% set active = True %}
{% include 'components/dog/_td_active.html' %}
#}
</tr>
{% else %}
<tr class="{{ model.FLAG_CALENDAR_ENTRY }}" {{ model.ATTR_ID_CALENDAR_ENTRY }}="{{ calendar_entry.id_calendar_entry }}">
<td class="{{ model.FLAG_DATE_FROM }} {{ model.FLAG_DATE_TO }} {{ model.FLAG_DATE_PREVIEW }}">
<div class="{{ model.FLAG_DATE_FROM }}">{{ model.format_datetime_text(calendar_entry.start_on) }}</div>
{#
<div>-</div>
<div class="{{ model.FLAG_DATE_TO }}">{{ model.format_datetime_text(calendar_entry.start_on) }}</div>
#}
</td>
<td class="{{ model.FLAG_NAME }}">
<input type="text"
class="{{ model.FLAG_NAME }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ model.format_null_string_as_blank(calendar_entry.name)|escape }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ model.format_null_string_as_blank(calendar_entry.name)|escape }}"
value="{{ model.format_null_string_as_blank(calendar_entry.name) }}" />
</td>
<td class="{{ model.FLAG_IS_CALENDAR_ENTRY_TYPE_BILL }}">
<input type="checkbox"
class="{{ model.FLAG_IS_CALENDAR_ENTRY_TYPE_BILL }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ calendar_entry.is_bill_calendar_entry_type | lower }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ calendar_entry.is_bill_calendar_entry_type | lower }}"
{% if calendar_entry.is_bill_calendar_entry_type %}checked{% endif %} />
</td>
<td class="{{ model.FLAG_PRICE }}">
{#
<input type="number" min="0" step="0.01"
class="{{ model.FLAG_PRICE }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ calendar_entry.price }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ calendar_entry.price }}"
value="{{ calendar_entry.price }}" />
#}
<div class="{{ model.FLAG_PRICE }}">£{{ calendar_entry.price }}</div>
</td>
{#
{% set active = calendar_entry.active %}
{% include 'components/dog/_td_active.html' %}
#}
</tr>
{% endif %}

View File

@@ -1,15 +0,0 @@
{% if block_id == 'block1' %}
<div class="common-block" id="block1">
<h1>Feckin common block boi</h1>
</div>
{% elif block_id == 'checkout' %}
<!-- Variables from Model_View_Store + model-->
<script>
var idOverlayInfoBilling = "#{{ model.ID_OVERLAY_INFO_BILLING }}";
var idOverlayInfoDelivery = "#{{ model.ID_OVERLAY_INFO_DELIVERY }}";
var idContainerInfoBilling = "#{{ model.ID_CONTAINER_INFO_BILLING }}";
var idContainerInfoDelivery = "#{{ model.ID_CONTAINER_INFO_DELIVERY }}";
var keyIdCheckout = "{{ model.KEY_ID_CHECKOUT }}";
var keyInfoBilling = "{{ model.KEY_INFO_BILLING }}";
</script>
{% endif %}

View File

@@ -0,0 +1,164 @@
<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 colourAccent = "{{ model.COLOUR_ACCENT }}";
var colourError = "{{ model.COLOUR_ERROR }}";
var colourPageBackground = "{{ model.COLOUR_PAGE_BACKGROUND }}";
var colourPageBackground1 = "{{ model.COLOUR_PAGE_BACKGROUND_1 }}";
var colourPageBackground2 = "{{ model.COLOUR_PAGE_BACKGROUND_2 }}";
var colourPrimary = "{{ model.COLOUR_PRIMARY }}";
var colourSecondary = "{{ model.COLOUR_SECONDARY }}";
var colourText = "{{ model.COLOUR_TEXT }}";
var colourTextBackground = "{{ model.COLOUR_TEXT_BACKGROUND }}";
var colourTextLinkUnvisited = "{{ model.COLOUR_TEXT_LINK_UNVISITED }}";
var colourTextLinkVisited = "{{ model.COLOUR_TEXT_LINK_VISITED }}";
var environment = {
"name": "{{ model.app.app_config.FLASK_ENV }}",
"is_production": "{{ model.app.app_config.is_production | lower }}",
"is_development": "{{ model.app.app_config.is_development | lower }}",
};
var flagAccessLevel = "{{ model.FLAG_ACCESS_LEVEL }}";
var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}";
var flagActive = "{{ model.FLAG_ACTIVE }}";
var flagActiveOnly = "{{ model.FLAG_ACTIVE_ONLY }}";
var flagAdd = "{{ model.FLAG_ADD }}";
var flagButton = "{{ model.FLAG_BUTTON }}";
var flagButtonPrimary = "{{ model.FLAG_BUTTON_PRIMARY }}";
var flagCallback = "{{ model.FLAG_CALLBACK }}";
var flagCancel = "{{ model.FLAG_CANCEL }}";
var flagCaptcha = "{{ model.FLAG_CAPTCHA }}";
var flagCard = "{{ model.FLAG_CARD }}";
var flagCheckbox = "{{ model.FLAG_CHECKBOX }}";
var flagCloseTemporaryElement = "{{ model.FLAG_CLOSE_TEMPORARY_ELEMENT }}";
var flagCode = "{{ model.FLAG_CODE }}";
var flagCollapsible = "{{ model.FLAG_COLLAPSIBLE }}";
var flagColumn = "{{ model.FLAG_COLUMN }}";
var flagComment = "{{ model.FLAG_COMMENT }}";
var flagContainer = "{{ model.FLAG_CONTAINER }}";
var flagContainerInput = "{{ model.FLAG_CONTAINER_INPUT }}";
var flagCsrfToken = "{{ model.FLAG_CSRF_TOKEN }}";
var flagDdlPreview = "{{ model.FLAG_DDL_PREVIEW }}";
var flagDelete = "{{ model.FLAG_DELETE }}";
var flagDescription = "{{ model.FLAG_DESCRIPTION }}";
var flagDetail = "{{ model.FLAG_DETAIL }}";
var flagDialog = "{{ model.FLAG_DIALOG }}";
var flagDirty = "{{ model.FLAG_DIRTY }}";
var flagDisplayOrder = "{{ model.FLAG_DISPLAY_ORDER }}";
var flagDragging = "dragging";
var flagDragOver = "drag-over";
var flagEdit = "{{ model.FLAG_EDIT }}";
var flagEmail = "{{ model.FLAG_EMAIL }}";
var flagError = "{{ model.FLAG_ERROR }}";
var flagExpanded = "{{ model.FLAG_EXPANDED }}";
var flagFailure = "{{ model.FLAG_FAILURE }}";
var flagFax = "{{ model.FLAG_FAX }}";
var flagFilter = "{{ model.FLAG_FILTER }}";
var flagForm = "{{ model.FLAG_FORM }}";
var flagFormFilters = "{{ model.FLAG_FORM_FILTERS }}";
var flagIcon = "{{ model.FLAG_ICON }}";
var flagImageLogo = "{{ model.FLAG_IMAGE_LOGO }}";
var flagInitialised = "{{ model.FLAG_INITIALISED }}";
var flagIsChecked = "{{ model.FLAG_IS_CHECKED }}";
var flagIsCollapsed = "{{ model.FLAG_IS_COLLAPSED }}";
var flagLeftHandStub = "{{ model.FLAG_LEFT_HAND_STUB }}";
var flagLogo = "{{ model.FLAG_LOGO }}";
var flagMessage = "{{ model.FLAG_MESSAGE }}";
var flagModal = "{{ model.FLAG_MODAL }}";
var flagMove = "move";
var flagName = "{{ model.FLAG_NAME }}";
var flagNameAttrOptionText = "{{ model.FLAG_NAME_ATTR_OPTION_TEXT}}";
var flagNameAttrOptionValue = "{{ model.FLAG_NAME_ATTR_OPTION_VALUE }}";
var flagNamePlural = "{{ model.FLAG_NAME_PLURAL }}";
var flagNavAdminHome = "{{ model.FLAG_NAV_ADMIN_HOME }}";
var flagNavContact = "{{ model.FLAG_NAV_CONTACT }}";
var flagNavHome = "{{ model.FLAG_NAV_HOME }}";
var flagNavDogAssessments = "{{ model.FLAG_NAV_DOG_ASSESSMENTS }}";
var flagNavDogButtonIcons = "{{ model.FLAG_NAV_DOG_BUTTON_ICONS }}";
var flagNavDogButtonShapes = "{{ model.FLAG_NAV_DOG_BUTTON_SHAPES }}";
var flagNavDogCalendarEntries = "{{ model.FLAG_NAV_DOG_CALENDAR_ENTRIES }}";
var flagNavDogColour = "{{ model.FLAG_NAV_DOG_COLOUR }}";
var flagNavDogCommandButtonLinks = "{{ model.FLAG_NAV_DOG_COMMAND_BUTTON_LINKS }}";
var flagNavDogCommandCategories = "{{ model.FLAG_NAV_DOG_COMMAND_CATEGORIES }}";
var flagNavDogCommands = "{{ model.FLAG_NAV_DOG_COMMANDS }}";
var flagNavDogDogs = "{{ model.FLAG_NAV_DOG_DOGS }}";
var flagNavDogDogCommandLinks = "{{ model.FLAG_NAV_DOG_DOG_COMMAND_LINKS }}";
var flagNavDogHome = "{{ model.FLAG_NAV_DOG_HOME }}";
var flagNavDogLocations = "{{ model.FLAG_NAV_DOG_LOCATIONS }}";
var flagNavUserAccount = "{{ model.FLAG_NAV_USER_ACCOUNT }}";
var flagNavUserAdmin = "{{ model.FLAG_NAV_USER_ADMIN }}";
var flagNavUserLogin = "{{ model.FLAG_NAV_USER_LOGIN }}";
var flagNavUserLogout = "{{ model.FLAG_NAV_USER_LOGOUT }}";
var flagNotes = "{{ model.FLAG_NOTES }}";
var flagOverlay = "{{ model.FLAG_OVERLAY }}";
var flagOverlayClose = "{{ model.FLAG_OVERLAY_CLOSE }}";
var flagPageBody = "{{ model.FLAG_PAGE_BODY }}";
var flagPhoneNumber = "{{ model.FLAG_PHONE_NUMBER }}";
var flagQuantity = "{{ model.FLAG_QUANTITY }}";
var flagRightHandSide = "{{ model.FLAG_RIGHT_HAND_SIDE }}";
var flagRow = "{{ model.FLAG_ROW }}";
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
var flagRows = "{{ model.FLAG_ROWS }}";
var flagSave = "{{ model.FLAG_SAVE }}";
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
var flagSearch = "{{ model.FLAG_SEARCH }}";
var flagSlider = "{{ model.FLAG_SLIDER }}";
var flagStatus = "{{ model.FLAG_STATUS }}";
var flagSubmit = "{{ model.FLAG_SUBMIT }}";
var flagSubmitted = "{{ model.FLAG_SUBMITTED }}";
var flagSuccess = "{{ model.FLAG_SUCCESS }}";
var flagTableMain = "{{ model.FLAG_TABLE_MAIN }}";
var flagTemporaryElement = "{{ model.FLAG_TEMPORARY_ELEMENT }}";
var flagUser = "{{ model.FLAG_USER }}";
var flagWebsite = "{{ model.FLAG_WEBSITE }}";
var hashGetALTCHAChallenge = "{{ model.HASH_ALTCHA_CREATE_CHALLENGE }}";
var hashPageAccessibilityReport = "{{ model.HASH_PAGE_ACCESSIBILITY_REPORT }}";
var hashPageAccessibilityStatement = "{{ model.HASH_PAGE_ACCESSIBILITY_STATEMENT }}";
var hashPageAdminHome = "{{ model.HASH_PAGE_ADMIN_HOME }}";
var hashPageContact = "{{ model.HASH_PAGE_CONTACT }}";
var hashPageContactSuccess = "{{ model.HASH_PAGE_CONTACT_SUCCESS }}";
var hashPageDataRetentionSchedule = "{{ model.HASH_PAGE_DATA_RETENTION_SCHEDULE }}";
var hashPageDogAssessment = "{{ model.HASH_PAGE_DOG_ASSESSMENT }}";
var hashPageDogAssessments = "{{ model.HASH_PAGE_DOG_ASSESSMENTS }}";
var hashPageDogButtonIcons = "{{ model.HASH_PAGE_DOG_BUTTON_ICONS }}";
var hashPageDogButtonShapes = "{{ model.HASH_PAGE_DOG_BUTTON_SHAPES }}";
var hashPageDogCalendarEntries = "{{ model.HASH_PAGE_DOG_CALENDAR_ENTRIES }}";
var hashPageDogColours = "{{ model.HASH_PAGE_DOG_COLOURS }}";
var hashPageDogCommandButtonLinks = "{{ model.HASH_PAGE_DOG_COMMAND_BUTTON_LINKS }}";
var hashPageDogCommandCategories = "{{ model.HASH_PAGE_DOG_COMMAND_CATEGORIES }}";
var hashPageDogCommands = "{{ model.HASH_PAGE_DOG_COMMANDS }}";
var hashPageDogDogCommandLinks = "{{ model.HASH_PAGE_DOG_DOG_COMMAND_LINKS }}";
var hashPageDogDogs = "{{ model.HASH_PAGE_DOG_DOGS }}";
var hashPageDogHome = "{{ model.HASH_PAGE_DOG_HOME }}";
var hashPageDogLocations = "{{ model.HASH_PAGE_DOG_LOCATIONS }}";
var hashPageErrorNoPermission = "{{ model.HASH_PAGE_ERROR_NO_PERMISSION }}";
var hashPageHome = "{{ model.HASH_PAGE_HOME }}";
var hashPageLicense = "{{ model.HASH_PAGE_LICENSE }}";
var hashPagePrivacyPolicy = "{{ model.HASH_PAGE_PRIVACY_POLICY }}";
var hashPageUserAccount = "{{ model.HASH_PAGE_USER_ACCOUNT }}";
var hashPageUserAdmin = "{{ model.HASH_PAGE_USER_ADMIN }}";
var hashPageUserLogin = "{{ model.HASH_PAGE_USER_LOGIN }}";
var hashPageUserLogout = "{{ model.HASH_PAGE_USER_LOGOUT }}";
var idButtonApplyFilters = "#{{ model.ID_BUTTON_APPLY_FILTERS }}";
var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}";
var idButtonCancel = "#{{ model.ID_BUTTON_CANCEL }}";
var idButtonSave = "#{{ model.ID_BUTTON_SAVE }}";
var idContainerTemplateElements = "#{{ model.ID_CONTAINER_TEMPLATE_ELEMENTS }}";
var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}";
var idFormFilters = "#{{ model.ID_FORM_FILTERS }}";
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
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 }}";
var idTextareaConfirm = "#{{ model.ID_TEXTAREA_CONFIRM }}";
var isUserLoggedIn = "{{ model.output_bool(model.IS_USER_LOGGED_IN) }}";
var _pathHost = "{{ model.get_url_host() }}";
var _rowBlank = null;
var titlePageCurrent = "{{ model.title }}";
var _verbose = ("{{ model.app.app_config.DEBUG }}" == "True");
</script>

View File

@@ -0,0 +1,64 @@
<script>
var attrIdAssessment = "{{ model.ATTR_ID_ASSESSMENT }}";
var attrIdAssessmentCommandModalityLink = "{{ model.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK }}";
var attrIdAssessmentResponse = "{{ model.ATTR_ID_ASSESSMENT_RESPONSE }}";
var attrIdAccessLevel = "{{ model.ATTR_ID_ACCESS_LEVEL }}";
var attrIdBribe = "{{ model.ATTR_ID_BRIBE }}";
var attrIdButtonColour = "{{ model.ATTR_ID_BUTTON_COLOUR }}";
var attrIdButtonIcon = "{{ model.ATTR_ID_BUTTON_ICON }}";
var attrIdButtonShape = "{{ model.ATTR_ID_BUTTON_SHAPE }}";
var attrIdCalendarEntry = "{{ model.ATTR_ID_CALENDAR_ENTRY }}";
var attrIdCalendarEntryType = "{{ model.ATTR_ID_CALENDAR_ENTRY_TYPE }}";
var attrIdColour = "{{ model.ATTR_ID_COLOUR }}";
var attrIdCommand = "{{ model.ATTR_ID_COMMAND }}";
var attrIdCommandButtonLink = "{{ model.ATTR_ID_COMMAND_BUTTON_LINK }}";
var attrIdCommandCategory = "{{ model.ATTR_ID_COMMAND_CATEGORY }}";
var attrIdCommandModality = "{{ model.ATTR_ID_COMMAND_MODALITY }}";
var attrIdCurrency = "{{ model.ATTR_ID_CURRENCY }}";
var attrIdDistraction = "{{ model.ATTR_ID_DISTRACTION }}";
var attrIdDistractionIntensityLevel = "{{ model.ATTR_ID_DISTRACTION_INTENSITY_LEVEL }}";
var attrIdDistractionType = "{{ model.ATTR_ID_DISTRACTION_TYPE }}";
var attrIdDog = "{{ model.ATTR_ID_DOG }}";
var attrIdDogCommandLink = "{{ model.ATTR_ID_DOG_COMMAND_LINK }}";
var attrIdLightingLevel = "{{ model.ATTR_ID_LIGHTING_LEVEL }}";
var attrIdLocation = "{{ model.ATTR_ID_LOCATION }}";
var attrIdObedienceLevel = "{{ model.ATTR_ID_OBEDIENCE_LEVEL }}";
var attrIdResponseQualityMetric = "{{ model.ATTR_ID_RESPONSE_QUALITY_METRIC }}";
var attrIdWeather = "{{ model.ATTR_ID_WEATHER }}";
var flagAssessment = "{{ model.FLAG_ASSESSMENT }}";
var flagAssessmentCommandModalityLink = "{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}";
var flagAssessmentResponse = "{{ model.FLAG_ASSESSMENT_RESPONSE }}";
var flagBribe = "{{ model.FLAG_BRIBE }}";
var flagButtonIcon = "{{ model.FLAG_BUTTON_ICON }}";
var flagButtonShape = "{{ model.FLAG_BUTTON_SHAPE }}";
var flagCalendarEntry = "{{ model.FLAG_CALENDAR_ENTRY }}";
var flagCalendarEntryType = "{{ model.FLAG_CALENDAR_ENTRY_TYPE }}";
var flagColour = "{{ model.FLAG_COLOUR }}";
var flagCommand = "{{ model.FLAG_COMMAND }}";
var flagCommandButtonLink = "{{ model.FLAG_COMMAND_BUTTON_LINK }}";
var flagCommandCategory = "{{ model.FLAG_COMMAND_CATEGORY }}";
var flagCommandModality = "{{ model.FLAG_COMMAND_MODALITY }}";
var flagCurrency = "{{ model.FLAG_CURRENCY }}";
var flagDistraction = "{{ model.FLAG_DISTRACTION }}";
var flagDistractionIntensityLevel = "{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }}";
var flagDistractionType = "{{ model.FLAG_DISTRACTION_TYPE }}";
var flagDog = "{{ model.FLAG_DOG }}";
var flagDogDogCommandLink = "{{ model.FLAG_DOG_DOG_COMMAND_LINK }}";
var flagLightingLevel = "{{ model.FLAG_LIGHTING_LEVEL }}";
var flagLocation = "{{ model.FLAG_LOCATION }}";
var flagLocationParent = "{{ model.FLAG_LOCATION_PARENT }}";
var flagObedienceLevel = "{{ model.FLAG_OBEDIENCE_LEVEL }}";
var flagResponseQualityMetric = "{{ model.FLAG_RESPONSE_QUALITY_METRIC }}";
var flagWeather = "{{ model.FLAG_WEATHER }}";
{# var hashSaveDogAssessment = "{{ model.HASH_SAVE_DOG_ASSESSMENT }}"; #}
var hashSaveDogAssessmentDistractionAndResponse = "{{ model.HASH_SAVE_DOG_ASSESSMENT_DISTRACTION_AND_RESPONSE }}";
var hashSaveDogButtonIcon = "{{ model.HASH_SAVE_DOG_BUTTON_ICON }}";
var hashSaveDogButtonShape = "{{ model.HASH_SAVE_DOG_BUTTON_SHAPE }}";
var hashSaveDogColour = "{{ model.HASH_SAVE_DOG_COLOUR }}";
var hashSaveDogCommand = "{{ model.HASH_SAVE_DOG_COMMAND }}";
var hashSaveDogCommandButtonLink = "{{ model.HASH_SAVE_DOG_COMMAND_BUTTON_LINK }}";
var hashSaveDogCommandCategory = "{{ model.HASH_SAVE_DOG_COMMAND_CATEGORY }}";
var hashSaveDogDogCommandLink = "{{ model.HASH_SAVE_DOG_DOG_COMMAND_LINK }}";
var hashSaveDogLocation = "{{ model.HASH_SAVE_DOG_LOCATION }}";
</script>

View File

@@ -0,0 +1,9 @@
<script>
var flagAddress = "{{ model.FLAG_ADDRESS }}";
var flagAddressLine1 = "{{ model.FLAG_ADDRESS_LINE_1 }}";
var flagAddressLine2 = "{{ model.FLAG_ADDRESS_LINE_2 }}";
var flagCity = "{{ model.FLAG_CITY }}";
var flagCounty = "{{ model.FLAG_COUNTY }}";
var flagPostcode = "{{ model.FLAG_POSTCODE }}";
</script>

View File

@@ -13,7 +13,7 @@
"@type": "ProfessionalService",
"name": "{{ model.NAME_COMPANY_SHORT }}",
"url": "{{ model.get_url_host() }}",
"logo": "{{ model.get_url_host() }}{{ url_for('static', filename='images/Logo.png') }}",
"logo": "{{ model.get_url_host() }}{{ url_for('static', filename='images/fetch-metrics-logo-LQ.webp') }}",
"description": "Explore our wide range of software engineering services. We specialize in various tech stacks including MySQL, Python, Microsoft SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, and REST.",
"address": {
"@type": "PostalAddress",
@@ -35,358 +35,6 @@
<meta name="yandex-verification" content="4693a824cfda082a" />
<meta id="{{ model.ID_CSRF_TOKEN }}" name="{{ model.FLAG_CSRF_TOKEN }}" content="{{ csrf_token() }}" />
<script>
{#
var attrIdAccessLevel = "{{ model.ATTR_ID_ACCESS_LEVEL }}";
var attrIdCurrency = "{{ model.ATTR_ID_CURRENCY }}";
var attrIdAddress = "{{ model.ATTR_ID_ADDRESS }}";
var attrIdPlant = "{{ model.ATTR_ID_PLANT }}";
var attrIdRegion = "{{ model.ATTR_ID_REGION }}";
var attrIdStorageLocation = "{{ model.ATTR_ID_STORAGE_LOCATION }}";
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 environment = {
"name": "{{ model.app.app_config.FLASK_ENV }}",
"is_production": "{{ model.app.app_config.is_production }}",
"is_development": "{{ model.app.app_config.is_development }}",
};
var flagAccessLevel = "{{ model.FLAG_ACCESS_LEVEL }}";
var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}";
var flagActive = "{{ model.FLAG_ACTIVE }}";
var flagAdd = "{{ model.FLAG_ADD }}";
var flagAddress = "{{ model.FLAG_ADDRESS }}";
var flagAddressLine1 = "{{ model.FLAG_ADDRESS_LINE_1 }}";
var flagAddressLine2 = "{{ model.FLAG_ADDRESS_LINE_2 }}";
var flagButton = "{{ model.FLAG_BUTTON }}";
var flagButtonPrimary = "{{ model.FLAG_BUTTON_PRIMARY }}";
var flagCallback = "{{ model.FLAG_CALLBACK }}";
var flagCancel = "{{ model.FLAG_CANCEL }}";
var flagCard = "{{ model.FLAG_CARD }}";
var flagCity = "{{ model.FLAG_CITY }}";
var flagCloseTemporaryElement = "{{ model.FLAG_CLOSE_TEMPORARY_ELEMENT }}";
var flagCode = "{{ model.FLAG_CODE }}";
var flagCollapsed = "{{ model.FLAG_COLLAPSED }}";
var flagCollapsible = "{{ model.FLAG_COLLAPSIBLE }}";
var flagColumn = "{{ model.FLAG_COLUMN }}";
var flagComment = "{{ model.FLAG_COMMENT }}";
// var flagContactUs = "{{ model.FLAG_CONTACT_US }}";
var flagContainer = "{{ model.FLAG_CONTAINER }}";
var flagContainerCheckbox = "{{ model.FLAG_CONTAINER_CHECKBOX }}";
var flagContainerInput = "{{ model.FLAG_CONTAINER_INPUT }}";
var flagCounty = "{{ model.FLAG_COUNTY }}";
var flagCsrfToken = "{{ model.FLAG_CSRF_TOKEN }}";
var flagCurrency = "{{ model.FLAG_CURRENCY }}";
var flagDelete = "{{ model.FLAG_DELETE }}";
var flagDescription = "{{ model.FLAG_DESCRIPTION }}";
var flagDetail = "{{ model.FLAG_DETAIL }}";
var flagDialog = "{{ model.FLAG_DIALOG }}";
var flagDirty = "{{ model.FLAG_DIRTY }}";
var flagDisplayOrder = "{{ model.FLAG_DISPLAY_ORDER }}";
var flagDragging = "dragging";
var flagDragOver = "drag-over";
var flagEdit = "{{ model.FLAG_EDIT }}";
var flagEmail = "{{ model.FLAG_EMAIL }}";
var flagError = "{{ model.FLAG_ERROR }}";
var flagExpanded = "{{ model.FLAG_EXPANDED }}";
var flagFailure = "{{ model.FLAG_FAILURE }}";
var flagFax = "{{ model.FLAG_FAX }}";
var flagFilter = "{{ model.FLAG_FILTER }}";
var flagForm = "{{ model.FLAG_FORM }}";
var flagFormFilters = "{{ model.FLAG_FORM_FILTERS }}";
var flagImageLogo = "{{ model.FLAG_IMAGE_LOGO }}";
var flagInitialised = "{{ model.FLAG_INITIALISED }}";
// var flagItems = "{{ model.FLAG_ITEMS }}";
// var flagKeyPrimary = "{{ model.FLAG_KEY_PRIMARY }}";
var flagLeftHandStub = "{{ model.FLAG_LEFT_HAND_STUB }}";
var flagLogo = "{{ model.FLAG_LOGO }}";
var flagMessage = "{{ model.FLAG_MESSAGE }}";
var flagModal = "{{ model.FLAG_MODAL }}";
var flagMove = "move";
var flagName = "{{ model.FLAG_NAME }}";
var flagNameAttrOptionText = "{{ model.FLAG_NAME_ATTR_OPTION_TEXT}}";
var flagNameAttrOptionValue = "{{ model.FLAG_NAME_ATTR_OPTION_VALUE }}";
var flagNamePlural = "{{ model.FLAG_NAME_PLURAL }}";
var flagNavAdminHome = "{{ model.FLAG_NAV_ADMIN_HOME }}";
var flagNavContact = "{{ model.FLAG_NAV_CONTACT }}";
var flagNavHome = "{{ model.FLAG_NAV_HOME }}";
var flagNavServices = "{{ model.FLAG_NAV_SERVICES }}";
var flagNavUserAccount = "{{ model.FLAG_NAV_USER_ACCOUNT }}";
var flagNavUserAdmin = "{{ model.FLAG_NAV_USER_ADMIN }}";
var flagNavUserLogin = "{{ model.FLAG_NAV_USER_LOGIN }}";
var flagNavUserLogout = "{{ model.FLAG_NAV_USER_LOGOUT }}";
var flagOverlay = "{{ model.FLAG_OVERLAY }}";
var flagOverlayClose = "{{ model.FLAG_OVERLAY_CLOSE }}";
var flagPageBody = "{{ model.FLAG_PAGE_BODY }}";
var flagPhoneNumber = "{{ model.FLAG_PHONE_NUMBER }}";
var flagPostcode = "{{ model.FLAG_POSTCODE }}";
var flagCaptcha = "{{ model.FLAG_CAPTCHA }}";
var flagRightHandSide = "{{ model.FLAG_RIGHT_HAND_SIDE }}";
var flagRow = "{{ model.FLAG_ROW }}";
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
var flagRows = "{{ model.FLAG_ROWS }}";
var flagSave = "{{ model.FLAG_SAVE }}";
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
var flagSlider = "{{ model.FLAG_SLIDER }}";
var flagStatus = "{{ model.FLAG_STATUS }}";
var flagSubmit = "{{ model.FLAG_SUBMIT }}";
var flagSubmitted = "{{ model.FLAG_SUBMITTED }}";
var flagSuccess = "{{ model.FLAG_SUCCESS }}";
var flagTemporaryElement = "{{ model.FLAG_TEMPORARY_ELEMENT }}";
var flagUser = "{{ model.FLAG_USER }}";
var flagWebsite = "{{ model.FLAG_WEBSITE }}";
var hashGetALTCHAChallenge = "{{ model.HASH_ALTCHA_CREATE_CHALLENGE }}";
var hashPageAccessibilityReport = "{{ model.HASH_PAGE_ACCESSIBILITY_REPORT }}";
var hashPageAccessibilityStatement = "{{ model.HASH_PAGE_ACCESSIBILITY_STATEMENT }}";
var hashPageContact = "{{ model.HASH_PAGE_CONTACT }}";
var hashPageContactSuccess = "{{ model.HASH_PAGE_CONTACT_SUCCESS }}";
var hashPageDataRetentionSchedule = "{{ model.HASH_PAGE_DATA_RETENTION_SCHEDULE }}";
var hashPageErrorNoPermission = "{{ model.HASH_PAGE_ERROR_NO_PERMISSION }}";
var hashPageHome = "{{ model.HASH_PAGE_HOME }}";
var hashPageLicense = "{{ model.HASH_PAGE_LICENSE }}";
var hashPagePrivacyPolicy = "{{ model.HASH_PAGE_PRIVACY_POLICY }}";
var idButtonApplyFilters = "#{{ model.ID_BUTTON_APPLY_FILTERS }}";
var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}";
var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}";
var idFormFilters = "#{{ model.ID_FORM_FILTERS }}";
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
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 }}";
var idTextareaConfirm = "#{{ model.ID_TEXTAREA_CONFIRM }}";
var isUserLoggedIn = "{{ model.output_bool(model.IS_USER_LOGGED_IN) }}";
var _pathHost = "{{ model.get_url_host() }}";
var _rowBlank = null;
var titlePageCurrent = "{{ model.title }}";
var _verbose = ("{{ model.app.app_config.DEBUG }}" == "True");
#}
var attrIdAssessment = "{{ model.ATTR_ID_ASSESSMENT }}";
var attrIdAssessmentCommandModalityLink = "{{ model.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK }}";
var attrIdAssessmentResponse = "{{ model.ATTR_ID_ASSESSMENT_RESPONSE }}";
var attrIdAccessLevel = "{{ model.ATTR_ID_ACCESS_LEVEL }}";
var attrIdBribe = "{{ model.ATTR_ID_BRIBE }}";
var attrIdButtonColour = "{{ model.ATTR_ID_BUTTON_COLOUR }}";
var attrIdButtonIcon = "{{ model.ATTR_ID_BUTTON_ICON }}";
var attrIdButtonShape = "{{ model.ATTR_ID_BUTTON_SHAPE }}";
var attrIdColour = "{{ model.ATTR_ID_COLOUR }}";
var attrIdCommand = "{{ model.ATTR_ID_COMMAND }}";
var attrIdCommandButtonLink = "{{ model.ATTR_ID_COMMAND_BUTTON_LINK }}";
var attrIdCommandCategory = "{{ model.ATTR_ID_COMMAND_CATEGORY }}";
var attrIdCommandModality = "{{ model.ATTR_ID_COMMAND_MODALITY }}";
var attrIdCurrency = "{{ model.ATTR_ID_CURRENCY }}";
var attrIdDistraction = "{{ model.ATTR_ID_DISTRACTION }}";
var attrIdDistractionIntensityLevel = "{{ model.ATTR_ID_DISTRACTION_INTENSITY_LEVEL }}";
var attrIdDistractionType = "{{ model.ATTR_ID_DISTRACTION_TYPE }}";
var attrIdDog = "{{ model.ATTR_ID_DOG }}";
var attrIdDogCommandLink = "{{ model.ATTR_ID_DOG_COMMAND_LINK }}";
var attrIdLightingLevel = "{{ model.ATTR_ID_LIGHTING_LEVEL }}";
var attrIdLocation = "{{ model.ATTR_ID_LOCATION }}";
var attrIdObedienceLevel = "{{ model.ATTR_ID_OBEDIENCE_LEVEL }}";
var attrIdResponseQualityMetric = "{{ model.ATTR_ID_RESPONSE_QUALITY_METRIC }}";
var attrIdWeather = "{{ model.ATTR_ID_WEATHER }}";
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 colourAccent = "{{ model.COLOUR_ACCENT }}";
var colourError = "{{ model.COLOUR_ERROR }}";
var colourPageBackground = "{{ model.COLOUR_PAGE_BACKGROUND }}";
var colourPageBackground1 = "{{ model.COLOUR_PAGE_BACKGROUND_1 }}";
var colourPageBackground2 = "{{ model.COLOUR_PAGE_BACKGROUND_2 }}";
var colourPrimary = "{{ model.COLOUR_PRIMARY }}";
var colourSecondary = "{{ model.COLOUR_SECONDARY }}";
var colourText = "{{ model.COLOUR_TEXT }}";
var colourTextBackground = "{{ model.COLOUR_TEXT_BACKGROUND }}";
var colourTextLinkUnvisited = "{{ model.COLOUR_TEXT_LINK_UNVISITED }}";
var colourTextLinkVisited = "{{ model.COLOUR_TEXT_LINK_VISITED }}";
var environment = {
"name": "{{ model.app.app_config.FLASK_ENV }}",
"is_production": "{{ model.app.app_config.is_production | lower }}",
"is_development": "{{ model.app.app_config.is_development | lower }}",
};
var flagAccessLevel = "{{ model.FLAG_ACCESS_LEVEL }}";
var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}";
var flagActive = "{{ model.FLAG_ACTIVE }}";
var flagActiveOnly = "{{ model.FLAG_ACTIVE_ONLY }}";
var flagAdd = "{{ model.FLAG_ADD }}";
var flagAddress = "{{ model.FLAG_ADDRESS }}";
var flagAddressLine1 = "{{ model.FLAG_ADDRESS_LINE_1 }}";
var flagAddressLine2 = "{{ model.FLAG_ADDRESS_LINE_2 }}";
var flagAssessment = "{{ model.FLAG_ASSESSMENT }}";
var flagAssessmentCommandModalityLink = "{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}";
var flagAssessmentResponse = "{{ model.FLAG_ASSESSMENT_RESPONSE }}";
var flagBribe = "{{ model.FLAG_BRIBE }}";
var flagButton = "{{ model.FLAG_BUTTON }}";
var flagButtonIcon = "{{ model.FLAG_BUTTON_ICON }}";
var flagButtonShape = "{{ model.FLAG_BUTTON_SHAPE }}";
var flagButtonPrimary = "{{ model.FLAG_BUTTON_PRIMARY }}";
var flagCallback = "{{ model.FLAG_CALLBACK }}";
var flagCancel = "{{ model.FLAG_CANCEL }}";
var flagCaptcha = "{{ model.FLAG_CAPTCHA }}";
var flagCard = "{{ model.FLAG_CARD }}";
var flagCheckbox = "{{ model.FLAG_CHECKBOX }}";
var flagCity = "{{ model.FLAG_CITY }}";
var flagCloseTemporaryElement = "{{ model.FLAG_CLOSE_TEMPORARY_ELEMENT }}";
var flagCode = "{{ model.FLAG_CODE }}";
var flagCollapsible = "{{ model.FLAG_COLLAPSIBLE }}";
var flagColour = "{{ model.FLAG_COLOUR }}";
var flagColumn = "{{ model.FLAG_COLUMN }}";
var flagCommand = "{{ model.FLAG_COMMAND }}";
var flagCommandButtonLink = "{{ model.FLAG_COMMAND_BUTTON_LINK }}";
var flagCommandCategory = "{{ model.FLAG_COMMAND_CATEGORY }}";
var flagComment = "{{ model.FLAG_COMMENT }}";
var flagContainer = "{{ model.FLAG_CONTAINER }}";
var flagContainerInput = "{{ model.FLAG_CONTAINER_INPUT }}";
var flagCounty = "{{ model.FLAG_COUNTY }}";
var flagCsrfToken = "{{ model.FLAG_CSRF_TOKEN }}";
var flagCurrency = "{{ model.FLAG_CURRENCY }}";
var flagDdlPreview = "{{ model.FLAG_DDL_PREVIEW }}";
var flagDelete = "{{ model.FLAG_DELETE }}";
var flagDescription = "{{ model.FLAG_DESCRIPTION }}";
var flagDetail = "{{ model.FLAG_DETAIL }}";
var flagDialog = "{{ model.FLAG_DIALOG }}";
var flagDirty = "{{ model.FLAG_DIRTY }}";
var flagDisplayOrder = "{{ model.FLAG_DISPLAY_ORDER }}";
var flagDistraction = "{{ model.FLAG_DISTRACTION }}";
var flagDistractionIntensityLevel = "{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }}";
var flagDistractionType = "{{ model.FLAG_DISTRACTION_TYPE }}";
var flagDog = "{{ model.FLAG_DOG }}";
var flagDogDogCommandLink = "{{ model.FLAG_DOG_DOG_COMMAND_LINK }}";
var flagDragging = "dragging";
var flagDragOver = "drag-over";
var flagEdit = "{{ model.FLAG_EDIT }}";
var flagEmail = "{{ model.FLAG_EMAIL }}";
var flagError = "{{ model.FLAG_ERROR }}";
var flagExpanded = "{{ model.FLAG_EXPANDED }}";
var flagFailure = "{{ model.FLAG_FAILURE }}";
var flagFax = "{{ model.FLAG_FAX }}";
var flagFilter = "{{ model.FLAG_FILTER }}";
var flagForm = "{{ model.FLAG_FORM }}";
var flagFormFilters = "{{ model.FLAG_FORM_FILTERS }}";
var flagIcon = "{{ model.FLAG_ICON }}";
var flagImageLogo = "{{ model.FLAG_IMAGE_LOGO }}";
var flagInitialised = "{{ model.FLAG_INITIALISED }}";
var flagIsChecked = "{{ model.FLAG_IS_CHECKED }}";
var flagIsCollapsed = "{{ model.FLAG_IS_COLLAPSED }}";
var flagLeftHandStub = "{{ model.FLAG_LEFT_HAND_STUB }}";
var flagLightingLevel = "{{ model.FLAG_LIGHTING_LEVEL }}";
var flagLocation = "{{ model.FLAG_LOCATION }}";
var flagLocationParent = "{{ model.FLAG_LOCATION_PARENT }}";
var flagLogo = "{{ model.FLAG_LOGO }}";
var flagMessage = "{{ model.FLAG_MESSAGE }}";
var flagModal = "{{ model.FLAG_MODAL }}";
var flagMove = "move";
var flagName = "{{ model.FLAG_NAME }}";
var flagNameAttrOptionText = "{{ model.FLAG_NAME_ATTR_OPTION_TEXT}}";
var flagNameAttrOptionValue = "{{ model.FLAG_NAME_ATTR_OPTION_VALUE }}";
var flagNamePlural = "{{ model.FLAG_NAME_PLURAL }}";
var flagNavAdminHome = "{{ model.FLAG_NAV_ADMIN_HOME }}";
var flagNavContact = "{{ model.FLAG_NAV_CONTACT }}";
var flagNavHome = "{{ model.FLAG_NAV_HOME }}";
var flagNavDogAssessments = "{{ model.FLAG_NAV_DOG_ASSESSMENTS }}";
var flagNavDogButtonIcons = "{{ model.FLAG_NAV_DOG_BUTTON_ICONS }}";
var flagNavDogButtonShapes = "{{ model.FLAG_NAV_DOG_BUTTON_SHAPES }}";
var flagNavDogColour = "{{ model.FLAG_NAV_DOG_COLOUR }}";
var flagNavDogCommandButtonLinks = "{{ model.FLAG_NAV_DOG_COMMAND_BUTTON_LINKS }}";
var flagNavDogCommandCategories = "{{ model.FLAG_NAV_DOG_COMMAND_CATEGORIES }}";
var flagNavDogCommands = "{{ model.FLAG_NAV_DOG_COMMANDS }}";
var flagNavDogDogs = "{{ model.FLAG_NAV_DOG_DOGS }}";
var flagNavDogDogCommandLinks = "{{ model.FLAG_NAV_DOG_DOG_COMMAND_LINKS }}";
var flagNavDogHome = "{{ model.FLAG_NAV_DOG_HOME }}";
var flagNavDogLocations = "{{ model.FLAG_NAV_DOG_LOCATIONS }}";
var flagNavUserAccount = "{{ model.FLAG_NAV_USER_ACCOUNT }}";
var flagNavUserAdmin = "{{ model.FLAG_NAV_USER_ADMIN }}";
var flagNavUserLogin = "{{ model.FLAG_NAV_USER_LOGIN }}";
var flagNavUserLogout = "{{ model.FLAG_NAV_USER_LOGOUT }}";
var flagNotes = "{{ model.FLAG_NOTES }}";
var flagObedienceLevel = "{{ model.FLAG_OBEDIENCE_LEVEL }}";
var flagOverlay = "{{ model.FLAG_OVERLAY }}";
var flagOverlayClose = "{{ model.FLAG_OVERLAY_CLOSE }}";
var flagPageBody = "{{ model.FLAG_PAGE_BODY }}";
var flagPhoneNumber = "{{ model.FLAG_PHONE_NUMBER }}";
var flagPostcode = "{{ model.FLAG_POSTCODE }}";
var flagQuantity = "{{ model.FLAG_QUANTITY }}";
var flagResponseQualityMetric = "{{ model.FLAG_RESPONSE_QUALITY_METRIC }}";
var flagRightHandSide = "{{ model.FLAG_RIGHT_HAND_SIDE }}";
var flagRow = "{{ model.FLAG_ROW }}";
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
var flagRows = "{{ model.FLAG_ROWS }}";
var flagSave = "{{ model.FLAG_SAVE }}";
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
var flagSearch = "{{ model.FLAG_SEARCH }}";
var flagSlider = "{{ model.FLAG_SLIDER }}";
var flagStatus = "{{ model.FLAG_STATUS }}";
var flagSubmit = "{{ model.FLAG_SUBMIT }}";
var flagSubmitted = "{{ model.FLAG_SUBMITTED }}";
var flagSuccess = "{{ model.FLAG_SUCCESS }}";
var flagTableMain = "{{ model.FLAG_TABLE_MAIN }}";
var flagTemporaryElement = "{{ model.FLAG_TEMPORARY_ELEMENT }}";
var flagUser = "{{ model.FLAG_USER }}";
var flagWeather = "{{ model.FLAG_WEATHER }}";
var flagWebsite = "{{ model.FLAG_WEBSITE }}";
var hashGetALTCHAChallenge = "{{ model.HASH_ALTCHA_CREATE_CHALLENGE }}";
var hashPageAccessibilityReport = "{{ model.HASH_PAGE_ACCESSIBILITY_REPORT }}";
var hashPageAccessibilityStatement = "{{ model.HASH_PAGE_ACCESSIBILITY_STATEMENT }}";
var hashPageAdminHome = "{{ model.HASH_PAGE_ADMIN_HOME }}";
var hashPageContact = "{{ model.HASH_PAGE_CONTACT }}";
var hashPageContactSuccess = "{{ model.HASH_PAGE_CONTACT_SUCCESS }}";
var hashPageDataRetentionSchedule = "{{ model.HASH_PAGE_DATA_RETENTION_SCHEDULE }}";
var hashPageDogAssessment = "{{ model.HASH_PAGE_DOG_ASSESSMENT }}";
var hashPageDogAssessments = "{{ model.HASH_PAGE_DOG_ASSESSMENTS }}";
var hashPageDogButtonIcons = "{{ model.HASH_PAGE_DOG_BUTTON_ICONS }}";
var hashPageDogButtonShapes = "{{ model.HASH_PAGE_DOG_BUTTON_SHAPES }}";
var hashPageDogColours = "{{ model.HASH_PAGE_DOG_COLOURS }}";
var hashPageDogCommandButtonLinks = "{{ model.HASH_PAGE_DOG_COMMAND_BUTTON_LINKS }}";
var hashPageDogCommandCategories = "{{ model.HASH_PAGE_DOG_COMMAND_CATEGORIES }}";
var hashPageDogCommands = "{{ model.HASH_PAGE_DOG_COMMANDS }}";
var hashPageDogDogCommandLinks = "{{ model.HASH_PAGE_DOG_DOG_COMMAND_LINKS }}";
var hashPageDogDogs = "{{ model.HASH_PAGE_DOG_DOGS }}";
var hashPageDogHome = "{{ model.HASH_PAGE_DOG_HOME }}";
var hashPageDogLocations = "{{ model.HASH_PAGE_DOG_LOCATIONS }}";
var hashPageErrorNoPermission = "{{ model.HASH_PAGE_ERROR_NO_PERMISSION }}";
var hashPageHome = "{{ model.HASH_PAGE_HOME }}";
var hashPageLicense = "{{ model.HASH_PAGE_LICENSE }}";
var hashPagePrivacyPolicy = "{{ model.HASH_PAGE_PRIVACY_POLICY }}";
var hashPageUserAccount = "{{ model.HASH_PAGE_USER_ACCOUNT }}";
var hashPageUserAdmin = "{{ model.HASH_PAGE_USER_ADMIN }}";
var hashPageUserLogin = "{{ model.HASH_PAGE_USER_LOGIN }}";
var hashPageUserLogout = "{{ model.HASH_PAGE_USER_LOGOUT }}";
{# var hashSaveDogAssessment = "{{ model.HASH_SAVE_DOG_ASSESSMENT }}"; #}
var hashSaveDogAssessmentDistractionAndResponse = "{{ model.HASH_SAVE_DOG_ASSESSMENT_DISTRACTION_AND_RESPONSE }}";
var hashSaveDogButtonIcon = "{{ model.HASH_SAVE_DOG_BUTTON_ICON }}";
var hashSaveDogButtonShape = "{{ model.HASH_SAVE_DOG_BUTTON_SHAPE }}";
var hashSaveDogColour = "{{ model.HASH_SAVE_DOG_COLOUR }}";
var hashSaveDogCommand = "{{ model.HASH_SAVE_DOG_COMMAND }}";
var hashSaveDogCommandButtonLink = "{{ model.HASH_SAVE_DOG_COMMAND_BUTTON_LINK }}";
var hashSaveDogCommandCategory = "{{ model.HASH_SAVE_DOG_COMMAND_CATEGORY }}";
var hashSaveDogDogCommandLink = "{{ model.HASH_SAVE_DOG_DOG_COMMAND_LINK }}";
var hashSaveDogLocation = "{{ model.HASH_SAVE_DOG_LOCATION }}";
var idButtonApplyFilters = "#{{ model.ID_BUTTON_APPLY_FILTERS }}";
var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}";
var idButtonCancel = "#{{ model.ID_BUTTON_CANCEL }}";
var idButtonSave = "#{{ model.ID_BUTTON_SAVE }}";
var idContainerTemplateElements = "#{{ model.ID_CONTAINER_TEMPLATE_ELEMENTS }}";
var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}";
var idFormFilters = "#{{ model.ID_FORM_FILTERS }}";
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
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 }}";
var idTextareaConfirm = "#{{ model.ID_TEXTAREA_CONFIRM }}";
var isUserLoggedIn = "{{ model.output_bool(model.IS_USER_LOGGED_IN) }}";
var _pathHost = "{{ model.get_url_host() }}";
var _rowBlank = null;
var titlePageCurrent = "{{ model.title }}";
var _verbose = ("{{ model.app.app_config.DEBUG }}" == "True");
</script>
<link rel="preload" as="style" href="{{ url_for('static', filename='dist/css/main.bundle.css') }}" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="{{ url_for('static', filename='dist/css/main.bundle.css') }}"></noscript>
@@ -474,7 +122,8 @@
</div>
</div>
</footer>
{% include 'layouts/_shared.html' %}
<script src="{{ url_for('static', filename='dist/js/main.bundle.js') }}"></script>
</body>
</html>

View File

@@ -13,7 +13,7 @@
"@type": "ProfessionalService",
"name": "Dog Training",
"url": "{{ model.get_url_host() }}",
"logo": "{{ model.get_url_host() }}{{ url_for('static', filename='images/Wisp_LQ.webp') }}",
"logo": "{{ model.get_url_host() }}{{ url_for('static', filename='images/fetch-metrics-logo-LQ.webp') }}",
"description": "Fetch Metrics - Professional dog training management software for UK trainers. Manage clients, track training sessions, monitor progress, and engage dog owners with our comprehensive SaaS platform. Starting from £15/month.",
"address": {
"@type": "PostalAddress",
@@ -37,230 +37,6 @@
<meta name="yandex-verification" content="f3c1a9bc28976419" /> <!-- fetchmetrics.co.uk -->
<meta id="{{ model.ID_CSRF_TOKEN }}" name="{{ model.FLAG_CSRF_TOKEN }}" content="{{ csrf_token() }}" />
<script>
var attrIdAssessment = "{{ model.ATTR_ID_ASSESSMENT }}";
var attrIdAssessmentCommandModalityLink = "{{ model.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK }}";
var attrIdAssessmentResponse = "{{ model.ATTR_ID_ASSESSMENT_RESPONSE }}";
var attrIdAccessLevel = "{{ model.ATTR_ID_ACCESS_LEVEL }}";
var attrIdBribe = "{{ model.ATTR_ID_BRIBE }}";
var attrIdButtonColour = "{{ model.ATTR_ID_BUTTON_COLOUR }}";
var attrIdButtonIcon = "{{ model.ATTR_ID_BUTTON_ICON }}";
var attrIdButtonShape = "{{ model.ATTR_ID_BUTTON_SHAPE }}";
var attrIdColour = "{{ model.ATTR_ID_COLOUR }}";
var attrIdCommand = "{{ model.ATTR_ID_COMMAND }}";
var attrIdCommandButtonLink = "{{ model.ATTR_ID_COMMAND_BUTTON_LINK }}";
var attrIdCommandCategory = "{{ model.ATTR_ID_COMMAND_CATEGORY }}";
var attrIdCommandModality = "{{ model.ATTR_ID_COMMAND_MODALITY }}";
var attrIdCurrency = "{{ model.ATTR_ID_CURRENCY }}";
var attrIdDistraction = "{{ model.ATTR_ID_DISTRACTION }}";
var attrIdDistractionIntensityLevel = "{{ model.ATTR_ID_DISTRACTION_INTENSITY_LEVEL }}";
var attrIdDistractionType = "{{ model.ATTR_ID_DISTRACTION_TYPE }}";
var attrIdDog = "{{ model.ATTR_ID_DOG }}";
var attrIdDogCommandLink = "{{ model.ATTR_ID_DOG_COMMAND_LINK }}";
var attrIdLightingLevel = "{{ model.ATTR_ID_LIGHTING_LEVEL }}";
var attrIdLocation = "{{ model.ATTR_ID_LOCATION }}";
var attrIdObedienceLevel = "{{ model.ATTR_ID_OBEDIENCE_LEVEL }}";
var attrIdResponseQualityMetric = "{{ model.ATTR_ID_RESPONSE_QUALITY_METRIC }}";
var attrIdWeather = "{{ model.ATTR_ID_WEATHER }}";
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 colourAccent = "{{ model.COLOUR_ACCENT }}";
var colourError = "{{ model.COLOUR_ERROR }}";
var colourPageBackground = "{{ model.COLOUR_PAGE_BACKGROUND }}";
var colourPageBackground1 = "{{ model.COLOUR_PAGE_BACKGROUND_1 }}";
var colourPageBackground2 = "{{ model.COLOUR_PAGE_BACKGROUND_2 }}";
var colourPrimary = "{{ model.COLOUR_PRIMARY }}";
var colourSecondary = "{{ model.COLOUR_SECONDARY }}";
var colourText = "{{ model.COLOUR_TEXT }}";
var colourTextBackground = "{{ model.COLOUR_TEXT_BACKGROUND }}";
var colourTextLinkUnvisited = "{{ model.COLOUR_TEXT_LINK_UNVISITED }}";
var colourTextLinkVisited = "{{ model.COLOUR_TEXT_LINK_VISITED }}";
var environment = {
"name": "{{ model.app.app_config.FLASK_ENV }}",
"is_production": "{{ model.app.app_config.is_production | lower }}",
"is_development": "{{ model.app.app_config.is_development | lower }}",
};
var flagAccessLevel = "{{ model.FLAG_ACCESS_LEVEL }}";
var flagAccessLevelRequired = "{{ model.FLAG_ACCESS_LEVEL_REQUIRED }}";
var flagActive = "{{ model.FLAG_ACTIVE }}";
var flagActiveOnly = "{{ model.FLAG_ACTIVE_ONLY }}";
var flagAdd = "{{ model.FLAG_ADD }}";
var flagAddress = "{{ model.FLAG_ADDRESS }}";
var flagAddressLine1 = "{{ model.FLAG_ADDRESS_LINE_1 }}";
var flagAddressLine2 = "{{ model.FLAG_ADDRESS_LINE_2 }}";
var flagAssessment = "{{ model.FLAG_ASSESSMENT }}";
var flagAssessmentCommandModalityLink = "{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}";
var flagAssessmentResponse = "{{ model.FLAG_ASSESSMENT_RESPONSE }}";
var flagBribe = "{{ model.FLAG_BRIBE }}";
var flagButton = "{{ model.FLAG_BUTTON }}";
var flagButtonIcon = "{{ model.FLAG_BUTTON_ICON }}";
var flagButtonShape = "{{ model.FLAG_BUTTON_SHAPE }}";
var flagButtonPrimary = "{{ model.FLAG_BUTTON_PRIMARY }}";
var flagCallback = "{{ model.FLAG_CALLBACK }}";
var flagCancel = "{{ model.FLAG_CANCEL }}";
var flagCaptcha = "{{ model.FLAG_CAPTCHA }}";
var flagCard = "{{ model.FLAG_CARD }}";
var flagCheckbox = "{{ model.FLAG_CHECKBOX }}";
var flagCity = "{{ model.FLAG_CITY }}";
var flagCloseTemporaryElement = "{{ model.FLAG_CLOSE_TEMPORARY_ELEMENT }}";
var flagCode = "{{ model.FLAG_CODE }}";
var flagCollapsible = "{{ model.FLAG_COLLAPSIBLE }}";
var flagColour = "{{ model.FLAG_COLOUR }}";
var flagColumn = "{{ model.FLAG_COLUMN }}";
var flagCommand = "{{ model.FLAG_COMMAND }}";
var flagCommandButtonLink = "{{ model.FLAG_COMMAND_BUTTON_LINK }}";
var flagCommandCategory = "{{ model.FLAG_COMMAND_CATEGORY }}";
var flagComment = "{{ model.FLAG_COMMENT }}";
var flagContainer = "{{ model.FLAG_CONTAINER }}";
var flagContainerInput = "{{ model.FLAG_CONTAINER_INPUT }}";
var flagCounty = "{{ model.FLAG_COUNTY }}";
var flagCsrfToken = "{{ model.FLAG_CSRF_TOKEN }}";
var flagCurrency = "{{ model.FLAG_CURRENCY }}";
var flagDdlPreview = "{{ model.FLAG_DDL_PREVIEW }}";
var flagDelete = "{{ model.FLAG_DELETE }}";
var flagDescription = "{{ model.FLAG_DESCRIPTION }}";
var flagDetail = "{{ model.FLAG_DETAIL }}";
var flagDialog = "{{ model.FLAG_DIALOG }}";
var flagDirty = "{{ model.FLAG_DIRTY }}";
var flagDisplayOrder = "{{ model.FLAG_DISPLAY_ORDER }}";
var flagDistraction = "{{ model.FLAG_DISTRACTION }}";
var flagDistractionIntensityLevel = "{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }}";
var flagDistractionType = "{{ model.FLAG_DISTRACTION_TYPE }}";
var flagDog = "{{ model.FLAG_DOG }}";
var flagDogDogCommandLink = "{{ model.FLAG_DOG_DOG_COMMAND_LINK }}";
var flagDragging = "dragging";
var flagDragOver = "drag-over";
var flagEdit = "{{ model.FLAG_EDIT }}";
var flagEmail = "{{ model.FLAG_EMAIL }}";
var flagError = "{{ model.FLAG_ERROR }}";
var flagExpanded = "{{ model.FLAG_EXPANDED }}";
var flagFailure = "{{ model.FLAG_FAILURE }}";
var flagFax = "{{ model.FLAG_FAX }}";
var flagFilter = "{{ model.FLAG_FILTER }}";
var flagForm = "{{ model.FLAG_FORM }}";
var flagFormFilters = "{{ model.FLAG_FORM_FILTERS }}";
var flagIcon = "{{ model.FLAG_ICON }}";
var flagImageLogo = "{{ model.FLAG_IMAGE_LOGO }}";
var flagInitialised = "{{ model.FLAG_INITIALISED }}";
var flagIsChecked = "{{ model.FLAG_IS_CHECKED }}";
var flagIsCollapsed = "{{ model.FLAG_IS_COLLAPSED }}";
var flagLeftHandStub = "{{ model.FLAG_LEFT_HAND_STUB }}";
var flagLightingLevel = "{{ model.FLAG_LIGHTING_LEVEL }}";
var flagLocation = "{{ model.FLAG_LOCATION }}";
var flagLocationParent = "{{ model.FLAG_LOCATION_PARENT }}";
var flagLogo = "{{ model.FLAG_LOGO }}";
var flagMessage = "{{ model.FLAG_MESSAGE }}";
var flagModal = "{{ model.FLAG_MODAL }}";
var flagMove = "move";
var flagName = "{{ model.FLAG_NAME }}";
var flagNameAttrOptionText = "{{ model.FLAG_NAME_ATTR_OPTION_TEXT}}";
var flagNameAttrOptionValue = "{{ model.FLAG_NAME_ATTR_OPTION_VALUE }}";
var flagNamePlural = "{{ model.FLAG_NAME_PLURAL }}";
var flagNavAdminHome = "{{ model.FLAG_NAV_ADMIN_HOME }}";
var flagNavContact = "{{ model.FLAG_NAV_CONTACT }}";
var flagNavHome = "{{ model.FLAG_NAV_HOME }}";
var flagNavDogAssessments = "{{ model.FLAG_NAV_DOG_ASSESSMENTS }}";
var flagNavDogButtonIcons = "{{ model.FLAG_NAV_DOG_BUTTON_ICONS }}";
var flagNavDogButtonShapes = "{{ model.FLAG_NAV_DOG_BUTTON_SHAPES }}";
var flagNavDogColour = "{{ model.FLAG_NAV_DOG_COLOUR }}";
var flagNavDogCommandButtonLinks = "{{ model.FLAG_NAV_DOG_COMMAND_BUTTON_LINKS }}";
var flagNavDogCommandCategories = "{{ model.FLAG_NAV_DOG_COMMAND_CATEGORIES }}";
var flagNavDogCommands = "{{ model.FLAG_NAV_DOG_COMMANDS }}";
var flagNavDogDogs = "{{ model.FLAG_NAV_DOG_DOGS }}";
var flagNavDogDogCommandLinks = "{{ model.FLAG_NAV_DOG_DOG_COMMAND_LINKS }}";
var flagNavDogHome = "{{ model.FLAG_NAV_DOG_HOME }}";
var flagNavDogLocations = "{{ model.FLAG_NAV_DOG_LOCATIONS }}";
var flagNavUserAccount = "{{ model.FLAG_NAV_USER_ACCOUNT }}";
var flagNavUserAdmin = "{{ model.FLAG_NAV_USER_ADMIN }}";
var flagNavUserLogin = "{{ model.FLAG_NAV_USER_LOGIN }}";
var flagNavUserLogout = "{{ model.FLAG_NAV_USER_LOGOUT }}";
var flagNotes = "{{ model.FLAG_NOTES }}";
var flagObedienceLevel = "{{ model.FLAG_OBEDIENCE_LEVEL }}";
var flagOverlay = "{{ model.FLAG_OVERLAY }}";
var flagOverlayClose = "{{ model.FLAG_OVERLAY_CLOSE }}";
var flagPageBody = "{{ model.FLAG_PAGE_BODY }}";
var flagPhoneNumber = "{{ model.FLAG_PHONE_NUMBER }}";
var flagPostcode = "{{ model.FLAG_POSTCODE }}";
var flagQuantity = "{{ model.FLAG_QUANTITY }}";
var flagResponseQualityMetric = "{{ model.FLAG_RESPONSE_QUALITY_METRIC }}";
var flagRightHandSide = "{{ model.FLAG_RIGHT_HAND_SIDE }}";
var flagRow = "{{ model.FLAG_ROW }}";
var flagRowNew = "{{ model.FLAG_ROW_NEW }}";
var flagRows = "{{ model.FLAG_ROWS }}";
var flagSave = "{{ model.FLAG_SAVE }}";
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
var flagSearch = "{{ model.FLAG_SEARCH }}";
var flagSlider = "{{ model.FLAG_SLIDER }}";
var flagStatus = "{{ model.FLAG_STATUS }}";
var flagSubmit = "{{ model.FLAG_SUBMIT }}";
var flagSubmitted = "{{ model.FLAG_SUBMITTED }}";
var flagSuccess = "{{ model.FLAG_SUCCESS }}";
var flagTableMain = "{{ model.FLAG_TABLE_MAIN }}";
var flagTemporaryElement = "{{ model.FLAG_TEMPORARY_ELEMENT }}";
var flagUser = "{{ model.FLAG_USER }}";
var flagWeather = "{{ model.FLAG_WEATHER }}";
var flagWebsite = "{{ model.FLAG_WEBSITE }}";
var hashGetALTCHAChallenge = "{{ model.HASH_ALTCHA_CREATE_CHALLENGE }}";
var hashPageAccessibilityReport = "{{ model.HASH_PAGE_ACCESSIBILITY_REPORT }}";
var hashPageAccessibilityStatement = "{{ model.HASH_PAGE_ACCESSIBILITY_STATEMENT }}";
var hashPageAdminHome = "{{ model.HASH_PAGE_ADMIN_HOME }}";
var hashPageContact = "{{ model.HASH_PAGE_CONTACT }}";
var hashPageContactSuccess = "{{ model.HASH_PAGE_CONTACT_SUCCESS }}";
var hashPageDataRetentionSchedule = "{{ model.HASH_PAGE_DATA_RETENTION_SCHEDULE }}";
var hashPageDogAssessment = "{{ model.HASH_PAGE_DOG_ASSESSMENT }}";
var hashPageDogAssessments = "{{ model.HASH_PAGE_DOG_ASSESSMENTS }}";
var hashPageDogButtonIcons = "{{ model.HASH_PAGE_DOG_BUTTON_ICONS }}";
var hashPageDogButtonShapes = "{{ model.HASH_PAGE_DOG_BUTTON_SHAPES }}";
var hashPageDogColours = "{{ model.HASH_PAGE_DOG_COLOURS }}";
var hashPageDogCommandButtonLinks = "{{ model.HASH_PAGE_DOG_COMMAND_BUTTON_LINKS }}";
var hashPageDogCommandCategories = "{{ model.HASH_PAGE_DOG_COMMAND_CATEGORIES }}";
var hashPageDogCommands = "{{ model.HASH_PAGE_DOG_COMMANDS }}";
var hashPageDogDogCommandLinks = "{{ model.HASH_PAGE_DOG_DOG_COMMAND_LINKS }}";
var hashPageDogDogs = "{{ model.HASH_PAGE_DOG_DOGS }}";
var hashPageDogHome = "{{ model.HASH_PAGE_DOG_HOME }}";
var hashPageDogLocations = "{{ model.HASH_PAGE_DOG_LOCATIONS }}";
var hashPageErrorNoPermission = "{{ model.HASH_PAGE_ERROR_NO_PERMISSION }}";
var hashPageHome = "{{ model.HASH_PAGE_HOME }}";
var hashPageLicense = "{{ model.HASH_PAGE_LICENSE }}";
var hashPagePrivacyPolicy = "{{ model.HASH_PAGE_PRIVACY_POLICY }}";
var hashPageUserAccount = "{{ model.HASH_PAGE_USER_ACCOUNT }}";
var hashPageUserAdmin = "{{ model.HASH_PAGE_USER_ADMIN }}";
var hashPageUserLogin = "{{ model.HASH_PAGE_USER_LOGIN }}";
var hashPageUserLogout = "{{ model.HASH_PAGE_USER_LOGOUT }}";
{# var hashSaveDogAssessment = "{{ model.HASH_SAVE_DOG_ASSESSMENT }}"; #}
var hashSaveDogAssessmentDistractionAndResponse = "{{ model.HASH_SAVE_DOG_ASSESSMENT_DISTRACTION_AND_RESPONSE }}";
var hashSaveDogButtonIcon = "{{ model.HASH_SAVE_DOG_BUTTON_ICON }}";
var hashSaveDogButtonShape = "{{ model.HASH_SAVE_DOG_BUTTON_SHAPE }}";
var hashSaveDogColour = "{{ model.HASH_SAVE_DOG_COLOUR }}";
var hashSaveDogCommand = "{{ model.HASH_SAVE_DOG_COMMAND }}";
var hashSaveDogCommandButtonLink = "{{ model.HASH_SAVE_DOG_COMMAND_BUTTON_LINK }}";
var hashSaveDogCommandCategory = "{{ model.HASH_SAVE_DOG_COMMAND_CATEGORY }}";
var hashSaveDogDogCommandLink = "{{ model.HASH_SAVE_DOG_DOG_COMMAND_LINK }}";
var hashSaveDogLocation = "{{ model.HASH_SAVE_DOG_LOCATION }}";
var idButtonApplyFilters = "#{{ model.ID_BUTTON_APPLY_FILTERS }}";
var idButtonHamburger = "#{{ model.ID_BUTTON_HAMBURGER }}";
var idButtonCancel = "#{{ model.ID_BUTTON_CANCEL }}";
var idButtonSave = "#{{ model.ID_BUTTON_SAVE }}";
var idContainerTemplateElements = "#{{ model.ID_CONTAINER_TEMPLATE_ELEMENTS }}";
var idCSRFToken = "#{{ model.ID_CSRF_TOKEN }}";
var idFormFilters = "#{{ model.ID_FORM_FILTERS }}";
var idLabelError = "#{{ model.ID_LABEL_ERROR }}";
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 }}";
var idTextareaConfirm = "#{{ model.ID_TEXTAREA_CONFIRM }}";
var isUserLoggedIn = "{{ model.output_bool(model.IS_USER_LOGGED_IN) }}";
var _pathHost = "{{ model.get_url_host() }}";
var _rowBlank = null;
var titlePageCurrent = "{{ model.title }}";
var _verbose = ("{{ model.app.app_config.DEBUG }}" == "True");
</script>
<link rel="preload" as="style" href="{{ url_for('static', filename='dist/css/main.bundle.css') }}" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="{{ url_for('static', filename='dist/css/main.bundle.css') }}"></noscript>
@@ -281,11 +57,11 @@
</header>
-->
<div class="topnav">
<div class="{{ model.FLAG_CONTAINER }} header-logo"> <!-- style="width: 18vw; min-width: 18vw; max-width: 20vw;" -->
<img class="header-logo" src="{{ url_for('static', filename='images/fetch-metrics-logo-LQ.webp') }}" alt="Fetch Metrics logo" aria-label="Fetch Metrics logo" tabindex="0"> <!-- 'images/Wisp_LQ.webp' -->
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_LOGO }}"> <!-- style="width: 18vw; min-width: 18vw; max-width: 20vw;" -->
<img class="{{ model.FLAG_LOGO }}" src="{{ url_for('static', filename='images/fetch-metrics-logo-and-company-name-radial-0.5-link-visited-LQ.webp') }}" alt="Fetch Metrics logo" aria-label="Fetch Metrics logo" tabindex="0"> <!-- 'images/Wisp_LQ.webp' -->
</div>
<div class="{{ model.FLAG_CONTAINER }} company-name"> <!-- style="width: 75vw; min-width: 65vw; max-width: 80vw;" -->
<h1 class="company-name">{{ model.NAME_COMPANY_SHORT }} - {{ model.title }}</h1>
<h1 class="company-name">{{ model.title }}</h1> {# {{ model.NAME_COMPANY_SHORT }} - #}
</div>
{#
<div class="{{ model.FLAG_CONTAINER }}"> <!-- style="width: 7vw; min-width: 7vw; max-width: 15vw; justify-content: flex-end; " padding-left: 25%; -->
@@ -331,14 +107,16 @@
<!-- Footer -->
<div class="footer">
<h4>Copyright &copy; {{ model.NAME_COMPANY }}. <a href="{{ url_for('routes_legal.license') }}" alt="License" aria-label="License">All rights reserved.</a></h4>
<h5>Company number 13587499</h5>
<h4>Copyright &copy; {{ model.NAME_COMPANY }}. <a href="{{ url_for('routes_legal.license') }}" alt="License" aria-label="License">All rights reserved.</a> Company number 13587499</h4>
{# <h5>Company number 13587499</h5> #}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}"><p><a href="{{ url_for('routes_legal.accessibility_statement') }}" alt="Accessibility statement" aria-label="Accessibility statement">Accessibility statement</a></p></div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}"><p><a href="{{ url_for('routes_legal.privacy_policy') }}" alt="Privacy notice" aria-label="Privacy notice">Privacy notice</a></p></div>
</div>
</div>
{% include 'layouts/_shared.html' %}
{% include 'layouts/_shared_dog.html' %}
<script src="{{ url_for('static', filename='dist/js/main.bundle.js') }}"></script>
</body>
</html>

View File

@@ -1,20 +0,0 @@
<!-- v2a -->
{% extends 'layouts/layout.html' %}
{% block page_body %}
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/core_home.bundle.css') }}">
<div class="home-hero">
<h2 class="home-hero-title">Dog Training!</h2>
{% if not model.user.get_is_logged_in() %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a class="{{ model.FLAG_NAV_USER_LOGIN }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Login</a>
</div>
{% elif True or model.user.can_admin_dog %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a class="{{ model.FLAG_NAV_DOG_HOME }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Dog Home</a>
</div>
{% endif %}
</div>
{% endblock %}

View File

@@ -2,6 +2,7 @@
{% block page_head %}
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/core_contact.bundle.css') }}">
{% include 'layouts/_shared_project_hub.html' %}
{% endblock %}
{% block page_nav_links %}

View File

@@ -2,6 +2,7 @@
{% block page_head %}
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/core_contact.bundle.css') }}">
{% include 'layouts/_shared_project_hub.html' %}
{% endblock %}
{% block page_nav_links %}

View File

@@ -8,33 +8,35 @@
{% endblock %}
{% block page_nav_links %}
<a href="#{{ model.FLAG_BENEFITS }}">Benefits</a>
<a href="#{{ model.FLAG_PROBLEM }}">Problem</a>
<a href="#{{ model.FLAG_SOLUTION }}">Solution</a>
<a href="#{{ model.FLAG_EARLY_ACCESS }}">Early Access</a>
<!-- <a href="#{{ model.FLAG_SOCIAL_PROOF }}">Social Proof</a>
<a href="#{{ model.FLAG_FEATURES }}">Features</a>
<a href="#{{ model.FLAG_FAQ }}">FAQs</a> -->
<a href="#{{ model.FLAG_PROBLEM }}">Problem</a>
<a href="#{{ model.FLAG_BENEFITS }}">Benefits</a>
<a href="#{{ model.FLAG_SOLUTION }}">Solution</a>
<a href="#{{ model.FLAG_SOCIAL_PROOF }}">Social Proof</a>
<a href="#{{ model.FLAG_TESTIMONIAL }}">Testimonial</a>
<a href="#{{ model.FLAG_EARLY_ACCESS }}">Early Access</a>
<!-- <a href="#{{ model.FLAG_FEATURES }}">Features</a>
<a href="#{{ model.FLAG_FAQ }}">FAQs</a> -->
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Contact Us</a>
{% endblock %}
{% block page_body %}
<section class="hero">
<div class="container">
<div class="{{ model.FLAG_CONTAINER }}">
<div class="hero-content" data-aos="fade-up">
<h1>Transform Your Dog Training Business with Smart Progress Tracking</h1>
<p>The first UK-built platform designed specifically for professional dog trainers. Track progress, measure success, and keep clients engaged like never before.</p>
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">NOW AVAILABLE</a>
<h1>Finally, Professional Software Built for Dog Trainers</h1>
<p>Stop losing track of client progress and spending hours on admin. Fetch Metrics helps you track every command, demonstrate real results, and keep clients engaged.</p>
<!-- <a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Get Early Access</a>
<p>Join forward-thinking trainers across the UK who are revolutionising how they manage their business.</p> -->
<!-- <a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Watch 2-Minute Demo</a> -->
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Join the Waitlist</a>
</div>
</div>
</section>
<!--
<section id="{{ model.FLAG_BENEFITS }}" class="{{ model.FLAG_BENEFITS }}">
<div class="container">
<h2 class="section-title text-center">Finally, Software That Understands Dog Training</h2> <!-- Finally, A System That Speaks Your Language -->
<h2 class="section-title text-center">Finally, Software That Understands Dog Training</h2> < !-- Finally, A System That Speaks Your Language -- >
<p class="section-subtitle text-center">Running a successful dog training business shouldn't mean drowning in paperwork or losing track of client progress. Fetch Metrics brings clarity to every session, ensuring both you and your clients stay perfectly synchronized.</p>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_BENEFITS }}">
@@ -47,44 +49,119 @@
</div>
</div>
</section>
-->
<section id="{{ model.FLAG_PROBLEM }}" class="{{ model.FLAG_PROBLEM }}">
<div class="container">
<h2 class="section-title text-center">Sound Familiar?</h2>
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title text-center">Tired of This Daily Struggle?</h2>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_PROBLEM }}">
<p class="section-subtitle text-center">Pain Points:</p>
<ul>
<li>Spending hours on admin instead of training</li>
<li>Clients forgetting commands between sessions</li>
<li>No clear way to show progress over time</li>
<li>Different trainers or pets using different signals</li>
<li>Lost notes and forgotten homework</li>
<li><strong>😤 Endless paperwork</strong> - Spending more time on admin than actual training</li>
<li><strong>😤 Lost progress tracking</strong> - No clear way to show clients how their dog is improving</li>
<li><strong>😤 Inconsistent training</strong> - Different commands and signals across sessions</li>
<li><strong>😤 Client frustration</strong> - Owners forgetting what was covered last week</li>
<li><strong>😤 No professional reports</strong> - Struggling to justify your rates with hard data</li>
</ul>
<!--
<p>You became a dog trainer to work with animals and help families - not to be a data entry clerk. Yet successful trainers tell us they spend more time on administration than actual training.</p>
-->
<p>Fetch Metrics solves these challenges with purpose-built tools that streamline your workflow and enhance client results. Spend less time on paperwork and more time doing what you love.</p>
<p><strong>You became a dog trainer to work with animals, not spreadsheets.</strong></p>
</div>
</div>
</section>
<section id="{{ model.FLAG_BENEFITS }}" class="{{ model.FLAG_BENEFITS }}">
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title text-center">What If You Could...</h2>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_BENEFITS }}">
<div class="{{ model.FLAG_CONTAINER }}">
<h3>📊 Track Real Progress</h3>
<p>Document every breakthrough with detailed performance tracking. See exactly how each command improves over time with response rates, latency, and compliance scores.</p>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h3>🎯 Keep Everyone Consistent</h3>
<p>Standardised commands and signals across all trainers. No more confusion - everyone uses the same approach for faster results.</p>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h3>📈 Generate Professional Reports</h3>
<p>Show clients stunning progress charts and radar diagrams. Prove your value with data that demonstrates real improvement.</p>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h3>⏰ Save Hours Weekly</h3>
<p>Streamlined session notes, automated progress tracking, and instant report generation. Spend time training, not on paperwork.</p>
</div>
</div>
</div>
</section>
<section id="{{ model.FLAG_SOLUTION }}" class="{{ model.FLAG_SOLUTION }}">
<div class="container">
<h2 class="section-title text-center">Simple to Start, Powerful in Practice</h2>
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title text-center">See It In Action</h2>
<p class="section-subtitle text-center">This isn't vaporware - we've built a working system that professional trainers are already using:</p>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_SOLUTION }}">
<ul>
<li><strong>1. Set Up Your Business:</strong> Add your trainers, create client profiles, and customise your training programmes in minutes.</li>
<li><strong>2. Track Every Session:</strong> Record progress, document breakthroughs, and maintain consistency across all trainers and clients.</li>
<li><strong>3. Engage Your Clients:</strong> Give owners access to their dog's journey, including command reminders and homework assignments.</li>
<li><strong>4. Showcase Success:</strong> Generate professional reports that demonstrate progress and justify your expertise.</li>
</ul>
<div class="{{ model.FLAG_CONTAINER }}">
<h3>📝 Command Management</h3>
<p>Customise commands, categories, and signals for your training style</p>
<div class="project-thumbnail">
<img src="{{ url_for('static', filename='images/fetch-metrics-page-commands.webp') }}" alt="Command Management" aria-label="Command Management">
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h3>📊 Assessment Tracking</h3>
<p>Record distractions, environments, response times, and success rates</p>
<div class="project-thumbnail">
<img src="{{ url_for('static', filename='images/fetch-metrics-page-assessment.webp') }}" alt="Assessment Tracking" aria-label="Assessment Tracking">
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h3>🎯 Progress Visualisation</h3>
<p>Radar charts showing command mastery and improvement over time</p>
<div class="project-thumbnail">
<img src="{{ url_for('static', filename='images/fetch-metrics-report-radar-command-mastery.webp') }}" alt="Progress Visualisation" aria-label="Progress Visualisation">
</div>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h3>📈 Performance Analytics</h3>
<p>Line charts tracking response latency and compliance duration</p>
<div class="project-thumbnail">
<img src="{{ url_for('static', filename='images/fetch-metrics-report-line-command-progress.webp') }}" alt="Performance Analytics" aria-label="Performance Analytics">
</div>
</div>
</div>
</div>
</section>
<section id="{{ model.FLAG_SOCIAL_PROOF }}" class="{{ model.FLAG_SOCIAL_PROOF }}">
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title text-center">Built for UK Trainers, By UK Trainers</h2>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_SOCIAL_PROOF }}">
<div class="{{ model.FLAG_CONTAINER }}">
<div class="section-title">500+</div>
<div class="section-subtitle">Dogs Tracked</div>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<div class="section-title">15+</div>
<div class="section-subtitle">Active Trainers</div>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<div class="section-title">6hrs</div>
<div class="section-subtitle">Saved Per Week</div>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<div class="section-title">40%</div>
<div class="section-subtitle">Progress Improvement</div>
</div>
</div>
</div>
</section>
<section id="{{ model.FLAG_TESTIMONIAL }}" class="{{ model.FLAG_TESTIMONIAL }}">
<div class="{{ model.FLAG_CONTAINER }}">
<p class="text-center">"I've been tracking commands in spreadsheets for years. This is exactly what I needed - finally, someone who understands what trainers actually do day-to-day."</p>
<h2 class="section-subtitle text-center">- Sarah M., Certified Dog Behaviourist, Manchester</h2>
</div>
</section>
<!--
<section id="{{ model.FLAG_EARLY_ACCESS }}" class="{{ model.FLAG_EARLY_ACCESS }}">
<div class="container">
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title text-center">Be Among the First</h2>
<p class="section-subtitle text-center">We're putting the finishing touches on something special. Join our early access list to:</p>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_EARLY_ACCESS }}">
@@ -99,41 +176,9 @@
</div>
</section>
<!--
<section id="{{ model.FLAG_FEATURES }}" class="{{ model.FLAG_FEATURES }}">
<div class="container">
<h2 class="section-title text-center">Everything You Need, Nothing You Don't</h2>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_FEATURES }}">
< !--
<ul>
<li>✓ Detailed command performance tracking</li>
<li>✓ Multi-level skill progression monitoring</li>
<li>✓ Professional progress report generation</li>
<li>✓ Client and dog profile management</li>
<li>✓ Session planning and note-taking</li>
<li>✓ Mobile-friendly for field use</li>
<li>✓ Secure cloud-based storage</li>
<li>✓ GDPR compliant</li>
</ul>
-- >
<ul>
<li>✓ Comprehensive progress tracking for individual commands</li>
<li>✓ Unified command library for team consistency</li>
<li>✓ Client portal for owner engagement</li>
<li>✓ Session scheduling and reminders</li>
<li>✓ Professional progress reporting</li>
<li>✓ Mobile-friendly for field use</li>
<li>✓ Secure photo and video storage</li>
<li>✓ Multi-trainer support with permissions</li>
</ul>
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Reserve Your Spot Now</a>
<p>And this is just the beginning. We're constantly adding features based on feedback from trainers like you.</p>
</div>
</div>
</section>
<section id="{{ model.FLAG_BENEFITS }}" class="{{ model.FLAG_BENEFITS }}">
<div class="container">
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title text-center">More Than Just Software - It's Your Training Partner</h2>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_BENEFITS }}">
<p class="section-subtitle text-center">For Your Business:</p>
@@ -157,27 +202,10 @@
</div>
</div>
</section>
<section id="{{ model.FLAG_SOCIAL_PROOF }}" class="{{ model.FLAG_SOCIAL_PROOF }}">
<div class="container">
<h2 class="section-title text-center">Built for UK Trainers, By UK Trainers</h2>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_SOCIAL_PROOF }}">
<p>We understand the unique challenges of running a dog training business in the UK. That's why we've created the first platform designed specifically for our market.</p>
<p class="section-subtitle text-center">Stats:</p>
<ul>
<li>✓ 30+ Professional Trainers in Beta</li>
<li>✓ 500+ Dogs Successfully Tracked</li>
<li>✓ 10 Hours Saved Per Week (Average)</li>
<li>✓ 40% Increase in Client Retention</li>
</ul>
</div>
</div>
</section>
-->
<!--
<section class="{{ model.FLAG_CTA_1 }}">
<div class="container">
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title">Ready to Revolutionise Your Training Business?</h2>
<p class="section-subtitle text-center">Join the waitlist for early access to the UK's most comprehensive dog training management platform.</p>
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_LIGHT }}">Get Early Access Today</a>
@@ -186,7 +214,7 @@
</section>
<section id="{{ model.FLAG_PRICING }}" class="{{ model.FLAG_PRICING }}">
<div class="container">
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title">Pricing That Grows With You</h2>
<p class="section-subtitle text-center">Whether you're an independent trainer or managing a team, we have a plan that fits. All plans include our core features with no hidden fees.</p>
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_LIGHT }}">Get Early Access Today</a>
@@ -195,7 +223,7 @@
</section>
<section id="{{ model.FLAG_FAQ }}" class="{{ model.FLAG_FAQ }}">
<div class="container">
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title text-center">FAQs</h2>
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_FAQ }}">
<ul>
@@ -210,10 +238,40 @@
-->
<section class="{{ model.FLAG_CTA_2 }}">
<div class="container">
<h2 class="section-title">Built for UK Trainers, by UK Trainers</h2>
<p class="section-subtitle text-center">Fetch Metrics isn't another generic business tool trying to fit your needs. We're building this specifically for the unique requirements of professional dog training in the UK.</p>
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_LIGHT }}">Questions?</a>
<div class="{{ model.FLAG_CONTAINER }}">
<h2 class="section-title">Get Started Today - Alpha Access Available</h2>
<p class="section-subtitle text-center">We're ready for serious trainers to start using Fetch Metrics right now. Since we're still adding features based on user feedback, we're offering incredible early access terms:</p>
<div class="{{ model.FLAG_CARD }}">
<div class="{{ model.FLAG_CONTAINER }}">
<h4>🆓 Free During Alpha</h4>
<p>Complete access to all features while we perfect the platform together</p>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h4>💰 50% Off for Life</h4>
<p>Lock in permanent founder pricing when we officially launch</p>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h4>🎨 Shape the Product</h4>
<p>Your feedback directly influences new features and improvements</p>
</div>
<div class="{{ model.FLAG_CONTAINER }}">
<h4>🚀 First Access</h4>
<p>Be first to try everything new as we add it</p>
</div>
</div>
<div class="urgency">
<p><strong>Limited to 20 trainers</strong> - We want to provide excellent support and meaningful collaboration with each Alpha user.</p>
</div>
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_LIGHT }}">Apply for Alpha Access</a>
<a href="{{ model.HASH_PAGE_CONTACT }}" class="{{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_LIGHT }}">Book a Demo Call</a>
<p>
Questions? Email us at {{ model.get_mail_contact_public() }}<br>
Response time: Under 24 hours
</p>
</div>
</section>

View File

@@ -211,8 +211,6 @@
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script>
var assessments = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.assessments) | tojson | safe }};
var assessment = assessments[{{ assessment.id_assessment }}];

View File

@@ -99,8 +99,6 @@
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script>
var assessments = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.assessments) | tojson | safe }};
var filterLightingLevels = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_lighting_levels) | tojson | safe }};

View File

@@ -66,8 +66,6 @@
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script>
var button_icons = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.button_icons) | tojson | safe }};
</script>

View File

@@ -0,0 +1,87 @@
{% extends 'layouts/layout_dog.html' %}
{% block page_body %}
<link rel="stylesheet" href="{{ url_for('static', filename='dist/css/dog_calendar_entries.bundle.css') }}">
<form id="{{ model.ID_FORM_FILTERS }}" class="{{ model.FLAG_FILTER }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
{{ model.form_filters.hidden_tag() }}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_COLUMN }} {{ model.FLAG_FILTER }} {{ model.FLAG_SEARCH }}">
{{ model.form_filters.search.label }}
{{ model.form_filters.search() }}
{% for error in model.form_filters.search.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
</div>
{#
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_COLUMN }} {{ model.FLAG_FILTER }} {{ model.ATTR_ID_CALENDAR_ENTRY_TYPE }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ model.form_filters.id_calendar_entry_type.data }}">
{{ model.form_filters.id_calendar_entry_type.label }}
{{ model.form_filters.id_calendar_entry_type() }}
{% for error in model.form_filters.id_calendar_entry_type.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
{% set class_name = model.FLAG_FILTER + ' ' + model.ATTR_ID_CALENDAR_ENTRY_TYPE + ' ' + model.FLAG_CHECKBOX %}
{% include 'components/common/buttons/_icon_checkbox.html' %}
</div>
#}
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_COLUMN }} {{ model.FLAG_FILTER }} {{ model.FLAG_ACTIVE_ONLY }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ model.form_filters.active_only.data }}">
{{ model.form_filters.active_only.label }}
{{ model.form_filters.active_only() }}
{% for error in model.form_filters.active_only.errors %}
<p class="error">{{ error }}</p>
{% endfor %}
{% set class_name = model.FLAG_FILTER + ' ' + model.FLAG_ACTIVE_ONLY + ' ' + model.FLAG_CHECKBOX %}
{% include 'components/common/buttons/_icon_checkbox.html' %}
</div>
</div>
</div>
{% set block_id = 'buttons_table_default' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</form>
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_TABLE_MAIN }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_CALENDAR_ENTRY }}">
<thead>
<tr class="{{ model.FLAG_CALENDAR_ENTRY }}">
<th class="{{ model.FLAG_DATE_FROM }} {{ model.FLAG_DATE_TO }} {{ model.FLAG_DATE_PREVIEW }}">Date</th>
<th class="{{ model.FLAG_NAME }}">Name</th>
<th class="{{ model.FLAG_IS_CALENDAR_ENTRY_TYPE_BILL }}">Bill?</th>
<th class="{{ model.FLAG_PRICE }}">Value</th>
{#
<th class="{{ model.FLAG_ACTIVE }}">
{% set class_name = model.FLAG_ACTIVE %}
{% set attribute_text = '' %}
{% include 'components/common/buttons/_icon_add.html' %}
</th>
#}
</tr>
</thead>
<tbody>
{% set is_blank_row = False %}
{% for calendar_entry in model.calendar_entries %}
{% include 'components/dog/_row_calendar_entry.html' %}
{% endfor %}
{% set is_blank_row = True %}
{% include 'components/dog/_row_calendar_entry.html' %}
</tbody>
</table>
{% include 'components/common/temporary/_overlay_confirm.html' %}
{% include 'components/common/temporary/_overlay_error.html' %}
<div id="{{ model.ID_CONTAINER_TEMPLATE_ELEMENTS }}">
<!-- Active column -->
<!-- Delete -->
{% set class_name = '' %}
{% include 'components/common/buttons/_icon_trash.html' %}
<!-- Undelete -->
{% set class_name = model.FLAG_ACTIVE %}
{% set attribute_text = '' %}
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script>
var calendar_entrys = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.calendar_entrys) | tojson | safe }};
</script>
{% endblock %}

View File

@@ -112,8 +112,6 @@
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script>
{#
var commandButtonLinks = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.command_button_links) | tojson | safe }};

View File

@@ -68,8 +68,6 @@
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script>
</script>
{% endblock %}

View File

@@ -76,8 +76,6 @@
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script>
{#
var dogCommandLinks = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.dog_command_links) | tojson | safe }};

View File

@@ -90,8 +90,6 @@
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script>
{#
var dogCommandLinks = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.dog_command_links) | tojson | safe }};

View File

@@ -7,47 +7,56 @@
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_ROW }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<h2>Dog</h2>
{#
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_DOGS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Dogs</button>
</div>
#}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_COMMAND_CATEGORIES }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Command Categories</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_COMMANDS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Commands</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_DOG_COMMAND_LINKS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Dog Command Links</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_LOCATIONS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Locations</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_BUTTON_ICONS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Button Icons</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_COMMAND_BUTTON_LINKS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Command Button Links</button>
</div>
<h2 class="home-hero-title">Dog Training!</h2>
{% if not model.user.get_is_logged_in() %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<a class="{{ model.FLAG_NAV_USER_LOGIN }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Login</a>
</div>
{% elif True or model.user.can_admin_dog %}
{#
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_DOGS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Dogs</button>
</div>
#}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_COMMAND_CATEGORIES }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Command Categories</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_COMMANDS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Commands</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_DOG_COMMAND_LINKS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Dog Command Links</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_LOCATIONS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Locations</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_BUTTON_ICONS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Button Icons</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_COMMAND_BUTTON_LINKS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Command Button Links</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_ASSESSMENTS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Assessments</button>
</div>
{#
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_DISTRACTIONS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Distractions</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_ASSESSMENT_COMMAND_MODALITY_LINKS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Assessment Command Modality Links</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_ASSESSMENT_RESPONSES }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Assessment Responses</button>
</div>
#}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_ASSESSMENTS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Assessments</button>
</div>
{#
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_DISTRACTIONS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Distractions</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_ASSESSMENT_COMMAND_MODALITY_LINKS }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Assessment Command Modality Links</button>
</div>
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_ASSESSMENT_RESPONSES }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Assessment Responses</button>
</div>
#}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">
<button class="{{ model.FLAG_NAV_DOG_CALENDAR_ENTRIES }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Overdue Bills</button>
</div>
{% endif %}
</div>
</div>
{% endblock %}

View File

@@ -66,8 +66,6 @@
{% include 'components/common/buttons/_icon_add.html' %}
</div>
<script src="{{ url_for('routes_dog.scripts_section_dog') }}"></script>
<script>
var locations = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.locations) | tojson | safe }};
</script>