Feat: Architecture redesign for Assessments, Commands, Modalities, Training Techniques, Reinforcement Schedules, Distractions, and Assessment Responses.

This commit is contained in:
2025-09-06 12:13:16 +01:00
parent 12f5fc994f
commit 2da465935d
158 changed files with 14781 additions and 3477 deletions

View File

@@ -0,0 +1,5 @@
{% set value_previous = '0' if is_blank_row else assessment_type_preview.id_type %}
{% set text_previous = '' if is_blank_row else assessment_type_preview.name %}
<div class="{{ model.FLAG_ASSESSMENT_TYPE }}" {{ 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 reinforcement_schedule_preview.id_type %}
{% set text_previous = '' if is_blank_row else reinforcement_schedule_preview.name %}
<div class="{{ model.FLAG_REINFORCEMENT_SCHEDULE }}" {{ 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_COMMAND_MODALITY_LINK }} {{ model.FLAG_DDL_PREVIEW }} {{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
{% if is_blank_row or assessment_command_modality_link_previews == none or assessment_command_modality_link_previews | length == 0 %}
Add Modality
{% else %}
{% for acm_link_preview in assessment_command_modality_link_previews %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">{{ acm_link_preview.command_modality.name }}</div>
{% endfor %}
{% endif %}
</div>

View File

@@ -0,0 +1,11 @@
<div class="{{ model.FLAG_ASSESSMENT_COMMAND_TECHNIQUE_LINK }} {{ model.FLAG_DDL_PREVIEW }} {{ model.FLAG_CONTAINER }} {{ model.FLAG_COLUMN }}">
{% if is_blank_row or assessment_command_technique_link_previews == none or assessment_command_technique_link_previews | length == 0 %}
Add Training Technique
{% else %}
{% for acm_link_preview in assessment_command_technique_link_previews %}
<div class="{{ model.FLAG_CONTAINER }} {{ model.FLAG_ROW }}">{{ acm_link_preview.command_technique.name }}</div>
{% endfor %}
{% endif %}
</div>

View File

@@ -2,7 +2,7 @@
<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
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 }} - {{ assessment_response_preview.value_measured }} {{ assessment_response_preview.response_quality_metric.unit_measurement.symbol }}</div>

View File

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

View File

@@ -23,6 +23,7 @@
{% include 'components/dog/_preview_DDL_user.html' %}
</td>
{% include 'components/dog/_td_notes.html' %}
<td class="{{ model.FLAG_START_ON }}"></td>
{% set active = True %}
{% include 'components/dog/_td_active.html' %}
</tr>
@@ -31,6 +32,11 @@
<td class="{{ model.FLAG_DETAIL }}">
<button class="{{ model.FLAG_DETAIL }} {{ model.FLAG_ASSESSMENT }}">Detail</button>
</td>
{% set assessment_type_preview = assessment.assessment_type %}
<td class="{{ model.FLAG_ASSESSMENT_TYPE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_assessment_type.html' %}
</td>
{#
{% set weather_preview = assessment.weather %}
<td class="{{ model.FLAG_WEATHER }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_weather.html' %}
@@ -46,6 +52,7 @@
{{ 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' %}
@@ -57,6 +64,7 @@
</td>
{% set notes = assessment.notes %}
{% include 'components/dog/_td_notes.html' %}
<td class="{{ model.FLAG_START_ON }}">{{ model.format_datetime_text(assessment.start_on) }}</td>
{% set active = assessment.active %}
{% include 'components/dog/_td_active.html' %}
</tr>

View File

@@ -0,0 +1,169 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_ASSESSMENT_COMMAND_LINK }}" {{ model.ATTR_ID_ASSESSMENT_COMMAND_LINK }}>
<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_REINFORCEMENT_SCHEDULE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_reinforcement_schedule.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_METRES }}">
<input type="number" min="0" step="0.01"
class="{{ model.FLAG_DISTANCE_FROM_HANDLER_METRES }}"
{{ 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_ASSESSMENT_COMMAND_MODALITY_LINK }}">
{% include 'components/dog/_preview_table_assessment_command_modality_link.html' %}
</td>
<td class="{{ model.FLAG_ASSESSMENT_COMMAND_TECHNIQUE_LINK }}">
{% include 'components/dog/_preview_table_assessment_command_technique_link.html' %}
</td>
<td class="{{ model.FLAG_DISTRACTION }}">
{% include 'components/dog/_preview_table_distraction.html' %}
</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>
<td class="{{ model.FLAG_ASSESSMENT_RESPONSE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_table_assessment_response.html' %}
</td>
{% include 'components/dog/_td_notes.html' %}
{% set active = True %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% else %}
<tr class="{{ model.FLAG_ASSESSMENT_COMMAND_LINK }}" {{ model.ATTR_ID_ASSESSMENT_COMMAND_LINK }}="{{ 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 reinforcement_schedule_preview = link.reinforcement_schedule %}
<td class="{{ model.FLAG_REINFORCEMENT_SCHEDULE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_reinforcement_schedule.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_METRES }}">
<input type="number" min="0" step="0.01"
class="{{ model.FLAG_DISTANCE_FROM_HANDLER_METRES }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ link.distance_from_handler_metres }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ link.distance_from_handler_metres }}"
value="{{ link.distance_from_handler_metres }}" />
</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_ASSESSMENT_COMMAND_MODALITY_LINK }}">
{% set assessment_command_modality_link_previews = link.assessment_command_modality_links %}
{% include 'components/dog/_preview_table_assessment_command_modality_link.html' %}
</td>
<td class="{{ model.FLAG_ASSESSMENT_COMMAND_TECHNIQUE_LINK }}">
{% set assessment_command_modality_link_previews = link.assessment_command_technique_links %}
{% include 'components/dog/_preview_table_assessment_command_technique_link.html' %}
</td>
<td class="{{ model.FLAG_DISTRACTION }}">
{% set distraction_previews = link.distractions %}
{% include 'components/dog/_preview_table_distraction.html' %}
</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>
<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 notes = link.notes %}
{% include 'components/dog/_td_notes.html' %}
{% set active = link.active %}
{% include 'components/dog/_td_active.html' %}
</tr>
{% endif %}

