{ "version": 3, "file": "main.b4b9c7c8e528b009.js?version=1", "mappings": "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BACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,YACA,eACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,kBACA,qBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,oBAIA,cACA,WACA,WACA,CACA,cACA,cACA,8CACA,gCACApa,CACA,CACA,WACA,CACAg2B,kBACA,qBACA,EACAA,YACAC,YACAD", "names": ["NoAccessComponent", "constructor", "auth", "alert", "router", "this", "ngOnInit", "pageTitle", "undefined", "console", "log", "open", "heading", "msg", "type", "setTimeout", "navigate", "defaultUrl", "i0", "selectors", "EnquiryTypeModel", "showPackagingTab", "showTransportTab", "packagingOnly", "tranportOnly", "showCollection", "QuoteTypeModel", "isHauilerAssigned", "isHaulierAwarded", "showAssignBtn", "showAwardBtn", "showSaveBtn", "RoleAssign", "DefaultPage", "Active", "AccessMenus", "RoleId", "RoleName", "createdby", "updatedby", "NewAccessMenuJson", "ExistingRoleAssign", "UserRoles", "transportTabs", "specialInstruction", "siteRestrictions", "AccordionComponent", "cdr", "ngAfterContentInit", "initFnt", "_accBody", "changes", "subscribe", "_storeSub", "forEach", "element", "unsubscribe", "_mainData", "accordionBody", "index", "collapsed", "animateAccord", "push", "id", "hide", "active", "referencer", "dats", "clickListner", "res", "headerClicks", "accordBody", "singular", "BodyComponent", "bodyExpansion", "trigger", "state", "style", "height", "visibility", "transition", "animate", "params", "time", "renderer", "EventEmitter", "isMatched", "isActive", "header", "headerClicked", "emit", "panelState", "reverse", "direction", "detectChanges", "_accordBody", "data", "HeaderComponent", "changeDetection", "val", "headerClick", "ctx", "ConfirmationModule", "static", "ngModule", "providers", "ConfirmationService", "imports", "CommonModule", "NguModalModule", "FormsModule", "ReactiveFormsModule", "ConfirmationDialog", "ConfirmationComponent", "confirmModalIndex", "backdrop", "ngAfterViewInit", "afterView", "modal", "destroy", "compRef", "confirm", "ref", "setData", "Promise", "resolve", "reject", "buttons", "btn", "listen", "nativeElement", "$event", "value", "getAttribute", "close", "confirmData", "body", "btns", "otherBtns", "name", "noButton", "color", "yesButton", "othersBtn", "NguModal", "factoryResolver", "setRootViewContainerRef", "viewContainerRef", "rootViewContainer", "addDynamicComponent", "factory", "resolveComponentFactory", "createComponent", "then", "cmpRef", "instance", "ComponentFactoryResolver", "NguPagination", "isFirst", "isLast", "showLength", "activePage", "rowStart", "rowEnd", "totalPages", "filter", "totalRows", "noOfPages", "sort", "pageArray", "SortData", "NguDataTable", "_iterableDiffers", "Subject", "iterableDiffer", "find", "create", "debouncer", "pipe", "distinctUntilChanged", "debounceTime", "searchedData", "NguPaginator", "dynamic", "no", "_dynamic", "length", "_length", "token", "_getState", "_clonedData", "_initDatasource", "innerData", "calledFromFilter", "dataAdded$", "next", "onInnerChange", "ngDoCheck", "diff", "_setPaginatorData", "recordLength", "noOfRows", "Math", "ceil", "goToPage", "page", "calledLocal", "end", "start", "forinit", "forCond", "coll", "i", "_paginationDesign", "_setRowLimit", "tableData", "firstEmited", "_", "clonedPaginator", "pageChanged", "_saveTheState", "slice", "searchStr", "toString", "toLowerCase", "obj", "includes", "rm", "refresh", "datas", "stateData", "sessionStorage", "setItem", "JSON", "stringify", "resetState", "getItem", "parse", "NguSortHeader", "onSortClick", "sortDirection", "arrowPosition", "nguSort$", "sortBy", "onSorting", "NguSorter", "OnDestroyMixin", "super", "_a", "table", "sortTheData", "sortSelector", "untilComponentDestroyed", "r", "ngOnDestroy", "sortCollector", "e", "elem", "sortTable", "controlArrow", "str", "caseInsensitiveIteratee", "row", "sortByProperty", "split", "String", "CommandExecutorService", "_http", "execute", "command", "savedSelection", "Error", "document", "execCommand", "insertSinppets", "insertHtml", "insertImage", "imageURI", "Utils", "insertVideo", "videParams", "isYoutubeLink", "videoUrl", "width", "checkTagSupportInBrowser", "isValidURL", "url", "test", "uploadImage", "file", "endPoint", "formData", "FormData", "append", "req", "HttpRequest", "reportProgress", "request", "createLink", "urlNewTab", "newUrl", "urlLink", "urlText", "getSelection", "insertColor", "where", "checkSelection", "setFontSize", "fontSize", "deletedValue", "deleteAndGetElement", "isNumeric", "setFontName", "fontName", "html", "pasteHtmlAtCaret", "sel", "range", "window", "getRangeAt", "rangeCount", "baseNode", "parentNode", "className", "offsetParent", "deleteContents", "el", "createElement", "innerHTML", "node", "lastNode", "frag", "createDocumentFragment", "firstChild", "appendChild", "insertNode", "cloneRange", "setStartAfter", "collapse", "removeAllRanges", "addRange", "slectedText", "tag", "HTMLUnknownElement", "MessageService", "getMessage", "message", "asObservable", "sendMessage", "clearMessageIn", "milliseconds", "canEnableToolbarOptions", "toolbar", "array", "indexOf", "getEditorConfiguration", "ngxEditorConfig", "input", "hasOwnProperty", "canResize", "resizer", "saveSelection", "createRange", "restoreSelection", "select", "editable", "spellcheck", "minHeight", "minWidth", "translate", "enableToolbar", "showToolbar", "placeholder", "imageEndPoint", "NguEditor", "_messageService", "_commandExecutor", "_renderer", "onTextAreaFocus", "focus", "onEditorFocus", "textArea", "onContentChange", "onChange", "togglePlaceholder", "onTextAreaBlur", "onTouched", "blur", "htmlContent", "resizeTextArea", "offsetY", "newHeight", "parseInt", "executeCommand", "commandName", "error", "writeValue", "refreshView", "registerOnChange", "fn", "registerOnTouched", "setProperty", "removeClass", "ngxWrapper", "addClass", "getCollectiveParams", "sinnpet", "config", "offsetHeight", "provide", "NG_VALUE_ACCESSOR", "useExisting", "forwardRef", "multi", "decls", "NguAccordionModule", "BreadCrumbsComponent", "logical", "createBread", "events", "event", "NavigationEnd", "scrollUP", "urlAfterRedirects", "destroyer$", "detach", "spl", "dat", "elm", "len", "splitName", "link", "join", "toLocaleLowerCase", "toLocaleUpperCase", "splice", "breads", "replace", "NguDataTableModule", "LoaderService", "show", "controler$", "LoaderInterceptor", "load", "intercept", "navigator", "onLine", "isOffline", "handle", "finalize", "duration", "LoaderModule", "enterAnimation", "opacity", "LoadingComponent", "isVisible", "TabsModule", "NguFullcalendarModule", "NguChartjsModule", "NgxGrippieComponent", "_editorComponent", "onMouseMove", "grabber", "clientY", "oldY", "onMouseUp", "onResize", "preventDefault", "NgxEditorMessageComponent", "ngxMessage", "clearMessage", "ctx_r120", "ctx_r133", "ctx_r138", "NgxEditorToolbarComponent", "_popOverConfig", "_formBuilder", "_commandExecutorService", "outsideClick", "placement", "container", "triggerCommand", "trackByFn", "item", "buildUrlForm", "urlForm", "group", "Validators", "insertLink", "urlPopover", "buildImageForm", "imageForm", "imageUrl", "buildVideoForm", "videoForm", "buildSnippetForm", "snippetsForm", "snippetsSelect", "onFileChange", "uploadComplete", "isUploading", "target", "files", "updloadPercentage", "round", "loaded", "total", "HttpResponse", "imagePopover", "videoPopover", "insertSnippets", "colorPopover", "fontSizePopover", "onlyNumbers", "charCode", "PopoverConfig", "NguEditorModule", "PopoverModule", "HintModule", "NguFormsModule", "NguDatePickerModule", "MyDatePickerModule", "NguChartjs", "_config", "isChartInitialized", "_initilizeChart", "cts", "getContext", "formats", "datasets", "analizeDataSet", "font", "size", "weight", "textAlign", "formatter", "display", "context", "dataset", "dataIndex", "options", "plugins", "datalabels", "chart", "Chart", "map", "Object", "assign", "backgroundColor", "getColors", "chartData", "labels", "copy", "_c", "_b", "update", "chartType", "count", "formatPieColors", "generateColors", "formatBarColor", "generateColor", "getRandomInt", "min", "max", "floor", "random", "getRandomColor", "colorsArr", "Array", "defaultColors", "colors", "rgba", "borderColor", "pointBackgroundColor", "pointBorderColor", "pointHoverBackgroundColor", "pointHoverBorderColor", "hoverBackgroundColor", "hoverBorderColor", "colour", "concat", "NguErrorComponent", "NguFullcalendar", "zone", "_options", "_calendarId", "_setOptions", "$", "_eventData", "_rendererEvents", "viewRender", "view", "dayClick", "date", "jsEvent", "eventRender", "eventAfterRender", "fullCalendar", "args", "getView", "NguModalConfig", "NguModalFadeAnimation", "NguModalViewAnimation", "transform", "ctx_r4", "modalDiv", "modalMain1", "MIndex", "generateID", "styleItem", "fixed", "xs", "sm", "md", "lg", "isOpened", "text", "possible", "charAt", "RolePermissionDirective", "templateRef", "viewContainer", "hasPermission", "permissions", "updateView", "checkPermission", "createEmbeddedView", "clear", "isArray", "checkRolePermission", "NavigationLite", "AuthService", "http", "enc", "jwtHelper", "environment", "isLoggedIn", "isValid", "isTokenExpired", "refreshToken", "navLite", "errorMessageDuration", "hostName", "location", "href", "getDomainName", "isArchiveFlag", "getForumUrl", "btoa", "loginData", "AssociatedId", "accessMenuJson", "_navListLite", "accessMenus", "AcessMenuList", "newAccessMenu", "child", "childElem", "perms", "permission", "_accessMenus", "login", "bod", "pass", "encrypt", "password", "oldpass", "encryptPwd", "username", "oldpassword", "loginFlag", "post", "reset", "localStorage", "loggedin", "err", "status", "loginConfirmation", "logoutApi", "resetPassword", "newPassword", "old_password", "oldPassword", "old_password1", "UserId", "success", "resetUpdatePassword", "resp", "Status", "updatepassword", "forgot_token", "passwordenc", "forgotPassowrd", "email", "getUser", "userid", "records", "recaptchaApi", "_defaultUrls", "isDefaultPage", "a", "b", "userData", "decodeToken", "menuListData", "getBrowser", "ua", "userAgent", "tem", "M", "match", "exec", "appName", "appVersion", "logout", "_navMenuLists", "navAccessMenus", "urlArray", "roles", "whiteListRoutes", "secondID", "handleUnauthorized", "pop", "submitError", "isConfirmed", "refreshTokenTimeout", "tokenDate", "getTokenExpirationDate", "timeDifference", "navListData", "associatedId", "title", "freeze", "onlyToFreeze", "externalUrl", "isNewPage", "DOCUMENT", "EncryptService", "CryptoJS", "encrypted", "key", "iv", "encryptedmessage", "decrypt", "decrypted", "decryptPwd", "Exception", "warn", "FormDataService", "convert", "formdata", "convertToFormdata", "fullData", "keyBU", "fil", "DomService", "componentFactoryResolver", "appRef", "injector", "appendComponentToBody", "component", "componentRef", "attachView", "hostView", "rootNodes", "RoleGuard", "canActivate", "route", "canActivateChild", "AuthGuard", "authService", "checkLogin", "canLoad", "path", "redirectUrl", "queryParams", "session_id", "fragment", "DefaultRouteGuard", "_auth", "user", "defaultPage", "SharedModule", "RouterModule", "TableModule", "PaginatorModule", "CustomValidation", "control", "qtyLimit", "arrayMin", "pattern", "patternSplit", "beforeNum", "RegExp", "decimal", "DdMMYYYYPipe", "convertDate", "pure", "DateHelperService", "format", "dateFormat", "dateFormats", "moment", "currentDateForDP", "dates", "subtract", "month", "day", "year", "myMoment", "form", "getDateFormater", "formatted", "getDateFormaterClone", "setDateFormater", "startAndEndDateOfTheWeek", "locale", "startDate", "weekday", "endDate", "getMonthDateRange", "endOf", "disableTillDate", "parentOption", "ev", "parent", "defaultProp", "prop", "subDay", "finalDate", "highLightDates", "arr", "temp", "highlightDates", "testValidates", "first", "second", "get", "valueChanges", "now", "hours", "asSeconds", "abs", "getDaysMonthYear", "EndDate", "startDt", "endDt", "days", "intervals", "out", "daysBetweenDate", "add", "LogicalService", "n", "reverseString", "getDateFormaterddmmyy", "ddMMYYYY", "splitCamelCase", "word", "toUpperCase", "scrollTo", "currentDateForDatePicker", "currentDate", "jsdate", "myday", "Date", "setDate", "getDate", "getMonth", "getFullYear", "disableUntil", "arrayToggle", "clonedArray", "cond", "arrayReplace", "formatDropdown", "storeTo", "ar", "store", "reduce", "acc", "curr", "arrayFindDuplicate", "arrayKeys", "c", "x", "duplicate", "objectToggle", "object", "isJson", "handleEnquiryType", "enq", "enquiry", "EnquiryTypeId", "transport", "Collection", "Location", "statusOfTheQuote", "final", "phoneNoValid", "tPhoneNo", "trim", "phoneNo", "PrimengTableService", "rows", "sortField", "sortOrder", "onSort", "gridOptions", "localText", "multisortmeta", "field", "order", "onFilter", "OnPaginate", "filteredValue", "totalRecords", "currentPageStart", "currentPageEnd", "paginate", "paginationRecord", "initialSortAndFilter", "dataTable", "isArchive", "filterValue", "filterText", "pagination", "exitTotalRecords", "existSort", "existFilter", "existPaginate", "sortSingle", "filters", "global", "filterGlobal", "BrowserNameService", "getBrowserName", "NguAlertService", "setPosition", "DisableControlDirective", "ngControl", "disableControl", "condition", "action", "production", "encryptKey", "transportCalendarRefreshRate", "errorDuration", "recaptchaSiteKey", "recaptchaSecretKey", "CommonInterceptor", "confirmationService", "paths", "headers", "set", "authReq", "clone", "tap", "throwError", "tokenGetter", "CoreModule", "parentModule", "HTTP_INTERCEPTORS", "useClass", "HttpClientModule", "JwtModule", "AppComponent", "service", "dom", "_compiler", "clearCache", "ViewContainerRef", "LoginComponent", "fb", "recaptchaV3Service", "icon", "activatedDomainName", "loginForm", "recaptcha", "forgotPasswordForm", "initalizeRecaptcha", "show_login", "iconChange", "subscription", "patchValue", "openModalDialog", "displayBackDrop", "closeModalDialog", "forgotPw", "onSubmit", "loading", "forceLogout", "secret_key", "response", "recaptchaRes", "forgotPasswordSubmit", "removeItem", "confirmRes", "ResetPasswordComponent", "icon2", "type2", "icon3", "type3", "resetForm", "confirmPassword", "firstname", "lastName", "address", "userName", "validator", "checkPasswords", "getuserDetails", "iconChange2", "iconChange3", "roleId", "Firstname", "Lastname", "Address", "LoginId", "setPasswordPattern", "newPwd", "confirmPwd", "_d", "firstName", "_e", "_f", "_g", "_h", "_j", "_k", "_l", "_m", "pwd", "_o", "notSameUserInfo", "notSame", "pwdMoreThanTwiceValidator", "valid", "some", "v", "moreThanTwice", "regex", "minLength", "setValidators", "updateValueAndValidity", "navigation", "RoleFilterPipe", "accumulator", "dft", "NavigationComponent", "rolePipe", "_cdr", "hostNameUrl", "getMenuList", "navLists", "menuClicked", "isClosed", "toggleMenu", "byNav", "menuState", "hamburger_cross", "wrapper", "classList", "toggle", "menuBtn", "_r", "_q", "_p", "clearStorage", "HomeComponent", "cd", "ngAfterViewChecked", "getElementById", "remove", "routes", "UpdatePasswordComponent", "snapshot", "loginid", "resetFlag", "newPasswordCtrl", "confirmPasswordCtrl", "resetFormValid", "preResetForm", "showMessage", "resetData", "submitForm", "FormGroupDirective", "children", "loadChildren", "m", "LlwrCalendarModule", "InventoryModule", "MasterModule", "PackagingModule", "__webpack_require__", "PackagingReportModule", "TransactionModule", "TransportModule", "TransportReportModule", "ManufacturerReportsModule", "redirectTo", "pathMatch", "AppRoutingModule", "AppModule", "bootstrap", "APP_BASE_HREF", "useValue", "LocationStrategy", "PathLocationStrategy", "RECAPTCHA_V3_SITE_KEY", "BrowserModule", "BrowserAnimationsModule", "RecaptchaV3Module", "Angular2CsvModule", "AlertModule", "enableProdMode", "__NgCli_bootstrap_1", "bootstrapModule", "catch", "webpackContext", "module"], "sourceRoot": "webpack:///", "sources": ["./src/app/commons/no-access/no-access.component.ts", "./src/app/commons/no-access/no-access.component.html", "./src/app/entity/logical-models.ts", "./src/app/entity/user-role.ts", "./src/app/extras/accordion/accordion/accordion.component.ts", "./src/app/extras/accordion/accordion/accordion.component.html", "./src/app/extras/accordion/accordion.animation.ts", "./src/app/extras/accordion/body/body.component.ts", "./src/app/extras/accordion/body/body.component.html", "./src/app/extras/accordion/header/header.component.ts", "./src/app/extras/accordion/header/header.component.html", "./src/app/extras/confirmation/confirmation.module.ts", "./src/app/extras/confirmation/confirmation-dialog.ts", "./src/app/extras/confirmation/confirmation.component.html", "./src/app/extras/confirmation/confirmation.component.ts", "./src/app/extras/confirmation/confirmation.service.ts", "./src/app/extras/datatable/datatable.ts", "./src/app/extras/datatable/datatable/datatable.component.ts", "./src/app/extras/datatable/datatable/datatable.component.html", "./src/app/extras/datatable/sorter/sorter.component.html", "./src/app/extras/datatable/sorter/sorter.component.ts", "./src/app/extras/datatable/sorter/sorter.directive.ts", "./src/app/extras/editor/common/services/command-executor.service.ts", "./src/app/extras/editor/common/services/message.service.ts", "./src/app/extras/editor/common/utils/ngx-editor.utils.ts", "./src/app/extras/editor/common/ngx-editor.defaults.ts", "./src/app/extras/editor/ngx-editor.component.html", "./src/app/extras/editor/ngx-editor.component.ts", "./src/app/extras/accordion/accordion.module.ts", "./src/app/extras/bread-crumbs/bread-crumbs.component.html", "./src/app/extras/bread-crumbs/bread-crumbs.component.ts", "./src/app/extras/datatable/ngu-data-table.module.ts", "./src/app/extras/loader/loader.service.ts", "./src/app/extras/loader/loader.interceptor.ts", "./src/app/extras/loader/loader.module.ts", "./src/app/extras/animations/fade.animations.ts", "./src/app/extras/loader/loading/loading.component.html", "./src/app/extras/loader/loading/loading.component.ts", "./src/app/extras/tabs/tabs.module.ts", "./src/app/extras/ngu-fullcalendar/ngu-fullcalendar.module.ts", "./src/app/extras/ngu-chartjs/ngu-chartjs.module.ts", "./src/app/extras/editor/ngx-grippie/ngx-grippie.component.ts", "./src/app/extras/editor/ngx-grippie/ngx-grippie.component.html", "./src/app/extras/editor/ngx-editor-message/ngx-editor-message.component.html", "./src/app/extras/editor/ngx-editor-message/ngx-editor-message.component.ts", "./src/app/extras/editor/ngx-editor-toolbar/ngx-editor-toolbar.component.html", "./src/app/extras/editor/ngx-editor-toolbar/ngx-editor-toolbar.component.ts", "./src/app/extras/editor/editor.module.ts", "./src/app/extras/hint/hint.module.ts", "./src/app/extras/ngu-forms/ngu-forms.module.ts", "./src/app/extras/ngu-date-picker/ngu-date-picker.module.ts", "./src/app/extras/ngu-chartjs/ngu-chartjs.directive.ts", "./src/app/extras/ngu-forms/ngu-error/ngu-error.component.ts", "./src/app/extras/ngu-forms/ngu-error/ngu-error.component.html", "./src/app/extras/ngu-fullcalendar/ngu-fullcalendar.component.ts", "./src/app/extras/ngu-modal/ngu-modal.module.ts", "./src/app/extras/ngu-modal/ngu-modal.ts", "./src/app/extras/ngu-modal/ngu-modal-animation.ts", "./src/app/extras/ngu-modal/ngu-modal.component.html", "./src/app/extras/ngu-modal/ngu-modal.component.ts", "./src/app/shared/auth/auth.directive.ts", "./src/app/entity/navigation.ts", "./src/app/shared/auth/auth.service.ts", "./src/app/shared/auth/encrypt.service.ts", "./src/app/shared/ngu-file/formdata.service.ts", "./src/app/shared/dom.service.ts", "./src/app/shared/guards/role.guard.ts", "./src/app/shared/guards/auth.guard.ts", "./src/app/shared/guards/default-route.guard.ts", "./src/app/shared/shared.module.ts", "./src/app/shared/validations/custom-validators.ts", "./src/app/shared/pipes/date-formater.pipe.ts", "./src/app/shared/services/date-helper.service.ts", "./src/app/shared/services/logical.service.ts", "./src/app/shared/services/primeng-table.service.ts", "./src/app/shared/services/browser-name.service.ts", "./src/app/shared/services/alert.service.ts", "./src/app/shared/validations/disabled.directive.ts", "./src/environments/environment.prod.ts", "./src/app/core/common.interceptor.ts", "./src/app/core/core.module.ts", "./src/app/app.component.ts", "./src/app/app.component.html", "./src/app/login/login.component.html", "./src/app/login/login.component.ts", "./src/app/reset-password/reset-password.component.html", "./src/app/reset-password/reset-password.component.ts", "./src/app/navigation/role.pipe.ts", "./src/app/navigation/navigation.component.html", "./src/app/navigation/navigation.component.ts", "./src/app/home/home.component.html", "./src/app/home/home.component.ts", "./src/app/update-password/update-password.component.html", "./src/app/app.routing.ts", "./src/app/update-password/update-password.component.ts", "./src/app/app.module.ts", "./src/main.ts", "./node_modules/moment/locale/ sync ^\\.\\/.*$"], "sourcesContent": ["import { Component, OnInit } from '@angular/core';\nimport { AuthService } from '@app/shared';\nimport { NguAlertService } from '@app/shared';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-no-access',\n templateUrl: './no-access.component.html',\n styleUrls: ['./no-access.component.scss']\n})\nexport class NoAccessComponent implements OnInit {\n\n constructor(private auth: AuthService, private alert: NguAlertService, private router: Router,) { }\n\n ngOnInit() {\n this.auth.pageTitle = undefined;\n console.log(\"test access denied\");\n this.alert.open({\n heading: 'Access Denied',\n msg: `You don't have permission to access this page. Please contact adminstrator `,\n type: 'danger'\n });\n setTimeout(() => {\n this.alert.open({\n heading: 'Redirecting to Home page',\n msg: `Please click \"Home\" if you are not redirected to Home page in few seconds`,\n type: 'info'\n });\n this.router.navigate([this.auth.defaultUrl]);\n },3000);\n }\n\n}\n", "

\n Access Denied!!!\n

\n", "export class EnquiryTypeModel {\r\n constructor(\r\n public showPackagingTab = false,\r\n public showTransportTab = false,\r\n public packagingOnly = false,\r\n public tranportOnly = false,\r\n public showCollection = false\r\n ) {}\r\n}\r\n\r\nexport class QuoteTypeModel {\r\n constructor(\r\n public isHauilerAssigned = false,\r\n public isHaulierAwarded = false,\r\n public showAssignBtn = false,\r\n public showAwardBtn = false,\r\n public showSaveBtn = false\r\n ) {}\r\n}\r\n", "export interface UserRole {\r\n role: string;\r\n Active: number;\r\n}\r\n\r\nexport class DefaultPages {\r\n title: string;\r\n id: number;\r\n par?: number;\r\n checked?: boolean;\r\n}\r\n\r\nexport class RoleAssign {\r\n [x: string]: any;\r\n constructor(\r\n public DefaultPage: number,\r\n public Active: boolean | number,\r\n public AccessMenus: AccessOptions,\r\n public RoleId?: number,\r\n public RoleName?: string,\r\n public createdby?: string,\r\n public updatedby?: string,\r\n public NewAccessMenuJson?: AccessOptions,\r\n ) { }\r\n}\r\nexport class ExistingRoleAssign {\r\n constructor(\r\n public DefaultPage: number,\r\n public Active: boolean | number,\r\n public AccessMenus: any,\r\n public RoleId?: number,\r\n public RoleName?: string,\r\n public createdby?: string,\r\n public updatedby?: string,\r\n ) { }\r\n}\r\n\r\nexport interface AccessOptions {\r\n // btns?: SubMenusOptions;\r\n // tabs?: PermsOptions;\r\n [x: number]: number[];\r\n // [x: number]: PermsOptions;\r\n}\r\n\r\n// export interface SubMenusOptions {\r\n// [x: number]: number[];\r\n// }\r\n\r\nexport interface PermsOptions {\r\n [x: number]: any[];\r\n}\r\n\r\nexport interface RoleListRes {\r\n status_code: number;\r\n status: string;\r\n service_name: string;\r\n data: RoleListData;\r\n}\r\n\r\nexport interface RoleListData {\r\n totalrecord: number;\r\n records: RoleListRecord[];\r\n}\r\n\r\nexport interface RoleListRecord {\r\n RoleId: number;\r\n RoleName: string;\r\n Active: number;\r\n}\r\n\r\nexport interface RoleDetailsRes {\r\n status_code: number;\r\n status: string;\r\n service_name: string;\r\n data: RoleDetailsData;\r\n}\r\n\r\nexport interface RoleDetailsData {\r\n totalrecord: number;\r\n records: RoleAssign;\r\n}\r\n\r\n// export interface RoleDetailsRecord {\r\n// RoleId: number;\r\n// RoleName: string;\r\n// Active: number;\r\n// }\r\n\r\nexport enum UserRoles {\r\n Admin = 1,\r\n Hauiler = 3,\r\n Customer = 4,\r\n TypeBCustomer = 101,\r\n SuperAdmin = 999,\r\n Driver = 100,\r\n Commercial = 1009,\r\n Rfq = 11,\r\n LLWR = 6\r\n}\r\n\r\nexport const enum archiveRefName {\r\n archive = 'archive'\r\n}\r\n\r\nexport const enum tblPaginator {\r\n addPageNumber = 1,\r\n addPageEnd = 9,\r\n addNoOfRows = 10\r\n}\r\n\r\nexport enum transportTabs {\r\n iSOContainers = 1,\r\n nonISOContainers = 2,\r\n iSOContainersSupplied = 3,\r\n nonISOContainersSupplied = 4,\r\n ancillaryEquipments = 5,\r\n looseEquipments = 6,\r\n equipmentHire = 7\r\n}\r\n\r\nexport enum specialInstruction {\r\n Yes = 'Yes',\r\n No = 'No'\r\n}\r\nexport enum siteRestrictions {\r\n Yes = 'Yes',\r\n No = 'No'\r\n}\r\n", "import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnInit,\n QueryList\n} from '@angular/core';\nimport { BodyComponent } from '../body/body.component';\nimport { AccordionData } from '../accordion-data';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngu-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AccordionComponent implements AfterContentInit {\n /** used to maintain the single open at a time */\n @Input('singular') singular = true;\n _storeSub = [];\n _mainData: AccordionData[] = [];\n _currentActive: number;\n\n /** close all the body child's on Init */\n @Input('collapsed') collapsed = true;\n @ContentChildren(BodyComponent) _accBody: QueryList;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterContentInit() {\n this.initFnt();\n this._accBody.changes.subscribe(() => {\n this.initFnt();\n });\n }\n\n private initFnt() {\n this._storeSub.forEach(element => {\n element.unsubscribe();\n });\n\n this._mainData = [];\n this._accBody.forEach((accordionBody, index) => {\n this.collapsed && accordionBody.animateAccord(false, false);\n\n this._mainData.push({\n id: index + 1,\n hide: false,\n active: !this.collapsed\n });\n\n accordionBody.referencer = this._mainData[index];\n\n const dats = accordionBody.clickListner.subscribe(res => {\n this.headerClicks(accordionBody, res);\n });\n this._storeSub.push(dats);\n });\n }\n\n private headerClicks(accordionBody: BodyComponent, res: boolean) {\n this._accBody.forEach((accordBody, index) => {\n if (accordionBody === accordBody) {\n accordBody.animateAccord(!res, true);\n } else if (this.singular) {\n accordBody.animateAccord(false, false);\n }\n });\n }\n}\n", "
\n \n
\n", "import {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger\r\n} from '@angular/animations';\r\n\r\nexport const bodyExpansion = trigger('bodyExpansion', [\r\n state('collapsed', style({ height: '0px', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition(\r\n 'expanded <=> collapsed',\r\n animate(`{{time}}ms cubic-bezier(0.4,0.0,0.2,1)`),\r\n {\r\n params: { time: '225' }\r\n }\r\n )\r\n]);\r\n", "import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n OnInit,\n Output,\n Renderer2\n} from '@angular/core';\nimport { HeaderComponent } from '../header/header.component';\nimport { bodyExpansion } from './../accordion.animation';\nimport { AccordionData } from '../accordion-data';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngu-accordion-body',\n templateUrl: './body.component.html',\n styleUrls: ['./body.component.scss'],\n animations: [bodyExpansion],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BodyComponent implements AfterContentInit {\n _accordBody: AccordionData;\n isActive = true;\n panelState: string[] = ['expanded', 'collapsed'];\n @ContentChild(HeaderComponent) header: HeaderComponent;\n @Output('clickListner') clickListner = new EventEmitter();\n\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef) {}\n\n animateAccord(active, isMatched) {\n if (isMatched || this.isActive !== active) {\n this.animate();\n }\n this.isActive = active;\n }\n\n ngAfterContentInit() {\n this.header.headerClicked.subscribe(() => {\n this.clickListner.emit(this.isActive);\n });\n }\n\n animate() {\n this.panelState.reverse();\n this.header.direction = this.panelState[0] === 'expanded';\n this.cdr.detectChanges();\n }\n\n get referencer(): AccordionData {\n return this._accordBody;\n }\n\n set referencer(data: AccordionData) {\n this._accordBody = data;\n this.isActive = data.active;\n }\n}\n", "\n
\n \n
\n", "import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'ngu-accordion-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n host: {\n '[class.active]': 'isActive',\n '(click)': 'headerClick()'\n }\n})\nexport class HeaderComponent {\n isActive: boolean;\n\n set direction(val: boolean) {\n this.isActive = val;\n }\n\n @Output('headerClicked') headerClicked = new EventEmitter();\n\n headerClick() {\n this.headerClicked.emit();\n }\n\n constructor() {}\n}\n", "\n \n\n\n", "import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NguModalModule } from './../ngu-modal';\r\nimport { ConfirmationComponent } from './confirmation.component';\r\nimport { ConfirmationService } from './confirmation.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule, NguModalModule, FormsModule, ReactiveFormsModule],\r\n exports: [],\r\n declarations: [ConfirmationComponent],\r\n providers: [ConfirmationService],\r\n entryComponents: [ConfirmationComponent]\r\n})\r\nexport class ConfirmationModule {\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: ConfirmationModule,\r\n providers: [ConfirmationService]\r\n };\r\n }\r\n}\r\n", "export class ConfirmationDialog {\r\n heading?: string;\r\n body?: string;\r\n yesButton?: string;\r\n noButton?: string;\r\n buttons?: any[];\r\n othersBtn?: boolean;\r\n type?: string;\r\n}\r\n\r\nexport interface ConfirmationMsgDefault {\r\n [x: string]: ConfirmationDialog;\r\n}\r\n", "\n

