Fix(UI): UI bug fixes.

This commit is contained in:
2025-07-10 15:37:55 +01:00
parent 28158cb0c4
commit d5d2f6f710
18 changed files with 90 additions and 42 deletions

View File

@@ -228,11 +228,11 @@ class Parameters_Command(Get_Many_Parameters_Base):
filters.get_all_command_category = not has_filter_command_category filters.get_all_command_category = not has_filter_command_category
filters.get_inactive_command_category = not active_only filters.get_inactive_command_category = not active_only
filters.ids_command_category = form.id_command_category.data if has_filter_command_category else '' filters.ids_command_category = form.id_command_category.data if has_filter_command_category else ''
filters.names_command_category = form.search_text.data if has_filter_search_text else '' filters.names_command_category = form.search.data if has_filter_search_text else ''
filters.get_all_command = True filters.get_all_command = True
filters.get_inactive_command = not active_only filters.get_inactive_command = not active_only
filters.ids_command = '' filters.ids_command = ''
filters.names_command = form.search_text.data if has_filter_search_text else '' filters.names_command = form.search.data if has_filter_search_text else ''
return filters return filters
@classmethod @classmethod
@@ -244,11 +244,13 @@ class Parameters_Command(Get_Many_Parameters_Base):
filters.get_all_command_category = True filters.get_all_command_category = True
filters.get_inactive_command_category = not active_only filters.get_inactive_command_category = not active_only
filters.ids_command_category = '' filters.ids_command_category = ''
filters.names_command_category = form.search_text.data if has_filter_search_text else '' filters.names_command_category = form.search.data if has_filter_search_text else ''
filters.get_all_command = True filters.get_all_command = False
filters.get_inactive_command = not active_only filters.get_inactive_command = False
filters.ids_command = '' filters.ids_command = ''
filters.names_command = form.search_text.data if has_filter_search_text else '' filters.names_command = ''
filters.require_all_id_search_filters_met = False
filters.output_commands = False
return filters return filters
def to_json(self): def to_json(self):

View File

@@ -99,7 +99,7 @@ class Command_Category_Temp(db.Model, Base):
__table_args__ = { 'extend_existing': True } __table_args__ = { 'extend_existing': True }
id_temp = db.Column(db.Integer, primary_key=True) id_temp = db.Column(db.Integer, primary_key=True)
id_command_category = db.Column(db.Integer) id_command_category = db.Column(db.Integer)
code = db.Column(db.String(100)) # code = db.Column(db.String(100))
name = db.Column(db.String(250)) name = db.Column(db.String(250))
active = db.Column(db.Boolean) active = db.Column(db.Boolean)
guid: str = db.Column(db.String(36)) guid: str = db.Column(db.String(36))
@@ -112,7 +112,7 @@ class Command_Category_Temp(db.Model, Base):
_m = 'Command_Category_Temp.from_Command_Category' _m = 'Command_Category_Temp.from_Command_Category'
temp = cls() temp = cls()
temp.id_command_category = command_category.id_command_category temp.id_command_category = command_category.id_command_category
temp.code = command_category.code # temp.code = command_category.code
temp.name = command_category.name temp.name = command_category.name
temp.active = command_category.active temp.active = command_category.active
return temp return temp

View File

@@ -98,6 +98,7 @@ class Model_View_Base(BaseModel, ABC):
FLAG_DATA: ClassVar[str] = 'data' FLAG_DATA: ClassVar[str] = 'data'
FLAG_DATE_FROM: ClassVar[str] = Base.FLAG_DATE_FROM FLAG_DATE_FROM: ClassVar[str] = Base.FLAG_DATE_FROM
FLAG_DATE_TO: ClassVar[str] = Base.FLAG_DATE_TO FLAG_DATE_TO: ClassVar[str] = Base.FLAG_DATE_TO
FLAG_DDL_PREVIEW: ClassVar[str] = "ddl-preview"
FLAG_DELETE: ClassVar[str] = 'delete' FLAG_DELETE: ClassVar[str] = 'delete'
FLAG_DESCRIPTION: ClassVar[str] = Base.FLAG_DESCRIPTION FLAG_DESCRIPTION: ClassVar[str] = Base.FLAG_DESCRIPTION
FLAG_DETAIL: ClassVar[str] = 'detail' FLAG_DETAIL: ClassVar[str] = 'detail'

