Class: LuCI

LuCI

This is the LuCI base class. It is automatically instantiated and accessible using the global L variable.

new LuCI(env)

Name Type Description
env Object

The environment settings to use for the LuCI runtime.

Classes

baseclass
dom
form
fs
headers
network
poll
request
response
rpc
session
uci
ui
view
xhr

Members

Class

Legacy L.Class class alias. New view code should use 'require baseclass'; to request the LuCI.baseclass class.

Deprecated
  • Yes

dom

Legacy L.dom class alias. New view code should use 'require dom'; to request the LuCI.dom class.

Deprecated
  • Yes

env

The env object holds environment settings used by LuCI, such as request timeouts, base URLs etc.

naturalComparefunction

Compares two values numerically and returns -1, 0 or 1 depending on whether the first value is smaller, equal to or larger than the second one respectively.

This function is meant to be used as comparator function for Array.sort().

Poll

Legacy L.Poll class alias. New view code should use 'require poll'; to request the LuCI.poll class.

Deprecated
  • Yes

Request

Legacy L.Request class alias. New view code should use 'require request'; to request the LuCI.request class.

Deprecated
  • Yes

view

Legacy L.view class alias. New view code should use 'require view'; to request the LuCI.view class.

Deprecated
  • Yes

Methods

bind(fn, self, args){function}

Return a bound function using the given self as this context and any further arguments as parameters to the bound function.

Name Type Description
fn function

The function to bind.

self *

The value to bind as this context to the specified function.

args * optional repeatable

Zero or more variable arguments which are bound to the function as parameters.

Returns:
Type Description
function Returns the bound function.

error(type, fmt, args)

A wrapper around raise() which also renders the error either as modal overlay when ui.js is already loaded or directly into the view body.

Name Type Default Description
type Error | string Error optional

Either a string specifying the type of the error to throw or an existing Error instance to copy.

fmt string Unspecified error optional

A format string which is used to form the error message, together with all subsequent optional arguments.

args * optional repeatable

Zero or more variable arguments to the supplied format string.

Throws:

Throws the created error object with the captured stack trace appended to the message and the type set to the given type argument or copied from the given error instance.

Type
Error

fspath(parts){string}

Construct an absolute filesystem path relative to the server document root.

Name Type Description
parts string optional repeatable

An array of parts to join into a path.

Returns:
Type Description
string Return the joined path.

get(url, args, cb){Promise.<null>}

Issues a GET request to the given url and invokes the specified callback function. The function is a wrapper around Request.request().

Name Type Description
url string

The URL to request.

args Object.<string, string> optional

Additional query string arguments to append to the URL.

cb LuCI.requestCallbackFn

The callback function to invoke when the request finishes.

Deprecated
  • Yes
Returns:
Type Description
Promise.<null> Returns a promise resolving to null when concluded.

halt(){boolean}

Deprecated wrapper around Poll.stop().

Deprecated
  • Yes
Returns:
Type Description
boolean Returns true when the polling loop has been stopped or false when it didn't run to begin with.

hasSystemFeature(feature, subfeature){boolean|null}

Test whether a particular system feature is available, such as hostapd SAE support or an installed firewall. The features are queried once at the beginning of the LuCI session and cached in SessionStorage throughout the lifetime of the associated tab or browser window.

Name Type Description
feature string

The feature to test. For detailed list of known feature flags, see /modules/luci-base/root/usr/libexec/rpcd/luci.

subfeature string optional

Some feature classes like hostapd provide sub-feature flags, such as sae or 11w support. The subfeature argument can be used to query these.

Returns:
Type Description
boolean | null Return true if the queried feature (and sub-feature) is available or false if the requested feature isn't present or known. Return null when a sub-feature was queried for a feature which has no sub-features.

hasViewPermission(){boolean|null}

Check whether a view has sufficient permissions.

Returns:
Type Description
boolean | null Returns null if the current session has no permission at all to load resources required by the view. Returns false if readonly permissions are granted or true if at least one required ACL group is granted with write permissions.

