diff --git a/Scripts/BugDataStructs/bug_data.gd b/Scripts/BugDataStructs/bug_data.gd index c6169c0..3da3dfd 100644 --- a/Scripts/BugDataStructs/bug_data.gd +++ b/Scripts/BugDataStructs/bug_data.gd @@ -2,6 +2,7 @@ class_name BugbotBugData extends Resource var id : int = -1 +var key : StringName var title : String var body : String var component : StringName diff --git a/Scripts/server_api.gd b/Scripts/server_api.gd index 8e942ec..7623354 100644 --- a/Scripts/server_api.gd +++ b/Scripts/server_api.gd @@ -79,6 +79,9 @@ func _current_server_api() -> String: func _get_project_name() -> String: return "" +func _get_bug_url(bug_data:BugbotBugData) -> String: + return "https://google.com" + func __build_url_string(_api_suffix:String) -> String: return "" diff --git a/Scripts/server_bugzilla_api.gd b/Scripts/server_bugzilla_api.gd index 142bc30..99caabf 100644 --- a/Scripts/server_bugzilla_api.gd +++ b/Scripts/server_bugzilla_api.gd @@ -218,6 +218,10 @@ func _current_server_api() -> String: func _get_project_name() -> String: return ProjectSettings.get_setting("bugbot/reporting/bugzilla/product_name", DEFAULT_PRODUCT_NAME) +func _get_bug_url(bug_data:BugbotBugData) -> String: + var bugzilla_server : String = ProjectSettings.get_setting("bugbot/reporting/bugzilla/server", DEFAULT_SERVER) + return "%s/show_bug.cgi?id=%d" % [bugzilla_server, bug_data.id] + func __build_url_string(_api_suffix:String) -> String: return "/" + \ ProjectSettings.get_setting("bugbot/reporting/bugzilla/REST_URI", DEFAULT_REST_URI) + \ @@ -296,6 +300,7 @@ func __create_bug_data_from_server_response(bug_in:Dictionary, map_name:String, return null bug.id = bug_in["id"] + bug.key = String.num_int64(bug.id) bug.title = bug_in["summary"] bug.component = bug_in["component"] bug.platform = bug_in["platform"] diff --git a/Scripts/server_gitea_api.gd b/Scripts/server_gitea_api.gd index 6fff117..d0b7fdc 100644 --- a/Scripts/server_gitea_api.gd +++ b/Scripts/server_gitea_api.gd @@ -193,6 +193,12 @@ func _current_server_api() -> String: func _get_project_name() -> String: return ProjectSettings.get_setting("bugbot/reporting/gitea/repo_name", DEFAULT_REPO_NAME) +func _get_bug_url(bug_data:BugbotBugData) -> String: + var gitea_server : String = ProjectSettings.get_setting("bugbot/reporting/gitea/server", DEFAULT_SERVER) + var owner_name : String = ProjectSettings.get_setting("bugbot/reporting/gitea/owner_name", DEFAULT_OWNER_NAME) + var repo_name : String = ProjectSettings.get_setting("bugbot/reporting/gitea/repo_name", DEFAULT_REPO_NAME) + return "%s/%s/%s/issues/%d" % [gitea_server, owner_name, repo_name, bug_data.id] + func __build_url_string(_api_suffix:String) -> String: return "/" + \ ProjectSettings.get_setting("bugbot/reporting/gitea/base_URL", DEFAULT_BASE_URL) + \ @@ -279,7 +285,8 @@ func __create_bug_data_from_server_response(bug_in:Dictionary, map_name:String, if validate_labels and not show_marker: return null - bug.id = bug_in["id"] + bug.id = bug_in["number"] + bug.key = String.num_int64(bug.id) bug.title = bug_in["title"] bug.body = bug_in["body"] bug.component = &"Unused" diff --git a/Scripts/server_jira_api.gd b/Scripts/server_jira_api.gd index d467b6a..34dfd49 100644 --- a/Scripts/server_jira_api.gd +++ b/Scripts/server_jira_api.gd @@ -231,6 +231,10 @@ func _current_server_api() -> String: func _get_project_name() -> String: return ProjectSettings.get_setting("bugbot/reporting/jira/project_name", DEFAULT_PROJECT_NAME) +func _get_bug_url(bug_data:BugbotBugData) -> String: + var jira_server : String = ProjectSettings.get_setting("bugbot/reporting/jira/server", DEFAULT_SERVER) + return "%s/browse/%s" % [jira_server, bug_data.key] + func __build_url_string(_api_suffix:String) -> String: return "/" + \ ProjectSettings.get_setting("bugbot/reporting/jira/REST_URI", DEFAULT_REST_URI) + \ @@ -318,17 +322,21 @@ func __create_bug_data_from_server_response(bug_in:Dictionary, map_name:String, var show_marker : bool if resolved_tag_found: bug.resolution = BugbotServerAPI.RESOLVED_TAG + bug.is_open = false show_marker = label_dict["show_resolved"] as bool elif in_progress_tag_found: bug.resolution = BugbotServerAPI.IN_PROGRESS_TAG + bug.is_open = true show_marker = label_dict["show_in_progress"] as bool elif unresolved_tag_found or (label_dict["unresolved_labels"] as Array).is_empty(): bug.resolution = BugbotServerAPI.UNRESOLVED_TAG + bug.is_open = true show_marker = label_dict["show_unresolved"] as bool if validate_labels and not show_marker: return null bug.id = bug_in["id"] + bug.key = bug_in["key"] bug.title = fields["summary"] if fields["description"]: bug.body = fields["description"] bug.component = &"Unused" diff --git a/bugbot.gd b/bugbot.gd index f7e92c0..6d00e73 100644 --- a/bugbot.gd +++ b/bugbot.gd @@ -145,7 +145,18 @@ func __on_marker_selection_changed() -> void: if selected.size() == 1: var selected_marker : Node = selected[0] if selected_marker is BugMarker: - print(selected_marker.bug_info.title) + var bug_popup : ConfirmationDialog = ConfirmationDialog.new() + var bug_info : BugbotBugData = selected_marker.bug_info + bug_popup.dialog_text = &"%s\n%s\n%s" % [bug_info.title, bug_info.severity, "Open" if bug_info.is_open else "Closed"] + bug_popup.ok_button_text = &"Open In Browser" + bug_popup.get_ok_button().pressed.connect(__marker_selection_open_bug_page.bind(bug_info)) + bug_popup.cancel_button_text = &"Cancel" + bug_popup.get_cancel_button().pressed.connect(__marker_selection_cancelled) + bug_popup.popup_exclusive_centered(selected_marker) +func __marker_selection_open_bug_page(bug_data:BugbotBugData): + OS.shell_open(__editor_server_api._get_bug_url(bug_data)) +func __marker_selection_cancelled(): + pass func __on_editor_tab_switched(new_scene:Node) -> void: