Arc Rider Docs · Markdown

Developer Kit · Examples

Incorporar Custom Sort en una tabla

Incorporar Custom Sort en una tabla

Incorporar Custom Sort en una tabla

¿Quieres ordenar tus registros directamente dentro de la Custom Table con Custom Sort? En este artículo encontrarás una guía detallada de qué ajustes de Ninox necesitas y el código de aplicación correspondiente. En el siguiente ejemplo se muestra una lista de tareas (child / subtabla) dentro de un pedido (parent / tabla superior) como Custom Table. Con Custom Sort se quiere determinar manualmente el orden de las tareas.

Widgets que necesitas para esto:

  • <a href="/documentation/customsort-einbinden">Custom Sort</a>
  • <a href="/custom-table">Custom Table</a>

Ajustes de Ninox que necesitas:

  • un campo de función sortId en la tarea (child)
  • un campo numérico Sortierung en la tabla donde se deben ordenar los registros
  • un campo de texto sortItems en el pedido (parent)

Código de aplicación

let current := this;
arcCustomSort({
        uniqueId: Nr,
        editable: false,
        recordId: current.Nr,
        fieldId: "",
        direction: "horizontal",
        title: Sortierung,
        value: Sortierung,
        valuePrefix: number(Nr) + ",",
        size: "",
        color: "",
        showIconsAlways: true,
        iconStart: "",
        iconEnd: ""
    })

Campo de función sortId en la Tarea (Child)

let entities := Auftrag.Aufgaben;
if Sortierung != null then
    let sortValue := format(Sortierung, "000") + "-" +
        (number('Zuletzt geändert') - number(datetime(3000, 1, 1))) +
        "-" +
        number(Nr);
    number(cnt(entities[Sortierung != null and
            format(Sortierung, "000") + "-" +
                    (number('Zuletzt geändert') - number(datetime(3000, 1, 1))) +
                    "-" +
                    number(Nr) <= sortValue]))
else
    let sortValue := max(entities.Sortierung) + 1 + " + Nr;
    number(cnt(entities[max(entities.Sortierung) + 1 + " + Nr <= sortValue]))
end

Campo de texto sortItems en el Pedido (Parent)

El siguiente código lo pones en tu campo de texto sortItems, en el trigger tras cambio.

let current := this;
if sortItems != null then
    let splitItem := split(sortItems, ",");
    let itemNr := item(splitItem, 0);
    let itemPos := item(splitItem, 1);
    let item := first(Aufgaben[number(Nr) = number(itemNr)]);
    item.(Sortierung := number(itemPos) +
        if itemPos > item.Sortierung then
            1
        else
            0
        end);
    for item in Aufgaben order by Sortierung do
        item.(Sortierung := item.sortId)
    end;
    sortItems := null
end

###