Commit 87a7cb10 by Muhammad Usman

generate share link

parent 7ec81660
......@@ -265,6 +265,19 @@ function vq_add_review_subscribers() {
exit;
}
function vq_get_saved_speed_results() {
$batchId = $_POST['batchId'];
global $wpdb;
$speed_table_name = $wpdb->prefix . "speed_results";
$oldResutls = $wpdb->get_results("SELECT server_response_time, page_load_time FROM $speed_table_name WHERE batch_id != '$batchId'");
$newResutls = $wpdb->get_results("SELECT * FROM $speed_table_name WHERE batch_id = '$batchId'");
echo json_encode(['oldData' => $oldResutls, 'newData' => $newResutls]);
exit;
}
// Actions
add_action( 'customize_register', 'vq_theme_customize_register' );
......@@ -274,6 +287,9 @@ add_action( 'init', 'vq_add_theme_default_pages' );
add_action( 'wp_ajax_nopriv_get_speed_results', 'vq_get_hosting_speed' );
add_action( 'wp_ajax_get_speed_results', 'vq_get_hosting_speed' );
add_action( 'wp_ajax_nopriv_get_saved_speed_results', 'vq_get_saved_speed_results' );
add_action( 'wp_ajax_get_saved_speed_results', 'vq_get_saved_speed_results' );
add_action( 'wp_ajax_nopriv_add_review_subscribers', 'vq_add_review_subscribers' );
add_action( 'wp_ajax_add_review_subscribers', 'vq_add_review_subscribers' );
......
......@@ -8,6 +8,11 @@ get_header();
$domain = '';
if ( isset( $_GET['domain'] ) ) {
$domain = $_GET['domain'];
$domain = preg_replace('#^https?://#', '', $domain);
} else if (isset($_GET['batchId'])) {
$batchId = $_GET['batchId'];
} else {
header('Location: /');
}
?>
......@@ -99,11 +104,11 @@ if ( isset( $_GET['domain'] ) ) {
</div>
</div>
<div class="d-none d-sm-block d-md-block">
<img class="summarySocailIocn"
<img class="summarySocailIocn" onclick="shareToFacebook()"
src="<?php echo get_template_directory_uri(); ?>/assets/images/facebook-icon.jpg" alt="">
<img class="summarySocailIocn top-133"
<img class="summarySocailIocn top-133" onclick="shareOnTwitter()"
src="<?php echo get_template_directory_uri(); ?>/assets/images/twitter-icon.jpg" alt="">
<img class="summarySocailIocn top-177"
<img class="summarySocailIocn top-177" onclick="shareOnLinkedIn()"
src="<?php echo get_template_directory_uri(); ?>/assets/images/linked-icon.jpg" alt="">
</div>
<table class="table table-striped radius">
......@@ -261,7 +266,7 @@ if ( isset( $_GET['domain'] ) ) {
<script>
var domain_addr = '<?php echo $domain ?>';
var requestId = '<?php echo $batchId ?>';
jQuery(document).ready(function ($) {
......@@ -301,78 +306,145 @@ if ( isset( $_GET['domain'] ) ) {
if (response.error) {
return alert(response.error);
}
parseData(response);
});
} else if (requestId) {
var actData = {
'action': 'get_saved_speed_results',
'batchId': requestId
};
resultLoader.style.display = 'block';
reviewData.style.display = 'none';
$.post(ajax_url, actData, function(response) {
if (response.error) {
return alert(response.error);
}
parseData(response);
});
}
reviewTableDetailsBody.innerHTML = '';
reviewData.style.display = 'flex';
resultLoader.style.display = 'none';
let newResults = JSON.parse(response).newData;
let oldData = JSON.parse(response).oldData;
function parseData(response) {
let newResults = JSON.parse(response).newData;
let oldData = JSON.parse(response).oldData;
var respTime = 0;
var loadTime = 0;
newResults.forEach(res => {
var reviewRowTemplate = `<tr>
reviewTableDetailsBody.innerHTML = '';
reviewData.style.display = 'flex';
resultLoader.style.display = 'none';
var respTime = 0;
var loadTime = 0;
newResults.forEach(res => {
var reviewRowTemplate = `<tr>
<td class="summaryTD">${res.server_location}</td>
<td class="summaryTD">${res.server_response_time} ms</td>
<td class="summaryTD">${res.page_load_time} ms</td>
</tr>`;
reviewTableDetailsBody.innerHTML += reviewRowTemplate;
respTime += +res.server_response_time;
loadTime += +res.page_load_time;
});
domainNameEl.innerText = newResults[0].domain_addr;
domainIPEl.innerText = newResults[0].domain_ip;
hostingNameEl.innerText = newResults[0].hosting_name;
hostingNameEl.innerText = '-';
avgResTimeEl.innerText = Math.floor(respTime / newResults.length).toString();
avgPageLoadTimeEl.innerText = Math.floor(loadTime / newResults.length).toString();
screenshotImgEl.src = newResults[0].imgPath;
loadVideoEl.src = newResults[0].videoPath;
var serverResTimes = oldData.map(o => +o.server_response_time + +o.page_load_time).sort((o1, o2) => o1 - o2);
var grade = 'F';
var rank = (100 - (percentRank(serverResTimes, (respTime + loadTime) / newResults.length) * 100));
if (rank > 95) {
grade = 'A'
} else if (rank > 85) {
grade = 'B'
} else if (rank > 75) {
grade = 'C'
} else if (rank > 65) {
grade = 'D'
} else {
grade = 'E'
}
reviewTableDetailsBody.innerHTML += reviewRowTemplate;
respTime += +res.server_response_time;
loadTime += +res.page_load_time;
});
var singleRecord = newResults[0];
domainNameEl.innerText = singleRecord.domain_addr;
domainIPEl.innerText = singleRecord.domain_ip;
hostingNameEl.innerText = singleRecord.hosting_name;
hostingNameEl.innerText = '-';
avgResTimeEl.innerText = Math.floor(respTime / newResults.length).toString();
avgPageLoadTimeEl.innerText = Math.floor(loadTime / newResults.length).toString();
const imgPath = `${singleRecord.server_name}/${singleRecord.domain_addr}/${singleRecord.timestamp}/${singleRecord.screen_shot}`;
const videoPath = `${singleRecord.server_name}/${singleRecord.domain_addr}/${singleRecord.timestamp}/${singleRecord.video}`;
screenshotImgEl.src = imgPath;
loadVideoEl.src = videoPath;
var serverResTimes = oldData.map(o => +o.server_response_time + +o.page_load_time).sort((o1, o2) => o1 - o2);
var grade = 'F';
var rank = (100 - (percentRank(serverResTimes, (respTime + loadTime) / newResults.length) * 100));
if (rank > 95) {
grade = 'A'
} else if (rank > 85) {
grade = 'B'
} else if (rank > 75) {
grade = 'C'
} else if (rank > 65) {
grade = 'D'
} else {
grade = 'E'
}
if (grade !== 'A') {
hasProblems.style.display = 'block';
topHostings.style.display = 'block';
topCachePlugins.style.display = 'block';
}
if (grade !== 'A') {
hasProblems.style.display = 'block';
topHostings.style.display = 'block';
topCachePlugins.style.display = 'block';
}
reviewGradeEl.innerText = grade;
reviewPerformanceEl.innerText = Math.floor(rank);
});
reviewGradeEl.innerText = grade;
reviewPerformanceEl.innerText = Math.floor(rank);
}
});
function percentRank(arr, v) {
if (typeof v !== 'number') throw new TypeError('v must be a number');
for (var i = 0, l = arr.length; i < l; i++) {
if (v <= arr[i]) {
while (i < l && v === arr[i]) i++;
if (i === 0) return 0;
if (v !== arr[i-1]) {
i += (v - arr[i-1]) / (arr[i] - arr[i-1]);
function percentRank(arr, v) {
if (typeof v !== 'number') throw new TypeError('v must be a number');
for (var i = 0, l = arr.length; i < l; i++) {
if (v <= arr[i]) {
while (i < l && v === arr[i]) i++;
if (i === 0) return 0;
if (v !== arr[i-1]) {
i += (v - arr[i-1]) / (arr[i] - arr[i-1]);
}
return i / l;
}
return i / l;
}
return 1;
}
return 1;
});
<?php
$base_url = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on' ? 'https' : 'http' ) . '://' . $_SERVER['HTTP_HOST'];
$url = $base_url . $_SERVER["REQUEST_URI"];
$url = preg_replace('#^https?://#', '', $url);
?>
var pageUri = '<?php echo $url; ?>';
function shareToFacebook() {
var a = document.createElement('a');
a.href = `https://www.facebook.com/sharer/sharer.php?u=${decodeURI(pageUri)}`;
a.target = '_blank';
a.click();
document.body.append(a);
setTimeout(() => {
a.remove();
})
}
function shareOnTwitter(){
var a = document.createElement('a');
a.href = `https://twitter.com/intent/tweet?url=${pageUri}`;
a.target = '_blank';
a.click();
document.body.append(a);
setTimeout(() => {
a.remove();
});
}
function shareOnLinkedIn() {
var a = document.createElement('a');
a.href = `https://www.linkedin.com/sharing/share-offsite/?url=${pageUri}`;
a.target = '_blank';
a.click();
document.body.append(a);
setTimeout(() => {
a.remove();
});
}
</script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment