{"version":3,"sources":["src/app/shared/components/base-article-component/base-article-component.ts"],"sourcesContent":["import { Component, OnInit, OnDestroy, Input, inject } from '@angular/core'\nimport { Store, select } from '@ngrx/store'\nimport { ActivatedRoute, Router, ParamMap } from '@angular/router'\nimport { Observable, Subscription } from 'rxjs'\nimport { Article, selectAnArticleById, selectAnArticleByRunningOrder, selectCurrentArticle, setCurrentArticle } from '../../../state'\nimport { IconNamesEnum } from 'ngx-bootstrap-icons'\nimport { BaseDisplayComponent } from '../display-component-base/display-component-base'\nimport { Dictionary } from '@ngrx/entity'\nimport { MixpanelService } from 'src/app/services/mixpanel.service'\nimport { selectUser } from 'src/app/state/user.reducer'\n\n@Component({\n template: '',\n standalone: true\n})\nexport abstract class BaseArticleComponent extends BaseDisplayComponent implements OnInit, OnDestroy {\n router = inject(Router)\n route = inject(ActivatedRoute)\n store = inject>(Store)\n protected mixpanel = inject(MixpanelService)\n\n public area = ''\n\n @Input() articleID = 0\n\n public currentSection = 'top'\n public activeTab = 1\n\n public routeChangeSub$: Subscription = Subscription.EMPTY\n public article$: Observable\n public articleSub$: Subscription = Subscription.EMPTY\n public user$: Subscription = Subscription.EMPTY\n public iconNames = IconNamesEnum\n protected sections: string[] = []\n\n public downloadAction: Dictionary = {}\n\n public followedArticles: Dictionary = {}\n\n constructor() {\n super()\n const route = inject(ActivatedRoute)\n\n this.area = route.snapshot.data['contentSet']\n\n this.articleID = parseInt(this.route.snapshot.paramMap.get('id') ?? '')\n this.article$ = this.store.select(selectCurrentArticle()) as unknown as Observable\n this.store.dispatch(setCurrentArticle({\n id: this.articleID\n }))\n }\n\n public startDownload(articleID: number) {\n this.downloadAction = {\n export: 'xls',\n title: this.area.charAt(0).toUpperCase() + this.area.slice(1),\n area: this.area + '/download/article',\n parameters: { articleID: articleID.toString() },\n columns: [],\n order: [],\n }\n }\n\n onSectionChange(sectionId: string) {\n this.currentSection = sectionId\n }\n\n scrollTo(section: string) {\n document.querySelector('#' + section)?.scrollIntoView({\n behavior: 'smooth',\n block: 'start'\n })\n this.currentSection = section\n }\n\n ngOnInit() {\n this.routeChangeSub$ = this.route.paramMap\n .subscribe(map => {\n this.activeTab = 1\n this.scrollTo('top')\n return this.getRouteParams(map)\n })\n\n this.user$ = this.store.select(selectUser).subscribe(user => {\n this.followedArticles = {}\n for (const searchesForArea of Object.values(user?.searches ?? {})) {\n for (const search of searchesForArea) {\n if (search.parameters.id ?? 0 > 0) {\n this.followedArticles[search.parameters.id] = search\n }\n }\n\n }\n })\n }\n\n ngOnDestroy() {\n this.routeChangeSub$.unsubscribe()\n this.articleSub$.unsubscribe()\n this.user$.unsubscribe()\n }\n\n getRouteParams(map: ParamMap): number {\n let onPrintPage = false\n let articleID = parseInt(map.get('id') ?? '')\n if (isNaN(articleID)) {\n articleID = this.articleID\n onPrintPage = true\n }\n let id: number = -1\n if (articleID) {\n id = articleID\n this.store.dispatch({ type: '[Articles] Get An Article', args: { area: this.area, id } })\n\n if (onPrintPage) {\n this.article$ = this.store.pipe(select(selectAnArticleById(id)))\n\n }\n }\n return id\n }\n\n changeArticle(runningOrder: number) {\n this.article$ = this.store.pipe(\n select(selectAnArticleByRunningOrder(runningOrder))\n )\n }\n\n getNonEmptyColumns(arrayOfObjects: any[], columnsToReturn: string[] = []): string[] {\n let result: string[] = []\n const exactMinMaxRegex = /(.*)(_min|_max|_exact)$/\n if (arrayOfObjects && arrayOfObjects.length > 0) {\n let columnLookup: Dictionary = {}\n for (const row of arrayOfObjects) {\n for (let key of Object.keys(row)) {\n const value = row[key]\n\n const matches = key.match(exactMinMaxRegex)\n\n if (matches) {\n columnLookup[matches[1]] = true\n } else if (typeof value === 'number') {\n columnLookup[key] = true\n } else if (typeof value === 'string' && !isNaN(Number(value)) && !isNaN(parseFloat(value))) {\n columnLookup[key] = true\n } else if (typeof value === 'string') {\n columnLookup[key] = (columnLookup[key] ?? false) || value.trim().length > 0\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n columnLookup[key] = columnLookup[key] || value.length > 0\n } else {\n columnLookup[key] = true\n }\n }\n }\n }\n for (const key in columnLookup) {\n if (columnLookup[key]) {\n result.push(key)\n }\n }\n if (columnsToReturn.length > 0) {\n result = result.filter((col) => columnsToReturn.includes(col))\n }\n }\n return result\n }\n getCreditorFormFromPetition(formName: string, petitionStructure: any[], pdfLink: string): any {\n let document: any = {\n id: 'xxx',\n file_extension: 'pdf',\n cdn_path: pdfLink\n }\n if (petitionStructure.length > 0) {\n for (const petitionPart of petitionStructure) {\n switch (petitionPart.part) {\n case 'official form 204':\n if (formName === 'form204') {\n document.pageNumber = petitionPart.startPage\n return document\n }\n break\n case 'official form 206d':\n if (formName === 'form206d') {\n document.pageNumber = petitionPart.startPage\n return document\n }\n break\n case 'official form 206e/f':\n if (formName === 'form206ef') {\n document.pageNumber = petitionPart.startPage\n return document\n }\n break\n }\n }\n }\n return null\n }\n\n trackbyArticleID(index: number, a: TTItem) {\n return a.id\n }\n getLinkedInHandle(str: string): string {\n try {\n const url = new URL(str)\n return url.pathname.replace('/in/', '').replace('/', '')\n } catch (e) {\n return ''\n }\n }\n trimURL(url: string) {\n let result = url.split('#')[0]\n result = result.split('?')[0]\n return result\n }\n\n sendAnalyticsForTabChange(tabID: string) {\n this.mixpanel.trackPageView({\n tabID,\n tab: this.sections[parseInt(tabID) - 1] ?? 'tab'\n })\n }\n}"],"names":["BaseArticleComponent","BaseDisplayComponent","router","inject","Router","route","ActivatedRoute","store","Store","mixpanel","MixpanelService","area","articleID","currentSection","activeTab","routeChangeSub$","Subscription","EMPTY","article$","articleSub$","user$","iconNames","IconNamesEnum","sections","downloadAction","followedArticles","constructor","snapshot","data","parseInt","paramMap","get","select","selectCurrentArticle","dispatch","setCurrentArticle","id","startDownload","export","title","charAt","toUpperCase","slice","parameters","toString","columns","order","onSectionChange","sectionId","scrollTo","section","document","querySelector","scrollIntoView","behavior","block","ngOnInit","subscribe","map","getRouteParams","selectUser","user","searchesForArea","Object","values","searches","search","ngOnDestroy","unsubscribe","onPrintPage","isNaN","type","args","pipe","selectAnArticleById","changeArticle","runningOrder","selectAnArticleByRunningOrder","getNonEmptyColumns","arrayOfObjects","columnsToReturn","result","exactMinMaxRegex","length","columnLookup","row","key","keys","value","matches","match","Number","parseFloat","trim","Array","isArray","push","filter","col","includes","getCreditorFormFromPetition","formName","petitionStructure","pdfLink","file_extension","cdn_path","petitionPart","part","pageNumber","startPage","trackbyArticleID","index","a","getLinkedInHandle","str","URL","pathname","replace","trimURL","url","split","sendAnalyticsForTabChange","tabID","trackPageView","tab","selectors","inputs","features","ɵɵInheritDefinitionFeature","decls","vars","template","rf","ctx","encapsulation"],"mappings":"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","debug_id":"6597c9a5-9c7b-5892-9f8e-d34068e2915d"}