Wt examples  4.15.0
Loading...
Searching...
No Matches
JavascriptExample Class Reference

An example showing how to interact custom JavaScript with Wt stuff. More...

#include <JavascriptExample.h>

Inheritance diagram for JavascriptExample:
[legend]

Public Member Functions

 JavascriptExample (const WEnvironment &env)
 Create the example application.
Public Member Functions inherited from Wt::WApplication
 WApplication (const WEnvironment &environment)
 ~WApplication ()
const WEnvironment & environment () const
WContainerWidget * root () const
WWidget * findWidget (const std::string &name)
WWidget * findById (const std::string &id) const
void setTitle (const WString &title)
const WString & title () const
const WString & closeMessage () const
std::shared_ptr< WLocalizedStrings > localizedStrings ()
void setLocalizedStrings (const std::shared_ptr< WLocalizedStrings > &stringResolver)
WMessageResourceBundle & messageResourceBundle ()
void setLocale (const WLocale &locale, bool doRefresh=true)
const WLocale & locale () const
virtual void refresh ()
void bindWidget (std::unique_ptr< WWidget > widget, const std::string &domId)
std::string docRoot () const
void setConnectionMonitor (const std::string &jsObject)
std::string sessionId () const
SessionConstantId sessionConstantId () const
void changeSessionId ()
void processEvents ()
virtual void waitForEvent ()
virtual void initialize ()
virtual void finalize ()
void setTwoPhaseRenderingThreshold (int size)
void setCookie (const Http::Cookie &cookie)
void setCookie (const std::string &name, const std::string &value, int maxAge, const std::string &domain="", const std::string &path="", bool secure=false)
void removeCookie (const Http::Cookie &cookie)
void removeCookie (const std::string &name, const std::string &domain="", const std::string &path="")
void addMetaLink (const std::string &href, const std::string &rel, const std::string &media, const std::string &hreflang, const std::string &type, const std::string &sizes, bool disabled)
void removeMetaLink (const std::string &href)
void addMetaHeader (const std::string &name, const WString &content, const std::string &lang="")
void addMetaHeader (MetaHeaderType type, const std::string &name, const WString &content, const std::string &lang="")
WString metaHeader (MetaHeaderType type, const std::string &name) const
void removeMetaHeader (MetaHeaderType type, const std::string &name="")
WLogEntry log (const std::string &type) const
void setLoadingIndicator (std::unique_ptr< WLoadingIndicator > indicator)
WLoadingIndicator * loadingIndicator () const
void setFavicon (std::unique_ptr< WFavicon > icon)
WFavicon * favicon () const
void quit ()
void quit (const WString &restartMessage)
bool hasQuit () const
::int64_t maximumRequestSize () const
Signal< ::int64_t > & requestTooLarge ()
VisibilityState visibilityState () const
Signal< VisibilityState > & visibilityChanged ()
std::string focus () const
WWidget * focusedWidget () const
void setTrackFocus (bool enable=true)
bool trackFocus () const
Signal & elementFocused ()
Signal & elementBlurred ()
void setConfirmCloseMessage (const WString &message)
void deferRendering ()
void resumeRendering ()
std::string encodeUntrustedUrl (const std::string &url) const
void pushExposedConstraint (WWidget *w)
void suspend (std::chrono::seconds duration)
Signal & unsuspended ()
ServerSideFontMetrics * serverSideFontMetrics ()
WCssStyleSheet & styleSheet ()
void useStyleSheet (const WLink &link, const std::string &media="all")
void useStyleSheet (const WLink &link, const std::string &condition, const std::string &media)
void useStyleSheet (const WLinkedCssStyleSheet &styleSheet, const std::string &condition="")
void removeStyleSheet (const WLink &link)
void setTheme (const std::shared_ptr< WTheme > &theme)
std::shared_ptr< WTheme > theme () const
void setCssTheme (const std::string &name)
Signal< std::string > & themeColorModeChanged ()
void setLayoutDirection (LayoutDirection direction)
LayoutDirection layoutDirection () const
void setBodyClass (const std::string &styleClass)
std::string bodyClass () const
void setHtmlClass (const std::string &styleClass)
std::string htmlClass () const
void setHtmlAttribute (const std::string &name, const std::string &value)
WString htmlAttribute (const std::string &name) const
void setBodyAttribute (const std::string &name, const std::string &value)
WString bodyAttribute (const std::string &name) const
std::string url (const std::string &internalPath=std::string()) const
virtual std::string makeAbsoluteUrl (const std::string &url) const
std::string resolveRelativeUrl (const std::string &url) const
std::string bookmarkUrl () const
std::string bookmarkUrl (const std::string &internalPath) const
void setInternalPath (const std::string &path, bool emitChange=false)
void setInternalPathDefaultValid (bool valid)
bool internalPathDefaultValid () const
void setInternalPathValid (bool valid)
bool internalPathValid () const
std::string internalPath () const
std::string internalPathNextPart (const std::string &path) const
bool internalPathMatches (const std::string &path) const
Signal< std::string > & internalPathChanged ()
Signal< std::string > & internalPathInvalid ()
void redirect (const std::string &url)
void enableUpdates (bool enabled=true)
bool updatesEnabled () const
void triggerUpdate ()
void attachThread (bool attach=true)
void doJavaScript (const std::string &javascript, bool afterLoaded=true)
void addAutoJavaScript (const std::string &javascript)
void declareJavaScriptFunction (const std::string &name, const std::string &function)
bool require (const std::string &url, const std::string &symbol=std::string())
bool requireJQuery (const std::string &url)
bool customJQuery () const
void setJavaScriptClass (const std::string &className)
std::string javaScriptClass ()
EventSignal< WKeyEvent > & globalKeyWentDown ()
EventSignal< WKeyEvent > & globalKeyPressed ()
EventSignal< WKeyEvent > & globalKeyWentUp ()
EventSignal & globalEnterPressed ()
EventSignal & globalEscapePressed ()
WCssStyleSheet & styleSheet ()
void useStyleSheet (const WLink &link, const std::string &media="all")
void useStyleSheet (const WLink &link, const std::string &condition, const std::string &media)
void useStyleSheet (const WLinkedCssStyleSheet &styleSheet, const std::string &condition="")
void removeStyleSheet (const WLink &link)
void setTheme (const std::shared_ptr< WTheme > &theme)
std::shared_ptr< WTheme > theme () const
void setCssTheme (const std::string &name)
Signal< std::string > & themeColorModeChanged ()
void setLayoutDirection (LayoutDirection direction)
LayoutDirection layoutDirection () const
void setBodyClass (const std::string &styleClass)
std::string bodyClass () const
void setHtmlClass (const std::string &styleClass)
std::string htmlClass () const
void setHtmlAttribute (const std::string &name, const std::string &value)
WString htmlAttribute (const std::string &name) const
void setBodyAttribute (const std::string &name, const std::string &value)
WString bodyAttribute (const std::string &name) const
std::string url (const std::string &internalPath=std::string()) const
virtual std::string makeAbsoluteUrl (const std::string &url) const
std::string resolveRelativeUrl (const std::string &url) const
std::string bookmarkUrl () const
std::string bookmarkUrl (const std::string &internalPath) const
void setInternalPath (const std::string &path, bool emitChange=false)
void setInternalPathDefaultValid (bool valid)
bool internalPathDefaultValid () const
void setInternalPathValid (bool valid)
bool internalPathValid () const
std::string internalPath () const
std::string internalPathNextPart (const std::string &path) const
bool internalPathMatches (const std::string &path) const
Signal< std::string > & internalPathChanged ()
Signal< std::string > & internalPathInvalid ()
void redirect (const std::string &url)
void enableUpdates (bool enabled=true)
bool updatesEnabled () const
void triggerUpdate ()
void attachThread (bool attach=true)
void doJavaScript (const std::string &javascript, bool afterLoaded=true)
void addAutoJavaScript (const std::string &javascript)
void declareJavaScriptFunction (const std::string &name, const std::string &function)
bool require (const std::string &url, const std::string &symbol=std::string())
bool requireJQuery (const std::string &url)
bool customJQuery () const
void setJavaScriptClass (const std::string &className)
std::string javaScriptClass ()
EventSignal< WKeyEvent > & globalKeyWentDown ()
EventSignal< WKeyEvent > & globalKeyPressed ()
EventSignal< WKeyEvent > & globalKeyWentUp ()
EventSignal & globalEnterPressed ()
EventSignal & globalEscapePressed ()
Public Member Functions inherited from Wt::WObject
void addChild (std::unique_ptr< WObject > child)
Child * addChild (std::unique_ptr< Child > child)
std::unique_ptr< WObject > removeChild (WObject *child)
std::unique_ptr< Child > removeChild (Child *child)
virtual const std::string id () const
virtual void setObjectName (const std::string &name)
virtual std::string objectName () const
void resetLearnedSlots ()
void resetLearnedSlot (void(T::*method)())
WStatelessSlot * implementStateless (void(T::*method)())
WStatelessSlot * implementStateless (void(T::*method)(), void(T::*undoMethod)())
void isNotStateless ()
WStatelessSlot * implementJavaScript (void(T::*method)(), const std::string &jsCode)
virtual bool resendFormData ()
Public Member Functions inherited from Wt::Core::observable
 observable () noexcept
