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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + Tired of lost training notes? + + \ 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 @@ + + + + + https://fetch-metrics.co.uk/ + 2025-01-01 + daily + 1.0 + + + https://fetch-metrics.co.uk/contact + 2025-01-01 + monthly + 0.8 + + + + https://fetch-metrics.co.uk/license + 2025-01-01 + monthly + 0.8 + + + https://fetch-metrics.co.uk/accessibility-statement + 2025-01-01 + monthly + 0.8 + + + https://fetch-metrics.co.uk/accessibility-report + 2025-01-01 + monthly + 0.8 + + + https://fetch-metrics.co.uk/retention-schedule + 2025-01-01 + monthly + 0.8 + + + https://fetch-metrics.co.uk/privacy-policy + 2025-01-01 + monthly + 0.8 + + \ No newline at end of file diff --git a/static/images/fetch-metrics-logo-and-company-name-curved-0.5.ico b/static/images/fetch-metrics-logo-and-company-name-curved-0.5.ico new file mode 100644 index 0000000..379d7b0 Binary files /dev/null and b/static/images/fetch-metrics-logo-and-company-name-curved-0.5.ico differ diff --git a/static/images/fetch-metrics-logo.ico b/static/images/fetch-metrics-logo.ico new file mode 100644 index 0000000..8d71047 Binary files /dev/null and b/static/images/fetch-metrics-logo.ico differ diff --git a/static/images/fetch-metrics-page-assessment.webp b/static/images/fetch-metrics-page-assessment-v1a.webp similarity index 100% rename from static/images/fetch-metrics-page-assessment.webp rename to static/images/fetch-metrics-page-assessment-v1a.webp diff --git a/static/images/fetch-metrics-page-assessment-v2a-long.png b/static/images/fetch-metrics-page-assessment-v2a-long.png new file mode 100644 index 0000000..468b9d2 Binary files /dev/null and b/static/images/fetch-metrics-page-assessment-v2a-long.png differ diff --git a/static/images/fetch-metrics-page-assessment-v2a.webp b/static/images/fetch-metrics-page-assessment-v2a.webp new file mode 100644 index 0000000..a2968ea Binary files /dev/null and b/static/images/fetch-metrics-page-assessment-v2a.webp differ diff --git a/static/images/fetch-metrics-page-assessment_v2a.png b/static/images/fetch-metrics-page-assessment_v2a.png new file mode 100644 index 0000000..9ea31d9 Binary files /dev/null and b/static/images/fetch-metrics-page-assessment_v2a.png differ diff --git a/static/images/fetch-metrics-page-assessment_v2a.webp b/static/images/fetch-metrics-page-assessment_v2a.webp new file mode 100644 index 0000000..fb7c5a1 Binary files /dev/null and b/static/images/fetch-metrics-page-assessment_v2a.webp differ diff --git a/static/images/fetch-metrics-page-assessment_v2a.xcf b/static/images/fetch-metrics-page-assessment_v2a.xcf new file mode 100644 index 0000000..e739db0 Binary files /dev/null and b/static/images/fetch-metrics-page-assessment_v2a.xcf differ diff --git a/static/images/fetch-metrics-page-commands-FQ.png b/static/images/fetch-metrics-page-commands-FQ.png new file mode 100644 index 0000000..ded7348 Binary files /dev/null and b/static/images/fetch-metrics-page-commands-FQ.png differ diff --git a/static/images/fetch-metrics-page-commands.webp b/static/images/fetch-metrics-page-commands-v1a.webp similarity index 100% rename from static/images/fetch-metrics-page-commands.webp rename to static/images/fetch-metrics-page-commands-v1a.webp diff --git a/static/images/fetch-metrics-page-commands-v2a-long.png b/static/images/fetch-metrics-page-commands-v2a-long.png new file mode 100644 index 0000000..4825213 Binary files /dev/null and b/static/images/fetch-metrics-page-commands-v2a-long.png differ diff --git a/static/images/fetch-metrics-page-commands_v2a.png b/static/images/fetch-metrics-page-commands_v2a.png new file mode 100644 index 0000000..f98584c Binary files /dev/null and b/static/images/fetch-metrics-page-commands_v2a.png differ diff --git a/static/images/fetch-metrics-page-commands_v2a.webp b/static/images/fetch-metrics-page-commands_v2a.webp new file mode 100644 index 0000000..c872c06 Binary files /dev/null and b/static/images/fetch-metrics-page-commands_v2a.webp differ diff --git a/static/images/fetch-metrics-page-commands_v2a.xcf b/static/images/fetch-metrics-page-commands_v2a.xcf new file mode 100644 index 0000000..b2a2b08 Binary files /dev/null and b/static/images/fetch-metrics-page-commands_v2a.xcf differ diff --git a/static/images/fetch-metrics-report-line-command-progress.webp b/static/images/fetch-metrics-report-line-command-progress-v1a.webp similarity index 100% rename from static/images/fetch-metrics-report-line-command-progress.webp rename to static/images/fetch-metrics-report-line-command-progress-v1a.webp diff --git a/static/images/fetch-metrics-report-line-command-progress-v2a-long.png b/static/images/fetch-metrics-report-line-command-progress-v2a-long.png new file mode 100644 index 0000000..4b74537 Binary files /dev/null and b/static/images/fetch-metrics-report-line-command-progress-v2a-long.png differ diff --git a/static/images/fetch-metrics-report-line-command-progress-v2a.png b/static/images/fetch-metrics-report-line-command-progress-v2a.png new file mode 100644 index 0000000..73a505f Binary files /dev/null and b/static/images/fetch-metrics-report-line-command-progress-v2a.png differ diff --git a/static/images/fetch-metrics-report-line-command-progress-v2a.webp b/static/images/fetch-metrics-report-line-command-progress-v2a.webp new file mode 100644 index 0000000..7c21bf9 Binary files /dev/null and b/static/images/fetch-metrics-report-line-command-progress-v2a.webp differ diff --git a/static/images/fetch-metrics-report-line-command-progress-v2a.xcf b/static/images/fetch-metrics-report-line-command-progress-v2a.xcf new file mode 100644 index 0000000..8e5343f Binary files /dev/null and b/static/images/fetch-metrics-report-line-command-progress-v2a.xcf differ diff --git a/static/images/fetch-metrics-report-radar-command-category-progress-v2a-long.png b/static/images/fetch-metrics-report-radar-command-category-progress-v2a-long.png new file mode 100644 index 0000000..5420ac1 Binary files /dev/null and b/static/images/fetch-metrics-report-radar-command-category-progress-v2a-long.png differ diff --git a/static/images/fetch-metrics-report-radar-command-category-progress-v2a.png b/static/images/fetch-metrics-report-radar-command-category-progress-v2a.png new file mode 100644 index 0000000..a1dd775 Binary files /dev/null and b/static/images/fetch-metrics-report-radar-command-category-progress-v2a.png differ diff --git a/static/images/fetch-metrics-report-radar-command-category-progress-v2a.webp b/static/images/fetch-metrics-report-radar-command-category-progress-v2a.webp new file mode 100644 index 0000000..d8f8fba Binary files /dev/null and b/static/images/fetch-metrics-report-radar-command-category-progress-v2a.webp differ diff --git a/static/images/fetch-metrics-report-radar-command-category-progress-v2a.xcf b/static/images/fetch-metrics-report-radar-command-category-progress-v2a.xcf new file mode 100644 index 0000000..9513a11 Binary files /dev/null and b/static/images/fetch-metrics-report-radar-command-category-progress-v2a.xcf differ diff --git a/static/images/fetch-metrics-report-radar-command-mastery.webp b/static/images/fetch-metrics-report-radar-command-mastery-v1a.webp similarity index 100% rename from static/images/fetch-metrics-report-radar-command-mastery.webp rename to static/images/fetch-metrics-report-radar-command-mastery-v1a.webp diff --git a/templates/components/dog/_preview_table_assessment_response.html b/templates/components/dog/_preview_table_assessment_response.html index af4606e..dd81d35 100644 --- a/templates/components/dog/_preview_table_assessment_response.html +++ b/templates/components/dog/_preview_table_assessment_response.html @@ -5,7 +5,7 @@ Add response {% else %} {% for assessment_response_preview in assessment_response_previews %} -
{{ assessment_response_preview.response_quality_metric.name }} - {{ assessment_response_preview.obedience_level.name }}
+
{{ assessment_response_preview.response_quality_metric.name }} - {{ assessment_response_preview.obedience_level.name }} - {{ assessment_response_preview.value_measured }} {{ assessment_response_preview.response_quality_metric.unit_measurement.symbol }}
{% endfor %} {% endif %} \ No newline at end of file diff --git a/templates/layouts/_shared_head.html b/templates/layouts/_shared_head.html index 49348fb..873bd9d 100644 --- a/templates/layouts/_shared_head.html +++ b/templates/layouts/_shared_head.html @@ -4,6 +4,13 @@ + +