@seniorsistemas/platform-components 6.0.0 → 6.0.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,4 +1,3 @@
1
- /// <reference path="./json-cycle.d.ts" />
2
1
  export * from './modules/advanced-filter/index';
3
2
  export * from './modules/cyclic-json-interceptor/index';
4
3
  export * from './modules/http-interceptor/index';
@@ -7,4 +6,4 @@ export * from './modules/permissions/permissions.service';
7
6
  export * from './modules/translations/translations.module';
8
7
  export * from './modules/feature-toggle/index';
9
8
  export * from './modules/spotlight/index';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFFMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vanNvbi1jeWNsZS5kLnRzXCIgLz5cblxuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGVzL2FkdmFuY2VkLWZpbHRlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZXMvY3ljbGljLWpzb24taW50ZXJjZXB0b3IvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGVzL2h0dHAtaW50ZXJjZXB0b3IvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGVzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZXMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZXMvdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGVzL2ZlYXR1cmUtdG9nZ2xlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxlcy9zcG90bGlnaHQvaW5kZXgnO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZHVsZXMvYWR2YW5jZWQtZmlsdGVyL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxlcy9jeWNsaWMtanNvbi1pbnRlcmNlcHRvci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZXMvaHR0cC1pbnRlcmNlcHRvci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZXMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxlcy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxlcy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZXMvZmVhdHVyZS10b2dnbGUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGVzL3Nwb3RsaWdodC9pbmRleCc7XG4iXX0=
@@ -2422,8 +2422,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2422
2422
  }]
2423
2423
  }] });
2424
2424
 
