// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Mostbet – Fantaziya İdmanı Nədir və Mostbet-də Necə İşləyir? – İsti Masalar və Qumar Xurafatları – Mostbet Kontekstində Elmi İfşa – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Mostbet – Fantaziya İdmanı Nədir və Mostbet-də Necə İşləyir? – İsti Masalar və Qumar Xurafatları – Mostbet Kontekstində Elmi İfşa
Mostbet-də Fantaziya Liqaları – Təsadüfün Riyaziyyatı və Miflərin Söndürülməsi
Fantaziya idmanı, adından da göründüyü kimi, idman biliklərinizə və strategiyanıza əsaslanan bir intellektual oyundur, lakin onun ətrafında toplanan "isti əl" və ya "qismətli gün" kimi irrasional inanclar çox vaxt riyazi reallığı kölgədə qoyur. Burada, Mostbet platformasında, biz bu mifləri elmi məntiq və faktlarla parçalayacağıq. Platformanın təklif etdiyi fantaziya liqaları və turnirləri sadəcə bir əyləncə deyil, ehtimal nəzəriyyəsi və qərarların psixologiyası üzrə praktik bir dərs kimi təhlil edəcəyik. Ətraflı məlumat üçün https://mostbet-app-az.org/ ünvanına baxa bilərsiniz.
Fantaziya İdmanı Nədir və Mostbet-də Necə İşləyir?
Fantaziya idmanında siz virtual komanda yaradır, real oyunçuların real matçlardakı performansına görə xal toplayırsınız. Burada əsas mif ondan ibarətdir ki, bu, təkcə şans oyunudur. Əslində, bu, statistik məlumatların təhlili, zədələr haqqında məlumat və hətta hava şəraitinin təsiri kimi amilləri nəzərə alan mürəkkəb bir qərar qəbul etmə prosesidir. Mostbet-in sistemində hər bir oyunçunun qiyməti və potensial məhsuldarlığı müəyyən edilir, bu da sizin budcenizi – adətən 100 AZN ekvivalenti virtual məbləğ – idarə etməyinizi tələb edir. Burada irrasional olan, bir oyunçunun “formada” olduğuna dair hissiyyatınızı, onun son beş oyundakı orta statistik göstəriciləri ilə müqayisə etməməyinizdir.
Mostbet Platformasında Mövcud Fantaziya Oyun Növləri
Mostbet əsasən futbol üzrə fantaziya liqaları təklif edir, bu da ən geniş statistik bazaya malik idman növüdür. Platformada aşağıdakı formatlar mövcuddur:
Həftəlik Turnirlər: Qısamüddətli strategiya tələb edir, burada “isti əl” mifi ən çox özünü göstərir. Bir oyunçunun bir matçda yaxşı çıxış etməsi, növbəti həftə eyni nəticəni təmin etməsi demək deyil – bu, reqressiyanın ortalamaya doğru meyli adlanan statistik qanunauyğunluqdur.
Mövsümlük Liqalar: Daha uzunmüddətli planlaşdırma və oyunçu dəstinizi idarə etmək bacarığı tələb edir. Burada “bədbəxt zəncir” kimi xurafatlar yox, oyunçuların performansının uzunmüddətli trendləri önəmlidir.
Pulsuz və Ödənişli Liqalar: Ödənişli liqalarda mükafat pulu – AZN ilə ödənilir. Bu, riskin psixologiyasını dəyişir və qərarları daha da emosional edə bilər, lakin riyazi ehtimal dəyişmir.
Özəl Liqalar: Dostlarınızla yarada biləcəyiniz qapalı qruplar. Burada sosial təzyiq qərar qəbulunu təhrif edə bilər, məsələn, hamının seçdiyi məşhur oyunçunu seçməyə meyl yaranır, bu da çox vaxt səmərəsiz olur.
İsti Masalar və Qumar Xurafatları – Mostbet Kontekstində Elmi İfşa
Adi kazino oyunlarında olduğu kimi, fantaziya idmanında da oyunçular “qızıl əllər”, “uğurlu saatlar” və ya “qismətli komanda formaları” kimi səbəbsiz əlamətlərə inanmağa meyllidirlər. Mostbet-in şəffaf statistik paneli belə mifləri dağıtmaq üçün ideal alətdir. Məsələn, bir futbolçu ardıcıl üç matçda qol vurubsa, növbəti matçda vurma ehtimalı artmır – hər matç statistik cəhətdən müstəqil bir hadisədir. Platformanın təqdim etdiyi məlumatlar (orta qol, ötürmə, sarı vərəqə və s.) bu müstəqilliyi aydın şəkildə göstərir. “İsti masa” yoxdur, yalnız keçmiş məlumatların emosional şərhidir.
Bu irrasional davranışı anlamaq üçün aşağıdakı cədvələ nəzər yetirin, burada fantaziya idmançılarının ümumi xurafatları və onların elmi izahı göstərilib:
Oyunçu Xurafatı
İrrasional İnanç
Elmi və Riyazi Reallıq
“Formada olan” oyunçu
Ardıcıl yaxşı nəticələr gələcək uğurun qarantiyasıdır.
Reqressiya (ortalamaya qayıtma) qanunu: performans uzunmüddətdə öz statistik ortasına yaxınlaşır.
Özünə güvən artımı
Bir neçə qalibiyyətdən sonra qərarlar daha düzgün olur.
Özünə inam artımı (overconfidence bias): uğur təsadüfi amillərə bağlı ola bilər, lakin şəxsi bacarığın artdığı hissi yaranır.
Qeyri-adi hadisələrin gözləntisi
“Bu dəfə mütləq fərqli olacaq” – aşağı reytinqli komandadan yüksək xal gözləmək.
Ehtimal nəzəriyyəsi: aşağı orta performans göstəricisi olan oyunçunun partlayış etmə ehtimalı həmişə aşağı qalır.
İddia məbləğinin təsiri
Ödənişli liqaya daha çox pul qoyanda, strategiya “daha güclü” olur.
İtirilmiş xərc təsiri (sunk cost fallacy): qoyulan pul geri qaytarılmır və daha riskli, qeyri-məntiqi qərarlara səbəb ola bilər.
Son hadisənin təsiri
Ən son matçdakı performansa həddindən artıq əhəmiyyət vermək.
Yaxınlıq təsiri (recency bias): bütün mövsüm ərzindəki məlumatlar daha etibarlı göstəricidir.
Mostbet-də Fantaziya Liqalarında Məntiqi Strategiya Qurmaq
Uğurlu olmaq üçün emosional xurafatları kənara qoyub, elmi yanaşmanı mənimsəmək lazımdır. Mostbet-in interfeysi və statistik göstəriciləri bunun üçün əsas vasitələrdir. Aşağıdakı məntiqi addımları izləyin:
Məlumatları Əsas Alın: Oyunçunun sadəcə adına və ya şöhrətinə deyil, son 30 matçdakı orta statistikasına (qol, ötürmə, zədə tarixçəsi) baxın. Mostbet bu məlumatları təqdim edir.
Qiymət və Dəyər Nisbətini Hesablayın: Hər bir oyunçunun platformada təyin olunmuş qiyməti onun gözlənilən performansının funksiyasıdır. Aşağı qiymətli, lakin sabit nəticə göstərən oyunçu, bahalı “ulduz”dan daha yaxşı dəyər təklif edə bilər.
Riskdə Müxtəliflik Yaratmaq: Bütün budcenizi bir-iki “ulduz” oyunçuya sərf etmək irrasionaldır. Müxtəlif qiymət kateqoriyalarından oyunçular seçərək, portfel nəzəriyyəsini tətbiq edin – bu, bir oyunçunun zədəsi və ya zəif performansı zamanı riski azaldır.
Qəbul Edilə Bilən İtki Həddi Müəyyən Edin: Ödənişli liqalarda, məsələn, 20 AZN-dən çox itirməmək kimi əvvəlcədən məntiqi bir hədd qoyun. Bu, emosional qərarların qarşısını alır.
Konformizm Təzyiqinə Qarşı Duruş: Özəl liqanızda hamı eyni oyunçunu seçibsə, bu onun düzgün seçim olduğunu göstərmir. Statistikalar fərqli bir şey deyirsə, onlara etibar edin.
Mostbet-in Alətləri ilə İrrasionallığın Qarşısını Almaq
Mostbet platforması, qərarlarınızı məntiq əsasında verməyinizə kömək edən bir neçə funksiyaya malikdir verməyinizə. Real-vaxt statistik yeniləmələr, oyunçu zədə xəbərləri və ətraflı performans tarixçəsi kimi vasitələr, “hissiyat”la qərar qəbul etməyin qarşısını alır. Platformanın təqdim etdiyi məlumatların hamısı obyektivdir və siz onları emosional şərh etməsəniz, heç bir sehrli proqnozlaşdırma gücü yoxdur. Burada əsas məsələ, insan beyninin təsadüfi nümunələrdə məna axtarmaq meyli ilə mübarizə aparmaqdır – Mostbet statistik məlumatları ilə bu meyli aradan qaldırmağa çalışır.