first commit

This commit is contained in:
2025-03-12 17:06:23 +01:00
commit 2241f7131f
13185 changed files with 1692479 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
<div style="margin:10px; color: #000;padding: 15px; border: 1px solid #ccc; background-color: #eee; border-radius: 5px 5px 5px 5px;">
<?php echo __('Moduł analizy reklam nie jest aktywny i nie zbiera danych.') ?><br>
<?php echo __('Aby go aktywować przejdź do konfiguracji modułu.') ?>
<a href="<?php echo st_url_for("appAdsTrackerBackend/config") ?>" target="_parent"><?php echo __('Konfiguracja') ?></a>
</div>

View File

@@ -0,0 +1,3 @@
<a href="/backend.php/adsTracker/adsTrackerInfoStats/?id=<?php echo $id; ?>">
<?php echo st_admin_get_icon('preview') ?> <?php echo $value; ?>
</a>

View File

@@ -0,0 +1,19 @@
<?php
asort($campaigns);
$selected = $ads_tracker_list->getAppAdsTrackerPlatformId()."_".$ads_tracker_list->getAppAdsTrackerCampaignId();
?>
<select name="ads_tracker_list[platform_campaign]" id="ads_tracker_list_platform_campaign">
<?php foreach ($campaigns as $key => $value): ?>
<?php $campaign_id = explode("_",$key) ?>
<?php
if (!appAdsTracker::getIsCampaignSytemDefault($campaign_id[0])): ?>
<option value="<?php echo $key; ?>" <?php if ($selected== $key): ?> selected="selected"<?php endif; ?>><?php echo appAdsTracker::langFilter($value); ?></option>
<?php endif; ?>
<?php endforeach; ?>
</select>

View File

@@ -0,0 +1,19 @@
<?php
if(is_object(@$ads_tracker_platform)):
$fullurl = "appAdsTrackerBackend/adsTrackerCampaignList?filters[app_ads_tracker_platform_id]=".$ads_tracker_platform->getId();
?>
<a href="<?php echo st_url_for($fullurl) ?>">
<?php echo appAdsTracker::langFilter($ads_tracker_platform->getAdsName()); ?>
</a>
<?php endif; ?>
<?php
if(is_object(@$ads_tracker_campaign)):
$fullurl = "appAdsTrackerBackend/index?filters[app_ads_tracker_campaign_id]=".$ads_tracker_campaign->getId();
?>
<a href="<?php echo st_url_for($fullurl) ?>">
<?php echo appAdsTracker::langFilter($ads_tracker_campaign->getAdsName()); ?>
</a>
<?php endif; ?>

View File

@@ -0,0 +1,6 @@
<?php
$fullurl = "appAdsTrackerBackend/index?filters[app_ads_tracker_campaign_id]=".$ads_tracker_list->getAdsTrackerCampaign()->getId();
?>
<a href="<?php echo st_url_for($fullurl) ?>">
<?php echo appAdsTracker::langFilter($ads_tracker_list->getAdsTrackerCampaign()->getAdsName()); ?>
</a>

View File

@@ -0,0 +1,20 @@
<?php
$name = "";
$group = "";
if($ads_tracker_debug->getAdsTrackerList()->getAdsName()!=""){
$name = " / ".$ads_tracker_debug->getAdsTrackerList()->getAdsName();
}
if($ads_tracker_debug->getAdsTrackerList()->getAdsGroup()!=""){
$group = " / ".$ads_tracker_debug->getAdsTrackerList()->getAdsGroup();
}
$fullname = $ads_tracker_debug->getAdsTrackerList()->getId()." / ".$ads_tracker_debug->getAdsTrackerList()->getAdsTrackerPlatform()->getAdsName()." - ".$ads_tracker_debug->getAdsTrackerList()->getAdsTrackerCampaign()->getAdsName().$group.$name;
$fullurl = "appAdsTrackerBackend/edit?id=".$ads_tracker_debug->getAdsTrackerList()->getId();
?>
<a href="<?php echo st_url_for($fullurl) ?>">
<img src="/images/backend/icons/view.png" title="Podgląd" class="tooltip" style="top: 4px;position: relative;">
<?php echo $fullname ?>
</a>

View File

@@ -0,0 +1,9 @@
<?php
$fullurl = "appAdsTrackerBackend/index?filters[app_ads_tracker_platform_id]=".$ads_tracker_list->getAdsTrackerPlatform()->getId();
?>
<a href="<?php echo st_url_for($fullurl) ?>">
<?php echo appAdsTracker::langFilter($ads_tracker_list->getAdsTrackerPlatform()->getAdsName()); ?>
</a>

View File

@@ -0,0 +1,6 @@
<?php echo appAdsTracker::langFilter($ads_tracker_campaign->getAdsTrackerPlatform()->getAdsName()); ?>

View File

@@ -0,0 +1,11 @@
<?php
if(is_object(@$ads_tracker_platform)){
echo st_colorpicker_input_tag('ads_tracker_platform[color]', $ads_tracker_platform->getColor());
}
?>
<?php
if(is_object(@$ads_tracker_campaign)){
echo st_colorpicker_input_tag('ads_tracker_campaign[color]', $ads_tracker_campaign->getColor());
}
?>

View File

@@ -0,0 +1 @@
<?php echo appAdsTracker::getAdsEnteringValue($ads_tracker_list->getId()) ?> <?php if(appAdsTracker::getAdsEnteringValue($ads_tracker_list->getId())!=0): ?><a href="/backend.php/adsTracker/adsTrackerInfoStats/?id=<?php echo $ads_tracker_list->getId(); ?>"><?php echo __('Zobacz') ?></a><?php endif; ?>

View File

@@ -0,0 +1,2 @@
<?php echo input_tag('config[exclude_remote_address]', $config->get('exclude_remote_address', null, false), array ("style" => "width:550px")); ?>
<div><?php echo __("Twoje IP")?>: <?php echo $_SERVER['REMOTE_ADDR'] ?></div>

View File

@@ -0,0 +1,9 @@
<?php $admin = sfContext::getInstance()->getRequest()->getParameter('admin'); ?>
<?php
if($admin!=1):
echo $config->get('hash_control', null, false);
echo input_hidden_tag('config[hash_control]', $config->get('hash_control', null, false), array ());
else:
?>
<?php echo input_tag('config[hash_control]', $config->get('hash_control', null, false), array ()); ?>
<?php endif; ?>

View File

@@ -0,0 +1,37 @@
<?php
$params = explode("=", $ads_tracker_list->getUrlHash());
$params = $params[1];
?>
<!-- The text field -->
<input type="text" style="width:550px;background-color: #eee;" value="<?php echo $params; ?>" readonly id="myInput">
<!-- The button used to copy the text -->
<span style="display: inline-block;border: 1px solid #ccc;background-color: #eee; padding: 2px 10px;cursor: pointer;" onclick="copyToClipboard('#params')"><?php echo __('Skopiuj') ?></span>
<div style="display: none;" id="params"><?php echo $params ?></div>
<script type="text/javascript">
function copyToClipboard(element) {
jQuery(function($) {
$('#myInput').fadeOut(250).fadeIn(250);
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(element).html()).select();
document.execCommand("copy");
$temp.remove();
});
}
</script>

View File

