File: D:/web/matomo.vdk/plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue
<!--
Matomo - free/libre analytics platform
@link https://matomo.org
@license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
-->
<template>
<ContentBlock
:content-title="translate('CoreAdminHome_ArchivingSettings')"
anchor="archivingSettings"
class="matomo-archiving-settings"
>
<div>
<div class="form-group row">
<h3 class="col s12">{{ translate('General_AllowPiwikArchivingToTriggerBrowser') }}</h3>
<div class="col s12 m6">
<p>
<label>
<input
type="radio"
id="enableBrowserTriggerArchiving1"
name="enableBrowserTriggerArchiving"
value="1"
v-model="enableBrowserTriggerArchivingValue"
/>
<span>{{ translate('General_Yes') }}</span>
<span class="form-description" style="margin-left: 4px;">
{{ translate('General_Default') }}
</span>
</label>
</p>
<p>
<label for="enableBrowserTriggerArchiving2">
<input
type="radio"
id="enableBrowserTriggerArchiving2"
name="enableBrowserTriggerArchiving"
value="0"
v-model="enableBrowserTriggerArchivingValue"
/>
<span>{{ translate('General_No') }}</span>
<span
class="form-description"
v-html="$sanitize(archivingTriggerDesc)"
style="margin-left: 4px;"
>
</span>
</label>
</p>
</div><div class="col s12 m6">
<div class="form-help" v-html="$sanitize(archivingInlineHelp)">
</div>
</div>
</div>
<div class="form-group row">
<h3 class="col s12">
{{ translate('General_ReportsContainingTodayWillBeProcessedAtMostEvery') }}
</h3>
<div class="input-field col s12 m6">
<input
type="text"
v-model="todayArchiveTimeToLiveValue"
id='todayArchiveTimeToLive'
:disabled="!isGeneralSettingsAdminEnabled"
/>
<span class="form-description">
{{ translate('General_RearchiveTimeIntervalOnlyForTodayReports') }}
</span>
</div>
<div class="col s12 m6">
<div class="form-help" v-if="isGeneralSettingsAdminEnabled">
<strong v-if="showWarningCron">
{{ translate('General_NewReportsWillBeProcessedByCron') }}<br/>
{{ translate('General_ReportsWillBeProcessedAtMostEveryHour') }}
{{ translate('General_IfArchivingIsFastYouCanSetupCronRunMoreOften') }}<br/>
</strong>
{{ translate('General_SmallTrafficYouCanLeaveDefault', todayArchiveTimeToLiveDefault) }}
<br/>
{{ translate('General_MediumToHighTrafficItIsRecommendedTo', 1800, 3600) }}
</div>
</div>
</div>
<div>
<SaveButton
:saving="isLoading"
@confirm="save()"
/>
</div>
</div>
</ContentBlock>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import {
ContentBlock,
translate,
NotificationsStore,
AjaxHelper,
externalLink,
} from 'CoreHome';
import { SaveButton } from 'CorePluginsAdmin';
export default defineComponent({
props: {
enableBrowserTriggerArchiving: Boolean,
showSegmentArchiveTriggerInfo: Boolean,
isGeneralSettingsAdminEnabled: Boolean,
showWarningCron: Boolean,
todayArchiveTimeToLive: Number,
todayArchiveTimeToLiveDefault: Number,
},
components: {
ContentBlock,
SaveButton,
},
data() {
return {
isLoading: false,
enableBrowserTriggerArchivingValue: this.enableBrowserTriggerArchiving ? 1 : 0,
todayArchiveTimeToLiveValue: this.todayArchiveTimeToLive,
};
},
watch: {
enableBrowserTriggerArchiving(newValue) {
this.enableBrowserTriggerArchivingValue = newValue ? 1 : 0;
},
todayArchiveTimeToLive(newValue) {
this.todayArchiveTimeToLiveValue = newValue;
},
},
computed: {
archivingTriggerDesc() {
let result = '';
result += translate(
'General_ArchivingTriggerDescription',
externalLink('https://matomo.org/docs/setup-auto-archiving/'),
'</a>',
);
if (this.showSegmentArchiveTriggerInfo) {
result += translate('General_ArchivingTriggerSegment');
}
return result;
},
archivingInlineHelp() {
let result = translate('General_ArchivingInlineHelp');
result += '<br/>';
result += translate(
'General_SeeTheOfficialDocumentationForMoreInformation',
externalLink('https://matomo.org/docs/setup-auto-archiving/'),
'</a>',
);
return result;
},
},
methods: {
save() {
this.isLoading = true;
AjaxHelper.post({ module: 'API', method: 'CoreAdminHome.setArchiveSettings' }, {
enableBrowserTriggerArchiving: this.enableBrowserTriggerArchivingValue,
todayArchiveTimeToLive: this.todayArchiveTimeToLiveValue,
}).then(() => {
this.isLoading = false;
const notificationId = NotificationsStore.show({
message: translate('CoreAdminHome_SettingsSaveSuccess'),
type: 'transient',
id: 'generalSettings',
context: 'success',
});
NotificationsStore.scrollToNotification(notificationId);
}).finally(() => {
this.isLoading = false;
});
},
},
});
</script>