isObject(val){boolean}

Tests whether the passed argument is a JavaScript object. This function is meant to be an object counterpart to the standard Array.isArray() function.

Name Type Description
val * optional

The value to test

Returns:
Type Description
boolean Returns true if the given value is of type object and not null, else returns false.

location(){string}

Return the complete URL path to the current view.

Returns:
Type Description
string Returns the URL path to the current view.

media(parts){string}

Construct a URL path relative to the media resource path of the LuCI ui (usually /luci-static/$theme_name).

The resulting URL is guaranteed to only contain the characters a-z, A-Z, 0-9, _, ., %, ,, ;, and - as well as / for the path separator.

Name Type Description
parts Array.<string> optional

An array of parts to join into a URL path. Parts may contain slashes and any of the other characters mentioned above.

Returns:
Type Description
string Returns the resulting URL path.

path(prefix, parts){string}

Construct a relative URL path from the given prefix and parts. The resulting URL is guaranteed to only contain the characters a-z, A-Z, 0-9, _, ., %, ,, ;, and - as well as / for the path separator.

Name Type Description
prefix string optional

The prefix to join the given parts with. If the prefix is omitted, it defaults to an empty string.

parts Array.<string> optional

An array of parts to join into a URL path. Parts may contain slashes and any of the other characters mentioned above.

Returns:
Type Description
string Return the joined URL path.

poll(interval, url, args, cb, post){function}

Register a polling HTTP request that invokes the specified callback function. The function is a wrapper around Request.poll.add().

Name Type Default Description
interval number

The poll interval to use. If set to a value less than or equal to 0, it will default to the global poll interval configured in LuCI.env.pollinterval.

url string

The URL to request.

args Object.<string, string> optional

Specifies additional arguments for the request. For GET requests, the arguments are appended to the URL as query string, for POST requests, they'll be added to the request body.

cb LuCI.requestCallbackFn

The callback function to invoke whenever a request finishes.

post boolean false optional

When set to false or not specified, poll requests will be made using the GET method. When set to true, POST requests will be issued. In case of POST requests, the request body will contain an argument token with the current value of LuCI.env.token by default, regardless of the parameters specified with args.

Deprecated
  • Yes
Returns:
Type Description
function Returns the internally created function that has been passed to Request.poll.add(). This value can be passed to Poll.remove() to remove the polling request.

post(url, args, cb){Promise.<null>}

Issues a POST request to the given url and invokes the specified callback function. The function is a wrapper around Request.request(). The request is sent using application/x-www-form-urlencoded encoding and will contain a field token with the current value of LuCI.env.token by default.

Name Type Description
url string

The URL to request.

args Object.<string, string> optional

Additional post arguments to append to the request body.

cb LuCI.requestCallbackFn

The callback function to invoke when the request finishes.

Deprecated
  • Yes
Returns:
Type Description
Promise.<null> Returns a promise resolving to null when concluded.

raise(type, fmt, args)

Captures the current stack trace and throws an error of the specified type as a new exception. Also logs the exception as error to the debug console if it is available.

Name Type Default Description
type Error | string Error optional

Either a string specifying the type of the error to throw or an existing Error instance to copy.

fmt string Unspecified error optional

A format string which is used to form the error message, together with all subsequent optional arguments.

args * optional repeatable

Zero or more variable arguments to the supplied format string.

Throws:

Throws the created error object with the captured stack trace appended to the message and the type set to the given type argument or copied from the given error instance.

Type
Error

require(name){Promise.<LuCI.baseclass>}

Load an additional LuCI JavaScript class and its dependencies, instantiate it and return the resulting class instance. Each class is only loaded once. Subsequent attempts to load the same class will return the already instantiated class.

Name Type Description
name string

The name of the class to load in dotted notation. Dots will be replaced by spaces and joined with the runtime-determined base URL of LuCI.js to form an absolute URL to load the class file from.