View File

@@ -25,6 +25,7 @@ import dog_training.lib.argument_validation as av
# external # external
from pydantic import BaseModel from pydantic import BaseModel
from typing import ClassVar from typing import ClassVar
from operator import attrgetter
class Model_View_Dog_Dog_Command_Link(Model_View_Dog_Base): class Model_View_Dog_Dog_Command_Link(Model_View_Dog_Base):
FLAG_HAND_SIGNAL_DESCRIPTION: ClassVar[str] = Dog_Command_Link.FLAG_HAND_SIGNAL_DESCRIPTION FLAG_HAND_SIGNAL_DESCRIPTION: ClassVar[str] = Dog_Command_Link.FLAG_HAND_SIGNAL_DESCRIPTION
@@ -47,12 +48,19 @@ class Model_View_Dog_Dog_Command_Link(Model_View_Dog_Base):
datastore = DataStore_Dog() datastore = DataStore_Dog()
parameters_filter_dog = Parameters_Dog.get_default() parameters_filter_dog = Parameters_Dog.get_default()
self.filter_dogs, errors = datastore.get_many_dog(parameters_filter_dog) self.filter_dogs, errors = datastore.get_many_dog(parameters_filter_dog)
self.form_filters.id_dog.choices += [(str(dog.id_dog), dog.name) for dog in self.filter_dogs] if len(self.filter_dogs) > 0:
self.form_filters.id_dog.choices += [(str(dog.id_dog), dog.name) for dog in self.filter_dogs]
parameters_filter_command = Parameters_Command.get_default() parameters_filter_command = Parameters_Command.get_default()
self.filter_command_categories, self.filter_commands, errors = datastore.get_many_command(parameters_filter_command) self.filter_command_categories, self.filter_commands, errors = datastore.get_many_command(parameters_filter_command)
self.form_filters.id_command_category.choices += [(str(command_category.id_command_category), command_category.name) for command_category in self.filter_command_categories] if len(self.filter_command_categories) > 0:
self.form_filters.id_command.choices += [(str(command.id_command), command.name) for command in self.filter_commands] self.form_filters.id_command_category.choices += [(str(command_category.id_command_category), command_category.name) for command_category in self.filter_command_categories]
if len(self.filter_commands) > 0:
Helper_App.console_log(f'filter commands: {self.filter_commands}')
sorted_filter_commands = self.filter_commands
sorted_filter_commands.sort(key = attrgetter('name'))
Helper_App.console_log(f'sorted filter commands: {sorted_filter_commands}')
self.form_filters.id_command.choices += [(str(command.id_command), command.name) for command in sorted_filter_commands] # .sort(key = lambda command: command[1])
Helper_App.console_log(f'Form filters: {self.form_filters}') Helper_App.console_log(f'Form filters: {self.form_filters}')
parameters_filter_dog_command_link = Parameters_Dog_Command_Link.from_form_filters_dog_command_link(self.form_filters) parameters_filter_dog_command_link = Parameters_Dog_Command_Link.from_form_filters_dog_command_link(self.form_filters)

View File

@@ -55,13 +55,21 @@
} }
#tableMain tbody tr td { #tableMain tbody tr td {
height: 5vh; height: 5vh;
padding-top: 0.5vh; /* padding-top: 0.5vh; */
} }
#tableMain tbody tr td:has(.dirty) { #tableMain tbody tr td:has(.dirty) {
background-color: var(--colour-primary); background-color: var(--colour-primary);
} }
#tableMain tbody tr:not(:last-of-type) td { #tableMain tbody tr:not(:last-of-type) td {
padding-bottom: 0.5vh; padding-bottom: 0.25vh;
}
#tableMain tbody tr td.ddl-preview div,
#tableMain tbody tr td.ddl-preview select {
padding-left: 2vh;
padding-right: 2vh;
}
#tableMain tbody tr td.ddl-preview select {
font-size: 12px;
} }
#tableMain thead tr th.active, #tableMain thead tr th.active,
#tableMain tbody tr td.active { #tableMain tbody tr td.active {

View File