@@ -0,0 +1,26 @@
<?php $admin = sfContext::getInstance()->getRequest()->getParameter('admin'); ?>
<?php if($admin!=1): ?>
<?php
if($config->get('is_debug', null, false)==1){
echo "włączony";
}else{
echo "wyłączony";
}
echo input_hidden_tag('config[is_debug]', $config->get('is_debug', null, false), array ());
?>
<?php else: ?>
<?php echo checkbox_tag('config[is_debug]', 1, $config->get('is_debug', null, false), array ()); ?>
<?php endif; ?>
<?php if($admin!=1): ?>
<style>
.row_is_debug{
display: none;
}
</style>
<?php endif; ?>

View File

@@ -0,0 +1,42 @@
<?php if($type=="edit"): ?>
<?php
if($ads_tracker_platform->getPlatformType()==1): ?>
<?php echo __('Wejścia bezpośrednie'); ?>
<input type="hidden" value="1" name="ads_tracker_platform[platform_type]" id="ads_tracker_platform_type" />
<?php elseif($ads_tracker_platform->getPlatformType()==4): ?>
<?php echo __('Porównywarki'); ?>
<input type="hidden" value="4" name="ads_tracker_platform[platform_type]" id="ads_tracker_platform_type" />
<?php elseif($ads_tracker_platform->getPlatformType()==5): ?>
<?php echo __('Reklamy Google'); ?>
<input type="hidden" value="5" name="ads_tracker_platform[platform_type]" id="ads_tracker_platform_type" />
<?php elseif($ads_tracker_platform->getPlatformType()==6): ?>
<?php echo __('Reklamy Facebook'); ?>
<input type="hidden" value="6" name="ads_tracker_platform[platform_type]" id="ads_tracker_platform_type" />
<?php else: ?>
<select name="ads_tracker_platform[platform_type]" id="ads_tracker_platform_type">
<option value="2" <?php if($ads_tracker_platform->getPlatformType()==2): ?> selected="selected" <?php endif; ?> ><?php echo __('Reklama') ?></option>
<option value="3" <?php if($ads_tracker_platform->getPlatformType()==3): ?> selected="selected" <?php endif; ?> ><?php echo __('Własne') ?></option>
</select>
<?php endif; ?>
<?php else: ?>
<?php if($ads_tracker_platform->getPlatformType()==1): ?><?php echo __('Wejścia bezpośrednie') ?><?php endif; ?>
<?php if($ads_tracker_platform->getPlatformType()==2): ?><?php echo __('Reklama') ?><?php endif; ?>
<?php if($ads_tracker_platform->getPlatformType()==3): ?><?php echo __('Własne') ?><?php endif; ?>
<?php if($ads_tracker_platform->getPlatformType()==4): ?><?php echo __('Porównywarki') ?><?php endif; ?>
<?php if($ads_tracker_platform->getPlatformType()==5): ?><?php echo __('Reklamy Google') ?><?php endif; ?>
<?php if($ads_tracker_platform->getPlatformType()==6): ?><?php echo __('Reklamy Facebooka') ?><?php endif; ?>
<?php endif; ?>

View File

@@ -0,0 +1,4 @@
<?php echo $ads_tracker_list->getId() ?>

View File

@@ -0,0 +1,41 @@
<?php
$cookie_array = json_decode($ads_tracker_debug->getCookie());
?>
<table class="st_record_list" width="100%" cellspacing="0">
<thead>
<tr>
<th style="width: 105px;">Utworzono</th>
<th>Reklama</th>
<th>Wejść</th>
</tr>
</thead>
<tbody>
<?php foreach ($cookie_array as $ads):
$fullurl = "appAdsTrackerBackend/edit?id=".$ads->ads_id;
?>
<tr>
<td><?php echo $ads->ads_create ?></td>
<td style="text-align: left">
<a href="<?php echo st_url_for($fullurl) ?>"><img src="/images/backend/icons/view.png" title="Podgląd" class="tooltip" style="top: 4px;position: relative;"></a>
<?php
if(appAdsTracker::getFullAdsName($ads->ads_id)){
echo appAdsTracker::getFullAdsName($ads->ads_id);
}else{
echo $ads->ads_id."/".$ads->ads_path;
}
?>
</td>
<td><?php echo $ads->ads_entering ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<pre>
<?php // print_r($cookie_array); ?>
</pre>

View File

@@ -0,0 +1,105 @@
<?php
if($ads_tracker_debug->getIp()!="" && $ads_tracker_debug->getIp()!="217.168.136.34"){
$c = new Criteria();
$c->add(AdsTrackerDebugPeer::IP , $ads_tracker_debug->getIp());
//$c->add(AdsTrackerDebugPeer::CREATED_AT , $ads_tracker_debug->getCreatedAt(), Criteria::LESS_EQUAL);
$c->addDescendingOrderByColumn(AdsTrackerDebugPeer::CREATED_AT);
$adsTrackerDebug = AdsTrackerDebugPeer::doSelect($c);
if($adsTrackerDebug){
?>
<table class="st_record_list" width="100%" cellspacing="0">
<thead>
<tr>
<th style="width: 105px;">Utworzono</th>
<th>Reklama</th>
<th>Debug</th>
</tr>
</thead>
<tbody>
<?php
foreach ($adsTrackerDebug as $ads_tracker_debug):
$name = "";
$group = "";
if($ads_tracker_debug->getAdsTrackerList()->getAdsName()!=""){
$name = " / ".$ads_tracker_debug->getAdsTrackerList()->getAdsName();
}
if($ads_tracker_debug->getAdsTrackerList()->getAdsGroup()!=""){
$group = " / ".$ads_tracker_debug->getAdsTrackerList()->getAdsGroup();
}
$fullname = $ads_tracker_debug->getAdsTrackerList()->getId()." / ".$ads_tracker_debug->getAdsTrackerList()->getAdsTrackerPlatform()->getAdsName()." - ".$ads_tracker_debug->getAdsTrackerList()->getAdsTrackerCampaign()->getAdsName().$group.$name;
$fullurl = "appAdsTrackerBackend/edit?id=".$ads_tracker_debug->getAdsTrackerList()->getId();
$fullurldebug = "appAdsTrackerBackend/adsTrackerDebugEdit?id=".$ads_tracker_debug->getId();
?>
<tr>
<td>
<?php echo $ads_tracker_debug->getCreatedAt(); ?>
</td>
<td style="text-align: left">
<a href="<?php echo st_url_for($fullurl) ?>">
<img src="/images/backend/icons/view.png" title="Podgląd" class="tooltip" style="top: 4px;position: relative;">
</a>
<?php echo $fullname ?>
</td>
<td>
<a href="<?php echo st_url_for($fullurldebug) ?>">
<img src="/images/backend/icons/view.png" title="Podgląd" class="tooltip" style="top: 4px;position: relative;">
</a>
</td>
</tr>
<?php
endforeach;
?>
</tbody>
</table>
<?php
}else{
echo "Brak wejść z adresu zamówienia: ".$ads_tracker_debug->getIp();
}
}else{
if($order->getRemoteAddress()=="217.168.136.34"){
echo "Pominięte dla SOTE IP";
}else{
echo "Brak adresu IP w zamówieniu";
}
}
?>

View File

