Current section
Files
Jump to
Current section
Files
src/butterbee@page_module@table_element.erl
-module(butterbee@page_module@table_element).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/butterbee/page_module/table_element.gleam").
-export([define/4, perform_action/4]).
-export_type([node_table/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Define elements for page module using this module.\n"
"\n"
" Example:\n"
"\n"
" ```gleam\n"
" import butterbee/page_module/table_element.{type NodeTable}\n"
"\n"
" pub fn pokedex_table(\n"
" driver: WebDriver(state),\n"
" on_element: NodeTable,\n"
" action: fn(_) -> WebDriver(new_state),\n"
" ) {\n"
" table_element.define(\n"
" table: by.css(\"table#pokedex\"),\n"
" table_row: by.css(\"tr\"),\n"
" table_cell: by.css(\"td\"),\n"
" table_width: 3,\n"
" )\n"
" |> table_element.perform_action(driver, on_element, action)\n"
" }\n"
" ```\n"
"\n"
" For a more complete example, see the [`page module`](https://hexdocs.pm/butterbee/page-modules) guide.\n"
).
-type node_table() :: table | {row, integer()} | {cell, integer(), integer()}.
-file("src/butterbee/page_module/table_element.gleam", 35).
-spec define(
butterbidi@browsing_context@types@locator:locator(),
butterbidi@browsing_context@types@locator:locator(),
butterbidi@browsing_context@types@locator:locator(),
integer()
) -> {butterbidi@browsing_context@types@locator:locator(),
butterbidi@browsing_context@types@locator:locator(),
butterbidi@browsing_context@types@locator:locator(),
integer()}.
define(Table_locator, Table_row_locator, Table_cell_locator, Table_width) ->
{Table_locator, Table_row_locator, Table_cell_locator, Table_width}.
-file("src/butterbee/page_module/table_element.gleam", 44).
-spec perform_action(
{butterbidi@browsing_context@types@locator:locator(),
butterbidi@browsing_context@types@locator:locator(),
butterbidi@browsing_context@types@locator:locator(),
integer()},
butterbee@webdriver:web_driver(any()),
node_table(),
fun((butterbee@webdriver:web_driver(butterbidi@script@types@remote_value:node_remote_value())) -> butterbee@webdriver:web_driver(WXS))
) -> butterbee@webdriver:web_driver(WXS).
perform_action(Locator, Driver, On_element, Action) ->
{Table_locator, Table_row_locator, Table_cell_locator, Table_width} = Locator,
_pipe@6 = case On_element of
table ->
butterbee@get:node(Driver, Table_locator);
{row, Row} ->
_pipe = Driver,
_pipe@1 = butterbee@get:node(_pipe, Table_locator),
_pipe@2 = butterbee@get:nodes_from_node(_pipe@1, Table_row_locator),
butterbee@get:node_from_nodes(_pipe@2, Row);
{cell, Row@1, Column} ->
Cell = (Row@1 * Table_width) + Column,
_pipe@3 = Driver,
_pipe@4 = butterbee@get:node(_pipe@3, Table_locator),
_pipe@5 = butterbee@get:nodes_from_node(_pipe@4, Table_cell_locator),
butterbee@get:node_from_nodes(_pipe@5, Cell)
end,
Action(_pipe@6).