72 lines
2.8 KiB
JavaScript
Raw Normal View History

import server from "../../../services/server.js";
import toastService from "../../../services/toast.js";
import OptionsTab from "./options_tab.js";
2021-10-11 22:30:23 +02:00
const TPL = `
<div class="options-section">
<h4>Automatic backup</h4>
<p>Trilium can back up the database automatically:</p>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="daily-backup-enabled">
<label class="custom-control-label" for="daily-backup-enabled">Enable daily backup</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="weekly-backup-enabled">
<label class="custom-control-label" for="weekly-backup-enabled">Enable weekly backup</label>
</div>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="monthly-backup-enabled">
<label class="custom-control-label" for="monthly-backup-enabled">Enable monthly backup</label>
</div>
<br/>
<p>It's recommended to keep the backup turned on, but this can make application startup slow with large databases and/or slow storage devices.</p>
2021-10-11 22:30:23 +02:00
</div>
<div class="options-section">
<h4>Backup now</h4>
<button id="backup-database-button" class="btn">Backup database now</button>
2021-10-11 22:30:23 +02:00
</div>
`;
export default class BackupOptions extends OptionsTab {
get tabTitle() { return "Backup" }
lazyRender() {
this.$widget = $(TPL);
2021-10-11 22:30:23 +02:00
this.$backupDatabaseButton = this.$widget.find("#backup-database-button");
2021-10-11 22:30:23 +02:00
this.$backupDatabaseButton.on('click', async () => {
const {backupFile} = await server.post('database/backup-database');
toastService.showMessage("Database has been backed up to " + backupFile, 10000);
});
this.$dailyBackupEnabled = this.$widget.find("#daily-backup-enabled");
this.$weeklyBackupEnabled = this.$widget.find("#weekly-backup-enabled");
this.$monthlyBackupEnabled = this.$widget.find("#monthly-backup-enabled");
2021-10-11 22:30:23 +02:00
2022-11-20 23:20:42 +01:00
this.$dailyBackupEnabled.on('change', () =>
this.updateCheckboxOption('dailyBackupEnabled', this.$dailyBackupEnabled));
2021-10-11 22:30:23 +02:00
2022-11-20 23:20:42 +01:00
this.$weeklyBackupEnabled.on('change', () =>
this.updateCheckboxOption('weeklyBackupEnabled', this.$weeklyBackupEnabled));
2021-10-11 22:30:23 +02:00
2022-11-20 23:20:42 +01:00
this.$monthlyBackupEnabled.on('change', () =>
this.updateCheckboxOption('monthlyBackupEnabled', this.$monthlyBackupEnabled));
2021-10-11 22:30:23 +02:00
}
optionsLoaded(options) {
2022-11-20 23:20:42 +01:00
this.setCheckboxState(this.$dailyBackupEnabled, options.dailyBackupEnabled);
this.setCheckboxState(this.$weeklyBackupEnabled, options.weeklyBackupEnabled);
this.setCheckboxState(this.$monthlyBackupEnabled, options.monthlyBackupEnabled);
2021-10-11 22:30:23 +02:00
}
}