@sedeh/into-pipes
Version:
Have you ever wanted to transform data in different parts of your application into interactive objects without writing a single line of code?
75 lines • 14.2 kB
JavaScript
import { Component } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class LastUpdateComponent {
constructor() {
this.disabled = false;
this.active = true;
this.validate = (item, newValue) => true;
}
static settingsPatterns() {
return ['lastupdate:false', 'lastupdate:true']; //show icon
}
transform(source, data, args) {
this.source = source;
this.showIcon = (args && args.length > 0 && args[0].length && args[0] === 'true');
}
formatDate() {
const currentDate = new Date();
const minute = 60000; // one minute
const hour = 3600000; // one hour limit
const day = 86400000; // 24 hours limit
const week = 604800000; // 7 days limit
const month = 604800000 * 4; // 7 days limit
const year = 604800000 * 52; // 7 days limit
let result = "";
let diff = currentDate.getTime() - this.source.getTime();
if (diff <= minute) { // up to a minute
result = "seconds ago";
}
else if (diff <= hour) { // up to an hour
let minutes = Math.floor(diff / minute);
let seconds = Math.floor((diff - (minutes * minute)) / 1000);
result = (minutes < 2 ? "a minute" : minutes + " minutes ") + (seconds > 0 ? " and " + seconds + " seconds ago" : " ago");
}
else if (diff <= day) { // up to a day
let hours = Math.floor(diff / hour);
let minutes = Math.floor((diff - (hours * hour)) / minute);
result = (hours < 2 ? "an hour" : hours + " hours ") + (minutes > 0 ? " and " + minutes + " minutes ago" : " ago");
}
else if (diff <= week) { // up to a week
let days = Math.floor(diff / day);
let hours = Math.floor((diff - (days * day)) / hour);
result = (days < 2 ? "a day" : days + " days ") + (hours > 0 ? " and " + hours + " hours ago" : " ago");
}
else if (diff <= month) { // up to a month
let weeks = Math.floor(diff / week);
let days = Math.floor((diff - (weeks * week)) / day);
result = (weeks < 2 ? "a week" : weeks + " weeks ") + (days > 0 ? " and " + days + " days ago" : " ago");
}
else if (diff <= year) { // up to a week
let months = Math.floor(diff / month);
let weeks = Math.floor((diff - (months * month)) / week);
result = (months < 2 ? "a month" : months + " months ") + (weeks > 0 ? " and " + weeks + " weeks ago" : " ago");
}
else {
let years = Math.floor(diff / year);
let months = Math.floor((diff - (years * year)) / month);
result = (years < 2 ? "a year" : years + " years ") + (months > 0 ? " and " + months + " months ago" : " ago");
}
return result;
}
}
LastUpdateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LastUpdateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
LastUpdateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: LastUpdateComponent, selector: "lastupdate-component", ngImport: i0, template: `
<span *ngIf="showIcon" class="fa fa-clock-o" aria-hidden="true"></span>
<span>{{formatDate()}}</span>
`, isInline: true, styles: [":host{display:table;float:left;min-height:var(--sedeh-min-height, 25px);position:relative}.fa{margin:var(--sedeh-margin, 0 5px)}@media print{:host .fa-clock-o{display:none}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LastUpdateComponent, decorators: [{
type: Component,
args: [{ selector: 'lastupdate-component', template: `
<span *ngIf="showIcon" class="fa fa-clock-o" aria-hidden="true"></span>
<span>{{formatDate()}}</span>
`, styles: [":host{display:table;float:left;min-height:var(--sedeh-min-height, 25px);position:relative}.fa{margin:var(--sedeh-margin, 0 5px)}@media print{:host .fa-clock-o{display:none}}\n"] }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFzdHVwZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnRvLXBpcGVzL3NyYy9saWIvbGFzdHVwZGF0ZS9sYXN0dXBkYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7O0FBcUJ4RCxNQUFNLE9BQU8sbUJBQW1CO0lBbEJoQztRQXVCQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxhQUFRLEdBQUcsQ0FBQyxJQUFTLEVBQUUsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7S0E2RDlDO0lBeERHLE1BQU0sQ0FBQyxnQkFBZ0I7UUFDekIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxXQUFXO0lBQzVELENBQUM7SUFDRCxTQUFTLENBQUMsTUFBVyxFQUFFLElBQVMsRUFBRSxJQUFXO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELFVBQVU7UUFDWixNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFBLGFBQWE7UUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUEsaUJBQWlCO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFBLGlCQUFpQjtRQUN0QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMs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LE1BQU0sQ0FBQztJQUNmLENBQUM7O2lIQWxFVyxtQkFBbUI7cUdBQW5CLG1CQUFtQiw0REFoQmxCOzs7S0FHVDs0RkFhUSxtQkFBbUI7a0JBbEIvQixTQUFTOytCQUNJLHNCQUFzQixZQUN0Qjs7O0tBR1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQaXBlQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi4vY29tbW9uL3BpcGUuY29tcG9uZW50LmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGFzdHVwZGF0ZS1jb21wb25lbnQnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgIDxzcGFuICpuZ0lmPVwic2hvd0ljb25cIiBjbGFzcz1cImZhIGZhLWNsb2NrLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICA8c3Bhbj57e2Zvcm1hdERhdGUoKX19PC9zcGFuPlxyXG4gICAgYCxcclxuICAgIHN0eWxlczogW1xyXG4gICAgICAgIGBcclxuICAgICAgICA6aG9zdCB7ZGlzcGxheTp0YWJsZTtmbG9hdDpsZWZ0O21pbi1oZWlnaHQ6IHZhcigtLXNlZGVoLW1pbi1oZWlnaHQsIDI1cHgpO3Bvc2l0aW9uOiByZWxhdGl2ZX1cclxuICAgICAgICAuZmEge21hcmdpbjp2YXIoLS1zZWRlaC1tYXJnaW4sIDAgNXB4KX1cclxuICAgICAgICBAbWVkaWEgcHJpbnQge1xyXG4gICAgICAgICAgICA6aG9zdCAuZmEtY2xvY2stbyB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGBcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIExhc3RVcGRhdGVDb21wb25lbnQgaW1wbGVtZW50cyBQaXBlQ29tcG9uZW50SW50ZXJmYWNlIHtcclxuICAgIHNvdXJjZTogYW55O1xyXG5cdGlkITogc3RyaW5nO1xyXG4gICAgbmFtZSE6IHN0cmluZztcclxuICAgIHNob3dJY29uITogYm9vbGVhbjtcclxuXHRkaXNhYmxlZCA9IGZhbHNlO1xyXG5cdGFjdGl2ZSA9IHRydWU7XHJcblx0dmFsaWRhdGUgPSAoaXRlbTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB0cnVlO1xyXG4gICAgXHJcbiAgICBjb3VudCE6IHN0cmluZztcclxuXHRvbkludG9Db21wb25lbnRDaGFuZ2UhOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgICBzdGF0aWMgc2V0dGluZ3NQYXR0ZXJucygpIHtcclxuXHRcdHJldHVybiBbJ2xhc3R1cGRhdGU6ZmFsc2UnLCAnbGFzdHVwZGF0ZTp0cnVlJ107IC8vc2hvdyBpY29uXHJcblx0fVxyXG5cdHRyYW5zZm9ybShzb3VyY2U6IGFueSwgZGF0YTogYW55LCBhcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0ljb24gPSAoYXJncyAmJiBhcmdzLmxlbmd0aCA+IDAgJiYgYXJnc1swXS5sZW5ndGggJiYgYXJnc1swXSA9PT0gJ3RydWUnKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtYXREYXRlKCkge1xyXG5cdFx0Y29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0Y29uc3QgbWludXRlID0gNjAwMDA7Ly8gb25lIG1pbnV0ZVxyXG5cdFx0Y29uc3QgaG91ciA9IDM2MDAwMDA7Ly8gb25lIGhvdXIgbGltaXRcclxuXHRcdGNvbnN0IGRheSA9IDg2NDAwMDAwOy8vIDI0IGhvdXJzIGxpbWl0XHJcblx0XHRjb25zdCB3ZWVrID0gNjA0ODAwMDAwOy8vIDcgZGF5cyBsaW1pdFxyXG5cdFx0Y29uc3QgbW9udGggPSA2MDQ4MDAwMDAqNDsvLyA3IGRheXMgbGltaXRcclxuXHRcdGNvbnN0IHllYXIgPSA2MDQ4MDAwMDAqNTI7Ly8gNyBkYXlzIGxpbWl0XHJcblx0XHRsZXQgcmVzdWx0ID0gXCJcIjtcclxuXHJcblx0XHRsZXQgZGlmZiA9IGN1cnJlbnREYXRlLmdldFRpbWUoKSAtIHRoaXMuc291cmNlLmdldFRpbWUoKTtcclxuXHJcblx0XHRpZihkaWZmIDw9IG1pbnV0ZSkgey8vIHVwIHRvIGEgbWludXRlXHJcblx0XHRcdHJlc3VsdCA9IFwic2Vjb25kcyBhZ29cIjtcclxuXHRcdH1lbHNlIGlmKGRpZmYgPD0gaG91cikgey8vIHVwIHRvIGFuIGhvdXJcclxuXHRcdFx0bGV0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKGRpZmYvbWludXRlKTtcclxuXHRcdFx0bGV0IHNlY29uZHMgPSBNYXRoLmZsb29yKChkaWZmIC0gKG1pbnV0ZXMgKiBtaW51dGUpKS8xMDAwKTtcclxuXHJcblx0XHRcdHJlc3VsdCA9IChtaW51dGVzIDwgMiA/IFwiYSBtaW51dGVcIiA6IG1pbnV0ZXMgKyBcIiBtaW51dGVzIFwiKSArIChzZWNvbmRzID4gMCA/IFwiIGFuZCBcIiArIHNlY29uZHMgKyBcIiBzZWNvbmRzIGFnb1wiIDogXCIgYWdvXCIpO1xyXG5cdFx0fWVsc2UgaWYoZGlmZiA8PSBkYXkpIHsvLyB1cCB0byBhIGRheVxyXG5cdFx0XHRsZXQgaG91cnMgPSBNYXRoLmZsb29yKGRpZmYvaG91cik7XHJcblx0XHRcdGxldCBtaW51dGVzID0gTWF0aC5mbG9vcigoZGlmZiAtIChob3VycyAqIGhvdXIpKS9taW51dGUpO1xyXG5cdFx0XHRcclxuXHRcdFx0cmVzdWx0ID0gKGhvdXJzIDwgMiA/IFwiYW4gaG91clwiIDogaG91cnMgKyBcIiBob3VycyBcIikgKyAobWludXRlcyA+IDAgPyBcIiBhbmQgXCIgKyBtaW51dGVzICsgXCIgbWludXRlcyBhZ29cIiA6IFwiIGFnb1wiKTtcclxuXHRcdH1lbHNlIGlmKGRpZmYgPD0gd2Vlaykgey8vIHVwIHRvIGEgd2Vla1xyXG5cdFx0XHRsZXQgZGF5cyA9IE1hdGguZmxvb3IoZGlmZi9kYXkpO1xyXG5cdFx0XHRsZXQgaG91cnMgPSBNYXRoLmZsb29yKChkaWZmIC0gKGRheXMgKiBkYXkpKS9ob3VyKTtcclxuXHJcblx0XHRcdHJlc3VsdCA9IChkYXlzIDwgMiA/IFwiYSBkYXlcIiA6IGRheXMgKyBcIiBkYXlzIFwiKSArIChob3VycyA+IDAgPyBcIiBhbmQgXCIgKyBob3VycyArIFwiIGhvdXJzIGFnb1wiIDogXCIgYWdvXCIpO1xyXG5cdFx0fWVsc2UgaWYoZGlmZiA8PSBtb250aCkgey8vIHVwIHRvIGEgbW9udGhcclxuXHRcdFx0bGV0IHdlZWtzID0gTWF0aC5mbG9vcihkaWZmL3dlZWspO1xyXG5cdFx0XHRsZXQgZGF5cyA9IE1hdGguZmxvb3IoKGRpZmYgLSAod2Vla3MgKiB3ZWVrKSkvZGF5KTtcclxuXHJcblx0XHRcdHJlc3VsdCA9ICh3ZWVrcyA8IDIgPyBcImEgd2Vla1wiIDogd2Vla3MgKyBcIiB3ZWVrcyBcIikgKyAoZGF5cyA+IDAgPyBcIiBhbmQgXCIgKyBkYXlzICsgXCIgZGF5cyBhZ29cIiA6IFwiIGFnb1wiKTtcclxuXHRcdH1lbHNlIGlmKGRpZmYgPD0geWVhcikgey8vIHVwIHRvIGEgd2Vla1xyXG5cdFx0XHRsZXQgbW9udGhzID0gTWF0aC5mbG9vcihkaWZmL21vbnRoKTtcclxuXHRcdFx0bGV0IHdlZWtzID0gTWF0aC5mbG9vcigoZGlmZiAtIChtb250aHMgKiBtb250aCkpL3dlZWspO1xyXG5cclxuXHRcdFx0cmVzdWx0ID0gKG1vbnRocyA8IDIgPyBcImEgbW9udGhcIiA6IG1vbnRocyArIFwiIG1vbnRocyBcIikgKyAod2Vla3MgPiAwID8gXCIgYW5kIFwiICsgd2Vla3MgKyBcIiB3ZWVrcyBhZ29cIiA6IFwiIGFnb1wiKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGxldCB5ZWFycyA9IE1hdGguZmxvb3IoZGlmZi95ZWFyKTtcclxuXHRcdFx0bGV0IG1vbnRocyA9IE1hdGguZmxvb3IoKGRpZmYgLSAoeWVhcnMgKiB5ZWFyKSkvbW9udGgpO1xyXG5cclxuXHRcdFx0cmVzdWx0ID0gKHllYXJzIDwgMiA/IFwiYSB5ZWFyXCIgOiB5ZWFycyArIFwiIHllYXJzIFwiKSArIChtb250aHMgPiAwID8gXCIgYW5kIFwiICsgbW9udGhzICsgXCIgbW9udGhzIGFnb1wiIDogXCIgYWdvXCIpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdDtcclxuXHR9XHJcblxyXG59XHJcbiJdfQ==