virtual ~observable ()
auto bindSafe (void(C::*method)(Args...)) noexcept
auto bindSafe (void(C::*method)(Args...) const) const noexcept
auto bindSafe (const Function &function) noexcept

Private Member Functions

void confirmed ()
 The user has confirmed the payment.
void setAmount (std::string amount)
 Set the amount to be payed.

Private Attributes

std::unique_ptr< Popup > promptAmount_
 Popup for changing the amount.
std::unique_ptr< Popup > confirmPay_
 Popup for paying.
WText * currentAmount_
 WText for showing the current amount.

Additional Inherited Members

Public Types inherited from Wt::WApplication
typedef Wt::ApplicationCreator ApplicationCreator
typedef std::function< std::unique_ptr< WApplication >(const WEnvironment &)> ApplicationCreator
Public Types inherited from Wt::WObject
typedef void(WObject::* Method) ()
Static Public Member Functions inherited from Wt::WApplication
static WApplication * instance ()
static std::string resourcesUrl ()
static std::string relativeResourcesUrl ()
static std::string appRoot ()
static bool readConfigurationProperty (const std::string &name, std::string &value)
Protected Member Functions inherited from Wt::WApplication
virtual void notify (const WEvent &e)
virtual bool isExposed (WWidget *w) const
virtual void enableAjax ()
virtual void unload ()
virtual void idleTimeout ()
virtual void handleJavaScriptError (const std::string &errorText)
Protected Member Functions inherited from Wt::WObject
virtual WStatelessSlot * getStateless (Method method)