@@ -0,0 +1,38 @@
<!-- The text field -->
<input type="text" style="width:550px;background-color: #eee;" value="<?php echo $ads_tracker_list->getUrlHash(); ?>" readonly id="myInput">
<!-- The button used to copy the text -->
<span style="display: inline-block;border: 1px solid #ccc;background-color: #eee; padding: 2px 10px;cursor: pointer;" onclick="copyToClipboard('#params_link')"><?php echo __('Skopiuj link') ?></span>
<span style="display: inline-block;border: 1px solid #ccc;background-color: #eee; padding: 2px 10px;cursor: pointer;" onclick="copyToClipboard('#params')"><?php echo __('Skopiuj parametr') ?></span>
<?php
$params = explode("?", $ads_tracker_list->getUrlHash());
$params = $params[1];
?>
<div style="display: none;" id="params_link"><?php echo $ads_tracker_list->getUrlHash() ?></div>
<div style="display: none;" id="params"><?php echo $params ?></div>
<script type="text/javascript">
function copyToClipboard(element) {
jQuery(function($) {
$('#myInput').fadeOut(250).fadeIn(250);
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(element).html()).select();
document.execCommand("copy");
$temp.remove();
});
}
</script>

View File

@@ -0,0 +1,331 @@
<?php use_helper('Object', 'Validation', 'ObjectAdmin', 'I18N', 'Date', 'VisualEffect', 'stAdminGenerator') ?>
<?php echo st_admin_get_viewport_force_width(); ?>
<?php echo st_get_admin_head('appAdsTrackerPlugin', __('Raport wejść kampanii')) ?>
<?php st_view_slot_start('application-menu') ?>
<?php st_include_component('appAdsTrackerBackend', 'listMenu') ?>
<?php st_view_slot_end() ?>
<?php st_include_partial('stAdminGenerator/message'); ?>
<script type="text/javascript" src="/js/backend/chart.min.js"></script>
<style>
.list_filters select, .list_filters input {
vertical-align: middle;
}
#filters_from_date, #filters_to_date {
width: 100px;
}
#date-filters {
display: inline-block;
}
#date-filters li {
display: inline-block;
}
</style>
<div id="sf_admin_content">
<form id="filter-campaign" action="<?php echo url_for('appAdsTrackerBackend/adsTrackerCampaignEnteringStats') ?>" method="post" style="margin-bottom: 10px">
<div class="list_filters">
<?php
// echo "<pre>";
// print_r($filters);
// echo "</pre>";
?>
<ul class="header">
<li>
<label><?php echo __("Zakres") ?></label>
<div id="filters_period">
<select id="filters_period_select" name="filters[period]">
<?php foreach ($periods as $period => $label): ?>
<option value="<?php echo $period ?>" <?php if ($filters['period']==$period): ?>selected<?php endif; ?>><?php echo appAdsTracker::langFilter($label) ?></option>
<?php endforeach ?>
</select>
</div>
</li>
<li>
<label><?php echo __("Zakres dat") ?></label>
<?php echo input_date_tag('filters[from_date]', $from_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))); ?>
-
<?php echo input_date_tag('filters[to_date]', $to_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))) ?>
</li>
<li class="filter-control">
<label>&nbsp;</label>
<button class="button button-search no-label with-icon" type="submit">
<span class="svg-icon svg-icon-search" style="-webkit-mask-image: url(/images/backend/icons/svg/search.svg?v=2); mask-image: url(/images/backend/icons/svg/search.svg?v=2); " title=""></span>
</button>
</li>
</ul>
<div class="clr" style="margin-bottom: 15px;"></div>
<?php asort($campaigns_1); ?>
<select name="filters[platform_campaign_1]" id="ads_tracker_list_platform_campaign_1" style="margin-top:5px;display: block;float: left;">
<?php
foreach ($campaigns_1 as $key => $value): ?>
<option value="<?php echo $key; ?>" <?php
if (@$selected_1== $key): ?> selected="selected"<?php endif; ?>><?php echo appAdsTracker::langFilter($value); ?></option>
<?php endforeach; ?>
</select>
<span style="margin-top: 8px;display: inline-block;">&nbsp;&nbsp;&nbsp;<?php echo __("porównaj z") ?>&nbsp;&nbsp;&nbsp;</span>
<?php asort($campaigns_2); ?>
<select name="filters[platform_campaign_2]" id="ads_tracker_list_platform_campaign_2" style="margin-top:5px;display: block;float: left;">
<option value="none" <?php
if (@$selected_2== "none"): ?> selected="selected"<?php endif; ?>> -- <?php echo __("Wybierz kampanie") ?> -- </option>
<?php
foreach ($campaigns_2 as $key => $value): ?>
<option value="<?php echo $key; ?>" <?php
if (@$selected_2== $key): ?> selected="selected"<?php endif; ?>><?php echo appAdsTracker::langFilter($value); ?></option>
<?php endforeach; ?>
</select>
<div class="clr"></div>
</div>
</form>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<div class="chart-container" style="position: relative; width: 100%; height: 270px">
<canvas id="myChart1"></canvas>
</div>
<br>
<?php endif; ?>
<form id="record_list_form" class="admin_form">
<table class="st_record_list record_list" cellspacing="0" cellpadding="0" style="max-width: 500px;">
<thead>
<tr>
<th><?php echo __('Kampania') ?></th><th><?php echo __('Wejścia') ?></th><!--<th><?php echo __('Konwersje') ?></th><th><?php echo __('CTR') ?></th><th><?php echo __('Wartość brutto') ?></th><th><?php echo __('Średnia') ?></th><!-- <th><?php // echo __('Zamówienia') ?></th> -->
</tr>
</thead>
<?php
$change_range_brutto = 0;
$change_range_entering = 0;
foreach ($result['campaign'] as $campaign):
?>
<?php
if($campaign['total_brutto']>0){
$change_range_brutto = 1;
}
if($campaign['total_entering']>0){
$change_range_entering = 1;
}
?>
<tr>
<td><?php echo appAdsTracker::langFilter($campaign['name']) ?></td>
<td><?php echo $campaign['total_entering'] ?></td>
<!-- <td><?php echo $campaign['conversion'] ?></td>
<td><?php echo $campaign['ctr'] ?>%</td>
<td><?php echo $campaign['total_brutto'] ?></td>
<td><?php echo $campaign['total_brutto_median'] ?></td>-->
<!-- <td><?php // echo $campaign['order_ids'] ?></td> -->
</tr>
<?php endforeach; ?>
</table>
</form>
<?php
// echo "<pre>";
// print_r($result);
// echo "</pre>";
?>
<?php
$chart_labels = json_encode(array_values($result['chart']['labels']));
$chart_data = json_encode(array_values($result['chart']['dates']));
?>
<script>
jQuery(function($) {
$('#filters_from_date, #filters_to_date').click(function() {
console.log("wybrano custom");
$("#filters_period_select").val("custom");
$("#filters_period_select").trigger('chosen:update');
});
$('#ads_tracker_list_platform_campaign_1').on('change',function() {
$('#filter-campaign').submit();
});
$('#ads_tracker_list_platform_campaign_2').on('change',function() {
$('#filter-campaign').submit();
});
});
</script>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<script>
jQuery(function($) {
<?php
$i=0;
foreach ($result['chart']['campaign'] as $key => $value):
?>
var quantites<?php echo $i ?> = <?php echo json_encode(array_values($value['count'])); ?>
<?php
$i++;
endforeach;
?>
var chart_dates = <?php echo $chart_data ?>;
// wejścia
var chart = $("#myChart1");
var data = {
labels: <?php echo $chart_labels ?>,
datasets: [
<?php foreach ($result['chart']['campaign'] as $key => $value): ?>
{
label: "<?php echo appAdsTracker::langFilter($key) ?>",
fill: false,
lineTension: 0.1,
backgroundColor: "<?php echo '#'.$value['color'] ?>",
borderColor: "<?php echo '#'.$value['color'] ?>",
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderColor: "<?php echo '#'.$value['color'] ?>",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "<?php echo '#'.$value['color'] ?>",
pointHoverBorderColor: "rgba(220,220,220,1)",
pointHoverBorderWidth: 2,
pointRadius: 3,
pointHitRadius: 10,
pointStyle: "circle",
data: <?php echo json_encode(array_values($value['entering'])); ?>,
},
<?php endforeach; ?>
]
};
var options = {
responsive: true,
maintainAspectRatio: false,
legend: { display: true },
tooltips: {
enabled: true,
mode: 'single',
callbacks: {
label: function(tooltipItems, data2) {
return "<?php echo __('wejść') ?>: "+tooltipItems.yLabel;
},
title: function(tooltipItems, data2) {
return chart_dates[tooltipItems[0].index];
}
}
},
scales: {
xAxes: [{
barPercentage: 0.5,
maxBarThickness: 120,
}],
yAxes: [{
ticks: {
mirror: false,
beginAtZero:true,
<?php if($change_range_entering == 0): ?>
stepSize: 50,
<?php endif; ?>
userCallback: function(value, index, values) {
value = Number(value);
return value;
}
},
afterDataLimits(scale) {
if(scale.max==1){
scale.max = 10;
}else{
var my_y = scale.max*0.2;
scale.max += my_y;
}
}
}]
},
title: {
display: true,
text: '<?php echo __('Raport wejść') ?>'
}
}
var myLineChart = new Chart(chart.get(0), {
type: 'bar',
data: data,
options: options
});
});
</script>
<?php endif; ?>
</div>
<?php echo st_get_admin_foot() ?>