2425
- /// <reference path="./json-cycle.d.ts" />
2426
-
2427
2425
  /**
2428
2426
  * Generated bundle index. Do not edit.
2429
2427
  */
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-platform-components.mjs","sources":["../../lib/src/modules/advanced-filter/pipes/map-values.pipe.ts","../../lib/src/modules/advanced-filter/pipes/translate.pipe.ts","../../lib/src/modules/translations/translations.module.ts","../../lib/src/modules/advanced-filter/locale/fallback.ts","../../lib/src/modules/advanced-filter/services/constants.ts","../../lib/src/modules/advanced-filter/shared/constants.ts","../../lib/src/modules/advanced-filter/services/advanced-filter.service.ts","../../lib/src/modules/advanced-filter/models/filter.ts","../../lib/src/modules/advanced-filter/models/filter-type.ts","../../lib/src/modules/advanced-filter/models/scope.ts","../../lib/src/modules/advanced-filter/models/form-filter.ts","../../lib/src/modules/advanced-filter/models/tab-view.ts","../../lib/src/modules/advanced-filter/utils/filter-id/index.ts","../../lib/src/modules/advanced-filter/utils/filter-value/index.ts","../../lib/src/modules/advanced-filter/utils/json-path.ts","../../lib/src/modules/advanced-filter/utils/filterOperators.ts","../../lib/src/modules/advanced-filter/utils/index.ts","../../lib/src/modules/advanced-filter/utils/form-field/index.ts","../../lib/src/modules/advanced-filter/utils/comparator.ts","../../lib/src/modules/advanced-filter/services/calendar-options.service.ts","../../lib/src/modules/advanced-filter/components/form-filter/form-filter.component.ts","../../lib/src/modules/advanced-filter/components/form-filter/form-filter.component.html","../../lib/src/modules/advanced-filter/components/advanced-filter/advanced-filter.component.ts","../../lib/src/modules/advanced-filter/components/advanced-filter/advanced-filter.component.html","../../lib/src/modules/advanced-filter/advanced-filter.module.ts","../../lib/src/modules/cyclic-json-interceptor/cyclic-json-interceptor.service.ts","../../lib/src/modules/cyclic-json-interceptor/cyclic-json-interceptor.module.ts","../../lib/src/modules/http-interceptor/rest-url.service.ts","../../lib/src/modules/http-interceptor/x-services-url.service.ts","../../lib/src/modules/http-interceptor/http-interceptor.service.ts","../../lib/src/modules/http-interceptor/http-interceptor.module.ts","../../lib/src/modules/permissions/permissions.config.ts","../../lib/src/modules/permissions/permissions.service.ts","../../lib/src/modules/permissions/permissions.module.ts","../../lib/src/modules/feature-toggle/constants/endpoint.constant.ts","../../lib/src/modules/feature-toggle/feature-toggle.service.ts","../../lib/src/modules/feature-toggle/feature-toggle.module.ts","../../lib/src/modules/spotlight/models/user-action.enum.ts","../../lib/src/modules/spotlight/service/spotlight.service.ts","../../lib/src/modules/spotlight/models/display-type.enum.ts","../../lib/src/modules/spotlight/models/spotlight-control.interface.ts","../../lib/src/modules/spotlight/models/spotlight-status.enum.ts","../../lib/src/modules/spotlight/pipes/translate.pipe.ts","../../lib/src/modules/spotlight/component/spotlight.component.ts","../../lib/src/modules/spotlight/component/spotlight.component.html","../../lib/src/modules/spotlight/locale/fallback.ts","../../lib/src/modules/spotlight/spotlight.module.ts","../../lib/src/public-api.ts","../../lib/src/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, inject } 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 private readonly translationService = inject(TranslateService);\n\n transform(value: any, args?: any): any {\n return this.translationService.instant(value);\n }\n }\n","import { LOCATION_INITIALIZED } from '@angular/common';\nimport { HttpClient, HttpHeaders, HttpParams, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { APP_INITIALIZER, InjectionToken, Injector, NgModule, ModuleWithProviders } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport { CookieService } from 'ngx-cookie-service';\n\ninterface TranslateServiceExtended extends TranslateService {\n overriden: any;\n}\n\nexport const TranslationsConfig = new InjectionToken<ITranslationsConfig[]>('translationConfig');\nexport const USER_INFO = 'com.senior.token';\nexport const LENGTH_DEFAULT = 2;\n@NgModule({ imports: [TranslateModule.forChild()], providers: [CookieService, provideHttpClient(withInterceptorsFromDi())] })\nexport class TranslationsModule {\n static forRoot(translationsConfigs: ITranslationsConfig[]): ModuleWithProviders<TranslationsModule> {\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<TranslationsModule> {\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\nfunction resolveImmediately(resolve: () => void) {\n resolve();\n}\n\nfunction resolveAfterTranslate(\n translate: TranslateService,\n locale: string,\n resolve: () => void\n) {\n translate.use(locale).toPromise().then(() => resolve());\n}\n\nexport function factory(\n translate: TranslateService,\n injector: Injector,\n http: HttpClient,\n cookieService: CookieService\n) {\n async function performInit(): Promise<{ success: boolean; locale: string }> {\n let locale = 'pt-BR';\n\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 locale = getLocale(userData);\n } catch (ex) {\n console.warn('Unable to obtain user locale');\n }\n\n const fallback = configs.reduce(\n (result: any, cfg: ITranslationsConfig) => ({ ...result, ...cfg.fallback }),\n {}\n );\n\n const defaultsLanguages = configs.reduce(\n (result: any, cfg: ITranslationsConfig) => ({ ...result, ...cfg.defaultsLanguages }),\n {}\n );\n\n translate.setTranslation(locale, fallback);\n translate.setDefaultLang(locale);\n\n let configTranslate: any = {};\n if (defaultsLanguages) {\n configTranslate = getConfigTranslate(defaultsLanguages, locale);\n }\n\n const translationsPromises = configs.map((config: any) =>\n getTranslationsRequest(config, locale)\n );\n\n await Promise.all(translationsPromises).then((results) => {\n const usedFallback = (translate as TranslateServiceExtended)?.overriden;\n\n results.forEach((file, index) => {\n setTranslations(\n file['content'],\n usedFallback,\n locale,\n index,\n configTranslate.fallbackByLocale\n );\n });\n\n return translate.use(locale).toPromise();\n });\n\n return { success: true, locale };\n } catch (_err) {\n return { success: false, locale };\n }\n }\n\n return () => new Promise<void>((resolve) => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n\n locationInitialized\n .then(() => performInit())\n .then(({ success, locale }) => {\n if (success) {\n resolveImmediately(resolve);\n } else {\n resolveAfterTranslate(translate, locale, resolve);\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: any = {};\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`;\nexport const GET_FILTERS_BY_TICKET = `${URL_PREFIX}/queries/getFiltersByTicket`;\n","export const searchDisplayName = '$$__displayValue__';\nexport const searchKeyName = '$$__keyValue__';\n","import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { GET_FILTERS_URL, SAVE_FILTERS_URL, SAVE_TICKED_FILTER_URL } from './constants';\nimport { Subject, Observable, BehaviorSubject } 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 readonly http = inject(HttpClient);\n private readonly allowedOrigin = window.location.origin;\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() {\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 next: ticketFilter => {\n this.ticketFilter = ticketFilter;\n this.ticketFilterObservable.next({ ticketFilter });\n // NOSONAR\n window.parent.postMessage(\n { message: 'advanced-filter:success', payload: ticketFilter },\n this.allowedOrigin\n );\n },\n error: err => {\n this.ticketFilterObservable.next({ error: true, message: err });\n // NOSONAR\n window.parent.postMessage(\n { message: 'advanced-filter:error', payload: err },\n this.allowedOrigin\n );\n }\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/dynamic-form';\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","// NOSONAR\nimport * as momentNs from \"moment\";\nimport { FilterType } from '../../models';\n\n/**\n *@description Necessary because of https://github.com/rollup/rollup/issues/670\n *\n * */\nconst moment = (momentNs as any).default || momentNs;\nconst { DATETIME, TIME, DATE } = FilterType;\n\ntype ParserFn = (value: any) => any;\n\nconst parsers: Partial<Record<FilterType, ParserFn>> = {\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(obj: Record<string, any> | undefined, path: string): any {\n if (!obj || !path) {\n return undefined;\n }\n\n const parts = path.replace(/^\\$\\./, '').split('.');\n const current = parts[0];\n const value = obj[current];\n\n if (parts.length > 1) {\n return jsonPath(value, parts.slice(1).join('.'));\n }\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","/* sonar-ignore */\nimport * as momentNs from \"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 moment = (momentNs as any).default || momentNs;\nconst { DATE, DATETIME, TIME } = FilterType;\n\ntype ParserFn = (v: string) => any;\n\nconst parsers: Partial<Record<FilterType, ParserFn>> = {\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: Record<string, (value: any, otherValue: any) => boolean> = {\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, inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nconst TRANSLATE_PREFIX = 'platform.filter_service';\n\n@Injectable()\nexport class CalendarOptionsService {\n private readonly translate = inject(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 { ToastService } from \"@seniorsistemas/angular-components/toast\";\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, inject } 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/dynamic-form';\n\nimport { searchDisplayName, searchKeyName } from '../../shared/constants';\nimport { TranslateService } from '@ngx-translate/core';\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 private readonly filterService = inject(AdvancedFilterService);\n translate = inject(TranslateService);\n private readonly toastService = inject(ToastService);\n private readonly calendarOptionsService = inject(CalendarOptionsService);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n destroy$ = new Subject();\n errorState: HttpErrorResponse;\n tabs: Map<string, ContextTab>;\n contexts: Context[] = [];\n formFilters: FormFilter[] = [];\n oldFormFilters: FormFilter[] = [];\n actualFormFilters: any[] = [];\n general = new TabView({ name: 'Geral' });\n totalFiltersActive = 0;\n isMobile = false;\n tabViewOrientation = 'left';\n error = false;\n activeIndex = 0;\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 @Input() contextId = '';\n\n\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 @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(): boolean {\n if (!this.oldFormFilters?.length) {\n return true;\n }\n\n const filtered = this.formFilters.filter((currentFilter, index) => {\n const oldFilter = this.oldFormFilters[index];\n const oldValue = oldFilter ? oldFilter.value : undefined;\n return !equals(currentFilter.value, oldValue);\n });\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\n this.filterService.saveTickedFilters(filters);\n } else if (showToast) {\n const message = {\n severity: 'info',\n duration: TOAST_LIFE,\n text: 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: any) {\n if (this.showMessages) {\n this.toastService.show(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(forceSave = false) {\n const filters = this.parseToUserFilters(this.formFilters);\n const savedFilterSuccess = () => {\n if (!forceSave) {\n const message = {\n severity: 'info',\n duration: TOAST_LIFE,\n text: this.translate.instant(`${TRANSLATE_PREFIX}.saved_filters_success`, { activeFilters: this.totalFiltersActive })\n };\n this.sendMessage(message);\n }\n\n this.counterUpdate();\n };\n\n const savedFiltersError = () => {\n const message = {\n severity: 'error',\n duration: TOAST_LIFE,\n text: this.translate.instant(`${TRANSLATE_PREFIX}.saved_filters_error`, { activeFilters: this.totalFiltersActive })\n };\n\n this.sendMessage(message);\n };\n\n this.filterService\n .saveFilters(filters)\n .subscribe(savedFilterSuccess, savedFiltersError);\n }\n\n saveFiltersWithCallbackFunction(callbackFunction: any) {\n const filters = this.parseToUserFilters(this.formFilters);\n\n this.filterService\n .saveFilters(filters)\n .subscribe(callbackFunction);\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 return filters.reduce((all, filter) => {\n const { type, services, name, value, domain, contexts } = filter as unknown 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 }, [] as any[]);\n }\n\n private getFiltersValues(filters: FormFilter[]) {\n const filtersAsObject = filters as unknown as { [key: string]: Filter };\n const ids = Object.keys(filtersAsObject);\n\n return ids.reduce((all, filterId) => {\n const { type, services, name, value, domain } = filtersAsObject[filterId];\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.createForm(filters, applyFilter)\n }\n });\n }\n\n private createForm(filters: any, applyFilter: any) {\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 private setDependencies(filters: FormFilter[]) {\n const filtersMap: Record<string, FormFilter> = {};\n filters.forEach(f => {\n const id = getFilterId(f.domain, f.name);\n filtersMap[id] = f;\n });\n\n const names = Object.keys(filtersMap);\n\n const dependencies = from(names).pipe(\n map(key => filtersMap[key]),\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 = filtersMap[id];\n\n if (!formFilter) {\n return true;\n }\n\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 => filtersMap[filterId]),\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 as any]) {\n const type = this.formFilters[filterId as any].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 return true;\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 as any].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 */\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 as any] = new FormFilter(filterConfig);\n const formFilter = this.formFilters[filterId as any];\n if (scope === Scope.DOMAIN && this.containsAllContexts(contexts)) {\n this.addGeneralField(filter);\n }\n\n contexts.forEach(contextId => {\n if ((contextId === this.contextId) || (this.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\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\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 as any];\n childs && childs.forEach((child: any) => this.cleanFieldAndSetDefaultValue(child.filter.key));\n generalFieldControl && generalFieldControl.setValue(value, controlOpts);\n this.formFilters[filterId as any].value = fieldValue;\n }\n\n private cleanFieldAndSetDefaultValue(key: string) {\n const { isMultiple, defaultValue, filterControl, type } = this.formFilters[key as any];\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 as any];\n dependsOn.forEach((field: any) => {\n const filterId = getFilterId(domain, field.filterName);\n if (this.formFilters[filterId as any]) {\n if (!this.formFilters[filterId as any].childs) {\n this.formFilters[filterId as any].childs = [];\n }\n (this.formFilters as any)[filterId].childs.push({ filter: { key, required: field.required } });\n\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 severity: 'error',\n duration: TOAST_LIFE,\n text: 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 safeReplaceCommas(input: string, operator: string): string {\n let output = '';\n let parenCount = 0;\n let justAddedOperator = false;\n\n for (const char of input) {\n let charToAdd = char;\n\n ({ parenCount, justAddedOperator } = this.updateParenAndOperatorState(char, parenCount, justAddedOperator));\n ({ charToAdd, justAddedOperator } = this.processCommaSubstitution(char, parenCount, justAddedOperator, operator, charToAdd));\n\n justAddedOperator = this.updateNonCommaOperatorState(char, charToAdd, justAddedOperator);\n output += charToAdd;\n }\n\n return output;\n }\n\n private updateParenAndOperatorState(char: string, parenCount: number, justAddedOperator: boolean): { parenCount: number, justAddedOperator: boolean } {\n if (char === '(') {\n parenCount++;\n justAddedOperator = false;\n } else if (char === ')') {\n parenCount--;\n justAddedOperator = false;\n } else {\n // Nenhuma ação necessária para outros caracteres\n }\n\n return { parenCount, justAddedOperator };\n }\n\n private processCommaSubstitution(char: string, parenCount: number, justAddedOperator: boolean, operator: string, charToAdd: string): { charToAdd: string, justAddedOperator: boolean } {\n if (char === ',') {\n if (parenCount === 0) {\n if (!justAddedOperator) {\n charToAdd = ` ${operator} `;\n justAddedOperator = true;\n } else {\n charToAdd = '';\n }\n } else {\n justAddedOperator = false;\n }\n }\n return { charToAdd, justAddedOperator };\n }\n\n private updateNonCommaOperatorState(char: string, charToAdd: string, justAddedOperator: boolean): boolean {\n if (char !== ',') {\n if (charToAdd !== char) {\n return false;\n }\n\n if (char !== '(' && char !== ')') {\n return false;\n }\n }\n return justAddedOperator;\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\n const filters = attributes.map(attr =>\n filterOperators[attr.comparator as keyof typeof filterOperators](attr.name, value)\n );\n\n dependsOn &&\n dependsOn.forEach(obj => {\n const filterId = getFilterId(domainName, obj.filterName);\n const fieldValue = this.formFilters[filterId as any].value[searchKeyName];\n filters.push(`${obj.entityAttribute} eq '${fieldValue}'`);\n });\n\n const filtersString = filters.join(',');\n const finalFilter = this.safeReplaceCommas(filtersString, search.operator);\n\n return url.concat(finalFilter);\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 as any)[filterId].invalidValue = result.length === 0;\n\n\n return result.filter(item => {\n const { value } = this.formFilters[filterId as any];\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 as any)[filterId]) {\n const { value, type } = (this.formFilters as any)[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 }\n return params;\n }, {} as Record<string, any>);\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","<s-empty-state\n *ngIf=\"error\"\n iconClass=\"fa fa-exclamation-triangle\"\n title=\"{{ errorState?.status }} - {{ errorState?.statusText }}\"\n (primaryAction)=\"errorStateAction()\"\n [primaryActionLabel]=\"translate.instant('platform.filter_service.try')\"\n [description]=\"translate.instant('platform.filter_service.error_state')\"\n></s-empty-state>\n\n<div *ngIf=\"!error\">\n <p-tabView *ngIf=\"tabs && tabs.size > 1\"\n [(activeIndex)]=\"activeIndex\">\n\n <p-tabPanel header=\"{{ general.name }}\" *ngIf=\"general.fields.length\">\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [fields]=\"general.fields\"\n [form]=\"general.form\">\n </s-dynamic-form>\n </p-tabPanel>\n\n <p-tabPanel *ngFor=\"let tab of (tabs | mapValues)\"\n header=\"{{ tab.label }}\">\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [fields]=\"tab.fields\"\n [form]=\"tab.form\">\n </s-dynamic-form>\n </p-tabPanel>\n </p-tabView>\n\n <div *ngIf=\"tabs && tabs.size === 1\">\n <s-dynamic-form\n *ngFor=\"let tab of (tabs | mapValues)\"\n [errorMessages]=\"errorMessages\"\n [fields]=\"tab.fields\"\n [form]=\"tab.form\">\n </s-dynamic-form>\n </div>\n</div>\n","import { Component, HostListener, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation, inject } 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 translate = inject(TranslateService);\n private readonly router = inject(Router);\n\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 @Input() contextId = ''\n\n subscriptions: Subscription[] = [];\n\n isMobile = false;\n tabViewOrientation = 'left';\n totalFiltersActive = 0;\n showDialog = false;\n error = false;\n currentTicket = '';\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 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(forceSave = false) {\n this.modalComponent.saveFilters(forceSave);\n }\n\n saveFiltersWithCallbackFunction(callbackFunction: any) {\n this.modalComponent.saveFiltersWithCallbackFunction(callbackFunction);\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","<s-button\n *ngIf=\"!onlyContent\"\n [id]=\"'filterButton'\"\n [disabled]=\"!canOpenFilter\"\n (clicked)=\"canOpenFilter ? toggleDialog() : ''\"\n iconClass=\"fa fa-filter\"\n priority=\"default\"\n [label]=\"labelButton\"\n [auxiliary]=\"true\"\n [tooltip]=\"appliedFiltersTooltip\"\n>\n <span\n *ngIf=\"totalFiltersActive && showActiveFiltersCountBadge\"\n class=\"sds-badge-number sds-color-primary custom-badge\"\n >{{ totalFiltersActive }}</span\n >\n</s-button>\n\n<section *ngIf=\"onlyContent\">\n <div class=\"only-content-wrapper\">\n <div class=\"header\">\n <h3>{{ 'platform.filter_service.filters' | translate }}</h3>\n <span (click)=\"close()\" class=\"close_btn pi pi-times\"></span>\n </div>\n <div class=\"app-form-filter\">\n <s-app-form-filter\n [showMessages]=\"false\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n (closeModalOutput)=\"close()\"\n [isModal]=\"false\"\n [contextId]=\"contextId\"\n ></s-app-form-filter>\n </div>\n <div class=\"filter-footer\" *ngIf=\"!error\">\n <s-button\n priority=\"link\"\n [label]=\"translate.instant('platform.filter_service.cancel')\"\n (clicked)=\"close()\"\n ></s-button>\n <s-button\n *ngIf=\"isMobile\"\n priority=\"default\"\n [label]=\"translate.instant('platform.filter_service.actions')\"\n [auxiliary]=\"true\"\n [menuOptions]=\"mobileButtonActions\"\n ></s-button>\n <ng-container *ngIf=\"!isMobile\">\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.clear')\"\n (clicked)=\"clearFilters()\"\n ></s-button>\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.save')\"\n (clicked)=\"saveFilters()\"\n ></s-button>\n </ng-container>\n <s-button\n type=\"submit\"\n priority=\"primary\"\n [label]=\"translate.instant('platform.filter_service.filter')\"\n (clicked)=\"onApplyFilters()\"\n ></s-button>\n </div>\n </div>\n</section>\n\n<p-dialog\n *ngIf=\"!onlyContent\"\n appendTo=\"body\"\n styleClass=\"filter-dialog\"\n [draggable]=\"false\"\n [modal]=\"true\"\n [(visible)]=\"showDialog\"\n [blockScroll]=\"true\"\n [closable]=\"false\"\n>\n <ng-template pTemplate=\"header\">\n <div class=\"w-full flex items-center justify-between\">\n <span>{{ 'platform.filter_service.filters' | translate }}</span>\n <span\n (click)=\"toggleDialog(); close()\"\n (keypress)=\"toggleDialog(); close()\"\n class=\"close_btn pi pi-times cursor-pointer\">\n </span>\n </div>\n </ng-template>\n\n <s-app-form-filter\n [showMessages]=\"true\"\n (errorOutput)=\"onError($event)\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n [isModal]=\"true\"\n [contextId]=\"contextId\"\n ></s-app-form-filter>\n\n <ng-template pTemplate=\"footer\">\n <ng-container *ngIf=\"!error && !hideButtons\">\n <s-button\n type=\"submit\"\n priority=\"primary\"\n [label]=\"translate.instant('platform.filter_service.filter')\"\n (clicked)=\"applyFilters()\"\n ></s-button>\n <ng-container *ngIf=\"!isMobile\">\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.save')\"\n (clicked)=\"saveFilters()\"\n ></s-button>\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.clear')\"\n (clicked)=\"clearFilters()\"\n ></s-button>\n </ng-container>\n <s-button\n *ngIf=\"isMobile\"\n priority=\"default\"\n [label]=\"translate.instant('platform.filter_service.actions')\"\n [auxiliary]=\"true\"\n [menuOptions]=\"mobileButtonActions\"\n ></s-button>\n <s-button\n priority=\"link\"\n [label]=\"translate.instant('platform.filter_service.cancel')\"\n (clicked)=\"toggleDialog(); close()\"\n ></s-button>\n </ng-container>\n </ng-template>\n</p-dialog>\n\n\n<p-toast key=\"filterServiceToastKey\" [baseZIndex]=\"5000\"></p-toast>\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 { LocaleService } from '@seniorsistemas/angular-components/locale';\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { DynamicFormModule } from \"@seniorsistemas/angular-components/dynamic-form\";\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';\n// @ts-ignore\n/* sonar-ignore */\nimport * as jc from '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 { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { CyclicJsonInterceptor } from './cyclic-json-interceptor.service';\n\n@NgModule({ imports: [], providers: [{ provide: HTTP_INTERCEPTORS, useClass: CyclicJsonInterceptor, multi: true }, provideHttpClient(withInterceptorsFromDi())] })\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, inject } 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 private readonly restUrl = inject(RestUrl);\n private readonly xServicesUrl = inject(XServicesUrl);\n\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 { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } 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({ imports: [], providers: [RestUrl, XServicesUrl, { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptor, multi: true }, provideHttpClient(withInterceptorsFromDi())] })\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\nexport interface ActionPermissions {\n [key: string]: boolean;\n}\n\nexport interface ResourcePermissions {\n [resourceName: string]: ActionPermissions;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastService } from \"@seniorsistemas/angular-components/toast\";\nimport { from, Observable, of, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport {\n Environment,\n ENVIRONMENT,\n Permission,\n Resource,\n Resources,\n RESOURCES\n} from './permissions.config';\n\nexport let promise: Promise<any>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionsService {\n private readonly resources = inject<Resources>(RESOURCES);\n private readonly environment = inject<Environment>(ENVIRONMENT);\n private readonly http = inject(HttpClient);\n private readonly router = inject(Router);\n private readonly toastService = inject(ToastService);\n private readonly translate = inject(TranslateService);\n\n private checkedPermissions: any = {};\n private readonly actionUrl = 'platform/authorization/queries';\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 rec.uri = this.getUriByResourceName(rec.name, rec.entity);\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((response: any) => {\n const checkedPermissions = response.permissions || response;\n\n this.checkedPermissions = { ...this.checkedPermissions, ...checkedPermissions };\n\n const values: any = {};\n\n if (this.shouldRedirectToForbiddenPage(resources, checkedPermissions)) {\n this.router.navigate(['error', 403]);\n return throwError(() => new Error('forbidden'));\n }\n\n checkedPermissions.forEach((permission: any) => {\n const resource = resources.find(res => res.uri === permission.resource);\n\n if (!resource) {\n return;\n }\n\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?.length) {\n values[name]['resourceFilters'] = [\n ...(values[name]['resourceFilters'] || []),\n ...permission.resourceFilters\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\n return from(promise).pipe(\n map((permissions: any) => {\n this.checkedPermissions = permissions;\n\n if (resource) {\n const resourceKey = Object.keys(permissions)\n .find(key => key.toLowerCase() === resource.toLowerCase());\n return permissions[resourceKey];\n }\n\n return permissions;\n }),\n catchError(() => {\n promise = undefined;\n this.toastService.show({\n severity: 'error',\n title: this.translate.instant('permission_error_summary'),\n text: 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 || Object.keys(this.checkedPermissions).length === 0) {\n throwError(() => new Error('\\'Permissions\\' are not defined. You should call \\'get\\' or \\'checkAccess\\' method first.'));\n }\n\n const resourceKey = Object.keys(this.checkedPermissions)\n .find(key => key.toLowerCase() === resourceName.toLowerCase());\n\n if (!resourceKey) {\n return false;\n }\n\n const actions = this.checkedPermissions[resourceKey];\n return actions?.[action] ?? actions?.[action.toLowerCase()] ?? false;\n }\n\n private getUriByResourceName(resourceName: string, isEntity?: boolean): string {\n const { domain, service } = this.environment;\n\n if (!domain || !service) {\n throwError(() => new Error('You must inform domain and service name'));\n }\n\n const uriBase = `res://senior.com.br/${domain}/${service}`;\n return isEntity ? `${uriBase}/entities/${resourceName}` : `${uriBase}/${resourceName}`;\n }\n\n private shouldRedirectToForbiddenPage(resources: Resource[] = [], permissions: Permission[]): boolean {\n const permissionsDenied = permissions.filter(perm => !perm.authorized);\n\n if (permissionsDenied.length) {\n const resourcesToCheck = resources.filter(r => r.redirectToError);\n if (resourcesToCheck.length) {\n return resourcesToCheck.every(resource => {\n const actionsToCheck = resource.actionsToCheck?.length ? resource.actionsToCheck : resource.actions;\n return actionsToCheck.every(action =>\n permissionsDenied.some(p => p.resource === resource.uri && p.action === action)\n );\n });\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\n if (!item) {\n return result;\n }\n\n return Array.isArray(item) ? [...result, ...item] : [...result, item];\n }, []);\n }\n\n private getPermissionObject(defaultValue: boolean) {\n return this.getFlatResources().reduce((resources: any, 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\n const resources = this.getFlatResources();\n const perm = resources\n .map(resource => resource.actions.map((action: any) => ({ action, resource: resource.uri })))\n .reduce((acc: any, val: any) => [...acc, ...val]);\n\n const response: any = await this.http\n .post(`${this.actionUrl}/checkAccess`, { includeFilters: false, permissions: perm })\n .toPromise();\n\n const permissions = response.permissions ?? response;\n const values: any = {};\n\n permissions.forEach((permission: any) => {\n const resource = resources.find((res: any) => res.uri === permission.resource);\n if (!resource) {\n return;\n }\n\n const { name } = resource;\n values[name] = values[name] || {};\n values[name][permission.action] = permission.authorized;\n values[name][permission.action.toLowerCase()] = permission.authorized;\n });\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, inject } 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 private readonly http = inject(HttpClient);\n\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 { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { FeatureToggleService } from './feature-toggle.service';\nimport { HttpInterceptorModule } from '../http-interceptor/http-interceptor.module';\n\n@NgModule({ imports: [HttpInterceptorModule], providers: [FeatureToggleService, provideHttpClient(withInterceptorsFromDi())] })\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, inject } 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 private readonly http = inject(HttpClient);\n\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 { Pipe, PipeTransform, inject } 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 private readonly translationService = inject(TranslateService);\n\n transform(value: any): any {\n return this.translationService.instant(value);\n }\n }\n","import { UserAction } from './../models/user-action.enum';\nimport { SpotlightNotification } from './../models/spotlight-notification.interface';\nimport { Component, EventEmitter, Input, OnInit, Output, inject } 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 private readonly spotlightService = inject(SpotlightService);\n private readonly cookieService = inject(CookieService);\n private readonly datePipe = inject(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","<div class=\"s-spotlight-overlay\" id=\"ol\" *ngIf=\"canAppear && visible\">\n <div class=\"s-spotlight\" id=\"sl\" [ngClass]=\"{'s-effect-fadein': fade}\">\n <div class=\"s-spotlight-header\">\n <span class=\"s-spotlight-title\">{{header.toUpperCase()}}</span>\n <a role=\"button\" class=\"s-spotlight-close\" (click)=\"close()\"><span class=\"fa fa-times\" aria-hidden=\"true\"></span></a>\n </div>\n <div class=\"s-img\">\n <img src=\"{{imgUrl}}\">\n </div>\n <div class=\"s-spotlight-footer\">\n <div class=\"s-spotlight-footer-left\">\n <button\n pButton\n type=\"submit\"\n id=\"decline-button\"\n label=\"{{'platform.spotlight.no_interest' | translate}}\"\n (click)=\"onTertiary()\"\n class=\"ui-button-link\">\n </button>\n </div>\n <div class=\"s-spotlight-footer-right\">\n <button\n pButton\n type=\"submit\"\n id=\"remember-button\"\n label=\"{{'platform.spotlight.remember_late' | translate}}\"\n (click)=\"onSecondary()\"\n class=\"ui-button-raised ui-button-secondary\">\n </button>\n <button\n pButton\n label=\"{{primaryButtonLabel}}\"\n type=\"submit\"\n id=\"submit-button\"\n (click)=\"onPrimary()\"\n [pTooltip]=\"primaryButtonTooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n class=\"ui-button-raised\">\n </button>\n </div>\n </div>\n</div>\n</div>","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 { 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","/// <reference path=\"./json-cycle.d.ts\" />\n\nexport * from './modules/advanced-filter/index';\nexport * from './modules/cyclic-json-interceptor/index';\nexport * from './modules/http-interceptor/index';\nexport * from './modules/permissions/permissions.module';\nexport * from './modules/permissions/permissions.service';\nexport * from './modules/translations/translations.module';\nexport * from './modules/feature-toggle/index';\nexport * from './modules/spotlight/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TranslatePipe","fallback","moment","DATETIME","TIME","DATE","parsers","dateParser","TRANSLATE_PREFIX","rxFilter","i1","i5.MapValuesPipe","i2","i3","i4","i6.FormFilterComponent","i7.TranslatePipe","PrimeNGButtonModule","i1.TranslationsModule","i4.TranslatePipe","ButtonModule"],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-platform-components.mjs","sources":["../../lib/src/modules/advanced-filter/pipes/map-values.pipe.ts","../../lib/src/modules/advanced-filter/pipes/translate.pipe.ts","../../lib/src/modules/translations/translations.module.ts","../../lib/src/modules/advanced-filter/locale/fallback.ts","../../lib/src/modules/advanced-filter/services/constants.ts","../../lib/src/modules/advanced-filter/shared/constants.ts","../../lib/src/modules/advanced-filter/services/advanced-filter.service.ts","../../lib/src/modules/advanced-filter/models/filter.ts","../../lib/src/modules/advanced-filter/models/filter-type.ts","../../lib/src/modules/advanced-filter/models/scope.ts","../../lib/src/modules/advanced-filter/models/form-filter.ts","../../lib/src/modules/advanced-filter/models/tab-view.ts","../../lib/src/modules/advanced-filter/utils/filter-id/index.ts","../../lib/src/modules/advanced-filter/utils/filter-value/index.ts","../../lib/src/modules/advanced-filter/utils/json-path.ts","../../lib/src/modules/advanced-filter/utils/filterOperators.ts","../../lib/src/modules/advanced-filter/utils/index.ts","../../lib/src/modules/advanced-filter/utils/form-field/index.ts","../../lib/src/modules/advanced-filter/utils/comparator.ts","../../lib/src/modules/advanced-filter/services/calendar-options.service.ts","../../lib/src/modules/advanced-filter/components/form-filter/form-filter.component.ts","../../lib/src/modules/advanced-filter/components/form-filter/form-filter.component.html","../../lib/src/modules/advanced-filter/components/advanced-filter/advanced-filter.component.ts","../../lib/src/modules/advanced-filter/components/advanced-filter/advanced-filter.component.html","../../lib/src/modules/advanced-filter/advanced-filter.module.ts","../../lib/src/modules/cyclic-json-interceptor/cyclic-json-interceptor.service.ts","../../lib/src/modules/cyclic-json-interceptor/cyclic-json-interceptor.module.ts","../../lib/src/modules/http-interceptor/rest-url.service.ts","../../lib/src/modules/http-interceptor/x-services-url.service.ts","../../lib/src/modules/http-interceptor/http-interceptor.service.ts","../../lib/src/modules/http-interceptor/http-interceptor.module.ts","../../lib/src/modules/permissions/permissions.config.ts","../../lib/src/modules/permissions/permissions.service.ts","../../lib/src/modules/permissions/permissions.module.ts","../../lib/src/modules/feature-toggle/constants/endpoint.constant.ts","../../lib/src/modules/feature-toggle/feature-toggle.service.ts","../../lib/src/modules/feature-toggle/feature-toggle.module.ts","../../lib/src/modules/spotlight/models/user-action.enum.ts","../../lib/src/modules/spotlight/service/spotlight.service.ts","../../lib/src/modules/spotlight/models/display-type.enum.ts","../../lib/src/modules/spotlight/models/spotlight-control.interface.ts","../../lib/src/modules/spotlight/models/spotlight-status.enum.ts","../../lib/src/modules/spotlight/pipes/translate.pipe.ts","../../lib/src/modules/spotlight/component/spotlight.component.ts","../../lib/src/modules/spotlight/component/spotlight.component.html","../../lib/src/modules/spotlight/locale/fallback.ts","../../lib/src/modules/spotlight/spotlight.module.ts","../../lib/src/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, inject } 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 private readonly translationService = inject(TranslateService);\n\n transform(value: any, args?: any): any {\n return this.translationService.instant(value);\n }\n }\n","import { LOCATION_INITIALIZED } from '@angular/common';\nimport { HttpClient, HttpHeaders, HttpParams, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { APP_INITIALIZER, InjectionToken, Injector, NgModule, ModuleWithProviders } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { user } from '@seniorsistemas/senior-platform-data';\nimport { CookieService } from 'ngx-cookie-service';\n\ninterface TranslateServiceExtended extends TranslateService {\n overriden: any;\n}\n\nexport const TranslationsConfig = new InjectionToken<ITranslationsConfig[]>('translationConfig');\nexport const USER_INFO = 'com.senior.token';\nexport const LENGTH_DEFAULT = 2;\n@NgModule({ imports: [TranslateModule.forChild()], providers: [CookieService, provideHttpClient(withInterceptorsFromDi())] })\nexport class TranslationsModule {\n static forRoot(translationsConfigs: ITranslationsConfig[]): ModuleWithProviders<TranslationsModule> {\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<TranslationsModule> {\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\nfunction resolveImmediately(resolve: () => void) {\n resolve();\n}\n\nfunction resolveAfterTranslate(\n translate: TranslateService,\n locale: string,\n resolve: () => void\n) {\n translate.use(locale).toPromise().then(() => resolve());\n}\n\nexport function factory(\n translate: TranslateService,\n injector: Injector,\n http: HttpClient,\n cookieService: CookieService\n) {\n async function performInit(): Promise<{ success: boolean; locale: string }> {\n let locale = 'pt-BR';\n\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 locale = getLocale(userData);\n } catch (ex) {\n console.warn('Unable to obtain user locale');\n }\n\n const fallback = configs.reduce(\n (result: any, cfg: ITranslationsConfig) => ({ ...result, ...cfg.fallback }),\n {}\n );\n\n const defaultsLanguages = configs.reduce(\n (result: any, cfg: ITranslationsConfig) => ({ ...result, ...cfg.defaultsLanguages }),\n {}\n );\n\n translate.setTranslation(locale, fallback);\n translate.setDefaultLang(locale);\n\n let configTranslate: any = {};\n if (defaultsLanguages) {\n configTranslate = getConfigTranslate(defaultsLanguages, locale);\n }\n\n const translationsPromises = configs.map((config: any) =>\n getTranslationsRequest(config, locale)\n );\n\n await Promise.all(translationsPromises).then((results) => {\n const usedFallback = (translate as TranslateServiceExtended)?.overriden;\n\n results.forEach((file, index) => {\n setTranslations(\n file['content'],\n usedFallback,\n locale,\n index,\n configTranslate.fallbackByLocale\n );\n });\n\n return translate.use(locale).toPromise();\n });\n\n return { success: true, locale };\n } catch (_err) {\n return { success: false, locale };\n }\n }\n\n return () => new Promise<void>((resolve) => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve(null));\n\n locationInitialized\n .then(() => performInit())\n .then(({ success, locale }) => {\n if (success) {\n resolveImmediately(resolve);\n } else {\n resolveAfterTranslate(translate, locale, resolve);\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: any = {};\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`;\nexport const GET_FILTERS_BY_TICKET = `${URL_PREFIX}/queries/getFiltersByTicket`;\n","export const searchDisplayName = '$$__displayValue__';\nexport const searchKeyName = '$$__keyValue__';\n","import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { GET_FILTERS_URL, SAVE_FILTERS_URL, SAVE_TICKED_FILTER_URL } from './constants';\nimport { Subject, Observable, BehaviorSubject } 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 readonly http = inject(HttpClient);\n private readonly allowedOrigin = window.location.origin;\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() {\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 next: ticketFilter => {\n this.ticketFilter = ticketFilter;\n this.ticketFilterObservable.next({ ticketFilter });\n // NOSONAR\n window.parent.postMessage(\n { message: 'advanced-filter:success', payload: ticketFilter },\n this.allowedOrigin\n );\n },\n error: err => {\n this.ticketFilterObservable.next({ error: true, message: err });\n // NOSONAR\n window.parent.postMessage(\n { message: 'advanced-filter:error', payload: err },\n this.allowedOrigin\n );\n }\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/dynamic-form';\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","// NOSONAR\nimport * as momentNs from \"moment\";\nimport { FilterType } from '../../models';\n\n/**\n *@description Necessary because of https://github.com/rollup/rollup/issues/670\n *\n * */\nconst moment = (momentNs as any).default || momentNs;\nconst { DATETIME, TIME, DATE } = FilterType;\n\ntype ParserFn = (value: any) => any;\n\nconst parsers: Partial<Record<FilterType, ParserFn>> = {\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(obj: Record<string, any> | undefined, path: string): any {\n if (!obj || !path) {\n return undefined;\n }\n\n const parts = path.replace(/^\\$\\./, '').split('.');\n const current = parts[0];\n const value = obj[current];\n\n if (parts.length > 1) {\n return jsonPath(value, parts.slice(1).join('.'));\n }\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","/* sonar-ignore */\nimport * as momentNs from \"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 moment = (momentNs as any).default || momentNs;\nconst { DATE, DATETIME, TIME } = FilterType;\n\ntype ParserFn = (v: string) => any;\n\nconst parsers: Partial<Record<FilterType, ParserFn>> = {\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: Record<string, (value: any, otherValue: any) => boolean> = {\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, inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nconst TRANSLATE_PREFIX = 'platform.filter_service';\n\n@Injectable()\nexport class CalendarOptionsService {\n private readonly translate = inject(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 { ToastService } from \"@seniorsistemas/angular-components/toast\";\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, inject } 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/dynamic-form';\n\nimport { searchDisplayName, searchKeyName } from '../../shared/constants';\nimport { TranslateService } from '@ngx-translate/core';\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 private readonly filterService = inject(AdvancedFilterService);\n translate = inject(TranslateService);\n private readonly toastService = inject(ToastService);\n private readonly calendarOptionsService = inject(CalendarOptionsService);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n destroy$ = new Subject();\n errorState: HttpErrorResponse;\n tabs: Map<string, ContextTab>;\n contexts: Context[] = [];\n formFilters: FormFilter[] = [];\n oldFormFilters: FormFilter[] = [];\n actualFormFilters: any[] = [];\n general = new TabView({ name: 'Geral' });\n totalFiltersActive = 0;\n isMobile = false;\n tabViewOrientation = 'left';\n error = false;\n activeIndex = 0;\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 @Input() contextId = '';\n\n\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 @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(): boolean {\n if (!this.oldFormFilters?.length) {\n return true;\n }\n\n const filtered = this.formFilters.filter((currentFilter, index) => {\n const oldFilter = this.oldFormFilters[index];\n const oldValue = oldFilter ? oldFilter.value : undefined;\n return !equals(currentFilter.value, oldValue);\n });\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\n this.filterService.saveTickedFilters(filters);\n } else if (showToast) {\n const message = {\n severity: 'info',\n duration: TOAST_LIFE,\n text: 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: any) {\n if (this.showMessages) {\n this.toastService.show(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(forceSave = false) {\n const filters = this.parseToUserFilters(this.formFilters);\n const savedFilterSuccess = () => {\n if (!forceSave) {\n const message = {\n severity: 'info',\n duration: TOAST_LIFE,\n text: this.translate.instant(`${TRANSLATE_PREFIX}.saved_filters_success`, { activeFilters: this.totalFiltersActive })\n };\n this.sendMessage(message);\n }\n\n this.counterUpdate();\n };\n\n const savedFiltersError = () => {\n const message = {\n severity: 'error',\n duration: TOAST_LIFE,\n text: this.translate.instant(`${TRANSLATE_PREFIX}.saved_filters_error`, { activeFilters: this.totalFiltersActive })\n };\n\n this.sendMessage(message);\n };\n\n this.filterService\n .saveFilters(filters)\n .subscribe(savedFilterSuccess, savedFiltersError);\n }\n\n saveFiltersWithCallbackFunction(callbackFunction: any) {\n const filters = this.parseToUserFilters(this.formFilters);\n\n this.filterService\n .saveFilters(filters)\n .subscribe(callbackFunction);\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 return filters.reduce((all, filter) => {\n const { type, services, name, value, domain, contexts } = filter as unknown 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 }, [] as any[]);\n }\n\n private getFiltersValues(filters: FormFilter[]) {\n const filtersAsObject = filters as unknown as { [key: string]: Filter };\n const ids = Object.keys(filtersAsObject);\n\n return ids.reduce((all, filterId) => {\n const { type, services, name, value, domain } = filtersAsObject[filterId];\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.createForm(filters, applyFilter)\n }\n });\n }\n\n private createForm(filters: any, applyFilter: any) {\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 private setDependencies(filters: FormFilter[]) {\n const filtersMap: Record<string, FormFilter> = {};\n filters.forEach(f => {\n const id = getFilterId(f.domain, f.name);\n filtersMap[id] = f;\n });\n\n const names = Object.keys(filtersMap);\n\n const dependencies = from(names).pipe(\n map(key => filtersMap[key]),\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 = filtersMap[id];\n\n if (!formFilter) {\n return true;\n }\n\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 => filtersMap[filterId]),\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 as any]) {\n const type = this.formFilters[filterId as any].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 return true;\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 as any].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 */\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 as any] = new FormFilter(filterConfig);\n const formFilter = this.formFilters[filterId as any];\n if (scope === Scope.DOMAIN && this.containsAllContexts(contexts)) {\n this.addGeneralField(filter);\n }\n\n contexts.forEach(contextId => {\n if ((contextId === this.contextId) || (this.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\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\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 as any];\n childs && childs.forEach((child: any) => this.cleanFieldAndSetDefaultValue(child.filter.key));\n generalFieldControl && generalFieldControl.setValue(value, controlOpts);\n this.formFilters[filterId as any].value = fieldValue;\n }\n\n private cleanFieldAndSetDefaultValue(key: string) {\n const { isMultiple, defaultValue, filterControl, type } = this.formFilters[key as any];\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 as any];\n dependsOn.forEach((field: any) => {\n const filterId = getFilterId(domain, field.filterName);\n if (this.formFilters[filterId as any]) {\n if (!this.formFilters[filterId as any].childs) {\n this.formFilters[filterId as any].childs = [];\n }\n (this.formFilters as any)[filterId].childs.push({ filter: { key, required: field.required } });\n\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 severity: 'error',\n duration: TOAST_LIFE,\n text: 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 safeReplaceCommas(input: string, operator: string): string {\n let output = '';\n let parenCount = 0;\n let justAddedOperator = false;\n\n for (const char of input) {\n let charToAdd = char;\n\n ({ parenCount, justAddedOperator } = this.updateParenAndOperatorState(char, parenCount, justAddedOperator));\n ({ charToAdd, justAddedOperator } = this.processCommaSubstitution(char, parenCount, justAddedOperator, operator, charToAdd));\n\n justAddedOperator = this.updateNonCommaOperatorState(char, charToAdd, justAddedOperator);\n output += charToAdd;\n }\n\n return output;\n }\n\n private updateParenAndOperatorState(char: string, parenCount: number, justAddedOperator: boolean): { parenCount: number, justAddedOperator: boolean } {\n if (char === '(') {\n parenCount++;\n justAddedOperator = false;\n } else if (char === ')') {\n parenCount--;\n justAddedOperator = false;\n } else {\n // Nenhuma ação necessária para outros caracteres\n }\n\n return { parenCount, justAddedOperator };\n }\n\n private processCommaSubstitution(char: string, parenCount: number, justAddedOperator: boolean, operator: string, charToAdd: string): { charToAdd: string, justAddedOperator: boolean } {\n if (char === ',') {\n if (parenCount === 0) {\n if (!justAddedOperator) {\n charToAdd = ` ${operator} `;\n justAddedOperator = true;\n } else {\n charToAdd = '';\n }\n } else {\n justAddedOperator = false;\n }\n }\n return { charToAdd, justAddedOperator };\n }\n\n private updateNonCommaOperatorState(char: string, charToAdd: string, justAddedOperator: boolean): boolean {\n if (char !== ',') {\n if (charToAdd !== char) {\n return false;\n }\n\n if (char !== '(' && char !== ')') {\n return false;\n }\n }\n return justAddedOperator;\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\n const filters = attributes.map(attr =>\n filterOperators[attr.comparator as keyof typeof filterOperators](attr.name, value)\n );\n\n dependsOn &&\n dependsOn.forEach(obj => {\n const filterId = getFilterId(domainName, obj.filterName);\n const fieldValue = this.formFilters[filterId as any].value[searchKeyName];\n filters.push(`${obj.entityAttribute} eq '${fieldValue}'`);\n });\n\n const filtersString = filters.join(',');\n const finalFilter = this.safeReplaceCommas(filtersString, search.operator);\n\n return url.concat(finalFilter);\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 as any)[filterId].invalidValue = result.length === 0;\n\n\n return result.filter(item => {\n const { value } = this.formFilters[filterId as any];\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 as any)[filterId]) {\n const { value, type } = (this.formFilters as any)[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 }\n return params;\n }, {} as Record<string, any>);\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","<s-empty-state\n *ngIf=\"error\"\n iconClass=\"fa fa-exclamation-triangle\"\n title=\"{{ errorState?.status }} - {{ errorState?.statusText }}\"\n (primaryAction)=\"errorStateAction()\"\n [primaryActionLabel]=\"translate.instant('platform.filter_service.try')\"\n [description]=\"translate.instant('platform.filter_service.error_state')\"\n></s-empty-state>\n\n<div *ngIf=\"!error\">\n <p-tabView *ngIf=\"tabs && tabs.size > 1\"\n [(activeIndex)]=\"activeIndex\">\n\n <p-tabPanel header=\"{{ general.name }}\" *ngIf=\"general.fields.length\">\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [fields]=\"general.fields\"\n [form]=\"general.form\">\n </s-dynamic-form>\n </p-tabPanel>\n\n <p-tabPanel *ngFor=\"let tab of (tabs | mapValues)\"\n header=\"{{ tab.label }}\">\n <s-dynamic-form\n [errorMessages]=\"errorMessages\"\n [fields]=\"tab.fields\"\n [form]=\"tab.form\">\n </s-dynamic-form>\n </p-tabPanel>\n </p-tabView>\n\n <div *ngIf=\"tabs && tabs.size === 1\">\n <s-dynamic-form\n *ngFor=\"let tab of (tabs | mapValues)\"\n [errorMessages]=\"errorMessages\"\n [fields]=\"tab.fields\"\n [form]=\"tab.form\">\n </s-dynamic-form>\n </div>\n</div>\n","import { Component, HostListener, Input, OnDestroy, OnInit, ViewChild, ViewEncapsulation, inject } 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 translate = inject(TranslateService);\n private readonly router = inject(Router);\n\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 @Input() contextId = ''\n\n subscriptions: Subscription[] = [];\n\n isMobile = false;\n tabViewOrientation = 'left';\n totalFiltersActive = 0;\n showDialog = false;\n error = false;\n currentTicket = '';\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 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(forceSave = false) {\n this.modalComponent.saveFilters(forceSave);\n }\n\n saveFiltersWithCallbackFunction(callbackFunction: any) {\n this.modalComponent.saveFiltersWithCallbackFunction(callbackFunction);\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","<s-button\n *ngIf=\"!onlyContent\"\n [id]=\"'filterButton'\"\n [disabled]=\"!canOpenFilter\"\n (clicked)=\"canOpenFilter ? toggleDialog() : ''\"\n iconClass=\"fa fa-filter\"\n priority=\"default\"\n [label]=\"labelButton\"\n [auxiliary]=\"true\"\n [tooltip]=\"appliedFiltersTooltip\"\n>\n <span\n *ngIf=\"totalFiltersActive && showActiveFiltersCountBadge\"\n class=\"sds-badge-number sds-color-primary custom-badge\"\n >{{ totalFiltersActive }}</span\n >\n</s-button>\n\n<section *ngIf=\"onlyContent\">\n <div class=\"only-content-wrapper\">\n <div class=\"header\">\n <h3>{{ 'platform.filter_service.filters' | translate }}</h3>\n <span (click)=\"close()\" class=\"close_btn pi pi-times\"></span>\n </div>\n <div class=\"app-form-filter\">\n <s-app-form-filter\n [showMessages]=\"false\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n (closeModalOutput)=\"close()\"\n [isModal]=\"false\"\n [contextId]=\"contextId\"\n ></s-app-form-filter>\n </div>\n <div class=\"filter-footer\" *ngIf=\"!error\">\n <s-button\n priority=\"link\"\n [label]=\"translate.instant('platform.filter_service.cancel')\"\n (clicked)=\"close()\"\n ></s-button>\n <s-button\n *ngIf=\"isMobile\"\n priority=\"default\"\n [label]=\"translate.instant('platform.filter_service.actions')\"\n [auxiliary]=\"true\"\n [menuOptions]=\"mobileButtonActions\"\n ></s-button>\n <ng-container *ngIf=\"!isMobile\">\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.clear')\"\n (clicked)=\"clearFilters()\"\n ></s-button>\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.save')\"\n (clicked)=\"saveFilters()\"\n ></s-button>\n </ng-container>\n <s-button\n type=\"submit\"\n priority=\"primary\"\n [label]=\"translate.instant('platform.filter_service.filter')\"\n (clicked)=\"onApplyFilters()\"\n ></s-button>\n </div>\n </div>\n</section>\n\n<p-dialog\n *ngIf=\"!onlyContent\"\n appendTo=\"body\"\n styleClass=\"filter-dialog\"\n [draggable]=\"false\"\n [modal]=\"true\"\n [(visible)]=\"showDialog\"\n [blockScroll]=\"true\"\n [closable]=\"false\"\n>\n <ng-template pTemplate=\"header\">\n <div class=\"w-full flex items-center justify-between\">\n <span>{{ 'platform.filter_service.filters' | translate }}</span>\n <span\n (click)=\"toggleDialog(); close()\"\n (keypress)=\"toggleDialog(); close()\"\n class=\"close_btn pi pi-times cursor-pointer\">\n </span>\n </div>\n </ng-template>\n\n <s-app-form-filter\n [showMessages]=\"true\"\n (errorOutput)=\"onError($event)\"\n (totalFiltersActiveOutput)=\"updateTotalFiltersActive($event)\"\n [isModal]=\"true\"\n [contextId]=\"contextId\"\n ></s-app-form-filter>\n\n <ng-template pTemplate=\"footer\">\n <ng-container *ngIf=\"!error && !hideButtons\">\n <s-button\n type=\"submit\"\n priority=\"primary\"\n [label]=\"translate.instant('platform.filter_service.filter')\"\n (clicked)=\"applyFilters()\"\n ></s-button>\n <ng-container *ngIf=\"!isMobile\">\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.save')\"\n (clicked)=\"saveFilters()\"\n ></s-button>\n <s-button\n priority=\"secondary\"\n [label]=\"translate.instant('platform.filter_service.clear')\"\n (clicked)=\"clearFilters()\"\n ></s-button>\n </ng-container>\n <s-button\n *ngIf=\"isMobile\"\n priority=\"default\"\n [label]=\"translate.instant('platform.filter_service.actions')\"\n [auxiliary]=\"true\"\n [menuOptions]=\"mobileButtonActions\"\n ></s-button>\n <s-button\n priority=\"link\"\n [label]=\"translate.instant('platform.filter_service.cancel')\"\n (clicked)=\"toggleDialog(); close()\"\n ></s-button>\n </ng-container>\n </ng-template>\n</p-dialog>\n\n\n<p-toast key=\"filterServiceToastKey\" [baseZIndex]=\"5000\"></p-toast>\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 { LocaleService } from '@seniorsistemas/angular-components/locale';\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { DynamicFormModule } from \"@seniorsistemas/angular-components/dynamic-form\";\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';\n// @ts-ignore\n/* sonar-ignore */\nimport * as jc from '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 { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { CyclicJsonInterceptor } from './cyclic-json-interceptor.service';\n\n@NgModule({ imports: [], providers: [{ provide: HTTP_INTERCEPTORS, useClass: CyclicJsonInterceptor, multi: true }, provideHttpClient(withInterceptorsFromDi())] })\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, inject } 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 private readonly restUrl = inject(RestUrl);\n private readonly xServicesUrl = inject(XServicesUrl);\n\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 { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } 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({ imports: [], providers: [RestUrl, XServicesUrl, { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptor, multi: true }, provideHttpClient(withInterceptorsFromDi())] })\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\nexport interface ActionPermissions {\n [key: string]: boolean;\n}\n\nexport interface ResourcePermissions {\n [resourceName: string]: ActionPermissions;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastService } from \"@seniorsistemas/angular-components/toast\";\nimport { from, Observable, of, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport {\n Environment,\n ENVIRONMENT,\n Permission,\n Resource,\n Resources,\n RESOURCES\n} from './permissions.config';\n\nexport let promise: Promise<any>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionsService {\n private readonly resources = inject<Resources>(RESOURCES);\n private readonly environment = inject<Environment>(ENVIRONMENT);\n private readonly http = inject(HttpClient);\n private readonly router = inject(Router);\n private readonly toastService = inject(ToastService);\n private readonly translate = inject(TranslateService);\n\n private checkedPermissions: any = {};\n private readonly actionUrl = 'platform/authorization/queries';\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 rec.uri = this.getUriByResourceName(rec.name, rec.entity);\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((response: any) => {\n const checkedPermissions = response.permissions || response;\n\n this.checkedPermissions = { ...this.checkedPermissions, ...checkedPermissions };\n\n const values: any = {};\n\n if (this.shouldRedirectToForbiddenPage(resources, checkedPermissions)) {\n this.router.navigate(['error', 403]);\n return throwError(() => new Error('forbidden'));\n }\n\n checkedPermissions.forEach((permission: any) => {\n const resource = resources.find(res => res.uri === permission.resource);\n\n if (!resource) {\n return;\n }\n\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?.length) {\n values[name]['resourceFilters'] = [\n ...(values[name]['resourceFilters'] || []),\n ...permission.resourceFilters\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\n return from(promise).pipe(\n map((permissions: any) => {\n this.checkedPermissions = permissions;\n\n if (resource) {\n const resourceKey = Object.keys(permissions)\n .find(key => key.toLowerCase() === resource.toLowerCase());\n return permissions[resourceKey];\n }\n\n return permissions;\n }),\n catchError(() => {\n promise = undefined;\n this.toastService.show({\n severity: 'error',\n title: this.translate.instant('permission_error_summary'),\n text: 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 || Object.keys(this.checkedPermissions).length === 0) {\n throwError(() => new Error('\\'Permissions\\' are not defined. You should call \\'get\\' or \\'checkAccess\\' method first.'));\n }\n\n const resourceKey = Object.keys(this.checkedPermissions)\n .find(key => key.toLowerCase() === resourceName.toLowerCase());\n\n if (!resourceKey) {\n return false;\n }\n\n const actions = this.checkedPermissions[resourceKey];\n return actions?.[action] ?? actions?.[action.toLowerCase()] ?? false;\n }\n\n private getUriByResourceName(resourceName: string, isEntity?: boolean): string {\n const { domain, service } = this.environment;\n\n if (!domain || !service) {\n throwError(() => new Error('You must inform domain and service name'));\n }\n\n const uriBase = `res://senior.com.br/${domain}/${service}`;\n return isEntity ? `${uriBase}/entities/${resourceName}` : `${uriBase}/${resourceName}`;\n }\n\n private shouldRedirectToForbiddenPage(resources: Resource[] = [], permissions: Permission[]): boolean {\n const permissionsDenied = permissions.filter(perm => !perm.authorized);\n\n if (permissionsDenied.length) {\n const resourcesToCheck = resources.filter(r => r.redirectToError);\n if (resourcesToCheck.length) {\n return resourcesToCheck.every(resource => {\n const actionsToCheck = resource.actionsToCheck?.length ? resource.actionsToCheck : resource.actions;\n return actionsToCheck.every(action =>\n permissionsDenied.some(p => p.resource === resource.uri && p.action === action)\n );\n });\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\n if (!item) {\n return result;\n }\n\n return Array.isArray(item) ? [...result, ...item] : [...result, item];\n }, []);\n }\n\n private getPermissionObject(defaultValue: boolean) {\n return this.getFlatResources().reduce((resources: any, 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\n const resources = this.getFlatResources();\n const perm = resources\n .map(resource => resource.actions.map((action: any) => ({ action, resource: resource.uri })))\n .reduce((acc: any, val: any) => [...acc, ...val]);\n\n const response: any = await this.http\n .post(`${this.actionUrl}/checkAccess`, { includeFilters: false, permissions: perm })\n .toPromise();\n\n const permissions = response.permissions ?? response;\n const values: any = {};\n\n permissions.forEach((permission: any) => {\n const resource = resources.find((res: any) => res.uri === permission.resource);\n if (!resource) {\n return;\n }\n\n const { name } = resource;\n values[name] = values[name] || {};\n values[name][permission.action] = permission.authorized;\n values[name][permission.action.toLowerCase()] = permission.authorized;\n });\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, inject } 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 private readonly http = inject(HttpClient);\n\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 { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { FeatureToggleService } from './feature-toggle.service';\nimport { HttpInterceptorModule } from '../http-interceptor/http-interceptor.module';\n\n@NgModule({ imports: [HttpInterceptorModule], providers: [FeatureToggleService, provideHttpClient(withInterceptorsFromDi())] })\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, inject } 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 private readonly http = inject(HttpClient);\n\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 { Pipe, PipeTransform, inject } 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 private readonly translationService = inject(TranslateService);\n\n transform(value: any): any {\n return this.translationService.instant(value);\n }\n }\n","import { UserAction } from './../models/user-action.enum';\nimport { SpotlightNotification } from './../models/spotlight-notification.interface';\nimport { Component, EventEmitter, Input, OnInit, Output, inject } 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 private readonly spotlightService = inject(SpotlightService);\n private readonly cookieService = inject(CookieService);\n private readonly datePipe = inject(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","<div class=\"s-spotlight-overlay\" id=\"ol\" *ngIf=\"canAppear && visible\">\n <div class=\"s-spotlight\" id=\"sl\" [ngClass]=\"{'s-effect-fadein': fade}\">\n <div class=\"s-spotlight-header\">\n <span class=\"s-spotlight-title\">{{header.toUpperCase()}}</span>\n <a role=\"button\" class=\"s-spotlight-close\" (click)=\"close()\"><span class=\"fa fa-times\" aria-hidden=\"true\"></span></a>\n </div>\n <div class=\"s-img\">\n <img src=\"{{imgUrl}}\">\n </div>\n <div class=\"s-spotlight-footer\">\n <div class=\"s-spotlight-footer-left\">\n <button\n pButton\n type=\"submit\"\n id=\"decline-button\"\n label=\"{{'platform.spotlight.no_interest' | translate}}\"\n (click)=\"onTertiary()\"\n class=\"ui-button-link\">\n </button>\n </div>\n <div class=\"s-spotlight-footer-right\">\n <button\n pButton\n type=\"submit\"\n id=\"remember-button\"\n label=\"{{'platform.spotlight.remember_late' | translate}}\"\n (click)=\"onSecondary()\"\n class=\"ui-button-raised ui-button-secondary\">\n </button>\n <button\n pButton\n label=\"{{primaryButtonLabel}}\"\n type=\"submit\"\n id=\"submit-button\"\n (click)=\"onPrimary()\"\n [pTooltip]=\"primaryButtonTooltip\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n class=\"ui-button-raised\">\n </button>\n </div>\n </div>\n</div>\n</div>","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 { 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"],"names":["TranslatePipe","fallback","moment","DATETIME","TIME","DATE","parsers","dateParser","TRANSLATE_PREFIX","rxFilter","i1","i5.MapValuesPipe","i2","i3","i4","i6.FormFilterComponent","i7.TranslatePipe","PrimeNGButtonModule","i1.TranslationsModule","i4.TranslatePipe","ButtonModule"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seniorsistemas/platform-components",
3
- "version": "6.0.0",
3
+ "version": "6.0.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "http://git.senior.com.br/arquitetura/platform-components"
package/public-api.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference path="../lib/src/json-cycle.d.ts" />
2
1
  export * from './modules/advanced-filter/index';
3
2
  export * from './modules/cyclic-json-interceptor/index';
4
3
  export * from './modules/http-interceptor/index';