Detailed Description

An example showing how to interact custom JavaScript with Wt stuff.

Definition at line 24 of file JavascriptExample.h.

Constructor & Destructor Documentation

◆ JavascriptExample()

JavascriptExample::JavascriptExample ( const WEnvironment & env)

Create the example application.

Definition at line 17 of file JavascriptExample.C.

18 : WApplication(env)
19{
20 setTitle("Javascript example");
21
22 // Create a popup for prompting the amount of money, and connect the
23 // okPressed button to the slot for setting the amount of money.
24 //
25 // Note that the input provided by the user in the prompt box is passed as
26 // an argument to the slot.
27 promptAmount_ = Popup::createPrompt("How much do you want to pay?","");
28 promptAmount_->okPressed().connect(std::bind(&JavascriptExample::setAmount,
29 this, std::placeholders::_1));
30
31 // Create a popup for confirming the payment.
32 //
33 // Since a confirm popup does not allow input, we ignore the
34 // argument carrying the input (which will be empty anyway).
36 confirmPay_->okPressed().connect(this, &JavascriptExample::confirmed);
37
38 root()->addWidget(std::make_unique<WText>("<h2>Wt Javascript example</h2>"
39 "<p>Wt makes abstraction of Javascript, and therefore allows you"
40 " to develop web applications without any knowledge of Javascript,"
41 " and which are not dependent on Javascript."
42 " However, Wt does allow you to add custom Javascript code:</p>"
43 " <ul>"
44 " <li>To call custom JavaScript code from an event handler, "
45 "connect the Wt::EventSignal to a Wt::JSlot.</li>"
46 " <li>To call C++ code from custom JavaScript, use "
47 "Wt.emit() to emit a Wt::JSignal.</li>"
48 " <li>To call custom JavaScript code from C++, use "
49 "WApplication::doJavascript() or Wt::JSlot::exec().</li>"
50 " </ul>"
51 "<p>This simple application shows how to interact between C++ and"
52 " JavaScript using the JSlot and JSignal classes.</p>"));
53
55 = root()->addWidget(std::make_unique<WText>("Current amount: $" +
56 promptAmount_->defaultValue()));
57
58 auto amountButton =
59 root()->addWidget(std::make_unique<WPushButton>("Change ..."));
60 amountButton->setMargin(10, Side::Left | Side::Right);
61
62 root()->addWidget(std::make_unique<WBreak>());
63
64 auto confirmButton =
65 root()->addWidget(std::make_unique<WPushButton>("Pay now."));
66 confirmButton->setMargin(10, Side::Top | Side::Bottom);
67
68 // Connect the event handlers to a JSlot: this will execute the JavaScript
69 // immediately, without a server round trip.
70 amountButton->clicked().connect(promptAmount_->show);
71 confirmButton->clicked().connect(confirmPay_->show);
72
73 // Set the initial amount
74 setAmount("1000");
75}
std::unique_ptr< Popup > promptAmount_
Popup for changing the amount.
void confirmed()
The user has confirmed the payment.
WText * currentAmount_
WText for showing the current amount.
void setAmount(std::string amount)
Set the amount to be payed.
std::unique_ptr< Popup > confirmPay_
Popup for paying.
static std::unique_ptr< Popup > createConfirm(const WString &message)
Create a confirm dialog.
Definition Popup.C:73
static std::unique_ptr< Popup > createPrompt(const WString &message, const std::string defaultValue)
Create a prompt dialog with the given default value.
Definition Popup.C:83
WContainerWidget * root() const
void setTitle(const WString &title)
WApplication(const WEnvironment &environment)
virtual void addWidget(std::unique_ptr< WWidget > widget)

