dts-backoffice-util 2.8.0 → 3.0.0
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.
- package/CHANGELOG.md +5 -0
- package/README.md +53 -10
- package/bundles/dts-backoffice-util.umd.js +477 -1127
- package/bundles/dts-backoffice-util.umd.js.map +1 -1
- package/bundles/dts-backoffice-util.umd.min.js +1 -1
- package/bundles/dts-backoffice-util.umd.min.js.map +1 -1
- package/esm2015/dts-backoffice-util.js +3 -2
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +3 -2
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js +3 -2
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +3 -2
- package/esm2015/lib/dts-backoffice-util.module.js +3 -2
- package/esm2015/lib/interfaces/filter-range.interface.js +3 -2
- package/esm2015/lib/interfaces/totvs-response.interface.js +3 -2
- package/esm2015/lib/model/session-info.model.js +3 -2
- package/esm2015/lib/pipes/dts-date-format.pipe.js +3 -2
- package/esm2015/lib/services/breadcrumb-control.service.js +3 -2
- package/esm2015/lib/services/cache-params.service.js +3 -2
- package/esm2015/lib/services/menu-datasul.service.js +3 -2
- package/esm2015/lib/services/profile.service.js +3 -2
- package/esm2015/lib/services/report.service.js +7 -6
- package/esm2015/lib/services/session-info.service.js +3 -2
- package/esm2015/lib/services/translate.service.js +3 -2
- package/esm2015/lib/utils/date.util.js +3 -2
- package/esm2015/lib/utils/disclaimer.util.js +3 -2
- package/esm2015/lib/utils/field-validation.util.js +3 -2
- package/esm2015/lib/utils/file.util.js +21 -10
- package/esm2015/lib/utils/filter-range.util.js +3 -2
- package/esm2015/lib/utils/generic-functions.utils.js +3 -2
- package/esm2015/public-api.js +3 -2
- package/fesm2015/dts-backoffice-util.js +66 -34
- package/fesm2015/dts-backoffice-util.js.map +1 -1
- package/lib/utils/file.util.d.ts +1 -1
- package/package.json +8 -7
- package/esm5/dts-backoffice-util.js +0 -9
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +0 -448
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js +0 -143
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +0 -434
- package/esm5/lib/dts-backoffice-util.module.js +0 -53
- package/esm5/lib/interfaces/filter-range.interface.js +0 -47
- package/esm5/lib/interfaces/totvs-response.interface.js +0 -16
- package/esm5/lib/model/session-info.model.js +0 -239
- package/esm5/lib/pipes/dts-date-format.pipe.js +0 -36
- package/esm5/lib/services/breadcrumb-control.service.js +0 -157
- package/esm5/lib/services/cache-params.service.js +0 -61
- package/esm5/lib/services/menu-datasul.service.js +0 -92
- package/esm5/lib/services/profile.service.js +0 -146
- package/esm5/lib/services/report.service.js +0 -137
- package/esm5/lib/services/session-info.service.js +0 -64
- package/esm5/lib/services/translate.service.js +0 -47
- package/esm5/lib/utils/date.util.js +0 -135
- package/esm5/lib/utils/disclaimer.util.js +0 -930
- package/esm5/lib/utils/field-validation.util.js +0 -358
- package/esm5/lib/utils/file.util.js +0 -251
- package/esm5/lib/utils/filter-range.util.js +0 -69
- package/esm5/lib/utils/generic-functions.utils.js +0 -358
- package/esm5/public-api.js +0 -37
- package/fesm5/dts-backoffice-util.js +0 -3933
- package/fesm5/dts-backoffice-util.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ng://dts-backoffice-util/lib/services/session-info.service.ts","ng://dts-backoffice-util/lib/services/profile.service.ts","ng://dts-backoffice-util/lib/services/report.service.ts","ng://dts-backoffice-util/lib/services/breadcrumb-control.service.ts","ng://dts-backoffice-util/lib/services/menu-datasul.service.ts","ng://dts-backoffice-util/lib/services/cache-params.service.ts","ng://dts-backoffice-util/lib/services/translate.service.ts","ng://dts-backoffice-util/lib/utils/date.util.ts","ng://dts-backoffice-util/lib/utils/disclaimer.util.ts","ng://dts-backoffice-util/lib/utils/field-validation.util.ts","ng://dts-backoffice-util/lib/utils/filter-range.util.ts","ng://dts-backoffice-util/lib/utils/generic-functions.utils.ts","ng://dts-backoffice-util/lib/utils/file.util.ts","ng://dts-backoffice-util/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.ts","ng://dts-backoffice-util/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.ts","ng://dts-backoffice-util/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.ts","ng://dts-backoffice-util/lib/pipes/dts-date-format.pipe.ts","ng://dts-backoffice-util/lib/dts-backoffice-util.module.ts"],"names":["UserLoginService","http","this","apiUrl","userLogin","undefined","prototype","getUserLogin","_this","localStorage","getItem","of","get","pipe","map","response","userName","Injectable","args","providedIn","HttpClient","STRING","JSON","ProfileService","apiURL","setProfile","profile","pageId","userCode","post","headers","X-PO-Screen-Lock","getProfileAsString","showLoading","getProfile","EDataType","getProfileAsJSON","dataType","dataCode","preference","data","dataValue","parse","ReportService","httpClient","URL","window","location","href","indexOf","generate","params","reportURL","reportName","properties","length","forEach","property","index","name","value","dialect","format","programName","downloadName","responseType","report","download","file","fileName","binaryData","downloadLink","document","createElement","urlDownload","createObjectURL","Blob","type","setAttribute","body","appendChild","click","revokeObjectURL","remove","BreadcrumbControlService","newBreadcrumb","breadcrumb","items","addBreadcrumb","literal","activatedRoute","addBreadcrumbURL","decodeURIComponent","snapshot","url","breadcrumbAux","idx","label","push","link","updBreadcrumbURL","valueOld","valueNew","currentRouterURL","getCurrentRouter","replace","getBreadcrumb","getPrevRouter","hasPreviousRouter","MenuDatasulService","callProgress","program","parent","postMessage","sendNotification","notification","openPath","datasulPath","referrer","baseUrl","open","CacheParamsService","values","setValue","key","getValue","removeValue","TranslateService","getSuportLanguage","getDefaultCurrencyCode","getCurrentLanguage","locale","navigator","language","includes","DateUtil","dateToQueryParam","date","iDay","getDate","iMonth","getMonth","getFullYear","pad","queryParamToDate","param","split","iYear","Date","isValidDate","isNaN","getTime","ajustDate","ajustDateToModel","fieldName","hasOwnProperty","number","DisclaimerUtil","poNotification","poI18nPipe","literals","makeDisclaimer","hideClose","tradValue","vldBlank","makeDisclaimerFromNumber","makeDisclaimerFromBoolean","makeDisclaimerFromDate","dDate","toLocaleDateString","makeDisclaimerFromMultiSelect","lstLabels","lstValues","item","makeDisclaimerFromMultiSelectNumber","options","opt","find","itOpt","makeDisclaimerFromCheckboxGroup","checkParam","makeDisclaimerFromRangeCharacter","validateEqual","valInitial","iniInitial","valFinal","iniFinal","transform","makeDisclaimerFromRangeNumber","makeDisclaimerFromRangeDate","valInitDate","valFinalDate","atzCharFromDisclamer","disclaimers","defaultValue","returnValue","atzNumberFromDisclamer","atzBooleanFromDisclamer","disclaimerFind","atzDateFromDisclamer","atzMultiSelectCharFromDisclamer","atzMultiSelectFromDisclamer","atzMultiSelectNumberFromDisclamer","itemOpt","atzCheckboxFromDisclamer","atzRangeCharFromDisclamer","rangeChar","atzRangeCharFromQueryParam","atzRangeNumFromDisclamer","rangeNum","atzRangeNumFromQueryParam","atzRangeDateFromDisclamer","rangeDate","atzRangeDateFromQueryParam","FieldValidationUtil","disclaimerUtil","vldFieldCharacter","field","trim","error","message","vldRangeCharacter","initialField","finalField","initialValue","finalValue","toUpperCase","vldFieldNumber","vldValue","zeroAccept","vldValueOfNumber","toString","vldFieldPercent","vldValueOfPercent","vldRangeNumber","vldFieldDate","valDate","vldRangeDate","vldFieldMultiSelect","vldFieldCheckbox","vldFieldFormat","replacePoint","oldFormat","lOK","FilterRangeUtil","makeFilterRangeCharacter","makeFilterRangeNumber","makeFilterRangeDate","GenericFunctionsUtils","listToArrayCharacter","list","returnArray","Array","ArrayToListCharacter","array","join","isEmpty","object","content","getChartValues","chartData","chartValues","maxValue","minValue","Math","round","atzMultiSelectListByOptions","newList","findIndex","itemOptions","loadOptionsMultiSelect","loadOptionsSelect","selectValue","compareObjects","firstObject","secondObject","Object","getOwnPropertyNames","substr","referenceGeneration","charInd","dateRef","random","btoa","slice","focusInternalInput","idField","getElementById","getElementsByClassName","focus","FileUtil","downloadFile","datab64","contentType","dataBlob","b64toBlob","downloadData","dwldDataParam","DownloadDataParams","columnDelimiter","columnList","columnExclude","jsonToString","userAgent","msSaveOrOpenBlob","b64Data","sliceSize","byteCharacters","atob","byteArrays","offset","byteNumbers","i","charCodeAt","byteArray","Uint8Array","jsonData","includeKey","columnHeader","keys","reduce","accLineStr","currentItem","first","columnValue","toLocaleString","stringify","ScheduleParameters","ExecutionStatus","ExecutionParameters","TotvsScheduleExecutionService","urlCadServidor","urlJobScheduler","urlJobExecution","getFilteredItems","urlParams","pageSize","page","filter","getObjectByValue","id","createExecution","parameters","loading","createExecutionForNow","executionParams","jobScheduleParams","businessParams","chave","valor","status","processID","firstExecution","addZero","getHours","getMinutes","recurrent","executionParameter","parametros","executionServer","externalName","programEMS5","programVersion","parametros_negocio","getExecutionByJobScheduleID","jobScheduleID","getExecution","transformExecution","getExecutionByExecutionID","executionID","execStatus","startedDate","followUpExcByJobScheduleID","intervalNum","fncCallBack","followUpExecution","followUpExcByExecutionID","execID","jobExecutionSubscription$","intervalID","setInterval","subscribe","followUpExecReturnOk","followUpExecReturnError","clearInterval","erroDesc","HttpErrorResponse","code","detailedMessage","num","str","TotvsScheduleExecutionComponent","poI18nService","rpwService","disabledParams","endExecution","EventEmitter","jsonObject","ngOnInit","setupComponents","executionTypeOptions","frequencyOptions","frequencyTypeOptions","weeklyOptions","zoomRpwServiceColumns","width","model","executionType","repeatType","repeatExecution","setScheduleParameters","schParam","fieldRpwServiceFormat","isExecutionSchedule","isRepeatExecution","isFrenquency","frequency","changeRepeatExecution","execAppointHourInit","execAppointHourFinal","selectWeeklys","dayOfMonth","frequencyType","frequencyValue","changeExecutionType","execAppointDate","execAppointHour","changeTypeFrequency","getActiveTab","codTab","setActiveTab","executeSchedule","validate","success","daily","hour","getHourOrMinute","minute","weekly","daysOfWeek","monthly","day","rangeExecutions","rangeLimit","emit","substring","compareHour","hourInit","hourFinal","scheduleExecutionForm","valid","Component","selector","template","PoI18nService","PoNotificationService","ViewChild","static","Input","Output","DtsDateFormatPipe","_a","year","month","Pipe","DtsBackofficeUtilsModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","PoModule","FormsModule","HttpClientModule","exports","XLSX","PDF","DOCX","HTML"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ISessionInfo } from '../model/session-info.model';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserLoginService {\r\n\r\n readonly apiUrl = '/totvs-menu/rest/getSessionInfo';\r\n userLogin = undefined;\r\n\r\n constructor(public http: HttpClient) { }\r\n\r\n getUserLogin(): Observable<string> {\r\n if (localStorage.getItem('username')) {\r\n return of(localStorage.getItem('username'));\r\n }\r\n\r\n if (this.userLogin) {\r\n return of(this.userLogin);\r\n } else {\r\n return this.http.get<ISessionInfo>(`${this.apiUrl}`)\r\n .pipe(map((response) => {\r\n this.userLogin = response.userName;\r\n return response.userName;\r\n }));\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport interface IProfile {\r\n pageId: string;\r\n dataCode: string;\r\n userCode: string;\r\n dataValue?: string;\r\n}\r\n\r\nexport interface IProfileResponse {\r\n message: Array<string>;\r\n length: number;\r\n data: Array<any>;\r\n}\r\n\r\nenum EDataType {\r\n STRING = 1,\r\n JSON = 2\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProfileService {\r\n\r\n readonly apiURL = '/dts/datasul-rest/resources/api/btb/btapi930za';\r\n\r\n constructor(public http: HttpClient) { }\r\n\r\n setProfile(profile: IProfile): Observable<any> {\r\n const headers = { 'X-PO-Screen-Lock': 'true' };\r\n const { pageId, userCode } = profile;\r\n\r\n return this.http\r\n .post<any>(`${this.apiURL}/setProfile?userCode=${userCode}&pageId=${pageId}`, profile, { headers });\r\n\r\n }\r\n\r\n getProfileAsString(profile: IProfile, showLoading?: boolean): Observable<string> {\r\n return this.getProfile(profile, EDataType.STRING, showLoading ? 'true' : 'false');\r\n }\r\n\r\n getProfileAsJSON(profile: IProfile, showLoading?: boolean): Observable<object> {\r\n return this.getProfile(profile, EDataType.JSON, showLoading ? 'true' : 'false');\r\n }\r\n\r\n private getProfile(profile: IProfile, dataType: EDataType, showLoading?: string): Observable<any> {\r\n const headers = { 'X-PO-Screen-Lock': showLoading };\r\n const { pageId, dataCode, userCode } = profile;\r\n\r\n return this.http\r\n .get<IProfileResponse>(`${this.apiURL}/getProfile?userCode=${userCode}&pageId=${pageId}&dataCode=${dataCode}`,\r\n { headers })\r\n .pipe(map(preference => {\r\n if (preference.data[0]) {\r\n if (dataType === EDataType.STRING) {\r\n return preference.data[0].dataValue;\r\n }\r\n\r\n if (dataType === EDataType.JSON) {\r\n return JSON.parse(preference.data[0].dataValue);\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n }));\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport interface IProperty {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport interface IReportServiceParams {\r\n reportName: string; // Nome do rptDesign\r\n programName: string; // Programa Progress\r\n properties: Array<IProperty>;\r\n dialect: string;\r\n downloadName: string;\r\n download: boolean;\r\n format: ReportFormats;\r\n}\r\n\r\nexport enum ReportFormats {\r\n XLSX = 'xlsx',\r\n PDF = 'pdf',\r\n DOCX = 'docx',\r\n HTML = 'html'\r\n}\r\n\r\n@Injectable()\r\n\r\nexport class ReportService {\r\n public readonly URL = window.location.href.indexOf('totvs-menu') > 0 ? '/totvs-menu/rest/report/run/'\r\n : '/dts/datasul-report/resources/run/';\r\n\r\n constructor(public httpClient: HttpClient) { }\r\n\r\n generate(params: IReportServiceParams, showLoading: boolean = true): Observable<Blob> {\r\n const headers = { 'X-PO-Screen-Lock': showLoading ? 'true' : 'false' };\r\n\r\n let reportURL = `${this.URL}${params.reportName}`;\r\n\r\n if (params.properties.length > 0) {\r\n reportURL += '?';\r\n\r\n params.properties.forEach((property: IProperty, index: number) => {\r\n if (index > 0) {\r\n reportURL += '&';\r\n }\r\n reportURL += `c_properties=${property.name}&c_values=${property.value}`;\r\n });\r\n }\r\n\r\n reportURL += `&dialect=${params.dialect}&format=${params.format}`;\r\n reportURL += `&program=${params.programName}&resultFileName=${params.downloadName}`;\r\n\r\n return this.httpClient.post(reportURL, {}, { headers, responseType: 'blob' })\r\n .pipe(map(report => {\r\n if (params.download) {\r\n this.download(report, `${params.downloadName}.${params.format}`);\r\n }\r\n return report;\r\n }));\r\n }\r\n\r\n download(file: Blob, fileName: string) {\r\n const binaryData = [file];\r\n const downloadLink = document.createElement('a');\r\n const urlDownload = window.URL.createObjectURL(new Blob(binaryData, { type: file.type }));\r\n\r\n downloadLink.href = urlDownload;\r\n downloadLink.setAttribute('download', fileName);\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n window.URL.revokeObjectURL(urlDownload);\r\n downloadLink.remove();\r\n }\r\n}\r\n","/*\r\nVersão: 1.003\r\nData Criação: 06/08/2018\r\n*/\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { PoBreadcrumb } from '@po-ui/ng-components';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class BreadcrumbControlService {\r\n breadcrumb: PoBreadcrumb;\r\n\r\n constructor() { }\r\n\r\n public newBreadcrumb(): void {\r\n this.breadcrumb = { items: [] };\r\n }\r\n\r\n public addBreadcrumb(literal: string, activatedRoute: ActivatedRoute): void {\r\n this.addBreadcrumbURL(literal, decodeURIComponent(activatedRoute.snapshot['_routerState'].url));\r\n }\r\n\r\n public addBreadcrumbURL(literal: string, url: string): void {\r\n if (!literal || literal === '') { return; }\r\n if (!this.breadcrumb) { this.newBreadcrumb(); }\r\n\r\n const breadcrumbAux = { items: [] };\r\n\r\n let idx = 0;\r\n for (idx = 0; idx < this.breadcrumb.items.length; idx++) {\r\n if (this.breadcrumb.items[idx].label !== literal) {\r\n breadcrumbAux.items.push(this.breadcrumb.items[idx]);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n breadcrumbAux.items.push({ label: literal, link: url });\r\n\r\n this.breadcrumb = breadcrumbAux;\r\n }\r\n\r\n public updBreadcrumbURL(literal: string, valueOld: string, valueNew: string): void {\r\n let currentRouterURL = this.getCurrentRouter();\r\n\r\n if (!currentRouterURL) { return; }\r\n if (!valueOld) { return; }\r\n if (!valueNew) { return; }\r\n\r\n currentRouterURL = currentRouterURL.replace(valueOld, valueNew);\r\n this.addBreadcrumbURL(literal, currentRouterURL);\r\n }\r\n\r\n public getBreadcrumb(): PoBreadcrumb {\r\n if (!this.breadcrumb) { this.newBreadcrumb(); }\r\n return this.breadcrumb;\r\n }\r\n\r\n public getCurrentRouter(): string {\r\n if (!this.breadcrumb) { this.newBreadcrumb(); }\r\n if (this.breadcrumb.items.length <= 0) { return ''; }\r\n\r\n return this.breadcrumb.items[this.breadcrumb.items.length - 1].link;\r\n }\r\n\r\n public getPrevRouter(): string {\r\n if (!this.breadcrumb) { this.newBreadcrumb(); }\r\n if (this.breadcrumb.items.length <= 1) { return ''; }\r\n\r\n return this.breadcrumb.items[this.breadcrumb.items.length - 2].link;\r\n }\r\n\r\n public hasPreviousRouter(): boolean {\r\n return this.breadcrumb.items.length > 1;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class MenuDatasulService {\r\n\r\n constructor() { }\r\n\r\n /**\r\n * var program = {};\r\n * program['prg'] = \"cd0210\";\r\n * program['params'] = '01|123456'\r\n */\r\n public callProgress(program) {\r\n parent.postMessage({ program }, '*');\r\n }\r\n\r\n /**\r\n * var notification = {};\r\n * notification['type'] = 'success';\r\n * notification['title'] = 'Notification Title'\r\n * notification['detail'] = 'Notification Detail'\r\n */\r\n public sendNotification(notification) {\r\n parent.postMessage({ notification }, '*');\r\n }\r\n\r\n public openPath(programName: string, params: any, parent = true): void {\r\n const datasulPath = document.referrer.indexOf('totvs-menu') > 0 ? 'totvs-menu' : 'menu-html';\r\n let baseUrl = `/${datasulPath}/#/${datasulPath}/program-html/${programName}/#`;\r\n\r\n if (params) {\r\n baseUrl = `${baseUrl}/${params}`;\r\n }\r\n\r\n if (parent) {\r\n window.open(baseUrl, '_parent');\r\n } else {\r\n window.open(baseUrl);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class CacheParamsService {\r\n\r\n values = {};\r\n\r\n constructor() { }\r\n\r\n public setValue(key: string, value: any) {\r\n this.values[key] = value;\r\n }\r\n\r\n public getValue(key: string): any {\r\n return this.values[key];\r\n }\r\n\r\n public removeValue(key: string): void {\r\n delete this.values[key];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class TranslateService {\r\n\r\n static getSuportLanguage() {\r\n return ['pt-BR', 'pt', 'en-US', 'en', 'es'];\r\n }\r\n\r\n static getDefaultCurrencyCode() {\r\n return '$';\r\n }\r\n\r\n static getCurrentLanguage() {\r\n const locale = localStorage.getItem('user.language') || navigator.language;\r\n\r\n if (locale && this.getSuportLanguage().includes(locale)) { return locale; }\r\n\r\n return 'en-US';\r\n }\r\n}\r\n","/*\r\nVersão: 1.000\r\nData Criação: 18/04/2019\r\n*/\r\n\r\nexport class DateUtil {\r\n\r\n constructor(\r\n ) { }\r\n\r\n /* Transforma data para o padrão YYYY-MM-DD */\r\n static dateToQueryParam(date: Date): string {\r\n const iDay = date.getDate();\r\n const iMonth = date.getMonth() + 1;\r\n const iYear = date.getFullYear();\r\n\r\n return `${iYear}-${this.pad(iMonth)}-${this.pad(iDay)}`;\r\n }\r\n\r\n /* Transforma data no padrão YYYY-MM-DD para DATE */\r\n static queryParamToDate(param: string): Date {\r\n const iDay = +param.split('-')[2];\r\n const iMonth = +param.split('-')[1];\r\n const iYear = +param.split('-')[0];\r\n\r\n return new Date(iYear, iMonth - 1, iDay);\r\n }\r\n\r\n /* Valida se foi informado uma data válida */\r\n static isValidDate(date: Date) {\r\n return date instanceof Date && !isNaN(date.getTime());\r\n }\r\n\r\n /* Ajusta a data retornando o padrão DATE */\r\n static ajustDate(param: any): Date {\r\n if (param instanceof Date) { return param; }\r\n if (!param) { return param; }\r\n\r\n return this.queryParamToDate(param.split('T')[0]);\r\n }\r\n\r\n /* Ajusta a data para o padrão DATE - utilizada nos construtores dos modelos */\r\n static ajustDateToModel(values: Object = {}, fieldName: string): Date {\r\n if (values.hasOwnProperty(fieldName) && (values[fieldName])) {\r\n if (values[fieldName].indexOf('T') >= 0) {\r\n return new Date(values[fieldName]);\r\n }\r\n\r\n const iDay = +values[fieldName].split('-')[2];\r\n const iMonth = +values[fieldName].split('-')[1];\r\n const iYear = +values[fieldName].split('-')[0];\r\n return new Date(iYear, iMonth - 1, iDay);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /* Adicona zero a esquerda do número */\r\n static pad(number) {\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n return number;\r\n }\r\n}\r\n","/*\r\nVersão: 1.009\r\nData Criação: 06/08/2018\r\n*/\r\n\r\nimport { PoDisclaimer, PoI18nPipe, PoCheckboxGroupOption, PoMultiselectOption } from '@po-ui/ng-components';\r\nimport { IFilterRangeCharacter, IFilterRangeNumber, IFilterRangeDate } from '../../lib/interfaces/filter-range.interface';\r\nimport { PoNotificationService } from '@po-ui/ng-components';\r\n\r\nexport class DisclaimerUtil {\r\n poNotification: PoNotificationService;\r\n poI18nPipe: PoI18nPipe;\r\n literals: any = {};\r\n\r\n constructor(\r\n poNotification: PoNotificationService,\r\n poI18nPipe: PoI18nPipe,\r\n literals: Object\r\n ) {\r\n this.poNotification = poNotification;\r\n this.poI18nPipe = poI18nPipe;\r\n this.literals = literals;\r\n }\r\n\r\n public makeDisclaimer(property: string, value: string, hideClose = false, tradValue = false, vldBlank = false): PoDisclaimer {\r\n if (value === null || value === undefined) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (vldBlank && value === '') {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${tradValue ? this.literals[value] : value}`,\r\n property: `${property}`,\r\n value: `${value}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromNumber(property: string, value: number, hideClose = false, vldBlank = false): PoDisclaimer {\r\n if (value === null || value === undefined) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (vldBlank && value === 0) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${value}`,\r\n property: `${property}`,\r\n value: `${value}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromBoolean(property: string, value: boolean, hideClose = false): PoDisclaimer {\r\n if (value === null || value === undefined) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${value ? this.literals['yes'] : this.literals['no']}`,\r\n property: `${property}`,\r\n value: `${value}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromDate(property: string, value: Date, hideClose = false): PoDisclaimer {\r\n const dDate: Date = this.ajustDate(value);\r\n\r\n if (!this.isValidDate(dDate)) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${dDate.toLocaleDateString()}`,\r\n property: `${property}`,\r\n value: `${this.dateToQueryParam(dDate)}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromMultiSelect(property: string, value: Array<any>, length = 0,\r\n hideClose = false, tradValue = false): PoDisclaimer {\r\n let lstLabels = '';\r\n let lstValues = '';\r\n\r\n if (!value) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (value.length === 0 || (length > 0 && value.length === length)) {\r\n lstLabels = this.literals['all'];\r\n lstValues = 'all';\r\n } else {\r\n value.map(item => {\r\n if (lstLabels !== '') { lstLabels = `${lstLabels}, `; }\r\n if (lstValues !== '') { lstValues = `${lstValues},`; }\r\n lstLabels = `${lstLabels}${tradValue ? this.literals[item] : item}`;\r\n lstValues = `${lstValues}${item}`;\r\n });\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${lstLabels}`,\r\n property: `${property}`,\r\n value: `${lstValues}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromMultiSelectNumber(property: string, value: Array<any>, options: Array<any>,\r\n length = 0, hideClose = false): PoDisclaimer {\r\n let lstLabels = '';\r\n let lstValues = '';\r\n let opt = null;\r\n\r\n if (!value || !options) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (value.length === 0 || (length > 0 && value.length === length)) {\r\n lstLabels = this.literals['all'];\r\n lstValues = 'all';\r\n } else {\r\n value.map(item => {\r\n if (lstLabels !== '') { lstLabels = `${lstLabels}, `; }\r\n if (lstValues !== '') { lstValues = `${lstValues},`; }\r\n\r\n opt = options.find(itOpt => itOpt.value === item);\r\n lstLabels = `${lstLabels}${opt ? opt.label : item}`;\r\n lstValues = `${lstValues}${item}`;\r\n });\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${lstLabels}`,\r\n property: `${property}`,\r\n value: `${lstValues}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromCheckboxGroup(property: string, value: Array<string>, length = 0, hideClose = false): PoDisclaimer {\r\n let lstLabels = '';\r\n let lstValues = '';\r\n\r\n if (!value) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (value.length === 0) {\r\n lstLabels = this.literals['none'];\r\n lstValues = 'none';\r\n } else if (length > 0 && value.length === length) {\r\n lstLabels = this.literals['all'];\r\n lstValues = 'all';\r\n } else {\r\n value.map(checkParam => {\r\n if (lstLabels !== '') { lstLabels = `${lstLabels}, `; }\r\n if (lstValues !== '') { lstValues = `${lstValues},`; }\r\n lstLabels = `${lstLabels}${this.literals[checkParam]}`;\r\n lstValues = `${lstValues}${checkParam}`;\r\n });\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${lstLabels}`,\r\n property: `${property}`,\r\n value: `${lstValues}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromRangeCharacter(property: string, value: IFilterRangeCharacter, hideClose = false,\r\n validateEqual = true): PoDisclaimer {\r\n if (value.valInitial === null || value.valInitial === undefined) { value.valInitial = value.iniInitial; }\r\n if (value.valFinal === null || value.valFinal === undefined) { value.valFinal = value.iniFinal; }\r\n\r\n if (validateEqual &&\r\n value.iniInitial === value.valInitial &&\r\n value.iniFinal === value.valFinal) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: this.poI18nPipe.transform(\r\n this.literals['filterRange'],\r\n [this.literals[property], `'${value.valInitial}'`, `'${value.valFinal}'`]),\r\n property: `${property}`,\r\n value: `${value.valInitial};${value.valFinal}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromRangeNumber(property: string, value: IFilterRangeNumber, hideClose = false,\r\n validateEqual = true): PoDisclaimer {\r\n if (value.valInitial === null || value.valInitial === undefined) { value.valInitial = value.iniInitial; }\r\n if (value.valFinal === null || value.valFinal === undefined) { value.valFinal = value.iniFinal; }\r\n\r\n if (validateEqual &&\r\n value.iniInitial === value.valInitial &&\r\n value.iniFinal === value.valFinal) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: this.poI18nPipe.transform(\r\n this.literals['filterRange'],\r\n [this.literals[property], value.valInitial, value.valFinal]),\r\n property: `${property}`,\r\n value: `${value.valInitial};${value.valFinal}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromRangeDate(property: string, value: IFilterRangeDate, hideClose = false, validateEqual = true): PoDisclaimer {\r\n let valInitDate: Date = this.ajustDate(value.valInitial);\r\n let valFinalDate: Date = this.ajustDate(value.valFinal);\r\n\r\n if (!this.isValidDate(valInitDate)) {\r\n valInitDate = value.iniInitial;\r\n value.valInitial = value.iniInitial;\r\n }\r\n if (!this.isValidDate(valFinalDate)) {\r\n valFinalDate = value.iniFinal;\r\n value.valFinal = value.iniFinal;\r\n }\r\n\r\n if (validateEqual &&\r\n this.dateToQueryParam(value.iniInitial) === this.dateToQueryParam(valInitDate) &&\r\n this.dateToQueryParam(value.iniFinal) === this.dateToQueryParam(valFinalDate)) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: this.poI18nPipe.transform(\r\n this.literals['filterRange'],\r\n [this.literals[property], valInitDate.toLocaleDateString(), valFinalDate.toLocaleDateString()]),\r\n property: `${property}`,\r\n value: `${this.dateToQueryParam(valInitDate)};${this.dateToQueryParam(valFinalDate)}`\r\n };\r\n }\r\n\r\n public atzCharFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string, defaultValue: string): string {\r\n let returnValue = defaultValue;\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n\r\n returnValue = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzNumberFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string, defaultValue: number): number {\r\n let returnValue = defaultValue;\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n\r\n returnValue = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzBooleanFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string, defaultValue: boolean): boolean {\r\n const returnValue = defaultValue;\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n const disclaimerFind = disclaimers.find((item) => item.property === property);\r\n if (disclaimerFind && disclaimerFind.value !== null && disclaimerFind.value !== undefined) {\r\n if (disclaimerFind.value === 'true') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n public atzDateFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string, defaultValue: Date): Date {\r\n let returnValue: Date = this.ajustDate(defaultValue);\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n\r\n returnValue = this.ajustDate(item.value);\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzMultiSelectCharFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n defaultValue: Array<PoMultiselectOption>): Array<string> {\r\n return this.atzMultiSelectFromDisclamer('char', disclaimers, property, defaultValue);\r\n }\r\n\r\n public atzMultiSelectNumberFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n defaultValue: Array<PoMultiselectOption>): Array<number> {\r\n return this.atzMultiSelectFromDisclamer('number', disclaimers, property, defaultValue);\r\n }\r\n\r\n public atzMultiSelectFromDisclamer(type: string, disclaimers: Array<PoDisclaimer>, property: string,\r\n defaultValue: Array<PoMultiselectOption>): Array<any> {\r\n\r\n let returnValue = [];\r\n defaultValue.map(item => {\r\n returnValue.push(item.value);\r\n });\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null || item.value === 'all' || item.value === 'none') { return false; }\r\n\r\n returnValue = [];\r\n item.value.split(',').forEach(itemOpt => {\r\n if (type === 'char') { returnValue.push(itemOpt); }\r\n if (type === 'number') { returnValue.push(+itemOpt); }\r\n });\r\n\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzCheckboxFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n options: Array<PoCheckboxGroupOption>): Array<string> {\r\n\r\n let returnValue = [];\r\n options.map(item => {\r\n returnValue.push(item.value);\r\n });\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null || item.value === 'all' || item.value === 'none') { return false; }\r\n\r\n returnValue = [];\r\n item.value.split(',').forEach(itemOpt => {\r\n returnValue.push(itemOpt);\r\n });\r\n\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzRangeCharFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n rangeChar: IFilterRangeCharacter): IFilterRangeCharacter {\r\n let value = '';\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n value = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return this.atzRangeCharFromQueryParam(value, rangeChar);\r\n }\r\n\r\n public atzRangeNumFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n rangeNum: IFilterRangeNumber): IFilterRangeNumber {\r\n let value = '';\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n value = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return this.atzRangeNumFromQueryParam(value, rangeNum);\r\n }\r\n\r\n public atzRangeDateFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n rangeDate: IFilterRangeDate): IFilterRangeDate {\r\n let value = '';\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n value = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return this.atzRangeDateFromQueryParam(value, rangeDate);\r\n }\r\n\r\n public atzRangeCharFromQueryParam(value: string, rangeChar: IFilterRangeCharacter): IFilterRangeCharacter {\r\n rangeChar.valInitial = rangeChar.iniInitial;\r\n rangeChar.valFinal = rangeChar.iniFinal;\r\n\r\n if (!value || value === '') { return rangeChar; }\r\n\r\n rangeChar.valInitial = value.split(';')[0];\r\n rangeChar.valFinal = value.split(';')[1];\r\n if (rangeChar.valFinal === null || rangeChar.valFinal === undefined) { rangeChar.valFinal = rangeChar.iniFinal; }\r\n\r\n return rangeChar;\r\n }\r\n\r\n public atzRangeNumFromQueryParam(value: string, rangeNum: IFilterRangeNumber): IFilterRangeNumber {\r\n rangeNum.valInitial = rangeNum.iniInitial;\r\n rangeNum.valFinal = rangeNum.iniFinal;\r\n\r\n if (!value || value === '') { return rangeNum; }\r\n\r\n rangeNum.valInitial = +value.split(';')[0];\r\n rangeNum.valFinal = +value.split(';')[1];\r\n if (rangeNum.valFinal === null || rangeNum.valFinal === undefined) { rangeNum.valFinal = rangeNum.iniFinal; }\r\n\r\n return rangeNum;\r\n }\r\n\r\n public atzRangeDateFromQueryParam(value: string, rangeDate: IFilterRangeDate): IFilterRangeDate {\r\n rangeDate.valInitial = rangeDate.iniInitial;\r\n rangeDate.valFinal = rangeDate.iniFinal;\r\n\r\n if (!value || value === '') { return rangeDate; }\r\n\r\n rangeDate.valInitial = this.queryParamToDate(value.split(';')[0]);\r\n rangeDate.valFinal = this.queryParamToDate(value.split(';')[1]);\r\n if (rangeDate.valFinal === null || rangeDate.valFinal === undefined) { rangeDate.valFinal = rangeDate.iniFinal; }\r\n\r\n return rangeDate;\r\n }\r\n\r\n public dateToQueryParam(date: Date): string {\r\n const iDay = date.getDate();\r\n const iMonth = date.getMonth() + 1;\r\n const iYear = date.getFullYear();\r\n\r\n return `${iYear}-${this.pad(iMonth)}-${this.pad(iDay)}`;\r\n }\r\n\r\n public queryParamToDate(param: string): Date {\r\n const iDay = +param.split('-')[2];\r\n const iMonth = +param.split('-')[1];\r\n const iYear = +param.split('-')[0];\r\n\r\n return new Date(iYear, iMonth - 1, iDay);\r\n }\r\n\r\n public isValidDate(date: Date) {\r\n return date instanceof Date && !isNaN(date.getTime());\r\n }\r\n\r\n public ajustDate(param: any): Date {\r\n if (param instanceof Date) { return param; }\r\n if (!param) { return param; }\r\n\r\n return this.queryParamToDate(param.split('T')[0]);\r\n }\r\n\r\n public pad(number) {\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n return number;\r\n }\r\n}\r\n","/*\r\nVersão: 1.002\r\nData Criação: 19/02/2019\r\n*/\r\n\r\nimport { PoNotificationService, PoI18nPipe } from '@po-ui/ng-components';\r\nimport { DisclaimerUtil } from './disclaimer.util';\r\n\r\nexport class FieldValidationUtil {\r\n poNotification: PoNotificationService;\r\n poI18nPipe: PoI18nPipe;\r\n literals: any = {};\r\n\r\n disclaimerUtil: DisclaimerUtil;\r\n\r\n constructor(\r\n poNotification: PoNotificationService,\r\n poI18nPipe: PoI18nPipe,\r\n literals: Object\r\n ) {\r\n this.poNotification = poNotification;\r\n this.poI18nPipe = poI18nPipe;\r\n this.literals = literals;\r\n this.disclaimerUtil = new DisclaimerUtil(this.poNotification, this.poI18nPipe, this.literals);\r\n }\r\n\r\n public vldFieldCharacter(field: string, value: string): boolean {\r\n if (!value || value.trim() === '') {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRequered'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Valida uma faixa de caracteres se o inicial é menor que final\r\n public vldRangeCharacter(initialField: string, finalField: string, initialValue: string, finalValue: string): boolean {\r\n if (!initialValue || !finalValue) {\r\n return true;\r\n }\r\n\r\n if (initialValue.trim().toUpperCase() > finalValue.trim().toUpperCase()) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRange'],\r\n [this.literals[initialField], this.literals[finalField]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldNumber(field: string, value: number, vldValue = false, zeroAccept = false): boolean {\r\n if (vldValue && !this.vldValueOfNumber(field, value)) {\r\n return false;\r\n }\r\n\r\n if ((!value) || value <= 0) {\r\n if (value === 0 && zeroAccept === true) {\r\n return true;\r\n }\r\n\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRequered'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldValueOfNumber(field: string, value: number): boolean {\r\n if (value && value < 0) {\r\n this.poNotification.error(\r\n { message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldPercent(field: string, value: number, vldValue = false): boolean {\r\n if (vldValue && !this.vldValueOfPercent(field, value)) {\r\n return false;\r\n }\r\n\r\n if (!this.vldFieldNumber(field, value)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldValueOfPercent(field: string, value: number): boolean {\r\n if (value && value < 0) {\r\n this.poNotification.error(\r\n { message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });\r\n return false;\r\n }\r\n\r\n if (value && value > 100) {\r\n this.poNotification.error(\r\n { message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Valida uma faixa de números se o inicial é menor que final\r\n public vldRangeNumber(initialField: string, finalField: string, initialValue: number, finalValue: number): boolean {\r\n if (!initialValue) { initialValue = 0; }\r\n if (!finalValue) { finalValue = 0; }\r\n\r\n if (initialValue > finalValue) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRange'],\r\n [this.literals[initialField], this.literals[finalField]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldDate(field: string, value: Date): boolean {\r\n const valDate = this.disclaimerUtil.ajustDate(value);\r\n\r\n if (!this.disclaimerUtil.isValidDate(valDate)) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldDate'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Valida uma faixa de datas se o inicial é menor que final\r\n public vldRangeDate(initialField: string, finalField: string, initialValue: Date, finalValue: Date): boolean {\r\n if (!initialValue || !finalValue) {\r\n return true;\r\n }\r\n\r\n const valInitialDate = this.disclaimerUtil.ajustDate(initialValue).getTime();\r\n const valFinalDate = this.disclaimerUtil.ajustDate(finalValue).getTime();\r\n\r\n if (valInitialDate > valFinalDate) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRange'],\r\n [this.literals[initialField], this.literals[finalField]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldMultiSelect(field: string, value: Array<any>): boolean {\r\n if (!value || value.length === 0) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldSelected'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldCheckbox(field: string, value: Array<string>): boolean {\r\n if (!value || value.length === 0) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldSelected'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Valida formato conforme regra: \"9\" apenas números, \"X\" qualquer caracter, \"!\" apenas letras maiúsculas\r\n public vldFieldFormat(field: string, value: string, format: string, replacePoint = false): boolean {\r\n let lOK = true;\r\n let oldFormat: string;\r\n\r\n if (!value) { return lOK; }\r\n\r\n /*Retira os pontos do formato*/\r\n if (replacePoint) {\r\n oldFormat = format;\r\n format = format.replace(/\\./g, '');\r\n }\r\n\r\n if (value.length !== format.length) {\r\n lOK = false;\r\n } else {\r\n for (let idx = 0; idx < format.length; idx++) {\r\n if (format[idx] === '9') {\r\n if (value[idx].replace(/[0-9]/, '9') !== '9') { lOK = false; break; }\r\n }\r\n\r\n if (format[idx] === '!') {\r\n if (value[idx].replace(/[A-Z]/, 'A') !== 'A') { lOK = false; break; }\r\n }\r\n }\r\n }\r\n\r\n if (replacePoint) {\r\n format = oldFormat;\r\n }\r\n\r\n if (!lOK) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldFormat'], [this.literals[field], format])\r\n });\r\n }\r\n\r\n return lOK;\r\n }\r\n}\r\n","/*\r\nVersão: 1.000\r\nData Criação: 06/08/2018\r\n*/\r\n\r\nimport { IFilterRangeCharacter, IFilterRangeNumber, IFilterRangeDate } from '../../lib/interfaces/filter-range.interface';\r\n\r\nexport class FilterRangeUtil {\r\n\r\n constructor() {\r\n }\r\n\r\n public static makeFilterRangeCharacter(iniInitial: string, iniFinal: string): IFilterRangeCharacter {\r\n return {\r\n iniInitial,\r\n iniFinal,\r\n valInitial: iniInitial,\r\n valFinal: iniFinal\r\n };\r\n }\r\n\r\n public static makeFilterRangeNumber(iniInitial: number, iniFinal: number): IFilterRangeNumber {\r\n return {\r\n iniInitial,\r\n iniFinal,\r\n valInitial: iniInitial,\r\n valFinal: iniFinal\r\n };\r\n }\r\n\r\n public static makeFilterRangeDate(iniInitial: Date, iniFinal: Date): IFilterRangeDate {\r\n return {\r\n iniInitial,\r\n iniFinal,\r\n valInitial: iniInitial,\r\n valFinal: iniFinal\r\n };\r\n }\r\n}\r\n","/*\r\nVersão: 1.003\r\nData Criação: 18/04/2019\r\n*/\r\n\r\nimport { PoMultiselectOption, PoSelectOption } from '@po-ui/ng-components';\r\n\r\nexport interface ChartSeries {\r\n name?: string;\r\n data?: Array<number>;\r\n}\r\nexport interface ChartValues {\r\n minValue: number;\r\n maxValue: number;\r\n}\r\n\r\nexport class GenericFunctionsUtils {\r\n\r\n literals: any = {};\r\n\r\n constructor(\r\n literals: Object\r\n ) {\r\n this.literals = literals;\r\n }\r\n\r\n /* Transforma uma Lista separada por \",\" em um Array */\r\n static listToArrayCharacter(list: string): Array<string> {\r\n let returnArray = new Array<string>();\r\n\r\n if (list && list !== '') {\r\n returnArray = list.split(',');\r\n }\r\n\r\n return returnArray;\r\n }\r\n\r\n /* Transforma um Array em uma Lista separada por \",\" */\r\n static ArrayToListCharacter(array: Array<string>): string {\r\n let list = '';\r\n\r\n if (array && array.length > 0) {\r\n list = array.join(',');\r\n }\r\n\r\n return list;\r\n }\r\n\r\n static isEmpty(object: object): boolean {\r\n let isEmpty = true;\r\n\r\n for (const content in object) {\r\n if (object.hasOwnProperty(content)) {\r\n isEmpty = false;\r\n }\r\n }\r\n\r\n return isEmpty;\r\n }\r\n\r\n static getChartValues(chartData: Array<ChartSeries>): ChartValues {\r\n\r\n let chartValues: ChartValues;\r\n\r\n let maxValue,\r\n minValue;\r\n\r\n maxValue = undefined;\r\n minValue = undefined;\r\n\r\n chartData.map(item => {\r\n if (maxValue === undefined && minValue === undefined) {\r\n maxValue = item.data[0];\r\n minValue = item.data[0];\r\n } else {\r\n if (item.data < minValue) {\r\n minValue = item.data[0];\r\n }\r\n if (item.data > maxValue) {\r\n maxValue = item.data[0];\r\n }\r\n }\r\n });\r\n\r\n if (maxValue > 0 && minValue > 0) {\r\n chartValues = { maxValue: maxValue, minValue: 0 };\r\n }\r\n\r\n if (maxValue > 0 && minValue < 0) {\r\n chartValues = { maxValue: maxValue, minValue: minValue };\r\n }\r\n\r\n if (maxValue < 0 && minValue < 0) {\r\n const max = (minValue / 3) * (- 1);\r\n chartValues = { maxValue: max, minValue: minValue };\r\n }\r\n\r\n if (maxValue > 0 && minValue === 0) {\r\n chartValues = { maxValue: maxValue, minValue: 0 };\r\n }\r\n\r\n if (maxValue === 0 && minValue < 0) {\r\n const max = (minValue / 3) * (- 1);\r\n chartValues = { maxValue: max, minValue: minValue };\r\n }\r\n\r\n if (maxValue === 0 && minValue === 0) {\r\n chartValues = { maxValue: undefined, minValue: undefined };\r\n }\r\n\r\n chartValues.maxValue = Math.round(chartValues.maxValue);\r\n chartValues.minValue = Math.round(chartValues.minValue);\r\n\r\n return chartValues;\r\n }\r\n\r\n /*Deixa no list apenas o itens que existem no options*/\r\n static atzMultiSelectListByOptions(options: Array<PoMultiselectOption>, list: Array<string>): Array<string> {\r\n let idx: number;\r\n let newList: Array<string>;\r\n\r\n if (!list) {\r\n return list;\r\n }\r\n\r\n newList = new Array<string>();\r\n\r\n list.map(item => {\r\n if (item) {\r\n idx = options.findIndex(itemOptions => itemOptions.value === item);\r\n if (idx >= 0) {\r\n newList.push(item);\r\n }\r\n }\r\n });\r\n\r\n return newList;\r\n }\r\n\r\n /*Carrega o Options com os valores defaults passados como parâmetro (list)*/\r\n public loadOptionsMultiSelect(options: Array<PoMultiselectOption>, list: Array<string>): void {\r\n let idx: number;\r\n\r\n if (!list) {\r\n return;\r\n }\r\n\r\n list.map(item => {\r\n if (item) {\r\n idx = options.findIndex(itemOptions => itemOptions.value === item);\r\n if (idx === -1) {\r\n options.push({ label: item === 'all' ? this.literals['all'] : item, value: item });\r\n }\r\n }\r\n });\r\n }\r\n\r\n /*Carrega o Options com os valores defaults passados como parâmetro (list)*/\r\n public loadOptionsSelect(options: Array<PoSelectOption>, selectValue: string, tradValue = false): void {\r\n let idx: number;\r\n\r\n if (!selectValue) {\r\n return;\r\n }\r\n\r\n if (selectValue) {\r\n idx = options.findIndex(itemOptions => itemOptions.value === selectValue);\r\n if (idx === -1) {\r\n options.push({ label: tradValue ? this.literals[selectValue] : selectValue, value: selectValue });\r\n }\r\n }\r\n }\r\n\r\n /*Método que compara 2 objetos e retorna se são iguais ou diferentes*/\r\n public compareObjects(firstObject: Object, secondObject: Object): boolean {\r\n\r\n if (!firstObject || !secondObject) {\r\n return false;\r\n }\r\n\r\n /*Pega a lista de nomes dos campos do objetos e compara*/\r\n if (Object.getOwnPropertyNames(firstObject).length !== Object.getOwnPropertyNames(secondObject).length) {\r\n return false;\r\n }\r\n\r\n for (const content in firstObject) {\r\n if (content.substr(0, 1) === '$' || content.substr(0, 1) === '_') {\r\n continue;\r\n }\r\n\r\n if (firstObject[content] !== secondObject[content]) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public referenceGeneration(charInd: string, dateRef: Date): string {\r\n let reference: string;\r\n let random: string;\r\n\r\n const iDay = dateRef.getDate();\r\n const iMonth = dateRef.getMonth() + 1;\r\n const iYear = dateRef.getFullYear();\r\n\r\n reference = `${this.pad(iYear)}${this.pad(iMonth)}${this.pad(iDay)}${charInd}`;\r\n\r\n random = btoa(`${(new Date()).getTime()}`);\r\n random = random.replace(/[=]/g, '');\r\n random = random.slice(random.length - 3, random.length);\r\n\r\n return `${reference}${random}`;\r\n }\r\n\r\n public pad(number): string {\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n if (number > 99) {\r\n return (number + '').slice(2, 4);\r\n }\r\n return number;\r\n }\r\n\r\n public focusInternalInput(idField: string) {\r\n const fieldComponent = document.getElementById(idField);\r\n const fieldInput = (<HTMLScriptElement[]><any>fieldComponent.getElementsByClassName('po-input'))[0];\r\n fieldInput.focus();\r\n }\r\n}\r\n","export class FileUtil {\r\n\r\n constructor(\r\n ) { }\r\n\r\n static downloadFile(datab64: any, fileName: string, contentType?: string): void {\r\n const dataBlob = this.b64toBlob(datab64, contentType);\r\n this.download(dataBlob, fileName);\r\n }\r\n\r\n static downloadData(data: Array<any>, dwldDataParam: IDownloadDataParams = null): void {\r\n if (!data) { return; }\r\n\r\n if (!dwldDataParam) { dwldDataParam = new DownloadDataParams(); }\r\n if (!dwldDataParam.fileName) { dwldDataParam.fileName = 'data.csv'; }\r\n if (!dwldDataParam.literals) { dwldDataParam.literals = {}; }\r\n if (!dwldDataParam.columnDelimiter) { dwldDataParam.columnDelimiter = ';'; }\r\n if (!dwldDataParam.columnList) { dwldDataParam.columnList = []; }\r\n if (!dwldDataParam.columnExclude) { dwldDataParam.columnExclude = []; }\r\n\r\n const datab64 = btoa(this.jsonToString(data, dwldDataParam));\r\n this.downloadFile(datab64, dwldDataParam.fileName, 'text/csv');\r\n }\r\n\r\n private static download(file: Blob, fileName: string): void {\r\n const binaryData = [file];\r\n const downloadLink = document.createElement('a');\r\n const urlDownload = window.URL.createObjectURL(new Blob(binaryData, { type: file.type }));\r\n\r\n /**Verifica se é ie ou edge, pois o mesmo tem tratamento próprio para arquivos blob */\r\n if (navigator.userAgent.toUpperCase().indexOf('.NET') > 0 || navigator.userAgent.toUpperCase().indexOf('EDGE') > 0) {\r\n window.navigator.msSaveOrOpenBlob(file, fileName);\r\n } else {\r\n downloadLink.href = urlDownload;\r\n downloadLink.setAttribute('download', fileName);\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n window.URL.revokeObjectURL(urlDownload);\r\n downloadLink.remove();\r\n }\r\n }\r\n\r\n private static b64toBlob(b64Data: any, contentType?: string, sliceSize?: number): Blob {\r\n contentType = contentType || '';\r\n sliceSize = sliceSize || 512;\r\n\r\n const byteCharacters = atob(b64Data);\r\n const byteArrays = [];\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n\r\n const blob = new Blob(byteArrays, { type: contentType });\r\n return blob;\r\n }\r\n\r\n private static jsonToString(jsonData: Array<any>, dwldDataParam: IDownloadDataParams): string {\r\n if (!jsonData || jsonData.length === 0) { return ''; }\r\n\r\n const lineDelimiter = '\\n';\r\n\r\n let columnHeader = null;\r\n const keys = [];\r\n let includeKey: boolean;\r\n Object.keys(jsonData[0]).forEach(key => {\r\n includeKey = true;\r\n\r\n if (dwldDataParam.columnList.length > 0 && dwldDataParam.columnList.indexOf(key) === -1) {\r\n includeKey = false;\r\n }\r\n if (dwldDataParam.columnExclude.length > 0 && dwldDataParam.columnExclude.indexOf(key) !== -1) {\r\n includeKey = false;\r\n }\r\n\r\n if (includeKey) {\r\n keys.push(key);\r\n columnHeader = (!columnHeader) ? '' : columnHeader + dwldDataParam.columnDelimiter;\r\n columnHeader += (dwldDataParam.literals[key]) ? dwldDataParam.literals[key] : key;\r\n }\r\n });\r\n\r\n const lineStr = jsonData.reduce((accLineStr, currentItem) => {\r\n let first = true;\r\n let columnValue = null;\r\n\r\n keys.forEach(key => {\r\n if (!first) { accLineStr += dwldDataParam.columnDelimiter; }\r\n\r\n columnValue = currentItem[key];\r\n if (columnValue === null || columnValue === undefined) { columnValue = ''; }\r\n switch (typeof (columnValue)) {\r\n case 'number':\r\n columnValue = columnValue.toLocaleString();\r\n break;\r\n case 'boolean':\r\n columnValue = (dwldDataParam.literals[`${columnValue}`]) ?\r\n dwldDataParam.literals[`${columnValue}`] : columnValue;\r\n break;\r\n case 'object':\r\n columnValue = JSON.stringify(columnValue);\r\n }\r\n accLineStr += columnValue;\r\n\r\n first = false;\r\n });\r\n\r\n return accLineStr + lineDelimiter;\r\n\r\n }, columnHeader + lineDelimiter);\r\n\r\n return lineStr;\r\n }\r\n}\r\n\r\nexport interface IDownloadDataParams {\r\n fileName: string;\r\n literals: any;\r\n columnDelimiter: string;\r\n columnList: Array<string>;\r\n columnExclude: Array<string>;\r\n}\r\n\r\nexport class DownloadDataParams implements IDownloadDataParams {\r\n fileName: string;\r\n literals: any;\r\n columnDelimiter: string;\r\n columnList: Array<string>;\r\n columnExclude: Array<string>;\r\n}\r\n","export interface IScheduleParameters {\r\n executionType: number;\r\n execAppointDate: Date;\r\n execAppointHour: string;\r\n executionServer: string;\r\n repeatExecution: boolean;\r\n repeatType: number;\r\n frequency: string;\r\n frequencyValue: number;\r\n frequencyType: string;\r\n execAppointHourInit: string;\r\n execAppointHourFinal: string;\r\n selectWeeklys: [];\r\n dayOfMonth: number;\r\n}\r\n\r\nexport class ScheduleParameters implements IScheduleParameters {\r\n executionType: number;\r\n execAppointDate: Date;\r\n execAppointHour: string;\r\n executionServer: string;\r\n repeatExecution: boolean;\r\n repeatType: number;\r\n frequency: string;\r\n frequencyValue: number;\r\n frequencyType: string;\r\n execAppointHourInit: string;\r\n execAppointHourFinal: string;\r\n selectWeeklys: [];\r\n dayOfMonth: number;\r\n}\r\n\r\nexport interface IExecutionStatus {\r\n jobScheduleID: string;\r\n executionID: string;\r\n startedDate: Date;\r\n error: string;\r\n status: string;\r\n}\r\n\r\nexport class ExecutionStatus implements IExecutionStatus {\r\n jobScheduleID: string;\r\n executionID: string;\r\n startedDate: Date;\r\n error: string;\r\n status: string;\r\n}\r\n\r\nexport interface IExecutionParameters {\r\n executionServer: string;\r\n programName: string;\r\n externalName: string;\r\n programEMS5: boolean;\r\n programVersion: string;\r\n businessParams: Array<any>;\r\n}\r\n\r\nexport class ExecutionParameters implements IExecutionParameters {\r\n executionServer: string;\r\n programName: string;\r\n externalName: string;\r\n programEMS5: boolean;\r\n programVersion: string;\r\n businessParams: Array<any>;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { PoLookupFilteredItemsParams } from '@po-ui/ng-components';\r\nimport { ExecutionStatus, IExecutionParameters, IExecutionStatus } from './totvs-schedule-execution.model';\r\n\r\n@Injectable()\r\nexport class TotvsScheduleExecutionService {\r\n\r\n private headers = { headers: { 'X-PO-Screen-Lock': 'true' } };\r\n\r\n private urlCadServidor = '/dts/datasul-rest/resources/prg/btb/v1/servidoresExecucao';\r\n private urlJobScheduler = '/dts/datasul-rest/resources/prg/framework/v1/jobScheduler';\r\n private urlJobExecution = '/dts/datasul-rest/resources/prg/framework/v1/jobExecution';\r\n\r\n // private urlCadServidor = '/genericsZoom';\r\n // private urlJobScheduler = '/jobScheduler';\r\n\r\n private jobExecutionSubscription$: Subscription;\r\n\r\n constructor(public http: HttpClient) { }\r\n\r\n getFilteredItems(params: PoLookupFilteredItemsParams): Observable<any> {\r\n const urlParams = new Array<string>();\r\n\r\n urlParams.push(`pageSize=${params.pageSize.toString()}`);\r\n urlParams.push(`page=${params.page.toString()}`);\r\n\r\n if (params.filter && params.filter.length > 0) {\r\n urlParams.push(`quickSearch=${params.filter}`);\r\n }\r\n\r\n return this.http.get(`${this.urlCadServidor}?${urlParams.join('&')}`);\r\n }\r\n\r\n getObjectByValue(id: string): Observable<any> {\r\n return this.http.get<any>(`${this.urlCadServidor}/${id}`, this.headers);\r\n }\r\n\r\n createExecution(parameters: Object, loading: boolean): Observable<any> {\r\n const params = JSON.parse(JSON.stringify(parameters).replace(/\\\\\\\\/g, '*|'));\r\n\r\n if (loading) {\r\n return this.http.post(`${this.urlJobScheduler}`, params, this.headers);\r\n } else {\r\n return this.http.post(`${this.urlJobScheduler}`, params);\r\n }\r\n }\r\n\r\n createExecutionForNow(executionParams: IExecutionParameters, loading: boolean): Observable<any> {\r\n let jobScheduleParams: any;\r\n const date = new Date();\r\n\r\n const params = JSON.parse(JSON.stringify(executionParams).replace(/\\\\\\\\/g, '*|'));\r\n if (!params.businessParams || params.businessParams.length === 0) {\r\n params.businessParams = [{ chave: '', valor: '' }];\r\n }\r\n\r\n jobScheduleParams = {};\r\n jobScheduleParams.status = 'active';\r\n jobScheduleParams.processID = params.programName;\r\n jobScheduleParams.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;\r\n jobScheduleParams.recurrent = false;\r\n\r\n jobScheduleParams.executionParameter = {\r\n parametros: [\r\n { chave: 'rpwServer', valor: params.executionServer },\r\n { chave: 'RPW_PROGRAM', valor: params.externalName },\r\n { chave: 'RPW_PRG_EMS5', valor: params.programEMS5 ? 'yes' : 'no' },\r\n { chave: 'RPW_PRG_VERS', valor: params.programVersion },\r\n { parametros_negocio: params.businessParams }\r\n ]\r\n };\r\n\r\n if (loading) {\r\n return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams, this.headers);\r\n } else {\r\n return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams);\r\n }\r\n }\r\n\r\n getExecutionByJobScheduleID(jobScheduleID: string, loading = false): Observable<IExecutionStatus> {\r\n const url = `${this.urlJobExecution}?jobScheduleID=${jobScheduleID}`;\r\n return this.getExecution(url, loading).pipe(\r\n map((response) => this.transformExecution('jobScheduleID', response))\r\n );\r\n }\r\n\r\n getExecutionByExecutionID(executionID: string, loading = false): Observable<IExecutionStatus> {\r\n const url = `${this.urlJobExecution}/${executionID}`;\r\n return this.getExecution(url, loading).pipe(\r\n map((response) => this.transformExecution('executionID', response))\r\n );\r\n }\r\n\r\n private getExecution(url: string, loading: boolean): Observable<any> {\r\n if (loading) {\r\n return this.http.get(url, this.headers);\r\n } else {\r\n return this.http.get(url);\r\n }\r\n }\r\n\r\n private transformExecution(type: string, response: any): IExecutionStatus {\r\n if (!response || !response.items || response.items.length === 0) { return; }\r\n response = response.items[0];\r\n\r\n const execStatus = new ExecutionStatus();\r\n execStatus.jobScheduleID = response.jobScheduleID;\r\n execStatus.executionID = response.executionID;\r\n execStatus.startedDate = response.startedDate;\r\n execStatus.error = response.error;\r\n execStatus.status = response.status;\r\n\r\n return execStatus;\r\n }\r\n\r\n followUpExcByJobScheduleID(jobScheduleID: string, intervalNum: number, fncCallBack: Function, loading = false): void {\r\n this.followUpExecution('jobScheduleID', jobScheduleID, intervalNum, fncCallBack, loading);\r\n }\r\n\r\n followUpExcByExecutionID(executionID: string, intervalNum: number, fncCallBack: Function, loading = false): void {\r\n this.followUpExecution('executionID', executionID, intervalNum, fncCallBack, loading);\r\n }\r\n\r\n private followUpExecution(type: string, execID: string,\r\n intervalNum: number, fncCallBack: Function, loading: boolean): void {\r\n\r\n this.jobExecutionSubscription$ = null;\r\n\r\n const intervalID = setInterval(() => {\r\n const execStatus = new ExecutionStatus();\r\n execStatus.jobScheduleID = (type === 'jobScheduleID') ? execID : '';\r\n execStatus.executionID = (type === 'executionID') ? execID : '';\r\n execStatus.startedDate = null;\r\n execStatus.error = '';\r\n execStatus.status = 'PENDING'; // PENDING, RUNNING, SUCCESS, FAILURE\r\n\r\n if (this.jobExecutionSubscription$) { return; }\r\n\r\n if (type === 'jobScheduleID') {\r\n this.jobExecutionSubscription$ = this.getExecutionByJobScheduleID(execID, loading)\r\n .subscribe((response: IExecutionStatus) => {\r\n this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);\r\n }, (error) => {\r\n this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);\r\n });\r\n }\r\n\r\n if (type === 'executionID') {\r\n this.jobExecutionSubscription$ = this.getExecutionByExecutionID(execID, loading)\r\n .subscribe((response: IExecutionStatus) => {\r\n this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);\r\n }, (error) => {\r\n this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);\r\n });\r\n }\r\n\r\n }, intervalNum);\r\n }\r\n\r\n private followUpExecReturnOk(execID: string, execStatus: IExecutionStatus, response: IExecutionStatus,\r\n intervalID: any, fncCallBack: Function): void {\r\n\r\n if (response) {\r\n execStatus = response;\r\n } else {\r\n execStatus.error = `Agendamento não encontrado com ID: ${execID}`;\r\n execStatus.status = 'FAILURE';\r\n }\r\n\r\n if (!fncCallBack(execStatus) ||\r\n execStatus.status === 'SUCCESS' ||\r\n execStatus.status === 'FAILURE') {\r\n clearInterval(intervalID);\r\n }\r\n\r\n this.jobExecutionSubscription$ = null;\r\n }\r\n\r\n private followUpExecReturnError(error: any, execStatus: IExecutionStatus,\r\n intervalID: any, fncCallBack: Function): void {\r\n\r\n let erroDesc = '';\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n erroDesc = error.message;\r\n if (error.error) {\r\n erroDesc = '';\r\n if (error.error.code) { erroDesc = error.error.code; }\r\n if (error.error.message) { erroDesc = `${erroDesc} - ${error.error.message}`; }\r\n if (error.error.detailedMessage) { erroDesc = `${erroDesc} - ${error.error.detailedMessage}`; }\r\n }\r\n } else {\r\n erroDesc = error;\r\n }\r\n\r\n execStatus.error = erroDesc;\r\n execStatus.status = 'FAILURE';\r\n fncCallBack(execStatus);\r\n clearInterval(intervalID);\r\n this.jobExecutionSubscription$ = null;\r\n }\r\n\r\n private addZero(num: number): string {\r\n let str = `${num}`;\r\n if (num < 10) { str = `0${num}`; }\r\n return str;\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { PoRadioGroupOption, PoI18nService, PoNotificationService, PoLookupColumn } from '@po-ui/ng-components';\r\nimport { IScheduleParameters, ScheduleParameters } from './totvs-schedule-execution.model';\r\nimport { NgForm } from '@angular/forms';\r\nimport { TotvsScheduleExecutionService } from './totvs-schedule-execution.service';\r\n\r\n@Component({\r\n selector: 'app-totvs-schedule-execution',\r\n templateUrl: './totvs-schedule-execution.component.html',\r\n styleUrls: ['./totvs-schedule-execution.component.css']\r\n})\r\n\r\nexport class TotvsScheduleExecutionComponent implements OnInit {\r\n @ViewChild('scheduleExecutionForm', { static: true }) scheduleExecutionForm: NgForm;\r\n\r\n @Input() programName: string;\r\n @Input() externalName: string;\r\n @Input() programEMS5 = false;\r\n @Input() programVersion = '';\r\n @Input() parameters: [];\r\n @Input() disabledParams = false;\r\n @Input() loading = false;\r\n @Output() endExecution = new EventEmitter();\r\n\r\n constructor(\r\n public poI18nService: PoI18nService,\r\n public rpwService: TotvsScheduleExecutionService,\r\n public poNotification: PoNotificationService) {\r\n }\r\n\r\n executionTypeOptions: Array<PoRadioGroupOption>;\r\n frequencyOptions: Array<PoRadioGroupOption>;\r\n frequencyTypeOptions: Array<PoRadioGroupOption>;\r\n weeklyOptions: Array<PoRadioGroupOption>;\r\n zoomRpwServiceColumns: Array<PoLookupColumn>;\r\n model: ScheduleParameters;\r\n private jsonObject: any = {};\r\n\r\n literals: any = {};\r\n\r\n ngOnInit() {\r\n /* VERIFICAR COMO FICARÁ A TRADUÇÃO\r\n forkJoin(\r\n this.poI18nService.getLiterals(),\r\n this.poI18nService.getLiterals({ context: 'generalRpw' })\r\n ).subscribe(literals => {\r\n literals.map(item => Object.assign(this.literals, item) );\r\n this.setupComponents();\r\n });*/\r\n\r\n this.setupComponents();\r\n }\r\n\r\n setupComponents() {\r\n this.executionTypeOptions = [\r\n { label: 'Executar Hoje', value: 1 },\r\n { label: 'Agendar Execução', value: 2 }\r\n ];\r\n\r\n this.frequencyOptions = [\r\n { label: 'Uma vez no dia', value: 'no' },\r\n { label: 'Várias vezes no dia', value: 'yes' }\r\n ];\r\n\r\n this.frequencyTypeOptions = [\r\n { label: 'Hora(s)', value: 'hour' },\r\n { label: 'Minuto(s)', value: 'minute' }\r\n ];\r\n\r\n this.weeklyOptions = [\r\n { label: 'Domingo', value: 'Sunday' },\r\n { label: 'Segunda', value: 'Monday' },\r\n { label: 'Terça', value: 'Tuesday' },\r\n { label: 'Quarta', value: 'Wednesday' },\r\n { label: 'Quinta', value: 'Thursday' },\r\n { label: 'Sexta', value: 'Friday' },\r\n { label: 'Sábado', value: 'Saturday' }\r\n ];\r\n\r\n this.zoomRpwServiceColumns = [\r\n { property: 'code', label: 'Servidor', type: 'string', width: '20%' },\r\n { property: 'name', label: 'Descrição', type: 'string', width: '80%' }\r\n ];\r\n\r\n this.model = new ScheduleParameters();\r\n this.model.executionType = 1;\r\n this.model.repeatType = 1;\r\n this.model.repeatExecution = false;\r\n }\r\n\r\n public setScheduleParameters(schParam: IScheduleParameters) {\r\n if (!schParam) { return; }\r\n this.model = schParam;\r\n }\r\n\r\n fieldRpwServiceFormat(value) {\r\n return `${value.code} - ${value.name}`;\r\n }\r\n\r\n isExecutionSchedule(): boolean {\r\n return (this.model.executionType === 2);\r\n }\r\n\r\n isRepeatExecution(): boolean {\r\n return this.model.repeatExecution;\r\n }\r\n\r\n isFrenquency(): boolean {\r\n return (this.model.frequency === 'yes');\r\n }\r\n\r\n changeRepeatExecution() {\r\n const date = new Date();\r\n\r\n if (!this.model.execAppointHourInit) { this.model.execAppointHourInit = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`; }\r\n if (!this.model.execAppointHourFinal) { this.model.execAppointHourFinal = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`; }\r\n this.model.selectWeeklys = [];\r\n this.model.dayOfMonth = 0;\r\n this.model.frequency = 'no';\r\n this.model.frequencyType = 'hour';\r\n this.model.frequencyValue = 0;\r\n }\r\n\r\n changeExecutionType() {\r\n const date = new Date();\r\n\r\n this.model.execAppointDate = date;\r\n this.model.execAppointHour = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`;\r\n }\r\n\r\n changeTypeFrequency() {\r\n }\r\n\r\n getActiveTab(codTab: number) {\r\n return (this.model.repeatType === codTab);\r\n }\r\n\r\n setActiveTab(codTab: number) {\r\n this.model.repeatType = codTab;\r\n }\r\n\r\n addZero(num: number): string {\r\n let str = `${num}`;\r\n if (num < 10) { str = `0${num}`; }\r\n return str;\r\n }\r\n\r\n executeSchedule() {\r\n if (this.disabledParams) { return; }\r\n if (!this.validate()) { return; }\r\n\r\n this.jsonObject = {};\r\n this.jsonObject.status = 'active';\r\n this.jsonObject.processID = this.programName;\r\n this.jsonObject.recurrent = this.model.repeatExecution;\r\n this.jsonObject.executionParameter = {};\r\n\r\n if (this.model.executionType === 1) {\r\n const date = new Date();\r\n this.jsonObject.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;\r\n }\r\n if (this.model.executionType === 2) {\r\n this.jsonObject.firstExecution = `${this.model.execAppointDate}T${this.model.execAppointHour}:00.000Z`;\r\n }\r\n\r\n this.jsonObject.executionParameter.parametros = [];\r\n this.jsonObject.executionParameter.parametros[0] = { chave: 'rpwServer', valor: this.model.executionServer };\r\n this.jsonObject.executionParameter.parametros[1] = { chave: 'RPW_PROGRAM', valor: this.externalName };\r\n this.jsonObject.executionParameter.parametros[2] = { chave: 'RPW_PRG_EMS5', valor: this.programEMS5 ? 'yes' : 'no' };\r\n this.jsonObject.executionParameter.parametros[3] = { chave: 'RPW_PRG_VERS', valor: this.programVersion };\r\n\r\n this.jsonObject.executionParameter.parametros[4] = {};\r\n this.jsonObject.executionParameter.parametros[4].parametros_negocio = this.parameters;\r\n\r\n // Executa hoje ou agendada\r\n this.rpwService.createExecution(this.jsonObject, this.loading).subscribe(() => {\r\n this.poNotification.success('Agendamento realizado com sucesso !');\r\n });\r\n\r\n if (this.model.repeatExecution) {\r\n if (this.model.repeatType === 1) {\r\n this.jsonObject.daily = {\r\n hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),\r\n minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm')\r\n };\r\n }\r\n\r\n if (this.model.repeatType === 2) {\r\n this.jsonObject.weekly = {\r\n hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),\r\n minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),\r\n daysOfWeek: this.model.selectWeeklys\r\n };\r\n }\r\n\r\n if (this.model.repeatType === 3) {\r\n this.jsonObject.monthly = {\r\n hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),\r\n minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),\r\n day: this.model.dayOfMonth\r\n };\r\n }\r\n\r\n if (this.isFrenquency()) {\r\n this.jsonObject.rangeExecutions = {\r\n frequency: {\r\n type: this.model.frequencyType,\r\n value: this.model.frequencyValue\r\n },\r\n rangeLimit: {\r\n hour: this.getHourOrMinute(this.model.execAppointHourFinal, 'h'),\r\n minute: this.getHourOrMinute(this.model.execAppointHourFinal, 'm')\r\n }\r\n };\r\n }\r\n\r\n // Executa a diária, semanal ou mensal\r\n this.rpwService.createExecution(this.jsonObject, this.loading).subscribe(() => {\r\n });\r\n }\r\n\r\n this.endExecution.emit(this.model);\r\n }\r\n\r\n getHourOrMinute(value: string, type: string): number {\r\n if (type === 'h') { return +value.substring(0, 2); }\r\n if (type === 'm') { return +value.substring(3, 6); }\r\n }\r\n\r\n compareHour(hourInit: string, hourFinal: string): boolean {\r\n if (hourInit === hourFinal) { return false; }\r\n if (this.getHourOrMinute(hourInit, 'h') < this.getHourOrMinute(hourFinal, 'h')) { return true; }\r\n if (this.getHourOrMinute(hourInit, 'm') > this.getHourOrMinute(hourFinal, 'm')) { return false; }\r\n return true;\r\n }\r\n\r\n validate(): boolean {\r\n\r\n if (!this.scheduleExecutionForm.valid) {\r\n this.poNotification.error('Verifique as inconsistências em tela.');\r\n return false;\r\n }\r\n\r\n if (!this.model.executionServer) {\r\n this.poNotification.error('Servidor de Execução não foi informado.');\r\n return false;\r\n }\r\n\r\n if (this.isExecutionSchedule() && (!this.model.execAppointDate || !this.model.execAppointHour)) {\r\n this.poNotification.error('Informar a data e a hora para agendamento da execução.');\r\n return false;\r\n }\r\n\r\n if (this.model.repeatExecution) {\r\n if (!this.model.execAppointHourInit) {\r\n this.poNotification.error('Informar a hora de início para a execução.');\r\n return false;\r\n }\r\n\r\n if (this.model.repeatType === 2 && (this.model.selectWeeklys.length === 0)) {\r\n this.poNotification.error('Informar os dias da semana para a execução.');\r\n return false;\r\n }\r\n\r\n if (this.model.repeatType === 3 && (!this.model.dayOfMonth)) {\r\n this.poNotification.error('Informar o dia para a execução.');\r\n return false;\r\n }\r\n\r\n if (this.isFrenquency()) {\r\n if (!this.compareHour(this.model.execAppointHourInit, this.model.execAppointHourFinal)) {\r\n this.poNotification.error('Hora Fim deve ser maior que Hora Início.');\r\n return false;\r\n }\r\n\r\n if (this.model.frequencyValue === 0) {\r\n this.poNotification.error('Informar a frequência de execução (A cada hora/minuto).');\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'dtsDateFormat'\r\n})\r\n\r\nexport class DtsDateFormatPipe implements PipeTransform {\r\n\r\n transform(value: any, format: string = 'dd/MM/yyyy'): any {\r\n const { 0: year, 1: month, 2: day } = value.split('-');\r\n\r\n const formattedDate = format.replace('dd', day)\r\n .replace('MM', month)\r\n .replace('yyyy', year);\r\n\r\n return formattedDate;\r\n }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport {\r\n TotvsScheduleExecutionComponent\r\n} from './components/totvs-schedule-execution/totvs-schedule-execution.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PoModule, PoI18nService } from '@po-ui/ng-components';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n// import { BrowserModule } from '@angular/platform-browser';\r\nimport { TotvsScheduleExecutionService } from './components/totvs-schedule-execution/totvs-schedule-execution.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DtsDateFormatPipe } from './pipes/dts-date-format.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n TotvsScheduleExecutionComponent,\r\n DtsDateFormatPipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n PoModule,\r\n FormsModule,\r\n HttpClientModule\r\n ],\r\n exports: [\r\n TotvsScheduleExecutionComponent,\r\n DtsDateFormatPipe\r\n ],\r\n providers: [\r\n TotvsScheduleExecutionService\r\n ]\r\n})\r\n\r\nexport class DtsBackofficeUtilsModule {\r\n static forRoot(): ModuleWithProviders<DtsBackofficeUtilsModule> {\r\n return {\r\n ngModule: DtsBackofficeUtilsModule,\r\n providers: [TotvsScheduleExecutionService]\r\n };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../projects/dts-backoffice-util/src/lib/services/session-info.service.ts","../../../projects/dts-backoffice-util/src/lib/services/profile.service.ts","../../../projects/dts-backoffice-util/src/lib/services/report.service.ts","../../../projects/dts-backoffice-util/src/lib/services/breadcrumb-control.service.ts","../../../projects/dts-backoffice-util/src/lib/services/menu-datasul.service.ts","../../../projects/dts-backoffice-util/src/lib/services/cache-params.service.ts","../../../projects/dts-backoffice-util/src/lib/services/translate.service.ts","../../../projects/dts-backoffice-util/src/lib/utils/date.util.ts","../../../projects/dts-backoffice-util/src/lib/utils/disclaimer.util.ts","../../../projects/dts-backoffice-util/src/lib/utils/field-validation.util.ts","../../../projects/dts-backoffice-util/src/lib/utils/filter-range.util.ts","../../../projects/dts-backoffice-util/src/lib/utils/generic-functions.utils.ts","../../../projects/dts-backoffice-util/src/lib/utils/file.util.ts","../../../projects/dts-backoffice-util/src/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.ts","../../../projects/dts-backoffice-util/src/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.ts","../../../projects/dts-backoffice-util/src/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.ts","../../../projects/dts-backoffice-util/src/lib/pipes/dts-date-format.pipe.ts","../../../projects/dts-backoffice-util/src/lib/dts-backoffice-util.module.ts"],"names":["UserLoginService","http","this","apiUrl","userLogin","undefined","prototype","getUserLogin","_this","localStorage","getItem","of","get","pipe","map","response","userName","Injectable","args","providedIn","HttpClient","EDataType","STRING","JSON","ProfileService","apiURL","setProfile","profile","pageId","userCode","post","headers","X-PO-Screen-Lock","getProfileAsString","showLoading","getProfile","getProfileAsJSON","dataType","dataCode","preference","data","dataValue","parse","ReportService","httpClient","URL","window","location","href","indexOf","generate","params","reportURL","reportName","properties","length","forEach","property","index","name","value","dialect","format","programName","downloadName","responseType","report","download","file","fileName","binaryData","downloadLink","document","createElement","urlDownload","createObjectURL","Blob","type","setAttribute","body","appendChild","click","revokeObjectURL","remove","BreadcrumbControlService","newBreadcrumb","breadcrumb","items","addBreadcrumb","literal","activatedRoute","addBreadcrumbURL","decodeURIComponent","snapshot","url","breadcrumbAux","idx","label","push","link","updBreadcrumbURL","valueOld","valueNew","currentRouterURL","getCurrentRouter","replace","getBreadcrumb","getPrevRouter","hasPreviousRouter","MenuDatasulService","callProgress","program","parent","postMessage","sendNotification","notification","openPath","datasulPath","referrer","baseUrl","open","CacheParamsService","values","setValue","key","getValue","removeValue","TranslateService","getSuportLanguage","getDefaultCurrencyCode","getCurrentLanguage","locale","navigator","language","includes","DateUtil","dateToQueryParam","date","iDay","getDate","iMonth","getMonth","getFullYear","pad","queryParamToDate","param","split","iYear","Date","isValidDate","isNaN","getTime","ajustDate","ajustDateToModel","fieldName","hasOwnProperty","number","DisclaimerUtil","poNotification","poI18nPipe","literals","makeDisclaimer","hideClose","tradValue","vldBlank","makeDisclaimerFromNumber","makeDisclaimerFromBoolean","makeDisclaimerFromDate","dDate","toLocaleDateString","makeDisclaimerFromMultiSelect","lstLabels","lstValues","item","makeDisclaimerFromMultiSelectNumber","options","opt","find","itOpt","makeDisclaimerFromCheckboxGroup","checkParam","makeDisclaimerFromRangeCharacter","validateEqual","valInitial","iniInitial","valFinal","iniFinal","transform","makeDisclaimerFromRangeNumber","makeDisclaimerFromRangeDate","valInitDate","valFinalDate","atzCharFromDisclamer","disclaimers","defaultValue","returnValue","atzNumberFromDisclamer","atzBooleanFromDisclamer","disclaimerFind","atzDateFromDisclamer","atzMultiSelectCharFromDisclamer","atzMultiSelectFromDisclamer","atzMultiSelectNumberFromDisclamer","itemOpt","atzCheckboxFromDisclamer","atzRangeCharFromDisclamer","rangeChar","atzRangeCharFromQueryParam","atzRangeNumFromDisclamer","rangeNum","atzRangeNumFromQueryParam","atzRangeDateFromDisclamer","rangeDate","atzRangeDateFromQueryParam","FieldValidationUtil","disclaimerUtil","vldFieldCharacter","field","trim","error","message","vldRangeCharacter","initialField","finalField","initialValue","finalValue","toUpperCase","vldFieldNumber","vldValue","zeroAccept","vldValueOfNumber","toString","vldFieldPercent","vldValueOfPercent","vldRangeNumber","vldFieldDate","valDate","vldRangeDate","vldFieldMultiSelect","vldFieldCheckbox","vldFieldFormat","replacePoint","oldFormat","lOK","FilterRangeUtil","makeFilterRangeCharacter","makeFilterRangeNumber","makeFilterRangeDate","GenericFunctionsUtils","listToArrayCharacter","list","returnArray","Array","ArrayToListCharacter","array","join","isEmpty","object","content","getChartValues","chartData","chartValues","maxValue","minValue","Math","round","atzMultiSelectListByOptions","newList","findIndex","itemOptions","loadOptionsMultiSelect","loadOptionsSelect","selectValue","compareObjects","firstObject","secondObject","Object","getOwnPropertyNames","substr","referenceGeneration","charInd","dateRef","random","btoa","slice","focusInternalInput","idField","getElementById","getElementsByClassName","focus","FileUtil","downloadFile","contentType","base64","dataBlob","b64toBlob","downloadData","dwldDataParam","DownloadDataParams","columnDelimiter","columnList","columnExclude","datab64","jsonToString","userAgent","msSaveOrOpenBlob","b64Data","sliceSize","byteCharacters","atob","byteArrays","offset","byteNumbers","i","charCodeAt","byteArray","Uint8Array","jsonData","includeKey","columnHeader","keys","reduce","accLineStr","currentItem","first","columnValue","toLocaleString","stringify","TotvsScheduleExecutionService","urlCadServidor","urlJobScheduler","urlJobExecution","getFilteredItems","urlParams","pageSize","page","filter","getObjectByValue","id","createExecution","parameters","loading","createExecutionForNow","executionParams","jobScheduleParams","businessParams","chave","valor","status","processID","firstExecution","addZero","getHours","getMinutes","recurrent","executionParameter","parametros","executionServer","externalName","programEMS5","programVersion","parametros_negocio","getExecutionByJobScheduleID","jobScheduleID","getExecution","transformExecution","getExecutionByExecutionID","executionID","execStatus","ExecutionStatus","startedDate","followUpExcByJobScheduleID","intervalNum","fncCallBack","followUpExecution","followUpExcByExecutionID","execID","jobExecutionSubscription$","intervalID","setInterval","subscribe","followUpExecReturnOk","followUpExecReturnError","clearInterval","erroDesc","HttpErrorResponse","code","detailedMessage","num","str","TotvsScheduleExecutionComponent","poI18nService","rpwService","disabledParams","endExecution","EventEmitter","jsonObject","ngOnInit","setupComponents","executionTypeOptions","frequencyOptions","frequencyTypeOptions","weeklyOptions","zoomRpwServiceColumns","width","model","ScheduleParameters","executionType","repeatType","repeatExecution","setScheduleParameters","schParam","fieldRpwServiceFormat","isExecutionSchedule","isRepeatExecution","isFrenquency","frequency","changeRepeatExecution","execAppointHourInit","execAppointHourFinal","selectWeeklys","dayOfMonth","frequencyType","frequencyValue","changeExecutionType","execAppointDate","execAppointHour","changeTypeFrequency","getActiveTab","codTab","setActiveTab","executeSchedule","validate","success","daily","hour","getHourOrMinute","minute","weekly","daysOfWeek","monthly","day","rangeExecutions","rangeLimit","emit","substring","compareHour","hourInit","hourFinal","scheduleExecutionForm","valid","Component","selector","template","PoI18nService","PoNotificationService","ViewChild","static","Input","Output","DtsDateFormatPipe","_a","year","month","Pipe","DtsBackofficeUtilsModule","forRoot","ngModule","providers","NgModule","declarations","imports","CommonModule","PoModule","FormsModule","HttpClientModule","exports","XLSX","PDF","DOCX","HTML"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ISessionInfo } from '../model/session-info.model';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserLoginService {\r\n\r\n readonly apiUrl = '/totvs-menu/rest/getSessionInfo';\r\n userLogin = undefined;\r\n\r\n constructor(public http: HttpClient) { }\r\n\r\n getUserLogin(): Observable<string> {\r\n if (localStorage.getItem('username')) {\r\n return of(localStorage.getItem('username'));\r\n }\r\n\r\n if (this.userLogin) {\r\n return of(this.userLogin);\r\n } else {\r\n return this.http.get<ISessionInfo>(`${this.apiUrl}`)\r\n .pipe(map((response) => {\r\n this.userLogin = response.userName;\r\n return response.userName;\r\n }));\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport interface IProfile {\r\n pageId: string;\r\n dataCode: string;\r\n userCode: string;\r\n dataValue?: string;\r\n}\r\n\r\nexport interface IProfileResponse {\r\n message: Array<string>;\r\n length: number;\r\n data: Array<any>;\r\n}\r\n\r\nenum EDataType {\r\n STRING = 1,\r\n JSON = 2\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProfileService {\r\n\r\n readonly apiURL = '/dts/datasul-rest/resources/api/btb/btapi930za';\r\n\r\n constructor(public http: HttpClient) { }\r\n\r\n setProfile(profile: IProfile): Observable<any> {\r\n const headers = { 'X-PO-Screen-Lock': 'true' };\r\n const { pageId, userCode } = profile;\r\n\r\n return this.http\r\n .post<any>(`${this.apiURL}/setProfile?userCode=${userCode}&pageId=${pageId}`, profile, { headers });\r\n\r\n }\r\n\r\n getProfileAsString(profile: IProfile, showLoading?: boolean): Observable<string> {\r\n return this.getProfile(profile, EDataType.STRING, showLoading ? 'true' : 'false');\r\n }\r\n\r\n getProfileAsJSON(profile: IProfile, showLoading?: boolean): Observable<object> {\r\n return this.getProfile(profile, EDataType.JSON, showLoading ? 'true' : 'false');\r\n }\r\n\r\n private getProfile(profile: IProfile, dataType: EDataType, showLoading?: string): Observable<any> {\r\n const headers = { 'X-PO-Screen-Lock': showLoading };\r\n const { pageId, dataCode, userCode } = profile;\r\n\r\n return this.http\r\n .get<IProfileResponse>(`${this.apiURL}/getProfile?userCode=${userCode}&pageId=${pageId}&dataCode=${dataCode}`,\r\n { headers })\r\n .pipe(map(preference => {\r\n if (preference.data[0]) {\r\n if (dataType === EDataType.STRING) {\r\n return preference.data[0].dataValue;\r\n }\r\n\r\n if (dataType === EDataType.JSON) {\r\n return JSON.parse(preference.data[0].dataValue);\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n }));\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport interface IProperty {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport interface IReportServiceParams {\r\n reportName: string; // Nome do rptDesign\r\n programName: string; // Programa Progress\r\n properties: Array<IProperty>;\r\n dialect: string;\r\n downloadName: string;\r\n download: boolean;\r\n format: ReportFormats;\r\n}\r\n\r\nexport enum ReportFormats {\r\n XLSX = 'xlsx',\r\n PDF = 'pdf',\r\n DOCX = 'docx',\r\n HTML = 'html'\r\n}\r\n\r\n@Injectable()\r\n\r\nexport class ReportService {\r\n public readonly URL = window.location.href.indexOf('totvs-menu') > 0 ? '/totvs-menu/rest/report/run/'\r\n : '/dts/datasul-report/resources/run/';\r\n\r\n constructor(public httpClient: HttpClient) { }\r\n\r\n generate(params: IReportServiceParams, showLoading: boolean = true): Observable<Blob> {\r\n const headers = { 'X-PO-Screen-Lock': showLoading ? 'true' : 'false' };\r\n\r\n let reportURL = `${this.URL}${params.reportName}`;\r\n\r\n if (params.properties.length > 0) {\r\n reportURL += '?';\r\n\r\n params.properties.forEach((property: IProperty, index: number) => {\r\n if (index > 0) {\r\n reportURL += '&';\r\n }\r\n reportURL += `c_properties=${property.name}&c_values=${property.value}`;\r\n });\r\n }\r\n\r\n reportURL += `&dialect=${params.dialect}&format=${params.format}`;\r\n reportURL += `&program=${params.programName}&resultFileName=${params.downloadName}`;\r\n\r\n return this.httpClient.post(reportURL, {}, { headers, responseType: 'blob' })\r\n .pipe(map(report => {\r\n if (params.download) {\r\n this.download(report, `${params.downloadName}.${params.format}`);\r\n }\r\n return report;\r\n }));\r\n }\r\n\r\n download(file: Blob, fileName: string) {\r\n const binaryData = [file];\r\n const downloadLink = document.createElement('a');\r\n const urlDownload = window.URL.createObjectURL(new Blob(binaryData, { type: file.type }));\r\n\r\n downloadLink.href = urlDownload;\r\n downloadLink.setAttribute('download', fileName);\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n window.URL.revokeObjectURL(urlDownload);\r\n downloadLink.remove();\r\n }\r\n}\r\n","/*\r\nVersão: 1.003\r\nData Criação: 06/08/2018\r\n*/\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { PoBreadcrumb } from '@po-ui/ng-components';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class BreadcrumbControlService {\r\n breadcrumb: PoBreadcrumb;\r\n\r\n constructor() { }\r\n\r\n public newBreadcrumb(): void {\r\n this.breadcrumb = { items: [] };\r\n }\r\n\r\n public addBreadcrumb(literal: string, activatedRoute: ActivatedRoute): void {\r\n this.addBreadcrumbURL(literal, decodeURIComponent(activatedRoute.snapshot['_routerState'].url));\r\n }\r\n\r\n public addBreadcrumbURL(literal: string, url: string): void {\r\n if (!literal || literal === '') { return; }\r\n if (!this.breadcrumb) { this.newBreadcrumb(); }\r\n\r\n const breadcrumbAux = { items: [] };\r\n\r\n let idx = 0;\r\n for (idx = 0; idx < this.breadcrumb.items.length; idx++) {\r\n if (this.breadcrumb.items[idx].label !== literal) {\r\n breadcrumbAux.items.push(this.breadcrumb.items[idx]);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n breadcrumbAux.items.push({ label: literal, link: url });\r\n\r\n this.breadcrumb = breadcrumbAux;\r\n }\r\n\r\n public updBreadcrumbURL(literal: string, valueOld: string, valueNew: string): void {\r\n let currentRouterURL = this.getCurrentRouter();\r\n\r\n if (!currentRouterURL) { return; }\r\n if (!valueOld) { return; }\r\n if (!valueNew) { return; }\r\n\r\n currentRouterURL = currentRouterURL.replace(valueOld, valueNew);\r\n this.addBreadcrumbURL(literal, currentRouterURL);\r\n }\r\n\r\n public getBreadcrumb(): PoBreadcrumb {\r\n if (!this.breadcrumb) { this.newBreadcrumb(); }\r\n return this.breadcrumb;\r\n }\r\n\r\n public getCurrentRouter(): string {\r\n if (!this.breadcrumb) { this.newBreadcrumb(); }\r\n if (this.breadcrumb.items.length <= 0) { return ''; }\r\n\r\n return this.breadcrumb.items[this.breadcrumb.items.length - 1].link;\r\n }\r\n\r\n public getPrevRouter(): string {\r\n if (!this.breadcrumb) { this.newBreadcrumb(); }\r\n if (this.breadcrumb.items.length <= 1) { return ''; }\r\n\r\n return this.breadcrumb.items[this.breadcrumb.items.length - 2].link;\r\n }\r\n\r\n public hasPreviousRouter(): boolean {\r\n return this.breadcrumb.items.length > 1;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class MenuDatasulService {\r\n\r\n constructor() { }\r\n\r\n /**\r\n * var program = {};\r\n * program['prg'] = \"cd0210\";\r\n * program['params'] = '01|123456'\r\n */\r\n public callProgress(program) {\r\n parent.postMessage({ program }, '*');\r\n }\r\n\r\n /**\r\n * var notification = {};\r\n * notification['type'] = 'success';\r\n * notification['title'] = 'Notification Title'\r\n * notification['detail'] = 'Notification Detail'\r\n */\r\n public sendNotification(notification) {\r\n parent.postMessage({ notification }, '*');\r\n }\r\n\r\n public openPath(programName: string, params: any, parent = true): void {\r\n const datasulPath = document.referrer.indexOf('totvs-menu') > 0 ? 'totvs-menu' : 'menu-html';\r\n let baseUrl = `/${datasulPath}/#/${datasulPath}/program-html/${programName}/#`;\r\n\r\n if (params) {\r\n baseUrl = `${baseUrl}/${params}`;\r\n }\r\n\r\n if (parent) {\r\n window.open(baseUrl, '_parent');\r\n } else {\r\n window.open(baseUrl);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class CacheParamsService {\r\n\r\n values = {};\r\n\r\n constructor() { }\r\n\r\n public setValue(key: string, value: any) {\r\n this.values[key] = value;\r\n }\r\n\r\n public getValue(key: string): any {\r\n return this.values[key];\r\n }\r\n\r\n public removeValue(key: string): void {\r\n delete this.values[key];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class TranslateService {\r\n\r\n static getSuportLanguage() {\r\n return ['pt-BR', 'pt', 'en-US', 'en', 'es'];\r\n }\r\n\r\n static getDefaultCurrencyCode() {\r\n return '$';\r\n }\r\n\r\n static getCurrentLanguage() {\r\n const locale = localStorage.getItem('user.language') || navigator.language;\r\n\r\n if (locale && this.getSuportLanguage().includes(locale)) { return locale; }\r\n\r\n return 'en-US';\r\n }\r\n}\r\n","/*\r\nVersão: 1.000\r\nData Criação: 18/04/2019\r\n*/\r\n\r\nexport class DateUtil {\r\n\r\n constructor(\r\n ) { }\r\n\r\n /* Transforma data para o padrão YYYY-MM-DD */\r\n static dateToQueryParam(date: Date): string {\r\n const iDay = date.getDate();\r\n const iMonth = date.getMonth() + 1;\r\n const iYear = date.getFullYear();\r\n\r\n return `${iYear}-${this.pad(iMonth)}-${this.pad(iDay)}`;\r\n }\r\n\r\n /* Transforma data no padrão YYYY-MM-DD para DATE */\r\n static queryParamToDate(param: string): Date {\r\n const iDay = +param.split('-')[2];\r\n const iMonth = +param.split('-')[1];\r\n const iYear = +param.split('-')[0];\r\n\r\n return new Date(iYear, iMonth - 1, iDay);\r\n }\r\n\r\n /* Valida se foi informado uma data válida */\r\n static isValidDate(date: Date) {\r\n return date instanceof Date && !isNaN(date.getTime());\r\n }\r\n\r\n /* Ajusta a data retornando o padrão DATE */\r\n static ajustDate(param: any): Date {\r\n if (param instanceof Date) { return param; }\r\n if (!param) { return param; }\r\n\r\n return this.queryParamToDate(param.split('T')[0]);\r\n }\r\n\r\n /* Ajusta a data para o padrão DATE - utilizada nos construtores dos modelos */\r\n static ajustDateToModel(values: Object = {}, fieldName: string): Date {\r\n if (values.hasOwnProperty(fieldName) && (values[fieldName])) {\r\n if (values[fieldName].indexOf('T') >= 0) {\r\n return new Date(values[fieldName]);\r\n }\r\n\r\n const iDay = +values[fieldName].split('-')[2];\r\n const iMonth = +values[fieldName].split('-')[1];\r\n const iYear = +values[fieldName].split('-')[0];\r\n return new Date(iYear, iMonth - 1, iDay);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /* Adicona zero a esquerda do número */\r\n static pad(number) {\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n return number;\r\n }\r\n}\r\n","/*\r\nVersão: 1.009\r\nData Criação: 06/08/2018\r\n*/\r\n\r\nimport { PoDisclaimer, PoI18nPipe, PoCheckboxGroupOption, PoMultiselectOption } from '@po-ui/ng-components';\r\nimport { IFilterRangeCharacter, IFilterRangeNumber, IFilterRangeDate } from '../../lib/interfaces/filter-range.interface';\r\nimport { PoNotificationService } from '@po-ui/ng-components';\r\n\r\nexport class DisclaimerUtil {\r\n poNotification: PoNotificationService;\r\n poI18nPipe: PoI18nPipe;\r\n literals: any = {};\r\n\r\n constructor(\r\n poNotification: PoNotificationService,\r\n poI18nPipe: PoI18nPipe,\r\n literals: Object\r\n ) {\r\n this.poNotification = poNotification;\r\n this.poI18nPipe = poI18nPipe;\r\n this.literals = literals;\r\n }\r\n\r\n public makeDisclaimer(property: string, value: string, hideClose = false, tradValue = false, vldBlank = false): PoDisclaimer {\r\n if (value === null || value === undefined) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (vldBlank && value === '') {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${tradValue ? this.literals[value] : value}`,\r\n property: `${property}`,\r\n value: `${value}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromNumber(property: string, value: number, hideClose = false, vldBlank = false): PoDisclaimer {\r\n if (value === null || value === undefined) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (vldBlank && value === 0) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${value}`,\r\n property: `${property}`,\r\n value: `${value}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromBoolean(property: string, value: boolean, hideClose = false): PoDisclaimer {\r\n if (value === null || value === undefined) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${value ? this.literals['yes'] : this.literals['no']}`,\r\n property: `${property}`,\r\n value: `${value}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromDate(property: string, value: Date, hideClose = false): PoDisclaimer {\r\n const dDate: Date = this.ajustDate(value);\r\n\r\n if (!this.isValidDate(dDate)) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${dDate.toLocaleDateString()}`,\r\n property: `${property}`,\r\n value: `${this.dateToQueryParam(dDate)}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromMultiSelect(property: string, value: Array<any>, length = 0,\r\n hideClose = false, tradValue = false): PoDisclaimer {\r\n let lstLabels = '';\r\n let lstValues = '';\r\n\r\n if (!value) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (value.length === 0 || (length > 0 && value.length === length)) {\r\n lstLabels = this.literals['all'];\r\n lstValues = 'all';\r\n } else {\r\n value.map(item => {\r\n if (lstLabels !== '') { lstLabels = `${lstLabels}, `; }\r\n if (lstValues !== '') { lstValues = `${lstValues},`; }\r\n lstLabels = `${lstLabels}${tradValue ? this.literals[item] : item}`;\r\n lstValues = `${lstValues}${item}`;\r\n });\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${lstLabels}`,\r\n property: `${property}`,\r\n value: `${lstValues}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromMultiSelectNumber(property: string, value: Array<any>, options: Array<any>,\r\n length = 0, hideClose = false): PoDisclaimer {\r\n let lstLabels = '';\r\n let lstValues = '';\r\n let opt = null;\r\n\r\n if (!value || !options) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (value.length === 0 || (length > 0 && value.length === length)) {\r\n lstLabels = this.literals['all'];\r\n lstValues = 'all';\r\n } else {\r\n value.map(item => {\r\n if (lstLabels !== '') { lstLabels = `${lstLabels}, `; }\r\n if (lstValues !== '') { lstValues = `${lstValues},`; }\r\n\r\n opt = options.find(itOpt => itOpt.value === item);\r\n lstLabels = `${lstLabels}${opt ? opt.label : item}`;\r\n lstValues = `${lstValues}${item}`;\r\n });\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${lstLabels}`,\r\n property: `${property}`,\r\n value: `${lstValues}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromCheckboxGroup(property: string, value: Array<string>, length = 0, hideClose = false): PoDisclaimer {\r\n let lstLabels = '';\r\n let lstValues = '';\r\n\r\n if (!value) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n if (value.length === 0) {\r\n lstLabels = this.literals['none'];\r\n lstValues = 'none';\r\n } else if (length > 0 && value.length === length) {\r\n lstLabels = this.literals['all'];\r\n lstValues = 'all';\r\n } else {\r\n value.map(checkParam => {\r\n if (lstLabels !== '') { lstLabels = `${lstLabels}, `; }\r\n if (lstValues !== '') { lstValues = `${lstValues},`; }\r\n lstLabels = `${lstLabels}${this.literals[checkParam]}`;\r\n lstValues = `${lstValues}${checkParam}`;\r\n });\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: `${this.literals[property]}: ${lstLabels}`,\r\n property: `${property}`,\r\n value: `${lstValues}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromRangeCharacter(property: string, value: IFilterRangeCharacter, hideClose = false,\r\n validateEqual = true): PoDisclaimer {\r\n if (value.valInitial === null || value.valInitial === undefined) { value.valInitial = value.iniInitial; }\r\n if (value.valFinal === null || value.valFinal === undefined) { value.valFinal = value.iniFinal; }\r\n\r\n if (validateEqual &&\r\n value.iniInitial === value.valInitial &&\r\n value.iniFinal === value.valFinal) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: this.poI18nPipe.transform(\r\n this.literals['filterRange'],\r\n [this.literals[property], `'${value.valInitial}'`, `'${value.valFinal}'`]),\r\n property: `${property}`,\r\n value: `${value.valInitial};${value.valFinal}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromRangeNumber(property: string, value: IFilterRangeNumber, hideClose = false,\r\n validateEqual = true): PoDisclaimer {\r\n if (value.valInitial === null || value.valInitial === undefined) { value.valInitial = value.iniInitial; }\r\n if (value.valFinal === null || value.valFinal === undefined) { value.valFinal = value.iniFinal; }\r\n\r\n if (validateEqual &&\r\n value.iniInitial === value.valInitial &&\r\n value.iniFinal === value.valFinal) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: this.poI18nPipe.transform(\r\n this.literals['filterRange'],\r\n [this.literals[property], value.valInitial, value.valFinal]),\r\n property: `${property}`,\r\n value: `${value.valInitial};${value.valFinal}`\r\n };\r\n }\r\n\r\n public makeDisclaimerFromRangeDate(property: string, value: IFilterRangeDate, hideClose = false, validateEqual = true): PoDisclaimer {\r\n let valInitDate: Date = this.ajustDate(value.valInitial);\r\n let valFinalDate: Date = this.ajustDate(value.valFinal);\r\n\r\n if (!this.isValidDate(valInitDate)) {\r\n valInitDate = value.iniInitial;\r\n value.valInitial = value.iniInitial;\r\n }\r\n if (!this.isValidDate(valFinalDate)) {\r\n valFinalDate = value.iniFinal;\r\n value.valFinal = value.iniFinal;\r\n }\r\n\r\n if (validateEqual &&\r\n this.dateToQueryParam(value.iniInitial) === this.dateToQueryParam(valInitDate) &&\r\n this.dateToQueryParam(value.iniFinal) === this.dateToQueryParam(valFinalDate)) {\r\n return { label: '', property: '', value: '' };\r\n }\r\n\r\n return {\r\n hideClose,\r\n label: this.poI18nPipe.transform(\r\n this.literals['filterRange'],\r\n [this.literals[property], valInitDate.toLocaleDateString(), valFinalDate.toLocaleDateString()]),\r\n property: `${property}`,\r\n value: `${this.dateToQueryParam(valInitDate)};${this.dateToQueryParam(valFinalDate)}`\r\n };\r\n }\r\n\r\n public atzCharFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string, defaultValue: string): string {\r\n let returnValue = defaultValue;\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n\r\n returnValue = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzNumberFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string, defaultValue: number): number {\r\n let returnValue = defaultValue;\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n\r\n returnValue = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzBooleanFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string, defaultValue: boolean): boolean {\r\n const returnValue = defaultValue;\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n const disclaimerFind = disclaimers.find((item) => item.property === property);\r\n if (disclaimerFind && disclaimerFind.value !== null && disclaimerFind.value !== undefined) {\r\n if (disclaimerFind.value === 'true') {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n public atzDateFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string, defaultValue: Date): Date {\r\n let returnValue: Date = this.ajustDate(defaultValue);\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n\r\n returnValue = this.ajustDate(item.value);\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzMultiSelectCharFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n defaultValue: Array<PoMultiselectOption>): Array<string> {\r\n return this.atzMultiSelectFromDisclamer('char', disclaimers, property, defaultValue);\r\n }\r\n\r\n public atzMultiSelectNumberFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n defaultValue: Array<PoMultiselectOption>): Array<number> {\r\n return this.atzMultiSelectFromDisclamer('number', disclaimers, property, defaultValue);\r\n }\r\n\r\n public atzMultiSelectFromDisclamer(type: string, disclaimers: Array<PoDisclaimer>, property: string,\r\n defaultValue: Array<PoMultiselectOption>): Array<any> {\r\n\r\n let returnValue = [];\r\n defaultValue.map(item => {\r\n returnValue.push(item.value);\r\n });\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null || item.value === 'all' || item.value === 'none') { return false; }\r\n\r\n returnValue = [];\r\n item.value.split(',').forEach(itemOpt => {\r\n if (type === 'char') { returnValue.push(itemOpt); }\r\n if (type === 'number') { returnValue.push(+itemOpt); }\r\n });\r\n\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzCheckboxFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n options: Array<PoCheckboxGroupOption>): Array<string> {\r\n\r\n let returnValue = [];\r\n options.map(item => {\r\n returnValue.push(item.value);\r\n });\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null || item.value === 'all' || item.value === 'none') { return false; }\r\n\r\n returnValue = [];\r\n item.value.split(',').forEach(itemOpt => {\r\n returnValue.push(itemOpt);\r\n });\r\n\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return returnValue;\r\n }\r\n\r\n public atzRangeCharFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n rangeChar: IFilterRangeCharacter): IFilterRangeCharacter {\r\n let value = '';\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n value = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return this.atzRangeCharFromQueryParam(value, rangeChar);\r\n }\r\n\r\n public atzRangeNumFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n rangeNum: IFilterRangeNumber): IFilterRangeNumber {\r\n let value = '';\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n value = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return this.atzRangeNumFromQueryParam(value, rangeNum);\r\n }\r\n\r\n public atzRangeDateFromDisclamer(disclaimers: Array<PoDisclaimer>, property: string,\r\n rangeDate: IFilterRangeDate): IFilterRangeDate {\r\n let value = '';\r\n\r\n if (disclaimers && disclaimers.length > 0) {\r\n disclaimers.find((item) => {\r\n if (item.property === property) {\r\n if (item.value === null) { return false; }\r\n value = item.value;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n return this.atzRangeDateFromQueryParam(value, rangeDate);\r\n }\r\n\r\n public atzRangeCharFromQueryParam(value: string, rangeChar: IFilterRangeCharacter): IFilterRangeCharacter {\r\n rangeChar.valInitial = rangeChar.iniInitial;\r\n rangeChar.valFinal = rangeChar.iniFinal;\r\n\r\n if (!value || value === '') { return rangeChar; }\r\n\r\n rangeChar.valInitial = value.split(';')[0];\r\n rangeChar.valFinal = value.split(';')[1];\r\n if (rangeChar.valFinal === null || rangeChar.valFinal === undefined) { rangeChar.valFinal = rangeChar.iniFinal; }\r\n\r\n return rangeChar;\r\n }\r\n\r\n public atzRangeNumFromQueryParam(value: string, rangeNum: IFilterRangeNumber): IFilterRangeNumber {\r\n rangeNum.valInitial = rangeNum.iniInitial;\r\n rangeNum.valFinal = rangeNum.iniFinal;\r\n\r\n if (!value || value === '') { return rangeNum; }\r\n\r\n rangeNum.valInitial = +value.split(';')[0];\r\n rangeNum.valFinal = +value.split(';')[1];\r\n if (rangeNum.valFinal === null || rangeNum.valFinal === undefined) { rangeNum.valFinal = rangeNum.iniFinal; }\r\n\r\n return rangeNum;\r\n }\r\n\r\n public atzRangeDateFromQueryParam(value: string, rangeDate: IFilterRangeDate): IFilterRangeDate {\r\n rangeDate.valInitial = rangeDate.iniInitial;\r\n rangeDate.valFinal = rangeDate.iniFinal;\r\n\r\n if (!value || value === '') { return rangeDate; }\r\n\r\n rangeDate.valInitial = this.queryParamToDate(value.split(';')[0]);\r\n rangeDate.valFinal = this.queryParamToDate(value.split(';')[1]);\r\n if (rangeDate.valFinal === null || rangeDate.valFinal === undefined) { rangeDate.valFinal = rangeDate.iniFinal; }\r\n\r\n return rangeDate;\r\n }\r\n\r\n public dateToQueryParam(date: Date): string {\r\n const iDay = date.getDate();\r\n const iMonth = date.getMonth() + 1;\r\n const iYear = date.getFullYear();\r\n\r\n return `${iYear}-${this.pad(iMonth)}-${this.pad(iDay)}`;\r\n }\r\n\r\n public queryParamToDate(param: string): Date {\r\n const iDay = +param.split('-')[2];\r\n const iMonth = +param.split('-')[1];\r\n const iYear = +param.split('-')[0];\r\n\r\n return new Date(iYear, iMonth - 1, iDay);\r\n }\r\n\r\n public isValidDate(date: Date) {\r\n return date instanceof Date && !isNaN(date.getTime());\r\n }\r\n\r\n public ajustDate(param: any): Date {\r\n if (param instanceof Date) { return param; }\r\n if (!param) { return param; }\r\n\r\n return this.queryParamToDate(param.split('T')[0]);\r\n }\r\n\r\n public pad(number) {\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n return number;\r\n }\r\n}\r\n","/*\r\nVersão: 1.002\r\nData Criação: 19/02/2019\r\n*/\r\n\r\nimport { PoNotificationService, PoI18nPipe } from '@po-ui/ng-components';\r\nimport { DisclaimerUtil } from './disclaimer.util';\r\n\r\nexport class FieldValidationUtil {\r\n poNotification: PoNotificationService;\r\n poI18nPipe: PoI18nPipe;\r\n literals: any = {};\r\n\r\n disclaimerUtil: DisclaimerUtil;\r\n\r\n constructor(\r\n poNotification: PoNotificationService,\r\n poI18nPipe: PoI18nPipe,\r\n literals: Object\r\n ) {\r\n this.poNotification = poNotification;\r\n this.poI18nPipe = poI18nPipe;\r\n this.literals = literals;\r\n this.disclaimerUtil = new DisclaimerUtil(this.poNotification, this.poI18nPipe, this.literals);\r\n }\r\n\r\n public vldFieldCharacter(field: string, value: string): boolean {\r\n if (!value || value.trim() === '') {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRequered'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Valida uma faixa de caracteres se o inicial é menor que final\r\n public vldRangeCharacter(initialField: string, finalField: string, initialValue: string, finalValue: string): boolean {\r\n if (!initialValue || !finalValue) {\r\n return true;\r\n }\r\n\r\n if (initialValue.trim().toUpperCase() > finalValue.trim().toUpperCase()) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRange'],\r\n [this.literals[initialField], this.literals[finalField]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldNumber(field: string, value: number, vldValue = false, zeroAccept = false): boolean {\r\n if (vldValue && !this.vldValueOfNumber(field, value)) {\r\n return false;\r\n }\r\n\r\n if ((!value) || value <= 0) {\r\n if (value === 0 && zeroAccept === true) {\r\n return true;\r\n }\r\n\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRequered'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldValueOfNumber(field: string, value: number): boolean {\r\n if (value && value < 0) {\r\n this.poNotification.error(\r\n { message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldPercent(field: string, value: number, vldValue = false): boolean {\r\n if (vldValue && !this.vldValueOfPercent(field, value)) {\r\n return false;\r\n }\r\n\r\n if (!this.vldFieldNumber(field, value)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldValueOfPercent(field: string, value: number): boolean {\r\n if (value && value < 0) {\r\n this.poNotification.error(\r\n { message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });\r\n return false;\r\n }\r\n\r\n if (value && value > 100) {\r\n this.poNotification.error(\r\n { message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Valida uma faixa de números se o inicial é menor que final\r\n public vldRangeNumber(initialField: string, finalField: string, initialValue: number, finalValue: number): boolean {\r\n if (!initialValue) { initialValue = 0; }\r\n if (!finalValue) { finalValue = 0; }\r\n\r\n if (initialValue > finalValue) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRange'],\r\n [this.literals[initialField], this.literals[finalField]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldDate(field: string, value: Date): boolean {\r\n const valDate = this.disclaimerUtil.ajustDate(value);\r\n\r\n if (!this.disclaimerUtil.isValidDate(valDate)) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldDate'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Valida uma faixa de datas se o inicial é menor que final\r\n public vldRangeDate(initialField: string, finalField: string, initialValue: Date, finalValue: Date): boolean {\r\n if (!initialValue || !finalValue) {\r\n return true;\r\n }\r\n\r\n const valInitialDate = this.disclaimerUtil.ajustDate(initialValue).getTime();\r\n const valFinalDate = this.disclaimerUtil.ajustDate(finalValue).getTime();\r\n\r\n if (valInitialDate > valFinalDate) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldRange'],\r\n [this.literals[initialField], this.literals[finalField]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldMultiSelect(field: string, value: Array<any>): boolean {\r\n if (!value || value.length === 0) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldSelected'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public vldFieldCheckbox(field: string, value: Array<string>): boolean {\r\n if (!value || value.length === 0) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldSelected'], [this.literals[field]])\r\n });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Valida formato conforme regra: \"9\" apenas números, \"X\" qualquer caracter, \"!\" apenas letras maiúsculas\r\n public vldFieldFormat(field: string, value: string, format: string, replacePoint = false): boolean {\r\n let lOK = true;\r\n let oldFormat: string;\r\n\r\n if (!value) { return lOK; }\r\n\r\n /*Retira os pontos do formato*/\r\n if (replacePoint) {\r\n oldFormat = format;\r\n format = format.replace(/\\./g, '');\r\n }\r\n\r\n if (value.length !== format.length) {\r\n lOK = false;\r\n } else {\r\n for (let idx = 0; idx < format.length; idx++) {\r\n if (format[idx] === '9') {\r\n if (value[idx].replace(/[0-9]/, '9') !== '9') { lOK = false; break; }\r\n }\r\n\r\n if (format[idx] === '!') {\r\n if (value[idx].replace(/[A-Z]/, 'A') !== 'A') { lOK = false; break; }\r\n }\r\n }\r\n }\r\n\r\n if (replacePoint) {\r\n format = oldFormat;\r\n }\r\n\r\n if (!lOK) {\r\n this.poNotification.error({\r\n message: this.poI18nPipe.transform(this.literals['fieldVldFormat'], [this.literals[field], format])\r\n });\r\n }\r\n\r\n return lOK;\r\n }\r\n}\r\n","/*\r\nVersão: 1.000\r\nData Criação: 06/08/2018\r\n*/\r\n\r\nimport { IFilterRangeCharacter, IFilterRangeNumber, IFilterRangeDate } from '../../lib/interfaces/filter-range.interface';\r\n\r\nexport class FilterRangeUtil {\r\n\r\n constructor() {\r\n }\r\n\r\n public static makeFilterRangeCharacter(iniInitial: string, iniFinal: string): IFilterRangeCharacter {\r\n return {\r\n iniInitial,\r\n iniFinal,\r\n valInitial: iniInitial,\r\n valFinal: iniFinal\r\n };\r\n }\r\n\r\n public static makeFilterRangeNumber(iniInitial: number, iniFinal: number): IFilterRangeNumber {\r\n return {\r\n iniInitial,\r\n iniFinal,\r\n valInitial: iniInitial,\r\n valFinal: iniFinal\r\n };\r\n }\r\n\r\n public static makeFilterRangeDate(iniInitial: Date, iniFinal: Date): IFilterRangeDate {\r\n return {\r\n iniInitial,\r\n iniFinal,\r\n valInitial: iniInitial,\r\n valFinal: iniFinal\r\n };\r\n }\r\n}\r\n","/*\r\nVersão: 1.003\r\nData Criação: 18/04/2019\r\n*/\r\n\r\nimport { PoMultiselectOption, PoSelectOption } from '@po-ui/ng-components';\r\n\r\nexport interface ChartSeries {\r\n name?: string;\r\n data?: Array<number>;\r\n}\r\nexport interface ChartValues {\r\n minValue: number;\r\n maxValue: number;\r\n}\r\n\r\nexport class GenericFunctionsUtils {\r\n\r\n literals: any = {};\r\n\r\n constructor(\r\n literals: Object\r\n ) {\r\n this.literals = literals;\r\n }\r\n\r\n /* Transforma uma Lista separada por \",\" em um Array */\r\n static listToArrayCharacter(list: string): Array<string> {\r\n let returnArray = new Array<string>();\r\n\r\n if (list && list !== '') {\r\n returnArray = list.split(',');\r\n }\r\n\r\n return returnArray;\r\n }\r\n\r\n /* Transforma um Array em uma Lista separada por \",\" */\r\n static ArrayToListCharacter(array: Array<string>): string {\r\n let list = '';\r\n\r\n if (array && array.length > 0) {\r\n list = array.join(',');\r\n }\r\n\r\n return list;\r\n }\r\n\r\n static isEmpty(object: object): boolean {\r\n let isEmpty = true;\r\n\r\n for (const content in object) {\r\n if (object.hasOwnProperty(content)) {\r\n isEmpty = false;\r\n }\r\n }\r\n\r\n return isEmpty;\r\n }\r\n\r\n static getChartValues(chartData: Array<ChartSeries>): ChartValues {\r\n\r\n let chartValues: ChartValues;\r\n\r\n let maxValue,\r\n minValue;\r\n\r\n maxValue = undefined;\r\n minValue = undefined;\r\n\r\n chartData.map(item => {\r\n if (maxValue === undefined && minValue === undefined) {\r\n maxValue = item.data[0];\r\n minValue = item.data[0];\r\n } else {\r\n if (item.data < minValue) {\r\n minValue = item.data[0];\r\n }\r\n if (item.data > maxValue) {\r\n maxValue = item.data[0];\r\n }\r\n }\r\n });\r\n\r\n if (maxValue > 0 && minValue > 0) {\r\n chartValues = { maxValue: maxValue, minValue: 0 };\r\n }\r\n\r\n if (maxValue > 0 && minValue < 0) {\r\n chartValues = { maxValue: maxValue, minValue: minValue };\r\n }\r\n\r\n if (maxValue < 0 && minValue < 0) {\r\n const max = (minValue / 3) * (- 1);\r\n chartValues = { maxValue: max, minValue: minValue };\r\n }\r\n\r\n if (maxValue > 0 && minValue === 0) {\r\n chartValues = { maxValue: maxValue, minValue: 0 };\r\n }\r\n\r\n if (maxValue === 0 && minValue < 0) {\r\n const max = (minValue / 3) * (- 1);\r\n chartValues = { maxValue: max, minValue: minValue };\r\n }\r\n\r\n if (maxValue === 0 && minValue === 0) {\r\n chartValues = { maxValue: undefined, minValue: undefined };\r\n }\r\n\r\n chartValues.maxValue = Math.round(chartValues.maxValue);\r\n chartValues.minValue = Math.round(chartValues.minValue);\r\n\r\n return chartValues;\r\n }\r\n\r\n /*Deixa no list apenas o itens que existem no options*/\r\n static atzMultiSelectListByOptions(options: Array<PoMultiselectOption>, list: Array<string>): Array<string> {\r\n let idx: number;\r\n let newList: Array<string>;\r\n\r\n if (!list) {\r\n return list;\r\n }\r\n\r\n newList = new Array<string>();\r\n\r\n list.map(item => {\r\n if (item) {\r\n idx = options.findIndex(itemOptions => itemOptions.value === item);\r\n if (idx >= 0) {\r\n newList.push(item);\r\n }\r\n }\r\n });\r\n\r\n return newList;\r\n }\r\n\r\n /*Carrega o Options com os valores defaults passados como parâmetro (list)*/\r\n public loadOptionsMultiSelect(options: Array<PoMultiselectOption>, list: Array<string>): void {\r\n let idx: number;\r\n\r\n if (!list) {\r\n return;\r\n }\r\n\r\n list.map(item => {\r\n if (item) {\r\n idx = options.findIndex(itemOptions => itemOptions.value === item);\r\n if (idx === -1) {\r\n options.push({ label: item === 'all' ? this.literals['all'] : item, value: item });\r\n }\r\n }\r\n });\r\n }\r\n\r\n /*Carrega o Options com os valores defaults passados como parâmetro (list)*/\r\n public loadOptionsSelect(options: Array<PoSelectOption>, selectValue: string, tradValue = false): void {\r\n let idx: number;\r\n\r\n if (!selectValue) {\r\n return;\r\n }\r\n\r\n if (selectValue) {\r\n idx = options.findIndex(itemOptions => itemOptions.value === selectValue);\r\n if (idx === -1) {\r\n options.push({ label: tradValue ? this.literals[selectValue] : selectValue, value: selectValue });\r\n }\r\n }\r\n }\r\n\r\n /*Método que compara 2 objetos e retorna se são iguais ou diferentes*/\r\n public compareObjects(firstObject: Object, secondObject: Object): boolean {\r\n\r\n if (!firstObject || !secondObject) {\r\n return false;\r\n }\r\n\r\n /*Pega a lista de nomes dos campos do objetos e compara*/\r\n if (Object.getOwnPropertyNames(firstObject).length !== Object.getOwnPropertyNames(secondObject).length) {\r\n return false;\r\n }\r\n\r\n for (const content in firstObject) {\r\n if (content.substr(0, 1) === '$' || content.substr(0, 1) === '_') {\r\n continue;\r\n }\r\n\r\n if (firstObject[content] !== secondObject[content]) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public referenceGeneration(charInd: string, dateRef: Date): string {\r\n let reference: string;\r\n let random: string;\r\n\r\n const iDay = dateRef.getDate();\r\n const iMonth = dateRef.getMonth() + 1;\r\n const iYear = dateRef.getFullYear();\r\n\r\n reference = `${this.pad(iYear)}${this.pad(iMonth)}${this.pad(iDay)}${charInd}`;\r\n\r\n random = btoa(`${(new Date()).getTime()}`);\r\n random = random.replace(/[=]/g, '');\r\n random = random.slice(random.length - 3, random.length);\r\n\r\n return `${reference}${random}`;\r\n }\r\n\r\n public pad(number): string {\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n if (number > 99) {\r\n return (number + '').slice(2, 4);\r\n }\r\n return number;\r\n }\r\n\r\n public focusInternalInput(idField: string) {\r\n const fieldComponent = document.getElementById(idField);\r\n const fieldInput = (<HTMLScriptElement[]><any>fieldComponent.getElementsByClassName('po-input'))[0];\r\n fieldInput.focus();\r\n }\r\n}\r\n","export class FileUtil {\r\n\r\n constructor(\r\n ) { }\r\n\r\n static downloadFile(data: any, fileName: string, contentType?: string, base64?: boolean): void {\r\n base64 = (base64 === false) ? false : true;\r\n const dataBlob = base64 ? this.b64toBlob(data, contentType) : data;\r\n this.download(dataBlob, fileName);\r\n }\r\n\r\n static downloadData(data: Array<any>, dwldDataParam: IDownloadDataParams = null): void {\r\n if (!data) { return; }\r\n\r\n if (!dwldDataParam) { dwldDataParam = new DownloadDataParams(); }\r\n if (!dwldDataParam.fileName) { dwldDataParam.fileName = 'data.csv'; }\r\n if (!dwldDataParam.literals) { dwldDataParam.literals = {}; }\r\n if (!dwldDataParam.columnDelimiter) { dwldDataParam.columnDelimiter = ';'; }\r\n if (!dwldDataParam.columnList) { dwldDataParam.columnList = []; }\r\n if (!dwldDataParam.columnExclude) { dwldDataParam.columnExclude = []; }\r\n\r\n const datab64 = btoa(this.jsonToString(data, dwldDataParam));\r\n this.downloadFile(datab64, dwldDataParam.fileName, 'text/csv');\r\n }\r\n\r\n private static download(file: Blob, fileName: string): void {\r\n const binaryData = [file];\r\n const downloadLink = document.createElement('a');\r\n const urlDownload = window.URL.createObjectURL(new Blob(binaryData, { type: file.type }));\r\n\r\n /**Verifica se é ie ou edge, pois o mesmo tem tratamento próprio para arquivos blob */\r\n if (navigator.userAgent.toUpperCase().indexOf('.NET') > 0 || navigator.userAgent.toUpperCase().indexOf('EDGE') > 0) {\r\n window.navigator.msSaveOrOpenBlob(file, fileName);\r\n } else {\r\n downloadLink.href = urlDownload;\r\n downloadLink.setAttribute('download', fileName);\r\n document.body.appendChild(downloadLink);\r\n downloadLink.click();\r\n window.URL.revokeObjectURL(urlDownload);\r\n downloadLink.remove();\r\n }\r\n }\r\n\r\n private static b64toBlob(b64Data: any, contentType?: string, sliceSize?: number): Blob {\r\n contentType = contentType || '';\r\n sliceSize = sliceSize || 512;\r\n\r\n const byteCharacters = atob(b64Data);\r\n const byteArrays = [];\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n\r\n const blob = new Blob(byteArrays, { type: contentType });\r\n return blob;\r\n }\r\n\r\n private static jsonToString(jsonData: Array<any>, dwldDataParam: IDownloadDataParams): string {\r\n if (!jsonData || jsonData.length === 0) { return ''; }\r\n\r\n const lineDelimiter = '\\n';\r\n\r\n let columnOrig = null;\r\n let columnHeader = null;\r\n const keys = [];\r\n let includeKey: boolean;\r\n\r\n if (dwldDataParam.columnList &&\r\n dwldDataParam.columnList.length > 0) {\r\n columnOrig = dwldDataParam.columnList;\r\n } else {\r\n columnOrig = Object.keys(jsonData[0]);\r\n }\r\n\r\n columnOrig.forEach(key => {\r\n includeKey = true;\r\n\r\n if (dwldDataParam.columnExclude &&\r\n dwldDataParam.columnExclude.length > 0 &&\r\n dwldDataParam.columnExclude.indexOf(key) !== -1) {\r\n includeKey = false;\r\n }\r\n\r\n if (includeKey) {\r\n keys.push(key);\r\n columnHeader = (!columnHeader) ? '' : columnHeader + dwldDataParam.columnDelimiter;\r\n columnHeader += (dwldDataParam.literals[key]) ? dwldDataParam.literals[key] : key;\r\n }\r\n });\r\n\r\n const lineStr = jsonData.reduce((accLineStr, currentItem) => {\r\n let first = true;\r\n let columnValue = null;\r\n\r\n keys.forEach(key => {\r\n if (!first) { accLineStr += dwldDataParam.columnDelimiter; }\r\n\r\n columnValue = currentItem[key];\r\n if (columnValue === null || columnValue === undefined) { columnValue = ''; }\r\n switch (typeof (columnValue)) {\r\n case 'number':\r\n columnValue = columnValue.toLocaleString();\r\n break;\r\n case 'boolean':\r\n columnValue = (dwldDataParam.literals[`${columnValue}`]) ?\r\n dwldDataParam.literals[`${columnValue}`] : columnValue;\r\n break;\r\n case 'object':\r\n columnValue = JSON.stringify(columnValue);\r\n }\r\n accLineStr += columnValue;\r\n\r\n first = false;\r\n });\r\n\r\n return accLineStr + lineDelimiter;\r\n\r\n }, columnHeader + lineDelimiter);\r\n\r\n return lineStr;\r\n }\r\n}\r\n\r\nexport interface IDownloadDataParams {\r\n fileName: string;\r\n literals: any;\r\n columnDelimiter: string;\r\n columnList: Array<string>;\r\n columnExclude: Array<string>;\r\n}\r\n\r\nexport class DownloadDataParams implements IDownloadDataParams {\r\n fileName: string;\r\n literals: any;\r\n columnDelimiter: string;\r\n columnList: Array<string>;\r\n columnExclude: Array<string>;\r\n}\r\n","export interface IScheduleParameters {\r\n executionType: number;\r\n execAppointDate: Date;\r\n execAppointHour: string;\r\n executionServer: string;\r\n repeatExecution: boolean;\r\n repeatType: number;\r\n frequency: string;\r\n frequencyValue: number;\r\n frequencyType: string;\r\n execAppointHourInit: string;\r\n execAppointHourFinal: string;\r\n selectWeeklys: [];\r\n dayOfMonth: number;\r\n}\r\n\r\nexport class ScheduleParameters implements IScheduleParameters {\r\n executionType: number;\r\n execAppointDate: Date;\r\n execAppointHour: string;\r\n executionServer: string;\r\n repeatExecution: boolean;\r\n repeatType: number;\r\n frequency: string;\r\n frequencyValue: number;\r\n frequencyType: string;\r\n execAppointHourInit: string;\r\n execAppointHourFinal: string;\r\n selectWeeklys: [];\r\n dayOfMonth: number;\r\n}\r\n\r\nexport interface IExecutionStatus {\r\n jobScheduleID: string;\r\n executionID: string;\r\n startedDate: Date;\r\n error: string;\r\n status: string;\r\n}\r\n\r\nexport class ExecutionStatus implements IExecutionStatus {\r\n jobScheduleID: string;\r\n executionID: string;\r\n startedDate: Date;\r\n error: string;\r\n status: string;\r\n}\r\n\r\nexport interface IExecutionParameters {\r\n executionServer: string;\r\n programName: string;\r\n externalName: string;\r\n programEMS5: boolean;\r\n programVersion: string;\r\n businessParams: Array<any>;\r\n}\r\n\r\nexport class ExecutionParameters implements IExecutionParameters {\r\n executionServer: string;\r\n programName: string;\r\n externalName: string;\r\n programEMS5: boolean;\r\n programVersion: string;\r\n businessParams: Array<any>;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { PoLookupFilteredItemsParams } from '@po-ui/ng-components';\r\nimport { ExecutionStatus, IExecutionParameters, IExecutionStatus } from './totvs-schedule-execution.model';\r\n\r\n@Injectable()\r\nexport class TotvsScheduleExecutionService {\r\n\r\n private headers = { headers: { 'X-PO-Screen-Lock': 'true' } };\r\n\r\n private urlCadServidor = '/dts/datasul-rest/resources/prg/btb/v1/servidoresExecucao';\r\n private urlJobScheduler = '/dts/datasul-rest/resources/prg/framework/v1/jobScheduler';\r\n private urlJobExecution = '/dts/datasul-rest/resources/prg/framework/v1/jobExecution';\r\n\r\n // private urlCadServidor = '/genericsZoom';\r\n // private urlJobScheduler = '/jobScheduler';\r\n\r\n private jobExecutionSubscription$: Subscription;\r\n\r\n constructor(public http: HttpClient) { }\r\n\r\n getFilteredItems(params: PoLookupFilteredItemsParams): Observable<any> {\r\n const urlParams = new Array<string>();\r\n\r\n urlParams.push(`pageSize=${params.pageSize.toString()}`);\r\n urlParams.push(`page=${params.page.toString()}`);\r\n\r\n if (params.filter && params.filter.length > 0) {\r\n urlParams.push(`quickSearch=${params.filter}`);\r\n }\r\n\r\n return this.http.get(`${this.urlCadServidor}?${urlParams.join('&')}`);\r\n }\r\n\r\n getObjectByValue(id: string): Observable<any> {\r\n return this.http.get<any>(`${this.urlCadServidor}/${id}`, this.headers);\r\n }\r\n\r\n createExecution(parameters: Object, loading: boolean): Observable<any> {\r\n const params = JSON.parse(JSON.stringify(parameters).replace(/\\\\\\\\/g, '*|'));\r\n\r\n if (loading) {\r\n return this.http.post(`${this.urlJobScheduler}`, params, this.headers);\r\n } else {\r\n return this.http.post(`${this.urlJobScheduler}`, params);\r\n }\r\n }\r\n\r\n createExecutionForNow(executionParams: IExecutionParameters, loading: boolean): Observable<any> {\r\n let jobScheduleParams: any;\r\n const date = new Date();\r\n\r\n const params = JSON.parse(JSON.stringify(executionParams).replace(/\\\\\\\\/g, '*|'));\r\n if (!params.businessParams || params.businessParams.length === 0) {\r\n params.businessParams = [{ chave: '', valor: '' }];\r\n }\r\n\r\n jobScheduleParams = {};\r\n jobScheduleParams.status = 'active';\r\n jobScheduleParams.processID = params.programName;\r\n jobScheduleParams.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;\r\n jobScheduleParams.recurrent = false;\r\n\r\n jobScheduleParams.executionParameter = {\r\n parametros: [\r\n { chave: 'rpwServer', valor: params.executionServer },\r\n { chave: 'RPW_PROGRAM', valor: params.externalName },\r\n { chave: 'RPW_PRG_EMS5', valor: params.programEMS5 ? 'yes' : 'no' },\r\n { chave: 'RPW_PRG_VERS', valor: params.programVersion },\r\n { parametros_negocio: params.businessParams }\r\n ]\r\n };\r\n\r\n if (loading) {\r\n return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams, this.headers);\r\n } else {\r\n return this.http.post(`${this.urlJobScheduler}`, jobScheduleParams);\r\n }\r\n }\r\n\r\n getExecutionByJobScheduleID(jobScheduleID: string, loading = false): Observable<IExecutionStatus> {\r\n const url = `${this.urlJobExecution}?jobScheduleID=${jobScheduleID}`;\r\n return this.getExecution(url, loading).pipe(\r\n map((response) => this.transformExecution('jobScheduleID', response))\r\n );\r\n }\r\n\r\n getExecutionByExecutionID(executionID: string, loading = false): Observable<IExecutionStatus> {\r\n const url = `${this.urlJobExecution}/${executionID}`;\r\n return this.getExecution(url, loading).pipe(\r\n map((response) => this.transformExecution('executionID', response))\r\n );\r\n }\r\n\r\n private getExecution(url: string, loading: boolean): Observable<any> {\r\n if (loading) {\r\n return this.http.get(url, this.headers);\r\n } else {\r\n return this.http.get(url);\r\n }\r\n }\r\n\r\n private transformExecution(type: string, response: any): IExecutionStatus {\r\n if (!response || !response.items || response.items.length === 0) { return; }\r\n response = response.items[0];\r\n\r\n const execStatus = new ExecutionStatus();\r\n execStatus.jobScheduleID = response.jobScheduleID;\r\n execStatus.executionID = response.executionID;\r\n execStatus.startedDate = response.startedDate;\r\n execStatus.error = response.error;\r\n execStatus.status = response.status;\r\n\r\n return execStatus;\r\n }\r\n\r\n followUpExcByJobScheduleID(jobScheduleID: string, intervalNum: number, fncCallBack: Function, loading = false): void {\r\n this.followUpExecution('jobScheduleID', jobScheduleID, intervalNum, fncCallBack, loading);\r\n }\r\n\r\n followUpExcByExecutionID(executionID: string, intervalNum: number, fncCallBack: Function, loading = false): void {\r\n this.followUpExecution('executionID', executionID, intervalNum, fncCallBack, loading);\r\n }\r\n\r\n private followUpExecution(type: string, execID: string,\r\n intervalNum: number, fncCallBack: Function, loading: boolean): void {\r\n\r\n this.jobExecutionSubscription$ = null;\r\n\r\n const intervalID = setInterval(() => {\r\n const execStatus = new ExecutionStatus();\r\n execStatus.jobScheduleID = (type === 'jobScheduleID') ? execID : '';\r\n execStatus.executionID = (type === 'executionID') ? execID : '';\r\n execStatus.startedDate = null;\r\n execStatus.error = '';\r\n execStatus.status = 'PENDING'; // PENDING, RUNNING, SUCCESS, FAILURE\r\n\r\n if (this.jobExecutionSubscription$) { return; }\r\n\r\n if (type === 'jobScheduleID') {\r\n this.jobExecutionSubscription$ = this.getExecutionByJobScheduleID(execID, loading)\r\n .subscribe((response: IExecutionStatus) => {\r\n this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);\r\n }, (error) => {\r\n this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);\r\n });\r\n }\r\n\r\n if (type === 'executionID') {\r\n this.jobExecutionSubscription$ = this.getExecutionByExecutionID(execID, loading)\r\n .subscribe((response: IExecutionStatus) => {\r\n this.followUpExecReturnOk(execID, execStatus, response, intervalID, fncCallBack);\r\n }, (error) => {\r\n this.followUpExecReturnError(error, execStatus, intervalID, fncCallBack);\r\n });\r\n }\r\n\r\n }, intervalNum);\r\n }\r\n\r\n private followUpExecReturnOk(execID: string, execStatus: IExecutionStatus, response: IExecutionStatus,\r\n intervalID: any, fncCallBack: Function): void {\r\n\r\n if (response) {\r\n execStatus = response;\r\n } else {\r\n execStatus.error = `Agendamento não encontrado com ID: ${execID}`;\r\n execStatus.status = 'FAILURE';\r\n }\r\n\r\n if (!fncCallBack(execStatus) ||\r\n execStatus.status === 'SUCCESS' ||\r\n execStatus.status === 'FAILURE') {\r\n clearInterval(intervalID);\r\n }\r\n\r\n this.jobExecutionSubscription$ = null;\r\n }\r\n\r\n private followUpExecReturnError(error: any, execStatus: IExecutionStatus,\r\n intervalID: any, fncCallBack: Function): void {\r\n\r\n let erroDesc = '';\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n erroDesc = error.message;\r\n if (error.error) {\r\n erroDesc = '';\r\n if (error.error.code) { erroDesc = error.error.code; }\r\n if (error.error.message) { erroDesc = `${erroDesc} - ${error.error.message}`; }\r\n if (error.error.detailedMessage) { erroDesc = `${erroDesc} - ${error.error.detailedMessage}`; }\r\n }\r\n } else {\r\n erroDesc = error;\r\n }\r\n\r\n execStatus.error = erroDesc;\r\n execStatus.status = 'FAILURE';\r\n fncCallBack(execStatus);\r\n clearInterval(intervalID);\r\n this.jobExecutionSubscription$ = null;\r\n }\r\n\r\n private addZero(num: number): string {\r\n let str = `${num}`;\r\n if (num < 10) { str = `0${num}`; }\r\n return str;\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { PoRadioGroupOption, PoI18nService, PoNotificationService, PoLookupColumn } from '@po-ui/ng-components';\r\nimport { IScheduleParameters, ScheduleParameters } from './totvs-schedule-execution.model';\r\nimport { NgForm } from '@angular/forms';\r\nimport { TotvsScheduleExecutionService } from './totvs-schedule-execution.service';\r\n\r\n@Component({\r\n selector: 'app-totvs-schedule-execution',\r\n templateUrl: './totvs-schedule-execution.component.html',\r\n styleUrls: ['./totvs-schedule-execution.component.css']\r\n})\r\n\r\nexport class TotvsScheduleExecutionComponent implements OnInit {\r\n @ViewChild('scheduleExecutionForm', { static: true }) scheduleExecutionForm: NgForm;\r\n\r\n @Input() programName: string;\r\n @Input() externalName: string;\r\n @Input() programEMS5 = false;\r\n @Input() programVersion = '';\r\n @Input() parameters: [];\r\n @Input() disabledParams = false;\r\n @Input() loading = false;\r\n @Output() endExecution = new EventEmitter();\r\n\r\n constructor(\r\n public poI18nService: PoI18nService,\r\n public rpwService: TotvsScheduleExecutionService,\r\n public poNotification: PoNotificationService) {\r\n }\r\n\r\n executionTypeOptions: Array<PoRadioGroupOption>;\r\n frequencyOptions: Array<PoRadioGroupOption>;\r\n frequencyTypeOptions: Array<PoRadioGroupOption>;\r\n weeklyOptions: Array<PoRadioGroupOption>;\r\n zoomRpwServiceColumns: Array<PoLookupColumn>;\r\n model: ScheduleParameters;\r\n private jsonObject: any = {};\r\n\r\n literals: any = {};\r\n\r\n ngOnInit() {\r\n /* VERIFICAR COMO FICARÁ A TRADUÇÃO\r\n forkJoin(\r\n this.poI18nService.getLiterals(),\r\n this.poI18nService.getLiterals({ context: 'generalRpw' })\r\n ).subscribe(literals => {\r\n literals.map(item => Object.assign(this.literals, item) );\r\n this.setupComponents();\r\n });*/\r\n\r\n this.setupComponents();\r\n }\r\n\r\n setupComponents() {\r\n this.executionTypeOptions = [\r\n { label: 'Executar Hoje', value: 1 },\r\n { label: 'Agendar Execução', value: 2 }\r\n ];\r\n\r\n this.frequencyOptions = [\r\n { label: 'Uma vez no dia', value: 'no' },\r\n { label: 'Várias vezes no dia', value: 'yes' }\r\n ];\r\n\r\n this.frequencyTypeOptions = [\r\n { label: 'Hora(s)', value: 'hour' },\r\n { label: 'Minuto(s)', value: 'minute' }\r\n ];\r\n\r\n this.weeklyOptions = [\r\n { label: 'Domingo', value: 'Sunday' },\r\n { label: 'Segunda', value: 'Monday' },\r\n { label: 'Terça', value: 'Tuesday' },\r\n { label: 'Quarta', value: 'Wednesday' },\r\n { label: 'Quinta', value: 'Thursday' },\r\n { label: 'Sexta', value: 'Friday' },\r\n { label: 'Sábado', value: 'Saturday' }\r\n ];\r\n\r\n this.zoomRpwServiceColumns = [\r\n { property: 'code', label: 'Servidor', type: 'string', width: '20%' },\r\n { property: 'name', label: 'Descrição', type: 'string', width: '80%' }\r\n ];\r\n\r\n this.model = new ScheduleParameters();\r\n this.model.executionType = 1;\r\n this.model.repeatType = 1;\r\n this.model.repeatExecution = false;\r\n }\r\n\r\n public setScheduleParameters(schParam: IScheduleParameters) {\r\n if (!schParam) { return; }\r\n this.model = schParam;\r\n }\r\n\r\n fieldRpwServiceFormat(value) {\r\n return `${value.code} - ${value.name}`;\r\n }\r\n\r\n isExecutionSchedule(): boolean {\r\n return (this.model.executionType === 2);\r\n }\r\n\r\n isRepeatExecution(): boolean {\r\n return this.model.repeatExecution;\r\n }\r\n\r\n isFrenquency(): boolean {\r\n return (this.model.frequency === 'yes');\r\n }\r\n\r\n changeRepeatExecution() {\r\n const date = new Date();\r\n\r\n if (!this.model.execAppointHourInit) { this.model.execAppointHourInit = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`; }\r\n if (!this.model.execAppointHourFinal) { this.model.execAppointHourFinal = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`; }\r\n this.model.selectWeeklys = [];\r\n this.model.dayOfMonth = 0;\r\n this.model.frequency = 'no';\r\n this.model.frequencyType = 'hour';\r\n this.model.frequencyValue = 0;\r\n }\r\n\r\n changeExecutionType() {\r\n const date = new Date();\r\n\r\n this.model.execAppointDate = date;\r\n this.model.execAppointHour = `${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}`;\r\n }\r\n\r\n changeTypeFrequency() {\r\n }\r\n\r\n getActiveTab(codTab: number) {\r\n return (this.model.repeatType === codTab);\r\n }\r\n\r\n setActiveTab(codTab: number) {\r\n this.model.repeatType = codTab;\r\n }\r\n\r\n addZero(num: number): string {\r\n let str = `${num}`;\r\n if (num < 10) { str = `0${num}`; }\r\n return str;\r\n }\r\n\r\n executeSchedule() {\r\n if (this.disabledParams) { return; }\r\n if (!this.validate()) { return; }\r\n\r\n this.jsonObject = {};\r\n this.jsonObject.status = 'active';\r\n this.jsonObject.processID = this.programName;\r\n this.jsonObject.recurrent = this.model.repeatExecution;\r\n this.jsonObject.executionParameter = {};\r\n\r\n if (this.model.executionType === 1) {\r\n const date = new Date();\r\n this.jsonObject.firstExecution = `${date.getFullYear()}-${(date.getMonth() + 1)}-${date.getDate()}T${this.addZero(date.getHours())}:${this.addZero(date.getMinutes())}:00.000Z`;\r\n }\r\n if (this.model.executionType === 2) {\r\n this.jsonObject.firstExecution = `${this.model.execAppointDate}T${this.model.execAppointHour}:00.000Z`;\r\n }\r\n\r\n this.jsonObject.executionParameter.parametros = [];\r\n this.jsonObject.executionParameter.parametros[0] = { chave: 'rpwServer', valor: this.model.executionServer };\r\n this.jsonObject.executionParameter.parametros[1] = { chave: 'RPW_PROGRAM', valor: this.externalName };\r\n this.jsonObject.executionParameter.parametros[2] = { chave: 'RPW_PRG_EMS5', valor: this.programEMS5 ? 'yes' : 'no' };\r\n this.jsonObject.executionParameter.parametros[3] = { chave: 'RPW_PRG_VERS', valor: this.programVersion };\r\n\r\n this.jsonObject.executionParameter.parametros[4] = {};\r\n this.jsonObject.executionParameter.parametros[4].parametros_negocio = this.parameters;\r\n\r\n // Executa hoje ou agendada\r\n this.rpwService.createExecution(this.jsonObject, this.loading).subscribe(() => {\r\n this.poNotification.success('Agendamento realizado com sucesso !');\r\n });\r\n\r\n if (this.model.repeatExecution) {\r\n if (this.model.repeatType === 1) {\r\n this.jsonObject.daily = {\r\n hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),\r\n minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm')\r\n };\r\n }\r\n\r\n if (this.model.repeatType === 2) {\r\n this.jsonObject.weekly = {\r\n hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),\r\n minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),\r\n daysOfWeek: this.model.selectWeeklys\r\n };\r\n }\r\n\r\n if (this.model.repeatType === 3) {\r\n this.jsonObject.monthly = {\r\n hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),\r\n minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),\r\n day: this.model.dayOfMonth\r\n };\r\n }\r\n\r\n if (this.isFrenquency()) {\r\n this.jsonObject.rangeExecutions = {\r\n frequency: {\r\n type: this.model.frequencyType,\r\n value: this.model.frequencyValue\r\n },\r\n rangeLimit: {\r\n hour: this.getHourOrMinute(this.model.execAppointHourFinal, 'h'),\r\n minute: this.getHourOrMinute(this.model.execAppointHourFinal, 'm')\r\n }\r\n };\r\n }\r\n\r\n // Executa a diária, semanal ou mensal\r\n this.rpwService.createExecution(this.jsonObject, this.loading).subscribe(() => {\r\n });\r\n }\r\n\r\n this.endExecution.emit(this.model);\r\n }\r\n\r\n getHourOrMinute(value: string, type: string): number {\r\n if (type === 'h') { return +value.substring(0, 2); }\r\n if (type === 'm') { return +value.substring(3, 6); }\r\n }\r\n\r\n compareHour(hourInit: string, hourFinal: string): boolean {\r\n if (hourInit === hourFinal) { return false; }\r\n if (this.getHourOrMinute(hourInit, 'h') < this.getHourOrMinute(hourFinal, 'h')) { return true; }\r\n if (this.getHourOrMinute(hourInit, 'm') > this.getHourOrMinute(hourFinal, 'm')) { return false; }\r\n return true;\r\n }\r\n\r\n validate(): boolean {\r\n\r\n if (!this.scheduleExecutionForm.valid) {\r\n this.poNotification.error('Verifique as inconsistências em tela.');\r\n return false;\r\n }\r\n\r\n if (!this.model.executionServer) {\r\n this.poNotification.error('Servidor de Execução não foi informado.');\r\n return false;\r\n }\r\n\r\n if (this.isExecutionSchedule() && (!this.model.execAppointDate || !this.model.execAppointHour)) {\r\n this.poNotification.error('Informar a data e a hora para agendamento da execução.');\r\n return false;\r\n }\r\n\r\n if (this.model.repeatExecution) {\r\n if (!this.model.execAppointHourInit) {\r\n this.poNotification.error('Informar a hora de início para a execução.');\r\n return false;\r\n }\r\n\r\n if (this.model.repeatType === 2 && (this.model.selectWeeklys.length === 0)) {\r\n this.poNotification.error('Informar os dias da semana para a execução.');\r\n return false;\r\n }\r\n\r\n if (this.model.repeatType === 3 && (!this.model.dayOfMonth)) {\r\n this.poNotification.error('Informar o dia para a execução.');\r\n return false;\r\n }\r\n\r\n if (this.isFrenquency()) {\r\n if (!this.compareHour(this.model.execAppointHourInit, this.model.execAppointHourFinal)) {\r\n this.poNotification.error('Hora Fim deve ser maior que Hora Início.');\r\n return false;\r\n }\r\n\r\n if (this.model.frequencyValue === 0) {\r\n this.poNotification.error('Informar a frequência de execução (A cada hora/minuto).');\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'dtsDateFormat'\r\n})\r\n\r\nexport class DtsDateFormatPipe implements PipeTransform {\r\n\r\n transform(value: any, format: string = 'dd/MM/yyyy'): any {\r\n const { 0: year, 1: month, 2: day } = value.split('-');\r\n\r\n const formattedDate = format.replace('dd', day)\r\n .replace('MM', month)\r\n .replace('yyyy', year);\r\n\r\n return formattedDate;\r\n }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport {\r\n TotvsScheduleExecutionComponent\r\n} from './components/totvs-schedule-execution/totvs-schedule-execution.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PoModule, PoI18nService } from '@po-ui/ng-components';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n// import { BrowserModule } from '@angular/platform-browser';\r\nimport { TotvsScheduleExecutionService } from './components/totvs-schedule-execution/totvs-schedule-execution.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DtsDateFormatPipe } from './pipes/dts-date-format.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n TotvsScheduleExecutionComponent,\r\n DtsDateFormatPipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n PoModule,\r\n FormsModule,\r\n HttpClientModule\r\n ],\r\n exports: [\r\n TotvsScheduleExecutionComponent,\r\n DtsDateFormatPipe\r\n ],\r\n providers: [\r\n TotvsScheduleExecutionService\r\n ]\r\n})\r\n\r\nexport class DtsBackofficeUtilsModule {\r\n static forRoot(): ModuleWithProviders<DtsBackofficeUtilsModule> {\r\n return {\r\n ngModule: DtsBackofficeUtilsModule,\r\n providers: [TotvsScheduleExecutionService]\r\n };\r\n }\r\n}\r\n"]}
|