From 43810bdac86f39d894f1f2d3f698eef85e36de53 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Tue, 13 Jun 2023 19:50:41 +0800 Subject: [PATCH] NEW: add more track records Change-Id: If82430f8b432f1a1d5a78cd6a63a16cf50d2bbaa Signed-off-by: Stone Li --- src/slic3r/GUI/BBLTopbar.cpp | 6 ++++ src/slic3r/GUI/GUI_App.cpp | 14 ++++++++ src/slic3r/GUI/GUI_App.hpp | 1 + src/slic3r/GUI/Jobs/PrintJob.cpp | 3 +- src/slic3r/GUI/MainFrame.cpp | 5 +++ src/slic3r/GUI/Plater.cpp | 57 ++++++++++++++++++++++---------- src/slic3r/GUI/Plater.hpp | 1 + 7 files changed, 69 insertions(+), 18 deletions(-) diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 6fc4809c6..12719e83e 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -382,6 +382,12 @@ void BBLTopbar::OnPublishClicked(wxAuiToolBarEvent& event) return; } + // record + json j; + NetworkAgent* agent = GUI::wxGetApp().getAgent(); + if (agent) + agent->track_event("enter_model_mall", j.dump()); + //no more check //if (GUI::wxGetApp().plater()->model().objects.empty()) return; diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 6b58db983..48a278263 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -4115,10 +4115,17 @@ void GUI_App::check_track_enable() int major = 0, minor = 0, micro = 0; header_json["os"] = std::string(os_desc.ToUTF8()); header_json["name"] = std::string(SLIC3R_APP_NAME); + header_json["uuid"] = app_config->get("slicer_uuid"); if (m_agent) { m_agent->track_header(header_json.dump()); m_agent->track_enable(true); } + /* record studio start event */ + json j; + j["user_mode"] = this->get_mode_str(); + if (m_agent) { + m_agent->track_event("studio_launch", j.dump()); + } } } @@ -5041,6 +5048,13 @@ ConfigOptionMode GUI_App::get_mode() mode == "develop" ? comDevelop : comSimple; } +std::string GUI_App::get_mode_str() +{ + if (!app_config->has("user_mode")) + return "simple"; + return app_config->get("user_mode"); +} + void GUI_App::save_mode(const /*ConfigOptionMode*/int mode) { //BBS diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 0dd4c7a0f..1f052c3b9 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -464,6 +464,7 @@ public: Tab* get_model_tab(bool part = false); Tab* get_layer_tab(); ConfigOptionMode get_mode(); + std::string get_mode_str(); void save_mode(const /*ConfigOptionMode*/int mode) ; void update_mode(); void update_internal_development(); diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 7c7085370..a2e726070 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -471,8 +471,9 @@ void PrintJob::process() } BOOST_LOG_TRIVIAL(error) << "print_job: failed, result = " << result; - } else { + wxGetApp().plater()->record_slice_preset("print"); + BOOST_LOG_TRIVIAL(error) << "print_job: send ok."; wxCommandEvent* evt = new wxCommandEvent(m_print_job_completed_id); if (m_print_job_completed_id == wxGetApp().plater()->get_send_calibration_finished_event()) { diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index a55b483de..dd113dcbf 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1995,6 +1995,11 @@ static void add_common_publish_menu_items(wxMenu* publish_menu, MainFrame* mainF return; } + json j; + NetworkAgent* agent = GUI::wxGetApp().getAgent(); + if (agent) + agent->track_event("enter_model_mall", j.dump()); + //if (GUI::wxGetApp().plater()->model().objects.empty()) return; wxGetApp().open_publish_page_dialog(); }); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index cbca49dbc..260102c21 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9434,10 +9434,8 @@ void Plater::export_gcode(bool prefer_removable) if (preset_bundle) { j["Gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); } - NetworkAgent *agent = wxGetApp().getAgent(); - if (agent) agent->track_event("printer_export_Gcode", j.dump()); - + if (agent) agent->track_event("printer_export_gcode", j.dump()); } catch (...) {} } @@ -10069,17 +10067,23 @@ void Plater::reslice() BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": finished, started slicing for plate %1%") % p->partplate_list.get_curr_plate_index(); + record_slice_preset("slicing"); +} + +void Plater::record_slice_preset(std::string action) +{ + // record slice preset try { json j; auto printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset_with_vendor_profile().preset; - if (printer_preset.is_system) { + if (printer_preset.is_system) { j["printer_preset_name"] = printer_preset.name; - } else { + } + else { j["printer_preset_name"] = printer_preset.config.opt_string("inherits"); } - - const t_config_enum_values *keys_map = print_config_def.get("curr_bed_type")->enum_keys_map; + const t_config_enum_values* keys_map = print_config_def.get("curr_bed_type")->enum_keys_map; if (keys_map) { for (auto item : *keys_map) { if (item.second == wxGetApp().preset_bundle->project_config.opt_enum("curr_bed_type")) { @@ -10093,28 +10097,47 @@ void Plater::reslice() auto filament_preset = wxGetApp().preset_bundle->filaments.find_preset(filament_presets[i]); if (filament_preset->is_system) { j["filament_preset_" + std::to_string(i)] = filament_preset->name; - } else { + } + else { j["filament_preset_" + std::to_string(i)] = filament_preset->config.opt_string("inherits"); } - } - auto print_preset = wxGetApp().preset_bundle->prints.get_edited_preset(); + Preset& print_preset = wxGetApp().preset_bundle->prints.get_edited_preset(); if (print_preset.is_system) { - j["print_preset"] = print_preset.name; - } else { - j["print_preset"] = print_preset.config.opt_string("inherits"); + j["process_preset"] = print_preset.name; + } + else { + j["process_preset"] = print_preset.config.opt_string("inherits"); + } + j["support_type"] = ConfigOptionEnum::get_enum_names().at(print_preset.config.opt_enum("support_type")); + j["sparse_infill_pattern"] = ConfigOptionEnum::get_enum_names().at(print_preset.config.opt_enum("sparse_infill_pattern")); + j["sparse_infill_density"] = print_preset.config.opt("sparse_infill_density")->value; + + j["brim_type"] = ConfigOptionEnum::get_enum_names().at(print_preset.config.opt_enum("brim_type")); + j["user_mode"] = wxGetApp().get_mode_str(); + + if (p->background_process.fff_print()) { + const DynamicPrintConfig& full_config = p->background_process.fff_print()->full_print_config(); + json values = json::array(); + if (full_config.has("different_settings_to_system")) { + std::vector different_values = full_config.option("different_settings_to_system")->values; + for (auto& item : different_values) { + values.push_back(item); + } + } + j["different_settings_to_system"] = values; } - NetworkAgent *agent = wxGetApp().getAgent(); - if (agent) + j["record_event"] = action; + NetworkAgent* agent = wxGetApp().getAgent(); + if (agent) agent->track_event("slice_completed", j.dump()); } catch (...) { return; } - } //BBS: add project slicing related logic @@ -10249,7 +10272,7 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn) PresetBundle *preset_bundle = wxGetApp().preset_bundle; if (preset_bundle) { - j["Gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); + j["gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); } if (physical_printer_config) { diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 94a1991cc..71b76024f 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -339,6 +339,7 @@ public: bool has_toolpaths_to_export() const; void export_toolpaths_to_obj() const; void reslice(); + void record_slice_preset(std::string action); void reslice_SLA_supports(const ModelObject &object, bool postpone_error_messages = false); void reslice_SLA_hollowing(const ModelObject &object, bool postpone_error_messages = false); void reslice_SLA_until_step(SLAPrintObjectStep step, const ModelObject &object, bool postpone_error_messages = false);