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:
2
app.py
2
app.py
@@ -17,6 +17,7 @@ Initializes the Flask application, sets the configuration based on the environme
|
|||||||
# IMPORTS
|
# IMPORTS
|
||||||
# internal
|
# internal
|
||||||
from config import app_config, Config
|
from config import app_config, Config
|
||||||
|
from controllers.dog.assessment import routes_dog_assessment
|
||||||
from controllers.dog.button_icon import routes_dog_button_icon
|
from controllers.dog.button_icon import routes_dog_button_icon
|
||||||
from controllers.dog.command import routes_dog_command
|
from controllers.dog.command import routes_dog_command
|
||||||
from controllers.dog.command_button_link import routes_dog_command_button_link
|
from controllers.dog.command_button_link import routes_dog_command_button_link
|
||||||
@@ -125,6 +126,7 @@ app.register_blueprint(routes_dog_home)
|
|||||||
app.register_blueprint(routes_dog_location)
|
app.register_blueprint(routes_dog_location)
|
||||||
app.register_blueprint(routes_dog_button_icon)
|
app.register_blueprint(routes_dog_button_icon)
|
||||||
app.register_blueprint(routes_dog_command_button_link)
|
app.register_blueprint(routes_dog_command_button_link)
|
||||||
|
app.register_blueprint(routes_dog_assessment)
|
||||||
app.register_blueprint(routes_legal)
|
app.register_blueprint(routes_legal)
|
||||||
app.register_blueprint(routes_user)
|
app.register_blueprint(routes_user)
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ class Base():
|
|||||||
FLAG_PHONE_NUMBER: ClassVar[str] = 'phone_number'
|
FLAG_PHONE_NUMBER: ClassVar[str] = 'phone_number'
|
||||||
FLAG_POSTCODE: ClassVar[str] = 'postcode'
|
FLAG_POSTCODE: ClassVar[str] = 'postcode'
|
||||||
FLAG_PRIORITY: ClassVar[str] = 'priority'
|
FLAG_PRIORITY: ClassVar[str] = 'priority'
|
||||||
|
FLAG_QUANTITY: ClassVar[str] = 'quantity'
|
||||||
FLAG_REGION: ClassVar[str] = 'region'
|
FLAG_REGION: ClassVar[str] = 'region'
|
||||||
FLAG_ROWS: ClassVar[str] = 'rows'
|
FLAG_ROWS: ClassVar[str] = 'rows'
|
||||||
FLAG_SEARCH: ClassVar[str] = 'search'
|
FLAG_SEARCH: ClassVar[str] = 'search'
|
||||||
|
|||||||
357
business_objects/dog/assessment.py
Normal file
357
business_objects/dog/assessment.py
Normal file
@@ -0,0 +1,357 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Assessment Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.dog.command import Command
|
||||||
|
# from business_objects.dog.command_category import Command_Category
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
from business_objects.dog.dog import Dog
|
||||||
|
from business_objects.dog.lighting_level import Lighting_Level
|
||||||
|
from business_objects.dog.location import Location
|
||||||
|
from business_objects.dog.obedience_level import Obedience_Level
|
||||||
|
from business_objects.dog.weather import Weather
|
||||||
|
from business_objects.dog.user import User
|
||||||
|
from extensions import db
|
||||||
|
from forms.dog.assessment import Filters_Assessment
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
import lib.argument_validation as av
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar, Optional
|
||||||
|
|
||||||
|
|
||||||
|
class Assessment(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_ASSESSMENT: ClassVar[str] = Filters_Assessment.ATTR_ID_ASSESSMENT
|
||||||
|
FLAG_ASSESSMENT: ClassVar[str] = 'assessment'
|
||||||
|
FLAG_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = 'assessment_command_modality_link'
|
||||||
|
FLAG_DISTRACTION: ClassVar[str] = 'distraction'
|
||||||
|
FLAG_TEMPERATURE_CELCIUS: ClassVar[str] = 'temperature_celcius'
|
||||||
|
FLAG_USER_HANDLER: ClassVar[str] = Filters_Assessment.FLAG_USER_HANDLER
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_ASSESSMENT
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = ATTR_ID_ASSESSMENT
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Assessment'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_assessment = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_weather = db.Column(db.Integer)
|
||||||
|
id_lighting_level = db.Column(db.Integer)
|
||||||
|
id_location = db.Column(db.Integer)
|
||||||
|
id_user_handler = db.Column(db.Integer)
|
||||||
|
notes = db.Column(db.Text)
|
||||||
|
temperature_celcius = db.Column(db.Numeric(5, 2))
|
||||||
|
# difficulty_level = db.Column(db.Float)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
created_on = db.Column(db.DateTime)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_assessment = 0
|
||||||
|
self.is_new = False
|
||||||
|
self.weather = None
|
||||||
|
self.lighting_level = None
|
||||||
|
self.location = None
|
||||||
|
self.user_handler = None
|
||||||
|
self.distractions = None
|
||||||
|
self.assessment_command_modality_links = None
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||||
|
assessment = cls()
|
||||||
|
assessment.id_assessment = query_row[0]
|
||||||
|
assessment.id_weather = query_row[1]
|
||||||
|
assessment.id_lighting_level = query_row[3]
|
||||||
|
assessment.id_location = query_row[5]
|
||||||
|
assessment.id_user_handler = query_row[7]
|
||||||
|
assessment.notes = query_row[10]
|
||||||
|
assessment.temperature_celcius = query_row[11]
|
||||||
|
assessment.active = av.input_bool(query_row[12], 'active', _m)
|
||||||
|
|
||||||
|
assessment.weather = Weather.from_db_assessment(query_row)
|
||||||
|
assessment.lighting_level = Lighting_Level.from_db_assessment(query_row)
|
||||||
|
assessment.location = Location.from_db_assessment(query_row)
|
||||||
|
assessment.user_handler = User.from_db_assessment(query_row)
|
||||||
|
return assessment
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction'
|
||||||
|
assessment = cls()
|
||||||
|
assessment.id_assessment = query_row[1]
|
||||||
|
return assessment
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_command_modality_link(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||||
|
assessment = cls()
|
||||||
|
assessment.id_assessment = query_row[1]
|
||||||
|
return assessment
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
|
assessment = cls()
|
||||||
|
if json is None: return assessment
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
assessment.id_assessment = json.get(Assessment.ATTR_ID_ASSESSMENT, -1)
|
||||||
|
assessment.id_weather = json[Weather.ATTR_ID_WEATHER]
|
||||||
|
assessment.id_lighting_level = json[Lighting_Level.ATTR_ID_LIGHTING_LEVEL]
|
||||||
|
assessment.id_location = json[Location.ATTR_ID_LOCATION]
|
||||||
|
assessment.user_handler = json[cls.FLAG_USER_HANDLER]
|
||||||
|
assessment.notes = json[cls.FLAG_NOTES]
|
||||||
|
assessment.temperature_celcius = json[cls.FLAG_TEMPERATURE_CELCIUS]
|
||||||
|
assessment.active = json[cls.FLAG_ACTIVE]
|
||||||
|
assessment.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||||
|
# assessment.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
|
||||||
|
# Helper_App.console_log(f'Dog Command Link: {assessment}')
|
||||||
|
return assessment
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_ASSESSMENT: self.id_assessment
|
||||||
|
, Weather.ATTR_ID_WEATHER: { Weather.ATTR_ID_WEATHER: None } if self.weather is None else self.weather.to_json()
|
||||||
|
, Lighting_Level.ATTR_ID_LIGHTING_LEVEL: { Lighting_Level.ATTR_ID_LIGHTING_LEVEL: None } if self.lighting_level is None else self.lighting_level.to_json()
|
||||||
|
, Location.ATTR_ID_LOCATION: { Location.ATTR_ID_LOCATION: None } if self.weather is None else self.weather.to_json()
|
||||||
|
, self.FLAG_USER_HANDLER: { User.ATTR_ID_USER: None } if self.user_handler is None else self.user_handler.to_json()
|
||||||
|
, self.FLAG_NOTES: self.notes
|
||||||
|
, self.FLAG_TEMPERATURE_CELCIUS: self.temperature_celcius
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
, self.FLAG_CREATED_ON: self.created_on
|
||||||
|
|
||||||
|
, self.FLAG_DISTRACTION: [distraction.to_json() for distraction in self.distractions] if (self.distractions is not None and len(self.distractions) > 0) else []
|
||||||
|
, self.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK: [link.to_json() for link in self.assessment_command_modality_links] if (self.assessment_command_modality_links is not None and len(self.assessment_command_modality_links) > 0) else []
|
||||||
|
}
|
||||||
|
# , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_ASSESSMENT}: {self.id_assessment}
|
||||||
|
{Weather.FLAG_WEATHER}: {self.weather}
|
||||||
|
{Lighting_Level.FLAG_LIGHTING_LEVEL}: {self.lighting_level}
|
||||||
|
{Location.FLAG_LOCATION}: {self.location}
|
||||||
|
{self.FLAG_USER_HANDLER}: {self.user_handler}
|
||||||
|
{self.FLAG_NOTES}: {self.notes}
|
||||||
|
{self.FLAG_TEMPERATURE_CELCIUS}: {self.temperature_celcius}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category}
|
||||||
|
|
||||||
|
class Assessment_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Assessment_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_assessment = db.Column(db.Integer)
|
||||||
|
id_weather = db.Column(db.Integer)
|
||||||
|
id_lighting_level = db.Column(db.Integer)
|
||||||
|
id_location = db.Column(db.Integer)
|
||||||
|
id_user_handler = db.Column(db.Integer)
|
||||||
|
notes = db.Column(db.Text)
|
||||||
|
temperature_celcius = db.Column(db.Numeric(5, 2))
|
||||||
|
# difficulty_level = db.Column(db.Float)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
# created_on = db.Column(db.DateTime)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_assessment(cls, assessment):
|
||||||
|
_m = 'Assessment_Temp.from_assessment'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_assessment = assessment.id_assessment
|
||||||
|
temp.id_weather = assessment.id_weather
|
||||||
|
temp.id_lighting_level = assessment.id_lighting_level
|
||||||
|
temp.id_location = assessment.id_location
|
||||||
|
temp.id_user_handler = assessment.id_user_handler
|
||||||
|
temp.notes = assessment.notes
|
||||||
|
temp.temperature_celcius = assessment.temperature_celcius
|
||||||
|
temp.active = assessment.active
|
||||||
|
# temp.created_on = assessment.created_on
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Assessment(Get_Many_Parameters_Base):
|
||||||
|
get_all_assessment: bool
|
||||||
|
get_inactive_assessment: bool
|
||||||
|
ids_assessment: str
|
||||||
|
notes_assessment: str
|
||||||
|
min_temperature_assessment: Optional[float]
|
||||||
|
max_temperature_assessment: Optional[float]
|
||||||
|
get_all_weather: bool
|
||||||
|
get_inactive_weather: bool
|
||||||
|
ids_weather: str
|
||||||
|
names_weather: str
|
||||||
|
get_all_lighting_level: bool
|
||||||
|
get_inactive_lighting_level: bool
|
||||||
|
ids_lighting_level: str
|
||||||
|
names_lighting_level: str
|
||||||
|
get_all_location: bool
|
||||||
|
get_inactive_location: bool
|
||||||
|
ids_location: str
|
||||||
|
names_location: str
|
||||||
|
get_all_user_handler: bool
|
||||||
|
get_inactive_user_handler: bool
|
||||||
|
ids_user_handler: str
|
||||||
|
#auth0_ids_user_handler: str
|
||||||
|
names_user_handler: str
|
||||||
|
emails_user_handler: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_assessment = True
|
||||||
|
, get_inactive_assessment = False
|
||||||
|
, ids_assessment = ''
|
||||||
|
, notes_assessment = ''
|
||||||
|
, min_temperature_assessment = None
|
||||||
|
, max_temperature_assessment = None
|
||||||
|
, get_all_weather = True
|
||||||
|
, get_inactive_weather = False
|
||||||
|
, ids_weather = ''
|
||||||
|
, names_weather = ''
|
||||||
|
, get_all_lighting_level = True
|
||||||
|
, get_inactive_lighting_level = False
|
||||||
|
, ids_lighting_level = ''
|
||||||
|
, names_lighting_level = ''
|
||||||
|
, get_all_location = True
|
||||||
|
, get_inactive_location = False
|
||||||
|
, ids_location = ''
|
||||||
|
, names_location = ''
|
||||||
|
, get_all_user_handler = True
|
||||||
|
, get_inactive_user_handler = False
|
||||||
|
, ids_user_handler = ''
|
||||||
|
# , auth0_ids_user_handler = ''
|
||||||
|
, names_user_handler = ''
|
||||||
|
, emails_user_handler = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_assessment = json.get('a_get_all_assessment', False)
|
||||||
|
, get_inactive_assessment = json.get('a_get_inactive_assessment', False)
|
||||||
|
, ids_assessment = json.get('a_ids_assessment', '')
|
||||||
|
, notes_assessment = json.get('a_notes_assessment', '')
|
||||||
|
, min_temperature_assessment = json.get('a_min_temperature_assessment', None)
|
||||||
|
, max_temperature_assessment = json.get('a_max_temperature_assessment', None)
|
||||||
|
, get_all_weather = json.get('a_get_all_weather', False)
|
||||||
|
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||||
|
, ids_weather = json.get('a_ids_weather', '')
|
||||||
|
, names_weather = json.get('a_names_weather', '')
|
||||||
|
, get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||||
|
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||||
|
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||||
|
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||||
|
, get_all_location = json.get('a_get_all_location', False)
|
||||||
|
, get_inactive_location = json.get('a_get_inactive_location', False)
|
||||||
|
, ids_location = json.get('a_ids_location', '')
|
||||||
|
, names_location = json.get('a_names_location', '')
|
||||||
|
, get_all_user_handler = json.get('a_get_all_user_handler', False)
|
||||||
|
, get_inactive_user_handler = json.get('a_get_inactive_user_handler', False)
|
||||||
|
, ids_user_handler = json.get('a_ids_user_handler', '')
|
||||||
|
# , auth0_ids_user_handler = json.get('a_ids_user_handler', '')
|
||||||
|
, names_user_handler = json.get('a_names_user_handler', '')
|
||||||
|
, emails_user_handler = json.get('a_emails_user_handler', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_assessment(cls, form):
|
||||||
|
_m = f'{cls.__qualname__}.from_form_filters_assessment'
|
||||||
|
Helper_App.console_log(_m)
|
||||||
|
Helper_App.console_log(f'Filters: {form}')
|
||||||
|
av.val_instance(form, 'form', _m, Filters_Assessment)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
has_filter_weather = not (form.id_weather.data == '0' or form.id_weather.data == '' or form.id_weather.data is None)
|
||||||
|
has_filter_lighting_level = not (form.id_lighting_level.data == '0' or form.id_lighting_level.data == '' or form.id_lighting_level.data is None)
|
||||||
|
has_filter_location = not (form.id_location.data == '0' or form.id_location.data == '' or form.id_location.data is None)
|
||||||
|
has_filter_user_handler = not (form.id_user_handler.data == '0' or form.id_user_handler.data == '' or form.id_user_handler.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||||
|
Helper_App.console_log(f'''
|
||||||
|
has_filter_search_text: {has_filter_search_text}
|
||||||
|
has_filter_weather: {has_filter_weather}
|
||||||
|
has_filter_lighting_level: {has_filter_lighting_level}
|
||||||
|
has_filter_location: {has_filter_location}
|
||||||
|
has_filter_user_handler: {has_filter_user_handler}
|
||||||
|
active_only: {active_only}
|
||||||
|
''')
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_assessment = True
|
||||||
|
filters.get_inactive_assessment = not active_only
|
||||||
|
filters.ids_assessment = ''
|
||||||
|
filters.get_all_weather = not has_filter_weather
|
||||||
|
filters.get_inactive_weather = not active_only
|
||||||
|
filters.ids_weather = form.id_weather.data if has_filter_weather else ''
|
||||||
|
filters.names_weather = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_lighting_level = not has_filter_lighting_level
|
||||||
|
filters.get_inactive_lighting_level = not active_only
|
||||||
|
filters.ids_lighting_level = form.id_lighting_level.data if has_filter_lighting_level else ''
|
||||||
|
filters.names_lighting_level = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_location = not has_filter_location
|
||||||
|
filters.get_inactive_location = not active_only
|
||||||
|
filters.ids_location = form.id_location.data if has_filter_location else ''
|
||||||
|
filters.names_location = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_user_handler = not has_filter_user_handler
|
||||||
|
filters.get_inactive_user_handler = not active_only
|
||||||
|
filters.ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||||
|
# filters.auth0_ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||||
|
filters.names_user_handler = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.emails_user_handler = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_assessment': self.get_all_assessment
|
||||||
|
, 'a_get_inactive_assessment': self.get_inactive_assessment
|
||||||
|
, 'a_ids_assessment': self.ids_assessment
|
||||||
|
, 'a_notes_assessment': self.notes_assessment
|
||||||
|
, 'a_min_temperature_assessment': self.min_temperature_assessment
|
||||||
|
, 'a_max_temperature_assessment': self.max_temperature_assessment
|
||||||
|
, 'get_all_weather': self.get_all_weather
|
||||||
|
, 'get_inactive_weather': self.get_inactive_weather
|
||||||
|
, 'ids_weather': self.ids_weather
|
||||||
|
, 'names_weather': self.names_weather
|
||||||
|
, 'get_all_lighting_level': self.get_all_lighting_level
|
||||||
|
, 'get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||||
|
, 'ids_lighting_level': self.ids_lighting_level
|
||||||
|
, 'names_lighting_level': self.names_lighting_level
|
||||||
|
, 'get_all_location': self.get_all_location
|
||||||
|
, 'get_inactive_location': self.get_inactive_location
|
||||||
|
, 'ids_location': self.ids_location
|
||||||
|
, 'names_location': self.names_location
|
||||||
|
, 'get_all_user_handler': self.get_all_user_handler
|
||||||
|
, 'get_inactive_user_handler': self.get_inactive_user_handler
|
||||||
|
, 'ids_user_handler': self.ids_user_handler
|
||||||
|
#, 'auth0_ids_user_handler': self.ids_user_handler
|
||||||
|
, 'names_user_handler': self.names_user_handler
|
||||||
|
, 'emails_user_handler': self.emails_user_handler
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
513
business_objects/dog/assessment_command_modality_link.py
Normal file
513
business_objects/dog/assessment_command_modality_link.py
Normal file
@@ -0,0 +1,513 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Assessment_Command_Modality_Link Command Modality Link Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.dog.assessment import Assessment
|
||||||
|
from business_objects.dog.bribe import Bribe
|
||||||
|
from business_objects.dog.command import Command
|
||||||
|
# from business_objects.dog.command_category import Command_Category
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
from business_objects.dog.dog import Dog
|
||||||
|
from business_objects.dog.command import Command
|
||||||
|
from business_objects.dog.command_modality import Command_Modality
|
||||||
|
from business_objects.dog.obedience_level import Obedience_Level
|
||||||
|
from business_objects.dog.user import User
|
||||||
|
from extensions import db
|
||||||
|
from forms.dog.assessment import Filters_Assessment
|
||||||
|
# from forms.dog.assessment_command_modality_link import Filters_Assessment_Command_Modality_Link
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
import lib.argument_validation as av
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar, Optional
|
||||||
|
|
||||||
|
|
||||||
|
class Assessment_Command_Modality_Link(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = 'id_link'
|
||||||
|
FLAG_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = Assessment.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK
|
||||||
|
FLAG_ASSESSMENT_RESPONSE: ClassVar[str] = 'assessment_response'
|
||||||
|
FLAG_DISTANCE_FROM_HANDLER: ClassVar[str] = 'distance-from-handler'
|
||||||
|
FLAG_IS_IN_HEARING_RANGE_OF_HANDLER: ClassVar[str] = 'is-in-hearing-range-of-handler'
|
||||||
|
FLAG_IS_IN_SCENT_RANGE_OF_HANDLER: ClassVar[str] = 'is-in-scent-range-of-handler'
|
||||||
|
FLAG_IS_IN_SIGHT_OF_HANDLER: ClassVar[str] = 'is-in-sight-of-handler'
|
||||||
|
FLAG_IS_ON_LEAD: ClassVar[str] = 'is-on-lead'
|
||||||
|
FLAG_TRIAL_COUNT: ClassVar[str] = 'trial-count'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Assessment_Command_Modality_Link'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_link = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_assessment = db.Column(db.Integer)
|
||||||
|
id_command = db.Column(db.Integer)
|
||||||
|
id_command_modality = db.Column(db.Integer)
|
||||||
|
id_bribe = db.Column(db.Integer)
|
||||||
|
distance_from_handler = db.Column(db.Float)
|
||||||
|
is_in_hearing_range_of_handler = db.Column(db.Boolean)
|
||||||
|
is_in_scent_range_of_handler = db.Column(db.Boolean)
|
||||||
|
is_in_sight_of_handler = db.Column(db.Boolean)
|
||||||
|
is_on_lead = db.Column(db.Boolean)
|
||||||
|
trial_count = db.Column(db.Integer)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
created_on = db.Column(db.DateTime)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_link = 0
|
||||||
|
self.is_new = False
|
||||||
|
self.assessment = None
|
||||||
|
self.command = None
|
||||||
|
self.command_modality = None
|
||||||
|
self.bribe = None
|
||||||
|
self.assessment_responses = None
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_command_modality_link(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||||
|
assessment_command_modality_link = cls()
|
||||||
|
assessment_command_modality_link.id_link = query_row[0]
|
||||||
|
assessment_command_modality_link.id_assessment = query_row[1]
|
||||||
|
assessment_command_modality_link.id_command = query_row[5]
|
||||||
|
assessment_command_modality_link.id_command_modality = query_row[7]
|
||||||
|
assessment_command_modality_link.id_bribe = query_row[9]
|
||||||
|
assessment_command_modality_link.distance_from_handler = query_row[11]
|
||||||
|
assessment_command_modality_link.is_in_hearing_range_of_handler = av.input_bool(query_row[12], 'is_in_hearing_range_of_handler', _m)
|
||||||
|
assessment_command_modality_link.is_in_scent_range_of_handler = av.input_bool(query_row[13], 'is_in_scent_range_of_handler', _m)
|
||||||
|
assessment_command_modality_link.is_in_sight_of_handler = av.input_bool(query_row[14], 'is_in_sight_of_handler', _m)
|
||||||
|
assessment_command_modality_link.is_on_lead = av.input_bool(query_row[15], 'is_on_lead', _m)
|
||||||
|
assessment_command_modality_link.trial_count = query_row[16]
|
||||||
|
assessment_command_modality_link.active = av.input_bool(query_row[17], 'active', _m)
|
||||||
|
|
||||||
|
assessment_command_modality_link.assessment = Assessment.from_db_assessment_command_modality_link(query_row)
|
||||||
|
assessment_command_modality_link.command = Command.from_db_assessment_command_modality_link(query_row)
|
||||||
|
assessment_command_modality_link.command_modality = Command_Modality.from_db_assessment_command_modality_link(query_row)
|
||||||
|
assessment_command_modality_link.bribe = Bribe.from_db_assessment_command_modality_link(query_row)
|
||||||
|
return assessment_command_modality_link
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_response(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_response'
|
||||||
|
assessment_command_modality_link = cls()
|
||||||
|
assessment_command_modality_link.id_link = query_row[1]
|
||||||
|
return assessment_command_modality_link
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
|
assessment_command_modality_link = cls()
|
||||||
|
if json is None: return assessment_command_modality_link
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
assessment_command_modality_link.id_link = json.get(Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK, -1)
|
||||||
|
assessment_command_modality_link.id_assessment = json[Assessment.ATTR_ID_ASSESSMENT]
|
||||||
|
assessment_command_modality_link.id_command = json[Command.ATTR_ID_COMMAND]
|
||||||
|
assessment_command_modality_link.id_command_modality = json[Command_Modality.ATTR_ID_COMMAND_MODALITY]
|
||||||
|
assessment_command_modality_link.id_bribe = json[Bribe.ATTR_ID_BRIBE]
|
||||||
|
assessment_command_modality_link.distance_from_handler = json[cls.FLAG_DISTANCE_FROM_HANDLER]
|
||||||
|
assessment_command_modality_link.is_in_hearing_range_of_handler = json[cls.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER]
|
||||||
|
assessment_command_modality_link.is_in_scent_range_of_handler = json[cls.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER]
|
||||||
|
assessment_command_modality_link.is_in_sight_of_handler = json[cls.FLAG_IS_IN_SIGHT_OF_HANDLER]
|
||||||
|
assessment_command_modality_link.is_on_lead = json[cls.FLAG_IS_ON_LEAD]
|
||||||
|
assessment_command_modality_link.trial_count = json[cls.FLAG_TRIAL_COUNT]
|
||||||
|
assessment_command_modality_link.active = json[cls.FLAG_ACTIVE]
|
||||||
|
assessment_command_modality_link.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||||
|
# assessment_command_modality_link.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
|
||||||
|
# Helper_App.console_log(f'Dog Command Link: {assessment_command_modality_link}')
|
||||||
|
return assessment_command_modality_link
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: self.id_link
|
||||||
|
, Assessment.ATTR_ID_ASSESSMENT: { Assessment.ATTR_ID_ASSESSMENT: None } if self.assessment is None else self.assessment.to_json()
|
||||||
|
, Command.ATTR_ID_COMMAND: { Command.ATTR_ID_COMMAND: None } if self.command is None else self.command.to_json()
|
||||||
|
, Command_Modality.ATTR_ID_COMMAND_MODALITY: { Command_Modality.ATTR_ID_COMMAND_MODALITY: None } if self.command_modality is None else self.command_modality.to_json()
|
||||||
|
, Bribe.FLAG_BRIBE: { Bribe.FLAG_BRIBE: None } if self.bribe is None else self.bribe.to_json()
|
||||||
|
, self.FLAG_DISTANCE_FROM_HANDLER: self.distance_from_handler
|
||||||
|
, self.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER: self.is_in_hearing_range_of_handler
|
||||||
|
, self.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER: self.is_in_scent_range_of_handler
|
||||||
|
, self.FLAG_IS_IN_SIGHT_OF_HANDLER: self.is_in_sight_of_handler
|
||||||
|
, self.FLAG_IS_ON_LEAD: self.is_on_lead
|
||||||
|
, self.FLAG_TRIAL_COUNT: self.trial_count
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
, self.FLAG_CREATED_ON: self.created_on
|
||||||
|
, self.FLAG_ASSESSMENT_RESPONSE: [] if self.assessment_responses is None else [response.to_json() for response in self.assessment_responses]
|
||||||
|
}
|
||||||
|
# , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK}: {self.id_link}
|
||||||
|
{Assessment.FLAG_ASSESSMENT}: {self.assessment}
|
||||||
|
{Command.FLAG_COMMAND}: {self.command}
|
||||||
|
{Command_Modality.FLAG_COMMAND_MODALITY}: {self.command_modality}
|
||||||
|
{Bribe.FLAG_BRIBE}: {self.bribe}
|
||||||
|
{self.FLAG_DISTANCE_FROM_HANDLER}: {self.distance_from_handler}
|
||||||
|
{self.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER}: {self.is_in_hearing_range_of_handler}
|
||||||
|
{self.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER}: {self.is_in_scent_range_of_handler}
|
||||||
|
{self.FLAG_IS_IN_SIGHT_OF_HANDLER}: {self.is_in_sight_of_handler}
|
||||||
|
{self.FLAG_IS_ON_LEAD}: {self.is_on_lead}
|
||||||
|
{self.FLAG_TRIAL_COUNT}: {self.trial_count}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category}
|
||||||
|
|
||||||
|
class Assessment_Command_Modality_Link_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Assessment_Command_Modality_Link_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_link = db.Column(db.Integer)
|
||||||
|
id_assessment = db.Column(db.Integer)
|
||||||
|
id_command = db.Column(db.Integer)
|
||||||
|
id_command_modality = db.Column(db.Integer)
|
||||||
|
id_bribe = db.Column(db.Integer)
|
||||||
|
distance_from_handler = db.Column(db.Float)
|
||||||
|
is_in_hearing_range_of_handler = db.Column(db.Boolean)
|
||||||
|
is_in_scent_range_of_handler = db.Column(db.Boolean)
|
||||||
|
is_in_sight_of_handler = db.Column(db.Boolean)
|
||||||
|
is_on_lead = db.Column(db.Boolean)
|
||||||
|
trial_count = db.Column(db.Integer)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
# created_on = db.Column(db.DateTime)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_assessment_command_modality_link(cls, assessment_command_modality_link):
|
||||||
|
_m = f'{cls.__qualname__}.from_assessment_command_modality_link'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_link = assessment_command_modality_link.id_link
|
||||||
|
temp.id_assessment = assessment_command_modality_link.id_assessment
|
||||||
|
temp.id_command = assessment_command_modality_link.id_command
|
||||||
|
temp.id_command_modality = assessment_command_modality_link.id_command_modality
|
||||||
|
temp.id_bribe = assessment_command_modality_link.id_bribe
|
||||||
|
temp.distance_from_handler = assessment_command_modality_link.distance_from_handler
|
||||||
|
temp.is_in_hearing_range_of_handler = assessment_command_modality_link.is_in_hearing_range_of_handler
|
||||||
|
temp.is_in_scent_range_of_handler = assessment_command_modality_link.is_in_scent_range_of_handler
|
||||||
|
temp.is_in_sight_of_handler = assessment_command_modality_link.is_in_sight_of_handler
|
||||||
|
temp.is_on_lead = assessment_command_modality_link.is_on_lead
|
||||||
|
temp.trial_count = assessment_command_modality_link.trial_count
|
||||||
|
temp.active = assessment_command_modality_link.active
|
||||||
|
# temp.created_on = assessment_command_modality_link.created_on
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Assessment_Command_Modality_Link(Get_Many_Parameters_Base):
|
||||||
|
get_all_link: bool
|
||||||
|
get_inactive_link: bool
|
||||||
|
ids_link: str
|
||||||
|
min_distance_from_handler_link: Optional[float]
|
||||||
|
max_distance_from_handler_link: Optional[float]
|
||||||
|
value_is_in_sight_of_handler_link: Optional[bool]
|
||||||
|
value_is_in_scent_range_of_handler_link: Optional[bool]
|
||||||
|
value_is_in_hearing_range_of_handler_link: Optional[bool]
|
||||||
|
value_is_on_lead_link: Optional[bool]
|
||||||
|
min_trial_count_link: Optional[float]
|
||||||
|
max_trial_count_link: Optional[float]
|
||||||
|
|
||||||
|
get_all_assessment: bool
|
||||||
|
get_inactive_assessment: bool
|
||||||
|
ids_assessment: str
|
||||||
|
notes_assessment: str
|
||||||
|
min_temperature_assessment: Optional[float]
|
||||||
|
max_temperature_assessment: Optional[float]
|
||||||
|
get_all_weather: bool
|
||||||
|
get_inactive_weather: bool
|
||||||
|
ids_weather: str
|
||||||
|
names_weather: str
|
||||||
|
get_all_lighting_level: bool
|
||||||
|
get_inactive_lighting_level: bool
|
||||||
|
ids_lighting_level: str
|
||||||
|
names_lighting_level: str
|
||||||
|
get_all_location: bool
|
||||||
|
get_inactive_location: bool
|
||||||
|
ids_location: str
|
||||||
|
names_location: str
|
||||||
|
get_all_user_handler: bool
|
||||||
|
get_inactive_user_handler: bool
|
||||||
|
ids_user_handler: str
|
||||||
|
#auth0_ids_user_handler: str
|
||||||
|
names_user_handler: str
|
||||||
|
emails_user_handler: str
|
||||||
|
|
||||||
|
get_all_command_category: bool
|
||||||
|
get_inactive_command_category: bool
|
||||||
|
ids_command_category: str
|
||||||
|
names_command_category: str
|
||||||
|
get_all_command: bool
|
||||||
|
get_inactive_command: bool
|
||||||
|
ids_command: str
|
||||||
|
names_command: str
|
||||||
|
hand_signal_default_descriptions_command: str
|
||||||
|
notes_command: str
|
||||||
|
|
||||||
|
get_all_command_modality: bool
|
||||||
|
get_inactive_command_modality: bool
|
||||||
|
ids_command_modality: str
|
||||||
|
names_command_modality: str
|
||||||
|
|
||||||
|
get_all_bribe: bool
|
||||||
|
get_inactive_bribe: bool
|
||||||
|
ids_bribe: str
|
||||||
|
names_bribe: str
|
||||||
|
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_link = True
|
||||||
|
, get_inactive_link = False
|
||||||
|
, ids_link = ''
|
||||||
|
, min_distance_from_handler_link = None
|
||||||
|
, max_distance_from_handler_link = None
|
||||||
|
, value_is_in_sight_of_handler_link = None
|
||||||
|
, value_is_in_scent_range_of_handler_link = None
|
||||||
|
, value_is_in_hearing_range_of_handler_link = None
|
||||||
|
, value_is_on_lead_link = None
|
||||||
|
, min_trial_count_link = None
|
||||||
|
, max_trial_count_link = None
|
||||||
|
|
||||||
|
, get_all_assessment = True
|
||||||
|
, get_inactive_assessment = False
|
||||||
|
, ids_assessment = ''
|
||||||
|
, notes_assessment = ''
|
||||||
|
, min_temperature_assessment = None
|
||||||
|
, max_temperature_assessment = None
|
||||||
|
, get_all_weather = True
|
||||||
|
, get_inactive_weather = False
|
||||||
|
, ids_weather = ''
|
||||||
|
, names_weather = ''
|
||||||
|
, get_all_lighting_level = True
|
||||||
|
, get_inactive_lighting_level = False
|
||||||
|
, ids_lighting_level = ''
|
||||||
|
, names_lighting_level = ''
|
||||||
|
, get_all_location = True
|
||||||
|
, get_inactive_location = False
|
||||||
|
, ids_location = ''
|
||||||
|
, names_location = ''
|
||||||
|
, get_all_user_handler = True
|
||||||
|
, get_inactive_user_handler = False
|
||||||
|
, ids_user_handler = ''
|
||||||
|
# , auth0_ids_user_handler = ''
|
||||||
|
, names_user_handler = ''
|
||||||
|
, emails_user_handler = ''
|
||||||
|
|
||||||
|
, get_all_command_category = True
|
||||||
|
, get_inactive_command_category = False
|
||||||
|
, ids_command_category = ''
|
||||||
|
, names_command_category = ''
|
||||||
|
, get_all_command = True
|
||||||
|
, get_inactive_command = False
|
||||||
|
, ids_command = ''
|
||||||
|
, names_command = ''
|
||||||
|
, hand_signal_default_descriptions_command = ''
|
||||||
|
, notes_command = ''
|
||||||
|
|
||||||
|
, get_all_command_modality = True
|
||||||
|
, get_inactive_command_modality = False
|
||||||
|
, ids_command_modality = ''
|
||||||
|
, names_command_modality = ''
|
||||||
|
|
||||||
|
, get_all_bribe = True
|
||||||
|
, get_inactive_bribe = False
|
||||||
|
, ids_bribe = ''
|
||||||
|
, names_bribe = ''
|
||||||
|
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_link = json.get('a_get_all_link', False)
|
||||||
|
, get_inactive_link = json.get('a_get_inactive_link', False)
|
||||||
|
, ids_link = json.get('a_ids_link', '')
|
||||||
|
, notes_assessment_command_modality_link = json.get('a_notes_assessment_command_modality_link', '')
|
||||||
|
, min_distance_from_handler_link = json.get('a_min_distance_from_handler_link', None)
|
||||||
|
, max_distance_from_handler_link = json.get('a_max_distance_from_handler_link', None)
|
||||||
|
, value_is_in_sight_of_handler_link = json.get('a_value_is_in_sight_of_handler_link', None)
|
||||||
|
, value_is_in_scent_range_of_handler_link = json.get('a_value_is_in_scent_range_of_handler_link', None)
|
||||||
|
, value_is_in_hearing_range_of_handler_link = json.get('a_value_is_in_hearing_range_of_handler_link', None)
|
||||||
|
, value_is_on_lead_link = json.get('a_value_is_on_lead_link', None)
|
||||||
|
, min_trial_count_link = json.get('a_min_trial_count_link', None)
|
||||||
|
, max_trial_count_link = json.get('a_max_trial_count_link', None)
|
||||||
|
|
||||||
|
, get_all_assessment = json.get('a_get_all_assessment', False)
|
||||||
|
, get_inactive_assessment = json.get('a_get_inactive_assessment', False)
|
||||||
|
, ids_assessment = json.get('a_ids_assessment', '')
|
||||||
|
, notes_assessment = json.get('a_notes_assessment', '')
|
||||||
|
, min_temperature_assessment = json.get('a_min_temperature_assessment', None)
|
||||||
|
, max_temperature_assessment = json.get('a_max_temperature_assessment', None)
|
||||||
|
, get_all_weather = json.get('a_get_all_weather', False)
|
||||||
|
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||||
|
, ids_weather = json.get('a_ids_weather', '')
|
||||||
|
, names_weather = json.get('a_names_weather', '')
|
||||||
|
, get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||||
|
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||||
|
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||||
|
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||||
|
, get_all_location = json.get('a_get_all_location', False)
|
||||||
|
, get_inactive_location = json.get('a_get_inactive_location', False)
|
||||||
|
, ids_location = json.get('a_ids_location', '')
|
||||||
|
, names_location = json.get('a_names_location', '')
|
||||||
|
, get_all_user_handler = json.get('a_get_all_user_handler', False)
|
||||||
|
, get_inactive_user_handler = json.get('a_get_inactive_user_handler', False)
|
||||||
|
, ids_user_handler = json.get('a_ids_user_handler', '')
|
||||||
|
# , auth0_ids_user_handler = json.get('a_ids_user_handler', '')
|
||||||
|
, names_user_handler = json.get('a_names_user_handler', '')
|
||||||
|
, emails_user_handler = json.get('a_emails_user_handler', '')
|
||||||
|
|
||||||
|
, get_all_command_category = json.get('a_get_all_command_category', False)
|
||||||
|
, get_inactive_command_category = json.get('a_get_inactive_command_category', False)
|
||||||
|
, ids_command_category = json.get('a_ids_command_category', '')
|
||||||
|
, names_command_category = json.get('a_names_command_category', '')
|
||||||
|
, get_all_command = json.get('a_get_all_command', False)
|
||||||
|
, get_inactive_command = json.get('a_get_inactive_command', False)
|
||||||
|
, ids_command = json.get('a_ids_command', '')
|
||||||
|
, names_command = json.get('a_names_command', '')
|
||||||
|
, hand_signal_default_descriptions_command = json.get('a_hand_signal_default_descriptions_command', '')
|
||||||
|
, notes_command = json.get('a_notes_command', '')
|
||||||
|
|
||||||
|
, get_all_command_modality = json.get('a_get_all_command_modality', False)
|
||||||
|
, get_inactive_command_modality = json.get('a_get_inactive_command_modality', False)
|
||||||
|
, ids_command_modality = json.get('a_ids_command_modality', '')
|
||||||
|
, names_command_modality = json.get('a_names_command_modality', '')
|
||||||
|
|
||||||
|
, get_all_bribe = json.get('a_get_all_bribe', False)
|
||||||
|
, get_inactive_bribe = json.get('a_get_inactive_bribe', False)
|
||||||
|
, ids_bribe = json.get('a_ids_bribe', '')
|
||||||
|
, names_bribe = json.get('a_names_bribe', '')
|
||||||
|
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_assessment(cls, form):
|
||||||
|
_m = f'{cls.__qualname__}.from_form_filters_assessment'
|
||||||
|
Helper_App.console_log(_m)
|
||||||
|
Helper_App.console_log(f'Filters: {form}')
|
||||||
|
av.val_instance(form, 'form', _m, Filters_Assessment)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
has_filter_assessment = not (form.id_assessment.data == '0' or form.id_assessment.data == '' or form.id_assessment.data is None)
|
||||||
|
has_filter_command = False
|
||||||
|
has_filter_command_modality = False
|
||||||
|
has_filter_bribe = False
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||||
|
Helper_App.console_log(f'''
|
||||||
|
has_filter_search_text: {has_filter_search_text}
|
||||||
|
has_filter_assessment: {has_filter_assessment}
|
||||||
|
has_filter_command: {has_filter_command}
|
||||||
|
has_filter_command_modality: {has_filter_command_modality}
|
||||||
|
has_filter_bribe: {has_filter_bribe}
|
||||||
|
active_only: {active_only}
|
||||||
|
''')
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_link = True
|
||||||
|
filters.get_inactive_link = not active_only
|
||||||
|
filters.ids_link = ''
|
||||||
|
filters.get_all_assessment = not has_filter_assessment
|
||||||
|
filters.get_inactive_assessment = not active_only
|
||||||
|
filters.ids_assessment = form.id_assessment.data if has_filter_assessment else ''
|
||||||
|
filters.get_all_command = not has_filter_command
|
||||||
|
filters.get_inactive_command = not active_only
|
||||||
|
filters.ids_command = ''
|
||||||
|
filters.names_command = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_command_modality = not has_filter_command_modality
|
||||||
|
filters.get_inactive_command_modality = not active_only
|
||||||
|
filters.ids_command_modality = ''
|
||||||
|
filters.names_command_modality = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_bribe = not has_filter_bribe
|
||||||
|
filters.get_inactive_bribe = not active_only
|
||||||
|
filters.ids_bribe = ''
|
||||||
|
filters.names_bribe = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_link': self.get_all_link
|
||||||
|
, 'a_get_inactive_link': self.get_inactive_link
|
||||||
|
, 'a_ids_link': self.ids_link
|
||||||
|
, 'a_min_distance_from_handler_link': self.min_distance_from_handler_link
|
||||||
|
, 'a_max_distance_from_handler_link': self.max_distance_from_handler_link
|
||||||
|
, 'a_value_is_in_sight_of_handler_link': self.value_is_in_sight_of_handler_link
|
||||||
|
, 'a_value_is_in_scent_range_of_handler_link': self.value_is_in_scent_range_of_handler_link
|
||||||
|
, 'a_value_is_in_hearing_range_of_handler_link': self.value_is_in_hearing_range_of_handler_link
|
||||||
|
, 'a_value_is_on_lead_link': self.value_is_on_lead_link
|
||||||
|
, 'a_min_trial_count_link': self.min_trial_count_link
|
||||||
|
, 'a_max_trial_count_link': self.max_trial_count_link
|
||||||
|
|
||||||
|
, 'a_get_all_assessment': self.get_all_assessment
|
||||||
|
, 'a_get_inactive_assessment': self.get_inactive_assessment
|
||||||
|
, 'a_ids_assessment': self.ids_assessment
|
||||||
|
, 'a_notes_assessment': self.notes_assessment
|
||||||
|
, 'a_min_temperature_assessment': self.min_temperature_assessment
|
||||||
|
, 'a_max_temperature_assessment': self.max_temperature_assessment
|
||||||
|
, 'get_all_weather': self.get_all_weather
|
||||||
|
, 'get_inactive_weather': self.get_inactive_weather
|
||||||
|
, 'ids_weather': self.ids_weather
|
||||||
|
, 'names_weather': self.names_weather
|
||||||
|
, 'get_all_lighting_level': self.get_all_lighting_level
|
||||||
|
, 'get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||||
|
, 'ids_lighting_level': self.ids_lighting_level
|
||||||
|
, 'names_lighting_level': self.names_lighting_level
|
||||||
|
, 'get_all_location': self.get_all_location
|
||||||
|
, 'get_inactive_location': self.get_inactive_location
|
||||||
|
, 'ids_location': self.ids_location
|
||||||
|
, 'names_location': self.names_location
|
||||||
|
, 'get_all_user_handler': self.get_all_user_handler
|
||||||
|
, 'get_inactive_user_handler': self.get_inactive_user_handler
|
||||||
|
, 'ids_user_handler': self.ids_user_handler
|
||||||
|
#, 'auth0_ids_user_handler': self.ids_user_handler
|
||||||
|
, 'names_user_handler': self.names_user_handler
|
||||||
|
, 'emails_user_handler': self.emails_user_handler
|
||||||
|
|
||||||
|
, 'a_get_all_command_category': self.get_all_command_category
|
||||||
|
, 'a_get_inactive_command_category': self.get_inactive_command_category
|
||||||
|
, 'a_ids_command_category': self.ids_command_category
|
||||||
|
, 'a_names_command_category': self.names_command_category
|
||||||
|
, 'a_get_all_command': self.get_all_command
|
||||||
|
, 'a_get_inactive_command': self.get_inactive_command
|
||||||
|
, 'a_ids_command': self.ids_command
|
||||||
|
, 'a_names_command': self.names_command
|
||||||
|
, 'a_hand_signal_default_descriptions_command': self.hand_signal_default_descriptions_command
|
||||||
|
, 'a_notes_command': self.notes_command
|
||||||
|
|
||||||
|
, 'a_get_all_command_modality': self.get_all_command_modality
|
||||||
|
, 'a_get_inactive_command_modality': self.get_inactive_command_modality
|
||||||
|
, 'a_ids_command_modality': self.ids_command_modality
|
||||||
|
, 'a_names_command_modality': self.names_command_modality
|
||||||
|
|
||||||
|
, 'a_get_all_bribe': self.get_all_bribe
|
||||||
|
, 'a_get_inactive_bribe': self.get_inactive_bribe
|
||||||
|
, 'a_ids_bribe': self.ids_bribe
|
||||||
|
, 'a_names_bribe': self.names_bribe
|
||||||
|
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
516
business_objects/dog/assessment_response.py
Normal file
516
business_objects/dog/assessment_response.py
Normal file
@@ -0,0 +1,516 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Assessment_Response Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.dog.command import Command
|
||||||
|
# from business_objects.dog.command_category import Command_Category
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
from business_objects.dog.dog import Dog
|
||||||
|
from business_objects.dog.response_quality_metric import Response_Quality_Metric
|
||||||
|
from business_objects.dog.obedience_level import Obedience_Level
|
||||||
|
from business_objects.dog.obedience_level import Obedience_Level
|
||||||
|
from business_objects.dog.assessment_command_modality_link import Assessment_Command_Modality_Link
|
||||||
|
from business_objects.dog.user import User
|
||||||
|
from extensions import db
|
||||||
|
from forms.dog.assessment import Filters_Assessment
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
import lib.argument_validation as av
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar, Optional
|
||||||
|
|
||||||
|
|
||||||
|
class Assessment_Response(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_ASSESSMENT_RESPONSE: ClassVar[str] = 'id_response'
|
||||||
|
FLAG_ASSESSMENT_RESPONSE: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_ASSESSMENT_RESPONSE
|
||||||
|
FLAG_VALUE_MEASURED: ClassVar[str] = 'value-measured'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_ASSESSMENT_RESPONSE
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = ATTR_ID_ASSESSMENT_RESPONSE
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Assessment_Response'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_response = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_assessment_command_modality_link = db.Column(db.Integer)
|
||||||
|
id_response_quality_metric = db.Column(db.Integer)
|
||||||
|
id_obedience_level = db.Column(db.Integer)
|
||||||
|
value_measured = db.Column(db.Float)
|
||||||
|
notes = db.Column(db.Text)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
created_on = db.Column(db.DateTime)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_response = 0
|
||||||
|
self.is_new = False
|
||||||
|
self.assessment_command_modality_link = None
|
||||||
|
self.response_quality_metric = None
|
||||||
|
self.obedience_level = None
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_response(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_response'
|
||||||
|
assessment_response = cls()
|
||||||
|
assessment_response.id_response = query_row[0]
|
||||||
|
assessment_response.id_assessment_command_modality_link = query_row[1]
|
||||||
|
assessment_response.id_response_quality_metric = query_row[2]
|
||||||
|
assessment_response.id_obedience_level = query_row[3]
|
||||||
|
assessment_response.value_measured = query_row[11]
|
||||||
|
assessment_response.notes = query_row[10]
|
||||||
|
assessment_response.active = av.input_bool(query_row[12], 'active', _m)
|
||||||
|
|
||||||
|
assessment_response.assessment_command_modality_link = Assessment_Command_Modality_Link.from_db_assessment_response(query_row)
|
||||||
|
assessment_response.response_quality_metric = Response_Quality_Metric.from_db_assessment_response(query_row)
|
||||||
|
assessment_response.obedience_level = Obedience_Level.from_db_assessment_response(query_row)
|
||||||
|
return assessment_response
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
|
assessment_response = cls()
|
||||||
|
if json is None: return assessment_response
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
assessment_response.id_response = json.get(Assessment_Response.ATTR_ID_ASSESSMENT_RESPONSE, -1)
|
||||||
|
assessment_response.id_assessment_command_modality_link = json[Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK]
|
||||||
|
assessment_response.id_response_quality_metric = json[Response_Quality_Metric.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC]
|
||||||
|
assessment_response.id_obedience_level = json[Obedience_Level.ATTR_ID_OBEDIENCE_LEVEL]
|
||||||
|
assessment_response.value_measured = json[cls.FLAG_VALUE_MEASURED]
|
||||||
|
assessment_response.notes = json[cls.FLAG_NOTES]
|
||||||
|
assessment_response.active = json[cls.FLAG_ACTIVE]
|
||||||
|
assessment_response.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||||
|
# assessment_response.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
|
||||||
|
# Helper_App.console_log(f'Dog Command Link: {assessment_response}')
|
||||||
|
return assessment_response
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_ASSESSMENT_RESPONSE: self.id_response
|
||||||
|
, Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: { Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: None } if self.assessment_command_modality_link is None else self.assessment_command_modality_link.to_json()
|
||||||
|
, Response_Quality_Metric.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC: { Response_Quality_Metric.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC: None } if self.response_quality_metric is None else self.response_quality_metric.to_json()
|
||||||
|
, Obedience_Level.ATTR_ID_OBEDIENCE_LEVEL: { Obedience_Level.ATTR_ID_OBEDIENCE_LEVEL: None } if self.assessment_command_modality_link is None else self.assessment_command_modality_link.to_json()
|
||||||
|
, self.FLAG_VALUE_MEASURED: self.value_measured
|
||||||
|
, self.FLAG_NOTES: self.notes
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
, self.FLAG_CREATED_ON: self.created_on
|
||||||
|
}
|
||||||
|
# , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_ASSESSMENT_RESPONSE}: {self.id_response}
|
||||||
|
{Assessment_Command_Modality_Link.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK}: {self.assessment_command_modality_link}
|
||||||
|
{Response_Quality_Metric.FLAG_RESPONSE_QUALITY_METRIC}: {self.response_quality_metric}
|
||||||
|
{Obedience_Level.FLAG_OBEDIENCE_LEVEL}: {self.obedience_level}
|
||||||
|
{self.FLAG_VALUE_MEASURED}: {self.value_measured}
|
||||||
|
{self.FLAG_NOTES}: {self.notes}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category}
|
||||||
|
|
||||||
|
class Assessment_Response_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Assessment_Response_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_response = db.Column(db.Integer)
|
||||||
|
id_assessment_command_modality_link = db.Column(db.Integer)
|
||||||
|
id_response_quality_metric = db.Column(db.Integer)
|
||||||
|
id_obedience_level = db.Column(db.Integer)
|
||||||
|
value_measured = db.Column(db.Float)
|
||||||
|
notes = db.Column(db.Text)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
# created_on = db.Column(db.DateTime)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_assessment_response(cls, assessment_response):
|
||||||
|
_m = 'Assessment_Response_Temp.from_assessment_response'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_response = assessment_response.id_response
|
||||||
|
temp.id_assessment_command_modality_link = assessment_response.id_assessment_command_modality_link
|
||||||
|
temp.id_response_quality_metric = assessment_response.id_response_quality_metric
|
||||||
|
temp.id_obedience_level = assessment_response.id_obedience_level
|
||||||
|
temp.value_measured = assessment_response.value_measured
|
||||||
|
temp.notes = assessment_response.notes
|
||||||
|
temp.active = assessment_response.active
|
||||||
|
# temp.created_on = assessment_response.created_on
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Assessment_Response(Get_Many_Parameters_Base):
|
||||||
|
get_all_assessment_response: bool
|
||||||
|
get_inactive_assessment_response: bool
|
||||||
|
ids_assessment_response: str
|
||||||
|
notes_assessment_response: str
|
||||||
|
min_value_measured_assessment_response: Optional[float]
|
||||||
|
max_value_measured_assessment_response: Optional[float]
|
||||||
|
|
||||||
|
get_all_ACM_link: bool
|
||||||
|
get_inactive_ACM_link: bool
|
||||||
|
ids_ACM_link: str
|
||||||
|
min_distance_from_handler_ACM_link: Optional[float]
|
||||||
|
max_distance_from_handler_ACM_link: Optional[float]
|
||||||
|
value_is_in_sight_of_handler_ACM_link: Optional[bool]
|
||||||
|
value_is_in_scent_range_of_handler_ACM_link: Optional[bool]
|
||||||
|
value_is_in_hearing_range_of_handler_ACM_link: Optional[bool]
|
||||||
|
value_is_on_lead_ACM_link: Optional[bool]
|
||||||
|
min_trial_count_ACM_link: Optional[float]
|
||||||
|
max_trial_count_ACM_link: Optional[float]
|
||||||
|
get_all_assessment: bool
|
||||||
|
get_inactive_assessment: bool
|
||||||
|
ids_assessment: str
|
||||||
|
notes_assessment: str
|
||||||
|
min_temperature_assessment: Optional[float]
|
||||||
|
max_temperature_assessment: Optional[float]
|
||||||
|
get_all_weather: bool
|
||||||
|
get_inactive_weather: bool
|
||||||
|
ids_weather: str
|
||||||
|
names_weather: str
|
||||||
|
get_all_lighting_level: bool
|
||||||
|
get_inactive_lighting_level: bool
|
||||||
|
ids_lighting_level: str
|
||||||
|
names_lighting_level: str
|
||||||
|
get_all_location: bool
|
||||||
|
get_inactive_location: bool
|
||||||
|
ids_location: str
|
||||||
|
names_location: str
|
||||||
|
get_all_user_handler: bool
|
||||||
|
get_inactive_user_handler: bool
|
||||||
|
ids_user_handler: str
|
||||||
|
#auth0_ids_user_handler: str
|
||||||
|
names_user_handler: str
|
||||||
|
emails_user_handler: str
|
||||||
|
get_all_command_category: bool
|
||||||
|
get_inactive_command_category: bool
|
||||||
|
ids_command_category: str
|
||||||
|
names_command_category: str
|
||||||
|
get_all_command: bool
|
||||||
|
get_inactive_command: bool
|
||||||
|
ids_command: str
|
||||||
|
names_command: str
|
||||||
|
hand_signal_default_descriptions_command: str
|
||||||
|
notes_command: str
|
||||||
|
get_all_command_modality: bool
|
||||||
|
get_inactive_command_modality: bool
|
||||||
|
ids_command_modality: str
|
||||||
|
names_command_modality: str
|
||||||
|
get_all_bribe: bool
|
||||||
|
get_inactive_bribe: bool
|
||||||
|
ids_bribe: str
|
||||||
|
names_bribe: str
|
||||||
|
|
||||||
|
get_all_response_quality_metric: bool
|
||||||
|
get_inactive_response_quality_metric: bool
|
||||||
|
ids_response_quality_metric: str
|
||||||
|
names_response_quality_metric: str
|
||||||
|
|
||||||
|
get_all_obedience_level: bool
|
||||||
|
get_inactive_obedience_level: bool
|
||||||
|
ids_obedience_level: str
|
||||||
|
names_obedience_level: str
|
||||||
|
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_assessment_response = True
|
||||||
|
, get_inactive_assessment_response = False
|
||||||
|
, ids_assessment_response = ''
|
||||||
|
, notes_assessment_response = ''
|
||||||
|
, min_value_measured_assessment_response = None
|
||||||
|
, max_value_measured_assessment_response = None
|
||||||
|
|
||||||
|
, get_all_ACM_link = True
|
||||||
|
, get_inactive_ACM_link = False
|
||||||
|
, ids_ACM_link = ''
|
||||||
|
, min_distance_from_handler_ACM_link = None
|
||||||
|
, max_distance_from_handler_ACM_link = None
|
||||||
|
, value_is_in_sight_of_handler_ACM_link = None
|
||||||
|
, value_is_in_scent_range_of_handler_ACM_link = None
|
||||||
|
, value_is_in_hearing_range_of_handler_ACM_link = None
|
||||||
|
, value_is_on_lead_ACM_link = None
|
||||||
|
, min_trial_count_ACM_link = None
|
||||||
|
, max_trial_count_ACM_link = None
|
||||||
|
, get_all_assessment = True
|
||||||
|
, get_inactive_assessment = False
|
||||||
|
, ids_assessment = ''
|
||||||
|
, notes_assessment = ''
|
||||||
|
, min_temperature_assessment = None
|
||||||
|
, max_temperature_assessment = None
|
||||||
|
, get_all_weather = True
|
||||||
|
, get_inactive_weather = False
|
||||||
|
, ids_weather = ''
|
||||||
|
, names_weather = ''
|
||||||
|
, get_all_lighting_level = True
|
||||||
|
, get_inactive_lighting_level = False
|
||||||
|
, ids_lighting_level = ''
|
||||||
|
, names_lighting_level = ''
|
||||||
|
, get_all_location = True
|
||||||
|
, get_inactive_location = False
|
||||||
|
, ids_location = ''
|
||||||
|
, names_location = ''
|
||||||
|
, get_all_user_handler = True
|
||||||
|
, get_inactive_user_handler = False
|
||||||
|
, ids_user_handler = ''
|
||||||
|
# , auth0_ids_user_handler = ''
|
||||||
|
, names_user_handler = ''
|
||||||
|
, emails_user_handler = ''
|
||||||
|
, get_all_command_category = True
|
||||||
|
, get_inactive_command_category = False
|
||||||
|
, ids_command_category = ''
|
||||||
|
, names_command_category = ''
|
||||||
|
, get_all_command = True
|
||||||
|
, get_inactive_command = False
|
||||||
|
, ids_command = ''
|
||||||
|
, names_command = ''
|
||||||
|
, hand_signal_default_descriptions_command = ''
|
||||||
|
, notes_command = ''
|
||||||
|
, get_all_command_modality = True
|
||||||
|
, get_inactive_command_modality = False
|
||||||
|
, ids_command_modality = ''
|
||||||
|
, names_command_modality = ''
|
||||||
|
, get_all_bribe = True
|
||||||
|
, get_inactive_bribe = False
|
||||||
|
, ids_bribe = ''
|
||||||
|
, names_bribe = ''
|
||||||
|
|
||||||
|
, get_all_response_quality_metric = True
|
||||||
|
, get_inactive_response_quality_metric = False
|
||||||
|
, ids_response_quality_metric = ''
|
||||||
|
, names_response_quality_metric = ''
|
||||||
|
|
||||||
|
, get_all_obedience_level = True
|
||||||
|
, get_inactive_obedience_level = False
|
||||||
|
, ids_obedience_level = ''
|
||||||
|
, names_obedience_level = ''
|
||||||
|
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_assessment_response = json.get('a_get_all_assessment_response', False)
|
||||||
|
, get_inactive_assessment_response = json.get('a_get_inactive_assessment_response', False)
|
||||||
|
, ids_assessment_response = json.get('a_ids_assessment_response', '')
|
||||||
|
, notes_assessment_response = json.get('a_notes_assessment_response', '')
|
||||||
|
, min_value_measured_assessment_response = json.get('a_min_value_measured_assessment_response', None)
|
||||||
|
, max_value_measured_assessment_response = json.get('a_max_value_measured_assessment_response', None)
|
||||||
|
|
||||||
|
, get_all_ACM_link = json.get('a_get_all_ACM_link', False)
|
||||||
|
, get_inactive_ACM_link = json.get('a_get_inactive_ACM_link', False)
|
||||||
|
, ids_ACM_link = json.get('a_ids_ACM_link', '')
|
||||||
|
, notes_assessment_command_modality_link = json.get('a_notes_assessment_command_modality_link', '')
|
||||||
|
, min_distance_from_handler_ACM_link = json.get('a_min_distance_from_handler_ACM_link', None)
|
||||||
|
, max_distance_from_handler_ACM_link = json.get('a_max_distance_from_handler_ACM_link', None)
|
||||||
|
, value_is_in_sight_of_handler_ACM_link = json.get('a_value_is_in_sight_of_handler_ACM_link', None)
|
||||||
|
, value_is_in_scent_range_of_handler_ACM_link = json.get('a_value_is_in_scent_range_of_handler_ACM_link', None)
|
||||||
|
, value_is_in_hearing_range_of_handler_ACM_link = json.get('a_value_is_in_hearing_range_of_handler_ACM_link', None)
|
||||||
|
, value_is_on_lead_ACM_link = json.get('a_value_is_on_lead_ACM_link', None)
|
||||||
|
, min_trial_count_ACM_link = json.get('a_min_trial_count_ACM_link', None)
|
||||||
|
, max_trial_count_ACM_link = json.get('a_max_trial_count_ACM_link', None)
|
||||||
|
, get_all_assessment = json.get('a_get_all_assessment', False)
|
||||||
|
, get_inactive_assessment = json.get('a_get_inactive_assessment', False)
|
||||||
|
, ids_assessment = json.get('a_ids_assessment', '')
|
||||||
|
, notes_assessment = json.get('a_notes_assessment', '')
|
||||||
|
, min_temperature_assessment = json.get('a_min_temperature_assessment', None)
|
||||||
|
, max_temperature_assessment = json.get('a_max_temperature_assessment', None)
|
||||||
|
, get_all_weather = json.get('a_get_all_weather', False)
|
||||||
|
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||||
|
, ids_weather = json.get('a_ids_weather', '')
|
||||||
|
, names_weather = json.get('a_names_weather', '')
|
||||||
|
, get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||||
|
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||||
|
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||||
|
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||||
|
, get_all_location = json.get('a_get_all_location', False)
|
||||||
|
, get_inactive_location = json.get('a_get_inactive_location', False)
|
||||||
|
, ids_location = json.get('a_ids_location', '')
|
||||||
|
, names_location = json.get('a_names_location', '')
|
||||||
|
, get_all_user_handler = json.get('a_get_all_user_handler', False)
|
||||||
|
, get_inactive_user_handler = json.get('a_get_inactive_user_handler', False)
|
||||||
|
, ids_user_handler = json.get('a_ids_user_handler', '')
|
||||||
|
# , auth0_ids_user_handler = json.get('a_ids_user_handler', '')
|
||||||
|
, names_user_handler = json.get('a_names_user_handler', '')
|
||||||
|
, emails_user_handler = json.get('a_emails_user_handler', '')
|
||||||
|
, get_all_command_category = json.get('a_get_all_command_category', False)
|
||||||
|
, get_inactive_command_category = json.get('a_get_inactive_command_category', False)
|
||||||
|
, ids_command_category = json.get('a_ids_command_category', '')
|
||||||
|
, names_command_category = json.get('a_names_command_category', '')
|
||||||
|
, get_all_command = json.get('a_get_all_command', False)
|
||||||
|
, get_inactive_command = json.get('a_get_inactive_command', False)
|
||||||
|
, ids_command = json.get('a_ids_command', '')
|
||||||
|
, names_command = json.get('a_names_command', '')
|
||||||
|
, hand_signal_default_descriptions_command = json.get('a_hand_signal_default_descriptions_command', '')
|
||||||
|
, notes_command = json.get('a_notes_command', '')
|
||||||
|
, get_all_command_modality = json.get('a_get_all_command_modality', False)
|
||||||
|
, get_inactive_command_modality = json.get('a_get_inactive_command_modality', False)
|
||||||
|
, ids_command_modality = json.get('a_ids_command_modality', '')
|
||||||
|
, names_command_modality = json.get('a_names_command_modality', '')
|
||||||
|
, get_all_bribe = json.get('a_get_all_bribe', False)
|
||||||
|
, get_inactive_bribe = json.get('a_get_inactive_bribe', False)
|
||||||
|
, ids_bribe = json.get('a_ids_bribe', '')
|
||||||
|
, names_bribe = json.get('a_names_bribe', '')
|
||||||
|
|
||||||
|
, get_all_response_quality_metric = json.get('a_get_all_response_quality_metric', False)
|
||||||
|
, get_inactive_response_quality_metric = json.get('a_get_inactive_response_quality_metric', False)
|
||||||
|
, ids_response_quality_metric = json.get('a_ids_response_quality_metric', '')
|
||||||
|
, names_response_quality_metric = json.get('a_names_response_quality_metric', '')
|
||||||
|
|
||||||
|
, get_all_obedience_level = json.get('a_get_all_obedience_level', False)
|
||||||
|
, get_inactive_obedience_level = json.get('a_get_inactive_obedience_level', False)
|
||||||
|
, ids_obedience_level = json.get('a_ids_obedience_level', '')
|
||||||
|
, names_obedience_level = json.get('a_names_obedience_level', '')
|
||||||
|
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_assessment(cls, form):
|
||||||
|
_m = f'{cls.__qualname__}.from_form_filters_assessment'
|
||||||
|
Helper_App.console_log(_m)
|
||||||
|
Helper_App.console_log(f'Filters: {form}')
|
||||||
|
av.val_instance(form, 'form', _m, Filters_Assessment)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
has_filter_assessment_command_modality_link = False
|
||||||
|
has_filter_response_quality_metric = False
|
||||||
|
has_filter_obedience_level = False
|
||||||
|
has_filter_user_handler = False
|
||||||
|
has_filter_assessment = not (form.id_assessment.data == '' or form.id_assessment.data == '0' or form.id_assessment.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||||
|
Helper_App.console_log(f'''
|
||||||
|
has_filter_search_text: {has_filter_search_text}
|
||||||
|
has_filter_assessment_command_modality_link: {has_filter_assessment_command_modality_link}
|
||||||
|
has_filter_response_quality_metric: {has_filter_response_quality_metric}
|
||||||
|
has_filter_obedience_level: {has_filter_obedience_level}
|
||||||
|
has_filter_user_handler: {has_filter_user_handler}
|
||||||
|
active_only: {active_only}
|
||||||
|
''')
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_assessment_response = True
|
||||||
|
filters.get_inactive_assessment_response = not active_only
|
||||||
|
filters.ids_assessment_response = ''
|
||||||
|
filters.get_all_ACM_link = not has_filter_assessment_command_modality_link
|
||||||
|
filters.get_inactive_ACM_link = not active_only
|
||||||
|
filters.ids_ACM_link = ''
|
||||||
|
filters.get_all_response_quality_metric = not has_filter_response_quality_metric
|
||||||
|
filters.get_inactive_response_quality_metric = not active_only
|
||||||
|
filters.ids_response_quality_metric = ''
|
||||||
|
filters.names_response_quality_metric = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_obedience_level = not has_filter_obedience_level
|
||||||
|
filters.get_inactive_obedience_level = not active_only
|
||||||
|
filters.ids_obedience_level = ''
|
||||||
|
filters.names_obedience_level = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_user_handler = not has_filter_user_handler
|
||||||
|
filters.get_inactive_user_handler = not active_only
|
||||||
|
filters.ids_user_handler = ''
|
||||||
|
# filters.auth0_ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||||
|
filters.names_user_handler = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.emails_user_handler = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.ids_assessment = form.id_assessment.data if has_filter_assessment else ''
|
||||||
|
return filters
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_assessment_response': self.get_all_assessment_response
|
||||||
|
, 'a_get_inactive_assessment_response': self.get_inactive_assessment_response
|
||||||
|
, 'a_ids_assessment_response': self.ids_assessment_response
|
||||||
|
, 'a_notes_assessment_response': self.notes_assessment_response
|
||||||
|
, 'a_min_value_measured_assessment_response': self.min_value_measured_assessment_response
|
||||||
|
, 'a_max_value_measured_assessment_response': self.max_value_measured_assessment_response
|
||||||
|
|
||||||
|
, 'a_get_all_ACM_link': self.get_all_ACM_link
|
||||||
|
, 'a_get_inactive_ACM_link': self.get_inactive_ACM_link
|
||||||
|
, 'a_ids_ACM_link': self.ids_ACM_link
|
||||||
|
, 'a_min_distance_from_handler_ACM_link': self.min_distance_from_handler_ACM_link
|
||||||
|
, 'a_max_distance_from_handler_ACM_link': self.max_distance_from_handler_ACM_link
|
||||||
|
, 'a_value_is_in_sight_of_handler_ACM_link': self.value_is_in_sight_of_handler_ACM_link
|
||||||
|
, 'a_value_is_in_scent_range_of_handler_ACM_link': self.value_is_in_scent_range_of_handler_ACM_link
|
||||||
|
, 'a_value_is_in_hearing_range_of_handler_ACM_link': self.value_is_in_hearing_range_of_handler_ACM_link
|
||||||
|
, 'a_value_is_on_lead_ACM_link': self.value_is_on_lead_ACM_link
|
||||||
|
, 'a_min_trial_count_ACM_link': self.min_trial_count_ACM_link
|
||||||
|
, 'a_max_trial_count_ACM_link': self.max_trial_count_ACM_link
|
||||||
|
, 'a_get_all_assessment': self.get_all_assessment
|
||||||
|
, 'a_get_inactive_assessment': self.get_inactive_assessment
|
||||||
|
, 'a_ids_assessment': self.ids_assessment
|
||||||
|
, 'a_notes_assessment': self.notes_assessment
|
||||||
|
, 'a_min_temperature_assessment': self.min_temperature_assessment
|
||||||
|
, 'a_max_temperature_assessment': self.max_temperature_assessment
|
||||||
|
, 'get_all_weather': self.get_all_weather
|
||||||
|
, 'get_inactive_weather': self.get_inactive_weather
|
||||||
|
, 'ids_weather': self.ids_weather
|
||||||
|
, 'names_weather': self.names_weather
|
||||||
|
, 'get_all_lighting_level': self.get_all_lighting_level
|
||||||
|
, 'get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||||
|
, 'ids_lighting_level': self.ids_lighting_level
|
||||||
|
, 'names_lighting_level': self.names_lighting_level
|
||||||
|
, 'get_all_location': self.get_all_location
|
||||||
|
, 'get_inactive_location': self.get_inactive_location
|
||||||
|
, 'ids_location': self.ids_location
|
||||||
|
, 'names_location': self.names_location
|
||||||
|
, 'get_all_user_handler': self.get_all_user_handler
|
||||||
|
, 'get_inactive_user_handler': self.get_inactive_user_handler
|
||||||
|
, 'ids_user_handler': self.ids_user_handler
|
||||||
|
#, 'auth0_ids_user_handler': self.ids_user_handler
|
||||||
|
, 'names_user_handler': self.names_user_handler
|
||||||
|
, 'emails_user_handler': self.emails_user_handler
|
||||||
|
, 'a_get_all_command_category': self.get_all_command_category
|
||||||
|
, 'a_get_inactive_command_category': self.get_inactive_command_category
|
||||||
|
, 'a_ids_command_category': self.ids_command_category
|
||||||
|
, 'a_names_command_category': self.names_command_category
|
||||||
|
, 'a_get_all_command': self.get_all_command
|
||||||
|
, 'a_get_inactive_command': self.get_inactive_command
|
||||||
|
, 'a_ids_command': self.ids_command
|
||||||
|
, 'a_names_command': self.names_command
|
||||||
|
, 'a_hand_signal_default_descriptions_command': self.hand_signal_default_descriptions_command
|
||||||
|
, 'a_notes_command': self.notes_command
|
||||||
|
, 'a_get_all_command_modality': self.get_all_command_modality
|
||||||
|
, 'a_get_inactive_command_modality': self.get_inactive_command_modality
|
||||||
|
, 'a_ids_command_modality': self.ids_command_modality
|
||||||
|
, 'a_names_command_modality': self.names_command_modality
|
||||||
|
, 'a_get_all_bribe': self.get_all_bribe
|
||||||
|
, 'a_get_inactive_bribe': self.get_inactive_bribe
|
||||||
|
, 'a_ids_bribe': self.ids_bribe
|
||||||
|
, 'a_names_bribe': self.names_bribe
|
||||||
|
|
||||||
|
, 'a_get_all_response_quality_metric': self.get_all_response_quality_metric
|
||||||
|
, 'a_get_inactive_response_quality_metric': self.get_inactive_response_quality_metric
|
||||||
|
, 'a_ids_response_quality_metric': self.ids_response_quality_metric
|
||||||
|
, 'a_names_response_quality_metric': self.names_response_quality_metric
|
||||||
|
|
||||||
|
, 'a_get_all_obedience_level': self.get_all_obedience_level
|
||||||
|
, 'a_get_inactive_obedience_level': self.get_inactive_obedience_level
|
||||||
|
, 'a_ids_obedience_level': self.ids_obedience_level
|
||||||
|
, 'a_names_obedience_level': self.names_obedience_level
|
||||||
|
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
190
business_objects/dog/bribe.py
Normal file
190
business_objects/dog/bribe.py
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Bribe Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
import lib.argument_validation as av
|
||||||
|
from extensions import db
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
|
||||||
|
class Bribe(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_BRIBE: ClassVar[str] = 'id_bribe'
|
||||||
|
FLAG_BRIBE: ClassVar[str] = 'bribe'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_BRIBE
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Bribe'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_bribe = db.Column(db.Integer, primary_key=True)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_bribe = 0
|
||||||
|
self.is_new = False
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_bribe(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_bribe'
|
||||||
|
category = cls()
|
||||||
|
category.id_bribe = query_row[0]
|
||||||
|
category.code = query_row[1]
|
||||||
|
category.name = query_row[2]
|
||||||
|
category.active = av.input_bool(query_row[3], 'active', _m)
|
||||||
|
# command.created_on = query_row[7]
|
||||||
|
return category
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction'
|
||||||
|
level = cls()
|
||||||
|
level.id_bribe = query_row[2]
|
||||||
|
level.name = query_row[3]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_command_modality_link(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||||
|
level = cls()
|
||||||
|
level.id_bribe = query_row[9]
|
||||||
|
level.name = query_row[10]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = 'Bribe.from_json'
|
||||||
|
bribe = cls()
|
||||||
|
if json is None: return Bribe
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
bribe.id_bribe = json.get(cls.ATTR_ID_BRIBE, -1)
|
||||||
|
bribe.name = json[cls.FLAG_NAME]
|
||||||
|
bribe.code = json.get(cls.FLAG_CODE, bribe.name.upper().replace(" ", "_"))
|
||||||
|
bribe.active = json[cls.FLAG_ACTIVE]
|
||||||
|
# Helper_App.console_log(f'Bribe: {bribe}')
|
||||||
|
return bribe
|
||||||
|
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_BRIBE: self.id_bribe
|
||||||
|
, self.FLAG_CODE: self.code
|
||||||
|
, self.FLAG_NAME: self.name
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
}
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_BRIBE}: {self.id_bribe}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
class Bribe_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Bribe_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_bribe = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_bribe(cls, bribe):
|
||||||
|
_m = 'Bribe_Temp.from_Bribe'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_bribe = bribe.id_bribe
|
||||||
|
temp.code = bribe.code
|
||||||
|
temp.name = bribe.name
|
||||||
|
temp.active = bribe.active
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Bribe(Get_Many_Parameters_Base):
|
||||||
|
get_all_bribe: bool
|
||||||
|
get_inactive_bribe: bool
|
||||||
|
ids_bribe: str
|
||||||
|
names_bribe: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_bribe = True
|
||||||
|
, get_inactive_bribe = False
|
||||||
|
, ids_bribe = ''
|
||||||
|
, names_bribe = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_bribe = json.get('a_get_all_bribe', False)
|
||||||
|
, get_inactive_bribe = json.get('a_get_inactive_bribe', False)
|
||||||
|
, ids_bribe = json.get('a_ids_bribe', '')
|
||||||
|
, names_bribe = json.get('a_names_bribe', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_bribe(cls, form):
|
||||||
|
av.val_instance(form, 'form', 'Parameters_Bribe.from_form_filters_bribe', Filters_Bribe)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Bribe.from_form_filters_bribe")
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_bribe = True
|
||||||
|
filters.get_inactive_bribe = not active_only
|
||||||
|
filters.ids_bribe = ''
|
||||||
|
filters.names_bribe = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.notes_bribe = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
"""
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_bribe': self.get_all_bribe
|
||||||
|
, 'a_get_inactive_bribe': self.get_inactive_bribe
|
||||||
|
, 'a_ids_bribe': self.ids_bribe
|
||||||
|
, 'a_names_bribe': self.names_bribe
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
@@ -90,6 +90,16 @@ class Command(SQLAlchemy_ABC, Base):
|
|||||||
command.command_category = Command_Category.from_db_command_button_link(query_row)
|
command.command_category = Command_Category.from_db_command_button_link(query_row)
|
||||||
return command
|
return command
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_command_modality_link(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||||
|
command = cls()
|
||||||
|
command.id_command = query_row[5]
|
||||||
|
command.name = query_row[6]
|
||||||
|
command.active = True
|
||||||
|
command.command_category = Command_Category.from_db_assessment_command_modality_link(query_row)
|
||||||
|
return command
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, json):
|
def from_json(cls, json):
|
||||||
_m = f'{cls.__qualname__}.from_json'
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
|
|||||||
@@ -66,6 +66,15 @@ class Command_Category(SQLAlchemy_ABC, Base):
|
|||||||
level.name = query_row[2]
|
level.name = query_row[2]
|
||||||
level.active = True
|
level.active = True
|
||||||
return level
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_command_modality_link(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||||
|
level = cls()
|
||||||
|
level.id_command_category = query_row[3]
|
||||||
|
level.name = query_row[4]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, json):
|
def from_json(cls, json):
|
||||||
@@ -108,7 +117,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(250))
|
code = db.Column(db.String(250))
|
||||||
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))
|
||||||
@@ -121,7 +130,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
|
||||||
190
business_objects/dog/command_modality.py
Normal file
190
business_objects/dog/command_modality.py
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Command Modality Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
import lib.argument_validation as av
|
||||||
|
from extensions import db
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
|
||||||
|
class Command_Modality(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_COMMAND_MODALITY: ClassVar[str] = 'id_command_modality'
|
||||||
|
FLAG_COMMAND_MODALITY: ClassVar[str] = 'command-modality'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_COMMAND_MODALITY
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Command_Modality'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_command_modality = db.Column(db.Integer, primary_key=True)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_command_modality = 0
|
||||||
|
self.is_new = False
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_command_modality(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_command_modality'
|
||||||
|
category = cls()
|
||||||
|
category.id_command_modality = query_row[0]
|
||||||
|
category.code = query_row[1]
|
||||||
|
category.name = query_row[2]
|
||||||
|
category.active = av.input_bool(query_row[3], 'active', _m)
|
||||||
|
# command.created_on = query_row[7]
|
||||||
|
return category
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction'
|
||||||
|
level = cls()
|
||||||
|
level.id_command_modality = query_row[2]
|
||||||
|
level.name = query_row[3]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_command_modality_link(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_command_modality_link'
|
||||||
|
level = cls()
|
||||||
|
level.id_command_modality = query_row[7]
|
||||||
|
level.name = query_row[8]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = 'Command_Modality.from_json'
|
||||||
|
command_modality = cls()
|
||||||
|
if json is None: return Command_Modality
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
command_modality.id_command_modality = json.get(cls.ATTR_ID_COMMAND_MODALITY, -1)
|
||||||
|
command_modality.name = json[cls.FLAG_NAME]
|
||||||
|
command_modality.code = json.get(cls.FLAG_CODE, command_modality.name.upper().replace(" ", "_"))
|
||||||
|
command_modality.active = json[cls.FLAG_ACTIVE]
|
||||||
|
# Helper_App.console_log(f'Command_Modality: {command_modality}')
|
||||||
|
return command_modality
|
||||||
|
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_COMMAND_MODALITY: self.id_command_modality
|
||||||
|
, self.FLAG_CODE: self.code
|
||||||
|
, self.FLAG_NAME: self.name
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
}
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_COMMAND_MODALITY}: {self.id_command_modality}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
class Command_Modality_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Command_Modality_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_command_modality = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_command_modality(cls, command_modality):
|
||||||
|
_m = 'Command_Modality_Temp.from_Command_Modality'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_command_modality = command_modality.id_command_modality
|
||||||
|
temp.code = command_modality.code
|
||||||
|
temp.name = command_modality.name
|
||||||
|
temp.active = command_modality.active
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Command_Modality(Get_Many_Parameters_Base):
|
||||||
|
get_all_command_modality: bool
|
||||||
|
get_inactive_command_modality: bool
|
||||||
|
ids_command_modality: str
|
||||||
|
names_command_modality: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_command_modality = True
|
||||||
|
, get_inactive_command_modality = False
|
||||||
|
, ids_command_modality = ''
|
||||||
|
, names_command_modality = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_command_modality = json.get('a_get_all_command_modality', False)
|
||||||
|
, get_inactive_command_modality = json.get('a_get_inactive_command_modality', False)
|
||||||
|
, ids_command_modality = json.get('a_ids_command_modality', '')
|
||||||
|
, names_command_modality = json.get('a_names_command_modality', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_command_modality(cls, form):
|
||||||
|
av.val_instance(form, 'form', 'Parameters_Command_Modality.from_form_filters_command_modality', Filters_Command_Modality)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Command_Modality.from_form_filters_command_modality")
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_command_modality = True
|
||||||
|
filters.get_inactive_command_modality = not active_only
|
||||||
|
filters.ids_command_modality = ''
|
||||||
|
filters.names_command_modality = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.notes_command_modality = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
"""
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_command_modality': self.get_all_command_modality
|
||||||
|
, 'a_get_inactive_command_modality': self.get_inactive_command_modality
|
||||||
|
, 'a_ids_command_modality': self.ids_command_modality
|
||||||
|
, 'a_names_command_modality': self.names_command_modality
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
655
business_objects/dog/distraction.py
Normal file
655
business_objects/dog/distraction.py
Normal file
@@ -0,0 +1,655 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Distraction Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
from business_objects.dog.assessment import Assessment
|
||||||
|
from business_objects.dog.command import Command
|
||||||
|
# from business_objects.dog.command_category import Command_Category
|
||||||
|
from business_objects.dog.distraction_intensity_level import Distraction_Intensity_Level
|
||||||
|
from business_objects.dog.distraction_type import Distraction_Type
|
||||||
|
from business_objects.dog.dog import Dog
|
||||||
|
from extensions import db
|
||||||
|
from forms.dog.assessment import Filters_Assessment
|
||||||
|
# from forms.dog.distraction import Filters_Distraction
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
import lib.argument_validation as av
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar, Optional
|
||||||
|
|
||||||
|
|
||||||
|
class Distraction(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_DISTRACTION: ClassVar[str] = 'id_distraction'
|
||||||
|
FLAG_DISTRACTION: ClassVar[str] = Assessment.FLAG_DISTRACTION
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-emotional'
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-scent'
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-sight'
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-sound'
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH: ClassVar[str] = f'{Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL}-touch'
|
||||||
|
FLAG_PROXIMITY_METRES: ClassVar[str] = 'proximity-metres'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_DISTRACTION
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = ATTR_ID_DISTRACTION
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Distraction'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_distraction = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_assessment = db.Column(db.Integer)
|
||||||
|
id_distraction_type = db.Column(db.Integer)
|
||||||
|
id_intensity_level_emotional = db.Column(db.Integer)
|
||||||
|
id_intensity_level_scent = db.Column(db.Integer)
|
||||||
|
id_intensity_level_sight = db.Column(db.Integer)
|
||||||
|
id_intensity_level_sound = db.Column(db.Integer)
|
||||||
|
id_intensity_level_touch = db.Column(db.Integer)
|
||||||
|
quantity = db.Column(db.Integer)
|
||||||
|
proximity_metres = db.Column(db.Float)
|
||||||
|
notes = db.Column(db.Text)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
created_on = db.Column(db.DateTime)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_distraction = 0
|
||||||
|
self.is_new = False
|
||||||
|
self.assessment = None
|
||||||
|
self.distraction_type = None
|
||||||
|
self.intensity_level_emotional = None
|
||||||
|
self.intensity_level_scent = None
|
||||||
|
self.intensity_level_sight = None
|
||||||
|
self.intensity_level_sound = None
|
||||||
|
self.intensity_level_touch = None
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction(cls, query_row):
|
||||||
|
_m = 'Distraction.from_db_distraction'
|
||||||
|
distraction = cls()
|
||||||
|
distraction.id_distraction = query_row[0]
|
||||||
|
distraction.id_assessment = query_row[1]
|
||||||
|
distraction.id_distraction_type = query_row[2]
|
||||||
|
#distraction.id_command_category = query_row[3]
|
||||||
|
distraction.id_intensity_level_emotional = query_row[4]
|
||||||
|
distraction.id_intensity_level_scent = query_row[6]
|
||||||
|
distraction.id_intensity_level_sight = query_row[8]
|
||||||
|
distraction.id_intensity_level_sound = query_row[10]
|
||||||
|
distraction.id_intensity_level_touch = query_row[12]
|
||||||
|
distraction.quantity = query_row[14]
|
||||||
|
distraction.proximity_metres = query_row[15]
|
||||||
|
distraction.notes = query_row[16]
|
||||||
|
distraction.active = av.input_bool(query_row[17], 'active', _m)
|
||||||
|
# distraction.created_on = query_row[7]
|
||||||
|
distraction.assessment = Assessment.from_db_distraction(query_row)
|
||||||
|
distraction.distraction_type = Distraction_Type.from_db_distraction(query_row)
|
||||||
|
distraction.intensity_level_emotional = Distraction_Intensity_Level.from_db_distraction_emotional(query_row)
|
||||||
|
distraction.intensity_level_scent = Distraction_Intensity_Level.from_db_distraction_scent(query_row)
|
||||||
|
distraction.intensity_level_sight = Distraction_Intensity_Level.from_db_distraction_sight(query_row)
|
||||||
|
distraction.intensity_level_sound = Distraction_Intensity_Level.from_db_distraction_sound(query_row)
|
||||||
|
distraction.intensity_level_touch = Distraction_Intensity_Level.from_db_distraction_touch(query_row)
|
||||||
|
return distraction
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = 'Distraction.from_json'
|
||||||
|
distraction = cls()
|
||||||
|
if json is None: return distraction
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
distraction.id_distraction = json.get(cls.ATTR_ID_DISTRACTION, -1)
|
||||||
|
distraction.id_assessment = json[Assessment.ATTR_ID_ASSESSMENT]
|
||||||
|
distraction.id_distraction_type = json[Distraction_Type.ATTR_ID_DISTRACTION_TYPE]
|
||||||
|
distraction.id_intensity_level_emotional = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL]
|
||||||
|
distraction.id_intensity_level_scent = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT]
|
||||||
|
distraction.id_intensity_level_sight = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT]
|
||||||
|
distraction.id_intensity_level_sound = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND]
|
||||||
|
distraction.id_intensity_level_touch = json[cls.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH]
|
||||||
|
distraction.quantity = json[cls.FLAG_QUANTITY]
|
||||||
|
distraction.proximity_metres = json[cls.FLAG_PROXIMITY_METRES]
|
||||||
|
distraction.notes = json[cls.FLAG_NOTES]
|
||||||
|
distraction.active = json[cls.FLAG_ACTIVE]
|
||||||
|
distraction.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||||
|
# distraction.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY]
|
||||||
|
# Helper_App.console_log(f'Dog Command Link: {distraction}')
|
||||||
|
return distraction
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_DISTRACTION: self.id_distraction
|
||||||
|
, Assessment.ATTR_ID_ASSESSMENT: { Assessment.ATTR_ID_ASSESSMENT: None } if self.assessment is None else self.assessment.to_json()
|
||||||
|
, Distraction_Type.ATTR_ID_DISTRACTION_TYPE: { Distraction_Type.ATTR_ID_DISTRACTION_TYPE: None } if self.distraction_type is None else self.distraction_type.to_json()
|
||||||
|
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL: None } if self.intensity_level_emotional is None else self.intensity_level_emotional.to_json()
|
||||||
|
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT: None } if self.intensity_level_scent is None else self.intensity_level_scent.to_json()
|
||||||
|
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT: None } if self.intensity_level_sight is None else self.intensity_level_sight.to_json()
|
||||||
|
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND: None } if self.intensity_level_sound is None else self.intensity_level_sound.to_json()
|
||||||
|
, self.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH: { self.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH: None } if self.intensity_level_touch is None else self.intensity_level_touch.to_json()
|
||||||
|
, self.FLAG_QUANTITY: self.quantity
|
||||||
|
, self.FLAG_PROXIMITY_METRES: self.proximity_metres
|
||||||
|
, self.FLAG_NOTES: self.notes
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
, self.FLAG_CREATED_ON: self.created_on
|
||||||
|
}
|
||||||
|
# , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_DISTRACTION}: {self.id_distraction}
|
||||||
|
{Assessment.ATTR_ID_ASSESSMENT}: {self.id_assessment}
|
||||||
|
{Distraction_Type.ATTR_ID_DISTRACTION_TYPE}: {self.id_distraction_type}
|
||||||
|
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL}: {self.intensity_level_emotional}
|
||||||
|
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT}: {self.intensity_level_scent}
|
||||||
|
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT}: {self.intensity_level_sight}
|
||||||
|
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND}: {self.intensity_level_sound}
|
||||||
|
{self.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH}: {self.intensity_level_touch}
|
||||||
|
{self.FLAG_QUANTITY}: {self.quantity}
|
||||||
|
{self.FLAG_PROXIMITY_METRES}: {self.proximity_metres}
|
||||||
|
{self.FLAG_NOTES}: {self.notes}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category}
|
||||||
|
|
||||||
|
class Distraction_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Distraction_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_distraction = db.Column(db.Integer)
|
||||||
|
id_assessment = db.Column(db.Integer)
|
||||||
|
id_distraction_type = db.Column(db.Integer)
|
||||||
|
id_intensity_level_emotional = db.Column(db.Integer)
|
||||||
|
id_intensity_level_scent = db.Column(db.Integer)
|
||||||
|
id_intensity_level_sight = db.Column(db.Integer)
|
||||||
|
id_intensity_level_sound = db.Column(db.Integer)
|
||||||
|
id_intensity_level_touch = db.Column(db.Integer)
|
||||||
|
quantity = db.Column(db.Integer)
|
||||||
|
proximity_metres = db.Column(db.Float)
|
||||||
|
notes = db.Column(db.Text)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
# created_on = db.Column(db.DateTime)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_distraction(cls, distraction):
|
||||||
|
_m = 'Distraction_Temp.from_distraction'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_distraction = distraction.id_distraction
|
||||||
|
temp.id_assessment = distraction.id_assessment
|
||||||
|
temp.id_distraction_type = distraction.id_distraction_type
|
||||||
|
temp.id_intensity_level_emotional = distraction.id_intensity_level_emotional
|
||||||
|
temp.id_intensity_level_scent = distraction.id_intensity_level_scent
|
||||||
|
temp.id_intensity_level_sight = distraction.id_intensity_level_sight
|
||||||
|
temp.id_intensity_level_sound = distraction.id_intensity_level_sound
|
||||||
|
temp.id_intensity_level_touch = distraction.id_intensity_level_touch
|
||||||
|
temp.quantity = distraction.quantity
|
||||||
|
temp.proximity_metres = distraction.proximity_metres
|
||||||
|
temp.notes = distraction.notes
|
||||||
|
temp.active = distraction.active
|
||||||
|
# temp.created_on = distraction.created_on
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Distraction(Get_Many_Parameters_Base):
|
||||||
|
get_all_distraction: bool
|
||||||
|
get_inactive_distraction: bool
|
||||||
|
ids_distraction: str
|
||||||
|
notes_distraction: str
|
||||||
|
min_quantity_distraction: Optional[int]
|
||||||
|
max_quantity_distraction: Optional[int]
|
||||||
|
min_proximity_metres_distraction: Optional[float]
|
||||||
|
max_proximity_metres_distraction: Optional[float]
|
||||||
|
|
||||||
|
get_all_distraction_type: bool
|
||||||
|
get_inactive_distraction_type: bool
|
||||||
|
ids_distraction_type: str
|
||||||
|
names_distraction_type: str
|
||||||
|
|
||||||
|
get_all_distraction_intensity_level_emotional: bool
|
||||||
|
get_inactive_distraction_intensity_level_emotional: bool
|
||||||
|
ids_distraction_intensity_level_emotional: str
|
||||||
|
names_distraction_intensity_level_emotional: str
|
||||||
|
|
||||||
|
get_all_distraction_intensity_level_scent: bool
|
||||||
|
get_inactive_distraction_intensity_level_scent: bool
|
||||||
|
ids_distraction_intensity_level_scent: str
|
||||||
|
names_distraction_intensity_level_scent: str
|
||||||
|
|
||||||
|
get_all_distraction_intensity_level_sight: bool
|
||||||
|
get_inactive_distraction_intensity_level_sight: bool
|
||||||
|
ids_distraction_intensity_level_sight: str
|
||||||
|
names_distraction_intensity_level_sight: str
|
||||||
|
|
||||||
|
get_all_distraction_intensity_level_sound: bool
|
||||||
|
get_inactive_distraction_intensity_level_sound: bool
|
||||||
|
ids_distraction_intensity_level_sound: str
|
||||||
|
names_distraction_intensity_level_sound: str
|
||||||
|
|
||||||
|
get_all_distraction_intensity_level_touch: bool
|
||||||
|
get_inactive_distraction_intensity_level_touch: bool
|
||||||
|
ids_distraction_intensity_level_touch: str
|
||||||
|
names_distraction_intensity_level_touch: str
|
||||||
|
|
||||||
|
get_all_assessment: bool
|
||||||
|
get_inactive_assessment: bool
|
||||||
|
ids_assessment: str
|
||||||
|
notes_assessment: str
|
||||||
|
min_temperature_assessment: Optional[float]
|
||||||
|
max_temperature_assessment: Optional[float]
|
||||||
|
get_all_weather: bool
|
||||||
|
get_inactive_weather: bool
|
||||||
|
ids_weather: str
|
||||||
|
names_weather: str
|
||||||
|
get_all_lighting_level: bool
|
||||||
|
get_inactive_lighting_level: bool
|
||||||
|
ids_lighting_level: str
|
||||||
|
names_lighting_level: str
|
||||||
|
get_all_location: bool
|
||||||
|
get_inactive_location: bool
|
||||||
|
ids_location: str
|
||||||
|
names_location: str
|
||||||
|
get_all_user_handler: bool
|
||||||
|
get_inactive_user_handler: bool
|
||||||
|
ids_user_handler: str
|
||||||
|
#auth0_ids_user_handler: str
|
||||||
|
names_user_handler: str
|
||||||
|
emails_user_handler: str
|
||||||
|
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_distraction = True
|
||||||
|
, get_inactive_distraction = False
|
||||||
|
, ids_distraction = ''
|
||||||
|
, notes_distraction = ''
|
||||||
|
, min_quantity_distraction = None
|
||||||
|
, max_quantity_distraction = None
|
||||||
|
, min_proximity_metres_distraction = None
|
||||||
|
, max_proximity_metres_distraction = None
|
||||||
|
|
||||||
|
, get_all_distraction_type = True
|
||||||
|
, get_inactive_distraction_type = False
|
||||||
|
, ids_distraction_type = ''
|
||||||
|
, names_distraction_type = ''
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_emotional = True
|
||||||
|
, get_inactive_distraction_intensity_level_emotional = False
|
||||||
|
, ids_distraction_intensity_level_emotional = ''
|
||||||
|
, names_distraction_intensity_level_emotional = ''
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_scent = True
|
||||||
|
, get_inactive_distraction_intensity_level_scent = False
|
||||||
|
, ids_distraction_intensity_level_scent = ''
|
||||||
|
, names_distraction_intensity_level_scent = ''
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_sight = True
|
||||||
|
, get_inactive_distraction_intensity_level_sight = False
|
||||||
|
, ids_distraction_intensity_level_sight = ''
|
||||||
|
, names_distraction_intensity_level_sight = ''
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_sound = True
|
||||||
|
, get_inactive_distraction_intensity_level_sound = False
|
||||||
|
, ids_distraction_intensity_level_sound = ''
|
||||||
|
, names_distraction_intensity_level_sound = ''
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_touch = True
|
||||||
|
, get_inactive_distraction_intensity_level_touch = False
|
||||||
|
, ids_distraction_intensity_level_touch = ''
|
||||||
|
, names_distraction_intensity_level_touch = ''
|
||||||
|
|
||||||
|
, get_all_assessment = True
|
||||||
|
, get_inactive_assessment = False
|
||||||
|
, ids_assessment = ''
|
||||||
|
, notes_assessment = ''
|
||||||
|
, min_temperature_assessment = None
|
||||||
|
, max_temperature_assessment = None
|
||||||
|
, get_all_weather = True
|
||||||
|
, get_inactive_weather = False
|
||||||
|
, ids_weather = ''
|
||||||
|
, names_weather = ''
|
||||||
|
, get_all_lighting_level = True
|
||||||
|
, get_inactive_lighting_level = False
|
||||||
|
, ids_lighting_level = ''
|
||||||
|
, names_lighting_level = ''
|
||||||
|
, get_all_location = True
|
||||||
|
, get_inactive_location = False
|
||||||
|
, ids_location = ''
|
||||||
|
, names_location = ''
|
||||||
|
, get_all_user_handler = True
|
||||||
|
, get_inactive_user_handler = False
|
||||||
|
, ids_user_handler = ''
|
||||||
|
# , auth0_ids_user_handler = ''
|
||||||
|
, names_user_handler = ''
|
||||||
|
, emails_user_handler = ''
|
||||||
|
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_distraction = json.get('a_get_all_distraction', False)
|
||||||
|
, get_inactive_distraction = json.get('a_get_inactive_distraction', False)
|
||||||
|
, ids_distraction = json.get('a_ids_distraction', '')
|
||||||
|
, notes_distraction = json.get('a_notes_distraction', '')
|
||||||
|
, min_quantity_distraction = json.get('a_min_quantity_distraction', None)
|
||||||
|
, max_quantity_distraction = json.get('a_max_quantity_distraction', None)
|
||||||
|
, min_proximity_metres_distraction = json.get('a_min_proximity_metres_distraction', None)
|
||||||
|
, max_proximity_metres_distraction = json.get('a_max_proximity_metres_distraction', None)
|
||||||
|
|
||||||
|
, get_all_distraction_type = json.get('a_get_all_distraction_type', False)
|
||||||
|
, get_inactive_distraction_type = json.get('a_get_inactive_distraction_type', False)
|
||||||
|
, ids_distraction_type = json.get('a_ids_distraction_type', '')
|
||||||
|
, names_distraction_type = json.get('a_names_distraction_type', '')
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_emotional = json.get('a_get_all_distraction_intensity_level_emotional', False)
|
||||||
|
, get_inactive_distraction_intensity_level_emotional = json.get('a_get_inactive_distraction_intensity_level_emotional', False)
|
||||||
|
, ids_distraction_intensity_level_emotional = json.get('a_ids_distraction_intensity_level_emotional', '')
|
||||||
|
, names_distraction_intensity_level_emotional = json.get('a_names_distraction_intensity_level_emotional', '')
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_scent = json.get('a_get_all_distraction_intensity_level_scent', False)
|
||||||
|
, get_inactive_distraction_intensity_level_scent = json.get('a_get_inactive_distraction_intensity_level_scent', False)
|
||||||
|
, ids_distraction_intensity_level_scent = json.get('a_ids_distraction_intensity_level_scent', '')
|
||||||
|
, names_distraction_intensity_level_scent = json.get('a_names_distraction_intensity_level_scent', '')
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_sight = json.get('a_get_all_distraction_intensity_level_sight', False)
|
||||||
|
, get_inactive_distraction_intensity_level_sight = json.get('a_get_inactive_distraction_intensity_level_sight', False)
|
||||||
|
, ids_distraction_intensity_level_sight = json.get('a_ids_distraction_intensity_level_sight', '')
|
||||||
|
, names_distraction_intensity_level_sight = json.get('a_names_distraction_intensity_level_sight', '')
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_sound = json.get('a_get_all_distraction_intensity_level_sound', False)
|
||||||
|
, get_inactive_distraction_intensity_level_sound = json.get('a_get_inactive_distraction_intensity_level_sound', False)
|
||||||
|
, ids_distraction_intensity_level_sound = json.get('a_ids_distraction_intensity_level_sound', '')
|
||||||
|
, names_distraction_intensity_level_sound = json.get('a_names_distraction_intensity_level_sound', '')
|
||||||
|
|
||||||
|
, get_all_distraction_intensity_level_touch = json.get('a_get_all_distraction_intensity_level_touch', False)
|
||||||
|
, get_inactive_distraction_intensity_level_touch = json.get('a_get_inactive_distraction_intensity_level_touch', False)
|
||||||
|
, ids_distraction_intensity_level_touch = json.get('a_ids_distraction_intensity_level_touch', '')
|
||||||
|
, names_distraction_intensity_level_touch = json.get('a_names_distraction_intensity_level_touch', '')
|
||||||
|
|
||||||
|
, get_all_assessment = json.get('a_get_all_assessment', False)
|
||||||
|
, get_inactive_assessment = json.get('a_get_inactive_assessment', False)
|
||||||
|
, ids_assessment = json.get('a_ids_assessment', '')
|
||||||
|
, notes_assessment = json.get('a_notes_assessment', '')
|
||||||
|
, min_temperature_assessment = json.get('a_min_temperature_assessment', None)
|
||||||
|
, max_temperature_assessment = json.get('a_max_temperature_assessment', None)
|
||||||
|
, get_all_weather = json.get('a_get_all_weather', False)
|
||||||
|
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||||
|
, ids_weather = json.get('a_ids_weather', '')
|
||||||
|
, names_weather = json.get('a_names_weather', '')
|
||||||
|
, get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||||
|
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||||
|
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||||
|
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||||
|
, get_all_location = json.get('a_get_all_location', False)
|
||||||
|
, get_inactive_location = json.get('a_get_inactive_location', False)
|
||||||
|
, ids_location = json.get('a_ids_location', '')
|
||||||
|
, names_location = json.get('a_names_location', '')
|
||||||
|
, get_all_user_handler = json.get('a_get_all_user_handler', False)
|
||||||
|
, get_inactive_user_handler = json.get('a_get_inactive_user_handler', False)
|
||||||
|
, ids_user_handler = json.get('a_ids_user_handler', '')
|
||||||
|
# , auth0_ids_user_handler = json.get('a_ids_user_handler', '')
|
||||||
|
, names_user_handler = json.get('a_names_user_handler', '')
|
||||||
|
, emails_user_handler = json.get('a_emails_user_handler', '')
|
||||||
|
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_distraction(cls, form):
|
||||||
|
_m = f'{cls.__qualname__}.from_form_filters_distraction'
|
||||||
|
Helper_App.console_log(_m)
|
||||||
|
Helper_App.console_log(f'Filters: {form}')
|
||||||
|
av.val_instance(form, 'form', _m, Filters_Distraction)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
has_filter_distraction_type = not (form.id_distraction_type.data == '0' or form.id_distraction_type.data == '' or form.id_distraction_type.data is None)
|
||||||
|
has_filter_intensity_level_emotional = not (form.id_intensity_level_emotional.data == '0' or form.id_intensity_level_emotional.data == '' or form.id_intensity_level_emotional.data is None)
|
||||||
|
has_filter_intensity_level_scent = not (form.id_intensity_level_scent.data == '0' or form.id_intensity_level_scent.data == '' or form.id_intensity_level_scent.data is None)
|
||||||
|
has_filter_intensity_level_sight = not (form.id_intensity_level_sight.data == '0' or form.id_intensity_level_sight.data == '' or form.id_intensity_level_sight.data is None)
|
||||||
|
has_filter_intensity_level_sound = not (form.id_intensity_level_sound.data == '0' or form.id_intensity_level_sound.data == '' or form.id_intensity_level_sound.data is None)
|
||||||
|
has_filter_intensity_level_touch = not (form.id_intensity_level_touch.data == '0' or form.id_intensity_level_touch.data == '' or form.id_intensity_level_touch.data is None)
|
||||||
|
|
||||||
|
has_filter_assessment = not (form.id_assessment.data == '0' or form.id_assessment.data == '' or form.id_assessment.data is None)
|
||||||
|
has_filter_weather = not (form.id_weather.data == '0' or form.id_weather.data == '' or form.id_weather.data is None)
|
||||||
|
has_filter_lighting_level = not (form.id_lighting_level.data == '0' or form.id_lighting_level.data == '' or form.id_lighting_level.data is None)
|
||||||
|
has_filter_location = not (form.id_location.data == '0' or form.id_location.data == '' or form.id_location.data is None)
|
||||||
|
has_filter_user_handler = not (form.id_user_handler.data == '0' or form.id_user_handler.data == '' or form.id_user_handler.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||||
|
Helper_App.console_log(f'''
|
||||||
|
has_filter_search_text: {has_filter_search_text}
|
||||||
|
has_filter_distraction_type: {has_filter_distraction_type}
|
||||||
|
has_filter_intensity_level_emotional: {has_filter_intensity_level_emotional}
|
||||||
|
has_filter_intensity_level_scent: {has_filter_intensity_level_scent}
|
||||||
|
has_filter_intensity_level_sight: {has_filter_intensity_level_sight}
|
||||||
|
has_filter_intensity_level_sound: {has_filter_intensity_level_sound}
|
||||||
|
has_filter_intensity_level_touch: {has_filter_intensity_level_touch}
|
||||||
|
has_filter_assessment: {has_filter_assessment}
|
||||||
|
has_filter_weather: {has_filter_weather}
|
||||||
|
has_filter_lighting_level: {has_filter_lighting_level}
|
||||||
|
has_filter_location: {has_filter_location}
|
||||||
|
has_filter_user_handler: {has_filter_user_handler}
|
||||||
|
active_only: {active_only}
|
||||||
|
''')
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_distraction = True
|
||||||
|
filters.get_inactive_distraction = not active_only
|
||||||
|
filters.ids_distraction = ''
|
||||||
|
filters.notes_distraction = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_type = True
|
||||||
|
filters.get_inactive_distraction_type = not active_only
|
||||||
|
filters.ids_distraction_type = form.id_distraction_type.data if has_filter_distraction_type else ''
|
||||||
|
filters.names_distraction_type = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_emotional = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_emotional = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_emotional = form.id_intensity_level_emotional.data if has_filter_intensity_level_emotional else ''
|
||||||
|
filters.names_distraction_intensity_level_emotional = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_scent = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_scent = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_scent = form.id_intensity_level_scent.data if has_filter_intensity_level_scent else ''
|
||||||
|
filters.names_distraction_intensity_level_scent = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_sight = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_sight = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_sight = form.id_intensity_level_sight.data if has_filter_intensity_level_sight else ''
|
||||||
|
filters.names_distraction_intensity_level_sight = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_sound = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_sound = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_sound = form.id_intensity_level_sound.data if has_filter_intensity_level_sound else ''
|
||||||
|
filters.names_distraction_intensity_level_sound = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_touch = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_touch = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_touch = form.id_intensity_level_touch.data if has_filter_intensity_level_touch else ''
|
||||||
|
filters.names_distraction_intensity_level_touch = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_assessment = True
|
||||||
|
filters.get_inactive_assessment = not active_only
|
||||||
|
filters.ids_assessment = form.id_assessment.data if has_filter_assessment else ''
|
||||||
|
filters.get_all_weather = not has_filter_weather
|
||||||
|
filters.get_inactive_weather = not active_only
|
||||||
|
filters.ids_weather = form.id_weather.data if has_filter_weather else ''
|
||||||
|
filters.names_weather = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_lighting_level = not has_filter_lighting_level
|
||||||
|
filters.get_inactive_lighting_level = not active_only
|
||||||
|
filters.ids_lighting_level = form.id_lighting_level.data if has_filter_lighting_level else ''
|
||||||
|
filters.names_lighting_level = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_location = not has_filter_location
|
||||||
|
filters.get_inactive_location = not active_only
|
||||||
|
filters.ids_location = form.id_location.data if has_filter_location else ''
|
||||||
|
filters.names_location = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.get_all_user_handler = not has_filter_user_handler
|
||||||
|
filters.get_inactive_user_handler = not active_only
|
||||||
|
filters.ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||||
|
# filters.auth0_ids_user_handler = form.id_user_handler.data if has_filter_user_handler else ''
|
||||||
|
filters.names_user_handler = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.emails_user_handler = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
return filters
|
||||||
|
"""
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_assessment(cls, form):
|
||||||
|
_m = f'{cls.__qualname__}.from_form_filters_assessment'
|
||||||
|
Helper_App.console_log(_m)
|
||||||
|
Helper_App.console_log(f'Filters: {form}')
|
||||||
|
av.val_instance(form, 'form', _m, Filters_Assessment)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
has_filter_distraction_type = False
|
||||||
|
has_filter_intensity_level_emotional = False
|
||||||
|
has_filter_intensity_level_scent = False
|
||||||
|
has_filter_intensity_level_sight = False
|
||||||
|
has_filter_intensity_level_sound = False
|
||||||
|
has_filter_intensity_level_touch = False
|
||||||
|
|
||||||
|
has_filter_assessment = not (form.id_assessment.data == '0' or form.id_assessment.data == '' or form.id_assessment.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", _m)
|
||||||
|
Helper_App.console_log(f'''
|
||||||
|
has_filter_search_text: {has_filter_search_text}
|
||||||
|
has_filter_distraction_type: {has_filter_distraction_type}
|
||||||
|
has_filter_intensity_level_emotional: {has_filter_intensity_level_emotional}
|
||||||
|
has_filter_intensity_level_scent: {has_filter_intensity_level_scent}
|
||||||
|
has_filter_intensity_level_sight: {has_filter_intensity_level_sight}
|
||||||
|
has_filter_intensity_level_sound: {has_filter_intensity_level_sound}
|
||||||
|
has_filter_intensity_level_touch: {has_filter_intensity_level_touch}
|
||||||
|
has_filter_assessment: {has_filter_assessment}
|
||||||
|
active_only: {active_only}
|
||||||
|
''')
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_distraction = True
|
||||||
|
filters.get_inactive_distraction = not active_only
|
||||||
|
filters.ids_distraction = ''
|
||||||
|
filters.notes_distraction = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_type = True
|
||||||
|
filters.get_inactive_distraction_type = not active_only
|
||||||
|
filters.ids_distraction_type = ''
|
||||||
|
filters.names_distraction_type = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_emotional = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_emotional = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_emotional = ''
|
||||||
|
filters.names_distraction_intensity_level_emotional = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_scent = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_scent = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_scent = ''
|
||||||
|
filters.names_distraction_intensity_level_scent = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_sight = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_sight = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_sight = ''
|
||||||
|
filters.names_distraction_intensity_level_sight = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_sound = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_sound = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_sound = ''
|
||||||
|
filters.names_distraction_intensity_level_sound = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_distraction_intensity_level_touch = True
|
||||||
|
filters.get_inactive_distraction_intensity_level_touch = not active_only
|
||||||
|
filters.ids_distraction_intensity_level_touch = ''
|
||||||
|
filters.names_distraction_intensity_level_touch = form.search.data if has_filter_search_text else ''
|
||||||
|
|
||||||
|
filters.get_all_assessment = True
|
||||||
|
filters.get_inactive_assessment = not active_only
|
||||||
|
filters.ids_assessment = form.id_assessment.data if has_filter_assessment else ''
|
||||||
|
|
||||||
|
return filters
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_distraction': self.get_all_distraction
|
||||||
|
, 'a_get_inactive_distraction': self.get_inactive_distraction
|
||||||
|
, 'a_ids_distraction': self.ids_distraction
|
||||||
|
, 'a_notes_distraction': self.notes_distraction
|
||||||
|
, 'a_min_quantity_distraction': self.min_quantity_distraction
|
||||||
|
, 'a_max_quantity_distraction': self.max_quantity_distraction
|
||||||
|
, 'a_min_proximity_metres_distraction': self.min_proximity_metres_distraction
|
||||||
|
, 'a_max_proximity_metres_distraction': self.max_proximity_metres_distraction
|
||||||
|
|
||||||
|
, 'a_get_all_distraction_type': self.get_all_distraction_type
|
||||||
|
, 'a_get_inactive_distraction_type': self.get_inactive_distraction_type
|
||||||
|
, 'a_ids_distraction_type': self.ids_distraction_type
|
||||||
|
, 'a_names_distraction_type': self.names_distraction_type
|
||||||
|
|
||||||
|
, 'a_get_all_distraction_intensity_level_emotional': self.get_all_distraction_intensity_level_emotional
|
||||||
|
, 'a_get_inactive_distraction_intensity_level_emotional': self.get_inactive_distraction_intensity_level_emotional
|
||||||
|
, 'a_ids_distraction_intensity_level_emotional': self.ids_distraction_intensity_level_emotional
|
||||||
|
, 'a_names_distraction_intensity_level_emotional': self.names_distraction_intensity_level_emotional
|
||||||
|
|
||||||
|
, 'a_get_all_distraction_intensity_level_scent': self.get_all_distraction_intensity_level_scent
|
||||||
|
, 'a_get_inactive_distraction_intensity_level_scent': self.get_inactive_distraction_intensity_level_scent
|
||||||
|
, 'a_ids_distraction_intensity_level_scent': self.ids_distraction_intensity_level_scent
|
||||||
|
, 'a_names_distraction_intensity_level_scent': self.names_distraction_intensity_level_scent
|
||||||
|
|
||||||
|
, 'a_get_all_distraction_intensity_level_sight': self.get_all_distraction_intensity_level_sight
|
||||||
|
, 'a_get_inactive_distraction_intensity_level_sight': self.get_inactive_distraction_intensity_level_sight
|
||||||
|
, 'a_ids_distraction_intensity_level_sight': self.ids_distraction_intensity_level_sight
|
||||||
|
, 'a_names_distraction_intensity_level_sight': self.names_distraction_intensity_level_sight
|
||||||
|
|
||||||
|
, 'a_get_all_distraction_intensity_level_sound': self.get_all_distraction_intensity_level_sound
|
||||||
|
, 'a_get_inactive_distraction_intensity_level_sound': self.get_inactive_distraction_intensity_level_sound
|
||||||
|
, 'a_ids_distraction_intensity_level_sound': self.ids_distraction_intensity_level_sound
|
||||||
|
, 'a_names_distraction_intensity_level_sound': self.names_distraction_intensity_level_sound
|
||||||
|
|
||||||
|
, 'a_get_all_distraction_intensity_level_touch': self.get_all_distraction_intensity_level_touch
|
||||||
|
, 'a_get_inactive_distraction_intensity_level_touch': self.get_inactive_distraction_intensity_level_touch
|
||||||
|
, 'a_ids_distraction_intensity_level_touch': self.ids_distraction_intensity_level_touch
|
||||||
|
, 'a_names_distraction_intensity_level_touch': self.names_distraction_intensity_level_touch
|
||||||
|
|
||||||
|
, 'a_get_all_assessment': self.get_all_assessment
|
||||||
|
, 'a_get_inactive_assessment': self.get_inactive_assessment
|
||||||
|
, 'a_ids_assessment': self.ids_assessment
|
||||||
|
, 'a_notes_assessment': self.notes_assessment
|
||||||
|
, 'a_min_temperature_assessment': self.min_temperature_assessment
|
||||||
|
, 'a_max_temperature_assessment': self.max_temperature_assessment
|
||||||
|
, 'get_all_weather': self.get_all_weather
|
||||||
|
, 'get_inactive_weather': self.get_inactive_weather
|
||||||
|
, 'ids_weather': self.ids_weather
|
||||||
|
, 'names_weather': self.names_weather
|
||||||
|
, 'get_all_lighting_level': self.get_all_lighting_level
|
||||||
|
, 'get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||||
|
, 'ids_lighting_level': self.ids_lighting_level
|
||||||
|
, 'names_lighting_level': self.names_lighting_level
|
||||||
|
, 'get_all_location': self.get_all_location
|
||||||
|
, 'get_inactive_location': self.get_inactive_location
|
||||||
|
, 'ids_location': self.ids_location
|
||||||
|
, 'names_location': self.names_location
|
||||||
|
, 'get_all_user_handler': self.get_all_user_handler
|
||||||
|
, 'get_inactive_user_handler': self.get_inactive_user_handler
|
||||||
|
, 'ids_user_handler': self.ids_user_handler
|
||||||
|
#, 'auth0_ids_user_handler': self.ids_user_handler
|
||||||
|
, 'names_user_handler': self.names_user_handler
|
||||||
|
, 'emails_user_handler': self.emails_user_handler
|
||||||
|
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
217
business_objects/dog/distraction_intensity_level.py
Normal file
217
business_objects/dog/distraction_intensity_level.py
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Distraction Intensity Level Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
import lib.argument_validation as av
|
||||||
|
from extensions import db
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
|
||||||
|
class Distraction_Intensity_Level(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_DISTRACTION_INTENSITY_LEVEL: ClassVar[str] = 'id_intensity_level'
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL: ClassVar[str] = 'distraction-intensity-level'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_DISTRACTION_INTENSITY_LEVEL
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Distraction_Intensity_Level'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_intensity_level = db.Column(db.Integer, primary_key=True)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_intensity_level = 0
|
||||||
|
self.is_new = False
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction_intensity_level(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction_intensity_level'
|
||||||
|
category = cls()
|
||||||
|
category.id_intensity_level = query_row[0]
|
||||||
|
category.code = query_row[1]
|
||||||
|
category.name = query_row[2]
|
||||||
|
category.active = av.input_bool(query_row[3], 'active', _m)
|
||||||
|
# command.created_on = query_row[7]
|
||||||
|
return category
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction_emotional(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction_emotional'
|
||||||
|
level = cls()
|
||||||
|
level.id_intensity_level = query_row[4]
|
||||||
|
level.name = query_row[5]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction_scent(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction_scent'
|
||||||
|
level = cls()
|
||||||
|
level.id_intensity_level = query_row[6]
|
||||||
|
level.name = query_row[7]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction_sight(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction_sight'
|
||||||
|
level = cls()
|
||||||
|
level.id_intensity_level = query_row[8]
|
||||||
|
level.name = query_row[9]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction_sound(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction_sound'
|
||||||
|
level = cls()
|
||||||
|
level.id_intensity_level = query_row[10]
|
||||||
|
level.name = query_row[11]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction_touch(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction_touch'
|
||||||
|
level = cls()
|
||||||
|
level.id_intensity_level = query_row[12]
|
||||||
|
level.name = query_row[13]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = 'Distraction_Intensity_Level.from_json'
|
||||||
|
distraction_intensity_level = cls()
|
||||||
|
if json is None: return Distraction_Intensity_Level
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
distraction_intensity_level.id_intensity_level = json.get(cls.ATTR_ID_DISTRACTION_INTENSITY_LEVEL, -1)
|
||||||
|
distraction_intensity_level.name = json[cls.FLAG_NAME]
|
||||||
|
distraction_intensity_level.code = json.get(cls.FLAG_CODE, distraction_intensity_level.name.upper().replace(" ", "_"))
|
||||||
|
distraction_intensity_level.active = json[cls.FLAG_ACTIVE]
|
||||||
|
# Helper_App.console_log(f'Distraction_Intensity_Level: {distraction_intensity_level}')
|
||||||
|
return distraction_intensity_level
|
||||||
|
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_DISTRACTION_INTENSITY_LEVEL: self.id_intensity_level
|
||||||
|
, self.FLAG_CODE: self.code
|
||||||
|
, self.FLAG_NAME: self.name
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
}
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_DISTRACTION_INTENSITY_LEVEL}: {self.id_intensity_level}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
class Distraction_Intensity_Level_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Distraction_Intensity_Level_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_intensity_level = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_distraction_intensity_level(cls, distraction_intensity_level):
|
||||||
|
_m = 'Distraction_Intensity_Level_Temp.from_Distraction_Intensity_Level'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_intensity_level = distraction_intensity_level.id_intensity_level
|
||||||
|
temp.code = distraction_intensity_level.code
|
||||||
|
temp.name = distraction_intensity_level.name
|
||||||
|
temp.active = distraction_intensity_level.active
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Distraction_Intensity_Level(Get_Many_Parameters_Base):
|
||||||
|
get_all_distraction_intensity_level: bool
|
||||||
|
get_inactive_distraction_intensity_level: bool
|
||||||
|
ids_distraction_intensity_level: str
|
||||||
|
names_distraction_intensity_level: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_distraction_intensity_level = True
|
||||||
|
, get_inactive_distraction_intensity_level = False
|
||||||
|
, ids_distraction_intensity_level = ''
|
||||||
|
, names_distraction_intensity_level = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_distraction_intensity_level = json.get('a_get_all_distraction_intensity_level', False)
|
||||||
|
, get_inactive_distraction_intensity_level = json.get('a_get_inactive_distraction_intensity_level', False)
|
||||||
|
, ids_distraction_intensity_level = json.get('a_ids_distraction_intensity_level', '')
|
||||||
|
, names_distraction_intensity_level = json.get('a_names_distraction_intensity_level', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_distraction_intensity_level(cls, form):
|
||||||
|
av.val_instance(form, 'form', 'Parameters_Distraction_Intensity_Level.from_form_filters_distraction_intensity_level', Filters_Distraction_Intensity_Level)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Distraction_Intensity_Level.from_form_filters_distraction_intensity_level")
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_distraction_intensity_level = True
|
||||||
|
filters.get_inactive_distraction_intensity_level = not active_only
|
||||||
|
filters.ids_distraction_intensity_level = ''
|
||||||
|
filters.names_distraction_intensity_level = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.notes_distraction_intensity_level = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
"""
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_distraction_intensity_level': self.get_all_distraction_intensity_level
|
||||||
|
, 'a_get_inactive_distraction_intensity_level': self.get_inactive_distraction_intensity_level
|
||||||
|
, 'a_ids_distraction_intensity_level': self.ids_distraction_intensity_level
|
||||||
|
, 'a_names_distraction_intensity_level': self.names_distraction_intensity_level
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
181
business_objects/dog/distraction_type.py
Normal file
181
business_objects/dog/distraction_type.py
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Distraction Type Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
import lib.argument_validation as av
|
||||||
|
from extensions import db
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
|
||||||
|
class Distraction_Type(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_DISTRACTION_TYPE: ClassVar[str] = 'id_distraction_type'
|
||||||
|
FLAG_DISTRACTION_TYPE: ClassVar[str] = 'distraction-type'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_DISTRACTION_TYPE
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Distraction_Type'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_distraction_type = db.Column(db.Integer, primary_key=True)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_distraction_type = 0
|
||||||
|
self.is_new = False
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction_type(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction_type'
|
||||||
|
category = cls()
|
||||||
|
category.id_distraction_type = query_row[0]
|
||||||
|
category.code = query_row[1]
|
||||||
|
category.name = query_row[2]
|
||||||
|
category.active = av.input_bool(query_row[3], 'active', _m)
|
||||||
|
# command.created_on = query_row[7]
|
||||||
|
return category
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_distraction(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_distraction'
|
||||||
|
level = cls()
|
||||||
|
level.id_distraction_type = query_row[2]
|
||||||
|
level.name = query_row[3]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = 'Distraction_Type.from_json'
|
||||||
|
distraction_type = cls()
|
||||||
|
if json is None: return Distraction_Type
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
distraction_type.id_distraction_type = json.get(cls.ATTR_ID_DISTRACTION_TYPE, -1)
|
||||||
|
distraction_type.name = json[cls.FLAG_NAME]
|
||||||
|
distraction_type.code = json.get(cls.FLAG_CODE, distraction_type.name.upper().replace(" ", "_"))
|
||||||
|
distraction_type.active = json[cls.FLAG_ACTIVE]
|
||||||
|
# Helper_App.console_log(f'Distraction_Type: {distraction_type}')
|
||||||
|
return distraction_type
|
||||||
|
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_DISTRACTION_TYPE: self.id_distraction_type
|
||||||
|
, self.FLAG_CODE: self.code
|
||||||
|
, self.FLAG_NAME: self.name
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
}
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_DISTRACTION_TYPE}: {self.id_distraction_type}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
class Distraction_Type_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Distraction_Type_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_distraction_type = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_distraction_type(cls, distraction_type):
|
||||||
|
_m = 'Distraction_Type_Temp.from_Distraction_Type'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_distraction_type = distraction_type.id_distraction_type
|
||||||
|
temp.code = distraction_type.code
|
||||||
|
temp.name = distraction_type.name
|
||||||
|
temp.active = distraction_type.active
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Distraction_Type(Get_Many_Parameters_Base):
|
||||||
|
get_all_distraction_type: bool
|
||||||
|
get_inactive_distraction_type: bool
|
||||||
|
ids_distraction_type: str
|
||||||
|
names_distraction_type: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_distraction_type = True
|
||||||
|
, get_inactive_distraction_type = False
|
||||||
|
, ids_distraction_type = ''
|
||||||
|
, names_distraction_type = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_distraction_type = json.get('a_get_all_distraction_type', False)
|
||||||
|
, get_inactive_distraction_type = json.get('a_get_inactive_distraction_type', False)
|
||||||
|
, ids_distraction_type = json.get('a_ids_distraction_type', '')
|
||||||
|
, names_distraction_type = json.get('a_names_distraction_type', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_distraction_type(cls, form):
|
||||||
|
av.val_instance(form, 'form', 'Parameters_Distraction_Type.from_form_filters_distraction_type', Filters_Distraction_Type)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Distraction_Type.from_form_filters_distraction_type")
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_distraction_type = True
|
||||||
|
filters.get_inactive_distraction_type = not active_only
|
||||||
|
filters.ids_distraction_type = ''
|
||||||
|
filters.names_distraction_type = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.notes_distraction_type = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
"""
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_distraction_type': self.get_all_distraction_type
|
||||||
|
, 'a_get_inactive_distraction_type': self.get_inactive_distraction_type
|
||||||
|
, 'a_ids_distraction_type': self.ids_distraction_type
|
||||||
|
, 'a_names_distraction_type': self.names_distraction_type
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
180
business_objects/dog/lighting_level.py
Normal file
180
business_objects/dog/lighting_level.py
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Button Shape Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
from business_objects.dog.image import Image
|
||||||
|
import lib.argument_validation as av
|
||||||
|
from extensions import db
|
||||||
|
# from forms.dog.lighting_level import Filters_Lighting_Level
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
|
||||||
|
class Lighting_Level(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_LIGHTING_LEVEL: ClassVar[str] = 'id_lighting_level'
|
||||||
|
FLAG_LIGHTING_LEVEL: ClassVar[str] = 'lighting_level'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_LIGHTING_LEVEL
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Lighting_Level'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_lighting_level = db.Column(db.Integer, primary_key=True)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
created_on = db.Column(db.DateTime)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_lighting_level = 0
|
||||||
|
self.is_new = False
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_lighting_level(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_lighting_level'
|
||||||
|
lighting_level = cls()
|
||||||
|
lighting_level.id_lighting_level = query_row[0]
|
||||||
|
lighting_level.code = query_row[1]
|
||||||
|
lighting_level.name = query_row[2]
|
||||||
|
lighting_level.active = av.input_bool(query_row[3], 'active', _m)
|
||||||
|
return lighting_level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||||
|
lighting_level = cls()
|
||||||
|
lighting_level.id_lighting_level = query_row[3]
|
||||||
|
lighting_level.name = query_row[4]
|
||||||
|
lighting_level.active = True
|
||||||
|
return lighting_level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
|
lighting_level = cls()
|
||||||
|
if json is None: return lighting_level
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
lighting_level.id_lighting_level = json.get(Lighting_Level.ATTR_ID_LIGHTING_LEVEL, -1)
|
||||||
|
lighting_level.name = json[cls.FLAG_NAME]
|
||||||
|
lighting_level.code = json.get(cls.FLAG_CODE, lighting_level.name.upper().replace(" ", "_"))
|
||||||
|
lighting_level.active = json[cls.FLAG_ACTIVE]
|
||||||
|
lighting_level.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||||
|
# Helper_App.console_log(f'Lighting_Level: {lighting_level}')
|
||||||
|
return lighting_level
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_LIGHTING_LEVEL: self.id_lighting_level
|
||||||
|
, self.FLAG_CODE: self.code
|
||||||
|
, self.FLAG_NAME: self.name
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
, self.FLAG_CREATED_ON: self.created_on
|
||||||
|
}
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_LIGHTING_LEVEL}: {self.id_lighting_level}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
class Lighting_Level_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Lighting_Level_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_lighting_level = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
# created_on = db.Column(db.DateTime)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_lighting_level(cls, lighting_level):
|
||||||
|
_m = 'Lighting_Level_Temp.from_lighting_level'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_lighting_level = lighting_level.id_lighting_level
|
||||||
|
temp.code = lighting_level.code
|
||||||
|
temp.name = lighting_level.name
|
||||||
|
temp.active = lighting_level.active
|
||||||
|
# temp.created_on = lighting_level.created_on
|
||||||
|
return temp
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{Lighting_Level.FLAG_LIGHTING_LEVEL}: {self.id_lighting_level}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
class Parameters_Lighting_Level(Get_Many_Parameters_Base):
|
||||||
|
get_all_lighting_level: bool
|
||||||
|
get_inactive_lighting_level: bool
|
||||||
|
ids_lighting_level: str
|
||||||
|
names_lighting_level: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_lighting_level = True
|
||||||
|
, get_inactive_lighting_level = False
|
||||||
|
, ids_lighting_level = ''
|
||||||
|
, names_lighting_level = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_lighting_level = json.get('a_get_all_lighting_level', False)
|
||||||
|
, get_inactive_lighting_level = json.get('a_get_inactive_lighting_level', False)
|
||||||
|
, ids_lighting_level = json.get('a_ids_lighting_level', '')
|
||||||
|
, names_lighting_level = json.get('a_names_lighting_level', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_lighting_level': self.get_all_lighting_level
|
||||||
|
, 'a_get_inactive_lighting_level': self.get_inactive_lighting_level
|
||||||
|
, 'a_ids_lighting_level': self.ids_lighting_level
|
||||||
|
, 'a_names_lighting_level': self.names_lighting_level
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
@@ -65,6 +65,15 @@ class Location(SQLAlchemy_ABC, Base):
|
|||||||
location.name = query_row[15]
|
location.name = query_row[15]
|
||||||
location.active = True
|
location.active = True
|
||||||
return location
|
return location
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||||
|
location = cls()
|
||||||
|
location.id_location = query_row[5]
|
||||||
|
location.name = query_row[6]
|
||||||
|
location.active = True
|
||||||
|
return location
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, json):
|
def from_json(cls, json):
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Feature: Obedience Level Business Object
|
|||||||
|
|
||||||
# internal
|
# internal
|
||||||
from business_objects.base import Base
|
from business_objects.base import Base
|
||||||
from business_objects.db_base import SQLAlchemy_ABC
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
import lib.argument_validation as av
|
import lib.argument_validation as av
|
||||||
from extensions import db
|
from extensions import db
|
||||||
from helpers.helper_app import Helper_App
|
from helpers.helper_app import Helper_App
|
||||||
@@ -21,7 +21,7 @@ from typing import ClassVar
|
|||||||
class Obedience_Level(SQLAlchemy_ABC, Base):
|
class Obedience_Level(SQLAlchemy_ABC, Base):
|
||||||
ATTR_ID_OBEDIENCE_LEVEL: ClassVar[str] = "id_obedience_level"
|
ATTR_ID_OBEDIENCE_LEVEL: ClassVar[str] = "id_obedience_level"
|
||||||
FLAG_OBEDIENCE_LEVEL: ClassVar[str] = 'obedience-level'
|
FLAG_OBEDIENCE_LEVEL: ClassVar[str] = 'obedience-level'
|
||||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_OBEDIENCE_LEVEL
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_OBEDIENCE_LEVEL
|
||||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
__tablename__ = 'DOG_Obedience_Level'
|
__tablename__ = 'DOG_Obedience_Level'
|
||||||
@@ -36,17 +36,26 @@ class Obedience_Level(SQLAlchemy_ABC, Base):
|
|||||||
self.id_obedience_level = 0
|
self.id_obedience_level = 0
|
||||||
self.is_new = False
|
self.is_new = False
|
||||||
super().__init__()
|
super().__init__()
|
||||||
"""
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_db_dog_command_link(cls, query_row):
|
def from_db_obedience_level(cls, query_row):
|
||||||
_m = f'{cls.__qualname__}.from_db_dog_command_link'
|
_m = f'{cls.__qualname__}.from_db_obedience_level'
|
||||||
level = cls()
|
level = cls()
|
||||||
level.id_obedience_level = query_row[5]
|
level.id_obedience_level = query_row[0]
|
||||||
level.code = query_row[6]
|
level.code = query_row[1]
|
||||||
level.name = query_row[7]
|
level.name = query_row[2]
|
||||||
|
level.active = av.input_bool(query_row[3], "active", _m)
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_response(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_response'
|
||||||
|
level = cls()
|
||||||
|
level.id_obedience_level = query_row[4]
|
||||||
|
level.name = query_row[5]
|
||||||
level.active = True
|
level.active = True
|
||||||
return level
|
return level
|
||||||
"""
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, json):
|
def from_json(cls, json):
|
||||||
_m = f'{cls.__qualname__}.from_json'
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
@@ -104,4 +113,68 @@ class Obedience_Level_Temp(db.Model, Base):
|
|||||||
temp.code = obedience_level.code
|
temp.code = obedience_level.code
|
||||||
temp.name = obedience_level.name
|
temp.name = obedience_level.name
|
||||||
temp.active = obedience_level.active
|
temp.active = obedience_level.active
|
||||||
return temp
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Obedience_Level(Get_Many_Parameters_Base):
|
||||||
|
get_all_obedience_level: bool
|
||||||
|
get_inactive_obedience_level: bool
|
||||||
|
ids_obedience_level: str
|
||||||
|
names_obedience_level: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_obedience_level = True
|
||||||
|
, get_inactive_obedience_level = False
|
||||||
|
, ids_obedience_level = ''
|
||||||
|
, names_obedience_level = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_obedience_level = json.get('a_get_all_obedience_level', False)
|
||||||
|
, get_inactive_obedience_level = json.get('a_get_inactive_obedience_level', False)
|
||||||
|
, ids_obedience_level = json.get('a_ids_obedience_level', '')
|
||||||
|
, names_obedience_level = json.get('a_names_obedience_level', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_obedience_level(cls, form):
|
||||||
|
av.val_instance(form, 'form', 'Parameters_Obedience_Level.from_form_filters_obedience_level', Filters_Obedience_Level)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Obedience_Level.from_form_filters_obedience_level")
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_obedience_level = True
|
||||||
|
filters.get_inactive_obedience_level = not active_only
|
||||||
|
filters.ids_obedience_level = ''
|
||||||
|
filters.names_obedience_level = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.notes_obedience_level = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
"""
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_obedience_level': self.get_all_obedience_level
|
||||||
|
, 'a_get_inactive_obedience_level': self.get_inactive_obedience_level
|
||||||
|
, 'a_ids_obedience_level': self.ids_obedience_level
|
||||||
|
, 'a_names_obedience_level': self.names_obedience_level
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
|
|||||||
202
business_objects/dog/response_quality_metric.py
Normal file
202
business_objects/dog/response_quality_metric.py
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Response Quality Metric Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
from business_objects.dog.unit_measurement import Unit_Measurement
|
||||||
|
import lib.argument_validation as av
|
||||||
|
from extensions import db
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
|
||||||
|
class Response_Quality_Metric(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC: ClassVar[str] = 'id_response_quality_metric'
|
||||||
|
FLAG_RESPONSE_QUALITY_METRIC: ClassVar[str] = 'response-quality-metric'
|
||||||
|
FLAG_VALUE_MIN: ClassVar[str] = 'value-min'
|
||||||
|
FLAG_VALUE_MAX: ClassVar[str] = 'value-max'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Response_Quality_Metric'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_response_quality_metric = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_unit_measurement = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
value_min = db.Column(db.Float)
|
||||||
|
value_max = db.Column(db.Float)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_response_quality_metric = 0
|
||||||
|
self.is_new = False
|
||||||
|
self.unit_measurement = None
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_response_quality_metric(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_response_quality_metric'
|
||||||
|
response = cls()
|
||||||
|
response.id_response_quality_metric = query_row[0]
|
||||||
|
response.id_unit_measurement = query_row[1]
|
||||||
|
response.code = query_row[5]
|
||||||
|
response.name = query_row[6]
|
||||||
|
response.value_min = query_row[7]
|
||||||
|
response.value_max = query_row[8]
|
||||||
|
response.active = av.input_bool(query_row[9], 'active', _m)
|
||||||
|
response.unit_measurement = Unit_Measurement.from_db_response_quality_metric(query_row)
|
||||||
|
return response
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment_response(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment_response'
|
||||||
|
level = cls()
|
||||||
|
level.id_response_quality_metric = query_row[2]
|
||||||
|
level.name = query_row[3]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = 'Response_Quality_Metric.from_json'
|
||||||
|
response_quality_metric = cls()
|
||||||
|
if json is None: return Response_Quality_Metric
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
response_quality_metric.id_response_quality_metric = json.get(cls.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC, -1)
|
||||||
|
response_quality_metric.name = json[cls.FLAG_NAME]
|
||||||
|
response_quality_metric.code = json.get(cls.FLAG_CODE, response_quality_metric.name.upper().replace(" ", "_"))
|
||||||
|
response_quality_metric.value_min = json[cls.FLAG_VALUE_MIN]
|
||||||
|
response_quality_metric.value_max = json[cls.FLAG_VALUE_MAX]
|
||||||
|
response_quality_metric.active = json[cls.FLAG_ACTIVE]
|
||||||
|
# Helper_App.console_log(f'Response_Quality_Metric: {response_quality_metric}')
|
||||||
|
return response_quality_metric
|
||||||
|
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_ASSESSMENT_RESPONSE_QUALITY_METRIC: self.id_response_quality_metric
|
||||||
|
, self.FLAG_CODE: self.code
|
||||||
|
, self.FLAG_NAME: f'{self.name} ({self.unit_measurement.symbol})'
|
||||||
|
, self.FLAG_VALUE_MIN: self.value_min
|
||||||
|
, self.FLAG_VALUE_MAX: self.value_max
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
, Unit_Measurement.FLAG_UNIT_MEASUREMENT: None if self.unit_measurement is None else self.unit_measurement.to_json()
|
||||||
|
}
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_RESPONSE_QUALITY_METRIC}: {self.id_response_quality_metric}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_VALUE_MIN}: {self.value_min}
|
||||||
|
{self.FLAG_VALUE_MAX}: {self.value_max}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
class Response_Quality_Metric_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Response_Quality_Metric_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_response_quality_metric = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
value_min = db.Column(db.Float)
|
||||||
|
value_max = db.Column(db.Float)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_response_quality_metric(cls, response_quality_metric):
|
||||||
|
_m = 'Response_Quality_Metric_Temp.from_Response_Quality_Metric'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_response_quality_metric = response_quality_metric.id_response_quality_metric
|
||||||
|
temp.code = response_quality_metric.code
|
||||||
|
temp.name = response_quality_metric.name
|
||||||
|
temp.value_min = response_quality_metric.value_min
|
||||||
|
temp.value_max = response_quality_metric.value_max
|
||||||
|
temp.active = response_quality_metric.active
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
class Parameters_Response_Quality_Metric(Get_Many_Parameters_Base):
|
||||||
|
get_all_response_quality_metric: bool
|
||||||
|
get_inactive_response_quality_metric: bool
|
||||||
|
ids_response_quality_metric: str
|
||||||
|
names_response_quality_metric: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_response_quality_metric = True
|
||||||
|
, get_inactive_response_quality_metric = False
|
||||||
|
, ids_response_quality_metric = ''
|
||||||
|
, names_response_quality_metric = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_response_quality_metric = json.get('a_get_all_response_quality_metric', False)
|
||||||
|
, get_inactive_response_quality_metric = json.get('a_get_inactive_response_quality_metric', False)
|
||||||
|
, ids_response_quality_metric = json.get('a_ids_response_quality_metric', '')
|
||||||
|
, names_response_quality_metric = json.get('a_names_response_quality_metric', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_response_quality_metric(cls, form):
|
||||||
|
av.val_instance(form, 'form', 'Parameters_Response_Quality_Metric.from_form_filters_response_quality_metric', Filters_Response_Quality_Metric)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Response_Quality_Metric.from_form_filters_response_quality_metric")
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_response_quality_metric = True
|
||||||
|
filters.get_inactive_response_quality_metric = not active_only
|
||||||
|
filters.ids_response_quality_metric = ''
|
||||||
|
filters.names_response_quality_metric = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.notes_response_quality_metric = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
"""
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_response_quality_metric': self.get_all_response_quality_metric
|
||||||
|
, 'a_get_inactive_response_quality_metric': self.get_inactive_response_quality_metric
|
||||||
|
, 'a_ids_response_quality_metric': self.ids_response_quality_metric
|
||||||
|
, 'a_names_response_quality_metric': self.names_response_quality_metric
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
224
business_objects/dog/unit_measurement.py
Normal file
224
business_objects/dog/unit_measurement.py
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Unit Measurement Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
import lib.argument_validation as av
|
||||||
|
from extensions import db
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
|
||||||
|
class Unit_Measurement(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_UNIT_MEASUREMENT: ClassVar[str] = "id_unit_measurement"
|
||||||
|
FLAG_IS_BASE_UNIT: ClassVar[str] = "is-base-unit"
|
||||||
|
FLAG_IS_UNIT_OF_DISTANCE: ClassVar[str] = "is-unit-of-distance"
|
||||||
|
FLAG_IS_UNIT_OF_MASS: ClassVar[str] = "is-unit-of-mass"
|
||||||
|
FLAG_IS_UNIT_OF_TIME: ClassVar[str] = "is-unit-of-time"
|
||||||
|
FLAG_IS_UNIT_OF_VOLUME: ClassVar[str] = "is-unit-of-volume"
|
||||||
|
FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX: ClassVar[str] = "symbol-is-suffix-not-prefix"
|
||||||
|
FLAG_UNIT_MEASUREMENT: ClassVar[str] = 'unit-measurement'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_UNIT_MEASUREMENT
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_SYMBOL
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Unit_Measurement'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_unit_measurement = db.Column(db.Integer, primary_key=True)
|
||||||
|
name_singular = db.Column(db.String(250))
|
||||||
|
name_plural = db.Column(db.String(250))
|
||||||
|
symbol = db.Column(db.String(50))
|
||||||
|
symbol_is_suffix_not_prefix = db.Column(db.Boolean)
|
||||||
|
is_base_unit = db.Column(db.Boolean)
|
||||||
|
is_unit_of_distance = db.Column(db.Boolean)
|
||||||
|
is_unit_of_mass = db.Column(db.Boolean)
|
||||||
|
is_unit_of_time = db.Column(db.Boolean)
|
||||||
|
is_unit_of_volume = db.Column(db.Boolean)
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_unit_measurement = 0
|
||||||
|
self.is_new = False
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_unit_measurement(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_unit_measurement'
|
||||||
|
level = cls()
|
||||||
|
level.id_unit_measurement = query_row[0]
|
||||||
|
level.name_singular = query_row[1]
|
||||||
|
level.name_plural = query_row[2]
|
||||||
|
level.symbol = query_row[3]
|
||||||
|
level.symbol_is_suffix_not_prefix = query_row[4]
|
||||||
|
level.is_base_unit = query_row[5]
|
||||||
|
level.is_unit_of_distance = query_row[6]
|
||||||
|
level.is_unit_of_mass = query_row[7]
|
||||||
|
level.is_unit_of_time = query_row[8]
|
||||||
|
level.is_unit_of_volume = query_row[9]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_response_quality_metric(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_response_quality_metric'
|
||||||
|
level = cls()
|
||||||
|
level.id_unit_measurement = query_row[1]
|
||||||
|
level.name_singular = query_row[2]
|
||||||
|
level.name_plural = query_row[3]
|
||||||
|
level.symbol = query_row[4]
|
||||||
|
level.active = True
|
||||||
|
return level
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
|
unit_measurement = cls()
|
||||||
|
if json is None: return Unit_Measurement
|
||||||
|
Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
unit_measurement.id_unit_measurement = json.get(Unit_Measurement.ATTR_ID_UNIT_MEASUREMENT, -1)
|
||||||
|
unit_measurement.name_singular = json[cls.FLAG_NAME_SINGULAR]
|
||||||
|
unit_measurement.name_plural = json[cls.FLAG_NAME_PLURAL]
|
||||||
|
unit_measurement.symbol = json[cls.FLAG_SYMBOL]
|
||||||
|
unit_measurement.symbol_is_suffix_not_prefix = json[cls.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX]
|
||||||
|
unit_measurement.is_base_unit = json[cls.FLAG_IS_BASE_UNIT]
|
||||||
|
unit_measurement.is_unit_of_distance = json[cls.FLAG_IS_UNIT_OF_DISTANCE]
|
||||||
|
unit_measurement.is_unit_of_mass = json[cls.FLAG_IS_UNIT_OF_MASS]
|
||||||
|
unit_measurement.is_unit_of_time = json[cls.FLAG_IS_UNIT_OF_TIME]
|
||||||
|
unit_measurement.is_unit_of_volume = json[cls.FLAG_IS_UNIT_OF_VOLUME]
|
||||||
|
unit_measurement.active = json[cls.FLAG_ACTIVE]
|
||||||
|
Helper_App.console_log(f'Unit_Measurement: {unit_measurement}')
|
||||||
|
return unit_measurement
|
||||||
|
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_UNIT_MEASUREMENT: self.id_unit_measurement
|
||||||
|
, self.FLAG_NAME_SINGULAR: self.name_singular
|
||||||
|
, self.FLAG_NAME_PLURAL: self.name_plural
|
||||||
|
, self.FLAG_SYMBOL: self.symbol
|
||||||
|
, self.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX: self.symbol_is_suffix_not_prefix
|
||||||
|
, self.FLAG_IS_BASE_UNIT: self.is_base_unit
|
||||||
|
, self.FLAG_IS_UNIT_OF_DISTANCE: self.is_unit_of_distance
|
||||||
|
, self.FLAG_IS_UNIT_OF_MASS: self.is_unit_of_mass
|
||||||
|
, self.FLAG_IS_UNIT_OF_TIME: self.is_unit_of_time
|
||||||
|
, self.FLAG_IS_UNIT_OF_VOLUME: self.is_unit_of_volume
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_UNIT_MEASUREMENT}: {self.id_unit_measurement}
|
||||||
|
{self.FLAG_NAME_SINGULAR}: {self.name_singular}
|
||||||
|
{self.FLAG_NAME_PLURAL}: {self.name_plural}
|
||||||
|
{self.FLAG_SYMBOL}: {self.symbol}
|
||||||
|
{self.FLAG_SYMBOL_IS_SUFFIX_NOT_PREFIX}: {self.symbol_is_suffix_not_prefix}
|
||||||
|
{self.FLAG_IS_BASE_UNIT}: {self.is_base_unit}
|
||||||
|
{self.FLAG_IS_UNIT_OF_DISTANCE}: {self.is_unit_of_distance}
|
||||||
|
{self.FLAG_IS_UNIT_OF_MASS}: {self.is_unit_of_mass}
|
||||||
|
{self.FLAG_IS_UNIT_OF_TIME}: {self.is_unit_of_time}
|
||||||
|
{self.FLAG_IS_UNIT_OF_VOLUME}: {self.is_unit_of_volume}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
class Unit_Measurement_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Unit_Measurement_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_unit_measurement = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_unit_measurement(cls, unit_measurement):
|
||||||
|
_m = 'Unit_Measurement_Temp.from_Unit_Measurement'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_unit_measurement = unit_measurement.id_unit_measurement
|
||||||
|
temp.code = unit_measurement.code
|
||||||
|
temp.name = unit_measurement.name
|
||||||
|
temp.active = unit_measurement.active
|
||||||
|
return temp
|
||||||
|
|
||||||
|
"""
|
||||||
|
class Parameters_Unit_Measurement(Get_Many_Parameters_Base):
|
||||||
|
get_all_unit_measurement: bool
|
||||||
|
get_inactive_unit_measurement: bool
|
||||||
|
ids_unit_measurement: str
|
||||||
|
names_unit_measurement: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_unit_measurement = True
|
||||||
|
, get_inactive_unit_measurement = False
|
||||||
|
, ids_unit_measurement = ''
|
||||||
|
, names_unit_measurement = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_unit_measurement = json.get('a_get_all_unit_measurement', False)
|
||||||
|
, get_inactive_unit_measurement = json.get('a_get_inactive_unit_measurement', False)
|
||||||
|
, ids_unit_measurement = json.get('a_ids_unit_measurement', '')
|
||||||
|
, names_unit_measurement = json.get('a_names_unit_measurement', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
"" "
|
||||||
|
@classmethod
|
||||||
|
def from_form_filters_unit_measurement(cls, form):
|
||||||
|
av.val_instance(form, 'form', 'Parameters_Unit_Measurement.from_form_filters_unit_measurement', Filters_Unit_Measurement)
|
||||||
|
has_filter_search_text = not (form.search.data == '' or form.search.data is None)
|
||||||
|
active_only = av.input_bool(form.active_only.data, "active", "Parameters_Unit_Measurement.from_form_filters_unit_measurement")
|
||||||
|
filters = cls.get_default()
|
||||||
|
filters.get_all_unit_measurement = True
|
||||||
|
filters.get_inactive_unit_measurement = not active_only
|
||||||
|
filters.ids_unit_measurement = ''
|
||||||
|
filters.names_unit_measurement = form.search.data if has_filter_search_text else ''
|
||||||
|
filters.notes_unit_measurement = form.search.data if has_filter_search_text else ''
|
||||||
|
return filters
|
||||||
|
"" "
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_unit_measurement': self.get_all_unit_measurement
|
||||||
|
, 'a_get_inactive_unit_measurement': self.get_inactive_unit_measurement
|
||||||
|
, 'a_ids_unit_measurement': self.ids_unit_measurement
|
||||||
|
, 'a_names_unit_measurement': self.names_unit_measurement
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
|
"""
|
||||||
@@ -21,7 +21,7 @@ from typing import ClassVar, Optional
|
|||||||
|
|
||||||
class User(SQLAlchemy_ABC, Base):
|
class User(SQLAlchemy_ABC, Base):
|
||||||
NAME_ATTR_OPTION_VALUE: ClassVar[str] = Base.ATTR_ID_USER
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = Base.ATTR_ID_USER
|
||||||
NAME_ATTR_OPTION_TEXT: ClassVar[str] = 'email'
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
__tablename__ = 'DOG_User'
|
__tablename__ = 'DOG_User'
|
||||||
__table_args__ = { 'extend_existing': True }
|
__table_args__ = { 'extend_existing': True }
|
||||||
@@ -41,10 +41,11 @@ class User(SQLAlchemy_ABC, Base):
|
|||||||
self.can_admin_dog = False
|
self.can_admin_dog = False
|
||||||
self.can_admin_user = False
|
self.can_admin_user = False
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
def from_DB_user(query_row):
|
@classmethod
|
||||||
_m = 'User.from_DB_user'
|
def from_db_user(cls, query_row):
|
||||||
user = User()
|
_m = f'{cls.__qualname__}.from_db_user'
|
||||||
|
user = cls()
|
||||||
user.id_user = query_row[0]
|
user.id_user = query_row[0]
|
||||||
user.id_user_auth0 = query_row[1]
|
user.id_user_auth0 = query_row[1]
|
||||||
user.firstname = query_row[2]
|
user.firstname = query_row[2]
|
||||||
@@ -56,6 +57,15 @@ class User(SQLAlchemy_ABC, Base):
|
|||||||
user.can_admin_user = av.input_bool(query_row[8], 'can_admin_user', _m)
|
user.can_admin_user = av.input_bool(query_row[8], 'can_admin_user', _m)
|
||||||
# user.is_new = av.input_bool(query_row[9], 'is_new', _m)
|
# user.is_new = av.input_bool(query_row[9], 'is_new', _m)
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||||
|
user = cls()
|
||||||
|
user.id_user = query_row[7]
|
||||||
|
user.firstname = query_row[8]
|
||||||
|
user.surname = query_row[9]
|
||||||
|
return user
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_json(json):
|
def from_json(json):
|
||||||
@@ -98,14 +108,15 @@ class User(SQLAlchemy_ABC, Base):
|
|||||||
|
|
||||||
def to_json(self):
|
def to_json(self):
|
||||||
as_json = {
|
as_json = {
|
||||||
**self.get_shared_json_attributes(self),
|
**self.get_shared_json_attributes(self)
|
||||||
'id_user': self.id_user,
|
, 'id_user': self.id_user
|
||||||
'id_user_auth0': self.id_user_auth0,
|
, 'id_user_auth0': self.id_user_auth0
|
||||||
'firstname': self.firstname,
|
, 'firstname': self.firstname
|
||||||
'surname': self.surname,
|
, 'surname': self.surname
|
||||||
'email': self.email,
|
, self.FLAG_NAME: self.get_name()
|
||||||
'is_email_verified': self.is_email_verified,
|
, 'email': self.email
|
||||||
'is_super_user': self.is_super_user
|
, 'is_email_verified': self.is_email_verified
|
||||||
|
, 'is_super_user': self.is_super_user
|
||||||
}
|
}
|
||||||
Helper_App.console_log(f'as_json: {as_json}')
|
Helper_App.console_log(f'as_json: {as_json}')
|
||||||
return as_json
|
return as_json
|
||||||
@@ -123,6 +134,9 @@ class User(SQLAlchemy_ABC, Base):
|
|||||||
|
|
||||||
def get_is_logged_in(self):
|
def get_is_logged_in(self):
|
||||||
return (self.id_user > 0 and self.id_user != Base.ID_USER_GUEST)
|
return (self.id_user > 0 and self.id_user != Base.ID_USER_GUEST)
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return f'{self.firstname} {self.surname}'
|
||||||
|
|
||||||
class User_Temp(db.Model, Base):
|
class User_Temp(db.Model, Base):
|
||||||
__tablename__ = 'DOG_User_Temp'
|
__tablename__ = 'DOG_User_Temp'
|
||||||
@@ -238,7 +252,7 @@ class User_Permission_Evaluation(db.Model):
|
|||||||
can_edit = db.Column(db.Boolean)
|
can_edit = db.Column(db.Boolean)
|
||||||
can_admin = db.Column(db.Boolean)
|
can_admin = db.Column(db.Boolean)
|
||||||
|
|
||||||
def from_DB_user_eval(query_row):
|
def from_db_user_eval(query_row):
|
||||||
user_permission_evaluation = User_Permission_Evaluation()
|
user_permission_evaluation = User_Permission_Evaluation()
|
||||||
user_permission_evaluation.id_evaluation = query_row[0]
|
user_permission_evaluation.id_evaluation = query_row[0]
|
||||||
user_permission_evaluation.guid = query_row[1]
|
user_permission_evaluation.guid = query_row[1]
|
||||||
|
|||||||
180
business_objects/dog/weather.py
Normal file
180
business_objects/dog/weather.py
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Business Objects
|
||||||
|
Feature: Button Shape Business Object
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
from business_objects.db_base import SQLAlchemy_ABC, Get_Many_Parameters_Base
|
||||||
|
from business_objects.dog.image import Image
|
||||||
|
import lib.argument_validation as av
|
||||||
|
from extensions import db
|
||||||
|
# from forms.dog.weather import Filters_Weather
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# external
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
|
||||||
|
class Weather(SQLAlchemy_ABC, Base):
|
||||||
|
ATTR_ID_WEATHER: ClassVar[str] = 'id_weather'
|
||||||
|
FLAG_WEATHER: ClassVar[str] = 'weather'
|
||||||
|
NAME_ATTR_OPTION_VALUE: ClassVar[str] = ATTR_ID_WEATHER
|
||||||
|
NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME
|
||||||
|
|
||||||
|
__tablename__ = 'DOG_Weather'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
|
||||||
|
id_weather = db.Column(db.Integer, primary_key=True)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
created_on = db.Column(db.DateTime)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.id_weather = 0
|
||||||
|
self.is_new = False
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_weather(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_weather'
|
||||||
|
weather = cls()
|
||||||
|
weather.id_weather = query_row[0]
|
||||||
|
weather.code = query_row[1]
|
||||||
|
weather.name = query_row[2]
|
||||||
|
weather.active = av.input_bool(query_row[3], 'active', _m)
|
||||||
|
return weather
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_assessment(cls, query_row):
|
||||||
|
_m = f'{cls.__qualname__}.from_db_assessment'
|
||||||
|
weather = cls()
|
||||||
|
weather.id_weather = query_row[1]
|
||||||
|
weather.name = query_row[2]
|
||||||
|
weather.active = True
|
||||||
|
return weather
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
|
weather = cls()
|
||||||
|
if json is None: return weather
|
||||||
|
# Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
weather.id_weather = json.get(Weather.ATTR_ID_WEATHER, -1)
|
||||||
|
weather.name = json[cls.FLAG_NAME]
|
||||||
|
weather.code = json.get(cls.FLAG_CODE, weather.name.upper().replace(" ", "_"))
|
||||||
|
weather.active = json[cls.FLAG_ACTIVE]
|
||||||
|
weather.created_on = json.get(cls.FLAG_CREATED_ON, None)
|
||||||
|
# Helper_App.console_log(f'Weather: {weather}')
|
||||||
|
return weather
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
as_json = {
|
||||||
|
**self.get_shared_json_attributes(self)
|
||||||
|
, self.ATTR_ID_WEATHER: self.id_weather
|
||||||
|
, self.FLAG_CODE: self.code
|
||||||
|
, self.FLAG_NAME: self.name
|
||||||
|
, self.FLAG_ACTIVE: self.active
|
||||||
|
, self.FLAG_CREATED_ON: self.created_on
|
||||||
|
}
|
||||||
|
# Helper_App.console_log(f'as_json: {as_json}')
|
||||||
|
return as_json
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{self.FLAG_WEATHER}: {self.id_weather}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
{self.FLAG_CREATED_ON}: {self.created_on}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
class Weather_Temp(db.Model, Base):
|
||||||
|
__tablename__ = 'DOG_Weather_Temp'
|
||||||
|
__table_args__ = { 'extend_existing': True }
|
||||||
|
id_temp = db.Column(db.Integer, primary_key=True)
|
||||||
|
id_weather = db.Column(db.Integer)
|
||||||
|
code = db.Column(db.String(250))
|
||||||
|
name = db.Column(db.String(250))
|
||||||
|
active = db.Column(db.Boolean)
|
||||||
|
# created_on = db.Column(db.DateTime)
|
||||||
|
guid: str = db.Column(db.String(36))
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_weather(cls, weather):
|
||||||
|
_m = 'Weather_Temp.from_weather'
|
||||||
|
temp = cls()
|
||||||
|
temp.id_weather = weather.id_weather
|
||||||
|
temp.code = weather.code
|
||||||
|
temp.name = weather.name
|
||||||
|
temp.active = weather.active
|
||||||
|
# temp.created_on = weather.created_on
|
||||||
|
return temp
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'''
|
||||||
|
{self.__class__.__name__}(
|
||||||
|
{Weather.FLAG_WEATHER}: {self.id_weather}
|
||||||
|
{self.FLAG_CODE}: {self.code}
|
||||||
|
{self.FLAG_NAME}: {self.name}
|
||||||
|
{self.FLAG_ACTIVE}: {self.active}
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
class Parameters_Weather(Get_Many_Parameters_Base):
|
||||||
|
get_all_weather: bool
|
||||||
|
get_inactive_weather: bool
|
||||||
|
ids_weather: str
|
||||||
|
names_weather: str
|
||||||
|
require_all_id_search_filters_met: bool
|
||||||
|
require_any_id_search_filters_met: bool
|
||||||
|
require_all_non_id_search_filters_met: bool
|
||||||
|
require_any_non_id_search_filters_met: bool
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
return cls(
|
||||||
|
get_all_weather = True
|
||||||
|
, get_inactive_weather = False
|
||||||
|
, ids_weather = ''
|
||||||
|
, names_weather = ''
|
||||||
|
, require_all_id_search_filters_met = True
|
||||||
|
, require_any_id_search_filters_met = True
|
||||||
|
, require_all_non_id_search_filters_met = False
|
||||||
|
, require_any_non_id_search_filters_met = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
return cls(
|
||||||
|
get_all_weather = json.get('a_get_all_weather', False)
|
||||||
|
, get_inactive_weather = json.get('a_get_inactive_weather', False)
|
||||||
|
, ids_weather = json.get('a_ids_weather', '')
|
||||||
|
, names_weather = json.get('a_names_weather', '')
|
||||||
|
, require_all_id_search_filters_met = json.get('a_require_all_id_search_filters_met', True)
|
||||||
|
, require_any_id_search_filters_met = json.get('a_require_any_id_search_filters_met', True)
|
||||||
|
, require_all_non_id_search_filters_met = json.get('a_require_all_non_id_search_filters_met', False)
|
||||||
|
, require_any_non_id_search_filters_met = json.get('a_require_any_non_id_search_filters_met', True)
|
||||||
|
)
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
'a_get_all_weather': self.get_all_weather
|
||||||
|
, 'a_get_inactive_weather': self.get_inactive_weather
|
||||||
|
, 'a_ids_weather': self.ids_weather
|
||||||
|
, 'a_names_weather': self.names_weather
|
||||||
|
, 'a_require_all_id_search_filters_met': self.require_all_id_search_filters_met
|
||||||
|
, 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met
|
||||||
|
, 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met
|
||||||
|
, 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met
|
||||||
|
}
|
||||||
@@ -95,7 +95,7 @@ class File_Type_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_file_type = db.Column(db.Integer)
|
id_file_type = db.Column(db.Integer)
|
||||||
# code = db.Column(db.String(250))
|
code = db.Column(db.String(250))
|
||||||
name = db.Column(db.String(250))
|
name = db.Column(db.String(250))
|
||||||
is_image = db.Column(db.Boolean)
|
is_image = db.Column(db.Boolean)
|
||||||
active = db.Column(db.Boolean)
|
active = db.Column(db.Boolean)
|
||||||
@@ -109,7 +109,7 @@ class File_Type_Temp(db.Model, Base):
|
|||||||
_m = 'File_Type_Temp.from_File_Type'
|
_m = 'File_Type_Temp.from_File_Type'
|
||||||
temp = cls()
|
temp = cls()
|
||||||
temp.id_file_type = file_type.id_file_type
|
temp.id_file_type = file_type.id_file_type
|
||||||
# temp.code = file_type.code
|
temp.code = file_type.code
|
||||||
temp.name = file_type.name
|
temp.name = file_type.name
|
||||||
temp.is_image = file_type.is_image
|
temp.is_image = file_type.is_image
|
||||||
temp.active = file_type.active
|
temp.active = file_type.active
|
||||||
|
|||||||
118
controllers/dog/assessment.py
Normal file
118
controllers/dog/assessment.py
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: App Routing
|
||||||
|
Feature: Dog - Assessment Routes
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Dog Assessments Page Controller.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# IMPORTS
|
||||||
|
# internal
|
||||||
|
from business_objects.api import API
|
||||||
|
from business_objects.dog.command import Command
|
||||||
|
from business_objects.dog.assessment import Assessment
|
||||||
|
from datastores.datastore_dog import DataStore_Dog
|
||||||
|
from forms.dog.assessment import Filters_Assessment
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
from models.model_view_dog_assessment import Model_View_Dog_Assessment
|
||||||
|
from models.model_view_home import Model_View_Home
|
||||||
|
import lib.argument_validation as av
|
||||||
|
# external
|
||||||
|
from flask import Flask, render_template, jsonify, request, render_template_string, send_from_directory, redirect, url_for, session, Blueprint, current_app, flash
|
||||||
|
from flask_mail import Mail, Message
|
||||||
|
from extensions import db, oauth, mail
|
||||||
|
from urllib.parse import quote_plus, urlencode
|
||||||
|
from authlib.integrations.flask_client import OAuth
|
||||||
|
from authlib.integrations.base_client import OAuthError
|
||||||
|
from urllib.parse import quote, urlparse, parse_qs
|
||||||
|
import json
|
||||||
|
import base64
|
||||||
|
import hmac
|
||||||
|
import hashlib
|
||||||
|
import datetime
|
||||||
|
from altcha import ChallengeOptions, create_challenge, verify_solution
|
||||||
|
|
||||||
|
|
||||||
|
routes_dog_assessment = Blueprint('routes_dog_assessment', __name__)
|
||||||
|
|
||||||
|
|
||||||
|
@routes_dog_assessment.route(Model_View_Dog_Assessment.HASH_PAGE_DOG_ASSESSMENTS, methods=['GET'])
|
||||||
|
def assessments():
|
||||||
|
Helper_App.console_log('assessments')
|
||||||
|
Helper_App.console_log(f'request_args: {request.args}')
|
||||||
|
try:
|
||||||
|
form_filters = Filters_Assessment.from_json(request.args)
|
||||||
|
except Exception as e:
|
||||||
|
Helper_App.console_log(f'Error: {e}')
|
||||||
|
form_filters = Filters_Assessment()
|
||||||
|
Helper_App.console_log(f'form_filters={form_filters}')
|
||||||
|
model = Model_View_Dog_Assessment(form_filters_old = form_filters)
|
||||||
|
if not model.is_user_logged_in:
|
||||||
|
return redirect(url_for('routes_core_home.home'))
|
||||||
|
Helper_App.console_log(f'form_filters={form_filters}')
|
||||||
|
return render_template('pages/dog/_assessments.html', model = model)
|
||||||
|
|
||||||
|
@routes_dog_assessment.route(Model_View_Dog_Assessment.HASH_SAVE_DOG_ASSESSMENT, methods=['POST'])
|
||||||
|
def save_assessment():
|
||||||
|
data = Helper_App.get_request_data(request)
|
||||||
|
try:
|
||||||
|
form_filters = Filters_Assessment.from_json(data[Model_View_Dog_Assessment.FLAG_FORM_FILTERS])
|
||||||
|
if not form_filters.validate_on_submit():
|
||||||
|
return jsonify({
|
||||||
|
Model_View_Dog_Assessment.FLAG_STATUS: Model_View_Dog_Assessment.FLAG_FAILURE,
|
||||||
|
Model_View_Dog_Assessment.FLAG_MESSAGE: f'Filters form invalid.\n{form_filters.errors}'
|
||||||
|
})
|
||||||
|
model_return = Model_View_Dog_Assessment(form_filters_old=form_filters)
|
||||||
|
if not model_return.is_user_logged_in:
|
||||||
|
raise Exception('User not logged in')
|
||||||
|
|
||||||
|
assessments = data[Model_View_Dog_Assessment.FLAG_ASSESSMENT]
|
||||||
|
if len(assessments) == 0:
|
||||||
|
return jsonify({
|
||||||
|
Model_View_Dog_Assessment.FLAG_STATUS: Model_View_Dog_Assessment.FLAG_FAILURE,
|
||||||
|
Model_View_Dog_Assessment.FLAG_MESSAGE: f'No assessments.'
|
||||||
|
})
|
||||||
|
objs_assessment = []
|
||||||
|
for assessment in assessments:
|
||||||
|
objs_assessment.append(Assessment.from_json(assessment))
|
||||||
|
Helper_App.console_log(f'objs_assessment={objs_assessment}')
|
||||||
|
errors = DataStore_Dog.save_assessments(data.get('comment', 'No comment'), objs_assessment)
|
||||||
|
|
||||||
|
if (len(errors) > 0):
|
||||||
|
return jsonify({
|
||||||
|
Model_View_Dog_Assessment.FLAG_STATUS: Model_View_Dog_Assessment.FLAG_FAILURE,
|
||||||
|
Model_View_Dog_Assessment.FLAG_MESSAGE: f'Error saving assessments.\n{model_return.convert_list_objects_to_json(errors)}'
|
||||||
|
})
|
||||||
|
return jsonify({
|
||||||
|
Model_View_Dog_Assessment.FLAG_STATUS: Model_View_Dog_Assessment.FLAG_SUCCESS,
|
||||||
|
Model_View_Dog_Assessment.FLAG_DATA: Model_View_Dog_Assessment.convert_list_objects_to_json(model_return.assessments)
|
||||||
|
})
|
||||||
|
except Exception as e:
|
||||||
|
return jsonify({
|
||||||
|
Model_View_Dog_Assessment.FLAG_STATUS: Model_View_Dog_Assessment.FLAG_FAILURE,
|
||||||
|
Model_View_Dog_Assessment.FLAG_MESSAGE: f'Bad data received by controller.\n{e}'
|
||||||
|
})
|
||||||
|
|
||||||
|
@routes_dog_assessment.route(Model_View_Dog_Assessment.HASH_PAGE_DOG_ASSESSMENT, methods=['GET'])
|
||||||
|
def assessment():
|
||||||
|
Helper_App.console_log('assessment:')
|
||||||
|
Helper_App.console_log(f'request_args: {request.args}')
|
||||||
|
try:
|
||||||
|
form_filters = Filters_Assessment.from_json(request.args)
|
||||||
|
except Exception as e:
|
||||||
|
Helper_App.console_log(f'Error: {e}')
|
||||||
|
form_filters = Filters_Assessment()
|
||||||
|
Helper_App.console_log(f'form_filters={form_filters}')
|
||||||
|
id_assessment = request.args.get(Model_View_Dog_Assessment.ATTR_ID_ASSESSMENT, None)
|
||||||
|
model = Model_View_Dog_Assessment(form_filters_old = form_filters, id_assessment = id_assessment, hash_page_current = Model_View_Dog_Assessment.HASH_PAGE_DOG_ASSESSMENT)
|
||||||
|
model._title = 'Assessment'
|
||||||
|
if model.assessments is None or len(model.assessments) == 0:
|
||||||
|
return assessments()
|
||||||
|
if not model.is_user_logged_in:
|
||||||
|
return redirect(url_for('routes_core_home.home'))
|
||||||
|
Helper_App.console_log(f'form_filters={form_filters}')
|
||||||
|
return render_template('pages/dog/_assessment.html', model = model)
|
||||||
@@ -13,16 +13,27 @@ Datastore for Users
|
|||||||
# internal
|
# internal
|
||||||
# from routes import bp_home
|
# from routes import bp_home
|
||||||
import lib.argument_validation as av
|
import lib.argument_validation as av
|
||||||
|
from business_objects.dog.assessment import Assessment, Assessment_Temp
|
||||||
|
from business_objects.dog.assessment_command_modality_link import Assessment_Command_Modality_Link, Assessment_Command_Modality_Link_Temp
|
||||||
|
from business_objects.dog.assessment_response import Assessment_Response, Assessment_Response_Temp
|
||||||
|
from business_objects.dog.bribe import Bribe, Bribe_Temp
|
||||||
from business_objects.dog.button_icon import Button_Icon, Button_Icon_Temp
|
from business_objects.dog.button_icon import Button_Icon, Button_Icon_Temp
|
||||||
from business_objects.dog.button_shape import Button_Shape, Button_Shape_Temp
|
from business_objects.dog.button_shape import Button_Shape, Button_Shape_Temp
|
||||||
from business_objects.dog.colour import Colour, Colour_Temp
|
from business_objects.dog.colour import Colour, Colour_Temp
|
||||||
from business_objects.dog.command import Command, Command_Temp
|
from business_objects.dog.command import Command, Command_Temp
|
||||||
from business_objects.dog.command_button_link import Command_Button_Link, Command_Button_Link_Temp
|
from business_objects.dog.command_button_link import Command_Button_Link, Command_Button_Link_Temp
|
||||||
from business_objects.dog.command_category import Command_Category, Command_Category_Temp
|
from business_objects.dog.command_category import Command_Category, Command_Category_Temp
|
||||||
|
from business_objects.dog.command_modality import Command_Modality, Command_Modality_Temp
|
||||||
|
from business_objects.dog.distraction import Distraction, Distraction_Temp
|
||||||
|
from business_objects.dog.distraction_intensity_level import Distraction_Intensity_Level, Distraction_Intensity_Level_Temp
|
||||||
|
from business_objects.dog.distraction_type import Distraction_Type, Distraction_Type_Temp
|
||||||
from business_objects.dog.dog import Dog
|
from business_objects.dog.dog import Dog
|
||||||
from business_objects.dog.dog_command_link import Dog_Command_Link, Dog_Command_Link_Temp
|
from business_objects.dog.dog_command_link import Dog_Command_Link, Dog_Command_Link_Temp
|
||||||
from business_objects.dog.command_button_link import Command_Button_Link, Command_Button_Link_Temp
|
from business_objects.dog.lighting_level import Lighting_Level, Lighting_Level_Temp
|
||||||
from business_objects.dog.location import Location, Location_Temp
|
from business_objects.dog.location import Location, Location_Temp
|
||||||
|
from business_objects.dog.obedience_level import Obedience_Level, Obedience_Level_Temp
|
||||||
|
from business_objects.dog.response_quality_metric import Response_Quality_Metric, Response_Quality_Metric_Temp
|
||||||
|
from business_objects.dog.weather import Weather, Weather_Temp
|
||||||
from business_objects.sql_error import SQL_Error
|
from business_objects.sql_error import SQL_Error
|
||||||
from datastores.datastore_base import DataStore_Base
|
from datastores.datastore_base import DataStore_Base
|
||||||
from helpers.helper_app import Helper_App
|
from helpers.helper_app import Helper_App
|
||||||
@@ -632,3 +643,460 @@ class DataStore_Dog(DataStore_Base):
|
|||||||
|
|
||||||
cls.db_cursor_clear(cursor)
|
cls.db_cursor_clear(cursor)
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_assessment(cls, filters_assessment):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_assessment'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_assessment.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_assessment', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Assessments
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw assessments: {result_set_1}')
|
||||||
|
assessments = []
|
||||||
|
assessment_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_assessment = Assessment.from_db_assessment(row)
|
||||||
|
assessment_indexes[new_assessment.id_assessment] = len(assessments)
|
||||||
|
assessments.append(new_assessment)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return assessments, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_weather(cls, filters_weather):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_weather'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_weather.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_weather', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Weathers
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw weathers: {result_set_1}')
|
||||||
|
weathers = []
|
||||||
|
weather_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_weather = Weather.from_db_weather(row)
|
||||||
|
weather_indexes[new_weather.id_weather] = len(weathers)
|
||||||
|
weathers.append(new_weather)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return weathers, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_lighting_level(cls, filters_lighting_level):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_lighting_level'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_lighting_level.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_lighting_level', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Lighting_Levels
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw lighting_levels: {result_set_1}')
|
||||||
|
lighting_levels = []
|
||||||
|
lighting_level_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_lighting_level = Lighting_Level.from_db_lighting_level(row)
|
||||||
|
lighting_level_indexes[new_lighting_level.id_lighting_level] = len(lighting_levels)
|
||||||
|
lighting_levels.append(new_lighting_level)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return lighting_levels, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_distraction_type(cls, filters_distraction_type):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_distraction_type'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_distraction_type.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_distraction_type', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Distraction_Types
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw distraction_types: {result_set_1}')
|
||||||
|
distraction_types = []
|
||||||
|
distraction_type_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_distraction_type = Distraction_Type.from_db_distraction_type(row)
|
||||||
|
distraction_type_indexes[new_distraction_type.id_distraction_type] = len(distraction_types)
|
||||||
|
distraction_types.append(new_distraction_type)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return distraction_types, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_distraction_intensity_level(cls, filters_distraction_intensity_level):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_distraction_intensity_level'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_distraction_intensity_level.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_distraction_intensity_level', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Distraction_Intensity_Levels
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw distraction_intensity_levels: {result_set_1}')
|
||||||
|
distraction_intensity_levels = []
|
||||||
|
distraction_intensity_level_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_distraction_intensity_level = Distraction_Intensity_Level.from_db_distraction_intensity_level(row)
|
||||||
|
distraction_intensity_level_indexes[new_distraction_intensity_level.id_intensity_level] = len(distraction_intensity_levels)
|
||||||
|
distraction_intensity_levels.append(new_distraction_intensity_level)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return distraction_intensity_levels, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_distraction(cls, filters_distraction):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_distraction'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_distraction.to_json()
|
||||||
|
, 'a_show_errors': 1
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_distraction', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Distractions
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw distractions: {result_set_1}')
|
||||||
|
distractions = []
|
||||||
|
distraction_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_distraction = Distraction.from_db_distraction(row)
|
||||||
|
distraction_indexes[new_distraction.id_distraction] = len(distractions)
|
||||||
|
distractions.append(new_distraction)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return distractions, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_command_modality(cls, filters_command_modality):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_command_modality'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_command_modality.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_command_modality', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Command_Modalities
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw command_modalities: {result_set_1}')
|
||||||
|
command_modalities = []
|
||||||
|
command_modality_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_command_modality = Command_Modality.from_db_command_modality(row)
|
||||||
|
command_modality_indexes[new_command_modality.id_command_modality] = len(command_modalities)
|
||||||
|
command_modalities.append(new_command_modality)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return command_modalities, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_bribe(cls, filters_bribe):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_bribe'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_bribe.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_bribe', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Bribes
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw bribes: {result_set_1}')
|
||||||
|
bribes = []
|
||||||
|
bribe_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_bribe = Bribe.from_db_bribe(row)
|
||||||
|
bribe_indexes[new_bribe.id_bribe] = len(bribes)
|
||||||
|
bribes.append(new_bribe)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return bribes, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_assessment_command_modality_link(cls, filters_assessment_command_modality_link):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_assessment_command_modality_link'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_assessment_command_modality_link.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_assessment_command_modality_link', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Assessment_Command_Modality_Links
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw assessment_command_modality_links: {result_set_1}')
|
||||||
|
assessment_command_modality_links = []
|
||||||
|
assessment_command_modality_link_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_assessment_command_modality_link = Assessment_Command_Modality_Link.from_db_assessment_command_modality_link(row)
|
||||||
|
assessment_command_modality_link_indexes[new_assessment_command_modality_link.id_link] = len(assessment_command_modality_links)
|
||||||
|
assessment_command_modality_links.append(new_assessment_command_modality_link)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return assessment_command_modality_links, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_response_quality_metric(cls, filters_response_quality_metric):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_response_quality_metric'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_response_quality_metric.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_response_quality_metric', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Command_Modalities
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw command_modalities: {result_set_1}')
|
||||||
|
command_modalities = []
|
||||||
|
response_quality_metric_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_response_quality_metric = Response_Quality_Metric.from_db_response_quality_metric(row)
|
||||||
|
response_quality_metric_indexes[new_response_quality_metric.id_response_quality_metric] = len(command_modalities)
|
||||||
|
command_modalities.append(new_response_quality_metric)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return command_modalities, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_obedience_level(cls, filters_obedience_level):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_obedience_level'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_obedience_level.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_obedience_level', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Command_Modalities
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw command_modalities: {result_set_1}')
|
||||||
|
command_modalities = []
|
||||||
|
obedience_level_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_obedience_level = Obedience_Level.from_db_obedience_level(row)
|
||||||
|
obedience_level_indexes[new_obedience_level.id_obedience_level] = len(command_modalities)
|
||||||
|
command_modalities.append(new_obedience_level)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return command_modalities, errors
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_many_assessment_response(cls, filters_assessment_response):
|
||||||
|
_m = f'{cls.__qualname__}.get_many_assessment_response'
|
||||||
|
user = cls.get_user_session()
|
||||||
|
argument_dict = {
|
||||||
|
'a_id_user': user.id_user
|
||||||
|
, **filters_assessment_response.to_json()
|
||||||
|
, 'a_debug': 0
|
||||||
|
}
|
||||||
|
Helper_App.console_log(f'argument_dict: {argument_dict}')
|
||||||
|
result = cls.db_procedure_execute('p_dog_get_many_assessment_response', argument_dict)
|
||||||
|
cursor = result.cursor
|
||||||
|
|
||||||
|
# Assessment_Responses
|
||||||
|
result_set_1 = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw assessment_responses: {result_set_1}')
|
||||||
|
assessment_responses = []
|
||||||
|
assessment_response_indexes = {}
|
||||||
|
for row in result_set_1:
|
||||||
|
new_assessment_response = Assessment_Response.from_db_assessment_response(row)
|
||||||
|
assessment_response_indexes[new_assessment_response.id_response] = len(assessment_responses)
|
||||||
|
assessment_responses.append(new_assessment_response)
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
cursor.nextset()
|
||||||
|
result_set_e = cursor.fetchall()
|
||||||
|
Helper_App.console_log(f'raw errors: {result_set_e}')
|
||||||
|
errors = []
|
||||||
|
if len(result_set_e) > 0:
|
||||||
|
errors = [SQL_Error.from_db_record(row) for row in result_set_e]
|
||||||
|
for error in errors:
|
||||||
|
Helper_App.console_log(f"Error [{error.code}]: {error.msg}")
|
||||||
|
|
||||||
|
cls.db_cursor_clear(cursor)
|
||||||
|
|
||||||
|
return assessment_responses, errors
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ class DataStore_User(DataStore_Base):
|
|||||||
if len(result_set) > 0:
|
if len(result_set) > 0:
|
||||||
for row in result_set:
|
for row in result_set:
|
||||||
Helper_App.console_log(f'row: {row}')
|
Helper_App.console_log(f'row: {row}')
|
||||||
user = User.from_DB_user(row)
|
user = User.from_db_user(row)
|
||||||
users.append(user)
|
users.append(user)
|
||||||
Helper_App.console_log(f'user {str(type(user))}: {user}')
|
Helper_App.console_log(f'user {str(type(user))}: {user}')
|
||||||
|
|
||||||
|
|||||||
151
forms/dog/assessment.py
Normal file
151
forms/dog/assessment.py
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: Backend
|
||||||
|
Feature: Assessment Form
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Defines Flask-WTF form for handling user input on Assessments page.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# IMPORTS
|
||||||
|
# internal
|
||||||
|
from business_objects.base import Base
|
||||||
|
"""
|
||||||
|
from business_objects.dog.distraction_intensity_level import Distraction_Intensity_Level
|
||||||
|
from business_objects.dog.distraction_type import Distraction_Type
|
||||||
|
from business_objects.dog.command import Lighting_Level
|
||||||
|
from business_objects.dog.command_category import Lighting_Level
|
||||||
|
from business_objects.dog.lighting_level import Lighting_Level
|
||||||
|
from business_objects.dog.lighting_level import Lighting_Level
|
||||||
|
"""
|
||||||
|
from business_objects.dog.lighting_level import Lighting_Level
|
||||||
|
from business_objects.dog.location import Location
|
||||||
|
from business_objects.dog.weather import Weather
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
# from models.model_view_store import Model_View_Store # circular
|
||||||
|
# from models.model_view_base import Model_View_Base
|
||||||
|
from forms.base import Form_Base
|
||||||
|
import lib.argument_validation as av
|
||||||
|
# external
|
||||||
|
from flask import Flask, render_template, request, flash, redirect, url_for, current_app
|
||||||
|
from flask_wtf import FlaskForm
|
||||||
|
from wtforms import SelectField, BooleanField, StringField, SubmitField
|
||||||
|
from wtforms.validators import DataRequired, Email, ValidationError
|
||||||
|
import markupsafe
|
||||||
|
from flask_wtf.recaptcha import RecaptchaField
|
||||||
|
from abc import ABCMeta, abstractmethod
|
||||||
|
import json
|
||||||
|
from typing import ClassVar
|
||||||
|
|
||||||
|
class Filters_Assessment(Form_Base):
|
||||||
|
ATTR_ID_ASSESSMENT: ClassVar[str] = 'id_assessment'
|
||||||
|
FLAG_USER_HANDLER: ClassVar[str] = 'id_user_handler'
|
||||||
|
|
||||||
|
search = StringField(
|
||||||
|
'Search'
|
||||||
|
)
|
||||||
|
id_assessment = SelectField(
|
||||||
|
'Assessment'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_weather = SelectField(
|
||||||
|
'Weather'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_lighting_level = SelectField(
|
||||||
|
'Lighting Level'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_location = SelectField(
|
||||||
|
'Location'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_user_handler = SelectField(
|
||||||
|
'Handler'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
id_distraction_type = SelectField(
|
||||||
|
'Distraction Type'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_intensity_level_emotional = SelectField(
|
||||||
|
'Intensity Level Emotional'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_intensity_level_scent = SelectField(
|
||||||
|
'Intensity Level Scent'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_intensity_level_sight = SelectField(
|
||||||
|
'Intensity Level Sight'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_intensity_level_sound = SelectField(
|
||||||
|
'Intensity Level Sound'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_intensity_level_touch = SelectField(
|
||||||
|
'Intensity Level Touch'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_command_category = SelectField(
|
||||||
|
'Command Category'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_command = SelectField(
|
||||||
|
'Command'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_command_modality = SelectField(
|
||||||
|
'Command Modality'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
id_bribe = SelectField(
|
||||||
|
'Bribe'
|
||||||
|
, choices = [Form_Base.get_select_option_all()]
|
||||||
|
, default = Form_Base.get_select_option_default_value()
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
active_only = BooleanField(
|
||||||
|
'Active'
|
||||||
|
, default = True
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json):
|
||||||
|
_m = f'{cls.__qualname__}.from_json'
|
||||||
|
Helper_App.console_log(f'{_m}\njson: {json}')
|
||||||
|
filters = cls()
|
||||||
|
filters.search.data = json[Base.FLAG_SEARCH]
|
||||||
|
filters.id_assessment.data = json[cls.ATTR_ID_ASSESSMENT]
|
||||||
|
filters.id_weather.data = json[Weather.ATTR_ID_WEATHER]
|
||||||
|
filters.id_lighting_level.data = json[Lighting_Level.ATTR_ID_LIGHTING_LEVEL]
|
||||||
|
filters.id_location.data = json[Location.ATTR_ID_LOCATION]
|
||||||
|
filters.id_user_handler.data = json[cls.FLAG_USER_HANDLER]
|
||||||
|
# filters.id_distraction_type = json[Distraction_Type.ATTR_ID_DISTRACTION_TYPE]
|
||||||
|
filters.active_only.data = av.input_bool(json[Base.FLAG_ACTIVE_ONLY], Base.FLAG_ACTIVE_ONLY, f'{cls.__name__}.from_json')
|
||||||
|
return filters
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
return {
|
||||||
|
Base.FLAG_SEARCH: self.search.data
|
||||||
|
, Base.FLAG_ACTIVE_ONLY: self.active_only.data
|
||||||
|
}
|
||||||
@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
|
|||||||
# external
|
# external
|
||||||
|
|
||||||
class Model_View_Accessibility_Report(Model_View_Base):
|
class Model_View_Accessibility_Report(Model_View_Base):
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Accessibility Report'
|
|
||||||
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_ACCESSIBILITY_REPORT):
|
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_ACCESSIBILITY_REPORT):
|
||||||
super().__init__(hash_page_current=hash_page_current)
|
super().__init__(hash_page_current=hash_page_current)
|
||||||
|
self._title = 'Accessibility Report'
|
||||||
|
|
||||||
@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
|
|||||||
# external
|
# external
|
||||||
|
|
||||||
class Model_View_Accessibility_Statement(Model_View_Base):
|
class Model_View_Accessibility_Statement(Model_View_Base):
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Accessibility Statement'
|
|
||||||
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_ACCESSIBILITY_STATEMENT):
|
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_ACCESSIBILITY_STATEMENT):
|
||||||
super().__init__(hash_page_current=hash_page_current)
|
super().__init__(hash_page_current=hash_page_current)
|
||||||
|
self._title = 'Accessibility Statement'
|
||||||
|
|
||||||
@@ -19,17 +19,29 @@ Base data model for views
|
|||||||
# from routes import bp_home
|
# from routes import bp_home
|
||||||
from business_objects.base import Base
|
from business_objects.base import Base
|
||||||
from business_objects.file_type import File_Type
|
from business_objects.file_type import File_Type
|
||||||
|
from business_objects.dog.assessment import Assessment
|
||||||
|
from business_objects.dog.assessment_command_modality_link import Assessment_Command_Modality_Link
|
||||||
|
from business_objects.dog.assessment_response import Assessment_Response
|
||||||
|
from business_objects.dog.bribe import Bribe
|
||||||
from business_objects.dog.button_icon import Button_Icon
|
from business_objects.dog.button_icon import Button_Icon
|
||||||
from business_objects.dog.button_shape import Button_Shape
|
from business_objects.dog.button_shape import Button_Shape
|
||||||
from business_objects.dog.colour import Colour
|
from business_objects.dog.colour import Colour
|
||||||
from business_objects.dog.command import Command
|
from business_objects.dog.command import Command
|
||||||
from business_objects.dog.command_button_link import Command_Button_Link
|
from business_objects.dog.command_button_link import Command_Button_Link
|
||||||
from business_objects.dog.command_category import Command_Category
|
from business_objects.dog.command_category import Command_Category
|
||||||
|
from business_objects.dog.command_modality import Command_Modality
|
||||||
|
from business_objects.dog.distraction import Distraction
|
||||||
|
from business_objects.dog.distraction_intensity_level import Distraction_Intensity_Level
|
||||||
|
from business_objects.dog.distraction_type import Distraction_Type
|
||||||
from business_objects.dog.dog import Dog
|
from business_objects.dog.dog import Dog
|
||||||
from business_objects.dog.dog_command_link import Dog_Command_Link
|
from business_objects.dog.dog_command_link import Dog_Command_Link
|
||||||
from business_objects.dog.image import Image
|
from business_objects.dog.image import Image
|
||||||
|
from business_objects.dog.lighting_level import Lighting_Level
|
||||||
from business_objects.dog.location import Location
|
from business_objects.dog.location import Location
|
||||||
|
from business_objects.dog.obedience_level import Obedience_Level
|
||||||
|
from business_objects.dog.response_quality_metric import Response_Quality_Metric
|
||||||
from business_objects.dog.user import User
|
from business_objects.dog.user import User
|
||||||
|
from business_objects.dog.weather import Weather
|
||||||
from datastores.datastore_base import DataStore_Base
|
from datastores.datastore_base import DataStore_Base
|
||||||
from datastores.datastore_dog import DataStore_Dog
|
from datastores.datastore_dog import DataStore_Dog
|
||||||
from datastores.datastore_user import DataStore_User
|
from datastores.datastore_user import DataStore_User
|
||||||
@@ -44,17 +56,27 @@ from typing import ClassVar
|
|||||||
|
|
||||||
|
|
||||||
class Model_View_Base(BaseModel, ABC):
|
class Model_View_Base(BaseModel, ABC):
|
||||||
|
ATTR_ID_ASSESSMENT: ClassVar[str] = Assessment.ATTR_ID_ASSESSMENT
|
||||||
|
ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = Assessment_Command_Modality_Link.ATTR_ID_ASSESSMENT_COMMAND_MODALITY_LINK
|
||||||
|
ATTR_ID_ASSESSMENT_RESPONSE: ClassVar[str] = Assessment_Response.ATTR_ID_ASSESSMENT_RESPONSE
|
||||||
|
ATTR_ID_BRIBE: ClassVar[str] = Bribe.ATTR_ID_BRIBE
|
||||||
ATTR_ID_BUTTON_ICON: ClassVar[str] = Button_Icon.ATTR_ID_BUTTON_ICON
|
ATTR_ID_BUTTON_ICON: ClassVar[str] = Button_Icon.ATTR_ID_BUTTON_ICON
|
||||||
ATTR_ID_BUTTON_SHAPE: ClassVar[str] = Button_Shape.ATTR_ID_BUTTON_SHAPE
|
ATTR_ID_BUTTON_SHAPE: ClassVar[str] = Button_Shape.ATTR_ID_BUTTON_SHAPE
|
||||||
ATTR_ID_COLOUR: ClassVar[str] = Colour.ATTR_ID_COLOUR
|
ATTR_ID_COLOUR: ClassVar[str] = Colour.ATTR_ID_COLOUR
|
||||||
ATTR_ID_COMMAND: ClassVar[str] = Command.ATTR_ID_COMMAND
|
ATTR_ID_COMMAND: ClassVar[str] = Command.ATTR_ID_COMMAND
|
||||||
ATTR_ID_COMMAND_BUTTON_LINK: ClassVar[str] = Command_Button_Link.ATTR_ID_COMMAND_BUTTON_LINK
|
ATTR_ID_COMMAND_BUTTON_LINK: ClassVar[str] = Command_Button_Link.ATTR_ID_COMMAND_BUTTON_LINK
|
||||||
ATTR_ID_COMMAND_CATEGORY: ClassVar[str] = Command_Category.ATTR_ID_COMMAND_CATEGORY
|
ATTR_ID_COMMAND_CATEGORY: ClassVar[str] = Command_Category.ATTR_ID_COMMAND_CATEGORY
|
||||||
|
ATTR_ID_COMMAND_MODALITY: ClassVar[str] = Command_Modality.ATTR_ID_COMMAND_MODALITY
|
||||||
|
ATTR_ID_DISTRACTION: ClassVar[str] = Distraction.ATTR_ID_DISTRACTION
|
||||||
|
ATTR_ID_DISTRACTION_INTENSITY_LEVEL: ClassVar[str] = Distraction_Intensity_Level.ATTR_ID_DISTRACTION_INTENSITY_LEVEL
|
||||||
|
ATTR_ID_DISTRACTION_TYPE: ClassVar[str] = Distraction_Type.ATTR_ID_DISTRACTION_TYPE
|
||||||
ATTR_ID_DOG: ClassVar[str] = Dog.ATTR_ID_DOG
|
ATTR_ID_DOG: ClassVar[str] = Dog.ATTR_ID_DOG
|
||||||
ATTR_ID_DOG_COMMAND_LINK: ClassVar[str] = Dog_Command_Link.ATTR_ID_DOG_COMMAND_LINK
|
ATTR_ID_DOG_COMMAND_LINK: ClassVar[str] = Dog_Command_Link.ATTR_ID_DOG_COMMAND_LINK
|
||||||
ATTR_ID_FILE_TYPE: ClassVar[str] = File_Type.ATTR_ID_FILE_TYPE
|
ATTR_ID_FILE_TYPE: ClassVar[str] = File_Type.ATTR_ID_FILE_TYPE
|
||||||
ATTR_ID_IMAGE: ClassVar[str] = Image.ATTR_ID_IMAGE
|
ATTR_ID_IMAGE: ClassVar[str] = Image.ATTR_ID_IMAGE
|
||||||
|
ATTR_ID_LIGHTING_LEVEL: ClassVar[str] = Lighting_Level.ATTR_ID_LIGHTING_LEVEL
|
||||||
ATTR_ID_LOCATION: ClassVar[str] = Location.ATTR_ID_LOCATION
|
ATTR_ID_LOCATION: ClassVar[str] = Location.ATTR_ID_LOCATION
|
||||||
|
ATTR_ID_WEATHER: ClassVar[str] = Weather.ATTR_ID_WEATHER
|
||||||
ATTR_TEXT_COLLAPSED: ClassVar[str] = 'textCollapsed'
|
ATTR_TEXT_COLLAPSED: ClassVar[str] = 'textCollapsed'
|
||||||
ATTR_TEXT_EXPANDED: ClassVar[str] = 'textExpanded'
|
ATTR_TEXT_EXPANDED: ClassVar[str] = 'textExpanded'
|
||||||
ATTR_VALUE_CURRENT: ClassVar[str] = 'current-value'
|
ATTR_VALUE_CURRENT: ClassVar[str] = 'current-value'
|
||||||
@@ -87,8 +109,12 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
FLAG_ACTIVE_ONLY: ClassVar[str] = Base.FLAG_ACTIVE_ONLY
|
FLAG_ACTIVE_ONLY: ClassVar[str] = Base.FLAG_ACTIVE_ONLY
|
||||||
FLAG_ADD: ClassVar[str] = 'add'
|
FLAG_ADD: ClassVar[str] = 'add'
|
||||||
# FLAG_ADD_DELETE: ClassVar[str] = 'add-delete'
|
# FLAG_ADD_DELETE: ClassVar[str] = 'add-delete'
|
||||||
|
FLAG_ASSESSMENT: ClassVar[str] = Assessment.FLAG_ASSESSMENT
|
||||||
|
FLAG_ASSESSMENT_COMMAND_MODALITY_LINK: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_ASSESSMENT_COMMAND_MODALITY_LINK
|
||||||
|
FLAG_ASSESSMENT_RESPONSE: ClassVar[str] = Assessment_Response.FLAG_ASSESSMENT_RESPONSE
|
||||||
FLAG_BOOL_FALSE: ClassVar[str] = 'false'
|
FLAG_BOOL_FALSE: ClassVar[str] = 'false'
|
||||||
FLAG_BOOL_TRUE: ClassVar[str] = 'true'
|
FLAG_BOOL_TRUE: ClassVar[str] = 'true'
|
||||||
|
FLAG_BRIBE: ClassVar[str] = Bribe.FLAG_BRIBE
|
||||||
FLAG_BUTTON: ClassVar[str] = 'button'
|
FLAG_BUTTON: ClassVar[str] = 'button'
|
||||||
FLAG_BUTTON_ICON: ClassVar[str] = Button_Icon.FLAG_BUTTON_ICON
|
FLAG_BUTTON_ICON: ClassVar[str] = Button_Icon.FLAG_BUTTON_ICON
|
||||||
FLAG_BUTTON_LIGHT: ClassVar[str] = 'button-light'
|
FLAG_BUTTON_LIGHT: ClassVar[str] = 'button-light'
|
||||||
@@ -106,6 +132,7 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
FLAG_COMMAND: ClassVar[str] = Command.FLAG_COMMAND
|
FLAG_COMMAND: ClassVar[str] = Command.FLAG_COMMAND
|
||||||
FLAG_COMMAND_BUTTON_LINK: ClassVar[str] = Command_Button_Link.FLAG_COMMAND_BUTTON_LINK
|
FLAG_COMMAND_BUTTON_LINK: ClassVar[str] = Command_Button_Link.FLAG_COMMAND_BUTTON_LINK
|
||||||
FLAG_COMMAND_CATEGORY: ClassVar[str] = Command_Category.FLAG_COMMAND_CATEGORY
|
FLAG_COMMAND_CATEGORY: ClassVar[str] = Command_Category.FLAG_COMMAND_CATEGORY
|
||||||
|
FLAG_COMMAND_MODALITY: ClassVar[str] = Command_Modality.FLAG_COMMAND_MODALITY
|
||||||
FLAG_COLUMN: ClassVar[str] = 'column'
|
FLAG_COLUMN: ClassVar[str] = 'column'
|
||||||
FLAG_COMMENT: ClassVar[str] = 'comment'
|
FLAG_COMMENT: ClassVar[str] = 'comment'
|
||||||
FLAG_CONTAINER: ClassVar[str] = 'container'
|
FLAG_CONTAINER: ClassVar[str] = 'container'
|
||||||
@@ -118,6 +145,9 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
FLAG_DDL_PREVIEW: ClassVar[str] = "ddl-preview"
|
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_DISTRACTION: ClassVar[str] = Distraction.FLAG_DISTRACTION
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL: ClassVar[str] = Distraction_Intensity_Level.FLAG_DISTRACTION_INTENSITY_LEVEL
|
||||||
|
FLAG_DISTRACTION_TYPE: ClassVar[str] = Distraction_Type.FLAG_DISTRACTION_TYPE
|
||||||
FLAG_DETAIL: ClassVar[str] = 'detail'
|
FLAG_DETAIL: ClassVar[str] = 'detail'
|
||||||
FLAG_DIALOG: ClassVar[str] = 'dialog'
|
FLAG_DIALOG: ClassVar[str] = 'dialog'
|
||||||
FLAG_DIRTY: ClassVar[str] = 'dirty'
|
FLAG_DIRTY: ClassVar[str] = 'dirty'
|
||||||
@@ -139,6 +169,7 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
FLAG_IS_CHECKED: ClassVar[str] = 'is_checked'
|
FLAG_IS_CHECKED: ClassVar[str] = 'is_checked'
|
||||||
FLAG_IS_COLLAPSED: ClassVar[str] = 'is_collapsed'
|
FLAG_IS_COLLAPSED: ClassVar[str] = 'is_collapsed'
|
||||||
FLAG_LEFT_HAND_STUB: ClassVar[str] = 'lhs'
|
FLAG_LEFT_HAND_STUB: ClassVar[str] = 'lhs'
|
||||||
|
FLAG_LIGHTING_LEVEL: ClassVar[str] = Lighting_Level.FLAG_LIGHTING_LEVEL
|
||||||
FLAG_LOCATION: ClassVar[str] = Location.FLAG_LOCATION
|
FLAG_LOCATION: ClassVar[str] = Location.FLAG_LOCATION
|
||||||
FLAG_LOCATION_PARENT: ClassVar[str] = Location.FLAG_LOCATION_PARENT
|
FLAG_LOCATION_PARENT: ClassVar[str] = Location.FLAG_LOCATION_PARENT
|
||||||
FLAG_LOGO: ClassVar[str] = 'logo'
|
FLAG_LOGO: ClassVar[str] = 'logo'
|
||||||
@@ -151,6 +182,8 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
# FLAG_NAME_SINGULAR: ClassVar[str] = Base.FLAG_NAME_SINGULAR
|
# FLAG_NAME_SINGULAR: ClassVar[str] = Base.FLAG_NAME_SINGULAR
|
||||||
FLAG_NAV_ADMIN_HOME: ClassVar[str] = 'navAdminHome'
|
FLAG_NAV_ADMIN_HOME: ClassVar[str] = 'navAdminHome'
|
||||||
FLAG_NAV_CONTACT: ClassVar[str] = 'navContact'
|
FLAG_NAV_CONTACT: ClassVar[str] = 'navContact'
|
||||||
|
FLAG_NAV_DOG_ASSESSMENT: ClassVar[str] = 'navDogAssessment'
|
||||||
|
FLAG_NAV_DOG_ASSESSMENTS: ClassVar[str] = 'navDogAssessments'
|
||||||
FLAG_NAV_DOG_BUTTON_ICONS: ClassVar[str] = 'navDogButtonIcons'
|
FLAG_NAV_DOG_BUTTON_ICONS: ClassVar[str] = 'navDogButtonIcons'
|
||||||
FLAG_NAV_DOG_COLOURS: ClassVar[str] = 'navDogColours'
|
FLAG_NAV_DOG_COLOURS: ClassVar[str] = 'navDogColours'
|
||||||
FLAG_NAV_DOG_COMMAND_BUTTON_LINKS: ClassVar[str] = 'navDogCommandButtonLinks'
|
FLAG_NAV_DOG_COMMAND_BUTTON_LINKS: ClassVar[str] = 'navDogCommandButtonLinks'
|
||||||
@@ -166,8 +199,11 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
FLAG_NAV_USER_LOGIN: ClassVar[str] = 'navUserLogin'
|
FLAG_NAV_USER_LOGIN: ClassVar[str] = 'navUserLogin'
|
||||||
FLAG_NAV_USER_LOGOUT: ClassVar[str] = 'navUserLogout'
|
FLAG_NAV_USER_LOGOUT: ClassVar[str] = 'navUserLogout'
|
||||||
FLAG_NOTES: ClassVar[str] = "notes"
|
FLAG_NOTES: ClassVar[str] = "notes"
|
||||||
|
FLAG_OBEDIENCE_LEVEL: ClassVar[str] = Obedience_Level.FLAG_OBEDIENCE_LEVEL
|
||||||
FLAG_OVERLAY: ClassVar[str] = 'overlay'
|
FLAG_OVERLAY: ClassVar[str] = 'overlay'
|
||||||
FLAG_PAGE_BODY: ClassVar[str] = 'page-body'
|
FLAG_PAGE_BODY: ClassVar[str] = 'page-body'
|
||||||
|
FLAG_QUANTITY: ClassVar[str] = 'quantity'
|
||||||
|
FLAG_RESPONSE_QUALITY_METRIC: ClassVar[str] = Response_Quality_Metric.FLAG_RESPONSE_QUALITY_METRIC
|
||||||
FLAG_RIGHT_HAND_SIDE: ClassVar[str] = 'rhs'
|
FLAG_RIGHT_HAND_SIDE: ClassVar[str] = 'rhs'
|
||||||
FLAG_ROW: ClassVar[str] = 'row'
|
FLAG_ROW: ClassVar[str] = 'row'
|
||||||
FLAG_ROW_NEW: ClassVar[str] = 'row-new'
|
FLAG_ROW_NEW: ClassVar[str] = 'row-new'
|
||||||
@@ -179,8 +215,10 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
FLAG_STATUS: ClassVar[str] = 'status'
|
FLAG_STATUS: ClassVar[str] = 'status'
|
||||||
FLAG_SUBMIT: ClassVar[str] = 'submit'
|
FLAG_SUBMIT: ClassVar[str] = 'submit'
|
||||||
FLAG_SUCCESS: ClassVar[str] = 'success'
|
FLAG_SUCCESS: ClassVar[str] = 'success'
|
||||||
|
FLAG_TABLE_MAIN: ClassVar[str] = 'table-main'
|
||||||
FLAG_TEMPORARY_ELEMENT: ClassVar[str] = 'temporary-element'
|
FLAG_TEMPORARY_ELEMENT: ClassVar[str] = 'temporary-element'
|
||||||
FLAG_USER: ClassVar[str] = User.FLAG_USER
|
FLAG_USER: ClassVar[str] = User.FLAG_USER
|
||||||
|
FLAG_WEATHER: ClassVar[str] = Weather.FLAG_WEATHER
|
||||||
FLAG_WEBSITE: ClassVar[str] = Base.FLAG_WEBSITE
|
FLAG_WEBSITE: ClassVar[str] = Base.FLAG_WEBSITE
|
||||||
HASH_GET_ALTCHA_CHALLENGE: ClassVar[str] = '/altcha/create-challenge'
|
HASH_GET_ALTCHA_CHALLENGE: ClassVar[str] = '/altcha/create-challenge'
|
||||||
HASH_GET_DOG_SCRIPTS_SHARED: ClassVar[str] = '/dog/scripts-shared'
|
HASH_GET_DOG_SCRIPTS_SHARED: ClassVar[str] = '/dog/scripts-shared'
|
||||||
@@ -190,6 +228,8 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
HASH_PAGE_CONTACT: ClassVar[str] = '/contact'
|
HASH_PAGE_CONTACT: ClassVar[str] = '/contact'
|
||||||
HASH_PAGE_CONTACT_SUCCESS: ClassVar[str] = '/contact-success'
|
HASH_PAGE_CONTACT_SUCCESS: ClassVar[str] = '/contact-success'
|
||||||
HASH_PAGE_DATA_RETENTION_SCHEDULE: ClassVar[str] = '/retention-schedule'
|
HASH_PAGE_DATA_RETENTION_SCHEDULE: ClassVar[str] = '/retention-schedule'
|
||||||
|
HASH_PAGE_DOG_ASSESSMENT: ClassVar[str] = '/dog/assessment'
|
||||||
|
HASH_PAGE_DOG_ASSESSMENTS: ClassVar[str] = '/dog/assessments'
|
||||||
HASH_PAGE_DOG_BUTTON_ICONS: ClassVar[str] = '/dog/button-icons'
|
HASH_PAGE_DOG_BUTTON_ICONS: ClassVar[str] = '/dog/button-icons'
|
||||||
HASH_PAGE_DOG_COMMAND_BUTTON_LINKS: ClassVar[str] = '/dog/command-button-links'
|
HASH_PAGE_DOG_COMMAND_BUTTON_LINKS: ClassVar[str] = '/dog/command-button-links'
|
||||||
HASH_PAGE_DOG_COMMAND_CATEGORIES: ClassVar[str] = '/dog/command-categories'
|
HASH_PAGE_DOG_COMMAND_CATEGORIES: ClassVar[str] = '/dog/command-categories'
|
||||||
@@ -205,6 +245,7 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
HASH_PAGE_USER_ACCOUNT: ClassVar[str] = '/user'
|
HASH_PAGE_USER_ACCOUNT: ClassVar[str] = '/user'
|
||||||
HASH_PAGE_USER_LOGIN: ClassVar[str] = '/login'
|
HASH_PAGE_USER_LOGIN: ClassVar[str] = '/login'
|
||||||
HASH_PAGE_USER_LOGOUT: ClassVar[str] = '/logout'
|
HASH_PAGE_USER_LOGOUT: ClassVar[str] = '/logout'
|
||||||
|
HASH_SAVE_DOG_ASSESSMENT: ClassVar[str] = '/dog/save-assessment'
|
||||||
HASH_SAVE_DOG_BUTTON_ICON: ClassVar[str] = '/dog/save-button-icon'
|
HASH_SAVE_DOG_BUTTON_ICON: ClassVar[str] = '/dog/save-button-icon'
|
||||||
HASH_SAVE_DOG_COLOUR: ClassVar[str] = '/dog/save-colour'
|
HASH_SAVE_DOG_COLOUR: ClassVar[str] = '/dog/save-colour'
|
||||||
HASH_SAVE_DOG_COMMAND: ClassVar[str] = '/dog/save-command'
|
HASH_SAVE_DOG_COMMAND: ClassVar[str] = '/dog/save-command'
|
||||||
@@ -234,6 +275,7 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
URL_GITHUB: ClassVar[str] = 'https://github.com/Teddy-1024'
|
URL_GITHUB: ClassVar[str] = 'https://github.com/Teddy-1024'
|
||||||
URL_LINKEDIN: ClassVar[str] = 'https://uk.linkedin.com/in/teddyms'
|
URL_LINKEDIN: ClassVar[str] = 'https://uk.linkedin.com/in/teddyms'
|
||||||
|
|
||||||
|
_title: str
|
||||||
hash_page_current: str
|
hash_page_current: str
|
||||||
app: Flask = None
|
app: Flask = None
|
||||||
session: None = None
|
session: None = None
|
||||||
@@ -245,10 +287,12 @@ class Model_View_Base(BaseModel, ABC):
|
|||||||
model_config = ConfigDict(arbitrary_types_allowed=True)
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@abstractmethod
|
# @abstractmethod
|
||||||
def title(self):
|
def title(self):
|
||||||
pass
|
if self._title is None:
|
||||||
|
raise NotImplementedError("Model Title required.")
|
||||||
|
return self._title
|
||||||
|
|
||||||
def __init__(self, hash_page_current, **kwargs):
|
def __init__(self, hash_page_current, **kwargs):
|
||||||
BaseModel.__init__(self, hash_page_current=hash_page_current, **kwargs)
|
BaseModel.__init__(self, hash_page_current=hash_page_current, **kwargs)
|
||||||
self.app = current_app
|
self.app = current_app
|
||||||
|
|||||||
205
models/model_view_dog_assessment.py
Normal file
205
models/model_view_dog_assessment.py
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
"""
|
||||||
|
Project: PARTS Website
|
||||||
|
Author: Edward Middleton-Smith
|
||||||
|
Precision And Research Technology Systems Limited
|
||||||
|
|
||||||
|
Technology: View Models
|
||||||
|
Feature: Dog Assessments View Model
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Data model for dog assessments view
|
||||||
|
"""
|
||||||
|
|
||||||
|
# internal
|
||||||
|
from business_objects.dog.assessment import Assessment, Parameters_Assessment
|
||||||
|
from business_objects.dog.assessment_command_modality_link import Assessment_Command_Modality_Link, Parameters_Assessment_Command_Modality_Link
|
||||||
|
from business_objects.dog.assessment_response import Assessment_Response, Parameters_Assessment_Response
|
||||||
|
from business_objects.dog.bribe import Bribe, Parameters_Bribe
|
||||||
|
from business_objects.dog.command import Command, Parameters_Command
|
||||||
|
from business_objects.dog.command_category import Command_Category
|
||||||
|
from business_objects.dog.command_modality import Command_Modality, Parameters_Command_Modality
|
||||||
|
from business_objects.dog.distraction import Distraction, Parameters_Distraction
|
||||||
|
from business_objects.dog.distraction_intensity_level import Distraction_Intensity_Level, Parameters_Distraction_Intensity_Level
|
||||||
|
from business_objects.dog.distraction_type import Distraction_Type, Parameters_Distraction_Type
|
||||||
|
from business_objects.dog.lighting_level import Lighting_Level, Parameters_Lighting_Level
|
||||||
|
from business_objects.dog.location import Location, Parameters_Location
|
||||||
|
from business_objects.dog.obedience_level import Obedience_Level, Parameters_Obedience_Level
|
||||||
|
from business_objects.dog.response_quality_metric import Response_Quality_Metric, Parameters_Response_Quality_Metric
|
||||||
|
from business_objects.dog.user import User, Parameters_User
|
||||||
|
from business_objects.dog.weather import Weather, Parameters_Weather
|
||||||
|
from datastores.datastore_dog import DataStore_Dog
|
||||||
|
from datastores.datastore_user import DataStore_User
|
||||||
|
from models.model_view_dog_base import Model_View_Dog_Base
|
||||||
|
from forms.dog.assessment import Filters_Assessment
|
||||||
|
# from routes import bp_home
|
||||||
|
from helpers.helper_app import Helper_App
|
||||||
|
import lib.argument_validation as av
|
||||||
|
|
||||||
|
# external
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from typing import ClassVar, Optional
|
||||||
|
from operator import attrgetter
|
||||||
|
|
||||||
|
class Model_View_Dog_Assessment(Model_View_Dog_Base):
|
||||||
|
FLAG_DISTANCE_FROM_HANDLER: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_DISTANCE_FROM_HANDLER
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_EMOTIONAL
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_SCENT
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_SIGHT
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_SOUND
|
||||||
|
FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH: ClassVar[str] = Distraction.FLAG_DISTRACTION_INTENSITY_LEVEL_TOUCH
|
||||||
|
FLAG_IS_IN_HEARING_RANGE_OF_HANDLER: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_IS_IN_HEARING_RANGE_OF_HANDLER
|
||||||
|
FLAG_IS_IN_SCENT_RANGE_OF_HANDLER: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_IS_IN_SCENT_RANGE_OF_HANDLER
|
||||||
|
FLAG_IS_IN_SIGHT_OF_HANDLER: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_IS_IN_SIGHT_OF_HANDLER
|
||||||
|
FLAG_IS_ON_LEAD: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_IS_ON_LEAD
|
||||||
|
FLAG_PROXIMITY_METRES: ClassVar[str] = Distraction.FLAG_PROXIMITY_METRES
|
||||||
|
FLAG_TEMPERATURE_CELCIUS: ClassVar[str] = Assessment.FLAG_TEMPERATURE_CELCIUS
|
||||||
|
FLAG_TRIAL_COUNT: ClassVar[str] = Assessment_Command_Modality_Link.FLAG_TRIAL_COUNT
|
||||||
|
FLAG_USER_HANDLER: ClassVar[str] = Assessment.FLAG_USER_HANDLER
|
||||||
|
FLAG_VALUE_MEASURED: ClassVar[str] = Assessment_Response.FLAG_VALUE_MEASURED
|
||||||
|
ID_FORM_ASSESSMENT: ClassVar[str] = 'form_assessment'
|
||||||
|
ID_FORM_ASSESSMENT_COMMAND_MODALITY_LINKS: ClassVar[str] = 'form_assessment_command_modality_links'
|
||||||
|
ID_FORM_DISTRACTIONS: ClassVar[str] = 'form_distractions'
|
||||||
|
ID_TABLE_ASSESSMENT: ClassVar[str] = 'table_assessment'
|
||||||
|
ID_TABLE_ASSESSMENT_COMMAND_MODALITY_LINKS: ClassVar[str] = 'table_assessment_command_modality_links'
|
||||||
|
ID_TABLE_ASSESSMENT_RESPONSES: ClassVar[str] = 'table_assessment_responses'
|
||||||
|
ID_TABLE_DISTRACTIONS: ClassVar[str] = 'table_distractions'
|
||||||
|
filter_bribes: list = None
|
||||||
|
filter_command_categories: list = None
|
||||||
|
filter_command_modalities: list = None
|
||||||
|
filter_commands: list = None
|
||||||
|
filter_distraction_intensity_levels: list = None
|
||||||
|
filter_distraction_types: list = None
|
||||||
|
filter_lighting_levels: list = None
|
||||||
|
filter_locations: list = None
|
||||||
|
filter_obedience_levels: list = None
|
||||||
|
filter_response_quality_metrics: list = None
|
||||||
|
filter_user_handlers: list = None
|
||||||
|
filter_weathers: list = None
|
||||||
|
assessments: list = None
|
||||||
|
form_filters: Filters_Assessment = None
|
||||||
|
form_filters_old: Filters_Assessment
|
||||||
|
id_assessment: Optional[int]
|
||||||
|
|
||||||
|
def __init__(self, form_filters_old, id_assessment = None, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_ASSESSMENTS):
|
||||||
|
_m = 'Model_View_Dog_Assessment.__init__'
|
||||||
|
Helper_App.console_log(f'{_m}\nstarting...')
|
||||||
|
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old, id_assessment=id_assessment)
|
||||||
|
self._title = 'Assessments'
|
||||||
|
self.form_filters = form_filters_old
|
||||||
|
datastore_dog = DataStore_Dog()
|
||||||
|
datastore_user = DataStore_User()
|
||||||
|
|
||||||
|
# Assessments + filters
|
||||||
|
parameters_filter_lighting_level = Parameters_Lighting_Level.get_default()
|
||||||
|
self.filter_lighting_levels, errors = datastore_dog.get_many_lighting_level(parameters_filter_lighting_level)
|
||||||
|
if len(self.filter_lighting_levels) > 0:
|
||||||
|
self.form_filters.id_lighting_level.choices += [(str(lighting_level.id_lighting_level), lighting_level.name) for lighting_level in self.filter_lighting_levels]
|
||||||
|
|
||||||
|
parameters_filter_location = Parameters_Location.get_default()
|
||||||
|
self.filter_locations, errors = datastore_dog.get_many_location(parameters_filter_location)
|
||||||
|
if len(self.filter_locations) > 0:
|
||||||
|
self.form_filters.id_location.choices += [(str(location.id_location), location.name) for location in self.filter_locations]
|
||||||
|
|
||||||
|
parameters_filter_user = Parameters_User.get_default()
|
||||||
|
parameters_filter_user.id_user = self.user.id_user
|
||||||
|
parameters_filter_user.get_all_user = True
|
||||||
|
self.filter_user_handlers, errors = datastore_user.get_many_user(parameters_filter_user)
|
||||||
|
if len(self.filter_user_handlers) > 0:
|
||||||
|
self.form_filters.id_user_handler.choices += [(str(user.id_user), user.get_name()) for user in self.filter_user_handlers]
|
||||||
|
|
||||||
|
parameters_filter_weather = Parameters_Weather.get_default()
|
||||||
|
self.filter_weathers, errors = datastore_dog.get_many_weather(parameters_filter_weather)
|
||||||
|
if len(self.filter_weathers) > 0:
|
||||||
|
self.form_filters.id_weather.choices += [(str(weather.id_weather), weather.name) for weather in self.filter_weathers]
|
||||||
|
|
||||||
|
Helper_App.console_log(f'Form filters: {self.form_filters}')
|
||||||
|
parameters_filter_assessment = Parameters_Assessment.from_form_filters_assessment(self.form_filters)
|
||||||
|
if self.id_assessment is not None:
|
||||||
|
parameters_filter_assessment.ids_assessment = str(self.id_assessment)
|
||||||
|
Helper_App.console_log(f'Query args: {parameters_filter_assessment}')
|
||||||
|
self.assessments, errors = datastore_dog.get_many_assessment(parameters_filter_assessment)
|
||||||
|
|
||||||
|
# Distractions + filters
|
||||||
|
parameters_filter_distraction_type = Parameters_Distraction_Type.get_default()
|
||||||
|
self.filter_distraction_types, errors = datastore_dog.get_many_distraction_type(parameters_filter_distraction_type)
|
||||||
|
"""
|
||||||
|
if len(self.filter_distraction_types) > 0:
|
||||||
|
self.form_filters.id_distraction_type.choices += [(str(distraction_type.id_type), distraction_type.name) for distraction_type in self.filter_distraction_types]
|
||||||
|
"""
|
||||||
|
|
||||||
|
parameters_filter_distraction_intensity_level = Parameters_Distraction_Intensity_Level.get_default()
|
||||||
|
self.filter_distraction_intensity_levels, errors = datastore_dog.get_many_distraction_intensity_level(parameters_filter_distraction_intensity_level)
|
||||||
|
"""
|
||||||
|
if len(self.filter_distraction_intensity_levels) > 0:
|
||||||
|
self.form_filters.id_intensity_level.choices += [(str(distraction_intensity_level.id_intensity_level), distraction_intensity_level.name) for distraction_intensity_level in self.filter_distraction_intensity_levels]
|
||||||
|
"""
|
||||||
|
|
||||||
|
parameters_filter_distraction = Parameters_Distraction.from_form_filters_assessment(self.form_filters)
|
||||||
|
distractions, errors = datastore_dog.get_many_distraction(parameters_filter_distraction)
|
||||||
|
|
||||||
|
# Assessment Command Modality Links + filters
|
||||||
|
parameters_filter_command = Parameters_Command.get_default()
|
||||||
|
self.filter_command_categories, self.filter_commands, errors = datastore_dog.get_many_command(parameters_filter_command)
|
||||||
|
"""
|
||||||
|
if len(self.filter_command_categories) > 0:
|
||||||
|
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])
|
||||||
|
"""
|
||||||
|
|
||||||
|
parameters_filter_command_modality = Parameters_Command_Modality.get_default()
|
||||||
|
self.filter_command_modalities, errors = datastore_dog.get_many_command_modality(parameters_filter_command_modality)
|
||||||
|
"""
|
||||||
|
if len(self.filter_command_modalities) > 0:
|
||||||
|
self.form_filters.id_command_modality.choices += [(str(command_modality.id_command_modality), command_modality.name) for command_modality in self.filter_command_modalities]
|
||||||
|
"""
|
||||||
|
|
||||||
|
parameters_filter_bribe = Parameters_Bribe.get_default()
|
||||||
|
self.filter_bribes, errors = datastore_dog.get_many_bribe(parameters_filter_bribe)
|
||||||
|
"""
|
||||||
|
if len(self.filter_bribes) > 0:
|
||||||
|
self.form_filters.id_bribe.choices += [(str(bribe.id_bribe), bribe.name) for bribe in self.filter_bribes]
|
||||||
|
"""
|
||||||
|
|
||||||
|
parameters_filter_assessment_command_modality_link = Parameters_Assessment_Command_Modality_Link.from_form_filters_assessment(self.form_filters)
|
||||||
|
assessment_command_modality_links, errors = datastore_dog.get_many_assessment_command_modality_link(parameters_filter_assessment_command_modality_link)
|
||||||
|
|
||||||
|
# Assessment Responses and filters
|
||||||
|
parameters_filter_response_quality_metric = Parameters_Response_Quality_Metric.get_default()
|
||||||
|
self.filter_response_quality_metrics, errors = datastore_dog.get_many_response_quality_metric(parameters_filter_response_quality_metric)
|
||||||
|
"""
|
||||||
|
if len(self.filter_response_quality_metrics) > 0:
|
||||||
|
self.form_filters.id_response_quality_metric.choices += [(str(response_quality_metric.id_response_quality_metric), response_quality_metric.name) for response_quality_metric in self.filter_response_quality_metrics]
|
||||||
|
"""
|
||||||
|
|
||||||
|
parameters_filter_obedience_level = Parameters_Obedience_Level.get_default()
|
||||||
|
self.filter_obedience_levels, errors = datastore_dog.get_many_obedience_level(parameters_filter_obedience_level)
|
||||||
|
"""
|
||||||
|
if len(self.filter_obedience_levels) > 0:
|
||||||
|
self.form_filters.id_obedience_level.choices += [(str(obedience_level.id_obedience_level), obedience_level.name) for obedience_level in self.filter_obedience_levels]
|
||||||
|
"""
|
||||||
|
|
||||||
|
parameters_filter_assessment_response = Parameters_Assessment_Response.from_form_filters_assessment(self.form_filters)
|
||||||
|
assessment_responses, errors = datastore_dog.get_many_assessment_response(parameters_filter_assessment_response)
|
||||||
|
|
||||||
|
for index_link in range(len(assessment_command_modality_links)):
|
||||||
|
link = assessment_command_modality_links[index_link]
|
||||||
|
link.assessment_responses = [response for response in assessment_responses if response.id_assessment_command_modality_link == link.id_link]
|
||||||
|
assessment_command_modality_links[index_link] = link
|
||||||
|
|
||||||
|
for index_assessment in range(len(self.assessments)):
|
||||||
|
assessment = self.assessments[index_assessment]
|
||||||
|
|
||||||
|
assessment.distractions = [distraction for distraction in distractions if distraction.id_assessment == assessment.id_assessment]
|
||||||
|
assessment.assessment_command_modality_links = [link for link in assessment_command_modality_links if link.id_assessment == assessment.id_assessment]
|
||||||
|
|
||||||
|
self.assessments[index_assessment] = assessment
|
||||||
|
|
||||||
|
Helper_App.console_log(f'Final assessments: {self.assessments}')
|
||||||
|
test_assessments = Model_View_Dog_Assessment.convert_list_objects_to_dict_json_by_attribute_key_default(self.assessments)
|
||||||
|
Helper_App.console_log(f'JSON assessments: {test_assessments}')
|
||||||
|
|
||||||
@@ -37,23 +37,10 @@ class Model_View_Dog_Base(Model_View_Base):
|
|||||||
# HASH_GET_STORE_CUSTOMER_SALES_ORDER: ClassVar[str] = '/store/customer_sales_order_get'
|
# HASH_GET_STORE_CUSTOMER_SALES_ORDER: ClassVar[str] = '/store/customer_sales_order_get'
|
||||||
# HASH_GET_STORE_MANUFACTURING_PURCHASE_ORDER: ClassVar[str] = '/store/manufacturing_purchase_order_get'
|
# HASH_GET_STORE_MANUFACTURING_PURCHASE_ORDER: ClassVar[str] = '/store/manufacturing_purchase_order_get'
|
||||||
|
|
||||||
|
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
if self.hash_page_current == Model_View_Base.HASH_PAGE_DOG_HOME:
|
|
||||||
return 'Dog Home'
|
|
||||||
raise NotImplementedError('title must be implemented in child class')
|
|
||||||
|
|
||||||
def __init__(self, hash_page_current, **kwargs):
|
def __init__(self, hash_page_current, **kwargs):
|
||||||
_m = 'Model_View_Dog_Base.__init__'
|
_m = 'Model_View_Dog_Base.__init__'
|
||||||
Helper_App.console_log(f'{_m}\nstarting')
|
Helper_App.console_log(f'{_m}\nstarting')
|
||||||
super().__init__(hash_page_current=hash_page_current, **kwargs)
|
super().__init__(hash_page_current=hash_page_current, **kwargs)
|
||||||
self.is_page_dog = True
|
self.is_page_dog = True
|
||||||
|
if self.hash_page_current == Model_View_Base.HASH_PAGE_DOG_HOME:
|
||||||
"""
|
self._title = 'Dog Home'
|
||||||
def get_many_dog(self, dog_filters):
|
|
||||||
_m = 'Model_View_Dog_Base.get_many_dog'
|
|
||||||
av.val_instance(dog_filters, 'dog_filters', _m, Parameters_Dog)
|
|
||||||
return DataStore_Dog().get_many_dog(dog_filters)
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,15 +27,12 @@ class Model_View_Dog_Button_Icon(Model_View_Dog_Base):
|
|||||||
button_icons: list = None
|
button_icons: list = None
|
||||||
form_filters: Filters_Button_Icon = None
|
form_filters: Filters_Button_Icon = None
|
||||||
form_filters_old: Filters_Button_Icon
|
form_filters_old: Filters_Button_Icon
|
||||||
|
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Button Icon'
|
|
||||||
|
|
||||||
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_BUTTON_ICONS):
|
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_BUTTON_ICONS):
|
||||||
_m = 'Model_View_Dog_Button_Icon.__init__'
|
_m = 'Model_View_Dog_Button_Icon.__init__'
|
||||||
Helper_App.console_log(f'{_m}\nstarting...')
|
Helper_App.console_log(f'{_m}\nstarting...')
|
||||||
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
||||||
|
self._title = 'Button Icon'
|
||||||
self.form_filters = form_filters_old
|
self.form_filters = form_filters_old
|
||||||
datastore = DataStore_Dog()
|
datastore = DataStore_Dog()
|
||||||
|
|
||||||
@@ -43,11 +40,3 @@ class Model_View_Dog_Button_Icon(Model_View_Dog_Base):
|
|||||||
parameters_filter_button_icon = Parameters_Button_Icon.from_form_filters_button_icon(self.form_filters)
|
parameters_filter_button_icon = Parameters_Button_Icon.from_form_filters_button_icon(self.form_filters)
|
||||||
Helper_App.console_log(f'Query args: {parameters_filter_button_icon}')
|
Helper_App.console_log(f'Query args: {parameters_filter_button_icon}')
|
||||||
self.button_icons, errors = datastore.get_many_button_icon(parameters_filter_button_icon)
|
self.button_icons, errors = datastore.get_many_button_icon(parameters_filter_button_icon)
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
@classmethod
|
|
||||||
def save_categories(cls, comment, list_categories):
|
|
||||||
_m = f'{cls.__name__}.save_categories'
|
|
||||||
return DataStore_Store_Product_Category().save_categories(comment, list_categories)
|
|
||||||
"""
|
|
||||||
@@ -31,14 +31,11 @@ class Model_View_Dog_Command(Model_View_Dog_Base):
|
|||||||
form_filters: Filters_Command = None
|
form_filters: Filters_Command = None
|
||||||
form_filters_old: Filters_Command
|
form_filters_old: Filters_Command
|
||||||
|
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Command'
|
|
||||||
|
|
||||||
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMANDS):
|
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMANDS):
|
||||||
_m = 'Model_View_Dog_Command.__init__'
|
_m = 'Model_View_Dog_Command.__init__'
|
||||||
Helper_App.console_log(f'{_m}\nstarting...')
|
Helper_App.console_log(f'{_m}\nstarting...')
|
||||||
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
||||||
|
self._title = 'Command'
|
||||||
self.form_filters = form_filters_old
|
self.form_filters = form_filters_old
|
||||||
datastore = DataStore_Dog()
|
datastore = DataStore_Dog()
|
||||||
|
|
||||||
@@ -50,11 +47,3 @@ class Model_View_Dog_Command(Model_View_Dog_Base):
|
|||||||
parameters_filter_command = Parameters_Command.from_form_filters_command(self.form_filters)
|
parameters_filter_command = Parameters_Command.from_form_filters_command(self.form_filters)
|
||||||
Helper_App.console_log(f'Query args: {parameters_filter_command}')
|
Helper_App.console_log(f'Query args: {parameters_filter_command}')
|
||||||
command_categories, self.commands, errors = datastore.get_many_command(parameters_filter_command)
|
command_categories, self.commands, errors = datastore.get_many_command(parameters_filter_command)
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
@classmethod
|
|
||||||
def save_categories(cls, comment, list_categories):
|
|
||||||
_m = f'{cls.__name__}.save_categories'
|
|
||||||
return DataStore_Store_Product_Category().save_categories(comment, list_categories)
|
|
||||||
"""
|
|
||||||
@@ -41,15 +41,12 @@ class Model_View_Dog_Command_Button_Link(Model_View_Dog_Base):
|
|||||||
command_button_links: list = None
|
command_button_links: list = None
|
||||||
form_filters: Filters_Command_Button_Link = None
|
form_filters: Filters_Command_Button_Link = None
|
||||||
form_filters_old: Filters_Command_Button_Link
|
form_filters_old: Filters_Command_Button_Link
|
||||||
|
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Command Button Link'
|
|
||||||
|
|
||||||
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMAND_BUTTON_LINKS):
|
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMAND_BUTTON_LINKS):
|
||||||
_m = 'Model_View_Dog_Command_Button_Link.__init__'
|
_m = 'Model_View_Dog_Command_Button_Link.__init__'
|
||||||
Helper_App.console_log(f'{_m}\nstarting...')
|
Helper_App.console_log(f'{_m}\nstarting...')
|
||||||
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
||||||
|
self._title = 'Command Button Link'
|
||||||
self.form_filters = form_filters_old
|
self.form_filters = form_filters_old
|
||||||
datastore = DataStore_Dog()
|
datastore = DataStore_Dog()
|
||||||
|
|
||||||
|
|||||||
@@ -28,15 +28,12 @@ class Model_View_Dog_Command_Category(Model_View_Dog_Base):
|
|||||||
command_categories: list = None
|
command_categories: list = None
|
||||||
form_filters: Filters_Command_Category = None
|
form_filters: Filters_Command_Category = None
|
||||||
form_filters_old: Filters_Command_Category
|
form_filters_old: Filters_Command_Category
|
||||||
|
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Command Category'
|
|
||||||
|
|
||||||
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMAND_CATEGORIES):
|
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_COMMAND_CATEGORIES):
|
||||||
_m = 'Model_View_Dog_Command_Category.__init__'
|
_m = 'Model_View_Dog_Command_Category.__init__'
|
||||||
Helper_App.console_log(f'{_m}\nstarting...')
|
Helper_App.console_log(f'{_m}\nstarting...')
|
||||||
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
||||||
|
self._title = 'Command Category'
|
||||||
self.form_filters = form_filters_old
|
self.form_filters = form_filters_old
|
||||||
datastore = DataStore_Dog()
|
datastore = DataStore_Dog()
|
||||||
|
|
||||||
@@ -45,10 +42,3 @@ class Model_View_Dog_Command_Category(Model_View_Dog_Base):
|
|||||||
Helper_App.console_log(f'Query args: {parameters_filter_command}')
|
Helper_App.console_log(f'Query args: {parameters_filter_command}')
|
||||||
self.command_categories, commands, errors = datastore.get_many_command(parameters_filter_command)
|
self.command_categories, commands, errors = datastore.get_many_command(parameters_filter_command)
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
@classmethod
|
|
||||||
def save_categories(cls, comment, list_categories):
|
|
||||||
_m = f'{cls.__name__}.save_categories'
|
|
||||||
return DataStore_Store_Product_Category().save_categories(comment, list_categories)
|
|
||||||
"""
|
|
||||||
@@ -35,15 +35,12 @@ class Model_View_Dog_Dog_Command_Link(Model_View_Dog_Base):
|
|||||||
dog_command_links: list = None
|
dog_command_links: list = None
|
||||||
form_filters: Filters_Dog_Command_Link = None
|
form_filters: Filters_Dog_Command_Link = None
|
||||||
form_filters_old: Filters_Dog_Command_Link
|
form_filters_old: Filters_Dog_Command_Link
|
||||||
|
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Dog Command Link'
|
|
||||||
|
|
||||||
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_DOG_COMMAND_LINKS):
|
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_DOG_COMMAND_LINKS):
|
||||||
_m = 'Model_View_Dog_Dog_Command_Link.__init__'
|
_m = 'Model_View_Dog_Dog_Command_Link.__init__'
|
||||||
Helper_App.console_log(f'{_m}\nstarting...')
|
Helper_App.console_log(f'{_m}\nstarting...')
|
||||||
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
||||||
|
self._title = 'Dog Command Link'
|
||||||
self.form_filters = form_filters_old
|
self.form_filters = form_filters_old
|
||||||
datastore = DataStore_Dog()
|
datastore = DataStore_Dog()
|
||||||
parameters_filter_dog = Parameters_Dog.get_default()
|
parameters_filter_dog = Parameters_Dog.get_default()
|
||||||
|
|||||||
@@ -27,15 +27,12 @@ class Model_View_Dog_Location(Model_View_Dog_Base):
|
|||||||
locations: list = None
|
locations: list = None
|
||||||
form_filters: Filters_Location = None
|
form_filters: Filters_Location = None
|
||||||
form_filters_old: Filters_Location
|
form_filters_old: Filters_Location
|
||||||
|
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Location'
|
|
||||||
|
|
||||||
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_LOCATIONS):
|
def __init__(self, form_filters_old, hash_page_current=Model_View_Dog_Base.HASH_PAGE_DOG_LOCATIONS):
|
||||||
_m = 'Model_View_Dog_Location.__init__'
|
_m = 'Model_View_Dog_Location.__init__'
|
||||||
Helper_App.console_log(f'{_m}\nstarting...')
|
Helper_App.console_log(f'{_m}\nstarting...')
|
||||||
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
super().__init__(hash_page_current=hash_page_current, form_filters_old=form_filters_old)
|
||||||
|
self._title = 'Location'
|
||||||
self.form_filters = form_filters_old
|
self.form_filters = form_filters_old
|
||||||
datastore = DataStore_Dog()
|
datastore = DataStore_Dog()
|
||||||
|
|
||||||
@@ -44,10 +41,3 @@ class Model_View_Dog_Location(Model_View_Dog_Base):
|
|||||||
Helper_App.console_log(f'Query args: {parameters_filter_location}')
|
Helper_App.console_log(f'Query args: {parameters_filter_location}')
|
||||||
self.locations, errors = datastore.get_many_location(parameters_filter_location)
|
self.locations, errors = datastore.get_many_location(parameters_filter_location)
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
@classmethod
|
|
||||||
def save_categories(cls, comment, list_categories):
|
|
||||||
_m = f'{cls.__name__}.save_categories'
|
|
||||||
return DataStore_Store_Product_Category().save_categories(comment, list_categories)
|
|
||||||
"""
|
|
||||||
@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
|
|||||||
# external
|
# external
|
||||||
|
|
||||||
class Model_View_Home(Model_View_Base):
|
class Model_View_Home(Model_View_Base):
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Home'
|
|
||||||
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_HOME):
|
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_HOME):
|
||||||
super().__init__(hash_page_current=hash_page_current)
|
super().__init__(hash_page_current=hash_page_current)
|
||||||
|
self._title = 'Home'
|
||||||
|
|
||||||
@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
|
|||||||
# external
|
# external
|
||||||
|
|
||||||
class Model_View_License(Model_View_Base):
|
class Model_View_License(Model_View_Base):
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'License'
|
|
||||||
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_LICENSE):
|
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_LICENSE):
|
||||||
super().__init__(hash_page_current=hash_page_current)
|
super().__init__(hash_page_current=hash_page_current)
|
||||||
|
self._title = 'License'
|
||||||
|
|
||||||
@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
|
|||||||
# external
|
# external
|
||||||
|
|
||||||
class Model_View_Privacy_Policy(Model_View_Base):
|
class Model_View_Privacy_Policy(Model_View_Base):
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Privacy Policy'
|
|
||||||
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_PRIVACY_POLICY):
|
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_PRIVACY_POLICY):
|
||||||
super().__init__(hash_page_current=hash_page_current)
|
super().__init__(hash_page_current=hash_page_current)
|
||||||
|
self._title = 'Privacy Policy'
|
||||||
|
|
||||||
@@ -16,9 +16,7 @@ from models.model_view_base import Model_View_Base
|
|||||||
# external
|
# external
|
||||||
|
|
||||||
class Model_View_Retention_Schedule(Model_View_Base):
|
class Model_View_Retention_Schedule(Model_View_Base):
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'Retention Schedule'
|
|
||||||
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_DATA_RETENTION_SCHEDULE):
|
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_DATA_RETENTION_SCHEDULE):
|
||||||
super().__init__(hash_page_current=hash_page_current)
|
super().__init__(hash_page_current=hash_page_current)
|
||||||
|
self._title = 'Retention Schedule'
|
||||||
|
|
||||||
@@ -26,12 +26,10 @@ class Model_View_User(Model_View_Base):
|
|||||||
currencies: list = None
|
currencies: list = None
|
||||||
regions: list = None
|
regions: list = None
|
||||||
users: list = None
|
users: list = None
|
||||||
@property
|
|
||||||
def title(self):
|
|
||||||
return 'User'
|
|
||||||
|
|
||||||
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_USER_ACCOUNT):
|
def __init__(self, hash_page_current=Model_View_Base.HASH_PAGE_USER_ACCOUNT):
|
||||||
super().__init__(hash_page_current=hash_page_current, form_filters_old = None)
|
super().__init__(hash_page_current=hash_page_current, form_filters_old = None)
|
||||||
|
self._title = 'User'
|
||||||
datastore_user = DataStore_User()
|
datastore_user = DataStore_User()
|
||||||
self.currencies = datastore_user.get_many_currency()
|
self.currencies = datastore_user.get_many_currency()
|
||||||
self.regions = datastore_user.get_many_region()
|
self.regions = datastore_user.get_many_region()
|
||||||
|
|||||||
@@ -1,15 +1,389 @@
|
|||||||
https://www.molly.teddy.org.uk/login_callback, http://www.molly.teddy.org.uk/login_callback
|
|
||||||
, https://molly.teddy.org.uk/login_callback, http://molly.teddy.org.uk/login_callback
|
USE demo;
|
||||||
, https://www.fetch-metrics.co.uk/login_callback, http://www.fetch-metrics.co.uk/login_callback
|
|
||||||
, https://fetch-metrics.co.uk/login_callback, http://fetch-metrics.co.uk/login_callback
|
|
||||||
, https://www.fetch-metrics.com/login_callback, http://www.fetch-metrics.com/login_callback
|
|
||||||
, https://fetch-metrics.com/login_callback, http://fetch-metrics.com/login_callback
|
|
||||||
, http://127.0.0.1:5000/login_callback
|
|
||||||
|
|
||||||
http://www.molly.teddy.org.uk/, https://www.molly.teddy.org.uk/,
|
DROP PROCEDURE IF EXISTS demo.p_dog_get_many_response_quality_metric;
|
||||||
http://molly.teddy.org.uk/, https://molly.teddy.org.uk/,
|
|
||||||
http://www.molly.teddy.org.uk/logout, https://www.molly.teddy.org.uk/logout,
|
DELIMITER //
|
||||||
http://molly.teddy.org.uk/logout, https://molly.teddy.org.uk/logout,
|
CREATE PROCEDURE demo.p_dog_get_many_response_quality_metric (
|
||||||
http://www.molly.teddy.org.uk/logout_callback, https://www.molly.teddy.org.uk/logout_callback,
|
IN a_id_user INT
|
||||||
http://molly.teddy.org.uk/logout_callback, https://molly.teddy.org.uk/logout_callback,
|
, IN a_get_all_response_quality_metric BIT
|
||||||
http://127.0.0.1:5000/logout, http://127.0.0.1:5000/logout_callback
|
, IN a_get_inactive_response_quality_metric BIT
|
||||||
|
, IN a_ids_response_quality_metric TEXT
|
||||||
|
, IN a_names_response_quality_metric TEXT
|
||||||
|
, IN a_require_all_id_search_filters_met BIT
|
||||||
|
, IN a_require_any_id_search_filters_met BIT
|
||||||
|
, IN a_require_all_non_id_search_filters_met BIT
|
||||||
|
, IN a_require_any_non_id_search_filters_met BIT
|
||||||
|
, IN a_debug BIT
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_can_view BIT;
|
||||||
|
DECLARE v_code_type_error_bad_data VARCHAR(100);
|
||||||
|
DECLARE v_code_type_error_no_permission VARCHAR(100);
|
||||||
|
DECLARE v_guid BINARY(36);
|
||||||
|
DECLARE v_id_access_level_view INT;
|
||||||
|
DECLARE v_id_minimum INT;
|
||||||
|
DECLARE v_id_permission_dog_view INT;
|
||||||
|
DECLARE v_id_type_error_bad_data INT;
|
||||||
|
DECLARE v_id_type_error_no_permission INT;
|
||||||
|
DECLARE v_time_start TIMESTAMP(6);
|
||||||
|
|
||||||
|
DECLARE exit handler for SQLEXCEPTION
|
||||||
|
BEGIN
|
||||||
|
GET DIAGNOSTICS CONDITION 1
|
||||||
|
@sqlstate = RETURNED_SQLSTATE
|
||||||
|
, @errno = MYSQL_ERRNO
|
||||||
|
, @text = MESSAGE_TEXT
|
||||||
|
;
|
||||||
|
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
|
||||||
|
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||||
|
, id_type INT NULL
|
||||||
|
, code VARCHAR(250) NOT NULL
|
||||||
|
, msg TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO tmp_Msg_Error (
|
||||||
|
id_type
|
||||||
|
, code
|
||||||
|
, msg
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
MET.id_type
|
||||||
|
, @errno
|
||||||
|
, @text
|
||||||
|
FROM demo.CORE_Msg_Error_Type MET
|
||||||
|
WHERE MET.code = 'MYSQL_ERROR'
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
t_ERROR.id_error
|
||||||
|
, t_ERROR.id_type
|
||||||
|
, t_ERROR.code
|
||||||
|
, ERROR_TYPE.name
|
||||||
|
, ERROR_TYPE.description
|
||||||
|
, ERROR_TYPE.is_breaking_error
|
||||||
|
, ERROR_TYPE.background_colour
|
||||||
|
, ERROR_TYPE.text_colour
|
||||||
|
, t_ERROR.msg
|
||||||
|
FROM tmp_Msg_Error t_ERROR
|
||||||
|
INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
|
;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS tmp_Msg_Error;
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET v_time_start := CURRENT_TIMESTAMP(6);
|
||||||
|
SET v_guid := UUID();
|
||||||
|
SET v_code_type_error_bad_data := 'BAD_DATA';
|
||||||
|
SET v_code_type_error_no_permission := 'NO_PERMISSION';
|
||||||
|
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM demo.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
|
||||||
|
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM demo.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
|
||||||
|
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM demo.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
|
||||||
|
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM demo.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
|
||||||
|
|
||||||
|
SET a_id_user := IFNULL(a_id_user, 0);
|
||||||
|
/*
|
||||||
|
SET a_get_all_response_quality_metric := IFNULL(a_get_all_response_quality_metric, 0);
|
||||||
|
SET a_get_inactive_response_quality_metric := IFNULL(a_get_inactive_response_quality_metric, 0);
|
||||||
|
SET a_ids_response_quality_metric := TRIM(IFNULL(a_ids_response_quality_metric, ''));
|
||||||
|
SET a_names_response_quality_metric := TRIM(IFNULL(a_names_response_quality_metric, ''));
|
||||||
|
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
|
||||||
|
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
|
||||||
|
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
|
||||||
|
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
|
||||||
|
*/
|
||||||
|
SET a_debug := IFNULL(a_debug, 0);
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT
|
||||||
|
a_id_user
|
||||||
|
, a_get_all_response_quality_metric
|
||||||
|
, a_get_inactive_response_quality_metric
|
||||||
|
, a_ids_response_quality_metric
|
||||||
|
, a_names_response_quality_metric
|
||||||
|
, a_require_all_id_search_filters_met
|
||||||
|
, a_require_any_id_search_filters_met
|
||||||
|
, a_require_all_non_id_search_filters_met
|
||||||
|
, a_require_any_non_id_search_filters_met
|
||||||
|
, a_debug
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
v_id_type_error_bad_data
|
||||||
|
, v_id_type_error_no_permission
|
||||||
|
, v_guid
|
||||||
|
, v_id_permission_dog_view
|
||||||
|
, v_time_start
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp_Response_Quality_Metric;
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE tmp_Response_Quality_Metric (
|
||||||
|
id_metric INT NOT NULL
|
||||||
|
, id_unit_measurement INT
|
||||||
|
, code VARCHAR(250)
|
||||||
|
, name VARCHAR(250)
|
||||||
|
, value_min DOUBLE
|
||||||
|
, value_max DOUBLE
|
||||||
|
, active BIT
|
||||||
|
, does_meet_id_filters BIT NOT NULL
|
||||||
|
, does_meet_non_id_filters BIT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
|
||||||
|
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||||
|
, id_type INT NULL
|
||||||
|
, code VARCHAR(250) NOT NULL
|
||||||
|
, msg TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Permissions
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT
|
||||||
|
v_guid
|
||||||
|
, 0 -- get_all_user
|
||||||
|
, 0 -- get_inactive_user
|
||||||
|
, a_id_user -- ids_user
|
||||||
|
, '' -- a_auth0_ids_user
|
||||||
|
, '' -- a_names_user
|
||||||
|
, '' -- a_emails_user
|
||||||
|
, 1 -- a_require_all_id_search_filters_met
|
||||||
|
, 1 -- a_require_any_id_search_filters_met
|
||||||
|
, 0 -- a_require_all_non_id_search_filters_met
|
||||||
|
, 0 -- a_require_any_non_id_search_filters_met
|
||||||
|
, v_id_permission_dog_view -- ids_permission
|
||||||
|
, v_id_access_level_view -- ids_access_level
|
||||||
|
, 0 -- a_show_errors
|
||||||
|
, 0 -- a_debug
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL demo.p_dog_calc_user(
|
||||||
|
v_guid
|
||||||
|
, 0 -- get_all_user
|
||||||
|
, 0 -- get_inactive_user
|
||||||
|
, a_id_user -- ids_user
|
||||||
|
, '' -- a_auth0_ids_user
|
||||||
|
, '' -- a_names_user
|
||||||
|
, '' -- a_emails_user
|
||||||
|
, 1 -- a_require_all_id_search_filters_met
|
||||||
|
, 1 -- a_require_any_id_search_filters_met
|
||||||
|
, 0 -- a_require_all_non_id_search_filters_met
|
||||||
|
, 0 -- a_require_any_non_id_search_filters_met
|
||||||
|
, v_id_permission_dog_view -- ids_permission
|
||||||
|
, v_id_access_level_view -- ids_access_level
|
||||||
|
, 0 -- a_show_errors
|
||||||
|
, 0 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
IFNULL(CALC_USER_T.has_access, 0)
|
||||||
|
INTO
|
||||||
|
v_can_view
|
||||||
|
FROM demo.DOG_Calc_User_Temp CALC_USER_T
|
||||||
|
WHERE CALC_USER_T.GUID = v_guid
|
||||||
|
LIMIT 1
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT v_can_view;
|
||||||
|
SELECT COUNT(*) AS Count_Errors FROM tmp_Msg_Error t_ERROR;
|
||||||
|
SELECT * FROM tmp_Msg_Error t_ERROR;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF (v_can_view = 0) THEN
|
||||||
|
DELETE t_ME
|
||||||
|
FROM tmp_Msg_Error t_ME
|
||||||
|
WHERE t_ME.id_type <> v_id_type_error_no_permission
|
||||||
|
;
|
||||||
|
INSERT INTO tmp_Msg_Error (
|
||||||
|
id_type
|
||||||
|
, code
|
||||||
|
, msg
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
v_id_type_error_no_permission
|
||||||
|
, v_code_type_error_no_permission
|
||||||
|
, 'You do not have permission to view RESPONSE_QUALITY_METRIC.'
|
||||||
|
)
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL demo.p_dog_clear_calc_user(
|
||||||
|
v_guid
|
||||||
|
, 0 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- Call Response_Quality_Metric Calc
|
||||||
|
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT
|
||||||
|
v_guid -- a_guid
|
||||||
|
, a_id_user -- a_id_user
|
||||||
|
, a_get_all_response_quality_metric -- a_get_all_response_quality_metric
|
||||||
|
, a_get_inactive_response_quality_metric -- a_get_inactive_response_quality_metric
|
||||||
|
, a_ids_response_quality_metric -- a_ids_response_quality_metric
|
||||||
|
, a_names_response_quality_metric -- a_names_response_quality_metric
|
||||||
|
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
||||||
|
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
||||||
|
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||||
|
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
|
||||||
|
, 0 -- a_show_errors
|
||||||
|
, 0 -- a_debug
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL demo.p_dog_calc_response_quality_metric (
|
||||||
|
v_guid -- a_guid
|
||||||
|
, a_id_user -- a_id_user
|
||||||
|
, a_get_all_response_quality_metric -- a_get_all_response_quality_metric
|
||||||
|
, a_get_inactive_response_quality_metric -- a_get_inactive_response_quality_metric
|
||||||
|
, a_ids_response_quality_metric -- a_ids_response_quality_metric
|
||||||
|
, a_names_response_quality_metric -- a_names_response_quality_metric
|
||||||
|
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
||||||
|
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
||||||
|
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||||
|
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
|
||||||
|
, 0 -- a_show_errors
|
||||||
|
, 0 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT COUNT(*) FROM demo.DOG_Response_Quality_Metric_Temp;
|
||||||
|
SELECT * FROM demo.DOG_Response_Quality_Metric_Temp;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
INSERT INTO tmp_Response_Quality_Metric (
|
||||||
|
id_metric
|
||||||
|
, id_unit_measurement
|
||||||
|
, code
|
||||||
|
, name
|
||||||
|
, value_min
|
||||||
|
, value_max
|
||||||
|
, active
|
||||||
|
, does_meet_id_filters
|
||||||
|
, does_meet_non_id_filters
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
RESPONSE_QUALITY_METRIC_T.id_metric
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.id_unit_measurement
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.code
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.name
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.value_min
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.value_max
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.active
|
||||||
|
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.does_meet_id_filters
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.does_meet_non_id_filters
|
||||||
|
FROM demo.DOG_Response_Quality_Metric_Temp RESPONSE_QUALITY_METRIC_T
|
||||||
|
WHERE RESPONSE_QUALITY_METRIC_T.GUID = v_guid
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT COUNT(*) FROM tmp_Response_Quality_Metric;
|
||||||
|
SELECT * FROM tmp_Response_Quality_Metric;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- Filter outputs
|
||||||
|
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT * FROM tmp_Response_Quality_Metric;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
DELETE FROM tmp_Response_Quality_Metric;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
|
-- Outputs
|
||||||
|
-- RESPONSE_QUALITY_METRIC
|
||||||
|
SELECT
|
||||||
|
t_RESPONSE_QUALITY_METRIC.id_metric
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.id_unit_measurement
|
||||||
|
, UNIT_MEASUREMENT.name_singular AS name_singular_unit_measurement
|
||||||
|
, UNIT_MEASUREMENT.name_plural AS name_plural_unit_measurement
|
||||||
|
, UNIT_MEASUREMENT.symbol AS symbol_unit_measurement
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.code
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.name
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.value_min
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.value_max
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.active
|
||||||
|
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.does_meet_id_filters
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.does_meet_non_id_filters
|
||||||
|
FROM tmp_Response_Quality_Metric t_RESPONSE_QUALITY_METRIC
|
||||||
|
LEFT JOIN demo.DOG_Response_Quality_Metric RESPONSE_QUALITY_METRIC ON t_RESPONSE_QUALITY_METRIC.id_metric = RESPONSE_QUALITY_METRIC.id_metric
|
||||||
|
LEFT JOIN demo.DOG_Unit_Measurement UNIT_MEASUREMENT ON t_RESPONSE_QUALITY_METRIC.id_unit_measurement = UNIT_MEASUREMENT.id_unit_measurement
|
||||||
|
ORDER BY t_RESPONSE_QUALITY_METRIC.name
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Errors
|
||||||
|
SELECT
|
||||||
|
t_ERROR.id_error
|
||||||
|
, t_ERROR.id_type
|
||||||
|
, t_ERROR.code
|
||||||
|
, ERROR_TYPE.name
|
||||||
|
, ERROR_TYPE.description
|
||||||
|
, ERROR_TYPE.is_breaking_error
|
||||||
|
, ERROR_TYPE.background_colour
|
||||||
|
, ERROR_TYPE.text_colour
|
||||||
|
, t_ERROR.msg
|
||||||
|
FROM tmp_Msg_Error t_ERROR
|
||||||
|
INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 AND v_can_view = 1 THEN
|
||||||
|
SELECT * FROM tmp_Response_Quality_Metric;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL demo.p_dog_clear_calc_response_quality_metric(
|
||||||
|
v_guid -- a_guid
|
||||||
|
, 0 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp_Response_Quality_Metric;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
CALL demo.p_core_debug_timing_reporting ( v_time_start );
|
||||||
|
END IF;
|
||||||
|
END //
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
CALL demo.p_dog_get_many_response_quality_metric (
|
||||||
|
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
||||||
|
, 1 -- a_get_all_response_quality_metric
|
||||||
|
, 0 -- a_get_inactive_response_quality_metric
|
||||||
|
, '' -- a_ids_response_quality_metric
|
||||||
|
, '' -- a_names_response_quality_metric
|
||||||
|
, 1 -- a_require_all_id_search_filters_met
|
||||||
|
, 1 -- a_require_any_id_search_filters_met
|
||||||
|
, 0 -- a_require_all_non_id_search_filters_met
|
||||||
|
, 1 -- a_require_any_non_id_search_filters_met
|
||||||
|
, 1 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CALL demo.p_dog_get_many_response_quality_metric (
|
||||||
|
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
||||||
|
, 1 -- a_get_all_response_quality_metric
|
||||||
|
, 0 -- a_get_inactive_response_quality_metric
|
||||||
|
, '' -- a_ids_response_quality_metric
|
||||||
|
, 'pat,point' -- a_names_response_quality_metric
|
||||||
|
, 1 -- a_require_all_id_search_filters_met
|
||||||
|
, 1 -- a_require_any_id_search_filters_met
|
||||||
|
, 0 -- a_require_all_non_id_search_filters_met
|
||||||
|
, 1 -- a_require_any_non_id_search_filters_met
|
||||||
|
, 1 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
*/
|
||||||
@@ -12,8 +12,8 @@ WHERE
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DOG_Unit_Measurement (
|
CREATE TABLE IF NOT EXISTS DOG_Unit_Measurement (
|
||||||
id_unit_measurement INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
id_unit_measurement INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||||
, name_singular VARCHAR(255) NOT NULL
|
, name_singular VARCHAR(250) NOT NULL
|
||||||
, name_plural VARCHAR(256) NOT NULL
|
, name_plural VARCHAR(250) NOT NULL
|
||||||
, symbol VARCHAR(50) NOT NULL
|
, symbol VARCHAR(50) NOT NULL
|
||||||
, symbol_is_suffix_not_prefix BIT NOT NULL DEFAULT 1
|
, symbol_is_suffix_not_prefix BIT NOT NULL DEFAULT 1
|
||||||
, is_base_unit BIT NOT NULL DEFAULT 0
|
, is_base_unit BIT NOT NULL DEFAULT 0
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
|
||||||
USE parts;
|
USE parts;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS parts.DOG_Distraction_Temp;
|
||||||
|
|
||||||
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
|
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
|
||||||
FROM INFORMATION_SCHEMA.TABLES
|
FROM INFORMATION_SCHEMA.TABLES
|
||||||
WHERE
|
WHERE
|
||||||
@@ -14,6 +16,7 @@ CREATE TABLE IF NOT EXISTS parts.DOG_Distraction_Temp (
|
|||||||
, id_assessment INT
|
, id_assessment INT
|
||||||
, id_distraction_type INT
|
, id_distraction_type INT
|
||||||
, id_intensity_level_emotional INT
|
, id_intensity_level_emotional INT
|
||||||
|
, id_intensity_level_scent INT
|
||||||
, id_intensity_level_sight INT
|
, id_intensity_level_sight INT
|
||||||
, id_intensity_level_sound INT
|
, id_intensity_level_sound INT
|
||||||
, id_intensity_level_touch INT
|
, id_intensity_level_touch INT
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
|
||||||
USE parts;
|
USE parts;
|
||||||
|
|
||||||
|
-- DROP TABLE IF EXISTS parts.DOG_Assessment_Response_Temp;
|
||||||
|
|
||||||
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
|
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
|
||||||
FROM INFORMATION_SCHEMA.TABLES
|
FROM INFORMATION_SCHEMA.TABLES
|
||||||
WHERE
|
WHERE
|
||||||
@@ -10,6 +12,7 @@ WHERE
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS parts.DOG_Assessment_Response_Temp (
|
CREATE TABLE IF NOT EXISTS parts.DOG_Assessment_Response_Temp (
|
||||||
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||||
|
, id_response INT
|
||||||
, id_assessment_command_modality_link INT
|
, id_assessment_command_modality_link INT
|
||||||
, id_response_quality_metric INT
|
, id_response_quality_metric INT
|
||||||
, id_obedience_level INT
|
, id_obedience_level INT
|
||||||
|
|||||||
@@ -68,8 +68,8 @@ BEGIN
|
|||||||
, ERROR_TYPE.name
|
, ERROR_TYPE.name
|
||||||
, ERROR_TYPE.description
|
, ERROR_TYPE.description
|
||||||
, ERROR_TYPE.is_breaking_error
|
, ERROR_TYPE.is_breaking_error
|
||||||
, ERROR_TYPE.background_lighting_level
|
, ERROR_TYPE.background_colour
|
||||||
, ERROR_TYPE.text_lighting_level
|
, ERROR_TYPE.text_colour
|
||||||
, t_ERROR.msg
|
, t_ERROR.msg
|
||||||
FROM tmp_Msg_Error_Calc_Lighting_Level t_ERROR
|
FROM tmp_Msg_Error_Calc_Lighting_Level t_ERROR
|
||||||
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
@@ -481,8 +481,8 @@ BEGIN
|
|||||||
, ERROR_TYPE.name
|
, ERROR_TYPE.name
|
||||||
, ERROR_TYPE.description
|
, ERROR_TYPE.description
|
||||||
, ERROR_TYPE.is_breaking_error
|
, ERROR_TYPE.is_breaking_error
|
||||||
, ERROR_TYPE.background_lighting_level
|
, ERROR_TYPE.background_colour
|
||||||
, ERROR_TYPE.text_lighting_level
|
, ERROR_TYPE.text_colour
|
||||||
, t_ERROR.msg
|
, t_ERROR.msg
|
||||||
FROM tmp_Msg_Error_Calc_Lighting_Level t_ERROR
|
FROM tmp_Msg_Error_Calc_Lighting_Level t_ERROR
|
||||||
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ BEGIN
|
|||||||
, ERROR_TYPE.name
|
, ERROR_TYPE.name
|
||||||
, ERROR_TYPE.description
|
, ERROR_TYPE.description
|
||||||
, ERROR_TYPE.is_breaking_error
|
, ERROR_TYPE.is_breaking_error
|
||||||
, ERROR_TYPE.background_lighting_level
|
, ERROR_TYPE.background_colour
|
||||||
, ERROR_TYPE.text_lighting_level
|
, ERROR_TYPE.text_colour
|
||||||
, t_ERROR.msg
|
, t_ERROR.msg
|
||||||
FROM tmp_Msg_Error t_ERROR
|
FROM tmp_Msg_Error t_ERROR
|
||||||
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
@@ -317,8 +317,8 @@ BEGIN
|
|||||||
, ERROR_TYPE.name
|
, ERROR_TYPE.name
|
||||||
, ERROR_TYPE.description
|
, ERROR_TYPE.description
|
||||||
, ERROR_TYPE.is_breaking_error
|
, ERROR_TYPE.is_breaking_error
|
||||||
, ERROR_TYPE.background_lighting_level
|
, ERROR_TYPE.background_colour
|
||||||
, ERROR_TYPE.text_lighting_level
|
, ERROR_TYPE.text_colour
|
||||||
, t_ERROR.msg
|
, t_ERROR.msg
|
||||||
FROM tmp_Msg_Error t_ERROR
|
FROM tmp_Msg_Error t_ERROR
|
||||||
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
|
|||||||
@@ -163,6 +163,7 @@ BEGIN
|
|||||||
, id_user_handler INT
|
, id_user_handler INT
|
||||||
, notes TEXT
|
, notes TEXT
|
||||||
, temperature_celcius DECIMAL(5, 2)
|
, temperature_celcius DECIMAL(5, 2)
|
||||||
|
-- , difficulty_level FLOAT
|
||||||
, active BIT
|
, active BIT
|
||||||
, does_meet_id_filters BIT NOT NULL
|
, does_meet_id_filters BIT NOT NULL
|
||||||
, does_meet_non_id_filters BIT NOT NULL
|
, does_meet_non_id_filters BIT NOT NULL
|
||||||
@@ -340,6 +341,7 @@ BEGIN
|
|||||||
, id_user_handler
|
, id_user_handler
|
||||||
, notes
|
, notes
|
||||||
, temperature_celcius
|
, temperature_celcius
|
||||||
|
-- , difficulty_level
|
||||||
, active
|
, active
|
||||||
, does_meet_id_filters
|
, does_meet_id_filters
|
||||||
, does_meet_non_id_filters
|
, does_meet_non_id_filters
|
||||||
@@ -352,6 +354,7 @@ BEGIN
|
|||||||
, ASSESSMENT_T.id_user_handler
|
, ASSESSMENT_T.id_user_handler
|
||||||
, ASSESSMENT_T.notes
|
, ASSESSMENT_T.notes
|
||||||
, ASSESSMENT_T.temperature_celcius
|
, ASSESSMENT_T.temperature_celcius
|
||||||
|
-- , ASSESSMENT_T.difficulty_level
|
||||||
, ASSESSMENT_T.active
|
, ASSESSMENT_T.active
|
||||||
|
|
||||||
, ASSESSMENT_T.does_meet_id_filters
|
, ASSESSMENT_T.does_meet_id_filters
|
||||||
@@ -391,6 +394,7 @@ BEGIN
|
|||||||
, USER.surname AS surname_user_handler
|
, USER.surname AS surname_user_handler
|
||||||
, t_ASSESSMENT.notes
|
, t_ASSESSMENT.notes
|
||||||
, t_ASSESSMENT.temperature_celcius
|
, t_ASSESSMENT.temperature_celcius
|
||||||
|
-- , t_ASSESSMENT.difficulty_level
|
||||||
, t_ASSESSMENT.active
|
, t_ASSESSMENT.active
|
||||||
|
|
||||||
, t_ASSESSMENT.does_meet_id_filters
|
, t_ASSESSMENT.does_meet_id_filters
|
||||||
|
|||||||
693
static/MySQL/71310_p_dog_save_dog_assessment.sql
Normal file
693
static/MySQL/71310_p_dog_save_dog_assessment.sql
Normal file
@@ -0,0 +1,693 @@
|
|||||||
|
|
||||||
|
USE parts;
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS parts.p_dog_save_dog_command_link;
|
||||||
|
|
||||||
|
DELIMITER //
|
||||||
|
CREATE PROCEDURE parts.p_dog_save_dog_command_link (
|
||||||
|
IN a_comment VARCHAR(500),
|
||||||
|
IN a_guid BINARY(36),
|
||||||
|
IN a_id_user INT,
|
||||||
|
IN a_debug BIT
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE v_can_admin BIT;
|
||||||
|
DECLARE v_can_create BIT;
|
||||||
|
DECLARE v_code_type_error_bad_data VARCHAR(100);
|
||||||
|
DECLARE v_id_access_level_edit INT;
|
||||||
|
DECLARE v_id_change_set INT;
|
||||||
|
DECLARE v_id_permission_dog_new INT;
|
||||||
|
DECLARE v_id_type_error_bad_data INT;
|
||||||
|
DECLARE v_time_start TIMESTAMP(6);
|
||||||
|
|
||||||
|
DECLARE exit handler for SQLEXCEPTION
|
||||||
|
BEGIN
|
||||||
|
GET DIAGNOSTICS CONDITION 1
|
||||||
|
@sqlstate = RETURNED_SQLSTATE
|
||||||
|
, @errno = MYSQL_ERRNO
|
||||||
|
, @text = MESSAGE_TEXT
|
||||||
|
;
|
||||||
|
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
|
||||||
|
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||||
|
, id_type INT NULL
|
||||||
|
, code VARCHAR(250)
|
||||||
|
, msg TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO tmp_Msg_Error (
|
||||||
|
id_type
|
||||||
|
, code
|
||||||
|
, msg
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
MET.id_type
|
||||||
|
, @errno
|
||||||
|
, @text
|
||||||
|
FROM parts.CORE_Msg_Error_Type MET
|
||||||
|
WHERE MET.code = 'MYSQL_ERROR'
|
||||||
|
;
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
t_ERROR.id_error
|
||||||
|
, t_ERROR.id_type
|
||||||
|
, t_ERROR.code
|
||||||
|
, ERROR_TYPE.name
|
||||||
|
, ERROR_TYPE.description
|
||||||
|
, ERROR_TYPE.is_breaking_error
|
||||||
|
, ERROR_TYPE.background_colour
|
||||||
|
, ERROR_TYPE.text_colour
|
||||||
|
, t_ERROR.msg
|
||||||
|
FROM tmp_Msg_Error t_ERROR
|
||||||
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
|
;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS tmp_Msg_Error;
|
||||||
|
END;
|
||||||
|
|
||||||
|
SET SESSION group_concat_max_len=15000;
|
||||||
|
|
||||||
|
SET v_time_start := CURRENT_TIMESTAMP(6);
|
||||||
|
SET v_code_type_error_bad_data := 'BAD_DATA';
|
||||||
|
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
|
||||||
|
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
|
||||||
|
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM parts.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
|
||||||
|
|
||||||
|
CALL parts.p_core_validate_guid ( a_guid );
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS tmp_Dog_Command_Link_Copy;
|
||||||
|
DROP TABLE IF EXISTS tmp_Dog_Command_Link;
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE tmp_Dog_Command_Link (
|
||||||
|
id_temp INT
|
||||||
|
, id_link INT
|
||||||
|
, id_dog INT
|
||||||
|
, id_command INT
|
||||||
|
, hand_signal_description TEXT
|
||||||
|
, notes TEXT
|
||||||
|
, active BIT
|
||||||
|
, is_new BIT
|
||||||
|
, name_error VARCHAR(250)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE tmp_Dog_Command_Link_Copy (
|
||||||
|
id_temp INT
|
||||||
|
, id_link INT
|
||||||
|
, id_dog INT
|
||||||
|
, id_command INT
|
||||||
|
, hand_signal_description TEXT
|
||||||
|
, notes TEXT
|
||||||
|
, active BIT
|
||||||
|
, is_new BIT
|
||||||
|
, name_error VARCHAR(250)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
|
||||||
|
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||||
|
, id_type INT NULL
|
||||||
|
, code VARCHAR(250)
|
||||||
|
, msg TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
-- Get data from Temp table
|
||||||
|
INSERT INTO tmp_Dog_Command_Link (
|
||||||
|
id_temp
|
||||||
|
, id_link
|
||||||
|
, id_dog
|
||||||
|
, id_command
|
||||||
|
, hand_signal_description
|
||||||
|
, notes
|
||||||
|
, active
|
||||||
|
, is_new
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
DOG_COMMAND_LINK_T.id_temp
|
||||||
|
, COALESCE(DOG_COMMAND_LINK.id_link, DOG_COMMAND_LINK_T.id_link)
|
||||||
|
, COALESCE(
|
||||||
|
DOG_COMMAND_LINK_T.id_dog
|
||||||
|
, DOG_COMMAND_LINK.id_dog
|
||||||
|
) AS id_dog
|
||||||
|
, COALESCE(
|
||||||
|
DOG_COMMAND_LINK_T.id_command
|
||||||
|
, DOG_COMMAND_LINK.id_command
|
||||||
|
) AS id_command
|
||||||
|
/*
|
||||||
|
, NULLIF(
|
||||||
|
COALESCE(
|
||||||
|
DOG_COMMAND_LINK_T.hand_signal_description
|
||||||
|
, DOG_COMMAND_LINK.hand_signal_description
|
||||||
|
)
|
||||||
|
, ''
|
||||||
|
) AS hand_signal_description
|
||||||
|
, NULLIF(
|
||||||
|
COALESCE(
|
||||||
|
DOG_COMMAND_LINK_T.notes
|
||||||
|
, DOG_COMMAND_LINK.notes
|
||||||
|
)
|
||||||
|
, ''
|
||||||
|
) AS notes
|
||||||
|
*/
|
||||||
|
, COALESCE(
|
||||||
|
DOG_COMMAND_LINK_T.hand_signal_description
|
||||||
|
, DOG_COMMAND_LINK.hand_signal_description
|
||||||
|
) AS hand_signal_description
|
||||||
|
, COALESCE(
|
||||||
|
DOG_COMMAND_LINK_T.notes
|
||||||
|
, DOG_COMMAND_LINK.notes
|
||||||
|
) AS notes
|
||||||
|
, COALESCE(DOG_COMMAND_LINK_T.active, 1) AS active
|
||||||
|
, CASE WHEN COALESCE(DOG_COMMAND_LINK.id_link, DOG_COMMAND_LINK_T.id_link, 0) < 1 THEN 1 ELSE 0 END AS is_new
|
||||||
|
FROM parts.DOG_Dog_Command_Link_Temp DOG_COMMAND_LINK_T
|
||||||
|
LEFT JOIN parts.DOG_Dog_Command_Link DOG_COMMAND_LINK
|
||||||
|
ON DOG_COMMAND_LINK_T.id_link = DOG_COMMAND_LINK.id_link
|
||||||
|
OR (
|
||||||
|
DOG_COMMAND_LINK_T.id_dog = DOG_COMMAND_LINK.id_dog
|
||||||
|
AND DOG_COMMAND_LINK_T.id_command = DOG_COMMAND_LINK.id_command
|
||||||
|
AND (
|
||||||
|
DOG_COMMAND_LINK.hand_signal_description IS NULL
|
||||||
|
OR DOG_COMMAND_LINK_T.hand_signal_description <=> DOG_COMMAND_LINK.hand_signal_description
|
||||||
|
)
|
||||||
|
AND (
|
||||||
|
DOG_COMMAND_LINK.notes IS NULL
|
||||||
|
OR DOG_COMMAND_LINK_T.notes <=> DOG_COMMAND_LINK.notes
|
||||||
|
)
|
||||||
|
)
|
||||||
|
WHERE DOG_COMMAND_LINK_T.guid = a_guid
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT 'Dog_Command_Link_Temp records';
|
||||||
|
SELECT * FROM tmp_Dog_Command_Link;
|
||||||
|
SELECT COUNT(*) FROM tmp_Dog_Command_Link;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- Error names
|
||||||
|
UPDATE tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN parts.DOG_Dog DOG ON t_DOG_COMMAND_LINK.id_dog = DOG.id_dog
|
||||||
|
LEFT JOIN parts.DOG_Command COMMAND ON t_DOG_COMMAND_LINK.id_command = COMMAND.id_command
|
||||||
|
SET t_DOG_COMMAND_LINK.name_error = CASE WHEN
|
||||||
|
ISNULL(DOG.id_dog)
|
||||||
|
AND ISNULL(COMMAND.id_command)
|
||||||
|
THEN COALESCE(t_DOG_COMMAND_LINK.hand_signal_description, t_DOG_COMMAND_LINK.notes, '(No Dog Command Link)')
|
||||||
|
ELSE CONCAT(
|
||||||
|
COALESCE(DOG.name, t_DOG_COMMAND_LINK.id_dog, '(No Dog)')
|
||||||
|
, ' - '
|
||||||
|
, COALESCE(COMMAND.name, t_DOG_COMMAND_LINK.id_command, '(No Command)')
|
||||||
|
) END
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT 'After set name_error';
|
||||||
|
SELECT * FROM tmp_Dog_Command_Link;
|
||||||
|
SELECT COUNT(*) FROM tmp_Dog_Command_Link;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
/*
|
||||||
|
-- Missing Dog Command Link Ids
|
||||||
|
UPDATE tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN parts.DOG_Dog_Command_Link DOG_COMMAND_LINK
|
||||||
|
-- ON t_DOG_COMMAND_LINK.id_link = DOG_COMMAND_LINK.id_link
|
||||||
|
ON t_DOG_COMMAND_LINK.id_dog = DOG_COMMAND_LINK.id_dog
|
||||||
|
AND t_DOG_COMMAND_LINK.id_command = DOG_COMMAND_LINK.id_command
|
||||||
|
SET
|
||||||
|
t_DOG_COMMAND_LINK.id_link = DOG_COMMAND_LINK.id_link
|
||||||
|
, t_DOG_COMMAND_LINK.is_new = 0
|
||||||
|
WHERE
|
||||||
|
IFNULL(t_DOG_COMMAND_LINK.id_link, 0) < 1
|
||||||
|
AND NOT ISNULL(DOG_COMMAND_LINK.id_link)
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT 'After set missing id_link';
|
||||||
|
SELECT * FROM tmp_Dog_Command_Link;
|
||||||
|
SELECT COUNT(*) FROM tmp_Dog_Command_Link;
|
||||||
|
END IF;
|
||||||
|
*/
|
||||||
|
|
||||||
|
-- Validation
|
||||||
|
-- Missing mandatory fields
|
||||||
|
-- id_dog
|
||||||
|
IF EXISTS (
|
||||||
|
SELECT *
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN demo.DOG_Dog DOG ON t_DOG_COMMAND_LINK.id_dog = DOG.id_dog
|
||||||
|
WHERE
|
||||||
|
ISNULL(t_DOG_COMMAND_LINK.id_dog)
|
||||||
|
OR ISNULL(DOG.id_dog)
|
||||||
|
OR DOG.active = 0
|
||||||
|
) THEN
|
||||||
|
INSERT INTO tmp_Msg_Error (
|
||||||
|
id_type
|
||||||
|
, code
|
||||||
|
, msg
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
v_id_type_error_bad_data
|
||||||
|
, v_code_type_error_bad_data
|
||||||
|
, CONCAT('The following Dog Command Link(s) do not have a valid Dog: ', GROUP_CONCAT(t_DOG_COMMAND_LINK.name_error SEPARATOR ', ')) AS msg
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN parts.DOG_Dog DOG ON t_DOG_COMMAND_LINK.id_dog = DOG.id_dog
|
||||||
|
WHERE
|
||||||
|
ISNULL(t_DOG_COMMAND_LINK.id_dog)
|
||||||
|
OR ISNULL(DOG.id_dog)
|
||||||
|
OR DOG.active = 0
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
-- id_command
|
||||||
|
IF EXISTS (
|
||||||
|
SELECT *
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN demo.DOG_Command COMMAND ON t_DOG_COMMAND_LINK.id_command = COMMAND.id_command
|
||||||
|
WHERE
|
||||||
|
ISNULL(t_DOG_COMMAND_LINK.id_command)
|
||||||
|
OR ISNULL(COMMAND.id_command)
|
||||||
|
OR COMMAND.active = 0
|
||||||
|
) THEN
|
||||||
|
INSERT INTO tmp_Msg_Error (
|
||||||
|
id_type
|
||||||
|
, code
|
||||||
|
, msg
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
v_id_type_error_bad_data
|
||||||
|
, v_code_type_error_bad_data
|
||||||
|
, CONCAT('The following Dog Command Link(s) do not have a valid Command: ', GROUP_CONCAT(t_DOG_COMMAND_LINK.name_error SEPARATOR ', ')) AS msg
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN parts.DOG_Command COMMAND ON t_DOG_COMMAND_LINK.id_command = COMMAND.id_command
|
||||||
|
WHERE
|
||||||
|
ISNULL(t_DOG_COMMAND_LINK.id_command)
|
||||||
|
OR ISNULL(COMMAND.id_command)
|
||||||
|
OR COMMAND.active = 0
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
-- Duplicates
|
||||||
|
INSERT INTO tmp_Dog_Command_Link_Copy (
|
||||||
|
id_temp
|
||||||
|
, id_link
|
||||||
|
, id_dog
|
||||||
|
, id_command
|
||||||
|
, hand_signal_description
|
||||||
|
, notes
|
||||||
|
, active
|
||||||
|
, is_new
|
||||||
|
, name_error
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
t_DOG_COMMAND_LINK.id_temp
|
||||||
|
, t_DOG_COMMAND_LINK.id_link
|
||||||
|
, t_DOG_COMMAND_LINK.id_dog
|
||||||
|
, t_DOG_COMMAND_LINK.id_command
|
||||||
|
, t_DOG_COMMAND_LINK.hand_signal_description
|
||||||
|
, t_DOG_COMMAND_LINK.notes
|
||||||
|
, t_DOG_COMMAND_LINK.active
|
||||||
|
, t_DOG_COMMAND_LINK.is_new
|
||||||
|
, t_DOG_COMMAND_LINK.name_error
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT COUNT(*) AS Count_Temp_Link FROM tmp_Dog_Command_Link;
|
||||||
|
SELECT COUNT(*) AS Count_Temp_Link_Copy FROM tmp_Dog_Command_Link_Copy;
|
||||||
|
|
||||||
|
WITH
|
||||||
|
Combined_Links AS (
|
||||||
|
SELECT
|
||||||
|
DOG_COMMAND_LINK.id_link
|
||||||
|
, DOG_COMMAND_LINK.id_dog
|
||||||
|
, DOG_COMMAND_LINK.id_command
|
||||||
|
, IFNULL(
|
||||||
|
t_DOG_COMMAND_LINK_COPY.name_error
|
||||||
|
, CONCAT(
|
||||||
|
COALESCE(DOG.name, t_DOG_COMMAND_LINK_COPY.id_dog, '(No Dog)')
|
||||||
|
, ' - '
|
||||||
|
, COALESCE(COMMAND.name, t_DOG_COMMAND_LINK_COPY.id_command, '(No Command)')
|
||||||
|
)
|
||||||
|
) AS name_error
|
||||||
|
FROM parts.DOG_Dog_Command_Link DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN tmp_Dog_Command_Link_Copy t_DOG_COMMAND_LINK_COPY
|
||||||
|
ON DOG_COMMAND_LINK.id_dog = t_DOG_COMMAND_LINK_COPY.id_dog
|
||||||
|
AND DOG_COMMAND_LINK.id_command = t_DOG_COMMAND_LINK_COPY.id_command
|
||||||
|
INNER JOIN parts.DOG_Dog DOG ON DOG_COMMAND_LINK.id_dog = DOG.id_dog
|
||||||
|
INNER JOIN parts.DOG_Command COMMAND ON DOG_COMMAND_LINK.id_command = COMMAND.id_command
|
||||||
|
WHERE t_DOG_COMMAND_LINK_COPY.is_new = 1
|
||||||
|
UNION
|
||||||
|
SELECT
|
||||||
|
t_DOG_COMMAND_LINK.id_link
|
||||||
|
, t_DOG_COMMAND_LINK.id_dog
|
||||||
|
, t_DOG_COMMAND_LINK.id_command
|
||||||
|
, t_DOG_COMMAND_LINK.name_error
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
)
|
||||||
|
, Duplicate_Link_Row_Numbers AS (
|
||||||
|
SELECT
|
||||||
|
COMBINED_LINK.id_link
|
||||||
|
, COMBINED_LINK.id_dog
|
||||||
|
, COMBINED_LINK.id_command
|
||||||
|
, COMBINED_LINK.name_error
|
||||||
|
, ROW_NUMBER() OVER (PARTITION BY COMBINED_LINK.id_dog, COMBINED_LINK.id_command ORDER BY COMBINED_LINK.name_error ASC) AS index_link_as_duplicate
|
||||||
|
FROM Combined_Links COMBINED_LINK
|
||||||
|
)
|
||||||
|
SELECT *
|
||||||
|
FROM Duplicate_Link_Row_Numbers;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF EXISTS (
|
||||||
|
WITH
|
||||||
|
Combined_Links AS (
|
||||||
|
SELECT
|
||||||
|
DOG_COMMAND_LINK.id_link
|
||||||
|
, DOG_COMMAND_LINK.id_dog
|
||||||
|
, DOG_COMMAND_LINK.id_command
|
||||||
|
, IFNULL(
|
||||||
|
t_DOG_COMMAND_LINK_COPY.name_error
|
||||||
|
, CONCAT(
|
||||||
|
COALESCE(DOG.name, t_DOG_COMMAND_LINK_COPY.id_dog, '(No Dog)')
|
||||||
|
, ' - '
|
||||||
|
, COALESCE(COMMAND.name, t_DOG_COMMAND_LINK_COPY.id_command, '(No Command)')
|
||||||
|
)
|
||||||
|
) AS name_error
|
||||||
|
FROM parts.DOG_Dog_Command_Link DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN tmp_Dog_Command_Link_Copy t_DOG_COMMAND_LINK_COPY
|
||||||
|
ON DOG_COMMAND_LINK.id_dog = t_DOG_COMMAND_LINK_COPY.id_dog
|
||||||
|
AND DOG_COMMAND_LINK.id_command = t_DOG_COMMAND_LINK_COPY.id_command
|
||||||
|
INNER JOIN parts.DOG_Dog DOG ON DOG_COMMAND_LINK.id_dog = DOG.id_dog
|
||||||
|
INNER JOIN parts.DOG_Command COMMAND ON DOG_COMMAND_LINK.id_command = COMMAND.id_command
|
||||||
|
WHERE t_DOG_COMMAND_LINK_COPY.is_new = 1
|
||||||
|
UNION
|
||||||
|
SELECT
|
||||||
|
t_DOG_COMMAND_LINK.id_link
|
||||||
|
, t_DOG_COMMAND_LINK.id_dog
|
||||||
|
, t_DOG_COMMAND_LINK.id_command
|
||||||
|
, t_DOG_COMMAND_LINK.name_error
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
)
|
||||||
|
, Duplicate_Link_Row_Numbers AS (
|
||||||
|
SELECT
|
||||||
|
COMBINED_LINK.id_link
|
||||||
|
, COMBINED_LINK.id_dog
|
||||||
|
, COMBINED_LINK.id_command
|
||||||
|
, COMBINED_LINK.name_error
|
||||||
|
, ROW_NUMBER() OVER (PARTITION BY COMBINED_LINK.id_dog, COMBINED_LINK.id_command ORDER BY COMBINED_LINK.name_error ASC) AS index_link_as_duplicate
|
||||||
|
FROM Combined_Links COMBINED_LINK
|
||||||
|
)
|
||||||
|
SELECT *
|
||||||
|
FROM Duplicate_Link_Row_Numbers DUPLICATE_LINK
|
||||||
|
WHERE DUPLICATE_LINK.index_link_as_duplicate > 1
|
||||||
|
GROUP BY DUPLICATE_LINK.id_dog, DUPLICATE_LINK.id_command
|
||||||
|
) THEN
|
||||||
|
INSERT INTO tmp_Msg_Error (
|
||||||
|
id_type
|
||||||
|
, code
|
||||||
|
, msg
|
||||||
|
)
|
||||||
|
WITH
|
||||||
|
Combined_Links AS (
|
||||||
|
SELECT
|
||||||
|
DOG_COMMAND_LINK.id_link
|
||||||
|
, DOG_COMMAND_LINK.id_dog
|
||||||
|
, DOG_COMMAND_LINK.id_command
|
||||||
|
, IFNULL(
|
||||||
|
t_DOG_COMMAND_LINK_COPY.name_error
|
||||||
|
, CONCAT(
|
||||||
|
COALESCE(DOG.name, t_DOG_COMMAND_LINK_COPY.id_dog, '(No Dog)')
|
||||||
|
, ' - '
|
||||||
|
, COALESCE(COMMAND.name, t_DOG_COMMAND_LINK_COPY.id_command, '(No Command)')
|
||||||
|
)
|
||||||
|
) AS name_error
|
||||||
|
FROM parts.DOG_Dog_Command_Link DOG_COMMAND_LINK
|
||||||
|
LEFT JOIN tmp_Dog_Command_Link_Copy t_DOG_COMMAND_LINK_COPY
|
||||||
|
ON DOG_COMMAND_LINK.id_dog = t_DOG_COMMAND_LINK_COPY.id_dog
|
||||||
|
AND DOG_COMMAND_LINK.id_command = t_DOG_COMMAND_LINK_COPY.id_command
|
||||||
|
INNER JOIN parts.DOG_Dog DOG ON DOG_COMMAND_LINK.id_dog = DOG.id_dog
|
||||||
|
INNER JOIN parts.DOG_Command COMMAND ON DOG_COMMAND_LINK.id_command = COMMAND.id_command
|
||||||
|
WHERE t_DOG_COMMAND_LINK_COPY.is_new = 1
|
||||||
|
UNION
|
||||||
|
SELECT
|
||||||
|
t_DOG_COMMAND_LINK.id_link
|
||||||
|
, t_DOG_COMMAND_LINK.id_dog
|
||||||
|
, t_DOG_COMMAND_LINK.id_command
|
||||||
|
, t_DOG_COMMAND_LINK.name_error
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
)
|
||||||
|
, Duplicate_Link_Row_Numbers AS (
|
||||||
|
SELECT
|
||||||
|
COMBINED_LINK.id_link
|
||||||
|
, COMBINED_LINK.id_dog
|
||||||
|
, COMBINED_LINK.id_command
|
||||||
|
, COMBINED_LINK.name_error
|
||||||
|
, ROW_NUMBER() OVER (PARTITION BY COMBINED_LINK.id_dog, COMBINED_LINK.id_command ORDER BY COMBINED_LINK.name_error ASC) AS index_link_as_duplicate
|
||||||
|
FROM Combined_Links COMBINED_LINK
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
v_id_type_error_bad_data
|
||||||
|
, v_code_type_error_bad_data
|
||||||
|
, CONCAT('Attempt to create duplicate or overwrite existing Dog Command Links on: ', GROUP_CONCAT(DUPLICATE_LINK.name_error SEPARATOR ', ')) AS msg
|
||||||
|
FROM Duplicate_Link_Row_Numbers DUPLICATE_LINK
|
||||||
|
WHERE DUPLICATE_LINK.index_link_as_duplicate > 1
|
||||||
|
GROUP BY
|
||||||
|
DUPLICATE_LINK.id_dog
|
||||||
|
, DUPLICATE_LINK.id_command
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
|
-- Permissions
|
||||||
|
-- Can Create
|
||||||
|
CALL parts.p_dog_calc_user(
|
||||||
|
a_guid
|
||||||
|
, 0 -- get_all_user
|
||||||
|
, 0 -- get_inactive_user
|
||||||
|
, a_id_user -- ids_user
|
||||||
|
, '' -- a_auth0_ids_user
|
||||||
|
, '' -- a_names_user
|
||||||
|
, '' -- a_emails_user
|
||||||
|
, 1 -- a_require_all_id_search_filters_met
|
||||||
|
, 1 -- a_require_any_id_search_filters_met
|
||||||
|
, 0 -- a_require_all_non_id_search_filters_met
|
||||||
|
, 0 -- a_require_any_non_id_search_filters_met
|
||||||
|
, v_id_permission_dog_new -- ids_permission
|
||||||
|
, v_id_access_level_edit -- ids_access_level
|
||||||
|
, 0 -- a_show_errors
|
||||||
|
, 0 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
IFNULL(CU_T.has_access, 0)
|
||||||
|
INTO
|
||||||
|
v_can_create
|
||||||
|
FROM parts.DOG_Calc_User_Temp CU_T
|
||||||
|
WHERE CU_T.GUID = a_guid
|
||||||
|
LIMIT 1
|
||||||
|
;
|
||||||
|
|
||||||
|
CALL parts.p_dog_clear_calc_user(
|
||||||
|
a_guid
|
||||||
|
, 0 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
IF v_can_create = 0 THEN
|
||||||
|
DELETE t_ME
|
||||||
|
FROM tmp_Msg_Error t_ME
|
||||||
|
WHERE t_ME.id_type <> v_id_type_error_no_permission
|
||||||
|
;
|
||||||
|
INSERT INTO tmp_Msg_Error (
|
||||||
|
id_type
|
||||||
|
, code
|
||||||
|
, msg
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
v_id_type_error_no_permission
|
||||||
|
, v_code_type_error_no_permission
|
||||||
|
, 'You do not have permission to edit Commands.'
|
||||||
|
)
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT * from tmp_Dog_Command_Link;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
DELETE FROM tmp_Dog_Command_Link;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
INSERT INTO parts.DOG_Dog_Change_Set (
|
||||||
|
comment
|
||||||
|
, id_user_updated_last_by
|
||||||
|
, updated_last_on
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
a_comment
|
||||||
|
, a_id_user
|
||||||
|
, v_time_start
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
SET v_id_change_set := LAST_INSERT_ID();
|
||||||
|
|
||||||
|
UPDATE parts.DOG_Dog_Command_Link DOG_COMMAND_LINK
|
||||||
|
INNER JOIN tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
ON DOG_COMMAND_LINK.id_link = t_DOG_COMMAND_LINK.id_link
|
||||||
|
AND t_DOG_COMMAND_LINK.is_new = 0
|
||||||
|
SET
|
||||||
|
DOG_COMMAND_LINK.id_dog = t_DOG_COMMAND_LINK.id_dog
|
||||||
|
, DOG_COMMAND_LINK.id_command = t_DOG_COMMAND_LINK.id_command
|
||||||
|
, DOG_COMMAND_LINK.hand_signal_description = t_DOG_COMMAND_LINK.hand_signal_description
|
||||||
|
, DOG_COMMAND_LINK.notes = t_DOG_COMMAND_LINK.notes
|
||||||
|
, DOG_COMMAND_LINK.active = t_DOG_COMMAND_LINK.active
|
||||||
|
, DOG_COMMAND_LINK.id_change_set = v_id_change_set
|
||||||
|
;
|
||||||
|
|
||||||
|
INSERT INTO parts.DOG_Dog_Command_Link (
|
||||||
|
id_dog
|
||||||
|
, id_command
|
||||||
|
, hand_signal_description
|
||||||
|
, notes
|
||||||
|
, active
|
||||||
|
, id_user_created_by
|
||||||
|
, created_on
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
t_DOG_COMMAND_LINK.id_dog AS id_dog
|
||||||
|
, t_DOG_COMMAND_LINK.id_command AS id_command
|
||||||
|
, t_DOG_COMMAND_LINK.hand_signal_description AS hand_signal_description
|
||||||
|
, t_DOG_COMMAND_LINK.notes AS notes
|
||||||
|
, t_DOG_COMMAND_LINK.active AS active
|
||||||
|
, a_id_user AS created_by
|
||||||
|
, v_time_start AS created_on
|
||||||
|
FROM tmp_Dog_Command_Link t_DOG_COMMAND_LINK
|
||||||
|
WHERE
|
||||||
|
t_DOG_COMMAND_LINK.is_new = 1
|
||||||
|
AND t_DOG_COMMAND_LINK.active = 1
|
||||||
|
;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
DELETE FROM parts.DOG_Dog_Command_Link_Temp
|
||||||
|
WHERE GUID = a_guid
|
||||||
|
;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
-- Errors
|
||||||
|
SELECT
|
||||||
|
t_ERROR.id_error
|
||||||
|
, t_ERROR.id_type
|
||||||
|
, t_ERROR.code
|
||||||
|
, ERROR_TYPE.name
|
||||||
|
, ERROR_TYPE.description
|
||||||
|
, ERROR_TYPE.is_breaking_error
|
||||||
|
, ERROR_TYPE.background_colour
|
||||||
|
, ERROR_TYPE.text_colour
|
||||||
|
, t_ERROR.msg
|
||||||
|
FROM tmp_Msg_Error t_ERROR
|
||||||
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT * FROM tmp_Dog_Command_Link;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tmp_Dog_Command_Link;
|
||||||
|
DROP TEMPORARY TABLE tmp_Msg_Error;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
CALL parts.p_core_debug_timing_reporting ( v_time_start );
|
||||||
|
END IF;
|
||||||
|
END //
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
'ripplesipplenippletippledipplekipple'
|
||||||
|
DELETE FROM parts.DOG_Dog_Command_Link WHERE id_link > 740;
|
||||||
|
* /
|
||||||
|
delete
|
||||||
|
from parts.DOG_Dog_Command_Link_Audit
|
||||||
|
where id_link > 768
|
||||||
|
;
|
||||||
|
delete
|
||||||
|
from parts.DOG_Dog_Command_Link
|
||||||
|
where id_link > 768
|
||||||
|
;
|
||||||
|
delete
|
||||||
|
from parts.DOG_Dog_Command_Link_Temp
|
||||||
|
;
|
||||||
|
select
|
||||||
|
*
|
||||||
|
-- COUNT(*)
|
||||||
|
-- delete
|
||||||
|
from parts.DOG_Dog_Command_Link_Temp
|
||||||
|
;
|
||||||
|
select COUNT(*)
|
||||||
|
from parts.DOG_Dog_Command_Link_Temp
|
||||||
|
;
|
||||||
|
select
|
||||||
|
*
|
||||||
|
-- COUNT(*)
|
||||||
|
-- delete
|
||||||
|
from parts.DOG_Dog_Command_Link
|
||||||
|
;
|
||||||
|
select COUNT(*)
|
||||||
|
from parts.DOG_Dog_Command_Link
|
||||||
|
;
|
||||||
|
|
||||||
|
INSERT INTO parts.DOG_Dog_Command_Link_Temp (
|
||||||
|
id_link
|
||||||
|
, id_dog
|
||||||
|
, id_command
|
||||||
|
, hand_signal_description
|
||||||
|
, notes
|
||||||
|
, active
|
||||||
|
, guid
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
-1 -- id_link
|
||||||
|
, 1 -- id_dog
|
||||||
|
, 1 -- id_command
|
||||||
|
, 'Test deez noots' -- hand_signal_description
|
||||||
|
, NULL -- notes
|
||||||
|
, 1 -- active
|
||||||
|
, 'ripplesipplenippletippledipplekipple'
|
||||||
|
);
|
||||||
|
|
||||||
|
CALL parts.p_dog_save_dog_command_link (
|
||||||
|
'nipples'
|
||||||
|
, 'ripplesipplenippletippledipplekipple'
|
||||||
|
, 1
|
||||||
|
, 1
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
select
|
||||||
|
*
|
||||||
|
-- COUNT(*)
|
||||||
|
-- delete
|
||||||
|
from parts.DOG_Dog_Command_Link_Temp
|
||||||
|
;
|
||||||
|
select COUNT(*)
|
||||||
|
from parts.DOG_Dog_Command_Link_Temp
|
||||||
|
;
|
||||||
|
select
|
||||||
|
*
|
||||||
|
-- COUNT(*)
|
||||||
|
-- delete
|
||||||
|
from parts.DOG_Dog_Command_Link
|
||||||
|
;
|
||||||
|
select COUNT(*)
|
||||||
|
from parts.DOG_Dog_Command_Link
|
||||||
|
;
|
||||||
|
|
||||||
|
*/
|
||||||
@@ -23,6 +23,10 @@ CREATE PROCEDURE parts.p_dog_calc_distraction (
|
|||||||
, IN a_get_inactive_intensity_level_emotional BIT
|
, IN a_get_inactive_intensity_level_emotional BIT
|
||||||
, IN a_ids_intensity_level_emotional TEXT
|
, IN a_ids_intensity_level_emotional TEXT
|
||||||
, IN a_names_intensity_level_emotional TEXT
|
, IN a_names_intensity_level_emotional TEXT
|
||||||
|
, IN a_get_all_intensity_level_scent BIT
|
||||||
|
, IN a_get_inactive_intensity_level_scent BIT
|
||||||
|
, IN a_ids_intensity_level_scent TEXT
|
||||||
|
, IN a_names_intensity_level_scent TEXT
|
||||||
, IN a_get_all_intensity_level_sight BIT
|
, IN a_get_all_intensity_level_sight BIT
|
||||||
, IN a_get_inactive_intensity_level_sight BIT
|
, IN a_get_inactive_intensity_level_sight BIT
|
||||||
, IN a_ids_intensity_level_sight TEXT
|
, IN a_ids_intensity_level_sight TEXT
|
||||||
@@ -180,6 +184,10 @@ BEGIN
|
|||||||
, a_get_inactive_intensity_level_emotional
|
, a_get_inactive_intensity_level_emotional
|
||||||
, a_ids_intensity_level_emotional
|
, a_ids_intensity_level_emotional
|
||||||
, a_names_intensity_level_emotional
|
, a_names_intensity_level_emotional
|
||||||
|
, a_get_all_intensity_level_scent
|
||||||
|
, a_get_inactive_intensity_level_scent
|
||||||
|
, a_ids_intensity_level_scent
|
||||||
|
, a_names_intensity_level_scent
|
||||||
, a_get_all_intensity_level_sight
|
, a_get_all_intensity_level_sight
|
||||||
, a_get_inactive_intensity_level_sight
|
, a_get_inactive_intensity_level_sight
|
||||||
, a_ids_intensity_level_sight
|
, a_ids_intensity_level_sight
|
||||||
@@ -239,6 +247,7 @@ BEGIN
|
|||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Touch_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Touch_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Sound_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Sound_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Sight_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Sight_Calc_Distraction;
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Scent_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Emotional_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Emotional_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Distraction_Type_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Distraction_Type_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Calc_Distraction;
|
||||||
@@ -274,6 +283,15 @@ BEGIN
|
|||||||
, does_meet_non_id_filters BIT NOT NULL
|
, does_meet_non_id_filters BIT NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TEMPORARY TABLE tmp_Intensity_Level_Scent_Calc_Distraction (
|
||||||
|
id_intensity_level INT NOT NULL
|
||||||
|
, code VARCHAR(250)
|
||||||
|
, name VARCHAR(250)
|
||||||
|
, active BIT
|
||||||
|
, does_meet_id_filters BIT NOT NULL
|
||||||
|
, does_meet_non_id_filters BIT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
CREATE TEMPORARY TABLE tmp_Intensity_Level_Sight_Calc_Distraction (
|
CREATE TEMPORARY TABLE tmp_Intensity_Level_Sight_Calc_Distraction (
|
||||||
id_intensity_level INT NOT NULL
|
id_intensity_level INT NOT NULL
|
||||||
, code VARCHAR(250)
|
, code VARCHAR(250)
|
||||||
@@ -306,6 +324,7 @@ BEGIN
|
|||||||
, id_assessment INT
|
, id_assessment INT
|
||||||
, id_distraction_type INT
|
, id_distraction_type INT
|
||||||
, id_intensity_level_emotional INT
|
, id_intensity_level_emotional INT
|
||||||
|
, id_intensity_level_scent INT
|
||||||
, id_intensity_level_sight INT
|
, id_intensity_level_sight INT
|
||||||
, id_intensity_level_sound INT
|
, id_intensity_level_sound INT
|
||||||
, id_intensity_level_touch INT
|
, id_intensity_level_touch INT
|
||||||
@@ -576,6 +595,71 @@ BEGIN
|
|||||||
);
|
);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
-- Call Calc Intensity Level Scent
|
||||||
|
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Distraction t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT
|
||||||
|
a_guid -- a_guid
|
||||||
|
, a_id_user -- a_id_user
|
||||||
|
, a_get_all_intensity_level_scent -- a_get_all_intensity_level_scent
|
||||||
|
, a_get_inactive_intensity_level_scent -- a_get_inactive_intensity_level_scent
|
||||||
|
, a_ids_intensity_level_scent -- a_ids_intensity_level_scent
|
||||||
|
, a_names_intensity_level_scent -- a_names_intensity_level_scent
|
||||||
|
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
||||||
|
, 0 -- a_require_any_id_search_filters_met
|
||||||
|
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||||
|
, 0 -- a_require_any_non_id_search_filters_met
|
||||||
|
, 0 -- a_show_errors
|
||||||
|
, 0 -- a_debug
|
||||||
|
;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL parts.p_dog_calc_distraction_intensity_level (
|
||||||
|
a_guid -- a_guid
|
||||||
|
, a_id_user -- a_id_user
|
||||||
|
, a_get_all_intensity_level_scent -- a_get_all_intensity_level_scent
|
||||||
|
, a_get_inactive_intensity_level_scent -- a_get_inactive_intensity_level_scent
|
||||||
|
, a_ids_intensity_level_scent -- a_ids_intensity_level_scent
|
||||||
|
, a_names_intensity_level_scent -- a_names_intensity_level_scent
|
||||||
|
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
||||||
|
, 0 -- a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
||||||
|
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||||
|
, 0 -- a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
|
||||||
|
, 0 -- a_show_errors
|
||||||
|
, 0 -- a_debug
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO tmp_Intensity_Level_Scent_Calc_Distraction (
|
||||||
|
id_intensity_level
|
||||||
|
, code
|
||||||
|
, name
|
||||||
|
, active
|
||||||
|
|
||||||
|
, does_meet_id_filters
|
||||||
|
, does_meet_non_id_filters
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
INTENSITY_LEVEL_SCENT_T.id_intensity_level
|
||||||
|
, INTENSITY_LEVEL_SCENT_T.code
|
||||||
|
, INTENSITY_LEVEL_SCENT_T.name
|
||||||
|
, INTENSITY_LEVEL_SCENT_T.active
|
||||||
|
|
||||||
|
, INTENSITY_LEVEL_SCENT_T.does_meet_id_filters
|
||||||
|
, INTENSITY_LEVEL_SCENT_T.does_meet_non_id_filters
|
||||||
|
FROM parts.DOG_Distraction_Intensity_Level_Temp INTENSITY_LEVEL_SCENT_T
|
||||||
|
WHERE INTENSITY_LEVEL_SCENT_T.GUID = a_guid
|
||||||
|
;
|
||||||
|
|
||||||
|
IF a_debug = 1 THEN
|
||||||
|
SELECT * FROM tmp_Intensity_Level_Scent_Calc_Distraction;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
CALL parts.p_dog_clear_calc_distraction_intensity_level (
|
||||||
|
a_guid
|
||||||
|
, 0 -- a_debug
|
||||||
|
);
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- Call Calc Intensity Level Sight
|
-- Call Calc Intensity Level Sight
|
||||||
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Distraction t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Distraction t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
@@ -889,6 +973,7 @@ BEGIN
|
|||||||
, DISTRACTION.id_assessment
|
, DISTRACTION.id_assessment
|
||||||
, DISTRACTION.id_distraction_type
|
, DISTRACTION.id_distraction_type
|
||||||
, DISTRACTION.id_intensity_level_emotional
|
, DISTRACTION.id_intensity_level_emotional
|
||||||
|
, DISTRACTION.id_intensity_level_scent
|
||||||
, DISTRACTION.id_intensity_level_sight
|
, DISTRACTION.id_intensity_level_sight
|
||||||
, DISTRACTION.id_intensity_level_sound
|
, DISTRACTION.id_intensity_level_sound
|
||||||
, DISTRACTION.id_intensity_level_touch
|
, DISTRACTION.id_intensity_level_touch
|
||||||
@@ -979,6 +1064,7 @@ BEGIN
|
|||||||
, id_assessment
|
, id_assessment
|
||||||
, id_distraction_type
|
, id_distraction_type
|
||||||
, id_intensity_level_emotional
|
, id_intensity_level_emotional
|
||||||
|
, id_intensity_level_scent
|
||||||
, id_intensity_level_sight
|
, id_intensity_level_sight
|
||||||
, id_intensity_level_sound
|
, id_intensity_level_sound
|
||||||
, id_intensity_level_touch
|
, id_intensity_level_touch
|
||||||
@@ -1028,6 +1114,7 @@ BEGIN
|
|||||||
, DISTRACTION.id_assessment
|
, DISTRACTION.id_assessment
|
||||||
, DISTRACTION.id_distraction_type
|
, DISTRACTION.id_distraction_type
|
||||||
, DISTRACTION.id_intensity_level_emotional
|
, DISTRACTION.id_intensity_level_emotional
|
||||||
|
, DISTRACTION.id_intensity_level_scent
|
||||||
, DISTRACTION.id_intensity_level_sight
|
, DISTRACTION.id_intensity_level_sight
|
||||||
, DISTRACTION.id_intensity_level_sound
|
, DISTRACTION.id_intensity_level_sound
|
||||||
, DISTRACTION.id_intensity_level_touch
|
, DISTRACTION.id_intensity_level_touch
|
||||||
@@ -1130,6 +1217,7 @@ BEGIN
|
|||||||
LEFT JOIN tmp_Assessment_Calc_Distraction t_ASSESSMENT ON t_DISTRACTION.id_assessment = t_ASSESSMENT.id_assessment
|
LEFT JOIN tmp_Assessment_Calc_Distraction t_ASSESSMENT ON t_DISTRACTION.id_assessment = t_ASSESSMENT.id_assessment
|
||||||
LEFT JOIN tmp_Distraction_Type_Calc_Distraction t_DISTRACTION_TYPE ON t_DISTRACTION.id_distraction_type = t_DISTRACTION_TYPE.id_type
|
LEFT JOIN tmp_Distraction_Type_Calc_Distraction t_DISTRACTION_TYPE ON t_DISTRACTION.id_distraction_type = t_DISTRACTION_TYPE.id_type
|
||||||
LEFT JOIN tmp_Intensity_Level_Emotional_Calc_Distraction t_INTENSITY_LEVEL_EMOTIONAL ON t_DISTRACTION.id_intensity_level_emotional = t_INTENSITY_LEVEL_EMOTIONAL.id_intensity_level
|
LEFT JOIN tmp_Intensity_Level_Emotional_Calc_Distraction t_INTENSITY_LEVEL_EMOTIONAL ON t_DISTRACTION.id_intensity_level_emotional = t_INTENSITY_LEVEL_EMOTIONAL.id_intensity_level
|
||||||
|
LEFT JOIN tmp_Intensity_Level_Scent_Calc_Distraction t_INTENSITY_LEVEL_SCENT ON t_DISTRACTION.id_intensity_level_scent = t_INTENSITY_LEVEL_SCENT.id_intensity_level
|
||||||
LEFT JOIN tmp_Intensity_Level_Sight_Calc_Distraction t_INTENSITY_LEVEL_SIGHT ON t_DISTRACTION.id_intensity_level_sight = t_INTENSITY_LEVEL_SIGHT.id_intensity_level
|
LEFT JOIN tmp_Intensity_Level_Sight_Calc_Distraction t_INTENSITY_LEVEL_SIGHT ON t_DISTRACTION.id_intensity_level_sight = t_INTENSITY_LEVEL_SIGHT.id_intensity_level
|
||||||
LEFT JOIN tmp_Intensity_Level_Sound_Calc_Distraction t_INTENSITY_LEVEL_SOUND ON t_DISTRACTION.id_intensity_level_sound = t_INTENSITY_LEVEL_SOUND.id_intensity_level
|
LEFT JOIN tmp_Intensity_Level_Sound_Calc_Distraction t_INTENSITY_LEVEL_SOUND ON t_DISTRACTION.id_intensity_level_sound = t_INTENSITY_LEVEL_SOUND.id_intensity_level
|
||||||
LEFT JOIN tmp_Intensity_Level_Touch_Calc_Distraction t_INTENSITY_LEVEL_TOUCH ON t_DISTRACTION.id_intensity_level_touch = t_INTENSITY_LEVEL_TOUCH.id_intensity_level
|
LEFT JOIN tmp_Intensity_Level_Touch_Calc_Distraction t_INTENSITY_LEVEL_TOUCH ON t_DISTRACTION.id_intensity_level_touch = t_INTENSITY_LEVEL_TOUCH.id_intensity_level
|
||||||
@@ -1141,6 +1229,7 @@ BEGIN
|
|||||||
OR IFNULL(t_ASSESSMENT.does_meet_id_filters, 1) = 0
|
OR IFNULL(t_ASSESSMENT.does_meet_id_filters, 1) = 0
|
||||||
OR IFNULL(t_DISTRACTION_TYPE.does_meet_id_filters, 1) = 0
|
OR IFNULL(t_DISTRACTION_TYPE.does_meet_id_filters, 1) = 0
|
||||||
OR IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_id_filters, 1) = 0
|
OR IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_id_filters, 1) = 0
|
||||||
|
OR IFNULL(t_INTENSITY_LEVEL_SCENT.does_meet_id_filters, 1) = 0
|
||||||
OR IFNULL(t_INTENSITY_LEVEL_SIGHT.does_meet_id_filters, 1) = 0
|
OR IFNULL(t_INTENSITY_LEVEL_SIGHT.does_meet_id_filters, 1) = 0
|
||||||
OR IFNULL(t_INTENSITY_LEVEL_SOUND.does_meet_id_filters, 1) = 0
|
OR IFNULL(t_INTENSITY_LEVEL_SOUND.does_meet_id_filters, 1) = 0
|
||||||
OR IFNULL(t_INTENSITY_LEVEL_TOUCH.does_meet_id_filters, 1) = 0
|
OR IFNULL(t_INTENSITY_LEVEL_TOUCH.does_meet_id_filters, 1) = 0
|
||||||
@@ -1153,6 +1242,7 @@ BEGIN
|
|||||||
OR IFNULL(t_ASSESSMENT.does_meet_non_id_filters, 1) = 0
|
OR IFNULL(t_ASSESSMENT.does_meet_non_id_filters, 1) = 0
|
||||||
OR IFNULL(t_DISTRACTION_TYPE.does_meet_non_id_filters, 1) = 0
|
OR IFNULL(t_DISTRACTION_TYPE.does_meet_non_id_filters, 1) = 0
|
||||||
OR IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_non_id_filters, 1) = 0
|
OR IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_non_id_filters, 1) = 0
|
||||||
|
OR IFNULL(t_INTENSITY_LEVEL_SCENT.does_meet_non_id_filters, 1) = 0
|
||||||
OR IFNULL(t_INTENSITY_LEVEL_SIGHT.does_meet_non_id_filters, 1) = 0
|
OR IFNULL(t_INTENSITY_LEVEL_SIGHT.does_meet_non_id_filters, 1) = 0
|
||||||
OR IFNULL(t_INTENSITY_LEVEL_SOUND.does_meet_non_id_filters, 1) = 0
|
OR IFNULL(t_INTENSITY_LEVEL_SOUND.does_meet_non_id_filters, 1) = 0
|
||||||
OR IFNULL(t_INTENSITY_LEVEL_TOUCH.does_meet_non_id_filters, 1) = 0
|
OR IFNULL(t_INTENSITY_LEVEL_TOUCH.does_meet_non_id_filters, 1) = 0
|
||||||
@@ -1164,6 +1254,7 @@ BEGIN
|
|||||||
AND IFNULL(t_ASSESSMENT.does_meet_id_filters, 1) = 0
|
AND IFNULL(t_ASSESSMENT.does_meet_id_filters, 1) = 0
|
||||||
AND IFNULL(t_DISTRACTION_TYPE.does_meet_id_filters, 1) = 0
|
AND IFNULL(t_DISTRACTION_TYPE.does_meet_id_filters, 1) = 0
|
||||||
AND IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_id_filters, 1) = 0
|
AND IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_id_filters, 1) = 0
|
||||||
|
AND IFNULL(t_INTENSITY_LEVEL_SCENT.does_meet_id_filters, 1) = 0
|
||||||
AND IFNULL(t_INTENSITY_LEVEL_SIGHT.does_meet_id_filters, 1) = 0
|
AND IFNULL(t_INTENSITY_LEVEL_SIGHT.does_meet_id_filters, 1) = 0
|
||||||
AND IFNULL(t_INTENSITY_LEVEL_SOUND.does_meet_id_filters, 1) = 0
|
AND IFNULL(t_INTENSITY_LEVEL_SOUND.does_meet_id_filters, 1) = 0
|
||||||
AND IFNULL(t_INTENSITY_LEVEL_TOUCH.does_meet_id_filters, 1) = 0
|
AND IFNULL(t_INTENSITY_LEVEL_TOUCH.does_meet_id_filters, 1) = 0
|
||||||
@@ -1174,6 +1265,7 @@ BEGIN
|
|||||||
AND IFNULL(t_ASSESSMENT.does_meet_non_id_filters, 1) = 0
|
AND IFNULL(t_ASSESSMENT.does_meet_non_id_filters, 1) = 0
|
||||||
AND IFNULL(t_DISTRACTION_TYPE.does_meet_non_id_filters, 1) = 0
|
AND IFNULL(t_DISTRACTION_TYPE.does_meet_non_id_filters, 1) = 0
|
||||||
AND IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_non_id_filters, 1) = 0
|
AND IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_non_id_filters, 1) = 0
|
||||||
|
AND IFNULL(t_INTENSITY_LEVEL_SCENT.does_meet_non_id_filters, 1) = 0
|
||||||
AND IFNULL(t_INTENSITY_LEVEL_SIGHT.does_meet_non_id_filters, 1) = 0
|
AND IFNULL(t_INTENSITY_LEVEL_SIGHT.does_meet_non_id_filters, 1) = 0
|
||||||
AND IFNULL(t_INTENSITY_LEVEL_SOUND.does_meet_non_id_filters, 1) = 0
|
AND IFNULL(t_INTENSITY_LEVEL_SOUND.does_meet_non_id_filters, 1) = 0
|
||||||
AND IFNULL(t_INTENSITY_LEVEL_TOUCH.does_meet_non_id_filters, 1) = 0
|
AND IFNULL(t_INTENSITY_LEVEL_TOUCH.does_meet_non_id_filters, 1) = 0
|
||||||
@@ -1186,6 +1278,7 @@ BEGIN
|
|||||||
SELECT * FROM tmp_Assessment_Calc_Distraction;
|
SELECT * FROM tmp_Assessment_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
|
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
||||||
|
SELECT * FROM tmp_Intensity_Level_Scent_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
||||||
@@ -1273,6 +1366,7 @@ BEGIN
|
|||||||
SELECT * FROM tmp_Assessment_Calc_Distraction;
|
SELECT * FROM tmp_Assessment_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
|
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
||||||
|
SELECT * FROM tmp_Intensity_Level_Scent_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
||||||
@@ -1283,19 +1377,21 @@ BEGIN
|
|||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT * FROM tmp_Assessment_Calc_Distraction;
|
SELECT * FROM tmp_Assessment_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
|
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Scent_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
||||||
|
SELECT * FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Distraction_Calc_Distraction;
|
SELECT * FROM tmp_Distraction_Calc_Distraction;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
DELETE FROM tmp_Assessment_Calc_Distraction;
|
|
||||||
DELETE FROM tmp_Distraction_Type_Calc_Distraction;
|
|
||||||
DELETE FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
|
||||||
DELETE FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
|
||||||
DELETE FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
|
||||||
DELETE FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
DELETE FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
||||||
|
DELETE FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
||||||
|
DELETE FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
||||||
|
DELETE FROM tmp_Intensity_Level_Scent_Calc_Distraction;
|
||||||
|
DELETE FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
||||||
|
DELETE FROM tmp_Distraction_Type_Calc_Distraction;
|
||||||
|
DELETE FROM tmp_Assessment_Calc_Distraction;
|
||||||
DELETE FROM tmp_Distraction_Calc_Distraction;
|
DELETE FROM tmp_Distraction_Calc_Distraction;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
@@ -1312,6 +1408,7 @@ BEGIN
|
|||||||
, id_assessment
|
, id_assessment
|
||||||
, id_distraction_type
|
, id_distraction_type
|
||||||
, id_intensity_level_emotional
|
, id_intensity_level_emotional
|
||||||
|
, id_intensity_level_scent
|
||||||
, id_intensity_level_sight
|
, id_intensity_level_sight
|
||||||
, id_intensity_level_sound
|
, id_intensity_level_sound
|
||||||
, id_intensity_level_touch
|
, id_intensity_level_touch
|
||||||
@@ -1329,6 +1426,7 @@ BEGIN
|
|||||||
, t_DISTRACTION.id_assessment
|
, t_DISTRACTION.id_assessment
|
||||||
, t_DISTRACTION.id_distraction_type
|
, t_DISTRACTION.id_distraction_type
|
||||||
, t_DISTRACTION.id_intensity_level_emotional
|
, t_DISTRACTION.id_intensity_level_emotional
|
||||||
|
, t_DISTRACTION.id_intensity_level_scent
|
||||||
, t_DISTRACTION.id_intensity_level_sight
|
, t_DISTRACTION.id_intensity_level_sight
|
||||||
, t_DISTRACTION.id_intensity_level_sound
|
, t_DISTRACTION.id_intensity_level_sound
|
||||||
, t_DISTRACTION.id_intensity_level_touch
|
, t_DISTRACTION.id_intensity_level_touch
|
||||||
@@ -1365,6 +1463,7 @@ BEGIN
|
|||||||
SELECT * FROM tmp_Assessment_Calc_Distraction;
|
SELECT * FROM tmp_Assessment_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
|
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
|
||||||
|
SELECT * FROM tmp_Intensity_Level_Scent_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Sight_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Sound_Calc_Distraction;
|
||||||
SELECT * FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
SELECT * FROM tmp_Intensity_Level_Touch_Calc_Distraction;
|
||||||
@@ -1388,6 +1487,7 @@ BEGIN
|
|||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Touch_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Touch_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Sound_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Sound_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Sight_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Sight_Calc_Distraction;
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Scent_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Emotional_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Emotional_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Distraction_Type_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Distraction_Type_Calc_Distraction;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Calc_Distraction;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Calc_Distraction;
|
||||||
@@ -1423,6 +1523,11 @@ CALL parts.p_dog_calc_distraction (
|
|||||||
, '' -- a_ids_intensity_level_emotional
|
, '' -- a_ids_intensity_level_emotional
|
||||||
, '' -- a_names_intensity_level_emotional
|
, '' -- a_names_intensity_level_emotional
|
||||||
|
|
||||||
|
, 1 -- a_get_all_intensity_level_scent
|
||||||
|
, 0 -- a_get_inactive_intensity_level_scent
|
||||||
|
, '' -- a_ids_intensity_level_scent
|
||||||
|
, '' -- a_names_intensity_level_scent
|
||||||
|
|
||||||
, 1 -- a_get_all_intensity_level_sight
|
, 1 -- a_get_all_intensity_level_sight
|
||||||
, 0 -- a_get_inactive_intensity_level_sight
|
, 0 -- a_get_inactive_intensity_level_sight
|
||||||
, '' -- a_ids_intensity_level_sight
|
, '' -- a_ids_intensity_level_sight
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ CREATE PROCEDURE parts.p_dog_get_many_distraction (
|
|||||||
, IN a_get_inactive_intensity_level_emotional BIT
|
, IN a_get_inactive_intensity_level_emotional BIT
|
||||||
, IN a_ids_intensity_level_emotional TEXT
|
, IN a_ids_intensity_level_emotional TEXT
|
||||||
, IN a_names_intensity_level_emotional TEXT
|
, IN a_names_intensity_level_emotional TEXT
|
||||||
|
, IN a_get_all_intensity_level_scent BIT
|
||||||
|
, IN a_get_inactive_intensity_level_scent BIT
|
||||||
|
, IN a_ids_intensity_level_scent TEXT
|
||||||
|
, IN a_names_intensity_level_scent TEXT
|
||||||
, IN a_get_all_intensity_level_sight BIT
|
, IN a_get_all_intensity_level_sight BIT
|
||||||
, IN a_get_inactive_intensity_level_sight BIT
|
, IN a_get_inactive_intensity_level_sight BIT
|
||||||
, IN a_ids_intensity_level_sight TEXT
|
, IN a_ids_intensity_level_sight TEXT
|
||||||
@@ -159,6 +163,10 @@ BEGIN
|
|||||||
, a_get_inactive_intensity_level_emotional
|
, a_get_inactive_intensity_level_emotional
|
||||||
, a_ids_intensity_level_emotional
|
, a_ids_intensity_level_emotional
|
||||||
, a_names_intensity_level_emotional
|
, a_names_intensity_level_emotional
|
||||||
|
, a_get_all_intensity_level_scent
|
||||||
|
, a_get_inactive_intensity_level_scent
|
||||||
|
, a_ids_intensity_level_scent
|
||||||
|
, a_names_intensity_level_scent
|
||||||
, a_get_all_intensity_level_sight
|
, a_get_all_intensity_level_sight
|
||||||
, a_get_inactive_intensity_level_sight
|
, a_get_inactive_intensity_level_sight
|
||||||
, a_ids_intensity_level_sight
|
, a_ids_intensity_level_sight
|
||||||
@@ -220,6 +228,7 @@ BEGIN
|
|||||||
, id_assessment INT
|
, id_assessment INT
|
||||||
, id_distraction_type INT
|
, id_distraction_type INT
|
||||||
, id_intensity_level_emotional INT
|
, id_intensity_level_emotional INT
|
||||||
|
, id_intensity_level_scent INT
|
||||||
, id_intensity_level_sight INT
|
, id_intensity_level_sight INT
|
||||||
, id_intensity_level_sound INT
|
, id_intensity_level_sound INT
|
||||||
, id_intensity_level_touch INT
|
, id_intensity_level_touch INT
|
||||||
@@ -339,6 +348,10 @@ BEGIN
|
|||||||
, a_get_inactive_intensity_level_emotional
|
, a_get_inactive_intensity_level_emotional
|
||||||
, a_ids_intensity_level_emotional
|
, a_ids_intensity_level_emotional
|
||||||
, a_names_intensity_level_emotional
|
, a_names_intensity_level_emotional
|
||||||
|
, a_get_all_intensity_level_scent
|
||||||
|
, a_get_inactive_intensity_level_scent
|
||||||
|
, a_ids_intensity_level_scent
|
||||||
|
, a_names_intensity_level_scent
|
||||||
, a_get_all_intensity_level_sight
|
, a_get_all_intensity_level_sight
|
||||||
, a_get_inactive_intensity_level_sight
|
, a_get_inactive_intensity_level_sight
|
||||||
, a_ids_intensity_level_sight
|
, a_ids_intensity_level_sight
|
||||||
@@ -403,6 +416,10 @@ BEGIN
|
|||||||
, a_get_inactive_intensity_level_emotional
|
, a_get_inactive_intensity_level_emotional
|
||||||
, a_ids_intensity_level_emotional
|
, a_ids_intensity_level_emotional
|
||||||
, a_names_intensity_level_emotional
|
, a_names_intensity_level_emotional
|
||||||
|
, a_get_all_intensity_level_scent
|
||||||
|
, a_get_inactive_intensity_level_scent
|
||||||
|
, a_ids_intensity_level_scent
|
||||||
|
, a_names_intensity_level_scent
|
||||||
, a_get_all_intensity_level_sight
|
, a_get_all_intensity_level_sight
|
||||||
, a_get_inactive_intensity_level_sight
|
, a_get_inactive_intensity_level_sight
|
||||||
, a_ids_intensity_level_sight
|
, a_ids_intensity_level_sight
|
||||||
@@ -457,6 +474,7 @@ BEGIN
|
|||||||
, id_assessment
|
, id_assessment
|
||||||
, id_distraction_type
|
, id_distraction_type
|
||||||
, id_intensity_level_emotional
|
, id_intensity_level_emotional
|
||||||
|
, id_intensity_level_scent
|
||||||
, id_intensity_level_sight
|
, id_intensity_level_sight
|
||||||
, id_intensity_level_sound
|
, id_intensity_level_sound
|
||||||
, id_intensity_level_touch
|
, id_intensity_level_touch
|
||||||
@@ -472,6 +490,7 @@ BEGIN
|
|||||||
, DISTRACTION_T.id_assessment
|
, DISTRACTION_T.id_assessment
|
||||||
, DISTRACTION_T.id_distraction_type
|
, DISTRACTION_T.id_distraction_type
|
||||||
, DISTRACTION_T.id_intensity_level_emotional
|
, DISTRACTION_T.id_intensity_level_emotional
|
||||||
|
, DISTRACTION_T.id_intensity_level_scent
|
||||||
, DISTRACTION_T.id_intensity_level_sight
|
, DISTRACTION_T.id_intensity_level_sight
|
||||||
, DISTRACTION_T.id_intensity_level_sound
|
, DISTRACTION_T.id_intensity_level_sound
|
||||||
, DISTRACTION_T.id_intensity_level_touch
|
, DISTRACTION_T.id_intensity_level_touch
|
||||||
@@ -511,6 +530,8 @@ BEGIN
|
|||||||
, DISTRACTION_TYPE.name AS name_distraction_type
|
, DISTRACTION_TYPE.name AS name_distraction_type
|
||||||
, t_DISTRACTION.id_intensity_level_emotional
|
, t_DISTRACTION.id_intensity_level_emotional
|
||||||
, INTENSITY_LEVEL_EMOTIONAL.name AS name_intensity_level_emotional
|
, INTENSITY_LEVEL_EMOTIONAL.name AS name_intensity_level_emotional
|
||||||
|
, t_DISTRACTION.id_intensity_level_scent
|
||||||
|
, INTENSITY_LEVEL_SCENT.name AS name_intensity_level_scent
|
||||||
, t_DISTRACTION.id_intensity_level_sight
|
, t_DISTRACTION.id_intensity_level_sight
|
||||||
, INTENSITY_LEVEL_SIGHT.name AS name_intensity_level_sight
|
, INTENSITY_LEVEL_SIGHT.name AS name_intensity_level_sight
|
||||||
, t_DISTRACTION.id_intensity_level_sound
|
, t_DISTRACTION.id_intensity_level_sound
|
||||||
@@ -527,6 +548,7 @@ BEGIN
|
|||||||
FROM tmp_Distraction t_DISTRACTION
|
FROM tmp_Distraction t_DISTRACTION
|
||||||
LEFT JOIN parts.DOG_Distraction_Type DISTRACTION_TYPE ON t_DISTRACTION.id_distraction_type = DISTRACTION_TYPE.id_type
|
LEFT JOIN parts.DOG_Distraction_Type DISTRACTION_TYPE ON t_DISTRACTION.id_distraction_type = DISTRACTION_TYPE.id_type
|
||||||
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_EMOTIONAL ON t_DISTRACTION.id_intensity_level_emotional = INTENSITY_LEVEL_EMOTIONAL.id_intensity_level
|
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_EMOTIONAL ON t_DISTRACTION.id_intensity_level_emotional = INTENSITY_LEVEL_EMOTIONAL.id_intensity_level
|
||||||
|
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_SCENT ON t_DISTRACTION.id_intensity_level_scent = INTENSITY_LEVEL_SCENT.id_intensity_level
|
||||||
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_SIGHT ON t_DISTRACTION.id_intensity_level_sight = INTENSITY_LEVEL_SIGHT.id_intensity_level
|
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_SIGHT ON t_DISTRACTION.id_intensity_level_sight = INTENSITY_LEVEL_SIGHT.id_intensity_level
|
||||||
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_SOUND ON t_DISTRACTION.id_intensity_level_sound = INTENSITY_LEVEL_SOUND.id_intensity_level
|
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_SOUND ON t_DISTRACTION.id_intensity_level_sound = INTENSITY_LEVEL_SOUND.id_intensity_level
|
||||||
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_TOUCH ON t_DISTRACTION.id_intensity_level_touch = INTENSITY_LEVEL_TOUCH.id_intensity_level
|
LEFT JOIN parts.DOG_Distraction_Intensity_Level INTENSITY_LEVEL_TOUCH ON t_DISTRACTION.id_intensity_level_touch = INTENSITY_LEVEL_TOUCH.id_intensity_level
|
||||||
@@ -590,6 +612,11 @@ CALL parts.p_dog_get_many_distraction (
|
|||||||
, '' -- a_ids_intensity_level_emotional
|
, '' -- a_ids_intensity_level_emotional
|
||||||
, '' -- a_names_intensity_level_emotional
|
, '' -- a_names_intensity_level_emotional
|
||||||
|
|
||||||
|
, 1 -- a_get_all_intensity_level_scent
|
||||||
|
, 0 -- a_get_inactive_intensity_level_scent
|
||||||
|
, '' -- a_ids_intensity_level_scent
|
||||||
|
, '' -- a_names_intensity_level_scent
|
||||||
|
|
||||||
, 1 -- a_get_all_intensity_level_sight
|
, 1 -- a_get_all_intensity_level_sight
|
||||||
, 0 -- a_get_inactive_intensity_level_sight
|
, 0 -- a_get_inactive_intensity_level_sight
|
||||||
, '' -- a_ids_intensity_level_sight
|
, '' -- a_ids_intensity_level_sight
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ CREATE PROCEDURE parts.p_dog_calc_assessment_command_modality_link (
|
|||||||
, IN a_ids_link TEXT
|
, IN a_ids_link TEXT
|
||||||
, IN a_min_distance_from_handler_link FLOAT
|
, IN a_min_distance_from_handler_link FLOAT
|
||||||
, IN a_max_distance_from_handler_link FLOAT
|
, IN a_max_distance_from_handler_link FLOAT
|
||||||
, IN a_value_is_in_sight_of_handler_link INT
|
, IN a_value_is_in_sight_of_handler_link BIT
|
||||||
, IN a_value_is_in_scent_range_of_handler_link INT
|
, IN a_value_is_in_scent_range_of_handler_link BIT
|
||||||
, IN a_value_is_in_hearing_range_of_handler_link INT
|
, IN a_value_is_in_hearing_range_of_handler_link BIT
|
||||||
, IN a_value_is_on_lead_link INT
|
, IN a_value_is_on_lead_link BIT
|
||||||
, IN a_min_trial_count_link FLOAT
|
, IN a_min_trial_count_link FLOAT
|
||||||
, IN a_max_trial_count_link FLOAT
|
, IN a_max_trial_count_link FLOAT
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ CREATE PROCEDURE parts.p_dog_get_many_assessment_command_modality_link (
|
|||||||
, IN a_ids_link TEXT
|
, IN a_ids_link TEXT
|
||||||
, IN a_min_distance_from_handler_link FLOAT
|
, IN a_min_distance_from_handler_link FLOAT
|
||||||
, IN a_max_distance_from_handler_link FLOAT
|
, IN a_max_distance_from_handler_link FLOAT
|
||||||
, IN a_value_is_in_sight_of_handler_link INT
|
, IN a_value_is_in_sight_of_handler_link BIT
|
||||||
, IN a_value_is_in_scent_range_of_handler_link INT
|
, IN a_value_is_in_scent_range_of_handler_link BIT
|
||||||
, IN a_value_is_in_hearing_range_of_handler_link INT
|
, IN a_value_is_in_hearing_range_of_handler_link BIT
|
||||||
, IN a_value_is_on_lead_link INT
|
, IN a_value_is_on_lead_link BIT
|
||||||
, IN a_min_trial_count_link FLOAT
|
, IN a_min_trial_count_link FLOAT
|
||||||
, IN a_max_trial_count_link FLOAT
|
, IN a_max_trial_count_link FLOAT
|
||||||
|
|
||||||
@@ -63,6 +63,7 @@ CREATE PROCEDURE parts.p_dog_get_many_assessment_command_modality_link (
|
|||||||
, IN a_get_inactive_bribe BIT
|
, IN a_get_inactive_bribe BIT
|
||||||
, IN a_ids_bribe TEXT
|
, IN a_ids_bribe TEXT
|
||||||
, IN a_names_bribe TEXT
|
, IN a_names_bribe TEXT
|
||||||
|
|
||||||
, IN a_require_all_id_search_filters_met BIT
|
, IN a_require_all_id_search_filters_met BIT
|
||||||
, IN a_require_any_id_search_filters_met BIT
|
, IN a_require_any_id_search_filters_met BIT
|
||||||
, IN a_require_all_non_id_search_filters_met BIT
|
, IN a_require_all_non_id_search_filters_met BIT
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
|
|
||||||
USE parts;
|
USE parts;
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS parts.p_dog_get_many_colour;
|
DROP PROCEDURE IF EXISTS parts.p_dog_get_many_response_quality_metric;
|
||||||
|
|
||||||
DELIMITER //
|
DELIMITER //
|
||||||
CREATE PROCEDURE parts.p_dog_get_many_colour (
|
CREATE PROCEDURE parts.p_dog_get_many_response_quality_metric (
|
||||||
IN a_id_user INT
|
IN a_id_user INT
|
||||||
, IN a_get_all_colour BIT
|
, IN a_get_all_response_quality_metric BIT
|
||||||
, IN a_get_inactive_colour BIT
|
, IN a_get_inactive_response_quality_metric BIT
|
||||||
, IN a_ids_colour TEXT
|
, IN a_ids_response_quality_metric TEXT
|
||||||
, IN a_names_colour TEXT
|
, IN a_names_response_quality_metric TEXT
|
||||||
, IN a_require_all_id_search_filters_met BIT
|
, IN a_require_all_id_search_filters_met BIT
|
||||||
, IN a_require_any_id_search_filters_met BIT
|
, IN a_require_any_id_search_filters_met BIT
|
||||||
, IN a_require_all_non_id_search_filters_met BIT
|
, IN a_require_all_non_id_search_filters_met BIT
|
||||||
@@ -86,10 +86,10 @@ BEGIN
|
|||||||
|
|
||||||
SET a_id_user := IFNULL(a_id_user, 0);
|
SET a_id_user := IFNULL(a_id_user, 0);
|
||||||
/*
|
/*
|
||||||
SET a_get_all_colour := IFNULL(a_get_all_colour, 0);
|
SET a_get_all_response_quality_metric := IFNULL(a_get_all_response_quality_metric, 0);
|
||||||
SET a_get_inactive_colour := IFNULL(a_get_inactive_colour, 0);
|
SET a_get_inactive_response_quality_metric := IFNULL(a_get_inactive_response_quality_metric, 0);
|
||||||
SET a_ids_colour := TRIM(IFNULL(a_ids_colour, ''));
|
SET a_ids_response_quality_metric := TRIM(IFNULL(a_ids_response_quality_metric, ''));
|
||||||
SET a_names_colour := TRIM(IFNULL(a_names_colour, ''));
|
SET a_names_response_quality_metric := TRIM(IFNULL(a_names_response_quality_metric, ''));
|
||||||
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
|
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
|
||||||
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
|
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
|
||||||
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
|
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
|
||||||
@@ -100,10 +100,10 @@ BEGIN
|
|||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT
|
SELECT
|
||||||
a_id_user
|
a_id_user
|
||||||
, a_get_all_colour
|
, a_get_all_response_quality_metric
|
||||||
, a_get_inactive_colour
|
, a_get_inactive_response_quality_metric
|
||||||
, a_ids_colour
|
, a_ids_response_quality_metric
|
||||||
, a_names_colour
|
, a_names_response_quality_metric
|
||||||
, a_require_all_id_search_filters_met
|
, a_require_all_id_search_filters_met
|
||||||
, a_require_any_id_search_filters_met
|
, a_require_any_id_search_filters_met
|
||||||
, a_require_all_non_id_search_filters_met
|
, a_require_all_non_id_search_filters_met
|
||||||
@@ -121,16 +121,18 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Colour;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Response_Quality_Metric;
|
||||||
|
|
||||||
CREATE TEMPORARY TABLE tmp_Colour (
|
CREATE TEMPORARY TABLE tmp_Response_Quality_Metric (
|
||||||
id_colour INT NOT NULL
|
id_metric INT NOT NULL
|
||||||
, code VARCHAR(250)
|
, id_unit_measurement INT
|
||||||
|
, code VARCHAR(250)
|
||||||
, name VARCHAR(250)
|
, name VARCHAR(250)
|
||||||
|
, value_min DOUBLE
|
||||||
|
, value_max DOUBLE
|
||||||
, active BIT
|
, active BIT
|
||||||
|
, does_meet_id_filters BIT NOT NULL
|
||||||
, does_meet_id_filters BIT
|
, does_meet_non_id_filters BIT NOT NULL
|
||||||
, does_meet_non_id_filters BIT
|
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
|
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
|
||||||
@@ -207,7 +209,7 @@ BEGIN
|
|||||||
VALUES (
|
VALUES (
|
||||||
v_id_type_error_no_permission
|
v_id_type_error_no_permission
|
||||||
, v_code_type_error_no_permission
|
, v_code_type_error_no_permission
|
||||||
, 'You do not have permission to view Colours.'
|
, 'You do not have permission to view RESPONSE_QUALITY_METRIC.'
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
END IF;
|
END IF;
|
||||||
@@ -218,16 +220,16 @@ BEGIN
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
-- Call Colour Calc
|
-- Call Response_Quality_Metric Calc
|
||||||
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT
|
SELECT
|
||||||
v_guid -- a_guid
|
v_guid -- a_guid
|
||||||
, a_id_user -- a_id_user
|
, a_id_user -- a_id_user
|
||||||
, a_get_all_colour -- a_get_all_colour
|
, a_get_all_response_quality_metric -- a_get_all_response_quality_metric
|
||||||
, a_get_inactive_colour -- a_get_inactive_colour
|
, a_get_inactive_response_quality_metric -- a_get_inactive_response_quality_metric
|
||||||
, a_ids_colour -- a_ids_colour
|
, a_ids_response_quality_metric -- a_ids_response_quality_metric
|
||||||
, a_names_colour -- a_names_colour
|
, a_names_response_quality_metric -- a_names_response_quality_metric
|
||||||
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
||||||
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
||||||
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||||
@@ -237,13 +239,13 @@ BEGIN
|
|||||||
;
|
;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
CALL parts.p_dog_calc_colour (
|
CALL parts.p_dog_calc_response_quality_metric (
|
||||||
v_guid -- a_guid
|
v_guid -- a_guid
|
||||||
, a_id_user -- a_id_user
|
, a_id_user -- a_id_user
|
||||||
, a_get_all_colour -- a_get_all_colour
|
, a_get_all_response_quality_metric -- a_get_all_response_quality_metric
|
||||||
, a_get_inactive_colour -- a_get_inactive_colour
|
, a_get_inactive_response_quality_metric -- a_get_inactive_response_quality_metric
|
||||||
, a_ids_colour -- a_ids_colour
|
, a_ids_response_quality_metric -- a_ids_response_quality_metric
|
||||||
, a_names_colour -- a_names_colour
|
, a_names_response_quality_metric -- a_names_response_quality_metric
|
||||||
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
||||||
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
||||||
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||||
@@ -253,60 +255,72 @@ BEGIN
|
|||||||
);
|
);
|
||||||
|
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT COUNT(*) FROM parts.DOG_Colour_Temp;
|
SELECT COUNT(*) FROM parts.DOG_Response_Quality_Metric_Temp;
|
||||||
SELECT * FROM parts.DOG_Colour_Temp;
|
SELECT * FROM parts.DOG_Response_Quality_Metric_Temp;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
INSERT INTO tmp_Colour (
|
INSERT INTO tmp_Response_Quality_Metric (
|
||||||
id_colour
|
id_metric
|
||||||
|
, id_unit_measurement
|
||||||
, code
|
, code
|
||||||
, name
|
, name
|
||||||
|
, value_min
|
||||||
|
, value_max
|
||||||
, active
|
, active
|
||||||
|
|
||||||
, does_meet_id_filters
|
, does_meet_id_filters
|
||||||
, does_meet_non_id_filters
|
, does_meet_non_id_filters
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
COLOUR_T.id_colour
|
RESPONSE_QUALITY_METRIC_T.id_metric
|
||||||
, COLOUR_T.code
|
, RESPONSE_QUALITY_METRIC_T.id_unit_measurement
|
||||||
, COLOUR_T.name
|
, RESPONSE_QUALITY_METRIC_T.code
|
||||||
, COLOUR_T.active
|
, RESPONSE_QUALITY_METRIC_T.name
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.value_min
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.value_max
|
||||||
|
, RESPONSE_QUALITY_METRIC_T.active
|
||||||
|
|
||||||
, COLOUR_T.does_meet_id_filters
|
, RESPONSE_QUALITY_METRIC_T.does_meet_id_filters
|
||||||
, COLOUR_T.does_meet_non_id_filters
|
, RESPONSE_QUALITY_METRIC_T.does_meet_non_id_filters
|
||||||
FROM parts.DOG_Colour_Temp COLOUR_T
|
FROM parts.DOG_Response_Quality_Metric_Temp RESPONSE_QUALITY_METRIC_T
|
||||||
WHERE COLOUR_T.GUID = v_guid
|
WHERE RESPONSE_QUALITY_METRIC_T.GUID = v_guid
|
||||||
;
|
;
|
||||||
|
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT COUNT(*) FROM tmp_Colour;
|
SELECT COUNT(*) FROM tmp_Response_Quality_Metric;
|
||||||
SELECT * FROM tmp_Colour;
|
SELECT * FROM tmp_Response_Quality_Metric;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- Filter outputs
|
-- Filter outputs
|
||||||
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT * FROM tmp_Colour;
|
SELECT * FROM tmp_Response_Quality_Metric;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
DELETE FROM tmp_Colour;
|
DELETE FROM tmp_Response_Quality_Metric;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
-- Outputs
|
-- Outputs
|
||||||
-- Colours
|
-- RESPONSE_QUALITY_METRIC
|
||||||
SELECT
|
SELECT
|
||||||
t_COLOURS.id_colour
|
t_RESPONSE_QUALITY_METRIC.id_metric
|
||||||
, t_COLOURS.code
|
, t_RESPONSE_QUALITY_METRIC.id_unit_measurement
|
||||||
, t_COLOURS.name
|
, UNIT_MEASUREMENT.name_singular AS name_singular_unit_measurement
|
||||||
, t_COLOURS.active
|
, UNIT_MEASUREMENT.name_plural AS name_plural_unit_measurement
|
||||||
|
, UNIT_MEASUREMENT.symbol AS symbol_unit_measurement
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.code
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.name
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.value_min
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.value_max
|
||||||
|
, t_RESPONSE_QUALITY_METRIC.active
|
||||||
|
|
||||||
, t_COLOURS.does_meet_id_filters
|
, t_RESPONSE_QUALITY_METRIC.does_meet_id_filters
|
||||||
, t_COLOURS.does_meet_non_id_filters
|
, t_RESPONSE_QUALITY_METRIC.does_meet_non_id_filters
|
||||||
FROM tmp_Colour t_COLOURS
|
FROM tmp_Response_Quality_Metric t_RESPONSE_QUALITY_METRIC
|
||||||
LEFT JOIN parts.DOG_Colour COLOURS ON t_COLOURS.id_colour = COLOURS.id_colour
|
LEFT JOIN parts.DOG_Response_Quality_Metric RESPONSE_QUALITY_METRIC ON t_RESPONSE_QUALITY_METRIC.id_metric = RESPONSE_QUALITY_METRIC.id_metric
|
||||||
ORDER BY t_COLOURS.name
|
LEFT JOIN parts.DOG_Unit_Measurement UNIT_MEASUREMENT ON t_RESPONSE_QUALITY_METRIC.id_unit_measurement = UNIT_MEASUREMENT.id_unit_measurement
|
||||||
|
ORDER BY t_RESPONSE_QUALITY_METRIC.name
|
||||||
;
|
;
|
||||||
|
|
||||||
-- Errors
|
-- Errors
|
||||||
@@ -325,16 +339,16 @@ BEGIN
|
|||||||
;
|
;
|
||||||
|
|
||||||
IF a_debug = 1 AND v_can_view = 1 THEN
|
IF a_debug = 1 AND v_can_view = 1 THEN
|
||||||
SELECT * FROM tmp_Colour;
|
SELECT * FROM tmp_Response_Quality_Metric;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
CALL parts.p_dog_clear_calc_colour(
|
CALL parts.p_dog_clear_calc_response_quality_metric(
|
||||||
v_guid -- a_guid
|
v_guid -- a_guid
|
||||||
, 0 -- a_debug
|
, 0 -- a_debug
|
||||||
);
|
);
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Colour;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Response_Quality_Metric;
|
||||||
|
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
CALL parts.p_core_debug_timing_reporting ( v_time_start );
|
CALL parts.p_core_debug_timing_reporting ( v_time_start );
|
||||||
@@ -345,12 +359,12 @@ DELIMITER ;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
CALL parts.p_dog_get_many_colour (
|
CALL parts.p_dog_get_many_response_quality_metric (
|
||||||
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
||||||
, 1 -- a_get_all_colour
|
, 1 -- a_get_all_response_quality_metric
|
||||||
, 0 -- a_get_inactive_colour
|
, 0 -- a_get_inactive_response_quality_metric
|
||||||
, '' -- a_ids_colour
|
, '' -- a_ids_response_quality_metric
|
||||||
, '' -- a_names_colour
|
, '' -- a_names_response_quality_metric
|
||||||
, 1 -- a_require_all_id_search_filters_met
|
, 1 -- a_require_all_id_search_filters_met
|
||||||
, 1 -- a_require_any_id_search_filters_met
|
, 1 -- a_require_any_id_search_filters_met
|
||||||
, 0 -- a_require_all_non_id_search_filters_met
|
, 0 -- a_require_all_non_id_search_filters_met
|
||||||
@@ -359,12 +373,12 @@ CALL parts.p_dog_get_many_colour (
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
CALL demo.p_dog_get_many_colour (
|
CALL demo.p_dog_get_many_response_quality_metric (
|
||||||
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
||||||
, 1 -- a_get_all_colour
|
, 1 -- a_get_all_response_quality_metric
|
||||||
, 0 -- a_get_inactive_colour
|
, 0 -- a_get_inactive_response_quality_metric
|
||||||
, '' -- a_ids_colour
|
, '' -- a_ids_response_quality_metric
|
||||||
, 'pat,point' -- a_names_colour
|
, 'pat,point' -- a_names_response_quality_metric
|
||||||
, 1 -- a_require_all_id_search_filters_met
|
, 1 -- a_require_all_id_search_filters_met
|
||||||
, 1 -- a_require_any_id_search_filters_met
|
, 1 -- a_require_any_id_search_filters_met
|
||||||
, 0 -- a_require_all_non_id_search_filters_met
|
, 0 -- a_require_all_non_id_search_filters_met
|
||||||
|
|||||||
@@ -68,8 +68,8 @@ BEGIN
|
|||||||
, ERROR_TYPE.name
|
, ERROR_TYPE.name
|
||||||
, ERROR_TYPE.description
|
, ERROR_TYPE.description
|
||||||
, ERROR_TYPE.is_breaking_error
|
, ERROR_TYPE.is_breaking_error
|
||||||
, ERROR_TYPE.background_obedience_level
|
, ERROR_TYPE.background_colour
|
||||||
, ERROR_TYPE.text_obedience_level
|
, ERROR_TYPE.text_colour
|
||||||
, t_ERROR.msg
|
, t_ERROR.msg
|
||||||
FROM tmp_Msg_Error_Calc_Obedience_Level t_ERROR
|
FROM tmp_Msg_Error_Calc_Obedience_Level t_ERROR
|
||||||
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
@@ -481,8 +481,8 @@ BEGIN
|
|||||||
, ERROR_TYPE.name
|
, ERROR_TYPE.name
|
||||||
, ERROR_TYPE.description
|
, ERROR_TYPE.description
|
||||||
, ERROR_TYPE.is_breaking_error
|
, ERROR_TYPE.is_breaking_error
|
||||||
, ERROR_TYPE.background_obedience_level
|
, ERROR_TYPE.background_colour
|
||||||
, ERROR_TYPE.text_obedience_level
|
, ERROR_TYPE.text_colour
|
||||||
, t_ERROR.msg
|
, t_ERROR.msg
|
||||||
FROM tmp_Msg_Error_Calc_Obedience_Level t_ERROR
|
FROM tmp_Msg_Error_Calc_Obedience_Level t_ERROR
|
||||||
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ BEGIN
|
|||||||
, ERROR_TYPE.name
|
, ERROR_TYPE.name
|
||||||
, ERROR_TYPE.description
|
, ERROR_TYPE.description
|
||||||
, ERROR_TYPE.is_breaking_error
|
, ERROR_TYPE.is_breaking_error
|
||||||
, ERROR_TYPE.background_obedience_level
|
, ERROR_TYPE.background_colour
|
||||||
, ERROR_TYPE.text_obedience_level
|
, ERROR_TYPE.text_colour
|
||||||
, t_ERROR.msg
|
, t_ERROR.msg
|
||||||
FROM tmp_Msg_Error t_ERROR
|
FROM tmp_Msg_Error t_ERROR
|
||||||
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
@@ -317,8 +317,8 @@ BEGIN
|
|||||||
, ERROR_TYPE.name
|
, ERROR_TYPE.name
|
||||||
, ERROR_TYPE.description
|
, ERROR_TYPE.description
|
||||||
, ERROR_TYPE.is_breaking_error
|
, ERROR_TYPE.is_breaking_error
|
||||||
, ERROR_TYPE.background_obedience_level
|
, ERROR_TYPE.background_colour
|
||||||
, ERROR_TYPE.text_obedience_level
|
, ERROR_TYPE.text_colour
|
||||||
, t_ERROR.msg
|
, t_ERROR.msg
|
||||||
FROM tmp_Msg_Error t_ERROR
|
FROM tmp_Msg_Error t_ERROR
|
||||||
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,11 +1,11 @@
|
|||||||
|
|
||||||
USE parts;
|
USE parts;
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS parts.p_dog_clear_calc_colour;
|
DROP PROCEDURE IF EXISTS parts.p_dog_clear_calc_assessment_response;
|
||||||
DROP PROCEDURE IF EXISTS parts.p_colour_clear_calc_colour;
|
DROP PROCEDURE IF EXISTS parts.p_assessment_response_clear_calc_assessment_response;
|
||||||
|
|
||||||
DELIMITER //
|
DELIMITER //
|
||||||
CREATE PROCEDURE parts.p_dog_clear_calc_colour (
|
CREATE PROCEDURE parts.p_dog_clear_calc_assessment_response (
|
||||||
IN a_guid BINARY(36)
|
IN a_guid BINARY(36)
|
||||||
, IN a_debug BIT
|
, IN a_debug BIT
|
||||||
)
|
)
|
||||||
@@ -17,9 +17,9 @@ BEGIN
|
|||||||
|
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
|
|
||||||
DELETE COLOURS_T
|
DELETE ASSESSMENT_RESPONSES_T
|
||||||
FROM parts.DOG_Colour_Temp COLOURS_T
|
FROM parts.DOG_Assessment_Response_Temp ASSESSMENT_RESPONSES_T
|
||||||
WHERE COLOURS_T.GUID = a_guid
|
WHERE ASSESSMENT_RESPONSES_T.GUID = a_guid
|
||||||
;
|
;
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
@@ -32,7 +32,7 @@ DELIMITER ;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
CALL parts.p_dog_clear_calc_colour (
|
CALL parts.p_dog_clear_calc_assessment_response (
|
||||||
'crips ' -- a_guid
|
'crips ' -- a_guid
|
||||||
, 1 -- debug
|
, 1 -- debug
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,15 +1,82 @@
|
|||||||
|
|
||||||
USE parts;
|
USE parts;
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS parts.p_dog_get_many_colour;
|
DROP PROCEDURE IF EXISTS parts.p_dog_get_many_assessment_response;
|
||||||
|
|
||||||
DELIMITER //
|
DELIMITER //
|
||||||
CREATE PROCEDURE parts.p_dog_get_many_colour (
|
CREATE PROCEDURE parts.p_dog_get_many_assessment_response (
|
||||||
IN a_id_user INT
|
IN a_id_user INT
|
||||||
, IN a_get_all_colour BIT
|
, IN a_get_all_assessment_response BIT
|
||||||
, IN a_get_inactive_colour BIT
|
, IN a_get_inactive_assessment_response BIT
|
||||||
, IN a_ids_colour TEXT
|
, IN a_ids_assessment_response TEXT
|
||||||
, IN a_names_colour TEXT
|
, IN a_notes_assessment_response TEXT
|
||||||
|
, IN a_min_value_measured_assessment_response INT
|
||||||
|
, IN a_max_value_measured_assessment_response INT
|
||||||
|
|
||||||
|
, IN a_get_all_ACM_link BIT
|
||||||
|
, IN a_get_inactive_ACM_link BIT
|
||||||
|
, IN a_ids_ACM_link TEXT
|
||||||
|
, IN a_min_distance_from_handler_ACM_link FLOAT
|
||||||
|
, IN a_max_distance_from_handler_ACM_link FLOAT
|
||||||
|
, IN a_value_is_in_sight_of_handler_ACM_link INT
|
||||||
|
, IN a_value_is_in_scent_range_of_handler_ACM_link INT
|
||||||
|
, IN a_value_is_in_hearing_range_of_handler_ACM_link INT
|
||||||
|
, IN a_value_is_on_lead_ACM_link INT
|
||||||
|
, IN a_min_trial_count_ACM_link FLOAT
|
||||||
|
, IN a_max_trial_count_ACM_link FLOAT
|
||||||
|
, IN a_get_all_assessment BIT
|
||||||
|
, IN a_get_inactive_assessment BIT
|
||||||
|
, IN a_ids_assessment TEXT
|
||||||
|
, IN a_notes_assessment TEXT
|
||||||
|
, IN a_min_temperature_assessment DECIMAL(5, 2)
|
||||||
|
, IN a_max_temperature_assessment DECIMAL(5, 2)
|
||||||
|
, IN a_get_all_weather BIT
|
||||||
|
, IN a_get_inactive_weather BIT
|
||||||
|
, IN a_ids_weather TEXT
|
||||||
|
, IN a_names_weather TEXT
|
||||||
|
, IN a_get_all_lighting_level BIT
|
||||||
|
, IN a_get_inactive_lighting_level BIT
|
||||||
|
, IN a_ids_lighting_level TEXT
|
||||||
|
, IN a_names_lighting_level TEXT
|
||||||
|
, IN a_get_all_location BIT
|
||||||
|
, IN a_get_inactive_location BIT
|
||||||
|
, IN a_ids_location TEXT
|
||||||
|
, IN a_names_location TEXT
|
||||||
|
, IN a_get_all_user_handler BIT
|
||||||
|
, IN a_get_inactive_user_handler BIT
|
||||||
|
, IN a_ids_user_handler TEXT
|
||||||
|
-- , IN a_auth0_ids_user_handler TEXT
|
||||||
|
, IN a_names_user_handler TEXT
|
||||||
|
, IN a_emails_user_handler TEXT
|
||||||
|
, IN a_get_all_command_category BIT
|
||||||
|
, IN a_get_inactive_command_category BIT
|
||||||
|
, IN a_ids_command_category TEXT
|
||||||
|
, IN a_names_command_category TEXT
|
||||||
|
, IN a_get_all_command BIT
|
||||||
|
, IN a_get_inactive_command BIT
|
||||||
|
, IN a_ids_command TEXT
|
||||||
|
, IN a_names_command TEXT
|
||||||
|
, IN a_hand_signal_default_descriptions_command TEXT
|
||||||
|
, IN a_notes_command TEXT
|
||||||
|
, IN a_get_all_command_modality BIT
|
||||||
|
, IN a_get_inactive_command_modality BIT
|
||||||
|
, IN a_ids_command_modality TEXT
|
||||||
|
, IN a_names_command_modality TEXT
|
||||||
|
, IN a_get_all_bribe BIT
|
||||||
|
, IN a_get_inactive_bribe BIT
|
||||||
|
, IN a_ids_bribe TEXT
|
||||||
|
, IN a_names_bribe TEXT
|
||||||
|
|
||||||
|
, IN a_get_all_response_quality_metric BIT
|
||||||
|
, IN a_get_inactive_response_quality_metric BIT
|
||||||
|
, IN a_ids_response_quality_metric TEXT
|
||||||
|
, IN a_names_response_quality_metric TEXT
|
||||||
|
|
||||||
|
, IN a_get_all_obedience_level BIT
|
||||||
|
, IN a_get_inactive_obedience_level BIT
|
||||||
|
, IN a_ids_obedience_level TEXT
|
||||||
|
, IN a_names_obedience_level TEXT
|
||||||
|
|
||||||
, IN a_require_all_id_search_filters_met BIT
|
, IN a_require_all_id_search_filters_met BIT
|
||||||
, IN a_require_any_id_search_filters_met BIT
|
, IN a_require_any_id_search_filters_met BIT
|
||||||
, IN a_require_all_non_id_search_filters_met BIT
|
, IN a_require_all_non_id_search_filters_met BIT
|
||||||
@@ -86,24 +153,85 @@ BEGIN
|
|||||||
|
|
||||||
SET a_id_user := IFNULL(a_id_user, 0);
|
SET a_id_user := IFNULL(a_id_user, 0);
|
||||||
/*
|
/*
|
||||||
SET a_get_all_colour := IFNULL(a_get_all_colour, 0);
|
Filters handled by Calc
|
||||||
SET a_get_inactive_colour := IFNULL(a_get_inactive_colour, 0);
|
|
||||||
SET a_ids_colour := TRIM(IFNULL(a_ids_colour, ''));
|
|
||||||
SET a_names_colour := TRIM(IFNULL(a_names_colour, ''));
|
|
||||||
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
|
|
||||||
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
|
|
||||||
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
|
|
||||||
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
|
|
||||||
*/
|
*/
|
||||||
SET a_debug := IFNULL(a_debug, 0);
|
SET a_debug := IFNULL(a_debug, 0);
|
||||||
|
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT
|
SELECT
|
||||||
a_id_user
|
a_id_user
|
||||||
, a_get_all_colour
|
|
||||||
, a_get_inactive_colour
|
, a_get_all_assessment_response
|
||||||
, a_ids_colour
|
, a_get_inactive_assessment_response
|
||||||
, a_names_colour
|
, a_ids_assessment_response
|
||||||
|
, a_notes_assessment_response
|
||||||
|
, a_min_value_measured_assessment_response
|
||||||
|
, a_max_value_measured_assessment_response
|
||||||
|
|
||||||
|
, a_get_all_ACM_link
|
||||||
|
, a_get_inactive_ACM_link
|
||||||
|
, a_ids_ACM_link
|
||||||
|
, a_min_distance_from_handler_ACM_link
|
||||||
|
, a_max_distance_from_handler_ACM_link
|
||||||
|
, a_value_is_in_sight_of_handler_ACM_link
|
||||||
|
, a_value_is_in_scent_range_of_handler_ACM_link
|
||||||
|
, a_value_is_in_hearing_range_of_handler_ACM_link
|
||||||
|
, a_value_is_on_lead_ACM_link
|
||||||
|
, a_min_trial_count_ACM_link
|
||||||
|
, a_max_trial_count_ACM_link
|
||||||
|
, a_get_all_assessment
|
||||||
|
, a_get_inactive_assessment
|
||||||
|
, a_ids_assessment
|
||||||
|
, a_notes_assessment
|
||||||
|
, a_min_temperature_assessment
|
||||||
|
, a_max_temperature_assessment
|
||||||
|
, a_get_all_weather
|
||||||
|
, a_get_inactive_weather
|
||||||
|
, a_ids_weather
|
||||||
|
, a_names_weather
|
||||||
|
, a_get_all_lighting_level
|
||||||
|
, a_get_inactive_lighting_level
|
||||||
|
, a_ids_lighting_level
|
||||||
|
, a_names_lighting_level
|
||||||
|
, a_get_all_location
|
||||||
|
, a_get_inactive_location
|
||||||
|
, a_ids_location
|
||||||
|
, a_names_location
|
||||||
|
, a_get_all_user_handler
|
||||||
|
, a_get_inactive_user_handler
|
||||||
|
, a_ids_user_handler
|
||||||
|
-- , a_auth0_ids_user_handler
|
||||||
|
, a_names_user_handler
|
||||||
|
, a_emails_user_handler
|
||||||
|
, a_get_all_command_category
|
||||||
|
, a_get_inactive_command_category
|
||||||
|
, a_ids_command_category
|
||||||
|
, a_names_command_category
|
||||||
|
, a_get_all_command
|
||||||
|
, a_get_inactive_command
|
||||||
|
, a_ids_command
|
||||||
|
, a_names_command
|
||||||
|
, a_hand_signal_default_descriptions_command
|
||||||
|
, a_notes_command
|
||||||
|
, a_get_all_command_modality
|
||||||
|
, a_get_inactive_command_modality
|
||||||
|
, a_ids_command_modality
|
||||||
|
, a_names_command_modality
|
||||||
|
, a_get_all_bribe
|
||||||
|
, a_get_inactive_bribe
|
||||||
|
, a_ids_bribe
|
||||||
|
, a_names_bribe
|
||||||
|
|
||||||
|
, a_get_all_response_quality_metric
|
||||||
|
, a_get_inactive_response_quality_metric
|
||||||
|
, a_ids_response_quality_metric
|
||||||
|
, a_names_response_quality_metric
|
||||||
|
|
||||||
|
, a_get_all_obedience_level
|
||||||
|
, a_get_inactive_obedience_level
|
||||||
|
, a_ids_obedience_level
|
||||||
|
, a_names_obedience_level
|
||||||
|
|
||||||
, a_require_all_id_search_filters_met
|
, a_require_all_id_search_filters_met
|
||||||
, a_require_any_id_search_filters_met
|
, a_require_any_id_search_filters_met
|
||||||
, a_require_all_non_id_search_filters_met
|
, a_require_all_non_id_search_filters_met
|
||||||
@@ -121,12 +249,15 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Colour;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Response;
|
||||||
|
|
||||||
CREATE TEMPORARY TABLE tmp_Colour (
|
CREATE TEMPORARY TABLE tmp_Assessment_Response (
|
||||||
id_colour INT NOT NULL
|
id_response INT NOT NULL
|
||||||
, code VARCHAR(250)
|
, id_assessment_command_modality_link INT
|
||||||
, name VARCHAR(250)
|
, id_response_quality_metric INT
|
||||||
|
, id_obedience_level INT
|
||||||
|
, value_measured DOUBLE
|
||||||
|
, notes TEXT
|
||||||
, active BIT
|
, active BIT
|
||||||
|
|
||||||
, does_meet_id_filters BIT
|
, does_meet_id_filters BIT
|
||||||
@@ -207,7 +338,7 @@ BEGIN
|
|||||||
VALUES (
|
VALUES (
|
||||||
v_id_type_error_no_permission
|
v_id_type_error_no_permission
|
||||||
, v_code_type_error_no_permission
|
, v_code_type_error_no_permission
|
||||||
, 'You do not have permission to view Colours.'
|
, 'You do not have permission to view Assessment_Responses.'
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
END IF;
|
END IF;
|
||||||
@@ -218,16 +349,84 @@ BEGIN
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
-- Call Colour Calc
|
-- Call Assessment_Response Calc
|
||||||
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT
|
SELECT
|
||||||
v_guid -- a_guid
|
v_guid -- a_guid
|
||||||
, a_id_user -- a_id_user
|
, a_id_user -- a_id_user
|
||||||
, a_get_all_colour -- a_get_all_colour
|
|
||||||
, a_get_inactive_colour -- a_get_inactive_colour
|
, a_get_all_assessment_response
|
||||||
, a_ids_colour -- a_ids_colour
|
, a_get_inactive_assessment_response
|
||||||
, a_names_colour -- a_names_colour
|
, a_ids_assessment_response
|
||||||
|
, a_notes_assessment_response
|
||||||
|
, a_min_value_measured_assessment_response
|
||||||
|
, a_max_value_measured_assessment_response
|
||||||
|
|
||||||
|
, a_get_all_ACM_link
|
||||||
|
, a_get_inactive_ACM_link
|
||||||
|
, a_ids_ACM_link
|
||||||
|
, a_min_distance_from_handler_ACM_link
|
||||||
|
, a_max_distance_from_handler_ACM_link
|
||||||
|
, a_value_is_in_sight_of_handler_ACM_link
|
||||||
|
, a_value_is_in_scent_range_of_handler_ACM_link
|
||||||
|
, a_value_is_in_hearing_range_of_handler_ACM_link
|
||||||
|
, a_value_is_on_lead_ACM_link
|
||||||
|
, a_min_trial_count_ACM_link
|
||||||
|
, a_max_trial_count_ACM_link
|
||||||
|
, a_get_all_assessment
|
||||||
|
, a_get_inactive_assessment
|
||||||
|
, a_ids_assessment
|
||||||
|
, a_notes_assessment
|
||||||
|
, a_min_temperature_assessment
|
||||||
|
, a_max_temperature_assessment
|
||||||
|
, a_get_all_weather
|
||||||
|
, a_get_inactive_weather
|
||||||
|
, a_ids_weather
|
||||||
|
, a_names_weather
|
||||||
|
, a_get_all_lighting_level
|
||||||
|
, a_get_inactive_lighting_level
|
||||||
|
, a_ids_lighting_level
|
||||||
|
, a_names_lighting_level
|
||||||
|
, a_get_all_location
|
||||||
|
, a_get_inactive_location
|
||||||
|
, a_ids_location
|
||||||
|
, a_names_location
|
||||||
|
, a_get_all_user_handler
|
||||||
|
, a_get_inactive_user_handler
|
||||||
|
, a_ids_user_handler
|
||||||
|
-- , a_auth0_ids_user_handler
|
||||||
|
, a_names_user_handler
|
||||||
|
, a_emails_user_handler
|
||||||
|
, a_get_all_command_category
|
||||||
|
, a_get_inactive_command_category
|
||||||
|
, a_ids_command_category
|
||||||
|
, a_names_command_category
|
||||||
|
, a_get_all_command
|
||||||
|
, a_get_inactive_command
|
||||||
|
, a_ids_command
|
||||||
|
, a_names_command
|
||||||
|
, a_hand_signal_default_descriptions_command
|
||||||
|
, a_notes_command
|
||||||
|
, a_get_all_command_modality
|
||||||
|
, a_get_inactive_command_modality
|
||||||
|
, a_ids_command_modality
|
||||||
|
, a_names_command_modality
|
||||||
|
, a_get_all_bribe
|
||||||
|
, a_get_inactive_bribe
|
||||||
|
, a_ids_bribe
|
||||||
|
, a_names_bribe
|
||||||
|
|
||||||
|
, a_get_all_response_quality_metric
|
||||||
|
, a_get_inactive_response_quality_metric
|
||||||
|
, a_ids_response_quality_metric
|
||||||
|
, a_names_response_quality_metric
|
||||||
|
|
||||||
|
, a_get_all_obedience_level
|
||||||
|
, a_get_inactive_obedience_level
|
||||||
|
, a_ids_obedience_level
|
||||||
|
, a_names_obedience_level
|
||||||
|
|
||||||
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
||||||
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
||||||
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||||
@@ -237,13 +436,81 @@ BEGIN
|
|||||||
;
|
;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
CALL parts.p_dog_calc_colour (
|
CALL parts.p_dog_calc_assessment_response (
|
||||||
v_guid -- a_guid
|
v_guid -- a_guid
|
||||||
, a_id_user -- a_id_user
|
, a_id_user -- a_id_user
|
||||||
, a_get_all_colour -- a_get_all_colour
|
|
||||||
, a_get_inactive_colour -- a_get_inactive_colour
|
, a_get_all_assessment_response
|
||||||
, a_ids_colour -- a_ids_colour
|
, a_get_inactive_assessment_response
|
||||||
, a_names_colour -- a_names_colour
|
, a_ids_assessment_response
|
||||||
|
, a_notes_assessment_response
|
||||||
|
, a_min_value_measured_assessment_response
|
||||||
|
, a_max_value_measured_assessment_response
|
||||||
|
|
||||||
|
, a_get_all_ACM_link
|
||||||
|
, a_get_inactive_ACM_link
|
||||||
|
, a_ids_ACM_link
|
||||||
|
, a_min_distance_from_handler_ACM_link
|
||||||
|
, a_max_distance_from_handler_ACM_link
|
||||||
|
, a_value_is_in_sight_of_handler_ACM_link
|
||||||
|
, a_value_is_in_scent_range_of_handler_ACM_link
|
||||||
|
, a_value_is_in_hearing_range_of_handler_ACM_link
|
||||||
|
, a_value_is_on_lead_ACM_link
|
||||||
|
, a_min_trial_count_ACM_link
|
||||||
|
, a_max_trial_count_ACM_link
|
||||||
|
, a_get_all_assessment
|
||||||
|
, a_get_inactive_assessment
|
||||||
|
, a_ids_assessment
|
||||||
|
, a_notes_assessment
|
||||||
|
, a_min_temperature_assessment
|
||||||
|
, a_max_temperature_assessment
|
||||||
|
, a_get_all_weather
|
||||||
|
, a_get_inactive_weather
|
||||||
|
, a_ids_weather
|
||||||
|
, a_names_weather
|
||||||
|
, a_get_all_lighting_level
|
||||||
|
, a_get_inactive_lighting_level
|
||||||
|
, a_ids_lighting_level
|
||||||
|
, a_names_lighting_level
|
||||||
|
, a_get_all_location
|
||||||
|
, a_get_inactive_location
|
||||||
|
, a_ids_location
|
||||||
|
, a_names_location
|
||||||
|
, a_get_all_user_handler
|
||||||
|
, a_get_inactive_user_handler
|
||||||
|
, a_ids_user_handler
|
||||||
|
-- , a_auth0_ids_user_handler
|
||||||
|
, a_names_user_handler
|
||||||
|
, a_emails_user_handler
|
||||||
|
, a_get_all_command_category
|
||||||
|
, a_get_inactive_command_category
|
||||||
|
, a_ids_command_category
|
||||||
|
, a_names_command_category
|
||||||
|
, a_get_all_command
|
||||||
|
, a_get_inactive_command
|
||||||
|
, a_ids_command
|
||||||
|
, a_names_command
|
||||||
|
, a_hand_signal_default_descriptions_command
|
||||||
|
, a_notes_command
|
||||||
|
, a_get_all_command_modality
|
||||||
|
, a_get_inactive_command_modality
|
||||||
|
, a_ids_command_modality
|
||||||
|
, a_names_command_modality
|
||||||
|
, a_get_all_bribe
|
||||||
|
, a_get_inactive_bribe
|
||||||
|
, a_ids_bribe
|
||||||
|
, a_names_bribe
|
||||||
|
|
||||||
|
, a_get_all_response_quality_metric
|
||||||
|
, a_get_inactive_response_quality_metric
|
||||||
|
, a_ids_response_quality_metric
|
||||||
|
, a_names_response_quality_metric
|
||||||
|
|
||||||
|
, a_get_all_obedience_level
|
||||||
|
, a_get_inactive_obedience_level
|
||||||
|
, a_ids_obedience_level
|
||||||
|
, a_names_obedience_level
|
||||||
|
|
||||||
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
|
||||||
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
|
||||||
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
|
||||||
@@ -253,60 +520,73 @@ BEGIN
|
|||||||
);
|
);
|
||||||
|
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT COUNT(*) FROM parts.DOG_Colour_Temp;
|
SELECT COUNT(*) FROM parts.DOG_Assessment_Response_Temp;
|
||||||
SELECT * FROM parts.DOG_Colour_Temp;
|
SELECT * FROM parts.DOG_Assessment_Response_Temp;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
INSERT INTO tmp_Colour (
|
INSERT INTO tmp_Assessment_Response (
|
||||||
id_colour
|
id_response
|
||||||
, code
|
, id_assessment_command_modality_link
|
||||||
, name
|
, id_response_quality_metric
|
||||||
|
, id_obedience_level
|
||||||
|
, value_measured
|
||||||
|
, notes
|
||||||
, active
|
, active
|
||||||
|
|
||||||
, does_meet_id_filters
|
, does_meet_id_filters
|
||||||
, does_meet_non_id_filters
|
, does_meet_non_id_filters
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
COLOUR_T.id_colour
|
ASSESSMENT_RESPONSE_T.id_response
|
||||||
, COLOUR_T.code
|
, ASSESSMENT_RESPONSE_T.id_assessment_command_modality_link
|
||||||
, COLOUR_T.name
|
, ASSESSMENT_RESPONSE_T.id_response_quality_metric
|
||||||
, COLOUR_T.active
|
, ASSESSMENT_RESPONSE_T.id_obedience_level
|
||||||
|
, ASSESSMENT_RESPONSE_T.value_measured
|
||||||
|
, ASSESSMENT_RESPONSE_T.notes
|
||||||
|
, ASSESSMENT_RESPONSE_T.active
|
||||||
|
|
||||||
, COLOUR_T.does_meet_id_filters
|
, ASSESSMENT_RESPONSE_T.does_meet_id_filters
|
||||||
, COLOUR_T.does_meet_non_id_filters
|
, ASSESSMENT_RESPONSE_T.does_meet_non_id_filters
|
||||||
FROM parts.DOG_Colour_Temp COLOUR_T
|
FROM parts.DOG_Assessment_Response_Temp ASSESSMENT_RESPONSE_T
|
||||||
WHERE COLOUR_T.GUID = v_guid
|
WHERE ASSESSMENT_RESPONSE_T.GUID = v_guid
|
||||||
;
|
;
|
||||||
|
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT COUNT(*) FROM tmp_Colour;
|
SELECT COUNT(*) FROM tmp_Assessment_Response;
|
||||||
SELECT * FROM tmp_Colour;
|
SELECT * FROM tmp_Assessment_Response;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- Filter outputs
|
-- Filter outputs
|
||||||
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
SELECT * FROM tmp_Colour;
|
SELECT * FROM tmp_Assessment_Response;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
DELETE FROM tmp_Colour;
|
DELETE FROM tmp_Assessment_Response;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
-- Outputs
|
-- Outputs
|
||||||
-- Colours
|
-- Assessment_Responses
|
||||||
SELECT
|
SELECT
|
||||||
t_COLOURS.id_colour
|
t_ASSESSMENT_RESPONSE.id_response
|
||||||
, t_COLOURS.code
|
, t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
|
||||||
, t_COLOURS.name
|
, t_ASSESSMENT_RESPONSE.id_response_quality_metric
|
||||||
, t_COLOURS.active
|
, RESPONSE_QUALITY_METRIC.name AS name_response_quality_metric
|
||||||
|
, t_ASSESSMENT_RESPONSE.id_obedience_level
|
||||||
|
, OBEDIENCE_LEVEL.name AS name_obedience_level
|
||||||
|
, t_ASSESSMENT_RESPONSE.value_measured
|
||||||
|
, t_ASSESSMENT_RESPONSE.notes
|
||||||
|
, t_ASSESSMENT_RESPONSE.active
|
||||||
|
|
||||||
, t_COLOURS.does_meet_id_filters
|
, t_ASSESSMENT_RESPONSE.does_meet_id_filters
|
||||||
, t_COLOURS.does_meet_non_id_filters
|
, t_ASSESSMENT_RESPONSE.does_meet_non_id_filters
|
||||||
FROM tmp_Colour t_COLOURS
|
FROM tmp_Assessment_Response t_ASSESSMENT_RESPONSE
|
||||||
LEFT JOIN parts.DOG_Colour COLOURS ON t_COLOURS.id_colour = COLOURS.id_colour
|
LEFT JOIN parts.DOG_Assessment_Response ASSESSMENT_RESPONSE ON t_ASSESSMENT_RESPONSE.id_response = ASSESSMENT_RESPONSE.id_response
|
||||||
ORDER BY t_COLOURS.name
|
LEFT JOIN parts.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_ASSESSMENT_RESPONSE.id_obedience_level = OBEDIENCE_LEVEL.id_obedience_level
|
||||||
|
LEFT JOIN parts.DOG_Response_Quality_Metric RESPONSE_QUALITY_METRIC ON t_ASSESSMENT_RESPONSE.id_response_quality_metric = RESPONSE_QUALITY_METRIC.id_metric
|
||||||
|
ORDER BY ASSESSMENT_RESPONSE.created_on DESC
|
||||||
;
|
;
|
||||||
|
|
||||||
-- Errors
|
-- Errors
|
||||||
@@ -325,16 +605,16 @@ BEGIN
|
|||||||
;
|
;
|
||||||
|
|
||||||
IF a_debug = 1 AND v_can_view = 1 THEN
|
IF a_debug = 1 AND v_can_view = 1 THEN
|
||||||
SELECT * FROM tmp_Colour;
|
SELECT * FROM tmp_Assessment_Response;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
CALL parts.p_dog_clear_calc_colour(
|
CALL parts.p_dog_clear_calc_assessment_response(
|
||||||
v_guid -- a_guid
|
v_guid -- a_guid
|
||||||
, 0 -- a_debug
|
, 0 -- a_debug
|
||||||
);
|
);
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp_Colour;
|
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Response;
|
||||||
|
|
||||||
IF a_debug = 1 THEN
|
IF a_debug = 1 THEN
|
||||||
CALL parts.p_core_debug_timing_reporting ( v_time_start );
|
CALL parts.p_core_debug_timing_reporting ( v_time_start );
|
||||||
@@ -345,26 +625,81 @@ DELIMITER ;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
CALL parts.p_dog_get_many_colour (
|
CALL parts.p_dog_get_many_assessment_response (
|
||||||
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
||||||
, 1 -- a_get_all_colour
|
|
||||||
, 0 -- a_get_inactive_colour
|
, 1 -- a_get_all_assessment_response
|
||||||
, '' -- a_ids_colour
|
, 0 -- a_get_inactive_assessment_response
|
||||||
, '' -- a_names_colour
|
, '' -- a_ids_assessment_response
|
||||||
, 1 -- a_require_all_id_search_filters_met
|
, '' -- a_notes_assessment_response
|
||||||
, 1 -- a_require_any_id_search_filters_met
|
, NULL -- a_min_value_measured_assessment_response
|
||||||
, 0 -- a_require_all_non_id_search_filters_met
|
, NULL -- a_max_value_measured_assessment_response
|
||||||
, 1 -- a_require_any_non_id_search_filters_met
|
|
||||||
, 1 -- a_debug
|
, 1 -- a_get_all_ACM_link
|
||||||
);
|
, 0 -- a_get_inactive_ACM_link
|
||||||
|
, '' -- a_ids_ACM_link
|
||||||
|
, NULL -- a_min_distance_from_handler_ACM_link
|
||||||
|
, NULL -- a_max_distance_from_handler_ACM_link
|
||||||
|
, NULL -- a_value_is_in_sight_of_handler_ACM_link
|
||||||
|
, NULL -- a_value_is_in_scent_range_of_handler_ACM_link
|
||||||
|
, NULL -- a_value_is_in_hearing_range_of_handler_ACM_link
|
||||||
|
, NULL -- a_value_is_on_lead_ACM_link
|
||||||
|
, NULL -- a_min_trial_count_ACM_link
|
||||||
|
, NULL -- a_max_trial_count_ACM_link
|
||||||
|
, 1 -- a_get_all_assessment
|
||||||
|
, 0 -- a_get_inactive_assessment
|
||||||
|
, '' -- a_ids_assessment
|
||||||
|
, '' -- a_notes_assessment
|
||||||
|
, NULL -- a_min_temperature_assessment
|
||||||
|
, NULL -- a_max_temperature_assessment
|
||||||
|
, 1 -- a_get_all_weather
|
||||||
|
, 0 -- a_get_inactive_weather
|
||||||
|
, '' -- a_ids_weather
|
||||||
|
, '' -- a_names_weather
|
||||||
|
, 1 -- a_get_all_lighting_level
|
||||||
|
, 0 -- a_get_inactive_lighting_level
|
||||||
|
, '' -- a_ids_lighting_level
|
||||||
|
, '' -- a_names_lighting_level
|
||||||
|
, 1 -- a_get_all_location
|
||||||
|
, 0 -- a_get_inactive_location
|
||||||
|
, '' -- a_ids_location
|
||||||
|
, '' -- a_names_location
|
||||||
|
, 1 -- a_get_all_user_handler
|
||||||
|
, 0 -- a_get_inactive_user_handler
|
||||||
|
, '' -- a_ids_user_handler
|
||||||
|
-- , IN a_auth0_ids_user_handler TEXT
|
||||||
|
, '' -- a_names_user_handler
|
||||||
|
, '' -- a_emails_user_handler
|
||||||
|
, 1 -- a_get_all_command_category
|
||||||
|
, 0 -- a_get_inactive_command_category
|
||||||
|
, '' -- a_ids_command_category
|
||||||
|
, '' -- a_names_command_category
|
||||||
|
, 1 -- a_get_all_command
|
||||||
|
, 0 -- a_get_inactive_command
|
||||||
|
, '' -- a_ids_command
|
||||||
|
, '' -- a_names_command
|
||||||
|
, '' -- a_hand_signal_default_descriptions_command
|
||||||
|
, '' -- a_notes_command
|
||||||
|
, 1 -- a_get_all_command_modality
|
||||||
|
, 0 -- a_get_inactive_command_modality
|
||||||
|
, '' -- a_ids_command_modality
|
||||||
|
, '' -- a_names_command_modality
|
||||||
|
, 1 -- a_get_all_bribe
|
||||||
|
, 0 -- a_get_inactive_bribe
|
||||||
|
, '' -- a_ids_bribe
|
||||||
|
, '' -- a_names_bribe
|
||||||
|
|
||||||
|
, 1 -- a_get_all_response_quality_metric
|
||||||
|
, 0 -- a_get_inactive_response_quality_metric
|
||||||
|
, '' -- a_ids_response_quality_metric
|
||||||
|
, '' -- a_names_response_quality_metric
|
||||||
|
|
||||||
|
, 1 -- a_get_all_obedience_level
|
||||||
|
, 0 -- a_get_inactive_obedience_level
|
||||||
|
, '' -- a_ids_obedience_level
|
||||||
|
, '' -- a_names_obedience_level
|
||||||
|
|
||||||
|
|
||||||
CALL demo.p_dog_get_many_colour (
|
|
||||||
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
|
||||||
, 1 -- a_get_all_colour
|
|
||||||
, 0 -- a_get_inactive_colour
|
|
||||||
, '' -- a_ids_colour
|
|
||||||
, 'pat,point' -- a_names_colour
|
|
||||||
, 1 -- a_require_all_id_search_filters_met
|
, 1 -- a_require_all_id_search_filters_met
|
||||||
, 1 -- a_require_any_id_search_filters_met
|
, 1 -- a_require_any_id_search_filters_met
|
||||||
, 0 -- a_require_all_non_id_search_filters_met
|
, 0 -- a_require_all_non_id_search_filters_met
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
margin-top: 1vh;
|
margin-top: 1vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain {
|
table.table-main {
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
padding: 1vh 1vw;
|
padding: 1vh 1vw;
|
||||||
max-width: 88vw; /* min(calc(1vh * 80), calc(1vw * 90)); */
|
max-width: 88vw; /* min(calc(1vh * 80), calc(1vw * 90)); */
|
||||||
@@ -13,28 +13,29 @@
|
|||||||
justify-content: normal;
|
justify-content: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain * {
|
table.table-main * {
|
||||||
padding: 0.25vh 0.5vh;
|
padding: 0.25vh 0.5vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain thead {
|
table.table-main thead {
|
||||||
max-height: 4vh;
|
max-height: 4vh;
|
||||||
overflow-y: visible;
|
overflow-y: visible;
|
||||||
|
background-color: var(--colour-text-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain tbody {
|
table.table-main tbody {
|
||||||
max-height: 60vh;
|
max-height: 60vh;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
min-width: fit-content;
|
min-width: fit-content;
|
||||||
max-width: fit-content;
|
max-width: fit-content;
|
||||||
overflow-x: visible;
|
overflow-x: visible;
|
||||||
}
|
}
|
||||||
#tableMain tbody.is_collapsed {
|
table.table-main tbody.is_collapsed {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
#tableMain:has(tbody > div) tbody {
|
table.table-main:has(tbody > div) tbody {
|
||||||
}
|
}
|
||||||
#tableMain tbody > div {
|
table.table-main tbody > div {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -49,62 +50,75 @@
|
|||||||
width: 100%; /* min(calc(90vh), calc(70vw)); */
|
width: 100%; /* min(calc(90vh), calc(70vw)); */
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain select,
|
table.table-main select,
|
||||||
#tableMain input:not([type="checkbox"]),
|
table.table-main input:not([type="checkbox"]),
|
||||||
#tableMain textarea,
|
table.table-main textarea,
|
||||||
#tableMain div {
|
table.table-main div {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border: 1px solid var(--colour-accent);
|
border: 1px solid var(--colour-accent);
|
||||||
border-radius: 0.5vh;
|
border-radius: 0.5vh;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
background-color: var(--colour-text-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain thead tr th, #tableMain tbody tr td {
|
table.table-main thead tr th,
|
||||||
width: 20vh;
|
table.table-main tbody tr td {
|
||||||
|
max-width: 20vh;
|
||||||
min-width: 20vh;
|
min-width: 20vh;
|
||||||
padding: 0 0.5vh;
|
padding: 0 0.5vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td {
|
table.table-main tbody tr td {
|
||||||
height: 5vh;
|
height: 5vh;
|
||||||
/* padding-top: 0.5vh; */
|
/* padding-top: 0.5vh; */
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td:has(.dirty) {
|
table.table-main thead tr th.notes,
|
||||||
|
table.table-main tbody tr td.notes {
|
||||||
|
max-width: fit-content;
|
||||||
|
}
|
||||||
|
table.table-main tbody tr td:has(.dirty) {
|
||||||
background-color: var(--colour-primary);
|
background-color: var(--colour-primary);
|
||||||
}
|
}
|
||||||
#tableMain tbody tr:not(:last-of-type) td {
|
table.table-main tbody tr td:has(.dirty) table tr:not(:has(.dirty)) {
|
||||||
|
background-color: var(--colour-text-background);
|
||||||
|
}
|
||||||
|
table.table-main tbody tr:not(:last-of-type) td {
|
||||||
padding-bottom: 0.25vh;
|
padding-bottom: 0.25vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.ddl-preview div,
|
table.table-main tbody tr td.ddl-preview div {
|
||||||
#tableMain tbody tr td.ddl-preview select {
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.table-main tbody tr td.ddl-preview div,
|
||||||
|
table.table-main tbody tr td.ddl-preview select {
|
||||||
padding-left: 2vh;
|
padding-left: 2vh;
|
||||||
padding-right: 2vh;
|
padding-right: 2vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.ddl-preview select {
|
table.table-main tbody tr td.ddl-preview select {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
#tableMain thead tr th.active,
|
table.table-main thead tr th.active,
|
||||||
#tableMain tbody tr td.active {
|
table.table-main tbody tr td.active {
|
||||||
width: 6vh;
|
max-width: 6vh;
|
||||||
min-width: 6vh;
|
min-width: 6vh;
|
||||||
}
|
}
|
||||||
#tableMain thead tr th.active svg.active.add {
|
table.table-main thead tr th.active svg.active.add {
|
||||||
fill: var(--colour-primary);
|
fill: var(--colour-primary);
|
||||||
background-color: var(--colour-accent);
|
background-color: var(--colour-accent);
|
||||||
border: 2px solid var(--colour-accent);
|
border: 2px solid var(--colour-accent);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border-radius: 1vh;
|
border-radius: 1vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.active svg.active.add {
|
table.table-main tbody tr td.active svg.active.add {
|
||||||
fill: var(--colour-primary);
|
fill: var(--colour-primary);
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.active svg.active.delete {
|
table.table-main tbody tr td.active svg.active.delete {
|
||||||
fill: var(--colour-error);
|
fill: var(--colour-error);
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.display_order,
|
table.table-main tbody tr td.display_order,
|
||||||
#tableMain thead tr th.display_order {
|
table.table-main thead tr th.display_order {
|
||||||
width: 5vh;
|
max-width: 5vh;
|
||||||
min-width: 5vh;
|
min-width: 5vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,10 +135,10 @@
|
|||||||
width: 15vh;
|
width: 15vh;
|
||||||
/* height: 3vh; */
|
/* height: 3vh; */
|
||||||
}
|
}
|
||||||
#tableMain {
|
table.table-main {
|
||||||
max-height: 60vh;
|
max-height: 60vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody {
|
table.table-main tbody {
|
||||||
max-height: 53vh;
|
max-height: 53vh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
66
static/css/pages/dog/assessment.css
Normal file
66
static/css/pages/dog/assessment.css
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
|
||||||
|
|
||||||
|
.container.save.button-cancel {
|
||||||
|
position: fixed;
|
||||||
|
top: 10vh;
|
||||||
|
right: 10vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.table-main.assessment thead tr th.active,
|
||||||
|
table.table-main.assessment tbody tr td.active,
|
||||||
|
table.table-main.distraction thead tr th.active,
|
||||||
|
table.table-main.distraction tbody tr td.active,
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.active,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.active,
|
||||||
|
table.table-main.assessment_response thead tr th.active,
|
||||||
|
table.table-main.assessment_response tbody tr td.active {
|
||||||
|
max-width: 6vh;
|
||||||
|
min-width: 6vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-main.assessment thead tr th,
|
||||||
|
table.table-main.assessment tbody tr td {
|
||||||
|
max-width: 15vh;
|
||||||
|
min-width: 15vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-main.distraction thead tr th,
|
||||||
|
table.table-main.distraction tbody tr td {
|
||||||
|
max-width: 12vh;
|
||||||
|
min-width: 12vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td {
|
||||||
|
max-width: 6vh;
|
||||||
|
min-width: 6vh;
|
||||||
|
}
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.ddl-preview div,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.ddl-preview select {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.is-in-hearing-range-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.is-in-hearing-range-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.is-in-scent-range-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.is-in-scent-range-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.is-in-sight-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.is-in-sight-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.is-on-lead,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.is-on-lead {
|
||||||
|
max-width: 4vh;
|
||||||
|
min-width: 4vh;
|
||||||
|
}
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.notes,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.notes {
|
||||||
|
max-width: 12vh;
|
||||||
|
min-width: 12vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.assessment_response,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.assessment_response {
|
||||||
|
max-width: 43vh;
|
||||||
|
min-width: 43vh;
|
||||||
|
}
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
|
|
||||||
#formFilters .container-input.filter.active {
|
|
||||||
width: 8vh;
|
|
||||||
}
|
|
||||||
#formFilters .container-input.filter.date_from,
|
|
||||||
#formFilters .container-input.filter.date_to {
|
|
||||||
width: 8vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#tableMain tbody tr td.cost_total_local_vat_excl, #tableMain thead tr th.cost_total_local_vat_excl,
|
|
||||||
#tableMain tbody tr td.cost_total_local_vat_incl, #tableMain thead tr th.cost_total_local_vat_incl {
|
|
||||||
width: 10vh;
|
|
||||||
min-width: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tableMain thead tr th.order_items.is_collapsed,
|
|
||||||
#tableMain tbody tr td.order_items.is_collapsed {
|
|
||||||
width: 15vh;
|
|
||||||
min-width: 15vh;
|
|
||||||
}
|
|
||||||
#tableMain:has(tbody tr td.order_items table thead tr th.product_variations.is_collapsed) thead tr th.order_items,
|
|
||||||
#tableMain:has(tbody tr td.order_items table thead tr th.product_variations.is_collapsed) tbody tr td.order_items {
|
|
||||||
width: 100vh; /* 95vh */
|
|
||||||
min-width: 100vh;
|
|
||||||
}
|
|
||||||
#tableMain thead tr th.order_items,
|
|
||||||
#tableMain tbody tr td.order_items {
|
|
||||||
width: 110vh;
|
|
||||||
min-width: 110vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th, #tableMain tbody tr td.order_items table tbody tr td {
|
|
||||||
width: 12vh;
|
|
||||||
min-width: 12vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.display_order, #tableMain tbody tr td.order_items table tbody tr td.display_order {
|
|
||||||
width: 5vh;
|
|
||||||
min-width: 5vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.id_unit_measurement_quantity, #tableMain tbody tr td.order_items table tbody tr td.id_unit_measurement_quantity,
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.unit_measurement_latency_manufacture, #tableMain tbody tr td.order_items table tbody tr td.unit_measurement_latency_manufacture {
|
|
||||||
width: 6vh;
|
|
||||||
min-width: 6vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.product_variations.is_collapsed, #tableMain tbody tr td.order_items table tbody tr td.product_variations.is_collapsed {
|
|
||||||
width: 10vh;
|
|
||||||
min-width: 10vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.product_variations, #tableMain tbody tr td.order_items table tbody tr td.product_variations {
|
|
||||||
width: 20vh;
|
|
||||||
min-width: 20vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.order_items table tbody tr td.product_variations table thead tr th, #tableMain tbody tr td.order_items table tbody tr td.product_variations table tbody tr td {
|
|
||||||
width: 8vh;
|
|
||||||
min-width: 8vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.order_items table tbody tr td.product_variations table thead tr th:last-of-type, #tableMain tbody tr td.order_items table tbody tr td.product_variations table tbody tr td:last-of-type {
|
|
||||||
width: 4vh;
|
|
||||||
min-width: 4vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.quantity_used, #tableMain tbody tr td.order_items table tbody tr td.quantity_used,
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.quantity_produced, #tableMain tbody tr td.order_items table tbody tr td.quantity_produced,
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.latency_manufacture, #tableMain tbody tr td.order_items table tbody tr td.latency_manufacture {
|
|
||||||
width: 8vh;
|
|
||||||
min-width: 8vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.active, #tableMain tbody tr td.order_items table tbody tr td.active,
|
|
||||||
#tableMain tbody tr td.order_items table thead tr th.add, #tableMain tbody tr td.order_items table tbody tr td.delete {
|
|
||||||
width: 4vh;
|
|
||||||
min-width: 4vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tableMain thead tr th.currency.is_collapsed, #tableMain tbody tr td.currency.is_collapsed {
|
|
||||||
width: 9vh;
|
|
||||||
min-width: 9vh;
|
|
||||||
}
|
|
||||||
#tableMain thead tr th.currency, #tableMain tbody tr td.currency {
|
|
||||||
width: 11vh;
|
|
||||||
min-width: 11vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tableMain tbody tr td.cost_total_local_vat_excl, #tableMain thead tr th.cost_total_local_vat_excl,
|
|
||||||
#tableMain tbody tr td.cost_total_local_vat_incl, #tableMain thead tr th.cost_total_local_vat_incl,
|
|
||||||
#tableMain tbody tr td.price_total_local_vat_excl, #tableMain thead tr th.price_total_local_vat_excl,
|
|
||||||
#tableMain tbody tr td.price_total_local_vat_incl, #tableMain thead tr th.price_total_local_vat_incl {
|
|
||||||
width: 5vh;
|
|
||||||
min-width: 5vh;
|
|
||||||
}
|
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
#tableMain tbody tr td table tbody tr td.colour,
|
#tableMain tbody tr td table tbody tr td.colour,
|
||||||
#tableMain tbody tr td table thead tr th.button_icon,
|
#tableMain tbody tr td table thead tr th.button_icon,
|
||||||
#tableMain tbody tr td table tbody tr td.button_icon {
|
#tableMain tbody tr td table tbody tr td.button_icon {
|
||||||
width: 12vh;
|
max-width: 12vh;
|
||||||
max-width: 12vh;
|
max-width: 12vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ select.id_variation, select.id_variation_type {
|
|||||||
@media screen and (max-width: 850px) {
|
@media screen and (max-width: 850px) {
|
||||||
#formFilters input,
|
#formFilters input,
|
||||||
#formFilters select {
|
#formFilters select {
|
||||||
width: 12vh;
|
max-width: 12vh;
|
||||||
min-width: 12vh;
|
min-width: 12vh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
|
|
||||||
#formFilters #search {
|
#formFilters #search {
|
||||||
width: 20vh;
|
max-width: 20vh;
|
||||||
min-width: 20vh;
|
min-width: 20vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain tbody > div {
|
#tableMain tbody > div {
|
||||||
width: 58vh;
|
max-width: 58vh;
|
||||||
}
|
}
|
||||||
#tableMain thead tr th,
|
#tableMain thead tr th,
|
||||||
#tableMain tbody tr td {
|
#tableMain tbody tr td {
|
||||||
@@ -20,19 +20,19 @@
|
|||||||
*/
|
*/
|
||||||
#tableMain thead tr th.name ,
|
#tableMain thead tr th.name ,
|
||||||
#tableMain tbody tr td.name {
|
#tableMain tbody tr td.name {
|
||||||
width: 50vh;
|
max-width: 50vh;
|
||||||
min-width: 50vh;
|
min-width: 50vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 800px) {
|
@media screen and (max-width: 800px) {
|
||||||
#tableMain thead tr th.name ,
|
#tableMain thead tr th.name ,
|
||||||
#tableMain tbody tr td.name {
|
#tableMain tbody tr td.name {
|
||||||
width: 63vw;
|
max-width: 63vw;
|
||||||
min-width: 63vw;
|
min-width: 63vw;
|
||||||
}
|
}
|
||||||
#tableMain thead tr th.active ,
|
#tableMain thead tr th.active ,
|
||||||
#tableMain tbody tr td.active {
|
#tableMain tbody tr td.active {
|
||||||
width: 3vw;
|
max-width: 3vw;
|
||||||
min-width: 3vw;
|
min-width: 3vw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
}
|
}
|
||||||
#tableMain thead tr th.can-have-button,
|
#tableMain thead tr th.can-have-button,
|
||||||
#tableMain tbody tr td.can-have-button {
|
#tableMain tbody tr td.can-have-button {
|
||||||
width: 6vh;
|
max-width: 6vh;
|
||||||
min-width: 6vh;
|
min-width: 6vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ select.id_variation, select.id_variation_type {
|
|||||||
@media screen and (max-width: 850px) {
|
@media screen and (max-width: 850px) {
|
||||||
#formFilters input,
|
#formFilters input,
|
||||||
#formFilters select {
|
#formFilters select {
|
||||||
width: 12vh;
|
max-width: 12vh;
|
||||||
min-width: 12vh;
|
min-width: 12vh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
|
|
||||||
#formFilters .container {
|
|
||||||
max-width: fit-content;
|
|
||||||
}
|
|
||||||
|
|
||||||
#formFilters .container-input.filter.is_not_empty {
|
|
||||||
width: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#formFilters .container-input.filter.active {
|
|
||||||
width: 8vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#tableMain tbody tr td.display_order, #tableMain thead tr th.display_order {
|
|
||||||
width: 5vh;
|
|
||||||
min-width: 5vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.code, #tableMain thead tr th.code {
|
|
||||||
width: 10vh;
|
|
||||||
min-width: 10vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.name, #tableMain thead tr th.name {
|
|
||||||
width: 15vh;
|
|
||||||
min-width: 15vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.description, #tableMain thead tr th.description {
|
|
||||||
width: 25vh;
|
|
||||||
min-width: 25vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.access_level, #tableMain thead tr th.access_level {
|
|
||||||
width: 7vh;
|
|
||||||
min-width: 7vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.active, #tableMain thead tr th.active {
|
|
||||||
width: 5vh;
|
|
||||||
min-width: 5vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
td > input, td > select, td > textarea, .container-input > input, .container-input > select, .container-input > textarea {
|
|
||||||
border: 2px solid var(--border-colour);
|
|
||||||
border-radius: 0.5vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tableMain tbody tr td table thead tr th.id_variation_type, #tableMain tbody tr td table tbody tr td.id_variation_type, #tableMain tbody tr td table thead tr th.id_variation, #tableMain tbody tr td table tbody tr td.id_variation {
|
|
||||||
width: 47.5%;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
124
static/dist/css/dog_assessment.bundle.css
vendored
Normal file
124
static/dist/css/dog_assessment.bundle.css
vendored
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
|
||||||
|
.img-product {
|
||||||
|
max-width: 20vh;
|
||||||
|
max-height: 20vh;
|
||||||
|
border-radius: 3vh;
|
||||||
|
justify-self: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-thumbnail {
|
||||||
|
max-width: 10vh;
|
||||||
|
max-height: 10vh;
|
||||||
|
border-radius: 3vh;
|
||||||
|
justify-self: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonAddToBasket {
|
||||||
|
background-color: var(--colour-page-background);
|
||||||
|
border-color: var(--colour-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
#buttonCheckout, .buttonBuyNow {
|
||||||
|
background-color: var(--colour-page-background);
|
||||||
|
/* color: var(--c_purple_dark); */
|
||||||
|
border-color: var(--colour-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-increment, .button-decrement {
|
||||||
|
border: 2px solid darkgrey;
|
||||||
|
background-color: lightgray;
|
||||||
|
margin: 1vh 1vh;
|
||||||
|
width: 2.5vh;
|
||||||
|
height: 2.5vh;
|
||||||
|
border-radius: 1.25vh;
|
||||||
|
font-size: 2vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-input > input {
|
||||||
|
padding: 0vh 1vh;
|
||||||
|
border-radius: 0.5vh;
|
||||||
|
max-width: 7vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#basket {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Right column */
|
||||||
|
.rightcolumn {
|
||||||
|
min-width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Main Table */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.container.save.button-cancel {
|
||||||
|
position: fixed;
|
||||||
|
top: 10vh;
|
||||||
|
right: 10vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.table-main.assessment thead tr th.active,
|
||||||
|
table.table-main.assessment tbody tr td.active,
|
||||||
|
table.table-main.distraction thead tr th.active,
|
||||||
|
table.table-main.distraction tbody tr td.active,
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.active,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.active,
|
||||||
|
table.table-main.assessment_response thead tr th.active,
|
||||||
|
table.table-main.assessment_response tbody tr td.active {
|
||||||
|
max-width: 6vh;
|
||||||
|
min-width: 6vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-main.assessment thead tr th,
|
||||||
|
table.table-main.assessment tbody tr td {
|
||||||
|
max-width: 15vh;
|
||||||
|
min-width: 15vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-main.distraction thead tr th,
|
||||||
|
table.table-main.distraction tbody tr td {
|
||||||
|
max-width: 12vh;
|
||||||
|
min-width: 12vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td {
|
||||||
|
max-width: 6vh;
|
||||||
|
min-width: 6vh;
|
||||||
|
}
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.ddl-preview div,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.ddl-preview select {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.is-in-hearing-range-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.is-in-hearing-range-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.is-in-scent-range-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.is-in-scent-range-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.is-in-sight-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.is-in-sight-of-handler,
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.is-on-lead,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.is-on-lead {
|
||||||
|
max-width: 4vh;
|
||||||
|
min-width: 4vh;
|
||||||
|
}
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.notes,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.notes {
|
||||||
|
max-width: 12vh;
|
||||||
|
min-width: 12vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.table-main.assessment_command_modality_link thead tr th.assessment_response,
|
||||||
|
table.table-main.assessment_command_modality_link tbody tr td.assessment_response {
|
||||||
|
max-width: 40vh;
|
||||||
|
min-width: 40vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*# sourceMappingURL=dog_assessment.bundle.css.map*/
|
||||||
1
static/dist/css/dog_assessment.bundle.css.map
vendored
Normal file
1
static/dist/css/dog_assessment.bundle.css.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"css/dog_assessment.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;;ACnDf;IACI,eAAe;IACf,SAAS;IACT,WAAW;AACf;;;AAGA;;;;;;;;IAQI,cAAc;IACd,cAAc;AAClB;;AAEA;;IAEI,eAAe;IACf,eAAe;AACnB;;AAEA;;IAEI,eAAe;IACf,eAAe;AACnB;;AAEA;;IAEI,cAAc;IACd,cAAc;AAClB;AACA;;IAEI,eAAe;IACf,gBAAgB;AACpB;AACA;;;;;;;;IAQI,cAAc;IACd,cAAc;AAClB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;;;AAGA;;IAEI,eAAe;IACf,eAAe;AACnB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/assessment.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n\n.container.save.button-cancel {\n position: fixed;\n top: 10vh;\n right: 10vh;\n}\n\n\ntable.table-main.assessment thead tr th.active,\ntable.table-main.assessment tbody tr td.active,\ntable.table-main.distraction thead tr th.active,\ntable.table-main.distraction tbody tr td.active,\ntable.table-main.assessment_command_modality_link thead tr th.active,\ntable.table-main.assessment_command_modality_link tbody tr td.active,\ntable.table-main.assessment_response thead tr th.active,\ntable.table-main.assessment_response tbody tr td.active {\n max-width: 6vh;\n min-width: 6vh;\n}\n\ntable.table-main.assessment thead tr th,\ntable.table-main.assessment tbody tr td {\n max-width: 15vh;\n min-width: 15vh;\n}\n\ntable.table-main.distraction thead tr th,\ntable.table-main.distraction tbody tr td {\n max-width: 12vh;\n min-width: 12vh;\n}\n\ntable.table-main.assessment_command_modality_link thead tr th,\ntable.table-main.assessment_command_modality_link tbody tr td {\n max-width: 6vh;\n min-width: 6vh;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.ddl-preview div, \ntable.table-main.assessment_command_modality_link tbody tr td.ddl-preview select {\n padding-left: 0;\n padding-right: 0;\n}\ntable.table-main.assessment_command_modality_link thead tr th.is-in-hearing-range-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-hearing-range-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-in-scent-range-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-scent-range-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-in-sight-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-sight-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-on-lead,\ntable.table-main.assessment_command_modality_link tbody tr td.is-on-lead {\n max-width: 4vh;\n min-width: 4vh;\n}\ntable.table-main.assessment_command_modality_link thead tr th.notes,\ntable.table-main.assessment_command_modality_link tbody tr td.notes {\n max-width: 12vh;\n min-width: 12vh;\n}\n\n\ntable.table-main.assessment_command_modality_link thead tr th.assessment_response,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response {\n max-width: 40vh;\n min-width: 40vh;\n}"],"names":[],"sourceRoot":""}
|
||||||
59
static/dist/css/dog_assessments.bundle.css
vendored
Normal file
59
static/dist/css/dog_assessments.bundle.css
vendored
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
.img-product {
|
||||||
|
max-width: 20vh;
|
||||||
|
max-height: 20vh;
|
||||||
|
border-radius: 3vh;
|
||||||
|
justify-self: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-thumbnail {
|
||||||
|
max-width: 10vh;
|
||||||
|
max-height: 10vh;
|
||||||
|
border-radius: 3vh;
|
||||||
|
justify-self: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.buttonAddToBasket {
|
||||||
|
background-color: var(--colour-page-background);
|
||||||
|
border-color: var(--colour-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
#buttonCheckout, .buttonBuyNow {
|
||||||
|
background-color: var(--colour-page-background);
|
||||||
|
/* color: var(--c_purple_dark); */
|
||||||
|
border-color: var(--colour-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-increment, .button-decrement {
|
||||||
|
border: 2px solid darkgrey;
|
||||||
|
background-color: lightgray;
|
||||||
|
margin: 1vh 1vh;
|
||||||
|
width: 2.5vh;
|
||||||
|
height: 2.5vh;
|
||||||
|
border-radius: 1.25vh;
|
||||||
|
font-size: 2vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-input > input {
|
||||||
|
padding: 0vh 1vh;
|
||||||
|
border-radius: 0.5vh;
|
||||||
|
max-width: 7vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
#basket {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Right column */
|
||||||
|
.rightcolumn {
|
||||||
|
min-width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Main Table */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*# sourceMappingURL=dog_assessments.bundle.css.map*/
|
||||||
1
static/dist/css/dog_assessments.bundle.css.map
vendored
Normal file
1
static/dist/css/dog_assessments.bundle.css.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"css/dog_assessments.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe","sources":["webpack://app/./static/css/sections/dog.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n"],"names":[],"sourceRoot":""}
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
#tableMain tbody tr td table tbody tr td.colour,
|
#tableMain tbody tr td table tbody tr td.colour,
|
||||||
#tableMain tbody tr td table thead tr th.button_icon,
|
#tableMain tbody tr td table thead tr th.button_icon,
|
||||||
#tableMain tbody tr td table tbody tr td.button_icon {
|
#tableMain tbody tr td table tbody tr td.button_icon {
|
||||||
width: 12vh;
|
max-width: 12vh;
|
||||||
max-width: 12vh;
|
max-width: 12vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ select.id_variation, select.id_variation_type {
|
|||||||
@media screen and (max-width: 850px) {
|
@media screen and (max-width: 850px) {
|
||||||
#formFilters input,
|
#formFilters input,
|
||||||
#formFilters select {
|
#formFilters select {
|
||||||
width: 12vh;
|
max-width: 12vh;
|
||||||
min-width: 12vh;
|
min-width: 12vh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"css/dog_command_button_links.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;;;CAGC;;;AAGD;IACI,YAAY;AAChB;;AAEA;;;;;;;CAOC;AACD;;;;;;IAMI,WAAW;IACX,eAAe;AACnB;;AAEA;;;;CAIC;;AAED;IACI;;QAEI,WAAW;QACX,eAAe;IACnB;AACJ","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/command_button_links.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n/*\n#formFilters .container-input.filter.active_only {\n}\n*/\n\n\n#tableMain tbody > div {\n width: 113vh;\n}\n\n/*\n#tableMain tbody tr td table thead tr th.id_variation_type,\n#tableMain tbody tr td table tbody tr td.id_variation_type,\n#tableMain tbody tr td table thead tr th.id_variation, \n#tableMain tbody tr td table tbody tr td.id_variation {\n width: 47.5%;\n}\n*/\n#tableMain tbody tr td table thead tr th.button_shape, \n#tableMain tbody tr td table tbody tr td.button_shape,\n#tableMain tbody tr td table thead tr th.colour, \n#tableMain tbody tr td table tbody tr td.colour,\n#tableMain tbody tr td table thead tr th.button_icon, \n#tableMain tbody tr td table tbody tr td.button_icon {\n width: 12vh;\n max-width: 12vh;\n}\n\n/*\nselect.id_variation, select.id_variation_type {\n max-width: 40% !important;\n}\n*/\n\n@media screen and (max-width: 850px) {\n #formFilters input,\n #formFilters select {\n width: 12vh;\n min-width: 12vh;\n }\n}\n"],"names":[],"sourceRoot":""}
|
{"version":3,"file":"css/dog_command_button_links.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;;;CAGC;;;AAGD;IACI,YAAY;AAChB;;AAEA;;;;;;;CAOC;AACD;;;;;;IAMI,eAAe;IACf,eAAe;AACnB;;AAEA;;;;CAIC;;AAED;IACI;;QAEI,eAAe;QACf,eAAe;IACnB;AACJ","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/command_button_links.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n/*\n#formFilters .container-input.filter.active_only {\n}\n*/\n\n\n#tableMain tbody > div {\n width: 113vh;\n}\n\n/*\n#tableMain tbody tr td table thead tr th.id_variation_type,\n#tableMain tbody tr td table tbody tr td.id_variation_type,\n#tableMain tbody tr td table thead tr th.id_variation, \n#tableMain tbody tr td table tbody tr td.id_variation {\n width: 47.5%;\n}\n*/\n#tableMain tbody tr td table thead tr th.button_shape, \n#tableMain tbody tr td table tbody tr td.button_shape,\n#tableMain tbody tr td table thead tr th.colour, \n#tableMain tbody tr td table tbody tr td.colour,\n#tableMain tbody tr td table thead tr th.button_icon, \n#tableMain tbody tr td table tbody tr td.button_icon {\n max-width: 12vh;\n max-width: 12vh;\n}\n\n/*\nselect.id_variation, select.id_variation_type {\n max-width: 40% !important;\n}\n*/\n\n@media screen and (max-width: 850px) {\n #formFilters input,\n #formFilters select {\n max-width: 12vh;\n min-width: 12vh;\n }\n}\n"],"names":[],"sourceRoot":""}
|
||||||
@@ -56,12 +56,12 @@
|
|||||||
|
|
||||||
|
|
||||||
#formFilters #search {
|
#formFilters #search {
|
||||||
width: 20vh;
|
max-width: 20vh;
|
||||||
min-width: 20vh;
|
min-width: 20vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain tbody > div {
|
#tableMain tbody > div {
|
||||||
width: 58vh;
|
max-width: 58vh;
|
||||||
}
|
}
|
||||||
#tableMain thead tr th,
|
#tableMain thead tr th,
|
||||||
#tableMain tbody tr td {
|
#tableMain tbody tr td {
|
||||||
@@ -76,19 +76,19 @@
|
|||||||
*/
|
*/
|
||||||
#tableMain thead tr th.name ,
|
#tableMain thead tr th.name ,
|
||||||
#tableMain tbody tr td.name {
|
#tableMain tbody tr td.name {
|
||||||
width: 50vh;
|
max-width: 50vh;
|
||||||
min-width: 50vh;
|
min-width: 50vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 800px) {
|
@media screen and (max-width: 800px) {
|
||||||
#tableMain thead tr th.name ,
|
#tableMain thead tr th.name ,
|
||||||
#tableMain tbody tr td.name {
|
#tableMain tbody tr td.name {
|
||||||
width: 63vw;
|
max-width: 63vw;
|
||||||
min-width: 63vw;
|
min-width: 63vw;
|
||||||
}
|
}
|
||||||
#tableMain thead tr th.active ,
|
#tableMain thead tr th.active ,
|
||||||
#tableMain tbody tr td.active {
|
#tableMain tbody tr td.active {
|
||||||
width: 3vw;
|
max-width: 3vw;
|
||||||
min-width: 3vw;
|
min-width: 3vw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"css/dog_command_categories.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;IACI,WAAW;IACX,eAAe;AACnB;;AAEA;IACI,WAAW;AACf;AACA;;IAEI,WAAW;AACf;AACA;IACI,sCAAsC;AAC1C;AACA;;;CAGC;AACD;;IAEI,WAAW;IACX,eAAe;AACnB;;AAEA;IACI;;QAEI,WAAW;QACX,eAAe;IACnB;IACA;;QAEI,UAAU;QACV,cAAc;IAClB;AACJ,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/command_categories.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n#formFilters #search {\n width: 20vh;\n min-width: 20vh;\n}\n\n#tableMain tbody > div {\n width: 58vh;\n}\n#tableMain thead tr th,\n#tableMain tbody tr td {\n height: 3vh;\n}\n#tableMain tbody tr td.name .name {\n border: 1px solid var(--colour-accent);\n}\n/*\n#tableMain thead tr th.code,\n#tableMain tbody tr td.code,\n*/\n#tableMain thead tr th.name ,\n#tableMain tbody tr td.name {\n width: 50vh;\n min-width: 50vh;\n}\n\n@media screen and (max-width: 800px) {\n #tableMain thead tr th.name ,\n #tableMain tbody tr td.name {\n width: 63vw;\n min-width: 63vw;\n }\n #tableMain thead tr th.active ,\n #tableMain tbody tr td.active {\n width: 3vw;\n min-width: 3vw;\n }\n}"],"names":[],"sourceRoot":""}
|
{"version":3,"file":"css/dog_command_categories.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;IACI,eAAe;IACf,eAAe;AACnB;;AAEA;IACI,eAAe;AACnB;AACA;;IAEI,WAAW;AACf;AACA;IACI,sCAAsC;AAC1C;AACA;;;CAGC;AACD;;IAEI,eAAe;IACf,eAAe;AACnB;;AAEA;IACI;;QAEI,eAAe;QACf,eAAe;IACnB;IACA;;QAEI,cAAc;QACd,cAAc;IAClB;AACJ,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/command_categories.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n#formFilters #search {\n max-width: 20vh;\n min-width: 20vh;\n}\n\n#tableMain tbody > div {\n max-width: 58vh;\n}\n#tableMain thead tr th,\n#tableMain tbody tr td {\n height: 3vh;\n}\n#tableMain tbody tr td.name .name {\n border: 1px solid var(--colour-accent);\n}\n/*\n#tableMain thead tr th.code,\n#tableMain tbody tr td.code,\n*/\n#tableMain thead tr th.name ,\n#tableMain tbody tr td.name {\n max-width: 50vh;\n min-width: 50vh;\n}\n\n@media screen and (max-width: 800px) {\n #tableMain thead tr th.name ,\n #tableMain tbody tr td.name {\n max-width: 63vw;\n min-width: 63vw;\n }\n #tableMain thead tr th.active ,\n #tableMain tbody tr td.active {\n max-width: 3vw;\n min-width: 3vw;\n }\n}"],"names":[],"sourceRoot":""}
|
||||||
2
static/dist/css/dog_commands.bundle.css
vendored
2
static/dist/css/dog_commands.bundle.css
vendored
@@ -66,7 +66,7 @@
|
|||||||
}
|
}
|
||||||
#tableMain thead tr th.can-have-button,
|
#tableMain thead tr th.can-have-button,
|
||||||
#tableMain tbody tr td.can-have-button {
|
#tableMain tbody tr td.can-have-button {
|
||||||
width: 6vh;
|
max-width: 6vh;
|
||||||
min-width: 6vh;
|
min-width: 6vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
static/dist/css/dog_commands.bundle.css.map
vendored
2
static/dist/css/dog_commands.bundle.css.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"css/dog_commands.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;;;;CAIC;;AAED;IACI,WAAW;AACf;AACA;;IAEI,UAAU;IACV,cAAc;AAClB;;AAEA;;;;;;;;CAQC,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/commands.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n/*\n#formFilters .container {\n max-width: fit-content;\n}\n*/\n\n#tableMain tbody > div {\n width: 99vh;\n}\n#tableMain thead tr th.can-have-button, \n#tableMain tbody tr td.can-have-button {\n width: 6vh;\n min-width: 6vh;\n}\n\n/*\n@media screen and (max-width: 600px) {\n #formFilters input,\n #formFilters select {\n width: 12vh;\n min-width: 12vh;\n }\n}\n*/"],"names":[],"sourceRoot":""}
|
{"version":3,"file":"css/dog_commands.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;;;;CAIC;;AAED;IACI,WAAW;AACf;AACA;;IAEI,cAAc;IACd,cAAc;AAClB;;AAEA;;;;;;;;CAQC,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/commands.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n/*\n#formFilters .container {\n max-width: fit-content;\n}\n*/\n\n#tableMain tbody > div {\n width: 99vh;\n}\n#tableMain thead tr th.can-have-button, \n#tableMain tbody tr td.can-have-button {\n max-width: 6vh;\n min-width: 6vh;\n}\n\n/*\n@media screen and (max-width: 600px) {\n #formFilters input,\n #formFilters select {\n width: 12vh;\n min-width: 12vh;\n }\n}\n*/"],"names":[],"sourceRoot":""}
|
||||||
@@ -94,7 +94,7 @@ select.id_variation, select.id_variation_type {
|
|||||||
@media screen and (max-width: 850px) {
|
@media screen and (max-width: 850px) {
|
||||||
#formFilters input,
|
#formFilters input,
|
||||||
#formFilters select {
|
#formFilters select {
|
||||||
width: 12vh;
|
max-width: 12vh;
|
||||||
min-width: 12vh;
|
min-width: 12vh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"css/dog_dog_command_links.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;;;CAGC;;;AAGD;IACI,YAAY;AAChB;AACA;IACI,eAAe;AACnB;;AAEA;;;;;;IAMI,uCAAuC;IACvC,oBAAoB;AACxB;;AAEA;;;;IAII,YAAY;AAChB;;AAEA;;;;CAIC;;AAED;IACI;;QAEI,WAAW;QACX,eAAe;IACnB;AACJ","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/dog_command_links.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n/*\n#formFilters .container-input.filter.active_only {\n}\n*/\n\n\n#tableMain tbody > div {\n width: 113vh;\n}\n#tableMain {\n max-width: 90vw;\n}\n\ntd > input,\ntd > select,\ntd > textarea,\n.container-input > input,\n.container-input > select,\n.container-input > textarea {\n border: 2px solid var(--colour-primary);\n border-radius: 0.5vh;\n}\n\n#tableMain tbody tr td table thead tr th.id_variation_type,\n#tableMain tbody tr td table tbody tr td.id_variation_type,\n#tableMain tbody tr td table thead tr th.id_variation, \n#tableMain tbody tr td table tbody tr td.id_variation {\n width: 47.5%;\n}\n\n/*\nselect.id_variation, select.id_variation_type {\n max-width: 40% !important;\n}\n*/\n\n@media screen and (max-width: 850px) {\n #formFilters input,\n #formFilters select {\n width: 12vh;\n min-width: 12vh;\n }\n}\n"],"names":[],"sourceRoot":""}
|
{"version":3,"file":"css/dog_dog_command_links.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;;;CAGC;;;AAGD;IACI,YAAY;AAChB;AACA;IACI,eAAe;AACnB;;AAEA;;;;;;IAMI,uCAAuC;IACvC,oBAAoB;AACxB;;AAEA;;;;IAII,YAAY;AAChB;;AAEA;;;;CAIC;;AAED;IACI;;QAEI,eAAe;QACf,eAAe;IACnB;AACJ","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/dog_command_links.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n/*\n#formFilters .container-input.filter.active_only {\n}\n*/\n\n\n#tableMain tbody > div {\n width: 113vh;\n}\n#tableMain {\n max-width: 90vw;\n}\n\ntd > input,\ntd > select,\ntd > textarea,\n.container-input > input,\n.container-input > select,\n.container-input > textarea {\n border: 2px solid var(--colour-primary);\n border-radius: 0.5vh;\n}\n\n#tableMain tbody tr td table thead tr th.id_variation_type,\n#tableMain tbody tr td table tbody tr td.id_variation_type,\n#tableMain tbody tr td table thead tr th.id_variation, \n#tableMain tbody tr td table tbody tr td.id_variation {\n width: 47.5%;\n}\n\n/*\nselect.id_variation, select.id_variation_type {\n max-width: 40% !important;\n}\n*/\n\n@media screen and (max-width: 850px) {\n #formFilters input,\n #formFilters select {\n max-width: 12vh;\n min-width: 12vh;\n }\n}\n"],"names":[],"sourceRoot":""}
|
||||||
48
static/dist/css/dog_dogs.bundle.css
vendored
48
static/dist/css/dog_dogs.bundle.css
vendored
@@ -55,53 +55,5 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#formFilters .container {
|
|
||||||
max-width: fit-content;
|
|
||||||
}
|
|
||||||
|
|
||||||
#formFilters .container-input.filter.is_not_empty {
|
|
||||||
width: 10vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#formFilters .container-input.filter.active {
|
|
||||||
width: 8vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#tableMain tbody tr td.display_order, #tableMain thead tr th.display_order {
|
|
||||||
width: 5vh;
|
|
||||||
min-width: 5vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.code, #tableMain thead tr th.code {
|
|
||||||
width: 10vh;
|
|
||||||
min-width: 10vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.name, #tableMain thead tr th.name {
|
|
||||||
width: 15vh;
|
|
||||||
min-width: 15vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.description, #tableMain thead tr th.description {
|
|
||||||
width: 25vh;
|
|
||||||
min-width: 25vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.access_level, #tableMain thead tr th.access_level {
|
|
||||||
width: 7vh;
|
|
||||||
min-width: 7vh;
|
|
||||||
}
|
|
||||||
#tableMain tbody tr td.active, #tableMain thead tr th.active {
|
|
||||||
width: 5vh;
|
|
||||||
min-width: 5vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
td > input, td > select, td > textarea, .container-input > input, .container-input > select, .container-input > textarea {
|
|
||||||
border: 2px solid var(--border-colour);
|
|
||||||
border-radius: 0.5vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tableMain tbody tr td table thead tr th.id_variation_type, #tableMain tbody tr td table tbody tr td.id_variation_type, #tableMain tbody tr td table thead tr th.id_variation, #tableMain tbody tr td table tbody tr td.id_variation {
|
|
||||||
width: 47.5%;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*# sourceMappingURL=dog_dogs.bundle.css.map*/
|
/*# sourceMappingURL=dog_dogs.bundle.css.map*/
|
||||||
2
static/dist/css/dog_dogs.bundle.css.map
vendored
2
static/dist/css/dog_dogs.bundle.css.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"css/dog_dogs.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;;;;ACpDf;IACI,sBAAsB;AAC1B;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,UAAU;AACd;;;AAGA;IACI,UAAU;IACV,cAAc;AAClB;AACA;IACI,WAAW;IACX,eAAe;AACnB;AACA;IACI,WAAW;IACX,eAAe;AACnB;AACA;IACI,WAAW;IACX,eAAe;AACnB;AACA;IACI,UAAU;IACV,cAAc;AAClB;AACA;IACI,UAAU;IACV,cAAc;AAClB;;AAEA;IACI,sCAAsC;IACtC,oBAAoB;AACxB;;AAEA;IACI,YAAY;AAChB","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/dogs.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n","\n#formFilters .container {\n max-width: fit-content;\n}\n\n#formFilters .container-input.filter.is_not_empty {\n width: 10vh;\n} \n\n#formFilters .container-input.filter.active {\n width: 8vh;\n}\n\n\n#tableMain tbody tr td.display_order, #tableMain thead tr th.display_order {\n width: 5vh;\n min-width: 5vh;\n}\n#tableMain tbody tr td.code, #tableMain thead tr th.code {\n width: 10vh;\n min-width: 10vh;\n}\n#tableMain tbody tr td.name, #tableMain thead tr th.name {\n width: 15vh;\n min-width: 15vh;\n}\n#tableMain tbody tr td.description, #tableMain thead tr th.description {\n width: 25vh;\n min-width: 25vh;\n}\n#tableMain tbody tr td.access_level, #tableMain thead tr th.access_level {\n width: 7vh;\n min-width: 7vh;\n}\n#tableMain tbody tr td.active, #tableMain thead tr th.active {\n width: 5vh;\n min-width: 5vh;\n}\n\ntd > input, td > select, td > textarea, .container-input > input, .container-input > select, .container-input > textarea {\n border: 2px solid var(--border-colour);\n border-radius: 0.5vh;\n}\n\n#tableMain tbody tr td table thead tr th.id_variation_type, #tableMain tbody tr td table tbody tr td.id_variation_type, #tableMain tbody tr td table thead tr th.id_variation, #tableMain tbody tr td table tbody tr td.id_variation {\n width: 47.5%;\n}\n\n"],"names":[],"sourceRoot":""}
|
{"version":3,"file":"css/dog_dogs.bundle.css","mappings":";AACA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;AACtB;;AAEA;IACI,+CAA+C;IAC/C,mCAAmC;AACvC;;AAEA;IACI,+CAA+C;IAC/C,iCAAiC;IACjC,mCAAmC;AACvC;;AAEA;IACI,0BAA0B;IAC1B,2BAA2B;IAC3B,eAAe;IACf,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,cAAc;AAClB;;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;AAEA;IACI,eAAe;AACnB;;;;AAIA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe","sources":["webpack://app/./static/css/sections/dog.css"],"sourcesContent":["\n.img-product {\n max-width: 20vh;\n max-height: 20vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.img-thumbnail {\n max-width: 10vh;\n max-height: 10vh;\n border-radius: 3vh;\n justify-self: left;\n}\n\n.buttonAddToBasket {\n background-color: var(--colour-page-background);\n border-color: var(--colour-primary);\n}\n\n#buttonCheckout, .buttonBuyNow {\n background-color: var(--colour-page-background);\n /* color: var(--c_purple_dark); */\n border-color: var(--colour-primary);\n}\n\n.button-increment, .button-decrement {\n border: 2px solid darkgrey;\n background-color: lightgray;\n margin: 1vh 1vh;\n width: 2.5vh;\n height: 2.5vh;\n border-radius: 1.25vh;\n font-size: 2vh;\n}\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n#basket {\n max-width: 100%;\n}\n\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n\n"],"names":[],"sourceRoot":""}
|
||||||
74
static/dist/css/main.bundle.css
vendored
74
static/dist/css/main.bundle.css
vendored
@@ -757,7 +757,7 @@ form.filter button.save, form.filter button.button-cancel {
|
|||||||
margin-top: 1vh;
|
margin-top: 1vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain {
|
table.table-main {
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
padding: 1vh 1vw;
|
padding: 1vh 1vw;
|
||||||
max-width: 88vw; /* min(calc(1vh * 80), calc(1vw * 90)); */
|
max-width: 88vw; /* min(calc(1vh * 80), calc(1vw * 90)); */
|
||||||
@@ -766,28 +766,29 @@ form.filter button.save, form.filter button.button-cancel {
|
|||||||
justify-content: normal;
|
justify-content: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain * {
|
table.table-main * {
|
||||||
padding: 0.25vh 0.5vh;
|
padding: 0.25vh 0.5vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain thead {
|
table.table-main thead {
|
||||||
max-height: 4vh;
|
max-height: 4vh;
|
||||||
overflow-y: visible;
|
overflow-y: visible;
|
||||||
|
background-color: var(--colour-text-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain tbody {
|
table.table-main tbody {
|
||||||
max-height: 60vh;
|
max-height: 60vh;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
min-width: fit-content;
|
min-width: fit-content;
|
||||||
max-width: fit-content;
|
max-width: fit-content;
|
||||||
overflow-x: visible;
|
overflow-x: visible;
|
||||||
}
|
}
|
||||||
#tableMain tbody.is_collapsed {
|
table.table-main tbody.is_collapsed {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
#tableMain:has(tbody > div) tbody {
|
table.table-main:has(tbody > div) tbody {
|
||||||
}
|
}
|
||||||
#tableMain tbody > div {
|
table.table-main tbody > div {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -802,62 +803,75 @@ form.filter button.save, form.filter button.button-cancel {
|
|||||||
width: 100%; /* min(calc(90vh), calc(70vw)); */
|
width: 100%; /* min(calc(90vh), calc(70vw)); */
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain select,
|
table.table-main select,
|
||||||
#tableMain input:not([type="checkbox"]),
|
table.table-main input:not([type="checkbox"]),
|
||||||
#tableMain textarea,
|
table.table-main textarea,
|
||||||
#tableMain div {
|
table.table-main div {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border: 1px solid var(--colour-accent);
|
border: 1px solid var(--colour-accent);
|
||||||
border-radius: 0.5vh;
|
border-radius: 0.5vh;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
background-color: var(--colour-text-background);
|
||||||
}
|
}
|
||||||
|
|
||||||
#tableMain thead tr th, #tableMain tbody tr td {
|
table.table-main thead tr th,
|
||||||
width: 20vh;
|
table.table-main tbody tr td {
|
||||||
|
max-width: 20vh;
|
||||||
min-width: 20vh;
|
min-width: 20vh;
|
||||||
padding: 0 0.5vh;
|
padding: 0 0.5vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td {
|
table.table-main tbody tr td {
|
||||||
height: 5vh;
|
height: 5vh;
|
||||||
/* padding-top: 0.5vh; */
|
/* padding-top: 0.5vh; */
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td:has(.dirty) {
|
table.table-main thead tr th.notes,
|
||||||
|
table.table-main tbody tr td.notes {
|
||||||
|
max-width: fit-content;
|
||||||
|
}
|
||||||
|
table.table-main tbody tr td:has(.dirty) {
|
||||||
background-color: var(--colour-primary);
|
background-color: var(--colour-primary);
|
||||||
}
|
}
|
||||||
#tableMain tbody tr:not(:last-of-type) td {
|
table.table-main tbody tr td:has(.dirty) table {
|
||||||
|
background-color: var(--colour-text-background);
|
||||||
|
}
|
||||||
|
table.table-main tbody tr:not(:last-of-type) td {
|
||||||
padding-bottom: 0.25vh;
|
padding-bottom: 0.25vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.ddl-preview div,
|
table.table-main tbody tr td.ddl-preview div {
|
||||||
#tableMain tbody tr td.ddl-preview select {
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.table-main tbody tr td.ddl-preview div,
|
||||||
|
table.table-main tbody tr td.ddl-preview select {
|
||||||
padding-left: 2vh;
|
padding-left: 2vh;
|
||||||
padding-right: 2vh;
|
padding-right: 2vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.ddl-preview select {
|
table.table-main tbody tr td.ddl-preview select {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
#tableMain thead tr th.active,
|
table.table-main thead tr th.active,
|
||||||
#tableMain tbody tr td.active {
|
table.table-main tbody tr td.active {
|
||||||
width: 6vh;
|
max-width: 6vh;
|
||||||
min-width: 6vh;
|
min-width: 6vh;
|
||||||
}
|
}
|
||||||
#tableMain thead tr th.active svg.active.add {
|
table.table-main thead tr th.active svg.active.add {
|
||||||
fill: var(--colour-primary);
|
fill: var(--colour-primary);
|
||||||
background-color: var(--colour-accent);
|
background-color: var(--colour-accent);
|
||||||
border: 2px solid var(--colour-accent);
|
border: 2px solid var(--colour-accent);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border-radius: 1vh;
|
border-radius: 1vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.active svg.active.add {
|
table.table-main tbody tr td.active svg.active.add {
|
||||||
fill: var(--colour-primary);
|
fill: var(--colour-primary);
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.active svg.active.delete {
|
table.table-main tbody tr td.active svg.active.delete {
|
||||||
fill: var(--colour-error);
|
fill: var(--colour-error);
|
||||||
}
|
}
|
||||||
#tableMain tbody tr td.display_order,
|
table.table-main tbody tr td.display_order,
|
||||||
#tableMain thead tr th.display_order {
|
table.table-main thead tr th.display_order {
|
||||||
width: 5vh;
|
max-width: 5vh;
|
||||||
min-width: 5vh;
|
min-width: 5vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -874,10 +888,10 @@ form.filter button.save, form.filter button.button-cancel {
|
|||||||
width: 15vh;
|
width: 15vh;
|
||||||
/* height: 3vh; */
|
/* height: 3vh; */
|
||||||
}
|
}
|
||||||
#tableMain {
|
table.table-main {
|
||||||
max-height: 60vh;
|
max-height: 60vh;
|
||||||
}
|
}
|
||||||
#tableMain tbody {
|
table.table-main tbody {
|
||||||
max-height: 53vh;
|
max-height: 53vh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2
static/dist/css/main.bundle.css.map
vendored
2
static/dist/css/main.bundle.css.map
vendored
File diff suppressed because one or more lines are too long
17
static/dist/js/dog_assessment.bundle.js
vendored
Normal file
17
static/dist/js/dog_assessment.bundle.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
/******/ (() => { // webpackBootstrap
|
||||||
|
/******/ "use strict";
|
||||||
|
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other entry modules.
|
||||||
|
(() => {
|
||||||
|
// extracted by mini-css-extract-plugin
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other entry modules.
|
||||||
|
(() => {
|
||||||
|
// extracted by mini-css-extract-plugin
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
/******/ })()
|
||||||
|
;
|
||||||
|
//# sourceMappingURL=dog_assessment.bundle.js.map
|
||||||
1
static/dist/js/dog_assessment.bundle.js.map
vendored
Normal file
1
static/dist/js/dog_assessment.bundle.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"js/dog_assessment.bundle.js","mappings":";;;;AAAA;;;;;;ACAA","sources":["webpack://app/./static/css/sections/dog.css?a9d0","webpack://app/./static/css/pages/dog/assessment.css?3808"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};"],"names":[],"sourceRoot":""}
|
||||||
17
static/dist/js/dog_assessments.bundle.js
vendored
Normal file
17
static/dist/js/dog_assessments.bundle.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
/******/ (() => { // webpackBootstrap
|
||||||
|
/******/ "use strict";
|
||||||
|
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other entry modules.
|
||||||
|
(() => {
|
||||||
|
// extracted by mini-css-extract-plugin
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other entry modules.
|
||||||
|
(() => {
|
||||||
|
// extracted by mini-css-extract-plugin
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
/******/ })()
|
||||||
|
;
|
||||||
|
//# sourceMappingURL=dog_assessments.bundle.js.map
|
||||||
1
static/dist/js/dog_assessments.bundle.js.map
vendored
Normal file
1
static/dist/js/dog_assessments.bundle.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"js/dog_assessments.bundle.js","mappings":";;;;AAAA;;;;;;ACAA","sources":["webpack://app/./static/css/sections/dog.css?a9d0","webpack://app/./static/css/pages/dog/assessments.css"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};"],"names":[],"sourceRoot":""}
|
||||||
2
static/dist/js/dog_dogs.bundle.js.map
vendored
2
static/dist/js/dog_dogs.bundle.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"js/dog_dogs.bundle.js","mappings":";;;;AAAA;;;;;;ACAA","sources":["webpack://app/./static/css/sections/dog.css?a9d0","webpack://app/./static/css/pages/dog/dogs.css?c51b"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};"],"names":[],"sourceRoot":""}
|
{"version":3,"file":"js/dog_dogs.bundle.js","mappings":";;;;AAAA;;;;;;ACAA","sources":["webpack://app/./static/css/sections/dog.css?a9d0","webpack://app/./static/css/pages/dog/dogs.css"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};"],"names":[],"sourceRoot":""}
|
||||||
1116
static/dist/js/main.bundle.js
vendored
1116
static/dist/js/main.bundle.js
vendored
File diff suppressed because it is too large
Load Diff
2
static/dist/js/main.bundle.js.map
vendored
2
static/dist/js/main.bundle.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -12,7 +12,7 @@ export default class BusinessObjects {
|
|||||||
static getOptionJsonFromObjectJson(objectJson, valueSelected = null) {
|
static getOptionJsonFromObjectJson(objectJson, valueSelected = null) {
|
||||||
let keyText = objectJson[flagNameAttrOptionText];
|
let keyText = objectJson[flagNameAttrOptionText];
|
||||||
let keyValue = objectJson[flagNameAttrOptionValue];
|
let keyValue = objectJson[flagNameAttrOptionValue];
|
||||||
Utils.consoleLogIfNotProductionEnvironment({objectJson, keyText, keyValue});
|
// Utils.consoleLogIfNotProductionEnvironment({objectJson, keyText, keyValue});
|
||||||
return BusinessObjects.getOptionJsonFromObjectJsonAndKeys(objectJson, keyText, keyValue, valueSelected);
|
return BusinessObjects.getOptionJsonFromObjectJsonAndKeys(objectJson, keyText, keyValue, valueSelected);
|
||||||
}
|
}
|
||||||
static getObjectText(objectJson) {
|
static getObjectText(objectJson) {
|
||||||
|
|||||||
@@ -7,4 +7,12 @@ export default class Events {
|
|||||||
element.classList.add(classInitialised);
|
element.classList.add(classInitialised);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
static hookupEventHandler(eventType, selector, callback) {
|
||||||
|
Events.initialiseEventHandler(selector, flagInitialised, (element) => {
|
||||||
|
element.addEventListener(eventType, (event) => {
|
||||||
|
event.stopPropagation();
|
||||||
|
callback(event, element);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -48,17 +48,8 @@ export default class BasePage {
|
|||||||
this.hookupOverlays();
|
this.hookupOverlays();
|
||||||
}
|
}
|
||||||
|
|
||||||
hookupEventHandler(eventType, selector, callback) {
|
|
||||||
Events.initialiseEventHandler(selector, flagInitialised, (element) => {
|
|
||||||
element.addEventListener(eventType, (event) => {
|
|
||||||
event.stopPropagation();
|
|
||||||
callback(event, element);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
hookupNavigation() {
|
hookupNavigation() {
|
||||||
this.hookupEventHandler("click", idButtonHamburger, (event, element) => {
|
Events.hookupEventHandler("click", idButtonHamburger, (event, element) => {
|
||||||
let overlayHamburger = document.querySelector(idOverlayHamburger);
|
let overlayHamburger = document.querySelector(idOverlayHamburger);
|
||||||
if (overlayHamburger.classList.contains(flagIsCollapsed)) {
|
if (overlayHamburger.classList.contains(flagIsCollapsed)) {
|
||||||
overlayHamburger.classList.remove(flagIsCollapsed);
|
overlayHamburger.classList.remove(flagIsCollapsed);
|
||||||
@@ -85,6 +76,7 @@ export default class BasePage {
|
|||||||
this.hookupButtonsNavDogLocations();
|
this.hookupButtonsNavDogLocations();
|
||||||
this.hookupButtonsNavDogButtonIcons();
|
this.hookupButtonsNavDogButtonIcons();
|
||||||
this.hookupButtonsNavDogCommandButtonLinks();
|
this.hookupButtonsNavDogCommandButtonLinks();
|
||||||
|
this.hookupButtonsNavDogAssessments();
|
||||||
}
|
}
|
||||||
hookupEventHandler(eventType, selector, callback) {
|
hookupEventHandler(eventType, selector, callback) {
|
||||||
Events.initialiseEventHandler(selector, flagInitialised, (element) => {
|
Events.initialiseEventHandler(selector, flagInitialised, (element) => {
|
||||||
@@ -98,7 +90,7 @@ export default class BasePage {
|
|||||||
this.hookupButtonsNav('.' + flagNavHome, hashPageHome);
|
this.hookupButtonsNav('.' + flagNavHome, hashPageHome);
|
||||||
}
|
}
|
||||||
hookupButtonsNav(buttonSelector, hashPageNav) {
|
hookupButtonsNav(buttonSelector, hashPageNav) {
|
||||||
this.hookupEventHandler("click", buttonSelector, (event, button) => {
|
Events.hookupEventHandler("click", buttonSelector, (event, button) => {
|
||||||
this.router.navigateToHash(hashPageNav);
|
this.router.navigateToHash(hashPageNav);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -117,7 +109,7 @@ export default class BasePage {
|
|||||||
this.hookupButtonsNav('.' + flagNavUserLogout, hashPageUserLogout);
|
this.hookupButtonsNav('.' + flagNavUserLogout, hashPageUserLogout);
|
||||||
}
|
}
|
||||||
hookupButtonsNavUserLogin() {
|
hookupButtonsNavUserLogin() {
|
||||||
this.hookupEventHandler("click", '.' + flagNavUserLogin, (event, navigator) => {
|
Events.hookupEventHandler("click", '.' + flagNavUserLogin, (event, navigator) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
this.leave();
|
this.leave();
|
||||||
API.loginUser()
|
API.loginUser()
|
||||||
@@ -154,9 +146,12 @@ export default class BasePage {
|
|||||||
hookupButtonsNavDogCommandButtonLinks() {
|
hookupButtonsNavDogCommandButtonLinks() {
|
||||||
this.hookupButtonsNav('.' + flagNavDogCommandButtonLinks, hashPageDogCommandButtonLinks);
|
this.hookupButtonsNav('.' + flagNavDogCommandButtonLinks, hashPageDogCommandButtonLinks);
|
||||||
}
|
}
|
||||||
|
hookupButtonsNavDogAssessments() {
|
||||||
|
this.hookupButtonsNav('.' + flagNavDogAssessments, hashPageDogAssessments);
|
||||||
|
}
|
||||||
|
|
||||||
hookupLogos() {
|
hookupLogos() {
|
||||||
this.hookupEventHandler("click", "." + flagImageLogo + "," + "." + flagLogo, (event, element) => {
|
Events.hookupEventHandler("click", "." + flagImageLogo + "," + "." + flagLogo, (event, element) => {
|
||||||
Utils.consoleLogIfNotProductionEnvironment('clicking logo');
|
Utils.consoleLogIfNotProductionEnvironment('clicking logo');
|
||||||
this.router.navigateToHash(hashPageHome);
|
this.router.navigateToHash(hashPageHome);
|
||||||
});
|
});
|
||||||
@@ -201,9 +196,9 @@ export default class BasePage {
|
|||||||
return LocalStorage.getLocalStorage(this.hash);
|
return LocalStorage.getLocalStorage(this.hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleShowButtonsSaveCancel(show) { // , buttonSave = null, buttonCancel = null
|
toggleShowButtonsSaveCancel(show, buttonContainerSelector = '.' + flagContainer + '.' + flagSave + '.' + flagCancel) { // , buttonSave = null, buttonCancel = null
|
||||||
let buttonSave = document.querySelector('form.' + flagFilter + ' button.' + flagSave);
|
let buttonSave = document.querySelector(buttonContainerSelector + ' button.' + flagSave);
|
||||||
let buttonCancel = document.querySelector('form.' + flagFilter + ' button.' + flagCancel);
|
let buttonCancel = document.querySelector(buttonContainerSelector + ' button.' + flagCancel);
|
||||||
if (show) {
|
if (show) {
|
||||||
buttonCancel.classList.remove(flagIsCollapsed);
|
buttonCancel.classList.remove(flagIsCollapsed);
|
||||||
buttonSave.classList.remove(flagIsCollapsed);
|
buttonSave.classList.remove(flagIsCollapsed);
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
filterActiveNew.setAttribute('id', flagActiveOnly);
|
filterActiveNew.setAttribute('id', flagActiveOnly);
|
||||||
if (isChecked) filterActiveNew.classList.add(flagIsChecked);
|
if (isChecked) filterActiveNew.classList.add(flagIsChecked);
|
||||||
|
|
||||||
this.hookupEventHandler("click", filterSelector, (event, filterActive) => {
|
Events.hookupEventHandler("click", filterSelector, (event, filterActive) => {
|
||||||
Utils.consoleLogIfNotProductionEnvironment({ filterActive });
|
Utils.consoleLogIfNotProductionEnvironment({ filterActive });
|
||||||
Utils.consoleLogIfNotProductionEnvironment({ [filterActive.tagName]: filterActive.tagName });
|
Utils.consoleLogIfNotProductionEnvironment({ [filterActive.tagName]: filterActive.tagName });
|
||||||
let svgElement = (filterActive.tagName.toUpperCase() == 'SVG') ? filterActive : filterActive.parentElement;
|
let svgElement = (filterActive.tagName.toUpperCase() == 'SVG') ? filterActive : filterActive.parentElement;
|
||||||
@@ -93,7 +93,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
}
|
}
|
||||||
hookupFilter(filterFlag, handler = (event, filter) => { return this.handleChangeFilter(event, filter); }) {
|
hookupFilter(filterFlag, handler = (event, filter) => { return this.handleChangeFilter(event, filter); }) {
|
||||||
let filterSelector = idFormFilters + ' #' + filterFlag;
|
let filterSelector = idFormFilters + ' #' + filterFlag;
|
||||||
this.hookupEventHandler("change", filterSelector, handler);
|
Events.hookupEventHandler("change", filterSelector, handler);
|
||||||
let filter = document.querySelector(filterSelector);
|
let filter = document.querySelector(filterSelector);
|
||||||
let filterValuePrevious = DOM.getElementValueCurrent(filter);
|
let filterValuePrevious = DOM.getElementValueCurrent(filter);
|
||||||
filter.setAttribute(attrValueCurrent, filterValuePrevious);
|
filter.setAttribute(attrValueCurrent, filterValuePrevious);
|
||||||
@@ -140,7 +140,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
this.hookupFilter(flagIsNotEmpty);
|
this.hookupFilter(flagIsNotEmpty);
|
||||||
}
|
}
|
||||||
hookupButtonApplyFilters() {
|
hookupButtonApplyFilters() {
|
||||||
this.hookupEventHandler("click", idButtonApplyFilters, (event, button) => {
|
Events.hookupEventHandler("click", idButtonApplyFilters, (event, button) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
this.callFilterTableContent();
|
this.callFilterTableContent();
|
||||||
});
|
});
|
||||||
@@ -178,6 +178,9 @@ export default class TableBasePage extends BasePage {
|
|||||||
hookupFilterCommand() {
|
hookupFilterCommand() {
|
||||||
this.hookupFilter(attrIdCommand);
|
this.hookupFilter(attrIdCommand);
|
||||||
}
|
}
|
||||||
|
hookupFilterLocation() {
|
||||||
|
this.hookupFilter(attrIdLocation);
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
getAndLoadFilteredTableContent = () => {
|
getAndLoadFilteredTableContent = () => {
|
||||||
this.callFilterTableContent()
|
this.callFilterTableContent()
|
||||||
@@ -334,11 +337,9 @@ export default class TableBasePage extends BasePage {
|
|||||||
if (this.constructor === TableBasePage) {
|
if (this.constructor === TableBasePage) {
|
||||||
throw new Error("Must implement hookupTableMain() method.");
|
throw new Error("Must implement hookupTableMain() method.");
|
||||||
}
|
}
|
||||||
if (true) { // _rowBlank == null) {
|
Events.initialiseEventHandler(idTableMain, flagInitialised, (table) => {
|
||||||
Events.initialiseEventHandler(idTableMain, flagInitialised, (table) => {
|
this.cacheRowBlank();
|
||||||
this.cacheRowBlank();
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
cacheRowBlank() {
|
cacheRowBlank() {
|
||||||
let selectorRowNew = idTableMain + ' tbody tr.' + flagRowNew;
|
let selectorRowNew = idTableMain + ' tbody tr.' + flagRowNew;
|
||||||
@@ -379,79 +380,6 @@ export default class TableBasePage extends BasePage {
|
|||||||
handler(null, input);
|
handler(null, input);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
handleChangeElementCellTable(event, element) {
|
|
||||||
let row = DOM.getRowFromElement(element);
|
|
||||||
let td = DOM.getCellFromElement(element);
|
|
||||||
let wasDirtyRow = DOM.hasDirtyChildrenContainer(row);
|
|
||||||
let wasDirtyElement = element.classList.contains(flagDirty);
|
|
||||||
let isDirtyElement = DOM.updateAndCheckIsElementDirty(element);
|
|
||||||
if (isDirtyElement != wasDirtyElement) {
|
|
||||||
DOM.handleDirtyElement(td, isDirtyElement);
|
|
||||||
let isNowDirtyRow = DOM.hasDirtyChildrenContainer(row);
|
|
||||||
if (isNowDirtyRow != wasDirtyRow) {
|
|
||||||
DOM.handleDirtyElement(row, isNowDirtyRow);
|
|
||||||
let rows = this.getTableRecords(true);
|
|
||||||
let existsDirtyRecord = rows.length > 0;
|
|
||||||
this.toggleShowButtonsSaveCancel(existsDirtyRecord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
handleChangeElementNestedCellTable(event, element, flagColumnList = [], orderNesting = 1) {
|
|
||||||
let orderNestingTemp = orderNesting;
|
|
||||||
let row, td, nestedRowSelector;
|
|
||||||
while (orderNestingTemp > 0) {
|
|
||||||
nestedRowSelector = idTableMain;
|
|
||||||
for (let indexOrderNesting = 0; indexOrderNesting < orderNestingTemp; indexOrderNesting++) {
|
|
||||||
nestedRowSelector += ' tbody tr';
|
|
||||||
}
|
|
||||||
row = DOM.getClosestParent(element, nestedRowSelector);
|
|
||||||
td = row.querySelector('td.' + flag);
|
|
||||||
}
|
|
||||||
let row = DOM.getRowFromElement(element);
|
|
||||||
let td = DOM.getCellFromElement(element);
|
|
||||||
let wasDirtyRow = DOM.hasDirtyChildrenContainer(row);
|
|
||||||
let wasDirtyElement = element.classList.contains(flagDirty);
|
|
||||||
let isDirtyElement = DOM.updateAndCheckIsElementDirty(element);
|
|
||||||
if (isDirtyElement != wasDirtyElement) {
|
|
||||||
DOM.handleDirtyElement(td, isDirtyElement);
|
|
||||||
let isNowDirtyRow = DOM.hasDirtyChildrenContainer(row);
|
|
||||||
if (isNowDirtyRow != wasDirtyRow) {
|
|
||||||
DOM.handleDirtyElement(row, isNowDirtyRow);
|
|
||||||
let rows = this.getTableRecords(true);
|
|
||||||
let existsDirtyRecord = rows.length > 0;
|
|
||||||
this.toggleShowButtonsSaveCancel(existsDirtyRecord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
handleChangeElementSubtableCell(event, element, flagFieldSubtable) {
|
|
||||||
let rowSubtable = element.closest(idTableMain + ' td.' + flagFieldSubtable + ' tbody tr');
|
|
||||||
let rowTable = rowSubtable.closest(idTableMain + ' > tbody > tr');
|
|
||||||
let td = DOM.getCellFromElement(element);
|
|
||||||
// let tdSubtable = td.closest('td.' + flagFieldSubtable);
|
|
||||||
let wasDirtyRowSubtable = DOM.hasDirtyChildrenContainer(rowSubtable);
|
|
||||||
let wasDirtyRowTable = DOM.hasDirtyChildrenContainer(rowTable);
|
|
||||||
let wasDirtyElement = element.classList.contains(flagDirty);
|
|
||||||
let isDirtyElement = DOM.updateAndCheckIsElementDirty(element);
|
|
||||||
Utils.consoleLogIfNotProductionEnvironment({isDirtyElement, wasDirtyElement});
|
|
||||||
if (isDirtyElement != wasDirtyElement) {
|
|
||||||
DOM.handleDirtyElement(td, isDirtyElement);
|
|
||||||
let isNowDirtyRowSubtable = DOM.hasDirtyChildrenContainer(rowSubtable);
|
|
||||||
Utils.consoleLogIfNotProductionEnvironment({isNowDirtyRowSubtable, wasDirtyRowSubtable});
|
|
||||||
if (isNowDirtyRowSubtable != wasDirtyRowSubtable) {
|
|
||||||
DOM.handleDirtyElement(rowSubtable, isNowDirtyRowSubtable);
|
|
||||||
let isNowDirtyRowTable = DOM.hasDirtyChildrenContainer(rowTable);
|
|
||||||
Utils.consoleLogIfNotProductionEnvironment({isNowDirtyRowTable, wasDirtyRowTable});
|
|
||||||
if (isNowDirtyRowTable != wasDirtyRowTable) {
|
|
||||||
DOM.handleDirtyElement(rowTable, isNowDirtyRowTable);
|
|
||||||
let rows = this.getTableRecords(true);
|
|
||||||
let existsDirtyRecord = rows.length > 0;
|
|
||||||
this.toggleShowButtonsSaveCancel(existsDirtyRecord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
handleChangeNestedElementCellTable(event, element) {
|
handleChangeNestedElementCellTable(event, element) {
|
||||||
let wasDirtyParentRows = this.getAllIsDirtyRowsInParentTree(element);
|
let wasDirtyParentRows = this.getAllIsDirtyRowsInParentTree(element);
|
||||||
let wasDirtyElement = element.classList.contains(flagDirty);
|
let wasDirtyElement = element.classList.contains(flagDirty);
|
||||||
@@ -493,7 +421,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
hookupChangeHandlerTableCellsWhenNotCollapsed(inputSelector, handler = (event, element) => {
|
hookupChangeHandlerTableCellsWhenNotCollapsed(inputSelector, handler = (event, element) => {
|
||||||
if (!element.classList.contains(flagIsCollapsed)) this.handleChangeNestedElementCellTable(event, element);
|
if (!element.classList.contains(flagIsCollapsed)) this.handleChangeNestedElementCellTable(event, element);
|
||||||
}) {
|
}) {
|
||||||
this.hookupEventHandler("change", inputSelector, handler);
|
Events.hookupEventHandler("change", inputSelector, handler);
|
||||||
}
|
}
|
||||||
hookupFieldsCodeTable() {
|
hookupFieldsCodeTable() {
|
||||||
this.hookupChangeHandlerTableCells(idTableMain + ' > tbody > tr > td.' + flagCode + ' > .' + flagCode);
|
this.hookupChangeHandlerTableCells(idTableMain + ' > tbody > tr > td.' + flagCode + ' > .' + flagCode);
|
||||||
@@ -508,20 +436,20 @@ export default class TableBasePage extends BasePage {
|
|||||||
this.hookupChangeHandlerTableCells(idTableMain + ' > tbody > tr > td.' + flagNotes + ' > .' + flagNotes);
|
this.hookupChangeHandlerTableCells(idTableMain + ' > tbody > tr > td.' + flagNotes + ' > .' + flagNotes);
|
||||||
}
|
}
|
||||||
hookupFieldsActive(flagTable = '', handleClickRowNew = (event, element) => { this.handleClickAddRowTable(event, element); }) {
|
hookupFieldsActive(flagTable = '', handleClickRowNew = (event, element) => { this.handleClickAddRowTable(event, element); }) {
|
||||||
let selectorButton = 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody > tr > td.' + flagActive + ' .' + flagButton + '.' + flagActive;
|
let selectorButton = 'table.table-main' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > tbody > tr > td.' + flagActive + ' .' + flagButton + '.' + flagActive;
|
||||||
let selectorButtonDelete = selectorButton + '.' + flagDelete;
|
let selectorButtonDelete = selectorButton + '.' + flagDelete;
|
||||||
let selectorButtonUndelete = selectorButton + ':not(.' + flagDelete + ')';
|
let selectorButtonUndelete = selectorButton + ':not(.' + flagDelete + ')';
|
||||||
Utils.consoleLogIfNotProductionEnvironment("hookupFieldsActive: ", selectorButtonDelete, selectorButtonUndelete);
|
Utils.consoleLogIfNotProductionEnvironment("hookupFieldsActive: ", selectorButtonDelete, selectorButtonUndelete);
|
||||||
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete);
|
this.hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete);
|
||||||
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
|
this.hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete);
|
||||||
this.hookupEventHandler(
|
Events.hookupEventHandler(
|
||||||
"click"
|
"click"
|
||||||
, 'table' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > thead > tr > th.' + flagActive + ' .' + flagButton + '.' + flagActive
|
, 'table.table-main' + (Validation.isEmpty(flagTable) ? '' : '.' + flagTable) + ' > thead > tr > th.' + flagActive + ' .' + flagButton + '.' + flagActive
|
||||||
, (event, button) => { handleClickRowNew(event, button); }
|
, (event, button) => { handleClickRowNew(event, button); }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
|
hookupButtonsRowDelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
|
||||||
this.hookupEventHandler("click", selectorButtonDelete, (event, element) => {
|
Events.hookupEventHandler("click", selectorButtonDelete, (event, element) => {
|
||||||
this.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
|
this.handleClickButtonRowDelete(event, element, selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -546,7 +474,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
this.updateAndToggleShowButtonsSaveCancel();
|
this.updateAndToggleShowButtonsSaveCancel();
|
||||||
}
|
}
|
||||||
hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
|
hookupButtonsRowUndelete(selectorButtonDelete, selectorButtonUndelete, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }) {
|
||||||
this.hookupEventHandler("click", selectorButtonUndelete, (event, element) => {
|
Events.hookupEventHandler("click", selectorButtonUndelete, (event, element) => {
|
||||||
this.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
|
this.handleClickButtonRowUndelete(event, element, selectorButtonDelete, selectorButtonUndelete, (changeEvent, changeElement) => { changeHandler(changeEvent, changeElement); });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -575,7 +503,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }
|
, changeHandler = (event, element) => { this.handleChangeNestedElementCellTable(event, element); }
|
||||||
) {
|
) {
|
||||||
if (cellSelector == null) cellSelector = idTableMain + ' > tbody > tr > td.' + fieldFlag;
|
if (cellSelector == null) cellSelector = idTableMain + ' > tbody > tr > td.' + fieldFlag;
|
||||||
this.hookupEventHandler("click", cellSelector + ' div.' + fieldFlag, (event, div) => {
|
Events.hookupEventHandler("click", cellSelector + ' div.' + fieldFlag, (event, div) => {
|
||||||
this.handleClickTableCellDdlPreview(
|
this.handleClickTableCellDdlPreview(
|
||||||
event
|
event
|
||||||
, div
|
, div
|
||||||
@@ -619,7 +547,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
hookupTableCellDDlPreviewsWhenNotCollapsed(cellSelector, optionList, ddlHookup = (event, element) => { this.hookupTableCellDdls(event, element); }) {
|
hookupTableCellDDlPreviewsWhenNotCollapsed(cellSelector, optionList, ddlHookup = (event, element) => { this.hookupTableCellDdls(event, element); }) {
|
||||||
this.hookupEventHandler("click", cellSelector + ' div', (event, div) => {
|
Events.hookupEventHandler("click", cellSelector + ' div', (event, div) => {
|
||||||
this.handleClickTableCellDdlPreview(event, div, optionList, cellSelector, (event, element) => { ddlHookup(event, element); });
|
this.handleClickTableCellDdlPreview(event, div, optionList, cellSelector, (event, element) => { ddlHookup(event, element); });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -631,11 +559,12 @@ export default class TableBasePage extends BasePage {
|
|||||||
this.toggleColumnHasClassnameFlag(flagColumn, isCollapsed, flagIsCollapsed);
|
this.toggleColumnHasClassnameFlag(flagColumn, isCollapsed, flagIsCollapsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
hookupFieldsCommandCategory() {
|
hookupFieldsCommandCategory(idTable = null) {
|
||||||
|
if (idTable == null) idTable = idTableMain;
|
||||||
this.hookupTableCellDdlPreviews(
|
this.hookupTableCellDdlPreviews(
|
||||||
flagCommandCategory
|
flagCommandCategory
|
||||||
, Utils.getListFromDict(filterCommandCategories).sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
, Utils.getListFromDict(filterCommandCategories).sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
, null
|
, idTable + ' > tbody > tr > td.' + flagCommandCategory // + ' .' + flagCommandCategory
|
||||||
, (cellSelector) => { this.hookupCommandCategoryDdls(cellSelector); }
|
, (cellSelector) => { this.hookupCommandCategoryDdls(cellSelector); }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -647,7 +576,11 @@ export default class TableBasePage extends BasePage {
|
|||||||
let idCommandCategoryRowOld = this.getIdCommandCategoryRow(row); // DOM.getElementAttributeValueCurrent(ddlCategory);
|
let idCommandCategoryRowOld = this.getIdCommandCategoryRow(row); // DOM.getElementAttributeValueCurrent(ddlCategory);
|
||||||
this.handleChangeNestedElementCellTable(event, ddlCategory);
|
this.handleChangeNestedElementCellTable(event, ddlCategory);
|
||||||
let idCommandCategoryRowNew = this.getIdCommandCategoryRow(row); // DOM.getElementAttributeValueCurrent(ddlCategory);
|
let idCommandCategoryRowNew = this.getIdCommandCategoryRow(row); // DOM.getElementAttributeValueCurrent(ddlCategory);
|
||||||
if (idCommandCategoryRowOld == idCommandCategoryRowNew) return;
|
if (
|
||||||
|
idCommandCategoryRowOld == idCommandCategoryRowNew
|
||||||
|
|| idCommandCategoryRowNew == 0
|
||||||
|
) return;
|
||||||
|
console.log({ idCommandCategoryRowNew, idCommandCategoryRowOld });
|
||||||
let idCommandCategoryFilter = this.getIdCommandCategoryFilter();
|
let idCommandCategoryFilter = this.getIdCommandCategoryFilter();
|
||||||
let tdCommand = row.querySelector('td.' + flagCommand);
|
let tdCommand = row.querySelector('td.' + flagCommand);
|
||||||
tdCommand.dispatchEvent(new Event('click'));
|
tdCommand.dispatchEvent(new Event('click'));
|
||||||
@@ -673,8 +606,9 @@ export default class TableBasePage extends BasePage {
|
|||||||
});
|
});
|
||||||
this.handleChangeNestedElementCellTable(event, ddlCommand);
|
this.handleChangeNestedElementCellTable(event, ddlCommand);
|
||||||
}
|
}
|
||||||
hookupFieldsCommand() {
|
hookupFieldsCommand(idTable = null) {
|
||||||
this.hookupEventHandler("click", idTableMain + ' td.' + flagCommand + ' .' + flagCommand, (event, div) => {
|
if (idTable == null) idTable = idTableMain;
|
||||||
|
Events.hookupEventHandler("click", idTable + ' > tbody > tr > td.' + flagCommand + ' div.' + flagCommand, (event, div) => {
|
||||||
Utils.consoleLogIfNotProductionEnvironment(div);
|
Utils.consoleLogIfNotProductionEnvironment(div);
|
||||||
let parentTr = DOM.getRowFromElement(div);
|
let parentTr = DOM.getRowFromElement(div);
|
||||||
Utils.consoleLogIfNotProductionEnvironment({ div, parentTr });
|
Utils.consoleLogIfNotProductionEnvironment({ div, parentTr });
|
||||||
@@ -698,16 +632,35 @@ export default class TableBasePage extends BasePage {
|
|||||||
this.handleClickTableCellDdlPreview(
|
this.handleClickTableCellDdlPreview(
|
||||||
event
|
event
|
||||||
, div
|
, div
|
||||||
, flagCommand
|
, flagCommand // fieldFlag
|
||||||
, sortedCommands
|
, sortedCommands // optionList
|
||||||
, null
|
, idTable + ' > tbody > tr > td.' + flagCommand // cellSelector
|
||||||
, (cellSelector) => { this.hookupTableCellDdls(
|
, (cellSelector) => { this.hookupTableCellDdls(
|
||||||
cellSelector
|
cellSelector
|
||||||
, (event, element) => { this.handleChangeNestedElementCellTable(event, element); }
|
, (event, element) => { this.handleChangeCommandDdl(event, element); }
|
||||||
); }
|
); }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
this.hookupTableCellDdls(idTableMain + ' td.' + flagCommand + ' select.' + flagCommand);
|
this.hookupTableCellDdls(
|
||||||
|
idTable + ' > tbody > tr > td.' + flagCommand + ' select.' + flagCommand
|
||||||
|
, (event, element) => { this.handleChangeCommandDdl(event, element); }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
handleChangeCommandDdl(event, ddlCommand) {
|
||||||
|
// console.log("handle change command ddl");
|
||||||
|
let row = DOM.getRowFromElement(ddlCommand);
|
||||||
|
this.handleChangeNestedElementCellTable(event, ddlCommand);
|
||||||
|
let idCommandCategoryRowOld = this.getIdCommandCategoryRow(row);
|
||||||
|
let idCommandNew = this.getIdCommandRow(row);
|
||||||
|
let commandNew = filterCommands[idCommandNew];
|
||||||
|
// console.log({ idCommandCategoryRowOld, commandNew });
|
||||||
|
if (commandNew == null || idCommandCategoryRowOld == commandNew[attrIdCommandCategory]) return;
|
||||||
|
let divCommandCategory = row.querySelector('td.' + flagCommandCategory + ' div');
|
||||||
|
if (divCommandCategory) divCommandCategory.dispatchEvent(new Event('click'));
|
||||||
|
let ddlCommandCategory = row.querySelector('td.' + flagCommandCategory + ' select.' + flagCommandCategory);
|
||||||
|
DOM.setElementValueCurrent(ddlCommandCategory, commandNew[attrIdCommandCategory]);
|
||||||
|
// console.log({ ddlCommandCategory, commandNew });
|
||||||
|
this.handleChangeNestedElementCellTable(event, ddlCommandCategory);
|
||||||
}
|
}
|
||||||
getIdCommandCategoryRow(tr) {
|
getIdCommandCategoryRow(tr) {
|
||||||
let elementCommandCategory = tr.querySelector('td.' + flagCommandCategory + ' .' + flagCommandCategory);
|
let elementCommandCategory = tr.querySelector('td.' + flagCommandCategory + ' .' + flagCommandCategory);
|
||||||
@@ -715,9 +668,10 @@ export default class TableBasePage extends BasePage {
|
|||||||
}
|
}
|
||||||
getIdCommandCategoryFilter() {
|
getIdCommandCategoryFilter() {
|
||||||
let formFilters = TableBasePage.getFormFilters();
|
let formFilters = TableBasePage.getFormFilters();
|
||||||
|
let idCommandCategory = 0;
|
||||||
|
if (formFilters == null) return idCommandCategory;
|
||||||
let commandCategoryFilter = formFilters.querySelector('#' + attrIdCommandCategory);
|
let commandCategoryFilter = formFilters.querySelector('#' + attrIdCommandCategory);
|
||||||
let commandFilter = formFilters.querySelector('#' + attrIdCommand);
|
let commandFilter = formFilters.querySelector('#' + attrIdCommand);
|
||||||
let idCommandCategory = 0;
|
|
||||||
let valueCurrentCommandCategoryFilter = DOM.getElementAttributeValueCurrent(commandCategoryFilter);
|
let valueCurrentCommandCategoryFilter = DOM.getElementAttributeValueCurrent(commandCategoryFilter);
|
||||||
Utils.consoleLogIfNotProductionEnvironment({ valueCurrentCommandCategoryFilter });
|
Utils.consoleLogIfNotProductionEnvironment({ valueCurrentCommandCategoryFilter });
|
||||||
if (valueCurrentCommandCategoryFilter == "") {
|
if (valueCurrentCommandCategoryFilter == "") {
|
||||||
@@ -758,7 +712,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
let elementDog = tr.querySelector('td.' + flagDog + ' .' + flagDog);
|
let elementDog = tr.querySelector('td.' + flagDog + ' .' + flagDog);
|
||||||
return DOM.getElementAttributeValueCurrent(elementDog);
|
return DOM.getElementAttributeValueCurrent(elementDog);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
createTdActive(isActive) {
|
createTdActive(isActive) {
|
||||||
let tdActive = document.createElement("td");
|
let tdActive = document.createElement("td");
|
||||||
tdActive.classList.add(flagActive);
|
tdActive.classList.add(flagActive);
|
||||||
@@ -770,7 +724,7 @@ export default class TableBasePage extends BasePage {
|
|||||||
tdActive.appendChild(buttonActive);
|
tdActive.appendChild(buttonActive);
|
||||||
return tdActive;
|
return tdActive;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
leave() {
|
leave() {
|
||||||
if (this.constructor === TableBasePage) {
|
if (this.constructor === TableBasePage) {
|
||||||
throw new Error("Must implement leave() method.");
|
throw new Error("Must implement leave() method.");
|
||||||
|
|||||||
603
static/js/pages/dog/assessment.js
Normal file
603
static/js/pages/dog/assessment.js
Normal file
@@ -0,0 +1,603 @@
|
|||||||
|
|
||||||
|
import API from "../../api.js";
|
||||||
|
import BusinessObjects from "../../lib/business_objects/business_objects.js";
|
||||||
|
import DOM from "../../dom.js";
|
||||||
|
import Events from "../../lib/events.js";
|
||||||
|
import TableBasePage from "../base_table.js";
|
||||||
|
import Utils from "../../lib/utils.js";
|
||||||
|
import Validation from "../../lib/validation.js";
|
||||||
|
import DogTableMixinPage from "./mixin_table.js";
|
||||||
|
|
||||||
|
var _rowBlankDistraction;
|
||||||
|
var _rowBlankAssessmentCommandModalityLink;
|
||||||
|
|
||||||
|
export default class PageDogAssessment extends TableBasePage {
|
||||||
|
static hash = hashPageDogAssessment;
|
||||||
|
static attrIdRowObject = attrIdAssessment;
|
||||||
|
callSaveTableContent = API.saveAssessments;
|
||||||
|
|
||||||
|
constructor(router) {
|
||||||
|
super(router);
|
||||||
|
this.dogMixin = new DogTableMixinPage(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
initialize() {
|
||||||
|
this.sharedInitialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
hookupFilters() {
|
||||||
|
}
|
||||||
|
|
||||||
|
loadRowTable(rowJson) {
|
||||||
|
if (rowJson == null) return;
|
||||||
|
if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); }
|
||||||
|
}
|
||||||
|
getJsonRow(row) {
|
||||||
|
if (row == null) return;
|
||||||
|
/*
|
||||||
|
let inputTemperatureCelcius = row.querySelector('td.' + flagTemperatureCelcius + ' input');
|
||||||
|
let buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive);
|
||||||
|
*/
|
||||||
|
let jsonRow = {};
|
||||||
|
jsonRow[attrIdAssessment] = row.getAttribute(attrIdAssessment);
|
||||||
|
return jsonRow;
|
||||||
|
}
|
||||||
|
initialiseRowNew(tbody, row) {
|
||||||
|
|
||||||
|
}
|
||||||
|
postInitialiseRowNewCallback(tbody) {
|
||||||
|
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
||||||
|
let newestRow = newRows[0];
|
||||||
|
let clickableElementsSelector = [
|
||||||
|
'td.' + flagWeather + ' div.' + flagWeather
|
||||||
|
, ',td.' + flagLightingLevel + ' div.' + flagLightingLevel
|
||||||
|
, ',td.' + flagLocation + ' div.' + flagLocation
|
||||||
|
, ',td.' + flagUserHandler + ' div.' + flagUserHandler
|
||||||
|
].join('');
|
||||||
|
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
|
||||||
|
clickableElement.click();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
hookupTableMain() {
|
||||||
|
super.hookupTableMain();
|
||||||
|
this.hookupTableAssessmentHeader();
|
||||||
|
this.hookupTableDistractions();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinks();
|
||||||
|
}
|
||||||
|
hookupTableAssessmentHeader() {
|
||||||
|
this.hookupTableAssessmentFieldWeather();
|
||||||
|
this.hookupTableAssessmentFieldLightingLevel();
|
||||||
|
this.hookupTableAssessmentFieldTemperature();
|
||||||
|
this.hookupTableAssessmentFieldLocation();
|
||||||
|
this.hookupTableAssessmentFieldUserHandler();
|
||||||
|
this.hookupTableAssessmentFieldNotes();
|
||||||
|
}
|
||||||
|
hookupTableAssessmentFieldWeather() {
|
||||||
|
let fieldFlag = flagWeather;
|
||||||
|
let optionList = Utils.getListFromDict(filterWeathers); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableAssessment + ' td.' + flagWeather;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentFieldLightingLevel() {
|
||||||
|
let fieldFlag = flagLightingLevel;
|
||||||
|
let optionList = Utils.getListFromDict(filterLightingLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableAssessment + ' td.' + flagLightingLevel;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentFieldTemperature() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessment + ' td.' + flagTemperatureCelcius + ' .' + flagTemperatureCelcius);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentFieldLocation() {
|
||||||
|
let fieldFlag = flagLocation;
|
||||||
|
let optionList = Utils.getListFromDict(filterLocations); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableAssessment + ' td.' + flagLocation;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentFieldUserHandler() {
|
||||||
|
let fieldFlag = flagUserHandler;
|
||||||
|
let optionList = Utils.getListFromDict(filterUserHandlers); // .sort((a, b) => a[flagName].localeCompare(b[flagName]));
|
||||||
|
let cellSelector = idTableAssessment + ' td.' + flagUserHandler;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentFieldNotes() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessment + ' td.' + flagNotes + ' .' + flagNotes);
|
||||||
|
}
|
||||||
|
hookupTableDistractions() {
|
||||||
|
Events.initialiseEventHandler(idTableDistractions, flagInitialised, (table) => {
|
||||||
|
let selectorRowNew = idTableDistractions + ' tbody tr.' + flagRowNew;
|
||||||
|
let rowBlankTemp = document.querySelector(selectorRowNew);
|
||||||
|
Utils.consoleLogIfNotProductionEnvironment("row blank temp: ", rowBlankTemp);
|
||||||
|
let countRows = document.querySelectorAll(idTableDistractions + ' > tbody > tr').length;
|
||||||
|
_rowBlankDistraction = rowBlankTemp.cloneNode(true);
|
||||||
|
document.querySelectorAll(selectorRowNew).forEach(function(row) {
|
||||||
|
row.remove();
|
||||||
|
});
|
||||||
|
_rowBlankDistraction.setAttribute(attrIdDistraction, -1 - countRows);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.hookupTableDistractionsFieldsDistractionType();
|
||||||
|
this.hookupTableDistractionsFieldsIntensityLevelEmotional();
|
||||||
|
this.hookupTableDistractionsFieldsIntensityLevelScent();
|
||||||
|
this.hookupTableDistractionsFieldsIntensityLevelSight();
|
||||||
|
this.hookupTableDistractionsFieldsIntensityLevelSound();
|
||||||
|
this.hookupTableDistractionsFieldsIntensityLevelTouch();
|
||||||
|
this.hookupTableDistractionsFieldsQuantity();
|
||||||
|
this.hookupTableDistractionsFieldsProximityMetres();
|
||||||
|
this.hookupTableDistractionsFieldsNotes();
|
||||||
|
this.hookupTableDistractionsFieldsActive();
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsDistractionType() {
|
||||||
|
let fieldFlag = flagDistractionType;
|
||||||
|
let optionList = Utils.getListFromDict(filterDistractionTypes); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableDistractions + ' td.' + flagDistractionType;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsIntensityLevelEmotional() {
|
||||||
|
let fieldFlag = flagDistractionIntensityLevelEmotional;
|
||||||
|
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelEmotional;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsIntensityLevelScent() {
|
||||||
|
let fieldFlag = flagDistractionIntensityLevelScent;
|
||||||
|
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelScent;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsIntensityLevelSight() {
|
||||||
|
let fieldFlag = flagDistractionIntensityLevelSight;
|
||||||
|
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelSight;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsIntensityLevelSound() {
|
||||||
|
let fieldFlag = flagDistractionIntensityLevelSound;
|
||||||
|
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelSound;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsIntensityLevelTouch() {
|
||||||
|
let fieldFlag = flagDistractionIntensityLevelTouch;
|
||||||
|
let optionList = Utils.getListFromDict(filterDistractionIntensityLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableDistractions + ' td.' + flagDistractionIntensityLevelTouch;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsQuantity() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableDistractions + ' td.' + flagQuantity + ' .' + flagQuantity);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsProximityMetres() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableDistractions + ' td.' + flagProximityMetres + ' .' + flagProximityMetres);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsNotes() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableDistractions + ' td.' + flagNotes + ' .' + flagNotes);
|
||||||
|
}
|
||||||
|
hookupTableDistractionsFieldsActive() {
|
||||||
|
this.hookupFieldsActive(flagDistraction, (event, element) => { this.handleClickAddRowTableDistractions(event, element); });
|
||||||
|
}
|
||||||
|
handleClickAddRowTableDistractions(event, button) {
|
||||||
|
event.stopPropagation();
|
||||||
|
_rowBlankDistraction.setAttribute(attrIdDistraction, -1 - _rowBlankDistraction.getAttribute(attrIdDistraction));
|
||||||
|
let tbody = document.querySelector(idTableDistractions + ' tbody');
|
||||||
|
if (tbody.classList.contains(flagIsCollapsed)) return;
|
||||||
|
let row = _rowBlankDistraction.cloneNode(true);
|
||||||
|
row.classList.remove(flagInitialised);
|
||||||
|
row.querySelectorAll('.' + flagInitialised).forEach(function(element) {
|
||||||
|
element.classList.remove(flagInitialised);
|
||||||
|
});
|
||||||
|
let countRows = document.querySelectorAll(idTableDistractions + ' > tbody > tr').length;
|
||||||
|
row.setAttribute(attrIdDistraction, -1 - countRows);
|
||||||
|
tbody.prepend(row);
|
||||||
|
tbody.scrollTop = 0;
|
||||||
|
this.hookupTableDistractions();
|
||||||
|
this.postInitialiseDistractionRowNewCallback(tbody);
|
||||||
|
}
|
||||||
|
postInitialiseDistractionRowNewCallback(tbody) {
|
||||||
|
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
||||||
|
let newestRow = newRows[0];
|
||||||
|
let clickableElementsSelector = [
|
||||||
|
'td.' + flagDistractionType + ' div.' + flagDistractionType
|
||||||
|
, ',td.' + flagDistractionIntensityLevelEmotional + ' div.' + flagDistractionIntensityLevelEmotional
|
||||||
|
, ',td.' + flagDistractionIntensityLevelScent + ' div.' + flagDistractionIntensityLevelScent
|
||||||
|
, ',td.' + flagDistractionIntensityLevelSight + ' div.' + flagDistractionIntensityLevelSight
|
||||||
|
, ',td.' + flagDistractionIntensityLevelSound + ' div.' + flagDistractionIntensityLevelSound
|
||||||
|
, ',td.' + flagDistractionIntensityLevelTouch + ' div.' + flagDistractionIntensityLevelTouch
|
||||||
|
].join('');
|
||||||
|
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
|
||||||
|
clickableElement.click();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinks() {
|
||||||
|
Events.initialiseEventHandler(idTableAssessmentCommandModalityLinks, flagInitialised, (table) => {
|
||||||
|
let selectorRowNew = idTableAssessmentCommandModalityLinks + ' tbody tr.' + flagRowNew;
|
||||||
|
let rowBlankTemp = document.querySelector(selectorRowNew);
|
||||||
|
Utils.consoleLogIfNotProductionEnvironment("row blank temp: ", rowBlankTemp);
|
||||||
|
let countRows = document.querySelectorAll(idTableAssessmentCommandModalityLinks + ' > tbody > tr').length;
|
||||||
|
_rowBlankAssessmentCommandModalityLink = rowBlankTemp.cloneNode(true);
|
||||||
|
document.querySelectorAll(selectorRowNew).forEach(function(row) {
|
||||||
|
row.remove();
|
||||||
|
});
|
||||||
|
_rowBlankAssessmentCommandModalityLink.setAttribute(attrIdAssessmentCommandModalityLink, -1 - countRows);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsCommandCategory();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsCommand();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsCommandModality();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsBribe();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsDistanceFromHandler();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsIsInHearingRangeOfHandler();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsIsInScentRangeOfHandler();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsIsInSightOfHandler();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsIsOnLead();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsTrialCount();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsNotes();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsResponses();
|
||||||
|
this.hookupTableAssessmentCommandModalityLinksFieldsActive();
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsCommandCategory() {
|
||||||
|
this.hookupFieldsCommandCategory(idTableAssessmentCommandModalityLinks);
|
||||||
|
/*
|
||||||
|
let fieldFlag = flagCommandCategory;
|
||||||
|
let optionList = Utils.getListFromDict(filterCommandCategories).sort((a, b) => a[flagName].localeCompare(b[flagName]));
|
||||||
|
let cellSelector = idTableAssessmentCommandModalityLinks + ' td.' + flagCommandCategory;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
, (tdSelector) => { this.hookupTableAssessmentCommandModalityLinksDdlsCommandCategory(tdSelector); }
|
||||||
|
, (event, element) => { this.handleChangeTableAssessmentCommandModalityLinksDdlCommandCategory(event, element); }
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
hookupTableAssessmentCommandModalityLinksDdlsCommandCategory(ddlSelector) {
|
||||||
|
this.hookupChangeHandlerTableCells(ddlSelector, (event, element) => { this.handleChangeTableAssessmentCommandModalityLinksDdlCommandCategory(event, element); });
|
||||||
|
}
|
||||||
|
handleChangeTableAssessmentCommandModalityLinksDdlCommandCategory(event, ddlCategory) {
|
||||||
|
let row = DOM.getRowFromElement(ddlCategory);
|
||||||
|
let idCommandCategoryRowOld = this.getIdCommandCategoryRow(row); // DOM.getElementAttributeValueCurrent(ddlCategory);
|
||||||
|
this.handleChangeNestedElementCellTable(event, ddlCategory);
|
||||||
|
let idCommandCategoryRowNew = this.getIdCommandCategoryRow(row); // DOM.getElementAttributeValueCurrent(ddlCategory);
|
||||||
|
if (idCommandCategoryRowOld == idCommandCategoryRowNew) return;
|
||||||
|
let divCommand = row.querySelector('td.' + flagCommand + ' div');
|
||||||
|
if (divCommand) divCommand.dispatchEvent(new Event('click'));
|
||||||
|
let ddlCommand = row.querySelector('td.' + flagCommand + ' select.' + flagCommand);
|
||||||
|
ddlCommand.innerHTML = '';
|
||||||
|
ddlCommand.appendChild(DOM.createOption(null));
|
||||||
|
let optionJson, option;
|
||||||
|
let commandsInCategory = Utils.getListFromDict(filterCommands).filter(command =>
|
||||||
|
(
|
||||||
|
command[attrIdCommandCategory] == idCommandCategoryRowNew
|
||||||
|
|| idCommandCategoryRowNew == 0
|
||||||
|
)
|
||||||
|
);
|
||||||
|
let sortedCommands = commandsInCategory.sort((a, b) => a[flagName].localeCompare(b[flagName]));
|
||||||
|
sortedCommands.forEach((command) => {
|
||||||
|
optionJson = BusinessObjects.getOptionJsonFromObjectJson(command);
|
||||||
|
option = DOM.createOption(optionJson);
|
||||||
|
ddlCommand.appendChild(option);
|
||||||
|
});
|
||||||
|
this.handleChangeNestedElementCellTable(event, ddlCommand);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsCommand() {
|
||||||
|
this.hookupFieldsCommand(idTableAssessmentCommandModalityLinks);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsCommandModality() {
|
||||||
|
let fieldFlag = flagCommandModality;
|
||||||
|
let optionList = Utils.getListFromDict(filterCommandModalities); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableAssessmentCommandModalityLinks + ' td.' + flagCommandModality;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsBribe() {
|
||||||
|
let fieldFlag = flagBribe;
|
||||||
|
let optionList = Utils.getListFromDict(filterBribes); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableAssessmentCommandModalityLinks + ' td.' + flagBribe;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsDistanceFromHandler() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessmentCommandModalityLinks + ' td.' + flagDistanceFromHandler + ' .' + flagDistanceFromHandler);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsIsInHearingRangeOfHandler() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessmentCommandModalityLinks + ' td.' + flagIsInHearingRangeOfHandler + ' .' + flagIsInHearingRangeOfHandler);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsIsInScentRangeOfHandler() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessmentCommandModalityLinks + ' td.' + flagIsInScentRangeOfHandler + ' .' + flagIsInScentRangeOfHandler);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsIsInSightOfHandler() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessmentCommandModalityLinks + ' td.' + flagIsInSightOfHandler + ' .' + flagIsInSightOfHandler);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsIsOnLead() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessmentCommandModalityLinks + ' td.' + flagIsOnLead + ' .' + flagIsOnLead);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsTrialCount() {
|
||||||
|
// this.hookupChangeHandlerTableCells(idTableAssessmentCommandModalityLinks + ' td.' + flagTrialCount + ' .' + flagTrialCount);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsNotes() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessmentCommandModalityLinks + ' > tbody > tr > td.' + flagNotes + ' .' + flagNotes);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsResponses() {
|
||||||
|
let eventType = "click";
|
||||||
|
let selector = idTableAssessmentCommandModalityLinks + ' td.' + flagAssessmentResponse + ' div.' + flagAssessmentResponse;
|
||||||
|
let handler = (event, element) => {
|
||||||
|
let parentTd = DOM.getCellFromElement(element);
|
||||||
|
let responsesTable = document.createElement("table");
|
||||||
|
responsesTable.id = idTableAssessmentResponses.replace("#", "");
|
||||||
|
responsesTable.classList.add(flagTableMain, flagAssessmentResponse);
|
||||||
|
|
||||||
|
let head = document.createElement("thead");
|
||||||
|
let headRow = document.createElement("tr");
|
||||||
|
let thResponseQualityMetric = document.createElement("th");
|
||||||
|
thResponseQualityMetric.classList.add(flagResponseQualityMetric);
|
||||||
|
thResponseQualityMetric.innerText = 'Response Quality Metric';
|
||||||
|
headRow.appendChild(thResponseQualityMetric);
|
||||||
|
let thObedienceLevel = document.createElement("th");
|
||||||
|
thObedienceLevel.classList.add(flagObedienceLevel);
|
||||||
|
thObedienceLevel.innerText = 'Obedience Level';
|
||||||
|
headRow.appendChild(thObedienceLevel);
|
||||||
|
let thValueMeasured = document.createElement("th");
|
||||||
|
thValueMeasured.classList.add(flagValueMeasured);
|
||||||
|
thValueMeasured.innerText = 'Value Measured';
|
||||||
|
headRow.appendChild(thValueMeasured);
|
||||||
|
let thNotes = document.createElement("th");
|
||||||
|
thNotes.classList.add(flagNotes);
|
||||||
|
thNotes.innerText = 'Notes';
|
||||||
|
headRow.appendChild(thNotes);
|
||||||
|
let thActive = document.createElement("th");
|
||||||
|
thActive.classList.add(flagActive);
|
||||||
|
let templateAddIcon = document.querySelector(idContainerTemplateElements + ' .' + flagButton + '.' + flagIcon + '.' + flagActive + '.' + flagAdd);
|
||||||
|
thActive.appendChild(templateAddIcon.cloneNode(true));
|
||||||
|
headRow.appendChild(thActive);
|
||||||
|
head.appendChild(headRow);
|
||||||
|
responsesTable.appendChild(head);
|
||||||
|
|
||||||
|
let body = document.createElement("tbody");
|
||||||
|
|
||||||
|
let assessmentCommandModalityLink = assessment[flagAssessmentCommandModalityLink];
|
||||||
|
let responses = (assessmentCommandModalityLink == null) ? null : assessmentCommandModalityLink[flagAssessmentResponse];
|
||||||
|
|
||||||
|
if (responses != null && responses.length > 0) {
|
||||||
|
for (let response in responses) {
|
||||||
|
let row = PageDogAssessment.createNewRowTableAssessmentResponses(response);
|
||||||
|
body.appendChild(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
responsesTable.appendChild(body);
|
||||||
|
|
||||||
|
parentTd.innerHTML = responsesTable.outerHTML;
|
||||||
|
|
||||||
|
this.hookupTablesAssessmentResponses();
|
||||||
|
};
|
||||||
|
Events.hookupEventHandler(
|
||||||
|
eventType
|
||||||
|
, selector
|
||||||
|
, handler
|
||||||
|
);
|
||||||
|
this.hookupTablesAssessmentResponses();
|
||||||
|
}
|
||||||
|
static createNewRowTableAssessmentResponses(response) {
|
||||||
|
if (response == null) response = {
|
||||||
|
[attrIdAssessmentResponse]: null
|
||||||
|
, [flagResponseQualityMetric]: 0
|
||||||
|
, [flagObedienceLevel]: 0
|
||||||
|
, [flagValueMeasured]: ''
|
||||||
|
, [flagNotes]: ''
|
||||||
|
, [flagActive]: true
|
||||||
|
};
|
||||||
|
let isNew = (response[attrIdAssessmentResponse] == null || response[attrIdAssessmentResponse] < 1);
|
||||||
|
let row = document.createElement("tr");
|
||||||
|
row.classList.add(flagAssessmentResponse);
|
||||||
|
if (isNew) row.classList.add(flagRowNew);
|
||||||
|
row.setAttribute(attrIdAssessmentResponse, response[attrIdAssessmentResponse]);
|
||||||
|
|
||||||
|
let tdResponseQualityMetric = document.createElement("td");
|
||||||
|
tdResponseQualityMetric.classList.add(flagResponseQualityMetric, flagDdlPreview);
|
||||||
|
let divResponseQualityMetric = document.createElement("div");
|
||||||
|
divResponseQualityMetric.classList.add(flagResponseQualityMetric);
|
||||||
|
DOM.setElementAttributesValuesCurrentAndPrevious(divResponseQualityMetric, response[flagResponseQualityMetric]);
|
||||||
|
divResponseQualityMetric.innerText = response[flagResponseQualityMetric];
|
||||||
|
tdResponseQualityMetric.appendChild(divResponseQualityMetric);
|
||||||
|
row.appendChild(tdResponseQualityMetric);
|
||||||
|
|
||||||
|
let tdObedienceLevel = document.createElement("td");
|
||||||
|
tdObedienceLevel.classList.add(flagObedienceLevel, flagDdlPreview);
|
||||||
|
let divObedienceLevel = document.createElement("div");
|
||||||
|
divObedienceLevel.classList.add(flagObedienceLevel);
|
||||||
|
DOM.setElementAttributesValuesCurrentAndPrevious(divObedienceLevel, response[flagObedienceLevel]);
|
||||||
|
divObedienceLevel.innerText = response[flagObedienceLevel];
|
||||||
|
tdObedienceLevel.appendChild(divObedienceLevel);
|
||||||
|
row.appendChild(tdObedienceLevel);
|
||||||
|
|
||||||
|
let tdValueMeasured = document.createElement("td");
|
||||||
|
tdValueMeasured.classList.add(flagValueMeasured, flagDdlPreview);
|
||||||
|
let inputValueMeasured = document.createElement("input");
|
||||||
|
inputValueMeasured.type = "number";
|
||||||
|
inputValueMeasured.classList.add(flagValueMeasured);
|
||||||
|
DOM.setElementAttributesValuesCurrentAndPrevious(inputValueMeasured, response[flagValueMeasured]);
|
||||||
|
inputValueMeasured.value = response[flagValueMeasured];
|
||||||
|
tdValueMeasured.appendChild(inputValueMeasured);
|
||||||
|
row.appendChild(tdValueMeasured);
|
||||||
|
|
||||||
|
let tdNotes = document.createElement("td");
|
||||||
|
tdNotes.classList.add(flagNotes, flagDdlPreview);
|
||||||
|
let inputNotes = document.createElement("textarea");
|
||||||
|
inputNotes.classList.add(flagNotes);
|
||||||
|
DOM.setElementAttributesValuesCurrentAndPrevious(inputNotes, response[flagNotes]);
|
||||||
|
inputNotes.value = response[flagNotes];
|
||||||
|
tdNotes.appendChild(inputNotes);
|
||||||
|
row.appendChild(tdNotes);
|
||||||
|
|
||||||
|
let tdActive = document.createElement("td");
|
||||||
|
tdActive.classList.add(flagActive, flagDdlPreview);
|
||||||
|
let templateAddIcon = document.querySelector(idContainerTemplateElements + ' .' + flagButton + '.' + flagIcon + '.' + flagActive + '.' + flagAdd);
|
||||||
|
let templateDeleteIcon = document.querySelector(idContainerTemplateElements + ' .' + flagButton + '.' + flagIcon + '.' + flagActive + '.' + flagDelete);
|
||||||
|
let buttonActive = (response[flagActive]) ? templateDeleteIcon.cloneNode(true) : templateAddIcon.cloneNode(true);
|
||||||
|
tdActive.appendChild(buttonActive);
|
||||||
|
row.appendChild(tdActive);
|
||||||
|
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
hookupTablesAssessmentResponses() {
|
||||||
|
this.hookupTableAssessmentResponsesFieldsResponseQualityMetric();
|
||||||
|
this.hookupTableAssessmentResponsesFieldsObedienceLevel();
|
||||||
|
this.hookupTableAssessmentResponsesFieldsValueMeasured();
|
||||||
|
this.hookupTableAssessmentResponsesFieldsNotes();
|
||||||
|
this.hookupTableAssessmentResponsesFieldsActive();
|
||||||
|
}
|
||||||
|
hookupTableAssessmentResponsesFieldsResponseQualityMetric() {
|
||||||
|
let fieldFlag = flagResponseQualityMetric;
|
||||||
|
let optionList = Utils.getListFromDict(filterResponseQualityMetrics); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableAssessmentResponses + ' td.' + flagResponseQualityMetric;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentResponsesFieldsObedienceLevel() {
|
||||||
|
let fieldFlag = flagObedienceLevel;
|
||||||
|
let optionList = Utils.getListFromDict(filterObedienceLevels); // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
let cellSelector = idTableAssessmentResponses + ' td.' + flagObedienceLevel;
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
fieldFlag
|
||||||
|
, optionList
|
||||||
|
, cellSelector
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentResponsesFieldsValueMeasured() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessmentResponses + ' td.' + flagValueMeasured + ' .' + flagValueMeasured);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentResponsesFieldsNotes() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableAssessmentResponses + ' td.' + flagNotes + ' .' + flagNotes);
|
||||||
|
}
|
||||||
|
hookupTableAssessmentResponsesFieldsActive() {
|
||||||
|
this.hookupFieldsActive(flagAssessmentResponse, (event, element) => { this.handleClickAddRowTableAssessmentResponses(event, element); });
|
||||||
|
}
|
||||||
|
handleClickAddRowTableAssessmentResponses(event, button) {
|
||||||
|
event.stopPropagation();
|
||||||
|
let tableResponses = DOM.getClosestParent(button, "table");
|
||||||
|
let tbody = tableResponses.querySelector(":scope > tbody");
|
||||||
|
let row = PageDogAssessment.createNewRowTableAssessmentResponses(null);
|
||||||
|
if (tbody.classList.contains(flagIsCollapsed)) return;
|
||||||
|
row.classList.remove(flagInitialised);
|
||||||
|
row.querySelectorAll('.' + flagInitialised).forEach(function(element) {
|
||||||
|
element.classList.remove(flagInitialised);
|
||||||
|
});
|
||||||
|
let countRows = document.querySelectorAll(attrIdAssessmentResponse + ' > tbody > tr').length;
|
||||||
|
row.setAttribute(attrIdAssessmentResponse, -1 - countRows);
|
||||||
|
tbody.prepend(row);
|
||||||
|
tbody.scrollTop = 0;
|
||||||
|
this.hookupTablesAssessmentResponses();
|
||||||
|
this.postInitialiseAssessmentResponseRowNewCallback(tbody);
|
||||||
|
}
|
||||||
|
postInitialiseAssessmentResponseRowNewCallback(tbody) {
|
||||||
|
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
||||||
|
let newestRow = newRows[0];
|
||||||
|
let clickableElementsSelector = [
|
||||||
|
'td.' + flagResponseQualityMetric + ' div.' + flagResponseQualityMetric
|
||||||
|
, ',td.' + flagObedienceLevel + ' div.' + flagObedienceLevel
|
||||||
|
, ',td.' + flagValueMeasured + ' div.' + flagValueMeasured
|
||||||
|
, ',td.' + flagNotes + ' div.' + flagNotes
|
||||||
|
].join('');
|
||||||
|
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
|
||||||
|
clickableElement.click();
|
||||||
|
});
|
||||||
|
let countActiveRows = tbody.querySelectorAll('td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive + '.' + flagDelete).length;
|
||||||
|
/*
|
||||||
|
newRows.filter(row => {
|
||||||
|
let activeButton = row.querySelector('td.' + flagActive + ' .' + flagButton + '.' + flagIcon + '.' + flagActive);
|
||||||
|
return activeButton.classList.contains(flagDelete);
|
||||||
|
}).length;
|
||||||
|
*/
|
||||||
|
let rowAssessmentCommandModalityLink = DOM.getRowFromElement(tbody);
|
||||||
|
let divTrialCount = rowAssessmentCommandModalityLink.querySelector('td.' + flagTrialCount + ' div.' + flagTrialCount);
|
||||||
|
divTrialCount.innerText = countActiveRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
hookupTableAssessmentCommandModalityLinksFieldsActive() {
|
||||||
|
this.hookupFieldsActive(flagAssessmentCommandModalityLink, (event, element) => { this.handleClickAddRowTableAssessmentCommandModalityLinks(event, element); });
|
||||||
|
}
|
||||||
|
handleClickAddRowTableAssessmentCommandModalityLinks(event, button) {
|
||||||
|
event.stopPropagation();
|
||||||
|
_rowBlankAssessmentCommandModalityLink.setAttribute(attrIdAssessmentCommandModalityLink, -1 - _rowBlankAssessmentCommandModalityLink.getAttribute(attrIdAssessmentCommandModalityLink));
|
||||||
|
let tbody = document.querySelector(idTableAssessmentCommandModalityLinks + ' tbody');
|
||||||
|
if (tbody.classList.contains(flagIsCollapsed)) return;
|
||||||
|
let row = _rowBlankAssessmentCommandModalityLink.cloneNode(true);
|
||||||
|
row.classList.remove(flagInitialised);
|
||||||
|
row.querySelectorAll('.' + flagInitialised).forEach(function(element) {
|
||||||
|
element.classList.remove(flagInitialised);
|
||||||
|
});
|
||||||
|
let countRows = document.querySelectorAll(idTableAssessmentCommandModalityLinks + ' > tbody > tr').length;
|
||||||
|
row.setAttribute(attrIdAssessmentCommandModalityLink, -1 - countRows);
|
||||||
|
tbody.prepend(row);
|
||||||
|
tbody.scrollTop = 0;
|
||||||
|
this.hookupTableAssessmentCommandModalityLinks();
|
||||||
|
this.postInitialiseAssessmentCommandModalityLinkRowNewCallback(tbody);
|
||||||
|
}
|
||||||
|
postInitialiseAssessmentCommandModalityLinkRowNewCallback(tbody) {
|
||||||
|
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
||||||
|
let newestRow = newRows[0];
|
||||||
|
let clickableElementsSelector = [
|
||||||
|
'td.' + flagCommandCategory + ' div.' + flagCommandCategory
|
||||||
|
, ',td.' + flagCommand + ' div.' + flagCommand
|
||||||
|
, ',td.' + flagCommandModality + ' div.' + flagCommandModality
|
||||||
|
, ',td.' + flagBribe + ' div.' + flagBribe
|
||||||
|
].join('');
|
||||||
|
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
|
||||||
|
clickableElement.click();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
leave() {
|
||||||
|
super.leave();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
169
static/js/pages/dog/assessments.js
Normal file
169
static/js/pages/dog/assessments.js
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
|
||||||
|
import API from "../../api.js";
|
||||||
|
import BusinessObjects from "../../lib/business_objects/business_objects.js";
|
||||||
|
import DOM from "../../dom.js";
|
||||||
|
import Events from "../../lib/events.js";
|
||||||
|
import TableBasePage from "../base_table.js";
|
||||||
|
import Utils from "../../lib/utils.js";
|
||||||
|
import Validation from "../../lib/validation.js";
|
||||||
|
import DogTableMixinPage from "./mixin_table.js";
|
||||||
|
|
||||||
|
export default class PageDogAssessments extends TableBasePage {
|
||||||
|
static hash = hashPageDogAssessments;
|
||||||
|
static attrIdRowObject = attrIdAssessment;
|
||||||
|
callSaveTableContent = API.saveAssessments;
|
||||||
|
|
||||||
|
constructor(router) {
|
||||||
|
super(router);
|
||||||
|
this.dogMixin = new DogTableMixinPage(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
initialize() {
|
||||||
|
this.sharedInitialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
hookupFilters() {
|
||||||
|
this.sharedHookupFilters();
|
||||||
|
this.hookupFilterWeather();
|
||||||
|
this.hookupFilterLightingLevel();
|
||||||
|
this.hookupFilterLocation();
|
||||||
|
this.hookupFilterHandler();
|
||||||
|
this.hookupFilterActive();
|
||||||
|
}
|
||||||
|
hookupFilterWeather() {
|
||||||
|
this.hookupFilter(attrIdWeather);
|
||||||
|
}
|
||||||
|
hookupFilterLightingLevel() {
|
||||||
|
this.hookupFilter(attrIdLightingLevel);
|
||||||
|
}
|
||||||
|
hookupFilterHandler() {
|
||||||
|
this.hookupFilter(flagUserHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
loadRowTable(rowJson) {
|
||||||
|
if (rowJson == null) return;
|
||||||
|
if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); }
|
||||||
|
}
|
||||||
|
getJsonRow(row) {
|
||||||
|
if (row == null) return;
|
||||||
|
let inputTemperatureCelcius = row.querySelector('td.' + flagTemperatureCelcius + ' input');
|
||||||
|
let inputNotes = row.querySelector('td.' + flagNotes + ' textarea');
|
||||||
|
let buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive);
|
||||||
|
|
||||||
|
let jsonRow = {};
|
||||||
|
jsonRow[attrIdAssessment] = row.getAttribute(attrIdAssessment);
|
||||||
|
jsonRow[attrIdWeather] = this.getIdWeatherRow(row);
|
||||||
|
jsonRow[attrIdLightingLevel] = this.getIdLightingLevelRow(row);
|
||||||
|
jsonRow[flagTemperatureCelcius] = DOM.getElementAttributeValueCurrent(inputTemperatureCelcius);
|
||||||
|
jsonRow[attrIdLocation] = this.getIdLocationRow(row);
|
||||||
|
jsonRow[flagUserHandler] = this.getIdUserHandlerRow(row);
|
||||||
|
jsonRow[flagNotes] = DOM.getElementAttributeValueCurrent(inputNotes);
|
||||||
|
jsonRow[flagActive] = buttonActive.classList.contains(flagDelete);
|
||||||
|
return jsonRow;
|
||||||
|
}
|
||||||
|
getIdWeatherRow(tr) {
|
||||||
|
let elementWeather = tr.querySelector('td.' + flagWeather + ' .' + flagWeather);
|
||||||
|
return DOM.getElementAttributeValueCurrent(elementWeather);
|
||||||
|
}
|
||||||
|
getIdLightingLevelRow(tr) {
|
||||||
|
let elementLightingLevel = tr.querySelector('td.' + flagLightingLevel + ' .' + flagLightingLevel);
|
||||||
|
return DOM.getElementAttributeValueCurrent(elementLightingLevel);
|
||||||
|
}
|
||||||
|
getIdLocationRow(tr) {
|
||||||
|
let elementLocation = tr.querySelector('td.' + flagLocation + ' .' + flagLocation);
|
||||||
|
return DOM.getElementAttributeValueCurrent(elementLocation);
|
||||||
|
}
|
||||||
|
getIdUserHandlerRow(tr) {
|
||||||
|
let elementUserHandler = tr.querySelector('td.' + flagUserHandler + ' .' + flagUserHandler);
|
||||||
|
return DOM.getElementAttributeValueCurrent(elementUserHandler);
|
||||||
|
}
|
||||||
|
initialiseRowNew(tbody, row) {
|
||||||
|
|
||||||
|
}
|
||||||
|
postInitialiseRowNewCallback(tbody) {
|
||||||
|
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
||||||
|
let newestRow = newRows[0];
|
||||||
|
let clickableElementsSelector = [
|
||||||
|
'td.' + flagWeather + ' div.' + flagWeather
|
||||||
|
, ',td.' + flagLightingLevel + ' div.' + flagLightingLevel
|
||||||
|
, ',td.' + flagLocation + ' div.' + flagLocation
|
||||||
|
, ',td.' + flagUserHandler + ' div.' + flagUserHandler
|
||||||
|
].join('');
|
||||||
|
newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
|
||||||
|
clickableElement.click();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
hookupTableMain() {
|
||||||
|
super.hookupTableMain();
|
||||||
|
this.hookupFieldsDetail();
|
||||||
|
this.hookupFieldsWeather();
|
||||||
|
this.hookupFieldsLightingLevel();
|
||||||
|
this.hookupFieldsTemperature();
|
||||||
|
this.dogMixin.hookupFieldsLocation();
|
||||||
|
this.hookupFieldsHandler();
|
||||||
|
this.hookupFieldsNotesTable();
|
||||||
|
this.hookupFieldsActive();
|
||||||
|
}
|
||||||
|
hookupFieldsDetail() {
|
||||||
|
Events.hookupEventHandler(
|
||||||
|
"click" // eventType
|
||||||
|
, idTableMain + ' td.' + flagDetail + ' button.' + flagDetail // selector
|
||||||
|
, (event, element) => {
|
||||||
|
let parentTr = DOM.getRowFromElement(element);
|
||||||
|
let idAssessment = parentTr.getAttribute(attrIdAssessment);
|
||||||
|
/*
|
||||||
|
console.log("click detail");
|
||||||
|
console.log({ element, parentTr, idAssessment });
|
||||||
|
const data = {};
|
||||||
|
const params = {
|
||||||
|
[attrIdAssessment]: idAssessment
|
||||||
|
};
|
||||||
|
API.request(
|
||||||
|
hashPageDogAssessment // hashEndpoint
|
||||||
|
, 'GET' // method
|
||||||
|
, data
|
||||||
|
, params
|
||||||
|
);
|
||||||
|
*/
|
||||||
|
|
||||||
|
let formFilters = TableBasePage.getFormFilters();
|
||||||
|
let filtersJson = DOM.convertForm2JSON(formFilters);
|
||||||
|
filtersJson[attrIdAssessment] = idAssessment;
|
||||||
|
Utils.consoleLogIfNotProductionEnvironment("hookupFieldsDetail");
|
||||||
|
Utils.consoleLogIfNotProductionEnvironment("formFilters");
|
||||||
|
Utils.consoleLogIfNotProductionEnvironment(formFilters);
|
||||||
|
Utils.consoleLogIfNotProductionEnvironment("filtersJson");
|
||||||
|
Utils.consoleLogIfNotProductionEnvironment(filtersJson);
|
||||||
|
this.leave();
|
||||||
|
API.goToHash(hashPageDogAssessment, filtersJson);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupFieldsWeather() {
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
flagWeather
|
||||||
|
, Utils.getListFromDict(filterWeathers) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupFieldsLightingLevel() {
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
flagLightingLevel
|
||||||
|
, Utils.getListFromDict(filterLightingLevels) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
hookupFieldsTemperature() {
|
||||||
|
this.hookupChangeHandlerTableCells(idTableMain + ' td.' + flagTemperatureCelcius + ' input.' + flagTemperatureCelcius);
|
||||||
|
}
|
||||||
|
hookupFieldsHandler() {
|
||||||
|
this.hookupTableCellDdlPreviews(
|
||||||
|
flagUserHandler
|
||||||
|
, Utils.getListFromDict(filterUserHandlers) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
leave() {
|
||||||
|
super.leave();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -41,9 +41,6 @@ export default class PageDogCommandButtonLinks extends TableBasePage {
|
|||||||
hookupFilterButtonIcon() {
|
hookupFilterButtonIcon() {
|
||||||
this.hookupFilter(attrIdButtonIcon);
|
this.hookupFilter(attrIdButtonIcon);
|
||||||
}
|
}
|
||||||
hookupFilterLocation() {
|
|
||||||
this.hookupFilter(attrIdLocation);
|
|
||||||
}
|
|
||||||
|
|
||||||
loadRowTable(rowJson) {
|
loadRowTable(rowJson) {
|
||||||
if (rowJson == null) return;
|
if (rowJson == null) return;
|
||||||
@@ -69,7 +66,7 @@ export default class PageDogCommandButtonLinks extends TableBasePage {
|
|||||||
}
|
}
|
||||||
postInitialiseRowNewCallback(tbody) {
|
postInitialiseRowNewCallback(tbody) {
|
||||||
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
||||||
let newestRow = newRows[newRows.length - 1];
|
let newestRow = newRows[0];
|
||||||
let clickableElementsSelector = [
|
let clickableElementsSelector = [
|
||||||
'td.' + flagDog + ' div.' + flagDog
|
'td.' + flagDog + ' div.' + flagDog
|
||||||
, ',td.' + flagCommandCategory + ' div.' + flagCommandCategory
|
, ',td.' + flagCommandCategory + ' div.' + flagCommandCategory
|
||||||
@@ -87,7 +84,7 @@ export default class PageDogCommandButtonLinks extends TableBasePage {
|
|||||||
this.hookupFieldsButtonShape();
|
this.hookupFieldsButtonShape();
|
||||||
this.hookupFieldsColour();
|
this.hookupFieldsColour();
|
||||||
this.hookupFieldsButtonIcon();
|
this.hookupFieldsButtonIcon();
|
||||||
this.hookupFieldsLocation();
|
this.dogMixin.hookupFieldsLocation();
|
||||||
this.hookupFieldsActive();
|
this.hookupFieldsActive();
|
||||||
}
|
}
|
||||||
hookupFieldsButtonShape() {
|
hookupFieldsButtonShape() {
|
||||||
@@ -108,12 +105,6 @@ export default class PageDogCommandButtonLinks extends TableBasePage {
|
|||||||
, Utils.getListFromDict(filterButtonIcons) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
, Utils.getListFromDict(filterButtonIcons) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
hookupFieldsLocation() {
|
|
||||||
this.hookupTableCellDdlPreviews(
|
|
||||||
flagLocation
|
|
||||||
, Utils.getListFromDict(filterLocations) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
leave() {
|
leave() {
|
||||||
super.leave();
|
super.leave();
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ export default class PageDogDogCommandLinks extends TableBasePage {
|
|||||||
}
|
}
|
||||||
postInitialiseRowNewCallback(tbody) {
|
postInitialiseRowNewCallback(tbody) {
|
||||||
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
|
||||||
let newestRow = newRows[newRows.length - 1];
|
let newestRow = newRows[0];
|
||||||
let clickableElementsSelector = [
|
let clickableElementsSelector = [
|
||||||
'td.' + flagDog + ' div.' + flagDog
|
'td.' + flagDog + ' div.' + flagDog
|
||||||
, ',td.' + flagCommandCategory + ' div.' + flagCommandCategory
|
, ',td.' + flagCommandCategory + ' div.' + flagCommandCategory
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ export default class PageDogLocations extends TableBasePage {
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
let cellSelector = idTableMain + ' > tbody > tr > td.' + flagLocationParent;
|
let cellSelector = idTableMain + ' > tbody > tr > td.' + flagLocationParent;
|
||||||
this.hookupEventHandler("click", cellSelector + ' div.' + flagLocationParent, (event, div) => {
|
Events.hookupEventHandler("click", cellSelector + ' div.' + flagLocationParent, (event, div) => {
|
||||||
let row = DOM.getRowFromElement(div);
|
let row = DOM.getRowFromElement(div);
|
||||||
let idLocationRow = Number(row.getAttribute(attrIdLocation));
|
let idLocationRow = Number(row.getAttribute(attrIdLocation));
|
||||||
Utils.consoleLogIfNotProductionEnvironment({ idLocationRow });
|
Utils.consoleLogIfNotProductionEnvironment({ idLocationRow });
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import Validation from "../../lib/validation.js";
|
|||||||
import DOM from "../../dom.js";
|
import DOM from "../../dom.js";
|
||||||
import { isEmpty } from "../../lib/utils.js";
|
import { isEmpty } from "../../lib/utils.js";
|
||||||
import DogMixinPage from "./mixin.js";
|
import DogMixinPage from "./mixin.js";
|
||||||
|
import Utils from "../../lib/utils.js";
|
||||||
|
|
||||||
export default class DogTableMixinPage extends DogMixinPage {
|
export default class DogTableMixinPage extends DogMixinPage {
|
||||||
constructor(pageCurrent) {
|
constructor(pageCurrent) {
|
||||||
@@ -22,4 +23,10 @@ export default class DogTableMixinPage extends DogMixinPage {
|
|||||||
hookupTable() {
|
hookupTable() {
|
||||||
// Implement table-specific functionality here
|
// Implement table-specific functionality here
|
||||||
}
|
}
|
||||||
|
hookupFieldsLocation() {
|
||||||
|
this.page.hookupTableCellDdlPreviews(
|
||||||
|
flagLocation
|
||||||
|
, Utils.getListFromDict(filterLocations) // .sort((a, b) => a[flagName].localeCompare(b[flagName]))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -11,6 +11,8 @@ import PageDogDogCommandLinks from './pages/dog/dog_command_links.js';
|
|||||||
import PageDogLocations from './pages/dog/locations.js';
|
import PageDogLocations from './pages/dog/locations.js';
|
||||||
import PageDogButtonIcons from './pages/dog/button_icons.js';
|
import PageDogButtonIcons from './pages/dog/button_icons.js';
|
||||||
import PageDogCommandButtonLinks from './pages/dog/command_button_links.js';
|
import PageDogCommandButtonLinks from './pages/dog/command_button_links.js';
|
||||||
|
import PageDogAssessment from './pages/dog/assessment.js';
|
||||||
|
import PageDogAssessments from './pages/dog/assessments.js';
|
||||||
// Legal
|
// Legal
|
||||||
import PageAccessibilityReport from './pages/legal/accessibility_report.js';
|
import PageAccessibilityReport from './pages/legal/accessibility_report.js';
|
||||||
import PageAccessibilityStatement from './pages/legal/accessibility_statement.js';
|
import PageAccessibilityStatement from './pages/legal/accessibility_statement.js';
|
||||||
@@ -42,6 +44,8 @@ export default class Router {
|
|||||||
this.pages[hashPageDogLocations] = { name: 'PageDogLocations', module: PageDogLocations };
|
this.pages[hashPageDogLocations] = { name: 'PageDogLocations', module: PageDogLocations };
|
||||||
this.pages[hashPageDogButtonIcons] = { name: 'PageDogButtonIcons', module: PageDogButtonIcons };
|
this.pages[hashPageDogButtonIcons] = { name: 'PageDogButtonIcons', module: PageDogButtonIcons };
|
||||||
this.pages[hashPageDogCommandButtonLinks] = { name: 'PageDogCommandButtonLinks', module: PageDogCommandButtonLinks };
|
this.pages[hashPageDogCommandButtonLinks] = { name: 'PageDogCommandButtonLinks', module: PageDogCommandButtonLinks };
|
||||||
|
this.pages[hashPageDogAssessment] = { name: 'PageDogAssessment', module: PageDogAssessment };
|
||||||
|
this.pages[hashPageDogAssessments] = { name: 'PageDogAssessments', module: PageDogAssessments };
|
||||||
// Legal
|
// Legal
|
||||||
this.pages[hashPageAccessibilityStatement] = { name: 'PageAccessibilityStatement', module: PageAccessibilityStatement };
|
this.pages[hashPageAccessibilityStatement] = { name: 'PageAccessibilityStatement', module: PageAccessibilityStatement };
|
||||||
this.pages[hashPageDataRetentionSchedule] = { name: 'PageDataRetentionSchedule', module: PageRetentionSchedule };
|
this.pages[hashPageDataRetentionSchedule] = { name: 'PageDataRetentionSchedule', module: PageRetentionSchedule };
|
||||||
@@ -64,6 +68,8 @@ export default class Router {
|
|||||||
this.routes[hashPageDogLocations] = (isPopState = false) => this.navigateToHash(hashPageDogLocations, isPopState);
|
this.routes[hashPageDogLocations] = (isPopState = false) => this.navigateToHash(hashPageDogLocations, isPopState);
|
||||||
this.routes[hashPageDogButtonIcons] = (isPopState = false) => this.navigateToHash(hashPageDogButtonIcons, isPopState);
|
this.routes[hashPageDogButtonIcons] = (isPopState = false) => this.navigateToHash(hashPageDogButtonIcons, isPopState);
|
||||||
this.routes[hashPageDogCommandButtonLinks] = (isPopState = false) => this.navigateToHash(hashPageDogCommandButtonLinks, isPopState);
|
this.routes[hashPageDogCommandButtonLinks] = (isPopState = false) => this.navigateToHash(hashPageDogCommandButtonLinks, isPopState);
|
||||||
|
this.routes[hashPageDogAssessment] = (isPopState = false) => this.navigateToHash(hashPageDogAssessment, isPopState);
|
||||||
|
this.routes[hashPageDogAssessments] = (isPopState = false) => this.navigateToHash(hashPageDogAssessments, isPopState);
|
||||||
// Legal
|
// Legal
|
||||||
this.routes[hashPageAccessibilityStatement] = (isPopState = false) => this.navigateToHash(hashPageAccessibilityStatement, isPopState);
|
this.routes[hashPageAccessibilityStatement] = (isPopState = false) => this.navigateToHash(hashPageAccessibilityStatement, isPopState);
|
||||||
this.routes[hashPageDataRetentionSchedule] = (isPopState = false) => this.navigateToHash(hashPageDataRetentionSchedule, isPopState);
|
this.routes[hashPageDataRetentionSchedule] = (isPopState = false) => this.navigateToHash(hashPageDataRetentionSchedule, isPopState);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user