Source code for bokeh.models.widgets.indicators
#-----------------------------------------------------------------------------
# Copyright (c) 2012 - 2023, Anaconda, Inc., and Bokeh Contributors.
# All rights reserved.
#
# The full license is in the file LICENSE.txt, distributed with this software.
#-----------------------------------------------------------------------------
''' Various kinds of indicator widgets.
'''
#-----------------------------------------------------------------------------
# Boilerplate
#-----------------------------------------------------------------------------
from __future__ import annotations
# pyright: reportAbstractUsage=false
import logging # isort:skip
log = logging.getLogger(__name__)
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
# Standard library imports
from typing import Any
# Bokeh imports
from ...core.enums import Orientation
from ...core.has_props import abstract
from ...core.property.enum import Enum
from ...core.property.nullable import Nullable
from ...core.property.primitive import Bool, Int, String
from .widget import Widget
#-----------------------------------------------------------------------------
# Globals and constants
#-----------------------------------------------------------------------------
__all__ = (
"Progress",
)
#-----------------------------------------------------------------------------
# Dev API
#-----------------------------------------------------------------------------
@abstract
class Indicator(Widget):
""" Abstract base class for indicator components.
"""
# explicit __init__ to support Init signatures
def __init__(self, *args: Any, **kwargs: Any) -> None:
super().__init__(*args, **kwargs)
#-----------------------------------------------------------------------------
# General API
#-----------------------------------------------------------------------------
[docs]
class Progress(Indicator):
""" Linear progress indicator component.
.. note::
Long running or computationally heavy tasks may prevent the progress
indicator from updating until such tasks are completed.
"""
# explicit __init__ to support Init signatures
def __init__(self, *args: Any, **kwargs: Any) -> None:
super().__init__(*args, **kwargs)
mode = Enum("determinate", "indeterminate")(default="determinate", help="""
Indicates the mode of operation of this widget.
Supported modes are:
* ``"determinate"`` where the component indicates progress of a task,
computation, etc. until completion.
* ``"indeterminate"`` where the component indicates stalled or infinitely
running task. In this mode ``value``, ``min`` and ``max`` properties are
ignored, and an infinite animation with no value label is displayed.
.. note::
The component can be switched between determinate and indeterminate
modes during its operation.
""")
value = Int(default=0, help="""
The current progress between the minimum and maximum values.
""")
min = Int(default=0, help="""
The minimum value of the progress.
""")
max = Int(default=100, help="""
The maximum value of the progress.
""")
reversed = Bool(default=False, help="""
Allows to reverse progression of the progress.
Depending on orientation this gives the following behaviors:
* *left-to-right* when orientation is horizontal and not reversed
* *right-to-left* when orientation is horizontal and reversed
* *top-to-bottom* when orientation is vertical and not reversed
* *bottom-to-top* when orientation is vertical and reversed
""")
orientation = Enum(Orientation, default="horizontal", help="""
Allows to orient the progress bar either horizontally or vertically.
""")
label = Nullable(String)(default="@{percent}%", help="""
Formatted value to show.
May include the following special variables:
* ``@{min}`` - the minimal value
* ``@{max}`` - the maximal value
* ``@{total}`` - the total number of steps
* ``@{value}`` - the current value in the ``min`` to ``max`` range
* ``@{index}`` - the current value in the 0 to ``total`` range
* ``@{percent}`` - the current percentage of progress without ``%`` sign
Special variables may additional specify a formatter, e.g. ``@{percent}{%.2f}``.
""")
label_location = Enum("none", "inline")(default="inline", help="""
Determines where to place the label.
""")
description = Nullable(String)(help="""
Optional long description to show in the from of a tooltip.
This supports the same special variables as ``label`` property does.
""")
#-----------------------------------------------------------------------------
# Private API
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------