View File

@@ -0,0 +1,485 @@
<?php use_helper('Object', 'Validation', 'ObjectAdmin', 'I18N', 'Date', 'VisualEffect', 'stAdminGenerator') ?>
<?php echo st_get_admin_head('appAdsTrackerPlugin', __('Raport kampanii')) ?>
<?php echo st_admin_get_viewport_force_width(); ?>
<?php st_view_slot_start('application-menu') ?>
<?php st_include_component('appAdsTrackerBackend', 'listMenu') ?>
<?php st_view_slot_end() ?>
<?php st_include_partial('stAdminGenerator/message'); ?>
<script type="text/javascript" src="/js/backend/chart.min.js"></script>
<style>
.list_filters select, .list_filters input {
vertical-align: middle;
}
#filters_from_date, #filters_to_date {
width: 100px;
}
#date-filters {
display: inline-block;
}
#date-filters li {
display: inline-block;
}
</style>
<div id="sf_admin_content">
<form id="filter-campaign" action="<?php echo url_for('appAdsTrackerBackend/adsTrackerCampaignStats') ?>" method="post" style="margin-bottom: 10px">
<div class="list_filters">
<?php
// echo "<pre>";
// print_r($filters);
// echo "</pre>";
?>
<ul class="header">
<li>
<label><?php echo __("Zakres") ?></label>
<div id="filters_period">
<select id="filters_period_select" name="filters[period]">
<?php foreach ($periods as $period => $label): ?>
<option value="<?php echo $period ?>" <?php if ($filters['period']==$period): ?>selected<?php endif; ?>><?php echo appAdsTracker::langFilter($label) ?></option>
<?php endforeach ?>
</select>
</div>
</li>
<li>
<label><?php echo __("Zakres dat") ?></label>
<?php echo input_date_tag('filters[from_date]', $from_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))); ?>
-
<?php echo input_date_tag('filters[to_date]', $to_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))) ?>
</li>
<li class="filter-control">
<label>&nbsp;</label>
<button class="button button-search no-label with-icon" type="submit">
<span class="svg-icon svg-icon-search" style="-webkit-mask-image: url(/images/backend/icons/svg/search.svg?v=2); mask-image: url(/images/backend/icons/svg/search.svg?v=2); " title=""></span>
</button>
</li>
</ul>
<div class="clr" style="margin-bottom: 15px;"></div>
<?php asort($campaigns_1); ?>
<select name="filters[platform_campaign_1]" id="ads_tracker_list_platform_campaign_1" style="margin-top:5px;display: block;float: left;">
<?php
foreach ($campaigns_1 as $key => $value): ?>
<option value="<?php echo $key; ?>" <?php
if (@$selected_1== $key): ?> selected="selected"<?php endif; ?>><?php echo appAdsTracker::langFilter($value); ?></option>
<?php endforeach; ?>
</select>
<span style="margin-top: 8px;display: inline-block;">&nbsp;&nbsp;&nbsp;<?php echo __("porównaj z") ?>&nbsp;&nbsp;&nbsp;</span>
<?php asort($campaigns_2); ?>
<select name="filters[platform_campaign_2]" id="ads_tracker_list_platform_campaign_2" style="margin-top:5px;display: block;float: left;">
<option value="none" <?php
if (@$selected_2== "none"): ?> selected="selected"<?php endif; ?>> -- <?php echo __("Wybierz kampanie") ?> -- </option>
<?php
foreach ($campaigns_2 as $key => $value): ?>
<option value="<?php echo $key; ?>" <?php
if (@$selected_2== $key): ?> selected="selected"<?php endif; ?>><?php echo appAdsTracker::langFilter($value); ?></option>
<?php endforeach; ?>
</select>
<div class="clr"></div>
</div>
</form>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<div class="chart-container" style="position: relative; width: 100%; height: 270px">
<canvas id="myChart1"></canvas>
</div>
<br>
<?php endif; ?>
<form id="record_list_form" class="admin_form">
<table class="st_record_list record_list" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th><?php echo __('Kampania') ?></th><th><?php echo __('Wejścia') ?></th><th><?php echo __('Konwersje') ?></th><th><?php echo __('CTR') ?></th><th><?php echo __('Wartość brutto') ?></th><th><?php echo __('Średnia') ?></th><!-- <th><?php // echo __('Zamówienia') ?></th> -->
</tr>
</thead>
<?php
$change_range_brutto = 0;
$change_range_entering = 0;
foreach ($result['campaign'] as $campaign):
?>
<?php
if($campaign['total_brutto']>0){
$change_range_brutto = 1;
}
if($campaign['total_entering']>0){
$change_range_entering = 1;
}
?>
<tr>
<td><?php echo appAdsTracker::langFilter($campaign['name']) ?></td>
<td><?php echo $campaign['total_entering'] ?></td>
<td><?php echo $campaign['conversion'] ?></td>
<td><?php echo $campaign['ctr'] ?>%</td>
<td><?php echo $campaign['total_brutto'] ?></td>
<td><?php echo $campaign['total_brutto_median'] ?></td>
<!-- <td><?php // echo $campaign['order_ids'] ?></td> -->
</tr>
<?php endforeach; ?>
</table>
</form>
<?php
// echo "<pre>";
// print_r($result);
// echo "</pre>";
?>
<?php
$chart_labels = json_encode(array_values($result['chart']['labels']));
$chart_data = json_encode(array_values($result['chart']['dates']));
?>
<script>
jQuery(function($) {
$('#filters_from_date, #filters_to_date').click(function() {
console.log("wybrano custom");
$("#filters_period_select").val("custom");
$("#filters_period_select").trigger('chosen:update');
});
$('#ads_tracker_list_platform_campaign_1').on('change',function() {
$('#filter-campaign').submit();
});
$('#ads_tracker_list_platform_campaign_2').on('change',function() {
$('#filter-campaign').submit();
});
});
</script>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<script>
jQuery(function($) {
<?php
$i=0;
foreach ($result['chart']['campaign'] as $key => $value):
?>
var quantites<?php echo $i ?> = <?php echo json_encode(array_values($value['count'])); ?>
<?php
$i++;
endforeach;
?>
var chart_dates = <?php echo $chart_data ?>;
var display_type = "day";
var chart = $("#myChart1");
var data = {
labels: <?php echo appAdsTracker::langFilter($chart_labels) ?>,
datasets: [
<?php foreach ($result['chart']['campaign'] as $key => $value): ?>
{
label: "<?php echo appAdsTracker::langFilter($key) ?>",
fill: false,
lineTension: 0.1,
backgroundColor: "<?php echo '#'.$value['color'] ?>",
borderColor: "<?php echo '#'.$value['color'] ?>",
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderColor: "<?php echo '#'.$value['color'] ?>",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "<?php echo '#'.$value['color'] ?>",
pointHoverBorderColor: "rgba(220,220,220,1)",
pointHoverBorderWidth: 2,
pointRadius: 3,
pointHitRadius: 10,
pointStyle: "circle",
data: <?php echo json_encode(array_values($value['amount'])); ?>,
},
<?php endforeach; ?>
]
};
var options = {
hover: {
onHover: function(data) {
if (display_type == "month") {
if (data.length && quantites[data[0]._index] > 0) {
chart.css({ cursor: 'pointer' });
} else {
chart.css({ cursor: 'default' });
}
}
}
},
onClick: function(e) {
if (display_type == "month") {
var elements = this.getElementsAtEvent(e);
if (elements.length && quantites[elements[0]._index] > 0) {
window.location = chart.closest('form').attr('action')+'?filters[filter_order_status]='+$('#filters_filter_order_status').val()+'&filters[expand_date]='+chart_dates[elements[0]._index];
}
}
},
responsive: true,
maintainAspectRatio: false,
legend: { display: true },
tooltips: {
enabled: true,
mode: 'single',
callbacks: {
beforeLabel: function(tooltipItems, data) {
if(tooltipItems.datasetIndex==0){
return "<?php echo __('ilość zamówień') ?>: "+quantites0[tooltipItems.index];
}
if(tooltipItems.datasetIndex==1){
return "<?php echo __('ilość zamówień') ?>: "+quantites1[tooltipItems.index];
}
},
label: function(tooltipItems, data) {
return "<?php echo __('brutto') ?>: "+tooltipItems.yLabel + ' PLN';
},
title: function(tooltipItems, data) {
return chart_dates[tooltipItems[0].index];
}
}
},
scales: {
xAxes: [{
barPercentage: 0.5,
maxBarThickness: 120,
}],
yAxes: [{
ticks: {
mirror: false,
<?php if($change_range_brutto == 0): ?>
stepSize: 50,
<?php endif; ?>
beginAtZero:true,
userCallback: function(value, index, values) {
value = Number(value);
return (options.scales.yAxes[0].ticks.stepSize == 1 || value > 10 || value == 0 ? value.toFixed(0) : value.toFixed(1)) + ' PLN';
}
},
afterDataLimits(scale) {
if(scale.max==1){
scale.max = 100;
}else{
var my_y = scale.max*0.2;
scale.max += my_y;
}
}
}]
},
title: {
display: true,
text: '<?php echo __('Raport sprzedaży') ?>'
}
}
var myLineChart = new Chart(chart.get(0), {
type: 'bar',
data: data,
options: options
});
// wejścia
/* var chart = $("#myChart2");
var data2 = {
labels: <?php echo $chart_labels ?>,
datasets: [
<?php foreach ($result['chart']['campaign'] as $key => $value): ?>
{
label: "<?php echo appAdsTracker::langFilter($key) ?>",
fill: false,
lineTension: 0.1,
backgroundColor: "<?php echo '#'.$value['color'] ?>",
borderColor: "<?php echo '#'.$value['color'] ?>",
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderColor: "<?php echo '#'.$value['color'] ?>",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "<?php echo '#'.$value['color'] ?>",
pointHoverBorderColor: "rgba(220,220,220,1)",
pointHoverBorderWidth: 2,
pointRadius: 3,
pointHitRadius: 10,
pointStyle: "circle",
data: <?php echo json_encode(array_values($value['entering'])); ?>,
},
<?php endforeach; ?>
]
};
var options2 = {
hover: {
onHover: function(data) {
if (display_type == "month") {
if (data.length && quantites[data[0]._index] > 0) {
chart.css({ cursor: 'pointer' });
} else {
chart.css({ cursor: 'default' });
}
}
}
},
onClick: function(e) {
if (display_type == "month") {
var elements = this.getElementsAtEvent(e);
if (elements.length && quantites[elements[0]._index] > 0) {
window.location = chart.closest('form').attr('action')+'?filters[filter_order_status]='+$('#filters_filter_order_status').val()+'&filters[expand_date]='+chart_dates[elements[0]._index];
}
}
},
responsive: false,
maintainAspectRatio: true,
legend: { display: true },
tooltips: {
enabled: true,
mode: 'single',
callbacks: {
label: function(tooltipItems, data2) {
return "<?php echo __('wejść') ?>: "+tooltipItems.yLabel;
},
title: function(tooltipItems, data2) {
return chart_dates[tooltipItems[0].index];
}
}
},
scales: {
xAxes: [{
barPercentage: 0.5,
maxBarThickness: 120,
}],
yAxes: [{
ticks: {
mirror: true,
beginAtZero:true,
<?php if($change_range_entering == 0): ?>
stepSize: 50,
<?php endif; ?>
userCallback: function(value, index, values) {
value = Number(value);
return value;
}
},
afterDataLimits(scale) {
if(scale.max==1){
scale.max = 10;
}else{
var my_y = scale.max*0.2;
scale.max += my_y;
}
}
}]
},
title: {
display: true,
text: '<?php echo __('Raport wejść') ?>'
}
}
var myLineChart = new Chart(chart.get(0), {
type: 'bar',
data: data2,
options: options2
});*/
});
</script>
<?php endif; ?>
</div>
<?php echo st_get_admin_foot() ?>

