Skip to content

Instantly share code, notes, and snippets.

@MiguelLattuada
MiguelLattuada / wrap.js
Created September 8, 2017 21:56
Converts a Node.js-style callback API to a function that returns a Promise
module.exports = function(fn, ctx) {
if (!fn || !(fn instanceof Function)) throw Error('Invalid arguments');
return function() {
const _args = Array.from(arguments);
var promiseFn = function(resolve, reject) {
_args.push(function(err, data) {
if (err) return reject(err);
return resolve(data);
});
fn.apply(ctx, _args);
@MiguelLattuada
MiguelLattuada / rx5xmlhttpwrapperall.js
Created January 3, 2017 20:42
RxJS 5 wrapper for Promise.all method.
class ApiRequest {
all(requests) {
return Rx.Observable.forkJoin(...requests);
}
...
}
var apiRequest = new ApiRequest();
@MiguelLattuada
MiguelLattuada / rx5xmlhttpwrapper.js
Created January 3, 2017 15:02
ES6 written, XMLHttpRequest wrapper for RxJS
class ApiRequest {
observableRequest(url) {
return Rx.Observable.fromPromise(this.__makeRequest(url, 'GET'));
}
__makeRequest(url, method) {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
Rx.Observable
@MiguelLattuada
MiguelLattuada / custom_or_match_filter.js
Last active June 22, 2016 03:05
Custom "OR" match filter, could be used with Angular 1.x, or standalone, here is an example: https://jsfiddle.net/kyf18jtq/, check the console for results.
function OrMatchFilter() {
return function(elements, filterData, matchExact) {
if(//we have no elements, return empty
!elements || elements.length === 0) return [];
if(//filter data is not defined or is an empty object
!filterData || (Object.keys(filterData).length === 0 && filterData.constructor === Object)) return elements;
function decoupleObjectKeys(obj) {
var arrayOfKeys = [];
@MiguelLattuada
MiguelLattuada / .ts
Created December 26, 2015 22:22
Adding parameters to HTML get request on Anuglar 2
public getForecast(days: number) {
// Parameters obj-
let params: URLSearchParams = new URLSearchParams();
params.set('appid', StaticSettings.API_KEY);
params.set('cnt', days.toString());
//Http request-
return this.http.get(StaticSettings.BASE_URL, {
search: params
}).subscribe(
@MiguelLattuada
MiguelLattuada / app.settings.js
Last active November 27, 2015 17:04
Approach for AngularJS app settings
angular.app('testing', [])
.constant(‘baseSettings’, {})
.value('appSettings', {})
.controller('MainCtrl', function($scope, appSettings){
$scope.$watch(function(){ return appSettings; }, function(old, _new){
//your code here…
});
})
.controller('AnotherCtrl', function($scope , SettingsHelper){
SettingsHelper.setSetting('enableToPerform', true);