mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-21 10:19:03 +03:00
SQLStudio: Show script execution results in table
Show the results of executing a script in the TableView (if there are results to show).
This commit is contained in:
parent
061525282f
commit
e9541bca31
Notes:
sideshowbarker
2024-07-17 09:49:49 +09:00
Author: https://github.com/martinfalisse Commit: https://github.com/SerenityOS/serenity/commit/e9541bca31 Pull-request: https://github.com/SerenityOS/serenity/pull/14196 Reviewed-by: https://github.com/linusg
@ -10,8 +10,10 @@
|
||||
#include <LibGUI/BoxLayout.h>
|
||||
#include <LibGUI/FilePicker.h>
|
||||
#include <LibGUI/GroupBox.h>
|
||||
#include <LibGUI/JsonArrayModel.h>
|
||||
#include <LibGUI/Menu.h>
|
||||
#include <LibGUI/MessageBox.h>
|
||||
#include <LibGUI/SortingProxyModel.h>
|
||||
#include <LibGUI/Statusbar.h>
|
||||
#include <LibGUI/TabWidget.h>
|
||||
#include <LibGUI/TableView.h>
|
||||
@ -141,6 +143,7 @@ MainWidget::MainWidget()
|
||||
});
|
||||
|
||||
m_run_script_action = GUI::Action::create("Run script", { Mod_Alt, Key_F9 }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/play.png").release_value_but_fixme_should_propagate_errors(), [&](auto&) {
|
||||
m_results.clear();
|
||||
m_current_line_for_parsing = 0;
|
||||
// TODO select the database to use in UI.
|
||||
m_connection_id = m_sql_client->connect("test");
|
||||
@ -205,6 +208,26 @@ MainWidget::MainWidget()
|
||||
m_sql_client->on_execution_success = [this](int, bool, int, int, int) {
|
||||
read_next_sql_statement_of_editor();
|
||||
};
|
||||
m_sql_client->on_next_result = [this](int, Vector<String> const& row) {
|
||||
m_results.append(row);
|
||||
};
|
||||
m_sql_client->on_results_exhausted = [this](int, int) {
|
||||
if (m_results.size() == 0)
|
||||
return;
|
||||
if (m_results[0].size() == 0)
|
||||
return;
|
||||
Vector<GUI::JsonArrayModel::FieldSpec> query_result_fields;
|
||||
for (size_t i = 0; i < m_results[0].size(); i++)
|
||||
query_result_fields.empend(String::formatted("column_{}", i + 1), String::formatted("Column {}", i + 1), Gfx::TextAlignment::CenterLeft);
|
||||
auto query_results_model = GUI::JsonArrayModel::create("{}", move(query_result_fields));
|
||||
m_query_results_table_view->set_model(MUST(GUI::SortingProxyModel::create(*query_results_model)));
|
||||
for (auto& result_row : m_results) {
|
||||
Vector<JsonValue> individual_result_as_json;
|
||||
for (auto& result_row_column : result_row)
|
||||
individual_result_as_json.append(result_row_column);
|
||||
query_results_model->add(move(individual_result_as_json));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
void MainWidget::initialize_menu(GUI::Window* window)
|
||||
|
@ -57,6 +57,7 @@ private:
|
||||
RefPtr<GUI::TableView> m_query_results_table_view;
|
||||
|
||||
RefPtr<SQL::SQLClient> m_sql_client;
|
||||
Vector<Vector<String>> m_results;
|
||||
|
||||
String read_next_sql_statement_of_editor();
|
||||
Optional<String> read_next_line_of_editor();
|
||||
|
Loading…
Reference in New Issue
Block a user