View File

@@ -1,6 +1,6 @@
{% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}" {{ model.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK }}>
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_ASSESSMENT_COMMAND_LINK }}" {{ model.ATTR_ID_ASSESSMENT_COMMAND_LINK }}>
<td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %}
</td>
@@ -60,7 +60,7 @@
{% include 'components/dog/_td_active.html' %}
</tr>
{% else %}
<tr class="{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}" {{ model.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK }}="{{ link.id_link }}">
<tr class="{{ model.FLAG_ASSESSMENT_COMMAND_LINK }}" {{ model.ATTR_ID_ASSESSMENT_COMMAND_LINK }}="{{ 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 }}">

View File

@@ -1,10 +1,13 @@
<script>
var attrIdAssessment = "{{ model.ATTR_ID_ASSESSMENT }}";
var attrIdAssessmentCommandLink = "{{ model.ATTR_ID_ASSESSMENT_COMMAND_LINK }}";
var attrIdAssessmentCommandModalityLink = "{{ model.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK }}";
var attrIdAssessmentCommandTechniqueLink = "{{ model.ATTR_ID_ASSESSMENT_COMMAND_TECHNIQUE_LINK }}";
var attrIdAssessmentResponse = "{{ model.ATTR_ID_ASSESSMENT_RESPONSE }}";
var attrIdAssessmentType = "{{ model.ATTR_ID_ASSESSMENT_TYPE }}";
var attrIdAccessLevel = "{{ model.ATTR_ID_ACCESS_LEVEL }}";
var attrIdBribe = "{{ model.ATTR_ID_BRIBE }}";
{# 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 }}";
@@ -25,16 +28,21 @@
var attrIdLightingLevel = "{{ model.ATTR_ID_LIGHTING_LEVEL }}";
var attrIdLocation = "{{ model.ATTR_ID_LOCATION }}";
var attrIdObedienceLevel = "{{ model.ATTR_ID_OBEDIENCE_LEVEL }}";
var attrIdReinforcementSchedule = "{{ model.ATTR_ID_REINFORCEMENT_SCHEDULE }}";
var attrIdResponseQualityMetric = "{{ model.ATTR_ID_RESPONSE_QUALITY_METRIC }}";
var attrIdRole = "{{ model.ATTR_ID_ROLE }}";
var attrIdTrainingTechnique = "{{ model.ATTR_ID_TECHNIQUE }}";
var attrIdWeather = "{{ model.ATTR_ID_WEATHER }}";
var attrIdUser = "{{ model.ATTR_ID_USER }}";
var attrIdUserAuth0 = "{{ model.ATTR_ID_USER_AUTH0 }}";
var flagAppearance = "{{ model.FLAG_APPEARANCE }}";
var flagAssessment = "{{ model.FLAG_ASSESSMENT }}";
var flagAssessmentCommandLink = "{{ model.FLAG_ASSESSMENT_COMMAND_LINK }}";
var flagAssessmentCommandModalityLink = "{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}";
var flagAssessmentCommandTechniqueLink = "{{ model.FLAG_ASSESSMENT_COMMAND_TECHNIQUE_LINK }}";
var flagAssessmentResponse = "{{ model.FLAG_ASSESSMENT_RESPONSE }}";
var flagBribe = "{{ model.FLAG_BRIBE }}";
var flagAssessmentType = "{{ model.FLAG_ASSESSMENT_TYPE }}";
{# var flagBribe = "{{ model.FLAG_BRIBE }}"; #}
var flagButtonIcon = "{{ model.FLAG_BUTTON_ICON }}";
var flagButtonShape = "{{ model.FLAG_BUTTON_SHAPE }}";
var flagCalendarEntry = "{{ model.FLAG_CALENDAR_ENTRY }}";
@@ -56,8 +64,10 @@
var flagLocationParent = "{{ model.FLAG_LOCATION_PARENT }}";
var flagMassKg = "{{ model.FLAG_MASS_KG }}";
var flagObedienceLevel = "{{ model.FLAG_OBEDIENCE_LEVEL }}";
var flagReinforcementSchedule = "{{ model.FLAG_REINFORCEMENT_SCHEDULE }}";
var flagResponseQualityMetric = "{{ model.FLAG_RESPONSE_QUALITY_METRIC }}";
var flagRole = "{{ model.FLAG_ROLE }}";
var flagTrainingTechnique = "{{ model.FLAG_TRAINING_TECHNIQUE }}";
var flagUser = "{{ model.FLAG_USER }}";
var flagWeather = "{{ model.FLAG_WEATHER }}";
{# var hashSaveDogAssessment = "{{ model.HASH_SAVE_DOG_ASSESSMENT }}"; #}

View File

@@ -53,6 +53,7 @@
var flagDragOver = "drag-over";
var flagEdit = "{{ model.FLAG_EDIT }}";
var flagEmail = "{{ model.FLAG_EMAIL }}";
var flagEndOn = "{{ model.FLAG_END_ON }}";
var flagError = "{{ model.FLAG_ERROR }}";
var flagExpanded = "{{ model.FLAG_EXPANDED }}";
var flagFailure = "{{ model.FLAG_FAILURE }}";
@@ -117,6 +118,7 @@
var flagScrollable = "{{ model.FLAG_SCROLLABLE }}";
var flagSearch = "{{ model.FLAG_SEARCH }}";
var flagSlider = "{{ model.FLAG_SLIDER }}";
var flagStartOn = "{{ model.FLAG_START_ON }}";
var flagStatus = "{{ model.FLAG_STATUS }}";
var flagSubmit = "{{ model.FLAG_SUBMIT }}";
var flagSubmitted = "{{ model.FLAG_SUBMITTED }}";

View File

@@ -85,21 +85,28 @@
<table id="{{ model.ID_TABLE_ASSESSMENT }}" class="{{ model.FLAG_TABLE_MAIN }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_ASSESSMENT }}">
<thead>
<tr class="{{ model.FLAG_ASSESSMENT }}">
<th class="{{ model.FLAG_ASSESSMENT_TYPE }} {{ model.FLAG_DDL_PREVIEW }}">Type</th>
<th class="{{ model.FLAG_WEATHER }} {{ model.FLAG_DDL_PREVIEW }}">Weather</th>
<th class="{{ model.FLAG_LIGHTING_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">Lighting Level</th>
<th class="{{ model.FLAG_TEMPERATURE_CELCIUS }}">Temperature (&deg;C)</th>
<th class="{{ model.FLAG_LOCATION }} {{ model.FLAG_DDL_PREVIEW }}">Location</th>
<th class="{{ model.FLAG_USER_HANDLER }}">Handler</th>
<th class="{{ model.FLAG_START_ON }}">Start</th>
<th class="{{ model.FLAG_END_ON }}">End</th>
<th class="{{ model.FLAG_NOTES }}">Notes</th>
</tr>
</thead>
<tbody>
{% set is_blank_row = (assessment.id_assessment < 1) %}
<tr class="{{ model.FLAG_ASSESSMENT }}" {{ model.ATTR_ID_ASSESSMENT }}="{{ assessment.id_assessment }}">
{% set assessment_type_preview = assessment.assessment_type %}
<td class="{{ model.FLAG_ASSESSMENT_TYPE }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_assessment_type.html' %}
</td>
{% set weather_preview = assessment.weather %}
<td class="{{ model.FLAG_WEATHER }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_weather.html' %}
</td>
</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' %}
@@ -120,13 +127,19 @@
<td class="{{ model.FLAG_USER_HANDLER }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_user.html' %}
</td>
<td class="{{ model.FLAG_START_ON }}">
<input type="datetime-local">
</td>
<td class="{{ model.FLAG_END_ON }}">
<input type="datetime-local">
</td>
{% set notes = assessment.notes %}
{% include 'components/dog/_td_notes.html' %}
</tr>
</tbody>
</table>
</form>
{#
<form id="{{ model.ID_FORM_DISTRACTIONS }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<h2>Distractions</h2>
<table id="{{ model.ID_TABLE_DISTRACTIONS}}" class="{{ model.FLAG_TABLE_MAIN }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_DISTRACTION }}">
@@ -159,29 +172,32 @@
</tbody>
</table>
</form>
#}
<form id="{{ model.ID_FORM_ASSESSMENT_COMMAND_MODALITY_LINKS }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<form id="{{ model.ID_FORM_ASSESSMENT_COMMAND_LINKS }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }}">
<h2>Commands and Responses</h2>
<table id="{{ model.ID_TABLE_ASSESSMENT_COMMAND_MODALITY_LINKS }}" class="{{ model.FLAG_TABLE_MAIN }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}">
<table id="{{ model.ID_TABLE_ASSESSMENT_COMMAND_LINKS }}" class="{{ model.FLAG_TABLE_MAIN }} {{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_ASSESSMENT_COMMAND_LINK }}">
<thead>
<tr class="{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}">
<tr class="{{ model.FLAG_ASSESSMENT_COMMAND_LINK }}">
<th class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="2">Command Category</th>
<th class="{{ model.FLAG_COMMAND }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="2">Command</th>
<th class="{{ model.FLAG_COMMAND_MODALITY }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="2">Command Modality</th>
<th class="{{ model.FLAG_BRIBE }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="2">Bribe</th>
<th class="{{ model.FLAG_REINFORCEMENT_SCHEDULE }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="2">Reinforcement Schedule</th>
<th class="{{ model.FLAG_DISTANCE_FROM_HANDLER_METRES }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="2">Distance From Handler</th>
<th class="{{ model.FLAG_IS_IN_SIGHT_OF_HANDLER }}" colspan="3" rowspan="1">In Range Of Handler?</th>
<th class="{{ model.FLAG_IS_ON_LEAD }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="2">On Lead?</th>
<th class="{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}" rowspan="2">Modalities</th>
<th class="{{ model.FLAG_ASSESSMENT_COMMAND_TECHNIQUE_LINK }}" rowspan="2">Techniques</th>
<th class="{{ model.FLAG_DISTRACTION }}" rowspan="2">Distractions</th>
<th class="{{ model.FLAG_TRIAL_COUNT }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="2">Trial Count</th>
<th class="{{ model.FLAG_NOTES }}" rowspan="2">Notes</th>
<th class="{{ model.FLAG_ASSESSMENT_RESPONSE }}" rowspan="2">Responses</th>
<th class="{{ model.FLAG_NOTES }}" rowspan="2">Notes</th>
<th class="{{ model.FLAG_ACTIVE }}" rowspan="2">
{% set class_name = model.FLAG_ACTIVE %}
{% set attribute_text = '' %}
{% include 'components/common/buttons/_icon_add.html' %}
</th>
</tr>
<tr class="{{ model.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK }}">
<tr class="{{ model.FLAG_ASSESSMENT_COMMAND_LINK }}">
<th class="{{ model.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="1">Sound</th>
<th class="{{ model.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="1">Scent</th>
<th class="{{ model.FLAG_IS_IN_SIGHT_OF_HANDLER }} {{ model.FLAG_DDL_PREVIEW }}" rowspan="1">Sight</th>
@@ -189,12 +205,12 @@
</thead>
<tbody>
{% set is_blank_row = False %}
{% for link in assessment.assessment_command_modality_links %}
{% include 'components/dog/_row_assessment_command_modality_link.html' %}
{% for link in assessment.assessment_command_links %}
{% include 'components/dog/_row_assessment_command_link.html' %}
{% endfor %}
{% set is_blank_row = True %}
{% include 'components/dog/_row_assessment_command_modality_link.html' %}
{% include 'components/dog/_row_assessment_command_link.html' %}
</tbody>
</table>
</form>
@@ -216,7 +232,7 @@
<script>
var assessments = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.assessments) | tojson | safe }};
var assessment = assessments[{{ assessment.id_assessment }}];
var filterBribes = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_bribes) | tojson | safe }};
var filterAssessmentTypes = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_assessment_types) | tojson | safe }};
var filterCommandCategories = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_command_categories) | tojson | safe }};
var filterCommandModalities = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_command_modalities) | tojson | safe }};
var filterCommands = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_commands) | tojson | safe }};
@@ -225,17 +241,17 @@
var filterLightingLevels = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_lighting_levels) | tojson | safe }};
var filterLocations = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_locations) | tojson | safe }};
var filterObedienceLevels = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_obedience_levels) | tojson | safe }};
var filterReinforcementSchedules = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_reinforcement_schedules) | tojson | safe }};
var filterResponseQualityMetrics = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_response_quality_metrics) | tojson | safe }};
var filterTrainingTechniques = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_training_techniques) | tojson | safe }};
var filterUserHandlers = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_user_handlers) | tojson | safe }};
var filterWeathers = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_weathers) | tojson | safe }};
var flagCommandModality = "{{ model.FLAG_COMMAND_MODALITY }}";
var flagDistanceFromHandlerMetres = "{{ model.FLAG_DISTANCE_FROM_HANDLER_METRES }}";
var flagDistractionIntensityLevelEmotional = "{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL }}";
var flagDistractionIntensityLevelScent = "{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT }}";
var flagDistractionIntensityLevelSight = "{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT }}";
var flagDistractionIntensityLevelSound = "{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND }}";
var flagDistractionIntensityLevelTouch = "{{ model.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH }}";
var flagDistractionType = "{{ model.FLAG_DISTRACTION_TYPE }}";
var flagIsInHearingRangeOfHandler = "{{ model.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER }}";
var flagIsInScentRangeOfHandler = "{{ model.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER }}";
var flagIsInSightOfHandler = "{{ model.FLAG_IS_IN_SIGHT_OF_HANDLER }}";
@@ -246,11 +262,11 @@
var flagUserHandler = "{{ model.FLAG_USER_HANDLER }}";
var flagValueMeasured = "{{ model.FLAG_VALUE_MEASURED }}";
var idFormAssessment = "#{{ model.ID_FORM_ASSESSMENT }}";
var idFormAssessmentCommandModalityLinks = "#{{ model.ID_FORM_ASSESSMENT_COMMAND_MODALITY_LINKS }}";
var idFormDistractions = "#{{ model.ID_FORM_DISTRACTIONS }}";
var idFormAssessmentCommandLinks = "#{{ model.ID_FORM_ASSESSMENT_COMMAND_LINKS }}";
{# var idFormDistractions = "#{{ model.ID_FORM_DISTRACTIONS }}"; #}
var idTableAssessment = "#{{ model.ID_TABLE_ASSESSMENT }}";
var idTableAssessmentCommandModalityLinks = "#{{ model.ID_TABLE_ASSESSMENT_COMMAND_MODALITY_LINKS }}";
var idTableAssessmentResponses = "#{{ model.ID_TABLE_ASSESSMENT_RESPONSES }}";
var idTableDistractions = "#{{ model.ID_TABLE_DISTRACTIONS }}";
var idTableAssessmentCommandLinks = "#{{ model.ID_TABLE_ASSESSMENT_COMMAND_LINKS }}";
{# var idTableAssessmentResponses = "#{{ model.ID_TABLE_ASSESSMENT_RESPONSES }}"; #}
{# var idTableDistractions = "#{{ model.ID_TABLE_DISTRACTIONS }}"; #}
</script>
{% endblock %}

View File

@@ -61,12 +61,16 @@
<thead>
<tr class="{{ model.FLAG_ASSESSMENT }}">
<th class="{{ model.FLAG_DETAIL }}">Detail</th>
<th class="{{ model.FLAG_ASSESSMENT_TYPE }} {{ model.FLAG_DDL_PREVIEW }}">Type</th>
{#
<th class="{{ model.FLAG_WEATHER }} {{ model.FLAG_DDL_PREVIEW }}">Weather</th>
<th class="{{ model.FLAG_LIGHTING_LEVEL }} {{ model.FLAG_DDL_PREVIEW }}">Lighting Level</th>
<th class="{{ model.FLAG_TEMPERATURE_CELCIUS }}">Temperature (&deg;C)</th>
#}
<th class="{{ model.FLAG_LOCATION }} {{ model.FLAG_DDL_PREVIEW }}">Location</th>
<th class="{{ model.FLAG_USER_HANDLER }}">Handler</th>
<th class="{{ model.FLAG_NOTES }}">Notes</th>
<th class="{{ model.FLAG_START_ON }}">Date</th>
<th class="{{ model.FLAG_ACTIVE }}">
{% set class_name = model.FLAG_ACTIVE %}
{% set attribute_text = '' %}
@@ -101,6 +105,7 @@
<script>
var assessments = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.assessments) | tojson | safe }};
var filterAssessmentTypes = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_assessment_types) | tojson | safe }};
var filterLightingLevels = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_lighting_levels) | tojson | safe }};
var filterLocations = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_locations) | tojson | safe }};
var filterUserHandlers = {{ model.convert_list_objects_to_dict_json_by_attribute_key_default(model.filter_user_handlers) | tojson | safe }};