Keeping track of interesting places I put my feet on in the software development world.
Search This Blog
Tuesday, December 24, 2019
Saturday, December 21, 2019
Singleton, Decorator and Command design patterns (well) explained with (good) examples
An article that stands out of google search first results. Worth checking!
https://www.freecodecamp.org/news/the-basic-designs-patterns-all-developers-need-to-know/
https://www.freecodecamp.org/news/the-basic-designs-patterns-all-developers-need-to-know/
Sunday, December 15, 2019
Create circle with google map api with mousemove event to enlarge / shrink area
function addCircle_new(lat, lng, radius, alreadyDrawn) {
function createCircle(lat, lng, radius) {
var coordinates = new google.maps.LatLng(lat, lng);
var options = {
strokeColor: '#910000',
strokeOpacity: 0.5,
strokeWeight: 1,
fillColor: '#FC7341',
fillOpacity: 0.35,
map: map,
center: coordinates,
radius: radius
};
// Add the circle for this city to the map.
circle = new google.maps.Circle(options);
return circle;
}
var circle;
if (alreadyDrawn) {
circle = createCircle(lat, lng, radius * 1000);
drawObject = circle;
pois.push(circle);
}
else {
//google.maps.event.removeListener(clickListener);
google.maps.event.addListenerOnce(map, 'click', function (x) {
//circle = createCircle(x.latLng.lat(), x.latLng.lng(), radius * 1000);
circle = createCircle(lat, lng, radius * 1000);
var clickEventParameters = x;
var mouseMoveEventParameters;
var mouseMove = google.maps.event.addListener(map, 'mousemove', function (y) {
mouseMoveEventParameters = y;
var xOffset = mouseMoveEventParameters.qa.x - clickEventParameters.qa.x;
var yOffset = mouseMoveEventParameters.qa.y - clickEventParameters.qa.y;
var radiusOffset = Math.sqrt(Math.pow(xOffset, 2) + Math.pow(yOffset, 2)) * 100000;
circle.setRadius(radiusOffset);
});
var dblClick = google.maps.event.addListener(map, 'dblclick', function (w) {
drawObject = circle;
google.maps.event.removeListener(mouseMove);
pois.push(circle);
//clickListener = google.maps.event.addListener(map, 'click', map_MouseClick);
});
});
}
}
function createCircle(lat, lng, radius) {
var coordinates = new google.maps.LatLng(lat, lng);
var options = {
strokeColor: '#910000',
strokeOpacity: 0.5,
strokeWeight: 1,
fillColor: '#FC7341',
fillOpacity: 0.35,
map: map,
center: coordinates,
radius: radius
};
// Add the circle for this city to the map.
circle = new google.maps.Circle(options);
return circle;
}
var circle;
if (alreadyDrawn) {
circle = createCircle(lat, lng, radius * 1000);
drawObject = circle;
pois.push(circle);
}
else {
//google.maps.event.removeListener(clickListener);
google.maps.event.addListenerOnce(map, 'click', function (x) {
//circle = createCircle(x.latLng.lat(), x.latLng.lng(), radius * 1000);
circle = createCircle(lat, lng, radius * 1000);
var clickEventParameters = x;
var mouseMoveEventParameters;
var mouseMove = google.maps.event.addListener(map, 'mousemove', function (y) {
mouseMoveEventParameters = y;
var xOffset = mouseMoveEventParameters.qa.x - clickEventParameters.qa.x;
var yOffset = mouseMoveEventParameters.qa.y - clickEventParameters.qa.y;
var radiusOffset = Math.sqrt(Math.pow(xOffset, 2) + Math.pow(yOffset, 2)) * 100000;
circle.setRadius(radiusOffset);
});
var dblClick = google.maps.event.addListener(map, 'dblclick', function (w) {
drawObject = circle;
google.maps.event.removeListener(mouseMove);
pois.push(circle);
//clickListener = google.maps.event.addListener(map, 'click', map_MouseClick);
});
});
}
}
Monday, December 9, 2019
Elasticsearch aggregation - show aggregations only + overcome default limitation of aggregated buckets
Elasticsearch aggregation - output showing only aggregated field + overcoming default limitation of aggregated values (in this case, set to 1000)
GET customer_success_reports/_search
{
"size":0,
"aggs" : {
"Country": {
"composite" : {
"size": 1000,
"sources" : [
{ "country": { "terms" : { "field": "Meta.GeoInfo.Country.keyword","missing_bucket": true } } }
]
}
}
}
}
size:0 -> makes the output show the aggregated buckets only instead of the whole documents
GET customer_success_reports/_search
{
"size":0,
"aggs" : {
"Country": {
"composite" : {
"size": 1000,
"sources" : [
{ "country": { "terms" : { "field": "Meta.GeoInfo.Country.keyword","missing_bucket": true } } }
]
}
}
}
}
size:0 -> makes the output show the aggregated buckets only instead of the whole documents
Subscribe to:
Posts (Atom)