Skip to content

Commit 5e47178

Browse files
adds code for display and evolution graph to work
1 parent 3cf03a3 commit 5e47178

8 files changed

Lines changed: 114 additions & 22 deletions

File tree

Slack.php

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ class Slack extends Plugin
2929

3030
private static $availableParameters = array(
3131
self::SLACK_CHANNEL_ID_PARAMETER => true,
32+
ScheduledReports::EVOLUTION_GRAPH_PARAMETER => false,
33+
ScheduledReports::DISPLAY_FORMAT_PARAMETER => true,
3234
);
3335

3436
private static $managedReportTypes = array(
@@ -74,13 +76,33 @@ public function getClientSideTranslationKeys(&$translationKeys)
7476

7577
public function validateReportParameters(&$parameters, $reportType)
7678
{
77-
if (self::isSlackEvent($reportType)) {
78-
$settings = StaticContainer::get(SystemSettings::class);
79-
if (empty($settings->slackOauthToken->getValue())) {
80-
throw new \Exception(Piwik::translate('Slack_OauthTokenRequiredErrorMessage'));
81-
} elseif (empty($parameters[self::SLACK_CHANNEL_ID_PARAMETER])) {
82-
throw new \Exception(Piwik::translate('Slack_SlackChannelIdRequiredErrorMessage'));
83-
}
79+
if (!self::isSlackEvent($reportType)) {
80+
return;
81+
}
82+
83+
$reportFormat = $parameters[ScheduledReports::DISPLAY_FORMAT_PARAMETER];
84+
$availableDisplayFormats = array_keys(ScheduledReports::getDisplayFormats());
85+
if (!in_array($reportFormat, $availableDisplayFormats)) {
86+
throw new \Exception(
87+
Piwik::translate(
88+
'General_ExceptionInvalidAggregateReportsFormat',
89+
array($reportFormat, implode(', ', $availableDisplayFormats))
90+
)
91+
);
92+
}
93+
94+
// evolutionGraph is an optional parameter
95+
if (!isset($parameters[ScheduledReports::EVOLUTION_GRAPH_PARAMETER])) {
96+
$parameters[ScheduledReports::EVOLUTION_GRAPH_PARAMETER] = ScheduledReports::EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE;
97+
} else {
98+
$parameters[ScheduledReports::EVOLUTION_GRAPH_PARAMETER] = self::valueIsTrue($parameters[ScheduledReports::EVOLUTION_GRAPH_PARAMETER]);
99+
}
100+
101+
$settings = StaticContainer::get(SystemSettings::class);
102+
if (empty($settings->slackOauthToken->getValue())) {
103+
throw new \Exception(Piwik::translate('Slack_OauthTokenRequiredErrorMessage'));
104+
} elseif (empty($parameters[self::SLACK_CHANNEL_ID_PARAMETER])) {
105+
throw new \Exception(Piwik::translate('Slack_SlackChannelIdRequiredErrorMessage'));
84106
}
85107
}
86108

@@ -220,6 +242,9 @@ public function templateReportParametersScheduledReports(&$out, $context = '')
220242

221243
$settings = StaticContainer::get(SystemSettings::class);
222244
$view->isSlackOauthTokenAdded = !empty($settings->slackOauthToken->getValue());
245+
$view->defaultDisplayFormat = ScheduledReports::DEFAULT_DISPLAY_FORMAT;
246+
$view->defaultFormat = ReportRenderer::PDF_FORMAT;
247+
$view->defaultEvolutionGraph = ScheduledReports::EVOLUTION_GRAPH_PARAMETER_DEFAULT_VALUE;
223248
$out .= $view->render();
224249
}
225250

@@ -258,4 +283,9 @@ private function reportAlreadySent($report, Period $period)
258283

259284
return $previousDate === $period->getRangeString();
260285
}
286+
287+
private static function valueIsTrue($value)
288+
{
289+
return $value == 'true' || $value == 1 || $value == '1' || $value === true;
290+
}
261291
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
<div
22
vue-entry="Slack.ReportParameters"
33
is-slack-oauth-token-added="{{ isSlackOauthTokenAdded|default(false)|json_encode }}"
4+
default-format="{{ defaultFormat|default(null)|json_encode|e('html_attr') }}"
5+
default-display-format="{{ defaultDisplayFormat|default(null)|json_encode|e('html_attr') }}"
6+
default-evolution-graph="{{ defaultEvolutionGraph|default(false)|json_encode|e('html_attr') }}"
47
></div>

tests/UI/Slack_spec.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,27 @@
9999
}, selector);
100100
});
101101

102+
it('should show display option for reportType:pdf', async function () {
103+
const selector = '.page';
104+
await captureScreen('slack_report_pdf_view', async () => {
105+
await page.evaluate(() => $('#add-report').click());
106+
await page.waitForNetworkIdle();
107+
await page.type('textarea#report_description', 'Slack Report PDF');
108+
await page.evaluate(() => $('#addEditReport .matomo-form-field:eq(6) input')[0].click());
109+
await page.evaluate(() => $('#addEditReport .matomo-form-field:eq(6) ul li:last').click());
110+
}, selector);
111+
});
112+
113+
it('should save reportType:pdf with default display options', async function () {
114+
const selector = '.page';
115+
await captureScreen('slack_report_pdf_save', async () => {
116+
await page.evaluate(() => $('#slackUserCountry_getCountry').click());
117+
await page.type('input#channelID', 'ChannelID');
118+
await page.click('.matomo-save-button input.btn');
119+
await page.waitForNetworkIdle();
120+
}, selector);
121+
});
122+
123+
// TODO: Add tests for display options once core changes are merged
124+
102125
});

vue/dist/Slack.umd.js

Lines changed: 25 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vue/dist/Slack.umd.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vue/dist/Slack.umd.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vue/dist/Slack.umd.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)