View File

@@ -0,0 +1,245 @@
<?php
use_helper('I18N', 'stAdminGenerator', 'stJQueryTools','stCurrency', 'stOrder', 'stPrice', 'stJQueryTools', 'stProductImage', 'stDiscount','Validation', 'stDate');
sfLoader::loadHelpers('stProduct', 'stProduct');
echo st_admin_get_viewport_force_width();
?>
<?php echo st_get_admin_head('appAdsTrackerPlugin', __('Raport odsłon')) ?>
<?php st_view_slot_start('application-menu') ?>
<?php st_include_component('appAdsTrackerBackend', 'listMenu') ?>
<?php st_view_slot_end() ?>
<?php st_include_partial('stAdminGenerator/message'); ?>
<script type="text/javascript" src="/js/backend/chart.min.js"></script>
<style>
.list_filters select, .list_filters input {
vertical-align: middle;
}
#filters_from_date, #filters_to_date {
width: 100px;
}
#date-filters {
display: inline-block;
}
#date-filters li {
display: inline-block;
}
</style>
<div id="sf_admin_content" style="margin-top: 5px;">
<?php
$datetime1 = date_create($from_date);
$datetime2 = date_create($to_date);
$interval = date_diff($datetime1, $datetime2);
?>
<form action="<?php echo url_for('appAdsTrackerBackend/adsTrackerInfoStats') ?>" method="post" style="margin-bottom: 10px">
<div class="list_filters">
<?php
/*echo "<pre>";
print_r($filters);
echo "</pre>";*/
?>
<input type="hidden" value="<?php echo $filters['ads_id'] ?>" name="filters[ads_id]"/>
<div class="clr"></div>
<ul class="header">
<li>
<div id="filters_period">
<label><?php echo __("Zakres") ?></label>
<select id="filters_period_select" name="filters[period]">
<?php foreach ($periods as $period => $label): ?>
<option value="<?php echo $period ?>" <?php if($filters['period']==$period): ?>selected<?php endif; ?>><?php echo $label ?></option>
<?php endforeach ?>
</select>
</div>
</li>
<li>
<label><?php echo __("Zakres dat") ?></label>
<?php echo input_date_tag('filters[from_date]', $from_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))); ?>
-
<?php echo input_date_tag('filters[to_date]', $to_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))) ?>
</li>
<li class="filter-control">
<label>&nbsp;</label>
<button class="button button-search no-label with-icon" type="submit">
<span class="svg-icon svg-icon-search" style="-webkit-mask-image: url(/images/backend/icons/svg/search.svg?v=2); mask-image: url(/images/backend/icons/svg/search.svg?v=2); " title=""></span>
</button>
</li>
</ul>
<div class="clr"></div>
</div>
</form>
<div class="chart-container" style="position: relative; width: 100%; height: 270px">
<canvas id="myChart1"></canvas>
</div>
<?php
// echo "<pre>";
// print_r($result);
// echo "</pre>";
?>
<?php
$chart_labels = json_encode(array_values($result['chart']['labels']));
$chart_data = json_encode(array_values($result['chart']['dates']));
?>
<script>
jQuery(function($) {
$('#trigger_filters_from_date, #trigger_filters_to_date').click(function() {
console.log("wybrano custom");
$("#filters_period_select").val("custom");
});
});
</script>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<script>
jQuery(function($) {
var chart_dates = <?php echo $chart_data ?>;
var display_type = "day";
var chart = $("#myChart");
var data = {
labels: <?php echo appAdsTracker::langFilter($chart_labels) ?>,
datasets: [
<?php foreach ($result['chart']['ads'] as $key => $value): ?>
{
// <?php
$value['color'] = appAdsTracker::random_color();
// echo "<pre>";
// print_r($value);
// echo "</pre>";
//
// ?>
label: "<?php echo appAdsTracker::langFilter(appAdsTracker::getFullAdsName($filters['ads_id'])) ?>",
fill: false,
lineTension: 0.1,
backgroundColor: "<?php echo '#'.$value['color'] ?>",
borderColor: "<?php echo '#'.$value['color'] ?>",
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderColor: "<?php echo '#'.$value['color'] ?>",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "<?php echo '#'.$value['color'] ?>",
pointHoverBorderColor: "rgba(220,220,220,1)",
pointHoverBorderWidth: 2,
pointRadius: 3,
pointHitRadius: 10,
pointStyle: "circle",
data: <?php echo json_encode(array_values($value['entering'])); ?>,
},
<?php endforeach; ?>
]
};
var options = {
responsive: true,
maintainAspectRatio: false,
legend: { display: true },
tooltips: {
enabled: true,
mode: 'single',
callbacks: {
label: function(tooltipItems, data) {
return "Ilość wejść: "+tooltipItems.yLabel;
},
title: function(tooltipItems, data) {
return chart_dates[tooltipItems[0].index];
}
}
},
scales: {
xAxes: [{
barPercentage: 0.5,
maxBarThickness: 120,
}],
yAxes: [{
ticks: {
beginAtZero:true,
mirror: true,
beginAtZero:true,
stepSize: 50,
userCallback: function(value, index, values) {
value = Number(value);
return value;
}
},
afterDataLimits(scale) {
var my_y = scale.max*0.2;
scale.max += my_y;
}
}]
}
}
var myLineChart = new Chart(chart.get(0), {
type: 'bar',
data: data,
options: options
});
});
</script>
<?php endif; ?>
</div>
<?php echo st_get_admin_foot() ?>

