diff --git a/API.php b/API.php
index 88bac09f..a469d23f 100755
--- a/API.php
+++ b/API.php
@@ -129,13 +129,14 @@ public function getAlerts($idSites, $ifSuperUserReturnAllAlerts = false)
* @param bool|string $reportCondition
* @param bool|string $reportValue
* @param array $reportMediums
+ * @param string $slackChannelID
* @return int ID of new Alert
*/
- public function addAlert($name, $idSites, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition = false, $reportValue = false, array $reportMediums = [])
+ public function addAlert($name, $idSites, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition = false, $reportValue = false, array $reportMediums = [], string $slackChannelID = '')
{
$idSites = Site::getIdSitesFromIdSitesString($idSites);
- $this->checkAlert($idSites, $name, $period, $emailMe, $additionalEmails, $phoneNumbers, $metricCondition, $metric, $comparedTo, $reportCondition, $reportUniqueId, $reportMediums);
+ $this->checkAlert($idSites, $name, $period, $emailMe, $additionalEmails, $phoneNumbers, $slackChannelID, $metricCondition, $metric, $comparedTo, $reportCondition, $reportUniqueId, $reportMediums);
$name = Common::unsanitizeInputValue($name);
$login = Piwik::getCurrentUserLogin();
@@ -147,7 +148,7 @@ public function addAlert($name, $idSites, $period, $emailMe, $additionalEmails,
$metricValue = Common::forceDotAsSeparatorForDecimalPoint((float)$metricValue);
- return $this->getModel()->createAlert($name, $idSites, $login, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition, $reportValue, $reportMediums);
+ return $this->getModel()->createAlert($name, $idSites, $login, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition, $reportValue, $reportMediums, $slackChannelID);
}
private function filterAdditionalEmails($additionalEmails)
@@ -181,12 +182,13 @@ private function filterPhoneNumbers($phoneNumbers)
return array_values($phoneNumbers);
}
- private function checkAlert($idSites, $name, $period, &$emailMe, &$additionalEmails, &$phoneNumbers, $metricCondition, $metricValue, $comparedTo, $reportCondition, $reportUniqueId, $reportMediums)
+ private function checkAlert($idSites, $name, $period, &$emailMe, &$additionalEmails, &$phoneNumbers, &$slackChannelID, $metricCondition, $metricValue, $comparedTo, $reportCondition, $reportUniqueId, $reportMediums)
{
Piwik::checkUserHasViewAccess($idSites);
$additionalEmails = in_array('email', $reportMediums) ? $this->filterAdditionalEmails($additionalEmails) : [];
$phoneNumbers = in_array('mobile', $reportMediums) ? $this->filterPhoneNumbers($phoneNumbers) : [];
$emailMe = in_array('email', $reportMediums) && $emailMe;
+ $slackChannelID = in_array('slack', $reportMediums) ? $slackChannelID : '';
$this->validator->checkName($name);
$this->validator->checkPeriod($period);
@@ -224,17 +226,18 @@ private function checkAlert($idSites, $name, $period, &$emailMe, &$additionalEma
* @param bool|string $reportCondition
* @param bool|string $reportValue
* @param array $reportMediums
+ * @param string $slackChannelID
*
* @return boolean
*/
- public function editAlert($idAlert, $name, $idSites, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition = false, $reportValue = false, array $reportMediums = [])
+ public function editAlert($idAlert, $name, $idSites, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition = false, $reportValue = false, array $reportMediums = [], string $slackChannelID = '')
{
// make sure alert exists and user has permission to read
$this->getAlert($idAlert);
$idSites = Site::getIdSitesFromIdSitesString($idSites);
- $this->checkAlert($idSites, $name, $period, $emailMe, $additionalEmails, $phoneNumbers, $metricCondition, $metric, $comparedTo, $reportCondition, $reportUniqueId, $reportMediums);
+ $this->checkAlert($idSites, $name, $period, $emailMe, $additionalEmails, $phoneNumbers, $slackChannelID, $metricCondition, $metric, $comparedTo, $reportCondition, $reportUniqueId, $reportMediums);
$name = Common::unsanitizeInputValue($name);
@@ -245,7 +248,7 @@ public function editAlert($idAlert, $name, $idSites, $period, $emailMe, $additio
$metricValue = Common::forceDotAsSeparatorForDecimalPoint((float)$metricValue);
- return $this->getModel()->updateAlert($idAlert, $name, $idSites, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition, $reportValue, $reportMediums);
+ return $this->getModel()->updateAlert($idAlert, $name, $idSites, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition, $reportValue, $reportMediums, $slackChannelID);
}
/**
diff --git a/Controller.php b/Controller.php
index 123e3233..63fc44f0 100755
--- a/Controller.php
+++ b/Controller.php
@@ -10,6 +10,7 @@
namespace Piwik\Plugins\CustomAlerts;
use Piwik\Common;
+use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Period;
use Piwik\Piwik;
@@ -277,6 +278,13 @@ private function addBasicCreateAndEditVariables($view, $alert)
$view->comparablesDates = $comparablesDates;
$view->reportMetadata = $this->findReportMetadata($alert);
$view->supportsSMS = $this->supportsPlugin('MobileMessaging');
+ $supportsSlack = $this->supportsPlugin('Slack');
+ $isSlackOAuthTokenAdded = false;
+ if ($supportsSlack) {
+ $slackSettings = StaticContainer::get(\Piwik\Plugins\Slack\SystemSettings::class);
+ $isSlackOAuthTokenAdded = !empty($slackSettings->slackOauthToken->getValue());
+ }
+ $view->isSlackOAuthTokenAdded = $isSlackOAuthTokenAdded;
$view->periodOptions = array(
array('key' => 'day', 'value' => Piwik::translate('Intl_PeriodDay')),
array('key' => 'week', 'value' => Piwik::translate('Intl_PeriodWeek')),
diff --git a/CustomAlerts.php b/CustomAlerts.php
index 9db5f131..86e6f5f5 100755
--- a/CustomAlerts.php
+++ b/CustomAlerts.php
@@ -178,7 +178,8 @@ public function removePhoneNumberFromAllAlerts($phoneNumber)
$alert['report'],
$alert['report_condition'],
$alert['report_matched'],
- $alert['report_mediums']
+ $alert['report_mediums'],
+ $alert['slack_channel_id']
);
}
}
@@ -274,6 +275,7 @@ public static function getReportMediumOptions(): array
return [
['key' => 'email', 'value' => Piwik::translate('CustomAlerts_MediumEmail'), 'disabled' => false],
['key' => 'mobile', 'value' => Piwik::translate('CustomAlerts_MediumMobile'), 'disabled' => !PluginManager::getInstance()->isPluginActivated('MobileMessaging')],
+ ['key' => 'slack', 'value' => Piwik::translate('CustomAlerts_MediumSlack'), 'disabled' => !PluginManager::getInstance()->isPluginActivated('Slack')],
];
}
diff --git a/Model.php b/Model.php
index b85fc65d..5ee55c4f 100755
--- a/Model.php
+++ b/Model.php
@@ -36,7 +36,8 @@ public static function install()
`compared_to` SMALLINT (4) UNSIGNED NOT NULL DEFAULT 1 ,
`email_me` BOOLEAN NOT NULL DEFAULT '0',
`additional_emails` TEXT ,
- `phone_numbers` TEXT ";
+ `phone_numbers` TEXT ,
+ `slack_channel_id` VARCHAR(50) NULL ";
DbHelper::createTable('alert', $tableAlert);
@@ -67,6 +68,7 @@ public static function install()
`email_me` BOOLEAN NOT NULL DEFAULT '0',
`additional_emails` TEXT ,
`phone_numbers` TEXT ,
+ `slack_channel_id` VARCHAR(50) NULL ,
PRIMARY KEY (idtriggered)";
DbHelper::createTable('alert_triggered', $tableAlertLog);
@@ -251,11 +253,12 @@ public function getAllAlertsForPeriod($period)
* @param string $reportCondition
* @param string $reportValue
* @param array $reportMediums
+ * @param string $slackChannelID
*
* @return int ID of new Alert
* @throws \Exception
*/
- public function createAlert($name, $idSites, $login, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition, $reportValue, $reportMediums)
+ public function createAlert($name, $idSites, $login, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition, $reportValue, $reportMediums, $slackChannelID)
{
$idAlert = $this->getNextAlertId();
@@ -274,7 +277,8 @@ public function createAlert($name, $idSites, $login, $period, $emailMe, $additio
'compared_to' => $comparedTo,
'report_condition' => $reportCondition,
'report_matched' => $reportValue,
- 'report_mediums' => json_encode($reportMediums)
+ 'report_mediums' => json_encode($reportMediums),
+ 'slack_channel_id' => $slackChannelID
);
$db = $this->getDb();
@@ -332,11 +336,12 @@ private function removeAllSites($idAlert)
* @param string $reportCondition
* @param string $reportValue
* @param array $reportMediums
+ * @param string $slackChannelID
*
* @return int
* @throws \Exception
*/
- public function updateAlert($idAlert, $name, $idSites, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition, $reportValue, $reportMediums)
+ public function updateAlert($idAlert, $name, $idSites, $period, $emailMe, $additionalEmails, $phoneNumbers, $metric, $metricCondition, $metricValue, $comparedTo, $reportUniqueId, $reportCondition, $reportValue, $reportMediums, $slackChannelID)
{
$alert = array(
'name' => $name,
@@ -352,6 +357,7 @@ public function updateAlert($idAlert, $name, $idSites, $period, $emailMe, $addit
'report_condition' => $reportCondition,
'report_matched' => $reportValue,
'report_mediums' => json_encode($reportMediums),
+ 'slack_channel_id' => $slackChannelID
);
$db = $this->getDb();
@@ -381,7 +387,7 @@ public function triggerAlert($idAlert, $idSite, $valueNew, $valueOld, $datetime)
{
$alert = $this->getAlert($idAlert);
- $keysToKeep = array('idalert', 'name', 'login', 'period', 'metric', 'metric_condition', 'metric_matched', 'report', 'report_condition', 'report_matched', 'report_mediums', 'compared_to', 'email_me', 'additional_emails', 'phone_numbers');
+ $keysToKeep = array('idalert', 'name', 'login', 'period', 'metric', 'metric_condition', 'metric_matched', 'report', 'report_condition', 'report_matched', 'report_mediums', 'compared_to', 'email_me', 'additional_emails', 'phone_numbers', 'slack_channel_id');
$triggeredAlert = array();
foreach ($keysToKeep as $key) {
@@ -396,7 +402,7 @@ public function triggerAlert($idAlert, $idSite, $valueNew, $valueOld, $datetime)
$triggeredAlert['idsite'] = $idSite;
$triggeredAlert['additional_emails'] = json_encode($triggeredAlert['additional_emails']);
$triggeredAlert['phone_numbers'] = json_encode($triggeredAlert['phone_numbers']);
- $triggeredAlert['report_mediums'] = json_encode($triggeredAlert['report_mediums']);
+ $triggeredAlert['report_mediums'] = json_encode($triggeredAlert['report_mediums']);
$db = $this->getDb();
$db->insert(
diff --git a/Notifier.php b/Notifier.php
index bb7c339e..82f08dc7 100755
--- a/Notifier.php
+++ b/Notifier.php
@@ -45,6 +45,8 @@ public function sendNewAlerts($period, $idSite)
$this->sendAlertsPerSmsToRecipient($alerts, new \Piwik\Plugins\MobileMessaging\Model(), $phoneNumber);
}
+ Piwik::postEvent('CustomAlerts.sendNewAlerts', [$triggeredAlerts]);
+
foreach ($triggeredAlerts as $triggeredAlert) {
$this->markAlertAsSent($triggeredAlert);
}
diff --git a/Updates/5.1.0.php b/Updates/5.1.0.php
index 3e77058c..82394ae0 100644
--- a/Updates/5.1.0.php
+++ b/Updates/5.1.0.php
@@ -45,6 +45,8 @@ public function getMigrations(Updater $updater)
return array(
$this->migration->db->addColumn('alert', 'report_mediums', 'TEXT NOT NULL', 'report_matched'),
$this->migration->db->addColumn('alert_triggered', 'report_mediums', 'TEXT NOT NULL', 'report_matched'),
+ $this->migration->db->addColumn('alert', 'slack_channel_id', 'VARCHAR(50) NULL', 'phone_numbers'),
+ $this->migration->db->addColumn('alert_triggered', 'slack_channel_id', 'VARCHAR(50) NULL', 'phone_numbers'),
$this->migration->db->sql("UPDATE `$alertTableName` set report_mediums=CASE WHEN (email_me=1 OR additional_emails!='[]') AND phone_numbers!='[]' THEN '$emailPhoneJson' WHEN (email_me=1 OR additional_emails!='[]') AND phone_numbers='[]' THEN '$emailJson' WHEN (email_me!=1 AND additional_emails='[]') AND phone_numbers!='[]' THEN '$phoneJson' ELSE '$emptyJson' END"),
$this->migration->db->sql("UPDATE `$alertTriggeredTableName` set report_mediums=CASE WHEN (email_me=1 OR additional_emails!='[]') AND phone_numbers!='[]' THEN '$emailPhoneJson' WHEN (email_me=1 OR additional_emails!='[]') AND phone_numbers='[]' THEN '$emailJson' WHEN (email_me!=1 AND additional_emails='[]') AND phone_numbers!='[]' THEN '$phoneJson' ELSE '$emptyJson' END"),
);
diff --git a/lang/en.json b/lang/en.json
index 07d3bae7..f8f00c79 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -76,11 +76,12 @@
"FinalTaskRetryWarning": "Final retry of alerts task. Unable to process the following alerts: %1$s",
"MediumEmail": "Email",
"MediumMobile": "Mobile",
+ "MediumSlack": "Slack",
"MediumTitle": "Send alerts via",
- "MediumDescription": "Select the medium to send alerts.",
- "EmptyReportMediums": "Report mediums cannot be empty.",
+ "MediumDescription": "Choose how you want to receive alerts when this custom alert is triggered.",
+ "EmptyReportMediums": "At least one delivery method must be selected.",
"InvalidReportMediums": "Invalid report mediums value. Allowed values are %1$s.",
"InvalidEmailReportParameter": "Please select \"Send to me\" or specify valid email addresses to email the report.",
- "InvalidPhoneNumberReportParameter": "Phone numbers cannot be empty."
+ "InvalidPhoneNumberReportParameter": "Phone numbers cannot be empty. Please activate at least one phone number by accessing the Mobile Messaging settings page."
}
}
diff --git a/phpcs.xml b/phpcs.xml
index 3f0ee582..36915b90 100644
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -15,7 +15,7 @@
-
+
tests/*
diff --git a/templates/form.twig b/templates/form.twig
index f53dcca8..e9d8f199 100755
--- a/templates/form.twig
+++ b/templates/form.twig
@@ -9,6 +9,7 @@
supports-s-m-s="{{ supportsSMS|default(null)|json_encode }}"
mobile-macro="{{ mobileMacro|default(null)|json_encode }}"
phone-numbers="{{ phoneNumbers|default([])|json_encode }}"
+ is-slack-oauth-token-added="{{ isSlackOAuthTokenAdded|default(null)|json_encode }}"
report-metadata="{{ reportMetadata|default(null)|json_encode }}"
alert-group-conditions="{{ alertGroupConditions|default(null)|json_encode }}"
metric-condition-options="{{ metricConditionOptions|default(null)|json_encode }}"
diff --git a/tests/Fixtures/CustomAlerts.php b/tests/Fixtures/CustomAlerts.php
index bd9ed5cb..8d4416ea 100644
--- a/tests/Fixtures/CustomAlerts.php
+++ b/tests/Fixtures/CustomAlerts.php
@@ -76,7 +76,7 @@ private function createAlert($name, $period, $idSites, $metric, $report, $login
}
$model = new Model();
- $model->createAlert($name, $idSites, $login, $period, 0, $emails, $phoneNumbers, $metric, 'less_than', 5, $comparedTo = 1, $report, 'matches_exactly', $reportMatched, ['email', 'mobile']);
+ $model->createAlert($name, $idSites, $login, $period, 0, $emails, $phoneNumbers, $metric, 'less_than', 5, $comparedTo = 1, $report, 'matches_exactly', $reportMatched, ['email', 'mobile'], '');
}
private function triggerAlert($idAlert, $valueNew, $valueOld, $datetime)
diff --git a/tests/Integration/ApiTest.php b/tests/Integration/ApiTest.php
index 6d64049e..434eac64 100644
--- a/tests/Integration/ApiTest.php
+++ b/tests/Integration/ApiTest.php
@@ -61,7 +61,8 @@ protected function createAlert(
$report,
$reportCondition,
'Piwik',
- ['email', 'mobile']
+ ['email', 'mobile'],
+ ''
);
return $id;
}
@@ -225,6 +226,7 @@ protected function assertIsAlert(
'email_me' => 0,
'additional_emails' => array('test1@example.com', 'test2@example.com'),
'phone_numbers' => array(),
+ 'slack_channel_id' => '',
'compared_to' => 1,
'id_sites' => $idSites,
'report_mediums' => ['email', 'mobile']
@@ -580,6 +582,7 @@ public function test_triggerAlert_getTriggeredAlertsForPeriod_ShouldMarkAlertAsT
'value_old' => 48,
'additional_emails' => array('test1@example.com', 'test2@example.com'),
'phone_numbers' => array(),
+ 'slack_channel_id' => '',
'email_me' => 0,
'compared_to' => 1,
'id_sites' => array(1, 2),
diff --git a/tests/Integration/CustomAlertsTest.php b/tests/Integration/CustomAlertsTest.php
index 9a60e2c1..45943ef2 100644
--- a/tests/Integration/CustomAlertsTest.php
+++ b/tests/Integration/CustomAlertsTest.php
@@ -110,7 +110,8 @@ private function createAlert($name, $phoneNumbers, $idSites = array(1), $login =
$report,
'matches_exactly',
'Piwik',
- $mediums
+ $mediums,
+ ''
);
return $this->model->getAlert($id);
@@ -275,6 +276,7 @@ public function testGetReportMediumOptions()
$this->assertEquals([
['key' => 'email', 'value' => 'CustomAlerts_MediumEmail', 'disabled' => false],
['key' => 'mobile', 'value' => 'CustomAlerts_MediumMobile', 'disabled' => false],
+ ['key' => 'slack', 'value' => 'CustomAlerts_MediumSlack', 'disabled' => true],
], CustomAlerts::getReportMediumOptions());
}
@@ -284,6 +286,7 @@ public function testGetReportMediumOptionsWhenMobileMessagingPluginDisabled()
$this->assertEquals([
['key' => 'email', 'value' => 'CustomAlerts_MediumEmail', 'disabled' => false],
['key' => 'mobile', 'value' => 'CustomAlerts_MediumMobile', 'disabled' => true],
+ ['key' => 'slack', 'value' => 'CustomAlerts_MediumSlack', 'disabled' => true],
], CustomAlerts::getReportMediumOptions());
}
}
diff --git a/tests/Integration/ModelTest.php b/tests/Integration/ModelTest.php
index f816c2d4..1cf3c03b 100644
--- a/tests/Integration/ModelTest.php
+++ b/tests/Integration/ModelTest.php
@@ -49,7 +49,7 @@ private function createAlert(
$emails = array('test1@example.com', 'test2@example.com');
$phoneNumbers = array('0123456789');
- $id = $this->model->createAlert($name, $idSites, $login, $period, 0, $emails, $phoneNumbers, $metric, 'less_than', 5, $comparedTo = 1, $report, 'matches_exactly', 'Piwik', ['email', 'mobile']);
+ $id = $this->model->createAlert($name, $idSites, $login, $period, 0, $emails, $phoneNumbers, $metric, 'less_than', 5, $comparedTo = 1, $report, 'matches_exactly', 'Piwik', ['email', 'mobile'], '');
return $id;
}
@@ -58,13 +58,13 @@ public function test_install_ShouldNotFailAndActuallyCreateTheDatabases()
$this->assertContainTables(array('alert', 'alert_site', 'alert_triggered'));
$columns = Db::fetchAll('show columns from ' . Common::prefixTable('alert'));
- $this->assertCount(15, $columns);
+ $this->assertCount(16, $columns);
$columns = Db::fetchAll('show columns from ' . Common::prefixTable('alert_site'));
$this->assertCount(2, $columns);
$columns = Db::fetchAll('show columns from ' . Common::prefixTable('alert_triggered'));
- $this->assertCount(21, $columns);
+ $this->assertCount(22, $columns);
}
private function assertContainTables($expectedTables)
@@ -147,6 +147,7 @@ private function assertIsAlert(
'email_me' => 0,
'additional_emails' => array('test1@example.com', 'test2@example.com'),
'phone_numbers' => array('0123456789'),
+ 'slack_channel_id' => '',
'compared_to' => 1,
'id_sites' => $idSites,
'report_mediums' => ['email', 'mobile'],
@@ -203,7 +204,8 @@ private function editAlert(
$report,
'matches_exactly',
'Piwik',
- ['email', 'mobile']
+ ['email', 'mobile'],
+ ''
);
return $id;
}
@@ -321,6 +323,7 @@ public function test_triggerAlert_getTriggeredAlertsForPeriod_ShouldMarkAlertAsT
'value_old' => 48.519,
'additional_emails' => array('test1@example.com', 'test2@example.com'),
'phone_numbers' => array('0123456789'),
+ 'slack_channel_id' => '',
'email_me' => 0,
'id_sites' => array(1, 2),
'report_mediums' => ['email', 'mobile']
diff --git a/tests/Integration/ProcessorTest.php b/tests/Integration/ProcessorTest.php
index 01d6b342..76879d3b 100644
--- a/tests/Integration/ProcessorTest.php
+++ b/tests/Integration/ProcessorTest.php
@@ -762,7 +762,7 @@ private function createAlert(
$emails = ['test1@example.com', 'test2@example.com'];
$phoneNumbers = ['0123456789'];
- return $this->alertModel->createAlert($name, $idSites, $login, $period, 0, $emails, $phoneNumbers, $metric, 'less_than', 5, $comparedTo = 1, $report, 'matches_exactly', 'Piwik', ['email', 'mobile']);
+ return $this->alertModel->createAlert($name, $idSites, $login, $period, 0, $emails, $phoneNumbers, $metric, 'less_than', 5, $comparedTo = 1, $report, 'matches_exactly', 'Piwik', ['email', 'mobile'], '');
}
private function getTestTask(): Task
diff --git a/tests/UI/CustomAlerts_spec.js b/tests/UI/CustomAlerts_spec.js
index 83020936..e66787d4 100644
--- a/tests/UI/CustomAlerts_spec.js
+++ b/tests/UI/CustomAlerts_spec.js
@@ -36,6 +36,14 @@ describe("CustomAlerts", function () {
expect(await screenshotPageWrap()).to.matchImage('edit');
});
+ it('should show the report mediums', async function () {
+ await page.click('.report-mediums .select-dropdown');
+ await page.waitForNetworkIdle();
+ await page.waitForTimeout(350); // wait for animation
+ expect(await screenshotPageWrap()).to.matchImage('report_mediums');
+ await page.click('.report-mediums .select-dropdown');
+ });
+
it('should reload alert conditions when site is changed', async function () {
await page.evaluate(function() {
$('.siteSelector .dropdown li:contains("Piwik test"):last').click();
diff --git a/tests/UI/expected-ui-screenshots/CustomAlerts_alert_condition_reloaded_site1.png b/tests/UI/expected-ui-screenshots/CustomAlerts_alert_condition_reloaded_site1.png
index a9928273..a2bc00af 100644
Binary files a/tests/UI/expected-ui-screenshots/CustomAlerts_alert_condition_reloaded_site1.png and b/tests/UI/expected-ui-screenshots/CustomAlerts_alert_condition_reloaded_site1.png differ
diff --git a/tests/UI/expected-ui-screenshots/CustomAlerts_alert_condition_reloaded_site2.png b/tests/UI/expected-ui-screenshots/CustomAlerts_alert_condition_reloaded_site2.png
index 7ff013aa..2c58d031 100644
Binary files a/tests/UI/expected-ui-screenshots/CustomAlerts_alert_condition_reloaded_site2.png and b/tests/UI/expected-ui-screenshots/CustomAlerts_alert_condition_reloaded_site2.png differ
diff --git a/tests/UI/expected-ui-screenshots/CustomAlerts_edit.png b/tests/UI/expected-ui-screenshots/CustomAlerts_edit.png
index fcb048cb..1b73e116 100644
Binary files a/tests/UI/expected-ui-screenshots/CustomAlerts_edit.png and b/tests/UI/expected-ui-screenshots/CustomAlerts_edit.png differ
diff --git a/tests/UI/expected-ui-screenshots/CustomAlerts_report_mediums.png b/tests/UI/expected-ui-screenshots/CustomAlerts_report_mediums.png
new file mode 100644
index 00000000..aae3c173
Binary files /dev/null and b/tests/UI/expected-ui-screenshots/CustomAlerts_report_mediums.png differ
diff --git a/vue/dist/CustomAlerts.umd.js b/vue/dist/CustomAlerts.umd.js
index 4d04365b..b27d80b0 100644
--- a/vue/dist/CustomAlerts.umd.js
+++ b/vue/dist/CustomAlerts.umd.js
@@ -277,62 +277,69 @@ var external_CoreHome_ = __webpack_require__("19dc");
ListAlertsvue_type_script_lang_ts.render = render
/* harmony default export */ var ListAlerts = (ListAlertsvue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CustomAlerts/vue/src/EditAlert/EditAlert.vue?vue&type=template&id=1a3b439a
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CustomAlerts/vue/src/EditAlert/EditAlert.vue?vue&type=template&id=6c23f33a
-const EditAlertvue_type_template_id_1a3b439a_hoisted_1 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_1 = {
id: "customAlertPeriodHelp",
class: "inline-help-node"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_2 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_2 = {
+ class: "report-mediums"
+};
+const EditAlertvue_type_template_id_6c23f33a_hoisted_3 = {
key: 0
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_3 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_4 = {
key: 1
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_4 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_5 = {
key: 0
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_5 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_6 = {
key: 1,
class: "row"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_6 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_7 = {
class: "col s12"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_7 = ["innerHTML"];
-const EditAlertvue_type_template_id_1a3b439a_hoisted_8 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_8 = ["innerHTML"];
+const EditAlertvue_type_template_id_6c23f33a_hoisted_9 = {
+ key: 2
+};
+const EditAlertvue_type_template_id_6c23f33a_hoisted_10 = {
class: "row"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_9 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_11 = {
class: "col s12"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_10 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_12 = {
class: "row conditionAndValue"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_11 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_13 = {
class: "col s12 m6"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_12 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_14 = {
class: "col s12 m6"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_13 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_15 = {
class: "ui-autocomplete-input",
ref: "reportValue"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_14 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_16 = {
class: "row conditionAndValue"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_15 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_17 = {
class: "col s12 m6"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_16 = {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_18 = {
class: "col s12 m6"
};
-const EditAlertvue_type_template_id_1a3b439a_hoisted_17 = ["innerHTML"];
-function EditAlertvue_type_template_id_1a3b439a_render(_ctx, _cache, $props, $setup, $data, $options) {
+const EditAlertvue_type_template_id_6c23f33a_hoisted_19 = ["innerHTML"];
+function EditAlertvue_type_template_id_6c23f33a_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
const _component_SelectPhoneNumbers = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SelectPhoneNumbers");
const _component_Alert = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Alert");
+ const _component_SelectSlackChannel = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SelectSlackChannel");
const _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
const _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
const _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
@@ -364,7 +371,7 @@ function EditAlertvue_type_template_id_1a3b439a_render(_ctx, _cache, $props, $se
}),
title: _ctx.translate('General_Website'),
introduction: _ctx.translate('CustomAlerts_ApplyTo')
- }, null, 8, ["model-value", "title", "introduction"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomAlerts_YouCanChoosePeriodFrom')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, "• " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomAlerts_PeriodDayDescription')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, "• " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomAlerts_PeriodWeekDescription')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, "• " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomAlerts_PeriodMonthDescription')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "title", "introduction"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomAlerts_YouCanChoosePeriodFrom')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, "• " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomAlerts_PeriodDayDescription')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, "• " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomAlerts_PeriodWeekDescription')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, "• " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomAlerts_PeriodMonthDescription')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "select",
name: "period",
"inline-help": "#customAlertPeriodHelp",
@@ -375,7 +382,7 @@ function EditAlertvue_type_template_id_1a3b439a_render(_ctx, _cache, $props, $se
}),
title: _ctx.translate('General_Period'),
options: _ctx.periodOptions
- }, null, 8, ["model-value", "title", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "title", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "multiselect",
name: "report_mediums",
id: "report_mediums",
@@ -386,7 +393,7 @@ function EditAlertvue_type_template_id_1a3b439a_render(_ctx, _cache, $props, $se
"onUpdate:modelValue": _cache[3] || (_cache[3] = $event => {
_ctx.actualAlert.report_mediums = $event;
})
- }, null, 8, ["title", "inline-help", "options", "model-value"])]), _ctx.actualAlert.report_mediums && _ctx.actualAlert.report_mediums.includes('email') ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["title", "inline-help", "options", "model-value"])]), _ctx.actualAlert.report_mediums && _ctx.actualAlert.report_mediums.includes('email') ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "report_email_me",
modelValue: _ctx.actualAlert.email_me,
@@ -399,22 +406,27 @@ function EditAlertvue_type_template_id_1a3b439a_render(_ctx, _cache, $props, $se
"onUpdate:modelValue": _cache[5] || (_cache[5] = $event => _ctx.actualAlert.additional_emails = $event),
"var-type": "array",
title: _ctx.translate('ScheduledReports_AlsoSendReportToTheseEmails')
- }, null, 8, ["modelValue", "title"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.actualAlert.report_mediums && _ctx.actualAlert.report_mediums.includes('mobile') ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_3, [_ctx.supportsSMS ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", EditAlertvue_type_template_id_1a3b439a_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SelectPhoneNumbers, {
+ }, null, 8, ["modelValue", "title"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.actualAlert.report_mediums && _ctx.actualAlert.report_mediums.includes('mobile') ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_4, [_ctx.supportsSMS ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", EditAlertvue_type_template_id_6c23f33a_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SelectPhoneNumbers, {
"phone-numbers": _ctx.phoneNumbers || [],
modelValue: _ctx.actualAlert.phone_numbers,
"onUpdate:modelValue": _cache[6] || (_cache[6] = $event => _ctx.actualAlert.phone_numbers = $event)
- }, null, 8, ["phone-numbers", "modelValue"])])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Alert, {
+ }, null, 8, ["phone-numbers", "modelValue"])])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Alert, {
severity: "info"
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(() => [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_PhoneNumbers')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(": "), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.mobileMessagingNotActivated)
- }, null, 8, EditAlertvue_type_template_id_1a3b439a_hoisted_7)]),
+ }, null, 8, EditAlertvue_type_template_id_6c23f33a_hoisted_8)]),
_: 1
- })])]))])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ })])]))])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.actualAlert.report_mediums && _ctx.actualAlert.report_mediums.includes('slack') ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SelectSlackChannel, {
+ "model-value": _ctx.actualAlert.slack_channel_id || '',
+ "is-slack-oauth-token-added": _ctx.isSlackOauthTokenAdded,
+ modelValue: _ctx.actualAlert.slack_channel_id,
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = $event => _ctx.actualAlert.slack_channel_id = $event)
+ }, null, 8, ["model-value", "is-slack-oauth-token-added", "modelValue"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "expandable-select",
name: "report",
"model-value": _ctx.actualAlert.report,
- "onUpdate:modelValue": _cache[7] || (_cache[7] = $event => {
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = $event => {
_ctx.actualAlert.report = $event;
_ctx.changeReport();
}),
@@ -422,22 +434,22 @@ function EditAlertvue_type_template_id_1a3b439a_render(_ctx, _cache, $props, $se
title: `${_ctx.translate('CustomAlerts_ThisAppliesTo')}: ${(_ctx$actualReportMeta = _ctx.actualReportMetadata) === null || _ctx$actualReportMeta === void 0 ? void 0 : _ctx$actualReportMeta.name}`,
introduction: _ctx.translate('CustomAlerts_AlertCondition'),
"inline-help": _ctx.thisAppliesToInlineHelp
- }, null, 8, ["model-value", "options", "title", "introduction", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ }, null, 8, ["model-value", "options", "title", "introduction", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: _ctx.isLoadingReport
- }, null, 8, ["loading"])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.isLoadingReport]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["loading"])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.isLoadingReport]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "select",
name: "reportCondition",
modelValue: _ctx.actualAlert.report_condition,
- "onUpdate:modelValue": _cache[8] || (_cache[8] = $event => _ctx.actualAlert.report_condition = $event),
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = $event => _ctx.actualAlert.report_condition = $event),
"full-width": true,
title: _ctx.reportConditionTitle,
options: _ctx.alertGroupConditions
- }, null, 8, ["modelValue", "title", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["modelValue", "title", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
role: "textbox",
name: "reportValue",
modelValue: _ctx.actualAlert.report_matched,
- "onUpdate:modelValue": _cache[9] || (_cache[9] = $event => _ctx.actualAlert.report_matched = $event),
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = $event => _ctx.actualAlert.report_matched = $event),
"full-width": true,
autocomplete: 'off',
maxlength: 255,
@@ -446,24 +458,24 @@ function EditAlertvue_type_template_id_1a3b439a_render(_ctx, _cache, $props, $se
uicontrol: "select",
name: "metric",
"model-value": _ctx.actualAlert.metric,
- "onUpdate:modelValue": _cache[10] || (_cache[10] = $event => _ctx.actualAlert.metric = $event),
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = $event => _ctx.actualAlert.metric = $event),
options: _ctx.metricOptions,
introduction: _ctx.translate('CustomAlerts_AlertMeWhen')
- }, null, 8, ["model-value", "options", "introduction"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "options", "introduction"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "select",
name: "metricCondition",
"model-value": _ctx.actualAlert.metric_condition,
- "onUpdate:modelValue": _cache[11] || (_cache[11] = $event => _ctx.actualAlert.metric_condition = $event),
+ "onUpdate:modelValue": _cache[12] || (_cache[12] = $event => _ctx.actualAlert.metric_condition = $event),
"full-width": true,
options: _ctx.metricConditionOptions
- }, null, 8, ["model-value", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_1a3b439a_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", EditAlertvue_type_template_id_6c23f33a_hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "metricValue",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
invalid: _ctx.isMetricValueInvalid
}),
modelValue: _ctx.actualAlert.metric_matched,
- "onUpdate:modelValue": _cache[12] || (_cache[12] = $event => _ctx.actualAlert.metric_matched = $event),
+ "onUpdate:modelValue": _cache[13] || (_cache[13] = $event => _ctx.actualAlert.metric_matched = $event),
title: `${_ctx.metricDescription}`,
"full-width": true
}, null, 8, ["class", "modelValue", "title"])])])]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.comparablesDates, (comparablesDatesPeriod, period) => {
@@ -479,22 +491,22 @@ function EditAlertvue_type_template_id_1a3b439a_render(_ctx, _cache, $props, $se
introduction: _ctx.translate('CustomAlerts_ComparedToThe')
}, null, 8, ["modelValue", "onUpdate:modelValue", "disabled", "options", "introduction"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], period === _ctx.actualAlert.period && _ctx.isComparable]])]);
}), 128)), (_ctx$actualAlert = _ctx.actualAlert) !== null && _ctx$actualAlert !== void 0 && _ctx$actualAlert.idalert ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_SaveButton, {
- key: 2,
- onClick: _cache[13] || (_cache[13] = $event => _ctx.updateAlert(_ctx.actualAlert.idalert)),
+ key: 3,
+ onClick: _cache[14] || (_cache[14] = $event => _ctx.updateAlert(_ctx.actualAlert.idalert)),
saving: _ctx.isLoading
}, null, 8, ["saving"])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_SaveButton, {
- key: 3,
- onClick: _cache[14] || (_cache[14] = $event => _ctx.createAlert()),
+ key: 4,
+ onClick: _cache[15] || (_cache[15] = $event => _ctx.createAlert()),
saving: _ctx.isLoading
}, null, 8, ["saving"])), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "entityCancel",
innerHTML: _ctx.$sanitize(_ctx.cancelLink)
- }, null, 8, EditAlertvue_type_template_id_1a3b439a_hoisted_17)])), [[_directive_form]])];
+ }, null, 8, EditAlertvue_type_template_id_6c23f33a_hoisted_19)])), [[_directive_form]])];
}),
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/CustomAlerts/vue/src/EditAlert/EditAlert.vue?vue&type=template&id=1a3b439a
+// CONCATENATED MODULE: ./plugins/CustomAlerts/vue/src/EditAlert/EditAlert.vue?vue&type=template&id=6c23f33a
// EXTERNAL MODULE: external "CorePluginsAdmin"
var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
@@ -504,6 +516,7 @@ var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
const SelectPhoneNumbers = Object(external_CoreHome_["useExternalPluginComponent"])('MobileMessaging', 'SelectPhoneNumbers');
+const SelectSlackChannel = Object(external_CoreHome_["useExternalPluginComponent"])('Slack', 'SelectSlackChannel');
function isBlockedReportApiMethod(apiMethodUniqueId) {
return apiMethodUniqueId === 'MultiSites_getOne' || apiMethodUniqueId === 'MultiSites_getAll';
}
@@ -535,6 +548,7 @@ const {
},
supportsSMS: Boolean,
phoneNumbers: [Array, Object],
+ isSlackOauthTokenAdded: Boolean,
reportMetadata: Object,
alertGroupConditions: {
type: Array,
@@ -555,6 +569,7 @@ const {
ActivityIndicator: external_CoreHome_["ActivityIndicator"],
SaveButton: external_CorePluginsAdmin_["SaveButton"],
SelectPhoneNumbers,
+ SelectSlackChannel,
ContentBlock: external_CoreHome_["ContentBlock"]
},
directives: {
@@ -752,7 +767,7 @@ const {
},
computed: {
apiParameters() {
- var _this$actualAlert$add, _this$actualAlert$pho;
+ var _this$actualAlert$add, _this$actualAlert$pho, _this$actualAlert;
return {
idAlert: this.actualAlert.idalert,
format: 'json',
@@ -763,6 +778,7 @@ const {
emailMe: this.actualAlert.email_me ? 1 : 0,
additionalEmails: (_this$actualAlert$add = this.actualAlert.additional_emails) !== null && _this$actualAlert$add !== void 0 && _this$actualAlert$add.length ? this.actualAlert.additional_emails : [''],
phoneNumbers: (_this$actualAlert$pho = this.actualAlert.phone_numbers) !== null && _this$actualAlert$pho !== void 0 && _this$actualAlert$pho.length ? this.actualAlert.phone_numbers : [''],
+ slackChannelID: (_this$actualAlert = this.actualAlert) !== null && _this$actualAlert !== void 0 && _this$actualAlert.slack_channel_id ? this.actualAlert.slack_channel_id : '',
reportUniqueId: this.actualAlert.report,
reportCondition: this.actualAlert.report_condition,
reportValue: this.actualAlert.report_matched,
@@ -838,7 +854,7 @@ const {
-EditAlertvue_type_script_lang_ts.render = EditAlertvue_type_template_id_1a3b439a_render
+EditAlertvue_type_script_lang_ts.render = EditAlertvue_type_template_id_6c23f33a_render
/* harmony default export */ var EditAlert = (EditAlertvue_type_script_lang_ts);
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/CustomAlerts/vue/src/HistoryTriggeredAlerts/HistoryTriggeredAlerts.vue?vue&type=template&id=50fdd954
diff --git a/vue/dist/CustomAlerts.umd.min.js b/vue/dist/CustomAlerts.umd.min.js
index f4e2a9f0..7f307b0c 100644
--- a/vue/dist/CustomAlerts.umd.min.js
+++ b/vue/dist/CustomAlerts.umd.min.js
@@ -1,4 +1,4 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CustomAlerts"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CustomAlerts"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,l){return function(e){var t={};function l(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,l),o.l=!0,o.exports}return l.m=e,l.c=t,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)l.d(r,o,function(t){return e[t]}.bind(null,o));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="plugins/CustomAlerts/vue/dist/",l(l.s="fae3")}({"19dc":function(t,l){t.exports=e},"8bbf":function(e,l){e.exports=t},a5a2:function(e,t){e.exports=l},fae3:function(e,t,l){"use strict";if(l.r(t),l.d(t,"ListAlerts",(function(){return k})),l.d(t,"EditAlert",(function(){return X})),l.d(t,"HistoryTriggeredAlerts",(function(){return oe})),l.d(t,"ListAlertsPage",(function(){return de})),"undefined"!==typeof window){var r=window.document.currentScript,o=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(l.p=o[1])}var a=l("8bbf");const n={key:0},i={colspan:"6"},c=Object(a["createElementVNode"])("br",null,null,-1),s=Object(a["createElementVNode"])("br",null,null,-1),d=Object(a["createElementVNode"])("br",null,null,-1),u={class:"name"},m={class:"site"},p={class:"period"},b={class:"reportName"},O={class:"edit"},j=["href","title"],h=["onClick","id","title"],A=Object(a["createElementVNode"])("span",{class:"icon-delete"},null,-1),v=[A],V={class:"tableActionBar"},f=["href"],g=Object(a["createElementVNode"])("span",{class:"icon-add"},null,-1),C=["href"],_=Object(a["createElementVNode"])("span",{class:"icon-table"},null,-1);function N(e,t,l,r,o,A){var N;const y=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("table",null,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Website")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Period")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Report")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Actions")),1)])]),Object(a["createElementVNode"])("tbody",null,[null!==(N=e.alerts)&&void 0!==N&&N.length?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",n,[Object(a["createElementVNode"])("td",i,[c,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomAlerts_NoAlertsDefined"))+" ",1),s,d])])),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.alerts,t=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{key:t.idalert},[Object(a["createElementVNode"])("td",u,Object(a["toDisplayString"])(t.name),1),Object(a["createElementVNode"])("td",m,Object(a["toDisplayString"])(e.decode(t.siteName)),1),Object(a["createElementVNode"])("td",p,Object(a["toDisplayString"])(e.ucfirst(e.translate("Intl_Period"+e.ucfirst(t.period)))),1),Object(a["createElementVNode"])("td",b,Object(a["toDisplayString"])(t.reportName||"-"),1),Object(a["createElementVNode"])("td",O,[Object(a["createElementVNode"])("a",{class:"table-action icon-edit",href:e.linkTo({module:"CustomAlerts",action:"editAlert",idAlert:t.idalert}),title:e.translate("General_Edit")},null,8,j),Object(a["createElementVNode"])("button",{class:"deleteAlert table-action",onClick:l=>e.deleteAlert(t.idalert),id:t.idalert,title:e.translate("General_Delete")},v,8,h)])]))),128))])])),[[y]]),Object(a["createElementVNode"])("div",V,[Object(a["createElementVNode"])("a",{href:e.linkTo({module:"CustomAlerts",action:"addNewAlert"})},[g,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomAlerts_CreateNewAlert")),1)],8,f),Object(a["createElementVNode"])("a",{href:e.linkTo({module:"CustomAlerts",action:"historyTriggeredAlerts"})},[_,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomAlerts_AlertsHistory")),1)],8,C)])])}var y=l("19dc"),E=Object(a["defineComponent"])({props:{alerts:{type:Array,default(){return[]}}},directives:{ContentTable:y["ContentTable"]},methods:{deleteAlert(e){y["Matomo"].helper.modalConfirm("#confirm",{yes:()=>{y["AjaxHelper"].fetch({method:"CustomAlerts.deleteAlert",idAlert:e}).then(()=>{y["Matomo"].helper.redirect()})}})},ucfirst(e){return`${e[0].toUpperCase()}${e.substr(1)}`},linkTo(e){return"?"+y["MatomoUrl"].stringify(Object.assign(Object.assign({},y["MatomoUrl"].urlParsed.value),e))},decode(e){return y["Matomo"].helper.htmlDecode(e)}}});E.render=N;var k=E;const M={id:"customAlertPeriodHelp",class:"inline-help-node"},S={key:0},x={key:1},B={key:0},D={key:1,class:"row"},T={class:"col s12"},R=["innerHTML"],w={class:"row"},P={class:"col s12"},U={class:"row conditionAndValue"},L={class:"col s12 m6"},q={class:"col s12 m6"},H={class:"ui-autocomplete-input",ref:"reportValue"},$={class:"row conditionAndValue"},I={class:"col s12 m6"},G={class:"col s12 m6"},F=["innerHTML"];function W(e,t,l,r,o,n){const i=Object(a["resolveComponent"])("Field"),c=Object(a["resolveComponent"])("SelectPhoneNumbers"),s=Object(a["resolveComponent"])("Alert"),d=Object(a["resolveComponent"])("ActivityIndicator"),u=Object(a["resolveComponent"])("SaveButton"),m=Object(a["resolveComponent"])("ContentBlock"),p=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(m,{class:"alerts","content-title":e.headline},{default:Object(a["withCtx"])(()=>{var l,r,o;return[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"text",name:"alertName",modelValue:e.actualAlert.name,"onUpdate:modelValue":t[0]||(t[0]=t=>e.actualAlert.name=t),maxlength:100,title:e.translate("CustomAlerts_AlertName")},null,8,["modelValue","title"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"site",name:"idSite","model-value":{id:null===(l=e.actualAlert.id_sites)||void 0===l?void 0:l[0],name:e.actualCurrentSite.name},"onUpdate:modelValue":t[1]||(t[1]=t=>{e.actualAlert.id_sites=[t.id],e.actualCurrentSite=t,e.changeReport()}),title:e.translate("General_Website"),introduction:e.translate("CustomAlerts_ApplyTo")},null,8,["model-value","title","introduction"])]),Object(a["createElementVNode"])("div",M,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("CustomAlerts_YouCanChoosePeriodFrom"))+": ",1),Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",null,"• "+Object(a["toDisplayString"])(e.translate("CustomAlerts_PeriodDayDescription")),1),Object(a["createElementVNode"])("li",null,"• "+Object(a["toDisplayString"])(e.translate("CustomAlerts_PeriodWeekDescription")),1),Object(a["createElementVNode"])("li",null,"• "+Object(a["toDisplayString"])(e.translate("CustomAlerts_PeriodMonthDescription")),1)])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"select",name:"period","inline-help":"#customAlertPeriodHelp","model-value":e.actualAlert.period,"onUpdate:modelValue":t[2]||(t[2]=t=>{e.actualAlert.period=t,e.changeReport()}),title:e.translate("General_Period"),options:e.periodOptions},null,8,["model-value","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"multiselect",name:"report_mediums",id:"report_mediums",title:e.translate("CustomAlerts_MediumTitle"),"inline-help":e.translate("CustomAlerts_MediumDescription"),options:e.alertReportMediumOptions,"model-value":e.actualAlert.report_mediums,"onUpdate:modelValue":t[3]||(t[3]=t=>{e.actualAlert.report_mediums=t})},null,8,["title","inline-help","options","model-value"])]),e.actualAlert.report_mediums&&e.actualAlert.report_mediums.includes("email")?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",S,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"checkbox",name:"report_email_me",modelValue:e.actualAlert.email_me,"onUpdate:modelValue":t[4]||(t[4]=t=>e.actualAlert.email_me=t),introduction:e.translate("ScheduledReports_SendReportTo"),title:`${e.translate("ScheduledReports_SentToMe")} (${e.currentUserEmail})`},null,8,["modelValue","introduction","title"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"textarea",modelValue:e.actualAlert.additional_emails,"onUpdate:modelValue":t[5]||(t[5]=t=>e.actualAlert.additional_emails=t),"var-type":"array",title:e.translate("ScheduledReports_AlsoSendReportToTheseEmails")},null,8,["modelValue","title"])])])):Object(a["createCommentVNode"])("",!0),e.actualAlert.report_mediums&&e.actualAlert.report_mediums.includes("mobile")?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",x,[e.supportsSMS?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",B,[Object(a["createVNode"])(c,{"phone-numbers":e.phoneNumbers||[],modelValue:e.actualAlert.phone_numbers,"onUpdate:modelValue":t[6]||(t[6]=t=>e.actualAlert.phone_numbers=t)},null,8,["phone-numbers","modelValue"])])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",D,[Object(a["createElementVNode"])("div",T,[Object(a["createVNode"])(s,{severity:"info"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("MobileMessaging_PhoneNumbers")),1),Object(a["createTextVNode"])(": "),Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mobileMessagingNotActivated)},null,8,R)]),_:1})])]))])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"expandable-select",name:"report","model-value":e.actualAlert.report,"onUpdate:modelValue":t[7]||(t[7]=t=>{e.actualAlert.report=t,e.changeReport()}),options:e.reportOptions,title:`${e.translate("CustomAlerts_ThisAppliesTo")}: ${null===(r=e.actualReportMetadata)||void 0===r?void 0:r.name}`,introduction:e.translate("CustomAlerts_AlertCondition"),"inline-help":e.thisAppliesToInlineHelp},null,8,["model-value","options","title","introduction","inline-help"])]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",w,[Object(a["createElementVNode"])("div",P,[Object(a["createVNode"])(d,{loading:e.isLoadingReport},null,8,["loading"])])],512),[[a["vShow"],e.isLoadingReport]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",U,[Object(a["createElementVNode"])("div",L,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"select",name:"reportCondition",modelValue:e.actualAlert.report_condition,"onUpdate:modelValue":t[8]||(t[8]=t=>e.actualAlert.report_condition=t),"full-width":!0,title:e.reportConditionTitle,options:e.alertGroupConditions},null,8,["modelValue","title","options"])])]),Object(a["createElementVNode"])("div",q,[Object(a["createElementVNode"])("div",H,[Object(a["withDirectives"])(Object(a["createVNode"])(i,{uicontrol:"text",role:"textbox",name:"reportValue",modelValue:e.actualAlert.report_matched,"onUpdate:modelValue":t[9]||(t[9]=t=>e.actualAlert.report_matched=t),"full-width":!0,autocomplete:"off",maxlength:255,title:e.translate("General_Value")},null,8,["modelValue","title"]),[[a["vShow"],"matches_any"!==e.actualAlert.report_condition]])],512)])],512),[[a["vShow"],e.hasReportDimension]]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"select",name:"metric","model-value":e.actualAlert.metric,"onUpdate:modelValue":t[10]||(t[10]=t=>e.actualAlert.metric=t),options:e.metricOptions,introduction:e.translate("CustomAlerts_AlertMeWhen")},null,8,["model-value","options","introduction"])]),Object(a["createElementVNode"])("div",$,[Object(a["createElementVNode"])("div",I,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"select",name:"metricCondition","model-value":e.actualAlert.metric_condition,"onUpdate:modelValue":t[11]||(t[11]=t=>e.actualAlert.metric_condition=t),"full-width":!0,options:e.metricConditionOptions},null,8,["model-value","options"])])]),Object(a["createElementVNode"])("div",G,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"text",name:"metricValue",class:Object(a["normalizeClass"])({invalid:e.isMetricValueInvalid}),modelValue:e.actualAlert.metric_matched,"onUpdate:modelValue":t[12]||(t[12]=t=>e.actualAlert.metric_matched=t),title:`${e.metricDescription}`,"full-width":!0},null,8,["class","modelValue","title"])])])]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.comparablesDates,(t,l)=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:l},[Object(a["withDirectives"])(Object(a["createVNode"])(i,{uicontrol:"select",name:"compared_to",modelValue:e.comparedTo[l],"onUpdate:modelValue":t=>e.comparedTo[l]=t,disabled:Object.keys(t).length<=1,options:t,introduction:e.translate("CustomAlerts_ComparedToThe")},null,8,["modelValue","onUpdate:modelValue","disabled","options","introduction"]),[[a["vShow"],l===e.actualAlert.period&&e.isComparable]])]))),128)),null!==(o=e.actualAlert)&&void 0!==o&&o.idalert?(Object(a["openBlock"])(),Object(a["createBlock"])(u,{key:2,onClick:t[13]||(t[13]=t=>e.updateAlert(e.actualAlert.idalert)),saving:e.isLoading},null,8,["saving"])):(Object(a["openBlock"])(),Object(a["createBlock"])(u,{key:3,onClick:t[14]||(t[14]=t=>e.createAlert()),saving:e.isLoading},null,8,["saving"])),Object(a["createElementVNode"])("div",{class:"entityCancel",innerHTML:e.$sanitize(e.cancelLink)},null,8,F)])),[[p]])]}),_:1},8,["content-title"])}var z=l("a5a2");const Y=Object(y["useExternalPluginComponent"])("MobileMessaging","SelectPhoneNumbers");function J(e){return"MultiSites_getOne"===e||"MultiSites_getAll"===e}const{$:K}=window;var Q=Object(a["defineComponent"])({props:{alert:Object,headline:{type:String,required:!0},currentSite:{type:Object,required:!0},periodOptions:{type:Array,required:!0},alertReportMediumOptions:{type:Array,required:!0},currentUserEmail:{type:String,required:!0},supportsSMS:Boolean,phoneNumbers:[Array,Object],reportMetadata:Object,alertGroupConditions:{type:Array,required:!0},metricConditionOptions:{type:Array,required:!0},comparablesDates:{type:Object,required:!0}},components:{Field:z["Field"],Alert:y["Alert"],ActivityIndicator:y["ActivityIndicator"],SaveButton:z["SaveButton"],SelectPhoneNumbers:Y,ContentBlock:y["ContentBlock"]},directives:{Form:z["Form"]},data(){const e=this.currentSite,t=this.alert,l=this.reportMetadata,r=Object.fromEntries(Object.entries(this.comparablesDates).map(([e,t])=>{var l;return[e,null===t||void 0===t||null===(l=t[0])||void 0===l?void 0:l.key]}));return this.alert&&(r[this.alert.period]=""+t.compared_to),{isLoading:!1,isLoadingReport:!1,showReportConditionField:!1,reportOptions:[],actualReportMetadata:l,reportValuesAutoComplete:null,actualAlert:t?Object.assign({},t):{period:"day",id_sites:[(null===e||void 0===e?void 0:e.id)||y["Matomo"].idSite],alerts_medium:["email"]},comparedTo:r,actualCurrentSite:{id:e.id,name:y["Matomo"].helper.htmlDecode(e.name)}}},watch:{actualReportMetadata(){var e;const t=null===(e=this.actualReportMetadata)||void 0===e?void 0:e.metrics;t&&(this.actualAlert.metric&&t[this.actualAlert.metric]||([this.actualAlert.metric]=Object.keys(t)))},isMetricValueInvalid(e){if(!e)return;const t=y["NotificationsStore"].show({message:Object(y["translate"])("CustomAlerts_InvalidMetricValue"),id:"CustomAlertsMetricValueError",context:"error",type:"toast"});y["NotificationsStore"].scrollToNotification(t)}},created(){this.changeReport(),setTimeout(()=>{K(this.$refs.reportValue).find("input").autocomplete({source:this.getValuesForReportAndMetric.bind(this),minLength:1,delay:300})},1e3)},methods:{renderForm(e){const t=[];this.actualReportMetadata=null,e.forEach(e=>{const l=e.uniqueId;J(l)||(this.actualAlert.report||(this.actualAlert.report=l),t.push({key:l,value:e.name,group:e.category}),l===this.actualAlert.report&&(this.actualReportMetadata=e))}),this.reportOptions=t},sendApiRequest(e,t){this.isLoading=!0;const{period:l}=this.actualAlert;y["AjaxHelper"].post({period:l,method:e},t).then(()=>{y["Matomo"].helper.redirect({module:"CustomAlerts",action:"index"})}).finally(()=>{this.isLoading=!1})},getValuesForReportAndMetric(e,t){var l;const{metric:r}=this.actualAlert;function o(l){const o=new RegExp(K.ui.autocomplete.escapeRegex(e.term),"i");t(K.grep(l,e=>!!e&&o.test(e.label||e.value||e[r]||e)))}if(this.reportValuesAutoComplete)return void o(this.reportValuesAutoComplete);this.reportValuesAutoComplete=[];const a=this.actualReportMetadata;if(!a)return;const n=a.module,i=a.action;r&&n&&i||o(this.reportValuesAutoComplete),y["AjaxHelper"].fetch({method:"API.getProcessedReport",date:"yesterday",period:"month",disable_queued_filters:1,flat:1,filter_limit:-1,showColumns:r,language:"en",apiModule:n,apiAction:i,idSite:null===(l=this.actualAlert.id_sites)||void 0===l?void 0:l[0],format:"JSON"}).then(e=>{null!==e&&void 0!==e&&e.reportData?(this.reportValuesAutoComplete=e.reportData,o(e.reportData)):o([])}).catch(()=>{o([])})},changeReport(){var e;this.isLoadingReport=!0,this.reportValuesAutoComplete=null,y["AjaxHelper"].fetch({method:"API.getReportMetadata",date:y["Matomo"].currentDateString,period:this.actualAlert.period,idSite:null===(e=this.actualAlert.id_sites)||void 0===e?void 0:e[0],filter_limit:"-1"}).then(e=>{this.renderForm(e)}).finally(()=>{this.isLoadingReport=!1})},createAlert(){return!this.isMetricValueInvalid&&(this.sendApiRequest("CustomAlerts.addAlert",this.apiParameters),!0)},updateAlert(){return!this.isMetricValueInvalid&&(this.sendApiRequest("CustomAlerts.editAlert",this.apiParameters),!0)}},computed:{apiParameters(){var e,t;return{idAlert:this.actualAlert.idalert,format:"json",name:this.actualAlert.name,metric:this.actualAlert.metric,metricCondition:this.actualAlert.metric_condition,metricValue:this.actualAlert.metric_matched,emailMe:this.actualAlert.email_me?1:0,additionalEmails:null!==(e=this.actualAlert.additional_emails)&&void 0!==e&&e.length?this.actualAlert.additional_emails:[""],phoneNumbers:null!==(t=this.actualAlert.phone_numbers)&&void 0!==t&&t.length?this.actualAlert.phone_numbers:[""],reportUniqueId:this.actualAlert.report,reportCondition:this.actualAlert.report_condition,reportValue:this.actualAlert.report_matched,reportMediums:this.actualAlert.report_mediums,idSites:this.actualAlert.id_sites,comparedTo:this.comparedTo[this.actualAlert.period]}},isMetricValueInvalid(){return!K.isNumeric(this.actualAlert.metric_matched)},mobileMessagingNotActivated(){const e="?"+y["MatomoUrl"].stringify(Object.assign(Object.assign({},y["MatomoUrl"].urlParsed.value),{},{module:"CorePluginsAdmin",action:"plugins",updated:null}));return Object(y["translate"])("CustomAlerts_MobileMessagingPluginNotActivated",``,"")},cancelLink(){const e="?"+y["MatomoUrl"].stringify(Object.assign(Object.assign({},y["MatomoUrl"].urlParsed.value),{},{module:"CustomAlerts",action:"index"}));return Object(y["translate"])("General_OrCancel",``,"")},thisAppliesToInlineHelp(){const e="https://matomo.org/guide/manage-matomo/custom-alerts/",t="https://matomo.org/faq/general/examples-of-custom-alerts#events";return Object(y["translate"])("CustomAlerts_ThisAppliesToHelp",``,"","","",``,"")},metricOptions(){var e;return Object.entries((null===(e=this.actualReportMetadata)||void 0===e?void 0:e.metrics)||{}).map(([e,t])=>({key:e,value:t}))},hasReportDimension(){var e;return!(null===(e=this.actualReportMetadata)||void 0===e||!e.dimension)},reportConditionTitle(){var e;const t=null===(e=this.actualReportMetadata)||void 0===e?void 0:e.dimension;return`${Object(y["translate"])("CustomAlerts_When")} ${t}`},isComparable(){const e=this.actualAlert.metric_condition;return!!e&&-1!==e.indexOf("_more_than")},metricDescription(){const e=this.actualAlert.metric_condition,{metric:t}=this.actualAlert,l=e&&0===e.indexOf("percentage_"),r=t&&-1!==t.indexOf("_rate"),o=t&&-1!==t.indexOf("_time_");return l||r?"%":o?"s":Object(y["translate"])("General_Value")}}});Q.render=W;var X=Q;const Z={class:"tableActionBar"},ee=["href"],te=Object(a["createElementVNode"])("span",{class:"icon-table"},null,-1);function le(e,t,l,r,o,n){const i=Object(a["resolveComponent"])("ContentBlock");return Object(a["openBlock"])(),Object(a["createBlock"])(i,{class:"alerts","content-title":e.translate("CustomAlerts_AlertsHistory")},{default:Object(a["withCtx"])(()=>[Object(a["renderSlot"])(e.$slots,"default"),Object(a["createElementVNode"])("div",Z,[Object(a["createElementVNode"])("a",{href:e.customAlertsIndexLink},[te,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomAlerts_ManageAlerts")),1)],8,ee)])]),_:3},8,["content-title"])}var re=Object(a["defineComponent"])({props:{},components:{ContentBlock:y["ContentBlock"]},computed:{customAlertsIndexLink(){return"?"+y["MatomoUrl"].stringify(Object.assign(Object.assign({},y["MatomoUrl"].urlParsed.value),{},{module:"CustomAlerts",action:"index"}))}}});re.render=le;var oe=re;const ae={class:"ui-confirm",id:"confirm"},ne=["value"],ie=["value"];function ce(e,t,l,r,o,n){const i=Object(a["resolveComponent"])("ListAlerts"),c=Object(a["resolveComponent"])("ContentBlock");return Object(a["openBlock"])(),Object(a["createBlock"])(c,{class:"alerts","content-title":e.title},{default:Object(a["withCtx"])(()=>[Object(a["createVNode"])(i,{alerts:e.alerts},null,8,["alerts"]),Object(a["createElementVNode"])("div",ae,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("CustomAlerts_AreYouSureDeleteAlert")),1),Object(a["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,ne),Object(a["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,ie)])]),_:1},8,["content-title"])}var se=Object(a["defineComponent"])({props:{title:{type:String,required:!0},alerts:{type:Array,default(){return[]}}},components:{ContentBlock:y["ContentBlock"],ListAlerts:k}});se.render=ce;var de=se;
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CustomAlerts"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CustomAlerts"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,l){return function(e){var t={};function l(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,l),o.l=!0,o.exports}return l.m=e,l.c=t,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)l.d(r,o,function(t){return e[t]}.bind(null,o));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="plugins/CustomAlerts/vue/dist/",l(l.s="fae3")}({"19dc":function(t,l){t.exports=e},"8bbf":function(e,l){e.exports=t},a5a2:function(e,t){e.exports=l},fae3:function(e,t,l){"use strict";if(l.r(t),l.d(t,"ListAlerts",(function(){return E})),l.d(t,"EditAlert",(function(){return te})),l.d(t,"HistoryTriggeredAlerts",(function(){return ie})),l.d(t,"ListAlertsPage",(function(){return pe})),"undefined"!==typeof window){var r=window.document.currentScript,o=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(l.p=o[1])}var a=l("8bbf");const n={key:0},i={colspan:"6"},c=Object(a["createElementVNode"])("br",null,null,-1),s=Object(a["createElementVNode"])("br",null,null,-1),d=Object(a["createElementVNode"])("br",null,null,-1),u={class:"name"},m={class:"site"},p={class:"period"},b={class:"reportName"},O={class:"edit"},j=["href","title"],h=["onClick","id","title"],A=Object(a["createElementVNode"])("span",{class:"icon-delete"},null,-1),v=[A],V={class:"tableActionBar"},f=["href"],g=Object(a["createElementVNode"])("span",{class:"icon-add"},null,-1),_=["href"],C=Object(a["createElementVNode"])("span",{class:"icon-table"},null,-1);function N(e,t,l,r,o,A){var N;const y=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("table",null,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Website")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Period")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Report")),1),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Actions")),1)])]),Object(a["createElementVNode"])("tbody",null,[null!==(N=e.alerts)&&void 0!==N&&N.length?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",n,[Object(a["createElementVNode"])("td",i,[c,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomAlerts_NoAlertsDefined"))+" ",1),s,d])])),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.alerts,t=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{key:t.idalert},[Object(a["createElementVNode"])("td",u,Object(a["toDisplayString"])(t.name),1),Object(a["createElementVNode"])("td",m,Object(a["toDisplayString"])(e.decode(t.siteName)),1),Object(a["createElementVNode"])("td",p,Object(a["toDisplayString"])(e.ucfirst(e.translate("Intl_Period"+e.ucfirst(t.period)))),1),Object(a["createElementVNode"])("td",b,Object(a["toDisplayString"])(t.reportName||"-"),1),Object(a["createElementVNode"])("td",O,[Object(a["createElementVNode"])("a",{class:"table-action icon-edit",href:e.linkTo({module:"CustomAlerts",action:"editAlert",idAlert:t.idalert}),title:e.translate("General_Edit")},null,8,j),Object(a["createElementVNode"])("button",{class:"deleteAlert table-action",onClick:l=>e.deleteAlert(t.idalert),id:t.idalert,title:e.translate("General_Delete")},v,8,h)])]))),128))])])),[[y]]),Object(a["createElementVNode"])("div",V,[Object(a["createElementVNode"])("a",{href:e.linkTo({module:"CustomAlerts",action:"addNewAlert"})},[g,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomAlerts_CreateNewAlert")),1)],8,f),Object(a["createElementVNode"])("a",{href:e.linkTo({module:"CustomAlerts",action:"historyTriggeredAlerts"})},[C,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomAlerts_AlertsHistory")),1)],8,_)])])}var y=l("19dc"),k=Object(a["defineComponent"])({props:{alerts:{type:Array,default(){return[]}}},directives:{ContentTable:y["ContentTable"]},methods:{deleteAlert(e){y["Matomo"].helper.modalConfirm("#confirm",{yes:()=>{y["AjaxHelper"].fetch({method:"CustomAlerts.deleteAlert",idAlert:e}).then(()=>{y["Matomo"].helper.redirect()})}})},ucfirst(e){return`${e[0].toUpperCase()}${e.substr(1)}`},linkTo(e){return"?"+y["MatomoUrl"].stringify(Object.assign(Object.assign({},y["MatomoUrl"].urlParsed.value),e))},decode(e){return y["Matomo"].helper.htmlDecode(e)}}});k.render=N;var E=k;const S={id:"customAlertPeriodHelp",class:"inline-help-node"},M={class:"report-mediums"},B={key:0},x={key:1},D={key:0},T={key:1,class:"row"},R={class:"col s12"},P=["innerHTML"],w={key:2},U={class:"row"},L={class:"col s12"},q={class:"row conditionAndValue"},H={class:"col s12 m6"},I={class:"col s12 m6"},$={class:"ui-autocomplete-input",ref:"reportValue"},G={class:"row conditionAndValue"},F={class:"col s12 m6"},W={class:"col s12 m6"},z=["innerHTML"];function Y(e,t,l,r,o,n){const i=Object(a["resolveComponent"])("Field"),c=Object(a["resolveComponent"])("SelectPhoneNumbers"),s=Object(a["resolveComponent"])("Alert"),d=Object(a["resolveComponent"])("SelectSlackChannel"),u=Object(a["resolveComponent"])("ActivityIndicator"),m=Object(a["resolveComponent"])("SaveButton"),p=Object(a["resolveComponent"])("ContentBlock"),b=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(p,{class:"alerts","content-title":e.headline},{default:Object(a["withCtx"])(()=>{var l,r,o;return[Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"text",name:"alertName",modelValue:e.actualAlert.name,"onUpdate:modelValue":t[0]||(t[0]=t=>e.actualAlert.name=t),maxlength:100,title:e.translate("CustomAlerts_AlertName")},null,8,["modelValue","title"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"site",name:"idSite","model-value":{id:null===(l=e.actualAlert.id_sites)||void 0===l?void 0:l[0],name:e.actualCurrentSite.name},"onUpdate:modelValue":t[1]||(t[1]=t=>{e.actualAlert.id_sites=[t.id],e.actualCurrentSite=t,e.changeReport()}),title:e.translate("General_Website"),introduction:e.translate("CustomAlerts_ApplyTo")},null,8,["model-value","title","introduction"])]),Object(a["createElementVNode"])("div",S,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("CustomAlerts_YouCanChoosePeriodFrom"))+": ",1),Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",null,"• "+Object(a["toDisplayString"])(e.translate("CustomAlerts_PeriodDayDescription")),1),Object(a["createElementVNode"])("li",null,"• "+Object(a["toDisplayString"])(e.translate("CustomAlerts_PeriodWeekDescription")),1),Object(a["createElementVNode"])("li",null,"• "+Object(a["toDisplayString"])(e.translate("CustomAlerts_PeriodMonthDescription")),1)])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"select",name:"period","inline-help":"#customAlertPeriodHelp","model-value":e.actualAlert.period,"onUpdate:modelValue":t[2]||(t[2]=t=>{e.actualAlert.period=t,e.changeReport()}),title:e.translate("General_Period"),options:e.periodOptions},null,8,["model-value","title","options"])]),Object(a["createElementVNode"])("div",M,[Object(a["createVNode"])(i,{uicontrol:"multiselect",name:"report_mediums",id:"report_mediums",title:e.translate("CustomAlerts_MediumTitle"),"inline-help":e.translate("CustomAlerts_MediumDescription"),options:e.alertReportMediumOptions,"model-value":e.actualAlert.report_mediums,"onUpdate:modelValue":t[3]||(t[3]=t=>{e.actualAlert.report_mediums=t})},null,8,["title","inline-help","options","model-value"])]),e.actualAlert.report_mediums&&e.actualAlert.report_mediums.includes("email")?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",B,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"checkbox",name:"report_email_me",modelValue:e.actualAlert.email_me,"onUpdate:modelValue":t[4]||(t[4]=t=>e.actualAlert.email_me=t),introduction:e.translate("ScheduledReports_SendReportTo"),title:`${e.translate("ScheduledReports_SentToMe")} (${e.currentUserEmail})`},null,8,["modelValue","introduction","title"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"textarea",modelValue:e.actualAlert.additional_emails,"onUpdate:modelValue":t[5]||(t[5]=t=>e.actualAlert.additional_emails=t),"var-type":"array",title:e.translate("ScheduledReports_AlsoSendReportToTheseEmails")},null,8,["modelValue","title"])])])):Object(a["createCommentVNode"])("",!0),e.actualAlert.report_mediums&&e.actualAlert.report_mediums.includes("mobile")?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",x,[e.supportsSMS?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",D,[Object(a["createVNode"])(c,{"phone-numbers":e.phoneNumbers||[],modelValue:e.actualAlert.phone_numbers,"onUpdate:modelValue":t[6]||(t[6]=t=>e.actualAlert.phone_numbers=t)},null,8,["phone-numbers","modelValue"])])):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",T,[Object(a["createElementVNode"])("div",R,[Object(a["createVNode"])(s,{severity:"info"},{default:Object(a["withCtx"])(()=>[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("MobileMessaging_PhoneNumbers")),1),Object(a["createTextVNode"])(": "),Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mobileMessagingNotActivated)},null,8,P)]),_:1})])]))])):Object(a["createCommentVNode"])("",!0),e.actualAlert.report_mediums&&e.actualAlert.report_mediums.includes("slack")?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",w,[Object(a["createVNode"])(d,{"model-value":e.actualAlert.slack_channel_id||"","is-slack-oauth-token-added":e.isSlackOauthTokenAdded,modelValue:e.actualAlert.slack_channel_id,"onUpdate:modelValue":t[7]||(t[7]=t=>e.actualAlert.slack_channel_id=t)},null,8,["model-value","is-slack-oauth-token-added","modelValue"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"expandable-select",name:"report","model-value":e.actualAlert.report,"onUpdate:modelValue":t[8]||(t[8]=t=>{e.actualAlert.report=t,e.changeReport()}),options:e.reportOptions,title:`${e.translate("CustomAlerts_ThisAppliesTo")}: ${null===(r=e.actualReportMetadata)||void 0===r?void 0:r.name}`,introduction:e.translate("CustomAlerts_AlertCondition"),"inline-help":e.thisAppliesToInlineHelp},null,8,["model-value","options","title","introduction","inline-help"])]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",U,[Object(a["createElementVNode"])("div",L,[Object(a["createVNode"])(u,{loading:e.isLoadingReport},null,8,["loading"])])],512),[[a["vShow"],e.isLoadingReport]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",q,[Object(a["createElementVNode"])("div",H,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"select",name:"reportCondition",modelValue:e.actualAlert.report_condition,"onUpdate:modelValue":t[9]||(t[9]=t=>e.actualAlert.report_condition=t),"full-width":!0,title:e.reportConditionTitle,options:e.alertGroupConditions},null,8,["modelValue","title","options"])])]),Object(a["createElementVNode"])("div",I,[Object(a["createElementVNode"])("div",$,[Object(a["withDirectives"])(Object(a["createVNode"])(i,{uicontrol:"text",role:"textbox",name:"reportValue",modelValue:e.actualAlert.report_matched,"onUpdate:modelValue":t[10]||(t[10]=t=>e.actualAlert.report_matched=t),"full-width":!0,autocomplete:"off",maxlength:255,title:e.translate("General_Value")},null,8,["modelValue","title"]),[[a["vShow"],"matches_any"!==e.actualAlert.report_condition]])],512)])],512),[[a["vShow"],e.hasReportDimension]]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"select",name:"metric","model-value":e.actualAlert.metric,"onUpdate:modelValue":t[11]||(t[11]=t=>e.actualAlert.metric=t),options:e.metricOptions,introduction:e.translate("CustomAlerts_AlertMeWhen")},null,8,["model-value","options","introduction"])]),Object(a["createElementVNode"])("div",G,[Object(a["createElementVNode"])("div",F,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"select",name:"metricCondition","model-value":e.actualAlert.metric_condition,"onUpdate:modelValue":t[12]||(t[12]=t=>e.actualAlert.metric_condition=t),"full-width":!0,options:e.metricConditionOptions},null,8,["model-value","options"])])]),Object(a["createElementVNode"])("div",W,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(i,{uicontrol:"text",name:"metricValue",class:Object(a["normalizeClass"])({invalid:e.isMetricValueInvalid}),modelValue:e.actualAlert.metric_matched,"onUpdate:modelValue":t[13]||(t[13]=t=>e.actualAlert.metric_matched=t),title:`${e.metricDescription}`,"full-width":!0},null,8,["class","modelValue","title"])])])]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.comparablesDates,(t,l)=>(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:l},[Object(a["withDirectives"])(Object(a["createVNode"])(i,{uicontrol:"select",name:"compared_to",modelValue:e.comparedTo[l],"onUpdate:modelValue":t=>e.comparedTo[l]=t,disabled:Object.keys(t).length<=1,options:t,introduction:e.translate("CustomAlerts_ComparedToThe")},null,8,["modelValue","onUpdate:modelValue","disabled","options","introduction"]),[[a["vShow"],l===e.actualAlert.period&&e.isComparable]])]))),128)),null!==(o=e.actualAlert)&&void 0!==o&&o.idalert?(Object(a["openBlock"])(),Object(a["createBlock"])(m,{key:3,onClick:t[14]||(t[14]=t=>e.updateAlert(e.actualAlert.idalert)),saving:e.isLoading},null,8,["saving"])):(Object(a["openBlock"])(),Object(a["createBlock"])(m,{key:4,onClick:t[15]||(t[15]=t=>e.createAlert()),saving:e.isLoading},null,8,["saving"])),Object(a["createElementVNode"])("div",{class:"entityCancel",innerHTML:e.$sanitize(e.cancelLink)},null,8,z)])),[[b]])]}),_:1},8,["content-title"])}var J=l("a5a2");const K=Object(y["useExternalPluginComponent"])("MobileMessaging","SelectPhoneNumbers"),Q=Object(y["useExternalPluginComponent"])("Slack","SelectSlackChannel");function X(e){return"MultiSites_getOne"===e||"MultiSites_getAll"===e}const{$:Z}=window;var ee=Object(a["defineComponent"])({props:{alert:Object,headline:{type:String,required:!0},currentSite:{type:Object,required:!0},periodOptions:{type:Array,required:!0},alertReportMediumOptions:{type:Array,required:!0},currentUserEmail:{type:String,required:!0},supportsSMS:Boolean,phoneNumbers:[Array,Object],isSlackOauthTokenAdded:Boolean,reportMetadata:Object,alertGroupConditions:{type:Array,required:!0},metricConditionOptions:{type:Array,required:!0},comparablesDates:{type:Object,required:!0}},components:{Field:J["Field"],Alert:y["Alert"],ActivityIndicator:y["ActivityIndicator"],SaveButton:J["SaveButton"],SelectPhoneNumbers:K,SelectSlackChannel:Q,ContentBlock:y["ContentBlock"]},directives:{Form:J["Form"]},data(){const e=this.currentSite,t=this.alert,l=this.reportMetadata,r=Object.fromEntries(Object.entries(this.comparablesDates).map(([e,t])=>{var l;return[e,null===t||void 0===t||null===(l=t[0])||void 0===l?void 0:l.key]}));return this.alert&&(r[this.alert.period]=""+t.compared_to),{isLoading:!1,isLoadingReport:!1,showReportConditionField:!1,reportOptions:[],actualReportMetadata:l,reportValuesAutoComplete:null,actualAlert:t?Object.assign({},t):{period:"day",id_sites:[(null===e||void 0===e?void 0:e.id)||y["Matomo"].idSite],alerts_medium:["email"]},comparedTo:r,actualCurrentSite:{id:e.id,name:y["Matomo"].helper.htmlDecode(e.name)}}},watch:{actualReportMetadata(){var e;const t=null===(e=this.actualReportMetadata)||void 0===e?void 0:e.metrics;t&&(this.actualAlert.metric&&t[this.actualAlert.metric]||([this.actualAlert.metric]=Object.keys(t)))},isMetricValueInvalid(e){if(!e)return;const t=y["NotificationsStore"].show({message:Object(y["translate"])("CustomAlerts_InvalidMetricValue"),id:"CustomAlertsMetricValueError",context:"error",type:"toast"});y["NotificationsStore"].scrollToNotification(t)}},created(){this.changeReport(),setTimeout(()=>{Z(this.$refs.reportValue).find("input").autocomplete({source:this.getValuesForReportAndMetric.bind(this),minLength:1,delay:300})},1e3)},methods:{renderForm(e){const t=[];this.actualReportMetadata=null,e.forEach(e=>{const l=e.uniqueId;X(l)||(this.actualAlert.report||(this.actualAlert.report=l),t.push({key:l,value:e.name,group:e.category}),l===this.actualAlert.report&&(this.actualReportMetadata=e))}),this.reportOptions=t},sendApiRequest(e,t){this.isLoading=!0;const{period:l}=this.actualAlert;y["AjaxHelper"].post({period:l,method:e},t).then(()=>{y["Matomo"].helper.redirect({module:"CustomAlerts",action:"index"})}).finally(()=>{this.isLoading=!1})},getValuesForReportAndMetric(e,t){var l;const{metric:r}=this.actualAlert;function o(l){const o=new RegExp(Z.ui.autocomplete.escapeRegex(e.term),"i");t(Z.grep(l,e=>!!e&&o.test(e.label||e.value||e[r]||e)))}if(this.reportValuesAutoComplete)return void o(this.reportValuesAutoComplete);this.reportValuesAutoComplete=[];const a=this.actualReportMetadata;if(!a)return;const n=a.module,i=a.action;r&&n&&i||o(this.reportValuesAutoComplete),y["AjaxHelper"].fetch({method:"API.getProcessedReport",date:"yesterday",period:"month",disable_queued_filters:1,flat:1,filter_limit:-1,showColumns:r,language:"en",apiModule:n,apiAction:i,idSite:null===(l=this.actualAlert.id_sites)||void 0===l?void 0:l[0],format:"JSON"}).then(e=>{null!==e&&void 0!==e&&e.reportData?(this.reportValuesAutoComplete=e.reportData,o(e.reportData)):o([])}).catch(()=>{o([])})},changeReport(){var e;this.isLoadingReport=!0,this.reportValuesAutoComplete=null,y["AjaxHelper"].fetch({method:"API.getReportMetadata",date:y["Matomo"].currentDateString,period:this.actualAlert.period,idSite:null===(e=this.actualAlert.id_sites)||void 0===e?void 0:e[0],filter_limit:"-1"}).then(e=>{this.renderForm(e)}).finally(()=>{this.isLoadingReport=!1})},createAlert(){return!this.isMetricValueInvalid&&(this.sendApiRequest("CustomAlerts.addAlert",this.apiParameters),!0)},updateAlert(){return!this.isMetricValueInvalid&&(this.sendApiRequest("CustomAlerts.editAlert",this.apiParameters),!0)}},computed:{apiParameters(){var e,t,l;return{idAlert:this.actualAlert.idalert,format:"json",name:this.actualAlert.name,metric:this.actualAlert.metric,metricCondition:this.actualAlert.metric_condition,metricValue:this.actualAlert.metric_matched,emailMe:this.actualAlert.email_me?1:0,additionalEmails:null!==(e=this.actualAlert.additional_emails)&&void 0!==e&&e.length?this.actualAlert.additional_emails:[""],phoneNumbers:null!==(t=this.actualAlert.phone_numbers)&&void 0!==t&&t.length?this.actualAlert.phone_numbers:[""],slackChannelID:null!==(l=this.actualAlert)&&void 0!==l&&l.slack_channel_id?this.actualAlert.slack_channel_id:"",reportUniqueId:this.actualAlert.report,reportCondition:this.actualAlert.report_condition,reportValue:this.actualAlert.report_matched,reportMediums:this.actualAlert.report_mediums,idSites:this.actualAlert.id_sites,comparedTo:this.comparedTo[this.actualAlert.period]}},isMetricValueInvalid(){return!Z.isNumeric(this.actualAlert.metric_matched)},mobileMessagingNotActivated(){const e="?"+y["MatomoUrl"].stringify(Object.assign(Object.assign({},y["MatomoUrl"].urlParsed.value),{},{module:"CorePluginsAdmin",action:"plugins",updated:null}));return Object(y["translate"])("CustomAlerts_MobileMessagingPluginNotActivated",``,"")},cancelLink(){const e="?"+y["MatomoUrl"].stringify(Object.assign(Object.assign({},y["MatomoUrl"].urlParsed.value),{},{module:"CustomAlerts",action:"index"}));return Object(y["translate"])("General_OrCancel",``,"")},thisAppliesToInlineHelp(){const e="https://matomo.org/guide/manage-matomo/custom-alerts/",t="https://matomo.org/faq/general/examples-of-custom-alerts#events";return Object(y["translate"])("CustomAlerts_ThisAppliesToHelp",``,"","","",``,"")},metricOptions(){var e;return Object.entries((null===(e=this.actualReportMetadata)||void 0===e?void 0:e.metrics)||{}).map(([e,t])=>({key:e,value:t}))},hasReportDimension(){var e;return!(null===(e=this.actualReportMetadata)||void 0===e||!e.dimension)},reportConditionTitle(){var e;const t=null===(e=this.actualReportMetadata)||void 0===e?void 0:e.dimension;return`${Object(y["translate"])("CustomAlerts_When")} ${t}`},isComparable(){const e=this.actualAlert.metric_condition;return!!e&&-1!==e.indexOf("_more_than")},metricDescription(){const e=this.actualAlert.metric_condition,{metric:t}=this.actualAlert,l=e&&0===e.indexOf("percentage_"),r=t&&-1!==t.indexOf("_rate"),o=t&&-1!==t.indexOf("_time_");return l||r?"%":o?"s":Object(y["translate"])("General_Value")}}});ee.render=Y;var te=ee;const le={class:"tableActionBar"},re=["href"],oe=Object(a["createElementVNode"])("span",{class:"icon-table"},null,-1);function ae(e,t,l,r,o,n){const i=Object(a["resolveComponent"])("ContentBlock");return Object(a["openBlock"])(),Object(a["createBlock"])(i,{class:"alerts","content-title":e.translate("CustomAlerts_AlertsHistory")},{default:Object(a["withCtx"])(()=>[Object(a["renderSlot"])(e.$slots,"default"),Object(a["createElementVNode"])("div",le,[Object(a["createElementVNode"])("a",{href:e.customAlertsIndexLink},[oe,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomAlerts_ManageAlerts")),1)],8,re)])]),_:3},8,["content-title"])}var ne=Object(a["defineComponent"])({props:{},components:{ContentBlock:y["ContentBlock"]},computed:{customAlertsIndexLink(){return"?"+y["MatomoUrl"].stringify(Object.assign(Object.assign({},y["MatomoUrl"].urlParsed.value),{},{module:"CustomAlerts",action:"index"}))}}});ne.render=ae;var ie=ne;const ce={class:"ui-confirm",id:"confirm"},se=["value"],de=["value"];function ue(e,t,l,r,o,n){const i=Object(a["resolveComponent"])("ListAlerts"),c=Object(a["resolveComponent"])("ContentBlock");return Object(a["openBlock"])(),Object(a["createBlock"])(c,{class:"alerts","content-title":e.title},{default:Object(a["withCtx"])(()=>[Object(a["createVNode"])(i,{alerts:e.alerts},null,8,["alerts"]),Object(a["createElementVNode"])("div",ce,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("CustomAlerts_AreYouSureDeleteAlert")),1),Object(a["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,se),Object(a["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,de)])]),_:1},8,["content-title"])}var me=Object(a["defineComponent"])({props:{title:{type:String,required:!0},alerts:{type:Array,default(){return[]}}},components:{ContentBlock:y["ContentBlock"],ListAlerts:E}});me.render=ue;var pe=me;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/vue/src/EditAlert/EditAlert.vue b/vue/src/EditAlert/EditAlert.vue
index 173fa022..74fd3add 100644
--- a/vue/src/EditAlert/EditAlert.vue
+++ b/vue/src/EditAlert/EditAlert.vue
@@ -55,7 +55,7 @@
>
-
+
+
+