Skip to content

[BUG] wrong sorting of registered pages by ordering #2564

@gothicVI

Description

@gothicVI

Describe your context
Please provide us your environment, so we can easily reproduce the issue.

dash                              2.10.2
dash-ag-grid                      2.1.0
dash-bootstrap-components         1.4.1
dash-core-components              2.0.0
dash-html-components              2.0.0
dash-table                        5.0.0

Describe the bug
Hi,

I have an app where I add pages via:

register_page(
    __name__,
    path='/xxx',
    order=n,
    name="yyy",
    title="zzz"
)

where everything works fine as long as I have only 10 pages, i.e., n = 0,...,9.

As soon as I add an eleventh page and n turns into a two digit number, the new pages is entered as the third one, i.e., the sorting becomes: 0, 1, 10, 2, ..., 9.
This can also be seen by printing the page_registry in the global layout where I generate the navigation bar.

The error is due to the string cast here: https://github.com/plotly/dash/blob/dev/dash/_pages.py#L361

A workaround is to replace the above line with

key=lambda i: (str(i.get("order", i["module"])).zfill(9), i["module"]),

which prepends the order integer return with zeros to ensure correct sorting.
It is a dirty workaround as it would brake again when we have more then 100000000 pages but who would do that...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions