PageRenderTime 48ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/pages/web-traffic.php

https://bitbucket.org/14rego/cman
PHP | 724 lines | 636 code | 63 blank | 25 comment | 96 complexity | a0c0b4c30f763b0b1f243e8f6fd949ea MD5 | raw file
  1. <h1>Web Traffic</h1>
  2. <script src="http://code.highcharts.com/highcharts.js" type="text/javascript"></script>
  3. <script src="http://code.highcharts.com/modules/exporting.js" type="text/javascript"></script>
  4. <script src="/resources/scripts/excanvas.min.js" type="text/javascript"></script>
  5. <div id="holder-web-traffic2"></div>
  6. <div id="holder-web-traffic"></div>
  7. <br /><br />
  8. <p>
  9. <a id="button-search" class="notice" href="#update-data">Update</a>
  10. <a id="button-reset" class="notice" href="#reset-data">Reset</a>
  11. <a id="button-show" class="notice" href="#reset-data">Show Data Below</a>
  12. <style>
  13. ul li label { width: 90px; }
  14. ul li select { min-width: 45px; }
  15. </style>
  16. <ul>
  17. <li>
  18. <label>VisiStat Key</label>
  19. <select id="filter-traffic-client" class="update-list">
  20. <option value="ALL">Encompassing</option>
  21. <option value="SSI">Softek</option>
  22. <option value="ILM">Illuminate</option>
  23. <option value="OTK">Ontrack</option>
  24. </select>
  25. <label>Data Type</label>
  26. <select id="filter-traffic-code" class="update-list">
  27. <option value="pv">Page Visits</option>
  28. <option value="uv">Unique Visitors</option>
  29. <option value="pp">Popular Pages</option>
  30. <optgroup label="Single Page Traffic" id="filter-select-single-page"><?php
  31. // SINGLE PAGE SELECT
  32. $apiYr = date('Y');
  33. $apiMo = sprintf('%02d', (date('m')-1));
  34. if ($apiMo==0) { $apiMo = 12; $apiYr = date('Y')-1; }
  35. $pages = file('http://api.visistat.com/stats-api.php?key=skW74P.TiTpIE&qt=pp&d=pipe&sdate='.$apiYr.'-'.$apiMo.'-01&edate='.date('Y').'-'.date('m').'-'.sprintf('%02d', (date('d'))));
  36. sort($pages);
  37. foreach ($pages as $pageData) {
  38. $page_name = explode("|",$pageData);
  39. if ((strpos($page_name[0],'gclid')) || (strpos($page_name[0],'https'))){
  40. // do nothing if there's a click ID attached or security
  41. } else {
  42. if ($page_name[0]=='Home Page') { $page_name[0] = '/index'; }
  43. echo '<option value="'.$page_name[0].'" title="';
  44. if (strpos($page_name[0],'illuminate/')) { echo 'ilm'; }
  45. else if (strpos($page_name[0],'ontrack/')) { echo 'otk'; }
  46. else { echo 'ssi'; }
  47. echo '">'.substr($page_name[0], 0, 56);
  48. if (strlen($page_name[0])>56) { echo '&hellip;'; }
  49. echo '</option>';
  50. }
  51. } ?>
  52. </optgroup>
  53. </select>
  54. </li>
  55. <li>
  56. <label>From</label>
  57. <select id="filter-traffic-s_mo" class="update-list">
  58. <?php for ($mo = 1; $mo < 13; $mo++) { echo '<option value="'.sprintf('%02d', $mo).'">'.date('F', mktime(0, 0, 0, $mo, 1, 2000)).'</option>'; } ?>
  59. </select>
  60. <select id="filter-traffic-s_dy" class="update-list">
  61. <?php for ($dy = 1; $dy < 32; $dy++) { echo '<option value="'.sprintf('%02d', $dy).'">'.$dy.'</option>'; } ?>
  62. </select>
  63. <select id="filter-traffic-s_yr" class="update-list">
  64. <?php $thisYear = date('Y'); for ($yr = 2009; $yr <= $thisYear; $yr++) { echo '<option value="'.$yr.'">'.$yr.'</option>'; } ?>
  65. </select>
  66. <label>To</label>
  67. <select id="filter-traffic-e_mo" class="update-list">
  68. <?php for ($mo = 1; $mo < 13; $mo++) { echo '<option value="'.sprintf('%02d', $mo).'">'.date('F', mktime(0, 0, 0, $mo, 1, 2000)).'</option>'; } ?>
  69. </select>
  70. <select id="filter-traffic-e_dy" class="update-list">
  71. <?php for ($dy = 1; $dy < 32; $dy++) { echo '<option value="'.sprintf('%02d', $dy).'">'.$dy.'</option>'; } ?>
  72. </select>
  73. <select id="filter-traffic-e_yr" class="update-list">
  74. <?php $thisYear = date('Y'); for ($yr = 2009; $yr <= $thisYear; $yr++) { echo '<option value="'.$yr.'">'.$yr.'</option>'; } ?>
  75. </select>
  76. </li>
  77. <li>
  78. <label>Chart Type</label>
  79. <select id="filter-traffic-type" class="update-list">
  80. <option value="line">Jagged Lines</option>
  81. <option value="spline">Smooth Lines</option>
  82. <option value="column">Columns</option>
  83. <option value="area">Area</option>
  84. <option value="bar">Bars</option>
  85. </select>
  86. <label>Labels</label>
  87. <select id="filter-traffic-show" class="update-list">
  88. <option value="yes">Yes</option>
  89. <option value="no">No</option>
  90. </select>, every:
  91. <select id="filter-traffic-step" class="update-list">
  92. <option value="1">day</option>
  93. <option value="7">week</option>
  94. <option value="14">2 weeks</option>
  95. <option value="28">4 weeks</option>
  96. </select>
  97. </li>
  98. </ul>
  99. Showing more than a few months of data at a time can take a significant amount of time and could cause browser time-out errors.
  100. </p>
  101. <br /><br />
  102. <h6 id="holder-web-data"></h6>
  103. <script>
  104. $.nextDay = function(year, month, day){
  105. var jMo = parseInt(month, 10)-1;
  106. var today = new Date(year, jMo, day);
  107. var tomorrow = new Date(today.getTime() + (24 * 60 * 60 * 1000));
  108. var nextDy = tomorrow.getDate();
  109. var nextMo = tomorrow.getMonth()+1;
  110. var nextYr = tomorrow.getFullYear();
  111. if (nextDy<10) { nextDy = '0'+nextDy; }
  112. if (nextMo<10) { nextMo = '0'+nextMo; }
  113. var tomDate = parseInt(nextYr+''+nextMo+''+nextDy, 10);
  114. return tomDate;
  115. };
  116. $.buildGraph = function(code, type, data, starter, ender){
  117. // SET CLIENT TITLE
  118. var sClient = $('#filter-traffic-client').val();
  119. <?php $minus1 = $thisYear-1; $minus2 = $thisYear-2; $minus3 = $thisYear-3; ?>
  120. var labelOne = '<?php echo $minus3; ?>';
  121. var labelTwo = '<?php echo $minus2; ?>';
  122. var labelThree = '<?php echo $minus1; ?>';
  123. var labelFour = '<?php echo $thisYear; ?>';
  124. if (sClient==='OTK') { setCLIENT = 'OnTrack'; }
  125. else if (sClient==='ILM') { setCLIENT = 'Illuminate'; }
  126. else if (sClient==='SSI') { setCLIENT = 'Softek'; }
  127. else {
  128. setCLIENT = 'All Sites';
  129. var labelOne = 'Illuminate'; var labelTwo = 'OnTrack'; var labelThree = 'Softek'; var labelFour = 'Encompassing';
  130. }
  131. // SET DATA TYPE
  132. if (code==='uv') { setTITLE = 'Unique Visitors'; }
  133. else if (code==='pp') { setTITLE = 'Popular Pages'; }
  134. else if (code==='seo') { setTITLE = 'Keywords'; }
  135. else { setTITLE = 'Page Views'; }
  136. // SET MONTHLY SUBTITLE
  137. var sMonthName = $('#filter-traffic-s_mo').val();
  138. var eMonthName = $('#filter-traffic-e_mo').val();
  139. var setSUBTITLE = $('#filter-traffic-s_mo option[value="'+sMonthName+'"]').text();
  140. if (sMonthName!=eMonthName) {
  141. setSUBTITLE = setSUBTITLE+' thru '+$('#filter-traffic-e_mo option[value="'+eMonthName+'"]').text();
  142. }
  143. // SET LABELS
  144. if ($('#filter-traffic-show').val()==='yes') { var showLABELS = true; } else { var showLABELS = false; }
  145. var numLABELS = $('#filter-traffic-step').val();
  146. // SPLIT DATA INTO SITES
  147. var parsedSITES = data.split('!!');
  148. // SPLIT DATA INTO DAYS
  149. var parsedDATA = [];
  150. for (s = 0; s < 4; s++) {
  151. parsedDATA[s] = [];
  152. parsedDATA[s].push(parsedSITES[s]);
  153. parsedDATA[s] = parsedDATA[s].toString().split('##');
  154. $.each(parsedDATA[s], function(index, value) {
  155. var showDATA = value.toString().split('|');
  156. if (showDATA[1]>0) {
  157. $('#holder-web-data').append(showDATA[0]+': '+showDATA[1]+'<br />');
  158. } else {
  159. $('#holder-web-data').append('<br />');
  160. }
  161. });
  162. }
  163. // SET DATE RANGE FOR THE TWO STRINGS
  164. var starterCATS = parseInt(starter, 10);
  165. // BUILD CATEGORY ARRAY OF DATES
  166. var arrCATS = [];
  167. while (starterCATS <= ender) {
  168. starterCATS = starterCATS.toString();
  169. var year = starterCATS.substr(0, 4);
  170. var month = starterCATS.substr(4, 2);
  171. var day = starterCATS.substr(6, 2);
  172. var pushingDate = ''+month+'-'+day+'';
  173. arrCATS.push(pushingDate);
  174. starterCATS = $.nextDay(year, month, day);
  175. }
  176. // BUILD VALUES, DISPLAYING 0 IF NO DATA
  177. var arrVALS = [];
  178. for (i = 0; i < 4; i++) {
  179. var dayCount = 1;
  180. arrVALS[i] = [];
  181. var starterVALS = starter;
  182. while (starterVALS <= ender) {
  183. starterVALS = starterVALS.toString();
  184. var year = starterVALS.substr(0, 4);
  185. var month = starterVALS.substr(4, 2);
  186. var day = starterVALS.substr(6, 2);
  187. var marker = month+'-'+day;
  188. var itemVALUE = [];
  189. itemVALUE[i] = [];
  190. itemVALUE[i].push(parsedDATA[i][dayCount]);
  191. itemVALUE[i] = itemVALUE[i].toString().split('|');
  192. var dataDay = itemVALUE[i][0].substr(5, 5).toString();
  193. if (dataDay===marker) {
  194. arrVALS[i].push(parseInt(itemVALUE[i][1], 10));
  195. dayCount++;
  196. } else {
  197. arrVALS[i].push(0);
  198. }
  199. starterVALS = $.nextDay(year, month, day);
  200. }
  201. }
  202. var chart = new Highcharts.Chart({
  203. chart: {
  204. renderTo: 'holder-web-traffic',
  205. defaultSeriesType: type,
  206. margin: [60, 10, 70, 80]
  207. },
  208. colors: [
  209. '#0022CC',
  210. '#EE8800',
  211. '#0099EE',
  212. '#AABBBB'
  213. ],
  214. title: {
  215. text: setCLIENT+' '+setTITLE
  216. },
  217. subtitle: {
  218. text: setSUBTITLE
  219. },
  220. xAxis: {
  221. categories: arrCATS,
  222. labels: {
  223. rotation: -90,
  224. align: 'center',
  225. step: numLABELS,
  226. enabled: showLABELS,
  227. y: 23,
  228. x: 3
  229. }
  230. },
  231. yAxis: {
  232. min: 0,
  233. title: { text: 'Each Day' },
  234. plotLines: [{
  235. value: 0,
  236. width: 1,
  237. color: '#808080'
  238. }]
  239. },
  240. series: [
  241. {
  242. name: labelOne,
  243. data: arrVALS[0],
  244. marker: { enabled: false }
  245. },
  246. {
  247. name: labelTwo,
  248. data: arrVALS[1],
  249. marker: { enabled: false }
  250. },
  251. {
  252. name: labelThree,
  253. data: arrVALS[2],
  254. marker: { enabled: false }
  255. },
  256. {
  257. name: labelFour,
  258. data: arrVALS[3],
  259. marker: { enabled: false }
  260. }
  261. ],
  262. credits: { enabled: false },
  263. legend: {
  264. align: 'center',
  265. floating: false,
  266. verticalAlign: 'bottom',
  267. borderWidth: 0,
  268. y: 10
  269. },
  270. tooltip: {
  271. formatter: function() {
  272. return '<b>'+ this.x +'</b><br />'+
  273. this.series.name +': '+ this.y;
  274. }
  275. }
  276. });
  277. };
  278. $.buildSingle = function(type, data, starter, ender){
  279. // SET CLIENT TITLE
  280. var sClient = $('#filter-traffic-client').val();
  281. <?php $minus1 = $thisYear-1; $minus2 = $thisYear-2; $minus3 = $thisYear-3; ?>
  282. var labelOne = '<?php echo $minus3; ?>';
  283. var labelTwo = '<?php echo $minus2; ?>';
  284. var labelThree = '<?php echo $minus1; ?>';
  285. var labelFour = '<?php echo $thisYear; ?>';
  286. if (sClient==='OTK') { setCLIENT = 'OnTrack'; }
  287. else if (sClient==='ILM') { setCLIENT = 'Illuminate'; }
  288. else if (sClient==='SSI') { setCLIENT = 'Softek'; }
  289. var setTITLE = setCLIENT+' Page Detail';
  290. // SET MONTHLY SUBTITLE
  291. var sMonthName = $('#filter-traffic-s_mo').val();
  292. var eMonthName = $('#filter-traffic-e_mo').val();
  293. var setSUBTITLE = $('#filter-traffic-s_mo option[value="'+sMonthName+'"]').text();
  294. if (sMonthName!=eMonthName) {
  295. setSUBTITLE = setSUBTITLE+' thru '+$('#filter-traffic-e_mo option[value="'+eMonthName+'"]').text();
  296. }
  297. // SET LABELS
  298. if ($('#filter-traffic-show').val()==='yes') { var showLABELS = true; } else { var showLABELS = false; }
  299. var numLABELS = $('#filter-traffic-step').val();
  300. // Build the dates in the date range into arrCATS
  301. // BUILD CATEGORY ARRAY OF DATES
  302. var arrCATS = [];
  303. // BUILD ARRAYS TO PUSH VALUES
  304. var valViews = [];
  305. var valUnique = [];
  306. var valBounce = [];
  307. var valEntry = [];
  308. var valExit = [];
  309. // Split the data by day
  310. var dataDay = data.split('##');
  311. // SET DATE RANGE FOR THE TWO STRINGS
  312. var dayIndex = dataDay.length - 1; // skip 0 and 1
  313. var starterCATS = starter;
  314. while (starterCATS <= ender) {
  315. starterCATS = starterCATS.toString();
  316. var year = starterCATS.substr(0, 4);
  317. var month = starterCATS.substr(4, 2);
  318. var day = starterCATS.substr(6, 2);
  319. var marker = ''+month+'-'+day+'';
  320. arrCATS.push(marker);
  321. // each set of values
  322. var valAll = dataDay[dayIndex].split('|'); // split all values
  323. var valDay = valAll[0].substr(5, 5).toString(); // date with hyphen
  324. if (valDay===marker) {
  325. valViews.push(parseInt(valAll[1], 10)); // Page views
  326. valUnique.push(parseInt(valAll[2], 10)); // Unique visitors
  327. valBounce.push(parseInt(valAll[3], 10)); // Bounces
  328. valEntry.push(parseInt(valAll[4], 10)); // Entries
  329. valExit.push(parseInt(valAll[5], 10)); // Exits
  330. dayIndex--;
  331. } else {
  332. valViews.push(0); // Page views
  333. valUnique.push(0); // Unique visitors
  334. valBounce.push(0); // Bounces
  335. valEntry.push(0); // Entries
  336. valExit.push(0); // Exits
  337. }
  338. starterCATS = $.nextDay(year, month, day);
  339. }
  340. // DISPLAY THE DATA IN THE HIDDEN DIV
  341. $('#holder-web-data').append('<table><thead><tr><th>Date</th><th>Hits</th><th>Unique</th><th>Bounces</th><th>Entries</th><th>Exits</th></tr></thead><tbody></tbody></table>');
  342. $.each(dataDay, function(index, value) {
  343. var showDATA = value.toString().split('|');
  344. if (showDATA[1]>0) {
  345. $('#holder-web-data tbody').append('<tr><td>'+showDATA[0]+'</td><td>'+showDATA[1]+'</td><td>'+showDATA[2]+'</td><td>'+showDATA[3]+'</td><td>'+showDATA[4]+'</td><td>'+showDATA[5]+'</td></tr>');
  346. }
  347. });
  348. var chart = new Highcharts.Chart({
  349. chart: {
  350. renderTo: 'holder-web-traffic',
  351. defaultSeriesType: type,
  352. margin: [60, 10, 70, 80]
  353. },
  354. colors: [
  355. '#0022CC',
  356. '#EE8800',
  357. '#0099EE',
  358. '#AABBBB'
  359. ],
  360. title: {
  361. text: setTITLE
  362. },
  363. subtitle: {
  364. text: setSUBTITLE
  365. },
  366. xAxis: {
  367. categories: arrCATS,
  368. labels: {
  369. rotation: -90,
  370. align: 'center',
  371. step: numLABELS,
  372. enabled: showLABELS,
  373. y: 23,
  374. x: 3
  375. }
  376. },
  377. yAxis: {
  378. min: 0,
  379. title: { text: 'Each Day' },
  380. plotLines: [{
  381. value: 0,
  382. width: 1,
  383. color: '#808080'
  384. }]
  385. },
  386. series: [
  387. {
  388. name: 'Page Views',
  389. data: valViews,
  390. marker: { enabled: false }
  391. },
  392. {
  393. name: 'Unique Visitors',
  394. data: valUnique,
  395. marker: { enabled: false }
  396. },
  397. {
  398. name: 'Bounces',
  399. data: valBounce,
  400. marker: { enabled: false }
  401. },
  402. {
  403. name: 'Entries',
  404. data: valEntry,
  405. marker: { enabled: false }
  406. },
  407. {
  408. name: 'Exits',
  409. data: valExit,
  410. marker: { enabled: false }
  411. }
  412. ],
  413. credits: { enabled: false },
  414. legend: {
  415. align: 'center',
  416. floating: false,
  417. verticalAlign: 'bottom',
  418. borderWidth: 0,
  419. y: 10
  420. },
  421. tooltip: {
  422. formatter: function() {
  423. return '<b>'+ this.x +'</b><br />'+
  424. this.series.name +': '+ this.y;
  425. }
  426. },
  427. plotOptions: {
  428. spline: {
  429. marker: {
  430. enable: false
  431. }
  432. }
  433. }
  434. });
  435. };
  436. $.buildPopular = function(type, data, starter, ender){
  437. // SET MONTHLY SUBTITLE
  438. var sMonthName = $('#filter-traffic-s_mo').val();
  439. var eMonthName = $('#filter-traffic-e_mo').val();
  440. var setSUBTITLE = $('#filter-traffic-s_mo option[value="'+sMonthName+'"]').text();
  441. if (sMonthName!=eMonthName) {
  442. setSUBTITLE = setSUBTITLE+' thru '+$('#filter-traffic-e_mo option[value="'+eMonthName+'"]').text();
  443. }
  444. // SET LABELS
  445. if ($('#filter-traffic-show').val()==='yes') { var showLABELS = true; } else { var showLABELS = false; }
  446. var numLABELS = $('#filter-traffic-step').val();
  447. // SPLIT INTO DIRECTORIES
  448. var eachDir = data.split('!!');
  449. var sClient = $('#filter-traffic-client').val();
  450. if (sClient==='OTK') { var setCLIENT = 'OnTrack '; var dirDATA = eachDir[1]; }
  451. else if (sClient==='ILM') { var setCLIENT = 'Illuminate '; var dirDATA = eachDir[0]; }
  452. else if (sClient==='SSI') { var setCLIENT = 'Softek '; var dirDATA = eachDir[2]; }
  453. else { var setCLIENT = ''; var dirDATA = eachDir[3]; }
  454. var setTITLE = setCLIENT+' Popular Pages';
  455. // SPLIT INTO PAGES
  456. var pageDATA = dirDATA.split('##');
  457. var pgNAMES = [];
  458. var pgVIEWS = [];
  459. var pgUNIQUE = [];
  460. $.each(pageDATA, function(index, value) {
  461. if (index>=1 && index<=25) {
  462. var pgDATA = value.split('|'); // SPLIT INTO VALUES
  463. if (pgDATA[0].length > 25) { pgDATA[0] = pgDATA[0].substr(0, 25)+'...'; }
  464. pgNAMES.push(pgDATA[0]);
  465. pgVIEWS.push(parseInt(pgDATA[1], 10));
  466. pgUNIQUE.push(parseInt(pgDATA[2], 10));
  467. }
  468. });
  469. $('#holder-web-data').append('<table><thead><tr><th>Page</th><th>Hits</th><th>Unique</th></tr></thead><tbody></tbody></table>');
  470. $.each(pageDATA, function(index, value) {
  471. var showDATA = value.toString().split('|');
  472. if (showDATA[1]>0) {
  473. $('#holder-web-data tbody').append('<tr><td>'+showDATA[0]+'</td><td>'+showDATA[1]+'</td><td>'+showDATA[2]+'</td></tr>');
  474. }
  475. });
  476. var chart = new Highcharts.Chart({
  477. chart: {
  478. renderTo: 'holder-web-traffic',
  479. defaultSeriesType: type,
  480. margin: [55, 10, 160, 80]
  481. },
  482. colors: [
  483. '#0099EE',
  484. '#0022CC'
  485. ],
  486. title: {
  487. text: setCLIENT+' '+setTITLE
  488. },
  489. subtitle: {
  490. text: setSUBTITLE
  491. },
  492. xAxis: {
  493. categories: pgNAMES,
  494. labels: {
  495. rotation: -90,
  496. align: 'right',
  497. step: numLABELS,
  498. enabled: showLABELS,
  499. y: 6,
  500. x: 3
  501. }
  502. },
  503. yAxis: {
  504. min: 0,
  505. title: { text: 'Each Day' },
  506. plotLines: [{
  507. value: 0,
  508. width: 1,
  509. color: '#808080'
  510. }]
  511. },
  512. series: [
  513. {
  514. name: 'Page Views',
  515. data: pgVIEWS,
  516. marker: { enabled: false }
  517. },
  518. {
  519. name: 'Unique Visitors',
  520. data: pgUNIQUE,
  521. marker: { enabled: false }
  522. }
  523. ],
  524. credits: { enabled: false },
  525. legend: {
  526. align: 'center',
  527. floating: false,
  528. verticalAlign: 'top',
  529. borderWidth: 0,
  530. y: 50
  531. },
  532. tooltip: {
  533. formatter: function() {
  534. return '<b>'+ this.x +'</b><br />'+
  535. this.series.name +': '+ this.y;
  536. }
  537. }
  538. });
  539. };
  540. $.resetTraffic = function(list, filter){
  541. $('body').addClass('loading');
  542. $('#holder-web-data').hide();
  543. $('#filter-traffic-client').val('ALL');
  544. $('#filter-traffic-code').val('pv');
  545. $('#filter-traffic-type').val('spline');
  546. var thisDate = new Date();
  547. thisDate.setDate(thisDate.getDate()-1); // UP TO YESTERDAY
  548. var nowDY = thisDate.getDate();
  549. var nowMO = thisDate.getMonth()+1;
  550. var nowYR = thisDate.getFullYear();
  551. if (nowMO===1) {
  552. var lastYR = new Date().getFullYear()-1;
  553. var lastMO = 12;
  554. } else {
  555. var lastYR = nowYR;
  556. var lastMO = new Date().getMonth();
  557. }
  558. if (nowDY<10) { nowDY = '0'+nowDY; }
  559. if (nowMO<10) { nowMO = '0'+nowMO; }
  560. if (lastMO<10) { lastMO = '0'+lastMO; }
  561. $('#filter-traffic-s_yr').val(lastYR);
  562. $('#filter-traffic-s_mo').val(lastMO);
  563. $('#filter-traffic-s_dy').val(01);
  564. $('#filter-traffic-e_yr').val(nowYR);
  565. $('#filter-traffic-e_mo').val(nowMO);
  566. $('#filter-traffic-e_dy').val(nowDY);
  567. $.updateTraffic();
  568. };
  569. $.updateTraffic = function(){
  570. $('#holder-web-data').html('');
  571. var setCLIENT = $('#filter-traffic-client').val();
  572. var setCODE = $('#filter-traffic-code').val();
  573. var setTYPE = $('#filter-traffic-type').val();
  574. var setSYR = $('#filter-traffic-s_yr').val();
  575. var setSMO = $('#filter-traffic-s_mo').val();
  576. var setSDY = $('#filter-traffic-s_dy').val();
  577. var setEYR = $('#filter-traffic-e_yr').val();
  578. var setEMO = $('#filter-traffic-e_mo').val();
  579. var setEDY = $('#filter-traffic-e_dy').val();
  580. if (setCODE!=='uv' && setCODE!=='pp' && setCODE!=='pv' && setCODE!=='seo') { var setPAGE = setCODE; setCODE = 'ps'; }
  581. var nowDY = new Date().getDate()-1;
  582. var nowMO = new Date().getMonth()+1;
  583. var nowYR = new Date().getFullYear();
  584. if (nowDY<10) { nowDY = '0'+nowDY; }
  585. if (nowMO<10) { nowMO = '0'+nowMO; }
  586. var today = parseInt(nowYR+''+nowMO+''+nowDY, 10);
  587. var starter = parseInt(setSYR+''+setSMO+''+setSDY, 10);
  588. if (
  589. (setCLIENT=='ALL' && setCODE!=='pp')
  590. || setCODE==='ps'
  591. || setCODE==='pp'
  592. ) {
  593. $('#filter-traffic-s_yr').show();
  594. $('#filter-traffic-e_yr').show();
  595. var ender = setEYR+''+setEMO+''+setEDY;
  596. } else {
  597. $('#filter-traffic-s_yr').hide();
  598. $('#filter-traffic-e_yr').hide().val($('#filter-traffic-s_yr').val());
  599. var ender = setSYR+''+setEMO+''+setEDY;
  600. }
  601. if (ender>today) {
  602. ender = today;
  603. $('#filter-traffic-e_yr').val(nowYR);
  604. $('#filter-traffic-e_mo').val(nowMO);
  605. $('#filter-traffic-e_dy').val(nowDY);
  606. var setEYR = nowYR;
  607. var setEMO = nowMO;
  608. var setEDY = nowDY;
  609. $.sendMsg('Date Error', 'You cannot pull data from the future.');
  610. }
  611. if (starter>ender) {
  612. $.sendMsg('Date Error', 'The start date cannot be after the end date.');
  613. } else {
  614. var serialData = 'site='+setCLIENT+'&code='+setCODE+'&s_yr='+setSYR+'&s_mo='+setSMO+'&s_dy='+setSDY+'&e_yr='+setEYR+'&e_mo='+setEMO+'&e_dy='+setEDY;
  615. if (setCODE==='ps') { serialData = serialData +'&pg='+setPAGE; }
  616. $.get('/manage/rows/web-traffic-feed.php', serialData)
  617. .success(function(data) {
  618. if (setCODE==='ps') {
  619. $.buildSingle(setTYPE, data, starter, ender);
  620. } else if (setCODE==='pp') {
  621. $.buildPopular(setTYPE, data, starter, ender);
  622. } else {
  623. $.buildGraph(setCODE, setTYPE, data, starter, ender);
  624. }
  625. $('body').delay(250).removeClass('loading');
  626. })
  627. .error(function(data) { $.sendMsg('error'); });
  628. }
  629. };
  630. $(function() {
  631. $.resetTraffic();
  632. $('#filter-traffic-code').change(function(e){
  633. var parentCODE = $('#filter-traffic-code option:selected').attr('title');
  634. if ( parentCODE==='ilm' ) {
  635. $('#filter-traffic-client').val('ILM');
  636. } else if ( parentCODE==='ssi' ) {
  637. $('#filter-traffic-client').val('SSI');
  638. } else if ( parentCODE==='otk' ) {
  639. $('#filter-traffic-client').val('OTK');
  640. }
  641. });
  642. $('.body').keyup( function (e){
  643. if (e.keyCode === 13) { // RETURN
  644. e.preventDefault();
  645. $.updateTraffic();
  646. }
  647. });
  648. $('#button-search').click(function(e){
  649. e.preventDefault();
  650. $.updateTraffic();
  651. });
  652. $('#button-reset').click(function(e){
  653. e.preventDefault();
  654. $.resetTraffic();
  655. });
  656. $('#button-show').click(function(e){
  657. e.preventDefault();
  658. $('#holder-web-data').toggle();
  659. });
  660. });
  661. </script>