Skip to content

Instantly share code, notes, and snippets.

View kosich's full-sized avatar

Kostia P kosich

View GitHub Profile
@kosich
kosich / app.js
Created March 14, 2015 18:53
ng html5 dnd example
'use strict';
var DATA_TYPE_ATTR = 'text/html';
// a hack to include `dataTransfer` to $ events
jQuery.event.props.push('dataTransfer');
angular.module( 'app', [] )
.controller ( 'main', function( $scope, dndBuffer ){
@kosich
kosich / gist:375da99403c76bc75bbd
Last active August 29, 2015 14:18
Well-Known Symbols: array item getter/setter

Currently we can imitate Arrays only with objects, where we would refer to a value at some position via referring to objects property ( with integer index being converted to a string )

var arr = {
  "0" : "zero",
  "1" : "one" 
};

arr[ 1 ];

But we wouldn't get all those features that original Array has (like length autoincremention, splice, split etc.)

@kosich
kosich / index.js
Last active February 14, 2019 13:15
Observable that tracks its observers count. Run at https://observable-playground.github.io/gist/4a7415f3528aa125fb686204041138cb
const { chart } = require('rp-api');
const { Observable, timer, merge } = require('rxjs');
const { take } = require('rxjs/operators');
function createTrackedObservable(onEmpty) {
let count = 0;
return new Observable(() => {
count++;
return ()=>{
count--;
const { chart } = require('rp-api');
const { forkJoin, of } = require('rxjs');
const { delay, tap, switchMap, mapTo } = require('rxjs/operators');
mockRequest(10, 'cid').pipe(
switchMap(id =>
forkJoin(
mockSendQueue([1, 2], id),
mockRequest(10, 'sub').pipe(
switchMap(subid =>
@kosich
kosich / RX_hold.js
Last active February 19, 2019 18:28
Pausable Observable that accumulates values. Run at https://observable-playground.github.io/gist/1d6bb94e2122d75fbbc51a52aafa50c7
const { rxObserver } = require('api/v0.3');
const { Observable, Subject, BehaviorSubject } = require('rxjs/Rx');
const trigger$ = Observable.of('o').delay(10);
const source$ = Observable.interval(3).take(5);
const afterTrigger$ = source$.skipUntil(trigger$);
const result$ =
source$
const { rxObserver } = require('api/v0.3');
const { timer, throwError, of } = require('rxjs');
const { catchError, switchMap } = require('rxjs/operators');
const error$ = timer(5).pipe(
switchMap(() => throwError('X'))
);
error$.subscribe(rxObserver('Error'));
const { rxObserver } = require('api/v0.3');
const { Observable } = require('rxjs/Rx');
const { timer } = require('rxjs');
const autoSave$ = Observable
.timer(0, 17)
.map(v => v%2 == 1)
.takeUntil(timer(100))
.share();
const { rxObserver } = require('api/v0.3');
const { timer } = require('rxjs');
const { map, take } = require('rxjs/operators');
timer(0, 100)
.pipe(
take(5),
map(()=>Date.now())
)
.subscribe(rxObserver());
const { rxObserver } = require('api/v0.3');
const { timer, Subject } = require('rxjs');
const { tap, take, takeUntil, map } = require('rxjs/operators');
const userClick = new Subject();
let counter = 5;
let tick = 10;
timer(0, tick)
.pipe(