#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace Wt; class MyTableBenchmarkingAppApplication : public WApplication { public: MyTableBenchmarkingAppApplication(const WEnvironment& env); }; MyTableBenchmarkingAppApplication::MyTableBenchmarkingAppApplication(const WEnvironment& env) : WApplication(env) { this->enableUpdates(true); auto theme = std::make_shared(); theme->setVersion(Wt::BootstrapVersion::v3); setTheme(theme); setTitle("TableBenchmarkingApp"); class TestWidget : public Wt::WContainerWidget { public: TestWidget() : m_testSignal(this, "test") { m_testSignal.connect([]() {Wt::log("error") << " 1 called"; }); this->setLayoutSizeAware(true); } void layoutSizeChanged(int, int) override {} void render(Wt::WFlags) override { this->doJavaScript(Wt::WString(R"( function isPrime(num) { for ( var i = 2; i < num; i++ ) { if ( num % i === 0 ) { return false; } } return true; } function display(n) { var arr = [2]; for ( var i = 3; i < n; i+=2 ) { if ( isPrime(i) ) { arr.push(i); } } {2}.innerText = arr; } {1}; display(200000); )").arg(m_testSignal.createCall({})) .arg(this->jsRef()).toUTF8()); } Wt::JSignal<> m_testSignal; }; auto rootx = root()->addWidget(std::make_unique()); auto layout = rootx->setLayout(std::make_unique()); layout->setPreferredImplementation(Wt::LayoutImplementation::JavaScript); auto server = Wt::WApplication::instance()->environment().server(); server->schedule(std::chrono::seconds(2), Wt::WApplication::instance()->sessionId() , [=]() { auto text = layout->addWidget(std::make_unique("hello")); layout->addWidget(std::make_unique()); Wt::WApplication::instance()->triggerUpdate(); }); } std::unique_ptr createApplication(const WEnvironment& env) { return std::make_unique(env); } int main(int argc, char** argv) { return WRun(argc, argv, &createApplication); }