Class: Dialog

jrt.Dialog(elementnon-null, modeopt)

Base class for dialog targets. A dialog target can be opened by following a hash URL with its id. It participates in URL navigation (its URL is saved in the browser's history).

When a form in the dialog is submitted with the "dialog" method, the current form values are returned in returnValue (including the activated submit botton's value).

Constructor

new Dialog(elementnon-null, modeopt)

Parameters:
Name Type Attributes Default Description
element HTMLDialogElement
mode string <optional>
root
Implements:

Extends

Members

(protected, constant, non-null) app :jrt.App

Reference to the app instance, just for convenience.

Type:
Overrides:

(nullable) caller :jrt.Target

The target that called this target for the last time.

Type:
Inherited From:
Implements:

(protected, constant) dynamic :boolean

Type:
  • boolean
Overrides:

(nullable) form :jrt.Form

The first FORM element present in this view.

Type:
Overrides:

(constant) id :string

The view id, which is the same as the element id.

Type:
  • string
Overrides:
Implements:

mode :string

The dialog's mode can be:

  • "root": The dialog can only be opened on top of the current page. When one or more dialogs are open, they are closed automatically before opening this one.
  • "navigable": Not implemented yet, this would behave like a root dialog, but with its URL shown in the address bar and saved in the browser's history (when history is enabled).
  • "stackable": The dialog can be opened on top of another dialog, except a "panel".
  • "panel": Like "root", but it will also close automatically when a "stackable" dialog is opened.
Type:
  • string

parent

Overrides:

(non-null) req :jrt.AppRequest

The request that activated this target.

Type:
Inherited From:
Implements:

(nullable) returnValue :jrt.DialogReturnValue

The return value for the dialog. It can be set with close or by submitting a form with the "dialog" method from within the dialog. If not set, it will be null.

Type:
Overrides:

Methods

actionFinished(actionnon-null)

This method is called when an action that was requested from this target is finished explicitly with the jrt.Action#finish method.

This base implementation does nothing. Override as needed.

Parameters:
Name Type Description
action jrt.Action
Inherited From:
Implements:

close(returnValueopt, nullable) → {boolean}

Closes the modal dialog. If no return value is specified, the current return value remains.

Parameters:
Name Type Attributes Description
returnValue jrt.DialogReturnValue <optional>
<nullable>

The return value for the dialog.

Overrides:
Returns:

true If the dialog was actually closed.

Type
boolean

dialogClosed(dialognon-null)

This method is called when a dialog that was opened from this target is closed. A dialog is usually closed by submitting a form with the "dialog" method. It can also be closed with jrt.Modal#close or with a #back URL.

This base implementation does nothing. Override as needed.

Parameters:
Name Type Description
dialog jrt.Modal
Inherited From:
Implements:

(protected) handleEvent(enon-null, labelnullable)

This method is called when an event registered with listenToEvent is triggered.

Parameters:
Name Type Attributes Description
e Event

The event object.

label string <nullable>

The label specified when registering the event.

Overrides:

hidden()

This method is called when a view is hidden. If the view being hidden is a page, this is called before the jrt.Page#requested method of the page to be shown.

Implements:

(protected) ignoreEvent(eventType, elementopt, nullable)

Stops listenig to the specified event type on the specified element.

Parameters:
Name Type Attributes Description
eventType string

The event type to listen to.

element Element <optional>
<nullable>

The HTML element to stop listening to. Defaults to this element.

Overrides:

(protected) listenToEvent(eventType, elementopt, nullable, labelopt, nullable, useCaptureopt)

Sets this object as the event listener for the specified event type and element. The handleEvent method is called when the event occurs.

Parameters:
Name Type Attributes Description
eventType string

The event type to listen to.

element Element <optional>
<nullable>

The HTML element to listen to. Defaults to this element.

label string <optional>
<nullable>

Optional label passed to the event handler.

useCapture boolean <optional>
Overrides:

open(paramsopt, nullable, methodopt)

Open the dialog element. If it's already open, a warning is logged.

Parameters:
Name Type Attributes Description
params Object.<!jrt.FormValue> <optional>
<nullable>

Request parameters.

method string <optional>

The request method ("get" by default).

(protected) processResponse(reqnon-null, status, responsenullable)

Implement this method to process the response received after a call to sendRequest. The response data type depends on the responseType property specified in the request.

The response status can be "success", "server-error", "type-error" (when the specified response type does not match the received data), "error" (if there is a connection error), "timeout" or "offline". Note that the "offline" status is not reliable in all devices, so an "error" status may be received when offline.

The default implementation does nothing.

Parameters:
Name Type Attributes Description
req jrt.AjaxRequest

The request object.

status string

The response status (see method description).

response jrt.AjaxResponse <nullable>

The server response. This will be null on error or timeout.

Overrides:

query(selector, baseElement) → (nullable) {HTMLElement}

Returns the first element that matches the specified selector. If no base element is specified, this block is used as base element. Returns null if no element is found.

Parameters:
Name Type Description
selector string

The CSS selector.

baseElement HTMLElement | DocumentFragment

Optional base element.

Overrides:
Returns:
Type
HTMLElement

queryAll(selector, baseElement) → (non-null) {NodeList.<!HTMLElement>}

Returns all elements that match the specified selector. If no base element is specified, this element is used.

Parameters:
Name Type Description
selector string

The CSS selector.

baseElement HTMLElement | DocumentFragment

Optional base element.

Overrides:
Returns:
Type
NodeList.<!HTMLElement>

requested()

This method is called when this target is requested. The request object can be found in the req property.

If this is a view, this method is called before the jrt.TargetView#shown method. You may cancel the request (thus preventing the view from showing) by calling jrt.App#navigateBack from this method. If this is a dialog, you can also do this by calling jrt.Dialog#close. The request can also be cancelled in this way from jrt.App#pageRequested and jrt.App#dialogRequested.

If this is a page, you can redirect the request by calling jrt.App#navigateTo from this method (you can also do this from jrt.App#pageRequested).

This base implementation does nothing.

Inherited From:
Implements:

(protected) sendRequest(reqnon-null)

Sends an asynchronous AJAX request to the URL specified in req'. The supported methods are "GET" (the default), "POST", "PUT", "PATCH", "DELETE" and "HEAD". The response will be passed to processResponse. The expected response type can be specified with the responseType property in the specified request ("json" by default).

Parameters:
Name Type Description
req jrt.AjaxRequest
Overrides:
Throws:

If any of the request parameters is invalid.

Type
Error

show()

Opens the dialog without parameters and skipping the request/shown handlers.

Overrides:

shown()

This method is called when a view has just been made visible, after a request to this target. The request object can be found in the req property. Note that this method will not be called when a view is reloaded.

Implements: