Skip to content

Instantly share code, notes, and snippets.

@Stuff90
Stuff90 / Mark and Toys.ts
Last active March 2, 2021 12:08
Mark and Toys
class BudgeOptimizer {
private _prices: number[];
constructor(prices: number[], private _budget: number) {
this._prices = prices.sort((a, b) => a - b);
}
get count() {
let inc = 0;
let total = 0;
@Stuff90
Stuff90 / Queues: A Tale of Two Stacks.ts
Last active February 17, 2021 08:56
Queues: A Tale of Two Stacks
interface IQueue {
put(value: number): void;
pop(): void;
peek(): number | null;
}
class Stack implements IQueue {
private _stack: number[] = [];
put(value: number): void {
@Stuff90
Stuff90 / compodoc-route-caveat-diff.md
Created January 25, 2021 09:52
Compodoc route caveat diff
const routes: Routes = [
  {
    path: '',
    component: ProgressPageComponent,
    data: {
-     statusFilterName: ProgressDashboardOptionedCampaignFiltersControl.CONTRACT_STATUS,
+     statusFilterName: ProgressDashboardOptionedCampaignFiltersControl.CONTRACT_STATUS.valueOf(),
    }
 }
$colors: (
0: #3B3EAC,
1: #3366CC,
2: #DC3912,
3: #FF9900,
4: #109618,
5: #990099,
6: #3B3EAC,
7: #0099C6,
8: #DD4477,
@Stuff90
Stuff90 / collection.json
Created September 11, 2018 12:58
Nx schematics collection file
{
"$schema": "../../node_modules/@angular-devkit/schematics/collection-schema.json",
"name": "my-schematics-collection",
"version": "0.0.1",
"extends": ["@nrwl/schematics"],
"schematics": {
"my-schematic-name": {
"factory": "../../dist/out-tsc/tools/schematics/my-schematic-name",
"schema": "./my-schematic-name/schema.json",
"description": "Do awesome stuff"
import { Observable } from 'rxjs/Observable';
import { DataSource } from '@angular/cdk/collections';
import { Component, OnInit, OnDestroy, Input } from '@angular/core';
import { MyAwesomeData } from './my/awesome/data.model.ts';
@Component({
selector: 'app-some',
templateUrl: './app-some.component.html',
import { Subject } from 'rxjs/Subject';
import { takeUntil } from 'rxjs/operators';
import { Observable } from 'rxjs/Observable';
import { DataSource } from '@angular/cdk/collections';
export class ReactiveDataSource<T> extends DataSource<T> {
private _disconnector: Subject<void> = new Subject();
private _source: Observable<T[]>;
import { Observable } from 'rxjs/Observable';
import { DataSource } from '@angular/cdk/collections';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
export class EntityDataSource<T extends { id: string }> extends DataSource<T> {
private source: BehaviorSubject<T[]> = new BehaviorSubject<T[]>([]);
get data(): T[] {
return this.source.value;
}
// Extracted from Angular Material Collections CDK https://goo.gl/GYpMwZ
export abstract class DataSource<T> {
abstract connect(collectionViewer: CollectionViewer): Observable<T[]>;
abstract disconnect(collectionViewer: CollectionViewer): void;
}
// Extracted from CDK Tabe basic example https://goo.gl/T4eHRE
export class ExampleDataSource extends DataSource<any> {
constructor(private _exampleDatabase: ExampleDatabase) {
super();
}
connect(): Observable<UserData[]> {
return this._exampleDatabase.dataChange;
}