]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6015 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 22 Jun 2023 17:54:29 +0000 (19:54 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 22 Jun 2023 17:54:29 +0000 (19:54 +0200)
app/Fluidbook/Stats.php
resources/views/fluidbook_stats/pagelink.blade.php [new file with mode: 0644]
resources/views/fluidbook_stats/stats.blade.php

index 562fd35a36913fded7af3127c942b5886ffec74d..ae9265ac02726efc7a4aa6663288153ec0c0e6a9 100644 (file)
@@ -507,38 +507,43 @@ class Stats extends Reporting
 
     protected function _processMultimedia()
     {
-        $types = ['slideshow' => ['show'], 'video' => ['play', 'show']];
-
-        $typesSubtable = [];
-        foreach ($this->apiCall('Events.getCategory') as $period) {
-            foreach ($period as $category) {
-                $typesSubtable[$category['label']] = $category['idsubdatatable'];
-            }
-        }
+        $this->setCacheDuration(1);
 
+        $types = ['slideshow' => ['show'], 'video' => ['play']];
+        $undefined = ['Nom d\'évènement indéfini'];
 
         $res = [];
         foreach ($types as $type => $actions) {
-            foreach ($actions as $action) {
-                $data = $this->apiCall('Events.getNameFromCategoryId', ['idSubtable' => $typesSubtable[$type], 'segment' => 'eventAction==' . $action]);
-                foreach ($data as $day => $events) {
-                    foreach ($events as $event) {
-                        $label = $event['label'];
-                        $e = explode('|:|', $label, 2);
-                        $page = '';
-                        if (count($e) == 2) {
-                            $page = $e[1];
-                        }
-                        if (!isset($res[$label])) {
-                            $res[$label] = ['type' => $type, 'nb' => 0, 'pages' => []];
-                        }
-                        $res[$label]['nb'] += $event['nb_events'];
-                        if ($page && !in_array($page, $res[$label]['pages'])) {
-                            $res[$label]['pages'][] = $page;
-                            sort($res[$label]['pages']);
-                        }
+            $data = $this->apiCall('Events.getName', ['segment' => 'eventCategory==' . $type, 'secondaryDimension' => 'eventAction', 'flat' => 1, 'expanded' => 1]);
+            foreach ($data as $day => $events) {
+                foreach ($events as $event) {
+                    if (!in_array($event['Events_EventAction'], $actions)) {
+                        continue;
+                    }
+                    if (in_array($event['Events_EventName'], $undefined)) {
+                        continue;
+                    }
+                    $e = explode('|:|', $event['Events_EventName'], 2);
+                    $page = '';
+                    if (count($e) == 2) {
+                        $page = $e[1];
+                        $label = $e[0];
+                    } else {
+                        $label = $e[0];
+                    }
+                    if($page){
+                        $page=$this->_getPageGroup($page);
+                    }
+                    if (!isset($res[$label])) {
+                        $res[$label] = ['type' => $type, 'nb' => 0, 'pages' => []];
+                    }
+                    $res[$label]['nb'] += $event['nb_events'];
+                    if ($page && !in_array($page, $res[$label]['pages'])) {
+                        $res[$label]['pages'][] = $page;
+                        sort($res[$label]['pages']);
                     }
                 }
+
             }
 
         }
@@ -605,23 +610,7 @@ class Stats extends Reporting
         $res = [];
         for ($page_number = 0; $page_number <= $this->fluidbook->getPagesNumber(); $page_number++) {
             $aliases = $pagesAlises[$page_number] ?? [];
-
-            if ($this->fluidbook->isOnePage()) {
-                $page_group = $page_number;
-            } else {
-                if ($page_number <= 1) {
-                    $page_group = 1;
-                } elseif ($page_number == $this->fluidbook->getPagesNumber() && $this->fluidbook->getPagesNumber() % 2 == 0) {
-                    $page_group = $page_number;
-                } else {
-                    $start_page = $page_number;
-                    if ($page_number % 2 == 1) {
-                        $start_page--;
-                    }
-                    $following_page = $start_page + 1;
-                    $page_group = $start_page . '—' . $following_page;
-                }
-            }
+            $page_group = $this->_getPageGroup($page_number);
 
             $single_page_data = [
                 'page_group' => $page_group,
@@ -642,6 +631,26 @@ class Stats extends Reporting
         return $res;
     }
 
+    protected function _getPageGroup($page_number)
+    {
+        if ($this->fluidbook->isOnePage()) {
+            return $page_number;
+        } else {
+            if ($page_number <= 1) {
+                return 1;
+            } elseif ($page_number == $this->fluidbook->getPagesNumber() && $this->fluidbook->getPagesNumber() % 2 == 0) {
+                return $page_number;
+            } else {
+                $start_page = $page_number;
+                if ($page_number % 2 == 1) {
+                    $start_page--;
+                }
+                $following_page = $start_page + 1;
+                return $start_page . '—' . $following_page;
+            }
+        }
+    }
+
     protected function _sumArrays()
     {
         $exclude = ['page_number', 'page_group'];
diff --git a/resources/views/fluidbook_stats/pagelink.blade.php b/resources/views/fluidbook_stats/pagelink.blade.php
new file mode 100644 (file)
index 0000000..ec7a257
--- /dev/null
@@ -0,0 +1,26 @@
+@php
+    if($group && (is_string($group) || is_int($group))){
+        $group=$pages[$group];
+    }
+@endphp
+
+<td data-name="page_group" sorttable_customkey="{{ $group['page_number']??0 }}">
+    @if($group)
+        @if(count($group['page_aliases'])>0)
+            <div class="with-aliases">
+                @foreach($group['page_aliases'] as $alias)
+                    <span class="alias">
+                <a target="_blank"
+                   href="{!! $fluidbookBaseURL !!}#/page/{{\Fluidbook\Tools\Links\AnchorLink::normalizeAnchor($alias)}}">
+                    {{$alias}}
+                </a>
+            </span>
+                @endforeach
+                @endif
+                <a class="number" target="_blank"
+                   href="{!! $fluidbookBaseURL !!}#/page/{{ $group['page_number'] }}">{{$group['page_group']}}</a>
+                @if(count($group['page_aliases'])>0)
+            </div>
+        @endif
+    @endif
+</td>
index 734cd8316c9de445acddc070e4e2518b07502d96..f29aaae2afe5f8ade8d7696b29551bdbd7fb1ea6 100644 (file)
                 @foreach($pages as $page_group => $page_data)
                     <tr>
                         @foreach (array_keys($table_map['per-page']) as $summary_key)
-                            <td data-name="{{ $summary_key }}"
-                                @if($summary_key === 'page_group')sorttable_customkey="{{ $page_data['page_number'] }}"@endif>
-                                @if($summary_key === 'page_group')
-                                    @if(count($page_data['page_aliases'])>0)
-                                        <div class="with-aliases">
-                                            @foreach($page_data['page_aliases'] as $alias)
-                                                <span class="alias"><a target="_blank"
-                                                                       href="{!! $fluidbookBaseURL !!}#/page/{{\Fluidbook\Tools\Links\AnchorLink::normalizeAnchor($alias)}}">{{$alias}}</a></span>
-                                            @endforeach
-                                            @endif
-                                            <a class="number" target="_blank"
-                                               href="{!! $fluidbookBaseURL !!}#/page/{{ $page_data['page_number'] }}">{{$page_data[$summary_key]}}</a>
-                                            @if(count($page_data['page_aliases'])>0)
-                                        </div>
-                                    @endif
-                                @else
-                                    {!! is_int($page_data[$summary_key]) ? $formatter->format($page_data[$summary_key]) : $page_data[$summary_key] !!}
-                                @endif
-                            </td>
+                            @if($summary_key === 'page_group')
+                                @include('fluidbook_stats.pagelink',['group'=>$page_data[$summary_key]])
+                            @else
+                                <td data-name="{{ $summary_key }}"
+                                {!! is_int($page_data[$summary_key]) ? $formatter->format($page_data[$summary_key]) : $page_data[$summary_key] !!}
+                                </td>
+                            @endif
                         @endforeach
                     </tr>
                 @endforeach
                         <table class="{!! $tableClasses !!}">
                             <thead>
                             <tr>
-                                <th style="width: 55%;">{{ __('Contenu') }}</th>
-                                <th style="width: 20%;">{{ __('Page') }}</th>
+                                <th style="width: 45%;">{{ __('Contenu') }}</th>
+                                <th style="width: 40%;">{{ __('Page') }}</th>
                                 <th style="width: 15%;" class="sorttable_sorted_reverse">{{ __('Vues') }}</th>
                             </tr>
                             </thead>
                                     <td class="whitespace-nowrap" data-sort-value="{{$label }}">
                                         <i class="{{$icons[$media['type']]}}"></i> {{$label }}
                                     </td>
-                                    <td data-sort-value="{{ $media['pages'][0] ?? 0}}">{{implode(', ',$media['pages']) }}</td>
+                                    @include('fluidbook_stats.pagelink',['group'=>$media['pages'][0]??''])
                                     <td>{{ $formatter->format($media['nb']) }}</td>
                                 </tr>
                             @endforeach