{{confirmData.heading}}

\n

{{confirmData.body}}

\n
\n \n \n \n \n
\n
\n\n", "import {\n AfterViewInit,\n Component,\n ComponentRef,\n ElementRef,\n OnInit,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { NguModal } from '../ngu-modal';\n// import { NguModalService } from '@ngu/modal';\nimport {\n ConfirmationDialog,\n ConfirmationMsgDefault\n} from './confirmation-dialog';\n// import { NguModal } from './../ngu-modal';\n\n@Component({\n selector: 'app-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss']\n})\nexport class ConfirmationComponent implements OnInit, AfterViewInit {\n afterView: boolean;\n // listeners: () => void;\n confirmModalIndex: any;\n compRef: ComponentRef;\n // @ViewChild('yes') yes: ElementRef;\n // @ViewChild('no') no: ElementRef;\n @ViewChildren('buttons') buttons: QueryList;\n confirmData = new ConfirmationDialog();\n @ViewChild('modal', { read: NguModal })\n modal: NguModal;\n\n constructor(private renderer: Renderer2) {}\n\n ngOnInit() {\n this.confirmModalIndex = {\n id: 'sampleText',\n backdrop: false\n };\n }\n\n ngAfterViewInit() {\n this.afterView = true;\n // this.yes.nativeElement.focus();\n this.modal.open();\n }\n\n destroy() {\n this.compRef.destroy();\n // this.listeners();\n }\n\n confirm(ref: ComponentRef, data: ConfirmationDialog) {\n this.compRef = ref;\n this.setData(data);\n return new Promise((resolve, reject) => {\n // this.listeners = this.renderer.listen(\n // this.yes.nativeElement,\n // 'click',\n // () => {\n // this.modal.close();\n // resolve(true);\n // }\n // );\n setTimeout(() => {\n this.buttons.forEach(btn => {\n this.renderer.listen(btn.nativeElement, 'click', $event => {\n const value = btn.nativeElement.getAttribute('value');\n if (value === 'true') {\n resolve(true);\n } else if (value === 'false') {\n resolve(false);\n } else {\n resolve(value);\n }\n this.modal.close();\n // resolve(false);\n });\n });\n }, 10);\n // this.yes.nativeElement.onclick = () => {\n // };\n // this.no.nativeElement.onclick = () => {\n // this.modal.close();\n // resolve(false);\n // };\n });\n }\n\n setData(data: ConfirmationDialog) {\n this.confirmData.heading = (data && data.heading) || 'Delete';\n this.confirmData.body =\n (data && data.body) || 'Are you sure you want to delete this?';\n let btns:any = [];\n let otherBtns:any = [];\n this.confirmData.buttons = [];\n otherBtns.push(\n {\n name: (data && data.noButton) || 'Cancel',\n value: false,\n color: 'cancel'\n },\n {\n name: (data && data.yesButton) || 'Confirm',\n value: true,\n color: 'confirm'\n }\n );\n if (data && data.buttons) {\n btns = data.buttons;\n if (data.othersBtn) {\n btns = [...otherBtns, ...btns];\n }\n } else {\n btns = otherBtns;\n }\n // console.log(btns);\n this.confirmData.buttons = btns;\n // this.confirmData.yesButton = (data && data.yesButton) || 'Confirm';\n // this.confirmData.noButton = (data && data.noButton) || 'Cancel';\n }\n}\n\nconst confirmMessages: ConfirmationMsgDefault = {\n update: {\n heading: 'Update',\n body: 'Are you sure you want to update ?',\n yesButton: 'update',\n noButton: 'cancel'\n },\n delete: {\n heading: 'Delete',\n body: 'Are you sure you want to delete this?',\n yesButton: 'Delete',\n noButton: 'cancel'\n }\n};\n", "import {\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Inject,\r\n Injectable\r\n} from '@angular/core';\r\nimport { ConfirmationDialog } from './confirmation-dialog';\r\nimport { ConfirmationComponent } from './confirmation.component';\r\n\r\n@Injectable()\r\nexport class ConfirmationService { \r\n private rootViewContainer: any;\r\n private factoryResolver: any;\r\n constructor(@Inject(ComponentFactoryResolver) factoryResolver) {\r\n this.factoryResolver = factoryResolver;\r\n }\r\n\r\n setRootViewContainerRef(viewContainerRef) {\r\n this.rootViewContainer = viewContainerRef;\r\n }\r\n\r\n private async addDynamicComponent() {\r\n const factory = this.factoryResolver.resolveComponentFactory(\r\n ConfirmationComponent\r\n );\r\n // const component = factory.create (this.rootViewContainer.parentInjector);\r\n return this.rootViewContainer.createComponent(factory);\r\n // const component = factory.create(this.rootViewContainer.parentInjector);\r\n // const data = this.rootViewContainer.insert(component.hostView);\r\n // const data = this.rootViewContainer.create;\r\n }\r\n\r\n confirm(data?: ConfirmationDialog): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.addDynamicComponent().then((cmpRef: ComponentRef) => {\r\n cmpRef.instance.confirm(cmpRef, data).then(res => {\r\n setTimeout(() => {\r\n cmpRef.destroy();\r\n }, 400);\r\n resolve(res);\r\n });\r\n });\r\n });\r\n }\r\n}\r\n", "export class NguPagination {\r\n noOfRows: number;\r\n constructor(\r\n public isFirst: boolean,\r\n public isLast: boolean,\r\n public showLength: number,\r\n public activePage: number,\r\n public rowStart: number,\r\n public rowEnd: number,\r\n public totalPages: number,\r\n public filter: string,\r\n public totalRows?: number,\r\n public noOfPages?: number,\r\n public sort?: SortData,\r\n public pageArray?: number[]\r\n ) {}\r\n}\r\n\r\nexport class SortData {\r\n sortBy: any;\r\n direction: string;\r\n}\r\n\r\nexport interface NguStateData {\r\n [x: string]: NguPagination;\r\n}\r\n", "import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n DoCheck,\n IterableDiffers,\n IterableDiffer\n} from '@angular/core';\nimport * as _ from 'lodash';\nimport { Subject } from 'rxjs';\nimport { NguPagination, NguStateData, SortData } from './../datatable';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[nguDataTable], ngu-table',\n templateUrl: './datatable.component.html',\n styleUrls: ['./datatable.component.scss'],\n exportAs: 'NguData'\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class NguDataTable implements OnInit, DoCheck {\n token: string;\n private _clonedData: any[] = [];\n tableData: any = [];\n innerData: any = [];\n firstEmited = true;\n\n @Input() debounceTime:number\n\n @Input() noOfRows: number;\n\n @Input() noOfPages:number;\n\n\n _dynamic: boolean;\n calledLocal: boolean;\n iterableDiffer: IterableDiffer<{}>;\n @Input('dynamic')\n set dynamic(no: boolean) {\n this._dynamic = no;\n }\n get dynamic() {\n return this._dynamic;\n }\n\n _length: number;\n @Input('length')\n set length(no: number) {\n this._length = no;\n }\n get length() {\n return this._length;\n }\n\n @Output('pageChanged')\n pageChanged = new EventEmitter();\n @Output()\n searchedData = new EventEmitter();\n private debouncer = new Subject();\n\n NguPaginator = new NguPagination(\n true,\n false,\n 5,\n 1,\n 1,\n 0,\n 0,\n \"\",\n 0,\n 0,\n new SortData(),\n []\n );\n\n clonedPaginator: NguPagination;\n\n calledFromFilter: boolean;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n // @Input('nguDataTable') dataSource: Object;\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('dataAdded')\n dataAdded$ = new Subject();\n @Input()\n set state(token: string) {\n this.token = token;\n this._getState();\n // console.log('state', this.NguPaginator.totalPages);\n }\n\n /** Assign data to the datatable */\n @Input('dataSource')\n set data(data: any[]) {\n this._clonedData = data || [];\n // console.log('befodata', data);\n this._initDatasource();\n // console.log('aftdata', this.NguPaginator.totalPages);\n }\n\n /** Get The table data without any reference */\n get data(): any[] {\n // return _.clone(this._clonedData);\n return this._clonedData;\n }\n\n constructor(private _iterableDiffers: IterableDiffers) {\n this.iterableDiffer = this._iterableDiffers.find([]).create(null);\n this.debouncer\n .pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceTime || 600)\n )\n .subscribe(val => this.searchedData.emit(this.NguPaginator));\n }\n\n private _initDatasource(data: any[] = this.data) {\n this.innerData = data;\n this.calledFromFilter = true;\n this.filter = this.NguPaginator.filter;\n this.NguPaginator.sort &&\n this.NguPaginator.sort.direction &&\n this.dataAdded$.next(this.NguPaginator.sort);\n }\n\n private onInnerChange(value) {\n // send every value from the inner to the subject\n this.debouncer.next(value);\n }\n\n ngDoCheck() {\n const changes = this.iterableDiffer.diff(this._clonedData);\n if (changes) {\n console.log('Changes detected!');\n this._initDatasource();\n }\n }\n\n ngOnInit() {\n // console.log('befoinit', this.NguPaginator.totalPages);\n // this.innerData = this.dataSource || [];\n // this.NguPaginator.isFirst = true;\n // this.NguPaginator.isLast = false;\n // this.NguPaginator.filter = null;\n // this.NguPaginator.totalPages = 0;\n // this.NguPaginator.showLength = 5;\n // this.NguPaginator.activePage = 1;\n // this.NguPaginator.rowStart = 1;\n // this.NguPaginator.rowEnd = this.noOfRows;\n // this.NguPaginator.noOfPages = this.noOfPages;\n // this.NguPaginator.totalRows = this.innerData.length;\n // this.NguPaginator.sort = new SortData();\n this._getState();\n // console.log('aftinit', this.NguPaginator.totalPages);\n }\n\n /** Reasign the data of the Ngupaginator after assigning the new data to the datatable */\n private _setPaginatorData() {\n // console.log('befsetPagina', this.NguPaginator.totalPages);\n const recordLength = this.length || this.innerData.length;\n this.noOfRows = this.noOfRows || recordLength;\n this.noOfPages = this.noOfPages || 10;\n this.NguPaginator.totalPages = Math.ceil(recordLength / this.noOfRows);\n this.NguPaginator.totalRows = recordLength;\n this.NguPaginator.noOfPages =\n this.NguPaginator.totalPages >= this.noOfPages\n ? this.noOfPages\n : this.NguPaginator.totalPages;\n this.goToPage(this.calledFromFilter ? 0.2 : 0.1, true);\n }\n\n /** Go to specfic page based on the Page */\n goToPage(page?: number, calledLocal?: any) {\n this.calledLocal = calledLocal;\n // console.log('befgotopage', this.NguPaginator.totalPages);\n // debugger;\n if (page === 0.1) {\n page = 1;\n } else if (page === 0.2) {\n /** added this if condition to check whether total pages after delete is less than the active page start **/\n if (this.NguPaginator.totalPages < this.NguPaginator.activePage) {\n page = this.NguPaginator.totalPages;\n } else {\n page = this.NguPaginator.activePage;\n }\n /** added this if condition to check whether total pages after delete is less than the active page end **/\n } else if (page === this.NguPaginator.activePage) {\n return;\n } else if (page === 0) {\n if (page === 0 && this.NguPaginator.isFirst) {\n return;\n }\n page = 1;\n } else if (page === -1) {\n if (page === -1 && this.NguPaginator.isLast) {\n return;\n }\n page = this.NguPaginator.totalPages;\n }\n this.calledFromFilter = false;\n page = page || this.NguPaginator.rowEnd || this.NguPaginator.totalPages;\n\n let end:any = page;\n end = end * this.noOfRows;\n let start = end - this.noOfRows + 1;\n start = start > 0 ? start : 1;\n end =\n end <= this.NguPaginator.totalRows ? end : this.NguPaginator.totalRows;\n let forinit = page === 1 ? page : page - 1;\n forinit =\n forinit + this.NguPaginator.noOfPages <= this.NguPaginator.totalPages\n ? forinit\n : this.NguPaginator.totalPages - this.NguPaginator.noOfPages + 1;\n let forCond = forinit + this.NguPaginator.noOfPages - 1;\n forCond =\n forCond <= this.NguPaginator.totalPages\n ? forCond\n : this.NguPaginator.totalPages;\n // console.log(forinit, forCond, page);\n let coll:any = [];\n for (let i = forinit; i <= forCond; i++) {\n coll.push(i);\n }\n this.NguPaginator.pageArray = coll || this.NguPaginator.pageArray;\n // console.log('aftgotopage', this.NguPaginator.totalPages);\n this._paginationDesign(page, start, end);\n }\n\n /** Save the required NguPaginator values */\n private _paginationDesign(page: number, start: number, end: number) {\n // console.log('befpagidesign', this.NguPaginator.totalPages);\n this.NguPaginator.activePage = page || 1;\n this.NguPaginator.showLength = 5;\n this.NguPaginator.noOfRows = this.noOfRows;\n this.NguPaginator.rowStart = start || this.NguPaginator.rowStart;\n this.NguPaginator.rowEnd = end || this.NguPaginator.rowEnd;\n this.NguPaginator.isFirst =\n this.NguPaginator.activePage === 1 ? true : false;\n this.NguPaginator.isLast =\n this.NguPaginator.activePage === this.NguPaginator.totalPages ||\n !this.NguPaginator.pageArray.length\n ? true\n : false;\n // console.log(this.NguPaginator);\n // console.log('pagidesign', this.NguPaginator.totalPages);\n this._setRowLimit();\n }\n\n /** This is used to slice the rows for viewing based on the ngupaginator */\n private _setRowLimit() {\n // console.log('befsetrowlimit', this.NguPaginator.totalPages);\n if (this.dynamic) {\n this.tableData = this.innerData;\n // console.log(this.NguPaginator);\n if (\n this.firstEmited ||\n (!_.isEqual(this.NguPaginator, this.clonedPaginator) &&\n !this.calledLocal)\n ) {\n this.firstEmited = false;\n this.clonedPaginator = _.clone(this.NguPaginator);\n this.pageChanged.emit(this.NguPaginator);\n }\n this._saveTheState();\n } else if (this.innerData) {\n this.tableData = this.innerData.slice(\n this.NguPaginator.rowStart - 1,\n this.NguPaginator.rowEnd\n );\n this.pageChanged.emit(this.tableData);\n this._saveTheState();\n // console.log(this.tableData);\n }\n // console.log('aftsetrowlimit', this.NguPaginator.totalPages);\n }\n\n /** Search the data with any string */\n set filter(searchStr: string) {\n // console.log('beffilter', this.NguPaginator.totalPages);\n if (searchStr || searchStr === '') {\n searchStr = searchStr.toString().toLowerCase();\n let data;\n if (this.dynamic) {\n this.onInnerChange(searchStr);\n } else {\n data = _.filter(this.data, obj =>\n _.some(obj, val => {\n if (val) {\n return val\n .toString()\n .toLowerCase()\n .includes(searchStr);\n } else {\n return false;\n }\n })\n );\n this.innerData = data;\n }\n // console.log('aftfilter', this.NguPaginator.totalPages);\n this.NguPaginator.filter = searchStr;\n }\n this._setPaginatorData();\n }\n\n get filter() {\n return this.NguPaginator.filter || '';\n }\n\n /** Save the state of the dataTable */\n private _saveTheState(rm?: boolean, refresh?: boolean) {\n // console.log('befsavestate', this.NguPaginator.totalPages);\n // console.log(this.token);\n if (!this.token) {\n return;\n }\n const datas = this.stateData;\n const data = _.clone(this.NguPaginator);\n if (rm) {\n delete datas[this.token];\n } else {\n datas[this.token] = data;\n }\n // console.log(datas);\n sessionStorage.setItem('NguDataTable', JSON.stringify(datas));\n // console.log('aftsavestate', this.NguPaginator.totalPages);\n refresh && (this.filter = this.NguPaginator.filter);\n }\n\n /** Get the state of the application on Initial */\n private _getState() {\n // console.log('state');\n // console.log('initgetstate', this.NguPaginator.totalPages);\n if (this.token) {\n const data = this.stateData[this.token] || {};\n // eslint-disable-next-line guard-for-in\n for (const i in this.NguPaginator) {\n this.NguPaginator[i] = data[i] || this.NguPaginator[i];\n }\n // this.filter = this.NguPaginator.filter;\n }\n // this.filter = this.NguPaginator.filter;\n // console.log('getstate', this.NguPaginator.totalPages);\n // this.NguPaginator.filter\n // ? (this.filter = this.NguPaginator.filter)\n // : this.setPaginatorData();\n }\n\n /** Reset The state of the dataTable */\n resetState(refresh?: boolean) {\n this._saveTheState(true, refresh);\n }\n\n /** Get the locally store NguPagintaion of whole data */\n get stateData(): NguStateData {\n const data = sessionStorage.getItem('NguDataTable');\n return data ? JSON.parse(data) : {};\n }\n}\n", "\n", "\n \n \n \n\n", "import { Input, OnInit, Output, HostListener, Component } from '@angular/core';\nimport { SortData } from './../datatable';\nimport { Subject } from 'rxjs';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[ngu-sort-header]',\n templateUrl: './sorter.component.html',\n styleUrls: ['./sorter.component.scss']\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class NguSortHeader {\n sortDirection = ['asc', 'desc'];\n arrowPosition = '';\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('ngu-sort-header') NguSortHeader: string | number;\n // eslint-disable-next-line @angular-eslint/no-output-rename\n @Output('nguSort') nguSort$ = new Subject();\n @HostListener('click')\n onSortClick() {\n this.sortDirection.reverse();\n this.arrowPosition = this.sortDirection[0];\n this.nguSort$.next({\n sortBy: this.NguSortHeader,\n direction: this.arrowPosition\n });\n }\n\n onSorting(data: SortData) {\n if (this.NguSortHeader !== data.sortBy) {\n this.arrowPosition = '';\n this.sortDirection = ['asc', 'desc'];\n } else {\n this.arrowPosition = data.direction;\n this.sortDirection =\n data.direction === 'asc' ? ['asc', 'desc'] : ['desc', 'asc'];\n }\n }\n}\n", "import {\r\n Directive,\r\n ContentChildren,\r\n QueryList,\r\n EventEmitter,\r\n Output,\r\n ContentChild,\r\n AfterContentInit,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport { SortData } from './../datatable';\r\nimport { NguSortHeader } from './sorter.component';\r\nimport { NguDataTable } from './../datatable/datatable.component';\r\nimport { Subscription } from 'rxjs';\r\nimport {OnDestroyMixin, untilComponentDestroyed} from \"@w11k/ngx-componentdestroyed\";\r\n\r\n// eslint-disable-next-line @angular-eslint/directive-selector\r\n@Directive({ selector: '[nguSort]', exportAs: 'nguSort' })\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class NguSorter extends OnDestroyMixin implements AfterContentInit, OnDestroy {\r\n @ContentChildren(NguSortHeader) NguSortHeader: QueryList;\r\n // eslint-disable-next-line @angular-eslint/no-output-rename\r\n @ContentChild(NguDataTable) table: NguDataTable;\r\n sortCollector: Subscription[] = [];\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.table?.dataAdded$.subscribe(res => {\r\n // console.log('sortEmit', res);\r\n this.table.calledFromFilter = true;\r\n this.sortTheData(res);\r\n });\r\n this.sortSelector();\r\n this.NguSortHeader.changes.pipe(untilComponentDestroyed(this)).subscribe(r => this.sortSelector());\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n private sortSelector() {\r\n this.sortCollector.forEach(e => e.unsubscribe());\r\n this.sortCollector = [];\r\n this.NguSortHeader.forEach(elem => {\r\n elem.nguSort$.subscribe(res => {\r\n this.sortTheData(res);\r\n });\r\n });\r\n }\r\n\r\n private sortTheData(res: SortData) {\r\n this.table.innerData = this.sortTable(this.table.data, res);\r\n this.table.NguPaginator.sort = res;\r\n this.table.goToPage(this.table.calledFromFilter ? 0.2 : 0.1);\r\n this.controlArrow(res);\r\n }\r\n\r\n controlArrow(res: SortData) {\r\n this.NguSortHeader.forEach(elem => {\r\n elem.onSorting(res);\r\n });\r\n }\r\n\r\n public sortTable(data: Array, str: SortData) {\r\n const name = str.sortBy;\r\n let direction:any = str.direction;\r\n data = _.orderBy(data, this.caseInsensitiveIteratee(name), [\r\n direction\r\n ]);\r\n // data = _.orderBy(data, sortBy, [this.sortOrder]);\r\n return data;\r\n }\r\n\r\n private caseInsensitiveIteratee(sortBy: string) {\r\n return (row: any): any => {\r\n let value = row;\r\n for (const sortByProperty of sortBy.split('.')) {\r\n if (value) {\r\n value = value[sortByProperty];\r\n }\r\n }\r\n if ((value && typeof value === 'string') || value instanceof String) {\r\n return value.toLowerCase();\r\n }\r\n return value;\r\n };\r\n }\r\n}\r\n", "import { Injectable } from '@angular/core';\nimport { HttpClient, HttpRequest } from '@angular/common/http';\nimport * as Utils from '../utils/ngx-editor.utils';\n\n@Injectable()\nexport class CommandExecutorService {\n\n /** saves the selection from the editor when focussed out */\n savedSelection: any = undefined;\n\n /**\n *\n * @param _http HTTP Client for making http requests\n */\n constructor(private _http: HttpClient) { }\n\n /**\n * executes command from the toolbar\n *\n * @param command command to be executed\n */\n execute(command: string): void {\n if (this.savedSelection && !this.savedSelection.collapsed) {\n if (!this.savedSelection && command !== 'enableObjectResizing') {\n throw new Error('Range out of Editor');\n }\n\n if (command === 'enableObjectResizing') {\n document.execCommand('enableObjectResizing', true);\n return;\n }\n\n if (command === 'blockquote') {\n document.execCommand('formatBlock', false, 'blockquote');\n return;\n }\n\n if (command === 'removeBlockquote') {\n document.execCommand('formatBlock', false, 'div');\n return;\n }\n\n document.execCommand(command, false);\n }\n }\n\n insertSinppets(name: string): any {\n // if(command === 'snippets') {\n const value = '' + name + '';\n this.insertHtml(value);\n return;\n // }\n }\n /**\n * inserts image in the editor\n *\n * @param imageURI url of the image to be inserted\n */\n insertImage(imageURI: string): void {\n if (this.savedSelection) {\n if (imageURI) {\n const restored = Utils.restoreSelection(this.savedSelection);\n if (restored) {\n const inserted = document.execCommand('insertImage', false, imageURI);\n if (!inserted) {\n throw new Error('Invalid URL');\n }\n }\n }\n } else {\n throw new Error('Range out of the editor');\n }\n return;\n }\n\n /**\n * inserts image in the editor\n *\n * @param videParams url of the image to be inserted\n */\n insertVideo(videParams: any): void {\n if (this.savedSelection) {\n if (videParams) {\n const restored = Utils.restoreSelection(this.savedSelection);\n if (restored) {\n if (this.isYoutubeLink(videParams.videoUrl)) {\n const youtubeURL = '';\n this.insertHtml(youtubeURL);\n } else if (this.checkTagSupportInBrowser('video')) {\n\n if (this.isValidURL(videParams.videoUrl)) {\n const videoSrc = '';\n this.insertHtml(videoSrc);\n } else {\n throw new Error('Invalid video URL');\n }\n\n } else {\n throw new Error('Unable to insert video');\n }\n }\n }\n } else {\n throw new Error('Range out of the editor');\n }\n return;\n }\n\n /**\n * checks the input url is a valid youtube URL or not\n *\n * @param url Youtue URL\n */\n private isYoutubeLink(url: string): boolean {\n const ytRegExp = /^(http(s)?:\\/\\/)?((w){3}.)?youtu(be|.be)?(\\.com)?\\/.+/;\n return ytRegExp.test(url);\n }\n\n /**\n * check whether the string is a valid url or not\n * @param url url\n */\n private isValidURL(url: string) {\n const urlRegExp = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n return urlRegExp.test(url);\n }\n\n /**\n * uploads image to the server\n *\n * @param file file that has to be uploaded\n * @param endPoint enpoint to which the image has to be uploaded\n */\n uploadImage(file: File, endPoint: string): any {\n\n if (!endPoint) {\n throw new Error('Image Endpoint isn`t provided or invalid');\n }\n\n const formData: FormData = new FormData();\n\n if (file) {\n\n formData.append('file', file);\n\n const req = new HttpRequest('POST', endPoint, formData, {\n reportProgress: true\n });\n\n return this._http.request(req);\n\n } else {\n throw new Error('Invalid Image');\n }\n }\n\n /**\n * inserts link in the editor\n *\n * @param params parameters that holds the information for the link\n */\n createLink(params: any): void {\n\n if (this.savedSelection) {\n /**\n * check whether the saved selection contains a range or plain selection\n */\n if (params.urlNewTab) {\n const newUrl = '' + params.urlText + '';\n\n if (document.getSelection().type !== 'Range') {\n const restored = Utils.restoreSelection(this.savedSelection);\n if (restored) {\n this.insertHtml(newUrl);\n }\n } else {\n throw new Error('Only new links can be inserted. You cannot edit URL`s');\n }\n } else {\n const restored = Utils.restoreSelection(this.savedSelection);\n if (restored) {\n document.execCommand('createLink', false, params.urlLink);\n }\n }\n } else {\n throw new Error('Range out of the editor');\n }\n\n return;\n }\n\n /**\n * insert color either font or background\n *\n * @param color color to be inserted\n * @param where where the color has to be inserted either text/background\n */\n insertColor(color: string, where: string): void {\n\n if (this.savedSelection) {\n const restored = Utils.restoreSelection(this.savedSelection);\n if (restored && this.checkSelection()) {\n if (where === 'textColor') {\n document.execCommand('foreColor', false, color);\n } else {\n document.execCommand('hiliteColor', false, color);\n }\n }\n\n } else {\n throw new Error('Range out of the editor');\n }\n\n return;\n }\n\n /**\n * set font size for text\n *\n * @param fontSize font-size to be set\n */\n setFontSize(fontSize: string): void {\n\n if (this.savedSelection && this.checkSelection()) {\n const deletedValue = this.deleteAndGetElement();\n\n if (deletedValue) {\n\n const restored = Utils.restoreSelection(this.savedSelection);\n\n if (restored) {\n if (this.isNumeric(fontSize)) {\n const fontPx = '' + deletedValue + '';\n this.insertHtml(fontPx);\n } else {\n const fontPx = '' + deletedValue + '';\n this.insertHtml(fontPx);\n }\n }\n }\n\n } else {\n throw new Error('Range out of the editor');\n }\n }\n\n /**\n * set font name/family for text\n *\n * @param fontName font-family to be set\n */\n setFontName(fontName: string): void {\n\n if (this.savedSelection && this.checkSelection()) {\n const deletedValue = this.deleteAndGetElement();\n\n if (deletedValue) {\n\n const restored = Utils.restoreSelection(this.savedSelection);\n\n if (restored) {\n if (this.isNumeric(fontName)) {\n const fontFamily = '' + deletedValue + '';\n this.insertHtml(fontFamily);\n } else {\n const fontFamily = '' + deletedValue + '';\n this.insertHtml(fontFamily);\n }\n }\n }\n\n } else {\n throw new Error('Range out of the editor');\n }\n }\n\n /** insert HTML */\n private insertHtml(html: string): void {\n\n // const isHTMLInserted = document.execCommand('insertHTML', false, html);\n\n this.pasteHtmlAtCaret(html);\n\n /* if (!isHTMLInserted) {\n console.log('isHTMLInserted not done.');\n throw new Error('Unable to perform the operation');\n } */\n\n return;\n }\n\n private pasteHtmlAtCaret(html: string): void {\n var sel, range;\n debugger\n if (window.getSelection) {\n // IE9 and non-IE\n sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount\n && sel.baseNode && sel.baseNode.parentNode && (sel.baseNode.parentNode.className == \"ngx-editor-textarea\") || (sel.baseNode.parentNode.offsetParent.className == \"ngx-editor-textarea\")) {\n range = sel.getRangeAt(0);\n range.deleteContents();\n\n // Range.createContextualFragment() would be useful here but is\n // only relatively recently standardized and is not supported in\n // some browsers (IE9, for one)\n var el = document.createElement(\"div\");\n el.innerHTML = html;\n var frag = document.createDocumentFragment(), node, lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }/* else if (document.selection && document.selection.type != \"Control\") {\n // IE < 9\n document.selection.createRange().pasteHTML(html);\n } */\n }\n\n /**\n * check whether the value is a number or string\n * if number return true\n * else return false\n */\n private isNumeric(value: any): boolean {\n return /^-{0,1}\\d+$/.test(value);\n }\n\n /** delete the text at selected range and return the value */\n private deleteAndGetElement(): any {\n\n let slectedText;\n\n if (this.savedSelection) {\n slectedText = this.savedSelection.toString();\n this.savedSelection.deleteContents();\n return slectedText;\n }\n\n return false;\n\n }\n\n /** check any slection is made or not */\n private checkSelection(): any {\n\n const slectedText = this.savedSelection.toString();\n\n if (slectedText.length === 0) {\n throw new Error('No Selection Made');\n }\n\n return true;\n }\n\n /**\n * check tag is supported by browser or not\n *\n * @param tag HTML tag\n */\n private checkTagSupportInBrowser(tag: string): boolean {\n return !(document.createElement(tag) instanceof HTMLUnknownElement);\n }\n}", "import { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** time in which the message has to be cleared */\nconst DURATION = 7000;\n\n@Injectable()\nexport class MessageService {\n\n /** variable to hold the user message */\n private message: Subject = new Subject();\n\n constructor() { }\n\n /** returns the message sent by the editor */\n getMessage(): Observable {\n return this.message.asObservable();\n }\n\n /**\n * sends message to the editor\n *\n * @param message message to be sent\n */\n sendMessage(message: string): void {\n this.message.next(message);\n this.clearMessageIn(DURATION);\n return;\n }\n\n /**\n * a short interval to clear message\n *\n * @param milliseconds time in seconds in which the message has to be cleared\n */\n private clearMessageIn(milliseconds: number): void {\n setTimeout(() => {\n this.message.next(undefined);\n }, milliseconds);\n return;\n }\n\n}\n", "/**\n * enable or disable toolbar based on configuration\n *\n * @param value toolbar item\n * @param toolbar toolbar configuration object\n */\nexport function canEnableToolbarOptions(value: string, toolbar: any): boolean {\n\n if (value) {\n\n if (toolbar['length'] === 0) {\n return true;\n } else {\n\n const found = toolbar.filter(array => {\n return array.indexOf(value) !== -1;\n });\n\n return found.length ? true : false;\n }\n } else {\n return false;\n }\n}\n\n/**\n * set editor configuration\n *\n * @param value configuration via [config] property\n * @param ngxEditorConfig default editor configuration\n * @param input direct configuration inputs via directives\n */\nexport function getEditorConfiguration(value: any, ngxEditorConfig: any, input: any): any {\n\n for (const i in ngxEditorConfig) {\n if (i) {\n\n if (input[i] !== undefined) {\n value[i] = input[i];\n }\n\n if (!value.hasOwnProperty(i)) {\n value[i] = ngxEditorConfig[i];\n }\n }\n }\n\n return value;\n}\n\n/**\n * return vertical if the element is the resizer property is set to basic\n *\n * @param resizer type of resizer, either basic or stack\n */\nexport function canResize(resizer: string): any {\n if (resizer === 'basic') {\n return 'vertical';\n }\n return false;\n}\n\n/**\n * save selection when the editor is focussed out\n */\nexport function saveSelection(): any {\n if (window.getSelection) {\n const sel = window.getSelection();\n if (sel?.getRangeAt && sel?.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (document.getSelection && document.createRange) {\n return document.createRange();\n }\n return null;\n}\n\n/**\n * restore selection when the editor is focussed in\n *\n * @param range saved selection when the editor is focussed out\n */\nexport function restoreSelection(range): boolean {\n if (range) {\n if (window.getSelection) {\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n return true;\n } else if (document.getSelection && range.select) {\n range.select();\n return true;\n }\n } else {\n return false;\n }\n}\n\n", "/**\n * toolbar default configuration\n */\nexport const ngxEditorConfig = {\n editable: false,\n spellcheck: true,\n height: 'auto',\n minHeight: '0',\n width: 'auto',\n minWidth: '0',\n translate: 'yes',\n enableToolbar: true,\n showToolbar: true,\n placeholder: 'Enter text here...',\n imageEndPoint: '',\n toolbar: [\n [\n 'bold',\n 'italic',\n 'underline',\n 'strikeThrough',\n 'superscript',\n 'subscript',\n 'html'\n ],\n ['fontName', 'fontSize', 'color'],\n [\n 'justifyLeft',\n 'justifyCenter',\n 'justifyRight',\n 'justifyFull',\n 'indent',\n 'outdent'\n ],\n ['cut', 'copy', 'delete', 'removeFormat', 'undo', 'redo'],\n [\n 'paragraph',\n 'blockquote',\n 'removeBlockquote',\n 'horizontalLine',\n 'orderedList',\n 'unorderedList'\n ],\n ['link', 'unlink', 'image', 'video', 'view', 'editor', 'preview']\n ]\n};\n", "
\n \n \n
\n
\n
\n {{ placeholder || config['placeholder'] }}\n
\n \n \n
", "import {\n Component,\n OnInit,\n Input,\n Output,\n ViewChild,\n EventEmitter,\n Renderer2,\n forwardRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { CommandExecutorService } from './common/services/command-executor.service';\nimport { MessageService } from './common/services/message.service';\n\nimport { ngxEditorConfig } from './common/ngx-editor.defaults';\nimport * as Utils from './common/utils/ngx-editor.utils';\n\n@Component({\n selector: 'app-ngx-editor',\n templateUrl: './ngx-editor.component.html',\n styleUrls: ['./ngx-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NguEditor),\n multi: true\n }\n ]\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class NguEditor implements OnInit, ControlValueAccessor {\n /** Specifies weather the textarea to be editable or not */\n @Input() editable: boolean;\n /** The spellcheck property specifies whether the element is to have its spelling and grammar checked or not. */\n @Input() spellcheck: boolean;\n /** Placeholder for the textArea */\n @Input() placeholder: string;\n /**\n * The translate property specifies whether the content of an element should be translated or not.\n *\n * Check https://www.w3schools.com/tags/att_global_translate.asp for more information and browser support\n */\n @Input() translate: string;\n /** Sets height of the editor */\n @Input() height: string;\n /** Sets minimum height for the editor */\n @Input() minHeight: string;\n /** Sets Width of the editor */\n @Input() width: string;\n /** Sets minimum width of the editor */\n @Input() minWidth: string;\n /**\n * Toolbar accepts an array which specifies the options to be enabled for the toolbar\n *\n * Check ngxEditorConfig for toolbar configuration\n *\n * Passing an empty array will enable all toolbar\n */\n @Input() toolbar: Object;\n @Input() sinnpet: Object;\n /**\n * The editor can be resized vertically.\n *\n * `basic` resizer enables the html5 reszier. Check here https://www.w3schools.com/cssref/css3_pr_resize.asp\n *\n * `stack` resizer enable a resizer that looks like as if in https://stackoverflow.com\n */\n @Input() resizer = 'stack';\n /**\n * The config property is a JSON object\n *\n * All avaibale inputs inputs can be provided in the configuration as JSON\n * inputs provided directly are considered as top priority\n */\n @Input() config = ngxEditorConfig;\n /** Weather to show or hide toolbar */\n @Input() showToolbar: boolean;\n /** Weather to enable or disable the toolbar */\n @Input() enableToolbar: boolean;\n /** Endpoint for which the image to be uploaded */\n @Input() imageEndPoint: string;\n\n /** emits `blur` event when focused out from the textarea */\n @Output() blur: EventEmitter = new EventEmitter();\n /** emits `focus` event when focused in to the textarea */\n @Output() focus: EventEmitter = new EventEmitter();\n\n @ViewChild('ngxTextArea') textArea: any;\n @ViewChild('ngxWrapper') ngxWrapper: any;\n\n Utils: any = Utils;\n\n private onChange: (value: string) => void;\n private onTouched: () => void;\n\n /**\n * @param _messageService service to send message to the editor message component\n * @param _commandExecutor executes command from the toolbar\n * @param _renderer access and manipulate the dom element\n */\n constructor(\n private _messageService: MessageService,\n private _commandExecutor: CommandExecutorService,\n private _renderer: Renderer2\n ) { }\n\n /**\n * events\n */\n onTextAreaFocus(): void {\n this.focus.emit('focus');\n return;\n }\n\n /** focus the text area when the editor is focussed */\n onEditorFocus() {\n this.textArea.nativeElement.focus();\n }\n\n /**\n * Executed from the contenteditable section while the input property changes\n * @param html html string from contenteditable\n */\n onContentChange(html: string): void {\n if (typeof this.onChange === 'function') {\n this.onChange(html);\n this.togglePlaceholder(html);\n }\n\n return;\n }\n\n onTextAreaBlur(): void {\n /** save selection if focussed out */\n this._commandExecutor.savedSelection = Utils.saveSelection();\n\n if (typeof this.onTouched === 'function') {\n this.onTouched();\n }\n this.blur.emit('blur');\n return;\n }\n\n get htmlContent() {\n return this.textArea.nativeElement.innerHTML;\n }\n\n /**\n * resizing text area\n *\n * @param offsetY vertical height of the eidtable portion of the editor\n */\n resizeTextArea(offsetY: number): void {\n let newHeight = parseInt(this.height, 10);\n newHeight += offsetY;\n this.height = newHeight + 'px';\n this.textArea.nativeElement.style.height = this.height;\n return;\n }\n\n /**\n * editor actions, i.e., executes command from toolbar\n *\n * @param commandName name of the command to be executed\n */\n executeCommand(commandName: string): void {\n try {\n this._commandExecutor.execute(commandName);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n\n return;\n }\n\n /**\n * Write a new value to the element.\n *\n * @param value value to be executed when there is a change in contenteditable\n */\n writeValue(value: any): void {\n this.togglePlaceholder(value);\n\n if (\n value === null ||\n value === undefined ||\n value === '' ||\n value === '
'\n ) {\n value = null;\n }\n\n this.refreshView(value);\n }\n\n /**\n * Set the function to be called\n * when the control receives a change event.\n *\n * @param fn a function\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * Set the function to be called\n * when the control receives a touch event.\n *\n * @param fn a function\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * refresh view/HTML of the editor\n *\n * @param value html string from the editor\n */\n refreshView(value: string): void {\n const normalizedValue = value === null ? '' : value;\n this._renderer.setProperty(\n this.textArea.nativeElement,\n 'innerHTML',\n normalizedValue\n );\n return;\n }\n\n /**\n * toggles placeholder based on input string\n *\n * @param value A HTML string from the editor\n */\n togglePlaceholder(value: any): void {\n if (!value || value === '
' || value === '') {\n this._renderer.addClass(\n this.ngxWrapper.nativeElement,\n 'show-placeholder'\n );\n } else {\n this._renderer.removeClass(\n this.ngxWrapper.nativeElement,\n 'show-placeholder'\n );\n }\n return;\n }\n\n /**\n * returns a json containing input params\n */\n getCollectiveParams(): any {\n return {\n editable: this.editable,\n spellcheck: this.spellcheck,\n placeholder: this.placeholder,\n translate: this.translate,\n height: this.height,\n minHeight: this.minHeight,\n width: this.width,\n minWidth: this.minWidth,\n enableToolbar: this.enableToolbar,\n showToolbar: this.showToolbar,\n imageEndPoint: this.imageEndPoint,\n toolbar: this.toolbar,\n sinnpet: this.sinnpet\n };\n }\n\n ngOnInit() {\n /**\n * set configuartion\n */\n this.config = this.Utils.getEditorConfiguration(\n this.config,\n ngxEditorConfig,\n this.getCollectiveParams()\n );\n\n this.height = this.height || this.textArea.nativeElement.offsetHeight;\n console.log('test', this.sinnpet);\n this.executeCommand('enableObjectResizing');\n }\n}", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccordionComponent } from './accordion/accordion.component';\nimport { HeaderComponent } from './header/header.component';\nimport { BodyComponent } from './body/body.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule, ReactiveFormsModule\n ],\n declarations: [AccordionComponent, HeaderComponent, BodyComponent],\n exports: [AccordionComponent, HeaderComponent, BodyComponent]\n})\nexport class NguAccordionModule { }\n", "
    \n
  • {{i.name}}
  • \n
\n", "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { AuthService, LogicalService } from '@app/shared';\nimport {OnDestroyMixin, untilComponentDestroyed} from \"@w11k/ngx-componentdestroyed\";\nimport { Subject } from 'rxjs';\nimport { BreadCrumbs } from './bread-crumbs';\n\n@Component({\n selector: 'app-bread-crumbs',\n templateUrl: './bread-crumbs.component.html',\n styleUrls: ['./bread-crumbs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadCrumbsComponent extends OnDestroyMixin implements OnInit, OnDestroy {\n breads: BreadCrumbs[] = [];\n destroyer$ = new Subject();\n\n constructor(\n private router: Router,\n private cdr: ChangeDetectorRef,\n private auth: AuthService,\n private logical: LogicalService\n ) {\n super();\n }\n\n ngOnInit() {\n this.createBread(this.router.url);\n this.router.events.pipe(untilComponentDestroyed(this)).subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.logical.scrollUP();\n this.createBread(event.urlAfterRedirects);\n // console.log(this.router.routerState.snapshot.root);\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyer$.unsubscribe();\n this.cdr.detach();\n }\n\n createBread(url: string) {\n const spl = url.split('/').slice(0, 4);\n const dat = url.split('/').slice(0, 4);\n const coll = [];\n //debugger;\n \n spl.forEach(elm => {\n const len = dat.length - 1;\n let name = this.splitName(dat[len]);\n const link = name === 'home' ? this.auth?.defaultUrl : dat.join('/');\n // console.log(`${name}`);\n // console.log(`${link}`);\n\n if((name.toLocaleLowerCase() == 'lsq')||(name.toLocaleLowerCase() === 'rfq') || name.toLowerCase() === 'hrfq'.toLowerCase()) {\n name = name.toLocaleUpperCase();\n }\n \n if(name.toLowerCase() === 'lsq Acceptance'.toLowerCase()){\n name = 'LSQ Acceptance';\n }\n \n \n coll.push({\n name: `${name}`,\n link: `${link}`\n });\n dat.splice(len, 1);\n // console.log(coll);\n });\n this.breads = coll.reverse();\n this.cdr.detectChanges();\n }\n\n splitName(str: string) {\n const splitString = str\n .replace(/([A-Z]+)/g, ' $1')\n .replace(/([A-Z][a-z])/g, '$1');\n return splitString || 'home';\n }\n}\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NguSorter } from './sorter/sorter.directive';\nimport { NguDataTable } from './datatable/datatable.component';\nimport { NguSortHeader } from './sorter/sorter.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\n declarations: [NguDataTable, NguSortHeader, NguSorter],\n exports: [NguDataTable, NguSortHeader, NguSorter]\n})\nexport class NguDataTableModule {}\n", "import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n public controler$ = new Subject();\r\n\r\n constructor() {}\r\n\r\n show() {\r\n this.controler$.next(1);\r\n }\r\n\r\n hide() {\r\n this.controler$.next(-1);\r\n }\r\n}\r\n", "import { Injectable } from '@angular/core';\r\nimport {\r\n HttpInterceptor,\r\n HttpHandler,\r\n HttpRequest\r\n} from '@angular/common/http';\r\nimport { LoaderService } from './loader.service';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { NguAlertService } from '@app/shared';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n messenger: any;\r\n isOffline;\r\n constructor(private load: LoaderService, private alert: NguAlertService) {}\r\n\r\n intercept(req: HttpRequest, next: HttpHandler) {\r\n // console.log('loader');\r\n // console.count('api calls');\r\n const isOnline = navigator.onLine;\r\n if (!isOnline) {\r\n if (!this.isOffline) {\r\n this.alert.open({\r\n heading: 'Your are Offline',\r\n msg: `Check Your internet connection`,\r\n type: 'danger',\r\n duration: 10000\r\n });\r\n }\r\n this.isOffline = true;\r\n return;\r\n }\r\n this.isOffline = false;\r\n\r\n this.load.show();\r\n // send cloned request with header to the next handler.\r\n return next.handle(req).pipe(\r\n finalize(() => {\r\n this.load.hide();\r\n })\r\n );\r\n }\r\n}\r\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoadingComponent } from './loading/loading.component';\nimport { LoaderService } from './loader.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\n declarations: [LoadingComponent],\n exports: [LoadingComponent],\n entryComponents: [LoadingComponent],\n providers: [LoaderService]\n})\nexport class LoaderModule {}\n", "import { animate, style, transition, trigger } from '@angular/animations';\r\n\r\nexport const enterAnimation = trigger('enterAnimation', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('200ms', style({ opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1 }),\r\n animate('200ms', style({ opacity: 0 }))\r\n ])\r\n]);\r\n", "\n
\n \n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n\n \n \n\n \n \n\n \n \n \n
\n
\n
\n
\n
\n \n
\n", "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnInit\n} from '@angular/core';\nimport { enterAnimation } from '../../animations/fade.animations';\nimport { LoaderService } from '../loader.service';\n\n@Component({\n selector: 'app-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [enterAnimation]\n})\nexport class LoadingComponent implements OnInit {\n isVisible = 0;\n constructor(private load: LoaderService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.load.controler$.subscribe(res => {\n this.isVisible += res;\n this.cdr.detectChanges();\n });\n }\n}\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TabGroupComponent } from './tab-group/tab-group.component';\nimport { TabContentComponent } from './tab-content/tab-content.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule,FormsModule, ReactiveFormsModule],\n declarations: [TabGroupComponent, TabContentComponent],\n exports: [TabGroupComponent, TabContentComponent]\n})\nexport class TabsModule {}\n", "import { NgModule } from '@angular/core';\r\nimport { NguFullcalendar } from './ngu-fullcalendar.component';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [FormsModule, ReactiveFormsModule],\r\n exports: [NguFullcalendar],\r\n declarations: [NguFullcalendar],\r\n providers: []\r\n})\r\nexport class NguFullcalendarModule {}\r\n", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NguChartjs } from './ngu-chartjs.directive';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\n declarations: [NguChartjs],\n exports: [NguChartjs]\n})\nexport class NguChartjsModule {}\n", "import { Component, HostListener } from '@angular/core';\nimport { NguEditor } from '../ngx-editor.component';\n\n@Component({\n selector: 'app-ngx-grippie',\n templateUrl: './ngx-grippie.component.html',\n styleUrls: ['./ngx-grippie.component.scss']\n})\nexport class NgxGrippieComponent {\n /** height of the editor */\n height: number;\n /** previous value befor resizing the editor */\n oldY = 0;\n /** set to true on mousedown event */\n grabber = false;\n\n /**\n * Constructor\n *\n * @param _editorComponent Editor component\n */\n constructor(private _editorComponent: NguEditor) {}\n\n /**\n *\n * @param event Mouseevent\n *\n * Update the height of the editor when the grabber is dragged\n */\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(event: MouseEvent) {\n if (!this.grabber) {\n return;\n }\n\n this._editorComponent.resizeTextArea(event.clientY - this.oldY);\n this.oldY = event.clientY;\n }\n\n /**\n *\n * @param event Mouseevent\n *\n * set the grabber to false on mouse up action\n */\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(event: MouseEvent) {\n this.grabber = false;\n }\n\n @HostListener('mousedown', ['$event'])\n onResize(event: MouseEvent, resizer?: Function) {\n this.grabber = true;\n this.oldY = event.clientY;\n event.preventDefault();\n }\n}\n", "
\n \n \n \n \n \n
\n", "
\n {{ ngxMessage }}\n
\n", "import { Component } from '@angular/core';\n\nimport { MessageService } from '../common/services/message.service';\n\n@Component({\n selector: 'app-ngx-editor-message',\n templateUrl: './ngx-editor-message.component.html',\n styleUrls: ['./ngx-editor-message.component.scss']\n})\n\nexport class NgxEditorMessageComponent {\n\n /** property that holds the message to be displayed on the editor */\n ngxMessage = undefined;\n\n /**\n * @param _messageService service to send message to the editor\n */\n constructor(private _messageService: MessageService) {\n this._messageService.getMessage().subscribe((message: string) => this.ngxMessage = message);\n }\n\n /**\n * clears editor message\n */\n clearMessage(): void {\n this.ngxMessage = undefined;\n return;\n }\n}\n", "
\n
\n
\n \n
\n \n \n \n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n \n \n \n \n
\n\n
\n \n
\n
\n\n\n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n
\n
\n
\n\n\n\n
\n
\n \n \n
\n
\n
\n
\n \n
\n

