diff --git a/business_objects/dog/assessment_response.py b/business_objects/dog/assessment_response.py
index 0807cb9..446e08d 100644
--- a/business_objects/dog/assessment_response.py
+++ b/business_objects/dog/assessment_response.py
@@ -61,10 +61,10 @@ class Assessment_Response(SQLAlchemy_ABC, Base):
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[4]
- assessment_response.value_measured = query_row[6]
- assessment_response.notes = query_row[7]
- assessment_response.active = av.input_bool(query_row[8], 'active', _m)
+ assessment_response.id_obedience_level = query_row[5]
+ assessment_response.value_measured = query_row[7]
+ assessment_response.notes = query_row[8]
+ assessment_response.active = av.input_bool(query_row[9], '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)
diff --git a/business_objects/dog/obedience_level.py b/business_objects/dog/obedience_level.py
index ce06da5..7bf216f 100644
--- a/business_objects/dog/obedience_level.py
+++ b/business_objects/dog/obedience_level.py
@@ -51,8 +51,8 @@ class Obedience_Level(SQLAlchemy_ABC, Base):
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.id_obedience_level = query_row[5]
+ level.name = query_row[6]
level.active = True
return level
diff --git a/business_objects/dog/unit_measurement.py b/business_objects/dog/unit_measurement.py
index 6665e98..095e504 100644
--- a/business_objects/dog/unit_measurement.py
+++ b/business_objects/dog/unit_measurement.py
@@ -85,7 +85,7 @@ class Unit_Measurement(SQLAlchemy_ABC, Base):
unit.id_unit_measurement = None
unit.name_singular = ''
unit.name_plural = ''
- unit.symbol = ''
+ unit.symbol = '%' if query_row[4] == '/' else query_row[4]
return unit
@classmethod
diff --git a/controllers/core/home.py b/controllers/core/home.py
index f299424..b2b9556 100644
--- a/controllers/core/home.py
+++ b/controllers/core/home.py
@@ -14,7 +14,7 @@ Home Page Controller.
from business_objects.api import API
from models.model_view_home import Model_View_Home
# external
-from flask import render_template, jsonify, Blueprint
+from flask import render_template, jsonify, Blueprint, send_from_directory
routes_core_home = Blueprint('routes_core_home', __name__)
@@ -28,4 +28,4 @@ def home():
except Exception as e:
return jsonify(error=str(e)), 403
return html_body
-
\ No newline at end of file
+
diff --git a/controllers/legal/legal.py b/controllers/legal/legal.py
index 6acd459..f5f14ce 100644
--- a/controllers/legal/legal.py
+++ b/controllers/legal/legal.py
@@ -70,3 +70,9 @@ def privacy_policy():
@routes_legal.route('/robots.txt', methods=['GET'])
def robots_txt():
return send_from_directory('static', 'docs/robots.txt')
+@routes_legal.route('/favicon.ico', methods=['GET'])
+def favicon_ico():
+ return send_from_directory('static', 'images/fetch-metrics-logo.ico', mimetype='image/vnd.microsoft.icon') # -and-company-name-curved-0.5
+@routes_legal.route('/sitemap.xml', methods=['GET'])
+def sitemap_xml():
+ return send_from_directory('static', 'docs/sitemap.xml')
diff --git a/static/MySQL/00000_combined.sql b/static/MySQL/00000_combined.sql
index 3bedc38..44ad02f 100644
--- a/static/MySQL/00000_combined.sql
+++ b/static/MySQL/00000_combined.sql
@@ -1,23 +1,98 @@
-
+
USE demo;
-DROP PROCEDURE IF EXISTS demo.p_dog_save_assessment_distraction_and_response;
+DROP PROCEDURE IF EXISTS demo.p_dog_get_many_assessment_response;
DELIMITER //
-CREATE PROCEDURE demo.p_dog_save_assessment_distraction_and_response (
- IN a_comment VARCHAR(500),
- IN a_guid BINARY(36),
- IN a_id_user INT,
- IN a_debug BIT
+CREATE PROCEDURE demo.p_dog_get_many_assessment_response (
+ IN a_id_user INT
+ , IN a_get_all_assessment_response BIT
+ , IN a_get_inactive_assessment_response BIT
+ , IN a_ids_assessment_response 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_metres_ACM_link FLOAT
+ , IN a_max_distance_from_handler_metres_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_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_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_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
@@ -30,16 +105,16 @@ BEGIN
ROLLBACK;
- CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Combined (
+ CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
- , code VARCHAR(250)
+ , code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
- INSERT INTO tmp_Msg_Error_Combined (
+ INSERT INTO tmp_Msg_Error (
id_type
- , code
+ , code
, msg
)
SELECT
@@ -49,7 +124,7 @@ BEGIN
FROM demo.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
-
+
SELECT
t_ERROR.id_error
, t_ERROR.id_type
@@ -60,182 +135,165 @@ BEGIN
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
- FROM tmp_Msg_Error_Combined t_ERROR
+ 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_Combined;
+
+ DROP TABLE IF EXISTS tmp_Msg_Error;
END;
-
- SET SESSION group_concat_max_len=15000;
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_permission_dog_new := (SELECT PERMISSION.id_permission FROM demo.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
- SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM demo.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' 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);
- CALL demo.p_core_validate_guid ( a_guid );
+ SET a_id_user := IFNULL(a_id_user, 0);
+ /*
+ Filters handled by Calc
+ */
+ SET a_debug := IFNULL(a_debug, 0);
- DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ADR;
- DROP TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Save_ADR;
- DROP TABLE IF EXISTS tmp_Distraction_Save_ADR;
- DROP TABLE IF EXISTS tmp_Assessment_Save_ADR;
-
- CREATE TEMPORARY TABLE tmp_Assessment_Save_ADR (
- id_temp INT
- , id_assessment INT
- , id_assessment_old INT
- , active BIT
- , is_new BIT
- );
-
- CREATE TEMPORARY TABLE tmp_Distraction_Save_ADR (
- id_temp INT
- , id_distraction INT
- , id_distraction_old INT
- , id_assessment INT
- , active BIT
- , is_new BIT
- );
-
- CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Save_ADR (
- id_temp INT
- , id_link INT
- , id_link_old INT
- , id_assessment INT
- , active BIT
- , is_new BIT
- );
-
- CREATE TEMPORARY TABLE tmp_Assessment_Response_Save_ADR (
- id_temp INT
- , id_response INT
- , id_response_old INT
- , id_assessment_command_modality_link INT
- , active BIT
- , is_new BIT
- );
-
- CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Combined (
- id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
- , id_type INT
- , code VARCHAR(250)
- , msg TEXT NOT NULL
- );
-
-
- -- Get data from Temp table
- INSERT INTO tmp_Assessment_Save_ADR (
- id_temp
- , id_assessment
- , id_assessment_old
- , active
- , is_new
- )
- SELECT
- ASSESSMENT_T.id_temp
- , ASSESSMENT_T.id_assessment
- , ASSESSMENT_T.id_assessment
- , COALESCE(
- ASSESSMENT_T.active
- , ASSESSMENT.active
- , 1
- ) AS active
- , CASE WHEN COALESCE(ASSESSMENT_T.id_assessment, 0) < 1 THEN 1 ELSE 0 END AS is_new
- FROM demo.DOG_Assessment_Temp ASSESSMENT_T
- LEFT JOIN demo.DOG_Assessment ASSESSMENT ON ASSESSMENT_T.id_assessment = ASSESSMENT.id_assessment
- WHERE ASSESSMENT_T.guid = a_guid
- ;
-
- INSERT INTO tmp_Distraction_Save_ADR (
- id_temp
- , id_distraction
- , id_distraction_old
- , id_assessment
- , active
- , is_new
- )
- SELECT
- DISTRACTION_T.id_temp
- , DISTRACTION_T.id_distraction
- , DISTRACTION_T.id_distraction
- , DISTRACTION_T.id_assessment
- , COALESCE(
- DISTRACTION_T.active
- , DISTRACTION.active
- , 1
- ) AS active
- , CASE WHEN COALESCE(DISTRACTION_T.id_distraction, 0) < 1 THEN 1 ELSE 0 END AS is_new
- FROM demo.DOG_Distraction_Temp DISTRACTION_T
- LEFT JOIN demo.DOG_Distraction DISTRACTION ON DISTRACTION_T.id_distraction = DISTRACTION.id_distraction
- WHERE DISTRACTION_T.guid = a_guid
- ;
-
- INSERT INTO tmp_Assessment_Command_Modality_Link_Save_ADR (
- id_temp
- , id_link
- , id_link_old
- , id_assessment
- , active
- , is_new
- )
- SELECT
- ASSESSMENT_COMMAND_MODALITY_LINK_T.id_temp
- , ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
- , ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
- , ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment
- , COALESCE(
- ASSESSMENT_COMMAND_MODALITY_LINK_T.active
- , ASSESSMENT_COMMAND_MODALITY_LINK.active
- , 1
- ) AS active
- , CASE WHEN COALESCE(ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link, 0) < 1 THEN 1 ELSE 0 END AS is_new
- FROM demo.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
- LEFT JOIN demo.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
- WHERE ASSESSMENT_COMMAND_MODALITY_LINK_T.guid = a_guid
- ;
-
- INSERT INTO tmp_Assessment_Response_Save_ADR (
- id_temp
- , id_response
- , id_response_old
- , id_assessment_command_modality_link
- , active
- , is_new
- )
- SELECT
- ASSESSMENT_RESPONSE_T.id_temp
- , ASSESSMENT_RESPONSE_T.id_response
- , ASSESSMENT_RESPONSE_T.id_response
- , ASSESSMENT_RESPONSE_T.id_assessment_command_modality_link
- , COALESCE(
- ASSESSMENT_RESPONSE_T.active
- , ASSESSMENT_RESPONSE.active
- , 1
- ) AS active
- , CASE WHEN COALESCE(ASSESSMENT_RESPONSE_T.id_response, 0) < 1 THEN 1 ELSE 0 END AS is_new
- FROM demo.DOG_Assessment_Response_Temp ASSESSMENT_RESPONSE_T
- LEFT JOIN demo.DOG_Assessment_Response ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE_T.id_response = ASSESSMENT_RESPONSE.id_response
- WHERE ASSESSMENT_RESPONSE_T.guid = a_guid
- ;
-
IF a_debug = 1 THEN
- SELECT 'Temp records';
- SELECT * FROM tmp_Assessment_Save_ADR;
- SELECT COUNT(*) FROM tmp_Assessment_Save_ADR;
- SELECT * FROM tmp_Distraction_Save_ADR;
- SELECT COUNT(*) FROM tmp_Distraction_Save_ADR;
- SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
- SELECT COUNT(*) FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
- SELECT * FROM tmp_Assessment_Response_Save_ADR;
- SELECT COUNT(*) FROM tmp_Assessment_Response_Save_ADR;
+ SELECT
+ a_id_user
+
+ , a_get_all_assessment_response
+ , a_get_inactive_assessment_response
+ , 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_metres_ACM_link
+ , a_max_distance_from_handler_metres_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_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_Assessment_Response;
+
+ CREATE TEMPORARY TABLE tmp_Assessment_Response (
+ id_response INT NOT NULL
+ , id_assessment_command_modality_link INT
+ , id_response_quality_metric INT
+ , id_obedience_level INT
+ , value_measured DOUBLE
+ , notes TEXT
+ , active BIT
+
+ , does_meet_id_filters BIT
+ , does_meet_non_id_filters BIT
+ );
+
+ CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
+ id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
+ , id_type INT
+ , code VARCHAR(250) NOT NULL
+ , msg TEXT NOT NULL
+ );
-- Permissions
- -- Can Create
+ 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(
- a_guid
+ v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
@@ -246,264 +304,294 @@ BEGIN
, 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
+ , v_id_permission_dog_view -- ids_permission
+ , v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
- IFNULL(CU_T.has_access, 0)
+ IFNULL(CALC_USER_T.has_access, 0)
INTO
- v_can_create
- FROM demo.DOG_Calc_User_Temp CU_T
- WHERE CU_T.GUID = a_guid
+ v_can_view
+ FROM demo.DOG_Calc_User_Temp CALC_USER_T
+ WHERE CALC_USER_T.GUID = v_guid
LIMIT 1
;
-
- CALL demo.p_dog_clear_calc_user(
- a_guid
- , 0 -- a_debug
- );
- IF v_can_create = 0 THEN
+ 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_Combined t_ME
+ FROM tmp_Msg_Error t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
- INSERT INTO tmp_Msg_Error_Combined (
+ INSERT INTO tmp_Msg_Error (
id_type
- , code
- , msg
+ , code
+ , msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
- , 'You do not have permission to edit Assessment_Distraction_And_Responses.'
+ , 'You do not have permission to view Assessment_Responses.'
)
;
END IF;
+
+ CALL demo.p_dog_clear_calc_user(
+ v_guid
+ , 0 -- a_debug
+ );
- -- DELETE FROM tmp_Msg_Error_Combined_Save;
- -- Save Assessments
- -- CREATE TEMPORARY TABLE tmp_Assessment_Save_ADR_Save_Error AS
- -- INSERT INTO tmp_Msg_Error_Combined_Save
- CALL demo.p_dog_save_assessment (
- a_comment
- , a_guid
- , a_id_user
- , 0 -- debug
- );
-
- /*
- INSERT INTO tmp_Msg_Error_Combined (
- id_type
- , code
- , msg
- )
- SELECT
- t_ASSESSMENT_SAVE_ERROR.id_type
- , t_ASSESSMENT_SAVE_ERROR.code
- , t_ASSESSMENT_SAVE_ERROR.msg
- FROM tmp_Assessment_Save_ADR_Save_Error t_ASSESSMENT_SAVE_ERROR
- ;
- */
-
- -- Get New Assessment Ids
- IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Combined 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
-
- -- Update Temporary tables with new Ids
- UPDATE tmp_Assessment_Save_ADR t_ASSESSMENT
- INNER JOIN demo.DOG_Assessment ASSESSMENT ON t_ASSESSMENT.id_temp = ASSESSMENT.id_temp
- INNER JOIN tmp_Distraction_Save_ADR t_DISTRACTION ON t_ASSESSMENT.id_assessment_old = t_DISTRACTION.id_assessment
- INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT.id_assessment_old = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
- SET
- t_ASSESSMENT.id_assessment = ASSESSMENT.id_assessment
- , t_DISTRACTION.id_assessment = ASSESSMENT.id_assessment
- , t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = ASSESSMENT.id_assessment
- WHERE
- t_ASSESSMENT.active = 1
- AND t_ASSESSMENT.is_new = 1
- ;
-
- -- Update Staging tables with new Ids
- IF EXISTS (SELECT * FROM tmp_Assessment_Save_ADR t_ASSESSMENT WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old LIMIT 1) THEN
-
- START TRANSACTION;
+
+ -- Call Assessment_Response 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_assessment_response
+ , a_get_inactive_assessment_response
+ , a_ids_assessment_response
+ , a_notes_assessment_response
+ , a_min_value_measured_assessment_response
+ , a_max_value_measured_assessment_response
- UPDATE demo.DOG_Distraction_Temp DISTRACTION_T
- INNER JOIN tmp_Distraction_Save_ADR t_DISTRACTION ON DISTRACTION_T.id_temp = t_DISTRACTION.id_temp
- INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON t_DISTRACTION.id_assessment = t_ASSESSMENT.id_assessment
- SET DISTRACTION_T.id_assessment = t_DISTRACTION.id_assessment
- WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old
- ;
-
- UPDATE demo.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
- INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_temp = ASSESSMENT_COMMAND_MODALITY_LINK_T.id_temp
- INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON t_ASSESSMENT.id_assessment = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
- SET ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
- WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old
- ;
+ , a_get_all_ACM_link
+ , a_get_inactive_ACM_link
+ , a_ids_ACM_link
+ , a_min_distance_from_handler_metres_ACM_link
+ , a_max_distance_from_handler_metres_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
- COMMIT;
+ , 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
+ , 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;
- END IF;
+ CALL demo.p_dog_calc_assessment_response (
+ v_guid -- a_guid
+ , a_id_user -- a_id_user
+
+ , a_get_all_assessment_response
+ , a_get_inactive_assessment_response
+ , 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_metres_ACM_link
+ , a_max_distance_from_handler_metres_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
- IF a_debug = 1 THEN
- SELECT 'After align assessment Ids';
- SELECT * FROM tmp_Assessment_Save_ADR;
- SELECT * FROM tmp_Distraction_Save_ADR;
- SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
- SELECT * FROM tmp_Assessment_Response_Save_ADR;
- END IF;
+ , a_get_all_response_quality_metric
+ , a_get_inactive_response_quality_metric
+ , a_ids_response_quality_metric
+ , a_names_response_quality_metric
- -- DELETE FROM tmp_Msg_Error_Combined_Save;
- -- Save Distractions
- -- CREATE TEMPORARY TABLE tmp_Distraction_Save_ADR_Save_Error AS
- -- INSERT INTO tmp_Msg_Error_Combined_Save
- CALL demo.p_dog_save_distraction (
- a_comment
- , a_guid
- , a_id_user
- , 0 -- debug
- );
+ , a_get_all_obedience_level
+ , a_get_inactive_obedience_level
+ , a_ids_obedience_level
+ , a_names_obedience_level
- /*
- INSERT INTO tmp_Msg_Error_Combined (
- id_type
- , code
- , msg
- )
- SELECT
- t_DISTRACTION_SAVE_ERROR.id_type
- , t_DISTRACTION_SAVE_ERROR.code
- , t_DISTRACTION_SAVE_ERROR.msg
- FROM tmp_Distraction_Save_ADR_Save_Error t_DISTRACTION_SAVE_ERROR
- ;
- */
-
- -- DELETE FROM tmp_Msg_Error_Combined_Save;
- -- Save Assessment Command Modality Links
- -- CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Save_ADR_Save_Error AS
- -- INSERT INTO tmp_Msg_Error_Combined_Save
- CALL demo.p_dog_save_assessment_command_modality_link (
- a_comment
- , a_guid
- , a_id_user
- , 0 -- debug
- );
-
- /*
- INSERT INTO tmp_Msg_Error_Combined (
- id_type
- , code
- , msg
- )
- SELECT
- t_ACML_SAVE_ERROR.id_type
- , t_ACML_SAVE_ERROR.code
- , t_ACML_SAVE_ERROR.msg
- FROM tmp_Assessment_Command_Modality_Link_Save_ADR_Save_Error t_ACML_SAVE_ERROR
- ;
- */
-
- -- Get New Assessment Command Modality Link Ids
- IF EXISTS (SELECT * FROM tmp_Msg_Error_Combined 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
- START TRANSACTION;
+ , 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
+ );
- DELETE ASSESSMENT
- FROM demo.DOG_Assessment ASSESSMENT
- INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON ASSESSMENT.id_assessment = t_ASSESSMENT.id_assessment
- WHERE t_ASSESSMENT.is_new = 1
- ;
-
- COMMIT;
- ELSE
- -- Update Temporary tables with new Ids
- UPDATE tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK
- INNER JOIN demo.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_temp = ASSESSMENT_COMMAND_MODALITY_LINK.id_temp
- LEFT JOIN tmp_Assessment_Response_Save_ADR t_ASSESSMENT_RESPONSE ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link = t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
- SET
- t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
- , t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
- WHERE
- t_ASSESSMENT_COMMAND_MODALITY_LINK.active = 1
- AND t_ASSESSMENT_COMMAND_MODALITY_LINK.is_new = 1
- ;
-
- -- Update Staging tables with new Ids
- IF EXISTS (SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK WHERE t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link <> t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link_old LIMIT 1) THEN
-
- START TRANSACTION;
-
- UPDATE demo.DOG_Assessment_Response_Temp ASSESSMENT_RESPONSE_T
- INNER JOIN tmp_Assessment_Response_Save_ADR t_ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE_T.id_temp = t_ASSESSMENT_RESPONSE.id_temp
- INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link
- SET ASSESSMENT_RESPONSE_T.id_assessment_command_modality_link = t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
- WHERE t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link <> t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link_old
- ;
-
- COMMIT;
+ IF a_debug = 1 THEN
+ SELECT COUNT(*) FROM demo.DOG_Assessment_Response_Temp;
+ SELECT * FROM demo.DOG_Assessment_Response_Temp;
END IF;
- END IF;
+ INSERT INTO tmp_Assessment_Response (
+ id_response
+ , id_assessment_command_modality_link
+ , id_response_quality_metric
+ , id_obedience_level
+ , value_measured
+ , notes
+ , active
- IF a_debug = 1 THEN
- SELECT 'After align assessment Ids';
- SELECT * FROM tmp_Assessment_Save_ADR;
- SELECT * FROM tmp_Distraction_Save_ADR;
- SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
- SELECT * FROM tmp_Assessment_Response_Save_ADR;
- END IF;
+ , does_meet_id_filters
+ , does_meet_non_id_filters
+ )
+ SELECT
+ ASSESSMENT_RESPONSE_T.id_response
+ , ASSESSMENT_RESPONSE_T.id_assessment_command_modality_link
+ , ASSESSMENT_RESPONSE_T.id_response_quality_metric
+ , ASSESSMENT_RESPONSE_T.id_obedience_level
+ , ASSESSMENT_RESPONSE_T.value_measured
+ , ASSESSMENT_RESPONSE_T.notes
+ , ASSESSMENT_RESPONSE_T.active
- -- DELETE FROM tmp_Msg_Error_Combined_Save;
- -- Save Assessment Responses
- -- CREATE TEMPORARY TABLE tmp_Assessment_Response_Save_ADR_Save_Error AS
- -- INSERT INTO tmp_Msg_Error_Combined_Save
- CALL demo.p_dog_save_assessment_response (
- a_comment
- , a_guid
- , a_id_user
- , 0 -- debug
- );
-
- /*
- INSERT INTO tmp_Msg_Error_Combined (
- id_type
- , code
- , msg
- )
- SELECT
- t_ASSESSMENT_RESPONSE_SAVE_ERROR.id_type
- , t_ASSESSMENT_RESPONSE_SAVE_ERROR.code
- , t_ASSESSMENT_RESPONSE_SAVE_ERROR.msg
- FROM tmp_Assessment_Response_Save_ADR_Save_Error t_ASSESSMENT_RESPONSE_SAVE_ERROR
- ;
- */
-
- -- Get New Assessment Command Modality Link Ids
- IF EXISTS (SELECT * FROM tmp_Msg_Error_Combined 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
- START TRANSACTION;
+ , ASSESSMENT_RESPONSE_T.does_meet_id_filters
+ , ASSESSMENT_RESPONSE_T.does_meet_non_id_filters
+ FROM demo.DOG_Assessment_Response_Temp ASSESSMENT_RESPONSE_T
+ WHERE ASSESSMENT_RESPONSE_T.GUID = v_guid
+ ;
- DELETE ASSESSMENT_COMMAND_MODALITY_LINK
- FROM demo.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK
- INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK ON ASSESSMENT_COMMAND_MODALITY_LINK.id_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_modality_link
- INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = t_ASSESSMENT.id_assessment
- WHERE
- t_ASSESSMENT_COMMAND_MODALITY_LINK.is_new = 1
- OR t_ASSESSMENT.is_new = 1
- ;
-
- DELETE ASSESSMENT
- FROM demo.DOG_Assessment ASSESSMENT
- INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON ASSESSMENT.id_assessment = t_ASSESSMENT.id_assessment
- WHERE t_ASSESSMENT.is_new = 1
- ;
-
- COMMIT;
+ IF a_debug = 1 THEN
+ SELECT COUNT(*) FROM tmp_Assessment_Response;
+ SELECT * FROM tmp_Assessment_Response;
+ 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_Assessment_Response;
+ END IF;
+
+ DELETE FROM tmp_Assessment_Response;
+ END IF;
+
+
+ -- Outputs
+ -- Assessment_Responses
+ SELECT
+ t_ASSESSMENT_RESPONSE.id_response
+ , t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
+ , t_ASSESSMENT_RESPONSE.id_response_quality_metric
+ , RESPONSE_QUALITY_METRIC.name AS name_response_quality_metric
+ , UNIT_MEASUREMENT.symbol AS symbol_unit_measurement_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_ASSESSMENT_RESPONSE.does_meet_id_filters
+ , t_ASSESSMENT_RESPONSE.does_meet_non_id_filters
+ FROM tmp_Assessment_Response t_ASSESSMENT_RESPONSE
+ LEFT JOIN demo.DOG_Assessment_Response ASSESSMENT_RESPONSE ON t_ASSESSMENT_RESPONSE.id_response = ASSESSMENT_RESPONSE.id_response
+ LEFT JOIN demo.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_ASSESSMENT_RESPONSE.id_obedience_level = OBEDIENCE_LEVEL.id_obedience_level
+ LEFT JOIN demo.DOG_Response_Quality_Metric RESPONSE_QUALITY_METRIC ON t_ASSESSMENT_RESPONSE.id_response_quality_metric = RESPONSE_QUALITY_METRIC.id_metric
+ LEFT JOIN demo.DOG_Unit_Measurement UNIT_MEASUREMENT ON RESPONSE_QUALITY_METRIC.id_unit_measurement = UNIT_MEASUREMENT.id_unit_measurement
+ ORDER BY ASSESSMENT_RESPONSE.created_on DESC
+ LIMIT 1000
+ ;
+
-- Errors
SELECT
t_ERROR.id_error
@@ -515,48 +603,111 @@ BEGIN
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
- FROM tmp_Msg_Error_Combined t_ERROR
+ 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 THEN
- SELECT * FROM tmp_Assessment_Save_ADR;
- SELECT * FROM tmp_Distraction_Save_ADR;
- SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
- SELECT * FROM tmp_Assessment_Response_Save_ADR;
- END IF;
-
- CALL demo.p_dog_clear_msg_error (
- a_guid
- , 0 -- debug
- );
-
- DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ADR_Save_Error;
- DROP TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Save_ADR_Save_Error;
- DROP TABLE IF EXISTS tmp_Distraction_Save_ADR_Save_Error;
- DROP TABLE IF EXISTS tmp_Assessment_Save_ADR_Save_Error;
- DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ADR;
- DROP TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Save_ADR;
- DROP TABLE IF EXISTS tmp_Distraction_Save_ADR;
- DROP TABLE IF EXISTS tmp_Assessment_Save_ADR;
- DROP TEMPORARY TABLE tmp_Msg_Error_Combined;
+ IF a_debug = 1 AND v_can_view = 1 THEN
+ SELECT * FROM tmp_Assessment_Response;
+ END IF;
+
+ CALL demo.p_dog_clear_calc_assessment_response(
+ v_guid -- a_guid
+ , 0 -- a_debug
+ );
- IF a_debug = 1 THEN
+ DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
+ DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Response;
+
+ IF a_debug = 1 THEN
CALL demo.p_core_debug_timing_reporting ( v_time_start );
- END IF;
+ END IF;
END //
DELIMITER ;
-
/*
-CALL demo.p_dog_save_assessment_distraction_and_response (
- 'nipples'
- , 'ripplesipplenipplytippledipplykipple'
- , 1
- , 1
+CALL demo.p_dog_get_many_assessment_response (
+ 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
+
+ , 1 -- a_get_all_assessment_response
+ , 0 -- a_get_inactive_assessment_response
+ , '' -- a_ids_assessment_response
+ , '' -- a_notes_assessment_response
+ , NULL -- a_min_value_measured_assessment_response
+ , NULL -- a_max_value_measured_assessment_response
+
+ , 1 -- a_get_all_ACM_link
+ , 0 -- a_get_inactive_ACM_link
+ , '' -- a_ids_ACM_link
+ , NULL -- a_min_distance_from_handler_metres_ACM_link
+ , NULL -- a_max_distance_from_handler_metres_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
+
+
+ , 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
);
-
*/
\ No newline at end of file
diff --git a/static/MySQL/71308_p_dog_get_many_assessment.sql b/static/MySQL/71308_p_dog_get_many_assessment.sql
index 86d20d1..fb3c52b 100644
--- a/static/MySQL/71308_p_dog_get_many_assessment.sql
+++ b/static/MySQL/71308_p_dog_get_many_assessment.sql
@@ -420,6 +420,7 @@ BEGIN
LEFT JOIN parts.DOG_User USER ON t_ASSESSMENT.id_user_handler = USER.id_user
-- LEFT JOIN tmp_User t_USER_HANDLER ON t_ASSESSMENT.id_user_handler = t_USER_HANDLER.id_user
ORDER BY ASSESSMENT.created_on DESC
+ LIMIT 1000
;
-- Errors
diff --git a/static/MySQL/71320_p_dog_get_many_distraction.sql b/static/MySQL/71320_p_dog_get_many_distraction.sql
index 5e4061a..e8f3356 100644
--- a/static/MySQL/71320_p_dog_get_many_distraction.sql
+++ b/static/MySQL/71320_p_dog_get_many_distraction.sql
@@ -553,6 +553,7 @@ BEGIN
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
ORDER BY DISTRACTION_TYPE.name
+ LIMIT 1000
;
-- Errors
diff --git a/static/MySQL/71328_p_dog_get_many_assessment_command_modality_link.sql b/static/MySQL/71328_p_dog_get_many_assessment_command_modality_link.sql
index a19d9bb..d693827 100644
--- a/static/MySQL/71328_p_dog_get_many_assessment_command_modality_link.sql
+++ b/static/MySQL/71328_p_dog_get_many_assessment_command_modality_link.sql
@@ -555,6 +555,7 @@ BEGIN
LEFT JOIN parts.DOG_Command_Category COMMAND_CATEGORY ON COMMAND.id_command_category = COMMAND_CATEGORY.id_command_category
LEFT JOIN parts.DOG_Command_Modality COMMAND_MODALITY ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality = COMMAND_MODALITY.id_command_modality
LEFT JOIN parts.DOG_Bribe BRIBE ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe = BRIBE.id_bribe
+ LIMIT 1000
;
-- Errors
diff --git a/static/MySQL/71340_p_dog_get_many_assessment_response.sql b/static/MySQL/71340_p_dog_get_many_assessment_response.sql
index 6e1bc80..e12c1a1 100644
--- a/static/MySQL/71340_p_dog_get_many_assessment_response.sql
+++ b/static/MySQL/71340_p_dog_get_many_assessment_response.sql
@@ -574,6 +574,7 @@ BEGIN
, t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
, t_ASSESSMENT_RESPONSE.id_response_quality_metric
, RESPONSE_QUALITY_METRIC.name AS name_response_quality_metric
+ , UNIT_MEASUREMENT.symbol AS symbol_unit_measurement_response_quality_metric
, t_ASSESSMENT_RESPONSE.id_obedience_level
, OBEDIENCE_LEVEL.name AS name_obedience_level
, t_ASSESSMENT_RESPONSE.value_measured
@@ -586,7 +587,9 @@ BEGIN
LEFT JOIN parts.DOG_Assessment_Response ASSESSMENT_RESPONSE ON t_ASSESSMENT_RESPONSE.id_response = ASSESSMENT_RESPONSE.id_response
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
+ LEFT JOIN parts.DOG_Unit_Measurement UNIT_MEASUREMENT ON RESPONSE_QUALITY_METRIC.id_unit_measurement = UNIT_MEASUREMENT.id_unit_measurement
ORDER BY ASSESSMENT_RESPONSE.created_on DESC
+ LIMIT 1000
;
-- Errors
diff --git a/static/css/main.css b/static/css/main.css
index af580f1..b4b8984 100644
--- a/static/css/main.css
+++ b/static/css/main.css
@@ -88,6 +88,7 @@ script, link {
width: 100%;
align-self: center;
font-size: 1rem;
+ color: var(--colour-text);
}
#pageBody > * > * {
align-self: center;
diff --git a/static/css/pages/dog/assessment.css b/static/css/pages/dog/assessment.css
index a20da37..c1e7aab 100644
--- a/static/css/pages/dog/assessment.css
+++ b/static/css/pages/dog/assessment.css
@@ -1,8 +1,15 @@
+h2 {
+ color: var(--colour-primary);
+ width: 100%;
+}
#formFilters {
display: none;
}
+.company-name {
+ font-size: 2.5rem;
+}
.container.save.button-cancel {
position: fixed;
@@ -10,6 +17,12 @@
right: 10vh;
}
+table.table-main tbody {
+ max-height: 28vh;
+}
+table.table-main tbody tr td {
+ height: 4vh;
+}
table.table-main.assessment thead tr th.active,
table.table-main.assessment tbody tr td.active,
@@ -42,8 +55,12 @@ table.table-main.assessment_command_modality_link tbody tr td {
}
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;
+ padding: 0.5vh 0.5vw;
+}
+table.table-main.assessment_command_modality_link thead tr th.command-category,
+table.table-main.assessment_command_modality_link tbody tr td.command-category {
+ min-width: 12vh;
+ max-width: 12vh;
}
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,
@@ -67,8 +84,12 @@ table.table-main.assessment_command_modality_link thead tr th.assessment_respons
table.table-main.assessment_command_modality_link tbody tr td.assessment_response {
max-width: 60vh;
min-width: 60vh;
+ height: fit-content;
}
+table.table-main.assessment_command_modality_link tbody tr td.assessment_response div.ddl-preview div.row {
+ border: none;
+}
table.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.response-quality-metric,
table.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.response-quality-metric {
max-width: 15vh;
diff --git a/static/dist/css/dog_assessment.bundle.css b/static/dist/css/dog_assessment.bundle.css
index d1b9e5c..1771faf 100644
--- a/static/dist/css/dog_assessment.bundle.css
+++ b/static/dist/css/dog_assessment.bundle.css
@@ -65,10 +65,17 @@
margin: 0;
}
+h2 {
+ color: var(--colour-primary);
+ width: 100%;
+}
#formFilters {
display: none;
}
+.company-name {
+ font-size: 2.5rem;
+}
.container.save.button-cancel {
position: fixed;
@@ -76,6 +83,12 @@
right: 10vh;
}
+table.table-main tbody {
+ max-height: 28vh;
+}
+table.table-main tbody tr td {
+ height: 4vh;
+}
table.table-main.assessment thead tr th.active,
table.table-main.assessment tbody tr td.active,
@@ -108,8 +121,12 @@ table.table-main.assessment_command_modality_link tbody tr td {
}
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;
+ padding: 0.5vh 0.5vw;
+}
+table.table-main.assessment_command_modality_link thead tr th.command-category,
+table.table-main.assessment_command_modality_link tbody tr td.command-category {
+ min-width: 12vh;
+ max-width: 12vh;
}
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,
@@ -133,8 +150,12 @@ table.table-main.assessment_command_modality_link thead tr th.assessment_respons
table.table-main.assessment_command_modality_link tbody tr td.assessment_response {
max-width: 60vh;
min-width: 60vh;
+ height: fit-content;
}
+table.table-main.assessment_command_modality_link tbody tr td.assessment_response div.ddl-preview div.row {
+ border: none;
+}
table.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.response-quality-metric,
table.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.response-quality-metric {
max-width: 15vh;
diff --git a/static/dist/css/dog_assessment.bundle.css.map b/static/dist/css/dog_assessment.bundle.css.map
index 48254d2..ef8e6a1 100644
--- a/static/dist/css/dog_assessment.bundle.css.map
+++ b/static/dist/css/dog_assessment.bundle.css.map
@@ -1 +1 @@
-{"version":3,"file":"css/dog_assessment.bundle.css","mappings":";;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C;;;AC/DA;IACI,aAAa;AACjB;;AAEA;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;;AAEA;;IAEI,eAAe;IACf,eAAe;AACnB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/assessment.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}","\n\n#formFilters {\n display: none;\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: 3vh;\n min-width: 3vh;\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: 60vh;\n min-width: 60vh;\n}\n\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.response-quality-metric,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.response-quality-metric {\n max-width: 15vh;\n min-width: 15vh;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.obedience-level,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.obedience-level {\n max-width: 15vh;\n min-width: 15vh;\n}"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"css/dog_assessment.bundle.css","mappings":";;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C;;AChEA;IACI,4BAA4B;IAC5B,WAAW;AACf;;AAEA;IACI,aAAa;AACjB;AACA;IACI,iBAAiB;AACrB;;AAEA;IACI,eAAe;IACf,SAAS;IACT,WAAW;AACf;;AAEA;IACI,gBAAgB;AACpB;AACA;IACI,WAAW;AACf;;AAEA;;;;;;;;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,oBAAoB;AACxB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;AACA;;;;;;;;IAQI,cAAc;IACd,cAAc;AAClB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;;;AAGA;;IAEI,eAAe;IACf,eAAe;IACf,mBAAmB;AACvB;;AAEA;IACI,YAAY;AAChB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/assessment.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}","\nh2 {\n color: var(--colour-primary);\n width: 100%;\n}\n\n#formFilters {\n display: none;\n}\n.company-name {\n font-size: 2.5rem;\n}\n\n.container.save.button-cancel {\n position: fixed;\n top: 10vh;\n right: 10vh;\n}\n\ntable.table-main tbody {\n max-height: 28vh;\n}\ntable.table-main tbody tr td {\n height: 4vh;\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: 0.5vh 0.5vw;\n}\ntable.table-main.assessment_command_modality_link thead tr th.command-category, \ntable.table-main.assessment_command_modality_link tbody tr td.command-category {\n min-width: 12vh;\n max-width: 12vh;\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: 3vh;\n min-width: 3vh;\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: 60vh;\n min-width: 60vh;\n height: fit-content;\n}\n\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response div.ddl-preview div.row {\n border: none;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.response-quality-metric,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.response-quality-metric {\n max-width: 15vh;\n min-width: 15vh;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.obedience-level,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.obedience-level {\n max-width: 15vh;\n min-width: 15vh;\n}"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/dist/css/main.bundle.css b/static/dist/css/main.bundle.css
index 8905045..1191482 100644
--- a/static/dist/css/main.bundle.css
+++ b/static/dist/css/main.bundle.css
@@ -88,6 +88,7 @@ script, link {
width: 100%;
align-self: center;
font-size: 1rem;
+ color: var(--colour-text);
}
#pageBody > * > * {
align-self: center;
diff --git a/static/dist/css/main.bundle.css.map b/static/dist/css/main.bundle.css.map
index b391fc5..299b0d9 100644
--- a/static/dist/css/main.bundle.css.map
+++ b/static/dist/css/main.bundle.css.map
@@ -1 +1 @@
-{"version":3,"file":"css/main.bundle.css","mappings":"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;IACI,qCAAqC;AACzC;;AAEA;IACI,qBAAqB;AACzB,C;;;ACzDA,eAAe;AACf;IACI,aAAa;IACb,eAAe;IACf,OAAO;IACP,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,WAAW;IACX,uBAAuB;IACvB,yCAAyC;IACzC,qCAAqC;IACrC,uBAAuB,EAAE,kBAAkB;IAC3C,mBAAmB;AACvB;AACA;;;;IAII,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,qBAAqB;IACrB,WAAW;IACX,eAAe;IACf,uBAAuB;AAC3B;AACA;IACI,sCAAsC;AAC1C;AACA;IACI,+CAA+C;IAC/C;AACJ;AACA;IACI,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;AACjB;AACA;IACI,eAAe;AACnB;AACA;IACI,qBAAqB;IACrB,eAAe;IACf,qBAAqB;IACrB,eAAe;IACf,aAAa;IACb,kBAAkB;AACtB;AACA;IACI,eAAe;IACf,eAAe;IACf,kBAAkB;AACtB;AACA;IACI,iBAAiB;AACrB;AACA;IACI,aAAa;IACb,aAAa;IACb,aAAa;IACb,eAAe;IACf,qCAAqC;IACrC,mBAAmB;IACnB,eAAe;AACnB;AACA;IACI,qBAAqB;IACrB,kBAAkB;IAClB,mBAAmB;IACnB,qBAAqB;IACrB,iBAAiB;IACjB,kBAAkB;AACtB;AACA;IACI,oCAAoC;IACpC,cAAc;IACd,iBAAiB;AACrB;;;AAGA,iBAAiB;AACjB;IACI,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;;AAEtB;AACA;IACI,eAAe;AACnB;;AAEA;AACA;AACA;IACI,sBAAsB;IACtB,gBAAgB;AACpB;AACA;IACI,sCAAsC;AAC1C;;AAEA;IACI,WAAW;IACX,eAAe;IACf,YAAY;AAChB;AACA;;;;;;;CAOC;;AAED;IACI,UAAU;AACd;AACA;IACI,aAAa;AACjB;AACA;IACI,YAAY;IACZ,mCAAmC;IACnC,sCAAsC;IACtC;2BACuB;IACvB,WAAW;AACf;AACA;IACI,0BAA0B;IAC1B,+CAA+C;AACnD;AACA;IACI,WAAW;AACf;;AAEA;;;;;;;;;;;;;;CAcC;;AAED;IACI,aAAa;IACb,gBAAgB;AACpB;AACA;IACI,aAAa;IACb,kBAAkB;AACtB;;AAEA;;;;;;CAMC;;AAED;IACI;;;;KAIC;IACD;QACI,aAAa;IACjB;IACA;QACI,2BAA2B;QAC3B,kBAAkB;IACtB;AACJ,C;AC9LA,gBAAgB,C;;ACChB;IACI,kBAAkB;IAClB,eAAe;AACnB;;AAEA;IACI,gBAAgB;IAChB,gBAAgB;IAChB,eAAe,EAAE,yCAAyC;IAC1D,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;AAC3B;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,eAAe;IACf,mBAAmB;IACnB,+CAA+C;AACnD;;AAEA;IACI,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;AACvB;AACA;IACI,cAAc;AAClB;AACA;AACA;AACA;IACI,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,cAAc;IACd,WAAW,EAAE,iCAAiC;AAClD;;AAEA;;;;IAII,sBAAsB;IACtB,WAAW;IACX,eAAe;IACf,YAAY;IACZ,sCAAsC;IACtC,oBAAoB;IACpB,kBAAkB;IAClB,+CAA+C;IAC/C,eAAe;AACnB;;AAEA;;IAEI,eAAe;IACf,eAAe;IACf,gBAAgB;AACpB;AACA;IACI,WAAW;IACX,wBAAwB;AAC5B;AACA;;IAEI,sBAAsB;AAC1B;AACA;IACI,uCAAuC;AAC3C;AACA;IACI,+CAA+C;AACnD;AACA;IACI,sBAAsB;AAC1B;AACA;IACI,eAAe;AACnB;AACA;;IAEI,iBAAiB;IACjB,kBAAkB;AACtB;AACA;;IAEI,cAAc;IACd,cAAc;AAClB;AACA;IACI,2BAA2B;IAC3B,sCAAsC;IACtC,sCAAsC;IACtC,UAAU;IACV,kBAAkB;AACtB;AACA;IACI,2BAA2B;AAC/B;AACA;IACI,yBAAyB;AAC7B;AACA;;IAEI,cAAc;IACd,cAAc;AAClB;;AAEA;IACI,aAAa;AACjB;;;AAGA;AACA;AACA;IACI;;QAEI,WAAW;QACX,iBAAiB;IACrB;IACA;QACI,cAAc;QACd,eAAe;QACf,eAAe;IACnB;IACA;QACI,iBAAiB;IACrB;IACA;QACI,gBAAgB;IACpB;IACA;QACI,iBAAiB;IACrB;IACA;QACI,gBAAgB;IACpB;AACJ,C;;;;;ACxJA,YAAY;AACZ;IACI,kCAAkC;IAClC,wBAAwB;IACxB,mBAAmB;IACnB,8BAA8B;IAC9B,iCAAiC;IACjC,6BAA6B;IAC7B,iCAAiC;IACjC,mCAAmC;IACnC,mCAAmC;IACnC,yBAAyB;IACzB,2BAA2B;IAC3B,yBAAyB;IACzB,mCAAmC;IACnC,+BAA+B;IAC/B,sBAAsB;IACtB,+BAA+B;IAC/B,qCAAqC;IACrC,mCAAmC;AACvC;;AAEA;;;;;;;;;;;;;;;;CAgBC,C","sources":["webpack://app/./static/css/main.css","webpack://app/./static/css/components/button.css","webpack://app/./static/css/components/form.css","webpack://app/./static/css/components/image.css","webpack://app/./static/css/components/label.css","webpack://app/./static/css/components/overlay.css","webpack://app/./static/css/components/table.css","webpack://app/./static/css/layouts/header.css","webpack://app/./static/css/layouts/footer.css","webpack://app/./static/css/layouts/table-main.css","webpack://app/./static/css/themes/light.css"],"sourcesContent":["\n:root {\n --font-family-base: 'Open Sans', Arial, sans-serif;\n /* Declare global variables */\n /*\n --c_purple: #5B29FF;\n --c_purple_pastel: #D1D1FF;\n --c_purple_lighter: #E8E1FF;\n --c_purple_light: #C6BDFF;\n --c_purple_dark: #4700B3;\n */\n /* purple theme\n - light https://coolors.co/palette/a172fd-a77afe-ac82fe-b691fe-c1a0fe-cbaffe-d6bffe-e0cefe-ebddfe-f5ecfe\n - dark https://coolors.co/palette/310055-3c0663-4a0a77-5a108f-6818a5-8b2fc9-ab51e3-bd68ee-d283ff-dc97ff\n */\n /*\n --c_purple_darker: #310055;\n --c_purple_dark: #4A0A77;\n --c_purple: #6818A5;\n --c_purple_light: #CBAFFE;\n --c_purple_lighter: #F5ECFE;\n\n --c_blue: #0044FF;\n --c_blue_pastel: #B8E0FF;\n --c_blue_light: #73E8FF;\n --c_blue_dark: #003ADB;\n */\n /* --c_red: * /\n --c-red: #FF0000;\n --c_red_pastel: #FAE0E2;\n --c_red_lighter: #FAE0E2;\n */\n}\n\nhtml {\n height: 100vh;\n /* overflow-y: clip; */\n}\n\nbody {\n background-color: var(--colour-page-background);\n color: var(--colour-text);\n font-family: var(--font-family-base);\n font-family: Arial;\n padding: 0;\n margin: 0;\n border: 0;\n background: linear-gradient(to bottom right, var(--colour-page-background-1), var(--colour-page-background-2)); /* var(--c_purple); */\n height: 100vh;\n /* max-height: 100vh;\n overflow-y: clip; */\n}\n\n* {\n margin: 0;\n}\n\nscript, link {\n display: none !important;\n}\n\n/*\n#pageBody {\n / * height: 69vh !important; * /\n max-height: 79vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n*/\n\n.page-body > * {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n align-self: center;\n font-size: 1rem;\n}\n#pageBody > * > * {\n align-self: center;\n padding-top: 0.5vh;\n padding-bottom: 0.5vh;\n}\n#pageBody > .card {\n height: fit-content;\n margin: 0.5vh auto;\n}\n\n\n\n/* Add a card effect for articles */\n.card {\n background-color: var(--colour-text-background);\n padding: 1vh 2.5vw;\n margin: 1vh;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n border-radius: 1.5vh;\n position: relative;\n height: fit-content;\n max-width: 80vw;\n}\n\n.container {\n flex: 1;\n margin: 0px;\n align-items: flex-start;\n justify-content: flex-start;\n text-align: flex-start;\n /* max-width: 100%; */\n /* min-width: fit-content; */\n}\n\n.column {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: auto 0;\n}\n\n.row {\n display: flex; \n flex-direction: row;\n width: 100%;\n flex-wrap: wrap;\n}\n\n.container > .card:first-of-type {\n margin-top: none;\n}\n\n\n/*\n/* Responsive layout - when the screen is less than 800px wide, make the two columns stack on top of each other instead of next to each other *\n@media screen and (max-width: 800px) {\n .leftcolumn, .rightcolumn { \n width: 100%;\n /* padding: 0; *\n }\n}\n\n/* Responsive layout - when the screen is less than 400px wide, make the navigation links stack on top of each other instead of next to each other *\n@media screen and (max-width: 400px) {\n .topnav a {\n float: none;\n width: 100%;\n }\n}\n*/\n\n.container-input {\n padding: 1vh;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.container-input > label {\n width: 100%;\n margin-bottom: 1vh;\n margin-top: 0;\n}\n\n.container-input > input,\n.container-input > textarea {\n border: 2px solid var(--colour-accent);\n padding: 1vh;\n}\n\n.label-title {\n width: 100%;\n}\n\n\nul {\n max-width: 90%;\n padding: 5px 0 10px 0;\n width: fit-content;\n margin: auto;\n}\nli {\n text-align: left;\n font-size: 18px;\n}\n\n\n:not(input,textarea,select,button).dirty {\n background-color: var(--colour-accent);\n}\ninput.dirty, textarea.dirty, select.dirty {\n border-color: var(--colour-primary);\n}\n\n\n\n\n@media screen and (max-width: 400px) {\n /*\n img.logo {\n border-radius: 3vh;\n }\n .company-name {\n font-size: 14px;\n }\n */\n}",".button {\n display: inline-block;\n padding: 0.5vh 0.75vh;\n border-radius: 0.75vh;\n text-decoration: none;\n font-weight: bold;\n transition: all 0.3s ease;\n width: fit-content;\n}\n.button:not(.is_collapsed) {\n cursor: pointer;\n}\n.button.is_collapsed {\n display: block;\n opacity: 0;\n}\n\n.button-primary {\n background: var(--colour-accent);\n color: var(--colour-primary);\n border: 2px solid var(--colour-primary);\n}\n\n.button-primary:hover {\n background: var(--colour-secondary);\n}\n\n.button-light {\n background: white;\n color: var(--colour-primary);\n}\n\n.button-light:hover {\n background: var(--colour-accent);\n}\n\n.logo:hover{\n cursor: pointer;\n}\n\n\n.button.icon.active.delete, \n.button.icon.active.add {\n height: 2vh;\n}","\n\nselect {\n border: 1px solid var(--colour-accent);\n}","\nimg, video {\n border-radius: 3vh;\n}\n","\nh1 {\n font-size: 2.5rem;\n}\nh2 {\n font-size: 1.8rem;\n}\nh3 {\n font-size: 1.2rem;\n margin-top: 1vh;\n}\nh4 {\n font-size: 13px;\n margin: 1vh;\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n}\nh5 {\n font-size: 11px;\n margin: 1vh;\n}\n\n\n.text-center {\n text-align: center;\n}\n.section-title {\n font-size: 1.8rem;\n margin-bottom: 1rem;\n}\n.section-subtitle {\n font-size: 1.2rem;\n margin-bottom: 2rem;\n}","\n\n/* Overlay modal */\n.overlay {\n /*\n display: none;\n */\n position: fixed;\n width: 100px;\n /* height: 50%; */ \n background: var(--colour-page-background);\n justify-content: right;\n align-items: right;\n align-self: right;\n z-index: 999;\n}\n.is_collapsed {\n display: none;\n}\n\n/* Hamburger menu overlay */\n#buttonHamburger {\n cursor: pointer;\n position: fixed;\n right: 1vh;\n min-height: 3.5vh;\n max-height: 3.5vh;\n min-width: 4vh;\n max-width: 4vh;\n z-index: 10;\n padding: 0;\n}\n#buttonHamburger.expanded {\n min-width: 100px;\n max-width: 100px;\n min-height: 5vh;\n max-height: 5vh;\n padding-left: calc(100 * 1px - 5 * 1vh);\n padding-bottom: 1vh;\n}\n#buttonHamburger .icon.hamburger {\n min-height: 2.5vh;\n max-height: 2.5vh;\n min-width: 2.5vh;\n max-width: 2.5vh;\n padding: 0.5vh 0.75vh;\n}\n/*\n#buttonHamburger:hover {\n text-decoration: none;\n cursor: pointer;\n}\n*/\n#overlayHamburger {\n top: 7vh;\n right: 1vh;\n overflow-x: hidden;\n overflow-y: auto;\n max-height: 60vh;\n background-color: var(--colour-accent);\n border: 2px solid var(--border-colour);\n border-radius: 0.75vh;\n width: 100px;\n z-index: 2;\n padding-top: 3.5vh;\n}\n#overlayHamburger:first-child {\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n}\n#overlayHamburger:last-child {\n border-bottom-left-radius: 12px;\n border-bottom-right-radius: 12px;\n}\n\n#overlayHamburger .container {\n background-color: var(--colour-page-background);\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n /* color: var(--colour-text); */\n font-weight: bold;\n font-size: 15px;\n /* height: 18px; */\n cursor: pointer;\n padding-top: 5vh;\n}\n#overlayHamburger > :hover {\n color: var(--colour-page-background);\n background-color: var(--colour-primary);\n}\n#overlayHamburger .container a {\n width: 100%;\n /*\n margin-top: 4.5px;\n margin-bottom: 4.5px;\n */\n}\n#overlayHamburger > .container {\n padding-top: 4.5px;\n padding-bottom: 4.5px;\n}\n\n@media screen and (max-width: 400px) {\n #buttonHamburger {\n min-height: 5vh;\n max-height: 5vh;\n min-width: 5.5vh;\n max-width: 5.5vh;\n }\n #buttonHamburger .icon.hamburger {\n min-height: 4vh;\n max-height: 4vh;\n min-width: 4vh;\n max-width: 4vh;\n }\n #overlayHamburger {\n padding-top: 5vh;\n }\n}\n\n/* Confirm overlay */\n#overlayConfirm {\n position: absolute;\n left: 25vw;\n width: 50vw;\n height: 50vh;\n}\n\n#overlayConfirm .row > * {\n margin-left: auto;\n margin-right: auto;\n}\n\n#overlayConfirm .row .button.button-cancel {\n margin-right: 0.5vh;\n}\n#overlayConfirm .row .button.submit {\n margin-left: 0.5vh;\n}\n\n\n","\n#formFilters .container {\n max-width: fit-content;\n}\n\nthead, tbody {\n padding-top: 0px !important;\n padding-bottom: 0px !important;\n}\n\nth {\n background-color: transparent;\n}\ntd {\n font-size: min(16px, calc(1vh * 3));\n}\n\nth, td {\n min-width: fit-content;\n}\ntr:not(:last-child) > td {\n border-bottom: 1px dashed var(--border-colour);\n}\ntd > table > tbody > tr > td {\n border: none !important;\n}\nth.is_collapsed, td.is_collapsed {\n display: table-cell !important;\n}\ntd.dirty {\n background-color: var(--colour-primary);\n}\ntd:not(.dirty) {\n background-color: transparent;\n}\n\ntr {\n min-height: 1px;\n border-bottom: 1px solid;\n border-top: 1px solid;\n border-color: var(--border-colour);\n background-color: transparent;\n}\n\ntable button {\n margin: 0.25vh;\n padding: 0.5vh 1vh;\n}\n\ntable button.active {\n background-color: var(--colour-page-background);\n}\n\ntr.delete, tr.delete > td {\n background-color: var(--colour-error);\n}\n\ntable div {\n align-content: center;\n}","\n\n/* Navigation */\n.topnav {\n display: flex;\n flex-wrap: wrap;\n flex: 1;\n flex-direction: row;\n font-weight: bold;\n font-size: 1vh;\n max-height: 7vh;\n height: 7vh;\n align-items: flex-start;\n background: var(--colour-text-background);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n justify-content: center; /* space-between */\n align-items: center;\n}\n.topnav a,\n.topnav label,\n.topnav p,\n.topnav h1 {\n float: left;\n display: flex;\n text-align: center;\n text-decoration: none;\n width: 100%;\n max-height: 7vh;\n justify-content: center;\n}\n.topnav h1 {\n color: var(--colour-text-link-visited);\n}\n.topnav a:hover {\n background-color: var(--colour-page-background);\n color: var(--colour-text)\n}\n.topnav > .container {\n width: 10vh;\n height: 100%;\n align-items: center;\n align-self: center;\n display: flex;\n}\n.topnav .container.logo {\n cursor: pointer;\n}\n.topnav .container .logo {\n /* min-width: 35vh; */\n max-width: 35vw;\n /* min-height: 6vh; */\n max-height: 6vh;\n margin: 0.5vh;\n margin-right: auto;\n}\n.topnav .container.company-name {\n min-width: 30vw;\n max-width: 30vw;\n margin-right: 35vw;\n}\n.company-name {\n font-size: 1.6rem;\n}\n.nav-links {\n display: flex;\n gap: 1vh 2rem;\n display: flex;\n flex-wrap: wrap;\n max-width: calc(1vw * 100 - 1vh * 35);\n align-items: center;\n margin: 1vh 1vw;\n}\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: normal;\n align-content: center;\n font-size: 1.2rem;\n width: fit-content;\n}\n.nav-links a.button {\n color: var(--colour-text-background);\n margin: 0 auto;\n font-weight: bold;\n}\n\n\n/* Page Filters */\n#formFilters {\n width: fit-content;\n margin-left: auto;\n margin-right: auto;\n \n}\n#formFilters * {\n font-size: 1rem;\n}\n\n#formFilters .container {\n}\n#formFilters .container-input {\n max-width: fit-content;\n padding: 0 0.5vh;\n}\n#formFilters .container-input:has(.dirty) {\n background-color: var(--colour-accent);\n} \n\n#formFilters .container-input input {\n width: 10vh;\n max-width: 10vh;\n height: 20px;\n}\n/*\n#formFilters .container-input input {\n height: 1.7vh;\n}\n#formFilters .container-input select {\n height: 2vh;\n}\n*/\n\n#formFilters .container-input.filter.active_only {\n width: 8vh;\n}\n#formFilters .container-input.filter.active_only input {\n display: none;\n}\n#formFilters .container-input.filter.active_only svg.active_only {\n height: 25px;\n fill: var(--colour-text-background);\n background-color: var(--colour-accent);\n /* border: 1px solid var(--colour-accent);\n border-radius: 0.5vh; */\n width: 25px;\n}\n#formFilters .container-input.filter.active_only svg.active_only.is_checked {\n fill: var(--colour-accent);\n background-color: var(--colour-text-background);\n}\n#formFilters .container-input.filter.is_not_empty {\n width: 12vh;\n}\n\n/*\n#formFilters button {\n padding: 0.5vh 0.75vh;\n background-color: var(--colour-accent);\n color: var(--colour-primary);\n font-weight: bold;\n border-radius: 0.75vh;\n border: 2px solid var(--colour-primary);\n}\n\n#formFilters button.is_collapsed {\n display: block;\n opacity: 0;\n}\n*/\n\nform.filter button.save, form.filter button.button-cancel {\n margin-top: 0;\n margin-bottom: 0;\n}\nform.filter button.save, form.filter button.button-cancel {\n margin-top: 0;\n margin-bottom: 1px;\n}\n\n/*\n@media screen and (max-width: 400px) {\n .topnav h1 {\n font-size: 16px;\n }\n}\n*/\n\n@media screen and (max-width: 940px) {\n /*\n .hero h1 {\n font-size: 2.5rem;\n }\n */\n .nav-links {\n display: none;\n }\n .topnav {\n justify-content: flex-start;\n align-items: start;\n }\n}","/* In sections */","\n#formFilters {\n padding: 0.5vh 1vw;\n margin-top: 1vh;\n}\n\ntable.table-main {\n overflow-x: auto;\n padding: 1vh 1vw;\n max-width: 88vw; /* min(calc(1vh * 80), calc(1vw * 90)); */\n width: min-content;\n align-items: normal;\n justify-content: normal;\n}\n\ntable.table-main * {\n padding: 0.25vh 0.5vh;\n}\n\ntable.table-main thead {\n max-height: 4vh;\n overflow-y: visible;\n background-color: var(--colour-text-background);\n}\n\ntable.table-main tbody {\n max-height: 75vh;\n overflow-y: auto;\n min-width: fit-content;\n max-width: fit-content;\n overflow-x: visible;\n}\ntable.table-main tbody.is_collapsed {\n display: block;\n}\ntable.table-main:has(tbody > div) tbody {\n}\ntable.table-main tbody > div {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n justify-content: center;\n justify-items: center;\n justify-self: center;\n align-content: center;\n align-items: center;\n align-self: center;\n position: relative;\n display: block;\n width: 100%; /* min(calc(90vh), calc(70vw)); */\n}\n\ntable.table-main select, \ntable.table-main input:not([type=\"checkbox\"]), \ntable.table-main textarea, \ntable.table-main div {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n height: 100%;\n border: 1px solid var(--colour-accent);\n border-radius: 0.5vh;\n text-align: center;\n background-color: var(--colour-text-background);\n font-size: 16px;\n}\n\ntable.table-main thead tr th, \ntable.table-main tbody tr td {\n max-width: 20vh;\n min-width: 20vh;\n padding: 0 0.5vh;\n}\ntable.table-main tbody tr td {\n height: 3vh;\n /* padding-top: 0.5vh; */\n}\ntable.table-main thead tr th.notes, \ntable.table-main tbody tr td.notes {\n max-width: fit-content;\n}\ntable.table-main tbody tr td:has(.dirty) {\n background-color: var(--colour-primary);\n}\ntable.table-main tbody tr td:has(.dirty) table tr:not(:has(.dirty)) {\n background-color: var(--colour-text-background);\n}\ntable.table-main tbody tr:not(:last-of-type) td {\n padding-bottom: 0.25vh;\n}\ntable.table-main tbody tr td.ddl-preview div {\n cursor: pointer;\n}\ntable.table-main tbody tr td.ddl-preview div,\ntable.table-main tbody tr td.ddl-preview select {\n padding-left: 2vh;\n padding-right: 2vh;\n}\ntable.table-main thead tr th.active, \ntable.table-main tbody tr td.active {\n max-width: 6vh;\n min-width: 6vh;\n}\ntable.table-main thead tr th.active svg.active.add {\n fill: var(--colour-primary);\n background-color: var(--colour-accent);\n border: 2px solid var(--colour-accent);\n padding: 0;\n border-radius: 1vh;\n}\ntable.table-main tbody tr td.active svg.active.add {\n fill: var(--colour-primary);\n}\ntable.table-main tbody tr td.active svg.active.delete {\n fill: var(--colour-error);\n}\ntable.table-main tbody tr td.display_order, \ntable.table-main thead tr th.display_order {\n max-width: 5vh;\n min-width: 5vh;\n}\n\n#container-template-elements {\n display: none;\n}\n\n\n@media screen and (max-width: 850px) {\n}\n@media screen and (max-width: 400px) {\n #formFilters input[type=\"text\"],\n #formFilters select {\n width: 15vh;\n /* height: 3vh; */\n }\n .topnav .container.company-name {\n margin: 0 auto;\n min-width: 40vw;\n max-width: 64vw;\n }\n .company-name {\n font-size: 1.2rem;\n }\n table.table-main {\n max-height: 61vh;\n }\n table.table-main thead {\n font-size: 0.8rem;\n }\n table.table-main tbody {\n max-height: 53vh;\n }\n}","/* Default */\n:root {\n /* Claude dark blue / grey theme */\n --colour-accent: #C77DFF;\n --colour-error: red;\n --colour-error-accent: #fc8181;\n --colour-error-highlight: #fff5f5;\n --colour-error-title: #c53030;\n --colour-page-background: #E0AAFF;\n --colour-page-background-1: #F5ECFE;\n --colour-page-background-2: #FAE0E2;\n --colour-primary: #240046;\n --colour-secondary: #3C096C;\n --colour-success: #38a169;\n --colour-success-highlight: #f0fff4;\n --colour-success-title: #16a34a;\n --colour-text: #10002B;\n --colour-text-background: white;\n --colour-text-link-unvisited: #0000EE;\n --colour-text-link-visited: #551A8B;\n}\n\n/*\n--c_purple_darker: #310055;\n--c_purple_dark: #4A0A77;\n--c_purple: #6818A5;\n--c_purple_light: #CBAFFE;\n--c_purple_lighter: #F5ECFE;\n\n--c_blue: #0044FF;\n--c_blue_pastel: #B8E0FF;\n--c_blue_light: #73E8FF;\n--c_blue_dark: #003ADB;\n/* --c_red: * /\n--c-red: #FF0000;\n--c_red_pastel: #FAE0E2;\n--c_red_lighter: #FAE0E2;\n}\n*/"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"css/main.bundle.css","mappings":"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;AACnD;;AAEA;IACI,qCAAqC;AACzC;;AAEA;IACI,qBAAqB;AACzB,C;;;ACzDA,eAAe;AACf;IACI,aAAa;IACb,eAAe;IACf,OAAO;IACP,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,WAAW;IACX,uBAAuB;IACvB,yCAAyC;IACzC,qCAAqC;IACrC,uBAAuB,EAAE,kBAAkB;IAC3C,mBAAmB;AACvB;AACA;;;;IAII,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,qBAAqB;IACrB,WAAW;IACX,eAAe;IACf,uBAAuB;AAC3B;AACA;IACI,sCAAsC;AAC1C;AACA;IACI,+CAA+C;IAC/C;AACJ;AACA;IACI,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;AACjB;AACA;IACI,eAAe;AACnB;AACA;IACI,qBAAqB;IACrB,eAAe;IACf,qBAAqB;IACrB,eAAe;IACf,aAAa;IACb,kBAAkB;AACtB;AACA;IACI,eAAe;IACf,eAAe;IACf,kBAAkB;AACtB;AACA;IACI,iBAAiB;AACrB;AACA;IACI,aAAa;IACb,aAAa;IACb,aAAa;IACb,eAAe;IACf,qCAAqC;IACrC,mBAAmB;IACnB,eAAe;AACnB;AACA;IACI,qBAAqB;IACrB,kBAAkB;IAClB,mBAAmB;IACnB,qBAAqB;IACrB,iBAAiB;IACjB,kBAAkB;AACtB;AACA;IACI,oCAAoC;IACpC,cAAc;IACd,iBAAiB;AACrB;;;AAGA,iBAAiB;AACjB;IACI,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;;AAEtB;AACA;IACI,eAAe;AACnB;;AAEA;AACA;AACA;IACI,sBAAsB;IACtB,gBAAgB;AACpB;AACA;IACI,sCAAsC;AAC1C;;AAEA;IACI,WAAW;IACX,eAAe;IACf,YAAY;AAChB;AACA;;;;;;;CAOC;;AAED;IACI,UAAU;AACd;AACA;IACI,aAAa;AACjB;AACA;IACI,YAAY;IACZ,mCAAmC;IACnC,sCAAsC;IACtC;2BACuB;IACvB,WAAW;AACf;AACA;IACI,0BAA0B;IAC1B,+CAA+C;AACnD;AACA;IACI,WAAW;AACf;;AAEA;;;;;;;;;;;;;;CAcC;;AAED;IACI,aAAa;IACb,gBAAgB;AACpB;AACA;IACI,aAAa;IACb,kBAAkB;AACtB;;AAEA;;;;;;CAMC;;AAED;IACI;;;;KAIC;IACD;QACI,aAAa;IACjB;IACA;QACI,2BAA2B;QAC3B,kBAAkB;IACtB;AACJ,C;AC9LA,gBAAgB,C;;ACChB;IACI,kBAAkB;IAClB,eAAe;AACnB;;AAEA;IACI,gBAAgB;IAChB,gBAAgB;IAChB,eAAe,EAAE,yCAAyC;IAC1D,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;AAC3B;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,eAAe;IACf,mBAAmB;IACnB,+CAA+C;AACnD;;AAEA;IACI,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;AACvB;AACA;IACI,cAAc;AAClB;AACA;AACA;AACA;IACI,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,cAAc;IACd,WAAW,EAAE,iCAAiC;AAClD;;AAEA;;;;IAII,sBAAsB;IACtB,WAAW;IACX,eAAe;IACf,YAAY;IACZ,sCAAsC;IACtC,oBAAoB;IACpB,kBAAkB;IAClB,+CAA+C;IAC/C,eAAe;AACnB;;AAEA;;IAEI,eAAe;IACf,eAAe;IACf,gBAAgB;AACpB;AACA;IACI,WAAW;IACX,wBAAwB;AAC5B;AACA;;IAEI,sBAAsB;AAC1B;AACA;IACI,uCAAuC;AAC3C;AACA;IACI,+CAA+C;AACnD;AACA;IACI,sBAAsB;AAC1B;AACA;IACI,eAAe;AACnB;AACA;;IAEI,iBAAiB;IACjB,kBAAkB;AACtB;AACA;;IAEI,cAAc;IACd,cAAc;AAClB;AACA;IACI,2BAA2B;IAC3B,sCAAsC;IACtC,sCAAsC;IACtC,UAAU;IACV,kBAAkB;AACtB;AACA;IACI,2BAA2B;AAC/B;AACA;IACI,yBAAyB;AAC7B;AACA;;IAEI,cAAc;IACd,cAAc;AAClB;;AAEA;IACI,aAAa;AACjB;;;AAGA;AACA;AACA;IACI;;QAEI,WAAW;QACX,iBAAiB;IACrB;IACA;QACI,cAAc;QACd,eAAe;QACf,eAAe;IACnB;IACA;QACI,iBAAiB;IACrB;IACA;QACI,gBAAgB;IACpB;IACA;QACI,iBAAiB;IACrB;IACA;QACI,gBAAgB;IACpB;AACJ,C;;;;;ACxJA,YAAY;AACZ;IACI,kCAAkC;IAClC,wBAAwB;IACxB,mBAAmB;IACnB,8BAA8B;IAC9B,iCAAiC;IACjC,6BAA6B;IAC7B,iCAAiC;IACjC,mCAAmC;IACnC,mCAAmC;IACnC,yBAAyB;IACzB,2BAA2B;IAC3B,yBAAyB;IACzB,mCAAmC;IACnC,+BAA+B;IAC/B,sBAAsB;IACtB,+BAA+B;IAC/B,qCAAqC;IACrC,mCAAmC;AACvC;;AAEA;;;;;;;;;;;;;;;;CAgBC,C","sources":["webpack://app/./static/css/main.css","webpack://app/./static/css/components/button.css","webpack://app/./static/css/components/form.css","webpack://app/./static/css/components/image.css","webpack://app/./static/css/components/label.css","webpack://app/./static/css/components/overlay.css","webpack://app/./static/css/components/table.css","webpack://app/./static/css/layouts/header.css","webpack://app/./static/css/layouts/footer.css","webpack://app/./static/css/layouts/table-main.css","webpack://app/./static/css/themes/light.css"],"sourcesContent":["\n:root {\n --font-family-base: 'Open Sans', Arial, sans-serif;\n /* Declare global variables */\n /*\n --c_purple: #5B29FF;\n --c_purple_pastel: #D1D1FF;\n --c_purple_lighter: #E8E1FF;\n --c_purple_light: #C6BDFF;\n --c_purple_dark: #4700B3;\n */\n /* purple theme\n - light https://coolors.co/palette/a172fd-a77afe-ac82fe-b691fe-c1a0fe-cbaffe-d6bffe-e0cefe-ebddfe-f5ecfe\n - dark https://coolors.co/palette/310055-3c0663-4a0a77-5a108f-6818a5-8b2fc9-ab51e3-bd68ee-d283ff-dc97ff\n */\n /*\n --c_purple_darker: #310055;\n --c_purple_dark: #4A0A77;\n --c_purple: #6818A5;\n --c_purple_light: #CBAFFE;\n --c_purple_lighter: #F5ECFE;\n\n --c_blue: #0044FF;\n --c_blue_pastel: #B8E0FF;\n --c_blue_light: #73E8FF;\n --c_blue_dark: #003ADB;\n */\n /* --c_red: * /\n --c-red: #FF0000;\n --c_red_pastel: #FAE0E2;\n --c_red_lighter: #FAE0E2;\n */\n}\n\nhtml {\n height: 100vh;\n /* overflow-y: clip; */\n}\n\nbody {\n background-color: var(--colour-page-background);\n color: var(--colour-text);\n font-family: var(--font-family-base);\n font-family: Arial;\n padding: 0;\n margin: 0;\n border: 0;\n background: linear-gradient(to bottom right, var(--colour-page-background-1), var(--colour-page-background-2)); /* var(--c_purple); */\n height: 100vh;\n /* max-height: 100vh;\n overflow-y: clip; */\n}\n\n* {\n margin: 0;\n}\n\nscript, link {\n display: none !important;\n}\n\n/*\n#pageBody {\n / * height: 69vh !important; * /\n max-height: 79vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n*/\n\n.page-body > * {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n align-self: center;\n font-size: 1rem;\n color: var(--colour-text);\n}\n#pageBody > * > * {\n align-self: center;\n padding-top: 0.5vh;\n padding-bottom: 0.5vh;\n}\n#pageBody > .card {\n height: fit-content;\n margin: 0.5vh auto;\n}\n\n\n\n/* Add a card effect for articles */\n.card {\n background-color: var(--colour-text-background);\n padding: 1vh 2.5vw;\n margin: 1vh;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n border-radius: 1.5vh;\n position: relative;\n height: fit-content;\n max-width: 80vw;\n}\n\n.container {\n flex: 1;\n margin: 0px;\n align-items: flex-start;\n justify-content: flex-start;\n text-align: flex-start;\n /* max-width: 100%; */\n /* min-width: fit-content; */\n}\n\n.column {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: auto 0;\n}\n\n.row {\n display: flex; \n flex-direction: row;\n width: 100%;\n flex-wrap: wrap;\n}\n\n.container > .card:first-of-type {\n margin-top: none;\n}\n\n\n/*\n/* Responsive layout - when the screen is less than 800px wide, make the two columns stack on top of each other instead of next to each other *\n@media screen and (max-width: 800px) {\n .leftcolumn, .rightcolumn { \n width: 100%;\n /* padding: 0; *\n }\n}\n\n/* Responsive layout - when the screen is less than 400px wide, make the navigation links stack on top of each other instead of next to each other *\n@media screen and (max-width: 400px) {\n .topnav a {\n float: none;\n width: 100%;\n }\n}\n*/\n\n.container-input {\n padding: 1vh;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n\n.container-input > label {\n width: 100%;\n margin-bottom: 1vh;\n margin-top: 0;\n}\n\n.container-input > input,\n.container-input > textarea {\n border: 2px solid var(--colour-accent);\n padding: 1vh;\n}\n\n.label-title {\n width: 100%;\n}\n\n\nul {\n max-width: 90%;\n padding: 5px 0 10px 0;\n width: fit-content;\n margin: auto;\n}\nli {\n text-align: left;\n font-size: 18px;\n}\n\n\n:not(input,textarea,select,button).dirty {\n background-color: var(--colour-accent);\n}\ninput.dirty, textarea.dirty, select.dirty {\n border-color: var(--colour-primary);\n}\n\n\n\n\n@media screen and (max-width: 400px) {\n /*\n img.logo {\n border-radius: 3vh;\n }\n .company-name {\n font-size: 14px;\n }\n */\n}",".button {\n display: inline-block;\n padding: 0.5vh 0.75vh;\n border-radius: 0.75vh;\n text-decoration: none;\n font-weight: bold;\n transition: all 0.3s ease;\n width: fit-content;\n}\n.button:not(.is_collapsed) {\n cursor: pointer;\n}\n.button.is_collapsed {\n display: block;\n opacity: 0;\n}\n\n.button-primary {\n background: var(--colour-accent);\n color: var(--colour-primary);\n border: 2px solid var(--colour-primary);\n}\n\n.button-primary:hover {\n background: var(--colour-secondary);\n}\n\n.button-light {\n background: white;\n color: var(--colour-primary);\n}\n\n.button-light:hover {\n background: var(--colour-accent);\n}\n\n.logo:hover{\n cursor: pointer;\n}\n\n\n.button.icon.active.delete, \n.button.icon.active.add {\n height: 2vh;\n}","\n\nselect {\n border: 1px solid var(--colour-accent);\n}","\nimg, video {\n border-radius: 3vh;\n}\n","\nh1 {\n font-size: 2.5rem;\n}\nh2 {\n font-size: 1.8rem;\n}\nh3 {\n font-size: 1.2rem;\n margin-top: 1vh;\n}\nh4 {\n font-size: 13px;\n margin: 1vh;\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n}\nh5 {\n font-size: 11px;\n margin: 1vh;\n}\n\n\n.text-center {\n text-align: center;\n}\n.section-title {\n font-size: 1.8rem;\n margin-bottom: 1rem;\n}\n.section-subtitle {\n font-size: 1.2rem;\n margin-bottom: 2rem;\n}","\n\n/* Overlay modal */\n.overlay {\n /*\n display: none;\n */\n position: fixed;\n width: 100px;\n /* height: 50%; */ \n background: var(--colour-page-background);\n justify-content: right;\n align-items: right;\n align-self: right;\n z-index: 999;\n}\n.is_collapsed {\n display: none;\n}\n\n/* Hamburger menu overlay */\n#buttonHamburger {\n cursor: pointer;\n position: fixed;\n right: 1vh;\n min-height: 3.5vh;\n max-height: 3.5vh;\n min-width: 4vh;\n max-width: 4vh;\n z-index: 10;\n padding: 0;\n}\n#buttonHamburger.expanded {\n min-width: 100px;\n max-width: 100px;\n min-height: 5vh;\n max-height: 5vh;\n padding-left: calc(100 * 1px - 5 * 1vh);\n padding-bottom: 1vh;\n}\n#buttonHamburger .icon.hamburger {\n min-height: 2.5vh;\n max-height: 2.5vh;\n min-width: 2.5vh;\n max-width: 2.5vh;\n padding: 0.5vh 0.75vh;\n}\n/*\n#buttonHamburger:hover {\n text-decoration: none;\n cursor: pointer;\n}\n*/\n#overlayHamburger {\n top: 7vh;\n right: 1vh;\n overflow-x: hidden;\n overflow-y: auto;\n max-height: 60vh;\n background-color: var(--colour-accent);\n border: 2px solid var(--border-colour);\n border-radius: 0.75vh;\n width: 100px;\n z-index: 2;\n padding-top: 3.5vh;\n}\n#overlayHamburger:first-child {\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n}\n#overlayHamburger:last-child {\n border-bottom-left-radius: 12px;\n border-bottom-right-radius: 12px;\n}\n\n#overlayHamburger .container {\n background-color: var(--colour-page-background);\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n /* color: var(--colour-text); */\n font-weight: bold;\n font-size: 15px;\n /* height: 18px; */\n cursor: pointer;\n padding-top: 5vh;\n}\n#overlayHamburger > :hover {\n color: var(--colour-page-background);\n background-color: var(--colour-primary);\n}\n#overlayHamburger .container a {\n width: 100%;\n /*\n margin-top: 4.5px;\n margin-bottom: 4.5px;\n */\n}\n#overlayHamburger > .container {\n padding-top: 4.5px;\n padding-bottom: 4.5px;\n}\n\n@media screen and (max-width: 400px) {\n #buttonHamburger {\n min-height: 5vh;\n max-height: 5vh;\n min-width: 5.5vh;\n max-width: 5.5vh;\n }\n #buttonHamburger .icon.hamburger {\n min-height: 4vh;\n max-height: 4vh;\n min-width: 4vh;\n max-width: 4vh;\n }\n #overlayHamburger {\n padding-top: 5vh;\n }\n}\n\n/* Confirm overlay */\n#overlayConfirm {\n position: absolute;\n left: 25vw;\n width: 50vw;\n height: 50vh;\n}\n\n#overlayConfirm .row > * {\n margin-left: auto;\n margin-right: auto;\n}\n\n#overlayConfirm .row .button.button-cancel {\n margin-right: 0.5vh;\n}\n#overlayConfirm .row .button.submit {\n margin-left: 0.5vh;\n}\n\n\n","\n#formFilters .container {\n max-width: fit-content;\n}\n\nthead, tbody {\n padding-top: 0px !important;\n padding-bottom: 0px !important;\n}\n\nth {\n background-color: transparent;\n}\ntd {\n font-size: min(16px, calc(1vh * 3));\n}\n\nth, td {\n min-width: fit-content;\n}\ntr:not(:last-child) > td {\n border-bottom: 1px dashed var(--border-colour);\n}\ntd > table > tbody > tr > td {\n border: none !important;\n}\nth.is_collapsed, td.is_collapsed {\n display: table-cell !important;\n}\ntd.dirty {\n background-color: var(--colour-primary);\n}\ntd:not(.dirty) {\n background-color: transparent;\n}\n\ntr {\n min-height: 1px;\n border-bottom: 1px solid;\n border-top: 1px solid;\n border-color: var(--border-colour);\n background-color: transparent;\n}\n\ntable button {\n margin: 0.25vh;\n padding: 0.5vh 1vh;\n}\n\ntable button.active {\n background-color: var(--colour-page-background);\n}\n\ntr.delete, tr.delete > td {\n background-color: var(--colour-error);\n}\n\ntable div {\n align-content: center;\n}","\n\n/* Navigation */\n.topnav {\n display: flex;\n flex-wrap: wrap;\n flex: 1;\n flex-direction: row;\n font-weight: bold;\n font-size: 1vh;\n max-height: 7vh;\n height: 7vh;\n align-items: flex-start;\n background: var(--colour-text-background);\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n justify-content: center; /* space-between */\n align-items: center;\n}\n.topnav a,\n.topnav label,\n.topnav p,\n.topnav h1 {\n float: left;\n display: flex;\n text-align: center;\n text-decoration: none;\n width: 100%;\n max-height: 7vh;\n justify-content: center;\n}\n.topnav h1 {\n color: var(--colour-text-link-visited);\n}\n.topnav a:hover {\n background-color: var(--colour-page-background);\n color: var(--colour-text)\n}\n.topnav > .container {\n width: 10vh;\n height: 100%;\n align-items: center;\n align-self: center;\n display: flex;\n}\n.topnav .container.logo {\n cursor: pointer;\n}\n.topnav .container .logo {\n /* min-width: 35vh; */\n max-width: 35vw;\n /* min-height: 6vh; */\n max-height: 6vh;\n margin: 0.5vh;\n margin-right: auto;\n}\n.topnav .container.company-name {\n min-width: 30vw;\n max-width: 30vw;\n margin-right: 35vw;\n}\n.company-name {\n font-size: 1.6rem;\n}\n.nav-links {\n display: flex;\n gap: 1vh 2rem;\n display: flex;\n flex-wrap: wrap;\n max-width: calc(1vw * 100 - 1vh * 35);\n align-items: center;\n margin: 1vh 1vw;\n}\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: normal;\n align-content: center;\n font-size: 1.2rem;\n width: fit-content;\n}\n.nav-links a.button {\n color: var(--colour-text-background);\n margin: 0 auto;\n font-weight: bold;\n}\n\n\n/* Page Filters */\n#formFilters {\n width: fit-content;\n margin-left: auto;\n margin-right: auto;\n \n}\n#formFilters * {\n font-size: 1rem;\n}\n\n#formFilters .container {\n}\n#formFilters .container-input {\n max-width: fit-content;\n padding: 0 0.5vh;\n}\n#formFilters .container-input:has(.dirty) {\n background-color: var(--colour-accent);\n} \n\n#formFilters .container-input input {\n width: 10vh;\n max-width: 10vh;\n height: 20px;\n}\n/*\n#formFilters .container-input input {\n height: 1.7vh;\n}\n#formFilters .container-input select {\n height: 2vh;\n}\n*/\n\n#formFilters .container-input.filter.active_only {\n width: 8vh;\n}\n#formFilters .container-input.filter.active_only input {\n display: none;\n}\n#formFilters .container-input.filter.active_only svg.active_only {\n height: 25px;\n fill: var(--colour-text-background);\n background-color: var(--colour-accent);\n /* border: 1px solid var(--colour-accent);\n border-radius: 0.5vh; */\n width: 25px;\n}\n#formFilters .container-input.filter.active_only svg.active_only.is_checked {\n fill: var(--colour-accent);\n background-color: var(--colour-text-background);\n}\n#formFilters .container-input.filter.is_not_empty {\n width: 12vh;\n}\n\n/*\n#formFilters button {\n padding: 0.5vh 0.75vh;\n background-color: var(--colour-accent);\n color: var(--colour-primary);\n font-weight: bold;\n border-radius: 0.75vh;\n border: 2px solid var(--colour-primary);\n}\n\n#formFilters button.is_collapsed {\n display: block;\n opacity: 0;\n}\n*/\n\nform.filter button.save, form.filter button.button-cancel {\n margin-top: 0;\n margin-bottom: 0;\n}\nform.filter button.save, form.filter button.button-cancel {\n margin-top: 0;\n margin-bottom: 1px;\n}\n\n/*\n@media screen and (max-width: 400px) {\n .topnav h1 {\n font-size: 16px;\n }\n}\n*/\n\n@media screen and (max-width: 940px) {\n /*\n .hero h1 {\n font-size: 2.5rem;\n }\n */\n .nav-links {\n display: none;\n }\n .topnav {\n justify-content: flex-start;\n align-items: start;\n }\n}","/* In sections */","\n#formFilters {\n padding: 0.5vh 1vw;\n margin-top: 1vh;\n}\n\ntable.table-main {\n overflow-x: auto;\n padding: 1vh 1vw;\n max-width: 88vw; /* min(calc(1vh * 80), calc(1vw * 90)); */\n width: min-content;\n align-items: normal;\n justify-content: normal;\n}\n\ntable.table-main * {\n padding: 0.25vh 0.5vh;\n}\n\ntable.table-main thead {\n max-height: 4vh;\n overflow-y: visible;\n background-color: var(--colour-text-background);\n}\n\ntable.table-main tbody {\n max-height: 75vh;\n overflow-y: auto;\n min-width: fit-content;\n max-width: fit-content;\n overflow-x: visible;\n}\ntable.table-main tbody.is_collapsed {\n display: block;\n}\ntable.table-main:has(tbody > div) tbody {\n}\ntable.table-main tbody > div {\n margin-left: auto;\n margin-right: auto;\n text-align: center;\n justify-content: center;\n justify-items: center;\n justify-self: center;\n align-content: center;\n align-items: center;\n align-self: center;\n position: relative;\n display: block;\n width: 100%; /* min(calc(90vh), calc(70vw)); */\n}\n\ntable.table-main select, \ntable.table-main input:not([type=\"checkbox\"]), \ntable.table-main textarea, \ntable.table-main div {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n height: 100%;\n border: 1px solid var(--colour-accent);\n border-radius: 0.5vh;\n text-align: center;\n background-color: var(--colour-text-background);\n font-size: 16px;\n}\n\ntable.table-main thead tr th, \ntable.table-main tbody tr td {\n max-width: 20vh;\n min-width: 20vh;\n padding: 0 0.5vh;\n}\ntable.table-main tbody tr td {\n height: 3vh;\n /* padding-top: 0.5vh; */\n}\ntable.table-main thead tr th.notes, \ntable.table-main tbody tr td.notes {\n max-width: fit-content;\n}\ntable.table-main tbody tr td:has(.dirty) {\n background-color: var(--colour-primary);\n}\ntable.table-main tbody tr td:has(.dirty) table tr:not(:has(.dirty)) {\n background-color: var(--colour-text-background);\n}\ntable.table-main tbody tr:not(:last-of-type) td {\n padding-bottom: 0.25vh;\n}\ntable.table-main tbody tr td.ddl-preview div {\n cursor: pointer;\n}\ntable.table-main tbody tr td.ddl-preview div,\ntable.table-main tbody tr td.ddl-preview select {\n padding-left: 2vh;\n padding-right: 2vh;\n}\ntable.table-main thead tr th.active, \ntable.table-main tbody tr td.active {\n max-width: 6vh;\n min-width: 6vh;\n}\ntable.table-main thead tr th.active svg.active.add {\n fill: var(--colour-primary);\n background-color: var(--colour-accent);\n border: 2px solid var(--colour-accent);\n padding: 0;\n border-radius: 1vh;\n}\ntable.table-main tbody tr td.active svg.active.add {\n fill: var(--colour-primary);\n}\ntable.table-main tbody tr td.active svg.active.delete {\n fill: var(--colour-error);\n}\ntable.table-main tbody tr td.display_order, \ntable.table-main thead tr th.display_order {\n max-width: 5vh;\n min-width: 5vh;\n}\n\n#container-template-elements {\n display: none;\n}\n\n\n@media screen and (max-width: 850px) {\n}\n@media screen and (max-width: 400px) {\n #formFilters input[type=\"text\"],\n #formFilters select {\n width: 15vh;\n /* height: 3vh; */\n }\n .topnav .container.company-name {\n margin: 0 auto;\n min-width: 40vw;\n max-width: 64vw;\n }\n .company-name {\n font-size: 1.2rem;\n }\n table.table-main {\n max-height: 61vh;\n }\n table.table-main thead {\n font-size: 0.8rem;\n }\n table.table-main tbody {\n max-height: 53vh;\n }\n}","/* Default */\n:root {\n /* Claude dark blue / grey theme */\n --colour-accent: #C77DFF;\n --colour-error: red;\n --colour-error-accent: #fc8181;\n --colour-error-highlight: #fff5f5;\n --colour-error-title: #c53030;\n --colour-page-background: #E0AAFF;\n --colour-page-background-1: #F5ECFE;\n --colour-page-background-2: #FAE0E2;\n --colour-primary: #240046;\n --colour-secondary: #3C096C;\n --colour-success: #38a169;\n --colour-success-highlight: #f0fff4;\n --colour-success-title: #16a34a;\n --colour-text: #10002B;\n --colour-text-background: white;\n --colour-text-link-unvisited: #0000EE;\n --colour-text-link-visited: #551A8B;\n}\n\n/*\n--c_purple_darker: #310055;\n--c_purple_dark: #4A0A77;\n--c_purple: #6818A5;\n--c_purple_light: #CBAFFE;\n--c_purple_lighter: #F5ECFE;\n\n--c_blue: #0044FF;\n--c_blue_pastel: #B8E0FF;\n--c_blue_light: #73E8FF;\n--c_blue_dark: #003ADB;\n/* --c_red: * /\n--c-red: #FF0000;\n--c_red_pastel: #FAE0E2;\n--c_red_lighter: #FAE0E2;\n}\n*/"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/docs/Demo_Simple_1.osp b/static/docs/Demo_Simple_1.osp
new file mode 100644
index 0000000..12d9355
--- /dev/null
+++ b/static/docs/Demo_Simple_1.osp
@@ -0,0 +1,3898 @@
+{
+ "id": "LHLLH6GKJA",
+ "fps": {
+ "num": 30,
+ "den": 1
+ },
+ "display_ratio": {
+ "num": 16,
+ "den": 9
+ },
+ "pixel_ratio": {
+ "num": 1,
+ "den": 1
+ },
+ "width": 1280,
+ "height": 720,
+ "sample_rate": 44100,
+ "channels": 2,
+ "channel_layout": 3,
+ "settings": {},
+ "clips": [
+ {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ },
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 19.0,
+ "Y": 1.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 282.0,
+ "Y": 1.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 301.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "anchor": 0,
+ "channel_filter": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "channel_mapping": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_height": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_width": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "display": 0,
+ "duration": 3600.0,
+ "effects": [],
+ "end": 10.0,
+ "gravity": 4,
+ "has_audio": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "has_video": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "id": "08HVJ63DLZ",
+ "layer": 5000000,
+ "location_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "location_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "mixing": 0,
+ "perspective_c1_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c1_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "position": 0.0,
+ "reader": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-commands_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920
+ },
+ "rotation": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale": 1,
+ "scale_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "start": 0.0,
+ "time": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "volume": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "wave_color": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "blue": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "green": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 123.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "red": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ }
+ },
+ "waveform": false,
+ "file_id": "39D0KB3R4H",
+ "title": "fetch-metrics-page-commands_v2a.png",
+ "image": "thumbnail/39D0KB3R4H.png"
+ }
+ ],
+ "effects": [],
+ "export_path": "",
+ "import_path": "/home/teddy/Documents/Programming/Web/dog_training/dog_training/static/images",
+ "files": [
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-assessment_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "FYI2MNJHU1",
+ "image": "thumbnail/FYI2MNJHU1.png"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-commands_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "39D0KB3R4H",
+ "image": "thumbnail/39D0KB3R4H.png"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-report-line-command-progress-v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "UQ6HZFXCWV",
+ "image": "thumbnail/UQ6HZFXCWV.png"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-report-radar-command-category-progress-v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "48JLIRLY68",
+ "image": "thumbnail/48JLIRLY68.png"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "@assets/title/TitleFileName-1.svg",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "7U998C191W",
+ "image": "thumbnail/7U998C191W.png"
+ }
+ ],
+ "duration": 300,
+ "scale": 15,
+ "tick_pixels": 100,
+ "playhead_position": 0,
+ "profile": "HD 720p 30 fps",
+ "layers": [
+ {
+ "id": "L1",
+ "label": "",
+ "number": 1000000,
+ "y": 0,
+ "lock": false
+ },
+ {
+ "id": "L2",
+ "label": "",
+ "number": 2000000,
+ "y": 0,
+ "lock": false
+ },
+ {
+ "id": "L3",
+ "label": "",
+ "number": 3000000,
+ "y": 0,
+ "lock": false
+ },
+ {
+ "id": "L4",
+ "label": "",
+ "number": 4000000,
+ "y": 0,
+ "lock": false
+ },
+ {
+ "id": "L5",
+ "label": "",
+ "number": 5000000,
+ "y": 0,
+ "lock": false
+ }
+ ],
+ "markers": [],
+ "progress": [],
+ "history": {
+ "undo": [
+ {
+ "type": "insert",
+ "key": [
+ "files"
+ ],
+ "value": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-assessment_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "FYI2MNJHU1",
+ "image": "thumbnail/FYI2MNJHU1.png"
+ },
+ "partial": false,
+ "old_values": []
+ },
+ {
+ "type": "insert",
+ "key": [
+ "files"
+ ],
+ "value": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-commands_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "39D0KB3R4H",
+ "image": "thumbnail/39D0KB3R4H.png"
+ },
+ "partial": false,
+ "old_values": [
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-assessment_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "FYI2MNJHU1"
+ }
+ ]
+ },
+ {
+ "type": "insert",
+ "key": [
+ "files"
+ ],
+ "value": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-report-line-command-progress-v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "UQ6HZFXCWV",
+ "image": "thumbnail/UQ6HZFXCWV.png"
+ },
+ "partial": false,
+ "old_values": [
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-assessment_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "FYI2MNJHU1"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-commands_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "39D0KB3R4H"
+ }
+ ]
+ },
+ {
+ "type": "insert",
+ "key": [
+ "files"
+ ],
+ "value": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-report-radar-command-category-progress-v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "48JLIRLY68",
+ "image": "thumbnail/48JLIRLY68.png"
+ },
+ "partial": false,
+ "old_values": [
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-assessment_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "FYI2MNJHU1"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-commands_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "39D0KB3R4H"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-report-line-command-progress-v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "UQ6HZFXCWV"
+ }
+ ]
+ },
+ {
+ "type": "insert",
+ "key": [
+ "clips"
+ ],
+ "value": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ },
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 19.0,
+ "Y": 1.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 282.0,
+ "Y": 1.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 301.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "anchor": 0,
+ "channel_filter": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "channel_mapping": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_height": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_width": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "display": 0,
+ "duration": 3600.0,
+ "effects": [],
+ "end": 10.0,
+ "gravity": 4,
+ "has_audio": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "has_video": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "id": "08HVJ63DLZ",
+ "layer": 5000000,
+ "location_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "location_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "mixing": 0,
+ "perspective_c1_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c1_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "position": 0.0,
+ "reader": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-commands_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920
+ },
+ "rotation": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale": 1,
+ "scale_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "start": 0.0,
+ "time": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "volume": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "wave_color": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "blue": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "green": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 123.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "red": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ }
+ },
+ "waveform": false,
+ "file_id": "39D0KB3R4H",
+ "title": "fetch-metrics-page-commands_v2a.png",
+ "image": "thumbnail/39D0KB3R4H.png"
+ },
+ "partial": false,
+ "old_values": []
+ },
+ {
+ "type": "insert",
+ "key": [
+ "files"
+ ],
+ "value": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "@assets/title/TitleFileName-1.svg",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "7U998C191W"
+ },
+ "partial": false,
+ "old_values": [
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-assessment_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "FYI2MNJHU1",
+ "image": "thumbnail/FYI2MNJHU1.png"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-commands_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "39D0KB3R4H",
+ "image": "thumbnail/39D0KB3R4H.png"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-report-line-command-progress-v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "UQ6HZFXCWV",
+ "image": "thumbnail/UQ6HZFXCWV.png"
+ },
+ {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-report-radar-command-category-progress-v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920,
+ "media_type": "image",
+ "id": "48JLIRLY68",
+ "image": "thumbnail/48JLIRLY68.png"
+ }
+ ]
+ },
+ {
+ "type": "insert",
+ "key": [
+ "clips"
+ ],
+ "value": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "anchor": 0,
+ "channel_filter": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "channel_mapping": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_height": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_width": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "display": 0,
+ "duration": 3600.0,
+ "effects": [],
+ "end": 10,
+ "gravity": 4,
+ "has_audio": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "has_video": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "id": "1K87KVEWQ9",
+ "layer": 4000000,
+ "location_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "location_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "mixing": 0,
+ "perspective_c1_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c1_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "position": 0,
+ "reader": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "@assets/title/TitleFileName-1.svg",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920
+ },
+ "rotation": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale": 1,
+ "scale_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "start": 0,
+ "time": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "volume": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "wave_color": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "blue": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "green": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 123.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "red": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ }
+ },
+ "waveform": false,
+ "file_id": "7U998C191W",
+ "title": "TitleFileName-1.svg"
+ },
+ "partial": false,
+ "old_values": [
+ {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ },
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 19.0,
+ "Y": 1.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 282.0,
+ "Y": 1.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ },
+ {
+ "co": {
+ "X": 301.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "anchor": 0,
+ "channel_filter": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "channel_mapping": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_height": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_width": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "display": 0,
+ "duration": 3600.0,
+ "effects": [],
+ "end": 10.0,
+ "gravity": 4,
+ "has_audio": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "has_video": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "id": "08HVJ63DLZ",
+ "layer": 5000000,
+ "location_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "location_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "mixing": 0,
+ "perspective_c1_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c1_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "position": 0.0,
+ "reader": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "../images/fetch-metrics-page-commands_v2a.png",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920
+ },
+ "rotation": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale": 1,
+ "scale_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "start": 0.0,
+ "time": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "volume": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "wave_color": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "blue": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "green": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 123.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "red": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ }
+ },
+ "waveform": false,
+ "file_id": "39D0KB3R4H",
+ "title": "fetch-metrics-page-commands_v2a.png",
+ "image": "thumbnail/39D0KB3R4H.png"
+ }
+ ]
+ },
+ {
+ "type": "update",
+ "key": [
+ "clips",
+ {
+ "id": "1K87KVEWQ9"
+ }
+ ],
+ "value": {
+ "id": "1K87KVEWQ9",
+ "layer": 4000000,
+ "position": 0,
+ "start": 0,
+ "end": 10
+ },
+ "partial": false,
+ "old_values": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "anchor": 0,
+ "channel_filter": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "channel_mapping": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_height": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_width": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "display": 0,
+ "duration": 3600.0,
+ "effects": [],
+ "end": 10.0,
+ "gravity": 4,
+ "has_audio": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "has_video": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "id": "1K87KVEWQ9",
+ "layer": 5000000,
+ "location_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "location_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "mixing": 0,
+ "perspective_c1_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c1_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "position": 0.0,
+ "reader": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "@assets/title/TitleFileName-1.svg",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920
+ },
+ "rotation": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale": 1,
+ "scale_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "start": 0.0,
+ "time": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "volume": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "wave_color": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "blue": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "green": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 123.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "red": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ }
+ },
+ "waveform": false,
+ "file_id": "7U998C191W",
+ "title": "TitleFileName-1.svg"
+ }
+ },
+ {
+ "type": "delete",
+ "key": [
+ "clips",
+ {
+ "id": "1K87KVEWQ9"
+ }
+ ],
+ "value": null,
+ "partial": false,
+ "old_values": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "anchor": 0,
+ "channel_filter": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "channel_mapping": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_height": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_width": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "crop_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "display": 0,
+ "duration": 3600.0,
+ "effects": [],
+ "end": 10,
+ "gravity": 4,
+ "has_audio": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "has_video": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "id": "1K87KVEWQ9",
+ "layer": 4000000,
+ "location_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "location_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "mixing": 0,
+ "perspective_c1_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c1_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c2_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c3_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "perspective_c4_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": -1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "position": 0,
+ "reader": {
+ "acodec": "",
+ "audio_bit_rate": 0,
+ "audio_stream_index": -1,
+ "audio_timebase": {
+ "den": 1,
+ "num": 1
+ },
+ "channel_layout": 4,
+ "channels": 0,
+ "display_ratio": {
+ "den": 9,
+ "num": 16
+ },
+ "duration": 3600.0,
+ "file_size": "8294400",
+ "fps": {
+ "den": 1,
+ "num": 30
+ },
+ "has_audio": false,
+ "has_single_image": true,
+ "has_video": true,
+ "height": 1080,
+ "interlaced_frame": false,
+ "metadata": {},
+ "path": "@assets/title/TitleFileName-1.svg",
+ "pixel_format": -1,
+ "pixel_ratio": {
+ "den": 1,
+ "num": 1
+ },
+ "sample_rate": 0,
+ "top_field_first": true,
+ "type": "QtImageReader",
+ "vcodec": "",
+ "video_bit_rate": 0,
+ "video_length": "108000",
+ "video_stream_index": -1,
+ "video_timebase": {
+ "den": 30,
+ "num": 1
+ },
+ "width": 1920
+ },
+ "rotation": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale": 1,
+ "scale_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "scale_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_x": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "shear_y": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "start": 0,
+ "time": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "volume": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 1.0
+ },
+ "interpolation": 2
+ }
+ ]
+ },
+ "wave_color": {
+ "alpha": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "blue": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 255.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "green": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 123.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ },
+ "red": {
+ "Points": [
+ {
+ "co": {
+ "X": 1.0,
+ "Y": 0.0
+ },
+ "handle_left": {
+ "X": 0.5,
+ "Y": 1.0
+ },
+ "handle_right": {
+ "X": 0.5,
+ "Y": 0.0
+ },
+ "handle_type": 0,
+ "interpolation": 0
+ }
+ ]
+ }
+ },
+ "waveform": false,
+ "file_id": "7U998C191W",
+ "title": "TitleFileName-1.svg"
+ }
+ }
+ ],
+ "redo": []
+ },
+ "version": {
+ "openshot-qt": "2.5.1",
+ "libopenshot": "0.2.5"
+ }
+}
\ No newline at end of file
diff --git a/static/docs/Demo_Simple_1_assets/thumbnail/39D0KB3R4H.png b/static/docs/Demo_Simple_1_assets/thumbnail/39D0KB3R4H.png
new file mode 100644
index 0000000..ffc3cff
Binary files /dev/null and b/static/docs/Demo_Simple_1_assets/thumbnail/39D0KB3R4H.png differ
diff --git a/static/docs/Demo_Simple_1_assets/thumbnail/48JLIRLY68.png b/static/docs/Demo_Simple_1_assets/thumbnail/48JLIRLY68.png
new file mode 100644
index 0000000..874e181
Binary files /dev/null and b/static/docs/Demo_Simple_1_assets/thumbnail/48JLIRLY68.png differ
diff --git a/static/docs/Demo_Simple_1_assets/thumbnail/7U998C191W.png b/static/docs/Demo_Simple_1_assets/thumbnail/7U998C191W.png
new file mode 100644
index 0000000..3003b42
Binary files /dev/null and b/static/docs/Demo_Simple_1_assets/thumbnail/7U998C191W.png differ
diff --git a/static/docs/Demo_Simple_1_assets/thumbnail/FYI2MNJHU1.png b/static/docs/Demo_Simple_1_assets/thumbnail/FYI2MNJHU1.png
new file mode 100644
index 0000000..b69034a
Binary files /dev/null and b/static/docs/Demo_Simple_1_assets/thumbnail/FYI2MNJHU1.png differ
diff --git a/static/docs/Demo_Simple_1_assets/thumbnail/UQ6HZFXCWV.png b/static/docs/Demo_Simple_1_assets/thumbnail/UQ6HZFXCWV.png
new file mode 100644
index 0000000..6696d02
Binary files /dev/null and b/static/docs/Demo_Simple_1_assets/thumbnail/UQ6HZFXCWV.png differ
diff --git a/static/docs/Demo_Simple_1_assets/title/TitleFileName-1.svg b/static/docs/Demo_Simple_1_assets/title/TitleFileName-1.svg
new file mode 100644
index 0000000..9fa8053
--- /dev/null
+++ b/static/docs/Demo_Simple_1_assets/title/TitleFileName-1.svg
@@ -0,0 +1,84 @@
+
\ No newline at end of file
diff --git a/static/docs/fetch-metrics-demo-video-scenes.xcf b/static/docs/fetch-metrics-demo-video-scenes.xcf
new file mode 100644
index 0000000..ccd9df8
Binary files /dev/null and b/static/docs/fetch-metrics-demo-video-scenes.xcf differ
diff --git a/static/docs/fetch-metrics-logo-and-company-name-curved-0.5.xcf b/static/docs/fetch-metrics-logo-and-company-name-curved-0.5.xcf
index b465064..e476dc2 100644
Binary files a/static/docs/fetch-metrics-logo-and-company-name-curved-0.5.xcf and b/static/docs/fetch-metrics-logo-and-company-name-curved-0.5.xcf differ
diff --git a/static/docs/sitemap.xml b/static/docs/sitemap.xml
new file mode 100644
index 0000000..5084004
--- /dev/null
+++ b/static/docs/sitemap.xml
@@ -0,0 +1,47 @@
+
+