Feat(SQL, UI): 1. Calc and Get Many Stored Procedures created for Weather, Lighting Level, Assessment, Distraction Type, Distraction Intensity Level, Distraction, Bribe, Assessment Command Modality Link, Response Quality Metric, Obedience Level, and Assessment Response. \n 2. Assessments and Assessment pages created with data loading and hooked up, but not saving.

This commit is contained in:
2025-07-24 16:48:18 +01:00
parent 6bb3a77a34
commit fad5336cc4
137 changed files with 10442 additions and 1116 deletions

View File

@@ -12,38 +12,38 @@
<button id="{{ model.ID_BUTTON_APPLY_FILTERS }}" type="button" class="{{ model.FLAG_SUBMIT }} {{ model.FLAG_BUTTON }} {{ model.FLAG_BUTTON_PRIMARY }}">Apply filters</button>
{% elif block_id == 'button_clear_filters' %}
{% elif block_id == 'buttons_table_default' %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_SAVE }} {{ model.FLAG_CANCEL }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_ROW }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_COLUMN }}">
{% set block_id = 'button_apply_filters' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</div>
{#
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_COLUMN }}">
{% set block_id = 'button_add' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</div>
#}
<div class="{{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_save' %}
{% set block_id = 'button_apply_filters' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</div>
{#
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_cancel' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</div>
<div class="{{ model.FLAG_CONTAINER_INPUT }} {{ model.FLAG_COLUMN }}">
{% set block_id = 'button_add' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</div>
#}
</div>
<div class="{{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_cancel' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
<div class="{{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_save' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</div>
{#
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_cancel' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</div>
#}
</div>
<div class="{{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">
{% set block_id = 'button_cancel' %}
{% include 'components/common/buttons/_buttons_save_cancel.html' %}
</div>
</div>
</div>
</div>
</div>
{% elif block_id == 'container_buttons_save_cancel' %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
<div class="{{ model.FLAG_CONTAINER_INPUT }}">

View File

@@ -10,6 +10,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"
class="{{ model.FLAG_BUTTON }} {{ model.FLAG_ICON }} {{ model.FLAG_ADD }} {{ class_name }}"
{{ attribute_text }}
{{ model.ATTR_VALUE_CURRENT }}="false" {{ model.ATTR_VALUE_PREVIOUS }}="false"
>
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"/>

View File

@@ -10,6 +10,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"
class="{{ model.FLAG_BUTTON }} {{ model.FLAG_ICON }} {{ model.FLAG_DELETE }} {{ model.FLAG_ACTIVE }} {{ class_name }}"
{{ attribute_text }}
{{ model.ATTR_VALUE_CURRENT }}="true" {{ model.ATTR_VALUE_PREVIOUS }}="true"
>
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path d="M135.2 17.7L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-7.2-14.3C307.4 6.8 296.3 0 284.2 0L163.8 0c-12.1 0-23.2 6.8-28.6 17.7zM416 128L32 128 53.2 467c1.6 25.3 22.6 45 47.9 45l245.8 0c25.3 0 46.3-19.7 47.9-45L416 128z"/>

View File

@@ -0,0 +1,5 @@
{% set value_previous = '0' if is_blank_row else bribe_preview.id_bribe %}
{% set text_previous = '' if is_blank_row else bribe_preview.name %}
<div class="{{ model.FLAG_BRIBE }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,5 +1,5 @@
{% set value_previous = '0' if is_blank_row else button_shape.id_button_shape %}
{% set text_previous = '' if is_blank_row else button_shape.name %}
{% set value_previous = '0' if is_blank_row else button_shape_preview.id_button_shape %}
{% set text_previous = '' if is_blank_row else button_shape_preview.name %}
<div class="{{ model.FLAG_BUTTON_SHAPE }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,5 +1,5 @@
{% set value_previous = '0' if is_blank_row else colour.id_colour %}
{% set text_previous = '' if is_blank_row else colour.name %}
{% set value_previous = '0' if is_blank_row else colour_preview.id_colour %}
{% set text_previous = '' if is_blank_row else colour_preview.name %}
<div class="{{ model.FLAG_COLOUR }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,5 +1,5 @@
{% set value_previous = '0' if is_blank_row else command.id_command %}
{% set text_previous = '' if is_blank_row else command.name %}
{% set value_previous = '0' if is_blank_row else command_preview.id_command %}
{% set text_previous = '' if is_blank_row else command_preview.name %}
<div class="{{ model.FLAG_COMMAND }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,5 +1,5 @@
{% set value_previous = '0' if is_blank_row else command_category.id_command_category %}
{% set text_previous = '' if is_blank_row else command_category.name %}
{% set value_previous = '0' if is_blank_row else command_category_preview.id_command_category %}
{% set text_previous = '' if is_blank_row else command_category_preview.name %}
<div class="{{ model.FLAG_COMMAND_CATEGORY }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -0,0 +1,5 @@
{% set value_previous = '0' if is_blank_row else command_modality_preview.id_command_modality %}
{% set text_previous = '' if is_blank_row else command_modality_preview.name %}
<div class="{{ model.FLAG_COMMAND_MODALITY }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -0,0 +1,7 @@
{% with _attribute_text = '' if (attribute_text is not defined or attribute_text is none) else attribute_text %}
{% set value_previous = '0' if (is_blank_row or (intensity_level_preview is not defined) or (intensity_level_preview is none) or (intensity_level_preview.id_intensity_level is none)) else intensity_level_preview.id_intensity_level %}
{% set text_previous = '' if (is_blank_row or (intensity_level_preview is not defined) or (intensity_level_preview is none)) else model.format_null_string_as_blank(intensity_level_preview.name) %}
<div class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ _attribute_text }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>
{% endwith %}

View File

@@ -0,0 +1,5 @@
{% set value_previous = '0' if is_blank_row else distraction_type_preview.id_distraction_type %}
{% set text_previous = '' if is_blank_row else distraction_type_preview.name %}
<div class="{{ model.FLAG_DISTRACTION_TYPE }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,5 +1,5 @@
{% set value_previous = '0' if is_blank_row else dog.id_dog %}
{% set text_previous = '' if is_blank_row else dog.name %}
{% set value_previous = '0' if is_blank_row else dog_preview.id_dog %}
{% set text_previous = '' if is_blank_row else dog_preview.name %}
<div class="{{ model.FLAG_DOG }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -1,7 +1,7 @@
{% with _attribute_text = '' if (attribute_text is not defined or attribute_text is none) else attribute_text %}
{% set value_previous = '0' if (is_blank_row or (image is not defined) or (image is none) or (image.id_image is none)) else image.id_image %}
{% set text_previous = '' if (is_blank_row or (image is not defined) or (image is none)) else model.format_null_string_as_blank(image.name) %}
{% set value_previous = '0' if (is_blank_row or (image_preview is not defined) or (image_preview is none) or (image_preview.id_image is none)) else image_preview.id_image %}
{% set text_previous = '' if (is_blank_row or (image_preview is not defined) or (image_preview is none)) else model.format_null_string_as_blank(image_preview.name) %}
<div class="{{ model.FLAG_IMAGE }} {{ _attribute_text }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>
{% endwith %}

View File

@@ -0,0 +1,5 @@
{% set value_previous = '0' if is_blank_row else lighting_level_preview.id_lighting_level %}
{% set text_previous = '' if is_blank_row else lighting_level_preview.name %}
<div class="{{ model.FLAG_LIGHTING_LEVEL }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -0,0 +1,7 @@
{% with _attribute_text = '' if (attribute_text is not defined or attribute_text is none) else attribute_text %}
{% set value_previous = '0' if (is_blank_row or (user_preview is not defined) or (user_preview is none) or (user_preview.id_user is none)) else user_preview.id_user %}
{% set text_previous = '' if (is_blank_row or (user_preview is not defined) or (user_preview is none)) else model.format_null_string_as_blank(user_preview.get_name()) %}
<div class="{{ model.FLAG_USER }} {{ _attribute_text }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>
{% endwith %}

View File

@@ -0,0 +1,5 @@
{% set value_previous = '0' if is_blank_row else weather_preview.id_weather %}
{% set text_previous = '' if is_blank_row else weather_preview.name %}
<div class="{{ model.FLAG_WEATHER }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}" {{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}">{{ text_previous }}</div>

View File

@@ -0,0 +1,11 @@
<div class="{{ model.FLAG_ASSESSMENT_RESPONSE }} {{ model.FLAG_DDL_PREVIEW }} {{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
{% if is_blank_row or assessment_response_previews == none or assessment_response_previews | length == 0 %}
Add response
{% else %}
{% for assessment_response_preview in assessment_response_previews %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">{{ assessment_response_preview.response_quality_metric.name }} - {{ assessment_response_preview.obedience_level.name }}</div>
{% endfor %}
{% endif %}
</div>

View File

@@ -0,0 +1,63 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_ASSESSMENT }}" {{ model.ATTR_ID_ASSESSMENT }}>
<td class="{{ model.FLAG_DETAIL }}">
<button class="{{ model.FLAG_DETAIL }} {{ model.FLAG_ASSESSMENT }}">Detail</button>
</td>
<td class="{{ model.FLAG_WEATHER }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_weather.html' %}
</td>
<td class="{{ model.FLAG_LIGHTING_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_lighting_level.html' %}
</td>
<td class="{{ model.FLAG_TEMPERATURE_CELCIUS }}">
<input type="number" min="-273" step="0.1"
class="{{ model.FLAG_TEMPERATURE_CELCIUS }}"
{{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} value="22"/>
</td>
<td class="{{ model.FLAG_LOCATION }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_location.html' %}
</td>
{% set attribute_text = model.FLAG_USER_HANDLER %}
<td class="{{ model.FLAG_USER_HANDLER }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_user.html' %}
</td>
{% include 'components/dog/_td_notes.html' %}
{% set active = True %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% else %}
<tr class="{{ model.FLAG_ASSESSMENT }}" {{ model.ATTR_ID_ASSESSMENT }}="{{ assessment.id_assessment }}">
<td class="{{ model.FLAG_DETAIL }}">
<button class="{{ model.FLAG_DETAIL }} {{ model.FLAG_ASSESSMENT }}">Detail</button>
</td>
{% set weather_preview = assessment.weather %}
<td class="{{ model.FLAG_WEATHER }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_weather.html' %}
</td>
{% set lighting_level_preview = assessment.lighting_level %}
<td class="{{ model.FLAG_LIGHTING_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_lighting_level.html' %}
</td>
<td class="{{ model.FLAG_TEMPERATURE_CELCIUS }}">
<input type="number" min="-273" step="0.1"
class="{{ model.FLAG_TEMPERATURE_CELCIUS }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ assessment.temperature_celcius }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ assessment.temperature_celcius }}"
value="{{ assessment.temperature_celcius }}" />
</td>
{% set location_preview = assessment.location %}
<td class="{{ model.FLAG_LOCATION }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_location.html' %}
</td>
{% set user_preview = assessment.user_handler %}
{% set attribute_text = model.FLAG_USER_HANDLER %}
<td class="{{ model.FLAG_USER_HANDLER }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_user.html' %}
</td>
{% set notes = assessment.notes %}
{% include 'components/dog/_td_notes.html' %}
{% set active = assessment.active %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% endif %}

View File

@@ -0,0 +1,137 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}" {{ model.ATTR_ID_ASSESSMENT }}>
<td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %}
</td>
<td class="{{ model.FLAG_COMMAND }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command.html' %}
</td>
<td class="{{ model.FLAG_COMMAND_MODALITY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_modality.html' %}
</td>
<td class="{{ model.FLAG_BRIBE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_bribe.html' %}
</td>
<td class="{{ model.FLAG_DISTANCE_FROM_HANDLER }}">
<input type="number" min="0" step="0.01"
class="{{ model.FLAG_DISTANCE_FROM_HANDLER }}"
{{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}="0"
value="0" />
</td>
<td class="{{ model.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER }}">
<input type="checkbox"
class="{{ model.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER }}"
{{ model.ATTR_VALUE_CURRENT }}="true" {{ model.ATTR_VALUE_PREVIOUS }}="true"
checked />
</td>
<td class="{{ model.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER }}">
<input type="checkbox"
class="{{ model.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER }}"
{{ model.ATTR_VALUE_CURRENT }}="true" {{ model.ATTR_VALUE_PREVIOUS }}="true"
checked />
</td>
<td class="{{ model.FLAG_IS_IN_SIGHT_OF_HANDLER }}">
<input type="checkbox"
class="{{ model.FLAG_IS_IN_SIGHT_OF_HANDLER }}"
{{ model.ATTR_VALUE_CURRENT }}="true" {{ model.ATTR_VALUE_PREVIOUS }}="true"
checked />
</td>
<td class="{{ model.FLAG_IS_ON_LEAD }}">
<input type="checkbox"
class="{{ model.FLAG_IS_ON_LEAD }}"
{{ model.ATTR_VALUE_CURRENT }}="true" {{ model.ATTR_VALUE_PREVIOUS }}="true"
checked />
</td>
<td class="{{ model.FLAG_TRIAL_COUNT }}">
<!--
<input type="number" min="0" step="1"
class="{{ model.FLAG_TRIAL_COUNT }}"
{{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}="0"
value="0" />
-->
<div class="{{ model.FLAG_TRIAL_COUNT }}" {{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}="0">0</div>
</td>
{% include 'components/dog/_td_notes.html' %}
<td class="{{ model.FLAG_ASSESSMENT_RESPONSE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_table_assessment_response.html' %}
</td>
{% set active = True %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% else %}
<tr class="{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}" {{ model.ATTR_ID_ASSESSMENT }}="{{ link.id_link }}">
{% set command_preview = link.command %}
{% set command_category_preview = command_preview.command_category %}
<td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %}
</td>
<td class="{{ model.FLAG_COMMAND }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command.html' %}
</td>
{% set command_modality_preview = link.command_modality %}
<td class="{{ model.FLAG_COMMAND_MODALITY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_modality.html' %}
</td>
{% set bribe_preview = link.bribe %}
<td class="{{ model.FLAG_BRIBE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_bribe.html' %}
</td>
<td class="{{ model.FLAG_DISTANCE_FROM_HANDLER }}">
<input type="number" min="0" step="0.01"
class="{{ model.FLAG_DISTANCE_FROM_HANDLER }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ link.distance_from_handler }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ link.distance_from_handler }}"
value="{{ link.distance_from_handler }}" />
</td>
<td class="{{ model.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER }}">
<input type="checkbox"
class="{{ model.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ link.active | lower }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ link.active | lower }}"
{% if link.active %}checked{% endif %} />
</td>
<td class="{{ model.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER }}">
<input type="checkbox"
class="{{ model.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ link.active | lower }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ link.active | lower }}"
{% if link.active %}checked{% endif %} />
</td>
<td class="{{ model.FLAG_IS_IN_SIGHT_OF_HANDLER }}">
<input type="checkbox"
class="{{ model.FLAG_IS_IN_SIGHT_OF_HANDLER }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ link.active | lower }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ link.active | lower }}"
{% if link.active %}checked{% endif %} />
</td>
<td class="{{ model.FLAG_IS_ON_LEAD }}">
<input type="checkbox"
class="{{ model.FLAG_IS_ON_LEAD }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ link.active | lower }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ link.active | lower }}"
{% if link.active %}checked{% endif %} />
</td>
<td class="{{ model.FLAG_TRIAL_COUNT }}">
<!--
<input type="number" min="0" step="1"
class="{{ model.FLAG_TRIAL_COUNT }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ link.trial_count }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ link.trial_count }}"
value="{{ link.trial_count }}" />
-->
<div class="{{ model.FLAG_TRIAL_COUNT }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ link.trial_count }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ link.trial_count }}"
>{{ link.trial_count }}</div>
</td>
{% set notes = link.notes %}
{% include 'components/dog/_td_notes.html' %}
<td class="{{ model.FLAG_ASSESSMENT_RESPONSE }} {{ model.FLAG_DDL_PREVIEW }}">
{% set assessment_response_previews = link.assessment_responses %}
{% include 'components/dog/_preview_table_assessment_response.html' %}
</td>
{% set active = link.active %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% endif %}

View File

@@ -2,7 +2,6 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_BUTTON_ICON }}" {{ model.ATTR_ID_BUTTON_ICON }}>
<td class="{{ model.FLAG_IMAGE }} {{ model.FLAG_DDL_PREVIEW }}">
{% set image = none %}
{% include 'components/dog/_preview_DDL_image.html' %}
</td>
<td class="{{ model.FLAG_NAME }}">
@@ -15,7 +14,7 @@
</tr>
{% else %}
<tr class="{{ model.FLAG_BUTTON_ICON }}" {{ model.ATTR_ID_BUTTON_ICON }}="{{ button_icon.id_button_icon }}">
{% set image = button_icon.image %}
{% set image_preview = button_icon.image %}
<td class="{{ model.FLAG_IMAGE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_image.html' %}
</td>

View File

@@ -17,17 +17,13 @@
<td class="{{ model.FLAG_CAN_HAVE_BUTTON }}">
<input type="checkbox" class="{{ model.FLAG_CAN_HAVE_BUTTON }}" {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }}="false" />
</td>
<td class="{{ model.FLAG_NOTES }}">
<input type="text"
class="{{ model.FLAG_NOTES }}"
{{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
{% include 'components/dog/_td_notes.html' %}
{% set active = True %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% else %}
<tr class="{{ model.FLAG_COMMAND }}" {{ model.ATTR_ID_COMMAND }}="{{ command.id_command }}">
{% set command_category = command.command_category %}
{% set command_category_preview = command.command_category %}
<td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %}
</td>
@@ -48,13 +44,8 @@
<td class="{{ model.FLAG_CAN_HAVE_BUTTON }}">
<input type="checkbox" {% if command.can_have_button %}checked{% endif %} class="{{ model.FLAG_CAN_HAVE_BUTTON }}" {{ model.ATTR_VALUE_CURRENT }}="{{ command.can_have_button|lower }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ command.can_have_button|lower }}" />
</td>
<td class="{{ model.FLAG_NOTES }}">
<input type="text"
class="{{ model.FLAG_NOTES }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ model.format_null_string_as_blank(command.notes)|escape }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ model.format_null_string_as_blank(command.notes)|escape }}"
value="{{ model.format_null_string_as_blank(command.notes) }}" />
</td>
{% set notes = command.notes %}
{% include 'components/dog/_td_notes.html' %}
{% set active = command.active %}
{% include 'components/dog/_td_active.html' %}
</tr>

View File

@@ -24,23 +24,23 @@
</tr>
{% else %}
<tr class="{{ model.FLAG_COMMAND_BUTTON_LINK }}" {{ model.ATTR_ID_COMMAND_BUTTON_LINK }}="{{ link.id_link }}">
{% set command = link.command %}
{% set command_category = command.command_category %}
{% set command_preview = link.command %}
{% set command_category_preview = command_preview.command_category %}
<td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %}
</td>
<td class="{{ model.FLAG_COMMAND }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command.html' %}
</td>
{% set button_shape = link.button_shape %}
{% set button_shape_preview = link.button_shape %}
<td class="{{ model.FLAG_BUTTON_SHAPE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_button_shape.html' %}
</td>
{% set colour = link.colour %}
{% set colour_preview = link.colour %}
<td class="{{ model.FLAG_COLOUR }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_colour.html' %}
</td>
{% set image = link.button_icon.image %}
{% set image_preview = link.button_icon.image %}
<td class="{{ model.FLAG_BUTTON_ICON }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_image.html' %}
</td>

View File

@@ -0,0 +1,93 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_DISTRACTION }}" {{ model.ATTR_ID_DISTRACTION }}>
<td class="{{ model.FLAG_DISTRACTION_TYPE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_type.html' %}
</td>
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
<td class="{{ model.FLAG_QUANTITY }}">
<input type="number" min="0" step="1"
class="{{ model.FLAG_QUANTITY }}"
{{ model.ATTR_VALUE_CURRENT }}="1" {{ model.ATTR_VALUE_PREVIOUS }}="1"
value="1" />
</td>
<td class="{{ model.FLAG_PROXIMITY_METRES }}">
<input type="number" min="0" step="1"
class="{{ model.FLAG_PROXIMITY_METRES }}"
{{ model.ATTR_VALUE_CURRENT }}="0" {{ model.ATTR_VALUE_PREVIOUS }}="0"
value="0" />
</td>
{% include 'components/dog/_td_notes.html' %}
{% set active = True %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% else %}
<tr class="{{ model.FLAG_DISTRACTION }}" {{ model.ATTR_ID_DISTRACTION }}="{{ distraction.id_distraction }}">
{% set distraction_type_preview = distraction.distraction_type %}
<td class="{{ model.FLAG_DISTRACTION_TYPE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_type.html' %}
</td>
{% set intensity_level_preview = distraction.intensity_level_emotional %}
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
{% set intensity_level_preview = distraction.intensity_level_scent %}
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
{% set intensity_level_preview = distraction.intensity_level_sight %}
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
{% set intensity_level_preview = distraction.intensity_level_sound %}
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
{% set intensity_level_preview = distraction.intensity_level_touch %}
{% set attribute_text = model.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH %}
<td class="{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH }} {{ model.FLAG_DISTRACTION_INTENSITY_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_distraction_intensity_level.html' %}
</td>
<td class="{{ model.FLAG_QUANTITY }}">
<input type="number" min="0" step="1"
class="{{ model.FLAG_QUANTITY }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ distraction.quantity }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ distraction.quantity }}"
value="{{ distraction.quantity }}" />
</td>
<td class="{{ model.FLAG_PROXIMITY_METRES }}">
<input type="number" min="0" step="1"
class="{{ model.FLAG_PROXIMITY_METRES }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ distraction.proximity_metres }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ distraction.proximity_metres }}"
value="{{ distraction.proximity_metres }}" />
</td>
{% set notes = distraction.notes %}
{% include 'components/dog/_td_notes.html' %}
{% set active = distraction.active %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% endif %}

View File

@@ -15,22 +15,18 @@
class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}"
{{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
<td class="{{ model.FLAG_NOTES }}">
<input type="text"
class="{{ model.FLAG_NOTES }}"
{{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td>
{% include 'components/dog/_td_notes.html' %}
{% set active = True %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% else %}
<tr class="{{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}="{{ link.id_link }}">
{% set dog = link.dog %}
{% set dog_preview = link.dog %}
<td class="{{ model.FLAG_DOG }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_dog.html' %}
</td>
{% set command = link.command %}
{% set command_category = command.command_category %}
{% set command_preview = link.command %}
{% set command_category_preview = command_preview.command_category %}
<td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %}
</td>
@@ -44,13 +40,8 @@
{{ model.ATTR_VALUE_PREVIOUS }}="{{ model.format_null_string_as_blank(link.hand_signal_description)|escape }}"
value="{{ model.format_null_string_as_blank(link.hand_signal_description) }}" />
</td>
<td class="{{ model.FLAG_NOTES }}">
<input type="text"
class="{{ model.FLAG_NOTES }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ model.format_null_string_as_blank(link.notes)|escape }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ model.format_null_string_as_blank(link.notes)|escape }}"
value="{{ model.format_null_string_as_blank(link.notes) }}" />
</td>
{% set notes = link.notes %}
{% include 'components/dog/_td_notes.html' %}
{% set active = link.active %}
{% include 'components/dog/_td_active.html' %}
</tr>

View File

@@ -0,0 +1,17 @@
{% with _notes = none if (is_blank_row or notes is not defined) else notes %}
{% set value_formatted = model.format_null_string_as_blank(notes) %}
{% set value_previous = value_formatted | escape %}
<td class="{{ model.FLAG_NOTES }}">
<!--
<input type="text"
class="{{ model.FLAG_NOTES }}"
{{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
-->
<textarea class="{{ model.FLAG_NOTES }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ value_previous }}" {{ model.ATTR_VALUE_PREVIOUS }}="{{ value_previous }}"
>{{ value_formatted }}</textarea>
</td>
{% endwith %}