@@ -1,10 +1,13 @@
/* #formFilters #search {
#formFilters .container { width: 20vh;
max-width: fit-content; min-width: 20vh;
} }
*/
#tableMain thead tr th,
#tableMain tbody tr td {
height: 3vh;
}
#tableMain tbody tr td.name .name { #tableMain tbody tr td.name .name {
border: 1px solid var(--colour-accent); border: 1px solid var(--colour-accent);
/* /*
@@ -22,11 +25,12 @@
box-sizing: border-box; box-sizing: border-box;
*/ */
} }
/*
#tableMain thead tr th.code, #tableMain thead tr th.code,
#tableMain tbody tr td.code, #tableMain tbody tr td.code,
*/
#tableMain thead tr th.name , #tableMain thead tr th.name ,
#tableMain tbody tr td.name { #tableMain tbody tr td.name {
width: 35vh; width: 50vh;
min-width: 35vh; min-width: 50vh;
} }

View File

@@ -4,3 +4,8 @@
max-width: fit-content; max-width: fit-content;
} }
*/ */
#tableMain thead tr th.can-have-button,
#tableMain tbody tr td.can-have-button {
width: 6vh;
min-width: 6vh;
}

View File

@@ -208,7 +208,12 @@ export default class TableBasePage extends BasePage {
} }
let formElement = this.getFormFilters(); let formElement = this.getFormFilters();
let comment = DOM.getElementValueCurrent(document.querySelector(idTextareaConfirm)); let comment = DOM.getElementValueCurrent(document.querySelector(idTextareaConfirm));
/*
Utils.consoleLogIfNotProductionEnvironment({ formElement, comment, records }); Utils.consoleLogIfNotProductionEnvironment({ formElement, comment, records });
Utils.consoleLogIfNotProductionEnvironment('records');
Utils.consoleLogIfNotProductionEnvironment(records);
debugger;
*/
this.callSaveTableContent(records, formElement, comment) this.callSaveTableContent(records, formElement, comment)
.then(data => { .then(data => {
if (data[flagStatus] == flagSuccess) { if (data[flagStatus] == flagSuccess) {

View File

@@ -32,6 +32,7 @@ export default class PageDogCommandCategories extends TableBasePage {
if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); } if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); }
} }
getJsonRow(row) { getJsonRow(row) {
Utils.consoleLogIfNotProductionEnvironment({ row });
if (row == null) return; if (row == null) return;
let inputCode = row.querySelector('td.' + flagCode + ' .' + flagCode); let inputCode = row.querySelector('td.' + flagCode + ' .' + flagCode);
let inputName = row.querySelector('td.' + flagName + ' .' + flagName); let inputName = row.querySelector('td.' + flagName + ' .' + flagName);

View File

@@ -37,12 +37,17 @@ export default class PageDogCommands extends TableBasePage {
} }
getJsonRow(row) { getJsonRow(row) {
if (row == null) return; if (row == null) return;
let inputName = row.querySelector('td.' + flagName + ' textarea'); let inputName = row.querySelector('td.' + flagName + ' .' + flagName);
let inputHandSignalDefaultDescription = row.querySelector('td.' + flagHandSignalDefaultDescription + ' textarea'); let inputHandSignalDefaultDescription = row.querySelector('td.' + flagHandSignalDefaultDescription + ' .' + flagHandSignalDefaultDescription);
let inputCanHaveButton = row.querySelector('td.' + flagCanHaveButton + ' input'); let inputCanHaveButton = row.querySelector('td.' + flagCanHaveButton + ' .' + flagCanHaveButton);
let inputNotes = row.querySelector('td.' + flagNotes + ' textarea'); let inputNotes = row.querySelector('td.' + flagNotes + ' .' + flagNotes);
let buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive); let buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive);
/*
Utils.consoleLogIfNotProductionEnvironment({ inputName, inputHandSignalDefaultDescription, inputCanHaveButton, inputNotes, buttonActive });
debugger;
*/
let jsonRow = {}; let jsonRow = {};
jsonRow[attrIdCommand] = row.getAttribute(attrIdCommand); jsonRow[attrIdCommand] = row.getAttribute(attrIdCommand);
jsonRow[attrIdCommandCategory] = this.getIdCommandCategoryRow(row); jsonRow[attrIdCommandCategory] = this.getIdCommandCategoryRow(row);

View File

@@ -1,7 +1,7 @@
{% if is_blank_row %} {% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_COMMAND }}" {{ model.ATTR_ID_COMMAND }}> <tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_COMMAND }}" {{ model.ATTR_ID_COMMAND }}>
<td class="{{ model.FLAG_COMMAND_CATEGORY }}"> <td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %} {% include 'components/dog/_preview_DDL_command_category.html' %}
</td> </td>
<td class="{{ model.FLAG_NAME }}"> <td class="{{ model.FLAG_NAME }}">
@@ -28,7 +28,7 @@
{% else %} {% else %}
<tr class="{{ model.FLAG_COMMAND }}" {{ model.ATTR_ID_COMMAND }}="{{ command.id_command }}"> <tr class="{{ model.FLAG_COMMAND }}" {{ model.ATTR_ID_COMMAND }}="{{ command.id_command }}">
{% set command_category = command.command_category %} {% set command_category = command.command_category %}
<td class="{{ model.FLAG_COMMAND_CATEGORY }}"> <td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %} {% include 'components/dog/_preview_DDL_command_category.html' %}
</td> </td>
<td class="{{ model.FLAG_NAME }}"> <td class="{{ model.FLAG_NAME }}">

