var initPostViewsCounter = function() {
PostViewsCounter = {
promise: null,
args: {},
/**
* Initialize counter.
*
* @param {object} args
*
* @return {void}
*/
init: function( args ) {
this.args = args;
// default parameters
let params = {};
// set cookie/storage name
let name = 'pvc_visits' + ( args.multisite !== false ? '_' + parseInt( args.multisite ) : '' );
// cookieless data storage?
if ( args.dataStorage === 'cookieless' && this.isLocalStorageAvailable() ) {
params.storage_type = 'cookieless';
params.storage_data = this.readStorageData( name );
/* COUNT_POST_AS_AUTHOR_VIEW | removed parameter from request
if ( 'countAuthor' in args && args.countAuthor === true ) {
params.storage_data_author = this.readStorageData( 'pvc_visits_user' + ( args.multisite !== false ? '_' + parseInt( args.multisite ) : '' ) );
}
*/
} else {
params.storage_type = 'cookies';
params.storage_data = this.readCookieData( name );
/* COUNT_POST_AS_AUTHOR_VIEW | removed parameter from request
if ( 'countAuthor' in args && args.countAuthor === true ) {
params.storage_data_author = this.readCookieData( 'pvc_visits_user' + ( args.multisite !== false ? '_' + parseInt( args.multisite ) : '' ) );
}
*/
}
// rest api request
if ( args.mode === 'rest_api' ) {
this.promise = this.request( args.requestURL, params, 'POST', {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',
'X-WP-Nonce': args.nonce
}, name );
// admin ajax request
} else {
params.action = 'pvc-check-post';
params.pvc_nonce = args.nonce;
params.id = args.postID;
this.promise = this.request( args.requestURL, params, 'POST', {
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
}, name );
}
},
/**
* Handle fetch request.
*
* @param {string} url
* @param {object} params
* @param {string} method
* @param {object} headers
* @param {string} name
*
* @return {object}
*/
request: function( url, params, method, headers, name = '' ) {
let options = {
method: method,
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: headers,
body: this.prepareRequestData( params )
};
const _this = this;
return fetch( url, options ).then( function( response ) {
// invalid response?
if ( ! response.ok )
throw Error( response.statusText );
return response.json();
} ).then( function( response ) {
try {
if ( typeof response === 'object' && response !== null ) {
if ( 'success' in response && response.success === false ) {
console.log( 'Request error' );
console.log( response.data );
} else {
if ( _this.args.dataStorage === 'cookieless' )
_this.saveStorageData.call( _this, name, response.storage, response.type );
else
_this.saveCookieData( name, response.storage );
_this.triggerEvent( 'pvcCheckPost', response );
}
} else {
console.log( 'Invalid object' );
console.log( response );
}
} catch( error ) {
console.log( 'Invalid JSON data' );
console.log( error );
}
} ).catch( function( error ) {
console.log( 'Invalid response' );
console.log( error );
} );
},
/**
* Prepare the data to be sent with the request.
*
* @param {object} data
*
* @return {string}
*/
prepareRequestData: function( data ) {
return Object.keys( data ).map( function( el ) {
// add extra "data" array
return encodeURIComponent( el ) + '=' + encodeURIComponent( data[el] );
} ).join( '&' ).replace( /%20/g, '+' );
},
/**
* Prepare the data to be sent with the request.
*
* @param {string} eventName
* @param {object} data
*
* @return {void}
*/
triggerEvent: function( eventName, data ) {
const newEvent = new CustomEvent( eventName, {
bubbles: true,
detail: data
} );
// trigger event
document.dispatchEvent( newEvent );
},
/**
* Save localStorage data.
*
* @param {string} name
* @param {object} data
* @param {string} type
*
* @return {void}
*/
saveStorageData: function( name, data, type ) {
/* COUNT_POST_AS_AUTHOR_VIEW | removed setting localStorage user data
if ( 'countAuthor' in this.args && this.args.countAuthor === true && 'user' in data )
window.localStorage.setItem( 'pvc_visits_user' + ( this.args.multisite !== false ? '_' + parseInt( this.args.multisite ) : '' ), JSON.stringify( data['user'] ) );
*/
window.localStorage.setItem( name, JSON.stringify( data[type] ) );
},
/**
* Read localStorage data.
*
* @param {string} name
*
* @return {string}
*/
readStorageData: function( name ) {
let data = null;
// get data
data = window.localStorage.getItem( name );
// no data?
if ( data === null )
data = '';
return data;
},
/**
* Save cookies.
*
* @param {string} name
* @param {object} data
*
* @return {void}
*/
saveCookieData: function( name, data ) {
var cookieSecure = '';
// ssl?
if ( document.location.protocol === 'https:' )
cookieSecure = ';secure';
for ( let i = 0; i < data.name.length; i++ ) {
var cookieDate = new Date();
var expiration = parseInt( data.expiry[i] );
// valid expiration timestamp?
if ( expiration )
expiration = expiration * 1000;
// add default 24 hours
else
expiration = cookieDate.getTime() + 86400000;
// set cookie date expiry
cookieDate.setTime( expiration );
// set cookie
document.cookie = data.name[i] + '=' + data.value[i] + ';expires=' + cookieDate.toUTCString() + ';path=/' + ( this.args.path === '/' ? '' : this.args.path ) + ';domain=' + this.args.domain + cookieSecure + ';SameSite=Lax';
}
},
/**
* Read cookies.
*
* @param {string} name
*
* @return {string}
*/
readCookieData: function( name ) {
var cookies = [];
document.cookie.split( ';' ).forEach( function( el ) {
var [key, value] = el.split( '=' );
var trimmedKey = key.trim();
var regex = new RegExp( name + '\\[\\d+\\]' );
// look all cookies starts with name parameter
if ( regex.test( trimmedKey ) )
cookies.push( value );
} );
return cookies.join( 'a' );
},
/**
* Check whether localStorage is available.
*
* @return {bool}
*/
isLocalStorageAvailable: function() {
var storage;
try {
storage = window['localStorage'];
storage.setItem( '__pvcStorageTest', 0 );
storage.removeItem( '__pvcStorageTest' );
return true;
} catch( e ) {
return e instanceof DOMException && ( e.code === 22 || e.code === 1014 || e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED' ) && ( storage && storage.length !== 0 );
}
}
}
PostViewsCounter.init( pvcArgsFrontend );
}
document.addEventListener( 'DOMContentLoaded', initPostViewsCounter );{"id":9069,"date":"2018-06-29T13:46:37","date_gmt":"2018-06-29T13:46:37","guid":{"rendered":"https:\/\/masterhellas.alexas.gr\/index.php\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/"},"modified":"2023-09-06T08:33:52","modified_gmt":"2023-09-06T08:33:52","slug":"tsimpida-ilektrosygkollisis-tig-wsme-200","status":"publish","type":"product","link":"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/","title":{"rendered":"\u03a4\u03a3\u0399\u039c\u03a0\u0399\u0394\u0391 \u0397\u039b\u0395\u039a\u03a4\u03a1\u039f\u03a3\u03a5\u0393\u039a\u039f\u039b\u039b\u0397\u03a3\u0397\u03a3 QUADRO TIG-WSME-200"},"content":{"rendered":"\u03a4\u03c3\u03b9\u03bc\u03c0\u03af\u03b4\u03b1 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03c3\u03c5\u03b3\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2 QUADRO TIG-WSME-200 \u03bc\u03b5 4.20 \u03bc\u03ad\u03c4\u03c1\u03b1 \u03ba\u03b1\u03bb\u03ce\u03b4\u03b9\u03bf.<\/p>\n
\u0397 \u03c4\u03c3\u03b9\u03bc\u03c0\u03af\u03b4\u03b1 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03c3\u03c5\u03b3\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2 TIG \u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03b9 \u03ba\u03b1\u03c0\u03ad\u03bb\u03bf \u03c4\u03c3\u03b9\u03bc\u03c0\u03af\u03b4\u03b1\u03c2, \u03c3\u03c6\u03b9\u03b3\u03ba\u03c4\u03ae\u03c1\u03b1 \u03ba\u03b1\u03b9 \u03ba\u03b5\u03c1\u03b1\u03bc\u03b9\u03ba\u03ac.<\/p>\n","protected":false},"excerpt":{"rendered":"
\u03a4\u03c3\u03b9\u03bc\u03c0\u03af\u03b4\u03b1 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03c3\u03c5\u03b3\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2 TIG-WSME-200 \u03bc\u03b5 4.20 \u03bc\u03ad\u03c4\u03c1\u03b1 \u03ba\u03b1\u03bb\u03ce\u03b4\u03b9\u03bf.<\/p>\n","protected":false},"featured_media":9068,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"yoast_head":"\n
\u03a4\u03a3\u0399\u039c\u03a0\u0399\u0394\u0391 \u0397\u039b\u0395\u039a\u03a4\u03a1\u039f\u03a3\u03a5\u0393\u039a\u039f\u039b\u039b\u0397\u03a3\u0397\u03a3 QUADRO TIG-WSME-200 - Master Hellas<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/\" \/>\n<meta property=\"og:locale\" content=\"el_GR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u03a4\u03a3\u0399\u039c\u03a0\u0399\u0394\u0391 \u0397\u039b\u0395\u039a\u03a4\u03a1\u039f\u03a3\u03a5\u0393\u039a\u039f\u039b\u039b\u0397\u03a3\u0397\u03a3 QUADRO TIG-WSME-200 - Master Hellas\" \/>\n<meta property=\"og:description\" content=\"\u03a4\u03c3\u03b9\u03bc\u03c0\u03af\u03b4\u03b1 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03c3\u03c5\u03b3\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2 TIG-WSME-200 \u03bc\u03b5 4.20 \u03bc\u03ad\u03c4\u03c1\u03b1 \u03ba\u03b1\u03bb\u03ce\u03b4\u03b9\u03bf.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/\" \/>\n<meta property=\"og:site_name\" content=\"Master Hellas\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-06T08:33:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/masterhellas.com.gr\/wp-content\/uploads\/2018\/06\/3659-thickbox_default-TSIMPIDA-ILEKTROSYGKOLLISIS-TIGWSME-200.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/masterhellas.com.gr\/#website\",\"url\":\"https:\/\/masterhellas.com.gr\/\",\"name\":\"Master Hellas\",\"description\":\"MasterHellas\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/masterhellas.com.gr\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"el\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/#primaryimage\",\"inLanguage\":\"el\",\"url\":\"https:\/\/masterhellas.com.gr\/wp-content\/uploads\/2018\/06\/3659-thickbox_default-TSIMPIDA-ILEKTROSYGKOLLISIS-TIGWSME-200.jpg\",\"width\":800,\"height\":800,\"caption\":\"\\u03a4\\u03a3\\u0399\\u039c\\u03a0\\u0399\\u0394\\u0391 \\u0397\\u039b\\u0395\\u039a\\u03a4\\u03a1\\u039f\\u03a3\\u03a5\\u0393\\u039a\\u039f\\u039b\\u039b\\u0397\\u03a3\\u0397\\u03a3 TIG\/WSME-200-masterhellas\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/#webpage\",\"url\":\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/\",\"name\":\"\\u03a4\\u03a3\\u0399\\u039c\\u03a0\\u0399\\u0394\\u0391 \\u0397\\u039b\\u0395\\u039a\\u03a4\\u03a1\\u039f\\u03a3\\u03a5\\u0393\\u039a\\u039f\\u039b\\u039b\\u0397\\u03a3\\u0397\\u03a3 QUADRO TIG-WSME-200 - Master Hellas\",\"isPartOf\":{\"@id\":\"https:\/\/masterhellas.com.gr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/#primaryimage\"},\"datePublished\":\"2018-06-29T13:46:37+00:00\",\"dateModified\":\"2023-09-06T08:33:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/#breadcrumb\"},\"inLanguage\":\"el\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/masterhellas.com.gr\/\",\"url\":\"https:\/\/masterhellas.com.gr\/\",\"name\":\"\\u0391\\u03c1\\u03c7\\u03b9\\u03ba\\u03ae\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/masterhellas.com.gr\/shop\/\",\"url\":\"https:\/\/masterhellas.com.gr\/shop\/\",\"name\":\"Shop\"}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/\",\"url\":\"https:\/\/masterhellas.com.gr\/product\/tsimpida-ilektrosygkollisis-tig-wsme-200\/\",\"name\":\"\\u03a4\\u03a3\\u0399\\u039c\\u03a0\\u0399\\u0394\\u0391 \\u0397\\u039b\\u0395\\u039a\\u03a4\\u03a1\\u039f\\u03a3\\u03a5\\u0393\\u039a\\u039f\\u039b\\u039b\\u0397\\u03a3\\u0397\\u03a3 QUADRO TIG-WSME-200\"}}]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/masterhellas.com.gr\/wp-json\/wp\/v2\/product\/9069"}],"collection":[{"href":"https:\/\/masterhellas.com.gr\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/masterhellas.com.gr\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/masterhellas.com.gr\/wp-json\/wp\/v2\/comments?post=9069"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/masterhellas.com.gr\/wp-json\/wp\/v2\/media\/9068"}],"wp:attachment":[{"href":"https:\/\/masterhellas.com.gr\/wp-json\/wp\/v2\/media?parent=9069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}