Choose Image

\n

\n Uploading Image\n
\n {{ updloadPercentage }} %\n

\n
\n \n
\n
\n
\n \n
\n
\n \n \n
\n \n
\n
\n
\n
=100}\"\n [style.width.%]=\"updloadPercentage\">
\n
\n
\n
\n
\n\n\n\n
\n
\n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
\n\n\n\n
\n
\n Text\n Background\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n\n\n\n
\n
\n
\n \n \n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n \n \n
\n \n
\n
\n
", "import { Component, Input, Output, EventEmitter, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { HttpResponse } from '@angular/common/http';\nimport { PopoverConfig } from 'ngx-bootstrap/popover';\nimport { CommandExecutorService } from '../common/services/command-executor.service';\nimport { MessageService } from '../common/services/message.service';\nimport * as Utils from '../common/utils/ngx-editor.utils';\n\n@Component({\n selector: 'app-ngx-editor-toolbar',\n templateUrl: './ngx-editor-toolbar.component.html',\n styleUrls: ['./ngx-editor-toolbar.component.scss'],\n providers: [PopoverConfig]\n})\n\nexport class NgxEditorToolbarComponent implements OnInit {\n\n /** holds values of the insert link form */\n urlForm: FormGroup;\n /** holds values of the insert image form */\n imageForm: FormGroup;\n /** holds values of the insert video form */\n videoForm: FormGroup;\n snippetsForm: FormGroup;\n /** set to false when image is being uploaded */\n uploadComplete = true;\n /** upload percentage */\n updloadPercentage = 0;\n /** set to true when the image is being uploaded */\n isUploading = false;\n /** which tab to active for color insetion */\n selectedColorTab = 'textColor';\n /** font family name */\n fontName = '';\n /** font size */\n fontSize = '';\n /** hex color code */\n hexColor = '';\n /** show/hide image uploader */\n isImageUploader = false;\n\n /**\n * Editor configuration\n */\n @Input() config: any;\n @ViewChild('urlPopover') urlPopover;\n @ViewChild('imagePopover') imagePopover;\n @ViewChild('videoPopover') videoPopover;\n @ViewChild('fontSizePopover') fontSizePopover;\n @ViewChild('colorPopover') colorPopover;\n /**\n * Emits an event when a toolbar button is clicked\n */\n @Output() execute: EventEmitter = new EventEmitter();\n\n constructor(private _popOverConfig: PopoverConfig,\n private _formBuilder: FormBuilder,\n private _messageService: MessageService,\n private _commandExecutorService: CommandExecutorService) {\n this._popOverConfig.outsideClick = true;\n this._popOverConfig.placement = 'bottom';\n this._popOverConfig.container = 'body';\n }\n\n /**\n * enable or diable toolbar based on configuration\n *\n * @param value name of the toolbar buttons\n */\n canEnableToolbarOptions(value): boolean {\n return Utils.canEnableToolbarOptions(value, this.config['toolbar']);\n }\n\n /**\n * triggers command from the toolbar to be executed and emits an event\n *\n * @param command name of the command to be executed\n */\n triggerCommand(command: string): void {\n this.execute.emit(command);\n }\n\n trackByFn(index: any, item: any) {\n return index;\n }\n\n /**\n * create URL insert form\n */\n buildUrlForm(): void {\n\n this.urlForm = this._formBuilder.group({\n urlLink: ['', [Validators.required]],\n urlText: ['', [Validators.required]],\n urlNewTab: [true]\n });\n\n return;\n }\n\n /**\n * inserts link in the editor\n */\n insertLink(): void {\n\n try {\n this._commandExecutorService.createLink(this.urlForm.value);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n\n /** reset form to default */\n this.buildUrlForm();\n /** close inset URL pop up */\n this.urlPopover.hide();\n\n return;\n }\n\n /**\n * create insert image form\n */\n buildImageForm(): void {\n\n this.imageForm = this._formBuilder.group({\n imageUrl: ['', [Validators.required]]\n });\n\n return;\n }\n\n /**\n * create insert image form\n */\n buildVideoForm(): void {\n\n this.videoForm = this._formBuilder.group({\n videoUrl: ['', [Validators.required]],\n height: [''],\n width: ['']\n });\n\n return;\n }\n buildSnippetForm(): void {\n\n this.snippetsForm = this._formBuilder.group({\n snippetsSelect: ['']\n });\n\n return;\n }\n\n /**\n * Executed when file is selected\n *\n * @param e onChange event\n */\n onFileChange(e): void {\n\n this.uploadComplete = false;\n this.isUploading = true;\n\n if (e.target.files.length > 0) {\n const file = e.target.files[0];\n\n try {\n this._commandExecutorService.uploadImage(file, this.config.imageEndPoint).subscribe(event => {\n\n if (event.type) {\n this.updloadPercentage = Math.round(100 * event.loaded / event.total);\n }\n\n if (event instanceof HttpResponse) {\n try {\n this._commandExecutorService.insertImage(event.body.url);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n this.uploadComplete = true;\n this.isUploading = false;\n }\n });\n } catch (error) {\n this._messageService.sendMessage(error.message);\n this.uploadComplete = true;\n this.isUploading = false;\n }\n\n }\n\n return;\n }\n\n /** insert image in the editor */\n insertImage(): void {\n try {\n this._commandExecutorService.insertImage(this.imageForm.value.imageUrl);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n\n /** reset form to default */\n this.buildImageForm();\n /** close inset URL pop up */\n this.imagePopover.hide();\n\n return;\n }\n\n /** insert image in the editor */\n insertVideo(): void {\n try {\n this._commandExecutorService.insertVideo(this.videoForm.value);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n\n /** reset form to default */\n this.buildVideoForm();\n /** close inset URL pop up */\n this.videoPopover.hide();\n\n return;\n }\n\n\n insertSnippets(): void {\n try {\n console.log('snippets===', this.snippetsForm.value);\n this._commandExecutorService.insertSinppets(this.snippetsForm.value.snippetsSelect);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n this.buildSnippetForm();\n return;\n }\n /** inser text/background color */\n insertColor(color: string, where: string): void {\n\n try {\n this._commandExecutorService.insertColor(color, where);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n\n this.colorPopover.hide();\n return;\n }\n\n /** set font size */\n setFontSize(fontSize: string): void {\n\n try {\n this._commandExecutorService.setFontSize(fontSize);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n\n this.fontSizePopover.hide();\n return;\n }\n\n /** set font Name/family */\n setFontName(fontName: string): void {\n\n try {\n this._commandExecutorService.setFontName(fontName);\n } catch (error) {\n this._messageService.sendMessage(error.message);\n }\n\n this.fontSizePopover.hide();\n return;\n }\n\n /**\n * allow only numbers\n *\n * @param event keypress event\n */\n onlyNumbers(event: KeyboardEvent): boolean {\n return event.charCode >= 48 && event.charCode <= 57;\n }\n\n ngOnInit() {\n this.buildUrlForm();\n this.buildImageForm();\n this.buildVideoForm();\n this.buildSnippetForm();\n console.log('test=====');\n console.log(this.config['sinnpet']);\n }\n}", "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { NguEditor } from './ngx-editor.component';\nimport { NgxGrippieComponent } from './ngx-grippie/ngx-grippie.component';\nimport { NgxEditorMessageComponent } from './ngx-editor-message/ngx-editor-message.component';\nimport { NgxEditorToolbarComponent } from './ngx-editor-toolbar/ngx-editor-toolbar.component';\nimport { MessageService } from './common/services/message.service';\nimport { CommandExecutorService } from './common/services/command-executor.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n PopoverModule.forRoot()\n ],\n declarations: [\n NguEditor,\n NgxGrippieComponent,\n NgxEditorMessageComponent,\n NgxEditorToolbarComponent\n ],\n exports: [NguEditor, PopoverModule],\n providers: [CommandExecutorService, MessageService]\n})\nexport class NguEditorModule {}\n", "import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HintListDirective, HintListerDirective } from './hint-list.directive';\r\nimport { HintListComponent } from './hint-list/hint-list.component';\r\nimport { HintComponent } from './hint.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\r\n exports: [\r\n HintComponent,\r\n HintListComponent,\r\n HintListDirective,\r\n HintListerDirective\r\n ],\r\n declarations: [\r\n HintComponent,\r\n HintListComponent,\r\n HintListDirective,\r\n HintListerDirective\r\n ],\r\n providers: []\r\n})\r\nexport class HintModule {}\r\n", "import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NguFormFieldComponent } from './ngu-form-field/ngu-form-field.component';\nimport {\n NguErrorDirective,\n NguInputDirective,\n NguFormTextDirective\n} from './ngu-input.directive';\nimport { NguInputComponent } from './ngu-input/ngu-input.component';\nimport { NguSelectComponent } from './ngu-select/ngu-select.component';\nimport { NguErrorComponent } from './ngu-error/ngu-error.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\n declarations: [\n NguSelectComponent,\n NguInputComponent,\n NguFormFieldComponent,\n NguInputDirective,\n NguErrorDirective,\n NguErrorComponent,\n NguFormTextDirective\n ],\n exports: [\n NguSelectComponent,\n NguInputComponent,\n NguFormFieldComponent,\n NguInputDirective,\n NguErrorDirective,\n NguErrorComponent,\n NguFormTextDirective\n ]\n})\nexport class NguFormsModule {}\n", "import { NgModule } from '@angular/core';\r\nimport { NguDatePickerComponent } from './ngu-date-picker.component';\r\nimport { MyDatePickerModule } from 'mydatepicker';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common'; \r\n\r\n@NgModule({\r\n imports: [MyDatePickerModule, FormsModule,CommonModule],\r\n exports: [NguDatePickerComponent],\r\n declarations: [NguDatePickerComponent],\r\n providers: []\r\n})\r\nexport class NguDatePickerModule {}\r\n", "import { Directive, OnInit, ElementRef, Input, OnDestroy } from '@angular/core';\r\nimport { ChartConfiguration, ChartDataset, ChartData } from 'chart.js';\r\nimport Chart from 'chart.js/auto';\r\n\r\nimport 'chartjs-plugin-datalabels';\r\n// import * as _ from 'lodash';\r\n// eslint-disable-next-line @angular-eslint/directive-selector\r\n@Directive({ selector: '[NguChartjs]' })\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class NguChartjs implements OnInit, OnDestroy {\r\n _seed: any;\r\n Color: any;\r\n private defaultColors: Array = [\r\n [255, 55, 132],\r\n [54, 162, 235],\r\n [75, 192, 192],\r\n [247, 120, 37],\r\n [153, 102, 255],\r\n [0, 168, 198],\r\n [55, 159, 122],\r\n [204, 39, 56],\r\n [139, 98, 138],\r\n [143, 190, 0],\r\n [96, 96, 96],\r\n [77, 83, 96]\r\n ];\r\n // private defaultColors: Array = [\r\n // [255, 99, 132],\r\n // [54, 162, 235],\r\n // [255, 206, 86],\r\n // [231, 233, 237],\r\n // [75, 192, 192],\r\n // [151, 187, 205],\r\n // [220, 220, 220],\r\n // [247, 70, 74],\r\n // [70, 191, 189],\r\n // [253, 180, 92],\r\n // [148, 159, 177],\r\n // [77, 83, 96]\r\n // ];\r\n Samples = [\r\n '#FF3784',\r\n '#36A2EB',\r\n '#4BC0C0',\r\n '#F77825',\r\n '#9966FF',\r\n '#00A8C6',\r\n '#379F7A',\r\n '#CC2738',\r\n '#8B628A',\r\n '#8FBE00',\r\n '#606060'\r\n ];\r\n\r\n _config: ChartConfiguration;\r\n isChartInitialized: boolean;\r\n cts: CanvasRenderingContext2D;\r\n chart: Chart;\r\n\r\n @Input('config')\r\n set config(data: ChartConfiguration) {\r\n // this._options = _.cloneDeep(data);\r\n this._config = data;\r\n this.isChartInitialized && this._initilizeChart();\r\n }\r\n @Input('options') options: any;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n ngOnInit() {\r\n this.isChartInitialized = true;\r\n this.cts = this.el.nativeElement.getContext('2d');\r\n this._initilizeChart();\r\n }\r\n\r\n private _initilizeChart() {\r\n if (!this._config) return;\r\n // console.log('chartInit');\r\n this._config.data.datasets = this.analizeDataSet(\r\n this._config.data.datasets\r\n );\r\n // console.log(this.options.labels);\r\n // if (this._config.type === 'pie')\r\n let formats;\r\n switch (this._config.type) {\r\n /* case 'multibar':\r\n // console.log('mutibar');\r\n formats = {\r\n align: 'end',\r\n anchor: 'end',\r\n color: context => {\r\n return context.dataset.backgroundColor;\r\n },\r\n font: context => {\r\n const w = context.chart.width;\r\n return {\r\n size: w < 512 ? 20 : 18,\r\n weight: 900\r\n };\r\n },\r\n formatter: (value, context) => {\r\n return context.chart.data.labels[context.dataIndex];\r\n }\r\n };\r\n break; */\r\n case 'pie':\r\n // console.log('pie');\r\n formats = {\r\n // backgroundColor: context => {\r\n // return context.dataset.backgroundColor;\r\n // },\r\n // borderColor: 'white',\r\n // borderRadius: 25,\r\n // borderWidth: 2,\r\n color: 'white',\r\n // display: context => {\r\n // const dataset = context.dataset;\r\n // const count = dataset.data.length;\r\n // const value = dataset.data[context.dataIndex];\r\n // return value > count * 1.5;\r\n // },\r\n font: {\r\n size: 16,\r\n weight: 'bold'\r\n },\r\n textAlign: 'start',\r\n formatter: Math.round\r\n };\r\n break;\r\n case 'bar':\r\n // console.log('bar');\r\n formats = {\r\n color: 'black',\r\n display: context => {\r\n return context.dataset.data[context.dataIndex] > 0;\r\n },\r\n font: {\r\n weight: 'bold'\r\n },\r\n formatter: Math.round\r\n };\r\n break;\r\n }\r\n this._config.options.plugins = { datalabels: formats };\r\n this.chart = new Chart(this.cts, this._config);\r\n // this.chart.data.datasets = this._options.data.datasets;\r\n }\r\n\r\n analizeDataSet(data?: ChartDataset[]): ChartDataset[] {\r\n return data.map((elem, index) => {\r\n return Object.assign(\r\n elem,\r\n elem.backgroundColor\r\n ? null\r\n : this.getColors(this._config.type, index, elem.data.length)\r\n );\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n set chartData(data: ChartData) {\r\n // data = this.copy(data) as ChartData;\r\n // const data = _.cloneDeep(datas);\r\n if (data.labels) this._config.data.labels = this.copy(data.labels);\r\n\r\n if (data?.datasets)\r\n this._config.data.datasets = this.analizeDataSet(data?.datasets);\r\n if(this.chart?.data){\r\n this.chart.data.datasets = this._config?.data?.datasets;\r\n this.chart.update();\r\n }\r\n }\r\n\r\n copy(data): any {\r\n return JSON.parse(JSON.stringify(data));\r\n }\r\n\r\n destroy() {\r\n if (this.chart) {\r\n this.chart.destroy();\r\n this.chart = null;\r\n }\r\n }\r\n\r\n private getColors(chartType: string, index: number, count: number) {\r\n if (chartType === 'pie' || chartType === 'doughnut') {\r\n return this.formatPieColors(this.generateColors(count));\r\n }\r\n\r\n // if (chartType === 'polarArea') {\r\n // return formatPolarAreaColors(this.generateColors(count));\r\n // }\r\n\r\n // if (chartType === 'line' || chartType === 'radar') {\r\n // return formatLineColor(generateColor(index));\r\n // }\r\n\r\n if (chartType === 'bar' || chartType === 'horizontalBar') {\r\n return this.formatBarColor(this.generateColor(index));\r\n }\r\n // return generateColor(index);\r\n }\r\n\r\n private getRandomInt(min: number, max: number): number {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n\r\n private getRandomColor(): number[] {\r\n return [\r\n this.getRandomInt(0, 255),\r\n this.getRandomInt(0, 255),\r\n this.getRandomInt(0, 255)\r\n ];\r\n }\r\n\r\n private generateColors(count: number): Array {\r\n const colorsArr: Array = new Array(count);\r\n for (let i = 0; i < count; i++) {\r\n colorsArr[i] = this.defaultColors[i] || this.getRandomColor();\r\n }\r\n return colorsArr;\r\n }\r\n\r\n private formatPieColors(colors: Array) {\r\n return {\r\n backgroundColor: colors.map(color => this.rgba(color, 0.6)),\r\n borderColor: colors.map(() => '#fff'),\r\n pointBackgroundColor: colors.map(color => this.rgba(color, 1)),\r\n pointBorderColor: colors.map(() => '#fff'),\r\n pointHoverBackgroundColor: colors.map(color => this.rgba(color, 1)),\r\n pointHoverBorderColor: colors.map(color => this.rgba(color, 1))\r\n };\r\n }\r\n\r\n private formatBarColor(colors: number[]) {\r\n return {\r\n backgroundColor: this.rgba(colors, 0.6),\r\n borderColor: this.rgba(colors, 1),\r\n hoverBackgroundColor: this.rgba(colors, 0.8),\r\n hoverBorderColor: this.rgba(colors, 1)\r\n };\r\n }\r\n\r\n private generateColor(index: number): number[] {\r\n return this.defaultColors[index] || this.getRandomColor();\r\n }\r\n\r\n private rgba(colour: number[], opacity: number): string {\r\n return `rgba(${colour.concat(opacity).join(',')})`;\r\n }\r\n\r\n // color(offset) {\r\n // const count = this.Samples.length;\r\n // const index = offset === undefined ? this.rand(0, count) : offset;\r\n // return this.Samples[index % count];\r\n // }\r\n\r\n // colors(config) {\r\n // const cfg = config || {};\r\n // const color = cfg.color || this.color(0);\r\n // const count = cfg.count !== undefined ? cfg.count : 8;\r\n // const method = cfg.mode ? this.Color[cfg.mode] : null;\r\n // const values = [];\r\n // let i, f, v;\r\n\r\n // for (i = 0; i < count; ++i) {\r\n // f = i / count;\r\n\r\n // if (method) {\r\n // v = method.call(this.Color(color), f).rgbString();\r\n // } else {\r\n // v = this.color(i);\r\n // }\r\n\r\n // values.push(v);\r\n // }\r\n\r\n // return values;\r\n // }\r\n\r\n // rand(min, max) {\r\n // const seed = this._seed;\r\n // min = min === undefined ? 0 : min;\r\n // max = max === undefined ? 1 : max;\r\n // this._seed = (seed * 9301 + 49297) % 233280;\r\n // return min + this._seed / 233280 * (max - min);\r\n // }\r\n}\r\n", "import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngu-error',\n templateUrl: './ngu-error.component.html',\n styleUrls: ['./ngu-error.component.scss']\n})\nexport class NguErrorComponent implements OnInit {\n @Input('name') name: string;\n control: any;\n constructor() {}\n\n ngOnInit() {}\n}\n", "\n", "import {\n Component,\n OnInit,\n ElementRef,\n NgZone,\n HostBinding,\n Input,\n ViewChild,\n AfterViewInit,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef\n} from '@angular/core';\nimport 'fullcalendar';\nimport { OptionsInput, View, EventObjectInput } from 'fullcalendar';\nimport * as $ from 'jquery';\nimport {\n DayClick,\n ViewRender,\n EventRender,\n NguFullCal\n} from './ngu-fullcalendar';\nimport { Subject } from 'rxjs';\nimport { Moment } from 'moment';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngu-fullcalendar',\n templateUrl: './ngu-fullcalendar.component.html',\n styleUrls: ['./ngu-fullcalendar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class NguFullcalendar implements OnInit, AfterViewInit {\n private _options: OptionsInput;\n private _eventData: any;\n private _calendarId: JQuery;\n @Input('options')\n set options(data: OptionsInput) {\n this._options = data;\n this._calendarId && this._setOptions();\n }\n viewRender = new Subject();\n dayClick = new Subject();\n eventRender = new Subject();\n eventAfterRender = new Subject();\n\n constructor(\n private el: ElementRef,\n private cdr: ChangeDetectorRef,\n private zone: NgZone\n ) {}\n\n ngOnInit() {\n this._calendarId = $(this.el.nativeElement);\n }\n\n ngAfterViewInit() {\n this._setOptions();\n this._eventData && this._rendererEvents();\n }\n\n set events(events) {\n this._eventData = events;\n this._calendarId && this._rendererEvents();\n }\n\n private _setOptions(): void {\n this._options.viewRender = (view, element) => {\n this.viewRender.next([view, element]);\n // console.log('viewRender');\n };\n this._options.dayClick = (date, jsEvent, view) => {\n this.dayClick.next([date, jsEvent, view]);\n // console.log('dayClick');\n };\n this._options.eventRender = (event, element, view) => {\n this.eventRender.next([event, element, view]);\n // console.log(element);\n };\n this._options.eventAfterRender = (event, element, view) => {\n this.eventAfterRender.next([event, element, view]);\n // console.log('eventAfterRender');\n };\n\n this.fullCalendar(this._options);\n this.cdr.detectChanges();\n }\n\n fullCalendar(...args: any[]): any {\n if (!args) {\n return;\n }\n switch (args.length) {\n case 0:\n return;\n case 1:\n return this._calendarId.fullCalendar(args[0]);\n case 2:\n return this._calendarId.fullCalendar(args[0], args[1]);\n case 3:\n return this._calendarId.fullCalendar(args[0], args[1], args[2]);\n }\n }\n\n private _rendererEvents() {\n this.fullCalendar('removeEvents');\n if (this._eventData && this._eventData[0]) {\n this.fullCalendar('renderEvents', this._eventData, true);\n this.fullCalendar('rerenderEvents');\n }\n }\n\n get getView(): View {\n return this.fullCalendar('getView');\n }\n}\n", "import { NgModule } from '@angular/core';\nimport { NguModal } from './ngu-modal.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n exports: [NguModal],\n declarations: [NguModal],\n providers: []\n})\nexport class NguModalModule {}\n", "export class NguModalConfig {\n id: any;\n backdrop?: boolean;\n width?: Width;\n}\n\nexport interface Width {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n fixed?: string;\n}\n", "import {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata\n} from '@angular/animations';\n\n// export const fadeAnimation = trigger('fadeAnimation', [\n// transition(':enter', [\n// style({ opacity: 0 }),\n// animate('200ms', style({ opacity: 1 }))\n// ]),\n// transition(':leave', [\n// style({ opacity: 1 }),\n// animate('200ms', style({ opacity: 0 }))\n// ])\n// ]);\n\n// export const viewAnimation = trigger('viewAnimation', [\n// state('1', style({ transform: 'none', opacity: 1 })),\n// state(\n// 'void',\n// style({ transform: 'translate3d(0, 25%, 0) scale(0.9)', opacity: 0 })\n// ),\n// state('0', style({ transform: 'translate3d(0, 25%, 0)', opacity: 0 })),\n// transition('* => *', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n// ]);\n\nexport const NguModalFadeAnimation: AnimationTriggerMetadata = trigger(\n 'fadeAnimation',\n [\n transition(':enter', [\n style({ opacity: 0 }),\n animate('200ms', style({ opacity: 1 }))\n ]),\n transition(':leave', [\n style({ opacity: 1 }),\n animate('200ms', style({ opacity: 0 }))\n ])\n ]\n);\nexport const NguModalViewAnimation: AnimationTriggerMetadata = trigger(\n 'viewAnimation',\n [\n state('1', style({ transform: 'none', opacity: 1 })),\n state(\n 'void',\n style({ transform: 'translate3d(0, 25%, 0) scale(0.9)', opacity: 0 })\n ),\n state('0', style({ transform: 'translate3d(0, 25%, 0)', opacity: 0 })),\n transition('* => *', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ]\n);\n", "
\n
\n
\n
\n \n
\n
\n
\n
\n
\n", "// import { fadeAnimation, viewAnimation } from './ngu-modal-animation';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { NguModalConfig } from './ngu-modal';\nimport {\n NguModalFadeAnimation,\n NguModalViewAnimation\n} from './ngu-modal-animation';\n\n@Component({\n selector: 'ngu-modal',\n templateUrl: 'ngu-modal.component.html',\n styleUrls: ['ngu-modal.component.scss'],\n animations: [NguModalFadeAnimation, NguModalViewAnimation]\n})\n// tslint:disable-next-line:component-class-suffix\nexport class NguModal implements OnInit, AfterViewInit {\n afterViewCalled = false;\n afterView = true;\n modalDiv: any;\n openModals: any;\n @Input() MIndex = new NguModalConfig();\n @Output() beforestart: EventEmitter = new EventEmitter();\n @Output() afterstart: EventEmitter = new EventEmitter();\n @Output() beforeend: EventEmitter = new EventEmitter();\n @Output() afterend: EventEmitter = new EventEmitter();\n\n @ViewChild('modal') modalMain1: ElementRef;\n @ViewChild('modalInner') modalInner: ElementRef;\n isOpened = 0;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n this.modalDiv = this.modalMain1?.nativeElement;\n\n this.MIndex.backdrop =\n this.MIndex && typeof this.MIndex.backdrop !== 'undefined'\n ? this.MIndex.backdrop\n : true;\n\n const id = this.generateID();\n if(this.modalDiv){\n this.renderer.addClass(this.modalDiv, id);\n }\n const styleItem = document.createElement('style');\n if (this.MIndex.width && !this.MIndex.width.fixed) {\n let data = '';\n data += this.MIndex.width.xs\n ? `@media (max-width:767px){.${id} .innerdiv {width: ${\n this.MIndex.width.xs\n }}}`\n : '';\n data += this.MIndex.width.sm\n ? `@media (min-width:768px){.${id} .innerdiv {width: ${\n this.MIndex.width.sm\n }}}`\n : '';\n data += this.MIndex.width.md\n ? `@media (min-width:992px){.${id} .innerdiv {width: ${\n this.MIndex.width.md\n }}}`\n : '';\n data += this.MIndex.width.lg\n ? `@media (min-width:1200px){.${id} .innerdiv {width: ${\n this.MIndex.width.lg\n }}}`\n : '';\n\n styleItem.innerHTML = data;\n } else {\n // const width = this.MIndex.width\n // ? this.MIndex.width.fixed || '310px'\n // : '310px';\n // styleItem.innerHTML = `.${id} .innerdiv {width: ${width}; min-width: ${width};}`;\n }\n this.modalDiv?.appendChild(styleItem);\n }\n\n ngAfterViewInit() {}\n\n open() {\n setTimeout(() => {\n this.isOpened = 1;\n }, 10);\n }\n\n close() {\n this.isOpened = 0;\n }\n\n // private toggleModal(val: boolean) {\n // const body = document.body.style;\n // const modal = this.modalDiv;\n // if (!val) {\n // this.beforeend.emit();\n // this.renderer.setElementClass(modal, 'anim', false);\n // setTimeout(() => {\n // body.cssText = '';\n // this.openModals = val;\n // this.afterend.emit();\n // }, 290);\n // } else {\n // this.beforestart.emit();\n // this.openModals = val;\n // this.renderer.setElementStyle(\n // this.modalInner.nativeElement,\n // 'transfrom',\n // 'scale(.2) translate3d(2241px, 1400px, 0)'\n // );\n // setTimeout(() => {\n // body.cssText = 'overflow: hidden; padding-right: 19px;';\n // this.renderer.setElementClass(modal, 'anim', true);\n // }, 2);\n // this.afterstart.emit();\n // }\n // }\n\n // confirm(m: number, message?: string) {\n // return new Promise(resolve => {\n // return resolve(window.confirm(message || 'Is it OK?'));\n // });\n // }\n\n private generateID() {\n let text = '';\n const possible =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n for (let i = 0; i < 6; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return `ngumodal${text}`;\n }\n}\n", "import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { AuthService } from './auth.service';\r\n\r\n// eslint-disable-next-line @angular-eslint/directive-selector\r\n@Directive({ selector: '[hasPermission]' })\r\nexport class RolePermissionDirective {\r\n private currentUser;\r\n private permissions = [];\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private templateRef: TemplateRef,\r\n private viewContainer: ViewContainerRef,\r\n private auth: AuthService\r\n ) {}\r\n\r\n @Input()\r\n set hasPermission(val) {\r\n this.permissions = val;\r\n this.updateView();\r\n }\r\n\r\n private updateView() {\r\n if (this.checkPermission()) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n } else {\r\n this.viewContainer.clear();\r\n }\r\n }\r\n\r\n private checkPermission() {\r\n if (Array.isArray(this.permissions)) {\r\n for (const checkPermission of this.permissions) {\r\n const permissionFound = this.auth.checkRolePermission(checkPermission);\r\n }\r\n } else {\r\n return this.auth.checkRolePermission(this.permissions);\r\n }\r\n }\r\n}\r\n", "export interface NavList {\r\n title: string;\r\n url: string;\r\n id: number;\r\n child: NavChild[];\r\n freeze?: number[];\r\n}\r\nexport interface NavMenuList {\r\n title: string;\r\n url: string;\r\n id: number;\r\n child: NavMenuChild[];\r\n freeze?: boolean;\r\n}\r\n\r\nexport interface NavChild {\r\n title: string;\r\n id: number;\r\n url: string;\r\n externalUrl?: boolean;\r\n isNewPage?: boolean;\r\n perms?: PermsNav[];\r\n active?: boolean; // default true\r\n freeze?: number[];\r\n onlyToFreeze?: boolean;\r\n}\r\n\r\nexport interface NavMenuChild {\r\n title: string;\r\n id: number;\r\n url: string;\r\n externalUrl?: boolean;\r\n isNewPage?: boolean;\r\n perms?: PermsMenuNav[];\r\n active?: boolean; // default true\r\n freeze?: boolean;\r\n permission?: boolean;\r\n onlyToFreeze?: boolean;\r\n}\r\n\r\nexport interface PermsNav {\r\n id: number;\r\n name: string;\r\n // [X: string]: number | number[];\r\n freeze: number[];\r\n onlyToFreeze?: boolean;\r\n}\r\nexport interface PermsMenuNav {\r\n id: number;\r\n name: string;\r\n // [X: string]: number | number[];\r\n freeze: boolean;\r\n permission: boolean;\r\n onlyToFreeze?: boolean;\r\n}\r\n\r\nexport class NavigationLite {\r\n [x: string]: NavigationLiteDetail;\r\n}\r\n\r\nexport interface NavigationLiteDetail {\r\n id: number;\r\n perms?: NavigationLitePerms;\r\n}\r\n\r\nexport interface NavigationLitePerms {\r\n [x: string]: number;\r\n}\r\n", "import { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Inject, Injectable, OnInit } from '@angular/core';\r\nimport {DOCUMENT} from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { LoginRecords, LoginReq, LoginRes, AccessMenu, ResetPasswordReq, ResetPasswordRes, LoginConfirmationRes, LogoutRes, RecaptchaRes, resetPwdUserInfo, ForgotPasswordReq, ForgotPasswordRes, UpdatePasswordReq, UpdatePasswordRes, ResetUpdatePasswordReq, ResetUpdatePasswordRes } from '@entity/login';\r\nimport { NavigationLite, NavList } from '@entity/navigation';\r\nimport { UserRoles, archiveRefName } from '@entity/user-role';\r\nimport { NguAlertService } from '@app/shared';\r\nimport { DateHelperService } from '../services';\r\nimport { EncryptService } from './encrypt.service';\r\nimport { promise } from 'protractor';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ConfirmationDialog } from '@app/library';\r\nimport { environment } from '../../../environments/environment';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService implements OnInit {\r\n private _defaultUrls: string;\r\n private storeRoles: any;\r\n private _navListLite: NavigationLite;\r\n private _accessMenus: any;\r\n development = false;\r\n //_navMenuLists = new Observable();\r\n //storeMenu = new Subject();\r\n _navMenuLists: any;\r\n whiteListRoutes = ['/transaction/displayEmailLog', '/transaction/displayEmailQueue'];\r\n\r\n /** Set your Page title */\r\n pageTitle: string;\r\n\r\n private userData: LoginRecords;\r\n private menuListData: AccessMenu;\r\n refreshTokenTimeout = true;\r\n // private jwtHelper: JwtHelper = new JwtHelper();\r\n\r\n /** Know whether the user is logged in */\r\n get isLoggedIn() {\r\n // console.log(\" is logged in check in start auth.service.ts :: \", new Date());\r\n const isValid = !this.jwtHelper.isTokenExpired();\r\n // console.log(\" is logged in check in start auth.service.ts :: isValid token check :: \" + isValid + \" :: \", new Date());\r\n if (isValid) {\r\n this.refreshToken();\r\n }\r\n return isValid;\r\n }\r\n get isTokenExpired() {\r\n return this.jwtHelper.isTokenExpired();\r\n }\r\n /** get the URL so we can redirect after logging in */\r\n redirectUrl: string;\r\n errorMessageDuration = environment.errorDuration;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public router: Router,\r\n private enc: EncryptService,\r\n private jwtHelper: JwtHelperService,\r\n private alert: NguAlertService,\r\n private date: DateHelperService,\r\n //private pop: ConfirmationService,\r\n @Inject(DOCUMENT) document: any\r\n ) { }\r\n\r\n ngOnInit() {\r\n console.log(this.navLite);\r\n this.errorMessageDuration = this.errorMessageDuration ? this.errorMessageDuration : 1000\r\n }\r\n\r\n /** Get Host name */\r\n get hostName() {\r\n const data = document.location.href.split('/');\r\n return data.slice(0, 3).join('/');\r\n }\r\n\r\n getDomainName() {\r\n //\"https://llwr.cyb.co.uk/login\" or \"https://archive.llwr.cyb.co.uk/login\"\r\n //debugger;\r\n let isArchiveFlag = '';\r\n const data = document.location.href.split('/')[2];\r\n isArchiveFlag = data.split('.')[0]; //which is return 'archive' otherwise 'undefined'\r\n\r\n if (isArchiveFlag && isArchiveFlag.includes(archiveRefName.archive)) {\r\n //get all enquiry list\r\n isArchiveFlag = 'llwrarchive';\r\n } else {\r\n isArchiveFlag = 'llwr';\r\n }\r\n //isArchiveFlag = 'llwrarchive';\r\n return isArchiveFlag;\r\n }\r\n\r\n getForumUrl() {\r\n return this.hostName + '/llwrForum/public/auth/' + btoa(this.loginData.AssociatedId);\r\n }\r\n\r\n /** get token from localhost */\r\n get token() {\r\n return sessionStorage.getItem('token');\r\n }\r\n /** get token from localhost */\r\n get accessMenuJson() {\r\n return sessionStorage.getItem('accessMenuJson');\r\n }\r\n\r\n /** get the Navigation list as a lite version with { id: title } */\r\n // get navLite() {\r\n // if (!this._navListLite) {\r\n // const data = new NavigationLite();\r\n // this.navListData.forEach(elem => {\r\n // data[elem.url] = {\r\n // id: elem.id\r\n // };\r\n // elem.child.forEach(childElem => {\r\n // data[childElem.url] = {\r\n // id: childElem.id\r\n // };\r\n // data[childElem.url]['perms'] = {};\r\n // childElem.perms.forEach(element => {\r\n // data[childElem.url].perms[element.name] = element.id;\r\n // });\r\n // });\r\n // });\r\n // this._navListLite = data;\r\n // }\r\n // return this._navListLite;\r\n // }\r\n get navLite() {\r\n if (!this._navListLite) {\r\n const data = new NavigationLite();\r\n let accessMenus: any[] = [];\r\n if (this.AcessMenuList == null || this.AcessMenuList == undefined) {\r\n this.router.navigate[\"/login\"];\r\n }\r\n else {\r\n this.AcessMenuList.newAccessMenu.forEach(elem => {\r\n //console.log(\" elem : \",elem);\r\n data[elem.url] = {\r\n id: elem.id\r\n };\r\n accessMenus[elem.id] = [];\r\n elem.child.forEach(childElem => {\r\n data[childElem.url] = {\r\n id: childElem.id\r\n };\r\n accessMenus[childElem.id] = [];\r\n data[childElem.url]['perms'] = {};\r\n if (childElem.perms) {\r\n childElem.perms.forEach(element => {\r\n data[childElem.url].perms[element.name] = element.id;\r\n if (element.permission) {\r\n accessMenus[childElem.id].push(element.id);\r\n }\r\n });\r\n }\r\n if (accessMenus[childElem.id].length === 0) {\r\n accessMenus[childElem.id] = null;\r\n }\r\n });\r\n /* let a = data;\r\n let am = accessMenus;\r\n console.log(\"data :: \",JSON.stringify(a));\r\n console.log(\" accessMenus : \",JSON.stringify(am)); */\r\n });\r\n this._navListLite = data;\r\n this._accessMenus = accessMenus;\r\n }\r\n }\r\n return { '_navListLite': this._navListLite, '_accessMenus': this._accessMenus };\r\n }\r\n\r\n /** Used to verify the user credentials */\r\n login(body: LoginReq) {\r\n return new Promise(resolve => {\r\n // console.log(body.password);\r\n let bod;\r\n // if (document.location.href.split('/')[2] !== 'llwr.cyb.co.uk') {\r\n const pass = this.enc.encrypt(body.password, true);\r\n const oldpass = this.enc.encryptPwd(body.password);\r\n bod = {\r\n username: body.username,\r\n password: pass,\r\n oldpassword: oldpass,\r\n loginFlag: body.loginFlag\r\n };\r\n this.http.post('authenticate', bod).subscribe(\r\n (res:any) => {\r\n //debugger;\r\n if (res.reset) {\r\n localStorage.setItem(\"resetFlag\", \"true\");\r\n this.loginData = res.token;\r\n this.router.navigate(['/resetpassword']);\r\n }\r\n else {\r\n this.loginData = res.token;\r\n if (res.loggedin){\r\n resolve('loginConfirmation');\r\n //window.location.reload();\r\n }\r\n else {\r\n this.AcessMenuList = res.accessMenuJson;\r\n if (!this.defaultUrl) {\r\n resolve('DefaultPage');\r\n return false;\r\n }\r\n resolve(this.defaultUrl);\r\n }\r\n }\r\n },\r\n (err: HttpErrorResponse) => {\r\n if (err.status === 401) {\r\n resolve(false);\r\n console.log(err);\r\n }\r\n }\r\n );\r\n });\r\n }\r\n\r\n loginConfirmation() {\r\n return this.http.post('forcelogout', null);\r\n }\r\n\r\n logoutApi() {\r\n return this.http.post('logout', null);\r\n }\r\n\r\n resetPassword(body: ResetPasswordReq) {\r\n return new Promise(resolve => {\r\n let data = {\r\n password: this.enc.encrypt(body.newPassword, true),\r\n old_password: this.enc.encryptPwd(body.oldPassword),\r\n old_password1: this.enc.encrypt(body.oldPassword, true),\r\n ref: this.loginData.UserId\r\n };\r\n this.http.post('password/reset', data).subscribe(\r\n (res:any) => {\r\n\r\n var status = res.Status\r\n if (!res[\"data\"].success)\r\n resolve(false);\r\n else\r\n this.router.navigate(['/login']);\r\n },\r\n (err: HttpErrorResponse) => {\r\n if (err.status === 401)\r\n console.log(err);\r\n }\r\n );\r\n });\r\n }\r\n\r\n resetUpdatePassword(body: ResetUpdatePasswordReq) {\r\n //debugger;\r\n return new Promise(resolve => {\r\n let data = {\r\n token: body.token,\r\n };\r\n this.http.post('resetpassword', data).subscribe(\r\n (res:any) => {\r\n //debugger;\r\n var resp = res.Status;\r\n\r\n if (resp == \"Failed\" || resp == undefined) {\r\n resolve(false);\r\n sessionStorage.setItem('message', res.message);\r\n\r\n this.alert.open({\r\n //heading: err['data'].message,\r\n heading: res.message,\r\n // msg: 'System cannot process your request',\r\n msg: res.message,\r\n type: 'danger',\r\n duration: 7000\r\n });\r\n\r\n this.router.navigate(['/login']);\r\n }\r\n else\r\n resolve(true);\r\n sessionStorage.setItem('resetData', JSON.stringify(res))\r\n },\r\n (err: HttpErrorResponse) => {\r\n if (err.status === 401)\r\n console.log(err);\r\n }\r\n );\r\n });\r\n }\r\n\r\n updatepassword(body: UpdatePasswordReq) {\r\n return new Promise(resolve => {\r\n const oldpass = this.enc.encryptPwd(body.password);\r\n let data = {\r\n forgot_token: body.forgot_token,\r\n ref: body.ref,\r\n password: this.enc.encrypt(body.password, true),\r\n passwordenc: this.enc.encryptPwd(body.password),\r\n\r\n };\r\n this.http.post('updatepassword', data).subscribe(\r\n (res:any) => {\r\n var resp = res['data'].Status;\r\n\r\n if (resp == \"Failed\" || resp == undefined) {\r\n console.log( res['data'].message)\r\n sessionStorage.setItem('message', res['data'].error!= undefined||null? res['data'].error[0]:res['data'].message);\r\n resolve(false);\r\n } else {\r\n resolve(true);\r\n this.alert.open({\r\n heading: 'Password updated successfully',\r\n msg: `Your assword has been updated successfully`,\r\n type: 'success',\r\n duration: 5000\r\n });\r\n }\r\n },\r\n (err: HttpErrorResponse) => {\r\n if (err.status === 401)\r\n console.log(err);\r\n if (err.status === 400) {\r\n resolve(false);\r\n sessionStorage.setItem('message', err.error.data.error[0]);\r\n }\r\n }\r\n );\r\n });\r\n }\r\n\r\n forgotPassowrd(body: ForgotPasswordReq) {\r\n //debugger;\r\n return new Promise(resolve => {\r\n let data = {\r\n username: body.email\r\n };\r\n this.http.post('forgotpassword', data).subscribe(\r\n (res:any) => {\r\n if (res.Status == 'Failed') {\r\n sessionStorage.setItem('message', res.message);\r\n resolve(false);\r\n }\r\n else\r\n resolve(true);\r\n sessionStorage.setItem('message', res.message);\r\n },\r\n (err: HttpErrorResponse) => {\r\n if (err.status === 401) {\r\n console.log(err);\r\n }\r\n if (err.status === 400) {\r\n this.alert.open({\r\n heading: 'Sorry, Password update Failure',\r\n msg: 'System cannot process your request',\r\n type: 'danger',\r\n duration: 5000\r\n });\r\n }\r\n\r\n }\r\n );\r\n });\r\n }\r\n\r\n getUser() {\r\n return this.http.post('profile', { userid: this.loginData.UserId }).pipe(map((res:any) => res[\"data\"][\"records\"]));\r\n }\r\n\r\n recaptchaApi(data: any) {\r\n return this.http.post('verifyrecaptcha', data).pipe(map((res:any) => res[\"data\"]));\r\n }\r\n\r\n /** get the default URL based on role */\r\n get defaultUrl(): string {\r\n if (this._defaultUrls) {\r\n return this._defaultUrls;\r\n }\r\n if (!this.loginData?.DefaultPage) {\r\n return this._defaultUrls = null;\r\n }\r\n //this.navListData.forEach(a => {\r\n let isDefaultPage = false;\r\n this.AcessMenuList.newAccessMenu.forEach(a => {\r\n a.child.forEach(b => {\r\n if (b.id == this.loginData?.DefaultPage) {\r\n isDefaultPage = true;\r\n this._defaultUrls = `/${a.url}/${b.url}`;\r\n }\r\n });\r\n });\r\n if (!isDefaultPage)\r\n this._defaultUrls = null;\r\n\r\n return this._defaultUrls;\r\n }\r\n\r\n /** get the stored login data */\r\n set loginData(data: LoginRecords) {\r\n const dat: any = data;\r\n sessionStorage.setItem('token', dat);\r\n }\r\n\r\n /** Get logged in user details */\r\n get loginData() {\r\n this.userData = this.jwtHelper.decodeToken() as LoginRecords;\r\n return this.userData;\r\n }\r\n\r\n set AcessMenuList(data: AccessMenu) {\r\n const menu: any = data;\r\n sessionStorage.setItem('accessMenuJson', menu);\r\n }\r\n get AcessMenuList() {\r\n this.menuListData = this.jwtHelper.decodeToken(this.accessMenuJson) as AccessMenu;\r\n return this.menuListData;\r\n }\r\n\r\n get getBrowser() {\r\n const ua = navigator.userAgent;\r\n let tem;\r\n let M =\r\n ua.match(\r\n /(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\r\n ) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return 'IE ' + (tem[1] || '');\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n if (tem != null)\r\n return tem\r\n .slice(1)\r\n .join(' ')\r\n .replace('OPR', 'Opera');\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) M.splice(1, 1, tem[1]);\r\n return M.join(' ');\r\n }\r\n\r\n /** Logout the user and redirect to login */\r\n logout(): void {\r\n this.userData = null;\r\n this.menuListData = null;\r\n this._defaultUrls = null;\r\n this._navListLite = null;\r\n this._navMenuLists = null;\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n /** Check Role permission based on the AccessMenus */\r\n checkRolePermission(permission: string, url?: string): boolean {\r\n const navLite: any = this.navLite._navListLite;\r\n const navAccessMenus: any = this.navLite._accessMenus;\r\n\r\n const urlArray = !permission ? url.split('/') : this.router.url.split('/');\r\n urlArray.splice(0, 1);\r\n // const roles: any = this.loginData.AccessMenus || {};\r\n const roles: any = navAccessMenus || {};\r\n\r\n if (this.whiteListRoutes.includes(url)) return true;\r\n\r\n if ('accessDenied' === urlArray[0]) {\r\n console.log(urlArray[0])\r\n return true;\r\n }\r\n\r\n const firstID = navLite ? navLite[urlArray[0]].id : [];\r\n\r\n if (!roles[firstID]) {\r\n !permission && this.router.navigate(['/accessDenied']);\r\n return false;\r\n }\r\n if (urlArray.length > 1) {\r\n const secondID = navLite[urlArray[1]] ? navLite[urlArray[1]].id : '';\r\n const perms = navLite[urlArray[1]] ? navLite[urlArray[1]].perms : '';\r\n\r\n if (urlArray.length > 2 || permission) {\r\n const permString = permission || 'view';\r\n const permID = perms[permString];\r\n if (roles[secondID].includes(permID)) {\r\n return true;\r\n } else {\r\n !permission && this.router.navigate(['/accessDenied']);\r\n return false;\r\n }\r\n }\r\n if (roles[secondID]) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n // Navigate to the accessDenied page\r\n this.router.navigate(['/accessDenied']);\r\n return false;\r\n\r\n\r\n }\r\n\r\n // checkRolePermission(permission: string, url?: string): boolean {\r\n // const newList = this.navLites();\r\n // const navLite = this.navLite;\r\n // const urlArray = !permission ? url.split('/') : this.router.url.split('/');\r\n // urlArray.splice(0, 1);\r\n // const roles: any = this.loginData.AccessMenus || {};\r\n\r\n // if ('accessDenied' === urlArray[0]) {\r\n // return true;\r\n // }\r\n\r\n // const firstID = navLite[urlArray[0]].id;\r\n\r\n // if (!roles[firstID]) {\r\n // !permission && this.router.navigate(['/accessDenied']);\r\n // return false;\r\n // }\r\n // if (urlArray.length > 1) {\r\n // debugger;\r\n // const secondID = navLite[urlArray[1]] ? navLite[urlArray[1]].id : '';\r\n // const perms = navLite[urlArray[1]] ? navLite[urlArray[1]].perms : '';\r\n\r\n // if (urlArray.length > 2 || permission) {\r\n // const permString = permission || 'view';\r\n // const permID = perms[permString];\r\n // if (roles[secondID].includes(permID)) {\r\n // return true;\r\n // } else {\r\n // !permission && this.router.navigate(['/accessDenied']);\r\n // return false;\r\n // }\r\n // }\r\n // if (roles[secondID]) {\r\n // return true;\r\n // }\r\n // } else {\r\n // return true;\r\n // }\r\n // // Navigate to the accessDenied page\r\n // this.router.navigate(['/accessDenied']);\r\n // return false;\r\n // }\r\n submitError = false;\r\n //previousPageURL = '';\r\n handleUnauthorized(error: HttpErrorResponse, pop?) {\r\n /* console.log(\"error==\");\r\n console.log(error); */\r\n const obj: ConfirmationDialog = {\r\n heading: 'Oops!',\r\n body: 'Unfortunately we encountered an error, if you wish to send the error details for us to investigate, please press \"Ok\" else \"Cancel\"',\r\n yesButton: 'Ok',\r\n noButton: 'Cancel'\r\n };\r\n // this.confirmationService.confirm(obj).then(isConfirmed => {\r\n // if (!isConfirmed) {\r\n // console.log(\"test\");\r\n // }}); \r\n console.log(JSON.stringify(error));\r\n\r\n if (error.status === 401) {\r\n /*if(this.router.url==='/archive'){\r\n this.router.navigate(['/archive']);\r\n return;\r\n }\r\n else */\r\n if (this.router.url !== '/login') {\r\n this.alert.open({\r\n heading: 'Login Token Expired',\r\n msg: `Login token expired. Please login again`,\r\n type: 'danger',\r\n duration: this.errorMessageDuration\r\n });\r\n this.router.navigate(['/login']);\r\n } else {\r\n if (error.error && error.error.error && error.error.error === 'invalid_credentials') {\r\n this.alert.open({\r\n heading: 'Sorry, Login Attempt Failure',\r\n msg: `Invalid username or password`,\r\n type: 'danger',\r\n duration: 10000\r\n });\r\n }\r\n\r\n }\r\n\r\n } else {\r\n if (!(error.url && error.url.split(\"/\").includes('exceptionlog'))) {\r\n //if(this.previousPageURL && this.previousPageURL !== this.router.url) {}\r\n pop.confirm(obj).then(isConfirmed => {\r\n this.http.post('exceptionlog', JSON.stringify(error)).subscribe(\r\n res => {\r\n console.log('res');\r\n console.log(res);\r\n },\r\n (err: HttpErrorResponse) => {\r\n if (err.status === 401) {\r\n console.log(err);\r\n }\r\n }\r\n );\r\n this.submitError = isConfirmed;\r\n if (isConfirmed) {\r\n console.log(\" Submit the error to server. User Ok \");\r\n } else {\r\n console.log(\" Submit the error to server not required. User Cancel \")\r\n }\r\n });\r\n\r\n } else {\r\n if (this.submitError) {\r\n this.alert.open({\r\n heading: 'Error',\r\n msg: `Please contact administrator.`,\r\n type: 'danger',\r\n duration: this.errorMessageDuration\r\n });\r\n }\r\n }\r\n // if (this.development === true) {\r\n // const msg = error.error.message && error.error.message.split('(SQL')[0];\r\n // this.alert.open({\r\n // heading: 'Http Error Occured',\r\n // msg: `status Code: ${error.status}\r\n // \t\t message: ${msg}`,\r\n // type: 'danger',\r\n // duration: 10000\r\n // });\r\n // }\r\n }\r\n\r\n // if (error.status !== 400) {\r\n // const msg = error.error.message && error.error.message.split('(SQL')[0];\r\n // this.alert.open({\r\n // heading: 'Http Error Occurs',\r\n // msg: `status Code: ${error.status}\r\n // message: ${msg}`,\r\n // type: 'danger',\r\n // duration: 10000\r\n // });\r\n // }\r\n }\r\n\r\n refreshToken() {\r\n // console.log(\" refresh token in check inside start auth.service.ts :: \", new Date());\r\n if (this.refreshTokenTimeout) {\r\n // console.log(\" refresh token in check inside start auth.service.ts :: inside if :: \" + this.refreshTokenTimeout + \" :: \", new Date());\r\n const tokenDate = this.jwtHelper.getTokenExpirationDate();\r\n const remainingSecounds = this.date.timeDifference(tokenDate);\r\n // console.log(\"remainingSecounds for token expiry :: \", remainingSecounds);\r\n if (remainingSecounds < 300) {\r\n // console.log(\" refresh token in check inside start auth.service.ts :: inside if lessthan 300s :: \" + remainingSecounds + \" :: \", new Date());\r\n this.refreshTokenTimeout = false;\r\n this.http.post('refreshtoken', null).subscribe((res:any) => {\r\n this.loginData = res.token;\r\n this.refreshTokenTimeout = true;\r\n });\r\n }\r\n }\r\n }\r\n\r\n get navListData(): NavList[] {\r\n const associatedId = btoa(this.loginData.AssociatedId);\r\n\r\n return [\r\n {\r\n title: 'Master',\r\n url: 'master',\r\n id: 1,\r\n child: [\r\n {\r\n title: 'Customer',\r\n id: 3,\r\n url: 'customer',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Equipment',\r\n id: 16,\r\n url: 'equipment',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Equipment Type',\r\n id: 7,\r\n url: 'equipmentType',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Haulier',\r\n id: 5,\r\n url: 'haulier',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Licence Master',\r\n id: 62,\r\n url: 'licenceMaster',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Load Content',\r\n id: 32,\r\n url: 'loadContent',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Location',\r\n id: 6,\r\n url: 'location',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Manufacturer',\r\n id: 4,\r\n url: 'manufacturer',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Package Rate',\r\n id: 18,\r\n url: 'packageRate',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 1002]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Quotation Authorisation Limit',\r\n id: 69,\r\n url: 'quotationAuthorisationLimit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Transport Equipments',\r\n id: 124,\r\n url: 'transportEquipments',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'User',\r\n id: 11,\r\n url: 'user',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'User Role',\r\n id: 12,\r\n url: 'userRole',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Waste Loading Plan',\r\n id: 57,\r\n url: 'wasteLoadingPlan',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.TypeBCustomer,\r\n UserRoles.Hauiler,\r\n UserRoles.Customer\r\n ],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.TypeBCustomer,\r\n UserRoles.Customer,\r\n UserRoles.Hauiler\r\n ]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.TypeBCustomer,\r\n UserRoles.Customer\r\n ]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.TypeBCustomer\r\n // UserRoles.Customer\r\n ]\r\n },\r\n {\r\n id: 4,\r\n name: 'afterInitial',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Email Logs',\r\n id: 3007,\r\n url: 'emailLogs',\r\n onlyToFreeze: true,\r\n freeze: [UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n onlyToFreeze: true,\r\n freeze: [UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Templates Master',\r\n id: 3002,\r\n url: 'templatesMaster',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }\r\n // ,\r\n // {\r\n // title: 'Archived List',\r\n // id: 3005,\r\n // url: 'archivedList',\r\n // freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n // perms: [\r\n // {\r\n // id: 1,\r\n // name: 'view',\r\n // freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n // },\r\n // {\r\n // id: 2,\r\n // name: 'add&Edit',\r\n // freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n // },\r\n // {\r\n // id: 3,\r\n // name: 'delete',\r\n // freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n // }\r\n // ]\r\n // }\r\n ]\r\n },\r\n {\r\n title: 'Calendar',\r\n url: 'calendar',\r\n id: 76,\r\n child: [\r\n // {\r\n // title: 'Inspection Calendar',\r\n // id: 73,\r\n // url: 'inspectionCalendar',\r\n // perms: [{ add: 1, edit: 2, delete: 3 }]\r\n // },\r\n // {\r\n // title: 'Maintenance Calendar',\r\n // id: 15,\r\n // url: 'maintenanceCalendar',\r\n // perms: [{ add: 1, edit: 2, delete: 3 }]\r\n // },\r\n {\r\n title: 'Transport Calendar',\r\n id: 42,\r\n url: 'transportCalendar',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 3],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 4,\r\n name: 'transMoves',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 3]\r\n },\r\n {\r\n id: 5,\r\n name: 'siteMoves',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Transaction',\r\n url: 'transaction',\r\n id: 2,\r\n child: [\r\n {\r\n title: 'Enquiry',\r\n id: 28,\r\n url: 'enquiry',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ]\r\n },\r\n {\r\n id: 4,\r\n name: 'typeBPackagingSpares',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.TypeBCustomer\r\n ]\r\n },\r\n {\r\n id: 5,\r\n name: 'afterInitialEditable',\r\n freeze: [UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 6,\r\n name: 'afterAcknowledgedEditable',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Logistics Service Quotation',\r\n id: 37,\r\n url: 'lsq',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Logistics Service Quotation - Acceptance',\r\n id: 38,\r\n url: 'lsqAcceptance',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Quotations Accepted',\r\n id: 39,\r\n url: 'quotationsAccepted',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, UserRoles.Customer],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Quotations Rejected',\r\n id: 40,\r\n url: 'quotationsRejected',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, 4],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Quotation Status',\r\n id: 36,\r\n url: 'quotationStatus',\r\n freeze: [3],\r\n perms: [\r\n { id: 1, name: 'view', freeze: [3] },\r\n { id: 2, name: 'add&Edit', freeze: [3] },\r\n { id: 3, name: 'delete', freeze: [3] }\r\n ]\r\n },\r\n {\r\n title: 'RFQ WhiteBoard',\r\n id: 22,\r\n url: 'rfq',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Enquiry Reverse Status',\r\n id: 3006,\r\n url: 'reverseStatus',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true,\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Haulier RFQ Whiteboard',\r\n id: 29,\r\n url: 'hrfq',\r\n freeze: [UserRoles.Hauiler],\r\n perms: [\r\n { id: 1, name: 'view', freeze: [UserRoles.Hauiler] },\r\n { id: 2, name: 'add&Edit', freeze: [UserRoles.Hauiler] },\r\n { id: 3, name: 'delete', freeze: [] }\r\n ]\r\n },\r\n {\r\n title: 'Service Order Form',\r\n id: 72,\r\n url: 'serviceOrderForm',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Hauiler,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Hauiler,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Hauiler,\r\n UserRoles.Customer,\r\n UserRoles.TypeBCustomer\r\n ]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Audit Log',\r\n id: 3008,\r\n url: 'log',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true,\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.SuperAdmin],\r\n onlyToFreeze: true\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Inventory',\r\n url: 'inventory',\r\n id: 10,\r\n child: [\r\n {\r\n title: 'Equipment Order',\r\n id: 49,\r\n url: 'equipmentOrder',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Equipment Status Update',\r\n id: 50,\r\n url: 'equipmentStatusUpdate',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Forecast',\r\n id: 44,\r\n url: 'forecast',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Transport',\r\n url: 'transport',\r\n id: 77,\r\n child: [\r\n // {\r\n // title: 'Debrief WB',\r\n // id: 41,\r\n // url: 'debriefWB',\r\n // freeze: [UserRoles.Admin, UserRoles.SuperAdmin, UserRoles.Hauiler],\r\n // perms: [\r\n // {\r\n // id: 1,\r\n // name: 'view',\r\n // freeze: [\r\n // UserRoles.Admin,\r\n // UserRoles.SuperAdmin,\r\n // UserRoles.Hauiler\r\n // ]\r\n // },\r\n // {\r\n // id: 2,\r\n // name: 'add&Edit',\r\n // freeze: [\r\n // UserRoles.Admin,\r\n // UserRoles.SuperAdmin,\r\n // UserRoles.Hauiler\r\n // ]\r\n // },\r\n // {\r\n // id: 3,\r\n // name: 'delete',\r\n // freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n // }\r\n // ]\r\n // },\r\n {\r\n title: 'Performance Pack YTD KPI(s)',\r\n id: 82,\r\n url: 'performancePackYtd',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Transport Jobs',\r\n id: 68,\r\n url: 'transportJobs',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin, UserRoles.Hauiler],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Hauiler\r\n ]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [\r\n UserRoles.Admin,\r\n UserRoles.SuperAdmin,\r\n UserRoles.Hauiler\r\n ]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Packaging',\r\n url: 'packaging',\r\n id: 78,\r\n child: [\r\n {\r\n title: '3 x Reuse',\r\n id: 63,\r\n url: '3xReuse',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'ACEP Process',\r\n id: 65,\r\n url: 'acepProcess',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Block Container',\r\n id: 125,\r\n url: 'blockContainer',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Device Tracker Mapping',\r\n id: 51,\r\n url: 'deviceTrackerMapping',\r\n freeze: [],\r\n active: false,\r\n perms: [\r\n { id: 1, name: 'view', freeze: [] },\r\n { id: 2, name: 'add&Edit', freeze: [] },\r\n { id: 3, name: 'delete', freeze: [] }\r\n ]\r\n },\r\n {\r\n title: 'Equipment Release Request',\r\n id: 79,\r\n url: 'equipmentReleaseRequest',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Equipment Tracking',\r\n id: 52,\r\n url: 'equipmentTracking',\r\n freeze: [],\r\n active: false,\r\n perms: [\r\n { id: 1, name: 'view', freeze: [] },\r\n { id: 2, name: 'add&Edit', freeze: [] },\r\n { id: 3, name: 'delete', freeze: [] }\r\n ]\r\n },\r\n /* {\r\n title: 'Inspection Request',\r\n id: 71,\r\n url: 'inspectionRequest',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }, */\r\n {\r\n title: 'Maintenance Update',\r\n id: 66,\r\n url: 'maintenanceUpdate',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Packaging Dashboard',\r\n id: 86,\r\n url: 'packagingDashboard',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Packaging RFQ WhiteBoard',\r\n id: 67,\r\n url: 'prfq',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Release rental containers',\r\n id: 129,\r\n url: 'releaseRentalContainers',\r\n freeze: [],\r\n active: false,\r\n perms: [\r\n { id: 1, name: 'view', freeze: [] },\r\n { id: 2, name: 'add&Edit', freeze: [] },\r\n { id: 3, name: 'delete', freeze: [] }\r\n ]\r\n },\r\n {\r\n title: 'Equipment Release Update',\r\n id: 80,\r\n url: 'equipmentReleaseUpdate',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Manufacture Update',\r\n id: 74,\r\n url: 'manufactureUpdate',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Packaging Reports',\r\n url: 'packagingReport',\r\n id: 113,\r\n child: [\r\n {\r\n title: '3 x Re-use Containers',\r\n id: 105,\r\n url: 'reuseContainers',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Acep Containers',\r\n id: 104,\r\n url: 'acepContainers',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Acep Report',\r\n id: 122,\r\n url: 'acepReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Container Licence Expiry',\r\n id: 88,\r\n url: 'containerLicenceExpiry',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'CSC Expiry Report',\r\n id: 93,\r\n url: 'cscExpiry',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n // {\r\n // title: 'Equipment Release Request',\r\n // id: 79,\r\n // url: 'equipmentReleaseRequest',\r\n // perms: [{ add: 1, edit: 2, delete: 3 }]\r\n // },\r\n {\r\n title: 'Customer Acep Summary',\r\n id: 106,\r\n url: 'customerAcepSummary',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Customer Enquiry Report',\r\n id: 107,\r\n url: 'customerEnquiryReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Customers and Containers',\r\n id: 87,\r\n url: 'customerContainer',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Equipment and Equipment Order',\r\n id: 120,\r\n url: 'equipmentAndEquipmentOrder',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Equipment Usage Details',\r\n id: 119,\r\n url: 'equipmentUsageDetails',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Finance Report',\r\n id: 83,\r\n url: 'financeReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Inspection Time',\r\n id: 108,\r\n url: 'inspectionTime',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'List of Containers',\r\n id: 92,\r\n url: 'listOfContainers',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Travel Time',\r\n id: 109,\r\n url: 'travelTime',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'WLP Elapsed',\r\n id: 99,\r\n url: 'wlpElapsed',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'WLP Expiry Report',\r\n id: 102,\r\n url: 'wlpExpiryReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'WLP Live',\r\n id: 90,\r\n url: 'wlpLive',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'WLP Rejected',\r\n id: 96,\r\n url: 'wlpRejected',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'WLP Withdrawn',\r\n id: 101,\r\n url: 'wlpWithdrawn',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Transport Reports',\r\n url: 'transportReport',\r\n id: 84,\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n child: [\r\n {\r\n title: 'Enquiry Turnaround Time',\r\n id: 126,\r\n url: 'enquiryTurnaroundTime',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Haulier RFQ Report',\r\n id: 127,\r\n url: 'haulierRfqReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Incomplete Enquiry Report',\r\n id: 128,\r\n url: 'incompleteEnquiryReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n /*\r\n {\r\n title: 'Mileage Report',\r\n id: 112,\r\n url: 'mileageReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Site Performance Report',\r\n id: 110,\r\n url: 'sitePerformanceReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Transport Performance Report',\r\n id: 111,\r\n url: 'transportPerformanceReport',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Weekly Debrief KPI',\r\n id: 114,\r\n url: 'weeklyDebrief',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n */\r\n {\r\n title: 'Forum',\r\n id: 3004,\r\n url: `${this.hostName}/llwrForum/public/auth/${associatedId}`,\r\n externalUrl: true,\r\n isNewPage: true,\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Manufacturer Reports',\r\n url: 'manufacturerReport',\r\n id: 115,\r\n child: [\r\n {\r\n title: 'Container Ageing',\r\n id: 116,\r\n url: 'containerAgeing',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n },\r\n {\r\n title: 'Manufactured Containers with 0191',\r\n id: 117,\r\n url: 'manufacturedContainers',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin],\r\n perms: [\r\n {\r\n id: 1,\r\n name: 'view',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 2,\r\n name: 'add&Edit',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n },\r\n {\r\n id: 3,\r\n name: 'delete',\r\n freeze: [UserRoles.Admin, UserRoles.SuperAdmin]\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n\r\n}\r\n", "import { Injectable } from '@angular/core';\r\nimport { environment } from '@env/environment.prod';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EncryptService {\r\n private key = CryptoJS.enc.Base64.parse(environment.encryptKey);\r\n private iv = CryptoJS.enc.Base64.parse('#base64IV#');\r\n\r\n constructor() { }\r\n\r\n encrypt(req: string, password?: boolean) {\r\n // Encrypt the Password\r\n // Man in the Middle Secure v1\r\n\r\n // const encrypteds = CryptoJS.AES.encrypt(str, key, {\r\n // iv: iv\r\n // });\r\n\r\n // Save the Login in to an array\r\n // const secureUsercreds = {\r\n // username: usercreds.username,\r\n // password: encrypteds.toString()\r\n // };\r\n\r\n // const creds = `name=${secureUsercreds.username}&password=${\r\n // secureUsercreds.password\r\n // }`;\r\n if (!req) return req;\r\n\r\n let encrypted;\r\n\r\n req = req.toString();\r\n if (password) {\r\n encrypted = CryptoJS.AES.encrypt(req, this.key, {\r\n iv: this.iv\r\n });\r\n } else {\r\n encrypted = CryptoJS.AES.encrypt(req, environment.encryptKey);\r\n }\r\n\r\n let encryptedmessage = encrypted.toString();\r\n if (!password) {\r\n encryptedmessage = encryptedmessage\r\n .replace(/\\+/g, 'aFaFa')\r\n .replace(/\\//g, 'bFbFb')\r\n .replace(/=+$/, 'cFcFc');\r\n }\r\n return encryptedmessage;\r\n }\r\n\r\n /** Decrypt Request and return the decode value */\r\n decrypt(req: string, password?: boolean) {\r\n if (!req) return req;\r\n\r\n if (!password) {\r\n req = req\r\n .replace(/aFaFa/g, '+')\r\n .replace(/bFbFb/g, '/')\r\n .replace(/cFcFc/g, '=');\r\n }\r\n const a = req.toString().replace(' ', '+');\r\n const b = a.replace(' ', '+');\r\n // Decrypt Message\r\n // const key = CryptoJS.enc.Base64.parse(environment.encryptKey);\r\n // const iv = CryptoJS.enc.Base64.parse('#base64IV#');\r\n\r\n let decrypted;\r\n\r\n if (password) {\r\n decrypted = CryptoJS.AES.decrypt(b, this.key, {\r\n iv: this.iv\r\n });\r\n } else {\r\n decrypted = CryptoJS.AES.decrypt(b, environment.encryptKey);\r\n }\r\n const c = decrypted.toString(CryptoJS.enc.Utf8);\r\n\r\n // // Convert to Object\r\n // const d = '{\"' + c.replace('=\"', ':') + '\"}';\r\n // const e = d.replace('&', '\",\"');\r\n\r\n // // Replace Prams to OBJ\r\n // const f = e.replace('password=', 'password\":\"');\r\n // const g = f.replace('name=', 'name\":\"');\r\n // const h = g.toString();\r\n // let OBJ = '';\r\n // try {\r\n // OBJ = JSON.parse(h);\r\n // } catch (err) {\r\n // this.decrypt(req);\r\n // }\r\n\r\n // Return\r\n return c;\r\n }\r\n\r\n encryptPwd(data: string) {\r\n if (!data) return data;\r\n const iv = CryptoJS.enc.Base64.parse('');\r\n const encrypted = CryptoJS.AES.encrypt(data, this.key, { iv: iv });\r\n return encrypted.toString();\r\n }\r\n\r\n decryptPwd(data: string) {\r\n if (!data) return data;\r\n const decrypted = CryptoJS.AES.decrypt(data, this.key, {\r\n iv: CryptoJS.enc.Base64.parse('')\r\n });\r\n let value = \"\";\r\n try {\r\n value = decrypted.toString(CryptoJS.enc.Utf8);\r\n }\r\n catch (Exception) {\r\n console.warn(\"Decrypt\", Exception);\r\n }\r\n return value;\r\n }\r\n}", "import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormDataService {\r\n constructor() {}\r\n\r\n convert(data: object, obj?: any[]) {\r\n const dat = data;\r\n const formdata = new FormData();\r\n // eslint-disable-next-line guard-for-in\r\n for (const i in data) {\r\n obj.forEach(el => {\r\n formdata.append(i, data[i]);\r\n });\r\n }\r\n return formdata;\r\n }\r\n\r\n convertToFormdata(data, files?: any[]) {\r\n const formData = new FormData();\r\n const fullData = data;\r\n if (files && files[0]) {\r\n files.forEach(key => {\r\n const keyBU = key;\r\n key = key.replace(/~/, '');\r\n const dats = fullData[key];\r\n // console.log(key, keyBU);\r\n key = keyBU === key ? key : key + '[]';\r\n console.log(key);\r\n if (dats && typeof dats === 'object') {\r\n // eslint-disable-next-line guard-for-in\r\n for (const fil of dats) {\r\n formData.append(key, fil, fil.name);\r\n }\r\n delete fullData[key];\r\n }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line guard-for-in\r\n for (const key in fullData) {\r\n // console.log(fullData[key]);\r\n formData.append(key, fullData[key]);\r\n }\r\n return formData;\r\n }\r\n}\r\n", "import {\r\n Injectable,\r\n Injector,\r\n ComponentFactoryResolver,\r\n EmbeddedViewRef,\r\n ApplicationRef\r\n} from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DomService {\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector: Injector\r\n ) {}\r\n\r\n appendComponentToBody(component: any) {\r\n // 1. Create a component reference from the component\r\n const componentRef = this.componentFactoryResolver\r\n .resolveComponentFactory(component)\r\n .create(this.injector);\r\n\r\n // 2. Attach component to the appRef so that it's inside the ng component tree\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n // 3. Get DOM element from component\r\n const domElem = (componentRef.hostView as EmbeddedViewRef)\r\n .rootNodes[0] as HTMLElement;\r\n\r\n // 4. Append DOM element to the body\r\n document.body.appendChild(domElem);\r\n\r\n // 5. Wait some time and remove it from the component tree and from the DOM\r\n // setTimeout(() => {\r\n // this.appRef.detachView(componentRef.hostView);\r\n // componentRef.destroy();\r\n // }, 3000);\r\n }\r\n}\r\n", "import { Injectable } from '@angular/core';\r\nimport {\r\n CanActivate,\r\n Router,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n CanActivateChild,\r\n NavigationExtras,\r\n CanLoad,\r\n Route\r\n} from '@angular/router';\r\nimport { AuthService } from '../auth';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RoleGuard implements CanActivate, CanActivateChild {\r\n constructor(private auth: AuthService, private router: Router) {}\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean {\r\n const url: string = state.url;\r\n\r\n return this.auth.checkRolePermission('', url);\r\n }\r\n\r\n canActivateChild(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean {\r\n return this.canActivate(route, state);\r\n }\r\n}\r\n", "import { Injectable } from '@angular/core';\r\nimport {\r\n CanActivate,\r\n Router,\r\n ActivatedRouteSnapshot,\r\n RouterStateSnapshot,\r\n CanActivateChild,\r\n NavigationExtras,\r\n CanLoad,\r\n Route\r\n} from '@angular/router';\r\nimport { AuthService } from '../auth/auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate, CanActivateChild, CanLoad {\r\n constructor(private authService: AuthService, private router: Router) {}\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean {\r\n const url: string = state.url;\r\n return this.checkLogin(url);\r\n }\r\n\r\n canActivateChild(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean {\r\n // if (localStorage.getItem(\"resetFlag\") == \"true\") {\r\n // this.router.navigate([\"/login\"]);\r\n // }\r\n return this.canActivate(route, state);\r\n }\r\n\r\n canLoad(route: Route): boolean {\r\n const url = `/${route.path}`;\r\n\r\n return this.checkLogin(url);\r\n }\r\n\r\n checkLogin(url: string): boolean {\r\n // console.log(\" auth guard :url: \",url);\r\n if (this.authService.isLoggedIn) {\r\n return true;\r\n }\r\n\r\n // Store the attempted URL for redirecting\r\n this.authService.redirectUrl = url;\r\n\r\n // Create a dummy session id\r\n const sessionId = 123456789;\r\n\r\n // Set our navigation extras object\r\n // that contains our global query params and fragment\r\n const navigationExtras: NavigationExtras = {\r\n queryParams: { session_id: sessionId },\r\n fragment: 'anchor'\r\n };\r\n\r\n // Navigate to the login page with extras\r\n this.router.navigate(['/login'], navigationExtras);\r\n return false;\r\n }\r\n}\r\n", "import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n CanActivate,\r\n Router,\r\n RouterStateSnapshot\r\n} from '@angular/router';\r\nimport { AuthService } from './../auth';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DefaultRouteGuard implements CanActivate {\r\n constructor(private router: Router, private _auth: AuthService) {}\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean {\r\n const user = { defaultPage: this._auth.defaultUrl?this._auth.defaultUrl:'' };\r\n console.log(\"user.defaultPage\"+user.defaultPage+\" :: router url :: \",route.url);\r\n // return true;\r\n\r\n if (user.defaultPage) {\r\n this.router.navigate([user.defaultPage]);\r\n } else {\r\n return true;\r\n }\r\n }\r\n}\r\n", "import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport {\n HintModule,\n NguAccordionModule,\n NguDataTableModule,\n NguFormsModule,\n TabsModule,\n NguDatePickerModule\n} from '../extras';\nimport { NguModalModule } from '../extras/ngu-modal';;\nimport { MyDatePickerModule } from 'mydatepicker';\nimport { commonsComponents } from '../commons';\nimport { RolePermissionDirective } from './auth';\nimport { AuthGuard, DefaultRouteGuard, RoleGuard } from './guards';\nimport { FileValueDirective, NguFileDirective } from './ngu-file';\nimport { MySharedPipes } from './pipes';\nimport { ngValidations } from './validations';\nimport { BlockCopyPasteDirective } from './validations/blockcopypaste.directive';\nimport { TableModule } from 'primeng/table';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { FoucsModelDirective } from './validations/foucs-model.directive';\nimport { PreventKeysDirective } from './validations/prevent-keys.directive';\nimport { TwoDigitDecimalNumberDirective } from './validations/two-digit-decimal-number.directive';\n\n\n@NgModule({\n imports: [CommonModule],\n exports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n NguDataTableModule,\n commonsComponents,\n ngValidations,\n FileValueDirective,\n NguFileDirective,\n NguModalModule,\n MyDatePickerModule,\n TabsModule,\n NguAccordionModule,\n MySharedPipes,\n RolePermissionDirective,\n HintModule,\n NguFormsModule,\n NguDatePickerModule,\n BlockCopyPasteDirective,\n TableModule,\n PaginatorModule\n ],\n declarations: [\n commonsComponents,\n ngValidations,\n FileValueDirective,\n NguFileDirective,\n MySharedPipes,\n RolePermissionDirective,\n BlockCopyPasteDirective,\n FoucsModelDirective,\n PreventKeysDirective,\n TwoDigitDecimalNumberDirective, \n ]\n})\nexport class SharedModule { }\n", "import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport class CustomValidation {\r\n static QtyLimit(max: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if ([undefined, null, ''].includes(control.value)) {\r\n return null;\r\n }\r\n if (+control.value > max) { \r\n return { qtyLimit: true };\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n static arrayMin(min: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (!Array.isArray(control.value)) {\r\n return null; // don't validate other than array\r\n }\r\n return control.value.length >= min ? null : { arrayMin: true };\r\n };\r\n }\r\n\r\n static decimal(pattern: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const patternSplit = pattern.split(':');\r\n let beforeNum;\r\n if (patternSplit[0]) {\r\n beforeNum = `^(?!\\\\.?$)[\\\\d ()+-]{0,${patternSplit[0]}}(\\\\.\\\\d{0,${\r\n patternSplit[1]\r\n }})?$`;\r\n } else {\r\n beforeNum = `^(?!\\\\.?$)[\\\\d ()+-]+(\\\\.\\\\d{0,${patternSplit[1]}})?$`;\r\n }\r\n beforeNum = new RegExp(beforeNum);\r\n return !control.value\r\n ? null\r\n : beforeNum.test(control.value)\r\n ? null\r\n : { decimal: `Only requires ${patternSplit[1]} digits after decimal` };\r\n };\r\n }\r\n}", "import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelperService } from '../services';\r\n\r\n@Pipe({\r\n name: 'ddMMYYYY'\r\n})\r\nexport class DdMMYYYYPipe implements PipeTransform {\r\n constructor(private date: DateHelperService) {}\r\n transform(value: any, ...args: any[]): any {\r\n if (value) {\r\n if (Array.isArray(value)) {\r\n return value.map(e => this.date.convertDate(e, args[0]));\r\n }\r\n return this.date.convertDate(value, args[0]);\r\n }\r\n return value;\r\n }\r\n}\r\n", "import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { Moment } from 'moment';\r\nimport { IMyDate, IMyDateModel, IMyDpOptions } from 'mydatepicker';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DateHelperService {\r\n dateFormat = 'dd/mm/yyyy';\r\n dateFormats = {\r\n 0: 'DD/MM/YYYY',\r\n 1: 'DD/MM/YYYY HH:mm:ss',\r\n 2: 'YYYY/MM/DD',\r\n 3: 'MMM YY',\r\n 4: 'DD-MM-YYYY'\r\n };\r\n constructor() { }\r\n\r\n convertDate(date: string, format?: number) {\r\n const dateFormat = this.dateFormats[format || 0] || '';\r\n return moment(date).format(dateFormat);\r\n }\r\n\r\n currentDateForDP(date?: any): IMyDate {\r\n let dates: Moment;\r\n if (date) {\r\n dates = moment(date);\r\n dates.subtract(1, 'days');\r\n } else {\r\n dates = moment();\r\n dates.subtract(1, 'days');\r\n }\r\n // console.log({\r\n // month: dates.month() + 1,\r\n // day: dates.date(),\r\n // year: dates.year()\r\n // });\r\n return {\r\n month: dates.month() + 1,\r\n day: dates.date(),\r\n year: dates.year()\r\n };\r\n }\r\n\r\n moment(format?: number, date?: string): string | Moment {\r\n const myMoment = moment(date || undefined);\r\n const form = myMoment.format(this.dateFormats[format || 0]);\r\n return format > -1 ? form : myMoment;\r\n }\r\n\r\n /** get the date format for web service */\r\n getDateFormater(date: IMyDateModel | any, format?): string {\r\n if (!date) return date;\r\n const data: any = format ? date : date.formatted;\r\n if (!data) return data;\r\n const myMoment = moment(data, this.dateFormats[0]);\r\n return myMoment.format(this.dateFormats[format || 2]);\r\n }\r\n\r\n /** get the date format for web service */\r\n getDateFormaterClone(date: IMyDateModel | any, format?): string {\r\n if (!date) return date;\r\n const data: any = date.formatted;\r\n if (!data) return data;\r\n const myMoment = moment(data, this.dateFormats[0]);\r\n return myMoment.format(this.dateFormats[format || 2]);\r\n }\r\n\r\n /** convert the date format for datePicker */\r\n setDateFormater(val: string, format?: string) {\r\n let dat = '';\r\n if (format === 'IN' || !val) {\r\n dat = val;\r\n } else {\r\n dat = this.convertDate(val);\r\n }\r\n return { formatted: dat };\r\n }\r\n\r\n startAndEndDateOfTheWeek(date?) {\r\n const myMoment = date ? moment(date, this.dateFormats[0]) : moment();\r\n myMoment.locale('nl'); // week start on monday\r\n // console.log(m);\r\n return {\r\n // startDate: m.startOf('week').format(this.dateFormats[2]),\r\n // endDate: m.endOf('week').format(this.dateFormats[2])\r\n startDate: myMoment.weekday(0).format(this.dateFormats[2]),\r\n endDate: myMoment.weekday(6).format(this.dateFormats[2])\r\n };\r\n }\r\n\r\n /** Get the start and end date of the month from the given month */\r\n getMonthDateRange() {\r\n const date = this.currentDateForDP();\r\n // month in moment is 0 based, so 9 is actually october, subtract 1 to compensate\r\n // array is 'year', 'month', 'day', etc\r\n const startDate = moment([date.year, date.month - 1]);\r\n\r\n // Clone the value before .endOf()\r\n const endDate = moment(startDate).endOf('month');\r\n\r\n // make sure to call toDate() for plain JavaScript date type\r\n return {\r\n startDate: startDate.format(this.dateFormats[2]),\r\n endDate: endDate.format(this.dateFormats[2])\r\n };\r\n }\r\n\r\n disableTillDate(\r\n options: IMyDpOptions,\r\n parentOption: IMyDpOptions,\r\n ev?: string,\r\n text?: string,\r\n format?: string\r\n ): IMyDpOptions {\r\n const data = this.copy(options);\r\n const parent = this.copy(parentOption);\r\n let date: IMyDate;\r\n const defaultProp = 'disableUntil';\r\n const prop = text || defaultProp;\r\n const subDay = prop === defaultProp ? 1 : -1;\r\n const fomats = this.dateFormats[format === 'IN' ? 0 : 2];\r\n if (ev) {\r\n const myday = moment(ev, fomats);\r\n const finalDate = myday.subtract(subDay, 'days');\r\n date = {\r\n day: finalDate.date(),\r\n month: finalDate.month() + 1,\r\n year: finalDate.year()\r\n };\r\n } else {\r\n date = parent[prop];\r\n }\r\n data[prop] = date || {\r\n day: 0,\r\n month: 0,\r\n year: 0\r\n };\r\n return data;\r\n }\r\n\r\n highLightDates(\r\n options: IMyDpOptions,\r\n arr: any[],\r\n format?: string\r\n ): IMyDpOptions {\r\n const data: IMyDpOptions = this.copy(options);\r\n let temp = [];\r\n if (arr[0]) {\r\n temp = arr.map(res => {\r\n const dateFormat = this.dateFormats[format ? 0 : 2];\r\n const myMoment = moment(res, dateFormat);\r\n const day = myMoment.date();\r\n const month = myMoment.month() + 1;\r\n const year = myMoment.year();\r\n return { day, month, year };\r\n });\r\n }\r\n data.highlightDates = temp;\r\n return data;\r\n }\r\n\r\n copy(data: any): any {\r\n return JSON.parse(JSON.stringify(data));\r\n }\r\n\r\n testValidates(form: any, first: any[], second: any[]) {\r\n form.get(first[0]).valueChanges.subscribe(val => {\r\n second[1] = this.disableTillDate(second[1], second[0], val);\r\n });\r\n form.get(first[1]).valueChanges.subscribe(val => {\r\n second[0] = this.disableTillDate(\r\n second[0],\r\n second[1],\r\n val,\r\n 'disableSince'\r\n );\r\n });\r\n }\r\n\r\n timeDifference(date) {\r\n const now = moment(); // todays date\r\n const end = moment(date); // another date\r\n const duration = moment.duration(now.diff(end));\r\n const hours = duration.asSeconds();\r\n return Math.abs(hours);\r\n }\r\n\r\n getDaysMonthYear(startDate, EndDate) {\r\n let startDt = moment(startDate);\r\n let endDt = moment(EndDate);\r\n\r\n let days: any[] = [];\r\n let intervals: any[] = ['years', 'months', 'weeks', 'days'];\r\n\r\n let out = [];\r\n for (var i = 0; i < intervals.length; i++) {\r\n var diff = endDt.diff(startDt, intervals[i]);\r\n if (intervals[i] === 'days') {\r\n days = this.daysBetweenDate(startDt, endDt) || [];\r\n }\r\n out.push(diff);\r\n }\r\n out.push(days);\r\n console.log(out);\r\n return out;\r\n };\r\n\r\n daysBetweenDate(startDate, EndDate) {\r\n const days = [];\r\n while (startDate <= EndDate) {\r\n days.push(startDate.format('dddd'));\r\n startDate.add(1, 'days');\r\n }\r\n //console.log(days);\r\n return days;\r\n }\r\n\r\n}\r\n", "import { Injectable } from '@angular/core';\r\nimport { EnquiryTypeModel, QuoteTypeModel } from '@entity/logical-models';\r\nimport { IMyDate, IMyDateModel, IMyDpOptions } from 'mydatepicker';\r\nimport { EnquiryModel, EnquiryStatus } from '@entity/enquiry-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LogicalService {\r\n dateFormat = 'dd/mm/yyyy';\r\n constructor() { }\r\n\r\n /** Format date to send to the server */\r\n getDateFormater(val: IMyDateModel | any) {\r\n if (!val) {\r\n return val;\r\n } else if (val.date) {\r\n return `${val.date.year}-${this.n(val.date.month)}-${this.n(\r\n val.date.day\r\n )}`;\r\n } else if (val.formatted) {\r\n return this.reverseString(val.formatted);\r\n }\r\n return val;\r\n }\r\n\r\n getDateFormaterddmmyy(val: IMyDateModel | any) {\r\n if (!val) {\r\n return val;\r\n } else if (val) {\r\n return (\r\n val\r\n .split('-')\r\n // .reverse()\r\n .join('/')\r\n );\r\n }\r\n return val;\r\n }\r\n\r\n /** To give date to the datePicker */\r\n setDateFormater(val: string, format?: string) {\r\n let dat = '';\r\n if (format === 'IN') {\r\n dat = val;\r\n } else {\r\n dat = this.reverseString(val.split(' ')[0]);\r\n }\r\n return { formatted: dat };\r\n }\r\n\r\n private reverseString(val: string) {\r\n let dat = val;\r\n if (val && val.match(/\\//)) {\r\n dat = val\r\n .split('/')\r\n .reverse()\r\n .join('/');\r\n } else if (val && val.match(/-/)) {\r\n dat = val\r\n .split('-')\r\n .reverse()\r\n .join('/');\r\n }\r\n return dat;\r\n }\r\n\r\n ddMMYYYY(str: string): string {\r\n return str\r\n .split('/')\r\n .join('-');\r\n }\r\n\r\n splitCamelCase(str: any): string {\r\n str = str.split(/(?=[A-Z])/g);\r\n return str\r\n .map(word => {\r\n return word.replace(word[0], word[0].toUpperCase());\r\n })\r\n .join(' ');\r\n }\r\n\r\n copy(data: any): any {\r\n return JSON.parse(JSON.stringify(data));\r\n }\r\n\r\n scrollUP(): void {\r\n // document.body.scrollTop = 0;\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n currentDateForDatePicker() {\r\n const date = this.currentDate();\r\n return date as IMyDate;\r\n }\r\n\r\n disableTillDate(\r\n options: IMyDpOptions,\r\n parentOption: IMyDpOptions,\r\n ev?: IMyDateModel\r\n ) {\r\n const data = this.copy(options);\r\n const parent = this.copy(parentOption);\r\n let date: IMyDate;\r\n if (ev.jsdate) {\r\n const myday = new Date(ev.jsdate);\r\n const finalDate = new Date(new Date(myday).setDate(myday.getDate() - 1));\r\n date = {\r\n day: finalDate.getDate(),\r\n month: finalDate.getMonth() + 1,\r\n year: finalDate.getFullYear()\r\n } as IMyDate;\r\n } else {\r\n date = parent.disableUntil;\r\n }\r\n data.disableUntil = date;\r\n return data;\r\n }\r\n\r\n highLightDates(options: IMyDpOptions, arr: any[]): IMyDpOptions {\r\n const data: IMyDpOptions = this.copy(options);\r\n let temp = [];\r\n if (arr[0]) {\r\n temp = arr.map(res => {\r\n const spl = res.split('-');\r\n const day = +spl[0];\r\n const month = +spl[1];\r\n const year = +spl[2];\r\n return { day, month, year };\r\n });\r\n }\r\n data.highlightDates = temp;\r\n return data;\r\n }\r\n\r\n arrayToggle(array: any[], data: any): any[] {\r\n const clonedArray = this.copy(array || []);\r\n const cond = clonedArray.indexOf(data);\r\n if (cond > -1) {\r\n clonedArray.splice(cond, 1);\r\n } else {\r\n clonedArray.push(data);\r\n }\r\n return clonedArray;\r\n }\r\n\r\n arrayReplace(array: any[], data: any, key: any): any[] {\r\n const clonedArray: any[] = this.copy(array);\r\n const cond = clonedArray.find(a => a[key] === data[key]);\r\n const dataIndex = clonedArray.indexOf(cond);\r\n if (dataIndex > -1) {\r\n clonedArray[dataIndex] = data;\r\n }\r\n return clonedArray;\r\n }\r\n\r\n currentDate() {\r\n const date = new Date();\r\n const month = date.getMonth() + 1;\r\n const day = date.getDate() - 1;\r\n const year = date.getFullYear();\r\n return { month, day, year };\r\n }\r\n\r\n n(n) {\r\n return ('00' + n).slice(-2);\r\n }\r\n\r\n formatDropdown(\r\n arr: any[],\r\n key: string,\r\n value: string,\r\n storeTo: Object,\r\n name: string\r\n ): object {\r\n const ar = this.copy(arr);\r\n const store = this.copy(storeTo);\r\n const data = ar.reduce((acc, curr) => {\r\n acc[curr[key]] = curr[value];\r\n return acc;\r\n }, {});\r\n store[name] = data;\r\n return store;\r\n }\r\n\r\n arrayFindDuplicate(array: any[], key: any) {\r\n const filterEmpty = array.filter(c => c[key]);\r\n const arrayKeys = filterEmpty.map(x => +x[key]);\r\n let duplicate = [];\r\n duplicate = arrayKeys.reduce((e, c) => {\r\n if (c && !e.includes(+c)) {\r\n e.push(c);\r\n }\r\n return e;\r\n }, []);\r\n console.log(arrayKeys, duplicate);\r\n return duplicate.join() !== arrayKeys.join();\r\n }\r\n\r\n objectToggle(object: Object, key: any, value?: any): Object | boolean {\r\n const obj = this.copy(object) as Object;\r\n if (!value) {\r\n return obj.hasOwnProperty(key);\r\n }\r\n if (obj.hasOwnProperty(key)) {\r\n delete obj[key];\r\n } else {\r\n obj[key] = value || '';\r\n }\r\n return obj;\r\n }\r\n\r\n isJson(str) {\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n handleEnquiryType(enq: EnquiryModel): EnquiryTypeModel {\r\n const id = enq.enquiry.EnquiryTypeId;\r\n const showPackagingTab = [202, 204].includes(id);\r\n const showTransportTab = [201, 204].includes(id);\r\n const collection = !!(\r\n enq.transport.Collection && enq.transport.Collection.Location\r\n );\r\n\r\n return new EnquiryTypeModel(\r\n showPackagingTab,\r\n showTransportTab,\r\n id === 202,\r\n id === 201,\r\n collection\r\n );\r\n }\r\n\r\n /** Know the status of the Quote 2104, 2115, 2105, 2108, 2109\r\n * @param Code 2104 is comes on transport quote\r\n */\r\n statusOfTheQuote(data) {\r\n const code = [\r\n EnquiryStatus.EligibleHauliersIdentification,\r\n EnquiryStatus.LLWRQuoteFinalisation,\r\n EnquiryStatus.QuoteRequestedFromHauliers,\r\n EnquiryStatus.QuoteReceivedFromHauliers,\r\n EnquiryStatus.QuoteAwardedToHaulier,\r\n EnquiryStatus.QuoteSubmissionInProgress\r\n ];\r\n let final: QuoteTypeModel;\r\n if (code.includes(data.Status)) {\r\n const showSaveBtn = data.Status === EnquiryStatus.QuoteAwardedToHaulier;\r\n const showAwardBtn =\r\n data.Status === EnquiryStatus.QuoteReceivedFromHauliers;\r\n const showAssignBtn =\r\n data.Status === EnquiryStatus.LLWRQuoteFinalisation ||\r\n data.Status === EnquiryStatus.EligibleHauliersIdentification;\r\n const isHauilerAssigned =\r\n data.Status === EnquiryStatus.QuoteRequestedFromHauliers ||\r\n showSaveBtn ||\r\n showAwardBtn ||\r\n data.Status === EnquiryStatus.QuoteSubmissionInProgress;\r\n const isHaulierAwarded =\r\n data.Status === EnquiryStatus.QuoteAwardedToHaulier;\r\n\r\n final = new QuoteTypeModel(\r\n isHauilerAssigned,\r\n isHaulierAwarded,\r\n showAssignBtn,\r\n showAwardBtn,\r\n showSaveBtn\r\n );\r\n }\r\n else if (data.Status == EnquiryStatus.TransportCostFrozen) {\r\n final = new QuoteTypeModel(true, true, false, false, false);\r\n }\r\n else {\r\n final = new QuoteTypeModel(true, true, false, false, true);\r\n }\r\n return final;\r\n }\r\n\r\n //Get Print Image Global Url..\r\n // PrintImageUrl() {\r\n // return \"https://llwr.cyb.co.uk/assets/images/LLWR2.png\"\r\n // }\r\n\r\n // Phone Number Validation\r\n phoneNoValid(event) {\r\n let tPhoneNo = event.target.value.toString().replace(/[\\s]/g, '').trim();\r\n let phoneNo = tPhoneNo.slice(0, 5) + \" \" + tPhoneNo.slice(5);\r\n if (phoneNo.replace(/[\\s]/g, '') === event.target.value.toString().replace(/[\\s]/g, '')) {\r\n phoneNo = phoneNo.trim();\r\n }\r\n return phoneNo ;\r\n }\r\n}\r\n", "import { Injectable } from '@angular/core';\nimport { stringify } from 'querystring';\nimport { inititalSortFilter } from '@entity/enquiry';\nimport { tblPaginator } from '@entity/user-role';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrimengTableService {\n constructor() { }\n\n public gridOptions: any = {\n first: 0,\n rows: 10,\n sortField: 'EnqId',\n sortOrder: -1\n };\n public event: any = {\n first: 0,\n rows: 10\n };\n\n onSort(e, gridOptions, localText) {\n gridOptions.sortField = e ? e.multisortmeta ? e.multisortmeta[0].field : e.field : '';\n gridOptions.sortOrder = e ? e.multisortmeta ? e.multisortmeta[0].order : e.order : '';\n gridOptions.first = 0;\n sessionStorage.setItem('existSort-' + localText, JSON.stringify(gridOptions));\n }\n\n onFilter(e, localText) {\n sessionStorage.setItem(\"filtersValue-\" + localText, JSON.stringify(e));\n let event = {\n first: 0,\n rows: 10\n };\n let totalRecords = e.filteredValue.length;\n\n return this.OnPaginate(event, totalRecords, localText);\n }\n\n OnPaginate(event, totalRecords, localText) {\n let first = event.first;\n let currentPageNumber = ((event.first / tblPaginator.addNoOfRows) + tblPaginator.addPageNumber);\n let totalPages = (totalRecords / tblPaginator.addNoOfRows);\n let currentPageStart = (event.first + tblPaginator.addPageNumber);\n let currentPageEnd = (currentPageStart + tblPaginator.addPageEnd);\n currentPageEnd = totalRecords < currentPageEnd ? totalRecords : currentPageEnd;//pagination end record\n let paginationRecord = 'Displaying page ' + currentPageNumber + ' of ' + Math.ceil(totalPages) + ', records ' + currentPageStart + ' to ' + currentPageEnd + ' of ' + totalRecords + ' records.';\n let paginate = {\n first: first,\n paginationRecord: paginationRecord,\n totalRecords: totalRecords\n }\n sessionStorage.setItem(\"paginate-\" + localText, JSON.stringify(paginate));\n return paginate;\n }\n\n initialSortAndFilter(dataTable, gridOptions, localText: String, totalRecords?: number, isArchive = false): inititalSortFilter {\n let filterValue;\n let filterText;\n let exitTotalRecords = totalRecords;\n let pagination;\n let existSort = sessionStorage.getItem('existSort-' + localText); //sorting\n let existFilter = sessionStorage.getItem('filtersValue-' + localText);//filter\n let existPaginate = sessionStorage.getItem('paginate-' + localText);//paginate\n const sort = JSON.parse(existSort);\n const filter = JSON.parse(existFilter);\n const paginate = JSON.parse(existPaginate);\n if (sort || filter || (paginate || !paginate)) {\n if (sort) {\n gridOptions = sort;\n dataTable.sortField = gridOptions.sortField;\n dataTable.sortOrder = gridOptions.sortOrder;\n dataTable.sortSingle();\n // this.dt.paginator(this.gridOptions);\n }\n if (filter && filter.filters && filter.filters.global && filter.filters.global.value) {\n filterText = filter.filters ? filter.filters.global ? filter.filters.global.value : '' : '';\n totalRecords = filter.filteredValue ? filter.filteredValue.length : '';\n dataTable.filterGlobal(filterText, 'contains');\n }\n if (paginate && ((!isArchive && paginate.totalRecords == exitTotalRecords) || (isArchive))) {//existing pagination \n this.event.first = paginate.first;//replace current value to existing pagination\n pagination = this.OnPaginate(this.event, exitTotalRecords, localText)\n }\n else if (!pagination && totalRecords) {//default pagination\n this.event.first = 0;\n pagination = this.OnPaginate(this.event, totalRecords, localText)\n }\n filterValue = {\n filterText: filterText,\n first: pagination ? pagination.first : 0,\n paginationRecord: pagination ? pagination.paginationRecord : ''\n }\n return filterValue;\n }\n }\n}\n\n", "import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BrowserNameService {\n\n constructor() { }\n ngOnInit() {\n\n }\n getBrowserName() {\n const browserName = (function () {\n var ua = navigator.userAgent, tem,\n M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return 'IE ' + (tem[1] || '');\n }\n if (M[1] === 'Chrome') {\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem != null) return tem.slice(1).join(' ').replace('OPR', 'Opera');\n }\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) M.splice(1, 1, tem[1]);\n return M.join(' ');\n })();\n //console.log(browserName);\n return browserName;\n }\n\n}\n", "import { Injectable } from '@angular/core';\r\nimport { AlertService } from 'alert-notification';\r\n@Injectable({ providedIn: 'root' })\r\nexport class NguAlertService {\r\n constructor(\r\n private alert: AlertService ,\r\n ) {}\r\n open(object){\r\n //console.log(object);\r\n let type = (object.type =='danger')? 'Warning':object.type;\r\n this.alert.setPosition('top-right');\r\n this.alert.push('id-01', type, object['heading'], object['msg']); }\r\n}\r\n\r\n\r\n", "import { NgControl } from '@angular/forms';\r\nimport { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '([formControlName], [formControl])[disableControl]'\r\n})\r\nexport class DisableControlDirective {\r\n @Input()\r\n set disableControl(condition: boolean) {\r\n const action = condition ? 'disable' : 'enable';\r\n setTimeout(()=>{\r\n if(this.ngControl?.control){\r\n this.ngControl.control[action]();\r\n }\r\n })\r\n }\r\n\r\n constructor(private ngControl: NgControl) {}\r\n}\r\n", "export const environment = {\n production: true,\n //encryptKey: 'HackersSeeIT'\n encryptKey: 'pLTmNZo8VRjODHN1CXP3izIxSFCbwb4VjEXRblDlENM=',\n transportCalendarRefreshRate: 120000, // should be in milliseconds (reference scale 1000 ms = 1 s,60000 ms = 1min)\n errorDuration: 3600000, // // should be in milliseconds (reference scale 1000 ms = 1 s,60000 ms = 1min, 3600000 ms = 1hr)\n recaptchaSiteKey: '6LdkVNQZAAAAAHQon19_thXipSzuYVZo5J4xN8s3',\n recaptchaSecretKey: '6LdkVNQZAAAAAAOhYcEdkOe7b7QK7PFy2UAxs55Y'\n};", "import {\r\n HttpErrorResponse,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AuthService } from '@app/shared';\r\nimport { tap } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\nimport { ConfirmationDialog, ConfirmationService } from '@app/library';\r\nimport { Router } from '@angular/router';\r\nimport { NguAlertService } from '@app/shared';\r\n\r\n@Injectable()\r\nexport class CommonInterceptor implements HttpInterceptor {\r\n // messenger: any;\r\n constructor(private auth: AuthService, private confirmationService: ConfirmationService, public router: Router, private alert: NguAlertService) { }\r\n count = 0;\r\n intercept(req: HttpRequest, next: HttpHandler) {\r\n let paths = '';\r\n if (req.url.match(/~/)) {\r\n paths = req.url.replace(/~/, '');\r\n }\r\n else {\r\n // paths = `https://llwrtest.elogistics.com/api/${req.url}`;\r\n //paths = `https://llwr.cyb.co.uk/api/${req.url}`;\r\n //paths = `http://10.91.44.23:8081/llwrepository78/public/api/${req.url}`;\r\n // paths = `http://llwr.agnosticsolutions.com/api/${req.url}`;\r\n // paths = `https://llwrtest.cyb.co.uk/api/${req.url}`;\r\n //paths = `http://localhost:8000/api/${req.url}`;\r\n // paths = `https://llwrdev.cyb.co.uk/api/v2/${req.url}`\r\n paths = `/api/${req.url}`;\r\n }\r\n\r\n // Clone the request and replace the original headers with\r\n // cloned headers, updated with the authorization.\r\n const headers = req.headers.set(\r\n 'Authorization',\r\n `Bearer ${this.auth.token}`\r\n ).append('Cache-Control', 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0')\r\n .append('Pragma', 'no-cache')\r\n .append('Expires', '0');\r\n // .set('Browser', `${this.auth.getBrowser}`);\r\n\r\n const authReq = req.clone({\r\n url: paths,\r\n headers: headers\r\n });\r\n\r\n if (!['authenticate', 'refreshtoken', 'resetpassword', 'updatepassword'].includes(req.url)) {\r\n //this.auth.isLoggedIn;\r\n this.count++;\r\n if (this.auth.isLoggedIn) {\r\n // console.log(\" logged in valid \");\r\n } else {\r\n console.log(\" login token expires \", JSON.stringify(this.router.url));\r\n //redirect to login page - session expires\r\n if (this.router.url !== '/login') {\r\n this.alert.open({\r\n heading: 'Session Expired',\r\n msg: 'Your session is expired. Please login again',\r\n type: 'danger'\r\n });\r\n this.router.navigate(['/login']);\r\n return throwError({ error: { message: \"unauthorised\" } });\r\n }\r\n }\r\n }\r\n\r\n // send cloned request with header to the next handler.\r\n return next.handle(authReq).pipe(\r\n tap(\r\n // Succeeds when there is a response; ignore other events\r\n event => { },\r\n // Operation failed; error is an HttpErrorResponse\r\n (error: HttpErrorResponse) => this.auth.handleUnauthorized(error, this.confirmationService)\r\n )\r\n );\r\n }\r\n}\r\n", "import { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { CommonInterceptor } from './common.interceptor';\nimport { LoaderInterceptor, LoaderModule } from '../extras';\nimport { JwtModule } from '@auth0/angular-jwt';\nexport function tokenGetter() {\n // return localStorage.getItem('token');\n return sessionStorage.getItem('token');\n}\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n JwtModule.forRoot({\n config: {\n tokenGetter: tokenGetter\n }\n }),\n LoaderModule\n ],\n declarations: [],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: LoaderInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: CommonInterceptor,\n multi: true\n }\n ]\n})\nexport class CoreModule {\n constructor(\n @Optional()\n @SkipSelf()\n parentModule: CoreModule\n ) {\n if (parentModule) {\n throw new Error(\n 'CoreModule is already loaded. Import it in the AppModule only'\n );\n }\n }\n}\n", "import { Component, Inject, ViewContainerRef, OnInit, Compiler } from '@angular/core';\nimport { DomService } from '@app/shared';\nimport { ConfirmationService, LoadingComponent } from '@app/library';\nimport { Router, NavigationStart } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit {\n title = 'app';\n initialLoad: any = false;\n\n constructor(\n @Inject(ConfirmationService) service,\n @Inject(ViewContainerRef) viewContainerRef,\n private dom: DomService,\n private router: Router,\n private _compiler: Compiler\n ) {\n service.setRootViewContainerRef(viewContainerRef);\n this.dom.appendComponentToBody(LoadingComponent);\n this._compiler.clearCache();\n }\n\n ngOnInit() {\n // this.router.events.subscribe((event: any) => { \n // if (event instanceof NavigationStart) {\n // //Show loading indicator\n // if (this.initialLoad) {//this is used to clear primeng table service local storage \n // localStorage.removeItem('existSort');\n // localStorage.removeItem('filtersValue');\n // localStorage.removeItem('paginate');\n // }\n // this.initialLoad = true;\n // }\n // });\n }\n}\n", "\n\n
\n
\n \n \n
\n
", "\r\n
\r\n
\r\n
\r\n \"logo\"\r\n
\r\n

Visual Logistics

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

 

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Forgot your password?\r\n
\r\n
\r\n
loading...
\r\n
{{message}}
{{defaultPage}}
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
loading...
\r\n
{{message}}
{{defaultPage}}
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Powered By\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n

Info

\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n eLogistics has recently been updated. If you experience any issues please contact\r\n LLWR Transport Team by email consignments1@nuclearwasteservices.uk or phone 01946 383749\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
", "import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AuthService } from '@app/shared';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { archiveRefName } from '@entity/user-role';\nimport { ConfirmationService, ConfirmationDialog } from '@app/library';\nimport { NguAlertService } from '@app/shared';\nimport { ReCaptchaV3Service } from 'ng-recaptcha';\nimport { Subscription } from 'rxjs';\nimport { environment } from '@env/environment.prod';\nimport { Router } from '@angular/router';\nimport { timeout } from 'rxjs/operators';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n loading: boolean;\n message:any = '';\n defaultPage = '';\n loginForm: FormGroup;\n forgotPasswordForm: FormGroup;\n dlogData: ConfirmationDialog;\n display = 'none';\n displayBackDrop = false;\n\n private subscription: Subscription;\n show_login: boolean = true;\n\n icon: string;\n type: string;\n\n constructor(\n private auth: AuthService,\n private fb: FormBuilder,\n private route: ActivatedRoute,\n private pop: ConfirmationService,\n private alert: NguAlertService,\n private recaptchaV3Service: ReCaptchaV3Service,\n public router: Router\n ) {\n // this.dlogData.body ='body string';\n // //this.dlogData.buttons\n // this.dlogData.heading = 'info';\n // this.dlogData.type = 'info';\n }\n\n public ngOnInit() {\n //debugger;\n localStorage.clear();\n sessionStorage.clear();\n\n this.icon = 'fa-eye-slash';\n this.type = 'password';\n\n let activatedDomainName = this.auth.getDomainName();\n this.loginForm = this.fb.group({\n username: [activatedDomainName.includes(archiveRefName.archive) ? '' : '', Validators.required],\n password: [activatedDomainName.includes(archiveRefName.archive) ? '' : '', Validators.required],\n loginFlag: [activatedDomainName.includes(archiveRefName.archive) ? '' : '', null],\n recaptcha: ['', Validators.required]\n });\n\n this.forgotPasswordForm = this.fb.group({\n email: [activatedDomainName.includes(archiveRefName.archive) ? '' : '', Validators.required]\n });\n\n this.initalizeRecaptcha(); // google recaptch initalization\n\n // this.pop.confirm().then((res: any) => {});\n // this.openModalDialog();\n // console.log(this.route.snapshot['_routerState'].url);\n // let activatedRoutedUrl=this.route.snapshot['_routerState'].url;// to check whether the url comes from login or archive purpose\n\n this.show_login = true;\n }\n\n\n\n iconChange() {\n if (this.icon == 'fa-eye-slash') {\n this.icon = 'fa-eye';\n this.type = 'text';\n } else {\n this.icon = 'fa-eye-slash'\n this.type = 'password';\n }\n }\n\n initalizeRecaptcha() {\n this.subscription = this.recaptchaV3Service.execute(\"login_form\")\n .subscribe((token) => {\n this.loginForm.patchValue({ recaptcha: token }); this.message = '';\n },\n (error) => {\n this.loginForm.patchValue({ recaptcha: '' }); this.message = error;\n });\n }\n\n public ngOnDestroy() {\n if (this.subscription)\n this.subscription.unsubscribe();\n }\n\n openModalDialog() {\n this.display = 'block'; //Set block css\n this.displayBackDrop = true;\n }\n\n closeModalDialog() {\n this.display = 'none'; //set none css after close dialog\n this.displayBackDrop = false;\n }\n\n // forgot password\n forgotPw() {\n this.show_login = false;\n }\n\n onSubmit() {\n this.message = ''; this.defaultPage = ''; this.loading = true;\n this.auth.login(this.loginForm.value).then(res => {\n if (!res) {\n this.loading = false; this.message = 'Invalid Username or Password';\n }\n else if (res && res == 'DefaultPage') {\n this.loading = false;\n this.message = \"Please contact administrator.\";\n this.defaultPage = \" Your default landing page isn't set\";\n }\n else if (res && res == 'loginConfirmation') {\n this.forceLogout();\n /* const obj: ConfirmationDialog = {\n heading: 'ATTENTION!',\n body: 'Concurrent login on multiple devices is not permitted, please ensure you are logged out of any other device to continue',\n yesButton: 'Ok',\n noButton: 'Cancel'\n };\n this.pop.confirm(obj).then(isConfirmed => {\n if (isConfirmed) {\n this.forceLogout();\n }\n }); */\n this.loading = false; \n }\n else if (res) {\n var params = {\n secret_key: environment.recaptchaSecretKey, // Secret API key\n response: this.loginForm?.get('recaptcha')?.value // Received token from the frontend\n };\n this.auth.recaptchaApi(params).subscribe((recaptchaRes:any) => {\n if (recaptchaRes != null && !recaptchaRes.success) {\n if (recaptchaRes[\"error-codes\"] && recaptchaRes[\"error-codes\"].length > 0) {\n if (recaptchaRes[\"error-codes\"][0] === \"timeout-or-duplicate\")\n this.message = \"Refresh screen to continue\";\n }\n else this.message = \"Recaptcha error\";\n this.loading = false;\n }\n else\n this.router.navigate([res]);\n });\n }\n });\n }\n\n forgotPasswordSubmit() {\n this.auth.forgotPassowrd(this.forgotPasswordForm.value).then(res => {\n //debugger;\n this.forgotPasswordForm.reset();\n if (!res) {\n this.loading = false;\n if (sessionStorage.hasOwnProperty('message') && sessionStorage.hasOwnProperty('message') != null) {\n this.message = sessionStorage.getItem('message');\n sessionStorage.removeItem('message');\n } else {\n this.message = 'Something went wrong.. We could not send reset link now.';\n }\n\n setTimeout(() => {\n this.message = ''\n this.show_login = false;\n }, 5000);\n }\n else if (res) {\n this.message = 'We have emailed your password reset link!',\n setTimeout(() => {\n this.show_login = false;\n this.message = ''\n }, 5000);\n }\n });\n }\n\n forceLogout() {\n //debugger;\n this.auth.loginConfirmation().subscribe((confirmRes:any) => {\n if (confirmRes.Status.toLowerCase() == \"success\") {\n this.onSubmit();\n //this.ngOnInit();\n /* this.alert.open({\n heading: 'Successfully LoggedOut',\n msg: 'Successfully logged out from other devices',\n type: 'success'\n }); */\n }\n });\n }\n}", "
\n
\n
\n \"logo\"\n
\n

Visual Logistics

\n
\n
\n
\n \n
\n
\n
\n

 

\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n \n Old password is required\n
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n \n New password is required\n \n -> Minimum length {{minLength}} is required
\n -> Password should have atleast one uppercase, lowercase, number and special character
\n -> Special characters must contain !#$@%&_-
\n -> Same character is not allowed more than twice\n \n
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n \n Confirm password is required\n
\n
\n
\n
\n
\n  \n \n
\n
\n
loading...
\n
New and Confirm Password does not match!
\n
{{message}}
\n \n Password should not contain first name, last name, address and company name\n \n
\n
\n
\n
\n
\n
\n
\n
\n Powered By\n \n
\n
\n
\n
", "import { Component, OnInit } from '@angular/core';\nimport { AuthService } from '@app/shared';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { UserRoles } from '@entity/user-role';\n\n@Component({\n selector: 'app-reset-password',\n templateUrl: './reset-password.component.html',\n styleUrls: ['./reset-password.component.scss']\n})\nexport class ResetPasswordComponent implements OnInit {\n loading: boolean;\n message = '';\n resetForm: FormGroup;\n roleId: number;\n icon: string;\n type: string;\n icon2: string;\n type2: string;\n icon3: string;\n type3: string;\n\n constructor(private auth: AuthService, private fb: FormBuilder, public router: Router) { }\n\n ngOnInit() {\n this.icon = 'fa-eye-slash';\n this.type = 'password';\n\n this.icon2 = 'fa-eye-slash';\n this.type2 = 'password';\n\n this.icon3 = 'fa-eye-slash';\n this.type3 = 'password';\n \n if (localStorage.getItem(\"resetFlag\") != \"true\")\n this.router.navigate([\"/login\"]);;\n this.resetForm = this.fb.group({\n oldPassword: ['', Validators.required],\n newPassword: ['', Validators.required],\n confirmPassword: ['', Validators.required],\n firstname: '',\n lastName: '',\n address: '',\n userName: ''\n }, { validator: this.checkPasswords });\n this.getuserDetails();\n }\n\n iconChange() {\n if (this.icon == 'fa-eye-slash') {\n this.icon = 'fa-eye';\n this.type = 'text';\n } else {\n this.icon = 'fa-eye-slash'\n this.type = 'password';\n }\n }\n\n iconChange2() {\n if (this.icon2 == 'fa-eye-slash') {\n this.icon2 = 'fa-eye';\n this.type2 = 'text';\n } else {\n this.icon2 = 'fa-eye-slash'\n this.type2 = 'password';\n }\n }\n\n iconChange3() {\n if (this.icon3 == 'fa-eye-slash') {\n this.icon3 = 'fa-eye';\n this.type3 = 'text';\n } else {\n this.icon3 = 'fa-eye-slash'\n this.type3 = 'password';\n }\n }\n\n getuserDetails() {\n this.auth.getUser().subscribe((res:any) => {\n this.roleId = res.RoleId;\n this.resetForm.patchValue({\n firstname: res.Firstname,\n lastName: res.Lastname,\n address: res.Address,\n userName: res.LoginId\n });\n this.setPasswordPattern();\n });\n }\n\n checkPasswords(group: FormGroup) {\n let newPwd = group?.get('newPassword')?.value ? group?.get('newPassword')?.value.trim() : \"\";\n let confirmPwd = group?.get('confirmPassword')?.value ? group?.get('confirmPassword')?.value.trim() : \"\";\n\n let pass = confirmPwd ? confirmPwd.trim().toLowerCase().slice(0, 5) : '';\n let firstName = group?.get('firstname')?.value ? group?.get('firstname')?.value.trim().toLowerCase().slice(0, 5) : '';\n let lastName = group?.get('lastName')?.value ? group?.get('lastName')?.value.trim().toLowerCase().slice(0, 5) : '';\n let address = group?.get('address')?.value ? group?.get('address')?.value.trim().toLowerCase().slice(0, 5) : '';\n let userName = group?.get('userName')?.value ? group?.get('userName')?.value.trim().toLowerCase().slice(0, 5) : '';\n let pwd = group?.get('confirmPassword')?.value.trim().toLowerCase().slice(0, 4);// it contains llwr \n return newPwd === confirmPwd ? pass && (pwd === \"llwr\" || pass === userName || pass === firstName || pass === lastName || pass === address) ? { notSameUserInfo: true } : null : { notSame: true };\n }\n\n onSubmit() {\n this.message = ''; this.loading = true;\n this.auth.resetPassword(this.resetForm.value).then(res => {\n if (!res) {\n this.loading = false; this.message = 'old password does not match';\n }\n });\n }\n\n pwdMoreThanTwiceValidator(control: FormGroup) {\n var text = control.value.split(\"\");\n let valid = false;\n text.some(function (v, i, a) {\n let array = a.filter(x => x.trim().toLowerCase() == v.trim().toLowerCase());\n if (array != null && array.length > 2)\n valid = true;\n });\n return valid ? { moreThanTwice: true } : null;\n }\n\n setPasswordPattern() {\n let regex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!#$@%&_-])(?=.{' + this.minLength + ',}).+$';\n this.resetForm?.get('newPassword')?.setValidators([Validators.required, Validators.minLength(parseInt(this.minLength)), Validators.pattern(regex), this.pwdMoreThanTwiceValidator]);\n this.resetForm?.get('newPassword')?.updateValueAndValidity();\n }\n\n get minLength() {\n return (this.roleId === UserRoles.Admin) || (this.roleId === UserRoles.SuperAdmin) ? \"12\" : \"10\";\n }\n\n navigation() {\n localStorage.clear();\n sessionStorage.clear();\n this.router.navigate(['/login']);\n }\n}", "import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AuthService } from '@app/shared';\r\nimport { NavList } from '@entity/navigation';\r\n\r\n@Pipe({\r\n name: 'roleFilter'\r\n})\r\nexport class RoleFilterPipe implements PipeTransform {\r\n constructor(private auth: AuthService) {} \r\n transform(value: NavList[]): any {\r\n if (value) { \r\n return value.reduce((accumulator, parent) => {\r\n if (parent.freeze) {\r\n const dats = parent.child.filter(child =>\r\n child.freeze\r\n );\r\n if (dats) {\r\n const dft = JSON.parse(JSON.stringify(parent));\r\n dft.child = dats;\r\n accumulator.push(dft);\r\n }\r\n }\r\n return accumulator;\r\n }, []);\r\n }\r\n return value;\r\n }\r\n}\r\n", "
\n
\n
\n
\n \n
\n
\n
\n
\n Welcome\n {{auth.loginData.Firstname}}\n
\n

\n \n

\n
\n
\n
\n
\n
\n \n
\n\n
\n \n \n
\n
\n
\n\n\n", "import {\n Component,\n ElementRef,\n OnInit,\n Renderer2,\n ViewChild,\n ChangeDetectionStrategy,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { ConfirmationService } from '@app/library';\nimport { AuthService } from '@app/shared';\nimport { NavList } from '@entity/navigation';\nimport { RoleFilterPipe } from './role.pipe';\nimport { HttpClient } from '@angular/common/http';\n\n@Component({\n selector: 'app-navigation',\n templateUrl: './navigation.component.html',\n styleUrls: ['./navigation.component.scss'],\n providers: [RoleFilterPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NavigationComponent implements OnInit {\n navLists: NavList[];\n menuState = 'out';\n isClosed = false;\n @ViewChild('menuBtn') menuBtn: ElementRef;\n @ViewChild('wrapper') wrapper: ElementRef;\n roleId: any;\n isArchiveFlag: string;\n hostNameUrl: any;\n associatedId: any;\n\n constructor(\n public auth: AuthService,\n private renderer: Renderer2,\n private router: Router,\n private pop: ConfirmationService,\n private rolePipe: RoleFilterPipe,\n private _cdr: ChangeDetectorRef,\n // private service: NavService\n private http: HttpClient\n ) { }\n\n ngOnInit() {\n // this.navLists = this.rolePipe.transform(this.auth.navListData);\n //console.log(this.navLists); \n this.isArchiveFlag = this.auth.getDomainName();\n this.roleId = this.auth.loginData.RoleId;\n this.hostNameUrl = this.auth.hostName;\n this.associatedId = btoa(this.auth.loginData.AssociatedId);\n this.getMenuList();\n\n // this.router.events.subscribe(event => {\n // if (event instanceof NavigationEnd) {\n // this.isClosed = true;\n // this.toggleMenu(true);\n // }\n // });\n }\n\n getMenuList() {\n let param = { roleId: this.roleId, isArchiveFlag: this.isArchiveFlag };\n this.http.post('menu', param).subscribe((res: any) => {\n this.navLists = this.rolePipe.transform(res.data);\n // this.navLists = res.data;\n });\n }\n\n menuClicked() {\n this.isClosed = true;\n this.toggleMenu(true);\n }\n\n logout() {\n //logout the user from other devices.(restricting concurrent logins)..\n this.auth.logoutApi().subscribe((res:any) => {\n if (res.Status.toLowerCase() == \"success\") {\n this._cdr.detach();\n this.auth.logout();\n }\n });\n }\n\n toggleMenu(byNav?: boolean) {\n this.menuState = byNav ? 'out' : this.menuState === 'out' ? 'in' : 'out';\n this.hamburger_cross();\n }\n\n hamburger_cross() {\n if (this.isClosed === true) {\n this.wrapper?.nativeElement?.classList?.toggle('fade-in');\n this.renderer?.removeClass(this.wrapper?.nativeElement, 'toggled');\n this.renderer?.removeClass(this.menuBtn?.nativeElement, 'is-open');\n this.renderer?.addClass(this.menuBtn?.nativeElement, 'is-closed');\n this.isClosed = false;\n } else {\n this.renderer?.removeClass(this.menuBtn?.nativeElement, 'is-closed');\n this.renderer?.addClass(this.menuBtn?.nativeElement, 'is-open');\n this.wrapper?.nativeElement?.classList?.toggle('toggled');\n this.isClosed = true;\n }\n this._cdr.detectChanges();\n }\n\n clearStorage() {\n sessionStorage.removeItem(\"paginate-Enquiry\");\n }\n}\n", "\n\n
\n

{{auth.pageTitle}}

\n \n
", "import { Component,AfterViewChecked ,OnInit, ChangeDetectorRef } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { AuthService } from '@app/shared';\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss'],\n animations: [\n trigger('slideInOut', [\n state(\n 'in',\n style({\n transform: 'translate3d(0%, 0%, 0%)'\n })\n ),\n state(\n 'out',\n style({\n transform: 'translate3d(100%, 0%, 0%)'\n })\n ),\n transition('in => out', animate('400ms ease-in-out')),\n transition('out => in', animate('400ms ease-in-out'))\n ])\n ]\n})\n\nexport class HomeComponent implements AfterViewChecked {\n myclass: any;\n menuState = 'out';\n //isLoggined: any;\n //test: any;\n //msg = '';\n isClosed = false;\n //@ViewChild('menuBtn') menuBtn: ElementRef;\n\n constructor(public auth: AuthService, private cd: ChangeDetectorRef) { }\n\n ngOnInit() {\n // this.router.events.subscribe(event => {\n // if (event instanceof NavigationEnd) {\n // // Hide loading indicator\n // console.log('navifationEnd');\n // }\n // }); \n }\n\n ngAfterViewChecked(){\n this.cd.detectChanges();\n }\n \n logout() {\n this.auth.logout();\n }\n\n toggleMenu(event) {\n this.menuState = this.menuState === 'out' ? 'in' : 'out';\n this.hamburger_cross(event);\n }\n\n hamburger_cross(event) {\n if (this.isClosed === true) {\n document?.getElementById('wrapper')?.classList?.toggle('fade-in');\n document?.getElementById('wrapper')?.classList?.remove('toggled');\n event?.target?.classList?.remove('is-open');\n event?.target?.classList?.add('is-closed');\n this.isClosed = false;\n } else {\n event?.target?.classList?.remove('is-closed');\n event?.target?.classList?.add('is-open');\n document?.getElementById('wrapper')?.classList?.toggle('toggled');\n this.isClosed = true;\n }\n }\n}", "
\n
\n
\n \"logo\"\n
\n

Visual Logistics

\n
\n
\n
\n \n
\n
\n
\n

 

\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n \n New password is required\n \n
\n
\n
\n
\n
\n \n
\n
\n \n \n
\n \n Confirm password is required\n
\n
\n
\n
\n
\n  \n \n
\n
\n
loading...
\n
New and Confirm Password does not\n match!
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n Powered By\n \n
\n
\n
\n
", "import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { LoginComponent } from './login/login.component';\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\nimport { HomeComponent } from './home/home.component';\nimport { AuthGuard, RoleGuard, DefaultRouteGuard } from '@app/shared';\nimport { NoAccessComponent } from './commons/no-access/no-access.component';\nimport { UpdatePasswordComponent } from './update-password/update-password.component';\n\nconst routes: Routes = [\n {\n path: 'login',\n component: LoginComponent\n },\n {\n path: 'resetpassword',\n // path: 'resetpassword/:token /:email /:loginid',\n component: ResetPasswordComponent\n },\n {\n path: 'updatepassword',\n component: UpdatePasswordComponent\n },\n {\n path: 'archive',\n component: LoginComponent\n },\n {\n path: '',\n component: HomeComponent,\n canActivateChild: [AuthGuard, RoleGuard],\n children: [\n {\n path: 'calendar',\n loadChildren: () => import('./home/calendar/calendar.module').then(m => m.LlwrCalendarModule),\n // loadChildren: './home/calendar/calendar.module#LlwrCalendarModule'\n },\n {\n path: 'inventory',\n loadChildren: () => import('./home/inventory/inventory.module').then(m => m.InventoryModule),\n // loadChildren: './home/inventory/inventory.module#InventoryModule'\n },\n {\n path: 'master',\n loadChildren: () => import('./home/master/master.module').then(m => m.MasterModule),\n // loadChildren: './home/master/master.module#MasterModule'\n },\n {\n path: 'packaging',\n // loadChildren: './home/packaging/packaging.module#PackagingModule'\n loadChildren: () => import('./home/packaging/packaging.module').then(m => m.PackagingModule),\n },\n {\n path: 'packagingReport',\n loadChildren: () => import('./home/packaging-report/packaging-report.module').then(m => m.PackagingReportModule),\n // loadChildren:\n // './home/packaging-report/packaging-report.module#PackagingReportModule'\n },\n {\n path: 'transaction',\n loadChildren: () => import('./home/transaction/transaction.module').then(m => m.TransactionModule),\n // loadChildren: './home/transaction/transaction.module#TransactionModule'\n },\n {\n path: 'transport',\n loadChildren: () => import('./home/transport/transport.module').then(m => m.TransportModule),\n // loadChildren: './home/transport/transport.module#TransportModule'\n },\n {\n path: 'transportReport',\n loadChildren: () => import('./home/transport-report/transport-report.module').then(m => m.TransportReportModule),\n // loadChildren:\n // './home/transport-report/transport-report.module#TransportReportModule'\n },\n {\n path: 'manufacturerReport',\n loadChildren: () => import('./home/manufacturer-reports/manufacturer-reports.module').then(m => m.ManufacturerReportsModule),\n\n // loadChildren:\n // './home/manufacturer-reports/manufacturer-reports.module#ManufacturerReportsModule'\n },\n {\n path: 'accessDenied',\n component: NoAccessComponent\n },\n {\n path: '',\n redirectTo: 'transaction',\n canActivate: [DefaultRouteGuard],\n pathMatch: 'full'\n }\n ]\n },\n {\n path: '**',\n redirectTo: ''\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)]\n})\nexport class AppRoutingModule { }\n\nexport const AppRoutedComponents = [HomeComponent, LoginComponent, ResetPasswordComponent, UpdatePasswordComponent];\n", "import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { AuthService } from '@app/shared';\nimport { FormBuilder, FormControl, FormGroup, FormGroupDirective, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router, Params } from '@angular/router';\nimport { UserRoles } from '@entity/user-role';\n\n@Component({\n selector: 'app-update-password',\n templateUrl: './update-password.component.html',\n styleUrls: ['./update-password.component.scss']\n})\nexport class UpdatePasswordComponent implements OnInit, OnDestroy {\n\n loading: boolean;\n message:any = '';\n showMessage: boolean = false;\n resetForm: FormGroup;\n preResetForm: FormGroup;\n roleId: number;\n email: any;\n loginid: any;\n token: any;\n resetData: any;\n resetFormValid: boolean = false;\n resetFlag: boolean = false;\n @ViewChild(FormGroupDirective) formGroupDirective: FormGroupDirective;\n newPasswordCtrl: FormControl;\n confirmPasswordCtrl: FormControl;\n icon: string;\n type: string;\n icon2: string;\n type2: string;\n icon3: string;\n type3: string;\n\n constructor(private auth: AuthService, private fb: FormBuilder, public router: Router, private route: ActivatedRoute,) {\n\n this.email = this.route.snapshot.queryParams['email'];\n this.loginid = this.route.snapshot.queryParams['loginid'];\n this.token = this.route.snapshot.queryParams['token'];\n\n const resetFlag = localStorage.getItem(\"resetFlag\");\n if (resetFlag != \"true\") {\n this.resetFlag = false;\n }\n else {\n this.resetFlag = true;\n }\n }\n\n ngOnInit() {\n\n this.icon = 'fa-eye-slash';\n this.type = 'password';\n\n this.icon2 = 'fa-eye-slash';\n this.type2 = 'password';\n\n this.icon3 = 'fa-eye-slash';\n this.type3 = 'password';\n\n this.newPasswordCtrl = this.fb.control('', Validators.required);\n this.confirmPasswordCtrl = this.fb.control('', Validators.required);\n\n if (localStorage.getItem(\"resetFlag\") != \"true\") {\n // this.router.navigate([\"/login\"]);\n this.resetForm = this.fb.group({\n newPassword: this.newPasswordCtrl,\n confirmPassword: this.confirmPasswordCtrl,\n }, { validator: this.checkPasswords });\n\n if (sessionStorage.hasOwnProperty('resetData') && (sessionStorage.hasOwnProperty('resetData') != null || sessionStorage.hasOwnProperty('resetData') != undefined)) {\n this.resetFormValid = true;\n if (sessionStorage.hasOwnProperty('token') && (sessionStorage.hasOwnProperty('token') != null || sessionStorage.hasOwnProperty('token') != undefined)) {\n var token = sessionStorage.getItem('token');\n if (this.token == null || this.token == undefined) {\n this.token = this.route.snapshot.queryParams['token'];\n }\n if (this.token != token) {\n this.resetPassword();\n }\n } else {\n this.resetPassword();\n }\n } else {\n this.resetPassword();\n\n\n //this.setPasswordPattern();\n }\n }\n }\n\n iconChange() {\n if (this.icon == 'fa-eye-slash') {\n this.icon = 'fa-eye';\n this.type = 'text';\n } else {\n this.icon = 'fa-eye-slash'\n this.type = 'password';\n }\n }\n\n iconChange2() {\n if (this.icon2 == 'fa-eye-slash') {\n this.icon2 = 'fa-eye';\n this.type2 = 'text';\n } else {\n this.icon2 = 'fa-eye-slash'\n this.type2 = 'password';\n }\n }\n\n iconChange3() {\n if (this.icon3 == 'fa-eye-slash') {\n this.icon3 = 'fa-eye';\n this.type3 = 'text';\n } else {\n this.icon3 = 'fa-eye-slash'\n this.type3 = 'password';\n }\n }\n\n getuserDetails() {\n this.auth.getUser().subscribe((res:any) => {\n this.roleId = res.RoleId;\n this.resetForm.patchValue({\n firstname: res.Firstname,\n lastName: res.Lastname,\n address: res.Address,\n userName: res.LoginId\n });\n this.setPasswordPattern();\n });\n }\n\n checkPasswords(group: FormGroup) {\n let newPwd = group.get('newPassword').value ? group.get('newPassword').value.trim() : \"\";\n let confirmPwd = group.get('confirmPassword').value ? group.get('confirmPassword').value.trim() : \"\";\n\n let pass = confirmPwd ? confirmPwd.trim().toLowerCase().slice(0, 5) : '';\n let pwd = group.get('confirmPassword').value.trim().toLowerCase().slice(0, 4);// it contains llwr \n\n if (localStorage.getItem(\"resetFlag\") == \"true\") {\n let firstName = group.get('firstname').value != '' ? group.get('firstname').value.trim().toLowerCase().slice(0, 5) : '';\n let lastName = group.get('lastName').value != '' ? group.get('lastName').value.trim().toLowerCase().slice(0, 5) : '';\n let address = group.get('address').value != '' ? group.get('address').value.trim().toLowerCase().slice(0, 5) : '';\n let userName = group.get('userName').value != '' ? group.get('userName').value.trim().toLowerCase().slice(0, 5) : '';\n return newPwd === confirmPwd ? pass && (pwd === \"llwr\" || pass === userName || pass === firstName || pass === lastName || pass === address) ? { notSameUserInfo: true } : null : { notSame: true };\n } else {\n return newPwd === confirmPwd ? null : { notSame: true };\n }\n }\n\n resetPassword() {\n let group = {\n 'token': [this.token]\n }\n this.preResetForm = this.fb.group(group);\n this.auth.resetUpdatePassword(this.preResetForm.value).then(res => {\n if (!res) {\n this.loading = false;\n this.showMessage = true;\n\n if (sessionStorage.hasOwnProperty('message') && sessionStorage.hasOwnProperty('message') != null) {\n this.message = sessionStorage.getItem('message');\n sessionStorage.removeItem('message');\n } else {\n this.message = 'Password could not be updated now. please try again later. ';\n }\n\n setTimeout(() => {\n this.message = '';\n this.showMessage = false;\n }, 7000);\n } else {\n this.loading = false;\n this.resetFormValid = true;\n sessionStorage.setItem('token', this.token)\n }\n });\n }\n\n onSubmit() {\n\n this.message = '';\n this.loading = true;\n if (this.resetFormValid == true) {\n this.resetData = JSON.parse(sessionStorage.getItem('resetData'));\n let group = {\n 'forgot_token': [this.resetData.forgot_token],\n 'ref': [this.resetData.ref],\n 'password': [this.resetForm.value.confirmPassword == undefined ? this.resetForm.value.newPassword : this.resetForm.value.confirmPassword]\n }\n let submitForm:any = this.fb.group(group);\n this.auth.updatepassword(submitForm.value).then(res => {\n if (!res) {\n this.loading = false;\n this.showMessage = true;\n if (sessionStorage.hasOwnProperty('message') && sessionStorage.hasOwnProperty('message') != null) {\n this.message = sessionStorage.getItem('message');\n sessionStorage.removeItem('message');\n\n } else {\n this.message = 'Password could not be updated now. please try again later. ';\n }\n /* setTimeout(() => {\n this.resetForm.setValue({\n confirmPassword: null,\n newPassword: null,\n })\n this.resetForm.markAsPristine();\n this.resetForm.markAsUntouched();\n this.resetForm.clearValidators()\n\n\n }, 3000); */\n /* setTimeout(() => {\n this.message = '';\n this.showMessage = false;\n }, 8000); */\n } else {\n this.loading = false;\n this.showMessage = true;\n if (sessionStorage.hasOwnProperty('message') && sessionStorage.hasOwnProperty('message') != null) {\n this.message = sessionStorage.getItem('message');\n sessionStorage.removeItem('message');\n } else {\n this.message = 'password has been updated successfully';\n }\n setTimeout(() => {\n this.message = '';\n this.showMessage = false;\n sessionStorage.removeItem('resetData')\n this.navigation();\n }, 7000);\n }\n });\n } else {\n return\n }\n\n }\n\n pwdMoreThanTwiceValidator(control: FormGroup) {\n var text = control.value.split(\"\");\n let valid = false;\n text.some(function (v, i, a) {\n let array = a.filter(x => x.trim().toLowerCase() == v.trim().toLowerCase());\n if (array != null && array.length > 2)\n valid = true;\n });\n return valid ? { moreThanTwice: true } : null;\n }\n\n setPasswordPattern() {\n let regex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!#$@%&_-])(?=.{' + this.minLength + ',}).+$';\n this.resetForm.get('newPassword').setValidators([Validators.required, Validators.minLength(parseInt(this.minLength)), Validators.pattern(regex), this.pwdMoreThanTwiceValidator]);\n this.resetForm.get('newPassword').updateValueAndValidity();\n }\n\n get minLength() {\n return (this.roleId === UserRoles.Admin) || (this.roleId === UserRoles.SuperAdmin) ? \"12\" : \"10\";\n }\n\n navigation() {\n localStorage.clear();\n sessionStorage.clear();\n this.router.navigate(['/login']);\n }\n\n public ngOnDestroy() {\n sessionStorage.removeItem('token')\n }\n}", "import { APP_BASE_HREF, Location, LocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CoreModule } from '@app/core';\nimport { BreadCrumbsComponent, ConfirmationModule } from '@app/library';\nimport { SharedModule } from '@app/shared';\nimport { NguModalModule } from '../app/extras/ngu-modal';\nimport { AppComponent } from './app.component';\nimport { AppRoutedComponents, AppRoutingModule } from './app.routing';\nimport { NavigationComponent } from './navigation/navigation.component';\nimport { RoleFilterPipe } from './navigation/role.pipe';\nimport { RECAPTCHA_V3_SITE_KEY, RecaptchaV3Module } from 'ng-recaptcha';\nimport { environment } from '@env/environment.prod';\nimport { UpdatePasswordComponent } from './update-password/update-password.component';\nimport { ResetPasswordComponent } from './reset-password/reset-password.component';\nimport { LoginComponent } from './login/login.component';\nimport { HomeComponent } from './home/home.component';\nimport { Angular2CsvModule } from 'angular2-csv';\nimport { AlertModule } from 'alert-notification';\n\n// import { NguModalModule } from './extras/ngu-modal';\n\n@NgModule({\n declarations: [\n AppComponent,\n NavigationComponent,\n AppRoutedComponents,\n BreadCrumbsComponent,\n RoleFilterPipe,\n HomeComponent, \n LoginComponent, \n ResetPasswordComponent, \n UpdatePasswordComponent,\n ],\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n CoreModule,\n SharedModule,\n AppRoutingModule,\n NguModalModule,\n ConfirmationModule.forRoot(),\n RecaptchaV3Module,\n Angular2CsvModule,\n AlertModule\n ],\n providers: [\n { provide: APP_BASE_HREF, useValue: '/' },\n Location,\n { provide: LocationStrategy, useClass: PathLocationStrategy },\n { provide: RECAPTCHA_V3_SITE_KEY, useValue: environment.recaptchaSiteKey }\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }", "import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n", "var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"], "x_google_ignoreList": [97] }