Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordizzy <diosmosis@users.noreply.github.com>2022-04-08 15:45:34 +0300
committerGitHub <noreply@github.com>2022-04-08 15:45:34 +0300
commit821734c769fb012fc2ee5994b56937988150bc0f (patch)
treed5f7536f9507dd1def2cca0f2e7ff207771b1b26 /plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue
parent0087d178e516d16d3346c20f30685fd10d9fe84d (diff)
[Vue] migrate scheduled reports management from twig/angularjs to vue (#19012)
* finish initial migration pass * get changes to build * delete angularjs and twig * extract select phone numbers macro to vue and make sure angularjs directives are initialized in scheduled reports event content * fixing several issues + getting report addition extending working * fix UI tests * possibly provide some BC for inline script use * fix several bugs, use better approach for accessing report in event child vue components, provide backwards compatibility for angularjs/inline javascript potentially used by third party plugins * apply review fixes * decode scheduled report description as it is stored escaped in the DB + remove some vue warnings Co-authored-by: sgiehl <stefan@matomo.org>
Diffstat (limited to 'plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue')
-rw-r--r--plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue79
1 files changed, 79 insertions, 0 deletions
diff --git a/plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue b/plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue
new file mode 100644
index 0000000000..d0c067265d
--- /dev/null
+++ b/plugins/MobileMessaging/vue/src/ReportParameters/ReportParameters.vue
@@ -0,0 +1,79 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div v-if="report && report.type === 'mobile'">
+ <SelectPhoneNumbers
+ :phone-numbers="phoneNumbers"
+ :with-introduction="true"
+ :model-value="report.phoneNumbers"
+ @update:model-value="$emit('change', 'phoneNumbers', $event)"
+ />
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { Report } from 'ScheduledReports';
+import SelectPhoneNumbers from '../SelectPhoneNumbers/SelectPhoneNumbers.vue';
+
+const REPORT_TYPE = 'mobile';
+
+export default defineComponent({
+ props: {
+ report: {
+ type: Object,
+ required: true,
+ },
+ phoneNumbers: {
+ type: [Array, Object],
+ required: true,
+ },
+ },
+ components: {
+ SelectPhoneNumbers,
+ },
+ emits: ['change'],
+ created() {
+ const {
+ resetReportParametersFunctions,
+ updateReportParametersFunctions,
+ getReportParametersFunctions,
+ } = window;
+
+ if (!resetReportParametersFunctions[REPORT_TYPE]) {
+ resetReportParametersFunctions[REPORT_TYPE] = (report: Report) => {
+ report.phoneNumbers = [];
+ report.formatmobile = 'sms';
+ };
+ }
+
+ if (!updateReportParametersFunctions[REPORT_TYPE]) {
+ updateReportParametersFunctions[REPORT_TYPE] = (report: Report) => {
+ if (!report?.parameters) {
+ return;
+ }
+
+ if (report.parameters && report.parameters.phoneNumbers) {
+ report.phoneNumbers = report.parameters.phoneNumbers;
+ }
+ report.formatmobile = 'sms';
+ };
+ }
+
+ if (!getReportParametersFunctions[REPORT_TYPE]) {
+ getReportParametersFunctions[REPORT_TYPE] = (report: Report) => {
+ // returning [''] when no phone numbers are selected avoids the "please provide a value
+ // for 'parameters'" error message
+ const phoneNumbers: string[]|undefined = report.phoneNumbers as string[]|undefined;
+ return {
+ phoneNumbers: phoneNumbers || [''],
+ };
+ };
+ }
+ },
+});
+</script>