View File

@@ -0,0 +1,357 @@
<?php
use_helper('I18N', 'stAdminGenerator', 'stJQueryTools','stCurrency', 'stOrder', 'stPrice', 'stJQueryTools', 'stProductImage', 'stDiscount','Validation', 'stDate');
sfLoader::loadHelpers('stProduct', 'stProduct');
echo st_admin_get_viewport_force_width();
?>
<?php echo st_get_admin_head('appAdsTrackerPlugin', __('Raport wejść')) ?>
<?php st_view_slot_start('application-menu') ?>
<?php st_include_component('appAdsTrackerBackend', 'listMenu') ?>
<?php st_view_slot_end() ?>
<?php st_include_partial('stAdminGenerator/message'); ?>
<script type="text/javascript" src="/js/backend/chart.min.js"></script>
<style>
.list_filters select, .list_filters input {
vertical-align: middle;
}
#filters_from_date, #filters_to_date {
width: 100px;
}
#date-filters {
display: inline-block;
}
#date-filters li {
display: inline-block;
}
</style>
<div id="sf_admin_content" style="margin-top: 5px;">
<?php
$datetime1 = date_create($from_date);
$datetime2 = date_create($to_date);
$interval = date_diff($datetime1, $datetime2);
?>
<form id="filter-platform" action="<?php echo url_for('appAdsTrackerBackend/adsTrackerPlatformEnteringStats') ?>" method="post" style="margin-bottom: 10px">
<div class="list_filters">
<?php
//echo "<pre>";
//print_r($filters);
//echo "</pre>";
?>
<ul class="header">
<li>
<div id="filters_period">
<label><?php echo __("Zakres") ?></label>
<select id="filters_period_select" name="filters[period]">
<?php foreach ($periods as $period => $label): ?>
<option value="<?php echo $period ?>" <?php if($filters['period']==$period): ?>selected<?php endif; ?>><?php echo $label ?></option>
<?php endforeach ?>
</select>
</div>
</li>
<li>
<label><?php echo __("Zakres dat") ?></label>
<?php echo input_date_tag('filters[from_date]', $from_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))); ?>
-
<?php echo input_date_tag('filters[to_date]', $to_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))) ?>
</li>
<li class="filter-control">
<label>&nbsp;</label>
<button class="button button-search no-label with-icon" type="submit">
<span class="svg-icon svg-icon-search" style="-webkit-mask-image: url(/images/backend/icons/svg/search.svg?v=2); mask-image: url(/images/backend/icons/svg/search.svg?v=2); " title=""></span>
</button>
</li>
</ul>
<div class="clr" style="margin-bottom: 15px;"></div>
<?php echo "Platformy" ?>
<ul class="sf_admin_checklist" style="margin-bottom: 15px;">
<?php
foreach ($platforms as $platform_id => $platform_label ): ?>
<?php
if ( @$filters['platform'][$platform_label] == $platform_id) {
$checked = 1;
} else {
$checked = 0;
}
?>
<li style="margin-right: 30px;">
<?php echo st_admin_checkbox_tag('filters[platform]['.$platform_label.']', $platform_id, $checked, array("class"=>"platform-checkbox")); ?> <?php echo label_for('filters[platform]['.$platform_label.']', appAdsTracker::langFilter($platform_label)) ?>
</li>
<?php endforeach ?>
</ul>
<div class="clr"></div>
</div>
</form>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<div class="chart-container" style="position: relative; width: 100%; height: 270px">
<canvas id="myChart1"></canvas>
</div>
<br>
<?php endif; ?>
<form id="record_list_form" class="admin_form">
<table class="st_record_list record_list" cellspacing="0" cellpadding="0" style="max-width: 500px;">
<thead>
<tr>
<th><?php echo __('Platforma') ?></th><th><?php echo __('Wejścia') ?></th>
</tr>
</thead>
<?php
$change_range_brutto = 0;
$change_range_entering = 0;
$sum_total_entering = 0;
$sum_conversion = 0;
$sum_total_brutto = 0;
foreach ($result['platform'] as $platform):
?>
<?php
if($platform['total_brutto']>0){
$change_range_brutto = 1;
}
if($platform['total_entering']>0){
$change_range_entering = 1;
}
$sum_total_entering += $platform['total_entering'];
$sum_conversion += $platform['conversion'];
$sum_total_brutto += $platform['total_brutto'];
?>
<tr>
<td><?php echo appAdsTracker::langFilter($platform['name']) ?></td>
<td><?php echo $platform['total_entering'] ?></td>
</tr>
<?php endforeach; ?>
<tfoot>
<tr style="background: #f1f1f1; font-weight: bold;">
<td style="font-weight: bold;"><?php echo __('Razem') ?></td>
<td style="font-weight: bold;"><?php echo $sum_total_entering ?></td>
</tr>
</tfoot>
</table>
</form>
<?php
// echo "<pre>";
// print_r($result);
// echo "</pre>";
?>
<?php
$chart_labels = json_encode(array_values($result['chart']['labels']));
$chart_data = json_encode(array_values($result['chart']['dates']));
?>
<script>
jQuery(function($) {
$('#filters_from_date, #filters_to_date').click(function() {
console.log("wybrano custom");
$("#filters_period_select").val("custom");
$("#filters_period_select").trigger('chosen:update');
});
$('.platform-checkbox').on('change',function() {
$('#filter-platform').submit();
});
});
</script>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<script>
jQuery(function($) {
var y_label_char = 0;
<?php
$i=0;
foreach ($result['chart']['platform'] as $key => $value):
?>
var quantites<?php echo $i ?> = <?php echo json_encode(array_values($value['count'])); ?>
<?php
$i++;
endforeach;
?>
var chart_dates = <?php echo $chart_data ?>;
// wejścia
var chart = $("#myChart1");
var data = {
labels: <?php echo $chart_labels ?>,
datasets: [
<?php foreach ($result['chart']['platform'] as $key => $value): ?>
{
label: "<?php echo appAdsTracker::langFilter($key) ?>",
fill: false,
lineTension: 0.1,
backgroundColor: "<?php echo '#'.$value['color'] ?>",
borderColor: "<?php echo '#'.$value['color'] ?>",
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderColor: "<?php echo '#'.$value['color'] ?>",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "<?php echo '#'.$value['color'] ?>",
pointHoverBorderColor: "rgba(220,220,220,1)",
pointHoverBorderWidth: 2,
pointRadius: 3,
pointHitRadius: 10,
pointStyle: "circle",
data: <?php echo json_encode(array_values($value['entering'])); ?>,
},
<?php endforeach; ?>
]
};
var options = {
responsive: true,
maintainAspectRatio: false,
legend: { display: true },
tooltips: {
enabled: true,
mode: 'single',
callbacks: {
label: function(tooltipItems, data2) {
return "<?php echo __('wejść') ?>: "+tooltipItems.yLabel;
},
title: function(tooltipItems, data2) {
return chart_dates[tooltipItems[0].index];
}
}
},
scales: {
xAxes: [{
stacked: true,
barPercentage: 0.5,
maxBarThickness: 120,
}],
yAxes: [{
stacked: true,
ticks: {
beginAtZero:true,
<?php if($change_range_entering == 0): ?>
stepSize: 50,
<?php endif; ?>
userCallback: function(value, index, values) {
value = Number(value);
return value;
}
},
afterDataLimits(scale) {
if(scale.max==1){
scale.max = 10;
}else{
var my_y = scale.max*0.2;
scale.max += my_y;
}
}
}]
},
title: {
display: true,
text: '<?php echo __('Raport wejść') ?>'
}
}
var myLineChart = new Chart(chart.get(0), {
type: 'bar',
data: data,
options: options
});
});
</script>
<?php endif; ?>
</div>
<?php echo st_get_admin_foot() ?>

