Files
gsinghpal 41d0908ade changes
2026-04-24 21:04:38 -04:00

257 lines
299 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>graphify - /Users/gurpreet/Github/Odoo-Modules/fusion_tasks/graphify-out/graph.html</title>
<script src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"></script>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { background: #0f0f1a; color: #e0e0e0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; display: flex; height: 100vh; overflow: hidden; }
#graph { flex: 1; }
#sidebar { width: 280px; background: #1a1a2e; border-left: 1px solid #2a2a4e; display: flex; flex-direction: column; overflow: hidden; }
#search-wrap { padding: 12px; border-bottom: 1px solid #2a2a4e; }
#search { width: 100%; background: #0f0f1a; border: 1px solid #3a3a5e; color: #e0e0e0; padding: 7px 10px; border-radius: 6px; font-size: 13px; outline: none; }
#search:focus { border-color: #4E79A7; }
#search-results { max-height: 140px; overflow-y: auto; padding: 4px 12px; border-bottom: 1px solid #2a2a4e; display: none; }
.search-item { padding: 4px 6px; cursor: pointer; border-radius: 4px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.search-item:hover { background: #2a2a4e; }
#info-panel { padding: 14px; border-bottom: 1px solid #2a2a4e; min-height: 140px; }
#info-panel h3 { font-size: 13px; color: #aaa; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; }
#info-content { font-size: 13px; color: #ccc; line-height: 1.6; }
#info-content .field { margin-bottom: 5px; }
#info-content .field b { color: #e0e0e0; }
#info-content .empty { color: #555; font-style: italic; }
.neighbor-link { display: block; padding: 2px 6px; margin: 2px 0; border-radius: 3px; cursor: pointer; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid #333; }
.neighbor-link:hover { background: #2a2a4e; }
#neighbors-list { max-height: 160px; overflow-y: auto; margin-top: 4px; }
#legend-wrap { flex: 1; overflow-y: auto; padding: 12px; }
#legend-wrap h3 { font-size: 13px; color: #aaa; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.05em; }
.legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; cursor: pointer; border-radius: 4px; font-size: 12px; }
.legend-item:hover { background: #2a2a4e; padding-left: 4px; }
.legend-item.dimmed { opacity: 0.35; }
.legend-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
.legend-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.legend-count { color: #666; font-size: 11px; }
#stats { padding: 10px 14px; border-top: 1px solid #2a2a4e; font-size: 11px; color: #555; }
</style>
</head>
<body>
<div id="graph"></div>
<div id="sidebar">
<div id="search-wrap">
<input id="search" type="text" placeholder="Search nodes..." autocomplete="off">
<div id="search-results"></div>
</div>
<div id="info-panel">
<h3>Node Info</h3>
<div id="info-content"><span class="empty">Click a node to inspect it</span></div>
</div>
<div id="legend-wrap">
<h3>Communities</h3>
<div id="legend"></div>
</div>
<div id="stats">320 nodes &middot; 505 edges &middot; 47 communities</div>
</div>
<script>
const RAW_NODES = [{"id": "users_gurpreet_github_odoo_modules_fusion_tasks_init_py", "label": "__init__.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/__init__.py", "file_type": "code", "degree": 3}, {"id": "init_fusion_tasks_post_init", "label": "_fusion_tasks_post_init()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_fusion_tasks_post_init()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/__init__.py", "file_type": "code", "degree": 3}, {"id": "init_rationale_9", "label": "Post-install hook for fusion_tasks. 1. Sets default ICP values (upsert - sa", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Post-install hook for fusion_tasks. 1. Sets default ICP values (upsert - sa", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_manifest_py", "label": "__manifest__.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__manifest__.py", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/__manifest__.py", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_location_py", "label": "technician_location.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "technician_location.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_location.py", "file_type": "code", "degree": 4}, {"id": "technician_location_fusiontechnicianlocation", "label": "FusionTechnicianLocation", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionTechnicianLocation", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_location.py", "file_type": "code", "degree": 1}, {"id": "technician_location_log_location", "label": "log_location()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "log_location()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_location.py", "file_type": "code", "degree": 2}, {"id": "technician_location_get_latest_locations", "label": "get_latest_locations()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "get_latest_locations()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_location.py", "file_type": "code", "degree": 2}, {"id": "technician_location_cron_cleanup_old_locations", "label": "_cron_cleanup_old_locations()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_cron_cleanup_old_locations()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_location.py", "file_type": "code", "degree": 1}, {"id": "technician_location_rationale_60", "label": "Log the current user's location. Called from portal JS.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Log the current user&#x27;s location. Called from portal JS.", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_location.py", "file_type": "rationale", "degree": 0}, {"id": "technician_location_rationale_71", "label": "Get the most recent location for each technician (for map view). Includ", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the most recent location for each technician (for map view). Includ", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_location.py", "file_type": "rationale", "degree": 0}, {"id": "technician_location_rationale_105", "label": "Remove location logs based on configurable retention setting. Setting (", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Remove location logs based on configurable retention setting. Setting (", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_location.py", "file_type": "rationale", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_init_py", "label": "__init__.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_company_py", "label": "res_company.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "res_company.py", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_company.py", "file_type": "code", "degree": 1}, {"id": "res_company_rescompany", "label": "ResCompany", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ResCompany", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_company.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_push_subscription_py", "label": "push_subscription.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "push_subscription.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/push_subscription.py", "file_type": "code", "degree": 2}, {"id": "push_subscription_fusionpushsubscription", "label": "FusionPushSubscription", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionPushSubscription", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/push_subscription.py", "file_type": "code", "degree": 1}, {"id": "push_subscription_register_subscription", "label": "register_subscription()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "register_subscription()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/push_subscription.py", "file_type": "code", "degree": 3}, {"id": "push_subscription_rationale_56", "label": "Register or update a push subscription.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Register or update a push subscription.", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/push_subscription.py", "file_type": "rationale", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_users_py", "label": "res_users.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "res_users.py", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_users.py", "file_type": "code", "degree": 1}, {"id": "res_users_resusers", "label": "ResUsers", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ResUsers", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_users.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_config_settings_py", "label": "res_config_settings.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "res_config_settings.py", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_config_settings.py", "file_type": "code", "degree": 1}, {"id": "res_config_settings_resconfigsettings", "label": "ResConfigSettings", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ResConfigSettings", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_config_settings.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "label": "technician_task.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 24.5, "font": {"size": 12, "color": "#ffffff"}, "title": "technician_task.py", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 32}, {"id": "technician_task_fusiontechniciantask", "label": "FusionTechnicianTask", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "FusionTechnicianTask", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 66}, {"id": "technician_task_fusiontechniciantask_compute_display_name", "label": "._compute_display_name()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._compute_display_name()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_get_store_hours", "label": "._get_store_hours()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "._get_store_hours()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 14}, {"id": "technician_task_compute_is_shadow", "label": "_compute_is_shadow()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_is_shadow()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_compute_client_display", "label": "_compute_client_display()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_client_display()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_compute_all_technician_ids", "label": "_compute_all_technician_ids()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_all_technician_ids()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_fusiontechniciantask_get_calendar_busy_intervals", "label": "._get_calendar_busy_intervals()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_calendar_busy_intervals()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 5}, {"id": "technician_task_fusiontechniciantask_find_next_available_slot", "label": "._find_next_available_slot()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._find_next_available_slot()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_fusiontechniciantask_get_available_gaps", "label": "._get_available_gaps()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_available_gaps()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_get_time_selection", "label": "_get_time_selection()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_get_time_selection()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_compute_time_12h", "label": "_compute_time_12h()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_time_12h()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_fusiontechniciantask_inverse_time_start_12h", "label": "._inverse_time_start_12h()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._inverse_time_start_12h()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_fusiontechniciantask_inverse_time_end_12h", "label": "._inverse_time_end_12h()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._inverse_time_end_12h()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_compute_time_displays", "label": "_compute_time_displays()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_time_displays()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_onchange_task_type_duration", "label": "_onchange_task_type_duration()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "_onchange_task_type_duration()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_onchange_compute_end_time", "label": "_onchange_compute_end_time()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_onchange_compute_end_time()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_compute_datetimes", "label": "_compute_datetimes()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_datetimes()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_inverse_datetime_start", "label": "._inverse_datetime_start()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._inverse_datetime_start()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_inverse_datetime_end", "label": "._inverse_datetime_end()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._inverse_datetime_end()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_compute_schedule_info", "label": "_compute_schedule_info()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_schedule_info()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_compute_prev_task_summary", "label": "_compute_prev_task_summary()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_prev_task_summary()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_quick_travel_time", "label": "._quick_travel_time()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._quick_travel_time()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 5}, {"id": "technician_task_compute_color", "label": "_compute_color()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_color()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_compute_address_display", "label": "_compute_address_display()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_address_display()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_onchange_is_in_store", "label": "_onchange_is_in_store()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "_onchange_is_in_store()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_onchange_partner_id", "label": "_onchange_partner_id()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_onchange_partner_id()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_fusiontechniciantask_fill_address_from_partner", "label": "._fill_address_from_partner()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._fill_address_from_partner()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_check_address_required", "label": "_check_address_required()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_check_address_required()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 1}, {"id": "technician_task_check_no_overlap", "label": "_check_no_overlap()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "_check_no_overlap()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_onchange_technician_date_autoset", "label": "_onchange_technician_date_autoset()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_onchange_technician_date_autoset()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_snap_if_overlap", "label": "._snap_if_overlap()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._snap_if_overlap()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 5}, {"id": "technician_task_fusiontechniciantask_snap_to_quarter", "label": "._snap_to_quarter()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._snap_to_quarter()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_default_get", "label": "default_get()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "default_get()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_create", "label": "create()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "create()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 10}, {"id": "technician_task_fusiontechniciantask_create_vals_fill", "label": "._create_vals_fill()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._create_vals_fill()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_on_create_post_actions", "label": "._on_create_post_actions()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._on_create_post_actions()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_write", "label": ".write()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 18.2, "font": {"size": 12, "color": "#ffffff"}, "title": ".write()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 18}, {"id": "technician_task_fusiontechniciantask_sync_calendar_event", "label": "._sync_calendar_event()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._sync_calendar_event()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 5}, {"id": "technician_task_fill_address_vals", "label": "_fill_address_vals()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_fill_address_vals()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_post_task_created_to_linked_order", "label": "._post_task_created_to_linked_order()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._post_task_created_to_linked_order()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_mark_sale_order_ready_for_delivery", "label": "._mark_sale_order_ready_for_delivery()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._mark_sale_order_ready_for_delivery()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_recalculate_day_travel_chains", "label": "._recalculate_day_travel_chains()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._recalculate_day_travel_chains()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_get_technician_start_address", "label": "._get_technician_start_address()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_technician_start_address()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_geocode_address_string", "label": "._geocode_address_string()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._geocode_address_string()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 5}, {"id": "technician_task_fusiontechniciantask_get_technician_start_coords", "label": "._get_technician_start_coords()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_technician_start_coords()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_fusiontechniciantask_recalculate_combos_travel", "label": "._recalculate_combos_travel()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._recalculate_combos_travel()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 12}, {"id": "technician_task_fusiontechniciantask_get_tech_current_location", "label": "._get_tech_current_location()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_tech_current_location()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 7}, {"id": "technician_task_fusiontechniciantask_recalculate_travel_from_current_location", "label": "._recalculate_travel_from_current_location()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._recalculate_travel_from_current_location()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_fusiontechniciantask_recalculate_remaining_tasks_travel", "label": "._recalculate_remaining_tasks_travel()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._recalculate_remaining_tasks_travel()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_fusiontechniciantask_check_previous_tasks_completed", "label": "._check_previous_tasks_completed()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._check_previous_tasks_completed()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_write_action_location", "label": "._write_action_location()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._write_action_location()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_fusiontechniciantask_action_start_en_route", "label": ".action_start_en_route()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_start_en_route()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 9}, {"id": "technician_task_fusiontechniciantask_action_start_task", "label": ".action_start_task()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_start_task()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 5}, {"id": "technician_task_fusiontechniciantask_action_complete_task", "label": ".action_complete_task()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".action_complete_task()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 10}, {"id": "technician_task_fusiontechniciantask_check_completion_requirements", "label": "._check_completion_requirements()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._check_completion_requirements()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_on_complete_extra", "label": "._on_complete_extra()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._on_complete_extra()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_action_cancel_task", "label": ".action_cancel_task()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_cancel_task()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_fusiontechniciantask_on_cancel_extra", "label": "._on_cancel_extra()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._on_cancel_extra()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_action_reschedule", "label": ".action_reschedule()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_reschedule()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_action_reset_to_scheduled", "label": ".action_reset_to_scheduled()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_reset_to_scheduled()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_post_status_message", "label": "._post_status_message()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._post_status_message()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 7}, {"id": "technician_task_fusiontechniciantask_post_completion_to_linked_order", "label": "._post_completion_to_linked_order()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._post_completion_to_linked_order()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_notify_scheduler_on_completion", "label": "._notify_scheduler_on_completion()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._notify_scheduler_on_completion()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_get_task_email_details", "label": "._get_task_email_details()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_task_email_details()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_get_task_email_recipients", "label": "._get_task_email_recipients()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_task_email_recipients()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_send_task_cancelled_email", "label": "._send_task_cancelled_email()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._send_task_cancelled_email()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_send_task_scheduled_email", "label": "._send_task_scheduled_email()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._send_task_scheduled_email()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_send_task_rescheduled_email", "label": "._send_task_rescheduled_email()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._send_task_rescheduled_email()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_get_email_builder", "label": "._get_email_builder()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_email_builder()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_is_email_notifications_enabled", "label": "._is_email_notifications_enabled()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._is_email_notifications_enabled()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_get_linked_order", "label": "._get_linked_order()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_linked_order()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 7}, {"id": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "._send_task_en_route_email()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 15.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._send_task_en_route_email()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 11}, {"id": "technician_task_fusiontechniciantask_send_task_completion_email", "label": "._send_task_completion_email()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._send_task_completion_email()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 10}, {"id": "technician_task_fusiontechniciantask_get_next_task_for_technician", "label": ".get_next_task_for_technician()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_next_task_for_technician()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_get_google_maps_api_key", "label": "._get_google_maps_api_key()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_google_maps_api_key()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_get_map_data", "label": "get_map_data()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "get_map_data()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_get_tech_start_locations", "label": "_get_tech_start_locations()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "_get_tech_start_locations()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_get_clock_in_locations", "label": "_get_clock_in_locations()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "_get_clock_in_locations()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 5}, {"id": "technician_task_fusiontechniciantask_geocode_address", "label": "._geocode_address()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.1, "font": {"size": 0, "color": "#ffffff"}, "title": "._geocode_address()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 9}, {"id": "technician_task_fusiontechniciantask_calculate_travel_time", "label": "._calculate_travel_time()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.1, "font": {"size": 0, "color": "#ffffff"}, "title": "._calculate_travel_time()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 9}, {"id": "technician_task_maps_api_headers", "label": "_maps_api_headers()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_maps_api_headers()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_osrm_travel", "label": "_osrm_travel()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_osrm_travel()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_nominatim_geocode", "label": "_nominatim_geocode()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_nominatim_geocode()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_action_calculate_travel_times", "label": ".action_calculate_travel_times()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_calculate_travel_times()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "._do_calculate_travel_times()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 15.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._do_calculate_travel_times()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 11}, {"id": "technician_task_cron_calculate_travel_times", "label": "_cron_calculate_travel_times()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "_cron_calculate_travel_times()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_cron_check_late_arrivals", "label": "_cron_check_late_arrivals()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "_cron_check_late_arrivals()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_fusiontechniciantask_get_technician_tasks_for_date", "label": ".get_technician_tasks_for_date()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_technician_tasks_for_date()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_get_next_task", "label": ".get_next_task()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_next_task()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_get_current_task", "label": ".get_current_task()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_current_task()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_fusiontechniciantask_send_push_notification", "label": "._send_push_notification()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._send_push_notification()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 6}, {"id": "technician_task_cron_send_push_notifications", "label": "_cron_send_push_notifications()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_cron_send_push_notifications()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 3}, {"id": "technician_task_fusiontechniciantask_get_local_tz", "label": "._get_local_tz()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_local_tz()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 5}, {"id": "technician_task_fusiontechniciantask_utc_to_local", "label": "._utc_to_local()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._utc_to_local()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 4}, {"id": "technician_task_fusiontechniciantask_local_now", "label": "._local_now()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._local_now()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 10}, {"id": "technician_task_float_to_time_str", "label": "_float_to_time_str()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "_float_to_time_str()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 10}, {"id": "technician_task_fusiontechniciantask_get_google_maps_url", "label": ".get_google_maps_url()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_google_maps_url()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "code", "degree": 2}, {"id": "technician_task_rationale_33", "label": "Richer display name: Client - Type | 9:00 AM - 10:00 AM [+2 techs].", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Richer display name: Client - Type | 9:00 AM - 10:00 AM [+2 techs].", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_53", "label": "Return (open_hour, close_hour) from settings. Defaults 9.0 / 18.0.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return (open_hour, close_hour) from settings. Defaults 9.0 / 18.0.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_496", "label": "Return busy intervals from calendar.event for a technician on a date. Q", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return busy intervals from calendar.event for a technician on a date. Q", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_547", "label": "Find the next available time slot for a technician on a given date. Sca", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Find the next available time slot for a technician on a given date. Sca", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_665", "label": "Return a list of available (start, end) gaps for a technician on a date.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return a list of available (start, end) gaps for a technician on a date.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_701", "label": "Generate 12-hour time slots every 15 minutes, store hours only (9 AM - 6 PM).", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Generate 12-hour time slots every 15 minutes, store hours only (9 AM - 6 PM).", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_717", "label": "Sync the 12h selection fields from the raw float values.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Sync the 12h selection fields from the raw float values.", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_734", "label": "Convert float hours to readable time strings.", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Convert float hours to readable time strings.", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_741", "label": "Set default duration based on task type.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Set default duration based on task type.", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_751", "label": "Auto-compute end time from start + duration. Also run overlap check.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Auto-compute end time from start + duration. Also run overlap check.", "community": 21, "community_name": "Community 21", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_764", "label": "Combine date + float time into proper Datetime fields for calendar. time", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Combine date + float time into proper Datetime fields for calendar. time", "community": 22, "community_name": "Community 22", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_782", "label": "When datetime_start is changed (e.g. from calendar drag), update date + time.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "When datetime_start is changed (e.g. from calendar drag), update date + time.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_792", "label": "When datetime_end is changed (e.g. from calendar resize), update time_end.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "When datetime_end is changed (e.g. from calendar resize), update time_end.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_802", "label": "Show booked + available time slots for the technician on the selected date.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Show booked + available time slots for the technician on the selected date.", "community": 23, "community_name": "Community 23", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_880", "label": "Show previous task info + travel time warning with color coding.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Show previous task info + travel time warning with color coding.", "community": 24, "community_name": "Community 24", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_981", "label": "Quick inline travel time calculation. Prefers self-hosted OSRM when fusi", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Quick inline travel time calculation. Prefers self-hosted OSRM when fusi", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1064", "label": "Auto-fill company address when task is marked as in-store.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Auto-fill company address when task is marked as in-store.", "community": 25, "community_name": "Community 25", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_1074", "label": "Auto-fill address fields from the selected client's address.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Auto-fill address fields from the selected client&#x27;s address.", "community": 26, "community_name": "Community 26", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_1089", "label": "Populate address fields from a partner record.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Populate address fields from a partner record.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1107", "label": "Non-in-store tasks must have a geocoded address.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Non-in-store tasks must have a geocoded address.", "community": 27, "community_name": "Community 27", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_1122", "label": "Prevent overlapping bookings for the same technician on the same date.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Prevent overlapping bookings for the same technician on the same date.", "community": 28, "community_name": "Community 28", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_1256", "label": "Auto-set start/end time to the first available slot when tech+date change.", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Auto-set start/end time to the first available slot when tech+date change.", "community": 29, "community_name": "Community 29", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_1286", "label": "Check if current time_start/time_end overlaps with another task. If so,", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if current time_start/time_end overlaps with another task. If so,", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1346", "label": "Round a float hour to the nearest 15-minute slot and clamp to store hours.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Round a float hour to the nearest 15-minute slot and clamp to store hours.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1353", "label": "Handle calendar time range selection: pre-fill date + times from context.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Handle calendar time range selection: pre-fill date + times from context.", "community": 30, "community_name": "Community 30", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_1445", "label": "Hook: fill address from linked records during create. Base implementati", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Hook: fill address from linked records during create. Base implementati", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1456", "label": "Hook: post-create side-effects for linked records. Override in fusion_c", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Hook: post-create side-effects for linked records. Override in fusion_c", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1557", "label": "Create or update a linked calendar.event for external calendar sync. On", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Create or update a linked calendar.event for external calendar sync. On", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1627", "label": "Helper to fill address vals dict from a partner record.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Helper to fill address vals dict from a partner record.", "community": 31, "community_name": "Community 31", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_1640", "label": "Hook: post task creation notice to linked order chatter. Override in fus", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Hook: post task creation notice to linked order chatter. Override in fus", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1645", "label": "Hook: mark linked sale orders as ready for delivery. Override in fusion_", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Hook: mark linked sale orders as ready for delivery. Override in fusion_", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1650", "label": "Recalculate travel for all tech+date combos affected by these tasks. In", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Recalculate travel for all tech+date combos affected by these tasks. In", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1665", "label": "Get the start address for a technician. Priority: 1. Technici", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the start address for a technician. Priority: 1. Technici", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1680", "label": "Geocode an address string. Prefers self-hosted Nominatim when fusion_tas", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Geocode an address string. Prefers self-hosted Nominatim when fusion_tas", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1706", "label": "Return cached (lat, lng) for a technician's start address. Reads from r", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return cached (lat, lng) for a technician&#x27;s start address. Reads from r", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1746", "label": "Recalculate travel for a set of (tech_id, date) combinations. Start-poi", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Recalculate travel for a set of (tech_id, date) combinations. Start-poi", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1819", "label": "Get the technician's most recent GPS location. Priority: 1. L", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the technician&#x27;s most recent GPS location. Priority: 1. L", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1858", "label": "Recalculate travel time for THIS task from the tech's current GPS. Call", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Recalculate travel time for THIS task from the tech&#x27;s current GPS. Call", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1877", "label": "After completing a task, recalculate travel for all remaining tasks in t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "After completing a task, recalculate travel for all remaining tasks in t", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1937", "label": "Check that all earlier tasks for the same technician+date are completed.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Check that all earlier tasks for the same technician+date are completed.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1957", "label": "Write GPS coordinates from context onto the task record.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Write GPS coordinates from context onto the task record.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_1973", "label": "Mark task as En Route.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Mark task as En Route.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2009", "label": "Mark task as In Progress.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Mark task as In Progress.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2023", "label": "Mark task as Completed.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Mark task as Completed.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2051", "label": "Hook: check additional requirements before task completion. Override in", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Hook: check additional requirements before task completion. Override in", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2056", "label": "Hook: additional side-effects after task completion. Override in fusion_", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Hook: additional side-effects after task completion. Override in fusion_", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2061", "label": "Cancel the task. Sends cancellation email and runs cancel hooks.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Cancel the task. Sends cancellation email and runs cancel hooks.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2078", "label": "Hook: additional side-effects after task cancellation. Override in fusio", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Hook: additional side-effects after task cancellation. Override in fusio", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2083", "label": "Open the reschedule form for this task. Saves old schedule info, then op", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Open the reschedule form for this task. Saves old schedule info, then op", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2102", "label": "Reset task back to scheduled.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Reset task back to scheduled.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2111", "label": "Post a status change message to the task chatter.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Post a status change message to the task chatter.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2130", "label": "Hook: post completion notes to linked order chatter. Override in fusion_", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Hook: post completion notes to linked order chatter. Override in fusion_", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2135", "label": "Send an Odoo notification to the person who scheduled the task. Shadow", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Send an Odoo notification to the person who scheduled the task. Shadow", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2200", "label": "Build common detail rows for task emails.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build common detail rows for task emails.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2220", "label": "Get email recipients for task notifications. Returns dict with 'to' (cli", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get email recipients for task notifications. Returns dict with &#x27;to&#x27; (cli", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2238", "label": "Send cancellation email. Base: no-op. Override in fusion_claims.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Send cancellation email. Base: no-op. Override in fusion_claims.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2242", "label": "Send scheduled email. Base: no-op. Override in fusion_claims.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Send scheduled email. Base: no-op. Override in fusion_claims.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2246", "label": "Send rescheduled email. Base: no-op. Override in fusion_claims.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Send rescheduled email. Base: no-op. Override in fusion_claims.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2254", "label": "Return a record that has the _email_build mixin. Base: returns self (ta", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return a record that has the _email_build mixin. Base: returns self (ta", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2262", "label": "Check if email notifications are enabled. Base: always True. Override i", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if email notifications are enabled. Base: always True. Override i", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2270", "label": "Return the linked order record (SO or PO), or False. Base: always False", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return the linked order record (SO or PO), or False. Base: always False", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2278", "label": "Email the client that the technician is on the way.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Email the client that the technician is on the way.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2361", "label": "Email the client that the visit is complete. Sends one of two variants", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Email the client that the visit is complete. Sends one of two variants", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2466", "label": "Get the next task in sequence for the same technician+date after this one.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the next task in sequence for the same technician+date after this one.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2486", "label": "Get the Google Maps API key from config.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the Google Maps API key from config.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2493", "label": "Return task data, technician locations, and Google Maps API key. Args:", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Return task data, technician locations, and Google Maps API key. Args:", "community": 32, "community_name": "Community 32", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_2529", "label": "Build a dict of technician start locations for route origins. Priority", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Build a dict of technician start locations for route origins. Priority", "community": 33, "community_name": "Community 33", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_2613", "label": "Get today's clock-in lat/lng from fusion_clock if installed. Uses the t", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Get today&#x27;s clock-in lat/lng from fusion_clock if installed. Uses the t", "community": 34, "community_name": "Community 34", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_2690", "label": "Geocode the task address. Prefers self-hosted Nominatim when fusion_task", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Geocode the task address. Prefers self-hosted Nominatim when fusion_task", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2728", "label": "Calculate travel time from origin to this task. Prefers self-hosted OSRM", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Calculate travel time from origin to this task. Prefers self-hosted OSRM", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2778", "label": "Build request headers for the FusionMaps gateway. When fusion_tasks.map", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Build request headers for the FusionMaps gateway. When fusion_tasks.map", "community": 35, "community_name": "Community 35", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_2793", "label": "Query OSRM /route for driving time + distance. Returns (minutes, km) or", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Query OSRM /route for driving time + distance. Returns (minutes, km) or", "community": 36, "community_name": "Community 36", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_2815", "label": "Query Nominatim /search for address \u2192 (lat, lng). Returns (0.0, 0.0) on", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Query Nominatim /search for address \u2192 (lat, lng). Returns (0.0, 0.0) on", "community": 37, "community_name": "Community 37", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_2843", "label": "Calculate travel times for a day's schedule. Called from backend button or cron.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Calculate travel times for a day&#x27;s schedule. Called from backend button or cron.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2849", "label": "Internal: calculate travel times for tasks. Does not return an action.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Internal: calculate travel times for tasks. Does not return an action.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_2923", "label": "Cron job: Refresh travel times for TODAY's active tasks only. Future-da", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cron job: Refresh travel times for TODAY&#x27;s active tasks only. Future-da", "community": 38, "community_name": "Community 38", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_2967", "label": "Cron: detect tasks where the technician hasn't started and the scheduled", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cron: detect tasks where the technician hasn&#x27;t started and the scheduled", "community": 39, "community_name": "Community 39", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_3040", "label": "Get all tasks for a technician on a given date, ordered by sequence.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get all tasks for a technician on a given date, ordered by sequence.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_3048", "label": "Get the next upcoming task for a technician.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the next upcoming task for a technician.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_3057", "label": "Get the current in-progress task for a technician.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the current in-progress task for a technician.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_3070", "label": "Send a web push notification for this task.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Send a web push notification for this task.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_3128", "label": "Cron: Send push notifications for upcoming tasks.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cron: Send push notifications for upcoming tasks.", "community": 40, "community_name": "Community 40", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_3162", "label": "Return the pytz timezone for local time calculations. Priority: company", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return the pytz timezone for local time calculations. Priority: company", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_3176", "label": "Convert a naive UTC datetime to a timezone-aware local datetime.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Convert a naive UTC datetime to a timezone-aware local datetime.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_3183", "label": "Current datetime in the local (company) timezone.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Current datetime in the local (company) timezone.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "technician_task_rationale_3188", "label": "Convert float hours to time string like '9:30 AM'.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Convert float hours to time string like &#x27;9:30 AM&#x27;.", "community": 41, "community_name": "Community 41", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 0}, {"id": "technician_task_rationale_3198", "label": "Get Google Maps navigation URL using the text address so the destination", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get Google Maps navigation URL using the text address so the destination", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/technician_task.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_task_sync_py", "label": "task_sync.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "task_sync.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 6}, {"id": "task_sync_fusiontasksyncconfig", "label": "FusionTaskSyncConfig", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "FusionTaskSyncConfig", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 14}, {"id": "task_sync_fusiontasksyncconfig_jsonrpc", "label": "._jsonrpc()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._jsonrpc()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 4}, {"id": "task_sync_fusiontasksyncconfig_authenticate", "label": "._authenticate()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._authenticate()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 5}, {"id": "task_sync_fusiontasksyncconfig_rpc", "label": "._rpc()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._rpc()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 11}, {"id": "task_sync_fusiontasksyncconfig_get_local_tech_map", "label": "._get_local_tech_map()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_local_tech_map()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 5}, {"id": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "label": "._get_remote_tech_map()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_remote_tech_map()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 8}, {"id": "task_sync_fusiontasksyncconfig_get_local_syncid_to_uid", "label": "._get_local_syncid_to_uid()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_local_syncid_to_uid()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 4}, {"id": "task_sync_fusiontasksyncconfig_action_test_connection", "label": ".action_test_connection()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_test_connection()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 5}, {"id": "task_sync_fusiontasksyncconfig_get_local_instance_id", "label": "._get_local_instance_id()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_local_instance_id()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 4}, {"id": "task_sync_push_tasks", "label": "_push_tasks()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "_push_tasks()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 5}, {"id": "task_sync_fusiontasksyncconfig_push_tasks_to_remote", "label": "._push_tasks_to_remote()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._push_tasks_to_remote()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 6}, {"id": "task_sync_push_shadow_status", "label": "_push_shadow_status()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "_push_shadow_status()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 6}, {"id": "task_sync_push_technician_location", "label": "_push_technician_location()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "_push_technician_location()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 5}, {"id": "task_sync_fusiontasksyncconfig_trigger_parent_notifications", "label": "._trigger_parent_notifications()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._trigger_parent_notifications()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 4}, {"id": "task_sync_cron_pull_remote_tasks", "label": "_cron_pull_remote_tasks()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_cron_pull_remote_tasks()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 4}, {"id": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "label": "._pull_tasks_from_remote()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 15.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._pull_tasks_from_remote()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 11}, {"id": "task_sync_fusiontasksyncconfig_pull_technician_locations", "label": "._pull_technician_locations()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._pull_technician_locations()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 8}, {"id": "task_sync_cron_cleanup_old_shadows", "label": "_cron_cleanup_old_shadows()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_cron_cleanup_old_shadows()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 1}, {"id": "task_sync_fusiontasksyncconfig_action_sync_now", "label": ".action_sync_now()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_sync_now()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "code", "degree": 5}, {"id": "task_sync_rationale_67", "label": "Execute a JSON-RPC call against the remote Odoo instance.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Execute a JSON-RPC call against the remote Odoo instance.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_96", "label": "Authenticate with the remote instance and return the uid.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Authenticate with the remote instance and return the uid.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_105", "label": "Execute a method on the remote instance via execute_kw.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Execute a method on the remote instance via execute_kw.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_120", "label": "Build {local_user_id: x_fc_tech_sync_id} for all local field staff.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build {local_user_id: x_fc_tech_sync_id} for all local field staff.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_129", "label": "Build {x_fc_tech_sync_id: remote_user_id} from the remote instance.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build {x_fc_tech_sync_id: remote_user_id} from the remote instance.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_145", "label": "Build {x_fc_tech_sync_id: local_user_id} for local field staff.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build {x_fc_tech_sync_id: local_user_id} for local field staff.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_158", "label": "Test the connection to the remote instance.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Test the connection to the remote instance.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_183", "label": "Return this instance's own ID from config parameters.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return this instance&#x27;s own ID from config parameters.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_189", "label": "Push local task changes to all active remote instances. Called from tech", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Push local task changes to all active remote instances. Called from tech", "community": 42, "community_name": "Community 42", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 0}, {"id": "task_sync_rationale_206", "label": "Push task data to a single remote instance. Maps additional_technician_", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Push task data to a single remote instance. Maps additional_technician_", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_288", "label": "Push local status changes on shadow tasks back to their source instance.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Push local status changes on shadow tasks back to their source instance.", "community": 43, "community_name": "Community 43", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 0}, {"id": "task_sync_rationale_327", "label": "Push a technician's location update to all remote instances. Called whe", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Push a technician&#x27;s location update to all remote instances. Called whe", "community": 44, "community_name": "Community 44", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 0}, {"id": "task_sync_rationale_363", "label": "After pushing a shadow status, trigger appropriate emails and notificati", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "After pushing a shadow status, trigger appropriate emails and notificati", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_400", "label": "Cron job: pull tasks and technician locations from all active remote instances.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Cron job: pull tasks and technician locations from all active remote instances.", "community": 45, "community_name": "Community 45", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 0}, {"id": "task_sync_rationale_415", "label": "Pull all active tasks for matched technicians from the remote instance.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Pull all active tasks for matched technicians from the remote instance.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_613", "label": "Pull latest GPS locations for matched technicians from the remote instance.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Pull latest GPS locations for matched technicians from the remote instance.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "task_sync_rationale_705", "label": "Remove shadow tasks older than 30 days (completed/cancelled).", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Remove shadow tasks older than 30 days (completed/cancelled).", "community": 46, "community_name": "Community 46", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 0}, {"id": "task_sync_rationale_722", "label": "Manually trigger a full sync for this config.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Manually trigger a full sync for this config.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/task_sync.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_partner_py", "label": "res_partner.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "res_partner.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_partner.py", "file_type": "code", "degree": 2}, {"id": "res_partner_respartner", "label": "ResPartner", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "ResPartner", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_partner.py", "file_type": "code", "degree": 3}, {"id": "res_partner_respartner_geocode_start_address", "label": "._geocode_start_address()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._geocode_start_address()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_partner.py", "file_type": "code", "degree": 3}, {"id": "res_partner_create", "label": "create()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "create()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_partner.py", "file_type": "code", "degree": 7}, {"id": "res_partner_respartner_write", "label": ".write()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".write()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/res_partner.py", "file_type": "code", "degree": 8}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_models_email_builder_mixin_py", "label": "email_builder_mixin.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "email_builder_mixin.py", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 1}, {"id": "email_builder_mixin_fusionemailbuildermixin", "label": "FusionEmailBuilderMixin", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.1, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionEmailBuilderMixin", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 9}, {"id": "email_builder_mixin_fusionemailbuildermixin_email_build", "label": "._email_build()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.1, "font": {"size": 0, "color": "#ffffff"}, "title": "._email_build()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 9}, {"id": "email_builder_mixin_fusionemailbuildermixin_email_section", "label": "._email_section()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._email_section()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 3}, {"id": "email_builder_mixin_fusionemailbuildermixin_email_note", "label": "._email_note()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._email_note()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 4}, {"id": "email_builder_mixin_fusionemailbuildermixin_email_button", "label": "._email_button()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._email_button()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 3}, {"id": "email_builder_mixin_fusionemailbuildermixin_email_attachment_note", "label": "._email_attachment_note()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._email_attachment_note()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 3}, {"id": "email_builder_mixin_fusionemailbuildermixin_email_status_badge", "label": "._email_status_badge()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._email_status_badge()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 2}, {"id": "email_builder_mixin_fusionemailbuildermixin_get_company_info", "label": "._get_company_info()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_company_info()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 3}, {"id": "email_builder_mixin_fusionemailbuildermixin_email_is_enabled", "label": "._email_is_enabled()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._email_is_enabled()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "code", "degree": 2}, {"id": "email_builder_mixin_rationale_40", "label": "Build a complete professional email HTML string. Args: titl", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build a complete professional email HTML string. Args: titl", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "rationale", "degree": 1}, {"id": "email_builder_mixin_rationale_146", "label": "Build a labeled details table section. Args: heading: Secti", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build a labeled details table section. Args: heading: Secti", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "rationale", "degree": 1}, {"id": "email_builder_mixin_rationale_178", "label": "Build a left-border accent note block.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build a left-border accent note block.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "rationale", "degree": 1}, {"id": "email_builder_mixin_rationale_187", "label": "Build a centered CTA button.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build a centered CTA button.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "rationale", "degree": 1}, {"id": "email_builder_mixin_rationale_196", "label": "Build a dashed-border attachment callout. Args: description", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Build a dashed-border attachment callout. Args: description", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "rationale", "degree": 1}, {"id": "email_builder_mixin_rationale_210", "label": "Return an inline status badge/pill HTML snippet.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return an inline status badge/pill HTML snippet.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "rationale", "degree": 1}, {"id": "email_builder_mixin_rationale_229", "label": "Return company name, phone, email for email templates.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return company name, phone, email for email templates.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "rationale", "degree": 1}, {"id": "email_builder_mixin_rationale_238", "label": "Check if email notifications are enabled in settings.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if email notifications are enabled in settings.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/models/email_builder_mixin.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "label": "fusion_task_map_view.js", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "fusion_task_map_view.js", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 12}, {"id": "fusion_task_map_view_numberedpinsvg", "label": "numberedPinSvg()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "numberedPinSvg()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_numberedpinuri", "label": "numberedPinUri()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "numberedPinUri()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_loadgooglemaps", "label": "loadGoogleMaps()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "loadGoogleMaps()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_initialsof", "label": "initialsOf()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "initialsOf()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_localdatestr", "label": "localDateStr()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "localDateStr()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_floattotime12", "label": "floatToTime12()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "floatToTime12()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_classifytask", "label": "classifyTask()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "classifyTask()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_classifydate", "label": "classifyDate()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "classifyDate()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_extracttechnicians", "label": "extractTechnicians()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "extractTechnicians()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_grouptasks", "label": "groupTasks()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "groupTasks()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 4}, {"id": "fusion_task_map_view_fusiontaskmapcontroller", "label": "FusionTaskMapController", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 27.3, "font": {"size": 12, "color": "#ffffff"}, "title": "FusionTaskMapController", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 38}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_meta", "label": "._meta()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._meta()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_getdomain", "label": "._getDomain()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._getDomain()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 5}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_storeresult", "label": "._storeResult()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.7, "font": {"size": 0, "color": "#ffffff"}, "title": "._storeResult()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 6}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_rebuildgroups", "label": "._rebuildGroups()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._rebuildGroups()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 5}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_loadandrender", "label": "._loadAndRender()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._loadAndRender()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 7}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_softrefresh", "label": "._softRefresh()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._softRefresh()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 4}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_onmodelupdate", "label": "._onModelUpdate()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._onModelUpdate()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 4}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_initmap", "label": "._initMap()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._initMap()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_clearmarkers", "label": "._clearMarkers()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._clearMarkers()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_clearroute", "label": "._clearRoute()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._clearRoute()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 4}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_placemarkers", "label": "._placeMarkers()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._placeMarkers()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 5}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "label": "._renderMarkers()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "._renderMarkers()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 14}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_renderroute", "label": "._renderRoute()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._renderRoute()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 4}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_pointalongleg", "label": "._pointAlongLeg()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._pointAlongLeg()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_haversine", "label": "._haversine()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._haversine()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_createtravellabel", "label": "._createTravelLabel()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._createTravelLabel()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_startrouteanimation", "label": "._startRouteAnimation()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._startRouteAnimation()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_opentaskpopup", "label": "._openTaskPopup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._openTaskPopup()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_togglesidebar", "label": ".toggleSidebar()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleSidebar()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_togglegroup", "label": ".toggleGroup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleGroup()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_isgroupcollapsed", "label": ".isGroupCollapsed()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".isGroupCollapsed()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_focustask", "label": ".focusTask()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".focusTask()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_toggledayfilter", "label": ".toggleDayFilter()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleDayFilter()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_isgroupvisible", "label": ".isGroupVisible()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".isGroupVisible()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_showalldays", "label": ".showAllDays()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".showAllDays()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_showtodayonly", "label": ".showTodayOnly()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".showTodayOnly()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_toggletechfilter", "label": ".toggleTechFilter()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleTechFilter()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_istechvisible", "label": ".isTechVisible()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".isTechVisible()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_showalltechs", "label": ".showAllTechs()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".showAllTechs()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_toggletraffic", "label": ".toggleTraffic()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleTraffic()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_toggletasks", "label": ".toggleTasks()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleTasks()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_toggletechnicians", "label": ".toggleTechnicians()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleTechnicians()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_toggleroute", "label": ".toggleRoute()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleRoute()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 3}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_onrefresh", "label": ".onRefresh()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".onRefresh()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_opentask", "label": ".openTask()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".openTask()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusiontaskmapcontroller_createnewtask", "label": ".createNewTask()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".createNewTask()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}, {"id": "fusion_task_map_view_fusionmaparchparser", "label": "FusionMapArchParser", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.9, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionMapArchParser", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 2}, {"id": "fusion_task_map_view_fusionmaparchparser_parse", "label": ".parse()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".parse()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_tasks/static/src/js/fusion_task_map_view.js", "file_type": "code", "degree": 1}];
const RAW_EDGES = [{"from": "users_gurpreet_github_odoo_modules_fusion_tasks_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_tasks_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_init_py", "to": "init_fusion_tasks_post_init", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "init_fusion_tasks_post_init", "to": "init_rationale_9", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "init_fusion_tasks_post_init", "to": "res_partner_respartner_write", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_location_py", "to": "technician_location_fusiontechnicianlocation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_location_py", "to": "technician_location_log_location", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_location_py", "to": "technician_location_get_latest_locations", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_location_py", "to": "technician_location_cron_cleanup_old_locations", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_location_log_location", "to": "res_partner_create", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_location_get_latest_locations", "to": "technician_task_get_map_data", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_tasks_models_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_company_py", "to": "res_company_rescompany", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_push_subscription_py", "to": "push_subscription_fusionpushsubscription", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_push_subscription_py", "to": "push_subscription_register_subscription", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "push_subscription_register_subscription", "to": "res_partner_respartner_write", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "push_subscription_register_subscription", "to": "res_partner_create", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_users_py", "to": "res_users_resusers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_config_settings_py", "to": "res_config_settings_resconfigsettings", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_fusiontechniciantask", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_is_shadow", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_client_display", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_all_technician_ids", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_get_time_selection", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_time_12h", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_time_displays", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_onchange_task_type_duration", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_onchange_compute_end_time", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_datetimes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_schedule_info", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_prev_task_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_color", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_compute_address_display", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_onchange_is_in_store", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_onchange_partner_id", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_check_address_required", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_check_no_overlap", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_onchange_technician_date_autoset", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_default_get", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_create", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_fill_address_vals", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_get_map_data", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_get_tech_start_locations", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_get_clock_in_locations", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_maps_api_headers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_osrm_travel", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_nominatim_geocode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_cron_calculate_travel_times", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_cron_check_late_arrivals", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_cron_send_push_notifications", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_technician_task_py", "to": "technician_task_float_to_time_str", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_compute_display_name", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_store_hours", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_calendar_busy_intervals", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_find_next_available_slot", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_available_gaps", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_inverse_time_start_12h", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_inverse_time_end_12h", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_inverse_datetime_start", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_inverse_datetime_end", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_quick_travel_time", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_fill_address_from_partner", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_snap_if_overlap", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_snap_to_quarter", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_create_vals_fill", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_on_create_post_actions", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_write", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_sync_calendar_event", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_post_task_created_to_linked_order", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_mark_sale_order_ready_for_delivery", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_recalculate_day_travel_chains", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_technician_start_address", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_geocode_address_string", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_technician_start_coords", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_recalculate_combos_travel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_tech_current_location", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_recalculate_travel_from_current_location", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_recalculate_remaining_tasks_travel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_check_previous_tasks_completed", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_write_action_location", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_action_start_en_route", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_action_start_task", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_action_complete_task", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_check_completion_requirements", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_on_complete_extra", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_action_cancel_task", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_on_cancel_extra", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_action_reschedule", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_action_reset_to_scheduled", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_post_status_message", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_post_completion_to_linked_order", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_notify_scheduler_on_completion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_task_email_details", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_task_email_recipients", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_send_task_cancelled_email", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_send_task_scheduled_email", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_send_task_rescheduled_email", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_email_builder", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_is_email_notifications_enabled", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_linked_order", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_send_task_completion_email", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_next_task_for_technician", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_google_maps_api_key", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_geocode_address", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_calculate_travel_time", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_action_calculate_travel_times", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_technician_tasks_for_date", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_next_task", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_current_task", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_send_push_notification", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_local_tz", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_utc_to_local", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_local_now", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask", "to": "technician_task_fusiontechniciantask_get_google_maps_url", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_compute_display_name", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_compute_display_name", "to": "technician_task_rationale_33", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_fusiontechniciantask_find_next_available_slot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_fusiontechniciantask_get_available_gaps", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_onchange_task_type_duration", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_onchange_compute_end_time", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_compute_datetimes", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_compute_schedule_info", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_compute_prev_task_summary", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_check_no_overlap", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_onchange_technician_date_autoset", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_fusiontechniciantask_snap_to_quarter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_default_get", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_fusiontechniciantask_write", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_store_hours", "to": "technician_task_rationale_53", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_calendar_busy_intervals", "to": "technician_task_fusiontechniciantask_get_local_tz", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_calendar_busy_intervals", "to": "technician_task_fusiontechniciantask_find_next_available_slot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_calendar_busy_intervals", "to": "technician_task_check_no_overlap", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_calendar_busy_intervals", "to": "technician_task_rationale_496", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_find_next_available_slot", "to": "technician_task_onchange_technician_date_autoset", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_find_next_available_slot", "to": "technician_task_fusiontechniciantask_snap_if_overlap", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_find_next_available_slot", "to": "technician_task_rationale_547", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_available_gaps", "to": "technician_task_compute_schedule_info", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_available_gaps", "to": "technician_task_rationale_665", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_compute_time_displays", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_onchange_compute_end_time", "to": "technician_task_fusiontechniciantask_snap_if_overlap", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_compute_datetimes", "to": "technician_task_fusiontechniciantask_get_local_tz", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_inverse_datetime_start", "to": "technician_task_rationale_782", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_inverse_datetime_end", "to": "technician_task_rationale_792", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_compute_schedule_info", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_compute_prev_task_summary", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_compute_prev_task_summary", "to": "technician_task_fusiontechniciantask_quick_travel_time", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_quick_travel_time", "to": "technician_task_osrm_travel", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_quick_travel_time", "to": "technician_task_check_no_overlap", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_quick_travel_time", "to": "technician_task_rationale_981", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_onchange_is_in_store", "to": "technician_task_fusiontechniciantask_fill_address_from_partner", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_fill_address_from_partner", "to": "technician_task_rationale_1089", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_check_no_overlap", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_check_no_overlap", "to": "technician_task_fusiontechniciantask_local_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_snap_if_overlap", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_snap_if_overlap", "to": "technician_task_rationale_1286", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_snap_to_quarter", "to": "technician_task_default_get", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_snap_to_quarter", "to": "technician_task_rationale_1346", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "technician_task_fill_address_vals", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "technician_task_fusiontechniciantask_create_vals_fill", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "technician_task_fusiontechniciantask_on_create_post_actions", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "technician_task_fusiontechniciantask_recalculate_day_travel_chains", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "technician_task_fusiontechniciantask_send_task_scheduled_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "technician_task_fusiontechniciantask_sync_calendar_event", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "technician_task_fusiontechniciantask_send_task_completion_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_create", "to": "task_sync_push_tasks", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_create_vals_fill", "to": "technician_task_fill_address_vals", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_create_vals_fill", "to": "technician_task_rationale_1445", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_on_create_post_actions", "to": "technician_task_rationale_1456", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_recalculate_combos_travel", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_post_status_message", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_send_task_rescheduled_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_sync_calendar_event", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_get_technician_start_coords", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_recalculate_travel_from_current_location", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_recalculate_remaining_tasks_travel", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_write_action_location", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_action_complete_task", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_get_tech_start_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_geocode_address", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_calculate_travel_time", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_cron_check_late_arrivals", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "technician_task_fusiontechniciantask_send_push_notification", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "task_sync_push_shadow_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_write", "to": "task_sync_push_tasks", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_sync_calendar_event", "to": "technician_task_fusiontechniciantask_get_linked_order", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_sync_calendar_event", "to": "technician_task_rationale_1557", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_post_task_created_to_linked_order", "to": "technician_task_rationale_1640", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_mark_sale_order_ready_for_delivery", "to": "technician_task_rationale_1645", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_day_travel_chains", "to": "technician_task_fusiontechniciantask_recalculate_combos_travel", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_day_travel_chains", "to": "technician_task_rationale_1650", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_technician_start_address", "to": "technician_task_rationale_1665", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_geocode_address_string", "to": "technician_task_nominatim_geocode", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_geocode_address_string", "to": "technician_task_fusiontechniciantask_get_technician_start_coords", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_geocode_address_string", "to": "technician_task_get_tech_start_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_geocode_address_string", "to": "technician_task_rationale_1680", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_technician_start_coords", "to": "technician_task_fusiontechniciantask_recalculate_combos_travel", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_technician_start_coords", "to": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_technician_start_coords", "to": "technician_task_rationale_1706", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_combos_travel", "to": "technician_task_fusiontechniciantask_get_google_maps_api_key", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_combos_travel", "to": "technician_task_fusiontechniciantask_local_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_combos_travel", "to": "technician_task_get_clock_in_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_combos_travel", "to": "technician_task_fusiontechniciantask_get_tech_current_location", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_combos_travel", "to": "technician_task_fusiontechniciantask_geocode_address", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_combos_travel", "to": "technician_task_fusiontechniciantask_calculate_travel_time", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_combos_travel", "to": "technician_task_rationale_1746", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_combos_travel", "to": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_get_tech_current_location", "to": "technician_task_fusiontechniciantask_local_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_tech_current_location", "to": "technician_task_get_clock_in_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_tech_current_location", "to": "technician_task_fusiontechniciantask_recalculate_travel_from_current_location", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_tech_current_location", "to": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_tech_current_location", "to": "technician_task_rationale_1819", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_travel_from_current_location", "to": "technician_task_fusiontechniciantask_calculate_travel_time", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_travel_from_current_location", "to": "technician_task_fusiontechniciantask_action_start_en_route", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_travel_from_current_location", "to": "technician_task_rationale_1858", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_remaining_tasks_travel", "to": "technician_task_fusiontechniciantask_geocode_address", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_remaining_tasks_travel", "to": "technician_task_fusiontechniciantask_calculate_travel_time", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_remaining_tasks_travel", "to": "technician_task_fusiontechniciantask_action_complete_task", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_recalculate_remaining_tasks_travel", "to": "technician_task_rationale_1877", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_check_previous_tasks_completed", "to": "technician_task_fusiontechniciantask_action_start_en_route", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_check_previous_tasks_completed", "to": "technician_task_fusiontechniciantask_action_start_task", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_check_previous_tasks_completed", "to": "technician_task_rationale_1937", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write_action_location", "to": "technician_task_fusiontechniciantask_action_start_en_route", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write_action_location", "to": "technician_task_fusiontechniciantask_action_start_task", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write_action_location", "to": "technician_task_fusiontechniciantask_action_cancel_task", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_write_action_location", "to": "technician_task_rationale_1957", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_start_en_route", "to": "technician_task_fusiontechniciantask_post_status_message", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_start_en_route", "to": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_start_en_route", "to": "technician_task_fusiontechniciantask_send_push_notification", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_start_en_route", "to": "technician_task_rationale_1973", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_start_en_route", "to": "task_sync_push_shadow_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_action_start_task", "to": "technician_task_fusiontechniciantask_post_status_message", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_start_task", "to": "technician_task_rationale_2009", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_complete_task", "to": "technician_task_fusiontechniciantask_check_completion_requirements", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_complete_task", "to": "technician_task_fusiontechniciantask_post_status_message", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_complete_task", "to": "technician_task_fusiontechniciantask_post_completion_to_linked_order", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_complete_task", "to": "technician_task_fusiontechniciantask_notify_scheduler_on_completion", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_complete_task", "to": "technician_task_fusiontechniciantask_send_task_completion_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_complete_task", "to": "technician_task_fusiontechniciantask_on_complete_extra", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_complete_task", "to": "technician_task_rationale_2023", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_check_completion_requirements", "to": "technician_task_rationale_2051", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_on_complete_extra", "to": "technician_task_rationale_2056", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_cancel_task", "to": "technician_task_fusiontechniciantask_post_status_message", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_cancel_task", "to": "technician_task_fusiontechniciantask_on_cancel_extra", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_cancel_task", "to": "technician_task_rationale_2061", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_cancel_task", "to": "task_sync_push_shadow_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_on_cancel_extra", "to": "technician_task_fusiontechniciantask_send_task_cancelled_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_on_cancel_extra", "to": "technician_task_rationale_2078", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_reschedule", "to": "technician_task_rationale_2083", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_reset_to_scheduled", "to": "technician_task_rationale_2102", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_post_status_message", "to": "technician_task_rationale_2111", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_post_completion_to_linked_order", "to": "technician_task_rationale_2130", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_notify_scheduler_on_completion", "to": "technician_task_fusiontechniciantask_get_linked_order", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_notify_scheduler_on_completion", "to": "technician_task_rationale_2135", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_task_email_details", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_task_email_details", "to": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_task_email_details", "to": "technician_task_rationale_2200", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_task_email_recipients", "to": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_task_email_recipients", "to": "technician_task_fusiontechniciantask_send_task_completion_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_task_email_recipients", "to": "technician_task_rationale_2220", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_task_cancelled_email", "to": "technician_task_rationale_2238", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_task_scheduled_email", "to": "technician_task_rationale_2242", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_task_rescheduled_email", "to": "technician_task_rationale_2246", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_email_builder", "to": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_email_builder", "to": "technician_task_fusiontechniciantask_send_task_completion_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_email_builder", "to": "technician_task_rationale_2254", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_is_email_notifications_enabled", "to": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_is_email_notifications_enabled", "to": "technician_task_fusiontechniciantask_send_task_completion_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_is_email_notifications_enabled", "to": "technician_task_rationale_2262", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_linked_order", "to": "technician_task_fusiontechniciantask_send_task_en_route_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_linked_order", "to": "technician_task_fusiontechniciantask_send_task_completion_email", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_linked_order", "to": "technician_task_cron_check_late_arrivals", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_linked_order", "to": "technician_task_rationale_2270", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_task_en_route_email", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_task_en_route_email", "to": "technician_task_rationale_2278", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_task_en_route_email", "to": "email_builder_mixin_fusionemailbuildermixin_email_build", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_send_task_completion_email", "to": "technician_task_rationale_2361", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_task_completion_email", "to": "email_builder_mixin_fusionemailbuildermixin_email_note", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_send_task_completion_email", "to": "email_builder_mixin_fusionemailbuildermixin_email_build", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_get_next_task_for_technician", "to": "technician_task_rationale_2466", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_google_maps_api_key", "to": "technician_task_fusiontechniciantask_geocode_address", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_google_maps_api_key", "to": "technician_task_fusiontechniciantask_calculate_travel_time", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_google_maps_api_key", "to": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_google_maps_api_key", "to": "technician_task_rationale_2486", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_get_map_data", "to": "technician_task_get_tech_start_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_get_tech_start_locations", "to": "technician_task_fusiontechniciantask_local_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_get_tech_start_locations", "to": "technician_task_get_clock_in_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_get_clock_in_locations", "to": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_geocode_address", "to": "technician_task_nominatim_geocode", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_geocode_address", "to": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_geocode_address", "to": "technician_task_rationale_2690", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_geocode_address", "to": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "technician_task_fusiontechniciantask_calculate_travel_time", "to": "technician_task_osrm_travel", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_calculate_travel_time", "to": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_calculate_travel_time", "to": "technician_task_rationale_2728", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_maps_api_headers", "to": "technician_task_osrm_travel", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_maps_api_headers", "to": "technician_task_nominatim_geocode", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_calculate_travel_times", "to": "technician_task_fusiontechniciantask_do_calculate_travel_times", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_action_calculate_travel_times", "to": "technician_task_rationale_2843", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_do_calculate_travel_times", "to": "technician_task_fusiontechniciantask_local_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_do_calculate_travel_times", "to": "technician_task_cron_calculate_travel_times", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_do_calculate_travel_times", "to": "technician_task_rationale_2849", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_cron_check_late_arrivals", "to": "technician_task_fusiontechniciantask_local_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_cron_check_late_arrivals", "to": "technician_task_fusiontechniciantask_send_push_notification", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_cron_check_late_arrivals", "to": "technician_task_float_to_time_str", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_technician_tasks_for_date", "to": "technician_task_rationale_3040", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_next_task", "to": "technician_task_rationale_3048", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_current_task", "to": "technician_task_rationale_3057", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_push_notification", "to": "technician_task_cron_send_push_notifications", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_send_push_notification", "to": "technician_task_rationale_3070", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_cron_send_push_notifications", "to": "technician_task_fusiontechniciantask_local_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_local_tz", "to": "technician_task_fusiontechniciantask_utc_to_local", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_local_tz", "to": "technician_task_rationale_3162", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_utc_to_local", "to": "technician_task_fusiontechniciantask_local_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_utc_to_local", "to": "technician_task_rationale_3176", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_local_now", "to": "technician_task_rationale_3183", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "technician_task_fusiontechniciantask_get_google_maps_url", "to": "technician_task_rationale_3198", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_task_sync_py", "to": "task_sync_fusiontasksyncconfig", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_task_sync_py", "to": "task_sync_push_tasks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_task_sync_py", "to": "task_sync_push_shadow_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_task_sync_py", "to": "task_sync_push_technician_location", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_task_sync_py", "to": "task_sync_cron_pull_remote_tasks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_task_sync_py", "to": "task_sync_cron_cleanup_old_shadows", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_jsonrpc", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_authenticate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_rpc", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_get_local_tech_map", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_get_local_syncid_to_uid", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_action_test_connection", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_get_local_instance_id", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_push_tasks_to_remote", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_trigger_parent_notifications", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_pull_technician_locations", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig", "to": "task_sync_fusiontasksyncconfig_action_sync_now", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_jsonrpc", "to": "task_sync_fusiontasksyncconfig_authenticate", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_jsonrpc", "to": "task_sync_fusiontasksyncconfig_rpc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_jsonrpc", "to": "task_sync_rationale_67", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_authenticate", "to": "task_sync_fusiontasksyncconfig_rpc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_authenticate", "to": "task_sync_fusiontasksyncconfig_action_test_connection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_authenticate", "to": "task_sync_rationale_96", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_rpc", "to": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_rpc", "to": "task_sync_fusiontasksyncconfig_push_tasks_to_remote", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_rpc", "to": "task_sync_push_shadow_status", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_rpc", "to": "task_sync_push_technician_location", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_rpc", "to": "task_sync_fusiontasksyncconfig_trigger_parent_notifications", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_rpc", "to": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_rpc", "to": "task_sync_fusiontasksyncconfig_pull_technician_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_rpc", "to": "task_sync_rationale_105", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_tech_map", "to": "task_sync_fusiontasksyncconfig_action_test_connection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_tech_map", "to": "task_sync_fusiontasksyncconfig_push_tasks_to_remote", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_tech_map", "to": "task_sync_push_technician_location", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_tech_map", "to": "task_sync_rationale_120", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "to": "task_sync_fusiontasksyncconfig_action_test_connection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "to": "task_sync_fusiontasksyncconfig_push_tasks_to_remote", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "to": "task_sync_push_technician_location", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "to": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "to": "task_sync_fusiontasksyncconfig_pull_technician_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_remote_tech_map", "to": "task_sync_rationale_129", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_syncid_to_uid", "to": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_syncid_to_uid", "to": "task_sync_fusiontasksyncconfig_pull_technician_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_syncid_to_uid", "to": "task_sync_rationale_145", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_action_test_connection", "to": "task_sync_rationale_158", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_instance_id", "to": "task_sync_push_tasks", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_instance_id", "to": "task_sync_push_technician_location", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_get_local_instance_id", "to": "task_sync_rationale_183", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_push_tasks", "to": "task_sync_fusiontasksyncconfig_push_tasks_to_remote", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_push_tasks_to_remote", "to": "task_sync_rationale_206", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_push_shadow_status", "to": "task_sync_fusiontasksyncconfig_trigger_parent_notifications", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_trigger_parent_notifications", "to": "task_sync_rationale_363", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_cron_pull_remote_tasks", "to": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_cron_pull_remote_tasks", "to": "task_sync_fusiontasksyncconfig_pull_technician_locations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_cron_pull_remote_tasks", "to": "res_partner_respartner_write", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "to": "task_sync_fusiontasksyncconfig_action_sync_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "to": "task_sync_rationale_415", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "to": "res_partner_respartner_write", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "task_sync_fusiontasksyncconfig_pull_tasks_from_remote", "to": "res_partner_create", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "task_sync_fusiontasksyncconfig_pull_technician_locations", "to": "task_sync_fusiontasksyncconfig_action_sync_now", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_pull_technician_locations", "to": "task_sync_rationale_613", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_pull_technician_locations", "to": "res_partner_create", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "task_sync_fusiontasksyncconfig_action_sync_now", "to": "task_sync_rationale_722", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "task_sync_fusiontasksyncconfig_action_sync_now", "to": "res_partner_respartner_write", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_partner_py", "to": "res_partner_respartner", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_res_partner_py", "to": "res_partner_create", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "res_partner_respartner", "to": "res_partner_respartner_geocode_start_address", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "res_partner_respartner", "to": "res_partner_respartner_write", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "res_partner_respartner_geocode_start_address", "to": "res_partner_create", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "res_partner_respartner_geocode_start_address", "to": "res_partner_respartner_write", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "res_partner_create", "to": "res_partner_respartner_write", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_models_email_builder_mixin_py", "to": "email_builder_mixin_fusionemailbuildermixin", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin", "to": "email_builder_mixin_fusionemailbuildermixin_email_build", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin", "to": "email_builder_mixin_fusionemailbuildermixin_email_section", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin", "to": "email_builder_mixin_fusionemailbuildermixin_email_note", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin", "to": "email_builder_mixin_fusionemailbuildermixin_email_button", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin", "to": "email_builder_mixin_fusionemailbuildermixin_email_attachment_note", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin", "to": "email_builder_mixin_fusionemailbuildermixin_email_status_badge", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin", "to": "email_builder_mixin_fusionemailbuildermixin_get_company_info", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin", "to": "email_builder_mixin_fusionemailbuildermixin_email_is_enabled", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_build", "to": "email_builder_mixin_fusionemailbuildermixin_get_company_info", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_build", "to": "email_builder_mixin_fusionemailbuildermixin_email_section", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_build", "to": "email_builder_mixin_fusionemailbuildermixin_email_note", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_build", "to": "email_builder_mixin_fusionemailbuildermixin_email_attachment_note", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_build", "to": "email_builder_mixin_fusionemailbuildermixin_email_button", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_build", "to": "email_builder_mixin_rationale_40", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_section", "to": "email_builder_mixin_rationale_146", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_note", "to": "email_builder_mixin_rationale_178", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_button", "to": "email_builder_mixin_rationale_187", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_attachment_note", "to": "email_builder_mixin_rationale_196", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_status_badge", "to": "email_builder_mixin_rationale_210", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_get_company_info", "to": "email_builder_mixin_rationale_229", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "email_builder_mixin_fusionemailbuildermixin_email_is_enabled", "to": "email_builder_mixin_rationale_238", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_numberedpinsvg", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_numberedpinuri", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_loadgooglemaps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_initialsof", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_localdatestr", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_floattotime12", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_classifytask", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_classifydate", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_extracttechnicians", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_grouptasks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_fusiontaskmapcontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_tasks_static_src_js_fusion_task_map_view_js", "to": "fusion_task_map_view_fusionmaparchparser", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_numberedpinsvg", "to": "fusion_task_map_view_numberedpinuri", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_numberedpinuri", "to": "fusion_task_map_view_fusiontaskmapcontroller_placemarkers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_loadgooglemaps", "to": "fusion_task_map_view_fusiontaskmapcontroller_loadandrender", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_initialsof", "to": "fusion_task_map_view_extracttechnicians", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_initialsof", "to": "fusion_task_map_view_fusiontaskmapcontroller_placemarkers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_localdatestr", "to": "fusion_task_map_view_classifydate", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_floattotime12", "to": "fusion_task_map_view_grouptasks", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_classifytask", "to": "fusion_task_map_view_classifydate", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_classifytask", "to": "fusion_task_map_view_grouptasks", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_extracttechnicians", "to": "fusion_task_map_view_fusiontaskmapcontroller_storeresult", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_grouptasks", "to": "fusion_task_map_view_fusiontaskmapcontroller_rebuildgroups", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_meta", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_getdomain", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_storeresult", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_rebuildgroups", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_loadandrender", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_softrefresh", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_onmodelupdate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_initmap", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_clearmarkers", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_clearroute", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_placemarkers", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_renderroute", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_pointalongleg", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_haversine", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_createtravellabel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_startrouteanimation", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_opentaskpopup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_togglesidebar", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_togglegroup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_isgroupcollapsed", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_focustask", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggledayfilter", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_isgroupvisible", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_showalldays", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_showtodayonly", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggletechfilter", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_istechvisible", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_showalltechs", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggletraffic", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggletasks", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggletechnicians", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggleroute", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_onrefresh", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_opentask", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller", "to": "fusion_task_map_view_fusiontaskmapcontroller_createnewtask", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_meta", "to": "fusion_task_map_view_fusiontaskmapcontroller_getdomain", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_getdomain", "to": "fusion_task_map_view_fusiontaskmapcontroller_loadandrender", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_getdomain", "to": "fusion_task_map_view_fusiontaskmapcontroller_softrefresh", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_getdomain", "to": "fusion_task_map_view_fusiontaskmapcontroller_onmodelupdate", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_storeresult", "to": "fusion_task_map_view_fusiontaskmapcontroller_rebuildgroups", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_storeresult", "to": "fusion_task_map_view_fusiontaskmapcontroller_loadandrender", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_storeresult", "to": "fusion_task_map_view_fusiontaskmapcontroller_softrefresh", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_storeresult", "to": "fusion_task_map_view_fusiontaskmapcontroller_onmodelupdate", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rebuildgroups", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggletechfilter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rebuildgroups", "to": "fusion_task_map_view_fusiontaskmapcontroller_showalltechs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_loadandrender", "to": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_loadandrender", "to": "fusion_task_map_view_fusiontaskmapcontroller_initmap", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_loadandrender", "to": "fusion_task_map_view_fusiontaskmapcontroller_onrefresh", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_softrefresh", "to": "fusion_task_map_view_fusiontaskmapcontroller_placemarkers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_onmodelupdate", "to": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_initmap", "to": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_clearroute", "to": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_clearroute", "to": "fusion_task_map_view_fusiontaskmapcontroller_renderroute", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_clearroute", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggleroute", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_placemarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_renderroute", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggledayfilter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_showalldays", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_showtodayonly", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggletechfilter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_showalltechs", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggletasks", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_rendermarkers", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggletechnicians", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_renderroute", "to": "fusion_task_map_view_fusiontaskmapcontroller_toggleroute", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_pointalongleg", "to": "fusion_task_map_view_fusiontaskmapcontroller_haversine", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusiontaskmapcontroller_opentaskpopup", "to": "fusion_task_map_view_fusiontaskmapcontroller_focustask", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_task_map_view_fusionmaparchparser", "to": "fusion_task_map_view_fusionmaparchparser_parse", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}];
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 74}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 51}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 41}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 38}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 37}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 18}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 16}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 3}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 2}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 2}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 2}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 1}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 1}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 1}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 1}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 1}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 1}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 1}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 1}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 1}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 1}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 1}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 1}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 1}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 1}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 1}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 1}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 1}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 1}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 1}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 1}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 1}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 1}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 1}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 1}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 1}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 1}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 1}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 1}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 1}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 1}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 1}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 1}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 1}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 1}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 1}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 1}];
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
function esc(s) {
return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}
// Build vis datasets
const nodesDS = new vis.DataSet(RAW_NODES.map(n => ({
id: n.id, label: n.label, color: n.color, size: n.size,
font: n.font, title: n.title,
_community: n.community, _community_name: n.community_name,
_source_file: n.source_file, _file_type: n.file_type, _degree: n.degree,
})));
const edgesDS = new vis.DataSet(RAW_EDGES.map((e, i) => ({
id: i, from: e.from, to: e.to,
label: '',
title: e.title,
dashes: e.dashes,
width: e.width,
color: e.color,
arrows: { to: { enabled: true, scaleFactor: 0.5 } },
})));
const container = document.getElementById('graph');
const network = new vis.Network(container, { nodes: nodesDS, edges: edgesDS }, {
physics: {
enabled: true,
solver: 'forceAtlas2Based',
forceAtlas2Based: {
gravitationalConstant: -60,
centralGravity: 0.005,
springLength: 120,
springConstant: 0.08,
damping: 0.4,
avoidOverlap: 0.8,
},
stabilization: { iterations: 200, fit: true },
},
interaction: {
hover: true,
tooltipDelay: 100,
hideEdgesOnDrag: true,
navigationButtons: false,
keyboard: false,
},
nodes: { shape: 'dot', borderWidth: 1.5 },
edges: { smooth: { type: 'continuous', roundness: 0.2 }, selectionWidth: 3 },
});
network.once('stabilizationIterationsDone', () => {
network.setOptions({ physics: { enabled: false } });
});
function showInfo(nodeId) {
const n = nodesDS.get(nodeId);
if (!n) return;
const neighborIds = network.getConnectedNodes(nodeId);
const neighborItems = neighborIds.map(nid => {
const nb = nodesDS.get(nid);
const color = nb ? nb.color.background : '#555';
return `<span class="neighbor-link" style="border-left-color:${esc(color)}" onclick="focusNode(${JSON.stringify(nid)})">${esc(nb ? nb.label : nid)}</span>`;
}).join('');
document.getElementById('info-content').innerHTML = `
<div class="field"><b>${esc(n.label)}</b></div>
<div class="field">Type: ${esc(n._file_type || 'unknown')}</div>
<div class="field">Community: ${esc(n._community_name)}</div>
<div class="field">Source: ${esc(n._source_file || '-')}</div>
<div class="field">Degree: ${n._degree}</div>
${neighborIds.length ? `<div class="field" style="margin-top:8px;color:#aaa;font-size:11px">Neighbors (${neighborIds.length})</div><div id="neighbors-list">${neighborItems}</div>` : ''}
`;
}
function focusNode(nodeId) {
network.focus(nodeId, { scale: 1.4, animation: true });
network.selectNodes([nodeId]);
showInfo(nodeId);
}
// Track hovered node — hover detection is more reliable than click params
let hoveredNodeId = null;
network.on('hoverNode', params => {
hoveredNodeId = params.node;
container.style.cursor = 'pointer';
});
network.on('blurNode', () => {
hoveredNodeId = null;
container.style.cursor = 'default';
});
container.addEventListener('click', () => {
if (hoveredNodeId !== null) {
showInfo(hoveredNodeId);
network.selectNodes([hoveredNodeId]);
}
});
network.on('click', params => {
if (params.nodes.length > 0) {
showInfo(params.nodes[0]);
} else if (hoveredNodeId === null) {
document.getElementById('info-content').innerHTML = '<span class="empty">Click a node to inspect it</span>';
}
});
const searchInput = document.getElementById('search');
const searchResults = document.getElementById('search-results');
searchInput.addEventListener('input', () => {
const q = searchInput.value.toLowerCase().trim();
searchResults.innerHTML = '';
if (!q) { searchResults.style.display = 'none'; return; }
const matches = RAW_NODES.filter(n => n.label.toLowerCase().includes(q)).slice(0, 20);
if (!matches.length) { searchResults.style.display = 'none'; return; }
searchResults.style.display = 'block';
matches.forEach(n => {
const el = document.createElement('div');
el.className = 'search-item';
el.textContent = n.label;
el.style.borderLeft = `3px solid ${n.color.background}`;
el.style.paddingLeft = '8px';
el.onclick = () => {
network.focus(n.id, { scale: 1.5, animation: true });
network.selectNodes([n.id]);
showInfo(n.id);
searchResults.style.display = 'none';
searchInput.value = '';
};
searchResults.appendChild(el);
});
});
document.addEventListener('click', e => {
if (!searchResults.contains(e.target) && e.target !== searchInput)
searchResults.style.display = 'none';
});
const hiddenCommunities = new Set();
const legendEl = document.getElementById('legend');
LEGEND.forEach(c => {
const item = document.createElement('div');
item.className = 'legend-item';
item.innerHTML = `<div class="legend-dot" style="background:${c.color}"></div>
<span class="legend-label">${c.label}</span>
<span class="legend-count">${c.count}</span>`;
item.onclick = () => {
if (hiddenCommunities.has(c.cid)) {
hiddenCommunities.delete(c.cid);
item.classList.remove('dimmed');
} else {
hiddenCommunities.add(c.cid);
item.classList.add('dimmed');
}
const updates = RAW_NODES
.filter(n => n.community === c.cid)
.map(n => ({ id: n.id, hidden: hiddenCommunities.has(c.cid) }));
nodesDS.update(updates);
};
legendEl.appendChild(item);
});
</script>
<script>
// Render hyperedges as shaded regions
const hyperedges = [];
// afterDrawing passes ctx already transformed to network coordinate space.
// Draw node positions raw — no manual pan/zoom/DPR math needed.
network.on('afterDrawing', function(ctx) {
hyperedges.forEach(h => {
const positions = h.nodes
.map(nid => network.getPositions([nid])[nid])
.filter(p => p !== undefined);
if (positions.length < 2) return;
ctx.save();
ctx.globalAlpha = 0.12;
ctx.fillStyle = '#6366f1';
ctx.strokeStyle = '#6366f1';
ctx.lineWidth = 2;
ctx.beginPath();
// Centroid and expanded hull in network coordinates
const cx = positions.reduce((s, p) => s + p.x, 0) / positions.length;
const cy = positions.reduce((s, p) => s + p.y, 0) / positions.length;
const expanded = positions.map(p => ({
x: cx + (p.x - cx) * 1.15,
y: cy + (p.y - cy) * 1.15
}));
ctx.moveTo(expanded[0].x, expanded[0].y);
expanded.slice(1).forEach(p => ctx.lineTo(p.x, p.y));
ctx.closePath();
ctx.fill();
ctx.globalAlpha = 0.4;
ctx.stroke();
// Label
ctx.globalAlpha = 0.8;
ctx.fillStyle = '#4f46e5';
ctx.font = 'bold 11px sans-serif';
ctx.textAlign = 'center';
ctx.fillText(h.label, cx, cy - 5);
ctx.restore();
});
});
</script>
</body>
</html>