`Sort_dir` determines the different ways in which the rows can be sorted (e.g. ascending and descending).

`type t`````
`include sig ... end`
`val t_of_sexp : Base.Sexp.t ‑> t`
`val sexp_of_t : t ‑> Base.Sexp.t`
`val compare : t ‑> t ‑> int`
`val next : t option ‑> t option`

`next` cycles through sort directions. This is used to determine how to update the sort direction when a header is clicked on.

`indicator` and `class_` convert the sort direction and precedence of a column from the sort criteria into a string symbol and a css class respectively in order to display sort information in the table.

`indicator` returns a symbol that is displayed in the header of the corresponding column, while `class_` returns a css class that is assigned to the header element.

The `precedence` is always a positive integer (i.e. it starts at 1, not 0).

A column that is not in the sort criteria is assigned an `indicator` and `class_` of `None`.

Examples of suitable indicators are:

- "▲" (ascending with priority 1)
- "▲(2)" (ascending with priority 2)

`val indicator : t ‑> precedence:int ‑> string option`
`val class_ : t ‑> precedence:int ‑> string option`