56 lines
1.8 KiB
Dart
56 lines
1.8 KiB
Dart
import 'package:manager_api_new/api.dart';
|
|
import 'package:manager_app/l10n/app_localizations.dart';
|
|
|
|
/// Mode de progression d'un parcours, présenté au client comme un choix unique.
|
|
///
|
|
/// En base, la progression reste décrite par les booléens `isLinear` et
|
|
/// `requireSuccessToAdvance` du `GuidedPath` : cet enum n'est qu'une lecture
|
|
/// combinée de ces champs, pour éviter de faire assembler au client des cases à
|
|
/// cocher dont les interactions ne sont pas devinables.
|
|
enum ProgressionMode {
|
|
free,
|
|
ordered,
|
|
stepByStep;
|
|
|
|
String label(AppLocalizations l) {
|
|
switch (this) {
|
|
case ProgressionMode.free: return l.progressionFree;
|
|
case ProgressionMode.ordered: return l.progressionOrdered;
|
|
case ProgressionMode.stepByStep: return l.progressionStepByStep;
|
|
}
|
|
}
|
|
|
|
String description(AppLocalizations l) {
|
|
switch (this) {
|
|
case ProgressionMode.free: return l.progressionFreeDesc;
|
|
case ProgressionMode.ordered: return l.progressionOrderedDesc;
|
|
case ProgressionMode.stepByStep: return l.progressionStepByStepDesc;
|
|
}
|
|
}
|
|
}
|
|
|
|
ProgressionMode progressionModeOf(GuidedPathDTO path) {
|
|
if (path.isLinear == false) return ProgressionMode.free;
|
|
if (path.requireSuccessToAdvance == true) return ProgressionMode.stepByStep;
|
|
return ProgressionMode.ordered;
|
|
}
|
|
|
|
void applyProgressionMode(GuidedPathDTO path, ProgressionMode mode) {
|
|
switch (mode) {
|
|
case ProgressionMode.free:
|
|
path.isLinear = false;
|
|
path.requireSuccessToAdvance = false;
|
|
path.hideNextStepsUntilComplete = false;
|
|
break;
|
|
case ProgressionMode.ordered:
|
|
path.isLinear = true;
|
|
path.requireSuccessToAdvance = false;
|
|
path.hideNextStepsUntilComplete = false;
|
|
break;
|
|
case ProgressionMode.stepByStep:
|
|
path.isLinear = true;
|
|
path.requireSuccessToAdvance = true;
|
|
break;
|
|
}
|
|
}
|