Advertisement
attilan

Nouislider date, Angular

Oct 6th, 2019
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Component } from '@angular/core';
  2. import { NouiFormatter } from 'ng2-nouislider';
  3. import { BehaviorSubject, Observable } from 'rxjs';
  4. import * as moment from 'moment';
  5.  
  6. @Component({
  7.   selector: 'app-root',
  8.   templateUrl: './app.component.html',
  9.   styleUrls: ['./app.component.scss'],
  10. })
  11. export class AppComponent {
  12.   someRange = [-12, 0];
  13.   start$ = new BehaviorSubject<number>(-12);
  14.   end$ = new BehaviorSubject<number>(0);
  15.   config: any = {
  16.     tooltips: [new StartFormat(this.start$), new EndFormat(this.end$)],
  17.   };
  18.  
  19.   onChange(event: [number, number]) {
  20.     this.start$.next(event[0]);
  21.     this.end$.next(event[1]);
  22.   }
  23. }
  24.  
  25. class StartFormat implements NouiFormatter {
  26.   private start: number;
  27.   constructor(private start$: Observable<number>) {
  28.     start$.subscribe(data => (this.start = data));
  29.   }
  30.  
  31.   from = () => 0;
  32.  
  33.   to(value: number): string {
  34.     return moment()
  35.       .utc()
  36.       .subtract(Math.abs(this.start), 'months')
  37.       .toISOString();
  38.   }
  39. }
  40.  
  41. class EndFormat implements NouiFormatter {
  42.   private end: number;
  43.   constructor(private end$: Observable<number>) {
  44.     end$.subscribe(data => (this.end = data));
  45.   }
  46.  
  47.   from = () => 0;
  48.  
  49.   to(value: number): string {
  50.     return moment()
  51.       .utc()
  52.       .subtract(Math.abs(this.end), 'months')
  53.       .toISOString();
  54.   }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement