diff --git a/Modules/Front/Http/Controllers/DashboardController.php b/Modules/Front/Http/Controllers/DashboardController.php index 595144e..0fb5fa2 100644 --- a/Modules/Front/Http/Controllers/DashboardController.php +++ b/Modules/Front/Http/Controllers/DashboardController.php @@ -26,14 +26,22 @@ public function docs() return response()->redirectTo('https://docs.abrouter.com')->send(); } - public function stats() + public function stats(Request $request) { + if ($request->hasValidSignature()){ + return view('front::dashboard/stats'); + } + $this->enforceAuth(); return view('front::dashboard/stats'); } - public function experimentStats() + public function experimentStats(Request $request) { + if ($request->hasValidSignature()) { + return view('front::dashboard/experiment-stats'); + } + $this->enforceAuth(); return view('front::dashboard/experiment-stats'); } diff --git a/Modules/Front/Resources/views/customization-event/customization-event.blade.php b/Modules/Front/Resources/views/customization-event/customization-event.blade.php index f47cbcf..0e04fe6 100644 --- a/Modules/Front/Resources/views/customization-event/customization-event.blade.php +++ b/Modules/Front/Resources/views/customization-event/customization-event.blade.php @@ -68,7 +68,7 @@ $(document).ready(function () { $.ajax({ 'method': "GET", - 'url': "/api/v1/user-events", + 'url': "/api/v1/display-user-events", 'headers': { 'Content-Type': 'application/json', 'Accept': 'application/json', @@ -140,7 +140,7 @@ $.ajax({ 'method': 'POST', - 'url': "/api/v1/user-events", + 'url': "/api/v1/display-user-events", 'headers': { 'Content-Type': 'application/json', 'Accept': 'application/json', @@ -230,7 +230,7 @@ $.ajax({ 'method': 'PATCH', - 'url': "/api/v1/user-events/" + dataId, + 'url': "/api/v1/display-user-events/" + dataId, 'headers': { 'Content-Type': 'application/json', 'Accept': 'application/json', @@ -290,7 +290,7 @@ $.ajax({ 'method': "DELETE", - 'url': "/api/v1/user-events/" + id, + 'url': "/api/v1/display-user-events/" + id, 'headers': { 'Authorization': window.token, }, diff --git a/Modules/Front/Resources/views/dashboard/experiment-stats.blade.php b/Modules/Front/Resources/views/dashboard/experiment-stats.blade.php index 71a4779..758d4df 100644 --- a/Modules/Front/Resources/views/dashboard/experiment-stats.blade.php +++ b/Modules/Front/Resources/views/dashboard/experiment-stats.blade.php @@ -1,6 +1,6 @@ @extends('front::layouts.settings') @@ -105,12 +105,17 @@ class="date__input date-range" Add a tag - - Add events - - - - + @if(\Modules\Front\Internal\User::isAuthorized()) + + + Add events + + + + + @endif
@@ -218,6 +223,21 @@ class="date__input date-range" window.token='Bearer cookie('token')?>'; window.onload = $('.loader').show(); window.mode = 'experiment_stats'; + + window.url = getShareUrl(); + + function getShareUrl() { + return 'addMinutes(30), + [ + 'userId' => User::me()['data']['id'], + 'experimentId' => request()->get('experimentId'), + 'dateFrom' => request()->get('dateFrom'), + 'dateTo' => request()->get('dateTo') + ]) + ?>'; + } + @endsection diff --git a/Modules/Front/Resources/views/dashboard/stats.blade.php b/Modules/Front/Resources/views/dashboard/stats.blade.php index 73c90ac..fb9c1cb 100644 --- a/Modules/Front/Resources/views/dashboard/stats.blade.php +++ b/Modules/Front/Resources/views/dashboard/stats.blade.php @@ -1,3 +1,7 @@ + @extends('front::layouts.settings') @section('settings') @@ -31,11 +35,16 @@ class="date__input date-range" >
- - Add events - - - + @if(\Modules\Front\Internal\User::isAuthorized()) + + + Add events + + + + @endif @@ -116,6 +125,20 @@ class="date__input date-range" window.token='Bearer cookie('token')?>'; window.onload = $('.loader').show(); window.mode = 'stats'; + + window.url = getShareUrl(); + + function getShareUrl() { + return 'addMinutes(30), + [ + 'userId' => User::me()['data']['id'], + 'dateFrom' => request()->get('dateFrom'), + 'dateTo' => request()->get('dateTo') + ]) + ?>'; + } + @endsection diff --git a/Modules/Front/Resources/views/layouts/settings.blade.php b/Modules/Front/Resources/views/layouts/settings.blade.php index db54f4f..0c2884c 100644 --- a/Modules/Front/Resources/views/layouts/settings.blade.php +++ b/Modules/Front/Resources/views/layouts/settings.blade.php @@ -9,6 +9,7 @@ + @if(\Modules\Front\Internal\User::isAuthorized())
@@ -64,6 +65,7 @@
+ @endif @endsection diff --git a/Modules/Front/Routes/web.php b/Modules/Front/Routes/web.php index 9168435..9ab50b3 100644 --- a/Modules/Front/Routes/web.php +++ b/Modules/Front/Routes/web.php @@ -1,5 +1,6 @@ get('/en/feature-toggle', 'DashboardController@featureToggle'); $router->get('/en/feature-toggle/run-feature-flag', 'DashboardController@runFeatureFlag'); $router->get('/en/docs', 'DashboardController@docs'); - $router->get('/en/stats', 'DashboardController@stats'); + $router->get('/en/stats', 'DashboardController@stats')->name('stats'); $router->get('/en/stats/customization-event', 'CustomizationEventController@index'); - $router->get('/en/board/experiment-stats', 'DashboardController@experimentStats'); + $router->get('/en/board/experiment-stats', 'DashboardController@experimentStats') + ->name('experiment-stats'); $router->get('/en/board/run-experiment', 'DashboardController@runExperiment'); $router->get('/en/user-page', 'DashboardController@userPage'); diff --git a/public/js/Stats.js b/public/js/Stats.js index c2a2337..40cb205 100644 --- a/public/js/Stats.js +++ b/public/js/Stats.js @@ -37,7 +37,8 @@ function getEvents (counters, percentage = []) { function getFunnelStats ( dateFrom, dateTo, - dateIntervals + dateIntervals, + userId ) { $.ajax({ 'method': "POST", @@ -45,6 +46,9 @@ function getFunnelStats ( 'headers': { 'Authorization': window.token, }, + 'data': { + 'userId': userId + }, 'success': function (response) { $('.loader').hide(); $('.table__thead').show(); @@ -130,7 +134,8 @@ function getExperimentStats ( dateFrom, dateTo, backgroundBranchColors, - tag = '' + userId, + tag = '', ) { $.ajax({ 'method': "GET", @@ -141,6 +146,9 @@ function getExperimentStats ( 'headers': { 'Authorization': window.token }, + 'data': { + 'userId': userId + }, 'success': function (response) { $('.loader').hide(); $('.dashboard__labels').children().remove(); @@ -625,18 +633,42 @@ function getDateIntervals(id, startDate, endDate) { } $(document).ready(function () { + let url = new URL(window.location.href), + dateFrom = url.searchParams.get('dateFrom'), + dateTo = url.searchParams.get('dateTo'), + dateInterval, + dateSplit, + userId = new URL(window.location.href).searchParams.get('userId'); + + const shareData = { + url: window.url + } + + $(document).on('click', '#share_page', function () { + navigator.share(shareData); + }) + getDateIntervals( '.date-range[name="dates"]', - moment().subtract(6, "days").format('MMM DD, YYYY'), - moment().format('MMM DD, YYYY') + dateFrom ?? moment().subtract(6, "days").format('MMM DD, YYYY'), + dateTo ?? moment().format('MMM DD, YYYY') ) - let dateInterval = $('#date_filter_experiment').val() ?? $('#date_stats').val(), + if ( + dateFrom === null && + dateTo === null + ) { + dateInterval = $('#date_filter_experiment').val() ?? $('#date_stats').val(), dateSplit = dateInterval.split('-'), dateFrom = convertDate(dateSplit[0]), - dateTo = convertDate(dateSplit[1]), - dateIntervals = getDateInterval(dateFrom, dateTo), - url = new URL(window.location.href), + dateTo = convertDate(dateSplit[1]); + + url.searchParams.set('dateFrom', dateFrom); + url.searchParams.set('dateTo', dateTo); + window.history.replaceState({}, '', url); + } + + let dateIntervals = getDateInterval(dateFrom, dateTo), experimentId = url.searchParams.get("experimentId"), backgroundBranchColors = [ '#F07D5F', @@ -653,7 +685,8 @@ $(document).ready(function () { ? getFunnelStats( dateFrom, dateTo, - dateIntervals + dateIntervals, + userId ) : ( getTags(), @@ -662,7 +695,8 @@ $(document).ready(function () { dateIntervals, dateFrom, dateTo, - backgroundBranchColors + backgroundBranchColors, + userId ) ) @@ -683,10 +717,15 @@ $(document).ready(function () { dateTo = convertDate(dateSplit[1]), dateIntervals = getDateInterval(dateFrom, dateTo); + url.searchParams.set('dateFrom', dateFrom); + url.searchParams.set('dateTo', dateTo); + window.history.replaceState({}, '', url); + getFunnelStats( dateFrom, dateTo, - dateIntervals + dateIntervals, + userId ) load = 0; @@ -711,10 +750,15 @@ $(document).ready(function () { dateTo = convertDate(dateSplit[1]), dateIntervals = getDateInterval(dateFrom, dateTo); + url.searchParams.set('dateFrom', dateFrom); + url.searchParams.set('dateTo', dateTo); + window.history.replaceState({}, '', url); + getFunnelStats( dateFrom, dateTo, - dateIntervals + dateIntervals, + userId ) load = 0; @@ -739,6 +783,10 @@ $(document).ready(function () { dateTo = convertDate(dateSplit[1]), dateIntervals = getDateInterval(dateFrom, dateTo); + url.searchParams.set('dateFrom', dateFrom); + url.searchParams.set('dateTo', dateTo); + window.history.replaceState({}, '', url); + $('.table.table_ap').remove(); getExperimentStats( @@ -746,7 +794,8 @@ $(document).ready(function () { dateIntervals, dateFrom, dateTo, - backgroundBranchColors + backgroundBranchColors, + userId ) load = 0; @@ -771,6 +820,10 @@ $(document).ready(function () { dateTo = convertDate(dateSplit[1]), dateIntervals = getDateInterval(dateFrom, dateTo); + url.searchParams.set('dateFrom', dateFrom); + url.searchParams.set('dateTo', dateTo); + window.history.replaceState({}, '', url); + $('.table.table_ap').remove(); getExperimentStats( @@ -778,7 +831,8 @@ $(document).ready(function () { dateIntervals, dateFrom, dateTo, - backgroundBranchColors + backgroundBranchColors, + userId ) load = 0; @@ -796,6 +850,10 @@ $(document).ready(function () { dateIntervals = getDateInterval(dateFrom, dateTo), tag = event.currentTarget.innerText; + url.searchParams.set('dateFrom', dateFrom); + url.searchParams.set('dateTo', dateTo); + window.history.replaceState({}, '', url); + $('.table.table_ap').remove(); getExperimentStats( @@ -804,6 +862,7 @@ $(document).ready(function () { dateFrom, dateTo, backgroundBranchColors, + userId, tag ) })