Member Function Documentation

◆ confirmed()

void JavascriptExample::confirmed ( )
private

The user has confirmed the payment.

Definition at line 89 of file JavascriptExample.C.

90{
91 root()->addWidget(std::make_unique<WText>("<br/>Just payed $" +
92 promptAmount_->defaultValue() + "."));
93}

◆ setAmount()

void JavascriptExample::setAmount ( std::string amount)
private

Set the amount to be payed.

Definition at line 77 of file JavascriptExample.C.

78{
79 // Change the confirmation message to include the amount.
80 confirmPay_->setMessage("Are you sure you want to pay $" + amount + " ?");
81
82 // Change the default value for the prompt.
83 promptAmount_->setDefaultValue(amount);
84
85 // Change the text that shows the current amount.
86 currentAmount_->setText("Current amount: $" + promptAmount_->defaultValue());
87}

Member Data Documentation

◆ confirmPay_

std::unique_ptr<Popup> JavascriptExample::confirmPay_
private

Popup for paying.

Definition at line 46 of file JavascriptExample.h.

◆ currentAmount_

WText* JavascriptExample::currentAmount_
private

WText for showing the current amount.

Definition at line 50 of file JavascriptExample.h.

◆ promptAmount_

std::unique_ptr<Popup> JavascriptExample::promptAmount_
private

Popup for changing the amount.

Definition at line 42 of file JavascriptExample.h.


The documentation for this class was generated from the following files: