Statystyka dni tygodnia

boboo

Avatar: boboo

2015-01-17 08:04

Taki mały pluginek pozwalający na zobrazowanie zamówień (ilościowo i procentowo) w danych dniach tygodnia.

W pliku /core/orders-admin.php dodać funkcję:

public function listOrdersStatDay(){
 if(isset(
$this->aOrders)){
  
$iOrdersCount=0;
  foreach(
$this->aOrders as $iOrder=>$aData)
   if(
$aData['iStatus']!=9){ // Tutaj dać ID statusu anulowanego (standardowo: 4) 
    
$iWeekDay=date('N',$aData['iTime']); // ustalamy numer dnia tygodnia w zamówieniach
    
if(!isset($aWeekDay[$iWeekDay])) // jeśli w arrayu dni nie ma jeszcze takiego indeksu dnia
     
$aWeekDay[$iWeekDay]=0// tworzymy taki indeks z wartością 0
    
$aWeekDay[$iWeekDay]++; // dodajemy 1 do wartości indeksu dnia
    
$iOrdersCount++; // zliczamy zamówienia nieanulowane
   
}
  if(isset(
$aWeekDay)){
   
ksort($aWeekDay); // sortujemy od poniedziałku do niedzieli
   
$sWeekDay='<div class="extBox"><table>'// tworzymy tabelę i przypisujemy nazwy dni do ich numerów
   
foreach($aWeekDay as $iKey=>$iOrders){
    
// komu się chce bawić w $lang, może sobie dni tygodnia tam wpisać
    
if($iKey==1$sKey='Montag'// Pon
    
if($iKey==2$sKey='Dienstag'// Wto
    
if($iKey==3$sKey='Mittwoch'// Śro
    
if($iKey==4$sKey='Donnerstag'// Czw
    
if($iKey==5$sKey='Freitag'// Pią
    
if($iKey==6$sKey='Samstag'// Sob
    
if($iKey==7$sKey='Sonntag'// Nie
    
$sWeekDay.='
    <tr>
     <td>'
.$sKey.': </td>
     <td>'
.$iOrders.'</td>
     <td class="chartTd"><div style="width:'
.round($iOrders/$iOrdersCount*200).'px;">'.number_format($iOrders/$iOrdersCount*100,2).'%</div></td>
    </tr>'

    
// liczba 200 determinuje szerokość paska w <td>, który (<td>) jest ustawiony na 100px (chartTd w .css).
    // Formuła iOrders/iOrdersCount*100 określa procent i długość paska w pixelach
    // jednak przy tym ustawieniu różnice są słabo widoczne. Dlatego wydłużamy pasek 2-krotnie (200).
   
}
   
$sWeekDay.='<tr><td>Alle: </td><td>'.$iOrdersCount.'</td><td></td></tr></table></div>'// Słowo "Alle:" = "Wszystkie:" 
   // Komu się chce bawić w $lang, to może to tam wprowadzić. Podobnie przy dniach tygodnia.
   
return $sWeekDay;
  }
 }
}



Następnie w /templates/admin/orders.php pod:

</form>

dodajemy:

<?php echo $oOrder->listOrdersStatDay();?>

i w /templates/admin/style.css dodajemy:

.extBox{
&
nbsp;float:left;
&
nbsp;border:1px&nbsp;solid&nbsp;#888;
&nbsp;border-top:

12px solid #cce1f0;
 margin:8px 8px 0 0;
 border-top-left-radius:10px;
 border-top-right-radius:10px;
 border-bottom:12px solid #870707;
 border-bottom-left-radius:10px;
 border-bottom-right-radius:10px;
 padding:8px;
}
.extBox .chartTd{
 border:solid 1px #888;
 width:100px;
}
.extBox .chartTd div{
 float:left;
 height:100%;
 background-color:#add8f6;
}



I w zakładce "zamówienia" otrzymujemy taką tabelkę:
http://www.kimla.de/bilder/qc/qc_stat_day_01.png

» Quick.Cart v6.x

boboo :-)

boboo

Avatar: boboo

2015-01-17 08:09

Coś się rozkawałkowało, jeszcze raz druga część:

Następnie w /templates/admin/orders.php pod:

</form>


dodajemy:

<?php echo $oOrder->listOrdersStatDay();?>


i w /templates/admin/style.css dodajemy:

.extBox{float:left;border:1px solid #888;border-top:12px solid #cce1f0;margin:8px 8px 0 0;border-top-left-radius:10px;border-top-right-radius:10px;border-bottom:12px solid #870707;border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:8px;}
.extBox .chartTd{border:solid 1px #888;width:100px;}
.extBox .chartTd div{float:left;height:100%;background-color:#add8f6;}

boboo :-)

Do góry
o nas | kontakt