Skip to content

Instantly share code, notes, and snippets.

Avatar
👨‍💻
...human in progress

Praveen Puglia praveenpuglia

👨‍💻
...human in progress
View GitHub Profile
View test_data.json
{
"name": "Issues",
"children": [
{
"name": "Word 1",
"children": [
{
"value": 8052,
"name": "Word 1"
},
@praveenpuglia
praveenpuglia / vue-apollo.ts
Created May 31, 2019
vue-apollo.ts configuration
View vue-apollo.ts
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import {
createApolloClient,
restartWebsockets
} from 'vue-cli-plugin-apollo/graphql-client';
import ApolloClient from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { SubscriptionClient } from 'subscriptions-transport-ws';
import router from '@/router';
@praveenpuglia
praveenpuglia / playAudioAsBlobViaAjax.js
Created Apr 17, 2019
Download Audio from AJAX and Play as Blob
View playAudioAsBlobViaAjax.js
var a = fetch("http://path/to/audio.wav")
.then(res => {
var reader = res.body.getReader();
return reader.read().then(result => {
return result;
});
})
.then(data => {
console.log(data);
@praveenpuglia
praveenpuglia / javascript-deep-flatten.js
Created Jul 27, 2018
Deep flatten a JavaScript array using Array.prototype.reduce
View javascript-deep-flatten.js
function flatten(array) {
return array.reduce( (acc, e) => {
if(Array.isArray(e)) {
// if the element is an array, fall flatten on it again and then take the returned value and concat it.
return acc.concat(flatten(e));
} else {
// otherwise just concat the value.
return acc.concat(e);
}
}, [] ) // initial value for the accumulator is []
@praveenpuglia
praveenpuglia / javascript-qiucksort.js
Created Jul 26, 2018
Quick Sort implemented in JS
View javascript-qiucksort.js
function quickSort(array, left = 0, right = array.length - 1) {
console.log("CALLED");
let partitionIndex;
let pivotIndex;
if(left < right) {
pivotIndex = right;
partitionIndex = partition(array, left, right, pivotIndex);
quickSort(array, left, partitionIndex - 1);
quickSort(array, partitionIndex + 1, right);
}
View daterange.component.html
<!-- <div class="date-range">
<div class="date-range__presets">
<button #presetsTrigger
mat-raised-button
[matMenuTriggerFor]="presetMenu"
(click)="$event.stopPropagation()">{{selectedPreset.name}}
<mat-icon>arrow_drop_down</mat-icon>
</button>
<mat-menu #presetMenu="matMenu"
[overlapTrigger]="false">
@praveenpuglia
praveenpuglia / same-effect-multiple-actions.ts
Created Apr 25, 2018
Same effect for multiple actions - ngrx effects
View same-effect-multiple-actions.ts
@Effect({dispatch: false})
entityCreationSuccess$: Observable<Action> = this.actions$.pipe(
ofType(UserActions.CREATE_USER_SUCCESS, PostActions.CREATE_POST_SUCCESS),
tap(action => {
this.router.navigate(['../'], {relativeTo: this.route})
})
);
@praveenpuglia
praveenpuglia / cancel-request.ts
Created Apr 25, 2018
Cancel in flight / ongoing network request - ngrx effects
View cancel-request.ts
@Effect()
getTabData$: Observable<Action> = this.actions$.pipe(
ofType<FetchTabData>(TabActions.FETCH_TAB_DATA),
switchMap(action => {
const tabType = action.payload;
return this.http
.get(`${environment.apiUrl}/api/tab/${tabType}`)
.pipe(
map((response: any) => {
return new FetchTabDataSuccess(response.data);
@praveenpuglia
praveenpuglia / multiple-actions.ts
Created Apr 25, 2018
Dispatch multiple actions from ngrx effect
View multiple-actions.ts
@Effect()
search$: Observable<Action> = this.actions$.pipe(
ofType(SearchActions.SEARCH),
switchMap(action => {
const query = action.payload;
return [new FetchPanel1Data(query), new FetchPanel2Data(query)];
})
);
@praveenpuglia
praveenpuglia / access-state.ts
Last active Apr 25, 2018
Access state inside an ngrx effect
View access-state.ts
// In the Effect's constructor, inject store.
constructor(private store: Store<AppState>)
...
@Effect()
fetchUserProfile$: Observable<Action> = this.actions$.pipe(
ofType<FetchUserProfile>(UserActionTypes.FETCH_USER_PROFILE),
withLatestFrom(this.store),
mergeMap(([action, appState]) => {
return this.http
.get(
You can’t perform that action at this time.