Files
Odoo-Modules/fusion_iot/graphify-out/graph.html
gsinghpal 41d0908ade changes
2026-04-24 21:04:38 -04:00

257 lines
388 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>graphify - /Users/gurpreet/Github/Odoo-Modules/fusion_iot/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">473 nodes &middot; 613 edges &middot; 64 communities</div>
</div>
<script>
const RAW_NODES = [{"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_hooks_py", "label": "hooks.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "hooks.py", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/hooks.py", "file_type": "code", "degree": 4}, {"id": "hooks_post_init_hook", "label": "post_init_hook()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "post_init_hook()", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/hooks.py", "file_type": "code", "degree": 3}, {"id": "hooks_backfill_uuids", "label": "_backfill_uuids()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_backfill_uuids()", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/hooks.py", "file_type": "code", "degree": 2}, {"id": "hooks_backfill_sensor_types", "label": "_backfill_sensor_types()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_backfill_sensor_types()", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/hooks.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_init_py", "label": "__init__.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "__init__.py", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/__init__.py", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_manifest_py", "label": "__manifest__.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__manifest__.py", "community": 39, "community_name": "Community 39", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/__manifest__.py", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fusion_plating_tank_py", "label": "fusion_plating_tank.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_plating_tank.py", "community": 23, "community_name": "Community 23", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fusion_plating_tank.py", "file_type": "code", "degree": 2}, {"id": "fusion_plating_tank_fusionplatingtank", "label": "FusionPlatingTank", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionPlatingTank", "community": 23, "community_name": "Community 23", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fusion_plating_tank.py", "file_type": "code", "degree": 1}, {"id": "fusion_plating_tank_compute_sensor_stats", "label": "_compute_sensor_stats()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_sensor_stats()", "community": 23, "community_name": "Community 23", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fusion_plating_tank.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_sensor_py", "label": "fp_tank_sensor.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "fp_tank_sensor.py", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 6}, {"id": "fp_tank_sensor_fptanksensor", "label": "FpTankSensor", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "FpTankSensor", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 4}, {"id": "fp_tank_sensor_compute_effective_location", "label": "_compute_effective_location()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_effective_location()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 1}, {"id": "fp_tank_sensor_compute_effective_target", "label": "_compute_effective_target()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_effective_target()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 1}, {"id": "fp_tank_sensor_compute_last_reading_display", "label": "_compute_last_reading_display()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_last_reading_display()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 1}, {"id": "fp_tank_sensor_create", "label": "create()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "create()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 1}, {"id": "fp_tank_sensor_compute_reading_count", "label": "_compute_reading_count()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_reading_count()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 1}, {"id": "fp_tank_sensor_fptanksensor_get_alert_range", "label": "._get_alert_range()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._get_alert_range()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 4}, {"id": "fp_tank_sensor_fptanksensor_get_setpoint", "label": "._get_setpoint()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._get_setpoint()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 3}, {"id": "fp_tank_sensor_fptanksensor_action_view_readings", "label": ".action_view_readings()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_view_readings()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "code", "degree": 1}, {"id": "fp_tank_sensor_rationale_267", "label": "Return (min, max) floats. Zero means 'no bound'.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return (min, max) floats. Zero means &#x27;no bound&#x27;.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "rationale", "degree": 1}, {"id": "fp_tank_sensor_rationale_278", "label": "Canonical (raw) setpoint used for deviation calcs. Returns 0.0 if no se", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Canonical (raw) setpoint used for deviation calcs. Returns 0.0 if no se", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_sensor.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_init_py", "label": "__init__.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 32, "community_name": "Community 32", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_sensor_dashboard_py", "label": "fp_sensor_dashboard.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "fp_sensor_dashboard.py", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_dashboard.py", "file_type": "code", "degree": 2}, {"id": "fp_sensor_dashboard_fpsensordashboard", "label": "FpSensorDashboard", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "FpSensorDashboard", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_dashboard.py", "file_type": "code", "degree": 3}, {"id": "fp_sensor_dashboard_compute_counts", "label": "_compute_counts()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_counts()", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_dashboard.py", "file_type": "code", "degree": 1}, {"id": "fp_sensor_dashboard_fpsensordashboard_action_view_sensors", "label": ".action_view_sensors()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_view_sensors()", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_dashboard.py", "file_type": "code", "degree": 1}, {"id": "fp_sensor_dashboard_fpsensordashboard_action_view_recent_readings", "label": ".action_view_recent_readings()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_view_recent_readings()", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_dashboard.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_reading_py", "label": "fp_tank_reading.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "fp_tank_reading.py", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "code", "degree": 5}, {"id": "fp_tank_reading_fptankreading", "label": "FpTankReading", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "FpTankReading", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "code", "degree": 3}, {"id": "fp_tank_reading_compute_display", "label": "_compute_display()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_display()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "code", "degree": 1}, {"id": "fp_tank_reading_compute_deviation", "label": "_compute_deviation()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_deviation()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "code", "degree": 2}, {"id": "fp_tank_reading_compute_display_name", "label": "_compute_display_name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_display_name()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "code", "degree": 1}, {"id": "fp_tank_reading_create", "label": "create()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": "create()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "code", "degree": 9}, {"id": "fp_tank_reading_fptankreading_evaluate_spec", "label": "._evaluate_spec()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._evaluate_spec()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "code", "degree": 5}, {"id": "fp_tank_reading_fptankreading_raise_quality_hold", "label": "._raise_quality_hold()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._raise_quality_hold()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "code", "degree": 5}, {"id": "fp_tank_reading_rationale_209", "label": "Set `in_spec`, update sensor cache, raise hold if this reading is the fi", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Set `in_spec`, update sensor cache, raise hold if this reading is the fi", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "rationale", "degree": 1}, {"id": "fp_tank_reading_rationale_237", "label": "Create a quality hold describing the out-of-spec reading.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Create a quality hold describing the out-of-spec reading.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_tank_reading.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_sensor_type_py", "label": "fp_sensor_type.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "fp_sensor_type.py", "community": 21, "community_name": "Community 21", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_type.py", "file_type": "code", "degree": 1}, {"id": "fp_sensor_type_fpsensortype", "label": "FpSensorType", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "FpSensorType", "community": 21, "community_name": "Community 21", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_type.py", "file_type": "code", "degree": 3}, {"id": "fp_sensor_type_fpsensortype_compute_sensor_count", "label": "._compute_sensor_count()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._compute_sensor_count()", "community": 21, "community_name": "Community 21", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_type.py", "file_type": "code", "degree": 1}, {"id": "fp_sensor_type_fpsensortype_action_view_sensors", "label": ".action_view_sensors()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_view_sensors()", "community": 21, "community_name": "Community 21", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/models/fp_sensor_type.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_controllers_fp_iot_ingest_py", "label": "fp_iot_ingest.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "fp_iot_ingest.py", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/controllers/fp_iot_ingest.py", "file_type": "code", "degree": 3}, {"id": "fp_iot_ingest_parse_read_at", "label": "_parse_read_at()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "_parse_read_at()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/controllers/fp_iot_ingest.py", "file_type": "code", "degree": 3}, {"id": "fp_iot_ingest_fpiotingestcontroller", "label": "FpIotIngestController", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "FpIotIngestController", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/controllers/fp_iot_ingest.py", "file_type": "code", "degree": 1}, {"id": "fp_iot_ingest_ingest", "label": "ingest()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "ingest()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/controllers/fp_iot_ingest.py", "file_type": "code", "degree": 3}, {"id": "fp_iot_ingest_rationale_43", "label": "Best-effort ISO-8601 parse \u2014 fall back to 'now' on garbage input.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Best-effort ISO-8601 parse \u2014 fall back to &#x27;now&#x27; on garbage input.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/controllers/fp_iot_ingest.py", "file_type": "rationale", "degree": 1}, {"id": "fp_iot_ingest_rationale_64", "label": "Accept one-or-many sensor readings and land them in fp.tank.reading.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Accept one-or-many sensor readings and land them in fp.tank.reading.", "community": 40, "community_name": "Community 40", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/controllers/fp_iot_ingest.py", "file_type": "rationale", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_controllers_init_py", "label": "__init__.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 33, "community_name": "Community 33", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/fusion_plating_iot/controllers/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_init_py", "label": "__init__.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 34, "community_name": "Community 34", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_manifest_py", "label": "__manifest__.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__manifest__.py", "community": 41, "community_name": "Community 41", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/__manifest__.py", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_worldlinedriver_l_py", "label": "WorldlineDriver_L.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "WorldlineDriver_L.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_L.py", "file_type": "code", "degree": 1}, {"id": "worldlinedriver_l_worldlinedriver", "label": "WorldlineDriver", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "WorldlineDriver", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_L.py", "file_type": "code", "degree": 6}, {"id": "ctypesterminaldriver", "label": "CtypesTerminalDriver", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "CtypesTerminalDriver", "community": 2, "community_name": "Community 2", "source_file": "", "file_type": "code", "degree": 3}, {"id": "worldlinedriver_l_worldlinedriver_init", "label": ".__init__()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_L.py", "file_type": "code", "degree": 1}, {"id": "worldlinedriver_l_worldlinedriver_processtransaction", "label": ".processTransaction()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".processTransaction()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_L.py", "file_type": "code", "degree": 4}, {"id": "worldlinedriver_l_worldlinedriver_canceltransaction", "label": ".cancelTransaction()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".cancelTransaction()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_L.py", "file_type": "code", "degree": 4}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "label": "IngenicoDriver.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 29.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IngenicoDriver.py", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 13}, {"id": "ingenicodriver_ingenicotagtype", "label": "IngenicoTagType", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IngenicoTagType", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 5}, {"id": "ingenicodriver_ingenicotagtype_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 2}, {"id": "ingenicodriver_ingenicotagtype_getdict", "label": ".getDict()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".getDict()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_ingenicotagtype_hastag", "label": ".hasTag()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".hasTag()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_ingenicomessage", "label": "IngenicoMessage", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IngenicoMessage", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 5}, {"id": "ingenicodriver_gettagdetailsbycode", "label": "_getTagDetailsByCode()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "_getTagDetailsByCode()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_gettagdetailsbyname", "label": "_getTagDetailsByName()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_getTagDetailsByName()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 2}, {"id": "ingenicodriver_ingenicomessage_init", "label": ".__init__()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 2}, {"id": "ingenicodriver_outgoingingenicomessage", "label": "OutgoingIngenicoMessage", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 31.0, "font": {"size": 12, "color": "#ffffff"}, "title": "OutgoingIngenicoMessage", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 14}, {"id": "ingenicodriver_withlength", "label": "_withLength()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_withLength()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 2}, {"id": "ingenicodriver_getcrc32", "label": "_getCRC32()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "_getCRC32()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 4}, {"id": "ingenicodriver_generatetag", "label": "_generateTag()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 22.0, "font": {"size": 12, "color": "#ffffff"}, "title": "_generateTag()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 8}, {"id": "ingenicodriver_generatemsg", "label": "_generateMsg()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "_generateMsg()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_outgoingingenicomessage_init", "label": ".__init__()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 22.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".__init__()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 8}, {"id": "ingenicodriver_outgoingingenicomessage_generateheader", "label": "._generateHeader()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._generateHeader()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 4}, {"id": "ingenicodriver_outgoingingenicomessage_generatefooter", "label": "._generateFooter()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._generateFooter()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 4}, {"id": "ingenicodriver_outgoingingenicomessage_generatemdc", "label": "._generateMDC()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._generateMDC()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 6}, {"id": "ingenicodriver_outgoingingenicomessage_generatebody", "label": "._generateBody()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._generateBody()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 5}, {"id": "ingenicodriver_outgoingingenicomessage_send", "label": ".send()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".send()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_incomingingenicomessage", "label": "IncomingIngenicoMessage", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "IncomingIngenicoMessage", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 20}, {"id": "ingenicodriver_hextoint", "label": "_hexToInt()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_hexToInt()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 2}, {"id": "ingenicodriver_incomingingenicomessage_getmsg", "label": "._getMsg()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._getMsg()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 6}, {"id": "ingenicodriver_incomingingenicomessage_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".__init__()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 6}, {"id": "ingenicodriver_incomingingenicomessage_getlength", "label": "._getLength()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._getLength()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 4}, {"id": "ingenicodriver_incomingingenicomessage_gettag", "label": "._getTag()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._getTag()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 6}, {"id": "ingenicodriver_incomingingenicomessage_getprotocolid", "label": ".getProtocolId()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".getProtocolId()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_incomingingenicomessage_getterminalid", "label": ".getTerminalId()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".getTerminalId()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_incomingingenicomessage_gettransactionresult", "label": ".getTransactionResult()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".getTransactionResult()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_incomingingenicomessage_gettransactionstage", "label": ".getTransactionStage()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".getTransactionStage()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_incomingingenicomessage_gettransactionticket", "label": ".getTransactionTicket()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".getTransactionTicket()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 4}, {"id": "ingenicodriver_incomingingenicomessage_getkeepaliveinterval", "label": ".getKeepAliveInterval()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".getKeepAliveInterval()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 2}, {"id": "ingenicodriver_incomingingenicomessage_getkeepalivereasonid", "label": ".getKeepAliveReasonId()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".getKeepAliveReasonId()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 4}, {"id": "ingenicodriver_incomingingenicomessage_getmessagetype", "label": ".getMessageType()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".getMessageType()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 4}, {"id": "ingenicodriver_ingenicodriver", "label": "IngenicoDriver", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 25.0, "font": {"size": 12, "color": "#ffffff"}, "title": "IngenicoDriver", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 10}, {"id": "driver", "label": "Driver", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Driver", "community": 5, "community_name": "Community 5", "source_file": "", "file_type": "code", "degree": 2}, {"id": "ingenicodriver_ingenicodriver_init", "label": ".__init__()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".__init__()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_supported", "label": "supported()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": "supported()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 7}, {"id": "ingenicodriver_ingenicodriver_disconnect", "label": ".disconnect()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".disconnect()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 4}, {"id": "ingenicodriver_ingenicodriver_getsequence", "label": "._getSequence()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._getSequence()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_ingenicodriver_outgoingmessage", "label": "._outgoingMessage()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._outgoingMessage()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 6}, {"id": "ingenicodriver_ingenicodriver_action_default", "label": "._action_default()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._action_default()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_ingenicodriver_recv", "label": ".recv()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".recv()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 5}, {"id": "ingenicodriver_ingenicodriver_send", "label": ".send()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".send()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 3}, {"id": "ingenicodriver_ingenicodriver_run", "label": ".run()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 25.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".run()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "code", "degree": 10}, {"id": "ingenicodriver_rationale_26", "label": "Tag type Function. This class is used to make working with the provided Ing", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Tag type Function. This class is used to make working with the provided Ing", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_33", "label": "Args: name (str): Human readable tag name. tag (b): Iden", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Args: name (str): Human readable tag name. tag (b): Iden", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_51", "label": "Get a dictionary with the tag Returns { name (str): tag nam", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get a dictionary with the tag Returns { name (str): tag nam", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_70", "label": "Check if tag is equal Check if a tag is equal, regardless of the case o", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if tag is equal Check if a tag is equal, regardless of the case o", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_80", "label": "Base Class for Ingenico Messages. Use OutgoingIngenicoMessage or IncommingIn", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Base Class for Ingenico Messages. Use OutgoingIngenicoMessage or IncommingIn", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_316", "label": "Search for tag in _const using the hex identifier. Returns InenicoTagTy", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Search for tag in _const using the hex identifier. Returns InenicoTagTy", "community": 42, "community_name": "Community 42", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 0}, {"id": "ingenicodriver_rationale_327", "label": "Search for tag in _const providing the Human readable name. Returns Ine", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Search for tag in _const providing the Human readable name. Returns Ine", "community": 43, "community_name": "Community 43", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 0}, {"id": "ingenicodriver_rationale_337", "label": "Base Initialisation of Ingenico Message. Args: dev (Obj): t", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Base Initialisation of Ingenico Message. Args: dev (Obj): t", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_348", "label": "Return tag content with given length. Some tags have to have a fixed le", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Return tag content with given length. Some tags have to have a fixed le", "community": 44, "community_name": "Community 44", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 0}, {"id": "ingenicodriver_rationale_368", "label": "Return the crc for the specified message as a bytestring. The result wi", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Return the crc for the specified message as a bytestring. The result wi", "community": 45, "community_name": "Community 45", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 0}, {"id": "ingenicodriver_rationale_379", "label": "Return formatted tag with tag identifier + length + content. The conten", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Return formatted tag with tag identifier + length + content. The conten", "community": 46, "community_name": "Community 46", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 0}, {"id": "ingenicodriver_rationale_395", "label": "Return The formatted outgoing message including MessageLength and Magic string.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Return The formatted outgoing message including MessageLength and Magic string.", "community": 47, "community_name": "Community 47", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 0}, {"id": "ingenicodriver_rationale_411", "label": "Initialisation of Outgoing Ingenico messages. After initialisation the", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Initialisation of Outgoing Ingenico messages. After initialisation the", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_457", "label": "Return formatted header. The header does not depend on the message type", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return formatted header. The header does not depend on the message type", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_470", "label": "Return the formatted footer The footer can only be created after the bo", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return the formatted footer The footer can only be created after the bo", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_480", "label": "Return the Modification Detection Code needed to generate the footer. T", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return the Modification Detection Code needed to generate the footer. T", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_490", "label": "Return formatted body and Modification Detection Code. Args:", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return formatted body and Modification Detection Code. Args:", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_515", "label": "Send the generated message to the device. This is the only function tha", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Send the generated message to the device. This is the only function tha", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_529", "label": "Return a dictionary of the next tag in the buffer. Returns the decoded", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return a dictionary of the next tag in the buffer. Returns the decoded", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_562", "label": "Initialisation of incomming Ingenico messages. After initialisation the", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Initialisation of incomming Ingenico messages. After initialisation the", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_600", "label": "Returns the message length of the tag as well as the length of the message lengt", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Returns the message length of the tag as well as the length of the message lengt", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_619", "label": "Return the tag identifier The tag identifier is read directly from the", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return the tag identifier The tag identifier is read directly from the", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_637", "label": "Return The Protocol Id from the tagtree.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return The Protocol Id from the tagtree.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_642", "label": "Return The Protocol Id from the tagtree.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return The Protocol Id from the tagtree.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_647", "label": "Return The Protocol Id from the tagtree.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return The Protocol Id from the tagtree.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_654", "label": "Return The Transaction Stage from the tagtree. If the transaction stage", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return The Transaction Stage from the tagtree. If the transaction stage", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_663", "label": "Return The Transaction ticket from the tagtree. If there is no ticket d", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return The Transaction ticket from the tagtree. If there is no ticket d", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_678", "label": "Return the keep alive interval from the tagtree. If there is co", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return the keep alive interval from the tagtree. If there is co", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_687", "label": "Return The keep alive reason from the tagtree. If the message is no kee", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return The keep alive reason from the tagtree. If the message is no kee", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_696", "label": "Return The message type from the constants, as found in the tagtree.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Return The message type from the constants, as found in the tagtree.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_724", "label": "Try to initialize a connection with the payment terminal. Override", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Try to initialize a connection with the payment terminal. Override", "community": 48, "community_name": "Community 48", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 0}, {"id": "ingenicodriver_rationale_769", "label": "Returns the sequence number for the next outgoing message. The sequence", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Returns the sequence number for the next outgoing message. The sequence", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_778", "label": "Base function to generate in instance of OutgoingIngenicoMessage.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Base function to generate in instance of OutgoingIngenicoMessage.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_784", "label": "Action trigered on request from Odoo. Override", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Action trigered on request from Odoo. Override", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "ingenicodriver_rationale_816", "label": "If an payment terminal is found, start listening for messages from the terminal.", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "If an payment terminal is found, start listening for messages from the terminal.", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/IngenicoDriver.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_worldlinedriver_w_py", "label": "WorldlineDriver_W.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "WorldlineDriver_W.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_W.py", "file_type": "code", "degree": 1}, {"id": "worldlinedriver_w_worldlinedriver", "label": "WorldlineDriver", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "WorldlineDriver", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_W.py", "file_type": "code", "degree": 6}, {"id": "worldlinedriver_w_worldlinedriver_init", "label": ".__init__()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_W.py", "file_type": "code", "degree": 1}, {"id": "worldlinedriver_w_worldlinedriver_processtransaction", "label": ".processTransaction()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".processTransaction()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_W.py", "file_type": "code", "degree": 4}, {"id": "worldlinedriver_w_worldlinedriver_canceltransaction", "label": ".cancelTransaction()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".cancelTransaction()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/WorldlineDriver_W.py", "file_type": "code", "degree": 4}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_sixdriver_py", "label": "SixDriver.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "SixDriver.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/SixDriver.py", "file_type": "code", "degree": 1}, {"id": "sixdriver_sixdriver", "label": "SixDriver", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": "SixDriver", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/SixDriver.py", "file_type": "code", "degree": 7}, {"id": "sixdriver_sixdriver_init", "label": ".__init__()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/SixDriver.py", "file_type": "code", "degree": 1}, {"id": "sixdriver_sixdriver_processtransaction", "label": ".processTransaction()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".processTransaction()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/SixDriver.py", "file_type": "code", "degree": 3}, {"id": "sixdriver_sixdriver_canceltransaction", "label": ".cancelTransaction()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".cancelTransaction()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/SixDriver.py", "file_type": "code", "degree": 2}, {"id": "sixdriver_sixdriver_six_terminal_balance", "label": ".six_terminal_balance()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".six_terminal_balance()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/drivers/SixDriver.py", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_lib_ctypes_terminal_driver_py", "label": "ctypes_terminal_driver.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": "ctypes_terminal_driver.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 7}, {"id": "ctypes_terminal_driver_import_ctypes_library", "label": "import_ctypes_library()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "import_ctypes_library()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 2}, {"id": "ctypes_terminal_driver_create_ctypes_string_buffer", "label": "create_ctypes_string_buffer()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 25.0, "font": {"size": 12, "color": "#ffffff"}, "title": "create_ctypes_string_buffer()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 10}, {"id": "ctypes_terminal_driver_ctypesterminaldriver", "label": "CtypesTerminalDriver", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 28.0, "font": {"size": 12, "color": "#ffffff"}, "title": "CtypesTerminalDriver", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 12}, {"id": "ctypes_terminal_driver_ctypesterminaldriver_init", "label": ".__init__()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 1}, {"id": "ctypes_terminal_driver_supported", "label": "supported()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "supported()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 1}, {"id": "ctypes_terminal_driver_ctypesterminaldriver_action_default", "label": "._action_default()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._action_default()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 3}, {"id": "ctypes_terminal_driver_ctypesterminaldriver_run", "label": ".run()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".run()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 3}, {"id": "ctypes_terminal_driver_ctypesterminaldriver_check_transaction_delay", "label": "._check_transaction_delay()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._check_transaction_delay()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 5}, {"id": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": ".send_status()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 23.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".send_status()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 9}, {"id": "ctypes_terminal_driver_processtransaction", "label": "processTransaction()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "processTransaction()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 2}, {"id": "ctypes_terminal_driver_canceltransaction", "label": "cancelTransaction()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "cancelTransaction()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 2}, {"id": "ctypes_terminal_driver_ctypesterminaldriver_six_terminal_balance", "label": ".six_terminal_balance()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".six_terminal_balance()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "code", "degree": 3}, {"id": "ctypes_terminal_driver_rationale_28", "label": "Import a library using ctypes, independently of the OS. :param lib_subfolder", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Import a library using ctypes, independently of the OS. :param lib_subfolder", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "rationale", "degree": 1}, {"id": "ctypes_terminal_driver_rationale_51", "label": "Create a ctypes buffer of CTYPES_BUFFER_SIZE size", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Create a ctypes buffer of CTYPES_BUFFER_SIZE size", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "rationale", "degree": 1}, {"id": "ctypes_terminal_driver_rationale_57", "label": "This class is the parent class of all the terminal drivers using ctypes. Wor", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "This class is the parent class of all the terminal drivers using ctypes. Wor", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "rationale", "degree": 1}, {"id": "ctypes_terminal_driver_rationale_139", "label": "Method implementing the transaction processing", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Method implementing the transaction processing", "community": 49, "community_name": "Community 49", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "rationale", "degree": 0}, {"id": "ctypes_terminal_driver_rationale_145", "label": "Method implementing the ongoing transaction request cancellation", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Method implementing the ongoing transaction request cancellation", "community": 50, "community_name": "Community 50", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "rationale", "degree": 0}, {"id": "ctypes_terminal_driver_rationale_150", "label": "Method implementing the terminal balance request (only for Worldline \"Six\")", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Method implementing the terminal balance request (only for Worldline &quot;Six&quot;)", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "rationale", "degree": 1}, {"id": "ctypes_terminal_driver_rationale_132", "label": "# TODO: add `stacklevel=2` in image with python version > 3.8", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "# TODO: add `stacklevel=2` in image with python version &gt; 3.8", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/lib/ctypes_terminal_driver.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_timinterface_py", "label": "TIMInterface.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "TIMInterface.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/TIMInterface.py", "file_type": "code", "degree": 1}, {"id": "timinterface_timinterface", "label": "TIMInterface", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "TIMInterface", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/TIMInterface.py", "file_type": "code", "degree": 4}, {"id": "interface", "label": "Interface", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "Interface", "community": 4, "community_name": "Community 4", "source_file": "", "file_type": "code", "degree": 4}, {"id": "timinterface_timinterface_init", "label": ".__init__()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/TIMInterface.py", "file_type": "code", "degree": 1}, {"id": "timinterface_timinterface_get_devices", "label": ".get_devices()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_devices()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/TIMInterface.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_socketinterface_py", "label": "SocketInterface.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "SocketInterface.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "code", "degree": 2}, {"id": "socketinterface_socketinterface", "label": "SocketInterface", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "SocketInterface", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "code", "degree": 6}, {"id": "socketinterface_socketinterface_init", "label": ".__init__()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "code", "degree": 2}, {"id": "socketinterface_socketinterface_open_socket", "label": ".open_socket()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".open_socket()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "code", "degree": 2}, {"id": "socketinterface_create_socket_device", "label": "create_socket_device()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "create_socket_device()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "code", "degree": 3}, {"id": "socketinterface_socketinterface_replace_socket_device", "label": ".replace_socket_device()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".replace_socket_device()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "code", "degree": 5}, {"id": "socketinterface_socketinterface_get_devices", "label": ".get_devices()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".get_devices()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "code", "degree": 3}, {"id": "socketinterface_rationale_36", "label": "Creates a socket_devices entry that wraps the socket. The Interface thre", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Creates a socket_devices entry that wraps the socket. The Interface thre", "community": 51, "community_name": "Community 51", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "rationale", "degree": 0}, {"id": "socketinterface_rationale_44", "label": "Replaces an existing socket_devices entry. The socket contained in the s", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Replaces an existing socket_devices entry. The socket contained in the s", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/SocketInterface.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_ctepinterface_w_py", "label": "CTEPInterface_W.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "CTEPInterface_W.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/CTEPInterface_W.py", "file_type": "code", "degree": 1}, {"id": "ctepinterface_w_get_devices", "label": "get_devices()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "get_devices()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/CTEPInterface_W.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_btinterface_l_py", "label": "BTInterface_L.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "BTInterface_L.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "code", "degree": 3}, {"id": "btinterface_l_gattbtmanager", "label": "GattBtManager", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "GattBtManager", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "code", "degree": 5}, {"id": "gatt_devicemanager", "label": "Gatt_DeviceManager", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Gatt_DeviceManager", "community": 4, "community_name": "Community 4", "source_file": "", "file_type": "code", "degree": 1}, {"id": "btinterface_l_gattbtmanager_device_discovered", "label": ".device_discovered()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".device_discovered()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "code", "degree": 1}, {"id": "btinterface_l_gattbtmanager_run", "label": ".run()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".run()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "code", "degree": 3}, {"id": "btinterface_l_btmanager", "label": "BtManager", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "BtManager", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "code", "degree": 3}, {"id": "thread", "label": "Thread", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Thread", "community": 4, "community_name": "Community 4", "source_file": "", "file_type": "code", "degree": 1}, {"id": "btinterface_l_btmanager_run", "label": ".run()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".run()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "code", "degree": 4}, {"id": "btinterface_l_btinterface", "label": "BTInterface", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "BTInterface", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "code", "degree": 3}, {"id": "btinterface_l_btinterface_get_devices", "label": ".get_devices()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_devices()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "code", "degree": 1}, {"id": "btinterface_l_rationale_21", "label": "Override gatt.DeviceManager.run() method to avoid calling GObject.MainLo", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Override gatt.DeviceManager.run() method to avoid calling GObject.MainLo", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/BTInterface_L.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_ctepinterface_l_py", "label": "CTEPInterface_L.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "CTEPInterface_L.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/CTEPInterface_L.py", "file_type": "code", "degree": 1}, {"id": "ctepinterface_l_ctepinterface", "label": "CTEPInterface", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "CTEPInterface", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/CTEPInterface_L.py", "file_type": "code", "degree": 4}, {"id": "ctepinterface_l_ctepinterface_init", "label": ".__init__()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/CTEPInterface_L.py", "file_type": "code", "degree": 1}, {"id": "ctepinterface_l_ctepinterface_get_devices", "label": ".get_devices()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_devices()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/iot_handlers/interfaces/CTEPInterface_L.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_test_printer_tour_py", "label": "test_printer_tour.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "test_printer_tour.py", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_printer_tour.py", "file_type": "code", "degree": 1}, {"id": "test_printer_tour_testui", "label": "TestUi", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "TestUi", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_printer_tour.py", "file_type": "code", "degree": 4}, {"id": "iotcommontest", "label": "IotCommonTest", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "IotCommonTest", "community": 12, "community_name": "Community 12", "source_file": "", "file_type": "code", "degree": 1}, {"id": "test_printer_tour_testui_test_iot_device_test_button", "label": ".test_iot_device_test_button()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_iot_device_test_button()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_printer_tour.py", "file_type": "code", "degree": 2}, {"id": "test_printer_tour_rationale_11", "label": "Make sure we can use the websocket to test printers using the 'Test' but", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Make sure we can use the websocket to test printers using the &#x27;Test&#x27; but", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_printer_tour.py", "file_type": "rationale", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_test_ingenico_driver_py", "label": "test_ingenico_driver.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "test_ingenico_driver.py", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 4}, {"id": "test_ingenico_driver_mocksocket", "label": "MockSocket", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "MockSocket", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 6}, {"id": "test_ingenico_driver_mocksocket_init", "label": ".__init__()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 1}, {"id": "test_ingenico_driver_mocksocket_recv", "label": ".recv()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".recv()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 1}, {"id": "test_ingenico_driver_testincomingtransactionresponse", "label": "TestIncomingTransactionResponse", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "TestIncomingTransactionResponse", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 5}, {"id": "basecase", "label": "BaseCase", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "BaseCase", "community": 0, "community_name": "Community 0", "source_file": "", "file_type": "code", "degree": 2}, {"id": "test_ingenico_driver_setup", "label": "setUp()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "setUp()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 2}, {"id": "test_ingenico_driver_testincomingtransactionresponse_test_parse_ticketdata", "label": ".test_parse_ticketdata()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".test_parse_ticketdata()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 4}, {"id": "test_ingenico_driver_testoutgoingingenicomessage", "label": "TestOutgoingIngenicoMessage", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": "TestOutgoingIngenicoMessage", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 7}, {"id": "test_ingenico_driver_testoutgoingingenicomessage_test_mdc_tag_length", "label": ".test_mdc_tag_length()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_mdc_tag_length()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 2}, {"id": "test_ingenico_driver_testoutgoingingenicomessage_test_unpadded_crc", "label": ".test_unpadded_crc()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_unpadded_crc()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 2}, {"id": "test_ingenico_driver_testoutgoingingenicomessage_test_padded_crc", "label": ".test_padded_crc()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_padded_crc()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/test_ingenico_driver.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_init_py", "label": "__init__.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 35, "community_name": "Community 35", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_common_py", "label": "common.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "common.py", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/common.py", "file_type": "code", "degree": 2}, {"id": "common_iotcommontest", "label": "IotCommonTest", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "IotCommonTest", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/common.py", "file_type": "code", "degree": 6}, {"id": "httpcase", "label": "HttpCase", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "HttpCase", "community": 12, "community_name": "Community 12", "source_file": "", "file_type": "code", "degree": 1}, {"id": "common_setupclass", "label": "setUpClass()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "setUpClass()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/common.py", "file_type": "code", "degree": 2}, {"id": "common_iotcommontest_setup", "label": ".setUp()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setUp()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/tests/common.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_wizard_add_iot_box_py", "label": "add_iot_box.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "add_iot_box.py", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 1}, {"id": "add_iot_box_addiotbox", "label": "AddIotBox", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 26.5, "font": {"size": 12, "color": "#ffffff"}, "title": "AddIotBox", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 11}, {"id": "add_iot_box_addiotbox_connect_iot_box_with_pairing_code", "label": "._connect_iot_box_with_pairing_code()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._connect_iot_box_with_pairing_code()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 5}, {"id": "add_iot_box_addiotbox_open_select_box_to_connect_action", "label": "._open_select_box_to_connect_action()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._open_select_box_to_connect_action()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 2}, {"id": "add_iot_box_addiotbox_open_enter_pairing_code_action", "label": "._open_enter_pairing_code_action()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._open_enter_pairing_code_action()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 2}, {"id": "add_iot_box_addiotbox_open_no_iot_box_found_action", "label": "._open_no_iot_box_found_action()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._open_no_iot_box_found_action()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 3}, {"id": "add_iot_box_addiotbox_open_connecting_action", "label": "._open_connecting_action()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._open_connecting_action()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 1}, {"id": "add_iot_box_addiotbox_open_documentation_url", "label": ".open_documentation_url()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".open_documentation_url()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 1}, {"id": "add_iot_box_addiotbox_start_stage", "label": "._start_stage()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._start_stage()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 7}, {"id": "add_iot_box_addiotbox_add_iot_box_wizard_action", "label": ".add_iot_box_wizard_action()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".add_iot_box_wizard_action()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 6}, {"id": "add_iot_box_addiotbox_pair_offline", "label": ".pair_offline()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".pair_offline()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 3}, {"id": "add_iot_box_addiotbox_compute_pairing_token", "label": "._compute_pairing_token()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._compute_pairing_token()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "code", "degree": 2}, {"id": "add_iot_box_rationale_35", "label": "Community repackage \u2014 the upstream version called out to Odoo S.A.'s iot", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Community repackage \u2014 the upstream version called out to Odoo S.A.&#x27;s iot", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "rationale", "degree": 1}, {"id": "add_iot_box_rationale_118", "label": "Make a request to discover local IoT Boxes If none are found, open the p", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Make a request to discover local IoT Boxes If none are found, open the p", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "rationale", "degree": 1}, {"id": "add_iot_box_rationale_139", "label": "Base action for the wizard used to connect IoT Boxes Depending on the st", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Base action for the wizard used to connect IoT Boxes Depending on the st", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "rationale", "degree": 1}, {"id": "add_iot_box_rationale_153", "label": "Use the token to pair an IoT Box. Allows to pair an IoT Box that is not", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Use the token to pair an IoT Box. Allows to pair an IoT Box that is not", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/add_iot_box.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_wizard_select_printers_py", "label": "select_printers.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "select_printers.py", "community": 25, "community_name": "Community 25", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/select_printers.py", "file_type": "code", "degree": 1}, {"id": "select_printers_selectprinterswizard", "label": "SelectPrintersWizard", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "SelectPrintersWizard", "community": 25, "community_name": "Community 25", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/select_printers.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_wizard_init_py", "label": "__init__.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 36, "community_name": "Community 36", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_wizard_discovered_iot_box_py", "label": "discovered_iot_box.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "discovered_iot_box.py", "community": 24, "community_name": "Community 24", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/discovered_iot_box.py", "file_type": "code", "degree": 1}, {"id": "discovered_iot_box_discoverediotbox", "label": "DiscoveredIotBox", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "DiscoveredIotBox", "community": 24, "community_name": "Community 24", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/discovered_iot_box.py", "file_type": "code", "degree": 2}, {"id": "discovered_iot_box_discoverediotbox_compute_box_name", "label": "._compute_box_name()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._compute_box_name()", "community": 24, "community_name": "Community 24", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/wizard/discovered_iot_box.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_update_py", "label": "update.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "update.py", "community": 26, "community_name": "Community 26", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/update.py", "file_type": "code", "degree": 1}, {"id": "update_publisher_warrantycontract", "label": "Publisher_WarrantyContract", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Publisher_WarrantyContract", "community": 26, "community_name": "Community 26", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/update.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_channel_py", "label": "iot_channel.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_channel.py", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_channel.py", "file_type": "code", "degree": 2}, {"id": "iot_channel_iotchannel", "label": "IotChannel", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IotChannel", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_channel.py", "file_type": "code", "degree": 3}, {"id": "iot_channel_iotchannel_get_iot_channel", "label": ".get_iot_channel()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".get_iot_channel()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_channel.py", "file_type": "code", "degree": 4}, {"id": "iot_channel_send_message", "label": "send_message()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "send_message()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_channel.py", "file_type": "code", "degree": 6}, {"id": "iot_channel_rationale_11", "label": "Get the IoT websocket channel name (unique for every company). :return:", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the IoT websocket channel name (unique for every company). :return:", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_channel.py", "file_type": "rationale", "degree": 1}, {"id": "iot_channel_rationale_24", "label": "Send a message to a device via websocket. :param dict message: The mess", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Send a message to a device via websocket. :param dict message: The mess", "community": 52, "community_name": "Community 52", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_channel.py", "file_type": "rationale", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_ir_actions_report_py", "label": "ir_actions_report.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "ir_actions_report.py", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "code", "degree": 1}, {"id": "ir_actions_report_iractionsreport", "label": "IrActionsReport", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "IrActionsReport", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "code", "degree": 6}, {"id": "ir_actions_report_iractionsreport_render_document", "label": ".render_document()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".render_document()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "code", "degree": 2}, {"id": "ir_actions_report_iractionsreport_report_action", "label": ".report_action()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".report_action()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "code", "degree": 1}, {"id": "ir_actions_report_iractionsreport_get_readable_fields", "label": "._get_readable_fields()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_readable_fields()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "code", "degree": 1}, {"id": "ir_actions_report_iractionsreport_get_action_wizard", "label": ".get_action_wizard()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_action_wizard()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "code", "degree": 2}, {"id": "ir_actions_report_iractionsreport_render_qweb_pdf", "label": "._render_qweb_pdf()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._render_qweb_pdf()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "code", "degree": 2}, {"id": "ir_actions_report_rationale_18", "label": "Render a document to be printed by the IoT Box through client :param de", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Render a document to be printed by the IoT Box through client :param de", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "rationale", "degree": 1}, {"id": "ir_actions_report_rationale_79", "label": "Override to ensure the user is informed when trying to print an empty report", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Override to ensure the user is informed when trying to print an empty report", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_actions_report.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_ir_http_py", "label": "ir_http.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ir_http.py", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_http.py", "file_type": "code", "degree": 2}, {"id": "ir_http_irhttp", "label": "IrHttp", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "IrHttp", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_http.py", "file_type": "code", "degree": 1}, {"id": "ir_http_lazy_session_info", "label": "lazy_session_info()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "lazy_session_info()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_http.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_device_py", "label": "iot_device.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "iot_device.py", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_device.py", "file_type": "code", "degree": 5}, {"id": "iot_device_iotdevice", "label": "IotDevice", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "IotDevice", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_device.py", "file_type": "code", "degree": 2}, {"id": "iot_device_compute_display_name", "label": "_compute_display_name()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_display_name()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_device.py", "file_type": "code", "degree": 1}, {"id": "iot_device_compute_is_scanner", "label": "_compute_is_scanner()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_is_scanner()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_device.py", "file_type": "code", "degree": 1}, {"id": "iot_device_iotdevice_set_scanner", "label": "._set_scanner()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._set_scanner()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_device.py", "file_type": "code", "degree": 1}, {"id": "iot_device_compute_manual_measurement", "label": "_compute_manual_measurement()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_manual_measurement()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_device.py", "file_type": "code", "degree": 1}, {"id": "iot_device_iotkeyboardlayout", "label": "IotKeyboardLayout", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "IotKeyboardLayout", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_device.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_init_py", "label": "__init__.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 37, "community_name": "Community 37", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_ir_config_parameter_py", "label": "ir_config_parameter.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ir_config_parameter.py", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_config_parameter.py", "file_type": "code", "degree": 2}, {"id": "ir_config_parameter_irconfigparameter", "label": "IrConfigParameter", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "IrConfigParameter", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_config_parameter.py", "file_type": "code", "degree": 1}, {"id": "ir_config_parameter_set_param", "label": "set_param()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "set_param()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/ir_config_parameter.py", "file_type": "code", "degree": 5}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_box_py", "label": "iot_box.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "iot_box.py", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 5}, {"id": "iot_box_iotbox", "label": "IotBox", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IotBox", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 5}, {"id": "iot_box_iotbox_default_token", "label": "._default_token()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._default_token()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 4}, {"id": "iot_box_iotbox_compute_device_count", "label": "._compute_device_count()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._compute_device_count()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 1}, {"id": "iot_box_unlink_iot_box", "label": "_unlink_iot_box()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_unlink_iot_box()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 2}, {"id": "iot_box_iotbox_open_homepage", "label": ".open_homepage()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".open_homepage()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 1}, {"id": "iot_box_connect_iot_box", "label": "connect_iot_box()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "connect_iot_box()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 3}, {"id": "iot_box_compute_must_install_fdm_module", "label": "_compute_must_install_fdm_module()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_must_install_fdm_module()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 1}, {"id": "iot_box_iotbox_install_fdm_module", "label": ".install_fdm_module()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".install_fdm_module()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 2}, {"id": "iot_box_compute_commit_url", "label": "_compute_commit_url()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_commit_url()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "code", "degree": 1}, {"id": "iot_box_rationale_31", "label": "Generate a token used in the iot box \"token\" field or by the wizards used to con", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Generate a token used in the iot box &quot;token&quot; field or by the wizards used to con", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "rationale", "degree": 1}, {"id": "iot_box_rationale_74", "label": "This method is called when pressing the \"Connect\" button in the IoT app.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "This method is called when pressing the &quot;Connect&quot; button in the IoT app.", "community": 53, "community_name": "Community 53", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "rationale", "degree": 0}, {"id": "iot_box_rationale_103", "label": "Install the pos_blackbox_be module if it is not installed and a fiscal data modu", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Install the pos_blackbox_be module if it is not installed and a fiscal data modu", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/models/iot_box.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_webrtc_test_js", "label": "iot_webrtc.test.js", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "iot_webrtc.test.js", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 5}, {"id": "iot_webrtc_test_iotchannel", "label": "IotChannel", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "IotChannel", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 2}, {"id": "iot_webrtc_test_iotchannel_get_iot_channel", "label": ".get_iot_channel()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_iot_channel()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 1}, {"id": "iot_webrtc_test_mockrtcdatachannel", "label": "MockRtcDataChannel", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "MockRtcDataChannel", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 4}, {"id": "iot_webrtc_test_mockrtcdatachannel_constructor", "label": ".constructor()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".constructor()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 1}, {"id": "iot_webrtc_test_mockrtcdatachannel_send", "label": ".send()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".send()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 3}, {"id": "iot_webrtc_test_mockrtcdatachannel_close", "label": ".close()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".close()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 1}, {"id": "iot_webrtc_test_mockrtcpeerconnection", "label": "MockRtcPeerConnection", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 22.0, "font": {"size": 12, "color": "#ffffff"}, "title": "MockRtcPeerConnection", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 8}, {"id": "iot_webrtc_test_mockrtcpeerconnection_constructor", "label": ".constructor()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".constructor()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 1}, {"id": "iot_webrtc_test_mockrtcpeerconnection_sctp", "label": ".sctp()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".sctp()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 1}, {"id": "iot_webrtc_test_mockrtcpeerconnection_createdatachannel", "label": ".createDataChannel()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".createDataChannel()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 2}, {"id": "iot_webrtc_test_mockrtcpeerconnection_createoffer", "label": ".createOffer()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".createOffer()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 2}, {"id": "iot_webrtc_test_mockrtcpeerconnection_setlocaldescription", "label": ".setLocalDescription()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".setLocalDescription()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 2}, {"id": "iot_webrtc_test_mockrtcpeerconnection_setremotedescription", "label": ".setRemoteDescription()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setRemoteDescription()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 1}, {"id": "iot_webrtc_test_mockrtcpeerconnection_close", "label": ".close()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".close()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 4}, {"id": "iot_webrtc_test_setupwebrtc", "label": "setupWebRtc()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "setupWebRtc()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 2}, {"id": "iot_webrtc_test_setupwebrtcwithconnection", "label": "setupWebRtcWithConnection()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "setupWebRtcWithConnection()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_webrtc.test.js", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_http_service_test_js", "label": "iot_http_service.test.js", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_http_service.test.js", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_http_service.test.js", "file_type": "code", "degree": 2}, {"id": "iot_http_service_test_iotchannel", "label": "IotChannel", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "IotChannel", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_http_service.test.js", "file_type": "code", "degree": 2}, {"id": "iot_http_service_test_iotchannel_get_iot_channel", "label": ".get_iot_channel()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".get_iot_channel()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_http_service.test.js", "file_type": "code", "degree": 3}, {"id": "iot_http_service_test_dummyorm", "label": "DummyOrm", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "DummyOrm", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_http_service.test.js", "file_type": "code", "degree": 2}, {"id": "iot_http_service_test_dummyorm_searchread", "label": ".searchRead()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".searchRead()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/unit/network_utils/iot_http_service.test.js", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_tours_test_printer_tour_js", "label": "test_printer_tour.js", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "test_printer_tour.js", "community": 54, "community_name": "Community 54", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/tours/test_printer_tour.js", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_tours_utils_common_js", "label": "common.js", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "common.js", "community": 27, "community_name": "Community 27", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/tours/utils/common.js", "file_type": "code", "degree": 1}, {"id": "common_waitforiotrequest", "label": "waitForIotRequest()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "waitForIotRequest()", "community": 27, "community_name": "Community 27", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/tests/tours/utils/common.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_iot_report_action_js", "label": "iot_report_action.js", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "iot_report_action.js", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/iot_report_action.js", "file_type": "code", "degree": 3}, {"id": "iot_report_action_printreport", "label": "printReport()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "printReport()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/iot_report_action.js", "file_type": "code", "degree": 4}, {"id": "iot_report_action_getselectedprintersforreport", "label": "getSelectedPrintersForReport()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "getSelectedPrintersForReport()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/iot_report_action.js", "file_type": "code", "degree": 2}, {"id": "iot_report_action_iotreportactionhandler", "label": "iotReportActionHandler()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "iotReportActionHandler()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/iot_report_action.js", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_iot_device_hook_js", "label": "iot_device_hook.js", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_device_hook.js", "community": 28, "community_name": "Community 28", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/iot_device_hook.js", "file_type": "code", "degree": 1}, {"id": "iot_device_hook_useiotdevice", "label": "useIotDevice()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "useIotDevice()", "community": 28, "community_name": "Community 28", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/iot_device_hook.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_select_printer_wizard_js", "label": "select_printer_wizard.js", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "select_printer_wizard.js", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/select_printer_wizard.js", "file_type": "code", "degree": 1}, {"id": "select_printer_wizard_selectprinterformcontroller", "label": "SelectPrinterFormController", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "SelectPrinterFormController", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/select_printer_wizard.js", "file_type": "code", "degree": 3}, {"id": "select_printer_wizard_selectprinterformcontroller_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/select_printer_wizard.js", "file_type": "code", "degree": 2}, {"id": "select_printer_wizard_selectprinterformcontroller_onclickviewbuttoniot", "label": ".onClickViewButtonIoT()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".onClickViewButtonIoT()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/select_printer_wizard.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_overrides_network_utils_longpolling_js", "label": "longpolling.js", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "longpolling.js", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/overrides/network_utils/longpolling.js", "file_type": "code", "degree": 2}, {"id": "longpolling_sendmessage", "label": "sendMessage()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "sendMessage()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/overrides/network_utils/longpolling.js", "file_type": "code", "degree": 2}, {"id": "longpolling_onmessage", "label": "onMessage()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "onMessage()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/overrides/network_utils/longpolling.js", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_network_utils_iot_websocket_js", "label": "iot_websocket.js", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_websocket.js", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_websocket.js", "file_type": "code", "degree": 1}, {"id": "iot_websocket_iotwebsocket", "label": "IotWebsocket", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IotWebsocket", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_websocket.js", "file_type": "code", "degree": 5}, {"id": "iot_websocket_iotwebsocket_constructor", "label": ".constructor()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".constructor()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_websocket.js", "file_type": "code", "degree": 2}, {"id": "iot_websocket_iotwebsocket_setup", "label": ".setup()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_websocket.js", "file_type": "code", "degree": 2}, {"id": "iot_websocket_iotwebsocket_sendmessage", "label": ".sendMessage()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".sendMessage()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_websocket.js", "file_type": "code", "degree": 1}, {"id": "iot_websocket_iotwebsocket_onmessage", "label": ".onMessage()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".onMessage()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_websocket.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_network_utils_iot_webrtc_js", "label": "iot_webrtc.js", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_webrtc.js", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 1}, {"id": "iot_webrtc_iotwebrtc", "label": "IotWebRtc", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 22.0, "font": {"size": 12, "color": "#ffffff"}, "title": "IotWebRtc", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 8}, {"id": "iot_webrtc_iotwebrtc_constructor", "label": ".constructor()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".constructor()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 2}, {"id": "iot_webrtc_iotwebrtc_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 2}, {"id": "iot_webrtc_iotwebrtc_sendmessage", "label": ".sendMessage()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 26.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".sendMessage()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 11}, {"id": "iot_webrtc_iotwebrtc_sendchunkedmessage", "label": "._sendChunkedMessage()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._sendChunkedMessage()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 3}, {"id": "iot_webrtc_iotwebrtc_onmessage", "label": ".onMessage()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".onMessage()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 2}, {"id": "iot_webrtc_iotwebrtc_waitforconnection", "label": ".waitForConnection()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".waitForConnection()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 4}, {"id": "iot_webrtc_iotwebrtc_openconnection", "label": ".openConnection()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".openConnection()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_webrtc.js", "file_type": "code", "degree": 7}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_network_utils_iot_http_service_js", "label": "iot_http_service.js", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_http_service.js", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 1}, {"id": "iot_http_service_iothttpservice", "label": "IotHttpService", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 31.0, "font": {"size": 12, "color": "#ffffff"}, "title": "IotHttpService", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 14}, {"id": "iot_http_service_iothttpservice_constructor", "label": ".constructor()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".constructor()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 2}, {"id": "iot_http_service_iothttpservice_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 2}, {"id": "iot_http_service_iothttpservice_onfailure", "label": ".onFailure()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".onFailure()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 3}, {"id": "iot_http_service_iothttpservice_cacheiotboxrecords", "label": ".cacheIotBoxRecords()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".cacheIotBoxRecords()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 2}, {"id": "iot_http_service_iothttpservice_getiotboxdata", "label": ".getIotBoxData()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".getIotBoxData()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 3}, {"id": "iot_http_service_iothttpservice_ensurelongpollingenabled", "label": "._ensureLongpollingEnabled()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._ensureLongpollingEnabled()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 2}, {"id": "iot_http_service_iothttpservice_ensurewebrtcenabled", "label": "._ensureWebRtcEnabled()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._ensureWebRtcEnabled()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 2}, {"id": "iot_http_service_iothttpservice_webrtc", "label": "._webRtc()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._webRtc()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 4}, {"id": "iot_http_service_iothttpservice_longpolling", "label": "._longpolling()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._longpolling()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 5}, {"id": "iot_http_service_iothttpservice_websocket", "label": "._websocket()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._websocket()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 3}, {"id": "iot_http_service_iothttpservice_attemptfallbacks", "label": "._attemptFallbacks()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._attemptFallbacks()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 6}, {"id": "iot_http_service_iothttpservice_onmessage", "label": ".onMessage()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 22.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".onMessage()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 8}, {"id": "iot_http_service_iothttpservice_action", "label": ".action()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".action()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/network_utils/iot_http_service.js", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_types_services_d_ts", "label": "services.d.ts", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "services.d.ts", "community": 55, "community_name": "Community 55", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/@types/services.d.ts", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_iot_remote_debug_js", "label": "iot_remote_debug.js", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_remote_debug.js", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 2}, {"id": "iot_remote_debug_iotremotedebug", "label": "IoTRemoteDebug", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IoTRemoteDebug", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 7}, {"id": "iot_remote_debug_iotremotedebug_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".setup()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 4}, {"id": "iot_remote_debug_iotremotedebug_identifier", "label": ".identifier()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".identifier()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 1}, {"id": "iot_remote_debug_iotremotedebug_onclick", "label": ".onClick()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".onClick()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 1}, {"id": "iot_remote_debug_iotremotedebug_enableremotedebug", "label": ".enableRemoteDebug()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".enableRemoteDebug()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 3}, {"id": "iot_remote_debug_iotremotedebug_onmessageupdatestatus", "label": ".onMessageUpdateStatus()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".onMessageUpdateStatus()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 1}, {"id": "iot_remote_debug_iotremotedebug_onfailure", "label": ".onFailure()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".onFailure()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 1}, {"id": "iot_remote_debug_tokendialog", "label": "TokenDialog", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "TokenDialog", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 3}, {"id": "iot_remote_debug_tokendialog_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 2}, {"id": "iot_remote_debug_tokendialog_validate", "label": ".validate()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".validate()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_remote_debug.js", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_test_iot_box_js", "label": "test_iot_box.js", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "test_iot_box.js", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/test_iot_box.js", "file_type": "code", "degree": 1}, {"id": "test_iot_box_testiotbox", "label": "TestIotBox", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "TestIotBox", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/test_iot_box.js", "file_type": "code", "degree": 4}, {"id": "test_iot_box_testiotbox_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/test_iot_box.js", "file_type": "code", "degree": 1}, {"id": "test_iot_box_testiotbox_onclick", "label": ".onClick()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".onClick()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/test_iot_box.js", "file_type": "code", "degree": 3}, {"id": "test_iot_box_testiotbox_onconnectiontestsuccess", "label": ".onConnectionTestSuccess()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".onConnectionTestSuccess()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/test_iot_box.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_device_list_js", "label": "device_list.js", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "device_list.js", "community": 22, "community_name": "Community 22", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/device_list.js", "file_type": "code", "degree": 1}, {"id": "device_list_devicelistfield", "label": "DeviceListField", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "DeviceListField", "community": 22, "community_name": "Community 22", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/device_list.js", "file_type": "code", "degree": 3}, {"id": "device_list_devicelistfield_setup", "label": ".setup()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 22, "community_name": "Community 22", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/device_list.js", "file_type": "code", "degree": 1}, {"id": "device_list_devicelistfield_openrecord", "label": ".openRecord()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".openRecord()", "community": 22, "community_name": "Community 22", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/device_list.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_iot_restart_odoo_js", "label": "iot_restart_odoo.js", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_restart_odoo.js", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_restart_odoo.js", "file_type": "code", "degree": 1}, {"id": "iot_restart_odoo_iotrestartodoo", "label": "IoTRestartOdoo", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "IoTRestartOdoo", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_restart_odoo.js", "file_type": "code", "degree": 4}, {"id": "iot_restart_odoo_iotrestartodoo_setup", "label": ".setup()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_restart_odoo.js", "file_type": "code", "degree": 1}, {"id": "iot_restart_odoo_iotrestartodoo_onclick", "label": ".onClick()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".onClick()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_restart_odoo.js", "file_type": "code", "degree": 1}, {"id": "iot_restart_odoo_iotrestartodoo_restartodoo", "label": ".restartOdoo()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".restartOdoo()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_restart_odoo.js", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_iot_download_logs_js", "label": "iot_download_logs.js", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_download_logs.js", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_download_logs.js", "file_type": "code", "degree": 1}, {"id": "iot_download_logs_iotboxdownloadlogs", "label": "IoTBoxDownloadLogs", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "IoTBoxDownloadLogs", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_download_logs.js", "file_type": "code", "degree": 6}, {"id": "iot_download_logs_iotboxdownloadlogs_setup", "label": ".setup()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_download_logs.js", "file_type": "code", "degree": 1}, {"id": "iot_download_logs_iotboxdownloadlogs_ip_url", "label": ".ip_url()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".ip_url()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_download_logs.js", "file_type": "code", "degree": 2}, {"id": "iot_download_logs_iotboxdownloadlogs_name", "label": ".name()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".name()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_download_logs.js", "file_type": "code", "degree": 1}, {"id": "iot_download_logs_iotboxdownloadlogs_onclick", "label": ".onClick()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".onClick()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_download_logs.js", "file_type": "code", "degree": 2}, {"id": "iot_download_logs_iotboxdownloadlogs_dowarnfail", "label": ".doWarnFail()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".doWarnFail()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/view_widgets/iot_download_logs.js", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_backend_iot_device_form_js", "label": "iot_device_form.js", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "iot_device_form.js", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/iot_device_form.js", "file_type": "code", "degree": 1}, {"id": "iot_device_form_iotdevicecontroller", "label": "IoTDeviceController", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IoTDeviceController", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/iot_device_form.js", "file_type": "code", "degree": 7}, {"id": "iot_device_form_iotdevicecontroller_setup", "label": ".setup()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/iot_device_form.js", "file_type": "code", "degree": 1}, {"id": "iot_device_form_iotdevicecontroller_onwillsaverecord", "label": ".onWillSaveRecord()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".onWillSaveRecord()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/iot_device_form.js", "file_type": "code", "degree": 3}, {"id": "iot_device_form_iotdevicecontroller_updatekeyboardlayout", "label": ".updateKeyboardLayout()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".updateKeyboardLayout()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/iot_device_form.js", "file_type": "code", "degree": 3}, {"id": "iot_device_form_iotdevicecontroller_updatedisplayurl", "label": ".updateDisplayUrl()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".updateDisplayUrl()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/iot_device_form.js", "file_type": "code", "degree": 3}, {"id": "iot_device_form_iotdevicecontroller_ondeviceevent", "label": ".onDeviceEvent()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".onDeviceEvent()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/iot_device_form.js", "file_type": "code", "degree": 1}, {"id": "iot_device_form_iotdevicecontroller_onclickbuttontest", "label": ".onClickButtonTest()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".onClickButtonTest()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/iot_device_form.js", "file_type": "code", "degree": 4}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_backend_no_iot_box_found_form_controller_js", "label": "no_iot_box_found_form_controller.js", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "no_iot_box_found_form_controller.js", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/no_iot_box_found_form_controller.js", "file_type": "code", "degree": 1}, {"id": "no_iot_box_found_form_controller_noiotboxfoundformcontroller", "label": "NoIoTBoxFoundFormController", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "NoIoTBoxFoundFormController", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/no_iot_box_found_form_controller.js", "file_type": "code", "degree": 3}, {"id": "no_iot_box_found_form_controller_noiotboxfoundformcontroller_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/no_iot_box_found_form_controller.js", "file_type": "code", "degree": 2}, {"id": "no_iot_box_found_form_controller_noiotboxfoundformcontroller_startcountdown", "label": ".startCountdown()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".startCountdown()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/no_iot_box_found_form_controller.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_backend_add_iot_box_form_controller_js", "label": "add_iot_box_form_controller.js", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "add_iot_box_form_controller.js", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/add_iot_box_form_controller.js", "file_type": "code", "degree": 1}, {"id": "add_iot_box_form_controller_addiotboxformcontroller", "label": "AddIoTBoxFormController", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "AddIoTBoxFormController", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/add_iot_box_form_controller.js", "file_type": "code", "degree": 6}, {"id": "add_iot_box_form_controller_addiotboxformcontroller_setup", "label": ".setup()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/add_iot_box_form_controller.js", "file_type": "code", "degree": 2}, {"id": "add_iot_box_form_controller_addiotboxformcontroller_initializeiotconnection", "label": ".initializeIoTConnection()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".initializeIoTConnection()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/add_iot_box_form_controller.js", "file_type": "code", "degree": 1}, {"id": "add_iot_box_form_controller_addiotboxformcontroller_lookfornewiotbox", "label": ".lookForNewIoTBox()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".lookForNewIoTBox()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/add_iot_box_form_controller.js", "file_type": "code", "degree": 1}, {"id": "add_iot_box_form_controller_addiotboxformcontroller_notifyiotboxfound", "label": ".notifyIoTBoxFound()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".notifyIoTBoxFound()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/add_iot_box_form_controller.js", "file_type": "code", "degree": 1}, {"id": "add_iot_box_form_controller_addiotboxformcontroller_onwillunmount", "label": ".onWillUnmount()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".onWillUnmount()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/backend/add_iot_box_form_controller.js", "file_type": "code", "degree": 4}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_client_action_discover_iot_boxes_js", "label": "discover_iot_boxes.js", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "discover_iot_boxes.js", "community": 29, "community_name": "Community 29", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/client_action/discover_iot_boxes.js", "file_type": "code", "degree": 1}, {"id": "discover_iot_boxes_discoveriotboxes", "label": "discoverIotBoxes()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "discoverIotBoxes()", "community": 29, "community_name": "Community 29", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/client_action/discover_iot_boxes.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_client_action_delete_local_storage_js", "label": "delete_local_storage.js", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "delete_local_storage.js", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/client_action/delete_local_storage.js", "file_type": "code", "degree": 3}, {"id": "delete_local_storage_removeiotreportidfrombrowserlocalstorage", "label": "removeIoTReportIdFromBrowserLocalStorage()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "removeIoTReportIdFromBrowserLocalStorage()", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/client_action/delete_local_storage.js", "file_type": "code", "degree": 2}, {"id": "delete_local_storage_setreportidinbrowserlocalstorage", "label": "setReportIdInBrowserLocalStorage()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "setReportIdInBrowserLocalStorage()", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/client_action/delete_local_storage.js", "file_type": "code", "degree": 1}, {"id": "delete_local_storage_iotreportlocalstorage", "label": "IoTReportLocalStorage", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IoTReportLocalStorage", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/client_action/delete_local_storage.js", "file_type": "code", "degree": 3}, {"id": "delete_local_storage_iotreportlocalstorage_setup", "label": ".setup()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/client_action/delete_local_storage.js", "file_type": "code", "degree": 1}, {"id": "delete_local_storage_iotreportlocalstorage_removefromlocal", "label": ".removeFromLocal()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".removeFromLocal()", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/static/src/client_action/delete_local_storage.js", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_init_py", "label": "__init__.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 38, "community_name": "Community 38", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "label": "main.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 25.0, "font": {"size": 12, "color": "#ffffff"}, "title": "main.py", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 10}, {"id": "main_ensure_unique_name", "label": "ensure_unique_name()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "ensure_unique_name()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 2}, {"id": "main_iotcontroller", "label": "IoTController", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IoTController", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 3}, {"id": "main_iotcontroller_search_box", "label": "._search_box()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 22.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._search_box()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 8}, {"id": "main_get_handlers", "label": "get_handlers()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "get_handlers()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 2}, {"id": "main_load_keyboard_layouts", "label": "load_keyboard_layouts()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "load_keyboard_layouts()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 2}, {"id": "main_get_url", "label": "get_url()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "get_url()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 2}, {"id": "main_iot_box_send_websocket", "label": "iot_box_send_websocket()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "iot_box_send_websocket()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 3}, {"id": "main_iot_box_webrtc_answer", "label": "iot_box_webrtc_answer()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "iot_box_webrtc_answer()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 3}, {"id": "main_update_box", "label": "update_box()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "update_box()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 6}, {"id": "main_iotcontroller_is_iot_log_enabled", "label": "._is_iot_log_enabled()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._is_iot_log_enabled()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 2}, {"id": "main_receive_iot_log", "label": "receive_iot_log()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "receive_iot_log()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 3}, {"id": "main_update_certificate_status", "label": "update_certificate_status()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "update_certificate_status()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "code", "degree": 2}, {"id": "main_rationale_48", "label": "Return a zip file containing all the IoT handlers for the given IoT Box.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Return a zip file containing all the IoT handlers for the given IoT Box.", "community": 56, "community_name": "Community 56", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "rationale", "degree": 0}, {"id": "main_rationale_107", "label": "Called by the IoT Box once an operation is over. We then forward the ack", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Called by the IoT Box once an operation is over. We then forward the ack", "community": 57, "community_name": "Community 57", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "rationale", "degree": 0}, {"id": "main_rationale_148", "label": "Called by the IoT Box after receiving a WebRTC offer from a user. The Io", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Called by the IoT Box after receiving a WebRTC offer from a user. The Io", "community": 58, "community_name": "Community 58", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "rationale", "degree": 0}, {"id": "main_rationale_167", "label": "This function receives a dict from the iot box with information from it", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "This function receives a dict from the iot box with information from it", "community": 59, "community_name": "Community 59", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "rationale", "degree": 0}, {"id": "main_rationale_315", "label": "Update the SSL certificate end date for the IoT Box. :param str identif", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Update the SSL certificate end date for the IoT Box. :param str identif", "community": 60, "community_name": "Community 60", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot/controllers/main.py", "file_type": "rationale", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_pi_fp_iot_poller_py", "label": "fp_iot_poller.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "fp_iot_poller.py", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/pi/fp_iot_poller.py", "file_type": "code", "degree": 4}, {"id": "fp_iot_poller_load_config", "label": "load_config()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "load_config()", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/pi/fp_iot_poller.py", "file_type": "code", "degree": 2}, {"id": "fp_iot_poller_read_probe", "label": "read_probe()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "read_probe()", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/pi/fp_iot_poller.py", "file_type": "code", "degree": 3}, {"id": "fp_iot_poller_post_readings", "label": "post_readings()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "post_readings()", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/pi/fp_iot_poller.py", "file_type": "code", "degree": 3}, {"id": "fp_iot_poller_main", "label": "main()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": "main()", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/pi/fp_iot_poller.py", "file_type": "code", "degree": 4}, {"id": "fp_iot_poller_rationale_59", "label": "Read one DS18B20 sysfs file. Returns Celsius or None on failure.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Read one DS18B20 sysfs file. Returns Celsius or None on failure.", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/pi/fp_iot_poller.py", "file_type": "rationale", "degree": 1}, {"id": "fp_iot_poller_rationale_77", "label": "POST batch to /fp/iot/ingest. Returns True on 2xx.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "POST batch to /fp/iot/ingest. Returns True on 2xx.", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/pi/fp_iot_poller.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_scripts_fp_iot_setup_live_sensor_py", "label": "fp_iot_setup_live_sensor.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "fp_iot_setup_live_sensor.py", "community": 30, "community_name": "Community 30", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/scripts/fp_iot_setup_live_sensor.py", "file_type": "code", "degree": 1}, {"id": "fp_iot_setup_live_sensor_rationale_1", "label": "One-shot setup for the live Pi probe. Does three things: 1. Rotates fusion_pl", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "One-shot setup for the live Pi probe. Does three things: 1. Rotates fusion_pl", "community": 30, "community_name": "Community 30", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/scripts/fp_iot_setup_live_sensor.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_scripts_fp_iot_smoke_test_py", "label": "fp_iot_smoke_test.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "fp_iot_smoke_test.py", "community": 31, "community_name": "Community 31", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/scripts/fp_iot_smoke_test.py", "file_type": "code", "degree": 1}, {"id": "fp_iot_smoke_test_rationale_1", "label": "Smoke test for fusion_plating_iot. Sets up a test sensor, forces a known token,", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "Smoke test for fusion_plating_iot. Sets up a test sensor, forces a known token,", "community": 31, "community_name": "Community 31", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/scripts/fp_iot_smoke_test.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_init_py", "label": "__init__.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 61, "community_name": "Community 61", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/__init__.py", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_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": 62, "community_name": "Community 62", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/__manifest__.py", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_static_src_device_controller_js", "label": "device_controller.js", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "device_controller.js", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/device_controller.js", "file_type": "code", "degree": 1}, {"id": "device_controller_devicecontroller", "label": "DeviceController", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 17.5, "font": {"size": 12, "color": "#ffffff"}, "title": "DeviceController", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/device_controller.js", "file_type": "code", "degree": 5}, {"id": "device_controller_devicecontroller_constructor", "label": ".constructor()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".constructor()", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/device_controller.js", "file_type": "code", "degree": 1}, {"id": "device_controller_devicecontroller_action", "label": ".action()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".action()", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/device_controller.js", "file_type": "code", "degree": 1}, {"id": "device_controller_devicecontroller_addlistener", "label": ".addListener()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".addListener()", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/device_controller.js", "file_type": "code", "degree": 1}, {"id": "device_controller_devicecontroller_removelistener", "label": ".removeListener()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".removeListener()", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/device_controller.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_static_src_network_utils_longpolling_js", "label": "longpolling.js", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "longpolling.js", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 1}, {"id": "longpolling_iotlongpolling", "label": "IoTLongpolling", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 32.5, "font": {"size": 12, "color": "#ffffff"}, "title": "IoTLongpolling", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 15}, {"id": "longpolling_iotlongpolling_constructor", "label": ".constructor()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".constructor()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 2}, {"id": "longpolling_iotlongpolling_setup", "label": ".setup()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".setup()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 3}, {"id": "longpolling_iotlongpolling_addlistener", "label": ".addListener()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 16.0, "font": {"size": 12, "color": "#ffffff"}, "title": ".addListener()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 4}, {"id": "longpolling_iotlongpolling_removelistener", "label": ".removeListener()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": ".removeListener()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 2}, {"id": "longpolling_iotlongpolling_action", "label": ".action()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 20.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".action()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 7}, {"id": "longpolling_iotlongpolling_startpolling", "label": ".startPolling()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".startPolling()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 3}, {"id": "longpolling_iotlongpolling_stoppolling", "label": ".stopPolling()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".stopPolling()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 3}, {"id": "longpolling_iotlongpolling_delayedstartpolling", "label": "._delayedStartPolling()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._delayedStartPolling()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 3}, {"id": "longpolling_iotlongpolling_rpciot", "label": "._rpcIoT()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 19.0, "font": {"size": 12, "color": "#ffffff"}, "title": "._rpcIoT()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 6}, {"id": "longpolling_iotlongpolling_poll", "label": "._poll()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "._poll()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 3}, {"id": "longpolling_iotlongpolling_onsuccess", "label": "._onSuccess()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": "._onSuccess()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 1}, {"id": "longpolling_iotlongpolling_onerror", "label": "._onError()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._onError()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 2}, {"id": "longpolling_iotlongpolling_dowarnfail", "label": "._doWarnFail()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "._doWarnFail()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 2}, {"id": "longpolling_iotlongpolling_setlna", "label": ".setLna()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.5, "font": {"size": 0, "color": "#ffffff"}, "title": ".setLna()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/longpolling.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_static_src_network_utils_http_js", "label": "http.js", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.0, "font": {"size": 0, "color": "#ffffff"}, "title": "http.js", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/http.js", "file_type": "code", "degree": 2}, {"id": "http_formatendpoint", "label": "formatEndpoint()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "formatEndpoint()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/http.js", "file_type": "code", "degree": 3}, {"id": "http_post", "label": "post()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.5, "font": {"size": 12, "color": "#ffffff"}, "title": "post()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/network_utils/http.js", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_static_src_types_services_d_ts", "label": "services.d.ts", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "services.d.ts", "community": 63, "community_name": "Community 63", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_iot/iot_base/static/src/@types/services.d.ts", "file_type": "code", "degree": 0}];
const RAW_EDGES = [{"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_hooks_py", "to": "hooks_post_init_hook", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_hooks_py", "to": "hooks_backfill_uuids", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_hooks_py", "to": "hooks_backfill_sensor_types", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_hooks_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "hooks_post_init_hook", "to": "hooks_backfill_uuids", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "hooks_post_init_hook", "to": "hooks_backfill_sensor_types", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_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_iot_fusion_plating_iot_models_fusion_plating_tank_py", "to": "fusion_plating_tank_fusionplatingtank", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fusion_plating_tank_py", "to": "fusion_plating_tank_compute_sensor_stats", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_sensor_py", "to": "fp_tank_sensor_fptanksensor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_sensor_py", "to": "fp_tank_sensor_compute_effective_location", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_sensor_py", "to": "fp_tank_sensor_compute_effective_target", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_sensor_py", "to": "fp_tank_sensor_compute_last_reading_display", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_sensor_py", "to": "fp_tank_sensor_create", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_sensor_py", "to": "fp_tank_sensor_compute_reading_count", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_sensor_fptanksensor", "to": "fp_tank_sensor_fptanksensor_get_alert_range", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_sensor_fptanksensor", "to": "fp_tank_sensor_fptanksensor_get_setpoint", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_sensor_fptanksensor", "to": "fp_tank_sensor_fptanksensor_action_view_readings", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_sensor_fptanksensor_get_alert_range", "to": "fp_tank_sensor_rationale_267", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_sensor_fptanksensor_get_alert_range", "to": "fp_tank_reading_fptankreading_evaluate_spec", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "fp_tank_sensor_fptanksensor_get_alert_range", "to": "fp_tank_reading_fptankreading_raise_quality_hold", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "fp_tank_sensor_fptanksensor_get_setpoint", "to": "fp_tank_sensor_rationale_278", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_sensor_fptanksensor_get_setpoint", "to": "fp_tank_reading_compute_deviation", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_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_iot_fusion_plating_iot_models_fp_sensor_dashboard_py", "to": "fp_sensor_dashboard_fpsensordashboard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_sensor_dashboard_py", "to": "fp_sensor_dashboard_compute_counts", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_sensor_dashboard_fpsensordashboard", "to": "fp_sensor_dashboard_fpsensordashboard_action_view_sensors", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_sensor_dashboard_fpsensordashboard", "to": "fp_sensor_dashboard_fpsensordashboard_action_view_recent_readings", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_reading_py", "to": "fp_tank_reading_fptankreading", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_reading_py", "to": "fp_tank_reading_compute_display", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_reading_py", "to": "fp_tank_reading_compute_deviation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_reading_py", "to": "fp_tank_reading_compute_display_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_tank_reading_py", "to": "fp_tank_reading_create", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_reading_fptankreading", "to": "fp_tank_reading_fptankreading_evaluate_spec", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_reading_fptankreading", "to": "fp_tank_reading_fptankreading_raise_quality_hold", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_reading_create", "to": "fp_tank_reading_fptankreading_evaluate_spec", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_reading_create", "to": "fp_tank_reading_fptankreading_raise_quality_hold", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_reading_create", "to": "fp_iot_ingest_ingest", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "fp_tank_reading_create", "to": "common_setupclass", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "fp_tank_reading_create", "to": "ir_actions_report_iractionsreport_get_action_wizard", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "fp_tank_reading_create", "to": "iot_box_connect_iot_box", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "fp_tank_reading_create", "to": "main_load_keyboard_layouts", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "fp_tank_reading_create", "to": "main_update_box", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "fp_tank_reading_fptankreading_evaluate_spec", "to": "fp_tank_reading_fptankreading_raise_quality_hold", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_reading_fptankreading_evaluate_spec", "to": "fp_tank_reading_rationale_209", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_tank_reading_fptankreading_raise_quality_hold", "to": "fp_tank_reading_rationale_237", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_models_fp_sensor_type_py", "to": "fp_sensor_type_fpsensortype", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_sensor_type_fpsensortype", "to": "fp_sensor_type_fpsensortype_compute_sensor_count", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_sensor_type_fpsensortype", "to": "fp_sensor_type_fpsensortype_action_view_sensors", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_controllers_fp_iot_ingest_py", "to": "fp_iot_ingest_parse_read_at", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_controllers_fp_iot_ingest_py", "to": "fp_iot_ingest_fpiotingestcontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_controllers_fp_iot_ingest_py", "to": "fp_iot_ingest_ingest", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_iot_ingest_parse_read_at", "to": "fp_iot_ingest_ingest", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_iot_ingest_parse_read_at", "to": "fp_iot_ingest_rationale_43", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_controllers_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_fusion_plating_iot_controllers_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_iot_iot_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_iot_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_iot_iot_iot_handlers_drivers_worldlinedriver_l_py", "to": "worldlinedriver_l_worldlinedriver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_l_worldlinedriver", "to": "ctypesterminaldriver", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_l_worldlinedriver", "to": "worldlinedriver_l_worldlinedriver_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_l_worldlinedriver", "to": "worldlinedriver_l_worldlinedriver_processtransaction", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_l_worldlinedriver", "to": "worldlinedriver_l_worldlinedriver_canceltransaction", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_l_worldlinedriver", "to": "ctypes_terminal_driver_ctypesterminaldriver", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ctypesterminaldriver", "to": "worldlinedriver_w_worldlinedriver", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypesterminaldriver", "to": "sixdriver_sixdriver", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_l_worldlinedriver_processtransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_l_worldlinedriver_processtransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_check_transaction_delay", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_l_worldlinedriver_processtransaction", "to": "ctypes_terminal_driver_create_ctypes_string_buffer", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_l_worldlinedriver_canceltransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_check_transaction_delay", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_l_worldlinedriver_canceltransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_l_worldlinedriver_canceltransaction", "to": "ctypes_terminal_driver_create_ctypes_string_buffer", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_ingenicotagtype", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_ingenicomessage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_gettagdetailsbycode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_gettagdetailsbyname", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_outgoingingenicomessage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_withlength", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_getcrc32", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_generatetag", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_generatemsg", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_incomingingenicomessage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_hextoint", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_ingenicodriver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_ingenicodriver_py", "to": "ingenicodriver_supported", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype", "to": "ingenicodriver_ingenicotagtype_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype", "to": "ingenicodriver_ingenicotagtype_getdict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype", "to": "ingenicodriver_ingenicotagtype_hastag", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype", "to": "ingenicodriver_rationale_26", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype_init", "to": "ingenicodriver_rationale_33", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype_getdict", "to": "ingenicodriver_incomingingenicomessage_gettag", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype_getdict", "to": "ingenicodriver_rationale_51", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype_hastag", "to": "ingenicodriver_gettagdetailsbycode", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicotagtype_hastag", "to": "ingenicodriver_rationale_70", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicomessage", "to": "ingenicodriver_ingenicomessage_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicomessage", "to": "ingenicodriver_outgoingingenicomessage", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicomessage", "to": "ingenicodriver_incomingingenicomessage", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicomessage", "to": "ingenicodriver_rationale_80", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_gettagdetailsbycode", "to": "ingenicodriver_incomingingenicomessage_gettag", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_gettagdetailsbyname", "to": "ingenicodriver_generatetag", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicomessage_init", "to": "ingenicodriver_rationale_337", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "ingenicodriver_outgoingingenicomessage_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "ingenicodriver_outgoingingenicomessage_generateheader", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "ingenicodriver_outgoingingenicomessage_generatefooter", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "ingenicodriver_outgoingingenicomessage_generatemdc", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "ingenicodriver_outgoingingenicomessage_generatebody", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "ingenicodriver_outgoingingenicomessage_send", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "ingenicodriver_supported", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "ingenicodriver_ingenicodriver_outgoingmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "test_ingenico_driver_mocksocket", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "test_ingenico_driver_testincomingtransactionresponse", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "test_ingenico_driver_testoutgoingingenicomessage", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_outgoingingenicomessage", "to": "test_ingenico_driver_setup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_withlength", "to": "ingenicodriver_generatetag", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_getcrc32", "to": "ingenicodriver_outgoingingenicomessage_generatemdc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_getcrc32", "to": "test_ingenico_driver_testoutgoingingenicomessage_test_unpadded_crc", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_getcrc32", "to": "test_ingenico_driver_testoutgoingingenicomessage_test_padded_crc", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_generatetag", "to": "ingenicodriver_generatemsg", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_generatetag", "to": "ingenicodriver_outgoingingenicomessage_generateheader", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_generatetag", "to": "ingenicodriver_outgoingingenicomessage_generatefooter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_generatetag", "to": "ingenicodriver_outgoingingenicomessage_generatemdc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_generatetag", "to": "ingenicodriver_outgoingingenicomessage_generatebody", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_generatemsg", "to": "ingenicodriver_outgoingingenicomessage_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_init", "to": "ingenicodriver_ingenicodriver_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_init", "to": "ingenicodriver_outgoingingenicomessage_generateheader", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_init", "to": "ingenicodriver_outgoingingenicomessage_generatebody", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_init", "to": "ingenicodriver_outgoingingenicomessage_generatefooter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_init", "to": "ingenicodriver_ingenicodriver_send", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_init", "to": "ingenicodriver_rationale_411", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_generateheader", "to": "ingenicodriver_rationale_457", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_generatefooter", "to": "ingenicodriver_rationale_470", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_generatemdc", "to": "ingenicodriver_outgoingingenicomessage_generatebody", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_generatemdc", "to": "ingenicodriver_rationale_480", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_generatemdc", "to": "test_ingenico_driver_testoutgoingingenicomessage_test_mdc_tag_length", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_outgoingingenicomessage_generatebody", "to": "ingenicodriver_rationale_490", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_send", "to": "ingenicodriver_ingenicodriver_send", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_outgoingingenicomessage_send", "to": "ingenicodriver_rationale_515", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_getmsg", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_getlength", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_gettag", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_getprotocolid", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_getterminalid", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_gettransactionresult", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_gettransactionstage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_gettransactionticket", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_getkeepaliveinterval", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_getkeepalivereasonid", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_incomingingenicomessage_getmessagetype", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_supported", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "ingenicodriver_ingenicodriver_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "test_ingenico_driver_mocksocket", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "test_ingenico_driver_testincomingtransactionresponse", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "test_ingenico_driver_testoutgoingingenicomessage", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_incomingingenicomessage", "to": "test_ingenico_driver_testincomingtransactionresponse_test_parse_ticketdata", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_hextoint", "to": "ingenicodriver_incomingingenicomessage_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getmsg", "to": "ingenicodriver_incomingingenicomessage_gettag", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getmsg", "to": "ingenicodriver_incomingingenicomessage_getlength", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getmsg", "to": "ingenicodriver_ingenicodriver_recv", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getmsg", "to": "ingenicodriver_incomingingenicomessage_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getmsg", "to": "ingenicodriver_rationale_529", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_init", "to": "ingenicodriver_ingenicodriver_init", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_init", "to": "ingenicodriver_ingenicodriver_recv", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_init", "to": "ingenicodriver_rationale_562", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getlength", "to": "ingenicodriver_ingenicodriver_recv", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getlength", "to": "ingenicodriver_rationale_600", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettag", "to": "ingenicodriver_ingenicodriver_recv", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettag", "to": "ingenicodriver_rationale_619", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getprotocolid", "to": "ingenicodriver_supported", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getprotocolid", "to": "ingenicodriver_rationale_637", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getterminalid", "to": "ingenicodriver_supported", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getterminalid", "to": "ingenicodriver_rationale_642", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettransactionresult", "to": "ingenicodriver_ingenicodriver_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettransactionresult", "to": "ingenicodriver_rationale_647", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettransactionstage", "to": "ingenicodriver_ingenicodriver_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettransactionstage", "to": "ingenicodriver_rationale_654", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettransactionticket", "to": "ingenicodriver_ingenicodriver_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettransactionticket", "to": "ingenicodriver_rationale_663", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_gettransactionticket", "to": "test_ingenico_driver_testincomingtransactionresponse_test_parse_ticketdata", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_incomingingenicomessage_getkeepaliveinterval", "to": "ingenicodriver_rationale_678", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getkeepalivereasonid", "to": "ingenicodriver_supported", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getkeepalivereasonid", "to": "ingenicodriver_ingenicodriver_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getkeepalivereasonid", "to": "ingenicodriver_rationale_687", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getmessagetype", "to": "ingenicodriver_supported", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getmessagetype", "to": "ingenicodriver_ingenicodriver_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_incomingingenicomessage_getmessagetype", "to": "ingenicodriver_rationale_696", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "driver", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "ingenicodriver_ingenicodriver_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "ingenicodriver_ingenicodriver_disconnect", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "ingenicodriver_ingenicodriver_getsequence", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "ingenicodriver_ingenicodriver_outgoingmessage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "ingenicodriver_ingenicodriver_action_default", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "ingenicodriver_ingenicodriver_recv", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "ingenicodriver_ingenicodriver_send", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver", "to": "ingenicodriver_ingenicodriver_run", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "driver", "to": "ctypes_terminal_driver_ctypesterminaldriver", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver_disconnect", "to": "ingenicodriver_ingenicodriver_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver_disconnect", "to": "iot_webrtc_test_mockrtcpeerconnection_close", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_ingenicodriver_disconnect", "to": "btinterface_l_btmanager_run", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ingenicodriver_ingenicodriver_getsequence", "to": "ingenicodriver_ingenicodriver_outgoingmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver_getsequence", "to": "ingenicodriver_rationale_769", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver_outgoingmessage", "to": "ingenicodriver_ingenicodriver_action_default", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver_outgoingmessage", "to": "ingenicodriver_ingenicodriver_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver_outgoingmessage", "to": "ingenicodriver_rationale_778", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver_action_default", "to": "ingenicodriver_rationale_784", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ingenicodriver_ingenicodriver_run", "to": "ingenicodriver_rationale_816", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_worldlinedriver_w_py", "to": "worldlinedriver_w_worldlinedriver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_w_worldlinedriver", "to": "worldlinedriver_w_worldlinedriver_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_w_worldlinedriver", "to": "worldlinedriver_w_worldlinedriver_processtransaction", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_w_worldlinedriver", "to": "worldlinedriver_w_worldlinedriver_canceltransaction", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "worldlinedriver_w_worldlinedriver", "to": "ctypes_terminal_driver_ctypesterminaldriver", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_w_worldlinedriver_processtransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_w_worldlinedriver_processtransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_check_transaction_delay", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_w_worldlinedriver_processtransaction", "to": "ctypes_terminal_driver_create_ctypes_string_buffer", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_w_worldlinedriver_canceltransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_check_transaction_delay", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_w_worldlinedriver_canceltransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "worldlinedriver_w_worldlinedriver_canceltransaction", "to": "ctypes_terminal_driver_create_ctypes_string_buffer", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_drivers_sixdriver_py", "to": "sixdriver_sixdriver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "sixdriver_sixdriver", "to": "sixdriver_sixdriver_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "sixdriver_sixdriver", "to": "sixdriver_sixdriver_processtransaction", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "sixdriver_sixdriver", "to": "sixdriver_sixdriver_canceltransaction", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "sixdriver_sixdriver", "to": "sixdriver_sixdriver_six_terminal_balance", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "sixdriver_sixdriver", "to": "ctypes_terminal_driver_ctypesterminaldriver", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "sixdriver_sixdriver_processtransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "sixdriver_sixdriver_processtransaction", "to": "ctypes_terminal_driver_create_ctypes_string_buffer", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "sixdriver_sixdriver_canceltransaction", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "sixdriver_sixdriver_six_terminal_balance", "to": "ctypes_terminal_driver_create_ctypes_string_buffer", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "sixdriver_sixdriver_six_terminal_balance", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_lib_ctypes_terminal_driver_py", "to": "ctypes_terminal_driver_import_ctypes_library", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_lib_ctypes_terminal_driver_py", "to": "ctypes_terminal_driver_create_ctypes_string_buffer", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_lib_ctypes_terminal_driver_py", "to": "ctypes_terminal_driver_ctypesterminaldriver", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_lib_ctypes_terminal_driver_py", "to": "ctypes_terminal_driver_supported", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_lib_ctypes_terminal_driver_py", "to": "ctypes_terminal_driver_processtransaction", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_lib_ctypes_terminal_driver_py", "to": "ctypes_terminal_driver_canceltransaction", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_lib_ctypes_terminal_driver_py", "to": "ctypes_terminal_driver_rationale_132", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_import_ctypes_library", "to": "ctypes_terminal_driver_rationale_28", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_create_ctypes_string_buffer", "to": "ctypes_terminal_driver_rationale_51", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_create_ctypes_string_buffer", "to": "ctepinterface_w_get_devices", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ctypes_terminal_driver_create_ctypes_string_buffer", "to": "ctepinterface_l_ctepinterface_get_devices", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver", "to": "ctypes_terminal_driver_ctypesterminaldriver_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver", "to": "ctypes_terminal_driver_ctypesterminaldriver_action_default", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver", "to": "ctypes_terminal_driver_ctypesterminaldriver_run", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver", "to": "ctypes_terminal_driver_ctypesterminaldriver_check_transaction_delay", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver", "to": "ctypes_terminal_driver_ctypesterminaldriver_six_terminal_balance", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver", "to": "ctypes_terminal_driver_rationale_57", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver_action_default", "to": "ctypes_terminal_driver_ctypesterminaldriver_send_status", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver_action_default", "to": "ctypes_terminal_driver_canceltransaction", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver_run", "to": "ctypes_terminal_driver_processtransaction", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver_run", "to": "ctypes_terminal_driver_ctypesterminaldriver_six_terminal_balance", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctypes_terminal_driver_ctypesterminaldriver_six_terminal_balance", "to": "ctypes_terminal_driver_rationale_150", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_timinterface_py", "to": "timinterface_timinterface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "timinterface_timinterface", "to": "interface", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "timinterface_timinterface", "to": "timinterface_timinterface_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "timinterface_timinterface", "to": "timinterface_timinterface_get_devices", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interface", "to": "socketinterface_socketinterface", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interface", "to": "btinterface_l_btinterface", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interface", "to": "ctepinterface_l_ctepinterface", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_socketinterface_py", "to": "socketinterface_socketinterface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_socketinterface_py", "to": "socketinterface_create_socket_device", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_socketinterface", "to": "socketinterface_socketinterface_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_socketinterface", "to": "socketinterface_socketinterface_open_socket", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_socketinterface", "to": "socketinterface_socketinterface_replace_socket_device", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_socketinterface", "to": "socketinterface_socketinterface_get_devices", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_socketinterface_init", "to": "socketinterface_socketinterface_open_socket", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_create_socket_device", "to": "socketinterface_socketinterface_replace_socket_device", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_create_socket_device", "to": "socketinterface_socketinterface_get_devices", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_socketinterface_replace_socket_device", "to": "socketinterface_socketinterface_get_devices", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_socketinterface_replace_socket_device", "to": "socketinterface_rationale_44", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "socketinterface_socketinterface_replace_socket_device", "to": "iot_webrtc_test_mockrtcpeerconnection_close", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_ctepinterface_w_py", "to": "ctepinterface_w_get_devices", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_btinterface_l_py", "to": "btinterface_l_gattbtmanager", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_btinterface_l_py", "to": "btinterface_l_btmanager", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_btinterface_l_py", "to": "btinterface_l_btinterface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_gattbtmanager", "to": "gatt_devicemanager", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_gattbtmanager", "to": "btinterface_l_gattbtmanager_device_discovered", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_gattbtmanager", "to": "btinterface_l_gattbtmanager_run", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_gattbtmanager", "to": "btinterface_l_btmanager_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_gattbtmanager_run", "to": "btinterface_l_btmanager_run", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_gattbtmanager_run", "to": "btinterface_l_rationale_21", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_btmanager", "to": "thread", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_btmanager", "to": "btinterface_l_btmanager_run", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "btinterface_l_btinterface", "to": "btinterface_l_btinterface_get_devices", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_iot_handlers_interfaces_ctepinterface_l_py", "to": "ctepinterface_l_ctepinterface", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctepinterface_l_ctepinterface", "to": "ctepinterface_l_ctepinterface_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ctepinterface_l_ctepinterface", "to": "ctepinterface_l_ctepinterface_get_devices", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_test_printer_tour_py", "to": "test_printer_tour_testui", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_printer_tour_testui", "to": "iotcommontest", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_printer_tour_testui", "to": "test_printer_tour_testui_test_iot_device_test_button", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_printer_tour_testui", "to": "common_iotcommontest", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_printer_tour_testui_test_iot_device_test_button", "to": "test_printer_tour_rationale_11", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_printer_tour_rationale_11", "to": "common_iotcommontest", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_test_ingenico_driver_py", "to": "test_ingenico_driver_mocksocket", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_test_ingenico_driver_py", "to": "test_ingenico_driver_testincomingtransactionresponse", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_test_ingenico_driver_py", "to": "test_ingenico_driver_setup", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_test_ingenico_driver_py", "to": "test_ingenico_driver_testoutgoingingenicomessage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_ingenico_driver_mocksocket", "to": "test_ingenico_driver_mocksocket_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_ingenico_driver_mocksocket", "to": "test_ingenico_driver_mocksocket_recv", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_ingenico_driver_mocksocket", "to": "test_ingenico_driver_testincomingtransactionresponse_test_parse_ticketdata", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_ingenico_driver_testincomingtransactionresponse", "to": "basecase", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_ingenico_driver_testincomingtransactionresponse", "to": "test_ingenico_driver_testincomingtransactionresponse_test_parse_ticketdata", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "basecase", "to": "test_ingenico_driver_testoutgoingingenicomessage", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_ingenico_driver_testoutgoingingenicomessage", "to": "test_ingenico_driver_testoutgoingingenicomessage_test_mdc_tag_length", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_ingenico_driver_testoutgoingingenicomessage", "to": "test_ingenico_driver_testoutgoingingenicomessage_test_unpadded_crc", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_ingenico_driver_testoutgoingingenicomessage", "to": "test_ingenico_driver_testoutgoingingenicomessage_test_padded_crc", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_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_iot_iot_tests_common_py", "to": "common_iotcommontest", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_tests_common_py", "to": "common_setupclass", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "common_iotcommontest", "to": "httpcase", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "common_iotcommontest", "to": "common_iotcommontest_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "common_iotcommontest", "to": "iot_channel_iotchannel", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_wizard_add_iot_box_py", "to": "add_iot_box_addiotbox", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_connect_iot_box_with_pairing_code", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_open_select_box_to_connect_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_open_enter_pairing_code_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_open_no_iot_box_found_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_open_connecting_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_open_documentation_url", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_start_stage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_add_iot_box_wizard_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_pair_offline", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox", "to": "add_iot_box_addiotbox_compute_pairing_token", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_connect_iot_box_with_pairing_code", "to": "add_iot_box_addiotbox_open_no_iot_box_found_action", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_connect_iot_box_with_pairing_code", "to": "add_iot_box_addiotbox_start_stage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_connect_iot_box_with_pairing_code", "to": "add_iot_box_addiotbox_add_iot_box_wizard_action", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_connect_iot_box_with_pairing_code", "to": "add_iot_box_rationale_35", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_open_select_box_to_connect_action", "to": "add_iot_box_addiotbox_start_stage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_open_enter_pairing_code_action", "to": "add_iot_box_addiotbox_add_iot_box_wizard_action", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_open_no_iot_box_found_action", "to": "add_iot_box_addiotbox_start_stage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_start_stage", "to": "add_iot_box_addiotbox_add_iot_box_wizard_action", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_start_stage", "to": "add_iot_box_addiotbox_pair_offline", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_start_stage", "to": "add_iot_box_rationale_118", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_add_iot_box_wizard_action", "to": "add_iot_box_rationale_139", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_add_iot_box_wizard_action", "to": "iot_box_connect_iot_box", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "add_iot_box_addiotbox_pair_offline", "to": "add_iot_box_rationale_153", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_addiotbox_compute_pairing_token", "to": "iot_box_iotbox_default_token", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_wizard_select_printers_py", "to": "select_printers_selectprinterswizard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_wizard_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_iot_wizard_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_iot_iot_wizard_discovered_iot_box_py", "to": "discovered_iot_box_discoverediotbox", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "discovered_iot_box_discoverediotbox", "to": "discovered_iot_box_discoverediotbox_compute_box_name", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_update_py", "to": "update_publisher_warrantycontract", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_channel_py", "to": "iot_channel_iotchannel", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_channel_py", "to": "iot_channel_send_message", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_channel_iotchannel", "to": "iot_channel_iotchannel_get_iot_channel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_channel_iotchannel_get_iot_channel", "to": "iot_channel_send_message", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_channel_iotchannel_get_iot_channel", "to": "iot_channel_rationale_11", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_channel_iotchannel_get_iot_channel", "to": "ir_config_parameter_set_param", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_channel_send_message", "to": "ir_config_parameter_set_param", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_channel_send_message", "to": "iot_box_unlink_iot_box", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_channel_send_message", "to": "main_iot_box_send_websocket", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_channel_send_message", "to": "main_iot_box_webrtc_answer", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_ir_actions_report_py", "to": "ir_actions_report_iractionsreport", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_actions_report_iractionsreport", "to": "ir_actions_report_iractionsreport_render_document", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_actions_report_iractionsreport", "to": "ir_actions_report_iractionsreport_report_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_actions_report_iractionsreport", "to": "ir_actions_report_iractionsreport_get_readable_fields", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_actions_report_iractionsreport", "to": "ir_actions_report_iractionsreport_get_action_wizard", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_actions_report_iractionsreport", "to": "ir_actions_report_iractionsreport_render_qweb_pdf", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_actions_report_iractionsreport_render_document", "to": "ir_actions_report_rationale_18", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_actions_report_iractionsreport_render_qweb_pdf", "to": "ir_actions_report_rationale_79", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_ir_http_py", "to": "ir_http_irhttp", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_ir_http_py", "to": "ir_http_lazy_session_info", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_http_lazy_session_info", "to": "iot_http_service_test_iotchannel_get_iot_channel", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_device_py", "to": "iot_device_iotdevice", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_device_py", "to": "iot_device_compute_display_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_device_py", "to": "iot_device_compute_is_scanner", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_device_py", "to": "iot_device_compute_manual_measurement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_device_py", "to": "iot_device_iotkeyboardlayout", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_iotdevice", "to": "iot_device_iotdevice_set_scanner", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_iot_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_iot_iot_models_ir_config_parameter_py", "to": "ir_config_parameter_irconfigparameter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_ir_config_parameter_py", "to": "ir_config_parameter_set_param", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "ir_config_parameter_set_param", "to": "iot_box_iotbox_default_token", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "ir_config_parameter_set_param", "to": "main_update_box", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_box_py", "to": "iot_box_iotbox", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_box_py", "to": "iot_box_unlink_iot_box", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_box_py", "to": "iot_box_connect_iot_box", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_box_py", "to": "iot_box_compute_must_install_fdm_module", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_models_iot_box_py", "to": "iot_box_compute_commit_url", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_box_iotbox", "to": "iot_box_iotbox_default_token", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_box_iotbox", "to": "iot_box_iotbox_compute_device_count", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_box_iotbox", "to": "iot_box_iotbox_open_homepage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_box_iotbox", "to": "iot_box_iotbox_install_fdm_module", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_box_iotbox_default_token", "to": "iot_box_rationale_31", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_box_iotbox_install_fdm_module", "to": "iot_box_rationale_103", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_webrtc_test_js", "to": "iot_webrtc_test_iotchannel", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_webrtc_test_js", "to": "iot_webrtc_test_mockrtcdatachannel", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_webrtc_test_js", "to": "iot_webrtc_test_mockrtcpeerconnection", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_webrtc_test_js", "to": "iot_webrtc_test_setupwebrtc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_webrtc_test_js", "to": "iot_webrtc_test_setupwebrtcwithconnection", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_iotchannel", "to": "iot_webrtc_test_iotchannel_get_iot_channel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcdatachannel", "to": "iot_webrtc_test_mockrtcdatachannel_constructor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcdatachannel", "to": "iot_webrtc_test_mockrtcdatachannel_send", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcdatachannel", "to": "iot_webrtc_test_mockrtcdatachannel_close", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcdatachannel_send", "to": "iot_webrtc_iotwebrtc_sendmessage", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_test_mockrtcdatachannel_send", "to": "iot_webrtc_iotwebrtc_sendchunkedmessage", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection", "to": "iot_webrtc_test_mockrtcpeerconnection_constructor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection", "to": "iot_webrtc_test_mockrtcpeerconnection_sctp", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection", "to": "iot_webrtc_test_mockrtcpeerconnection_createdatachannel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection", "to": "iot_webrtc_test_mockrtcpeerconnection_createoffer", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection", "to": "iot_webrtc_test_mockrtcpeerconnection_setlocaldescription", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection", "to": "iot_webrtc_test_mockrtcpeerconnection_setremotedescription", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection", "to": "iot_webrtc_test_mockrtcpeerconnection_close", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection_createdatachannel", "to": "iot_webrtc_iotwebrtc_openconnection", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection_createoffer", "to": "iot_webrtc_iotwebrtc_openconnection", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection_setlocaldescription", "to": "iot_webrtc_iotwebrtc_openconnection", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_test_mockrtcpeerconnection_close", "to": "iot_remote_debug_tokendialog_validate", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_test_setupwebrtc", "to": "iot_webrtc_test_setupwebrtcwithconnection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_test_setupwebrtcwithconnection", "to": "iot_webrtc_iotwebrtc_openconnection", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_http_service_test_js", "to": "iot_http_service_test_iotchannel", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_unit_network_utils_iot_http_service_test_js", "to": "iot_http_service_test_dummyorm", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_test_iotchannel", "to": "iot_http_service_test_iotchannel_get_iot_channel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_test_iotchannel_get_iot_channel", "to": "main_update_box", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_http_service_test_dummyorm", "to": "iot_http_service_test_dummyorm_searchread", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_test_dummyorm_searchread", "to": "iot_http_service_iothttpservice_getiotboxdata", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_http_service_test_dummyorm_searchread", "to": "iot_device_form_iotdevicecontroller_onclickbuttontest", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_tests_tours_utils_common_js", "to": "common_waitforiotrequest", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_iot_report_action_js", "to": "iot_report_action_printreport", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_iot_report_action_js", "to": "iot_report_action_getselectedprintersforreport", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_iot_report_action_js", "to": "iot_report_action_iotreportactionhandler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_report_action_printreport", "to": "iot_report_action_iotreportactionhandler", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_report_action_printreport", "to": "longpolling_iotlongpolling_action", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_report_action_printreport", "to": "iot_device_form_iotdevicecontroller_onclickbuttontest", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_report_action_getselectedprintersforreport", "to": "iot_report_action_iotreportactionhandler", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_iot_device_hook_js", "to": "iot_device_hook_useiotdevice", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_select_printer_wizard_js", "to": "select_printer_wizard_selectprinterformcontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "select_printer_wizard_selectprinterformcontroller", "to": "select_printer_wizard_selectprinterformcontroller_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "select_printer_wizard_selectprinterformcontroller", "to": "select_printer_wizard_selectprinterformcontroller_onclickviewbuttoniot", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "select_printer_wizard_selectprinterformcontroller_setup", "to": "add_iot_box_form_controller_addiotboxformcontroller_onwillunmount", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_overrides_network_utils_longpolling_js", "to": "longpolling_sendmessage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_overrides_network_utils_longpolling_js", "to": "longpolling_onmessage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_sendmessage", "to": "longpolling_iotlongpolling_rpciot", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "longpolling_onmessage", "to": "longpolling_iotlongpolling_addlistener", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_network_utils_iot_websocket_js", "to": "iot_websocket_iotwebsocket", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_websocket_iotwebsocket", "to": "iot_websocket_iotwebsocket_constructor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_websocket_iotwebsocket", "to": "iot_websocket_iotwebsocket_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_websocket_iotwebsocket", "to": "iot_websocket_iotwebsocket_sendmessage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_websocket_iotwebsocket", "to": "iot_websocket_iotwebsocket_onmessage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_websocket_iotwebsocket_constructor", "to": "iot_websocket_iotwebsocket_setup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_network_utils_iot_webrtc_js", "to": "iot_webrtc_iotwebrtc", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc", "to": "iot_webrtc_iotwebrtc_constructor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc", "to": "iot_webrtc_iotwebrtc_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc", "to": "iot_webrtc_iotwebrtc_sendmessage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc", "to": "iot_webrtc_iotwebrtc_sendchunkedmessage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc", "to": "iot_webrtc_iotwebrtc_onmessage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc", "to": "iot_webrtc_iotwebrtc_waitforconnection", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc", "to": "iot_webrtc_iotwebrtc_openconnection", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc_constructor", "to": "iot_webrtc_iotwebrtc_setup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "iot_webrtc_iotwebrtc_waitforconnection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "iot_webrtc_iotwebrtc_sendchunkedmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "iot_webrtc_iotwebrtc_openconnection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "iot_http_service_iothttpservice_webrtc", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "iot_http_service_iothttpservice_longpolling", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "iot_http_service_iothttpservice_websocket", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "iot_remote_debug_iotremotedebug_setup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "iot_remote_debug_iotremotedebug_enableremotedebug", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_iotwebrtc_sendmessage", "to": "test_iot_box_testiotbox_onclick", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_webrtc_iotwebrtc_onmessage", "to": "iot_webrtc_iotwebrtc_waitforconnection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_webrtc_iotwebrtc_waitforconnection", "to": "iot_webrtc_iotwebrtc_openconnection", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_network_utils_iot_http_service_js", "to": "iot_http_service_iothttpservice", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_constructor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_onfailure", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_cacheiotboxrecords", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_getiotboxdata", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_ensurelongpollingenabled", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_ensurewebrtcenabled", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_webrtc", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_longpolling", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_websocket", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_attemptfallbacks", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_onmessage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice", "to": "iot_http_service_iothttpservice_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_constructor", "to": "iot_http_service_iothttpservice_setup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_onfailure", "to": "iot_http_service_iothttpservice_longpolling", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_onfailure", "to": "iot_http_service_iothttpservice_attemptfallbacks", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_cacheiotboxrecords", "to": "iot_http_service_iothttpservice_attemptfallbacks", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_getiotboxdata", "to": "iot_http_service_iothttpservice_attemptfallbacks", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_ensurelongpollingenabled", "to": "iot_http_service_iothttpservice_longpolling", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_ensurewebrtcenabled", "to": "iot_http_service_iothttpservice_webrtc", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_webrtc", "to": "iot_http_service_iothttpservice_onmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_longpolling", "to": "iot_http_service_iothttpservice_onmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_websocket", "to": "iot_http_service_iothttpservice_onmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_attemptfallbacks", "to": "iot_http_service_iothttpservice_onmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_attemptfallbacks", "to": "iot_http_service_iothttpservice_action", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_http_service_iothttpservice_onmessage", "to": "iot_remote_debug_iotremotedebug_setup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_http_service_iothttpservice_onmessage", "to": "iot_remote_debug_iotremotedebug_enableremotedebug", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_http_service_iothttpservice_onmessage", "to": "test_iot_box_testiotbox_onclick", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_iot_remote_debug_js", "to": "iot_remote_debug_iotremotedebug", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_iot_remote_debug_js", "to": "iot_remote_debug_tokendialog", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_iotremotedebug", "to": "iot_remote_debug_iotremotedebug_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_iotremotedebug", "to": "iot_remote_debug_iotremotedebug_identifier", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_iotremotedebug", "to": "iot_remote_debug_iotremotedebug_onclick", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_iotremotedebug", "to": "iot_remote_debug_iotremotedebug_enableremotedebug", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_iotremotedebug", "to": "iot_remote_debug_iotremotedebug_onmessageupdatestatus", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_iotremotedebug", "to": "iot_remote_debug_iotremotedebug_onfailure", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_iotremotedebug_setup", "to": "iot_remote_debug_tokendialog_setup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_tokendialog", "to": "iot_remote_debug_tokendialog_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_remote_debug_tokendialog", "to": "iot_remote_debug_tokendialog_validate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_test_iot_box_js", "to": "test_iot_box_testiotbox", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_iot_box_testiotbox", "to": "test_iot_box_testiotbox_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_iot_box_testiotbox", "to": "test_iot_box_testiotbox_onclick", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_iot_box_testiotbox", "to": "test_iot_box_testiotbox_onconnectiontestsuccess", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_device_list_js", "to": "device_list_devicelistfield", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "device_list_devicelistfield", "to": "device_list_devicelistfield_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "device_list_devicelistfield", "to": "device_list_devicelistfield_openrecord", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_iot_restart_odoo_js", "to": "iot_restart_odoo_iotrestartodoo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_restart_odoo_iotrestartodoo", "to": "iot_restart_odoo_iotrestartodoo_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_restart_odoo_iotrestartodoo", "to": "iot_restart_odoo_iotrestartodoo_onclick", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_restart_odoo_iotrestartodoo", "to": "iot_restart_odoo_iotrestartodoo_restartodoo", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_restart_odoo_iotrestartodoo_restartodoo", "to": "longpolling_iotlongpolling_action", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_view_widgets_iot_download_logs_js", "to": "iot_download_logs_iotboxdownloadlogs", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_download_logs_iotboxdownloadlogs", "to": "iot_download_logs_iotboxdownloadlogs_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_download_logs_iotboxdownloadlogs", "to": "iot_download_logs_iotboxdownloadlogs_ip_url", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_download_logs_iotboxdownloadlogs", "to": "iot_download_logs_iotboxdownloadlogs_name", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_download_logs_iotboxdownloadlogs", "to": "iot_download_logs_iotboxdownloadlogs_onclick", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_download_logs_iotboxdownloadlogs", "to": "iot_download_logs_iotboxdownloadlogs_dowarnfail", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_download_logs_iotboxdownloadlogs_ip_url", "to": "http_formatendpoint", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_download_logs_iotboxdownloadlogs_onclick", "to": "iot_download_logs_iotboxdownloadlogs_dowarnfail", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_backend_iot_device_form_js", "to": "iot_device_form_iotdevicecontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller", "to": "iot_device_form_iotdevicecontroller_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller", "to": "iot_device_form_iotdevicecontroller_onwillsaverecord", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller", "to": "iot_device_form_iotdevicecontroller_updatekeyboardlayout", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller", "to": "iot_device_form_iotdevicecontroller_updatedisplayurl", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller", "to": "iot_device_form_iotdevicecontroller_ondeviceevent", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller", "to": "iot_device_form_iotdevicecontroller_onclickbuttontest", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller_onwillsaverecord", "to": "iot_device_form_iotdevicecontroller_updatekeyboardlayout", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller_onwillsaverecord", "to": "iot_device_form_iotdevicecontroller_updatedisplayurl", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "iot_device_form_iotdevicecontroller_updatekeyboardlayout", "to": "longpolling_iotlongpolling_action", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_device_form_iotdevicecontroller_updatedisplayurl", "to": "longpolling_iotlongpolling_action", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "iot_device_form_iotdevicecontroller_onclickbuttontest", "to": "longpolling_iotlongpolling_action", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_backend_no_iot_box_found_form_controller_js", "to": "no_iot_box_found_form_controller_noiotboxfoundformcontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "no_iot_box_found_form_controller_noiotboxfoundformcontroller", "to": "no_iot_box_found_form_controller_noiotboxfoundformcontroller_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "no_iot_box_found_form_controller_noiotboxfoundformcontroller", "to": "no_iot_box_found_form_controller_noiotboxfoundformcontroller_startcountdown", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "no_iot_box_found_form_controller_noiotboxfoundformcontroller_setup", "to": "add_iot_box_form_controller_addiotboxformcontroller_onwillunmount", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_backend_add_iot_box_form_controller_js", "to": "add_iot_box_form_controller_addiotboxformcontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_form_controller_addiotboxformcontroller", "to": "add_iot_box_form_controller_addiotboxformcontroller_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_form_controller_addiotboxformcontroller", "to": "add_iot_box_form_controller_addiotboxformcontroller_initializeiotconnection", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_form_controller_addiotboxformcontroller", "to": "add_iot_box_form_controller_addiotboxformcontroller_lookfornewiotbox", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_form_controller_addiotboxformcontroller", "to": "add_iot_box_form_controller_addiotboxformcontroller_notifyiotboxfound", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_form_controller_addiotboxformcontroller", "to": "add_iot_box_form_controller_addiotboxformcontroller_onwillunmount", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "add_iot_box_form_controller_addiotboxformcontroller_setup", "to": "add_iot_box_form_controller_addiotboxformcontroller_onwillunmount", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_client_action_discover_iot_boxes_js", "to": "discover_iot_boxes_discoveriotboxes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_client_action_delete_local_storage_js", "to": "delete_local_storage_removeiotreportidfrombrowserlocalstorage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_client_action_delete_local_storage_js", "to": "delete_local_storage_setreportidinbrowserlocalstorage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_static_src_client_action_delete_local_storage_js", "to": "delete_local_storage_iotreportlocalstorage", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "delete_local_storage_removeiotreportidfrombrowserlocalstorage", "to": "delete_local_storage_iotreportlocalstorage_removefromlocal", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "delete_local_storage_iotreportlocalstorage", "to": "delete_local_storage_iotreportlocalstorage_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "delete_local_storage_iotreportlocalstorage", "to": "delete_local_storage_iotreportlocalstorage_removefromlocal", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_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_iot_iot_controllers_main_py", "to": "main_ensure_unique_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_iotcontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_get_handlers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_load_keyboard_layouts", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_get_url", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_iot_box_send_websocket", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_iot_box_webrtc_answer", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_update_box", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_receive_iot_log", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_controllers_main_py", "to": "main_update_certificate_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ensure_unique_name", "to": "main_update_box", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller", "to": "main_iotcontroller_search_box", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller", "to": "main_iotcontroller_is_iot_log_enabled", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller_search_box", "to": "main_get_handlers", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller_search_box", "to": "main_get_url", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller_search_box", "to": "main_iot_box_send_websocket", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller_search_box", "to": "main_iot_box_webrtc_answer", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller_search_box", "to": "main_update_box", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller_search_box", "to": "main_receive_iot_log", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller_search_box", "to": "main_update_certificate_status", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_iotcontroller_is_iot_log_enabled", "to": "main_receive_iot_log", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_pi_fp_iot_poller_py", "to": "fp_iot_poller_load_config", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_pi_fp_iot_poller_py", "to": "fp_iot_poller_read_probe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_pi_fp_iot_poller_py", "to": "fp_iot_poller_post_readings", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_pi_fp_iot_poller_py", "to": "fp_iot_poller_main", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_iot_poller_load_config", "to": "fp_iot_poller_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_iot_poller_read_probe", "to": "fp_iot_poller_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_iot_poller_read_probe", "to": "fp_iot_poller_rationale_59", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_iot_poller_post_readings", "to": "fp_iot_poller_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fp_iot_poller_post_readings", "to": "fp_iot_poller_rationale_77", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_scripts_fp_iot_setup_live_sensor_py", "to": "fp_iot_setup_live_sensor_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_scripts_fp_iot_smoke_test_py", "to": "fp_iot_smoke_test_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_static_src_device_controller_js", "to": "device_controller_devicecontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "device_controller_devicecontroller", "to": "device_controller_devicecontroller_constructor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "device_controller_devicecontroller", "to": "device_controller_devicecontroller_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "device_controller_devicecontroller", "to": "device_controller_devicecontroller_addlistener", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "device_controller_devicecontroller", "to": "device_controller_devicecontroller_removelistener", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_static_src_network_utils_longpolling_js", "to": "longpolling_iotlongpolling", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_constructor", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_addlistener", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_removelistener", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_startpolling", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_stoppolling", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_delayedstartpolling", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_rpciot", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_poll", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_onsuccess", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_onerror", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_dowarnfail", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling", "to": "longpolling_iotlongpolling_setlna", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_constructor", "to": "longpolling_iotlongpolling_setup", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_setup", "to": "longpolling_iotlongpolling_delayedstartpolling", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_addlistener", "to": "longpolling_iotlongpolling_stoppolling", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_addlistener", "to": "longpolling_iotlongpolling_startpolling", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_removelistener", "to": "longpolling_iotlongpolling_stoppolling", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_action", "to": "longpolling_iotlongpolling_rpciot", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_startpolling", "to": "longpolling_iotlongpolling_poll", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_delayedstartpolling", "to": "longpolling_iotlongpolling_onerror", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_rpciot", "to": "longpolling_iotlongpolling_dowarnfail", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_rpciot", "to": "longpolling_iotlongpolling_poll", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "longpolling_iotlongpolling_rpciot", "to": "http_post", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_static_src_network_utils_http_js", "to": "http_formatendpoint", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_iot_iot_base_static_src_network_utils_http_js", "to": "http_post", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "http_formatendpoint", "to": "http_post", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}];
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 56}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 41}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 37}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 36}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 30}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 28}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 28}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 28}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 18}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 18}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 16}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 15}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 10}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 10}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 7}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 7}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 6}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 6}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 6}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 5}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 5}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 4}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 4}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 3}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 3}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 2}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 2}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 2}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 2}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 2}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 2}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 2}, {"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}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 1}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 1}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 1}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 1}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 1}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 1}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 1}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 1}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 1}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 1}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 1}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 1}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 1}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 1}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 1}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 1}, {"cid": 63, "color": "#76B7B2", "label": "Community 63", "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>