cleaner looking danger zone for app AdminTab

This commit is contained in:
f43nd1r 2019-12-04 03:55:12 +01:00
parent e556461f73
commit 80193603c6
5 changed files with 62 additions and 36 deletions

View file

@ -37,6 +37,7 @@ class AcrariumCard extends PolymerElement {
slot[class~="divider"]::slotted(:not(:first-child)) {
border-top: 1px solid var(--lumo-contrast-20pct);
margin-top: 0.5em;
}
</style>
<slot name="header" class="acrarium-card-header" on-click="handleClick"></slot>

View file

@ -117,8 +117,8 @@ public class Translatable<T extends Component> extends Composite<T> implements L
return new Translatable<>(new TextArea("", initialValue, ""), textField -> textField.setLabel(textField.getTranslation(captionId, params)));
}
public static <T> Translatable<ComboBox<T>> createComboBox(@NonNull Collection<T> items, @NonNull String captionId, @NonNull Object... params) {
return new Translatable<>(new ComboBox<>("", items), tComboBox -> tComboBox.setLabel(tComboBox.getTranslation(captionId, params)));
public static <T> Translatable.Value<ComboBox<T>, T> createComboBox(@NonNull Collection<T> items, @NonNull String captionId, @NonNull Object... params) {
return new Translatable.Value<>(new ComboBox<>("", items), tComboBox -> tComboBox.setLabel(tComboBox.getTranslation(captionId, params)));
}
public static <T> Translatable<Select<T>> createSelect(@NonNull Collection<T> items, @NonNull String captionId, @NonNull Object... params) {

View file

@ -170,37 +170,50 @@ public class AdminTab extends AppTab<Div> {
Box configBox = new Box(Translatable.createLabel(Messages.NEW_ACRA_CONFIG), Translatable.createLabel(Messages.NEW_ACRA_CONFIG_DETAILS),
Translatable.createButton(e -> new Popup().setTitle(Messages.NEW_ACRA_CONFIG_CONFIRM)
.addYesNoButtons(popup -> popup.clear().addComponent(new ConfigurationLabel(getDataService().recreateReporterUser(app))).addCloseButton().show())
.show(), Messages.CREATE));
.addYesNoButtons(popup -> popup.clear().addComponent(new ConfigurationLabel(getDataService().recreateReporterUser(app))).addCloseButton().show())
.show(), Messages.CREATE));
Box matchingBox = new Box(Translatable.createLabel(Messages.NEW_BUG_CONFIG), Translatable.createLabel(Messages.NEW_BUG_CONFIG_DETAILS),
Translatable.createButton(e -> {
App.Configuration configuration = app.getConfiguration();
Translatable.Value<RangeField, Double> score = Translatable.createRangeField(Messages.SCORE).with(it -> {
it.setMin(0);
it.setMax(100);
it.setValue((double) configuration.getMinScore());
});
new Popup().addComponent(score)
.setTitle(Messages.NEW_BUG_CONFIG_CONFIRM)
.addYesNoButtons(p -> getDataService().changeConfiguration(app, new App.Configuration(score.getValue().intValue())), true)
.show();
}, Messages.CONFIGURE));
NumberField age = new NumberField();
age.setStep(1d);
age.setMin(1d);
age.setValue(30d);
age.setPreventInvalidInput(true);
age.setHasControls(true);
age.setWidthFull();
age.setSuffixComponent(Translatable.createLabel(Messages.REPORTS_OLDER_THAN2));
FlexLayout purgeAge = new FlexLayout();
purgeAge.setWidthFull();
purgeAge.preventWhiteSpaceBreaking();
purgeAge.setAlignItems(FlexComponent.Alignment.CENTER);
purgeAge.add(Translatable.createButton(e -> getDataService().deleteReportsOlderThanDays(app, age.getValue().intValue()), Messages.PURGE),
Translatable.createLabel(Messages.REPORTS_OLDER_THAN1),
age);
purgeAge.expand(age);
App.Configuration configuration = app.getConfiguration();
Translatable.Value<RangeField, Double> score = Translatable.createRangeField(Messages.SCORE).with(it -> {
it.setMin(0);
it.setMax(100);
it.setValue((double) configuration.getMinScore());
});
new Popup().addComponent(score)
.setTitle(Messages.NEW_BUG_CONFIG_CONFIRM)
.addYesNoButtons(p -> getDataService().changeConfiguration(app, new App.Configuration(score.getValue().intValue())), true)
.show();
}, Messages.CONFIGURE));
Box purgeAgeBox = new Box(Translatable.createLabel(Messages.PURGE_OLD), Translatable.createLabel(Messages.PURGE_OLD_DETAILS), Translatable.createButton(e -> {
Translatable.Value<NumberField, Double> age = Translatable.createNumberField(30d, Messages.REPORTS_OLDER_THAN1).with(it -> {
it.setStep(1d);
it.setMin(1d);
it.setPreventInvalidInput(true);
it.setHasControls(true);
it.setWidthFull();
it.setSuffixComponent(Translatable.createLabel(Messages.REPORTS_OLDER_THAN2));
}
);
new Popup().addComponent(age)
.addYesNoButtons(popup -> {
getDataService().deleteReportsOlderThanDays(app, age.getValue().intValue());
}, true).show();
}, Messages.PURGE));
Box purgeVersionBox = new Box(Translatable.createLabel(Messages.PURGE_VERSION), Translatable.createLabel(Messages.PURGE_VERSION_DETAILS), Translatable.createButton(e -> {
Translatable.Value<ComboBox<Integer>, Integer> versionBox = Translatable.createComboBox(getDataService().getFromReports(app, null, report.stacktrace.version.code), Messages.REPORTS_BEFORE_VERSION);
new Popup().addComponent(versionBox)
.addYesNoButtons(popup -> {
if (versionBox.getValue() != null) {
getDataService().deleteReportsBeforeVersion(app, versionBox.getValue());
}
}, true).show();
}, Messages.PURGE));
Box deleteBox = new Box(Translatable.createLabel(Messages.DELETE_APP), Translatable.createLabel(Messages.DELETE_APP_DETAILS), Translatable.createButton(e ->
new Popup().setTitle(Messages.DELETE_APP_CONFIRM).addYesNoButtons(popup -> {
getDataService().delete(app);
UI.getCurrent().navigate(Overview.class);
}, true).show(), Messages.DELETE));
ComboBox<Integer> versionBox = new ComboBox<>(null, getDataService().getFromReports(app, null, QReport.report.stacktrace.version.code));
versionBox.setWidth("100%");
FlexLayout purgeVersion = new FlexLayout();
@ -218,7 +231,7 @@ public class AdminTab extends AppTab<Div> {
UI.getCurrent().navigate(Overview.class);
}, true).show(), Messages.DELETE_APP);
deleteButton.setWidthFull();
Card dangerCard = createCard(configBox, matchingBox, purgeAge, purgeVersion, deleteButton);
Card dangerCard = createCard(configBox, matchingBox, purgeAgeBox, purgeVersionBox, deleteBox);
dangerCard.setHeader(Translatable.createLabel(Messages.DANGER_ZONE));
dangerCard.enableDivider();
dangerCard.setHeaderColor("var(----lumo-error-text-color)", "var(--lumo-error-color)");

