Skip to content

arrange

Description

Fonction de réorganisation des tuples d'un groupe multi. Cette action regroupe les fonctions de tri, de filtre et de pagination des tuples d'un groupe multi.

L'action est sans effet sur les groupes single, et donc a fortiori sur le groupe principal (maingroup).

Cette action peut jouer un rôle important pour le contrôle des performances d'une application. En effet, elle permet d'éviter le chargement d'un grand nombre de tuples dans le cas de groupes multi.

Lorsqu'elle est invoquée, l'action force un (re-)chargement des données à partir de la base de données. Cela n'est possible que si les tuples présents en mémoire sont synchrones avec la base de données. Cela suppose que soit:

  1. l'attribut autoflush est activé au niveau du modèle
  2. l'utilisateur a effectué un save explicite si l'autoflush n'est pas actif
  3. il n'y a aucun changement sur les tuples en mémoire par rapport à la valeur chargée à partir de la base de données

Si ces conditions sont remplies, alors les tuples en mémoire sont supprimés puis rechargés à partir de la base de données en tenant compte des règles passées à l'action (règles de filtre, de tri et/ou de pagination)

Les paramètres de l'action peuvent être passés selon deux modes distincts:

  • absolute: c'est le mode par défaut, dans ce cas l'action s'attend à ce que les paramètres d'un type d'arrangement (sort ou filter) soient passés dans leur intégralité. Cela signifie que si une règle n'est plus présente, elle est considérée comme abandonnée.
  • relative: dans ce cas, l'action s'attend à ne recevoir que les changements de règles par rapport à l'état actuel. Cela signifie que si une règle n'est pas présente, elle est considérée comme inchangée. Les tris avec un ordre vide sont interprétés comme des suppression de critère (le champ n'est plus pris en compte dans le tri).

    Dans le cas des règles de tri, le mode relatif bénéficie d'une option supplémentaire. Le paramètre position permet d'indiquer comment la règle de tri relative doit être prise en compte. Les valeurs possibles sont:

    • start : indique que la règle de tri relative doit être ajoutée avant les autres. Elle aura donc un poids plus important que les autres.
    • end : indique que la règle de tri relative doit être ajoutée après les autres. Elle aura donc un poids moins important que les autres.

    La position par défaut est start.

Schéma

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "description": "This json schema gives prototype of action arrange",
    "title": "Action arrange",
    "type": "object",
    "properties": {
        "action": {
            "const": "arrange",
            "description": "Name of the action",
            "type": "string"
        },
        "params": {
            "description": "Parameters of current action",
            "type": "object",
            "properties": {
                "mode": {
                    "description": "Indicates whether the rules of arrangement have to be interpreted absolutely or relatively. Default is 'absolute'",
                    "type": "string",
                    "enum": [
                        "absolute",
                        "relative"
                    ]
                },
                "position": {
                    "description": "Indicates weight of relative sort rule. Value `start` indicates that rule should be placed as first sorting condition. Value `end` indicates that rule should be placed as last one. Default is 'start'",
                    "type": "string",
                    "enum": [
                        "start",
                        "end"
                    ]
                },
                "filter": {
                    "description": "Filtering parameters",
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "inverse": {
                                "description": "Enable inverse logic for filtering",
                                "type": "boolean"
                            },
                            "condition": {
                                "description": "Filtering condition(s)",
                                "type": "array",
                                "items": {"type": "string"}
                            },
                            "fieldName": {
                                "description": "Name of field used as filtering criteria",
                                "type": "string"
                            },
                            "method": {
                                "description": "Filtering method",
                                "type": "string",
                                "enum": [
                                    "exact",
                                    "contains",
                                    "range",
                                    "list"
                                ]
                            }
                        }
                    }
                },
                "context": {
                    "description": "Context of group onto tuple must be added. Should reference a `modelName[docId].groupName` context.",
                    "type": "string"
                },
                "modelName": {
                    "description": "Name of model onto arrangement is performed",
                    "type": "string"
                },
                "groupName": {
                    "description": "Name of group onto arrangement is perform",
                    "type": "string"
                },
                "docId": {
                    "description": "Document id",
                    "type": [
                        "integer",
                        "string"
                    ]
                },
                "paginate": {
                    "description": "Pagination parameters",
                    "type": "object",
                    "properties": {
                        "offset": {
                            "description": "The offset clause for rows selection",
                            "type": [
                                "integer",
                                "string"
                            ]
                        },
                        "limit": {
                            "description": "The number of rows to show in page",
                            "type": [
                                "integer",
                                "string"
                            ]
                        }
                    }
                },
                "sort": {
                    "description": "Sorting parameters",
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "fieldName": {
                                "description": "Name of field used as sorting criteria",
                                "type": "string"
                            },
                            "order": {
                                "description": "Sort ordering",
                                "type": "string",
                                "enum": [
                                    "asc",
                                    "desc"
                                ]
                            }
                        }
                    }
                }
            },
            "oneOf": [
                {
                    "required": [
                        "context"
                    ]
                },
                {
                    "required": [
                        "modelName",
                        "docId",
                        "groupName"
                    ]
                }
            ]
        }
    },
    "required": [
        "action",
        "params"
    ],
    "$id": "https://ewt.epilogic.ch/action.arrange.schema.json"
}