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 @@ > -
+
+
+ +