View file

@ -50,7 +50,7 @@ solved=Gelöst
statistics=Statistiken
newAcraConfig=Erzeuge neue ACRA Konfiguration
confirm=Bestätigen
newAcraConfigConfirm=Sind Sie sicher dass Sie eine neue ACRA Konfiguration erzeugen wollen?<br>Die existierende Konfiguration wird dadurch ungültig
newAcraConfigConfirm=Sind Sie sicher dass Sie eine neue ACRA Konfiguration erzeugen wollen? Die existierende Konfiguration wird dadurch ungültig
newBugConfig=Bugzusammenfassung konfigurieren
minScore=Minimaler Score
newBugConfigConfirm=Sind Sie sicher dass sie diese Konfiguration speichern wollen? Alle Bugs werden überprüft, was eine Weile dauern kann. Beachten Sie außerdem, dass ein höherer Wert keine bereits gebildeten Zusammenfassungen auflöst.
@ -170,3 +170,9 @@ other=Weitere
newAcraConfigDetails=Nützlich wenn Sie die Konfiguration vergessen haben oder invalidieren wollen
configure=Konfigurieren
newBugConfigDetails=Anpassen wie ähnlich Bugs sein müssen um automatisch zusammgeführt zu werden
purgeOld=Lösche alte Berichte
purgeOldDetails=Lösche Berichte, die älter als das gegebene Datum sind
purgeVersion=Lösche Berichte aus alten Versionen
purgeVersionDetails=Lösche Berichte, die älter als die gegebene Version sind
deleteAppDetails=Lösche diese App und alle zugehörigen Daten
delete=Lösche

View file

@ -50,7 +50,7 @@ solved=Solved
statistics=Statistics
newAcraConfig=Create new ACRA Configuration
confirm=Confirm
newAcraConfigConfirm=Are you sure you want to create a new ACRA configuration?<br>The existing configuration will be invalidated
newAcraConfigConfirm=Are you sure you want to create a new ACRA configuration? The existing configuration will be invalidated
newBugConfig=Configure Bug matching
minScore=Minimum Score
newBugConfigConfirm=Are you sure you want to save this configuration?\
@ -172,3 +172,9 @@ other=Other
newAcraConfigDetails=Useful if you forgot or want to invalidate the old configuration
configure=Configure
newBugConfigDetails=Change how similar bugs have to be to be merged automatically
purgeOld=Purge old reports
purgeOldDetails=Delete reports older than a certain date
purgeVersion=Purge reports from previous versions
purgeVersionDetails=Delete reports older than a certain version
deleteAppDetails=Delete this app and all data associated with it
delete=Delete