View File

@@ -0,0 +1,383 @@
<?php
use_helper('I18N', 'stAdminGenerator', 'stJQueryTools','stCurrency', 'stOrder', 'stPrice', 'stJQueryTools', 'stProductImage', 'stDiscount','Validation', 'stDate');
sfLoader::loadHelpers('stProduct', 'stProduct');
echo st_admin_get_viewport_force_width();
?>
<?php echo st_get_admin_head('appAdsTrackerPlugin', __('Raport platformy')) ?>
<?php st_view_slot_start('application-menu') ?>
<?php st_include_component('appAdsTrackerBackend', 'listMenu') ?>
<?php st_view_slot_end() ?>
<?php st_include_partial('stAdminGenerator/message'); ?>
<script type="text/javascript" src="/js/backend/chart.min.js"></script>
<style>
.list_filters select, .list_filters input {
vertical-align: middle;
}
#filters_from_date, #filters_to_date {
width: 100px;
}
#date-filters {
display: inline-block;
}
#date-filters li {
display: inline-block;
}
</style>
<div id="sf_admin_content" style="margin-top: 5px;">
<?php
$datetime1 = date_create($from_date);
$datetime2 = date_create($to_date);
$interval = date_diff($datetime1, $datetime2);
?>
<form id="filter-platform" action="<?php echo url_for('appAdsTrackerBackend/adsTrackerPlatformStats') ?>" method="post" style="margin-bottom: 10px">
<div class="list_filters">
<?php
/*echo "<pre>";
print_r($filters);
echo "</pre>";*/
?>
<ul class="header">
<li>
<div id="filters_period">
<label><?php echo __("Zakres") ?></label>
<select id="filters_period_select" name="filters[period]">
<?php foreach ($periods as $period => $label): ?>
<option value="<?php echo $period ?>" <?php if($filters['period']==$period): ?>selected<?php endif; ?>><?php echo $label ?></option>
<?php endforeach ?>
</select>
</div>
</li>
<li>
<label><?php echo __("Zakres dat") ?></label>
<?php echo input_date_tag('filters[from_date]', $from_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))); ?>
-
<?php echo input_date_tag('filters[to_date]', $to_date, _parse_attributes(array (
'rich' => true,
'withtime' => false,
'culture' => $sf_user->getCulture(),
'calendar_button_img' => '/sf/sf_admin/images/date.png',
'readonly' => 'readonly',
'class' => 'filters_date_range',
))) ?>
</li>
<li class="filter-control">
<label>&nbsp;</label>
<button class="button button-search no-label with-icon" type="submit">
<span class="svg-icon svg-icon-search" style="-webkit-mask-image: url(/images/backend/icons/svg/search.svg?v=2); mask-image: url(/images/backend/icons/svg/search.svg?v=2); " title=""></span>
</button>
</li>
</ul>
<div class="clr" style="margin-bottom: 15px;"></div>
<?php echo "Platformy" ?>
<ul class="sf_admin_checklist" style="margin-bottom: 15px;">
<?php
foreach ($platforms as $platform_id => $platform_label ): ?>
<?php
if ( @$filters['platform'][$platform_label] == $platform_id) {
$checked = 1;
} else {
$checked = 0;
}
?>
<li style="margin-right: 30px;">
<?php echo st_admin_checkbox_tag('filters[platform]['.$platform_label.']', $platform_id, $checked, array("class"=>"platform-checkbox")); ?> <?php echo label_for('filters[platform]['.$platform_label.']', appAdsTracker::langFilter($platform_label)) ?>
</li>
<?php endforeach ?>
</ul>
<div class="clr"></div>
</div>
</form>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<div class="chart-container" style="position: relative; width: 100%; height: 270px">
<canvas id="myChart1"></canvas>
</div>
<br>
<?php endif; ?>
<form id="record_list_form" class="admin_form">
<table class="st_record_list record_list" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th><?php echo __('Platforma') ?></th><th><?php echo __('Wejścia') ?></th><th><?php echo __('Konwersje') ?></th><th><?php echo __('CTR') ?></th><th><?php echo __('Wartość brutto') ?></th><th><?php echo __('Średnia') ?></th><!-- <th><?php // echo __('Zamówienia') ?></th> -->
</tr>
</thead>
<?php
$change_range_brutto = 0;
$change_range_entering = 0;
$sum_total_entering = 0;
$sum_conversion = 0;
$sum_total_brutto = 0;
foreach ($result['platform'] as $platform):
?>
<?php
if($platform['total_brutto']>0){
$change_range_brutto = 1;
}
if($platform['total_entering']>0){
$change_range_entering = 1;
}
$sum_total_entering += $platform['total_entering'];
$sum_conversion += $platform['conversion'];
$sum_total_brutto += $platform['total_brutto'];
?>
<tr>
<td><?php echo appAdsTracker::langFilter($platform['name']) ?></td>
<td><?php echo $platform['total_entering'] ?></td>
<td><?php echo $platform['conversion'] ?></td>
<td><?php echo $platform['ctr'] ?>%</td>
<td><?php echo $platform['total_brutto'] ?></td>
<td><?php echo $platform['total_brutto_median'] ?></td>
<!-- <td><?php // echo $platform['order_ids'] ?></td> -->
</tr>
<?php endforeach; ?>
<tfoot>
<tr style="background: #f1f1f1; font-weight: bold;">
<td style="font-weight: bold;"><?php echo __('Razem') ?></td>
<td style="font-weight: bold;"><?php echo $sum_total_entering ?></td>
<td style="font-weight: bold;"><?php echo $sum_conversion ?></td>
<td style="font-weight: bold;"><?php if ($sum_conversion==""){ echo "0%"; }else{ echo round(($sum_conversion/$sum_total_entering)*100,'2')."%";} ?></td>
<td style="font-weight: bold;"><?php echo number_format($sum_total_brutto, 2, '.', ''); ?></td>
<td style="font-weight: bold;"><?php if ($sum_total_brutto=="") { echo "0"; } else { echo round($sum_total_brutto/$sum_conversion,'2');} ?></td>
<!-- <td><?php // echo $platform['order_ids'] ?></td> -->
</tr>
</tfoot>
</table>
</form>
<?php
// echo "<pre>";
// print_r($result);
// echo "</pre>";
?>
<?php
$chart_labels = json_encode(array_values($result['chart']['labels']));
$chart_data = json_encode(array_values($result['chart']['dates']));
?>
<script>
jQuery(function($) {
$('#filters_from_date, #filters_to_date').click(function() {
console.log("wybrano custom");
$("#filters_period_select").val("custom");
$("#filters_period_select").trigger('chosen:update');
});
$('.platform-checkbox').on('change',function() {
$('#filter-platform').submit();
});
});
</script>
<?php if (appAdsTracker::chartDisplayType($from_date, $to_date)!="none"): ?>
<script>
jQuery(function($) {
var y_label_char = 0;
<?php
$i=0;
foreach ($result['chart']['platform'] as $key => $value):
?>
var quantites<?php echo $i ?> = <?php echo json_encode(array_values($value['count'])); ?>
<?php
$i++;
endforeach;
?>
var chart_dates = <?php echo $chart_data ?>;
var display_type = "day";
var chart = $("#myChart1");
var data = {
labels: <?php echo appAdsTracker::langFilter($chart_labels) ?>,
datasets: [
<?php foreach ($result['chart']['platform'] as $key => $value): ?>
{
label: "<?php echo appAdsTracker::langFilter($key) ?>",
fill: false,
lineTension: 0.1,
backgroundColor: "<?php echo '#'.$value['color'] ?>",
borderColor: "<?php echo '#'.$value['color'] ?>",
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderColor: "<?php echo '#'.$value['color'] ?>",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "<?php echo '#'.$value['color'] ?>",
pointHoverBorderColor: "rgba(220,220,220,1)",
pointHoverBorderWidth: 2,
pointRadius: 3,
pointHitRadius: 10,
pointStyle: "circle",
data: <?php echo json_encode(array_values($value['amount'])); ?>,
},
<?php endforeach; ?>
]
};
var options = {
responsive: true,
maintainAspectRatio: false,
legend: { display: true },
tooltips: {
enabled: true,
mode: 'single',
callbacks: {
beforeLabel: function(tooltipItems, data) {
if(tooltipItems.datasetIndex==0){
return "<?php echo __('ilość zamówień') ?>: "+quantites0[tooltipItems.index];
}
if(tooltipItems.datasetIndex==1){
return "<?php echo __('ilość zamówień') ?>: "+quantites1[tooltipItems.index];
}
},
label: function(tooltipItems, data) {
return "<?php echo __('brutto') ?>: "+tooltipItems.yLabel + ' PLN';
},
title: function(tooltipItems, data) {
return chart_dates[tooltipItems[0].index];
}
}
},
scales: {
xAxes: [{
stacked: true,
barPercentage: 0.5,
maxBarThickness: 120,
}],
yAxes: [{
stacked: true,
ticks: {
mirror: false,
beginAtZero:true,
<?php if($change_range_brutto == 0): ?>
stepSize: 50,
<?php endif; ?>
userCallback: function(value, index, values) {
value = Number(value);
var ret = (options.scales.yAxes[0].ticks.stepSize == 1 || value > 10 || value == 0 ? value.toFixed(0) : value.toFixed(1)) + ' PLN';
return ret;
}
},
afterDataLimits(scale) {
if(scale.max==1){
scale.max = 100;
}else{
var my_y = scale.max*0.2;
scale.max += my_y;
}
}
}]
},
title: {
display: true,
text: '<?php echo __('Raport sprzedaży') ?>'
}
}
var myLineChart = new Chart(chart.get(0), {
type: 'bar',
data: data,
options: options
});
});
</script>
<?php endif; ?>
</div>
<?php echo st_get_admin_foot() ?>