Skip to content

Instantly share code, notes, and snippets.


Gangadhar Jannu gangadharjannu

  • Amsterdam
Block or report user

Report or block gangadharjannu

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View index.html
<!DOCTYPE html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<style id="jsbin-css">
#visualizer {
background-color: #ddd;
View latest trends
gangadharjannu / easing.js
Created Oct 18, 2018 — forked from gre/easing.js
Simple Easing Functions in Javascript - see
View easing.js
* Easing Functions - inspired from
* only considering the t value for the range [0, 1] => [0, 1]
EasingFunctions = {
// no easing, no acceleration
linear: function (t) { return t },
// accelerating from zero velocity
easeInQuad: function (t) { return t*t },
// decelerating to zero velocity
gangadharjannu / post-merge
Last active Jun 5, 2018 — forked from sindresorhus/post-merge
git hook to run a command after `git pull` if a specified file was changed.In this example it's used to run `npm install` if package.json changed and `bower install` if `bower.json` changed.Run `chmod +x post-merge` to make it executable then put it into `.git/hooks/`.
View post-merge
#!/usr/bin/env bash
# COPY FROM THIS LINE, if your post-merge hook already contains content
# MIT © Sindre Sorhus -
# git `post-merge` hook to run a command after `git pull` if a specified file was changed
# Run `chmod +x post-merge` to make it executable then put it into `.git/hooks/`.
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
gangadharjannu /
Created Jun 4, 2018 — forked from ChadKillingsworth/
Selenium Testing with Shadow DOM

End-to-end Testing with Shadow DOM

As the web component specs continue to be developed, there has been little information on how to test them. In particular the /deep/ combinator has been deprecated in Shadow DOM 1.0. This is particularly painful since most end-to-end testing frameworks rely on elements being discoverable by XPath or calls to querySelector. Elements in Shadow DOM are selectable by neither. has the standard actions by selectors, but also allows browser executable scripts to return an element

gangadharjannu / infinite-scroll.directive.ts
Created Jun 6, 2017 — forked from lansana/infinite-scroll.directive.ts
This is an Angular 2 infinite scroll directive. It is simple, easy to use and very CPU-efficient.
View infinite-scroll.directive.ts
// When you attach the infiniteScroll directive to an element, it will emit the infiniteScrollAction
// @Output() event every time the user has scrolled to the bottom of the element. Your loadMoreArticles
// function can make an HTTP call and append the results to the articles list, for example. In doing this,
// you effectively increase the height of the element and thus begin the process of the infiniteScroll directive
// again, over and over until the element height stops increasing.
// <div class="container" infiniteScroll (infiniteScrollAction)="loadMoreArticles()">
// <div class="article" *ngFor="let article of articles">
gangadharjannu /
Created Apr 22, 2017 — forked from domenic/
You're Missing the Point of Promises

This article has been given a more permanent home on my blog. Also, since it was first written, the development of the Promises/A+ specification has made the original emphasis on Promises/A seem somewhat outdated.

You're Missing the Point of Promises

Promises are a software abstraction that makes working with asynchronous operations much more pleasant. In the most basic definition, your code will move from continuation-passing style:

getTweetsFor("domenic", function (err, results) {
    // the rest of your code goes here.
gangadharjannu / emitter.service.ts
Created Apr 12, 2017 — forked from sasxa/emitter.service.ts
Angular2 Communicating between sibling components
View emitter.service.ts
import {Injectable, EventEmitter} from 'angular2/core';
export class EmitterService {
private static _emitters: { [ID: string]: EventEmitter<any> } = {};
static get(ID: string): EventEmitter<any> {
if (!this._emitters[ID])
this._emitters[ID] = new EventEmitter();
return this._emitters[ID];
gangadharjannu / index.html
Created Feb 20, 2017
Celeraone - Dynamic table generation with pure javascript // source
View index.html
<!DOCTYPE html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Celeraone - Dynamic table generation with pure javascript</title>
<style id="jsbin-css">
You can’t perform that action at this time.