View File

@@ -1,10 +1,12 @@
{% if is_blank_row %} {% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_COMMAND_CATEGORY }}" {{ model.ATTR_ID_COMMAND_CATEGORY }}> <tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_COMMAND_CATEGORY }}" {{ model.ATTR_ID_COMMAND_CATEGORY }}>
{#
<td class="{{ model.FLAG_CODE }}"> <td class="{{ model.FLAG_CODE }}">
<input type="text" class="{{ model.FLAG_CODE }}" <input type="text" class="{{ model.FLAG_CODE }}"
{{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} /> {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
</td> </td>
#}
<td class="{{ model.FLAG_NAME }}"> <td class="{{ model.FLAG_NAME }}">
<input type="text" class="{{ model.FLAG_NAME }}" <input type="text" class="{{ model.FLAG_NAME }}"
{{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} /> {{ model.ATTR_VALUE_CURRENT }} {{ model.ATTR_VALUE_PREVIOUS }} />
@@ -14,12 +16,14 @@
</tr> </tr>
{% else %} {% else %}
<tr class="{{ model.FLAG_COMMAND_CATEGORY }}" {{ model.ATTR_ID_COMMAND_CATEGORY }}="{{ command_category.id_command_category }}"> <tr class="{{ model.FLAG_COMMAND_CATEGORY }}" {{ model.ATTR_ID_COMMAND_CATEGORY }}="{{ command_category.id_command_category }}">
{#
<td class="{{ model.FLAG_CODE }}"> <td class="{{ model.FLAG_CODE }}">
<input type="text" class="{{ model.FLAG_CODE }}" <input type="text" class="{{ model.FLAG_CODE }}"
value="{{ model.format_null_string_as_blank(command_category.code)|escape }}" value="{{ model.format_null_string_as_blank(command_category.code)|escape }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ model.format_null_string_as_blank(command_category.code)|escape }}" {{ model.ATTR_VALUE_CURRENT }}="{{ model.format_null_string_as_blank(command_category.code)|escape }}"
{{ model.ATTR_VALUE_PREVIOUS }}="{{ model.format_null_string_as_blank(command_category.code)|escape }}" /> {{ model.ATTR_VALUE_PREVIOUS }}="{{ model.format_null_string_as_blank(command_category.code)|escape }}" />
</td> </td>
#}
<td class="{{ model.FLAG_NAME }}"> <td class="{{ model.FLAG_NAME }}">
<input type="text" class="{{ model.FLAG_NAME }}" <input type="text" class="{{ model.FLAG_NAME }}"
{{ model.ATTR_VALUE_CURRENT }}="{{ model.format_null_string_as_blank(command_category.name)|escape }}" {{ model.ATTR_VALUE_CURRENT }}="{{ model.format_null_string_as_blank(command_category.name)|escape }}"

View File

@@ -1,13 +1,13 @@
{% if is_blank_row %} {% if is_blank_row %}
<tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}> <tr class="{{ model.FLAG_ROW_NEW }} {{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}>
<td class="{{ model.FLAG_DOG }}"> <td class="{{ model.FLAG_DOG }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_dog.html' %} {% include 'components/dog/_preview_DDL_dog.html' %}
</td> </td>
<td class="{{ model.FLAG_COMMAND_CATEGORY }}"> <td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %} {% include 'components/dog/_preview_DDL_command_category.html' %}
</td> </td>
<td class="{{ model.FLAG_COMMAND }}"> <td class="{{ model.FLAG_COMMAND }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command.html' %} {% include 'components/dog/_preview_DDL_command.html' %}
</td> </td>
<td class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}"> <td class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}">
@@ -26,15 +26,15 @@
{% else %} {% else %}
<tr class="{{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}="{{ link.id_link }}"> <tr class="{{ model.FLAG_DOG_COMMAND_LINK }}" {{ model.ATTR_ID_DOG_COMMAND_LINK }}="{{ link.id_link }}">
{% set dog = link.dog %} {% set dog = link.dog %}
<td class="{{ model.FLAG_DOG }}"> <td class="{{ model.FLAG_DOG }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_dog.html' %} {% include 'components/dog/_preview_DDL_dog.html' %}
</td> </td>
{% set command_category = link.command.command_category %} {% set command_category = link.command.command_category %}
<td class="{{ model.FLAG_COMMAND_CATEGORY }}"> <td class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command_category.html' %} {% include 'components/dog/_preview_DDL_command_category.html' %}
</td> </td>
{% set command = link.command %} {% set command = link.command %}
<td class="{{ model.FLAG_COMMAND }}"> <td class="{{ model.FLAG_COMMAND }} {{ model.FLAG_DDL_PREVIEW }}">
{% include 'components/dog/_preview_DDL_command.html' %} {% include 'components/dog/_preview_DDL_command.html' %}
</td> </td>
<td class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}"> <td class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}">

View File

@@ -4,8 +4,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8"/> <meta charset="utf-8"/>
<title>{{ model.title }} - DOG</title> <title>{{ model.title }} - DOG</title>
<meta name="description" content="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." /> <meta name="description" content="Explore our dog training management web app." />
<meta name="keywords" content="software engineering, software development, software design, software testing, software maintenance, software support, software consultancy, software training, software documentation, software project management, software quality assurance, software process improvement, software configuration management, software requirements engineering, software architecture, software design patterns, software design principles, software testing principles, software testing techniques, software testing tools, software testing automation, software testing manual, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing scrum, software testing kanban, software testing lean, software testing waterfall, software testing v-model, software testing spiral, software testing incremental, software testing iterative, software testing adaptive, software testing predictive, software testing hybrid, software testing manual, software testing automated, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing scrum, software testing kanban, software testing lean, software testing waterfall, software testing v-model, software testing spiral, software testing incremental, software testing iterative, software testing adaptive, software testing predictive, software testing hybrid, software testing manual, software testing automated, software testing exploratory, software testing regression, software testing performance, software testing security, software testing usability, software testing accessibility, software testing compatibility, software testing reliability, software testing maintainability, software testing portability, software testing scalability, software testing test-driven development, software testing behaviour-driven development, software testing acceptance test-driven development, software testing continuous integration, software testing continuous deployment, software testing continuous delivery, software testing continuous monitoring, software testing continuous feedback, software testing continuous improvement, software testing agile, software testing, MySQL, Python, Microsoft SQL Server, MS SQL Server, C#, Firebase, Node.js, Java, HTML5, React, CSS3, Flask, JavaScript, MVC, REST" /> <meta name="keywords" content="dog training, dog, training" />
<link rel="canonical" href="{{ model.get_url_host() }}" /> <link rel="canonical" href="{{ model.get_url_host() }}" />
<script type="application/ld+json"> <script type="application/ld+json">
{ {
@@ -226,7 +226,7 @@
<img class="header-logo" src="{{ url_for('static', filename='images/Logo.png') }}" alt="{{ model.NAME_COMPANY }} logo" aria-label="{{ model.NAME_COMPANY }} logo" tabindex="0"> <img class="header-logo" src="{{ url_for('static', filename='images/Logo.png') }}" alt="{{ model.NAME_COMPANY }} logo" aria-label="{{ model.NAME_COMPANY }} logo" tabindex="0">
</div> </div>
<div class="{{ model.FLAG_CONTAINER }}" style="width: 75vw; min-width: 65vw; max-width: 80vw;"> <div class="{{ model.FLAG_CONTAINER }}" style="width: 75vw; min-width: 65vw; max-width: 80vw;">
<h1 class="company-name">{{ model.NAME_COMPANY }} - {{ model.title }}</h1> <h1 class="company-name">Dog Training - {{ model.title }}</h1>
</div> </div>
{# {#
<div class="{{ model.FLAG_CONTAINER }}" style="width: 7vw; min-width: 7vw; max-width: 15vw; justify-content: flex-end; "> <!-- padding-left: 25%; --> <div class="{{ model.FLAG_CONTAINER }}" style="width: 7vw; min-width: 7vw; max-width: 15vw; justify-content: flex-end; "> <!-- padding-left: 25%; -->

View File

@@ -32,7 +32,9 @@
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_COMMAND_CATEGORY }}"> <table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_COMMAND_CATEGORY }}">
<thead> <thead>
<tr class="{{ model.FLAG_COMMAND_CATEGORY }}"> <tr class="{{ model.FLAG_COMMAND_CATEGORY }}">
<th class="{{ model.FLAG_CODE }}">Code</th> {#
<th class="{{ model.FLAG_CODE }}">Code</th>
#}
<th class="{{ model.FLAG_NAME }}">Name</th> <th class="{{ model.FLAG_NAME }}">Name</th>
<th class="{{ model.FLAG_ACTIVE }}"> <th class="{{ model.FLAG_ACTIVE }}">
{% set class_name = model.FLAG_ACTIVE %} {% set class_name = model.FLAG_ACTIVE %}

View File

@@ -39,7 +39,7 @@
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_COMMAND }}"> <table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_COMMAND }}">
<thead> <thead>
<tr class="{{ model.FLAG_COMMAND }}"> <tr class="{{ model.FLAG_COMMAND }}">
<th class="{{ model.FLAG_COMMAND_CATEGORY }}">Command Category</th> <th class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">Command Category</th>
<th class="{{ model.FLAG_NAME }}">Command</th> <th class="{{ model.FLAG_NAME }}">Command</th>
<th class="{{ model.FLAG_HAND_SIGNAL_DEFAULT_DESCRIPTION }}">Default Hand Signal</th> <th class="{{ model.FLAG_HAND_SIGNAL_DEFAULT_DESCRIPTION }}">Default Hand Signal</th>
<th class="{{ model.FLAG_CAN_HAVE_BUTTON }}">Can Have Button?</th> <th class="{{ model.FLAG_CAN_HAVE_BUTTON }}">Can Have Button?</th>

View File

@@ -53,9 +53,9 @@
<table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_DOG_COMMAND_LINK }}"> <table id="{{ model.ID_TABLE_MAIN }}" class="{{ model.FLAG_ROW }} {{ model.FLAG_CARD }} {{ model.FLAG_DOG_COMMAND_LINK }}">
<thead> <thead>
<tr class="{{ model.FLAG_DOG_COMMAND_LINK }}"> <tr class="{{ model.FLAG_DOG_COMMAND_LINK }}">
<th class="{{ model.FLAG_DOG }}">Dog</th> <th class="{{ model.FLAG_DOG }} {{ model.FLAG_DDL_PREVIEW }}">Dog</th>
<th class="{{ model.FLAG_COMMAND_CATEGORY }}">Command Category</th> <th class="{{ model.FLAG_COMMAND_CATEGORY }} {{ model.FLAG_DDL_PREVIEW }}">Command Category</th>
<th class="{{ model.FLAG_COMMAND }}">Command</th> <th class="{{ model.FLAG_COMMAND }} {{ model.FLAG_DDL_PREVIEW }}">Command</th>
<th class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}">Hand Signal</th> <th class="{{ model.FLAG_HAND_SIGNAL_DESCRIPTION }}">Hand Signal</th>
<th class="{{ model.FLAG_NOTES }}">Notes</th> <th class="{{ model.FLAG_NOTES }}">Notes</th>
<th class="{{ model.FLAG_ACTIVE }}"> <th class="{{ model.FLAG_ACTIVE }}">

View File

@@ -7,3 +7,6 @@ Print page option on Dog Command Links Page, Assessment-single Page for test ses
UI warning for attempt to create duplicate UI warning for attempt to create duplicate
Dog Command Links page Dog filter - many replicated options
Layout logo