Maslosoft Framework Documentation
Flexible Application Foundation
Progress Bar
Static Progress Bar
Some basic options, it's simple server generated progress bar. Width of progress bar
is based upon percent value. Value maxVal
does not really matter here
as percent
takes takes precedence here. Default type is used here, second one has type of success.
echo ProgressBar::widget([
'percent' => 20,
'content' => 'TEST',
]);
echo ProgressBar::widget([
'type' => ProgressBar::TypeSuccess,
'percent' => 33
]);
Width can be automatically calculated if progress bar will be used with value
and maxVal
.
Info type is used here.
echo ProgressBar::widget([
'type' => ProgressBar::TypeInfo,
'maxVal' => 30,
'minVal' => 10,
'value' => 15
]);
Automatic type
Additionally, automatic progress bar type can be set, based on value. It might change from
success, to warning finishing at danger. To enable automatic type change, set type
to
ProgressBar::TypeAuto
.
To set custom step values, the array containing keys same as type names can be used, with
values containing percent at which type should be applied. The field to configure auto steps,
is - you guessed it - autoSteps
Example steps configuration:
$autoSteps = [ ProgressBar::TypeSuccess => 0, ProgressBar::TypeWarning => 75, ProgressBar::TypeDanger => 90 ];
Example progress bars with auto type:
echo ProgressBar::widget([
'type' => ProgressBar::TypeAuto,
'maxVal' => 100,
'value' => 10
]);
echo ProgressBar::widget([
'type' => ProgressBar::TypeAuto,
'maxVal' => 100,
'value' => 75
]);
echo ProgressBar::widget([
'type' => ProgressBar::TypeAuto,
'maxVal' => 100,
'value' => 95
]);
Dynamically updated Progress Bar
More power comes when combined with knockout bindings. This results progress in bar reacting dynamically on data change. To make it knockout bindable simply pass JavaScript reference to view model as params.
Percent Based Progress Bar
Knockout JS binded progress bar, based on observable percent
value.
View model created here will be used in other examples too.
Danger type is used here.
class ProgressBarVm extends Maslosoft\Widgets\Ko\Vm
{
public $maxVal = 50;
public $minVal = 0;
public $percent = 15;
public $value = 20;
}
$vm = new ProgressBarVm();
echo ProgressBar::widget([
'type' => ProgressBar::TypeDanger,
'percent' => $vm->percent
]);
Enter some values to see how it changes:
Value Based Progress Bar
Width of progress bar is calculated upon bindable numeric value
.
This one has warning type applied.
$vm = new ProgressBarVm();
// Assign value to observable
$vm->minVal = -20;
echo ProgressBar::widget([
'type' => ProgressBar::TypeWarning,
'maxVal' => $vm->maxVal,
'minVal' => $vm->minVal,
'value' => $vm->value
]);
Enter some values to see how it changes:
Dynamically updated progress bar with auto type
In this example the progress bar is automatically updated when value changes, and it will also change type of progress bar based on value.
$vm = new ProgressBarVm();
// Assign value to observable
$vm->maxVal = 100;
$vm->value = 77;
echo ProgressBar::widget([
'type' => ProgressBar::TypeAuto,
'maxVal' => $vm->maxVal,
'value' => $vm->value
]);
Enter some values to see how it changes: