@seniorsistemas/platform-components 5.3.0 → 5.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-platform-components.js","sources":["ng://@seniorsistemas/platform-components/modules/advanced-filter/pipes/map-values.pipe.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/pipes/translate.pipe.ts","ng://@seniorsistemas/platform-components/modules/translations/translations.module.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/locale/fallback.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/services/constants.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/shared/constants.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/services/advanced-filter.service.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/filter.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/filter-type.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/scope.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/form-filter.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/tab-view.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/filter-id/index.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/filter-value/index.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/json-path.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/filterOperators.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/index.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/form-field/index.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/comparator.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/services/calendar-options.service.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/components/form-filter/form-filter.component.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/components/advanced-filter/advanced-filter.component.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/advanced-filter.module.ts","ng://@seniorsistemas/platform-components/modules/cyclic-json-interceptor/cyclic-json-interceptor.service.ts","ng://@seniorsistemas/platform-components/modules/cyclic-json-interceptor/cyclic-json-interceptor.module.ts","ng://@seniorsistemas/platform-components/modules/http-interceptor/rest-url.service.ts","ng://@seniorsistemas/platform-components/modules/http-interceptor/x-services-url.service.ts","ng://@seniorsistemas/platform-components/modules/http-interceptor/http-interceptor.service.ts","ng://@seniorsistemas/platform-components/modules/http-interceptor/http-interceptor.module.ts","ng://@seniorsistemas/platform-components/modules/permissions/permissions.config.ts","ng://@seniorsistemas/platform-components/modules/permissions/permissions.service.ts","ng://@seniorsistemas/platform-components/modules/permissions/permissions.module.ts","ng://@seniorsistemas/platform-components/modules/feature-toggle/constants/endpoint.constant.ts","ng://@seniorsistemas/platform-components/modules/feature-toggle/feature-toggle.service.ts","ng://@seniorsistemas/platform-components/modules/feature-toggle/feature-toggle.module.ts","ng://@seniorsistemas/platform-components/modules/spotlight/models/user-action.enum.ts","ng://@seniorsistemas/platform-components/modules/spotlight/service/spotlight.service.ts","ng://@seniorsistemas/platform-components/modules/spotlight/models/display-type.enum.ts","ng://@seniorsistemas/platform-components/modules/spotlight/models/spotlight-control.interface.ts","ng://@seniorsistemas/platform-components/modules/spotlight/models/spotlight-status.enum.ts","ng://@seniorsistemas/platform-components/modules/spotlight/component/spotlight.component.ts","ng://@seniorsistemas/platform-components/modules/spotlight/locale/fallback.ts","ng://@seniorsistemas/platform-components/modules/spotlight/pipes/translate.pipe.ts","ng://@seniorsistemas/platform-components/modules/spotlight/spotlight.module.ts","ng://@seniorsistemas/platform-components/seniorsistemas-platform-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'mapValues', pure: false })\nexport class MapValuesPipe implements PipeTransform {\n transform(map: Map<any, any>, args: any[] = null): any {\n return Array.from(map.values());\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'translate',\n pure: false,\n })\n export class TranslatePipe implements PipeTransform {\n constructor(private translationService: TranslateService) {}\n transform(value: any, args?: any): any {\n return this.translationService.instant(value);\n }\n }\n","import { LOCATION_INITIALIZED } from '@angular/common';\nimport { HttpClient, HttpClientModule, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { ModuleWithProviders } from '@angular/compiler/src/core';\nimport { APP_INITIALIZER, InjectionToken, Injector, NgModule } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport { CookieService } from 'ngx-cookie-service';\n\nexport const TranslationsConfig = new InjectionToken<ITranslationsConfig[]>('translationConfig');\nexport const USER_INFO = 'com.senior.token';\n\n@NgModule({\n imports: [HttpClientModule, TranslateModule.forChild()],\n providers: [CookieService]\n})\nexport class TranslationsModule {\n static forRoot(translationsConfigs: ITranslationsConfig[]): ModuleWithProviders {\n return {\n ngModule: TranslationsModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: factory,\n deps: [TranslateService, Injector, HttpClient, CookieService],\n multi: true\n },\n {\n provide: TranslationsConfig,\n useValue: translationsConfigs,\n multi: true\n }\n ]\n };\n }\n\n static forChild(translationsConfigs: ITranslationsConfig[]): ModuleWithProviders {\n return {\n ngModule: TranslationsModule,\n providers: [\n {\n provide: TranslationsConfig,\n useValue: translationsConfigs,\n multi: true\n }\n ]\n };\n }\n}\n\nexport interface ITranslationsConfig {\n domain: string;\n service: string;\n fallback: any;\n defaultsLanguages?: any;\n}\n\nexport function factory(translate: TranslateService, injector: Injector, http: HttpClient, cookieService: CookieService) {\n return () =>\n new Promise(resolve => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n\n locationInitialized.then(async () => {\n let locale = 'pt-BR';\n try {\n const configs = getFlatArray(injector.get(TranslationsConfig, Promise.resolve(null)));\n\n try {\n let userData = JSON.parse(cookieService.get(USER_INFO));\n if (!userData || Object.keys(userData).length === 0) {\n userData = await user.getUserData();\n }\n locale = userData.locale || 'pt-BR';\n } catch (ex) {\n console.warn('Unable to obtain user locale');\n }\n\n const fallback = configs\n .reduce((result: any, configs: ITranslationsConfig) => ({ ...result, ...configs.fallback }), {});\n const defaultsLanguages = configs\n .reduce((result: any, configs: ITranslationsConfig) => ({ ...result, ...configs.defaultsLanguages }), {});\n\n translate.setTranslation(locale, fallback);\n translate.setDefaultLang(locale);\n\n let fallbackByLocale = {};\n\n if (defaultsLanguages) {\n\n const languages: any = Object.keys(defaultsLanguages).map(key => {\n const language = {};\n language['locale'] = key.replace('_', '-');\n language['translation'] = defaultsLanguages[key];\n return language;\n }, []);\n\n let foundLocaleUser = languages.find((results: any) => results.locale === locale);\n\n if (!foundLocaleUser) {\n foundLocaleUser = languages.find((results: any) => {\n return results.locale.length === 2 && results.locale === locale.split('-')[0];\n });\n }\n\n if (foundLocaleUser) {\n fallbackByLocale = foundLocaleUser['translation'];\n }\n\n }\n\n const translationsPromises = configs.map((config: any) => getTranslationsRequest(config, locale));\n\n await Promise.all(translationsPromises).then(results => {\n results.forEach(file => {\n const usedFallback = translate['overriden'];\n \n if (usedFallback) {\n file['content'] && translate.setTranslation(locale, file['content'], true);\n translate.setTranslation(locale, fallbackByLocale, true);\n } else {\n translate.setTranslation(locale, fallbackByLocale, true);\n file['content'] && translate.setTranslation(locale, file['content'], true);\n }\n });\n\n return translate.use(locale).toPromise();\n });\n\n resolve();\n } catch (err) {\n console.warn('Error setting translations. Using local fallback.', err);\n translate.use(locale).toPromise().then(() => {\n resolve();\n });\n }\n });\n });\n\n function getTranslationsRequest({ domain, service }: ITranslationsConfig, language: string) {\n return new Promise(async resolve => {\n try {\n if (!domain && !service) {\n throw new Error(`domain and service not found`);\n }\n const params = new HttpParams()\n .set('domainName', domain)\n .set('serviceName', service)\n .set('format', 'FLAT_JSON');\n\n const headers = new HttpHeaders().set('Authorization', await user.getAuthHeader());\n const url = 'platform/translation_hub/queries/getTranslationBundle';\n const bundleFiles = await http.get(url, { headers, params }).toPromise().then((res: any) => res.bundleFiles);\n\n let languageBundle = language && bundleFiles.find((bundle: any) => bundle.language === language);\n let overriden = false;\n\n if (!languageBundle) {\n languageBundle = bundleFiles.find((bundle: any) => bundle.language === 'pt-BR');\n overriden = true;\n }\n\n if (!languageBundle) {\n return resolve({});\n }\n\n await http\n .get(languageBundle.url)\n .toPromise()\n .then((result: any) => {\n const translations = {\n overriden: overriden,\n content: result\n };\n resolve(translations);\n });\n } catch (err) {\n console.warn(`Error getting translation bundle for ${domain}/${service}. Using local fallback.`, err);\n resolve({});\n }\n });\n }\n\n function getFlatArray(array: any[]) {\n return array.reduce((result: any[], item: any) => {\n if (Array.isArray(item)) {\n return [...result, ...item];\n }\n return [...result, item];\n }, []);\n }\n}\n","export const fallback = {\n 'platform.filter_service.cancel': 'Cancelar',\n 'platform.filter_service.try': 'Tentar Novamente',\n 'platform.filter_service.actions': 'Ações',\n 'platform.filter_service.save': 'Salvar',\n 'platform.filter_service.filter': 'Filtrar',\n 'platform.filter_service.error_state':\n 'O serviço de filtro está indisponível no momento e as informações apresentadas não são as mais recentes. Tente novamente mais tarde.',\n 'platform.filter_service.saved_filters_success': 'Filtros salvos com sucesso! Clique em \"Filtrar\" para visualizar o resultado.',\n 'platform.filter_service.saved_filters_error':\n 'Ocorreu um erro ao tentar salvar os filtros. Verifique os valores e tente novamente.',\n 'platform.filter_service.applied_filter_nochange': 'Não houve alterações no filtro.',\n 'platform.filter_service.applied_filter_change': 'Filtros aplicados com sucesso!',\n 'platform.filter_service.invalid_pattern': 'O valor não atende ao padrão especificado.',\n 'platform.filter_service.error_max_value': 'O valor excede o tamanho máximo especificado.',\n 'platform.filter_service.error_min_value': 'O valor é menor que o minímo especificado.',\n 'platform.filter_service.applied_filters_message': '{{totalActiveFilters}} filtros aplicados',\n 'platform.filter_service.applied_filter_message': '{{totalActiveFilters}} filtro aplicado',\n 'platform.filter_service.find_suggestions_error': 'Erro ao encontrar sugestões!',\n 'platform.filter_service.select': 'Selecionar',\n 'platform.filter_service.filters': 'Filtros',\n 'platform.filter_service.date_format' : 'dd/mm/yy',\n 'platform.filter_service.hour_format' : '24',\n 'platform.filter_service.clear': 'Limpar',\n 'platform.filter_service.today' : 'Hoje',\n 'platform.filter_service.name_january' : 'Janeiro',\n 'platform.filter_service.name_february' : 'Fevereiro',\n 'platform.filter_service.name_march' : 'Março',\n 'platform.filter_service.name_april' : 'Abril',\n 'platform.filter_service.name_may' : 'Maio',\n 'platform.filter_service.name_june' : 'Junho',\n 'platform.filter_service.name_july' : 'Julho',\n 'platform.filter_service.name_august' : 'Agosto',\n 'platform.filter_service.name_september' : 'Setembro',\n 'platform.filter_service.name_october' : 'Outubro',\n 'platform.filter_service.name_november' : 'Novembro',\n 'platform.filter_service.name_december' : 'Dezembro',\n 'platform.filter_service.short_january' : 'Jan',\n 'platform.filter_service.short_february' : 'Fev',\n 'platform.filter_service.short_march' : 'Mar',\n 'platform.filter_service.short_april' : 'Abr',\n 'platform.filter_service.short_may' : 'Mai',\n 'platform.filter_service.short_june' : 'Jun',\n 'platform.filter_service.short_july' : 'Jul',\n 'platform.filter_service.short_august' : 'Ago',\n 'platform.filter_service.short_september' : 'Set',\n 'platform.filter_service.short_october' : 'Out',\n 'platform.filter_service.short_november' : 'Nov',\n 'platform.filter_service.short_december' : 'Dez',\n 'platform.filter_service.name_sunday': 'Domingo',\n 'platform.filter_service.name_monday': 'Segunda',\n 'platform.filter_service.name_tuesday': 'Terça',\n 'platform.filter_service.name_wednesday': 'Quarta',\n 'platform.filter_service.name_thursday': 'Quinta',\n 'platform.filter_service.name_friday': 'Sexta',\n 'platform.filter_service.name_saturday': 'Sábado',\n 'platform.filter_service.min_sunday': 'D',\n 'platform.filter_service.min_monday': 'S',\n 'platform.filter_service.min_tuesday': 'T',\n 'platform.filter_service.min_wednesday': 'Q',\n 'platform.filter_service.min_thursday': 'Q',\n 'platform.filter_service.min_friday': 'S',\n 'platform.filter_service.min_saturday': 'S',\n 'platform.filter_service.short_sunday': 'Dom',\n 'platform.filter_service.short_monday': 'Seg',\n 'platform.filter_service.short_tuesday': 'Ter',\n 'platform.filter_service.short_wednesday': 'Qua',\n 'platform.filter_service.short_thursday': 'Qui',\n 'platform.filter_service.short_friday': 'Sex',\n 'platform.filter_service.short_saturday': 'Sab',\n 'platform.filter_service.yes': 'Sim',\n 'platform.filter_service.no': 'Não',\n 'platform.filter_service.search_empty_message': 'Nenhum resultado encontrado'\n};\n","const URL_PREFIX = 'platform/filter_service';\nexport const GET_FILTERS_URL = `${URL_PREFIX}/queries/getFilters`;\nexport const SAVE_FILTERS_URL = `${URL_PREFIX}/actions/saveUserFilters`;\nexport const SAVE_TICKED_FILTER_URL = `${URL_PREFIX}/actions/setTicketFilters`;\n","export const searchDisplayName = '$$__displayValue__';\nexport const searchKeyName = '$$__keyValue__';\n","import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\n\nimport { GET_FILTERS_URL, SAVE_FILTERS_URL, SAVE_TICKED_FILTER_URL } from './constants';\nimport { Subject, Observable } from 'rxjs';\nimport { Filter } from '../models/filter';\nimport { FilterValue } from '../models/filter-value';\nimport { Context } from '../models/context';\nimport { map } from 'rxjs/operators';\nimport { TickedFilter } from '../models/ticked-filter';\nimport { searchDisplayName, searchKeyName } from '../shared/constants';\n\nexport interface TickedFilterResponse {\n ticket: string;\n}\n\nexport interface ContextsFiltersResponse {\n filters: Filter[];\n}\n\nexport interface IGetFiltersResponse {\n error?: boolean;\n message?: HttpErrorResponse;\n filters?: Filter[];\n applyFilter?: boolean;\n}\n\nexport interface ITickerFilterResponse {\n ticketFilter?: string;\n error?: boolean;\n message?: string;\n}\n\n@Injectable()\nexport class AdvancedFilterService {\n private filtersObservable = new Subject<IGetFiltersResponse>();\n private contextsObservable = new BehaviorSubject<Context[]>([]);\n private ticketFilterObservable = new Subject<ITickerFilterResponse>();\n destroy$ = new Subject();\n public ticketFilter: string;\n public visible: boolean;\n contextsObserver = this.contextsObservable.asObservable();\n filtersObserver = this.filtersObservable.asObservable();\n ticketFilterObserver = this.ticketFilterObservable.asObservable();\n\n constructor(private http: HttpClient) {\n this.contextsObservable.subscribe(contexts => contexts.length && this.getAndApplyFilters(contexts));\n }\n\n saveTickedFilters(filters: TickedFilter[]) {\n const requestBody = this.ticketFilter ? { filters, ticketFilter: this.ticketFilter } : { filters };\n this.http\n .post<TickedFilterResponse>(SAVE_TICKED_FILTER_URL, requestBody)\n .pipe(map(response => response.ticket))\n .subscribe(\n ticketFilter => {\n this.ticketFilter = ticketFilter;\n this.ticketFilterObservable.next({ ticketFilter });\n window.parent.postMessage({ message: 'advanced-filter:success', payload: ticketFilter }, '*');\n },\n err => {\n this.ticketFilterObservable.next({ error: true, message: err });\n window.parent.postMessage({ message: 'advanced-filter:error', payload: err }, '*');\n }\n );\n }\n\n addContexts(...contexts: Context[]): Observable<Context[]> {\n const currentContexts = this.contextsObservable.getValue();\n this.contextsObservable.next([...currentContexts, ...contexts]);\n return Observable.create(() => () => this.removeContexts(contexts));\n }\n\n private removeContexts(contexts: Context[]) {\n const allContexts = this.contextsObservable.getValue();\n const filteredContexts = allContexts.filter(context => contexts.indexOf(context) === -1);\n this.contextsObservable.next(filteredContexts);\n }\n\n saveFilters(filters: FilterValue[]) {\n return this.http.post(SAVE_FILTERS_URL, { filters });\n }\n\n searchFieldSuggestions(url: string, params: any, type: any) {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json; charset=utf-8' });\n if (type === 'ENTITY') {\n return this.http.get(url, { headers });\n }\n return this.http.post(url, params, { headers });\n }\n\n public tryAgain(serviceContexts: Context[]) {\n this.getFilters(serviceContexts);\n }\n\n private getAndApplyFilters(serviceContexts: Context[]) {\n this.getFilters(serviceContexts, true);\n }\n\n private getFilters(serviceContexts: Context[], applyFilter?: boolean) {\n this.http\n .post<ContextsFiltersResponse>(GET_FILTERS_URL, { serviceContexts })\n .pipe(map(response => this.mapFilters(response.filters)))\n .subscribe(\n filters => this.filtersObservable.next({ filters, applyFilter }), //\n err => this.filtersObservable.next({ error: true, message: err })\n );\n }\n\n private mapFilters(filters: Filter[]): Filter[] {\n return filters.map(filter => {\n try {\n const value = filter.value && JSON.parse(filter.value);\n\n if (value && filter.search && filter.search.basicSearch && filter.search.basicSearch.output) {\n this.mapValues(value, filter.search.basicSearch.output.keyFields, filter.search.basicSearch.output.displayFields);\n } else if (value && filter.search && filter.search.entitySearch && filter.search.entitySearch.output) {\n this.mapValues(value, filter.search.entitySearch.output.keyFields, filter.search.entitySearch.output.displayFields);\n }\n\n if (value) {\n if (this.isMultiple(filter)) {\n const valueInText = JSON.stringify(value);\n\n if ((valueInText.startsWith('[{') && valueInText.endsWith('}]')) || valueInText.length <= 4) {\n filter.value = valueInText;\n } else {\n filter.value = JSON.stringify('');\n }\n } else {\n filter.value = JSON.stringify(value);\n }\n }\n } catch (ex) {\n console.error(`Global: filter ${filter.name} has value error. `, ex);\n filter.value = JSON.stringify('');\n }\n\n return filter;\n });\n }\n\n private isMultiple(filter: Filter): boolean {\n return (\n filter.type === 'SEARCH' &&\n filter.search &&\n ((filter.search.basicSearch && filter.search.basicSearch.output && filter.search.basicSearch.output.maxSelectedItems > 1) ||\n (filter.search.entitySearch && filter.search.entitySearch.output && filter.search.entitySearch.output.maxSelectedItems > 1))\n );\n }\n\n private mapValues(value: any, keyFields: string[], displayFields: string[]) {\n if (Array.isArray(value)) {\n value.forEach(e => {\n this.mapValue(e, keyFields, displayFields);\n });\n } else {\n this.mapValue(value, keyFields, displayFields);\n }\n }\n\n private mapValue(value: any, keyFields: string[], displayFields: string[]) {\n if (!value) {\n return;\n }\n\n const ids = [] as string[];\n const displays = [] as string[];\n\n keyFields.filter(e => value[e] !== undefined).forEach(e => ids.push(value[e]));\n displayFields.filter(e => value[e] !== undefined).forEach(e => displays.push(value[e]));\n\n if (ids.length > 0 && displays.length > 0) {\n value[searchKeyName] = ids.join(', ');\n value[searchDisplayName] = displays.join(', ');\n } else {\n value = [''];\n }\n }\n}\n","import { FilterType } from './filter-type';\nimport { Scope } from './scope';\nimport { EnumItem } from './enum-item';\nimport { DependsOn } from './depends-on';\nimport { Search } from './search';\n\nexport class Filter {\n constructor(\n public type: FilterType,\n public required: boolean,\n public label: string,\n public domain: string,\n public scope: Scope,\n public name: string,\n public contexts: string[],\n public services: string[],\n public value?: string,\n public enumItems?: EnumItem[],\n public defaultValue?: string,\n public search?: Search,\n public tabIndex?: number,\n public minValue?: number,\n public maxValue?: number,\n public dependsOn?: DependsOn[],\n public mask?: string,\n public regExp?: string\n ) {}\n}\n","export enum FilterType {\n STRING = 'STRING',\n BOOLEAN = 'BOOLEAN',\n INTEGER = 'INTEGER',\n DOUBLE = 'DOUBLE',\n DATE = 'DATE',\n DATETIME = 'DATETIME',\n TIME = 'TIME',\n MONEY = 'MONEY',\n ENUMERATION = 'ENUMERATION',\n SEARCH = 'SEARCH'\n}\n","export enum Scope {\n DOMAIN = 'DOMAIN',\n SERVICE = 'SERVICE'\n}\n","import { DependsOn } from './depends-on';\nimport { Observable, Subject } from 'rxjs';\nimport { FormControl } from '@angular/forms';\nimport { FilterType } from './filter-type';\n\nexport interface FormFilterConfig {\n name: string;\n domain: string;\n services: string[];\n value: any;\n defaultValue: any;\n dependsOn: DependsOn[];\n isMultiple: boolean;\n}\n\nexport class FormFilter {\n private _value: any;\n private _valueObserver = new Subject<any>();\n valueChanges: Observable<any> = this._valueObserver.asObservable();\n name: string;\n domain: string;\n contexts: string[];\n services: string[];\n childs: string[];\n dependsOn: DependsOn[];\n filterControl: FormControl;\n type: FilterType;\n isMultiple: boolean;\n defaultValue: any;\n\n constructor({ value, ...config }: FormFilterConfig) {\n this._value = value;\n Object.assign(this, config);\n }\n\n set value(value: any) {\n this._value = value;\n this._valueObserver.next(value);\n }\n\n get value() {\n return this._value;\n }\n}\n","import { FormGroup } from '@angular/forms';\nimport { Field } from '@seniorsistemas/angular-components';\n\nexport class TabView {\n fields: Field[] = [];\n form: FormGroup;\n name?: string;\n\n constructor(config: any) {\n this.form = new FormGroup({});\n Object.assign(this, config);\n }\n}\nexport class ContextTab extends TabView {\n activeFilters = 0;\n domain: string;\n\n get label() {\n return `${this.name} (${this.activeFilters})`;\n }\n}\n","export const FILTER_ID_SEPARATOR = ':';\n\nexport function getFilterId(domain: string, filterName: string) {\n return `${domain}${FILTER_ID_SEPARATOR}${filterName}`;\n}\n\nexport function getTabId(domain: string, contextId: string) {\n return `${domain}${FILTER_ID_SEPARATOR}${contextId}`;\n}\n","import { FilterType } from '../../models';\nconst moment = require('moment');\n\n/**\n *@description Necessary because of https://github.com/rollup/rollup/issues/670\n *\n * */\n\nconst { DATETIME, TIME, DATE } = FilterType;\n\nconst parsers = {\n [DATE]: (value: any) => dateParser(value, 'YYYY-MM-DD'),\n [TIME]: (value: any) => dateParser(value, 'HH:mm:ss'),\n [DATETIME]: (value: any) => dateParser(value)\n};\n\nexport function parseFilterValue(value: any, type: FilterType) {\n const parser = parsers[type];\n if (value !== undefined && value !== null && value !== '') {\n return parser ? parser(value) : value;\n }\n\n return value;\n}\n\nfunction dateParser(value: string, format?: string) {\n const date = moment(value);\n return format ? date.format(format) : date.format();\n}\n","export function jsonPath(object: Object, path: string): any {\n path = path.replace('$.', '');\n const allPaths = path.split('.');\n const currentPath = allPaths[0];\n const value = object[currentPath];\n allPaths.shift();\n\n if (allPaths.length) {\n return jsonPath(value, allPaths.join('.'));\n }\n return value;\n}\n","export const filterOperators = {\n 'contains': (attr: string, value: string) => `containing(${attr}, '${value}')`,\n '=': (attr: string, value: string) => `${attr} eq ${value}`,\n '!=': (attr: string, value: string) => `${attr} ne ${value}`,\n '>': (attr: string, value: string) => `${attr} gt ${value}`,\n '<': (attr: string, value: string) => `${attr} lt ${value}`,\n '>=': (attr: string, value: string) => `${attr} ge ${value}`\n};\n","import { FilterType, Search } from '../models';\nimport { searchKeyName } from '../shared/constants';\n\nexport * from './filter-id/index';\nexport * from './filter-value/index';\nexport * from './json-path';\nexport * from './filterOperators';\n\nexport function toUserFormat(value: any, type: FilterType) {\n let parsedValue;\n if (type !== FilterType.SEARCH || !Array.isArray(value)) {\n parsedValue = [(value === null || value === undefined) ? '' : value];\n } else if (Array.isArray(value)) {\n if (value.length) {\n parsedValue = value[0] === null ? [''] : value;\n } else {\n parsedValue = [''];\n }\n } else {\n parsedValue = value ? value : [''];\n }\n\n return JSON.stringify(parsedValue);\n}\n\nexport function toFilterFormat(value: any, type: FilterType) {\n let parsedValue;\n if (type !== FilterType.SEARCH) {\n parsedValue = [(value === null || value === undefined) ? '' : value];\n } else if (Array.isArray(value)) {\n /*\n Deve enviar para o backend o valor contido no keyValue em array.\n\n Exemplo:\n Quando tenho dois objetos selecionados [{1,'Base'},{2,'Other'}] deve enviar no padrão: [1,'Base'], [2,'Other']\n */\n parsedValue = [''];\n if (value !== null && value.length > 0 && value[0] !== '') {\n parsedValue = value.map(v => v[searchKeyName]);\n }\n } else {\n parsedValue = [value === null ? '' : value[searchKeyName]];\n }\n\n return JSON.stringify(parsedValue);\n}\n\nexport function fromJson(value: any, type: FilterType, isNotMultiple: boolean) {\n const parsedValue = JSON.parse(value);\n if (type !== FilterType.SEARCH || isNotMultiple) {\n return parsedValue[0];\n }\n\n return parsedValue;\n}\n\nexport function getSearchType(search: Search): any {\n return search.basicSearch ? search.basicSearch : search.entitySearch;\n}\n","const moment = require('moment');\nimport { FilterType, Filter, Search } from '../../models';\nimport { FormControl, Validators } from '@angular/forms';\nimport { getSearchType } from '..';\n\n/**\n *@description Necessary because of https://github.com/rollup/rollup/issues/670\n *\n * */\n\nconst { DATE, DATETIME, TIME } = FilterType;\n\nconst parsers = {\n [DATE]: (v: string) => dateParser(v),\n [DATETIME]: (v: string) => dateParser(v),\n [TIME]: (v: string) => dateParser(v, 'HH:mm:ss')\n};\n\nexport function parseFormValue(value: string, type: FilterType, search?: Search) {\n const parser = parsers[type];\n const parsedValue = JSON.parse(value);\n const isNotMultiple = search && getSearchType(search).output.maxSelectedItems === 1;\n\n let formValue;\n if ((type === FilterType.INTEGER || type === FilterType.DOUBLE || type === FilterType.MONEY) && parsedValue[0] === '') {\n formValue = null;\n } else if (type !== FilterType.SEARCH || isNotMultiple) {\n formValue = parsedValue[0];\n } else {\n formValue = parsedValue[0] ? parsedValue : [];\n }\n\n if (parser) {\n return parser(formValue);\n }\n\n return formValue;\n}\n\nexport function createFormControl({ minValue, maxValue, regExp, value, type, search }: Filter) {\n const validators = createValidators(minValue, maxValue, regExp);\n const formValue = parseFormValue(value, type, search);\n\n return new FormControl(formValue, { validators });\n}\n\nfunction createValidators(minValue: number, maxValue: number, regExp: string) {\n const { pattern, min, max } = Validators;\n const validators = [];\n\n regExp && validators.push(pattern(regExp));\n minValue !== undefined && validators.push(min(minValue));\n maxValue !== undefined && validators.push(max(maxValue));\n\n return validators;\n}\n\nfunction dateParser(value: string, format?: string): Date | string {\n return value !== null && value !== '' ? moment(value, format).toDate() : '';\n}\n","import { contains, equals } from 'ramda';\nimport { FilterType } from '../models';\nconst supportedTypes = [\n FilterType.STRING,\n FilterType.BOOLEAN,\n FilterType.INTEGER,\n FilterType.ENUMERATION,\n FilterType.TIME,\n FilterType.MONEY,\n FilterType.DATETIME,\n FilterType.DATE,\n FilterType.DOUBLE\n];\n\nconst operation = {\n '>': (value: number, otherValue: number) => {\n return value > otherValue;\n },\n '<': (value: number, otherValue: number) => {\n return value < otherValue;\n },\n '>=': (value: number, otherValue: number) => {\n return value >= otherValue;\n },\n '<=': (value: number, otherValue: number) => {\n return value <= otherValue;\n },\n 'contains': (value: any, otherValue: any[]) => {\n return contains(value, otherValue);\n },\n '=': (value: any, otherValue: any) => {\n if (typeof otherValue === 'number') {\n return equals(Number(value), otherValue);\n }\n return equals(value, otherValue);\n },\n '!=': (value: any, otherValue: any) => {\n if (typeof otherValue === 'number') {\n return !equals(Number(value), otherValue);\n }\n return !equals(value, otherValue);\n }\n};\n\nexport function compare(operator: string, value: any, otherValue: any) {\n const comparator = operation[operator];\n return comparator(value, otherValue);\n}\n\nexport function isValidOperator(operator: string) {\n return !!operation[operator];\n}\n\nexport function isSupportedType(type: FilterType) {\n return contains(type, supportedTypes);\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nconst TRANSLATE_PREFIX = 'platform.filter_service';\n\n@Injectable()\nexport class CalendarOptionsService {\n constructor(private translate: TranslateService) {\n }\n public getOptions() {\n return {\n clear: this.translate.instant(`${TRANSLATE_PREFIX}.clear`),\n dateFormat: this.translate.instant(`${TRANSLATE_PREFIX}.date_format`),\n dayNames: [\n this.translate.instant(`${TRANSLATE_PREFIX}.name_sunday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_monday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_tuesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_wednesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_thursday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_friday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_saturday`)\n ],\n dayNamesMin: [\n this.translate.instant(`${TRANSLATE_PREFIX}.min_sunday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_monday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_tuesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_wednesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_thursday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_friday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_saturday`)\n ],\n dayNamesShort: [\n this.translate.instant(`${TRANSLATE_PREFIX}.short_sunday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_monday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_tuesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_wednesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_thursday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_friday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_saturday`)\n ],\n firstDayOfWeek: 0,\n hourFormat: this.translate.instant(`${TRANSLATE_PREFIX}.hour_format`),\n monthNames: [\n this.translate.instant(`${TRANSLATE_PREFIX}.name_january`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_february`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_march`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_april`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_may`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_june`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_july`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_august`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_september`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_october`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_november`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_december`),\n ],\n monthNamesShort: [\n this.translate.instant(`${TRANSLATE_PREFIX}.short_january`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_february`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_march`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_april`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_may`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_june`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_july`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_august`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_september`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_october`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_november`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_december`),\n ],\n today: this.translate.instant(`${TRANSLATE_PREFIX}.today`)\n };\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { MessageService } from \"primeng/api\";\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { BehaviorSubject, from, Subject } from 'rxjs';\nimport { filter as rxFilter, map, mergeMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { Context, DependsOn, EntitySearchInput, EnumItem, Filter, FilterType, Scope } from '../../models';\nimport { ContextTab, TabView } from '../../models/tab-view';\nimport { AdvancedFilterService } from '../../services/advanced-filter.service';\nimport { FormFilter } from '../../models/form-filter';\nimport {\n filterOperators,\n fromJson,\n getFilterId,\n getSearchType,\n getTabId,\n jsonPath,\n parseFilterValue,\n toFilterFormat,\n toUserFormat\n} from '../../utils/index';\nimport { createFormControl } from '../../utils/form-field';\nimport { clone, equals } from 'ramda';\nimport { compare, isSupportedType, isValidOperator } from '../../utils/comparator';\n\nimport {\n AutocompleteField,\n CalendarField,\n RadioButtonField,\n CurrencyField,\n Field,\n FieldConfig,\n FieldType,\n NumberField,\n SelectField,\n TextField,\n RationButtonOption,\n CalendarFieldConfig\n} from '@seniorsistemas/angular-components';\n\nimport { searchDisplayName, searchKeyName } from '../../shared/constants';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Message } from 'primeng/api';\nimport { CalendarOptionsService } from '../../services/calendar-options.service';\n\nconst TRANSLATE_PREFIX = 'platform.filter_service';\nconst TOAST_LIFE = 5000;\n\n@Component({\n selector: 's-app-form-filter',\n templateUrl: './form-filter.component.html',\n styleUrls: ['./form-filter.component.scss']\n})\nexport class FormFilterComponent implements OnInit, OnDestroy {\n destroy$ = new Subject();\n errorState: HttpErrorResponse;\n tabs: Map<string, ContextTab>;\n contexts: Context[] = [];\n formFilters: FormFilter[] = [];\n oldFormFilters: any[] = [];\n actualFormFilters: any[] = [];\n general = new TabView({ name: 'Geral' });\n totalFiltersActive = 0;\n isMobile = false;\n tabViewOrientation = 'left';\n error = false;\n\n errorMessages = {\n min: this.translate.instant(`${TRANSLATE_PREFIX}.error_min_value`),\n max: this.translate.instant(`${TRANSLATE_PREFIX}.error_max_value`),\n pattern: this.translate.instant(`${TRANSLATE_PREFIX}.invalid_pattern`)\n };\n\n @Input() showMessages = true;\n @Input() isModal = false;\n @Output() totalFiltersActiveOutput = new EventEmitter<number>();\n @Output() errorOutput = new EventEmitter<boolean>();\n @Output() showDialogOutput = new EventEmitter<boolean>();\n @Output() closeModalOutput = new EventEmitter();\n\n constructor(\n private filterService: AdvancedFilterService,\n public translate: TranslateService,\n private messageService: MessageService,\n private calendarOptionsService: CalendarOptionsService,\n private changeDetectorRef: ChangeDetectorRef\n ) { }\n\n @HostListener('window:resize', ['$event'])\n onResizeWindow(event: any) {\n const { innerWidth } = event.target;\n this.isMobile = innerWidth <= 640;\n this.tabViewOrientation = this.isMobile ? 'top' : 'left';\n }\n\n ngOnInit() {\n this.isMobile = innerWidth <= 640;\n this.tabViewOrientation = this.isMobile ? 'top' : 'left';\n this.subscribeContextsObservable();\n this.subscribeFiltersObservable();\n\n window.addEventListener('message', event => {\n const data = event.data;\n const message = data.message && data.message.split(':')[1];\n if (message === 'addContext') {\n this.filterService.addContexts(...data.payload);\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n }\n\n hasChanges() {\n const keys = Object.keys(this.formFilters);\n const oldKeys = Object.keys(this.oldFormFilters);\n if (!oldKeys.length) {\n return true;\n }\n const filtered = keys.filter(key => {\n const currentValue = this.formFilters[key].value;\n const oldValue = this.oldFormFilters[key] && this.oldFormFilters[key].value;\n return !equals(currentValue, oldValue);\n });\n return filtered.length > 0;\n }\n\n onApplyFilters() {\n this.hasChanges() && this.closeModalOutput.emit();\n }\n\n public getFilters() {\n this.hasChanges() && this.filterService.tryAgain(this.contexts);\n }\n\n applyFilters(showToast = false) {\n if (this.hasChanges()) {\n this.showDialogOutput.emit(false);\n this.counterUpdate();\n const filters = this.getFiltersValues(this.formFilters);\n this.filterService.saveTickedFilters(filters);\n } else if (showToast) {\n const message = {\n key: 'filterServiceToastKey',\n severity: 'info',\n life: TOAST_LIFE,\n detail: this.translate.instant(`${TRANSLATE_PREFIX}.applied_filter_nochange`, { activeFilters: this.totalFiltersActive })\n };\n this.sendMessage(message);\n }\n this.oldFormFilters = clone(this.formFilters);\n }\n\n getDefaultValue(defaultValue: any, isMultiple: boolean) {\n if (defaultValue === undefined || (isMultiple && defaultValue[0] === '')) {\n return [];\n }\n\n return defaultValue;\n }\n\n clearFilters() {\n const keys = Object.keys(this.formFilters);\n keys.forEach(key => this.cleanFieldAndSetDefaultValue(key));\n }\n\n sendCloseMessage() {\n window.parent.postMessage(\n {\n message: 'dashboard:close-modal',\n payload: {\n modalName: 'advanced-filter-1'\n }\n },\n '*'\n );\n }\n\n sendMessage(message: Message) {\n if (this.showMessages) {\n this.messageService.add(message);\n } else {\n window.parent.postMessage(\n {\n message: 'dashboard:toastr',\n payload: {\n type: 'success',\n message: message.detail\n }\n },\n '*'\n );\n }\n }\n\n saveFilters() {\n const filters = this.parseToUserFilters(this.formFilters);\n const savedFilterSuccess = () => {\n const message = {\n key: 'filterServiceToastKey',\n severity: 'info',\n life: TOAST_LIFE,\n detail: this.translate.instant(`${TRANSLATE_PREFIX}.saved_filters_success`, { activeFilters: this.totalFiltersActive })\n };\n this.sendMessage(message);\n this.counterUpdate();\n };\n\n const savedFiltersError = () => {\n const message = {\n key: 'filterServiceToastKey',\n severity: 'error',\n life: TOAST_LIFE,\n detail: this.translate.instant(`${TRANSLATE_PREFIX}.saved_filters_error`, { activeFilters: this.totalFiltersActive })\n };\n this.sendMessage(message);\n };\n this.filterService\n .saveFilters(filters) //\n .subscribe(savedFilterSuccess, savedFiltersError);\n }\n\n private counterUpdate() {\n this.totalFiltersActive = this.countActiveFilters(this.tabs);\n this.totalFiltersActiveOutput.emit(this.totalFiltersActive);\n }\n\n private countActiveFilters(tabs: Map<string, ContextTab>) {\n let totalFiltersActive = 0;\n\n tabs.forEach(tabView => {\n const { value } = tabView.form;\n tabView.activeFilters = Object.keys(value).reduce((appliedFilters, key) => {\n const filterValue = value[key];\n const isArray = Array.isArray(filterValue);\n const isValidArray = isArray && filterValue.length > 0;\n\n if (isValidArray || (!isArray && filterValue)) {\n appliedFilters++;\n }\n\n return appliedFilters;\n }, 0);\n totalFiltersActive += tabView.activeFilters;\n });\n\n return totalFiltersActive;\n }\n\n private parseToUserFilters(filters: FormFilter[]) {\n const ids = Object.keys(filters);\n\n return ids.reduce((all, filterId) => {\n const { type, services, name, value, domain, contexts } = filters[filterId] as Filter;\n const filterValue = toUserFormat(value, type);\n\n const values = services.map(service => ({ name, service, value: filterValue, domain, contexts }));\n\n return [...all, ...values];\n }, []);\n }\n\n private getFiltersValues(filters: FormFilter[]) {\n const ids = Object.keys(filters);\n\n return ids.reduce((all, filterId) => {\n const { type, services, name, value, domain } = filters[filterId] as Filter;\n const filterValue = toFilterFormat(value, type);\n const values = services.map(service => ({ name, service, value: filterValue, domain }));\n\n return [...all, ...values];\n }, []);\n }\n\n private subscribeContextsObservable() {\n const { contextsObserver } = this.filterService;\n contextsObserver.pipe(takeUntil(this.destroy$)).subscribe((contexts: Context[]) => (this.contexts = contexts));\n }\n\n errorStateAction() {\n this.filterService.tryAgain(this.contexts);\n }\n\n private subscribeFiltersObservable() {\n const { filtersObserver } = this.filterService;\n\n filtersObserver\n .pipe(takeUntil(this.destroy$)) //\n .subscribe(({ filters, applyFilter, error, message }) => {\n this.errorOutput.emit(error);\n this.error = error;\n this.errorState = message;\n if (!error) {\n this.tabs = this.createTabs(filters);\n this.counterUpdate();\n this.setDependencies(this.formFilters);\n this.createChildArray();\n if (filters.length > 0 && applyFilter) {\n this.applyFilters();\n }\n }\n });\n }\n\n private setDependencies(filters: FormFilter[]) {\n const names = Object.keys(filters);\n const dependencies = from(names).pipe(\n map(key => filters[key] as FormFilter),\n rxFilter(({ dependsOn }) => dependsOn && dependsOn.length > 0),\n tap(({ dependsOn, domain, filterControl }) => {\n const invalidFilters = dependsOn\n .filter(dep => dep.required)\n .filter(dep => {\n const id = getFilterId(domain, dep.filterName);\n const formFilter = filters[id];\n const { value, type } = formFilter;\n const { comparator } = dep;\n if (comparator && isValidOperator(comparator.operator) && isSupportedType(type)) {\n const fieldValue = parseFilterValue(value, type);\n return !compare(comparator.operator, comparator.value, fieldValue);\n }\n return dep.required ? !formFilter.value : formFilter.value;\n });\n\n if (invalidFilters.length > 0) {\n filterControl.disable();\n }\n }),\n map(({ domain, dependsOn, filterControl }) => ({ domain, dependsOn, filterControl }))\n );\n\n dependencies.subscribe(({ dependsOn, domain, filterControl }) =>\n from(dependsOn)\n .pipe(\n rxFilter(dep => dep.required),\n map(({ filterName }) => getFilterId(domain, filterName)),\n map(filterId => filters[filterId] as FormFilter),\n mergeMap(formFilter => from(formFilter.valueChanges)),\n map(val => {\n const comparation = dependsOn.every(dep => {\n const filterId = getFilterId(domain, dep.filterName);\n if (this.formFilters[filterId]) {\n const type = this.formFilters[filterId].type;\n const { comparator } = dep;\n if (comparator && isValidOperator(comparator.operator) && isSupportedType(type)) {\n const value = parseFilterValue(val, type);\n return compare(comparator.operator, comparator.value, value);\n }\n return true;\n }\n });\n return !this.IsEmpty(val) && comparation ? 'enable' : 'disable';\n })\n )\n .subscribe(status => filterControl[status]())\n );\n }\n\n private addGeneralField(filter: Filter) {\n const { name, domain, type } = filter;\n const controlName = getFilterId(domain, name);\n const fieldControl = createFormControl(filter);\n\n fieldControl.valueChanges\n .pipe(\n takeUntil(this.destroy$),\n map(v => parseFilterValue(v, type)),\n tap(value => (this.formFilters[controlName].value = value))\n ) //\n .subscribe(val =>\n this.tabs.forEach(tab => {\n const control = tab.form.controls[name];\n if (control && tab.domain === domain) {\n control.setValue(val, { emitEvent: false });\n }\n })\n );\n\n const newFilter = { ...filter, ...{ name: controlName } };\n const newField = this.createField(newFilter);\n this.general.form.addControl(controlName, fieldControl);\n this.general.fields.push(newField);\n }\n\n /*\n * Verifica os contextos de cada filtro, caso todos os contextos foram informados:\n * @return true\n * Caso não tenha nenhum contexto, considera-se por padrão que é todos:\n * @return true\n */\n private containsAllContexts(myContexts: string[]) {\n if (!myContexts.length) {\n return true;\n }\n const allContexts = this.contexts.map(data => data.contextId);\n return equals(myContexts.sort(), allContexts.sort());\n }\n\n /**\n *\n * @todo Refatorar. O método possui muitas responsabilidades\n */\n private createTabs(filters: Filter[]) {\n return filters.reduce((tabs, filter) => {\n const { domain, services, name, type, scope, contexts, dependsOn, value, search, defaultValue } = filter;\n const isNotMultiple = search && getSearchType(search).output.maxSelectedItems === 1;\n const field = this.createField(filter);\n const filterId = getFilterId(domain, name);\n const filterConfig = {\n domain,\n contexts,\n services,\n name,\n dependsOn,\n value: fromJson(value, type, isNotMultiple),\n type,\n isMultiple: !isNotMultiple,\n defaultValue: fromJson(defaultValue, type, isNotMultiple)\n };\n this.formFilters[filterId] = new FormFilter(filterConfig);\n const formFilter = this.formFilters[filterId];\n if (scope === Scope.DOMAIN && this.containsAllContexts(contexts)) {\n this.addGeneralField(filter);\n }\n\n contexts.forEach(contextId => {\n const tabId = getTabId(domain, contextId);\n const fieldControl = createFormControl(filter);\n\n if (!tabs.has(tabId)) {\n const { contextLabel } = this.contexts.find(context => context.contextId === contextId);\n const tab = new ContextTab({ domain, name: contextLabel });\n tabs.set(tabId, tab);\n }\n\n fieldControl.valueChanges\n .pipe(takeUntil(this.destroy$)) //\n .subscribe((val: any) => this.updateFilterValue(tabId, name, val, domain, type));\n\n const contextTab = tabs.get(tabId);\n\n contextTab.fields.push(field);\n contextTab.form.addControl(filter.name, fieldControl);\n\n if (!formFilter.filterControl) {\n formFilter.filterControl = fieldControl;\n }\n });\n\n return tabs;\n }, new Map<string, ContextTab>());\n }\n\n private updateFilterValue(tabId: string, filterName: string, value: any, domain: string, type: FilterType) {\n const controlOpts = { emitEvent: false };\n const fieldValue = parseFilterValue(value, type);\n const filterId = getFilterId(domain, filterName);\n const generalFieldControl = this.general.form.controls[filterId];\n\n this.tabs.forEach(({ form }, key) => {\n const control = form.controls[filterName];\n\n if (tabId !== key && control) {\n control.setValue(value, controlOpts);\n }\n });\n const { childs } = this.formFilters[filterId];\n childs && childs.forEach((child: any) => this.cleanFieldAndSetDefaultValue(child.filter.key));\n generalFieldControl && generalFieldControl.setValue(value, controlOpts);\n this.formFilters[filterId].value = fieldValue;\n }\n\n private cleanFieldAndSetDefaultValue(key: string) {\n const { isMultiple, defaultValue, filterControl, type } = this.formFilters[key] as FormFilter;\n const finalValue = this.getDefaultValue(defaultValue, isMultiple);\n\n if (filterControl) {\n if (type === 'DATE' || (type === 'SEARCH' && isMultiple)) {\n filterControl.setValue(finalValue);\n }\n if (type === 'INTEGER' || type === 'DOUBLE' || type === 'MONEY') {\n finalValue === '' ? filterControl.setValue(null) : filterControl.setValue(finalValue);\n } else {\n filterControl.setValue(finalValue, { onlySelf: true });\n }\n }\n }\n\n private createChildArray() {\n const keys = Object.keys(this.formFilters);\n keys.forEach(key => {\n const { dependsOn, domain } = this.formFilters[key];\n dependsOn.forEach((field: any) => {\n const filterId = getFilterId(domain, field.filterName);\n if (this.formFilters[filterId]) {\n if (!this.formFilters[filterId].childs) {\n this.formFilters[filterId].childs = [];\n }\n this.formFilters[filterId].childs.push({ filter: { key, required: field.required } });\n }\n });\n });\n }\n\n private createField(filter: Filter): Field {\n const { name, label, enumItems, type, mask } = filter;\n const translatedEnumItems =\n enumItems && enumItems.map((item: EnumItem) => ({ label: this.translate.instant(item.label), value: item.value }));\n const field = { name, label: this.translate.instant(label), placeholder: '' };\n\n const creators = {\n [FilterType.STRING]: () => new TextField({ ...field, mask: mask ? () => mask : null, type: FieldType.String }),\n [FilterType.MONEY]: () => new CurrencyField({ ...field, type: FieldType.Money }),\n [FilterType.BOOLEAN]: () => this.createRadioButton({ ...field }),\n [FilterType.DATE]: () => this.createCalendar({ ...field, type: FieldType.Date }),\n [FilterType.DATETIME]: () => this.createCalendar({ ...field, type: FieldType.DateTime }),\n [FilterType.TIME]: () => this.createCalendar({ ...field, type: FieldType.Time }),\n [FilterType.ENUMERATION]: () =>\n new SelectField({\n ...field,\n placeholder: this.translate.instant('platform.filter_service.select'),\n options: [...translatedEnumItems] as any,\n type: FieldType.Enum\n }),\n [FilterType.INTEGER]: () =>\n new NumberField({\n ...field,\n numberLocaleOptions: this.optionsInteger(),\n mask: mask ? () => mask : null,\n type: FieldType.Integer\n }),\n [FilterType.DOUBLE]: () => new CurrencyField({ ...field, type: FieldType.Double }),\n [FilterType.SEARCH]: () => this.createAutocompleteField(field, filter)\n };\n\n return creators[type]();\n }\n\n private createRadioButton(field: FieldConfig) {\n const options = [\n { label: this.translate.instant(`${TRANSLATE_PREFIX}.yes`), value: true },\n { label: this.translate.instant(`${TRANSLATE_PREFIX}.no`), value: false }\n ] as RationButtonOption[];\n\n return new RadioButtonField({ ...field, type: FieldType.Radio, options });\n }\n\n private createCalendar(config: CalendarFieldConfig) {\n const calendar = new CalendarField(config);\n calendar.calendarLocaleOptions = this.calendarOptionsService.getOptions();\n if (!this.isModal) calendar.appendTo = 'body';\n return calendar;\n }\n\n private createAutocompleteField(field: FieldConfig, { dependsOn, search, domain, name }: Filter) {\n const suggestionsObservable = new BehaviorSubject<any[]>([]);\n const { queryParam } = getSearchType(search).input;\n const { displayFields, keyFields, resultDataJsonPath, displayFieldConcatToken, maxSelectedItems } = getSearchType(search).output;\n const filterId = getFilterId(domain, name);\n const suggestionsError = (messageError?: string) => {\n const messageDetail = messageError ? messageError : this.translate.instant(`${TRANSLATE_PREFIX}.find_suggestions_error`, { activeFilters: this.totalFiltersActive })\n const message = {\n key: 'filterServiceToastKey',\n severity: 'error',\n life: TOAST_LIFE,\n detail: messageDetail\n };\n this.sendMessage(message);\n };\n const onSearch = (val: string) => {\n const params = { [queryParam]: val };\n dependsOn && Object.assign(params, this.getDependenciesValues(dependsOn, domain));\n\n const searchUrl =\n search && search.type === 'ENTITY'\n ? this.getEntitySearchUrl(search.entitySearch.input, val, dependsOn)\n : getSearchType(search).input.url;\n\n this.filterService\n .searchFieldSuggestions(searchUrl, params, search.type)\n .pipe(\n map(response => jsonPath(response, resultDataJsonPath)),\n map((suggestions: any[]) => this.addSuggestionFields(suggestions, displayFields, keyFields, displayFieldConcatToken, filterId))\n )\n .subscribe(result => {\n suggestionsObservable.next(result);\n this.changeDetectorRef.detectChanges();\n }, (error) => {\n let messageError = undefined\n if (error && error.error.message) messageError = error.error.message\n suggestionsError(messageError)\n });\n };\n\n return new AutocompleteField({\n ...field,\n onSearch,\n appendTo: 'body',\n suggestionsObservable,\n displayField: searchDisplayName,\n dataKey: searchKeyName,\n multiple: maxSelectedItems > 1,\n size: { lg: 12, md: 12, xl: 12 },\n emptyMessage: this.translate.instant(`${TRANSLATE_PREFIX}.search_empty_message`)\n });\n }\n\n private getEntitySearchUrl(search: EntitySearchInput, value: string, dependsOn: DependsOn[]) {\n const { attributes, domainName, entityName, serviceName } = search;\n const url = `${domainName}/${serviceName}/entities/${entityName}/?filter=`;\n const filters: any = attributes.map(attr => filterOperators[attr.comparator](attr.name, value));\n\n dependsOn &&\n dependsOn.forEach(obj => {\n const filterId = getFilterId(domainName, obj.filterName);\n const fieldValue = this.formFilters[filterId].value[searchKeyName];\n filters.push(`${obj.entityAttribute} eq '${fieldValue}'`);\n });\n\n // O regex apenas seleciona as virgulas ignorando as que estiverem dentro do ()\n return url.concat(filters).replace(/[,]+(?![^(]*[)])/g, ` ${search.operator} `);\n }\n\n private addSuggestionFields(suggestions: any[], displayFields: string[], keyFields: string[], separator: string, filterId: string) {\n const addValue = (acc: string, value: any, token: string) => (acc ? `${acc}${token}${value}` : value);\n\n const result = suggestions.map(suggestion => ({\n ...suggestion,\n [searchDisplayName]: displayFields.reduce((value, display) => {\n return addValue(value, this.translate.instant(suggestion[display]), separator);\n }, ''),\n [searchKeyName]: keyFields.reduce((value, key) => addValue(value, suggestion[key], ', '), '')\n }));\n this.formFilters[filterId].invalidValue = result.length === 0;\n\n return result.filter(item => {\n const { value } = this.formFilters[filterId];\n if (Array.isArray(value)) {\n const index = value.findIndex((i: any) => i.$$__keyValue__ === item.$$__keyValue__);\n if (index === -1) {\n return item;\n }\n } else {\n return item;\n }\n });\n }\n\n private getDependenciesValues(dependencies: DependsOn[], domain: string) {\n return dependencies.reduce((params, { filterName }) => {\n const filterId = getFilterId(domain, filterName);\n if (this.formFilters[filterId]) {\n const { value, type } = this.formFilters[filterId];\n if (type === 'ENUMERATION') {\n params[filterName] = value;\n } else {\n if (Array.isArray(value)) {\n params[filterName] = value.map(arr => arr[searchKeyName]);\n } else {\n params[filterName] = value ? value[searchKeyName] : [''];\n }\n }\n this.IsEmpty(params[filterName]) && delete params[filterName];\n return params;\n }\n }, {});\n }\n\n /*\n * Verifica se o valor informado é falso, em arrays, é verificado cada item\n */\n private IsEmpty(value: any) {\n return Array.isArray(value) ? value.every(data => !data) : !value;\n }\n\n /**\n * Return format to specify for integer type field\n */\n private optionsInteger() {\n return { currencySymbol: '', decimalSeparator: '', thousandsSeparator: '' };\n }\n}\n","import { Component, HostListener, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { FormFilterComponent } from '../form-filter/form-filter.component';\n\nconst TRANSLATE_PREFIX = 'platform.filter_service';\n\n@Component({\n selector: 's-advanced-filter',\n templateUrl: './advanced-filter.component.html',\n styleUrls: ['./advanced-filter.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AdvancedFilterComponent implements OnInit, OnDestroy {\n @Input() labelButton = 'Filters';\n @Input() onlyContent = false;\n @Input() hideButtons = false;\n @Input() canOpenFilter = true;\n @Input() showActiveFiltersCountBadge = true;\n @Input() filterAndSave = false;\n\n subscriptions: Subscription[] = [];\n\n isMobile = false;\n tabViewOrientation = 'left';\n totalFiltersActive = 0;\n showDialog = false;\n error = false;\n\n @ViewChild(FormFilterComponent)\n modalComponent: FormFilterComponent;\n\n mobileButtonActions = [\n { id: 'save', label: this.translate.instant('save'), command: () => this.modalComponent.saveFilters() },\n { id: 'clear', label: this.translate.instant('clear'), command: () => this.modalComponent.clearFilters() }\n ];\n\n constructor(public translate: TranslateService, private router: Router) {}\n\n ngOnInit() {\n this.isMobile = innerWidth <= 640;\n this.tabViewOrientation = this.isMobile ? 'top' : 'left';\n\n const sub = this.router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.modalComponent.getFilters();\n }\n });\n\n this.subscriptions.push(sub);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(v => v.unsubscribe());\n }\n\n @HostListener('window:resize', ['$event'])\n onResizeWindow(event: any) {\n const { innerWidth } = event.target;\n this.isMobile = innerWidth <= 640;\n this.tabViewOrientation = this.isMobile ? 'top' : 'left';\n }\n\n get appliedFiltersTooltip() {\n return this.totalFiltersActive > 1\n ? this.translate.instant(`${TRANSLATE_PREFIX}.applied_filters_message`, { totalActiveFilters: this.totalFiltersActive })\n : this.translate.instant(`${TRANSLATE_PREFIX}.applied_filter_message`, { totalActiveFilters: this.totalFiltersActive });\n }\n\n onError(event: boolean) {\n this.error = event;\n }\n\n saveFilters() {\n this.modalComponent.saveFilters();\n }\n\n clearFilters() {\n this.modalComponent.clearFilters();\n }\n\n close() {\n this.modalComponent.getFilters();\n window.parent.postMessage(\n {\n message: 'dashboard:close-modal',\n payload: {\n modalName: 'advanced-filter-1'\n }\n },\n '*'\n );\n }\n\n applyFilters() {\n if (this.modalComponent.hasChanges()) {\n this.showDialog = false;\n }\n\n if (this.filterAndSave) {\n this.modalComponent.saveFilters();\n }\n\n this.modalComponent.applyFilters(true);\n }\n\n onApplyFilters() {\n if (this.filterAndSave) {\n this.modalComponent.saveFilters();\n }\n\n this.modalComponent.onApplyFilters();\n }\n\n toggleDialog() {\n this.showDialog = !this.showDialog;\n }\n\n updateTotalFiltersActive(event: number) {\n this.totalFiltersActive = event;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule as PrimeNGButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { TabViewModule } from 'primeng/tabview';\nimport { ToastModule } from 'primeng/toast';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { MessageService } from \"primeng/api\";\nimport { DynamicFormModule, ButtonModule, EmptyStateModule, LocaleService } from '@seniorsistemas/angular-components';\n\nimport { MapValuesPipe } from './pipes/map-values.pipe';\nimport { TranslatePipe } from './pipes/translate.pipe';\nimport { TranslationsModule } from './../translations/translations.module';\nimport { fallback } from './locale/fallback';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AdvancedFilterService } from './services/advanced-filter.service';\nimport { AdvancedFilterComponent } from './components/advanced-filter/advanced-filter.component';\nimport { FormFilterComponent } from './components/form-filter/form-filter.component';\nimport { CalendarOptionsService } from './services/calendar-options.service';\n\nexport class AppRoutingModule {}\n@NgModule({\n imports: [\n DialogModule,\n ButtonModule,\n PrimeNGButtonModule,\n TabViewModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DynamicFormModule,\n ToastModule,\n EmptyStateModule,\n TooltipModule,\n TranslationsModule.forChild([{domain: 'platform', service: 'filter_service', fallback}]),\n ],\n providers: [AdvancedFilterService, LocaleService, MessageService, TranslateService, CalendarOptionsService],\n declarations: [AdvancedFilterComponent, FormFilterComponent, MapValuesPipe, TranslatePipe],\n exports: [AdvancedFilterComponent, FormFilterComponent]\n})\nexport class AdvancedFilterModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpHandler, HttpRequest, HttpEvent, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nconst jc = require('json-cycle');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CyclicJsonInterceptor implements HttpInterceptor {\n public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (req.body instanceof Blob === false && req.body instanceof FormData === false) {\n req = req.clone({ body: jc.decycle(req.body) });\n }\n return next.handle(req).pipe(\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n event = event.clone({ body: jc.retrocycle(event.body) });\n }\n return event;\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { CyclicJsonInterceptor } from './cyclic-json-interceptor.service';\n\n@NgModule({\n imports: [HttpClientModule],\n providers: [{ provide: HTTP_INTERCEPTORS, useClass: CyclicJsonInterceptor, multi: true }]\n})\nexport class CyclicJsonInterceptorModule {}\n","import { service } from '@seniorsistemas/senior-platform-data';\nimport { Injectable } from '@angular/core';\nimport { Observable, defer, from } from 'rxjs';\n\n@Injectable()\nexport class RestUrl {\n get(): Observable<string> {\n return defer(() => from(service.getRestUrl()));\n }\n}\n","import { service } from '@seniorsistemas/senior-platform-data';\nimport { Injectable } from '@angular/core';\nimport { Observable, defer, from } from 'rxjs';\n\n@Injectable()\nexport class XServicesUrl {\n\n get(): Observable<string> {\n return defer(() => {\n const url = service.getXServicesUrl();\n return from(url);\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor as AngularHttpInterceptor, HttpHandler, HttpRequest, HttpEvent } from '@angular/common/http';\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport { Observable, forkJoin, defer, from } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { RestUrl } from './rest-url.service';\nimport { XServicesUrl } from './x-services-url.service';\n\n@Injectable()\nexport class HttpInterceptor implements AngularHttpInterceptor {\n\n constructor(private readonly restUrl: RestUrl, private readonly xServicesUrl: XServicesUrl) {}\n\n public intercept(originalReq: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!originalReq.url.includes(`://`)) {\n const getAuthHeader = defer(() => from(user.getAuthHeader()));\n if (/^\\/?[^\\/]+\\/[^\\/]+\\/api\\/(?:latest|v\\d+)\\/.+$/g.test(originalReq.url)) {\n const getXServicesUrl = this.xServicesUrl.get();\n return forkJoin([getXServicesUrl, getAuthHeader]).pipe(\n mergeMap((values: any) => {\n const [xUrl, authHeader] = values;\n return this.injectBaseUrl(originalReq, next, xUrl, authHeader);\n })\n );\n }\n const getRestUrl = this.restUrl.get();\n return forkJoin([getRestUrl, getAuthHeader]).pipe(\n mergeMap((values: any) => {\n const [bridgeUrl, authHeader] = values;\n return this.injectBaseUrl(originalReq, next, bridgeUrl, authHeader);\n })\n );\n }\n return next.handle(originalReq);\n }\n\n private injectBaseUrl(originalReq: HttpRequest<any>, next: HttpHandler,\n baseUrl: string, authorization: string): Observable<HttpEvent<any>> {\n const request = originalReq.clone({\n url: baseUrl + originalReq.url,\n headers: originalReq.headers.set(`Authorization`, authorization)\n });\n return next.handle(request);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { RestUrl } from './rest-url.service';\nimport { XServicesUrl } from './x-services-url.service';\nimport { HttpInterceptor } from './http-interceptor.service';\n\n@NgModule({\n imports: [HttpClientModule],\n providers: [RestUrl, XServicesUrl, { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptor, multi: true }]\n})\nexport class HttpInterceptorModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const RESOURCES = new InjectionToken<Resources>('RESOURCES');\nexport const ENVIRONMENT = new InjectionToken<Environment>('ENVIRONMENT');\nexport type Resources = Resource[];\n\nexport interface Permission {\n resource: string;\n action: string;\n authorized: boolean;\n owner: boolean;\n resourceFilters: string[];\n}\n\nexport interface Result {\n permissions: Permission[];\n authorized: boolean;\n}\n\nexport class Resource {\n name: string;\n actions: string[];\n uri?: string;\n redirectToError ? = false;\n actionsToCheck?: string[];\n entity?: boolean;\n}\n\nexport class Environment {\n domain?: string;\n service?: string;\n ignorePermissions: boolean;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MessageService } from \"primeng/api\";\nimport { from, Observable, of, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { Environment, ENVIRONMENT, Permission, Resource, Resources, RESOURCES, Result } from './permissions.config';\n\nexport let promise: Promise<any>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionsService {\n private checkedPermissions: Permission[] = [];\n private actionUrl = 'platform/authorization/queries';\n\n constructor(\n @Inject(RESOURCES) private readonly resources: Resources,\n @Inject(ENVIRONMENT) private readonly environment: Environment,\n private readonly http: HttpClient,\n private readonly router: Router,\n private readonly messageService: MessageService,\n private readonly translate: TranslateService\n ) {}\n\n // v2\n checkAccess(resources: Resource[]): Observable<any> {\n const permissions: any[] = [];\n\n resources.forEach(rec => {\n rec.actions.forEach(action => {\n if (!rec.uri) {\n const resource = this.getUriByResourceName(rec.name, rec.entity);\n rec.uri = resource;\n }\n permissions.push({ action, resource: rec.uri });\n });\n });\n\n return this.http.post(`${this.actionUrl}/checkAccess`, { includeFilters: true, permissions }).pipe(\n map(({ permissions: checkedPermissions }: Result) => {\n this.checkedPermissions = [...this.checkedPermissions, ...checkedPermissions];\n\n const values = {};\n\n if (this.shouldRedirectToForbiddenPage(resources, checkedPermissions)) {\n this.router.navigate(['error', 403]);\n return throwError('forbidden');\n }\n\n checkedPermissions.forEach(permission => {\n const resource = resources.find(res => res.uri === permission.resource);\n const { name } = resource;\n\n values[name] = values[name] || {};\n values[name][permission.action] = permission.authorized;\n values[name][permission.action.toLowerCase()] = permission.authorized;\n\n if (permission.resourceFilters && permission.resourceFilters.length) {\n if (!values[name]['resourceFilters']) {\n values[name]['resourceFilters'] = [];\n }\n\n permission.resourceFilters.forEach((resourceFilter) => {\n values[name]['resourceFilters'].push(resourceFilter);\n });\n }\n });\n\n return values;\n })\n );\n }\n\n // v1\n get(resource: string = '') {\n if (!promise) {\n promise = this.getPermissions();\n }\n return from(promise).pipe(\n map((permissions: Permission[]) => {\n this.checkedPermissions = permissions;\n\n if (resource) {\n const resourceKey = Object.keys(permissions).find(key => key.toLowerCase() === resource.toLowerCase());\n return permissions[resourceKey];\n }\n return permissions;\n }),\n catchError((err: any) => {\n promise = undefined;\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant('permission_error_summary'),\n detail: this.translate.instant('permission_error_detail')\n });\n\n return of(this.getPermissionObject(false));\n })\n );\n }\n\n isAuthorized(resourceName: string, action: string, isEntity?: boolean): boolean {\n if (!this.checkedPermissions.length) {\n throwError('\\'Permissions\\' are not defined. You should call \\'get\\' or \\'checkAccess\\' method first.');\n }\n\n const resourceUri = this.getUriByResourceName(resourceName, isEntity);\n\n const permissionsOfResource = this.checkedPermissions.filter(perm => perm.resource === resourceUri);\n const permissionOfAction = permissionsOfResource.find(permRec => permRec.action.toLowerCase() === action.toLowerCase());\n\n return permissionOfAction && permissionOfAction.authorized;\n }\n\n private getUriByResourceName(resourceName: string, isEntity?: boolean): string {\n const { domain, service } = this.environment;\n\n if (!domain || !service) {\n throwError('You must inform domain and service name');\n }\n\n const uriBase = `res://senior.com.br/${domain}/${service}`;\n\n if (isEntity) {\n return `${uriBase}/entities/${resourceName}`;\n } else {\n return `${uriBase}/${resourceName}`;\n }\n }\n\n /**\n * Valida com base nas propriedade redirectToError e actionsToCheck\n * se a ação de um recurso deve enviar para a página de erro caso não tenha autorização\n */\n private shouldRedirectToForbiddenPage(resources: Resource[] = [], permissions: Permission[]): boolean {\n const permissionsDenied = permissions.filter(perm => !perm.authorized);\n\n if (permissionsDenied && permissionsDenied.length) {\n const resourcesToCheck = resources.filter(resource => resource.redirectToError);\n\n if (resourcesToCheck && resourcesToCheck.length) {\n return resourcesToCheck.every(resource => {\n const actionsToCheck = resource.actionsToCheck && resource.actionsToCheck.length ? resource.actionsToCheck : resource.actions;\n\n return actionsToCheck.every(action =>\n permissionsDenied.some(permissionDenied => permissionDenied.resource === resource.uri && permissionDenied.action === action)\n );\n });\n }\n\n return false;\n }\n\n return false;\n }\n\n private getFlatEnvironment() {\n return this.environment.ignorePermissions;\n }\n\n private getFlatResources() {\n return this.resources.reduce((result: Resource[], item: any) => {\n if (!item) {\n return result;\n }\n\n if (Array.isArray(item)) {\n return [...result, ...item];\n }\n\n return [...result, item];\n }, []);\n }\n\n private getPermissionObject(defaultValue: boolean) {\n return this.getFlatResources().reduce((resources: object, resource: Resource) => {\n resources[resource.name] = resource.actions.reduce((actions: any, action: any) => {\n actions[action] = defaultValue;\n actions[action.toLowerCase()] = defaultValue;\n return actions;\n }, {});\n return resources;\n }, {});\n }\n\n private async getPermissions() {\n if (this.getFlatEnvironment()) {\n return this.getPermissionObject(true);\n }\n const resources = this.getFlatResources();\n const perm = resources\n .map(resource => resource.actions.map((action: any) => ({ action: action, resource: resource.uri })))\n .reduce((acc: any, val: any) => [...acc, ...val]);\n\n const permissions: any[] = await this.http\n .post<any>(`${this.actionUrl}/checkAccess`, {\n includeFilters: false,\n permissions: perm\n })\n .toPromise()\n .then(response => response.permissions);\n\n const values = {};\n\n permissions.forEach((permission: any) => {\n const resource = resources.find((res: any) => res.uri === permission.resource);\n const { name } = resource;\n values[name] = values[name] ? values[name] : {};\n values[name][permission.action] = permission.authorized;\n values[name][permission.action.toLowerCase()] = permission.authorized;\n });\n return values;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { Resource, RESOURCES, ENVIRONMENT, Environment } from './permissions.config';\nimport { PermissionsService } from './permissions.service';\n\n@NgModule()\nexport class PermissionsModule {\n public static forRoot(resources: Resource[], environment: Environment): ModuleWithProviders<PermissionsModule> {\n return {\n ngModule: PermissionsModule,\n providers: [\n PermissionsService,\n {\n provide: RESOURCES,\n multi: true,\n useValue: resources\n },\n {\n provide: ENVIRONMENT,\n multi: false,\n useValue: environment\n }\n ]\n };\n }\n\n public static forChild(resources: Resource[]): ModuleWithProviders<PermissionsModule> {\n return {\n ngModule: PermissionsModule,\n providers: [\n {\n provide: RESOURCES,\n multi: true,\n useValue: resources\n }\n ]\n };\n }\n}\n","export function ResourceFactory({ domain, service, resource }: { domain: string; service: string; resource: string }) {\n return `res://senior.com.br/${domain}/${service}/${resource}`;\n}\nfunction endpointFactoryFunction(domain: string, service: string) {\n // The @seniorsistemas/platform-components http interceptor is handling the base url portion of the final URL\n const create = (method: string, endpoint: string) => `${domain}/${service}/${method}/${endpoint}`;\n const resource = (resource: string) => ResourceFactory({ domain, service, resource });\n return {\n resource,\n query: create.bind(null, 'queries'),\n action: create.bind(null, 'actions'),\n signal: create.bind(null, 'signals'),\n entity(entity: string) {\n const URL = create('entities', entity);\n return {\n create: () => URL,\n update: (id: string) => URL + '/' + id,\n remove: (id: string) => URL + '/' + id\n };\n }\n };\n}\n\nexport const endpointFactory = endpointFactoryFunction;\n// ADD HERE YOUR NEW ENDPOINT\nexport const PLATFORM_FEATURE_TOGGLE = endpointFactoryFunction('platform', 'feature_toggle');\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, from, of } from 'rxjs';\nimport { Feature, GetEnabledFeaturesOutput } from './models/feature';\nimport { map, shareReplay, catchError, mergeMap } from 'rxjs/operators';\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport { PLATFORM_FEATURE_TOGGLE } from './constants/endpoint.constant';\n\n@Injectable({ providedIn: 'root' })\nexport class FeatureToggleService {\n constructor(private http: HttpClient) {}\n\n cache: { [key: string]: Observable<Feature[]> } = {};\n\n isEnabled({ domain, service, name }: Feature, tenant?: string): Observable<boolean> {\n let tenantObs;\n if (tenant) {\n tenantObs = of(tenant);\n } else {\n tenantObs = from(user.getUserData()).pipe(map(userData => userData.tenantName));\n }\n return tenantObs.pipe(\n mergeMap(tenant => {\n const key = JSON.stringify({ tenant, domain, service });\n if (!this.cache[key]) {\n this.cache[key] = this.http\n .post<GetEnabledFeaturesOutput>(PLATFORM_FEATURE_TOGGLE.query('getEnabledFeatures'), { tenant, domain, service })\n .pipe(\n map(output => output.features),\n shareReplay(1),\n catchError(err => {\n console.error(err);\n delete this.cache[key];\n return of([]);\n })\n );\n }\n return this.cache[key];\n }),\n map((features: Feature[]) => {\n return features.findIndex(f => f.name === name) !== -1;\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FeatureToggleService } from './feature-toggle.service';\nimport { HttpInterceptorModule } from '../http-interceptor/http-interceptor.module';\n\n@NgModule({\n imports: [HttpClientModule, HttpInterceptorModule],\n providers: [FeatureToggleService]\n})\nexport class FeatureToggleModule {}\n","export enum UserAction {\n CONFIRMED = 'CONFIRMED',\n POSTPONED = 'POSTPONED',\n REFUSED = 'REFUSED'\n}\n","import { SpotlightNotification } from './../models/spotlight-notification.interface';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n SpotlightScreenList,\n SpotlightUsersList,\n SpotlightControlList,\n SpotlightUser,\n SpotlightControl\n} from '../models/index';\n\n@Injectable()\nexport class SpotlightService {\n constructor(private http: HttpClient) {}\n\n private API_URL = 'platform/spotlight/';\n\n public getUser(): Promise<any> {\n return this.http.post<any>('platform/user/queries/getUser', {}).toPromise();\n }\n\n public listSpotlightScreen(): Observable<SpotlightScreenList> {\n return this.http.get<SpotlightScreenList>(this.API_URL + 'queries/listSpotlightScreen');\n }\n\n public listSpotlightUsers(): Promise<SpotlightUsersList> {\n return this.http.get<SpotlightUsersList>(this.API_URL + 'queries/listSpotlightUsers').toPromise();\n }\n\n public listSpotlightControl(): Promise<SpotlightControlList> {\n return this.http.get<SpotlightControlList>(this.API_URL + 'queries/listSpotlightControl').toPromise();\n }\n\n public saveSpotlightUser(content: SpotlightUser) {\n return this.http.post<SpotlightUser>(this.API_URL + 'actions/saveSpotlightUsers', { content });\n }\n\n public saveSpotlightControl(content: SpotlightControl) {\n return this.http.post<SpotlightControl>(this.API_URL + 'actions/saveSpotlightControl', { content });\n }\n\n public notificateSpotlight(content: SpotlightNotification) {\n return this.http.post<SpotlightNotification>(this.API_URL + 'actions/notificateSpotlight', content);\n }\n}\n","export enum EnumDisplayType {\n ADVERSITING = 'ADVERSITING',\n INTEGRATION = 'INTEGRATION'\n}\n","import { EnumSpotlightStatus } from './spotlight-status.enum';\n\nexport class SpotlightControl {\n id?: string;\n spotlightId: string;\n status: EnumSpotlightStatus;\n firstUser?: string;\n createdBy?: string;\n createdDate?: string;\n lastModifiedBy?: string;\n lastModifiedDate?: string;\n}","export enum EnumSpotlightStatus {\n ACTIVE = 'ACTIVE',\n IN_PROGRESS = 'IN_PROGRESS',\n NO_STARTED = 'NO_STARTED',\n REFUSED = 'REFUSED'\n}\n","import { UserAction } from './../models/user-action.enum';\nimport { SpotlightNotification } from './../models/spotlight-notification.interface';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { SpotlightService } from '../service/spotlight.service';\nimport {\n Spotlight,\n SpotlightScreen,\n EnumDisplayType,\n EnumSpotlightStatus,\n SpotlightControlList,\n SpotlightUsersList,\n SpotlightUser,\n SpotlightControl\n} from '../models/index';\nimport { DatePipe } from '@angular/common';\nimport { CookieService } from 'ngx-cookie-service';\n\n@Component({\n selector: 's-spotlight',\n templateUrl: './spotlight.component.html',\n styleUrls: ['./spotlight.component.scss']\n})\nexport class SpotlightComponent implements OnInit {\n\n constructor(\n private spotlightService: SpotlightService,\n private cookieService: CookieService,\n private datePipe: DatePipe\n ) {}\n\n public header: string;\n public imgUrl: string;\n public primaryButtonLabel: string;\n public primaryButtonTooltip: string;\n public canAppear = false;\n\n private currentUser: string;\n private spotlightUsersList: SpotlightUsersList;\n private spotlightControlsList: SpotlightControlList;\n private spotlightScreen: SpotlightScreen;\n private canEmitEvent: boolean;\n\n @Input()\n public visible = false;\n\n @Input()\n public menuId: string;\n\n @Input()\n public fade = false;\n\n @Output()\n public visibleChange = new EventEmitter<boolean>();\n\n async ngOnInit() {\n await this.setValues();\n this.fetchSpotlight();\n }\n\n private async setValues() {\n const userData: any = JSON.parse(this.cookieService.get('com.senior.token'));\n this.currentUser = userData.username;\n this.spotlightUsersList = await this.spotlightService.listSpotlightUsers();\n this.spotlightControlsList = await this.spotlightService.listSpotlightControl();\n }\n\n private setValuesInSpotlight(values: Spotlight): void {\n this.header = values.spotlightTitle;\n this.imgUrl = values.bannerUrl;\n this.primaryButtonLabel = values.primaryButtonLabel;\n this.primaryButtonTooltip = values.primaryButtonHint;\n }\n\n private getShowDate(days: number): string {\n const currentDate = new Date();\n return this.datePipe.transform(currentDate.setDate(currentDate.getDate() + days).toString(), 'yyyy-MM-dd');\n }\n\n private fetchSpotlight(): void {\n this.spotlightService.listSpotlightScreen().subscribe(value => {\n this.spotlightScreen = value.contents.filter(val => val.screenMenuId === this.menuId)[0];\n if (this.spotlightScreen) {\n this.showSpotlight(this.spotlightScreen.spotlight);\n }\n });\n }\n\n private showSpotlight(spotlight: Spotlight): void {\n if (this.validateDate(spotlight.initialDate) && this.validateFinalDate(spotlight.finalDate) && this.validateSpotlight(spotlight)) {\n this.setValuesInSpotlight(spotlight);\n this.canAppear = true;\n const control = this.getSpotlightControlFromList(this.spotlightScreen.spotlight.id);\n this.canEmitEvent = !control || this.currentUser !== control.firstUser;\n }\n }\n\n private validateDate(date: string): boolean {\n if (date) {\n const currentDate = this.datePipe.transform(new Date().toString(), 'yyyy-MM-dd');\n const initialDate = this.datePipe.transform(date, 'yyyy-MM-dd');\n\n return currentDate >= initialDate;\n }\n return false;\n }\n\n private validateFinalDate(date: string): boolean {\n if (date) {\n const currentDate = this.datePipe.transform(new Date().toString(), 'yyyy-MM-dd');\n const finalDate = this.datePipe.transform(date, 'yyyy-MM-dd');\n\n return currentDate <= finalDate;\n }\n return true;\n }\n\n private validateSpotlight(spotlight: Spotlight): boolean {\n if (!this.validateControlsList(this.spotlightControlsList, spotlight, this.currentUser)) {\n return false;\n }\n if (!this.validateDisplayType(spotlight, this.spotlightUsersList, this.spotlightControlsList, this.currentUser)) {\n return false;\n }\n return true;\n }\n\n private validateControlsList(controlsList: SpotlightControlList, spotlight: Spotlight, currentUser: string): boolean {\n if (controlsList.totalElements) {\n\n const notCompatibleControls = controlsList.contents.filter(control => {\n if (control.status === EnumSpotlightStatus.ACTIVE) {\n return control.spotlightId === spotlight.id;\n\n } else if (control.status === EnumSpotlightStatus.IN_PROGRESS) {\n return control.spotlightId === spotlight.id && control.firstUser !== currentUser;\n }\n });\n\n if (notCompatibleControls.length > 0) {\n return false;\n }\n }\n return true;\n }\n\n private validateDisplayType(\n spotlight: Spotlight,\n usersList: SpotlightUsersList,\n controlsList: SpotlightControlList,\n currentUser: string\n ): boolean {\n\n switch (spotlight.displayType) {\n case EnumDisplayType.ADVERSITING:\n return usersList.totalElements ? this.validateUser(usersList.contents, spotlight) : true;\n\n case EnumDisplayType.INTEGRATION:\n\n if (controlsList.totalElements) {\n const compatibleControls = controlsList.contents.filter(control => {\n\n switch (control.status) {\n\n case EnumSpotlightStatus.NO_STARTED:\n return control.spotlightId === spotlight.id;\n\n case EnumSpotlightStatus.REFUSED:\n return usersList.totalElements ? this.validateUser(usersList.contents, spotlight) : true;\n\n case EnumSpotlightStatus.IN_PROGRESS:\n return control.firstUser === currentUser\n && control.spotlightId === spotlight.id;\n }\n });\n if (compatibleControls.length === 0) {\n return false;\n }\n }\n return true;\n }\n }\n\n private validateUser(users: SpotlightUser[], spotlight: Spotlight): boolean {\n let spotlightUsers = users.filter(user => user.spotlightId === spotlight.id);\n\n if (!spotlightUsers.length) {\n spotlightUsers = users.filter(user => user.userOperation === this.currentUser);\n\n return spotlightUsers.length === 0;\n }\n\n const compatibleUserToValidate = spotlightUsers.filter(user => user.userOperation === this.currentUser)[0];\n\n return compatibleUserToValidate ? this.validateDate(compatibleUserToValidate.showDate) : true;\n }\n\n private saveSpotlightUser(days?: number): void {\n\n const spotlight = this.spotlightScreen.spotlight;\n\n const user = this.spotlightUsersList.contents.filter(val => {\n return val.spotlightId === spotlight.id\n && val.userOperation === this.currentUser;\n })[0];\n\n let spotlightUser: SpotlightUser = {\n spotlightId: spotlight.id,\n showDate: days ? this.getShowDate(days) : null,\n userOperation: this.currentUser\n };\n\n if (user) {\n spotlightUser = {\n id: user.id,\n ...spotlightUser\n };\n }\n this.spotlightService.saveSpotlightUser(spotlightUser).subscribe();\n }\n\n public onPrimary() {\n const spotlight = this.spotlightScreen.spotlight;\n const notification = this.buildNotification(UserAction.CONFIRMED);\n\n this.saveSpotlightControl();\n this.saveSpotlightUser();\n\n if (this.canEmitEvent) {\n this.spotlightService.notificateSpotlight(notification).subscribe();\n }\n\n if (spotlight.primaryButtonUrl) {\n window.open(spotlight.primaryButtonUrl);\n }\n\n this.close();\n }\n\n public onSecondary(): void {\n const notification = this.buildNotification(UserAction.POSTPONED);\n\n this.saveSpotlightControl(EnumSpotlightStatus.REFUSED);\n this.saveSpotlightUser(this.spotlightScreen.spotlight.daysRememberLate);\n this.spotlightService.notificateSpotlight(notification).subscribe();\n\n this.close();\n }\n\n public onTertiary(): void {\n const notification = this.buildNotification(UserAction.REFUSED);\n\n this.saveSpotlightControl(EnumSpotlightStatus.REFUSED);\n this.saveSpotlightUser(this.spotlightScreen.spotlight.daysNotInterested);\n this.spotlightService.notificateSpotlight(notification).subscribe();\n\n this.close();\n }\n\n /**\n * Verifica se um registro de usuário pertence ao usuário logado e corresponde ao spotlight atual\n * @param user SpotlightUser Objeto representando o registro do usuário para uma spotlight\n * @param spotlight Spotlight Spotlight\n * @returns boolean true se corresponder ao spotlight atual, false caso contrário\n */\n private hasThisRegister(user: SpotlightUser, spotlight: Spotlight): boolean {\n return (user.spotlightId === spotlight.id && user.userOperation === this.currentUser);\n }\n\n /**\n * Verifica se um registro de usuário pertece ao usuário logado, mas não corresponde ao spotlight atual\n * @param user SpotlightUser Objeto representando o registro do usuário para uma spotlight\n * @param spotlight Spotlight Spotlight\n * @returns boolean true se corresponder ao spotlight atual, false caso contrário\n */\n private hasAnotherRegister(user: SpotlightUser, spotlight: Spotlight): boolean {\n return user.spotlightId !== spotlight.id && user.userOperation === this.currentUser;\n }\n\n /**\n * Persiste um novo registro de controle para o spotlight atual se\n * não for encontrado nenhum na lista de controles carregada inicialmente\n * @param status EnumSpotlightStatus Status do controle do spotlight. Se nenhum for informado, IN_PROGRESS será aplicado\n * @returns SpotlightControl Controle do spotlight recuperado/pesistido\n */\n private saveSpotlightControl(status = EnumSpotlightStatus.IN_PROGRESS): SpotlightControl {\n const spotlight = this.spotlightScreen.spotlight;\n let control: SpotlightControl = this.getSpotlightControlFromList(spotlight.id);\n\n if (!control) {\n control = {\n spotlightId: spotlight.id,\n status: status,\n firstUser: this.currentUser\n };\n }\n\n if (this.isNewControl(control) || control.status !== EnumSpotlightStatus.IN_PROGRESS) {\n control.status = status;\n control.firstUser = status === EnumSpotlightStatus.IN_PROGRESS ? this.currentUser : '';\n this.spotlightService.saveSpotlightControl(control).subscribe();\n }\n\n return control;\n }\n\n /**\n * Retorna o controle de spotlight correspondente ao identificador\n * informado na lista de controles carregada na inicialização do componente\n * @param id string Identificador do controle de spotlight\n */\n private getSpotlightControlFromList(id: string): SpotlightControl {\n return this.spotlightControlsList.contents.filter(val => val.spotlightId === id)[0];\n }\n\n /**\n * Verifica se o controle de spotlight informado não foi registrado ainda\n * @param spotlightControl SpotlightControl Controle do spotlight\n * @returns boolean true se ainda não foi registrado na base, false caso contrário\n */\n private isNewControl(spotlightControl: SpotlightControl): boolean {\n return !this.spotlightControlsList.contents.includes(spotlightControl);\n }\n\n /**\n * Retorna um objeto de notificação referente ao botão clicado pelo usuário.\n * @param userAction UserAction Ação realizada pelo usuário ao clicar nos botões da modal\n * @returns SpotlightNotification Objeto de notificação\n */\n private buildNotification(userAction: UserAction): SpotlightNotification {\n const spotlight = this.spotlightScreen.spotlight;\n\n return {\n clickedButton: userAction,\n spotlightControlId: spotlight.id,\n primaryButtonUrl: spotlight.primaryButtonUrl\n };\n }\n\n public close(): void {\n this.visibleChange.emit(false);\n }\n}\n","export const fallback: any = {\n\n 'platform.spotlight.no_interest' : 'Não tenho interesse',\n 'platform.spotlight.remember_late' : 'Lembrar mais tarde'\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'translate',\n pure: false,\n })\n export class TranslatePipe implements PipeTransform {\n constructor(private translationService: TranslateService) {}\n transform(value: any): any {\n return this.translationService.instant(value);\n }\n }\n","import { NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\n\nimport { ButtonModule } from 'primeng/button';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { HttpInterceptorModule } from '../http-interceptor/http-interceptor.module';\nimport { TranslationsModule } from '../translations/translations.module';\nimport { SpotlightComponent } from './component/spotlight.component';\nimport { SpotlightService } from './service/spotlight.service';\nimport { fallback } from './locale/fallback';\nimport { TranslatePipe } from './pipes/translate.pipe';\nimport { CookieService } from 'ngx-cookie-service';\n\n@NgModule({\n imports: [\n ButtonModule,\n TooltipModule,\n CommonModule,\n HttpInterceptorModule,\n TranslationsModule.forChild([{domain: 'platform', service: 'spotlight', fallback}]),\n ],\n providers: [\n SpotlightService,\n DatePipe,\n CookieService\n ],\n declarations: [\n SpotlightComponent,\n TranslatePipe],\n exports: [SpotlightComponent]\n})\nexport class SpotlightModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {FormFilterComponent as ɵc} from './modules/advanced-filter/components/form-filter/form-filter.component';\nexport {fallback as ɵa} from './modules/advanced-filter/locale/fallback';\nexport {MapValuesPipe as ɵd} from './modules/advanced-filter/pipes/map-values.pipe';\nexport {TranslatePipe as ɵe} from './modules/advanced-filter/pipes/translate.pipe';\nexport {CalendarOptionsService as ɵb} from './modules/advanced-filter/services/calendar-options.service';\nexport {CyclicJsonInterceptor as ɵf} from './modules/cyclic-json-interceptor/cyclic-json-interceptor.service';\nexport {HttpInterceptor as ɵg} from './modules/http-interceptor/http-interceptor.service';\nexport {ENVIRONMENT as ɵi,Environment as ɵk,RESOURCES as ɵh,Resources as ɵj} from './modules/permissions/permissions.config';\nexport {fallback as ɵl} from './modules/spotlight/locale/fallback';\nexport {TranslatePipe as ɵn} from './modules/spotlight/pipes/translate.pipe';\nexport {SpotlightService as ɵm} from './modules/spotlight/service/spotlight.service';"],"names":["DATE","DATETIME","TIME","parsers","dateParser","TRANSLATE_PREFIX","rxFilter","BehaviorSubject","PrimeNGButtonModule","jc","fallback","TranslatePipe","ButtonModule"],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-platform-components.js","sources":["ng://@seniorsistemas/platform-components/modules/advanced-filter/pipes/map-values.pipe.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/pipes/translate.pipe.ts","ng://@seniorsistemas/platform-components/modules/translations/translations.module.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/locale/fallback.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/services/constants.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/shared/constants.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/services/advanced-filter.service.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/filter.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/filter-type.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/scope.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/form-filter.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/models/tab-view.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/filter-id/index.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/filter-value/index.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/json-path.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/filterOperators.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/index.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/form-field/index.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/utils/comparator.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/services/calendar-options.service.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/components/form-filter/form-filter.component.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/components/advanced-filter/advanced-filter.component.ts","ng://@seniorsistemas/platform-components/modules/advanced-filter/advanced-filter.module.ts","ng://@seniorsistemas/platform-components/modules/cyclic-json-interceptor/cyclic-json-interceptor.service.ts","ng://@seniorsistemas/platform-components/modules/cyclic-json-interceptor/cyclic-json-interceptor.module.ts","ng://@seniorsistemas/platform-components/modules/http-interceptor/rest-url.service.ts","ng://@seniorsistemas/platform-components/modules/http-interceptor/x-services-url.service.ts","ng://@seniorsistemas/platform-components/modules/http-interceptor/http-interceptor.service.ts","ng://@seniorsistemas/platform-components/modules/http-interceptor/http-interceptor.module.ts","ng://@seniorsistemas/platform-components/modules/permissions/permissions.config.ts","ng://@seniorsistemas/platform-components/modules/permissions/permissions.service.ts","ng://@seniorsistemas/platform-components/modules/permissions/permissions.module.ts","ng://@seniorsistemas/platform-components/modules/feature-toggle/constants/endpoint.constant.ts","ng://@seniorsistemas/platform-components/modules/feature-toggle/feature-toggle.service.ts","ng://@seniorsistemas/platform-components/modules/feature-toggle/feature-toggle.module.ts","ng://@seniorsistemas/platform-components/modules/spotlight/models/user-action.enum.ts","ng://@seniorsistemas/platform-components/modules/spotlight/service/spotlight.service.ts","ng://@seniorsistemas/platform-components/modules/spotlight/models/display-type.enum.ts","ng://@seniorsistemas/platform-components/modules/spotlight/models/spotlight-control.interface.ts","ng://@seniorsistemas/platform-components/modules/spotlight/models/spotlight-status.enum.ts","ng://@seniorsistemas/platform-components/modules/spotlight/component/spotlight.component.ts","ng://@seniorsistemas/platform-components/modules/spotlight/locale/fallback.ts","ng://@seniorsistemas/platform-components/modules/spotlight/pipes/translate.pipe.ts","ng://@seniorsistemas/platform-components/modules/spotlight/spotlight.module.ts","ng://@seniorsistemas/platform-components/seniorsistemas-platform-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'mapValues', pure: false })\nexport class MapValuesPipe implements PipeTransform {\n transform(map: Map<any, any>, args: any[] = null): any {\n return Array.from(map.values());\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'translate',\n pure: false,\n })\n export class TranslatePipe implements PipeTransform {\n constructor(private translationService: TranslateService) {}\n transform(value: any, args?: any): any {\n return this.translationService.instant(value);\n }\n }\n","import { LOCATION_INITIALIZED } from '@angular/common';\nimport { HttpClient, HttpClientModule, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { ModuleWithProviders } from '@angular/compiler/src/core';\nimport { APP_INITIALIZER, InjectionToken, Injector, NgModule } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport { CookieService } from 'ngx-cookie-service';\n\nexport const TranslationsConfig = new InjectionToken<ITranslationsConfig[]>('translationConfig');\nexport const USER_INFO = 'com.senior.token';\nexport const LENGTH_DEFAULT = 2;\n@NgModule({\n imports: [HttpClientModule, TranslateModule.forChild()],\n providers: [CookieService]\n})\nexport class TranslationsModule {\n static forRoot(translationsConfigs: ITranslationsConfig[]): ModuleWithProviders {\n return {\n ngModule: TranslationsModule,\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: factory,\n deps: [TranslateService, Injector, HttpClient, CookieService],\n multi: true\n },\n {\n provide: TranslationsConfig,\n useValue: translationsConfigs,\n multi: true\n }\n ]\n };\n }\n\n static forChild(translationsConfigs: ITranslationsConfig[]): ModuleWithProviders {\n return {\n ngModule: TranslationsModule,\n providers: [\n {\n provide: TranslationsConfig,\n useValue: translationsConfigs,\n multi: true\n }\n ]\n };\n }\n}\n\nexport interface ITranslationsConfig {\n domain: string;\n service: string;\n fallback: any;\n defaultsLanguages?: any;\n}\n\nexport function factory(translate: TranslateService, injector: Injector, http: HttpClient, cookieService: CookieService) {\n return () =>\n new Promise((resolve) => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n\n locationInitialized.then(async () => {\n let locale = 'pt-BR';\n try {\n const configs = getFlatArray(injector.get(TranslationsConfig, Promise.resolve(null)));\n\n try {\n let userData = JSON.parse(cookieService.get(USER_INFO));\n if (userDataIsNull(userData)) {\n userData = await user.getUserData();\n }\n\n locale = getLocale(userData);\n } catch (ex) {\n console.warn('Unable to obtain user locale');\n }\n\n const fallback = configs.reduce((result: any, configs: ITranslationsConfig) => ({ ...result, ...configs.fallback }), {});\n const defaultsLanguages = configs.reduce(\n (result: any, configs: ITranslationsConfig) => ({ ...result, ...configs.defaultsLanguages }),\n {}\n );\n\n translate.setTranslation(locale, fallback);\n translate.setDefaultLang(locale);\n\n let configTranslate: any = {};\n\n if (defaultsLanguages) {\n configTranslate = getConfigTranslate(defaultsLanguages, locale);\n }\n\n const translationsPromises = configs.map((config: any) => getTranslationsRequest(config, locale));\n\n await Promise.all(translationsPromises).then((results) => {\n const usedFallback = translate['overriden'];\n\n results.forEach((file, index) => {\n setTranslations(file['content'], usedFallback, locale, index, configTranslate.fallbackByLocale);\n });\n\n return translate.use(locale).toPromise();\n });\n\n resolve();\n } catch (err) {\n console.warn('Error setting translations. Using local fallback.', err);\n translate\n .use(locale)\n .toPromise()\n .then(() => {\n resolve();\n });\n }\n });\n });\n\n function setTranslations(content: any, usedFallback: any, locale: any, index: any, fallbackByLocale: any) {\n if (usedFallback) {\n content && translate.setTranslation(locale, content, true);\n translate.setTranslation(locale, fallbackByLocale, true);\n } else {\n if (index === 0) {\n translate.setTranslation(locale, fallbackByLocale, true);\n }\n\n content && translate.setTranslation(locale, content, true);\n }\n }\n\n function getTranslationsRequest({ domain, service }: ITranslationsConfig, language: string) {\n return new Promise(async (resolve) => {\n try {\n if (!domain && !service) {\n throw new Error(`domain and service not found`);\n }\n const params = new HttpParams().set('domainName', domain).set('serviceName', service).set('format', 'FLAT_JSON');\n\n const headers = new HttpHeaders().set('Authorization', await user.getAuthHeader());\n const url = 'platform/translation_hub/queries/getTranslationBundle';\n const bundleFiles = await http\n .get(url, { headers, params })\n .toPromise()\n .then((res: any) => res.bundleFiles);\n\n let languageBundle = language && bundleFiles.find((bundle: any) => bundle.language === language);\n let overriden = false;\n\n if (!languageBundle) {\n languageBundle = bundleFiles.find((bundle: any) => bundle.language === 'pt-BR');\n overriden = true;\n }\n\n if (!languageBundle) {\n return resolve({});\n }\n\n await http\n .get(languageBundle.url)\n .toPromise()\n .then((result: any) => {\n const translations = {\n overriden: overriden,\n content: result\n };\n resolve(translations);\n });\n } catch (err) {\n console.warn(`Error getting translation bundle for ${domain}/${service}. Using local fallback.`, err);\n resolve({});\n }\n });\n }\n\n function getFlatArray(array: any[]) {\n return array.reduce((result: any[], item: any) => {\n if (Array.isArray(item)) {\n return [...result, ...item];\n }\n return [...result, item];\n }, []);\n }\n\n function userDataIsNull(data: any) {\n return !data || Object.keys(data).length === 0;\n }\n\n function getConfigTranslate(defaultsLanguages: any, locale: any) {\n const languages: any = Object.keys(defaultsLanguages).map((key) => {\n const language = {};\n language['locale'] = key.replace('_', '-');\n language['translation'] = defaultsLanguages[key];\n return language;\n }, []);\n\n const result: any = { languages };\n result['foundLocaleUser'] = languages.find((results: any) => results.locale === locale);\n if (!result['foundLocaleUser']) {\n result['foundLocaleUser'] = languages.find((results: any) => {\n return results.locale.length === LENGTH_DEFAULT && results.locale === locale.split('-')[0];\n });\n }\n\n if (result['foundLocaleUser']) {\n result['fallbackByLocale'] = result['foundLocaleUser']['translation'];\n }\n\n return result;\n }\n\n function getLocale(userData: any) {\n return userData.locale || 'pt-BR';\n }\n}\n","export const fallback = {\n 'platform.filter_service.cancel': 'Cancelar',\n 'platform.filter_service.try': 'Tentar Novamente',\n 'platform.filter_service.actions': 'Ações',\n 'platform.filter_service.save': 'Salvar',\n 'platform.filter_service.filter': 'Filtrar',\n 'platform.filter_service.error_state':\n 'O serviço de filtro está indisponível no momento e as informações apresentadas não são as mais recentes. Tente novamente mais tarde.',\n 'platform.filter_service.saved_filters_success': 'Filtros salvos com sucesso! Clique em \"Filtrar\" para visualizar o resultado.',\n 'platform.filter_service.saved_filters_error':\n 'Ocorreu um erro ao tentar salvar os filtros. Verifique os valores e tente novamente.',\n 'platform.filter_service.applied_filter_nochange': 'Não houve alterações no filtro.',\n 'platform.filter_service.applied_filter_change': 'Filtros aplicados com sucesso!',\n 'platform.filter_service.invalid_pattern': 'O valor não atende ao padrão especificado.',\n 'platform.filter_service.error_max_value': 'O valor excede o tamanho máximo especificado.',\n 'platform.filter_service.error_min_value': 'O valor é menor que o minímo especificado.',\n 'platform.filter_service.applied_filters_message': '{{totalActiveFilters}} filtros aplicados',\n 'platform.filter_service.applied_filter_message': '{{totalActiveFilters}} filtro aplicado',\n 'platform.filter_service.find_suggestions_error': 'Erro ao encontrar sugestões!',\n 'platform.filter_service.select': 'Selecionar',\n 'platform.filter_service.filters': 'Filtros',\n 'platform.filter_service.date_format' : 'dd/mm/yy',\n 'platform.filter_service.hour_format' : '24',\n 'platform.filter_service.clear': 'Limpar',\n 'platform.filter_service.today' : 'Hoje',\n 'platform.filter_service.name_january' : 'Janeiro',\n 'platform.filter_service.name_february' : 'Fevereiro',\n 'platform.filter_service.name_march' : 'Março',\n 'platform.filter_service.name_april' : 'Abril',\n 'platform.filter_service.name_may' : 'Maio',\n 'platform.filter_service.name_june' : 'Junho',\n 'platform.filter_service.name_july' : 'Julho',\n 'platform.filter_service.name_august' : 'Agosto',\n 'platform.filter_service.name_september' : 'Setembro',\n 'platform.filter_service.name_october' : 'Outubro',\n 'platform.filter_service.name_november' : 'Novembro',\n 'platform.filter_service.name_december' : 'Dezembro',\n 'platform.filter_service.short_january' : 'Jan',\n 'platform.filter_service.short_february' : 'Fev',\n 'platform.filter_service.short_march' : 'Mar',\n 'platform.filter_service.short_april' : 'Abr',\n 'platform.filter_service.short_may' : 'Mai',\n 'platform.filter_service.short_june' : 'Jun',\n 'platform.filter_service.short_july' : 'Jul',\n 'platform.filter_service.short_august' : 'Ago',\n 'platform.filter_service.short_september' : 'Set',\n 'platform.filter_service.short_october' : 'Out',\n 'platform.filter_service.short_november' : 'Nov',\n 'platform.filter_service.short_december' : 'Dez',\n 'platform.filter_service.name_sunday': 'Domingo',\n 'platform.filter_service.name_monday': 'Segunda',\n 'platform.filter_service.name_tuesday': 'Terça',\n 'platform.filter_service.name_wednesday': 'Quarta',\n 'platform.filter_service.name_thursday': 'Quinta',\n 'platform.filter_service.name_friday': 'Sexta',\n 'platform.filter_service.name_saturday': 'Sábado',\n 'platform.filter_service.min_sunday': 'D',\n 'platform.filter_service.min_monday': 'S',\n 'platform.filter_service.min_tuesday': 'T',\n 'platform.filter_service.min_wednesday': 'Q',\n 'platform.filter_service.min_thursday': 'Q',\n 'platform.filter_service.min_friday': 'S',\n 'platform.filter_service.min_saturday': 'S',\n 'platform.filter_service.short_sunday': 'Dom',\n 'platform.filter_service.short_monday': 'Seg',\n 'platform.filter_service.short_tuesday': 'Ter',\n 'platform.filter_service.short_wednesday': 'Qua',\n 'platform.filter_service.short_thursday': 'Qui',\n 'platform.filter_service.short_friday': 'Sex',\n 'platform.filter_service.short_saturday': 'Sab',\n 'platform.filter_service.yes': 'Sim',\n 'platform.filter_service.no': 'Não',\n 'platform.filter_service.search_empty_message': 'Nenhum resultado encontrado'\n};\n","const URL_PREFIX = 'platform/filter_service';\nexport const GET_FILTERS_URL = `${URL_PREFIX}/queries/getFilters`;\nexport const SAVE_FILTERS_URL = `${URL_PREFIX}/actions/saveUserFilters`;\nexport const SAVE_TICKED_FILTER_URL = `${URL_PREFIX}/actions/setTicketFilters`;\n","export const searchDisplayName = '$$__displayValue__';\nexport const searchKeyName = '$$__keyValue__';\n","import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\n\nimport { GET_FILTERS_URL, SAVE_FILTERS_URL, SAVE_TICKED_FILTER_URL } from './constants';\nimport { Subject, Observable } from 'rxjs';\nimport { Filter } from '../models/filter';\nimport { FilterValue } from '../models/filter-value';\nimport { Context } from '../models/context';\nimport { map } from 'rxjs/operators';\nimport { TickedFilter } from '../models/ticked-filter';\nimport { searchDisplayName, searchKeyName } from '../shared/constants';\n\nexport interface TickedFilterResponse {\n ticket: string;\n}\n\nexport interface ContextsFiltersResponse {\n filters: Filter[];\n}\n\nexport interface IGetFiltersResponse {\n error?: boolean;\n message?: HttpErrorResponse;\n filters?: Filter[];\n applyFilter?: boolean;\n}\n\nexport interface ITickerFilterResponse {\n ticketFilter?: string;\n error?: boolean;\n message?: string;\n}\n\n@Injectable()\nexport class AdvancedFilterService {\n private filtersObservable = new Subject<IGetFiltersResponse>();\n private contextsObservable = new BehaviorSubject<Context[]>([]);\n private ticketFilterObservable = new Subject<ITickerFilterResponse>();\n destroy$ = new Subject();\n public ticketFilter: string;\n public visible: boolean;\n contextsObserver = this.contextsObservable.asObservable();\n filtersObserver = this.filtersObservable.asObservable();\n ticketFilterObserver = this.ticketFilterObservable.asObservable();\n\n constructor(private http: HttpClient) {\n this.contextsObservable.subscribe(contexts => contexts.length && this.getAndApplyFilters(contexts));\n }\n\n saveTickedFilters(filters: TickedFilter[]) {\n const requestBody = this.ticketFilter ? { filters, ticketFilter: this.ticketFilter } : { filters };\n this.http\n .post<TickedFilterResponse>(SAVE_TICKED_FILTER_URL, requestBody)\n .pipe(map(response => response.ticket))\n .subscribe(\n ticketFilter => {\n this.ticketFilter = ticketFilter;\n this.ticketFilterObservable.next({ ticketFilter });\n window.parent.postMessage({ message: 'advanced-filter:success', payload: ticketFilter }, '*');\n },\n err => {\n this.ticketFilterObservable.next({ error: true, message: err });\n window.parent.postMessage({ message: 'advanced-filter:error', payload: err }, '*');\n }\n );\n }\n\n addContexts(...contexts: Context[]): Observable<Context[]> {\n const currentContexts = this.contextsObservable.getValue();\n this.contextsObservable.next([...currentContexts, ...contexts]);\n return Observable.create(() => () => this.removeContexts(contexts));\n }\n\n private removeContexts(contexts: Context[]) {\n const allContexts = this.contextsObservable.getValue();\n const filteredContexts = allContexts.filter(context => contexts.indexOf(context) === -1);\n this.contextsObservable.next(filteredContexts);\n }\n\n saveFilters(filters: FilterValue[]) {\n return this.http.post(SAVE_FILTERS_URL, { filters });\n }\n\n searchFieldSuggestions(url: string, params: any, type: any) {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json; charset=utf-8' });\n if (type === 'ENTITY') {\n return this.http.get(url, { headers });\n }\n return this.http.post(url, params, { headers });\n }\n\n public tryAgain(serviceContexts: Context[]) {\n this.getFilters(serviceContexts);\n }\n\n private getAndApplyFilters(serviceContexts: Context[]) {\n this.getFilters(serviceContexts, true);\n }\n\n private getFilters(serviceContexts: Context[], applyFilter?: boolean) {\n this.http\n .post<ContextsFiltersResponse>(GET_FILTERS_URL, { serviceContexts })\n .pipe(map(response => this.mapFilters(response.filters)))\n .subscribe(\n filters => this.filtersObservable.next({ filters, applyFilter }), //\n err => this.filtersObservable.next({ error: true, message: err })\n );\n }\n\n private mapFilters(filters: Filter[]): Filter[] {\n return filters.map(filter => {\n try {\n const value = filter.value && JSON.parse(filter.value);\n\n if (value && filter.search && filter.search.basicSearch && filter.search.basicSearch.output) {\n this.mapValues(value, filter.search.basicSearch.output.keyFields, filter.search.basicSearch.output.displayFields);\n } else if (value && filter.search && filter.search.entitySearch && filter.search.entitySearch.output) {\n this.mapValues(value, filter.search.entitySearch.output.keyFields, filter.search.entitySearch.output.displayFields);\n }\n\n if (value) {\n if (this.isMultiple(filter)) {\n const valueInText = JSON.stringify(value);\n\n if ((valueInText.startsWith('[{') && valueInText.endsWith('}]')) || valueInText.length <= 4) {\n filter.value = valueInText;\n } else {\n filter.value = JSON.stringify('');\n }\n } else {\n filter.value = JSON.stringify(value);\n }\n }\n } catch (ex) {\n console.error(`Global: filter ${filter.name} has value error. `, ex);\n filter.value = JSON.stringify('');\n }\n\n return filter;\n });\n }\n\n private isMultiple(filter: Filter): boolean {\n return (\n filter.type === 'SEARCH' &&\n filter.search &&\n ((filter.search.basicSearch && filter.search.basicSearch.output && filter.search.basicSearch.output.maxSelectedItems > 1) ||\n (filter.search.entitySearch && filter.search.entitySearch.output && filter.search.entitySearch.output.maxSelectedItems > 1))\n );\n }\n\n private mapValues(value: any, keyFields: string[], displayFields: string[]) {\n if (Array.isArray(value)) {\n value.forEach(e => {\n this.mapValue(e, keyFields, displayFields);\n });\n } else {\n this.mapValue(value, keyFields, displayFields);\n }\n }\n\n private mapValue(value: any, keyFields: string[], displayFields: string[]) {\n if (!value) {\n return;\n }\n\n const ids = [] as string[];\n const displays = [] as string[];\n\n keyFields.filter(e => value[e] !== undefined).forEach(e => ids.push(value[e]));\n displayFields.filter(e => value[e] !== undefined).forEach(e => displays.push(value[e]));\n\n if (ids.length > 0 && displays.length > 0) {\n value[searchKeyName] = ids.join(', ');\n value[searchDisplayName] = displays.join(', ');\n } else {\n value = [''];\n }\n }\n}\n","import { FilterType } from './filter-type';\nimport { Scope } from './scope';\nimport { EnumItem } from './enum-item';\nimport { DependsOn } from './depends-on';\nimport { Search } from './search';\n\nexport class Filter {\n constructor(\n public type: FilterType,\n public required: boolean,\n public label: string,\n public domain: string,\n public scope: Scope,\n public name: string,\n public contexts: string[],\n public services: string[],\n public value?: string,\n public enumItems?: EnumItem[],\n public defaultValue?: string,\n public search?: Search,\n public tabIndex?: number,\n public minValue?: number,\n public maxValue?: number,\n public dependsOn?: DependsOn[],\n public mask?: string,\n public regExp?: string\n ) {}\n}\n","export enum FilterType {\n STRING = 'STRING',\n BOOLEAN = 'BOOLEAN',\n INTEGER = 'INTEGER',\n DOUBLE = 'DOUBLE',\n DATE = 'DATE',\n DATETIME = 'DATETIME',\n TIME = 'TIME',\n MONEY = 'MONEY',\n ENUMERATION = 'ENUMERATION',\n SEARCH = 'SEARCH'\n}\n","export enum Scope {\n DOMAIN = 'DOMAIN',\n SERVICE = 'SERVICE'\n}\n","import { DependsOn } from './depends-on';\nimport { Observable, Subject } from 'rxjs';\nimport { FormControl } from '@angular/forms';\nimport { FilterType } from './filter-type';\n\nexport interface FormFilterConfig {\n name: string;\n domain: string;\n services: string[];\n value: any;\n defaultValue: any;\n dependsOn: DependsOn[];\n isMultiple: boolean;\n}\n\nexport class FormFilter {\n private _value: any;\n private _valueObserver = new Subject<any>();\n valueChanges: Observable<any> = this._valueObserver.asObservable();\n name: string;\n domain: string;\n contexts: string[];\n services: string[];\n childs: string[];\n dependsOn: DependsOn[];\n filterControl: FormControl;\n type: FilterType;\n isMultiple: boolean;\n defaultValue: any;\n\n constructor({ value, ...config }: FormFilterConfig) {\n this._value = value;\n Object.assign(this, config);\n }\n\n set value(value: any) {\n this._value = value;\n this._valueObserver.next(value);\n }\n\n get value() {\n return this._value;\n }\n}\n","import { FormGroup } from '@angular/forms';\nimport { Field } from '@seniorsistemas/angular-components';\n\nexport class TabView {\n fields: Field[] = [];\n form: FormGroup;\n name?: string;\n\n constructor(config: any) {\n this.form = new FormGroup({});\n Object.assign(this, config);\n }\n}\nexport class ContextTab extends TabView {\n activeFilters = 0;\n domain: string;\n\n get label() {\n return `${this.name} (${this.activeFilters})`;\n }\n}\n","export const FILTER_ID_SEPARATOR = ':';\n\nexport function getFilterId(domain: string, filterName: string) {\n return `${domain}${FILTER_ID_SEPARATOR}${filterName}`;\n}\n\nexport function getTabId(domain: string, contextId: string) {\n return `${domain}${FILTER_ID_SEPARATOR}${contextId}`;\n}\n","import { FilterType } from '../../models';\nconst moment = require('moment');\n\n/**\n *@description Necessary because of https://github.com/rollup/rollup/issues/670\n *\n * */\n\nconst { DATETIME, TIME, DATE } = FilterType;\n\nconst parsers = {\n [DATE]: (value: any) => dateParser(value, 'YYYY-MM-DD'),\n [TIME]: (value: any) => dateParser(value, 'HH:mm:ss'),\n [DATETIME]: (value: any) => dateParser(value)\n};\n\nexport function parseFilterValue(value: any, type: FilterType) {\n const parser = parsers[type];\n if (value !== undefined && value !== null && value !== '') {\n return parser ? parser(value) : value;\n }\n\n return value;\n}\n\nfunction dateParser(value: string, format?: string) {\n const date = moment(value);\n return format ? date.format(format) : date.format();\n}\n","export function jsonPath(object: Object, path: string): any {\n path = path.replace('$.', '');\n const allPaths = path.split('.');\n const currentPath = allPaths[0];\n const value = object[currentPath];\n allPaths.shift();\n\n if (allPaths.length) {\n return jsonPath(value, allPaths.join('.'));\n }\n return value;\n}\n","export const filterOperators = {\n 'contains': (attr: string, value: string) => `containing(${attr}, '${value}')`,\n '=': (attr: string, value: string) => `${attr} eq ${value}`,\n '!=': (attr: string, value: string) => `${attr} ne ${value}`,\n '>': (attr: string, value: string) => `${attr} gt ${value}`,\n '<': (attr: string, value: string) => `${attr} lt ${value}`,\n '>=': (attr: string, value: string) => `${attr} ge ${value}`\n};\n","import { FilterType, Search } from '../models';\nimport { searchKeyName } from '../shared/constants';\n\nexport * from './filter-id/index';\nexport * from './filter-value/index';\nexport * from './json-path';\nexport * from './filterOperators';\n\nexport function toUserFormat(value: any, type: FilterType) {\n let parsedValue;\n if (type !== FilterType.SEARCH || !Array.isArray(value)) {\n parsedValue = [(value === null || value === undefined) ? '' : value];\n } else if (Array.isArray(value)) {\n if (value.length) {\n parsedValue = value[0] === null ? [''] : value;\n } else {\n parsedValue = [''];\n }\n } else {\n parsedValue = value ? value : [''];\n }\n\n return JSON.stringify(parsedValue);\n}\n\nexport function toFilterFormat(value: any, type: FilterType) {\n let parsedValue;\n if (type !== FilterType.SEARCH) {\n parsedValue = [(value === null || value === undefined) ? '' : value];\n } else if (Array.isArray(value)) {\n /*\n Deve enviar para o backend o valor contido no keyValue em array.\n\n Exemplo:\n Quando tenho dois objetos selecionados [{1,'Base'},{2,'Other'}] deve enviar no padrão: [1,'Base'], [2,'Other']\n */\n parsedValue = [''];\n if (value !== null && value.length > 0 && value[0] !== '') {\n parsedValue = value.map(v => v[searchKeyName]);\n }\n } else {\n parsedValue = [value === null ? '' : value[searchKeyName]];\n }\n\n return JSON.stringify(parsedValue);\n}\n\nexport function fromJson(value: any, type: FilterType, isNotMultiple: boolean) {\n const parsedValue = JSON.parse(value);\n if (type !== FilterType.SEARCH || isNotMultiple) {\n return parsedValue[0];\n }\n\n return parsedValue;\n}\n\nexport function getSearchType(search: Search): any {\n return search.basicSearch ? search.basicSearch : search.entitySearch;\n}\n","const moment = require('moment');\nimport { FilterType, Filter, Search } from '../../models';\nimport { FormControl, Validators } from '@angular/forms';\nimport { getSearchType } from '..';\n\n/**\n *@description Necessary because of https://github.com/rollup/rollup/issues/670\n *\n * */\n\nconst { DATE, DATETIME, TIME } = FilterType;\n\nconst parsers = {\n [DATE]: (v: string) => dateParser(v),\n [DATETIME]: (v: string) => dateParser(v),\n [TIME]: (v: string) => dateParser(v, 'HH:mm:ss')\n};\n\nexport function parseFormValue(value: string, type: FilterType, search?: Search) {\n const parser = parsers[type];\n const parsedValue = JSON.parse(value);\n const isNotMultiple = search && getSearchType(search).output.maxSelectedItems === 1;\n\n let formValue;\n if ((type === FilterType.INTEGER || type === FilterType.DOUBLE || type === FilterType.MONEY) && parsedValue[0] === '') {\n formValue = null;\n } else if (type !== FilterType.SEARCH || isNotMultiple) {\n formValue = parsedValue[0];\n } else {\n formValue = parsedValue[0] ? parsedValue : [];\n }\n\n if (parser) {\n return parser(formValue);\n }\n\n return formValue;\n}\n\nexport function createFormControl({ minValue, maxValue, regExp, value, type, search }: Filter) {\n const validators = createValidators(minValue, maxValue, regExp);\n const formValue = parseFormValue(value, type, search);\n\n return new FormControl(formValue, { validators });\n}\n\nfunction createValidators(minValue: number, maxValue: number, regExp: string) {\n const { pattern, min, max } = Validators;\n const validators = [];\n\n regExp && validators.push(pattern(regExp));\n minValue !== undefined && validators.push(min(minValue));\n maxValue !== undefined && validators.push(max(maxValue));\n\n return validators;\n}\n\nfunction dateParser(value: string, format?: string): Date | string {\n return value !== null && value !== '' ? moment(value, format).toDate() : '';\n}\n","import { contains, equals } from 'ramda';\nimport { FilterType } from '../models';\nconst supportedTypes = [\n FilterType.STRING,\n FilterType.BOOLEAN,\n FilterType.INTEGER,\n FilterType.ENUMERATION,\n FilterType.TIME,\n FilterType.MONEY,\n FilterType.DATETIME,\n FilterType.DATE,\n FilterType.DOUBLE\n];\n\nconst operation = {\n '>': (value: number, otherValue: number) => {\n return value > otherValue;\n },\n '<': (value: number, otherValue: number) => {\n return value < otherValue;\n },\n '>=': (value: number, otherValue: number) => {\n return value >= otherValue;\n },\n '<=': (value: number, otherValue: number) => {\n return value <= otherValue;\n },\n 'contains': (value: any, otherValue: any[]) => {\n return contains(value, otherValue);\n },\n '=': (value: any, otherValue: any) => {\n if (typeof otherValue === 'number') {\n return equals(Number(value), otherValue);\n }\n return equals(value, otherValue);\n },\n '!=': (value: any, otherValue: any) => {\n if (typeof otherValue === 'number') {\n return !equals(Number(value), otherValue);\n }\n return !equals(value, otherValue);\n }\n};\n\nexport function compare(operator: string, value: any, otherValue: any) {\n const comparator = operation[operator];\n return comparator(value, otherValue);\n}\n\nexport function isValidOperator(operator: string) {\n return !!operation[operator];\n}\n\nexport function isSupportedType(type: FilterType) {\n return contains(type, supportedTypes);\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nconst TRANSLATE_PREFIX = 'platform.filter_service';\n\n@Injectable()\nexport class CalendarOptionsService {\n constructor(private translate: TranslateService) {\n }\n public getOptions() {\n return {\n clear: this.translate.instant(`${TRANSLATE_PREFIX}.clear`),\n dateFormat: this.translate.instant(`${TRANSLATE_PREFIX}.date_format`),\n dayNames: [\n this.translate.instant(`${TRANSLATE_PREFIX}.name_sunday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_monday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_tuesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_wednesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_thursday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_friday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_saturday`)\n ],\n dayNamesMin: [\n this.translate.instant(`${TRANSLATE_PREFIX}.min_sunday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_monday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_tuesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_wednesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_thursday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_friday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.min_saturday`)\n ],\n dayNamesShort: [\n this.translate.instant(`${TRANSLATE_PREFIX}.short_sunday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_monday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_tuesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_wednesday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_thursday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_friday`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_saturday`)\n ],\n firstDayOfWeek: 0,\n hourFormat: this.translate.instant(`${TRANSLATE_PREFIX}.hour_format`),\n monthNames: [\n this.translate.instant(`${TRANSLATE_PREFIX}.name_january`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_february`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_march`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_april`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_may`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_june`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_july`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_august`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_september`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_october`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_november`),\n this.translate.instant(`${TRANSLATE_PREFIX}.name_december`),\n ],\n monthNamesShort: [\n this.translate.instant(`${TRANSLATE_PREFIX}.short_january`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_february`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_march`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_april`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_may`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_june`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_july`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_august`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_september`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_october`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_november`),\n this.translate.instant(`${TRANSLATE_PREFIX}.short_december`),\n ],\n today: this.translate.instant(`${TRANSLATE_PREFIX}.today`)\n };\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { MessageService } from \"primeng/api\";\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { BehaviorSubject, from, Subject } from 'rxjs';\nimport { filter as rxFilter, map, mergeMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { Context, DependsOn, EntitySearchInput, EnumItem, Filter, FilterType, Scope } from '../../models';\nimport { ContextTab, TabView } from '../../models/tab-view';\nimport { AdvancedFilterService } from '../../services/advanced-filter.service';\nimport { FormFilter } from '../../models/form-filter';\nimport {\n filterOperators,\n fromJson,\n getFilterId,\n getSearchType,\n getTabId,\n jsonPath,\n parseFilterValue,\n toFilterFormat,\n toUserFormat\n} from '../../utils/index';\nimport { createFormControl } from '../../utils/form-field';\nimport { clone, equals } from 'ramda';\nimport { compare, isSupportedType, isValidOperator } from '../../utils/comparator';\n\nimport {\n AutocompleteField,\n CalendarField,\n RadioButtonField,\n CurrencyField,\n Field,\n FieldConfig,\n FieldType,\n NumberField,\n SelectField,\n TextField,\n RationButtonOption,\n CalendarFieldConfig\n} from '@seniorsistemas/angular-components';\n\nimport { searchDisplayName, searchKeyName } from '../../shared/constants';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Message } from 'primeng/api';\nimport { CalendarOptionsService } from '../../services/calendar-options.service';\n\nconst TRANSLATE_PREFIX = 'platform.filter_service';\nconst TOAST_LIFE = 5000;\n\n@Component({\n selector: 's-app-form-filter',\n templateUrl: './form-filter.component.html',\n styleUrls: ['./form-filter.component.scss']\n})\nexport class FormFilterComponent implements OnInit, OnDestroy {\n destroy$ = new Subject();\n errorState: HttpErrorResponse;\n tabs: Map<string, ContextTab>;\n contexts: Context[] = [];\n formFilters: FormFilter[] = [];\n oldFormFilters: any[] = [];\n actualFormFilters: any[] = [];\n general = new TabView({ name: 'Geral' });\n totalFiltersActive = 0;\n isMobile = false;\n tabViewOrientation = 'left';\n error = false;\n\n errorMessages = {\n min: this.translate.instant(`${TRANSLATE_PREFIX}.error_min_value`),\n max: this.translate.instant(`${TRANSLATE_PREFIX}.error_max_value`),\n pattern: this.translate.instant(`${TRANSLATE_PREFIX}.invalid_pattern`)\n };\n\n @Input() showMessages = true;\n @Input() isModal = false;\n @Output() totalFiltersActiveOutput = new EventEmitter<number>();\n @Output() errorOutput = new EventEmitter<boolean>();\n @Output() showDialogOutput = new EventEmitter<boolean>();\n @Output() closeModalOutput = new EventEmitter();\n\n constructor(\n private filterService: AdvancedFilterService,\n public translate: TranslateService,\n private messageService: MessageService,\n private calendarOptionsService: CalendarOptionsService,\n private changeDetectorRef: ChangeDetectorRef\n ) { }\n\n @HostListener('window:resize', ['$event'])\n onResizeWindow(event: any) {\n const { innerWidth } = event.target;\n this.isMobile = innerWidth <= 640;\n this.tabViewOrientation = this.isMobile ? 'top' : 'left';\n }\n\n ngOnInit() {\n this.isMobile = innerWidth <= 640;\n this.tabViewOrientation = this.isMobile ? 'top' : 'left';\n this.subscribeContextsObservable();\n this.subscribeFiltersObservable();\n\n window.addEventListener('message', event => {\n const data = event.data;\n const message = data.message && data.message.split(':')[1];\n if (message === 'addContext') {\n this.filterService.addContexts(...data.payload);\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next(true);\n }\n\n hasChanges() {\n const keys = Object.keys(this.formFilters);\n const oldKeys = Object.keys(this.oldFormFilters);\n if (!oldKeys.length) {\n return true;\n }\n const filtered = keys.filter(key => {\n const currentValue = this.formFilters[key].value;\n const oldValue = this.oldFormFilters[key] && this.oldFormFilters[key].value;\n return !equals(currentValue, oldValue);\n });\n return filtered.length > 0;\n }\n\n onApplyFilters() {\n this.hasChanges() && this.closeModalOutput.emit();\n }\n\n public getFilters() {\n this.hasChanges() && this.filterService.tryAgain(this.contexts);\n }\n\n applyFilters(showToast = false) {\n if (this.hasChanges()) {\n this.showDialogOutput.emit(false);\n this.counterUpdate();\n const filters = this.getFiltersValues(this.formFilters);\n this.filterService.saveTickedFilters(filters);\n } else if (showToast) {\n const message = {\n key: 'filterServiceToastKey',\n severity: 'info',\n life: TOAST_LIFE,\n detail: this.translate.instant(`${TRANSLATE_PREFIX}.applied_filter_nochange`, { activeFilters: this.totalFiltersActive })\n };\n this.sendMessage(message);\n }\n this.oldFormFilters = clone(this.formFilters);\n }\n\n getDefaultValue(defaultValue: any, isMultiple: boolean) {\n if (defaultValue === undefined || (isMultiple && defaultValue[0] === '')) {\n return [];\n }\n\n return defaultValue;\n }\n\n clearFilters() {\n const keys = Object.keys(this.formFilters);\n keys.forEach(key => this.cleanFieldAndSetDefaultValue(key));\n }\n\n sendCloseMessage() {\n window.parent.postMessage(\n {\n message: 'dashboard:close-modal',\n payload: {\n modalName: 'advanced-filter-1'\n }\n },\n '*'\n );\n }\n\n sendMessage(message: Message) {\n if (this.showMessages) {\n this.messageService.add(message);\n } else {\n window.parent.postMessage(\n {\n message: 'dashboard:toastr',\n payload: {\n type: 'success',\n message: message.detail\n }\n },\n '*'\n );\n }\n }\n\n saveFilters() {\n const filters = this.parseToUserFilters(this.formFilters);\n const savedFilterSuccess = () => {\n const message = {\n key: 'filterServiceToastKey',\n severity: 'info',\n life: TOAST_LIFE,\n detail: this.translate.instant(`${TRANSLATE_PREFIX}.saved_filters_success`, { activeFilters: this.totalFiltersActive })\n };\n this.sendMessage(message);\n this.counterUpdate();\n };\n\n const savedFiltersError = () => {\n const message = {\n key: 'filterServiceToastKey',\n severity: 'error',\n life: TOAST_LIFE,\n detail: this.translate.instant(`${TRANSLATE_PREFIX}.saved_filters_error`, { activeFilters: this.totalFiltersActive })\n };\n this.sendMessage(message);\n };\n this.filterService\n .saveFilters(filters) //\n .subscribe(savedFilterSuccess, savedFiltersError);\n }\n\n private counterUpdate() {\n this.totalFiltersActive = this.countActiveFilters(this.tabs);\n this.totalFiltersActiveOutput.emit(this.totalFiltersActive);\n }\n\n private countActiveFilters(tabs: Map<string, ContextTab>) {\n let totalFiltersActive = 0;\n\n tabs.forEach(tabView => {\n const { value } = tabView.form;\n tabView.activeFilters = Object.keys(value).reduce((appliedFilters, key) => {\n const filterValue = value[key];\n const isArray = Array.isArray(filterValue);\n const isValidArray = isArray && filterValue.length > 0;\n\n if (isValidArray || (!isArray && filterValue)) {\n appliedFilters++;\n }\n\n return appliedFilters;\n }, 0);\n totalFiltersActive += tabView.activeFilters;\n });\n\n return totalFiltersActive;\n }\n\n private parseToUserFilters(filters: FormFilter[]) {\n const ids = Object.keys(filters);\n\n return ids.reduce((all, filterId) => {\n const { type, services, name, value, domain, contexts } = filters[filterId] as Filter;\n const filterValue = toUserFormat(value, type);\n\n const values = services.map(service => ({ name, service, value: filterValue, domain, contexts }));\n\n return [...all, ...values];\n }, []);\n }\n\n private getFiltersValues(filters: FormFilter[]) {\n const ids = Object.keys(filters);\n\n return ids.reduce((all, filterId) => {\n const { type, services, name, value, domain } = filters[filterId] as Filter;\n const filterValue = toFilterFormat(value, type);\n const values = services.map(service => ({ name, service, value: filterValue, domain }));\n\n return [...all, ...values];\n }, []);\n }\n\n private subscribeContextsObservable() {\n const { contextsObserver } = this.filterService;\n contextsObserver.pipe(takeUntil(this.destroy$)).subscribe((contexts: Context[]) => (this.contexts = contexts));\n }\n\n errorStateAction() {\n this.filterService.tryAgain(this.contexts);\n }\n\n private subscribeFiltersObservable() {\n const { filtersObserver } = this.filterService;\n\n filtersObserver\n .pipe(takeUntil(this.destroy$)) //\n .subscribe(({ filters, applyFilter, error, message }) => {\n this.errorOutput.emit(error);\n this.error = error;\n this.errorState = message;\n if (!error) {\n this.tabs = this.createTabs(filters);\n this.counterUpdate();\n this.setDependencies(this.formFilters);\n this.createChildArray();\n if (filters.length > 0 && applyFilter) {\n this.applyFilters();\n }\n }\n });\n }\n\n private setDependencies(filters: FormFilter[]) {\n const names = Object.keys(filters);\n const dependencies = from(names).pipe(\n map(key => filters[key] as FormFilter),\n rxFilter(({ dependsOn }) => dependsOn && dependsOn.length > 0),\n tap(({ dependsOn, domain, filterControl }) => {\n const invalidFilters = dependsOn\n .filter(dep => dep.required)\n .filter(dep => {\n const id = getFilterId(domain, dep.filterName);\n const formFilter = filters[id];\n const { value, type } = formFilter;\n const { comparator } = dep;\n if (comparator && isValidOperator(comparator.operator) && isSupportedType(type)) {\n const fieldValue = parseFilterValue(value, type);\n return !compare(comparator.operator, comparator.value, fieldValue);\n }\n return dep.required ? !formFilter.value : formFilter.value;\n });\n\n if (invalidFilters.length > 0) {\n filterControl.disable();\n }\n }),\n map(({ domain, dependsOn, filterControl }) => ({ domain, dependsOn, filterControl }))\n );\n\n dependencies.subscribe(({ dependsOn, domain, filterControl }) =>\n from(dependsOn)\n .pipe(\n rxFilter(dep => dep.required),\n map(({ filterName }) => getFilterId(domain, filterName)),\n map(filterId => filters[filterId] as FormFilter),\n mergeMap(formFilter => from(formFilter.valueChanges)),\n map(val => {\n const comparation = dependsOn.every(dep => {\n const filterId = getFilterId(domain, dep.filterName);\n if (this.formFilters[filterId]) {\n const type = this.formFilters[filterId].type;\n const { comparator } = dep;\n if (comparator && isValidOperator(comparator.operator) && isSupportedType(type)) {\n const value = parseFilterValue(val, type);\n return compare(comparator.operator, comparator.value, value);\n }\n return true;\n }\n });\n return !this.IsEmpty(val) && comparation ? 'enable' : 'disable';\n })\n )\n .subscribe(status => filterControl[status]())\n );\n }\n\n private addGeneralField(filter: Filter) {\n const { name, domain, type } = filter;\n const controlName = getFilterId(domain, name);\n const fieldControl = createFormControl(filter);\n\n fieldControl.valueChanges\n .pipe(\n takeUntil(this.destroy$),\n map(v => parseFilterValue(v, type)),\n tap(value => (this.formFilters[controlName].value = value))\n ) //\n .subscribe(val =>\n this.tabs.forEach(tab => {\n const control = tab.form.controls[name];\n if (control && tab.domain === domain) {\n control.setValue(val, { emitEvent: false });\n }\n })\n );\n\n const newFilter = { ...filter, ...{ name: controlName } };\n const newField = this.createField(newFilter);\n this.general.form.addControl(controlName, fieldControl);\n this.general.fields.push(newField);\n }\n\n /*\n * Verifica os contextos de cada filtro, caso todos os contextos foram informados:\n * @return true\n * Caso não tenha nenhum contexto, considera-se por padrão que é todos:\n * @return true\n */\n private containsAllContexts(myContexts: string[]) {\n if (!myContexts.length) {\n return true;\n }\n const allContexts = this.contexts.map(data => data.contextId);\n return equals(myContexts.sort(), allContexts.sort());\n }\n\n /**\n *\n * @todo Refatorar. O método possui muitas responsabilidades\n */\n private createTabs(filters: Filter[]) {\n return filters.reduce((tabs, filter) => {\n const { domain, services, name, type, scope, contexts, dependsOn, value, search, defaultValue } = filter;\n const isNotMultiple = search && getSearchType(search).output.maxSelectedItems === 1;\n const field = this.createField(filter);\n const filterId = getFilterId(domain, name);\n const filterConfig = {\n domain,\n contexts,\n services,\n name,\n dependsOn,\n value: fromJson(value, type, isNotMultiple),\n type,\n isMultiple: !isNotMultiple,\n defaultValue: fromJson(defaultValue, type, isNotMultiple)\n };\n this.formFilters[filterId] = new FormFilter(filterConfig);\n const formFilter = this.formFilters[filterId];\n if (scope === Scope.DOMAIN && this.containsAllContexts(contexts)) {\n this.addGeneralField(filter);\n }\n\n contexts.forEach(contextId => {\n const tabId = getTabId(domain, contextId);\n const fieldControl = createFormControl(filter);\n\n if (!tabs.has(tabId)) {\n const { contextLabel } = this.contexts.find(context => context.contextId === contextId);\n const tab = new ContextTab({ domain, name: contextLabel });\n tabs.set(tabId, tab);\n }\n\n fieldControl.valueChanges\n .pipe(takeUntil(this.destroy$)) //\n .subscribe((val: any) => this.updateFilterValue(tabId, name, val, domain, type));\n\n const contextTab = tabs.get(tabId);\n\n contextTab.fields.push(field);\n contextTab.form.addControl(filter.name, fieldControl);\n\n if (!formFilter.filterControl) {\n formFilter.filterControl = fieldControl;\n }\n });\n\n return tabs;\n }, new Map<string, ContextTab>());\n }\n\n private updateFilterValue(tabId: string, filterName: string, value: any, domain: string, type: FilterType) {\n const controlOpts = { emitEvent: false };\n const fieldValue = parseFilterValue(value, type);\n const filterId = getFilterId(domain, filterName);\n const generalFieldControl = this.general.form.controls[filterId];\n\n this.tabs.forEach(({ form }, key) => {\n const control = form.controls[filterName];\n\n if (tabId !== key && control) {\n control.setValue(value, controlOpts);\n }\n });\n const { childs } = this.formFilters[filterId];\n childs && childs.forEach((child: any) => this.cleanFieldAndSetDefaultValue(child.filter.key));\n generalFieldControl && generalFieldControl.setValue(value, controlOpts);\n this.formFilters[filterId].value = fieldValue;\n }\n\n private cleanFieldAndSetDefaultValue(key: string) {\n const { isMultiple, defaultValue, filterControl, type } = this.formFilters[key] as FormFilter;\n const finalValue = this.getDefaultValue(defaultValue, isMultiple);\n\n if (filterControl) {\n if (type === 'DATE' || (type === 'SEARCH' && isMultiple)) {\n filterControl.setValue(finalValue);\n }\n if (type === 'INTEGER' || type === 'DOUBLE' || type === 'MONEY') {\n finalValue === '' ? filterControl.setValue(null) : filterControl.setValue(finalValue);\n } else {\n filterControl.setValue(finalValue, { onlySelf: true });\n }\n }\n }\n\n private createChildArray() {\n const keys = Object.keys(this.formFilters);\n keys.forEach(key => {\n const { dependsOn, domain } = this.formFilters[key];\n dependsOn.forEach((field: any) => {\n const filterId = getFilterId(domain, field.filterName);\n if (this.formFilters[filterId]) {\n if (!this.formFilters[filterId].childs) {\n this.formFilters[filterId].childs = [];\n }\n this.formFilters[filterId].childs.push({ filter: { key, required: field.required } });\n }\n });\n });\n }\n\n private createField(filter: Filter): Field {\n const { name, label, enumItems, type, mask } = filter;\n const translatedEnumItems =\n enumItems && enumItems.map((item: EnumItem) => ({ label: this.translate.instant(item.label), value: item.value }));\n const field = { name, label: this.translate.instant(label), placeholder: '' };\n\n const creators = {\n [FilterType.STRING]: () => new TextField({ ...field, mask: mask ? () => mask : null, type: FieldType.String }),\n [FilterType.MONEY]: () => new CurrencyField({ ...field, type: FieldType.Money }),\n [FilterType.BOOLEAN]: () => this.createRadioButton({ ...field }),\n [FilterType.DATE]: () => this.createCalendar({ ...field, type: FieldType.Date }),\n [FilterType.DATETIME]: () => this.createCalendar({ ...field, type: FieldType.DateTime }),\n [FilterType.TIME]: () => this.createCalendar({ ...field, type: FieldType.Time }),\n [FilterType.ENUMERATION]: () =>\n new SelectField({\n ...field,\n placeholder: this.translate.instant('platform.filter_service.select'),\n options: [...translatedEnumItems] as any,\n type: FieldType.Enum\n }),\n [FilterType.INTEGER]: () =>\n new NumberField({\n ...field,\n numberLocaleOptions: this.optionsInteger(),\n mask: mask ? () => mask : null,\n type: FieldType.Integer\n }),\n [FilterType.DOUBLE]: () => new CurrencyField({ ...field, type: FieldType.Double }),\n [FilterType.SEARCH]: () => this.createAutocompleteField(field, filter)\n };\n\n return creators[type]();\n }\n\n private createRadioButton(field: FieldConfig) {\n const options = [\n { label: this.translate.instant(`${TRANSLATE_PREFIX}.yes`), value: true },\n { label: this.translate.instant(`${TRANSLATE_PREFIX}.no`), value: false }\n ] as RationButtonOption[];\n\n return new RadioButtonField({ ...field, type: FieldType.Radio, options });\n }\n\n private createCalendar(config: CalendarFieldConfig) {\n const calendar = new CalendarField(config);\n calendar.calendarLocaleOptions = this.calendarOptionsService.getOptions();\n if (!this.isModal) calendar.appendTo = 'body';\n return calendar;\n }\n\n private createAutocompleteField(field: FieldConfig, { dependsOn, search, domain, name }: Filter) {\n const suggestionsObservable = new BehaviorSubject<any[]>([]);\n const { queryParam } = getSearchType(search).input;\n const { displayFields, keyFields, resultDataJsonPath, displayFieldConcatToken, maxSelectedItems } = getSearchType(search).output;\n const filterId = getFilterId(domain, name);\n const suggestionsError = (messageError?: string) => {\n const messageDetail = messageError ? messageError : this.translate.instant(`${TRANSLATE_PREFIX}.find_suggestions_error`, { activeFilters: this.totalFiltersActive })\n const message = {\n key: 'filterServiceToastKey',\n severity: 'error',\n life: TOAST_LIFE,\n detail: messageDetail\n };\n this.sendMessage(message);\n };\n const onSearch = (val: string) => {\n const params = { [queryParam]: val };\n dependsOn && Object.assign(params, this.getDependenciesValues(dependsOn, domain));\n\n const searchUrl =\n search && search.type === 'ENTITY'\n ? this.getEntitySearchUrl(search.entitySearch.input, val, dependsOn)\n : getSearchType(search).input.url;\n\n this.filterService\n .searchFieldSuggestions(searchUrl, params, search.type)\n .pipe(\n map(response => jsonPath(response, resultDataJsonPath)),\n map((suggestions: any[]) => this.addSuggestionFields(suggestions, displayFields, keyFields, displayFieldConcatToken, filterId))\n )\n .subscribe(result => {\n suggestionsObservable.next(result);\n this.changeDetectorRef.detectChanges();\n }, (error) => {\n let messageError = undefined\n if (error && error.error.message) messageError = error.error.message\n suggestionsError(messageError)\n });\n };\n\n return new AutocompleteField({\n ...field,\n onSearch,\n appendTo: 'body',\n suggestionsObservable,\n displayField: searchDisplayName,\n dataKey: searchKeyName,\n multiple: maxSelectedItems > 1,\n size: { lg: 12, md: 12, xl: 12 },\n emptyMessage: this.translate.instant(`${TRANSLATE_PREFIX}.search_empty_message`)\n });\n }\n\n private getEntitySearchUrl(search: EntitySearchInput, value: string, dependsOn: DependsOn[]) {\n const { attributes, domainName, entityName, serviceName } = search;\n const url = `${domainName}/${serviceName}/entities/${entityName}/?filter=`;\n const filters: any = attributes.map(attr => filterOperators[attr.comparator](attr.name, value));\n\n dependsOn &&\n dependsOn.forEach(obj => {\n const filterId = getFilterId(domainName, obj.filterName);\n const fieldValue = this.formFilters[filterId].value[searchKeyName];\n filters.push(`${obj.entityAttribute} eq '${fieldValue}'`);\n });\n\n // O regex apenas seleciona as virgulas ignorando as que estiverem dentro do ()\n return url.concat(filters).replace(/[,]+(?![^(]*[)])/g, ` ${search.operator} `);\n }\n\n private addSuggestionFields(suggestions: any[], displayFields: string[], keyFields: string[], separator: string, filterId: string) {\n const addValue = (acc: string, value: any, token: string) => (acc ? `${acc}${token}${value}` : value);\n\n const result = suggestions.map(suggestion => ({\n ...suggestion,\n [searchDisplayName]: displayFields.reduce((value, display) => {\n return addValue(value, this.translate.instant(suggestion[display]), separator);\n }, ''),\n [searchKeyName]: keyFields.reduce((value, key) => addValue(value, suggestion[key], ', '), '')\n }));\n this.formFilters[filterId].invalidValue = result.length === 0;\n\n return result.filter(item => {\n const { value } = this.formFilters[filterId];\n if (Array.isArray(value)) {\n const index = value.findIndex((i: any) => i.$$__keyValue__ === item.$$__keyValue__);\n if (index === -1) {\n return item;\n }\n } else {\n return item;\n }\n });\n }\n\n private getDependenciesValues(dependencies: DependsOn[], domain: string) {\n return dependencies.reduce((params, { filterName }) => {\n const filterId = getFilterId(domain, filterName);\n if (this.formFilters[filterId]) {\n const { value, type } = this.formFilters[filterId];\n if (type === 'ENUMERATION') {\n params[filterName] = value;\n } else {\n if (Array.isArray(value)) {\n params[filterName] = value.map(arr => arr[searchKeyName]);\n } else {\n params[filterName] = value ? value[searchKeyName] : [''];\n }\n }\n this.IsEmpty(params[filterName]) && delete params[filterName];\n return params;\n }\n }, {});\n }\n\n /*\n * Verifica se o valor informado é falso, em arrays, é verificado cada item\n */\n private IsEmpty(value: any) {\n return Array.isArray(value) ? value.every(data => !data) : !value;\n }\n\n /**\n * Return format to specify for integer type field\n */\n private optionsInteger() {\n return { currencySymbol: '', decimalSeparator: '', thousandsSeparator: '' };\n }\n}\n","import { Component, HostListener, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { FormFilterComponent } from '../form-filter/form-filter.component';\n\nconst TRANSLATE_PREFIX = 'platform.filter_service';\n\n@Component({\n selector: 's-advanced-filter',\n templateUrl: './advanced-filter.component.html',\n styleUrls: ['./advanced-filter.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AdvancedFilterComponent implements OnInit, OnDestroy {\n @Input() labelButton = 'Filters';\n @Input() onlyContent = false;\n @Input() hideButtons = false;\n @Input() canOpenFilter = true;\n @Input() showActiveFiltersCountBadge = true;\n @Input() filterAndSave = false;\n\n subscriptions: Subscription[] = [];\n\n isMobile = false;\n tabViewOrientation = 'left';\n totalFiltersActive = 0;\n showDialog = false;\n error = false;\n\n @ViewChild(FormFilterComponent)\n modalComponent: FormFilterComponent;\n\n mobileButtonActions = [\n { id: 'save', label: this.translate.instant('save'), command: () => this.modalComponent.saveFilters() },\n { id: 'clear', label: this.translate.instant('clear'), command: () => this.modalComponent.clearFilters() }\n ];\n\n constructor(public translate: TranslateService, private router: Router) {}\n\n ngOnInit() {\n this.isMobile = innerWidth <= 640;\n this.tabViewOrientation = this.isMobile ? 'top' : 'left';\n\n const sub = this.router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.modalComponent.getFilters();\n }\n });\n\n this.subscriptions.push(sub);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(v => v.unsubscribe());\n }\n\n @HostListener('window:resize', ['$event'])\n onResizeWindow(event: any) {\n const { innerWidth } = event.target;\n this.isMobile = innerWidth <= 640;\n this.tabViewOrientation = this.isMobile ? 'top' : 'left';\n }\n\n get appliedFiltersTooltip() {\n return this.totalFiltersActive > 1\n ? this.translate.instant(`${TRANSLATE_PREFIX}.applied_filters_message`, { totalActiveFilters: this.totalFiltersActive })\n : this.translate.instant(`${TRANSLATE_PREFIX}.applied_filter_message`, { totalActiveFilters: this.totalFiltersActive });\n }\n\n onError(event: boolean) {\n this.error = event;\n }\n\n saveFilters() {\n this.modalComponent.saveFilters();\n }\n\n clearFilters() {\n this.modalComponent.clearFilters();\n }\n\n close() {\n this.modalComponent.getFilters();\n window.parent.postMessage(\n {\n message: 'dashboard:close-modal',\n payload: {\n modalName: 'advanced-filter-1'\n }\n },\n '*'\n );\n }\n\n applyFilters() {\n if (this.modalComponent.hasChanges()) {\n this.showDialog = false;\n }\n\n if (this.filterAndSave) {\n this.modalComponent.saveFilters();\n }\n\n this.modalComponent.applyFilters(true);\n }\n\n onApplyFilters() {\n if (this.filterAndSave) {\n this.modalComponent.saveFilters();\n }\n\n this.modalComponent.onApplyFilters();\n }\n\n toggleDialog() {\n this.showDialog = !this.showDialog;\n }\n\n updateTotalFiltersActive(event: number) {\n this.totalFiltersActive = event;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ButtonModule as PrimeNGButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { TabViewModule } from 'primeng/tabview';\nimport { ToastModule } from 'primeng/toast';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { MessageService } from \"primeng/api\";\nimport { DynamicFormModule, ButtonModule, EmptyStateModule, LocaleService } from '@seniorsistemas/angular-components';\n\nimport { MapValuesPipe } from './pipes/map-values.pipe';\nimport { TranslatePipe } from './pipes/translate.pipe';\nimport { TranslationsModule } from './../translations/translations.module';\nimport { fallback } from './locale/fallback';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AdvancedFilterService } from './services/advanced-filter.service';\nimport { AdvancedFilterComponent } from './components/advanced-filter/advanced-filter.component';\nimport { FormFilterComponent } from './components/form-filter/form-filter.component';\nimport { CalendarOptionsService } from './services/calendar-options.service';\n\nexport class AppRoutingModule {}\n@NgModule({\n imports: [\n DialogModule,\n ButtonModule,\n PrimeNGButtonModule,\n TabViewModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DynamicFormModule,\n ToastModule,\n EmptyStateModule,\n TooltipModule,\n TranslationsModule.forChild([{domain: 'platform', service: 'filter_service', fallback}]),\n ],\n providers: [AdvancedFilterService, LocaleService, MessageService, TranslateService, CalendarOptionsService],\n declarations: [AdvancedFilterComponent, FormFilterComponent, MapValuesPipe, TranslatePipe],\n exports: [AdvancedFilterComponent, FormFilterComponent]\n})\nexport class AdvancedFilterModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpHandler, HttpRequest, HttpEvent, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nconst jc = require('json-cycle');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CyclicJsonInterceptor implements HttpInterceptor {\n public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (req.body instanceof Blob === false && req.body instanceof FormData === false) {\n req = req.clone({ body: jc.decycle(req.body) });\n }\n return next.handle(req).pipe(\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n event = event.clone({ body: jc.retrocycle(event.body) });\n }\n return event;\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { CyclicJsonInterceptor } from './cyclic-json-interceptor.service';\n\n@NgModule({\n imports: [HttpClientModule],\n providers: [{ provide: HTTP_INTERCEPTORS, useClass: CyclicJsonInterceptor, multi: true }]\n})\nexport class CyclicJsonInterceptorModule {}\n","import { service } from '@seniorsistemas/senior-platform-data';\nimport { Injectable } from '@angular/core';\nimport { Observable, defer, from } from 'rxjs';\n\n@Injectable()\nexport class RestUrl {\n get(): Observable<string> {\n return defer(() => from(service.getRestUrl()));\n }\n}\n","import { service } from '@seniorsistemas/senior-platform-data';\nimport { Injectable } from '@angular/core';\nimport { Observable, defer, from } from 'rxjs';\n\n@Injectable()\nexport class XServicesUrl {\n\n get(): Observable<string> {\n return defer(() => {\n const url = service.getXServicesUrl();\n return from(url);\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor as AngularHttpInterceptor, HttpHandler, HttpRequest, HttpEvent } from '@angular/common/http';\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport { Observable, forkJoin, defer, from } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { RestUrl } from './rest-url.service';\nimport { XServicesUrl } from './x-services-url.service';\n\n@Injectable()\nexport class HttpInterceptor implements AngularHttpInterceptor {\n\n constructor(private readonly restUrl: RestUrl, private readonly xServicesUrl: XServicesUrl) {}\n\n public intercept(originalReq: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!originalReq.url.includes(`://`)) {\n const getAuthHeader = defer(() => from(user.getAuthHeader()));\n if (/^\\/?[^\\/]+\\/[^\\/]+\\/api\\/(?:latest|v\\d+)\\/.+$/g.test(originalReq.url)) {\n const getXServicesUrl = this.xServicesUrl.get();\n return forkJoin([getXServicesUrl, getAuthHeader]).pipe(\n mergeMap((values: any) => {\n const [xUrl, authHeader] = values;\n return this.injectBaseUrl(originalReq, next, xUrl, authHeader);\n })\n );\n }\n const getRestUrl = this.restUrl.get();\n return forkJoin([getRestUrl, getAuthHeader]).pipe(\n mergeMap((values: any) => {\n const [bridgeUrl, authHeader] = values;\n return this.injectBaseUrl(originalReq, next, bridgeUrl, authHeader);\n })\n );\n }\n return next.handle(originalReq);\n }\n\n private injectBaseUrl(originalReq: HttpRequest<any>, next: HttpHandler,\n baseUrl: string, authorization: string): Observable<HttpEvent<any>> {\n const request = originalReq.clone({\n url: baseUrl + originalReq.url,\n headers: originalReq.headers.set(`Authorization`, authorization)\n });\n return next.handle(request);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { RestUrl } from './rest-url.service';\nimport { XServicesUrl } from './x-services-url.service';\nimport { HttpInterceptor } from './http-interceptor.service';\n\n@NgModule({\n imports: [HttpClientModule],\n providers: [RestUrl, XServicesUrl, { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptor, multi: true }]\n})\nexport class HttpInterceptorModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const RESOURCES = new InjectionToken<Resources>('RESOURCES');\nexport const ENVIRONMENT = new InjectionToken<Environment>('ENVIRONMENT');\nexport type Resources = Resource[];\n\nexport interface Permission {\n resource: string;\n action: string;\n authorized: boolean;\n owner: boolean;\n resourceFilters: string[];\n}\n\nexport interface Result {\n permissions: Permission[];\n authorized: boolean;\n}\n\nexport class Resource {\n name: string;\n actions: string[];\n uri?: string;\n redirectToError ? = false;\n actionsToCheck?: string[];\n entity?: boolean;\n}\n\nexport class Environment {\n domain?: string;\n service?: string;\n ignorePermissions: boolean;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MessageService } from \"primeng/api\";\nimport { from, Observable, of, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { Environment, ENVIRONMENT, Permission, Resource, Resources, RESOURCES, Result } from './permissions.config';\n\nexport let promise: Promise<any>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionsService {\n private checkedPermissions: Permission[] = [];\n private actionUrl = 'platform/authorization/queries';\n\n constructor(\n @Inject(RESOURCES) private readonly resources: Resources,\n @Inject(ENVIRONMENT) private readonly environment: Environment,\n private readonly http: HttpClient,\n private readonly router: Router,\n private readonly messageService: MessageService,\n private readonly translate: TranslateService\n ) {}\n\n // v2\n checkAccess(resources: Resource[]): Observable<any> {\n const permissions: any[] = [];\n\n resources.forEach(rec => {\n rec.actions.forEach(action => {\n if (!rec.uri) {\n const resource = this.getUriByResourceName(rec.name, rec.entity);\n rec.uri = resource;\n }\n permissions.push({ action, resource: rec.uri });\n });\n });\n\n return this.http.post(`${this.actionUrl}/checkAccess`, { includeFilters: true, permissions }).pipe(\n map(({ permissions: checkedPermissions }: Result) => {\n this.checkedPermissions = [...this.checkedPermissions, ...checkedPermissions];\n\n const values = {};\n\n if (this.shouldRedirectToForbiddenPage(resources, checkedPermissions)) {\n this.router.navigate(['error', 403]);\n return throwError('forbidden');\n }\n\n checkedPermissions.forEach(permission => {\n const resource = resources.find(res => res.uri === permission.resource);\n const { name } = resource;\n\n values[name] = values[name] || {};\n values[name][permission.action] = permission.authorized;\n values[name][permission.action.toLowerCase()] = permission.authorized;\n\n if (permission.resourceFilters && permission.resourceFilters.length) {\n if (!values[name]['resourceFilters']) {\n values[name]['resourceFilters'] = [];\n }\n\n permission.resourceFilters.forEach((resourceFilter) => {\n values[name]['resourceFilters'].push(resourceFilter);\n });\n }\n });\n\n return values;\n })\n );\n }\n\n // v1\n get(resource: string = '') {\n if (!promise) {\n promise = this.getPermissions();\n }\n return from(promise).pipe(\n map((permissions: Permission[]) => {\n this.checkedPermissions = permissions;\n\n if (resource) {\n const resourceKey = Object.keys(permissions).find(key => key.toLowerCase() === resource.toLowerCase());\n return permissions[resourceKey];\n }\n return permissions;\n }),\n catchError((err: any) => {\n promise = undefined;\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant('permission_error_summary'),\n detail: this.translate.instant('permission_error_detail')\n });\n\n return of(this.getPermissionObject(false));\n })\n );\n }\n\n isAuthorized(resourceName: string, action: string, isEntity?: boolean): boolean {\n if (!this.checkedPermissions.length) {\n throwError('\\'Permissions\\' are not defined. You should call \\'get\\' or \\'checkAccess\\' method first.');\n }\n\n const resourceUri = this.getUriByResourceName(resourceName, isEntity);\n\n const permissionsOfResource = this.checkedPermissions.filter(perm => perm.resource === resourceUri);\n const permissionOfAction = permissionsOfResource.find(permRec => permRec.action.toLowerCase() === action.toLowerCase());\n\n return permissionOfAction && permissionOfAction.authorized;\n }\n\n private getUriByResourceName(resourceName: string, isEntity?: boolean): string {\n const { domain, service } = this.environment;\n\n if (!domain || !service) {\n throwError('You must inform domain and service name');\n }\n\n const uriBase = `res://senior.com.br/${domain}/${service}`;\n\n if (isEntity) {\n return `${uriBase}/entities/${resourceName}`;\n } else {\n return `${uriBase}/${resourceName}`;\n }\n }\n\n /**\n * Valida com base nas propriedade redirectToError e actionsToCheck\n * se a ação de um recurso deve enviar para a página de erro caso não tenha autorização\n */\n private shouldRedirectToForbiddenPage(resources: Resource[] = [], permissions: Permission[]): boolean {\n const permissionsDenied = permissions.filter(perm => !perm.authorized);\n\n if (permissionsDenied && permissionsDenied.length) {\n const resourcesToCheck = resources.filter(resource => resource.redirectToError);\n\n if (resourcesToCheck && resourcesToCheck.length) {\n return resourcesToCheck.every(resource => {\n const actionsToCheck = resource.actionsToCheck && resource.actionsToCheck.length ? resource.actionsToCheck : resource.actions;\n\n return actionsToCheck.every(action =>\n permissionsDenied.some(permissionDenied => permissionDenied.resource === resource.uri && permissionDenied.action === action)\n );\n });\n }\n\n return false;\n }\n\n return false;\n }\n\n private getFlatEnvironment() {\n return this.environment.ignorePermissions;\n }\n\n private getFlatResources() {\n return this.resources.reduce((result: Resource[], item: any) => {\n if (!item) {\n return result;\n }\n\n if (Array.isArray(item)) {\n return [...result, ...item];\n }\n\n return [...result, item];\n }, []);\n }\n\n private getPermissionObject(defaultValue: boolean) {\n return this.getFlatResources().reduce((resources: object, resource: Resource) => {\n resources[resource.name] = resource.actions.reduce((actions: any, action: any) => {\n actions[action] = defaultValue;\n actions[action.toLowerCase()] = defaultValue;\n return actions;\n }, {});\n return resources;\n }, {});\n }\n\n private async getPermissions() {\n if (this.getFlatEnvironment()) {\n return this.getPermissionObject(true);\n }\n const resources = this.getFlatResources();\n const perm = resources\n .map(resource => resource.actions.map((action: any) => ({ action: action, resource: resource.uri })))\n .reduce((acc: any, val: any) => [...acc, ...val]);\n\n const permissions: any[] = await this.http\n .post<any>(`${this.actionUrl}/checkAccess`, {\n includeFilters: false,\n permissions: perm\n })\n .toPromise()\n .then(response => response.permissions);\n\n const values = {};\n\n permissions.forEach((permission: any) => {\n const resource = resources.find((res: any) => res.uri === permission.resource);\n const { name } = resource;\n values[name] = values[name] ? values[name] : {};\n values[name][permission.action] = permission.authorized;\n values[name][permission.action.toLowerCase()] = permission.authorized;\n });\n return values;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { Resource, RESOURCES, ENVIRONMENT, Environment } from './permissions.config';\nimport { PermissionsService } from './permissions.service';\n\n@NgModule()\nexport class PermissionsModule {\n public static forRoot(resources: Resource[], environment: Environment): ModuleWithProviders<PermissionsModule> {\n return {\n ngModule: PermissionsModule,\n providers: [\n PermissionsService,\n {\n provide: RESOURCES,\n multi: true,\n useValue: resources\n },\n {\n provide: ENVIRONMENT,\n multi: false,\n useValue: environment\n }\n ]\n };\n }\n\n public static forChild(resources: Resource[]): ModuleWithProviders<PermissionsModule> {\n return {\n ngModule: PermissionsModule,\n providers: [\n {\n provide: RESOURCES,\n multi: true,\n useValue: resources\n }\n ]\n };\n }\n}\n","export function ResourceFactory({ domain, service, resource }: { domain: string; service: string; resource: string }) {\n return `res://senior.com.br/${domain}/${service}/${resource}`;\n}\nfunction endpointFactoryFunction(domain: string, service: string) {\n // The @seniorsistemas/platform-components http interceptor is handling the base url portion of the final URL\n const create = (method: string, endpoint: string) => `${domain}/${service}/${method}/${endpoint}`;\n const resource = (resource: string) => ResourceFactory({ domain, service, resource });\n return {\n resource,\n query: create.bind(null, 'queries'),\n action: create.bind(null, 'actions'),\n signal: create.bind(null, 'signals'),\n entity(entity: string) {\n const URL = create('entities', entity);\n return {\n create: () => URL,\n update: (id: string) => URL + '/' + id,\n remove: (id: string) => URL + '/' + id\n };\n }\n };\n}\n\nexport const endpointFactory = endpointFactoryFunction;\n// ADD HERE YOUR NEW ENDPOINT\nexport const PLATFORM_FEATURE_TOGGLE = endpointFactoryFunction('platform', 'feature_toggle');\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, from, of } from 'rxjs';\nimport { Feature, GetEnabledFeaturesOutput } from './models/feature';\nimport { map, shareReplay, catchError, mergeMap } from 'rxjs/operators';\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport { PLATFORM_FEATURE_TOGGLE } from './constants/endpoint.constant';\n\n@Injectable({ providedIn: 'root' })\nexport class FeatureToggleService {\n constructor(private http: HttpClient) {}\n\n cache: { [key: string]: Observable<Feature[]> } = {};\n\n isEnabled({ domain, service, name }: Feature, tenant?: string): Observable<boolean> {\n let tenantObs;\n if (tenant) {\n tenantObs = of(tenant);\n } else {\n tenantObs = from(user.getUserData()).pipe(map(userData => userData.tenantName));\n }\n return tenantObs.pipe(\n mergeMap(tenant => {\n const key = JSON.stringify({ tenant, domain, service });\n if (!this.cache[key]) {\n this.cache[key] = this.http\n .post<GetEnabledFeaturesOutput>(PLATFORM_FEATURE_TOGGLE.query('getEnabledFeatures'), { tenant, domain, service })\n .pipe(\n map(output => output.features),\n shareReplay(1),\n catchError(err => {\n console.error(err);\n delete this.cache[key];\n return of([]);\n })\n );\n }\n return this.cache[key];\n }),\n map((features: Feature[]) => {\n return features.findIndex(f => f.name === name) !== -1;\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FeatureToggleService } from './feature-toggle.service';\nimport { HttpInterceptorModule } from '../http-interceptor/http-interceptor.module';\n\n@NgModule({\n imports: [HttpClientModule, HttpInterceptorModule],\n providers: [FeatureToggleService]\n})\nexport class FeatureToggleModule {}\n","export enum UserAction {\n CONFIRMED = 'CONFIRMED',\n POSTPONED = 'POSTPONED',\n REFUSED = 'REFUSED'\n}\n","import { SpotlightNotification } from './../models/spotlight-notification.interface';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n SpotlightScreenList,\n SpotlightUsersList,\n SpotlightControlList,\n SpotlightUser,\n SpotlightControl\n} from '../models/index';\n\n@Injectable()\nexport class SpotlightService {\n constructor(private http: HttpClient) {}\n\n private API_URL = 'platform/spotlight/';\n\n public getUser(): Promise<any> {\n return this.http.post<any>('platform/user/queries/getUser', {}).toPromise();\n }\n\n public listSpotlightScreen(): Observable<SpotlightScreenList> {\n return this.http.get<SpotlightScreenList>(this.API_URL + 'queries/listSpotlightScreen');\n }\n\n public listSpotlightUsers(): Promise<SpotlightUsersList> {\n return this.http.get<SpotlightUsersList>(this.API_URL + 'queries/listSpotlightUsers').toPromise();\n }\n\n public listSpotlightControl(): Promise<SpotlightControlList> {\n return this.http.get<SpotlightControlList>(this.API_URL + 'queries/listSpotlightControl').toPromise();\n }\n\n public saveSpotlightUser(content: SpotlightUser) {\n return this.http.post<SpotlightUser>(this.API_URL + 'actions/saveSpotlightUsers', { content });\n }\n\n public saveSpotlightControl(content: SpotlightControl) {\n return this.http.post<SpotlightControl>(this.API_URL + 'actions/saveSpotlightControl', { content });\n }\n\n public notificateSpotlight(content: SpotlightNotification) {\n return this.http.post<SpotlightNotification>(this.API_URL + 'actions/notificateSpotlight', content);\n }\n}\n","export enum EnumDisplayType {\n ADVERSITING = 'ADVERSITING',\n INTEGRATION = 'INTEGRATION'\n}\n","import { EnumSpotlightStatus } from './spotlight-status.enum';\n\nexport class SpotlightControl {\n id?: string;\n spotlightId: string;\n status: EnumSpotlightStatus;\n firstUser?: string;\n createdBy?: string;\n createdDate?: string;\n lastModifiedBy?: string;\n lastModifiedDate?: string;\n}","export enum EnumSpotlightStatus {\n ACTIVE = 'ACTIVE',\n IN_PROGRESS = 'IN_PROGRESS',\n NO_STARTED = 'NO_STARTED',\n REFUSED = 'REFUSED'\n}\n","import { UserAction } from './../models/user-action.enum';\nimport { SpotlightNotification } from './../models/spotlight-notification.interface';\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { SpotlightService } from '../service/spotlight.service';\nimport {\n Spotlight,\n SpotlightScreen,\n EnumDisplayType,\n EnumSpotlightStatus,\n SpotlightControlList,\n SpotlightUsersList,\n SpotlightUser,\n SpotlightControl\n} from '../models/index';\nimport { DatePipe } from '@angular/common';\nimport { CookieService } from 'ngx-cookie-service';\n\n@Component({\n selector: 's-spotlight',\n templateUrl: './spotlight.component.html',\n styleUrls: ['./spotlight.component.scss']\n})\nexport class SpotlightComponent implements OnInit {\n\n constructor(\n private spotlightService: SpotlightService,\n private cookieService: CookieService,\n private datePipe: DatePipe\n ) {}\n\n public header: string;\n public imgUrl: string;\n public primaryButtonLabel: string;\n public primaryButtonTooltip: string;\n public canAppear = false;\n\n private currentUser: string;\n private spotlightUsersList: SpotlightUsersList;\n private spotlightControlsList: SpotlightControlList;\n private spotlightScreen: SpotlightScreen;\n private canEmitEvent: boolean;\n\n @Input()\n public visible = false;\n\n @Input()\n public menuId: string;\n\n @Input()\n public fade = false;\n\n @Output()\n public visibleChange = new EventEmitter<boolean>();\n\n async ngOnInit() {\n await this.setValues();\n this.fetchSpotlight();\n }\n\n private async setValues() {\n const userData: any = JSON.parse(this.cookieService.get('com.senior.token'));\n this.currentUser = userData.username;\n this.spotlightUsersList = await this.spotlightService.listSpotlightUsers();\n this.spotlightControlsList = await this.spotlightService.listSpotlightControl();\n }\n\n private setValuesInSpotlight(values: Spotlight): void {\n this.header = values.spotlightTitle;\n this.imgUrl = values.bannerUrl;\n this.primaryButtonLabel = values.primaryButtonLabel;\n this.primaryButtonTooltip = values.primaryButtonHint;\n }\n\n private getShowDate(days: number): string {\n const currentDate = new Date();\n return this.datePipe.transform(currentDate.setDate(currentDate.getDate() + days).toString(), 'yyyy-MM-dd');\n }\n\n private fetchSpotlight(): void {\n this.spotlightService.listSpotlightScreen().subscribe(value => {\n this.spotlightScreen = value.contents.filter(val => val.screenMenuId === this.menuId)[0];\n if (this.spotlightScreen) {\n this.showSpotlight(this.spotlightScreen.spotlight);\n }\n });\n }\n\n private showSpotlight(spotlight: Spotlight): void {\n if (this.validateDate(spotlight.initialDate) && this.validateFinalDate(spotlight.finalDate) && this.validateSpotlight(spotlight)) {\n this.setValuesInSpotlight(spotlight);\n this.canAppear = true;\n const control = this.getSpotlightControlFromList(this.spotlightScreen.spotlight.id);\n this.canEmitEvent = !control || this.currentUser !== control.firstUser;\n }\n }\n\n private validateDate(date: string): boolean {\n if (date) {\n const currentDate = this.datePipe.transform(new Date().toString(), 'yyyy-MM-dd');\n const initialDate = this.datePipe.transform(date, 'yyyy-MM-dd');\n\n return currentDate >= initialDate;\n }\n return false;\n }\n\n private validateFinalDate(date: string): boolean {\n if (date) {\n const currentDate = this.datePipe.transform(new Date().toString(), 'yyyy-MM-dd');\n const finalDate = this.datePipe.transform(date, 'yyyy-MM-dd');\n\n return currentDate <= finalDate;\n }\n return true;\n }\n\n private validateSpotlight(spotlight: Spotlight): boolean {\n if (!this.validateControlsList(this.spotlightControlsList, spotlight, this.currentUser)) {\n return false;\n }\n if (!this.validateDisplayType(spotlight, this.spotlightUsersList, this.spotlightControlsList, this.currentUser)) {\n return false;\n }\n return true;\n }\n\n private validateControlsList(controlsList: SpotlightControlList, spotlight: Spotlight, currentUser: string): boolean {\n if (controlsList.totalElements) {\n\n const notCompatibleControls = controlsList.contents.filter(control => {\n if (control.status === EnumSpotlightStatus.ACTIVE) {\n return control.spotlightId === spotlight.id;\n\n } else if (control.status === EnumSpotlightStatus.IN_PROGRESS) {\n return control.spotlightId === spotlight.id && control.firstUser !== currentUser;\n }\n });\n\n if (notCompatibleControls.length > 0) {\n return false;\n }\n }\n return true;\n }\n\n private validateDisplayType(\n spotlight: Spotlight,\n usersList: SpotlightUsersList,\n controlsList: SpotlightControlList,\n currentUser: string\n ): boolean {\n\n switch (spotlight.displayType) {\n case EnumDisplayType.ADVERSITING:\n return usersList.totalElements ? this.validateUser(usersList.contents, spotlight) : true;\n\n case EnumDisplayType.INTEGRATION:\n\n if (controlsList.totalElements) {\n const compatibleControls = controlsList.contents.filter(control => {\n\n switch (control.status) {\n\n case EnumSpotlightStatus.NO_STARTED:\n return control.spotlightId === spotlight.id;\n\n case EnumSpotlightStatus.REFUSED:\n return usersList.totalElements ? this.validateUser(usersList.contents, spotlight) : true;\n\n case EnumSpotlightStatus.IN_PROGRESS:\n return control.firstUser === currentUser\n && control.spotlightId === spotlight.id;\n }\n });\n if (compatibleControls.length === 0) {\n return false;\n }\n }\n return true;\n }\n }\n\n private validateUser(users: SpotlightUser[], spotlight: Spotlight): boolean {\n let spotlightUsers = users.filter(user => user.spotlightId === spotlight.id);\n\n if (!spotlightUsers.length) {\n spotlightUsers = users.filter(user => user.userOperation === this.currentUser);\n\n return spotlightUsers.length === 0;\n }\n\n const compatibleUserToValidate = spotlightUsers.filter(user => user.userOperation === this.currentUser)[0];\n\n return compatibleUserToValidate ? this.validateDate(compatibleUserToValidate.showDate) : true;\n }\n\n private saveSpotlightUser(days?: number): void {\n\n const spotlight = this.spotlightScreen.spotlight;\n\n const user = this.spotlightUsersList.contents.filter(val => {\n return val.spotlightId === spotlight.id\n && val.userOperation === this.currentUser;\n })[0];\n\n let spotlightUser: SpotlightUser = {\n spotlightId: spotlight.id,\n showDate: days ? this.getShowDate(days) : null,\n userOperation: this.currentUser\n };\n\n if (user) {\n spotlightUser = {\n id: user.id,\n ...spotlightUser\n };\n }\n this.spotlightService.saveSpotlightUser(spotlightUser).subscribe();\n }\n\n public onPrimary() {\n const spotlight = this.spotlightScreen.spotlight;\n const notification = this.buildNotification(UserAction.CONFIRMED);\n\n this.saveSpotlightControl();\n this.saveSpotlightUser();\n\n if (this.canEmitEvent) {\n this.spotlightService.notificateSpotlight(notification).subscribe();\n }\n\n if (spotlight.primaryButtonUrl) {\n window.open(spotlight.primaryButtonUrl);\n }\n\n this.close();\n }\n\n public onSecondary(): void {\n const notification = this.buildNotification(UserAction.POSTPONED);\n\n this.saveSpotlightControl(EnumSpotlightStatus.REFUSED);\n this.saveSpotlightUser(this.spotlightScreen.spotlight.daysRememberLate);\n this.spotlightService.notificateSpotlight(notification).subscribe();\n\n this.close();\n }\n\n public onTertiary(): void {\n const notification = this.buildNotification(UserAction.REFUSED);\n\n this.saveSpotlightControl(EnumSpotlightStatus.REFUSED);\n this.saveSpotlightUser(this.spotlightScreen.spotlight.daysNotInterested);\n this.spotlightService.notificateSpotlight(notification).subscribe();\n\n this.close();\n }\n\n /**\n * Verifica se um registro de usuário pertence ao usuário logado e corresponde ao spotlight atual\n * @param user SpotlightUser Objeto representando o registro do usuário para uma spotlight\n * @param spotlight Spotlight Spotlight\n * @returns boolean true se corresponder ao spotlight atual, false caso contrário\n */\n private hasThisRegister(user: SpotlightUser, spotlight: Spotlight): boolean {\n return (user.spotlightId === spotlight.id && user.userOperation === this.currentUser);\n }\n\n /**\n * Verifica se um registro de usuário pertece ao usuário logado, mas não corresponde ao spotlight atual\n * @param user SpotlightUser Objeto representando o registro do usuário para uma spotlight\n * @param spotlight Spotlight Spotlight\n * @returns boolean true se corresponder ao spotlight atual, false caso contrário\n */\n private hasAnotherRegister(user: SpotlightUser, spotlight: Spotlight): boolean {\n return user.spotlightId !== spotlight.id && user.userOperation === this.currentUser;\n }\n\n /**\n * Persiste um novo registro de controle para o spotlight atual se\n * não for encontrado nenhum na lista de controles carregada inicialmente\n * @param status EnumSpotlightStatus Status do controle do spotlight. Se nenhum for informado, IN_PROGRESS será aplicado\n * @returns SpotlightControl Controle do spotlight recuperado/pesistido\n */\n private saveSpotlightControl(status = EnumSpotlightStatus.IN_PROGRESS): SpotlightControl {\n const spotlight = this.spotlightScreen.spotlight;\n let control: SpotlightControl = this.getSpotlightControlFromList(spotlight.id);\n\n if (!control) {\n control = {\n spotlightId: spotlight.id,\n status: status,\n firstUser: this.currentUser\n };\n }\n\n if (this.isNewControl(control) || control.status !== EnumSpotlightStatus.IN_PROGRESS) {\n control.status = status;\n control.firstUser = status === EnumSpotlightStatus.IN_PROGRESS ? this.currentUser : '';\n this.spotlightService.saveSpotlightControl(control).subscribe();\n }\n\n return control;\n }\n\n /**\n * Retorna o controle de spotlight correspondente ao identificador\n * informado na lista de controles carregada na inicialização do componente\n * @param id string Identificador do controle de spotlight\n */\n private getSpotlightControlFromList(id: string): SpotlightControl {\n return this.spotlightControlsList.contents.filter(val => val.spotlightId === id)[0];\n }\n\n /**\n * Verifica se o controle de spotlight informado não foi registrado ainda\n * @param spotlightControl SpotlightControl Controle do spotlight\n * @returns boolean true se ainda não foi registrado na base, false caso contrário\n */\n private isNewControl(spotlightControl: SpotlightControl): boolean {\n return !this.spotlightControlsList.contents.includes(spotlightControl);\n }\n\n /**\n * Retorna um objeto de notificação referente ao botão clicado pelo usuário.\n * @param userAction UserAction Ação realizada pelo usuário ao clicar nos botões da modal\n * @returns SpotlightNotification Objeto de notificação\n */\n private buildNotification(userAction: UserAction): SpotlightNotification {\n const spotlight = this.spotlightScreen.spotlight;\n\n return {\n clickedButton: userAction,\n spotlightControlId: spotlight.id,\n primaryButtonUrl: spotlight.primaryButtonUrl\n };\n }\n\n public close(): void {\n this.visibleChange.emit(false);\n }\n}\n","export const fallback: any = {\n\n 'platform.spotlight.no_interest' : 'Não tenho interesse',\n 'platform.spotlight.remember_late' : 'Lembrar mais tarde'\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'translate',\n pure: false,\n })\n export class TranslatePipe implements PipeTransform {\n constructor(private translationService: TranslateService) {}\n transform(value: any): any {\n return this.translationService.instant(value);\n }\n }\n","import { NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\n\nimport { ButtonModule } from 'primeng/button';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { HttpInterceptorModule } from '../http-interceptor/http-interceptor.module';\nimport { TranslationsModule } from '../translations/translations.module';\nimport { SpotlightComponent } from './component/spotlight.component';\nimport { SpotlightService } from './service/spotlight.service';\nimport { fallback } from './locale/fallback';\nimport { TranslatePipe } from './pipes/translate.pipe';\nimport { CookieService } from 'ngx-cookie-service';\n\n@NgModule({\n imports: [\n ButtonModule,\n TooltipModule,\n CommonModule,\n HttpInterceptorModule,\n TranslationsModule.forChild([{domain: 'platform', service: 'spotlight', fallback}]),\n ],\n providers: [\n SpotlightService,\n DatePipe,\n CookieService\n ],\n declarations: [\n SpotlightComponent,\n TranslatePipe],\n exports: [SpotlightComponent]\n})\nexport class SpotlightModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {FormFilterComponent as ɵc} from './modules/advanced-filter/components/form-filter/form-filter.component';\nexport {fallback as ɵa} from './modules/advanced-filter/locale/fallback';\nexport {MapValuesPipe as ɵd} from './modules/advanced-filter/pipes/map-values.pipe';\nexport {TranslatePipe as ɵe} from './modules/advanced-filter/pipes/translate.pipe';\nexport {CalendarOptionsService as ɵb} from './modules/advanced-filter/services/calendar-options.service';\nexport {CyclicJsonInterceptor as ɵf} from './modules/cyclic-json-interceptor/cyclic-json-interceptor.service';\nexport {HttpInterceptor as ɵg} from './modules/http-interceptor/http-interceptor.service';\nexport {ENVIRONMENT as ɵi,Environment as ɵk,RESOURCES as ɵh,Resources as ɵj} from './modules/permissions/permissions.config';\nexport {fallback as ɵl} from './modules/spotlight/locale/fallback';\nexport {TranslatePipe as ɵn} from './modules/spotlight/pipes/translate.pipe';\nexport {SpotlightService as ɵm} from './modules/spotlight/service/spotlight.service';"],"names":["DATE","DATETIME","TIME","parsers","dateParser","TRANSLATE_PREFIX","rxFilter","BehaviorSubject","PrimeNGButtonModule","jc","fallback","TranslatePipe","ButtonModule"],"mappings":"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"}