Throws:
  • Throws a DependencyError when the class to load includes circular dependencies.

    Type
    DependencyError
  • Throws NetworkError when the underlying LuCI.request call failed.

    Type
    NetworkError
  • Throws SyntaxError when the loaded class file code cannot be interpreted by eval.

    Type
    SyntaxError
  • Throws TypeError when the class file could be loaded and interpreted, but when invoking its code did not yield a valid class instance.

    Type
    TypeError
Returns:
Type Description
Promise.<LuCI.baseclass> Returns the instantiated class.

resolveDefault(value, defvalue){Promise.<*>}

Returns a promise resolving with either the given value or with the given default in case the input value is a rejecting promise.

Name Type Description
value *

The value to resolve the promise with.

defvalue *

The default value to resolve the promise with in case the given input value is a rejecting promise.

Returns:
Type Description
Promise.<*> Returns a new promise resolving either to the given input value or to the given default value on error.

resource(parts){string}

Construct a URL path relative to the global static resource path of the LuCI ui (usually /luci-static/resources).

The resulting URL is guaranteed to only contain the characters a-z, A-Z, 0-9, _, ., %, ,, ;, and - as well as / for the path separator.

Name Type Description
parts Array.<string> optional

An array of parts to join into a URL path. Parts may contain slashes and any of the other characters mentioned above.

Returns:
Type Description
string Returns the resulting URL path.

run(){boolean}

Deprecated wrapper around Poll.start().

Deprecated
  • Yes
Returns:
Type Description
boolean Returns true when the polling loop has been started or false when it was already running.

sortedArray(val){Array.<*>}

Converts the given value to an array using toArray() if needed, performs a numerical sort using naturalCompare() and returns the result. If the input already is an array, no copy is being made and the sorting is performed in-place.

Name Type Description
val *

The input value to sort (and convert to an array if needed).

See:
  • toArray
  • naturalCompare
Returns:
Type Description
Array.<*> Returns the resulting, numerically sorted array.

sortedKeys(obj, key, sortmode){Array.<string>}

Return an array of sorted object keys, optionally sorted by a different key or a different sorting mode.

Name Type Description
obj object

The object to extract the keys from. If the given value is not an object, the function will return an empty array.

key string | null optional

Specifies the key to order by. This is mainly useful for nested objects of objects or objects of arrays when sorting shall not be performed by the primary object keys but by some other key pointing to a value within the nested values.

sortmode "addr" | "num" optional

Can be either addr or num to override the natural lexicographic sorting with a sorting suitable for IP/MAC style addresses or numeric values respectively.

Returns:
Type Description
Array.<string> Returns an array containing the sorted keys of the given object.

stop(entry){boolean}

Deprecated wrapper around Poll.remove().

Name Type Description
entry function

The polling function to remove.

Deprecated
  • Yes
Returns:
Type Description
boolean Returns true when the function has been removed or false if it could not be found.

toArray(val){Array.<*>}

Converts the given value to an array. If the given value is of type array, it is returned as-is, values of type object are returned as one-element array containing the object, empty strings and null values are returned as empty array, all other values are converted using String(), trimmed, split on white space and returned as array.

Name Type Description
val *

The value to convert into an array.

Returns:
Type Description
Array.<*> Returns the resulting array.

url(parts){string}

Construct a URL with path relative to the script path of the server side LuCI application (usually /cgi-bin/luci).

The resulting URL is guaranteed to only contain the characters a-z, A-Z, 0-9, _, ., %, ,, ;, and - as well as / for the path separator.

Name Type Description
parts Array.<string> optional

An array of parts to join into a URL path. Parts may contain slashes and any of the other characters mentioned above.

Returns:
Type Description
string Returns the resulting URL path.

Type Definitions

LuCI.requestCallbackFn(xhr, data, duration)

The request callback function is invoked whenever an HTTP reply to a request made using the L.get(), L.post() or L.poll() function is timed out or received successfully.

Name Type Description
xhr XMLHTTPRequest

The XMLHTTPRequest instance used to make the request.

data *

The response JSON if the response could be parsed as such, else null.

duration number

The total duration of the request in milliseconds.