Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
A
addcpm-json
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Александр Чаплыгин
addcpm-json
Commits
48d23c10
Commit
48d23c10
authored
Mar 24, 2020
by
Александр Чаплыгин
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Таблицы статистики по сайтам и регионам, формат данных, логика рендера
parent
e846e1a5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
912 additions
and
281 deletions
+912
-281
styles-amsystem.css
src/public/css/styles-amsystem.css
+109
-5
amsystem-campaign.js
src/public/js/adm/amsystem-campaign.js
+305
-32
CabinetAmSystem.php
src/src/App/Action/User/CabinetAmSystem.php
+7
-0
Statistics.php
src/src/App/Model/Statistics.php
+128
-4
campaign_item.phtml
src/templates/app/user/campaign_item.phtml
+363
-240
No files found.
src/public/css/styles-amsystem.css
View file @
48d23c10
...
...
@@ -13,6 +13,45 @@
min-height
:
300px
;
text-align
:
center
;
}
.switch-data
{
margin-bottom
:
20px
;
padding-bottom
:
10px
;
line-height
:
30px
;
border-bottom
:
1px
solid
#BCE8F1
;
}
.switch-item
{
padding
:
5px
;
border
:
1px
solid
#2E6DA4
;
color
:
#2E6DA4
;
border-radius
:
4px
;
cursor
:
pointer
;
}
.switch-item
:hover
{
color
:
#FFFFFF
;
background-color
:
#2E6DA4
;
}
.switch-item.selected
{
color
:
#FFFFFF
;
background-color
:
#2E6DA4
;
}
.form-group-data
{
display
:
none
;
}
.form-group-data.selected
{
display
:
block
;
}
.form-group
.form-control
{
...
...
@@ -236,13 +275,19 @@ table.campaign-banners tbody tr td {
textarea
#campaign-stat
,
textarea
#campaign-stat-total
,
textarea
#campaign-stat-cats
textarea
#campaign-stat-cats
,
textarea
#campaign-sites-stat
,
textarea
#campaign-regions-stat
,
textarea
#regions-codes
,
textarea
#cities-codes
{
display
:
none
;
}
.chart-graph-stat-info
,
.chart-graph-stat-error
.chart-graph-stat-error
,
.sites-stats-error
,
.regions-stats-error
{
display
:
none
;
padding-top
:
160px
;
...
...
@@ -259,7 +304,7 @@ textarea#campaign-stat-cats
/*
#table-stat
*/
.b-table_wrapp
.report
.b-table_wrapp
{
display
:
none
;
margin-top
:
30px
;
...
...
@@ -313,4 +358,63 @@ textarea#campaign-stat-cats
font-weight
:
bold
;
}
\ No newline at end of file
.table.table-by-cats
span
.group
{
display
:
inline-block
;
min-width
:
12px
;
color
:
#697075
;
cursor
:
pointer
;
}
.table.table-by-cats
span
.group
b
.open
{
display
:
none
;
}
.table.table-by-cats
span
.group.open
b
.closed
{
display
:
none
;
}
.table.table-by-cats
span
.group.open
b
.open
{
display
:
inline
;
}
.table.table-by-cats
tr
.subcat
{
display
:
none
;
}
.table.table-by-cats
tr
.subcat.open
{
display
:
table-row
;
}
.table.table-by-cats
td
.subcat-title
{
padding-left
:
30px
;
}
.table.table-by-cats
{
white-space
:
nowrap
;
}
.table.table-by-cats
th
:not
(
.period
)
{
width
:
1px
;
}
.table.table-by-cats
th
.zone-size
{
width
:
90px
;
}
.table.table-by-cats
td
.stat
{
font-family
:
monospace
;
text-align
:
right
;
}
\ No newline at end of file
src/public/js/adm/amsystem-campaign.js
View file @
48d23c10
...
...
@@ -3,6 +3,20 @@ $(document).ready(function () {
/* Стр. кампании пользователя */
// Переключение данных вкладок для отображения
$
(
'.switch-item'
).
on
(
'click'
,
function
(){
var
$this
=
$
(
this
),
type
=
$this
.
data
(
'type'
),
classSelected
=
'selected'
;
$
(
'.switch-item'
).
removeClass
(
classSelected
);
$this
.
addClass
(
classSelected
);
$
(
'.form-group-data'
).
removeClass
(
classSelected
);
$
(
'.form-group-data[data-type="'
+
type
+
'"]'
).
addClass
(
classSelected
);
});
// Превьюшки:
(
function
(){
...
...
@@ -74,9 +88,8 @@ $(document).ready(function () {
$statError
=
$
(
'.chart-graph-stat-error'
,
$statWrap
),
selectorStatChart
=
'#chart-graph-stat'
,
$statChart
=
$
(
selectorStatChart
,
$statWrap
),
$statTableWrap
=
$
(
'.b-table_wrapp.report'
,
$statWrap
),
$tableStat
=
$
(
'#table-line'
,
$statTableWrap
),
targetActionValue
=
$
(
'input[name=target_action]:checked'
).
val
(),
$statTableWrap
=
$
(
'.b-table_wrapp'
,
$statWrap
),
$tableCommonStat
=
$
(
'#table-line-common'
,
$statTableWrap
),
chart
,
activeLine
,
activeLines
,
...
...
@@ -84,11 +97,46 @@ $(document).ready(function () {
currencyFields
=
[
'money'
],
dateTimeFields
=
[
'period'
],
$table
=
$
(
'#table-line'
),
$tableContent
=
$
(
'<tbody>'
),
$tableBody
=
$table
.
find
(
'tbody'
).
first
();
$tableCommonBody
=
$tableCommonStat
.
find
(
'tbody'
).
first
(),
nowDate
=
new
Date
(),
$dateFrom
=
$
(
'.campaign-date-begin'
),
$dateTo
=
$
(
'.campaign-date-end'
),
datepicker1
=
$dateFrom
.
datepicker
({
dateFormat
:
"yyyy-mm-dd"
,
autoClose
:
true
,
maxDate
:
nowDate
,
onSelect
:
function
(
fd
,
d
,
picker
)
{
},
}).
data
(
'datepicker'
),
datepicker2
=
$dateTo
.
datepicker
({
dateFormat
:
"yyyy-mm-dd"
,
autoClose
:
true
,
maxDate
:
nowDate
,
onSelect
:
function
(
fd
,
d
,
picker
)
{
},
}).
data
(
'datepicker'
),
dataSitesStat
,
$statSitesWrap
=
$
(
'.form-group-data.stat-sites'
),
$statSitesError
=
$
(
'.sites-stats-error'
,
$statSitesWrap
),
$statSitesTableWrap
=
$
(
'.b-table_wrapp'
,
$statSitesWrap
),
$tableSites
=
$
(
'#table-line-sites'
),
$tableSitesBody
=
$tableSites
.
find
(
'tbody'
).
first
(),
dataRegionsStat
,
$statRegionsWrap
=
$
(
'.form-group-data.stat-regions'
),
$statRegionsError
=
$
(
'.regions-stats-error'
,
$statRegionsWrap
),
$statRegionsTableWrap
=
$
(
'.b-table_wrapp'
,
$statRegionsWrap
),
$tableRegions
=
$
(
'#table-line-regions'
),
$tableRegionsBody
=
$tableRegions
.
find
(
'tbody'
).
first
(),
codeRegions
,
codeCities
,
regionName
,
cityName
;
// Добавление впереди 0 у однозначных значений
function
pad
(
number
)
{
var
r
=
String
(
number
);
...
...
@@ -131,7 +179,6 @@ $(document).ready(function () {
return
format
(
value
);
}
function
valueFormatTable
(
value
,
currentActiveLine
)
{
...
...
@@ -157,8 +204,34 @@ $(document).ready(function () {
ShowError
();
}
console
.
log
(
'AAA dataStat = '
,
dataStat
);
console
.
log
(
'AAA dataStatTotal = '
,
dataStatTotal
);
// Получение данных для статистики по сайтам:
if
(
$
(
'#campaign-sites-stat'
).
val
())
{
dataSitesStat
=
JSON
.
parse
(
$
(
'#campaign-sites-stat'
).
val
());
}
else
{
ShowSitesStatError
();
}
// Получение данных для статистики по регионам:
if
(
$
(
'#campaign-regions-stat'
).
val
())
{
dataRegionsStat
=
JSON
.
parse
(
$
(
'#campaign-regions-stat'
).
val
());
}
else
{
ShowRegionsStatError
();
}
// Получение конфигов-кодов регионов и городов:
if
(
$
(
'#regions-codes'
).
val
())
{
codeRegions
=
JSON
.
parse
(
$
(
'#regions-codes'
).
val
());
}
if
(
$
(
'#cities-codes'
).
val
())
{
codeCities
=
JSON
.
parse
(
$
(
'#cities-codes'
).
val
());
}
//console.log('AAA dataStat = ', dataStat);
//console.log('AAA dataStatTotal = ', dataStatTotal);
//console.log('AAA dataSitesStat = ', dataSitesStat);
//console.log('AAA dataRegionsStat = ', dataRegionsStat);
//console.log('AAA codeRegions = ', codeRegions);
//console.log('AAA codeCities = ', codeCities);
function
ShowInfo
()
{
...
...
@@ -176,9 +249,21 @@ $(document).ready(function () {
$statTableWrap
.
hide
();
}
function
ShowSitesStatError
()
{
$statSitesError
.
show
();
$statSitesTableWrap
.
hide
();
}
function
ShowRegionsStatError
()
{
$statRegionsError
.
show
();
$statRegionsTableWrap
.
hide
();
}
function
getCheckedCategories
()
{
var
listCats
=
[];
$
(
'thead th input[type="checkbox"]'
,
$tableStat
).
each
(
function
(){
$
(
'thead th input[type="checkbox"]'
,
$table
Common
Stat
).
each
(
function
(){
if
(
$
(
this
).
is
(
":checked"
))
{
listCats
.
push
(
$
(
this
).
data
(
'field'
));
}
...
...
@@ -186,7 +271,7 @@ $(document).ready(function () {
return
listCats
;
}
function
renderChart
()
{
function
renderC
ommonC
hart
()
{
var
dataPeriod
=
dataStat
[
'period'
],
...
...
@@ -284,13 +369,13 @@ $(document).ready(function () {
};
function
renderTable
()
{
function
render
Common
Table
()
{
var
dataTable
=
dataStat
,
dataPeriod
=
dataStat
[
'period'
],
dataTableForSort
=
[],
$selectedField
=
$
(
'thead th b.selected'
,
$table
),
$selectedField
=
$
(
'thead th b.selected'
,
$table
CommonStat
),
$row
,
sortField
=
false
,
isDesc
=
true
;
...
...
@@ -348,36 +433,178 @@ $(document).ready(function () {
});
$row
.
appendTo
(
$tableContent
);
$tableBody
.
html
(
''
).
append
(
$tableContent
.
children
());
$table
Common
Body
.
html
(
''
).
append
(
$tableContent
.
children
());
$statTableWrap
.
show
();
};
function
renderSitesTable
()
{
var
dataTable
=
dataSitesStat
,
dataTableForSort
=
[],
$selectedField
=
$
(
'thead th b.selected'
,
$tableSites
),
$tableContent
=
$
(
'<tbody>'
),
$row
,
sortField
=
false
,
isDesc
=
true
;
// Определение поля для сортировки строк в таблице:
if
(
$selectedField
.
length
>
0
)
{
sortField
=
$selectedField
.
attr
(
'id'
);
isDesc
=
$selectedField
.
hasClass
(
'desc'
);
}
if
(
!
sortField
)
{
sortField
=
'money'
;
isDesc
=
true
;
}
//console.log('AAA sortField = ', sortField, ' isDesc = ', isDesc);
// Подготовка данных для сортировки:
for
(
var
site
in
dataTable
)
{
var
dataTableSortItem
=
dataTable
[
site
];
dataTableSortItem
[
'site'
]
=
site
;
dataTableForSort
.
push
(
dataTableSortItem
);
}
// Сортировка данных для таблицы:
dataTableForSort
.
sort
(
function
(
a
,
b
){
if
(
dateTimeFields
.
indexOf
(
sortField
)
>
-
1
)
{
var
aT
=
new
Date
(
a
[
sortField
]),
bT
=
new
Date
(
b
[
sortField
]);
return
(
isDesc
)
?
bT
-
aT
:
aT
-
bT
;
}
else
{
return
(
isDesc
)
?
b
[
sortField
]
-
a
[
sortField
]
:
a
[
sortField
]
-
b
[
sortField
];
}
});
//console.log('AAA dataTableForSort = ', dataTableForSort);
// Отрисовка таблицы:
dataTableForSort
.
forEach
(
function
(
item
){
$row
=
$
(
'<tr data-id="'
+
item
[
'site'
]
+
'">'
);
if
(
item
[
'sub'
])
{
$row
.
append
(
$
(
'<td>'
).
html
(
'<span class="group"><b class="closed">+</b><b class="open">–</b></span> '
+
item
[
'site'
]));
}
else
{
$row
.
append
(
$
(
'<td>'
).
html
(
item
[
'site'
]));
}
activeLinesId
.
forEach
(
function
(
line
){
$row
.
append
(
$
(
'<td class="stat '
+
line
+
'">'
).
html
(
valueFormatTable
(
item
[
line
],
line
)));
});
$row
.
append
(
$
(
'<td>'
));
$row
.
appendTo
(
$tableContent
);
if
(
item
[
'sub'
])
{
for
(
var
zone
in
item
[
'sub'
])
{
$row
=
$
(
'<tr class="subcat" data-parent="'
+
item
[
'site'
]
+
'">'
);
$row
.
append
(
$
(
'<td class="subcat-title">'
).
html
(
item
[
'site'
]
+
'['
+
zone
%
100
+
']'
));
activeLinesId
.
forEach
(
function
(
line
){
$row
.
append
(
$
(
'<td class="stat '
+
line
+
'">'
).
html
(
valueFormatTable
(
item
[
'sub'
][
zone
][
line
],
line
)));
});
$row
.
append
(
$
(
'<td class="stat">'
).
html
(
'300x600'
));
$row
.
appendTo
(
$tableContent
);
}
}
});
$tableSitesBody
.
html
(
''
).
append
(
$tableContent
.
children
());
$statSitesTableWrap
.
show
();
}
/*
switch(targetActionValue) {
case 'load':
activeLine = 'views';
break;
case 'view':
activeLine = 'views';
break;
case 'click':
activeLine = 'clicks';
break;
function
renderRegionsTable
()
{
var
dataTable
=
dataRegionsStat
,
dataTableForSort
=
[],
$selectedField
=
$
(
'thead th b.selected'
,
$tableRegions
),
$tableContent
=
$
(
'<tbody>'
),
$row
,
sortField
=
false
,
isDesc
=
true
;
// Определение поля для сортировки строк в таблице:
if
(
$selectedField
.
length
>
0
)
{
sortField
=
$selectedField
.
attr
(
'id'
);
isDesc
=
$selectedField
.
hasClass
(
'desc'
);
}
if
(
!
sortField
)
{
sortField
=
'money'
;
isDesc
=
true
;
}
//console.log('AAA sortField = ', sortField, ' isDesc = ', isDesc);
// Подготовка данных для сортировки:
for
(
var
region
in
dataTable
)
{
var
dataTableSortItem
=
dataTable
[
region
];
dataTableSortItem
[
'region'
]
=
region
;
dataTableForSort
.
push
(
dataTableSortItem
);
}
// Сортировка данных для таблицы:
dataTableForSort
.
sort
(
function
(
a
,
b
){
if
(
dateTimeFields
.
indexOf
(
sortField
)
>
-
1
)
{
var
aT
=
new
Date
(
a
[
sortField
]),
bT
=
new
Date
(
b
[
sortField
]);
return
(
isDesc
)
?
bT
-
aT
:
aT
-
bT
;
}
else
{
return
(
isDesc
)
?
b
[
sortField
]
-
a
[
sortField
]
:
a
[
sortField
]
-
b
[
sortField
];
}
});
//console.log('AAA dataTableForSort = ', dataTableForSort);
// Отрисовка таблицы:
dataTableForSort
.
forEach
(
function
(
item
){
regionName
=
(
codeRegions
[
item
[
'region'
]])
?
codeRegions
[
item
[
'region'
]]
:
item
[
'region'
];
$row
=
$
(
'<tr data-id="'
+
item
[
'region'
]
+
'">'
);
if
(
item
[
'sub'
])
{
$row
.
append
(
$
(
'<td>'
).
html
(
'<span class="group"><b class="closed">+</b><b class="open">–</b></span> '
+
regionName
));
}
else
{
$row
.
append
(
$
(
'<td>'
).
html
(
regionName
));
}
activeLinesId
.
forEach
(
function
(
line
){
$row
.
append
(
$
(
'<td class="stat '
+
line
+
'">'
).
html
(
valueFormatTable
(
item
[
line
],
line
)));
});
$row
.
appendTo
(
$tableContent
);
if
(
item
[
'sub'
])
{
for
(
var
city
in
item
[
'sub'
])
{
cityName
=
(
codeCities
[
city
])
?
codeCities
[
city
]
:
city
;
$row
=
$
(
'<tr class="subcat" data-parent="'
+
item
[
'region'
]
+
'">'
);
$row
.
append
(
$
(
'<td class="subcat-title">'
).
html
(
cityName
));
activeLinesId
.
forEach
(
function
(
line
){
$row
.
append
(
$
(
'<td class="stat '
+
line
+
'">'
).
html
(
valueFormatTable
(
item
[
'sub'
][
city
][
line
],
line
)));
});
$row
.
appendTo
(
$tableContent
);
}
}
});
$tableRegionsBody
.
html
(
''
).
append
(
$tableContent
.
children
());
$statRegionsTableWrap
.
show
();
}
*/
activeLine
=
'views'
;
activeLines
=
JSON
.
parse
(
$
(
'#campaign-stat-cats'
).
val
());
activeLinesId
=
Object
.
keys
(
activeLines
);
// Общая статистика
if
(
dataStat
)
{
// Отрисовка графика и таблицы по стартовым данным:
if
(
dataStat
.
status
==
'Error'
)
{
ShowError
();
}
else
{
renderChart
();
renderTable
();
renderC
ommonC
hart
();
render
Common
Table
();
}
}
else
{
ShowInfo
();
...
...
@@ -385,10 +612,56 @@ $(document).ready(function () {
$statTableWrap
.
hide
();
}
// Статистика по сайтам
if
(
dataSitesStat
)
{
// Отрисовка таблицы по стартовым данным:
if
(
dataSitesStat
.
status
==
'Error'
)
{
ShowSitesStatError
();
}
else
{
renderSitesTable
();
}
}
else
{
ShowSitesStatError
();
}
// Статистика по регионам
if
(
dataRegionsStat
)
{
// Отрисовка таблицы по стартовым данным:
if
(
dataRegionsStat
.
status
==
'Error'
)
{
ShowRegionsStatError
();
}
else
{
renderRegionsTable
();
}
}
else
{
ShowRegionsStatError
();
}
// Клик на checkbox в названии поля таблицы:
var
$tableHeadColsChecks
=
$
(
'thead th input[type="checkbox"]'
,
$tableStat
);
var
$tableHeadColsChecks
=
$
(
'thead th input[type="checkbox"]'
,
$table
Common
Stat
);
$tableHeadColsChecks
.
on
(
'change'
,
function
(){
renderChart
();
renderCommonChart
();
});
// Свернуть-развернуть дочерние ячейки в таблице:
$
(
'table.table-striped'
).
on
(
'click'
,
'span.group'
,
function
(
e
)
{
var
$this
=
$
(
this
),
$tableBody
=
$
(
'tbody'
,
$this
.
parents
(
'table'
)),
$wrap
=
$this
.
parents
(
'tr'
).
eq
(
0
),
id
=
$wrap
.
data
(
'id'
),
isOpen
,
$subcats
=
$
(
'tr.subcat[data-parent="'
+
id
+
'"]'
,
$tableBody
);
$this
.
toggleClass
(
'open'
);
isOpen
=
$this
.
hasClass
(
'open'
);
if
(
isOpen
)
{
$subcats
.
addClass
(
'open'
);
}
else
{
$subcats
.
removeClass
(
'open'
);
}
});
...
...
src/src/App/Action/User/CabinetAmSystem.php
View file @
48d23c10
...
...
@@ -154,6 +154,7 @@ class CabinetAmSystem extends Common
$stats
=
$this
->
container
->
get
(
\App\Model\Statistics
::
class
);
$date_begin
=
$campaign
->
getDateBegin
();
$date_end
=
$campaign
->
getDateEnd
()
?
:
date
(
"Y-m-d"
);
// последние 90 дней, если кампания долго идет
$dates
=
[
$date_begin
,
$date_end
];
$campaign_stat
=
$stats
->
getCampaignsStat
([(
int
)
$campaign_id
],
$campaign
->
getTargetAction
(),
$dates
);
$campaign_stat_total
=
$stats
->
getCampaignsStat
([(
int
)
$campaign_id
],
$campaign
->
getTargetAction
(),
null
);
...
...
@@ -194,12 +195,18 @@ class CabinetAmSystem extends Common
}
$sites_stats
=
$stats
->
getCampaignsSitesStat
((
int
)
$campaign_id
,
$campaign
->
getTargetAction
(),
$dates
);
$regions_stats
=
$stats
->
getCampaignsRegionsStat
((
int
)
$campaign_id
,
$campaign
->
getTargetAction
(),
$dates
);
$data
[
'campaign'
]
=
$campaign
;
$data
[
'countries'
]
=
$countries
;
$data
[
'regions'
]
=
$regions
;
$data
[
'cities'
]
=
$cities
;
$data
[
'banners'
]
=
$banners
;
$data
[
'banners_stats'
]
=
$banners_stats
;
$data
[
'sites_stats'
]
=
$sites_stats
;
$data
[
'regions_stats'
]
=
$regions_stats
;
$data
[
'campaign_stat'
]
=
$campaign_stat
;
$data
[
'campaign_stat_total'
]
=
$campaign_stat_total
;
$data
[
'campaign_stat_cats'
]
=
self
::
CAMPAIGN_STAT_CATS
;
...
...
src/src/App/Model/Statistics.php
View file @
48d23c10
...
...
@@ -345,7 +345,7 @@ class Statistics
return
$stats
;
}
// Данные
по статистике для
кампании (баннеры)
// Данные
для статистики по
кампании (баннеры)
public
function
getCampaignsStat
(
$id_list
,
$taget_action
,
$dates
)
{
$dataRequest
=
array
(
...
...
@@ -462,9 +462,8 @@ class Statistics
return
$dataStats
;
}
// Данные по статистике для баннеров
// Данные для статистики по баннерам
public
function
getBannersStat
(
$banners_id_list
,
$dates
)
{
$dataRequest
=
array
(
...
...
@@ -488,6 +487,131 @@ class Statistics
return
$stats
;
}
// Данные для статистики кампании по сайтам
public
function
getCampaignsSitesStat
(
$id
,
$taget_action
,
$dates
)
{
$dataRequest
=
array
(
'method'
=>
'camp_zone'
,
'data'
=>
array
(
'id'
=>
$id
,
'start_date'
=>
$dates
[
0
],
'end_date'
=>
$dates
[
1
]
)
);
//return $dataRequest;
try
{
$stats
=
$this
->
apiRequest
(
$dataRequest
);
}
catch
(
\Exception
$e
)
{
$stats
[
'status'
]
=
'Error'
;
return
$stats
;
}
//return $stats;
if
(
$stats
)
{
// Добавляем спец. поля
$AddSpecialFields
=
function
(
&
$stats
)
{
if
(
$taget_action
==
'load'
)
{
$stats
[
'views'
]
=
$stats
[
'loads'
];
$stats
[
'reach'
]
=
$stats
[
'reach_load'
];
}
else
{
$stats
[
'reach'
]
=
$stats
[
'reach_view'
];
}
unset
(
$stats
[
'loads'
]);
unset
(
$stats
[
'reach_load'
]);
unset
(
$stats
[
'reach_view'
]);
$views
=
$stats
[
'views'
];
$money
=
$stats
[
'money'
];
$clicks
=
$stats
[
'clicks'
];
$stats
[
'ctr'
]
=
(
$views
!=
0
)
?
round
((
$clicks
/
$views
)
*
100
,
2
)
:
0
;
$stats
[
'cpm'
]
=
(
$views
!=
0
)
?
round
((
$money
/
$views
)
*
1000
,
3
)
:
0
;
$stats
[
'cpc'
]
=
(
$clicks
!=
0
)
?
round
((
$money
/
$clicks
)
*
100
,
1
)
:
0
;
$stats
[
'money'
]
=
round
(
$stats
[
'money'
],
2
);
};
foreach
(
$stats
as
$site
=>
$stat
)
{
$AddSpecialFields
(
$stats
[
$site
]);
if
(
$stat
[
'sub'
])
{
foreach
(
$stat
[
'sub'
]
as
$sub
=>
$stat
)
{
$AddSpecialFields
(
$stats
[
$site
][
'sub'
][
$sub
]);
}
}
}
$dataStats
=
$stats
;
}
return
$dataStats
;
}
// Данные для статистики кампании по регионам
public
function
getCampaignsRegionsStat
(
$id
,
$taget_action
,
$dates
)
{
$dataRequest
=
array
(
'method'
=>
'camp_geo'
,
'data'
=>
array
(
'id'
=>
$id
,
'start_date'
=>
$dates
[
0
],
'end_date'
=>
$dates
[
1
]
)
);
//return $dataRequest;
try
{
$stats
=
$this
->
apiRequest
(
$dataRequest
);
}
catch
(
\Exception
$e
)
{
$stats
[
'status'
]
=
'Error'
;
return
$stats
;
}
//return $stats;
if
(
$stats
)
{
// Добавляем спец. поля
$AddSpecialFields
=
function
(
&
$stats
)
{
if
(
$taget_action
==
'load'
)
{
$stats
[
'views'
]
=
$stats
[
'loads'
];
$stats
[
'reach'
]
=
$stats
[
'reach_load'
];
}
else
{
$stats
[
'reach'
]
=
$stats
[
'reach_view'
];
}
unset
(
$stats
[
'loads'
]);
unset
(
$stats
[
'reach_load'
]);
unset
(
$stats
[
'reach_view'
]);
$views
=
$stats
[
'views'
];
$money
=
$stats
[
'money'
];
$clicks
=
$stats
[
'clicks'
];
$stats
[
'ctr'
]
=
(
$views
!=
0
)
?
round
((
$clicks
/
$views
)
*
100
,
2
)
:
0
;
$stats
[
'cpm'
]
=
(
$views
!=
0
)
?
round
((
$money
/
$views
)
*
1000
,
3
)
:
0
;
$stats
[
'cpc'
]
=
(
$clicks
!=
0
)
?
round
((
$money
/
$clicks
)
*
100
,
1
)
:
0
;
$stats
[
'money'
]
=
round
(
$stats
[
'money'
],
2
);
};
foreach
(
$stats
as
$region
=>
$stat
)
{
$AddSpecialFields
(
$stats
[
$region
]);
if
(
$stat
[
'sub'
])
{
foreach
(
$stat
[
'sub'
]
as
$sub
=>
$stat
)
{
$AddSpecialFields
(
$stats
[
$region
][
'sub'
][
$sub
]);
}
}
}
$dataStats
=
$stats
;
}
return
$dataStats
;
}
// Запрос к API:
...
...
src/templates/app/user/campaign_item.phtml
View file @
48d23c10
...
...
@@ -29,15 +29,13 @@
$this
->
headScript
()
->
appendFile
(
'/js/c3.min.js'
)
->
appendFile
(
'/js/d3.min.js'
)
//->appendFile('/js/script-feeds-stat-charts.js')
//->appendFile('/js/script-feeds-stat-table.js')
//->appendFile('/js/script-feeds-stat.js')
->
appendFile
(
'/js/datepicker.min.js'
)
->
appendFile
(
'/js/adm/amsystem-campaign.js'
)
;
$this
->
headLink
()
->
appendStylesheet
(
'/css/c3.css'
)
->
appendStylesheet
(
'/css/datepicker.min.css'
)
->
appendStylesheet
(
'/css/styles-amsystem.css'
)
;
...
...
@@ -72,10 +70,28 @@ if (!$error) {
$banners_stats
=
$this
->
banners_stats
;
$img_domain
=
$this
->
img_domain
;
$sites_stats
=
$this
->
sites_stats
;
$regions_stats
=
$this
->
regions_stats
;
$campaign_stat
=
$this
->
campaign_stat
;
$campaign_stat_total
=
$this
->
campaign_stat_total
;
$campaign_stat_cats
=
$this
->
campaign_stat_cats
;
$code_regions
=
[];
foreach
(
$regions
as
$region_item
)
{
foreach
(
$region_item
[
'codes'
]
as
$code
)
{
$code_regions
[
$code
]
=
str_replace
(
' область'
,
''
,
$region_item
[
'name'
]);
}
}
$code_cities
=
[];
foreach
(
$cities
as
$city_item
)
{
foreach
(
$city_item
[
'codes'
]
as
$code
)
{
$code_cities
[
$code
]
=
str_replace
(
' область'
,
''
,
$city_item
[
'name'
]);
}
}
$target_class
=
(
$campaign_target_action
==
'load'
)
?
'load-target'
:
''
;
$link_campaigns_list
=
$this
->
url
(
'user.cabinet.amsystem'
,
[
'lang'
=>
$lang
]);
...
...
@@ -108,179 +124,187 @@ if (!$error) {
<div
class=
"panel-body"
>
<fieldset
disabled=
"disabled"
>
<!-- Активность и Название -->
<div
class=
"form-group title"
>
<input
type=
"checkbox"
id=
"campaign-active"
name=
"campaign-active"
<?php
if
(
$campaign_active
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"campaign-title"
>
<?=
$campaign_title
?>
</label>
</div>
<!-- Даты проведения -->
<div
class=
"form-group"
>
<label
for=
"campaign-date-begin"
>
<?=
_t
(
'Даты проведения'
)
?>
</label>
c:
<input
type=
'text'
id=
"campaign-date-begin"
class=
"form-control date-value"
name=
"date_begin"
value=
"
<?=
$campaign_date_begin
?>
"
/>
по:
<input
type=
'text'
id=
"campaign-date-end"
class=
"form-control date-value"
name=
"date_end"
value=
"
<?=
$campaign_date_end
?>
"
/>
</div>
<!-- Ссылка -->
<div
class=
"form-group url"
>
<label
for=
"campaign-url"
>
<?=
_t
(
'Ссылка'
)
?>
</label>
<div
class=
"value-show"
>
<?=
$campaign_url
?>
</div>
</div>
<div
class=
"switch-data"
>
<span
class=
"switch-item selected"
data-type=
"settings"
>
Настройки кампании
</span>
<span
class=
"switch-item"
data-type=
"stat-common"
>
Общая статистика
</span>
<span
class=
"switch-item"
data-type=
"stat-sites"
>
По сайтам
</span>
<span
class=
"switch-item"
data-type=
"stat-regions"
>
По регионам
</span>
</div>
<div
class=
"b-left"
>
<!-- Настройки кампании -->
<div
class=
"form-group-data selected"
data-type=
"settings"
>
<fieldset
disabled=
"disabled"
>
<!-- Тип кампании -->
<div
class=
"form-group"
>
<label>
<?=
_t
(
'Тип кампании'
)
?>
</label>
<input
type=
"radio"
id=
"campaign-buy-type-auction"
name=
"buy_type"
value=
"auction"
<?php
if
(
$campaign_buy_type
==
'auction'
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-buy-type-auction"
>
Аукцион
</label>
<input
type=
"radio"
id=
"campaign-buy-type-garantee"
name=
"buy_type"
value=
"garantee"
<?php
if
(
$campaign_buy_type
==
'garantee'
)
:
?>
checked
<?php
endif
;
?>
disabled
>
<label
class=
"select-item disabled"
for=
"campaign-buy-type-garantee"
>
Гарантия
</label>
<!-- Активность и Название -->
<div
class=
"form-group title"
>
<input
type=
"checkbox"
id=
"campaign-active"
name=
"campaign-active"
<?php
if
(
$campaign_active
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"campaign-title"
>
<?=
$campaign_title
?>
</label>
</div>
<!--
Целевое действие
-->
<!--
Даты проведения
-->
<div
class=
"form-group"
>
<label>
<?=
_t
(
'Целевое действие'
)
?>
</label>
<input
type=
"radio"
id=
"campaign-view-load"
name=
"target_action"
value=
"load"
<?php
if
(
$campaign_target_action
==
'load'
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-view-load"
>
Показ
</label>
<input
type=
"radio"
id=
"campaign-view-view"
name=
"target_action"
value=
"view"
<?php
if
(
$campaign_target_action
==
'view'
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-view-view"
>
Реальный показ
</label>
<input
type=
"radio"
id=
"campaign-view-click"
name=
"target_action"
value=
"click"
<?php
if
(
$campaign_target_action
==
'click'
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-view-click"
>
Клик
</label>
<label
for=
"campaign-date-begin"
>
<?=
_t
(
'Даты проведения'
)
?>
</label>
c:
<input
type=
'text'
id=
"campaign-date-begin"
class=
"form-control date-value"
name=
"date_begin"
value=
"
<?=
$campaign_date_begin
?>
"
/>
по:
<input
type=
'text'
id=
"campaign-date-end"
class=
"form-control date-value"
name=
"date_end"
value=
"
<?=
$campaign_date_end
?>
"
/>
</div>
<!-- Стоимость -->
<div
class=
"form-group"
>
<?php
switch
(
$campaign_target_action
)
{
case
'load'
:
$title_mark
=
'1000 показов'
;
break
;
case
'view'
:
$title_mark
=
'1000 реальных показов'
;
break
;
case
'click'
:
$title_mark
=
'клик'
;
break
;
}
?>
<label
for=
"campaign-price"
>
<?=
_t
(
'Стоимость'
)
?>
</label>
<input
type=
"number"
min=
"0"
step=
"0.1"
id=
"campaign-price"
class=
"form-control price"
name=
"price"
value=
"
<?=
$campaign_price
?>
"
/>
грн. за
<span
class=
"price-title-mark"
>
<?=
$title_mark
?>
</span>
<!-- Ссылка -->
<div
class=
"form-group url"
>
<label
for=
"campaign-url"
>
<?=
_t
(
'Ссылка'
)
?>
</label>
<div
class=
"value-show"
>
<?=
$campaign_url
?>
</div>
</div>
<!-- Ограничения на посетителя -->
<div
class=
"form-group campaign-visitor-limit__wrap"
>
<label>
<?=
_t
(
'Ограничения на посетителя'
)
?>
</label><br
/>
<div
class=
"value-show"
>
<?php
<div
class=
"b-left"
>
function
declOfNum
(
$number
,
$titles
)
{
$cases
=
array
(
2
,
0
,
1
,
1
,
1
,
2
);
$format
=
$titles
[
(
$number
%
100
>
4
&&
$number
%
100
<
20
)
?
2
:
$cases
[
min
(
$number
%
10
,
5
)]
];
return
sprintf
(
$format
,
$number
);
}
<!-- Тип кампании -->
<div
class=
"form-group"
>
<label>
<?=
_t
(
'Тип кампании'
)
?>
</label>
<input
type=
"radio"
id=
"campaign-buy-type-auction"
name=
"buy_type"
value=
"auction"
<?php
if
(
$campaign_buy_type
==
'auction'
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-buy-type-auction"
>
Аукцион
</label>
<input
type=
"radio"
id=
"campaign-buy-type-garantee"
name=
"buy_type"
value=
"garantee"
<?php
if
(
$campaign_buy_type
==
'garantee'
)
:
?>
checked
<?php
endif
;
?>
disabled
>
<label
class=
"select-item disabled"
for=
"campaign-buy-type-garantee"
>
Гарантия
</label>
</div>
foreach
(
$campaign_visitor_limit
as
$action
=>
$data
)
{
if
(
$action
==
'view'
)
$titles
=
[
'показ'
,
'показа'
,
'показов'
];
if
(
$action
==
'click'
)
$titles
=
[
'клик'
,
'клика'
,
'кликов'
];
<!-- Целевое действие -->
<div
class=
"form-group"
>
<label>
<?=
_t
(
'Целевое действие'
)
?>
</label>
<input
type=
"radio"
id=
"campaign-view-load"
name=
"target_action"
value=
"load"
<?php
if
(
$campaign_target_action
==
'load'
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-view-load"
>
Показ
</label>
<input
type=
"radio"
id=
"campaign-view-view"
name=
"target_action"
value=
"view"
<?php
if
(
$campaign_target_action
==
'view'
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-view-view"
>
Реальный показ
</label>
<input
type=
"radio"
id=
"campaign-view-click"
name=
"target_action"
value=
"click"
<?php
if
(
$campaign_target_action
==
'click'
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-view-click"
>
Клик
</label>
</div>
foreach
(
$data
as
$period
=>
$value
)
{
switch
(
$period
)
{
case
'page'
:
$title_mark
=
'на странице'
;
break
;
case
'hour'
:
$title_mark
=
'в час'
;
break
;
case
'day'
:
$title_mark
=
'в сутки'
;
break
;
case
'week'
:
$title_mark
=
'в неделю'
;
break
;
case
'month'
:
$title_mark
=
'в месяц'
;
break
;
}
if
(
$value
)
{
?>
<span><b>
<?=
$value
?>
</b>
<i>
<?=
declOfNum
(
$value
,
$titles
)
?>
</i>
<?=
$title_mark
?>
</span><br
/>
<!-- Стоимость -->
<div
class=
"form-group"
>
<?php
}
}
}
switch
(
$campaign_target_action
)
{
case
'load'
:
$title_mark
=
'1000 показов'
;
break
;
case
'view'
:
$title_mark
=
'1000 реальных показов'
;
break
;
case
'click'
:
$title_mark
=
'клик'
;
break
;
}
?>
<label
for=
"campaign-price"
>
<?=
_t
(
'Стоимость'
)
?>
</label>
<input
type=
"number"
min=
"0"
step=
"0.1"
id=
"campaign-price"
class=
"form-control price"
name=
"price"
value=
"
<?=
$campaign_price
?>
"
/>
грн. за
<span
class=
"price-title-mark"
>
<?=
$title_mark
?>
</span>
</div>
</div>
<!-- Бюджет -->
<div
class=
"form-group campaign-money-limit"
>
<label>
<?=
_t
(
'Бюджет'
)
?>
</label><br
/>
<div
class=
"value-show"
>
<?php
foreach
(
$campaign_money_limit
as
$period
=>
$value
)
{
switch
(
$period
)
{
case
'total'
:
$title_mark
=
'грн. всего'
;
break
;
case
'day'
:
$title_mark
=
'грн. в сутки'
;
break
;
case
'week'
:
$title_mark
=
'грн. в неделю'
;
break
;
case
'month'
:
$title_mark
=
'грн. в месяц'
;
break
;
<!-- Ограничения на посетителя -->
<div
class=
"form-group campaign-visitor-limit__wrap"
>
<label>
<?=
_t
(
'Ограничения на посетителя'
)
?>
</label><br
/>
<div
class=
"value-show"
>
<?php
function
declOfNum
(
$number
,
$titles
)
{
$cases
=
array
(
2
,
0
,
1
,
1
,
1
,
2
);
$format
=
$titles
[
(
$number
%
100
>
4
&&
$number
%
100
<
20
)
?
2
:
$cases
[
min
(
$number
%
10
,
5
)]
];
return
sprintf
(
$format
,
$number
);
}
if
(
$value
)
{
?>
<span><b>
<?=
$value
?>
</b>
<?=
$title_mark
?>
</span><br
/>
<?php
}
}
?>
foreach
(
$campaign_visitor_limit
as
$action
=>
$data
)
{
if
(
$action
==
'view'
)
$titles
=
[
'показ'
,
'показа'
,
'показов'
];
if
(
$action
==
'click'
)
$titles
=
[
'клик'
,
'клика'
,
'кликов'
];
foreach
(
$data
as
$period
=>
$value
)
{
switch
(
$period
)
{
case
'page'
:
$title_mark
=
'на странице'
;
break
;
case
'hour'
:
$title_mark
=
'в час'
;
break
;
case
'day'
:
$title_mark
=
'в сутки'
;
break
;
case
'week'
:
$title_mark
=
'в неделю'
;
break
;
case
'month'
:
$title_mark
=
'в месяц'
;
break
;
}
if
(
$value
)
{
?>
<span><b>
<?=
$value
?>
</b>
<i>
<?=
declOfNum
(
$value
,
$titles
)
?>
</i>
<?=
$title_mark
?>
</span><br
/>
<?php
}
}
}
?>
</div>
</div>
</div>
<!-- Скорость открута -->
<div
class=
"form-group"
>
<label>
<?=
_t
(
'Скорость открута'
)
?>
</label>
<input
type=
"radio"
id=
"campaign-max-speed-true"
name=
"max_speed"
value=
"1"
<?php
if
(
$campaign_max_speed
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-max-speed-true"
>
Максимальная
</label>
<input
type=
"radio"
id=
"campaign-max-speed-false"
name=
"max_speed"
value=
"0"
<?php
if
(
!
$campaign_max_speed
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-max-speed-false"
>
Равномерная
</label>
</div>
<!-- Бюджет -->
<div
class=
"form-group campaign-money-limit"
>
<label>
<?=
_t
(
'Бюджет'
)
?>
</label><br
/>
<div
class=
"value-show"
>
<?php
<!-- Гео -->
<div
class=
"form-group geo"
>
<label>
<?=
_t
(
'Гео (таргетинг)'
)
?>
</label>
<div
class=
"value-show"
>
<?php
if
(
$campaign_geo
)
:
?>
<?php
if
(
$campaign_geo
[
'country'
])
:
?>
<?php
$title_values
=
$countries
[
$campaign_geo
[
'country'
][
'values'
][
0
]];
if
(
$campaign_geo
[
'special'
])
{
$title_special
=
'<b>(исключить неподконтрольные территории)</b>'
;
}
?>
<span>
<?=
'Страна'
?>
:
<b>
<?=
$title_values
?>
</b>
<?=
$title_special
?>
</span><br
/>
<?php
endif
;
?>
<?php
if
(
$campaign_geo
[
'region'
][
'values'
])
:
?>
<?php
$title_mark
=
(
$campaign_geo
[
'region'
][
'exclude'
])
?
'кроме'
:
'только'
;
$title_values
=
[];
foreach
(
$campaign_geo
[
'region'
][
'values'
]
as
$code
)
{
$title_values
[]
=
str_replace
(
' область'
,
''
,
$regions
[
$code
][
'name'
]);
}
$title_values
=
implode
(
", "
,
$title_values
);
?>
<span>
<?=
'Области'
?>
<i>
<?=
$title_mark
?>
</i>
:
<b>
<?=
$title_values
?>
</b></span><br
/>
<?php
endif
;
?>
<?php
if
(
$campaign_geo
[
'city'
][
'values'
])
:
?>
<?php
$title_mark
=
(
$campaign_geo
[
'city'
][
'exclude'
])
?
'кроме'
:
'только'
;
$title_values
=
[];
foreach
(
$campaign_geo
[
'city'
][
'values'
]
as
$code
)
{
$title_values
[]
=
$cities
[
$code
][
'name'
];
foreach
(
$campaign_money_limit
as
$period
=>
$value
)
{
switch
(
$period
)
{
case
'total'
:
$title_mark
=
'грн. всего'
;
break
;
case
'day'
:
$title_mark
=
'грн. в сутки'
;
break
;
case
'week'
:
$title_mark
=
'грн. в неделю'
;
break
;
case
'month'
:
$title_mark
=
'грн. в месяц'
;
break
;
}
$title_values
=
implode
(
", "
,
$title_values
);
?>
<span>
<?=
'Города'
?>
<i>
<?=
$title_mark
?>
</i>
:
<b>
<?=
$title_values
?>
</b></span><br
/>
<?php
endif
;
?>
if
(
$value
)
{
?>
<span><b>
<?=
$value
?>
</b>
<?=
$title_mark
?>
</span><br
/>
<?php
}
}
?>
</div>
</div>
<!-- Скорость открута -->
<div
class=
"form-group"
>
<label>
<?=
_t
(
'Скорость открута'
)
?>
</label>
<input
type=
"radio"
id=
"campaign-max-speed-true"
name=
"max_speed"
value=
"1"
<?php
if
(
$campaign_max_speed
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-max-speed-true"
>
Максимальная
</label>
<input
type=
"radio"
id=
"campaign-max-speed-false"
name=
"max_speed"
value=
"0"
<?php
if
(
!
$campaign_max_speed
)
:
?>
checked
<?php
endif
;
?>
>
<label
class=
"select-item"
for=
"campaign-max-speed-false"
>
Равномерная
</label>
</div>
<!-- Гео -->
<div
class=
"form-group geo"
>
<?php
if
(
$campaign_geo
)
:
?>
<label>
<?=
_t
(
'Гео (таргетинг)'
)
?>
</label>
<div
class=
"value-show"
>
<?php
if
(
$campaign_geo
[
'country'
])
:
?>
<?php
$title_values
=
$countries
[
$campaign_geo
[
'country'
][
'values'
][
0
]];
if
(
$campaign_geo
[
'special'
])
{
$title_special
=
'<b>(исключить неподконтрольные территории)</b>'
;
}
?>
<span>
<?=
'Страна'
?>
:
<b>
<?=
$title_values
?>
</b>
<?=
$title_special
?>
</span><br
/>
<?php
endif
;
?>
<?php
if
(
$campaign_geo
[
'region'
][
'values'
])
:
?>
<?php
$title_mark
=
(
$campaign_geo
[
'region'
][
'exclude'
])
?
'кроме'
:
'только'
;
$title_values
=
[];
foreach
(
$campaign_geo
[
'region'
][
'values'
]
as
$code
)
{
$title_values
[]
=
str_replace
(
' область'
,
''
,
$regions
[
$code
][
'name'
]);
}
$title_values
=
implode
(
", "
,
$title_values
);
?>
<span>
<?=
'Области'
?>
<i>
<?=
$title_mark
?>
</i>
:
<b>
<?=
$title_values
?>
</b></span><br
/>
<?php
endif
;
?>
<?php
if
(
$campaign_geo
[
'city'
][
'values'
])
:
?>
<?php
$title_mark
=
(
$campaign_geo
[
'city'
][
'exclude'
])
?
'кроме'
:
'только'
;
$title_values
=
[];
foreach
(
$campaign_geo
[
'city'
][
'values'
]
as
$code
)
{
$title_values
[]
=
$cities
[
$code
][
'name'
];
}
$title_values
=
implode
(
", "
,
$title_values
);
?>
<span>
<?=
'Города'
?>
<i>
<?=
$title_mark
?>
</i>
:
<b>
<?=
$title_values
?>
</b></span><br
/>
<?php
endif
;
?>
</div>
<?php
endif
;
?>
</div>
</div>
<!-- Трекинг -->
<div
class=
"form-group tracking_pixels"
>
<label>
<?=
_t
(
'Трекинг'
)
?>
</label>
<div
class=
"value-show"
>
<?php
if
(
$campaign_tracking_pixels
)
{
<!-- Трекинг -->
<div
class=
"form-group tracking_pixels"
>
<?php
if
(
$campaign_tracking_pixels
)
:
?>
<label>
<?=
_t
(
'Трекинг'
)
?>
</label>
<div
class=
"value-show"
>
<?php
foreach
(
$campaign_tracking_pixels
as
$item
=>
$values
)
{
switch
(
$item
)
{
case
'load'
:
$title_mark
=
'Показ'
;
break
;
...
...
@@ -288,111 +312,210 @@ if (!$error) {
case
'click'
:
$title_mark
=
'Клик'
;
break
;
}
if
(
$values
)
{
?>
?>
<div>
<?=
$title_mark
?>
</div>
<?php
<?php
foreach
(
$values
as
$value_item
)
{
?>
?>
<div
class=
"url"
>
<?=
$value_item
?>
</div>
<?php
}
}
}
}
?>
<?php
}
}
}
?>
</div>
<?php
endif
;
?>
</div>
</div>
</div>
<div
class=
"b-right"
>
<!-- Баннеры -->
<div
class=
"form-group banners"
>
<label>
<?=
_t
(
'Баннеры'
)
?>
</label>
<div>
<table
class=
"table table-striped campaign-banners"
>
<thead>
<tr>
<th></th>
<th><span
class=
"sort"
>
Размер
</span></th>
<th><span
class=
"sort"
>
Превью
</span></th>
<th><span
class=
"sort"
>
Показы
</span></th>
<th><span
class=
"sort"
>
Клики
</span></th>
<th><span
class=
"sort"
>
CTR
</span></th>
<th><span
class=
"sort"
>
Расход, грн.
</span></th>
<th><span
class=
"sort"
>
eCPM
</span></th>
<th><span
class=
"sort"
>
eCPC
</span></th>
</tr>
</thead>
<tbody>
<?php
if
(
$banners
)
:
?>
<?php
foreach
(
$banners
as
$banner
)
:
?>
<?php
$stat
=
$banners_stats
[
$banner
[
'id'
]];
?>
<tr
data-id=
"
<?=
$banner
[
'id'
]
?>
"
>
<td
class=
"check"
><input
type=
"checkbox"
<?php
if
((
bool
)
$banner
[
'active'
])
:
?>
checked
<?php
endif
;
?>
></td>
<td
class=
"stat"
><span
class=
"banner-size"
>
<?=
$banner
[
'width'
]
?>
x
<?=
$banner
[
'height'
]
?>
</span></td>
<td
class=
"stat"
><span
class=
"banner-preview"
src=
"
<?=
$img_domain
?><?=
$banner
[
'img'
]
?>
"
style=
"background-image: url(
<?=
$img_domain
?><?=
$banner
[
'img'
]
?>
)"
></span></td>
<td
class=
"stat
<?=
$target_class
?>
"
>
<?=
$stat
[
'views'
]
?>
</td>
<td
class=
"stat"
>
<?=
$stat
[
'clicks'
]
?>
</td>
<td
class=
"stat"
>
<?=
$stat
[
'ctr'
]
?>
</td>
<td
class=
"stat
<?=
$target_class
?>
"
>
<?=
$stat
[
'money'
]
?>
</td>
<td
class=
"stat"
>
<?=
$stat
[
'cpm'
]
?>
</td>
<td
class=
"stat"
>
<?=
$stat
[
'cpc'
]
?>
</td>
</tr>
<?php
endforeach
?>
<?php
endif
?>
</tbody>
</table>
</div>
</div>
<div
class=
"b-right"
>
<!-- Баннеры -->
<div
class=
"form-group banners"
>
<label>
<?=
_t
(
'Баннеры'
)
?>
</label>
<div>
<table
class=
"table table-striped campaign-banners"
>
<thead>
<tr>
<th></th>
<th><span
class=
"sort"
>
Размер
</span></th>
<th><span
class=
"sort"
>
Превью
</span></th>
<th><span
class=
"sort"
>
Показы
</span></th>
<th><span
class=
"sort"
>
Клики
</span></th>
<th><span
class=
"sort"
>
CTR
</span></th>
<th><span
class=
"sort"
>
Расход, грн.
</span></th>
<th><span
class=
"sort"
>
eCPM
</span></th>
<th><span
class=
"sort"
>
eCPC
</span></th>
</tr>
</thead>
<tbody>
<?php
if
(
$banners
)
:
?>
<?php
foreach
(
$banners
as
$banner
)
:
?>
<?php
$stat
=
$banners_stats
[
$banner
[
'id'
]];
?>
<tr
data-id=
"
<?=
$banner
[
'id'
]
?>
"
>
<td
class=
"check"
><input
type=
"checkbox"
<?php
if
((
bool
)
$banner
[
'active'
])
:
?>
checked
<?php
endif
;
?>
></td>
<td
class=
"stat"
><span
class=
"banner-size"
>
<?=
$banner
[
'width'
]
?>
x
<?=
$banner
[
'height'
]
?>
</span></td>
<td
class=
"stat"
><span
class=
"banner-preview"
src=
"
<?=
$img_domain
?><?=
$banner
[
'img'
]
?>
"
style=
"background-image: url(
<?=
$img_domain
?><?=
$banner
[
'img'
]
?>
)"
></span></td>
<td
class=
"stat
<?=
$target_class
?>
"
>
<?=
$stat
[
'views'
]
?>
</td>
<td
class=
"stat"
>
<?=
$stat
[
'clicks'
]
?>
</td>
<td
class=
"stat"
>
<?=
$stat
[
'ctr'
]
?>
</td>
<td
class=
"stat
<?=
$target_class
?>
"
>
<?=
$stat
[
'money'
]
?>
</td>
<td
class=
"stat"
>
<?=
$stat
[
'cpm'
]
?>
</td>
<td
class=
"stat"
>
<?=
$stat
[
'cpc'
]
?>
</td>
</tr>
<?php
endforeach
?>
<?php
endif
?>
</tbody>
</table>
</div>
</div>
</div>
</fieldset>
</fieldset>
</div>
<div
class=
"campaign-stat"
>
<textarea
id=
"campaign-stat"
>
<?=
(
$campaign_stat
?
json_encode
(
$campaign_stat
)
:
''
)
?>
</textarea>
<textarea
id=
"campaign-stat-total"
>
<?=
(
$campaign_stat_total
?
json_encode
(
$campaign_stat_total
)
:
''
)
?>
</textarea>
<textarea
id=
"campaign-stat-cats"
>
<?=
(
$campaign_stat_cats
?
json_encode
(
$campaign_stat_cats
)
:
''
)
?>
</textarea>
<!-- Общая статистика -->
<div
class=
"form-group-data stat-common"
data-type=
"stat-common"
>
<div
class=
"campaign-stat"
>
<textarea
id=
"campaign-stat"
>
<?=
(
$campaign_stat
?
json_encode
(
$campaign_stat
)
:
''
)
?>
</textarea>
<textarea
id=
"campaign-stat-total"
>
<?=
(
$campaign_stat_total
?
json_encode
(
$campaign_stat_total
)
:
''
)
?>
</textarea>
<textarea
id=
"campaign-stat-cats"
>
<?=
(
$campaign_stat_cats
?
json_encode
(
$campaign_stat_cats
)
:
''
)
?>
</textarea>
<!-- Дата -->
<div
class=
"form-group"
>
<label
for=
"campaign-date-begin"
>
<?=
_t
(
'Дата'
)
?>
</label>
c:
<input
type=
'text'
id=
"campaign-date-begin"
class=
"campaign-date-begin form-control date-value"
name=
"date_begin"
value=
"
<?=
$campaign_date_begin
?>
"
/>
по:
<input
type=
'text'
id=
"campaign-date-end"
class=
"campaign-date-end form-control date-value"
name=
"date_end"
value=
"
<?=
$campaign_date_end
?>
"
/>
</div>
<div
class=
"chart-graph-stat-info"
>
<h2>
По заданным параметрам статистика отсутствует
</h2>
</div>
<div
class=
"chart-graph-stat-error"
>
<h2>
Ошибка в статистике
</h2>
<div
class=
"message"
></div>
</div>
<!-- График -->
<div
id=
"chart-graph-stat"
data-colors=
<?=
(
$colors_active_lines
?
json_encode
(
$colors_active_lines
)
:
''
)
?>
>
</div
>
<!-- Таблица -->
<div
id=
"table-stat"
class=
"b-table_wrapp"
>
<table
id=
"table-line-common"
class=
"table table-striped"
>
<thead
class=
"sortable"
>
<tr>
<th
class=
"period"
data-id=
"period"
>
<b
class=
"main-cat selected"
data-cat=
"date"
>
Дата
</b>
</th>
<?php
foreach
(
$campaign_stat_cats
as
$name
=>
$cat
)
:
?>
<th
class=
"
<?=
$name
?>
"
data-id=
"
<?=
$name
?>
"
>
<span
style=
"border-color:
<?=
$cat
[
'color'
]
?>
;"
>
<input
type=
"checkbox"
data-field=
"
<?=
$name
?>
"
checked
/>
</span>
<b
class=
"cat"
id=
"
<?=
$name
?>
"
>
<?=
$cat
[
'title'
]
?>
</b>
</th>
<?php
endforeach
;
?>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div
class=
"chart-graph-stat-info"
>
<h2>
По заданным параметрам статистика отсутствует
</h2>
</div>
<div
class=
"chart-graph-stat-error"
>
<h2>
Ошибка в статистике
</h2>
<div
class=
"message"
></div>
</div>
<!-- По сайтам -->
<div
class=
"form-group-data stat-sites"
data-type=
"stat-sites"
>
<!-- Дата -->
<div
class=
"form-group"
>
<label
for=
"campaign-date-begin"
>
<?=
_t
(
'Дата'
)
?>
</label>
c:
<input
type=
'text'
id=
"campaign-date-begin"
class=
"campaign-date-begin form-control date-value"
name=
"date_begin"
value=
"
<?=
$campaign_date_begin
?>
"
/>
по:
<input
type=
'text'
id=
"campaign-date-end"
class=
"campaign-date-end form-control date-value"
name=
"date_end"
value=
"
<?=
$campaign_date_end
?>
"
/>
</div>
<!-- График -->
<div
id=
"chart-graph-stat"
data-colors=
<?=
(
$colors_active_lines
?
json_encode
(
$colors_active_lines
)
:
''
)
?>
>
</div
>
<!-- Таблица -->
<div
id=
"table-stat"
class=
"b-table_wrapp report"
>
<table
id=
"table-line"
class=
"table table-striped"
>
<thead
class=
"sortable"
>
<tr>
<th
class=
"period"
data-id=
"period"
>
<b
class=
"main-cat selected"
data-cat=
"date"
>
Дата
</b>
</th>
<?php
foreach
(
$campaign_stat_cats
as
$name
=>
$cat
)
:
?>
<th
class=
"
<?=
$name
?>
"
data-id=
"
<?=
$name
?>
"
>
<span
style=
"border-color:
<?=
$cat
[
'color'
]
?>
;"
>
<input
type=
"checkbox"
data-field=
"
<?=
$name
?>
"
checked
/>
</span>
<b
class=
"cat"
id=
"
<?=
$name
?>
"
>
<?=
$cat
[
'title'
]
?>
</b>
</th>
<?php
endforeach
;
?>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div
class=
"sites-stats"
>
<textarea
id=
"campaign-sites-stat"
>
<?=
(
$sites_stats
?
json_encode
(
$sites_stats
)
:
''
)
?>
</textarea>
<div
class=
"sites-stats-error"
>
<h2>
Ошибка в статистике
</h2>
<div
class=
"message"
></div>
</div>
<div
class=
"b-table_wrapp"
>
<table
id=
"table-line-sites"
class=
"table table-striped table-by-cats"
>
<thead
class=
"sortable"
>
<tr>
<th
class=
"period"
data-id=
"period"
>
<b
class=
"main-cat selected"
data-cat=
"date"
>
Сайт
</b>
</th>
<?php
foreach
(
$campaign_stat_cats
as
$name
=>
$cat
)
:
?>
<th
class=
"
<?=
$name
?>
"
data-id=
"
<?=
$name
?>
"
>
<b
class=
"cat"
id=
"
<?=
$name
?>
"
>
<?=
$cat
[
'title'
]
?>
</b>
</th>
<?php
endforeach
;
?>
<th
class=
"zone-size"
></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
<!-- По регионам -->
<div
class=
"form-group-data stat-regions"
data-type=
"stat-regions"
>
<!-- Дата -->
<div
class=
"form-group"
>
<label
for=
"campaign-date-begin"
>
<?=
_t
(
'Дата'
)
?>
</label>
c:
<input
type=
'text'
id=
"campaign-date-begin"
class=
"campaign-date-begin form-control date-value"
name=
"date_begin"
value=
"
<?=
$campaign_date_begin
?>
"
/>
по:
<input
type=
'text'
id=
"campaign-date-end"
class=
"campaign-date-end form-control date-value"
name=
"date_end"
value=
"
<?=
$campaign_date_end
?>
"
/>
</div>
<div
class=
"regions-stats"
>
<textarea
id=
"campaign-regions-stat"
>
<?=
(
$regions_stats
?
json_encode
(
$regions_stats
)
:
''
)
?>
</textarea>
<textarea
id=
"regions-codes"
>
<?=
(
$code_regions
?
json_encode
(
$code_regions
)
:
''
)
?>
</textarea>
<textarea
id=
"cities-codes"
>
<?=
(
$code_cities
?
json_encode
(
$code_cities
)
:
''
)
?>
</textarea>
<div
class=
"regions-stats-error"
>
<h2>
Ошибка в статистике
</h2>
<div
class=
"message"
></div>
</div>
<div
class=
"b-table_wrapp"
>
<table
id=
"table-line-regions"
class=
"table table-striped table-by-cats"
>
<thead
class=
"sortable"
>
<tr>
<th
class=
"period"
data-id=
"period"
>
<b
class=
"main-cat selected"
data-cat=
"date"
>
Регион
</b>
</th>
<?php
foreach
(
$campaign_stat_cats
as
$name
=>
$cat
)
:
?>
<th
class=
"
<?=
$name
?>
"
data-id=
"
<?=
$name
?>
"
>
<b
class=
"cat"
id=
"
<?=
$name
?>
"
>
<?=
$cat
[
'title'
]
?>
</b>
</th>
<?php
endforeach
;
?>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment