ps-toolkit-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +24 -0
  2. package/bundles/ps-toolkit-ui.umd.js +7344 -0
  3. package/bundles/ps-toolkit-ui.umd.js.map +1 -0
  4. package/bundles/ps-toolkit-ui.umd.min.js +2 -0
  5. package/bundles/ps-toolkit-ui.umd.min.js.map +1 -0
  6. package/esm2015/lib/classes/enum.class.js +162 -0
  7. package/esm2015/lib/classes/form.class.js +467 -0
  8. package/esm2015/lib/classes/helper.class.js +275 -0
  9. package/esm2015/lib/classes/lang.class.js +32 -0
  10. package/esm2015/lib/classes/login.class.js +22 -0
  11. package/esm2015/lib/classes/modal.class.js +52 -0
  12. package/esm2015/lib/classes/permission.class.js +29 -0
  13. package/esm2015/lib/classes/request.class.js +255 -0
  14. package/esm2015/lib/classes/safestyle.class.js +15 -0
  15. package/esm2015/lib/classes/sidebar.class.js +14 -0
  16. package/esm2015/lib/classes/steps.class.js +20 -0
  17. package/esm2015/lib/classes/string.class.js +203 -0
  18. package/esm2015/lib/classes/table.class.js +278 -0
  19. package/esm2015/lib/components/accordion/accordion.component.js +45 -0
  20. package/esm2015/lib/components/alert/alert.component.js +41 -0
  21. package/esm2015/lib/components/base.component.js +55 -0
  22. package/esm2015/lib/components/confirm/confirm.component.js +50 -0
  23. package/esm2015/lib/components/footer/footer.component.js +23 -0
  24. package/esm2015/lib/components/form/bank-card/form.bank-card.component.js +148 -0
  25. package/esm2015/lib/components/form/button/form.button.component.js +68 -0
  26. package/esm2015/lib/components/form/car/form.car.component.js +84 -0
  27. package/esm2015/lib/components/form/car/search/form.car.search.component.js +173 -0
  28. package/esm2015/lib/components/form/checkbox/form.checkbox.component.js +66 -0
  29. package/esm2015/lib/components/form/date/form.date.component.js +256 -0
  30. package/esm2015/lib/components/form/datetime/form.datetime.component.js +104 -0
  31. package/esm2015/lib/components/form/file/form.file.component.js +133 -0
  32. package/esm2015/lib/components/form/finger/form.finger.component.js +138 -0
  33. package/esm2015/lib/components/form/icon/form.icon.component.js +76 -0
  34. package/esm2015/lib/components/form/index/form.component.js +48 -0
  35. package/esm2015/lib/components/form/label/form.label.component.js +31 -0
  36. package/esm2015/lib/components/form/plaque/form.plaque.component.js +176 -0
  37. package/esm2015/lib/components/form/plaque/select/form.plaque.select.component.js +390 -0
  38. package/esm2015/lib/components/form/radio/form.radio.component.js +79 -0
  39. package/esm2015/lib/components/form/select/form.select.component.js +369 -0
  40. package/esm2015/lib/components/form/select/item/form.select.item.component.js +43 -0
  41. package/esm2015/lib/components/form/table/form.table.component.js +98 -0
  42. package/esm2015/lib/components/form/textarea/form.textarea.component.js +78 -0
  43. package/esm2015/lib/components/form/textbox/form.textbox.component.js +186 -0
  44. package/esm2015/lib/components/form/time/form.time.component.js +145 -0
  45. package/esm2015/lib/components/form/tree/form.tree.component.js +93 -0
  46. package/esm2015/lib/components/form/tree/item/form.tree.item.component.js +48 -0
  47. package/esm2015/lib/components/header/header.component.js +28 -0
  48. package/esm2015/lib/components/header/sub/sub.header.component.js +14 -0
  49. package/esm2015/lib/components/layout/layout.component.js +23 -0
  50. package/esm2015/lib/components/loading/loading.component.js +22 -0
  51. package/esm2015/lib/components/login/login.component.js +145 -0
  52. package/esm2015/lib/components/modal/modal.component.js +25 -0
  53. package/esm2015/lib/components/notfound/notfound.component.js +29 -0
  54. package/esm2015/lib/components/notification/notification.component.js +14 -0
  55. package/esm2015/lib/components/sidebar/item/sidebar.item.component.js +53 -0
  56. package/esm2015/lib/components/sidebar/sidebar.component.js +65 -0
  57. package/esm2015/lib/components/steps/steps.component.js +51 -0
  58. package/esm2015/lib/components/table/loading/table.loading.component.js +17 -0
  59. package/esm2015/lib/components/table/pagination/table.pagination.component.js +84 -0
  60. package/esm2015/lib/components/table/report/table.report.component.js +245 -0
  61. package/esm2015/lib/components/table/row/table.row.component.js +274 -0
  62. package/esm2015/lib/components/table/table.component.js +207 -0
  63. package/esm2015/lib/components/tooltip/tooltip.component.js +19 -0
  64. package/esm2015/lib/ps-toolkit-ui.module.js +89 -0
  65. package/esm2015/lib/services/config.service.js +14 -0
  66. package/esm2015/ps-toolkit-ui.js +16 -0
  67. package/esm2015/public-api.js +52 -0
  68. package/fesm2015/ps-toolkit-ui.js +6277 -0
  69. package/fesm2015/ps-toolkit-ui.js.map +1 -0
  70. package/lib/classes/enum.class.d.ts +137 -0
  71. package/lib/classes/form.class.d.ts +173 -0
  72. package/lib/classes/helper.class.d.ts +26 -0
  73. package/lib/classes/lang.class.d.ts +5 -0
  74. package/lib/classes/login.class.d.ts +17 -0
  75. package/lib/classes/modal.class.d.ts +19 -0
  76. package/lib/classes/permission.class.d.ts +19 -0
  77. package/lib/classes/request.class.d.ts +12 -0
  78. package/lib/classes/safestyle.class.d.ts +7 -0
  79. package/lib/classes/sidebar.class.d.ts +11 -0
  80. package/lib/classes/steps.class.d.ts +17 -0
  81. package/lib/classes/string.class.d.ts +201 -0
  82. package/lib/classes/table.class.d.ts +67 -0
  83. package/lib/components/accordion/accordion.component.d.ts +7 -0
  84. package/lib/components/alert/alert.component.d.ts +10 -0
  85. package/lib/components/base.component.d.ts +12 -0
  86. package/lib/components/confirm/confirm.component.d.ts +14 -0
  87. package/lib/components/footer/footer.component.d.ts +6 -0
  88. package/lib/components/form/bank-card/form.bank-card.component.d.ts +22 -0
  89. package/lib/components/form/button/form.button.component.d.ts +15 -0
  90. package/lib/components/form/car/form.car.component.d.ts +16 -0
  91. package/lib/components/form/car/search/form.car.search.component.d.ts +18 -0
  92. package/lib/components/form/checkbox/form.checkbox.component.d.ts +14 -0
  93. package/lib/components/form/date/form.date.component.d.ts +41 -0
  94. package/lib/components/form/datetime/form.datetime.component.d.ts +13 -0
  95. package/lib/components/form/file/form.file.component.d.ts +17 -0
  96. package/lib/components/form/finger/form.finger.component.d.ts +15 -0
  97. package/lib/components/form/icon/form.icon.component.d.ts +15 -0
  98. package/lib/components/form/index/form.component.d.ts +10 -0
  99. package/lib/components/form/label/form.label.component.d.ts +8 -0
  100. package/lib/components/form/plaque/form.plaque.component.d.ts +22 -0
  101. package/lib/components/form/plaque/select/form.plaque.select.component.d.ts +36 -0
  102. package/lib/components/form/radio/form.radio.component.d.ts +13 -0
  103. package/lib/components/form/select/form.select.component.d.ts +39 -0
  104. package/lib/components/form/select/item/form.select.item.component.d.ts +12 -0
  105. package/lib/components/form/table/form.table.component.d.ts +9 -0
  106. package/lib/components/form/textarea/form.textarea.component.d.ts +13 -0
  107. package/lib/components/form/textbox/form.textbox.component.d.ts +20 -0
  108. package/lib/components/form/time/form.time.component.d.ts +25 -0
  109. package/lib/components/form/tree/form.tree.component.d.ts +16 -0
  110. package/lib/components/form/tree/item/form.tree.item.component.d.ts +17 -0
  111. package/lib/components/header/header.component.d.ts +7 -0
  112. package/lib/components/header/sub/sub.header.component.d.ts +3 -0
  113. package/lib/components/layout/layout.component.d.ts +6 -0
  114. package/lib/components/loading/loading.component.d.ts +5 -0
  115. package/lib/components/login/login.component.d.ts +13 -0
  116. package/lib/components/modal/modal.component.d.ts +9 -0
  117. package/lib/components/notfound/notfound.component.d.ts +7 -0
  118. package/lib/components/notification/notification.component.d.ts +3 -0
  119. package/lib/components/sidebar/item/sidebar.item.component.d.ts +14 -0
  120. package/lib/components/sidebar/sidebar.component.d.ts +18 -0
  121. package/lib/components/steps/steps.component.d.ts +10 -0
  122. package/lib/components/table/loading/table.loading.component.d.ts +5 -0
  123. package/lib/components/table/pagination/table.pagination.component.d.ts +15 -0
  124. package/lib/components/table/report/table.report.component.d.ts +34 -0
  125. package/lib/components/table/row/table.row.component.d.ts +36 -0
  126. package/lib/components/table/table.component.d.ts +39 -0
  127. package/lib/components/tooltip/tooltip.component.d.ts +5 -0
  128. package/lib/ps-toolkit-ui.module.d.ts +4 -0
  129. package/lib/services/config.service.d.ts +6 -0
  130. package/package.json +22 -0
  131. package/ps-toolkit-ui.d.ts +15 -0
  132. package/ps-toolkit-ui.metadata.json +1 -0
  133. package/public-api.d.ts +48 -0
  134. package/src/assets/fonts/Vazir.eot +0 -0
  135. package/src/assets/fonts/Vazir.ttf +0 -0
  136. package/src/assets/fonts/Vazir.woff +0 -0
  137. package/src/assets/fonts/Vazir.woff2 +0 -0
  138. package/src/assets/fonts/VazirBlack.eot +0 -0
  139. package/src/assets/fonts/VazirBlack.ttf +0 -0
  140. package/src/assets/fonts/VazirBlack.woff +0 -0
  141. package/src/assets/fonts/VazirBlack.woff2 +0 -0
  142. package/src/assets/fonts/VazirBold.eot +0 -0
  143. package/src/assets/fonts/VazirBold.ttf +0 -0
  144. package/src/assets/fonts/VazirBold.woff +0 -0
  145. package/src/assets/fonts/VazirBold.woff2 +0 -0
  146. package/src/assets/fonts/VazirLight.eot +0 -0
  147. package/src/assets/fonts/VazirLight.ttf +0 -0
  148. package/src/assets/fonts/VazirLight.woff +0 -0
  149. package/src/assets/fonts/VazirLight.woff2 +0 -0
  150. package/src/assets/fonts/VazirMedium.eot +0 -0
  151. package/src/assets/fonts/VazirMedium.ttf +0 -0
  152. package/src/assets/fonts/VazirMedium.woff +0 -0
  153. package/src/assets/fonts/VazirMedium.woff2 +0 -0
  154. package/src/assets/fonts/VazirThin.eot +0 -0
  155. package/src/assets/fonts/VazirThin.ttf +0 -0
  156. package/src/assets/fonts/VazirThin.woff +0 -0
  157. package/src/assets/fonts/VazirThin.woff2 +0 -0
  158. package/src/assets/images/partsilicon.png +0 -0
  159. package/src/assets/images/plaque.png +0 -0
  160. package/src/assets/images/plaque_m.png +0 -0
  161. package/src/assets/scripts/base.js +26 -0
  162. package/src/assets/styles/base.css +259 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../projects/ps-toolkit-ui/src/lib/services/config.service.ts","../../../projects/ps-toolkit-ui/src/lib/components/accordion/accordion.component.ts","../../../projects/ps-toolkit-ui/src/lib/classes/string.class.ts","../../../projects/ps-toolkit-ui/src/lib/classes/lang.class.ts","../../../projects/ps-toolkit-ui/src/lib/components/footer/footer.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/ps-toolkit-ui/src/lib/classes/enum.class.ts","../../../projects/ps-toolkit-ui/src/lib/classes/helper.class.ts","../../../projects/ps-toolkit-ui/src/lib/classes/request.class.ts","../../../projects/ps-toolkit-ui/src/lib/classes/form.class.ts","../../../projects/ps-toolkit-ui/src/lib/components/header/header.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/modal/modal.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/sidebar/item/sidebar.item.component.ts","../../../projects/ps-toolkit-ui/src/lib/classes/sidebar.class.ts","../../../projects/ps-toolkit-ui/src/lib/components/sidebar/sidebar.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/steps/steps.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/header/sub/sub.header.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/table/loading/table.loading.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/table/pagination/table.pagination.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/table/row/table.row.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/table/table.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/tooltip/tooltip.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/bank-card/form.bank-card.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/button/form.button.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/checkbox/form.checkbox.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/date/form.date.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/datetime/form.datetime.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/file/form.file.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/icon/form.icon.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/index/form.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/label/form.label.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/plaque/select/form.plaque.select.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/plaque/form.plaque.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/radio/form.radio.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/select/item/form.select.item.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/select/form.select.component.ts","../../../projects/ps-toolkit-ui/src/lib/classes/permission.class.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/table/form.table.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/textarea/form.textarea.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/textbox/form.textbox.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/time/form.time.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/tree/item/form.tree.item.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/tree/form.tree.component.ts","../../../projects/ps-toolkit-ui/src/lib/classes/modal.class.ts","../../../projects/ps-toolkit-ui/src/lib/components/alert/alert.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/confirm/confirm.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/notfound/notfound.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/finger/form.finger.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/car/search/form.car.search.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/form/car/form.car.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/table/report/table.report.component.ts","../../../projects/ps-toolkit-ui/src/lib/classes/safestyle.class.ts","../../../projects/ps-toolkit-ui/src/lib/classes/login.class.ts","../../../projects/ps-toolkit-ui/src/lib/components/login/login.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/loading/loading.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/notification/notification.component.ts","../../../projects/ps-toolkit-ui/src/lib/components/layout/layout.component.ts","../../../projects/ps-toolkit-ui/src/lib/ps-toolkit-ui.module.ts","../../../projects/ps-toolkit-ui/src/lib/components/base.component.ts","../../../projects/ps-toolkit-ui/src/lib/classes/steps.class.ts","../../../projects/ps-toolkit-ui/src/lib/classes/table.class.ts"],"names":["environment","strings","currentLang","this","Inject","args","AccordionComponent","prototype","toggle","e","chOpen","$","target","closest","find","ocOpen","ch","oc","hasClass","removeClass","stop","slideUp","addClass","slideDown","deleteRow","acc","accordion","rows","filter","x","name","onDelete","Component","selector","template","Input","fa","Public","Header","Logout","Login","ReSendCodeDes","Code","Base","BaseDesc","SendCode","SendCodeSubTitle","LoginSms","LoginSmsSubTitle","LoginPassword","LoginPasswordSubTitle","Register","DeviceId","Copy","Footer","Copyright","CreatorDesc","CreatorCom","App","Notfound","Text","Back","Version","Download","IranCode","TrackingCode","Plaque","DriverName","Name","Title","Date","Time","Row","LoginTitle","Username","GetReport","Count","Choose","Payable","PayableLoading","Processing","PDate","SeeMore","Alert","AccessDenied","Image","Grade","Desc","Admin","Print","Password","RePassword","PassportLetter","Passport","Priority","PassportImage","PassportExpireDate","PassportPlace","NationalCode","LicenseNum","BankCard","VehicleType","Gender","Male","FeMale","Accept","Insert","Update","Delete","Subset","Other","Rial","ChooseMonth","FullName","FirstName","LastName","Reject","InvalidRequest","ChangeNotAllow","Confirm","Search","Yes","No","Email","Mobile","Mobile2","Phone","Address","Add","Edit","VerifyCode","Status","Show","Step","Pending","Accepted","Canceled","Rejected","Answered","FromDate","ToDate","Package","CodeInvalid","CodeExpired","Price","Description","Photo","Select","NextStep","PreviousStep","UploadFiles","NamadTitle","Options","Process","NotfoundTitle","PermissionDenied","PerPage","Save","Cancel","UserDeActive","DeleteMessage","ChooseFiles","CodeNotExpired","ChooseFile","FileNotSelected","FileSelected","Selected","Limit","SendCodeLimit","SendCodeError","CodeNotFound","Total","Day","HourP","MinuteP","Hour","Minute","AFew","Ago","Later","LessThanMinute","Finished","Reload","Maximum","Minimum","Export","Send","And","UsernamePasswordInvalid","DbUpdateException","LoadingDot","LoadingDotWhite","Loading","LoadingYellow","LoadingEmpty","LoadingTable","LoadingText","Waiting","Required","Invalid","FormErrorRequired","FormErrorInvalid","FormErrorLength","FormErrorMinLength","FormErrorMaxLength","FormErrorMinAmount","FormErrorMaxAmount","FormErrorExpired","FormErrorWrong","FormErrorNotMatch","FormErrorExist","FormErrorNotExist","FormErrorNotAllowed","FormErrorMaxContent","FormErrorUpload","FormError","FormBaseErrorExpired","FormBaseErrorRegistered","ErrorUpload","FormBaseErrorInvalidParam","FormBaseErrorTimeOut","FormBaseErrorPermission","PaymentError","Error","LangClass","d","lang","_.merge","publicStrings","get","area","c","k","v","_this","cv","_.get","constructor","Array","forEach","replace","config","l","key","PsToolkitUiConfigService","Object","create","__values","o","s","Symbol","iterator","m","i","call","length","next","value","done","TypeError","__read","n","r","ar","push","error","InputError","InputType","OperationEnum","Method","TableCollType","UserType","StatusEnum","PaymentStatusEnum","ResultStatusEnum","PermissionTypeEnum","EnumUtils","getValues","enumObj","getKeys","map","getKeyByValue","keys","getKeysAndValues","HelperClass","getLabel","inp","Length","minLength","MinLength","MaxLength","maxLength","MinAmount","MaxAmount","Expired","Wrong","NotMatch","match","Exist","NotExist","NotAllowed","allowed","join","MaxContent","Upload","desc","description","nationalCodeValid","RegExp","test","check","parseInt","sum","iso7064Mod97_10","iban","remainder","block","slice","shebaValid","str","startWith","newStr","substr","d1","charCodeAt","d2","toString","postalCodeValid","random","upper","lower","num","result","characters","charactersLength","charAt","Math","floor","setCookie","days","expires","date","setTime","getTime","toUTCString","document","cookie","getCookie","nameEQ","ca","split","ca_1","ca_1_1","substring","indexOf","eraseCookie","getDateDif","dt","dif","moment.now","h","moment","locale","format","getRowEnum","Value","Class","getDateRemain","getDate","Hours","Minutes","getDateTime","getFileSize","bytes","suffix","dblSByte","toLocaleString","minimumFractionDigits","maximumFractionDigits","getPDate","clone","copy","assign","cloneJson","JSON","parse","stringify","getName","addNotification","id","append","setTimeout","fadeOut","remove","checkCartDigit","code","getData","state","parent","data","snapshot","apply","arguments","concat","__spread","firstChild","RequestClass","postForm","form","onSubmit","onBeforeSubmit","btns","inputs","type","Submit","btns_1","btns_1_1","btn","loading","btns_2","btns_2_1","getClient","url","method","res","status","Success","onSuccess","onSuccessBase","Unauthorized","NotAccess","message","msg","f","err","focus","onFailed","btns_3","btns_3_1","btns_4","btns_4_1","table","searchForm","getUrl","searchData","List","count","onLoad","page","send","success","failure","FormData","fail","settings","token","apiUrl","processData","contentType","headers","Authorization","dataType","request","$.ajax","response","production","console","log","secs","percent","onEnd","onStart","start","remainSecs","interVal","setInterval","clearInterval","FormClass","permission","cls","subName","Post","onTop","displayLabel","onHideModal","baseUrl","class","loadData","setData","submit","valid","isValid","clear","setButtons","clearInputs","Constant","formOnTop","edit","addButtons","br","InputClass","Label","save","onClick","erase","Button","findIndex","File","vl","_.set","vl_1","vl_1_1","json","vl_2","vl_2_1","iv","setValue","SelectAutoCompletePlaque","SelectAutoComplete","setSearch","icon","required","urlNewTab","disabled","inEditDisabled","inEditVisible","withClear","button","onClickButton","progress","onKeyUp","onKeyDown","options","rel","relUrl","condition","style","position","onChange","hover","visible","exportPdf","open","multiple","onlyChild","row","index","level","modal","nameFun","onFocusOut","changeType","isEdit","focusOut","loadingName","placeholder","Number","Sheba","PostalCode","includes","default","changeIndex","load","u","SelectSearch","SelectAutoCompletePlaqueM","getOptions","Id","setOptions","Tree","getRows","result_1","p","tree","ParentId","OptionClass","tn","search","option","Children","a","TreeRowClass","y","selected","show","day","today","children","unCheck","unCheckParent","checkParent","checkChildren","AccordionClass","hasDelete","_b","_c","AccordionRowClass","click","logout","ModalComponent","ngOnInit","close","Icon","hide","SidebarItemComponent","openClose","op","isActive","item","currentSidebar","controller","action","active","SidebarComponent","router","permissions","toggleSidebar","EventEmitter","sidebar","events","subscribe","event","NavigationEnd","setActive","routerState","root","getSidebarActive","SidebarClass","Controller","Action","item_1","item_1_1","Router","Output","StepsComponent","getActive","steps","items","changeStep","activeAll","navigate","TablePaginationComponent","defineProperty","getButtons","size","perPage","previous","changePage","last","first","dots","buttons","add","b","perPageSelect","TableRowComponent","service","confirmShow","changeRows","loadParent","showChildren","addChildren","itemsWidth","cols","reduce","_a","optEdit","optDelete","hasChildren","childrenAutoLoad","getChildren","hasAccess","loadChildren","showInsertModal","CountChild","Hidden","childrenDiv","nativeElement","is","hasStatus","optStatus","Active","emit","parent_id","Type","Form","sortable","setSortRow","select","onChangeRows","onConfirmShow","axis","handle","update","onSort","getCell","col","fun","enum","DateDif","DateTime","Url","parts","PlaqueText","getCol","ViewChild","TableComponent","loadIcon","sizeIcon","sort","reload","maximum","export","withSearch","setSortable","set","tableDiv","toggleClass","exportDropDown","fadeToggle","ids","confirm","showConfirm","accept","allSelected","isSelected","selectAll","isReport","Ids","disableSelection","RowNum","getOptionModals","rowId","changeSort","sortType","report","window","_d","_e","e_3","_f","FormBankCardComponent","cValue","part1","part2","part3","part4","getValue","onFocusIn","changeFocus","screenX","screenY","keyCode","which","preventDefault","shiftKey","FormButtonComponent","inputBase","mouseClick","codeClick","FormCheckboxComponent","FormDateComponent","previousDays","nextDays","cSearch","months","todayDay","todayMonth","todayYear","setDate","openCalendar","blur","countDayInMonth","daysInMonth","startWeek","startOf","previousMonth","subtract","countDayInPreviousMonth","nextMonth","DayClass","isToday","end","month","year","vDay","vMonth","changeMonth","changeState","changeYear","toggleCalendar","setPosition","inputDiv","inForm","rect","getBoundingClientRect","innerHeight","bottom","inputCalendarDiv","offsetHeight","selectDate","getYears","sy","from","getActiveMonth","FormDatetimeComponent","time","hours","minutes","FormFileComponent","pop","toLowerCase","getPdfImage","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","src","URL","createObjectURL","w","width","height","base64","onerror","files","title","t","FormIconComponent","relatedId","FormComponent","lastInp","lastIndexOf","FormLabelComponent","FormPlaqueSelectComponent","top","alphas","openOptions","loadOptions","relatedTarget","rangeParent","closeOptions","getSearch","setHoverCenter","focusInput","offsetOfBottom","inputOptionsDiv","cI","getSelected","selectOption","getHover","toggleOption","va","scrollTop","offset","o_1","o_1_1","hi","ho","o_2","o_2_1","it","o_3","o_3_1","plaqueChangeFocus","FormPlaqueComponent","PlaqueM","FormRadioComponent","FormSelectItemComponent","hoverOption","opt","toggleChildren","FormSelectComponent","v_1","v_1_1","getSelectedHover","getTitle","os","opts","opts_1","opts_1_1","rs","PermissionClass","Area","Accesses","RelatedId","Access","hasOption","FormTableComponent","lAccess","iAccess","uAccess","dAccess","padding","boxShadow","extraButtons","_","FormTextareaComponent","FormTextboxComponent","navigationKeys","FormTimeComponent","activeHour","activeMinute","toggleTime","hm","selectTime","FormTreeItemComponent","FormTreeComponent","getRowSelected","chs","chs_1","chs_1_1","ModalClass","firstForm","onShow","onHide","fadeIn","Check","AlertComponent","alert","alertLabel","ConfirmComponent","tableId","confirmLabel","back","history","FormFingerComponent","wsRegister","R1","R2","R3","R4","R5","L1","L2","L3","L4","L5","entries","Hash","addRemoveFinger","fv","WebSocket","onopen","onmessage","evt","startsWith","onclose","FormCarSearchComponent","wsAuth","car","motor","driver","fingerprint","user","FormCarComponent","Car","Motorcycle","TableReportComponent","SafeStylePipe","sanitizer","transform","bypassSecurityTrustStyle","Pipe","DomSanitizer","LoginClass","Token","LoginStepClass","LoginComponent","login","sendCodeForm","sendCodeUrl","sendCode","mobile","loginForm_1","code_1","loginUrl","CurrentUser","StepData","labelResend_1","Progress","reSendCodeUrl","loginStep","sendCodeStep","unshift","loginForm_2","username","LayoutComponent","PsToolkitUiModule","forRoot","ngModule","providers","provide","useValue","NgModule","declarations","TableLoadingComponent","SubHeaderComponent","FooterComponent","HeaderComponent","TooltipComponent","NotfoundComponent","LoadingComponent","NotificationComponent","imports","CommonModule","RouterModule","FormsModule","exports","BaseComponent","app","getL","currentUser","getPermission","Permissions","permissions_1","permissions_1_1","pc","per","getPermissionClass","Injectable","TableClass","queryParams","withSelect","Page","Sort","SortType","insert","this_1","OptionLink","OptionLinkNewTab","OptionModal","Modal","OptionReport","OptionFile","OptionConfirm"],"mappings":"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","sourcesContent":["import {Inject} from '@angular/core';\r\n\r\nexport class PsToolkitUiConfigService{\r\n constructor(@Inject('environment') public environment: any,\r\n @Inject('strings') public strings: any,\r\n @Inject('currentLang') public currentLang: string) {\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {AccordionClass, AccordionRowClass} from '../../classes/form.class';\r\n\r\n@Component({\r\n selector: 'lib-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrls: ['./accordion.component.css']\r\n})\r\nexport class AccordionComponent{\r\n @Input()\r\n accordion: AccordionClass;\r\n constructor(){\r\n }\r\n toggle(e): void{\r\n const chOpen = $(e.target).closest('.accordion').find('.content.open');\r\n const ocOpen = chOpen.closest('.accordion-item').find('.header > .icon');\r\n const ch = $(e.target).closest('.accordion-item').find(' > .content');\r\n const oc = ch.closest('.accordion-item').find(' > .header > .icon');\r\n if (ch.hasClass('open')) {\r\n ch.removeClass('open');\r\n ch.stop().slideUp();\r\n oc.removeClass('fa-caret-down').addClass('fa-caret-left');\r\n } else {\r\n if (chOpen){\r\n chOpen.removeClass('open');\r\n chOpen.stop().slideUp();\r\n ocOpen.removeClass('fa-caret-down').addClass('fa-caret-left');\r\n }\r\n ch.addClass('open');\r\n ch.stop().slideDown();\r\n oc.addClass('fa-caret-down').removeClass('fa-caret-left');\r\n }\r\n }\r\n deleteRow(acc: AccordionRowClass): void{\r\n this.accordion.rows = this.accordion.rows.filter(x => x.name !== acc.name);\r\n if (this.accordion.onDelete){\r\n this.accordion.onDelete(acc);\r\n }\r\n }\r\n}\r\n","export const strings = {\r\n fa: {\r\n Public: {\r\n Header: {\r\n Logout: 'خروج'\r\n },\r\n Login: {\r\n ReSendCodeDes: '(ارسال مجدد)',\r\n Code: 'کد تایید',\r\n Base: 'نام سایت',\r\n BaseDesc: 'توضیحات سایت',\r\n SendCode: 'ورود',\r\n SendCodeSubTitle: 'برای ورود شماره همراه خود را وارد کنید',\r\n LoginSms: 'تایید شماره همراه',\r\n LoginSmsSubTitle: 'کد ارسال شده به شماره همراه {} را وارد کنید',\r\n LoginPassword: 'ورود',\r\n LoginPasswordSubTitle: 'برای ورود نام کاربری و کلمه عبور خود را وارد کنید',\r\n Register: 'ثبت کد تایید نرم افزار',\r\n DeviceId: 'کد نرم افزار: {}',\r\n Copy: 'کپی',\r\n },\r\n Footer: {\r\n Copyright: 'تمامی حقوق این وبسایت برای پارت سیلیکون محفوظ است.',\r\n CreatorDesc: 'طراحی و توسعه',\r\n CreatorCom: 'پارت سیلیکون'\r\n },\r\n App: {\r\n Notfound: 'صفحه مورد نظر یافت نشد',\r\n },\r\n Notfound: {\r\n Text: 'متاسفانه صفحه مورد نظر شما یافت نشد',\r\n Back: 'بازگشت'\r\n },\r\n Version: 'نسخه {}',\r\n Download: 'دریافت فایل',\r\n IranCode: 'ایران کد',\r\n TrackingCode: 'کد رهگیری',\r\n Plaque: 'پلاک',\r\n DriverName: 'نام راننده',\r\n Name: 'نام',\r\n Title: 'عنوان',\r\n Text: 'متن',\r\n Date: 'تاریخ',\r\n Time: 'زمان',\r\n Row: 'ردیف',\r\n LoginTitle: 'ورود',\r\n SendCode: 'ارسال کد',\r\n Username: 'نام کاربری',\r\n GetReport: 'چاپ',\r\n Count: 'تعداد',\r\n Choose: 'انتخاب',\r\n Payable: 'مبلغ قابل پرداخت : {} ریال</br><span class=\"f-s-20\">تایید و انتقال به درگاه پرداخت</span>',\r\n PayableLoading: '<span class=\"l-h-60\">تایید و انتقال به درگاه پرداخت</span>',\r\n Processing: 'پردازش',\r\n PDate: 'تاریخ',\r\n SeeMore: 'نمایش بیشتر ...',\r\n Alert: 'هشدار',\r\n AccessDenied: 'عدم دسترسی',\r\n Image: 'تصویر',\r\n Grade: 'پایه تحصیلی',\r\n Desc: 'توضیحات',\r\n Admin: 'ادمین',\r\n Print: 'گزارش',\r\n Password: 'کلمه عبور',\r\n RePassword: 'تکرار کلمه عبور',\r\n PassportLetter: 'حرف',\r\n Passport: 'گذرنامه',\r\n Priority: 'اولویت',\r\n PassportImage: 'تصویر گذرنامه',\r\n PassportExpireDate: 'تاریخ انقضاء گذرنامه',\r\n PassportPlace: 'محل صدور گذرنامه',\r\n NationalCode: 'کدملی',\r\n LicenseNum: 'شماره گواهی نامه',\r\n BankCard: 'شماره کارت بانکی',\r\n VehicleType: 'نوع وسیله نقلیه',\r\n Gender: 'جنسیت',\r\n Male: 'مرد',\r\n FeMale: 'زن',\r\n Accept: 'تایید',\r\n Insert: 'افزودن',\r\n Update: 'ویرایش',\r\n Delete: 'حذف',\r\n Subset: 'زیرمجموعه',\r\n Other: 'سایر',\r\n Rial: 'ریال',\r\n ChooseMonth: 'انتخاب ماه',\r\n FullName: 'نام کامل',\r\n FirstName: 'نام',\r\n LastName: 'نام خانوادگی',\r\n Reject: 'رد کردن',\r\n Code: 'کد تایید',\r\n InvalidRequest: 'درخواست شما نامعتبر است',\r\n ChangeNotAllow: 'امکان ایجاد تغییرات وجود ندارد',\r\n Confirm: 'تاییدیه',\r\n Search: 'جستجو',\r\n Yes: 'بله',\r\n No: 'خیر',\r\n Email: 'پست الکترونیک',\r\n Mobile: 'شماره همراه',\r\n Mobile2: 'شماره همراه 2',\r\n Phone: 'شماره تلفن منزل',\r\n Address: 'آدرس',\r\n Add: 'افزودن',\r\n Edit: 'ویرایش',\r\n VerifyCode: 'تایید کد',\r\n Status: 'وضعیت',\r\n Show: 'نمایش',\r\n Step: 'وضعیت',\r\n Pending: 'در حال بررسی',\r\n Accepted: 'تایید شده',\r\n Canceled: 'انصراف',\r\n Rejected: 'رد شده : {}',\r\n Answered: 'پاسخ داده شده',\r\n FromDate: 'از تاریخ',\r\n ToDate: 'تا تاریخ',\r\n Package: 'اشتراک',\r\n CodeInvalid: 'کد تایید نامعتبر است',\r\n CodeExpired: 'کد تایید منقضی شده است',\r\n Price: 'قیمت',\r\n Description: 'توضیحات',\r\n Photo: 'تصویر',\r\n Select: 'انتخاب',\r\n NextStep: 'مرحله بعد',\r\n PreviousStep: 'مرحله قبل',\r\n UploadFiles: 'بارگذاری مدارک',\r\n NamadTitle: 'نماد',\r\n Options: 'امکانات',\r\n Process: 'پردازش',\r\n NotfoundTitle: 'موردی یافت نشد',\r\n PermissionDenied: 'عدم دسترسی',\r\n PerPage: 'تعداد نمایش در هر صفحه',\r\n Save: 'ذخیره',\r\n Cancel: 'انصراف',\r\n UserDeActive: 'نام کاربری غیر فعال شده است',\r\n DeleteMessage: 'آیا از حذف این مورد مطمئن هستید ؟',\r\n ChooseFiles: 'انتخاب فایل ها',\r\n CodeNotExpired: 'کد تایید ارسال شده منقضی نشده است',\r\n ChooseFile: 'انتخاب فایل',\r\n FileNotSelected: 'فایلی انتخاب نشده است',\r\n FileSelected: '{} فایل انتخاب شده ({})',\r\n Selected: 'انتخاب شده',\r\n Limit: 'محدودیت',\r\n SendCodeLimit: 'محدودیت در ارسال کد',\r\n SendCodeError: 'خطا در ارسال کد',\r\n CodeNotFound: 'کد تایید ارسال نشده است',\r\n Total: 'جمع کل',\r\n Day: 'روز',\r\n HourP: '{} ساعت',\r\n MinuteP: '{} دقیقه',\r\n Hour: 'ساعت',\r\n Minute: 'دقیقه',\r\n AFew: 'چند لحظه',\r\n Ago: 'پیش',\r\n Later: 'دیگر',\r\n LessThanMinute: 'کمتر از یک دقیقه',\r\n Finished: 'پایان یافته',\r\n Reload: 'بارگیری مجدد',\r\n Maximum: 'بزرگ نمایی',\r\n Minimum: 'کوچک نمایی',\r\n Export: 'خروجی',\r\n Send: 'ارسال',\r\n And: ' و ',\r\n UsernamePasswordInvalid: 'نام کاربری یا کلمه عبور اشتباه است',\r\n DbUpdateException: 'امکان حذف رکورد مورد نظر به دلیل استفاده شدن در سامانه وجود ندارد',\r\n // tslint:disable-next-line\r\n LoadingDot: '<span class=\"dot-spinner black\"><div class=\"bounce1\"></div><div class=\"bounce2\"></div><div class=\"bounce3\"></div></span>',\r\n LoadingDotWhite: '<span class=\"dot-spinner white\"><div class=\"bounce1\"></div><div class=\"bounce2\"></div><div class=\"bounce3\"></div></span>',\r\n Loading: 'در حال {} <span class=\"dot-spinner\"><div class=\"bounce1\"></div><div class=\"bounce2\"></div><div class=\"bounce3\"></div></span>',\r\n LoadingYellow: 'در حال {} <span class=\"dot-spinner yellow\"><div class=\"bounce1\"></div><div class=\"bounce2\"></div><div class=\"bounce3\"></div></span>',\r\n LoadingEmpty: '<span class=\"dot-spinner\"><div class=\"bounce1\"></div><div class=\"bounce2\"></div><div class=\"bounce3\"></div></span>',\r\n LoadingTable: '<i class=\"fas fa-spin fa-spinner m-l-5-p icon\"></i> در حال {} <span class=\"dot-spinner black\"><div class=\"bounce1\"></div><div class=\"bounce2\"></div><div class=\"bounce3\"></div></span>',\r\n LoadingText: 'در حال {}',\r\n Waiting: 'انتظار',\r\n Required: 'را وارد کنید',\r\n Invalid: 'نامعتبر است',\r\n FormErrorRequired: '{} را وارد کنید',\r\n FormErrorInvalid: '{} نامعتبر است',\r\n FormErrorLength: 'طول {} باید {} کاراکتر باشد',\r\n FormErrorMinLength: 'طول {} باید حداقل {} کاراکتر باشد',\r\n FormErrorMaxLength: 'طول {} باید حداکثر {} کاراکتر باشد',\r\n FormErrorMinAmount: 'مقدار {} باید حداقل {} باشد',\r\n FormErrorMaxAmount: 'مقدار {} باید حداکثر {} باشد',\r\n FormErrorExpired: '{} منقضی شده است',\r\n FormErrorWrong: '{} اشتباه است',\r\n FormErrorNotMatch: '{} با تکرار آن مطابقت ندارد',\r\n FormErrorExist: '{} در سامانه ثبت شده است',\r\n FormErrorNotExist: '{} در سامانه ثبت نشده است',\r\n FormErrorNotAllowed: 'نوع فایل {} نامعتبر است ({})',\r\n FormErrorMaxContent: 'حجم فایل {} نباید بیشتر از {}KB باشد',\r\n FormErrorUpload: 'خطا در بارگذاری {}',\r\n FormError: 'خطا در {}',\r\n FormBaseErrorExpired: 'لطفا مجددا وارد شوید',\r\n FormBaseErrorRegistered: 'خطا در تایید کد نرم افزار',\r\n ErrorUpload: 'خطا در بارگذاری فایل',\r\n FormBaseErrorInvalidParam: 'خطا در اطلاعات ارسال شده',\r\n FormBaseErrorTimeOut: 'درخواست شما بیش از حد معمول زمان برده است. لطفا مجددا تلاش کنید',\r\n FormBaseErrorPermission: 'عدم دسترسی',\r\n PaymentError: 'خطا در اتصال به درگاه بانکی',\r\n Error: 'متاسفانه در سیستم خطایی به وجود آمده است. لطفا مجددا تلاش کنید',\r\n }\r\n }\r\n};\r\n","import * as _ from 'lodash';\r\nimport {strings as publicStrings} from './string.class';\r\n\r\n// @dynamic\r\nexport class LangClass {\r\n lang: {};\r\n constructor(d: string, strings: {}) {\r\n this.lang = _.merge(publicStrings[d], strings[d]);\r\n }\r\n get(area, c, k, v = null): string {\r\n let cv = _.get(this.lang, area ? `${area}.${c}.${k}` : `${c}.${k}`);\r\n if (!cv){\r\n cv = _.get(this.lang, `Public.${c}.${k}`);\r\n }\r\n if (!cv){\r\n cv = _.get(this.lang, `Public.${k}`);\r\n }\r\n if (!cv){\r\n return k;\r\n }\r\n if (v !== null) {\r\n if (v.constructor === Array) {\r\n v.forEach((x) => {\r\n cv = cv.replace('{}', this.get(area, c, x, null));\r\n });\r\n } else {\r\n cv = cv.replace('{}', this.get(area, c, v, null));\r\n }\r\n }\r\n return cv;\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {LangClass} from '../../classes/lang.class';\r\nimport {PsToolkitUiConfigService} from '../../services/config.service';\r\n\r\n@Component({\r\n selector: 'lib-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\nexport class FooterComponent{\r\n l: (k, v?) => string;\r\n constructor(public config: PsToolkitUiConfigService){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n this.l = (key: string, v = null): string => {\r\n return lang.get('Public', 'Footer', key, v);\r\n };\r\n }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","// @dynamic\r\nexport class EnumUtils {\r\n static getValues(enumObj: any): any[] {\r\n return EnumUtils.getKeys(enumObj).map(value => enumObj[value]);\r\n }\r\n static getKeyByValue(enumObj: any, v): any[] {\r\n return this.getKeys(enumObj).find(key => enumObj[key] === v);\r\n }\r\n static getKeys(enumObj: any): any[] {\r\n return Object.keys(enumObj).filter(key => typeof enumObj[key] === 'number');\r\n }\r\n static getKeysAndValues(enumObj: any): any[] {\r\n return this.getKeys(enumObj).map(key => {\r\n return {\r\n key, value: enumObj[key]\r\n };\r\n });\r\n }\r\n}\r\n\r\nexport enum InputError {\r\n Required = 'Required',\r\n Invalid = 'Invalid',\r\n Length = 'Length',\r\n MinLength = 'MinLength',\r\n MaxLength = 'MaxLength',\r\n MinAmount = 'MinAmount',\r\n MaxAmount = 'MaxAmount',\r\n Expired = 'Expired',\r\n Error = 'Error',\r\n NotMatch = 'NotMatch',\r\n NotAllowed = 'NotAllowed',\r\n MaxContent = 'MaxContent',\r\n Exist = 'Exist',\r\n NotExist = 'NotExist',\r\n Wrong = 'Wrong',\r\n Upload = 'Upload',\r\n}\r\n\r\nexport enum InputType {\r\n Text,\r\n Password,\r\n Mobile,\r\n Phone,\r\n Email,\r\n NationalCode,\r\n PostalCode,\r\n Sheba,\r\n Number,\r\n Select,\r\n SelectSearch,\r\n SelectAutoComplete,\r\n Date,\r\n Time,\r\n DateTime,\r\n Check,\r\n TextArea,\r\n Label,\r\n Button,\r\n Submit,\r\n Icon,\r\n File,\r\n Url,\r\n Price,\r\n Radio,\r\n Tree,\r\n Plaque,\r\n PlaqueM,\r\n SelectAutoCompletePlaque,\r\n SelectAutoCompletePlaqueM,\r\n BankCard,\r\n Constant,\r\n Hidden,\r\n Table,\r\n CarSearch,\r\n Car,\r\n Finger,\r\n}\r\n\r\nexport enum OperationEnum\r\n{\r\n All = -1,\r\n Insert = 1,\r\n Update = 2,\r\n Delete = 3,\r\n}\r\n\r\nexport enum Method {\r\n Get,\r\n Post,\r\n Delete,\r\n Put,\r\n Options,\r\n Patch,\r\n}\r\n\r\nexport enum TableCollType {\r\n Text,\r\n Date,\r\n Time,\r\n DateTime,\r\n DateDif,\r\n DateRemain,\r\n Url,\r\n Image,\r\n Function,\r\n Price,\r\n Plaque,\r\n PlaqueText,\r\n FileSize,\r\n Bool,\r\n}\r\n\r\nexport enum UserType {\r\n All = 0,\r\n Admin = 1,\r\n User = 2\r\n}\r\n\r\nexport enum StatusEnum\r\n{\r\n All = -1,\r\n Active = 0,\r\n DeActive = 1,\r\n Delete = 2,\r\n Report = 3,\r\n}\r\nexport enum PaymentStatusEnum\r\n{\r\n All = 0,\r\n Success = 100,\r\n NOK = 102,\r\n Request = 103,\r\n Notfound = 104,\r\n NotRequest = 105,\r\n NotfoundPackage = 106\r\n}\r\nexport enum ResultStatusEnum\r\n{\r\n Failed = 0,\r\n Success = 1,\r\n Unauthorized = 2,\r\n NotAccess = 3\r\n}\r\n\r\nexport enum PermissionTypeEnum\r\n{\r\n Form = -1,\r\n Access = 0,\r\n OptionLink = 1,\r\n OptionLinkNewTab = 2,\r\n OptionReport = 3,\r\n OptionFile = 4,\r\n OptionModal = 5,\r\n OptionConfirm = 6\r\n}\r\n\r\nexport enum VehicleType\r\n{\r\n Car = 1,\r\n Motorcycle = 2,\r\n Airplane = 3,\r\n Train = 4,\r\n Ship = 5,\r\n}\r\n","import {InputError} from './enum.class';\r\nimport {InputClass} from './form.class';\r\nimport * as moment from 'jalali-moment';\r\nimport * as $ from 'jquery';\r\n\r\n// @dynamic\r\nexport class HelperClass {\r\n static getLabel(inp: InputClass): string {\r\n if (inp.error === InputError.Required) {\r\n return inp.l('FormErrorRequired', inp.name);\r\n } else if (inp.error === InputError.Invalid) {\r\n return inp.l('FormErrorInvalid', inp.name);\r\n } else if (inp.error === InputError.Length) {\r\n return inp.l('FormErrorLength', [inp.name, inp.minLength]);\r\n } else if (inp.error === InputError.MinLength) {\r\n return inp.l('FormErrorMinLength', [inp.name, inp.minLength]);\r\n } else if (inp.error === InputError.MaxLength) {\r\n return inp.l('FormErrorMaxLength', [inp.name, inp.maxLength]);\r\n } else if (inp.error === InputError.MinAmount) {\r\n return inp.l('FormErrorMinAmount', [inp.name, inp.minLength]);\r\n } else if (inp.error === InputError.MaxAmount) {\r\n return inp.l('FormErrorMaxAmount', [inp.name, inp.maxLength]);\r\n } else if (inp.error === InputError.Expired) {\r\n return inp.l('FormErrorExpired', inp.name);\r\n } else if (inp.error === InputError.Wrong) {\r\n return inp.l('FormErrorWrong', inp.name);\r\n } else if (inp.error === InputError.Error) {\r\n return inp.l('FormError', inp.name);\r\n } else if (inp.error === InputError.NotMatch) {\r\n return inp.l('FormErrorNotMatch', inp.match.name);\r\n } else if (inp.error === InputError.Exist) {\r\n return inp.l('FormErrorExist', inp.name);\r\n } else if (inp.error === InputError.NotExist) {\r\n return inp.l('FormErrorNotExist', inp.name);\r\n } else if (inp.error === InputError.NotAllowed) {\r\n return inp.l('FormErrorNotAllowed', [inp.name, inp.allowed.join(', ')]);\r\n } else if (inp.error === InputError.MaxContent) {\r\n return inp.l('FormErrorMaxContent', [inp.name, inp.maxLength]);\r\n } else if (inp.error === InputError.Upload) {\r\n return inp.l('FormErrorUpload', inp.name);\r\n }\r\n const desc = inp.description !== null ? ' (' + inp.l(inp.description) + ')' : '';\r\n return inp.l(inp.name) + desc;\r\n }\r\n\r\n static nationalCodeValid(c): boolean {\r\n if (!RegExp(/^\\d{10}$/).test(c) || RegExp(/^(.)\\1+$/).test(c)) {\r\n return false;\r\n }\r\n const check = parseInt(c[9], 10);\r\n let sum = 0;\r\n for (let i = 0; i < 9; ++i) {\r\n sum += parseInt(c[i], 10) * (10 - i);\r\n }\r\n sum %= 11;\r\n return (sum < 2 && check === sum) || (sum >= 2 && check + sum === 11);\r\n }\r\n\r\n static iso7064Mod97_10(iban): number{\r\n let remainder = iban;\r\n while (remainder.length > 2){\r\n const block = remainder.slice(0, 9);\r\n remainder = parseInt(block, 10) % 97 + remainder.slice(block.length);\r\n }\r\n\r\n return parseInt(remainder, 10) % 97;\r\n }\r\n\r\n static shebaValid(str): boolean {\r\n const pattern = /IR[0-9]{24}/;\r\n if (!str.startWith('IR')){\r\n str = 'IR' + str;\r\n }\r\n if (str.length !== 26) {\r\n return false;\r\n }\r\n\r\n if (!pattern.test(str)) {\r\n return false;\r\n }\r\n\r\n let newStr = str.substr(4);\r\n const d1 = str.charCodeAt(0) - 65 + 10;\r\n const d2 = str.charCodeAt(1) - 65 + 10;\r\n newStr += d1.toString() + d2.toString() + str.substr(2, 2);\r\n\r\n return this.iso7064Mod97_10(newStr) === 1;\r\n }\r\n\r\n static postalCodeValid(c): boolean {\r\n return RegExp(/^\\b(?!(\\d)\\1{3})[13-9]{4}[1346-9][013-9]{5}\\b$/).test(c);\r\n }\r\n static random(length, upper = true, lower = true, num = true): string {\r\n let result = '';\r\n const characters = `${upper ? 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' : ''}${lower ? 'abcdefghijklmnopqrstuvwxyz' : ''}${num ? '123456789' : ''}`;\r\n const charactersLength = characters.length;\r\n for (let i = 0; i < length; i++ ) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n return result;\r\n }\r\n static setCookie(name, value, days): void {\r\n let expires = '';\r\n if (days) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = '; expires=' + date.toUTCString();\r\n }\r\n document.cookie = name + '=' + (value || '') + expires + '; path=/';\r\n }\r\n static getCookie(name): string {\r\n const nameEQ = name + '=';\r\n const ca = document.cookie.split(';');\r\n for (let c of ca) {\r\n while (c.charAt(0) === ' '){\r\n c = c.substring(1, c.length);\r\n }\r\n if (c.indexOf(nameEQ) === 0){\r\n return c.substring(nameEQ.length, c.length);\r\n }\r\n }\r\n return null;\r\n }\r\n static eraseCookie(name): void {\r\n document.cookie.split(';')\r\n .forEach((c) => { document.cookie = c.replace(/^ +/, '').replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/'); });\r\n }\r\n static getDateDif(l, dt: string): string{\r\n const d = parseInt(dt.substring(6, dt.length - 2), 10);\r\n const now = moment.now();\r\n const dif = (now - d) / 1000;\r\n const h = Math.floor(dif / 3600);\r\n const m = Math.floor(dif % 3600 / 60);\r\n if (h < 24)\r\n {\r\n let r = h > 0 ? l('HourP', h.toString()) : '';\r\n r += r !== '' && m > 0 ? l('And') : '';\r\n r += m > 0 ? l('MinuteP', m.toString()) : '';\r\n r += r !== '' ? '' : l('AFew');\r\n r += ' ' + l('Ago');\r\n return r;\r\n }\r\n return '<div class=\"ltr\">' + moment(d).locale('fa').format('jYYYY/jMM/jDD HH:mm') + '</div>';\r\n }\r\n static getRowEnum(l, e, dt): string{\r\n const v = e.find(x => x.Value === dt);\r\n return `<span class=\"status ${v.Class}\">` + l(v.Name) + '</span>';\r\n }\r\n static getDateRemain(l, dt: string): string{\r\n const d = parseInt(dt.substring(6, dt.length - 2), 10);\r\n const now = moment.now();\r\n const dif = (d - now) / 1000;\r\n if (dif <= 0)\r\n {\r\n return l('Ended');\r\n }\r\n const h = Math.floor(dif / 3600);\r\n const m = Math.floor(dif % 3600 / 60);\r\n if (h < 24)\r\n {\r\n let r = h > 0 ? l('HourP', h.toString()) : '';\r\n r += r !== '' && m > 0 ? l('And') : '';\r\n r += m > 0 ? l('MinuteP', m.toString()) : '';\r\n r += r !== '' ? '' : l('AFew');\r\n r += ' ' + l('Later');\r\n return r;\r\n }\r\n return '<div class=\"ltr\">' + moment(d).locale('fa').format('jYYYY/jMM/jDD HH:mm') + '</div>';\r\n }\r\n static getDate(dt: string): string{\r\n try {\r\n if (dt === null){\r\n return '';\r\n }\r\n const d = parseInt(dt.substring(6, dt.length - 2), 10);\r\n return moment(d).locale('fa').format('jYYYY/jMM/jDD');\r\n }catch (e) {\r\n return dt;\r\n }\r\n }\r\n static getTime(dt: any): string{\r\n try {\r\n if (dt === null){\r\n return '';\r\n }\r\n return `${(dt.Hours > 9 ? dt.Hours : `0${dt.Hours}`)}:${(dt.Minutes > 9 ? dt.Minutes : `0${dt.Minutes}`)}`;\r\n }catch (e) {\r\n return dt;\r\n }\r\n }\r\n static getDateTime(dt: string): string{\r\n if (dt === null){\r\n return '';\r\n }\r\n const d = parseInt(dt.substring(6, dt.length - 2), 10);\r\n return moment(d).locale('fa').format('jYYYY/jMM/jDD HH:mm');\r\n }\r\n static getFileSize(bytes: number): string {\r\n const suffix = [ 'B', 'KB', 'MB', 'GB', 'TB'];\r\n let dblSByte = bytes;\r\n let i = 0;\r\n for (; i < suffix.length && bytes >= 1024; i++, bytes /= 1024)\r\n {\r\n dblSByte = bytes / 1024.0;\r\n }\r\n return `${dblSByte.toLocaleString('en-US', {\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 1,\r\n })} ${suffix[i]}`;\r\n }\r\n static getPDate(l, s): string{\r\n return s.replace(/Hour/g, l('Hour'))\r\n .replace(/LessThanMinute/g, l('LessThanMinute'))\r\n .replace(/Minute/g, l('Minute'))\r\n .replace(/And/g, l('And'))\r\n .replace(/AFew/g, l('AFew'))\r\n .replace(/Finished/g, l('Finished'))\r\n .replace(/Day/g, l('Day'))\r\n .replace(/Later/g, l('Later'))\r\n .replace(/Ago/g, l('Ago'));\r\n }\r\n\r\n static clone<T>(v: T): T {\r\n if (v == null){\r\n return;\r\n }\r\n const copy = new (v.constructor as { new() })();\r\n Object.assign(copy, v);\r\n return copy;\r\n }\r\n static cloneJson(inp): any {\r\n return JSON.parse(JSON.stringify(inp));\r\n }\r\n static getName(n): string{\r\n return n.replace(/ک/g, 'ك').replace(/ی/g, 'ي').replace(/آ/g, 'آ');\r\n }\r\n static addNotification(m): void{\r\n const id = HelperClass.random(20);\r\n // tslint:disable-next-line\r\n $('#Notifications').append('<div id=\"' + id + '\" class=\"con\"><div class=\"item\"><i class=\"fas fa-times\"></i><div>' + m + '</div></div></div>');\r\n setTimeout(() => {\r\n const d = $('#' + id);\r\n d.fadeOut(300, () => {\r\n d.remove();\r\n });\r\n }, 5000);\r\n }\r\n static checkCartDigit(code): boolean{\r\n const l = code.length;\r\n if (l < 16 || parseInt(code.substr(1, 10), 10) === 0 ||\r\n parseInt(code.substr(10, 6), 10) === 0) {\r\n return false;\r\n }\r\n let s = 0;\r\n for (let i = 0; i < 16; i++){\r\n const k = i % 2 === 0 ? 2 : 1;\r\n const d = parseInt(code.substr(i, 1), 10) * k;\r\n s += d > 9 ? d - 9 : d;\r\n }\r\n return s % 10 === 0;\r\n }\r\n\r\n static getData(key, state, parent): any {\r\n const data = [];\r\n if (parent && parent.snapshot.data && parent.snapshot.data[key]) {\r\n data.push(parent.snapshot.data[key]);\r\n }\r\n\r\n if (state && parent) {\r\n data.push(...this.getData(key, state, state.firstChild(parent)));\r\n }\r\n return data;\r\n }\r\n}\r\n","import {FormClass, InputClass} from './form.class';\r\nimport {InputError, InputType, Method, ResultStatusEnum} from './enum.class';\r\nimport {TableClass} from './table.class';\r\nimport {HelperClass} from './helper.class';\r\nimport * as $ from 'jquery';\r\n\r\nexport class RequestClass {\r\n constructor(public environment = null, public l: (k, v?) => string = null) {\r\n }\r\n\r\n postForm(form: FormClass, onSubmit = null): void {\r\n if (!form.check()) {\r\n return;\r\n }\r\n if (form.onBeforeSubmit && !form.onBeforeSubmit()){\r\n return;\r\n }\r\n const btns = form.inputs.filter(x => x.type === InputType.Submit);\r\n for (const btn of btns){\r\n if (btn.loading){\r\n return;\r\n }\r\n btn.loading = true;\r\n }\r\n if (onSubmit){\r\n for (const btn of btns){\r\n btn.loading = false;\r\n }\r\n onSubmit(form.data());\r\n return;\r\n }\r\n this.getClient(form.url, form.method, form.data(),\r\n (res) => {\r\n if (res.status === ResultStatusEnum.Success) {\r\n if (form.onSuccess) {\r\n form.onSuccess(res.result);\r\n }\r\n if (form.onSuccessBase) {\r\n form.onSuccessBase(res.result);\r\n }\r\n } else {\r\n let m = '';\r\n if (res.status === ResultStatusEnum.Unauthorized) {\r\n m = 'FormBaseErrorExpired';\r\n } else if (res.status === ResultStatusEnum.NotAccess) {\r\n m = 'FormBaseErrorPermission';\r\n } else {\r\n if (typeof res.message === 'string'){\r\n m = res.message;\r\n }else{\r\n // tslint:disable-next-line:forin\r\n for (const msg in res.message) {\r\n // noinspection JSUnfilteredForInLoop\r\n m = form.l(msg, res.message[msg]);\r\n }\r\n }\r\n let f = false;\r\n if (res.result != null){\r\n // tslint:disable-next-line:forin\r\n for (const err in res.result) {\r\n // noinspection JSUnfilteredForInLoop\r\n const i = form.inputs.find(x => x.name === err);\r\n if (i){\r\n // noinspection JSUnfilteredForInLoop\r\n i.error = InputError[InputError[res.result[err]]];\r\n if (!f){\r\n i.focus();\r\n f = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (m) {\r\n HelperClass.addNotification(form.l(m));\r\n }\r\n if (form.onFailed) {\r\n form.onFailed(res.message);\r\n }\r\n }\r\n for (const btn of btns){\r\n btn.loading = false;\r\n }\r\n },\r\n (res) => {\r\n HelperClass.addNotification(form.l('Error'));\r\n if (form.onFailed) {\r\n form.onFailed('Error');\r\n }\r\n for (const btn of btns){\r\n btn.loading = false;\r\n }\r\n }\r\n );\r\n }\r\n\r\n table(table: TableClass, btn: InputClass = null): void {\r\n if (table.searchForm && !table.searchForm.check()) {\r\n return;\r\n }\r\n table.loading = true;\r\n if (btn){\r\n if (btn.loading){\r\n return;\r\n }\r\n btn.loading = true;\r\n }\r\n this.getClient(table.getUrl(), table.method, table.searchData(),\r\n (res) => {\r\n if (res.status === ResultStatusEnum.Success) {\r\n table.rows = res.result.List;\r\n table.count = res.result.Count;\r\n if (table.onLoad){\r\n table.onLoad();\r\n }\r\n if (btn){\r\n btn.loading = false;\r\n }\r\n table.loading = false;\r\n } else {\r\n let m = '';\r\n if (res.status === ResultStatusEnum.Unauthorized) {\r\n m = 'FormBaseErrorExpired';\r\n } else if (res.status === ResultStatusEnum.NotAccess) {\r\n m = 'FormBaseErrorPermission';\r\n } else {\r\n if (typeof res.message === 'string'){\r\n m = res.message;\r\n }else{\r\n // tslint:disable-next-line:forin\r\n for (const msg in res.message) {\r\n // noinspection JSUnfilteredForInLoop\r\n m = table.l(msg, res.message[msg]);\r\n }\r\n }\r\n }\r\n if (m) {\r\n HelperClass.addNotification(table.l(m));\r\n }\r\n table.rows = [];\r\n table.count = 0;\r\n table.page = 1;\r\n if (btn){\r\n btn.loading = false;\r\n }\r\n table.loading = false;\r\n }\r\n },\r\n (res) => {\r\n table.rows = [];\r\n table.count = 0;\r\n table.page = 1;\r\n if (btn){\r\n btn.loading = false;\r\n }\r\n table.loading = false;\r\n }\r\n );\r\n }\r\n send(url: string, method: Method, data: any, btn: InputClass = null, success: (result) => void = null,\r\n failure: (message) => void = null): void {\r\n if (btn){\r\n if (btn.loading){\r\n return;\r\n }\r\n btn.loading = true;\r\n }\r\n if (data === null){\r\n data = new FormData();\r\n }\r\n this.getClient(url, method, data,\r\n (res) => {\r\n if (res.status === ResultStatusEnum.Success) {\r\n if (success) {\r\n success(res.result);\r\n }\r\n if (btn){\r\n btn.loading = false;\r\n }\r\n } else {\r\n let m = '';\r\n if (res.status === ResultStatusEnum.Unauthorized) {\r\n m = 'FormBaseErrorExpired';\r\n } else if (res.status === ResultStatusEnum.NotAccess) {\r\n m = 'FormBaseErrorPermission';\r\n } else {\r\n if (typeof res.message === 'string'){\r\n m = res.message;\r\n }else{\r\n // tslint:disable-next-line:forin\r\n for (const msg in res.message) {\r\n // noinspection JSUnfilteredForInLoop\r\n m = this.l(msg, res.message[msg]);\r\n }\r\n }\r\n }\r\n if (m) {\r\n HelperClass.addNotification(this.l(m));\r\n }\r\n if (failure) {\r\n failure(res.message);\r\n }\r\n if (btn){\r\n btn.loading = false;\r\n }\r\n }\r\n },\r\n (res) => {\r\n if (failure) {\r\n failure('Error');\r\n }\r\n if (btn){\r\n btn.loading = false;\r\n }\r\n }\r\n );\r\n }\r\n getClient(url: string, method: Method, data: any, done, fail): void{\r\n const token = HelperClass.getCookie('Authorization');\r\n let settings;\r\n if (data instanceof FormData){\r\n settings = {\r\n url: this.environment.apiUrl + url,\r\n method: Method[method].toString(),\r\n processData: false,\r\n contentType: false,\r\n data,\r\n headers: token == null ? {} : { Authorization: token }\r\n };\r\n }else{\r\n settings = {\r\n url: this.environment.apiUrl + url,\r\n method: Method[method].toString(),\r\n dataType: 'json',\r\n contentType: 'application/json; charset=utf-8',\r\n data: data !== null && data !== {} ? JSON.stringify(data) : null,\r\n headers: token == null ? {} : { Authorization: token, Accept: 'application/json' }\r\n };\r\n }\r\n const request = $.ajax(settings);\r\n request.done((response) => {\r\n if (!this.environment.production){\r\n console.log('%c' + Method[method].toString() + ' : ' + url, 'background: #2f6054; color: white', response);\r\n }\r\n done(response);\r\n });\r\n request.fail((response) => {\r\n if (!this.environment.production){\r\n console.log('%c' + Method[method].toString() + ' : ' + url, 'background: #8c413a; color: white', response);\r\n }\r\n fail(response);\r\n });\r\n }\r\n}\r\n","import {EnumUtils, InputError, InputType, Method} from './enum.class';\r\nimport {HelperClass} from './helper.class';\r\nimport {RequestClass} from './request.class';\r\nimport {TableClass} from './table.class';\r\nimport * as $ from 'jquery';\r\nimport {ModalClass} from './modal.class';\r\nimport * as _ from 'lodash';\r\n\r\nexport class Progress {\r\n constructor(secs: number) {\r\n this.secs = this.remainSecs = secs;\r\n }\r\n secs: number;\r\n remainSecs: number;\r\n percent = 98;\r\n interVal;\r\n onEnd: () => void = null;\r\n onStart: () => void = null;\r\n start = () => {\r\n this.remainSecs = this.secs;\r\n this.percent = 98;\r\n if (this.onStart){\r\n this.onStart();\r\n }\r\n this.interVal = setInterval( () => {\r\n this.percent = (this.remainSecs / this.secs) * 98;\r\n if (this.remainSecs === 0){\r\n clearInterval(this.interVal);\r\n if (this.onEnd){\r\n this.onEnd();\r\n }\r\n }\r\n this.remainSecs -= 0.5;\r\n }, 500);\r\n }\r\n}\r\nexport class FormClass {\r\n constructor(environment: any, l: (k, v?) => string, name: string = null, permission: boolean = true,\r\n url: string = null, cls: string = null) {\r\n this.environment = environment;\r\n this.l = l;\r\n this.url = url;\r\n this.baseUrl = url;\r\n this.class = cls;\r\n this.permission = permission;\r\n this.name = name;\r\n this.id = this.name;\r\n }\r\n l: (k, v?) => string;\r\n permission: boolean;\r\n environment: any = null;\r\n name: string;\r\n subName: string = null;\r\n id: string;\r\n class: string;\r\n baseUrl: string;\r\n url: string;\r\n method: Method = Method.Post;\r\n loading = false;\r\n style: {};\r\n onTop = false;\r\n displayLabel = true;\r\n inputs: InputClass[] = [];\r\n onSuccessBase: (result) => void = null;\r\n onSuccess: (result) => void = null;\r\n onFailed: (result) => void = null;\r\n onLoad: (result) => void = null;\r\n onBeforeSubmit: () => boolean = null;\r\n onHideModal: () => void = null;\r\n\r\n loadData(url): void {\r\n this.loading = true;\r\n new RequestClass(this.environment, this.l).send(url, Method.Post, null, null, (result) => {\r\n setTimeout(() => {\r\n this.setData(result);\r\n this.loading = false;\r\n if (this.onLoad){\r\n this.onLoad(result);\r\n }\r\n }, 500);\r\n });\r\n }\r\n submit(onSubmit = null): void {\r\n new RequestClass(this.environment, this.l).postForm(this, onSubmit);\r\n }\r\n check(): boolean {\r\n let valid = true;\r\n this.inputs.forEach(inp => {\r\n if (!inp.isValid()) {\r\n if (valid){\r\n inp.focus();\r\n }\r\n valid = false;\r\n }\r\n });\r\n return valid;\r\n }\r\n clear(): void {\r\n this.method = Method.Post;\r\n this.url = this.baseUrl;\r\n this.name = this.name.replace('Update', 'Insert');\r\n this.setButtons(this.onTop, false);\r\n this.clearInputs();\r\n }\r\n clearInputs(): void{\r\n this.inputs.filter(x => x.type !== InputType.Constant).forEach(inp => {\r\n inp.clear();\r\n });\r\n }\r\n setButtons(formOnTop, edit: boolean, id = null): void {\r\n const s = this.inputs.find(x => x.type === InputType.Submit);\r\n if (!s){\r\n return;\r\n }\r\n s.name = edit ? 'Accept' : 'Save';\r\n s.class = edit ? s.class.replace('green', 'blue') : s.class.replace('blue', 'green');\r\n }\r\n addButtons(name = 'Save', cls = 'green', clear = true, onSubmit = null): void {\r\n if (this.inputs.filter(x => x.type === InputType.Submit).length > 0){\r\n return;\r\n }\r\n const br = new InputClass(this.environment, this.l, null, null, InputType.Label,\r\n (this.onTop ? 'space' : 'underline') + (onSubmit === null ? '' : ' m-v-5'));\r\n const save = new InputClass(this.environment, this.l, name, 'fad fa-check', InputType.Submit, 'w-30 f-l ' + cls + (onSubmit === null ? ' h-30' : ' h-25'));\r\n save.onClick = () => {\r\n this.submit(onSubmit);\r\n };\r\n this.inputs.push(br);\r\n this.inputs.push(save);\r\n if (clear){\r\n const erase = new InputClass(this.environment, this.l, null, 'fad fa-eraser', InputType.Button,\r\n 'f-l w-u grey' + (onSubmit === null ? ' h-30' : ' h-25'));\r\n erase.onClick = () => {\r\n if (this.onTop){\r\n this.clear();\r\n }else{\r\n this.clearInputs();\r\n }\r\n };\r\n this.inputs.push(erase);\r\n }\r\n }\r\n data(d = null): any {\r\n if (this.inputs.findIndex(x => x.type === InputType.File) === -1){\r\n if (d == null){\r\n d = {};\r\n }\r\n this.inputs.forEach(inp => {\r\n const vl = inp.data();\r\n if (vl !== null){\r\n _.set(d, inp.name, vl);\r\n }\r\n });\r\n }else{\r\n if (d == null){\r\n d = new FormData();\r\n }\r\n this.inputs.forEach(inp => {\r\n const vl = inp.data();\r\n if (vl !== null){\r\n if (vl instanceof Array){\r\n for (const v of vl){\r\n d.append(inp.name, v);\r\n }\r\n }else{\r\n d.append(inp.name, vl);\r\n }\r\n }\r\n });\r\n }\r\n return d;\r\n }\r\n json(d = null): {} {\r\n if (d == null){\r\n d = {};\r\n }\r\n this.inputs.forEach(inp => {\r\n const vl = inp.data();\r\n if (vl !== null && vl !== ''){\r\n if (vl instanceof Array){\r\n for (const v of vl){\r\n d[inp.name] = v;\r\n }\r\n }else{\r\n d[inp.name] = vl;\r\n }\r\n }\r\n });\r\n return d;\r\n }\r\n setData(d): void {\r\n this.inputs.forEach(inp => {\r\n const iv = _.get(d, inp.name);\r\n inp.setValue(iv, true);\r\n if (inp.type === InputType.SelectAutoCompletePlaque || inp.type === InputType.SelectAutoComplete){\r\n inp.setSearch(d[inp.name.replace('Id', '')]);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport class InputClass {\r\n constructor(environment: any, l: (k, v?) => string, name: string, icon: string = null,\r\n type: InputType = InputType.Text, cls: string = '', value = null,\r\n required: boolean = true, minLength = -1, maxLength = -1) {\r\n this.environment = environment;\r\n this.l = l;\r\n this.name = name;\r\n this.loadingName = name;\r\n this.placeholder = name;\r\n this.icon = icon;\r\n this.class = cls + ([InputType.Mobile, InputType.Phone, InputType.Password, InputType.Email, InputType.Number, InputType.Price,\r\n InputType.NationalCode, InputType.Sheba, InputType.PostalCode, InputType.Date, InputType.Time].includes(type) ? ' ltr' : '');\r\n this.type = type;\r\n this.value = value;\r\n this.default = HelperClass.clone(value);\r\n this.required = required;\r\n this.minLength = type === InputType.Mobile || type === InputType.Phone ? 11 :\r\n type === InputType.NationalCode || type === InputType.PostalCode ? 10 :\r\n type === InputType.Sheba ? 24 : minLength;\r\n this.maxLength = type === InputType.Mobile || type === InputType.Phone ? 11 :\r\n type === InputType.NationalCode || type === InputType.PostalCode ? 10 :\r\n type === InputType.Sheba ? 24 : maxLength;\r\n }\r\n environment: any = null;\r\n l: (k, v?) => string;\r\n name: string;\r\n url = null;\r\n urlNewTab = false;\r\n loadingName: string;\r\n placeholder: string;\r\n id: string;\r\n icon: string;\r\n class: string;\r\n description: string = null;\r\n type: InputType;\r\n value;\r\n search;\r\n default;\r\n required: boolean;\r\n disabled = false;\r\n inEditDisabled = false;\r\n inEditVisible = true;\r\n displayLabel = true;\r\n withClear = false;\r\n minLength = -1;\r\n maxLength = -1;\r\n error: InputError = null;\r\n loading = false;\r\n button = null;\r\n onClickButton: () => void = null;\r\n progress: Progress = null;\r\n onClick: (btn) => void = null;\r\n onKeyUp: (inp) => void = null;\r\n onKeyDown: (e) => void = null;\r\n options: OptionClass[] = [];\r\n match: InputClass = null;\r\n rel: InputClass = null;\r\n relUrl: string = null;\r\n condition = null;\r\n table: TableClass;\r\n style = {};\r\n position = 'bottom';\r\n onChange: (v, e?) => void = null;\r\n hover = -1;\r\n visible = true;\r\n exportPdf = false;\r\n open = false;\r\n multiple = false;\r\n onlyChild = true;\r\n allowed = null;\r\n row = null;\r\n rows = [];\r\n index = 0;\r\n level = null;\r\n modal: ModalClass = null;\r\n nameFun: (r) => void = null;\r\n onFocusOut: (e) => void = () => {};\r\n focus(changeIndex: boolean = false): void {}\r\n changeType: (t: InputType) => void = () => {};\r\n setValue: (v, isEdit) => void = (v, isEdit) => { this.value = v; };\r\n setSearch: (v) => void = () => {};\r\n clear: () => void = () => { this.value = null; };\r\n focusOut: () => void = () => {};\r\n data: () => any = () => {\r\n return this.value;\r\n }\r\n isValid: () => boolean = () => {\r\n return true;\r\n }\r\n load(u = null, done: () => void = null): void{\r\n u = u ? u : this.url;\r\n if (u){\r\n this.options = [];\r\n this.hover = -1;\r\n this.index = 0;\r\n this.rows = [];\r\n if (typeof u === 'string') {\r\n if (!u.includes('{}')){\r\n new RequestClass(this.environment, this.l).send(u ? u : this.url, Method.Post, null, this, (result) => {\r\n if (this.type === InputType.SelectSearch || this.type === InputType.Select || this.type === InputType.SelectAutoComplete ||\r\n this.type === InputType.SelectAutoCompletePlaque || this.type === InputType.SelectAutoCompletePlaqueM) {\r\n const r = this.getOptions(result, null);\r\n const s = result.find(x => x.Selected);\r\n if (s) {\r\n this.value = s.Id.toString();\r\n }\r\n this.setOptions(r);\r\n } else if (this.type === InputType.Tree) {\r\n this.rows = this.getRows(result, null);\r\n }\r\n if (done) {\r\n done();\r\n }\r\n });\r\n }\r\n }else{\r\n const result = [];\r\n EnumUtils.getKeysAndValues(u).forEach((k) => {\r\n result.push({Name: this.l(k.key), Id: k.value.toString()});\r\n });\r\n const r = this.getOptions(result, null);\r\n this.setOptions(r);\r\n }\r\n } else if (this.options instanceof Array){\r\n this.options.forEach(x => x.index = this.index++);\r\n }\r\n }\r\n setOptions(r): void{\r\n this.options = r;\r\n if (this.value != null){\r\n setTimeout(() => {\r\n this.setValue(this.value, true);\r\n }, 500);\r\n }\r\n }\r\n getOptions(r, p, tree = true): OptionClass[]{\r\n return r.filter(x => (p == null && !x.ParentId) || x.ParentId === p || !tree)\r\n .map((x) => {\r\n const o = new OptionClass(x.Name, x.Id.toString());\r\n if (this.type === InputType.SelectAutoCompletePlaque || this.type === InputType.SelectAutoCompletePlaqueM || this.name === 'CarId'){\r\n const tn = o.name.split('_');\r\n if (tn.length === 4){\r\n tn[1] += '&lrm;';\r\n tn[2] += ' |';\r\n o.name = tn.join(' ');\r\n } else if (tn.length === 2){\r\n o.name = tn.join(' ');\r\n }\r\n }\r\n o.search = x.Search;\r\n o.option = x;\r\n o.index = this.index++;\r\n o.options = tree ? this.getOptions(r, x.Id) : [];\r\n return o;\r\n });\r\n }\r\n getRows(r, p): TreeRowClass[]{\r\n const l = [];\r\n r.filter(x => (p == null && !x.ParentId) || x.ParentId === p).forEach((x) => {\r\n let c = this.getRows(r, x.Id);\r\n c = c.length > 0 ? c : x.Children ? x.Children.map(a => new TreeRowClass(a.Name, a.Id, a.Selected)) : [];\r\n let s = x.Selected === true;\r\n if (this.onlyChild){\r\n s = c.length === 0 ? x.Selected : (c.find(y => y.selected === false || y.selected === null) == null ? true :\r\n (c.find(y => y.selected === true || y.selected === null) != null ? null : false));\r\n }\r\n const n = this.nameFun ? this.nameFun(x) : x.Name;\r\n l.push(new TreeRowClass(n, x.Id, s, c));\r\n });\r\n return l;\r\n }\r\n getLabel(): string {\r\n return HelperClass.getLabel(this);\r\n }\r\n}\r\n\r\nexport class OptionClass {\r\n constructor(name: string, value: string, options: OptionClass[] = [], cls: string = null) {\r\n this.name = name;\r\n this.value = value;\r\n this.options = options;\r\n this.class = cls;\r\n }\r\n option;\r\n search: string;\r\n class: string;\r\n name: string;\r\n value: string;\r\n index: number;\r\n show = true;\r\n selected = false;\r\n parent: OptionClass = null;\r\n options: OptionClass[];\r\n loading = false;\r\n}\r\nexport class DayClass {\r\n constructor(day: number, today: boolean, selected: boolean) {\r\n this.day = day;\r\n this.today = today;\r\n this.selected = selected;\r\n }\r\n day: number;\r\n today: boolean;\r\n selected: boolean;\r\n}\r\nexport class TreeRowClass {\r\n constructor(name: string, value: string, selected: boolean = false, children: TreeRowClass[] = []) {\r\n this.name = name;\r\n this.value = value;\r\n this.selected = selected;\r\n this.children = children;\r\n }\r\n name: string;\r\n value: string;\r\n selected: boolean;\r\n parent: TreeRowClass;\r\n children: TreeRowClass[];\r\n toggle(): void {\r\n if (this.selected){\r\n this.unCheck();\r\n setTimeout(() => {this.unCheckParent(); });\r\n }else{\r\n this.check();\r\n setTimeout(() => {this.checkParent(); });\r\n }\r\n }\r\n check(c: TreeRowClass = this): void {\r\n c.selected = true;\r\n c.checkChildren();\r\n }\r\n unCheck(c: TreeRowClass = this): void {\r\n c.selected = false;\r\n c.children.forEach((ch) => {\r\n this.unCheck(ch);\r\n });\r\n }\r\n checkChildren(): void{\r\n this.children.forEach((ch) => {\r\n this.check(ch);\r\n });\r\n }\r\n checkParent(p: TreeRowClass = this.parent): void{\r\n if (p){\r\n if (p.children.filter(x => !x.selected).length > 0){\r\n p.selected = null;\r\n }else{\r\n p.selected = true;\r\n }\r\n this.checkParent(p.parent);\r\n }\r\n }\r\n unCheckParent(p: TreeRowClass = this.parent): void{\r\n if (p){\r\n if (p.children.filter(x => x.selected || x.selected == null).length > 0){\r\n p.selected = null;\r\n }else{\r\n p.selected = false;\r\n }\r\n this.unCheckParent(p.parent);\r\n }\r\n }\r\n}\r\n\r\nexport class AccordionClass {\r\n constructor(l: (k, v?) => string, name: string, cls: string = '', rows: AccordionRowClass[]) {\r\n this.l = l;\r\n this.name = name;\r\n this.class = cls;\r\n this.rows = rows;\r\n }\r\n l: (k, v?) => string;\r\n name: string;\r\n class: string;\r\n rows: AccordionRowClass[];\r\n hasDelete = false;\r\n displayLabel = false;\r\n loading = false;\r\n onDelete: (row) => void = null;\r\n check(): boolean{\r\n for (const row of this.rows){\r\n if (!row.form.check()){\r\n row.open();\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n\r\nexport class AccordionRowClass {\r\n constructor(id: string, name: string, form: FormClass = null, table: TableClass = null) {\r\n this.id = id;\r\n this.name = name;\r\n this.form = form;\r\n this.table = table;\r\n }\r\n id: string;\r\n name: string;\r\n show = true;\r\n form: FormClass;\r\n table: TableClass;\r\n toggle(): void {\r\n setTimeout(() => {\r\n $('#AccordionRow' + this.id + ' > .header').click();\r\n }, 100);\r\n }\r\n open(): void {\r\n setTimeout(() => {\r\n if (!$('#AccordionRow' + this.id + ' > .content').hasClass('open')){\r\n $('#AccordionRow' + this.id + ' > .header').click();\r\n }\r\n }, 100);\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {InputClass} from '../../classes/form.class';\r\nimport {InputType} from '../../classes/enum.class';\r\nimport {PsToolkitUiConfigService} from '../../services/config.service';\r\nimport {LangClass} from '../../classes/lang.class';\r\nimport {strings} from '../../classes/string.class';\r\n\r\n@Component({\r\n selector: 'lib-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.css']\r\n})\r\nexport class HeaderComponent{\r\n logout: InputClass;\r\n constructor(public config: PsToolkitUiConfigService){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n const l = (key: string, v = null): string => {\r\n return lang.get('Public', 'Header', key, v);\r\n };\r\n this.logout = new InputClass(config.environment, l, 'Logout', null, InputType.Button, 'grey h-30');\r\n this.logout.onClick = () => {\r\n };\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {ModalClass} from '../../classes/modal.class';\r\nimport {InputClass} from '../../classes/form.class';\r\nimport {InputType} from '../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrls: ['./modal.component.css']\r\n})\r\nexport class ModalComponent implements OnInit{\r\n @Input()\r\n modal: ModalClass;\r\n close: InputClass;\r\n constructor(){\r\n }\r\n ngOnInit(): void {\r\n this.close = new InputClass(this.modal.environment, this.modal.l, null, 'fad fa-times', InputType.Icon, 'w-u h-30 red');\r\n this.close.onClick = () => {\r\n this.modal.hide();\r\n };\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {SidebarClass} from '../../../classes/sidebar.class';\r\nimport {LangClass} from '../../../classes/lang.class';\r\nimport {PsToolkitUiConfigService} from '../../../services/config.service';\r\nimport {strings} from '../../../classes/string.class';\r\n\r\n@Component({\r\n selector: 'lib-sidebar-item',\r\n templateUrl: './sidebar.item.component.html',\r\n styleUrls: ['./sidebar.item.component.css']\r\n})\r\nexport class SidebarItemComponent {\r\n @Input()\r\n item: SidebarClass;\r\n @Input()\r\n i: number;\r\n @Input()\r\n base: boolean;\r\n @Input()\r\n currentSidebar;\r\n @Input()\r\n area: string;\r\n l: (k, v?) => string;\r\n constructor(public config: PsToolkitUiConfigService){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n this.l = (key: string, v = null): string => {\r\n return lang.get('Public', 'Sidebar', key, v);\r\n };\r\n }\r\n\r\n openClose(e): void{\r\n const op = $(e.target).closest('.user-sidebar-item');\r\n if (op.hasClass('open')){\r\n op.removeClass('open');\r\n op.find(' > .children').slideUp();\r\n }else{\r\n op.addClass('open');\r\n op.find(' > .children').slideDown();\r\n }\r\n }\r\n\r\n isActive(item: SidebarClass): boolean{\r\n if (item.children.length === 0){\r\n return this.currentSidebar && item.name === this.currentSidebar.name;\r\n }\r\n for (const c of item.children){\r\n if (this.isActive(c)){\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","export class SidebarClass {\r\n constructor(l: (k, v?) => string, name: string, controller: string, action: string, icon: string, children: SidebarClass[] = [],\r\n count = 0) {\r\n this.l = l;\r\n this.controller = controller;\r\n this.action = action;\r\n this.name = name;\r\n this.icon = icon;\r\n this.count = count;\r\n this.children = children;\r\n }\r\n l: (k, v?) => string;\r\n controller: string;\r\n action: string;\r\n name: string;\r\n icon: string;\r\n count = 0;\r\n children: SidebarClass[];\r\n active = false;\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {PsToolkitUiConfigService} from '../../services/config.service';\r\nimport {LangClass} from '../../classes/lang.class';\r\nimport {SidebarClass} from '../../classes/sidebar.class';\r\nimport {NavigationEnd, Router} from '@angular/router';\r\nimport {HelperClass} from '../../classes/helper.class';\r\n\r\n@Component({\r\n selector: 'lib-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.css']\r\n})\r\nexport class SidebarComponent implements OnInit{\r\n @Input()\r\n permissions: any[] = [];\r\n @Input()\r\n area: string;\r\n @Output()\r\n toggleSidebar = new EventEmitter<string>();\r\n sidebar: SidebarClass[] = [];\r\n currentSidebar;\r\n l: (k, v?) => string;\r\n constructor(public config: PsToolkitUiConfigService, private router: Router){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n this.l = (key: string, v = null): string => {\r\n return lang.get('Public', 'Sidebar', key, v);\r\n };\r\n router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.setActive();\r\n }\r\n });\r\n }\r\n setActive(): void{\r\n const active = HelperClass.getData('active', this.router.routerState, this.router.routerState.root)[0];\r\n this.currentSidebar = this.getSidebarActive(this.sidebar, active);\r\n }\r\n ngOnInit(): void {\r\n this.sidebar = this.permissions.map((s) => {\r\n return new SidebarClass(this.l, s.Name, s.Controller, s.Action, s.Icon,\r\n s.Children ? s.Children.map((c) => {\r\n return new SidebarClass(this.l, c.Name, c.Controller, c.Action, c.Icon, []);\r\n }) : []);\r\n });\r\n this.setActive();\r\n }\r\n getSidebarActive(item: SidebarClass[], active): SidebarClass{\r\n for (const i of item){\r\n if (i.controller + (i.action ? i.action : '') === active){\r\n return i;\r\n }\r\n const ca = this.getSidebarActive(i.children, active);\r\n if (ca){\r\n return ca;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\nimport {StepsClass, StepsItemClass} from '../../classes/steps.class';\r\n\r\n@Component({\r\n selector: 'lib-steps',\r\n templateUrl: './steps.component.html',\r\n styleUrls: ['./steps.component.css']\r\n})\r\nexport class StepsComponent{\r\n @Input()\r\n steps: StepsClass;\r\n\r\n constructor(private router: Router) {\r\n }\r\n getActive(): number {\r\n return this.steps.items.findIndex(x => x.active);\r\n }\r\n changeStep(i: number, s: StepsItemClass): void{\r\n if (s.url != null){\r\n if (this.getActive() !== 0 || this.steps.activeAll) {\r\n this.router.navigate([s.url]);\r\n }\r\n }else{\r\n if (s.onClick){\r\n s.onClick(s);\r\n }else{\r\n const a = this.steps.items.findIndex(x => x.active);\r\n if (a > i || this.steps.activeAll){\r\n this.steps.items[a].active = false;\r\n this.steps.items[i].active = true;\r\n }\r\n }\r\n }\r\n }\r\n onDelete(s: StepsItemClass): void{\r\n const a = this.steps.items.findIndex(x => x.name === s.name);\r\n if (this.steps.items[a].active){\r\n this.steps.items[a - 1].active = true;\r\n }\r\n this.steps.items = this.steps.items.filter(x => x.name !== s.name);\r\n s.onDelete(s);\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-sub-header',\r\n templateUrl: './sub.header.component.html',\r\n styleUrls: ['./sub.header.component.css']\r\n})\r\nexport class SubHeaderComponent {\r\n constructor(){\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {TableClass} from '../../../classes/table.class';\r\n\r\n@Component({\r\n selector: 'lib-table-loading',\r\n templateUrl: './table.loading.component.html',\r\n styleUrls: ['./table.loading.component.css']\r\n})\r\nexport class TableLoadingComponent{\r\n @Input()\r\n table: TableClass;\r\n constructor() {\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {TableClass} from '../../../classes/table.class';\r\nimport {InputClass, OptionClass} from '../../../classes/form.class';\r\nimport {InputType} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-table-pagination',\r\n templateUrl: './table.pagination.component.html',\r\n styleUrls: ['./table.pagination.component.css']\r\n})\r\nexport class TablePaginationComponent implements OnInit {\r\n @Input()\r\n table: TableClass;\r\n size: number;\r\n perPageSelect: InputClass;\r\n next: InputClass;\r\n get type(): typeof InputType { return InputType; }\r\n\r\n getButtons(): InputClass[]{\r\n this.size = parseInt((this.table.count / this.table.perPage).toString(), 10) + (this.table.count % this.table.perPage > 0 ? 1 : 0);\r\n if (this.size <= 1) {\r\n return [];\r\n }\r\n const previous = new InputClass(this.table.environment, this.table.l, null,\r\n 'fad fa-angle-right', InputType.Button, 'h-25', this.table.page - 1);\r\n previous.onClick = (btn) => this.changePage(btn);\r\n const next = new InputClass(this.table.environment, this.table.l, null,\r\n 'fad fa-angle-left', InputType.Button, 'h-25', this.table.page + 1);\r\n next.onClick = (btn) => this.changePage(btn);\r\n const last = new InputClass(this.table.environment, this.table.l, this.size.toString(), null,\r\n InputType.Button, 'h-25 last', this.size);\r\n last.onClick = (btn) => this.changePage(btn);\r\n const first = new InputClass(this.table.environment, this.table.l, '1', null, InputType.Button, 'h-25 first', 1);\r\n first.onClick = (btn) => this.changePage(btn);\r\n const dots = new InputClass(this.table.environment, this.table.l, 'dots', '', InputType.Icon);\r\n let buttons: InputClass[] = [];\r\n buttons.push(previous);\r\n if (this.table.page === 1){\r\n previous.onClick = null;\r\n }\r\n if (this.size < 6) {\r\n buttons = buttons.concat(this.add(1, this.size + 1));\r\n } else if (this.table.page < 4) {\r\n buttons = buttons.concat(this.add(1, 5), [dots, last]);\r\n } else if (this.table.page > this.size - 3) {\r\n buttons = buttons.concat([first, dots], this.add(this.size - 3, this.size + 1));\r\n } else {\r\n buttons = buttons.concat([first, dots], this.add(this.table.page - 1, this.table.page + 2), [dots, last]);\r\n }\r\n buttons.push(next);\r\n if (this.table.page === this.size){\r\n next.onClick = null;\r\n }\r\n return buttons;\r\n }\r\n\r\n add(s: number, f: number): InputClass[] {\r\n const l: InputClass[] = [];\r\n for (let i = s; i < f; i++) {\r\n const b = new InputClass(this.table.environment, this.table.l, i.toString(),\r\n null, InputType.Button, 'h-25' + (this.table.page === i ? ' active' : ' extra'), i);\r\n b.onClick = (btn) => this.changePage(btn);\r\n l.push(b);\r\n }\r\n return l;\r\n }\r\n changePage(btn): void{\r\n this.table.page = btn.value;\r\n this.table.load(btn);\r\n }\r\n\r\n ngOnInit(): void{\r\n this.perPageSelect = new InputClass(this.table.environment, this.table.l, 'PerPage', '', InputType.Select, 'h-25 w-80-p f-l');\r\n this.perPageSelect.value = this.table.perPage.toString();\r\n this.perPageSelect.options = [\r\n new OptionClass('5', '5'),\r\n new OptionClass('10', '10'),\r\n new OptionClass('50', '50'),\r\n new OptionClass('100', '100'),\r\n ];\r\n this.perPageSelect.value = this.perPageSelect.search = this.table.perPage.toString();\r\n this.perPageSelect.displayLabel = false;\r\n this.perPageSelect.onChange = (v) => {\r\n this.table.page = 1;\r\n this.table.perPage = parseInt(v.value, 10);\r\n this.table.load();\r\n };\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {TableClass, TableCollClass} from '../../../classes/table.class';\r\nimport {InputType, Method, PermissionTypeEnum, TableCollType} from '../../../classes/enum.class';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {RequestClass} from '../../../classes/request.class';\r\nimport {HelperClass} from '../../../classes/helper.class';\r\nimport {PsToolkitUiConfigService} from '../../../services/config.service';\r\nimport * as $ from 'jquery';\r\n\r\n@Component({\r\n selector: 'lib-table-row',\r\n templateUrl: './table.row.component.html',\r\n styleUrls: ['./table.row.component.css']\r\n})\r\nexport class TableRowComponent implements OnInit{\r\n @Output()\r\n confirmShow = new EventEmitter<object>();\r\n @Output()\r\n changeRows = new EventEmitter<object>();\r\n @Input()\r\n level: number;\r\n @Input()\r\n table: TableClass;\r\n @Input()\r\n row;\r\n @Output()\r\n loadParent = new EventEmitter<string>();\r\n get type(): typeof InputType { return InputType; }\r\n options: InputClass[];\r\n optEdit: InputClass;\r\n optDelete: InputClass;\r\n optStatus: InputClass;\r\n showChildren: InputClass = null;\r\n addChildren: InputClass = null;\r\n itemsWidth = 0;\r\n children: any[] = [];\r\n @ViewChild('childrenDiv') childrenDiv: ElementRef;\r\n constructor(public service: PsToolkitUiConfigService) {\r\n }\r\n ngOnInit(): void {\r\n this.itemsWidth = this.table.cols.reduce((a, {percent}) => a + percent, 0);\r\n this.optEdit = new InputClass(this.table.environment, this.table.l, this.table.name + 'UpdateTitle', 'fad fa-pen', InputType.Icon,\r\n 'blue h-25 m-h-5 d-ib va-m f-u');\r\n this.optDelete = new InputClass(this.table.environment, this.table.l, this.table.name + 'DeleteTitle', 'fad fa-trash', InputType.Icon,\r\n 'red h-25 m-h-5 d-ib va-m f-u');\r\n if (this.table.hasChildren){\r\n if (!this.table.childrenAutoLoad){\r\n this.children = this.getChildren();\r\n }\r\n if (this.table.permissions.hasAccess('Insert')){\r\n this.addChildren = new InputClass(this.table.environment, this.table.l, this.table.name + 'AddSubsetTitle',\r\n 'fad fa-plus fa-rotate-90', InputType.Icon,\r\n 'green m-h-5 h-25 d-ib va-m f-u');\r\n this.addChildren.onClick = () => {\r\n this.table.form.inputs.find(x => x.name === 'ParentId').setValue(this.row.Id, false);\r\n this.table.form.onSuccessBase = () => {\r\n this.table.modal.hide();\r\n this.showChildren.type = InputType.Icon;\r\n this.loadChildren(this.row.Id);\r\n };\r\n this.table.showInsertModal();\r\n };\r\n }\r\n console.log(this.row.CountChild > 0);\r\n console.log(!this.table.childrenAutoLoad);\r\n console.log((!this.table.childrenAutoLoad && this.children.length > 0));\r\n console.log(this.row.CountChild > 0 || (!this.table.childrenAutoLoad && this.children.length > 0));\r\n this.showChildren = new InputClass(this.table.environment, this.table.l, this.table.name + 'SubsetTitle', 'fad fa-angle-left f-s-22',\r\n this.row.CountChild > 0 || (!this.table.childrenAutoLoad && this.children.length > 0) ? InputType.Icon : InputType.Hidden, 'h-25 m-h-5 d-ib va-m f-u');\r\n this.showChildren.onClick = () => {\r\n if ($(this.childrenDiv.nativeElement).is(':visible')){\r\n $(this.childrenDiv.nativeElement).hide();\r\n this.showChildren.icon = 'fad fa-angle-left f-s-22';\r\n } else if (this.children.length === 0){\r\n this.loadChildren(this.row.Id);\r\n } else {\r\n $(this.childrenDiv.nativeElement).show();\r\n this.showChildren.icon = 'fad fa-angle-down f-s-22';\r\n }\r\n };\r\n }\r\n if (this.table.hasStatus){\r\n this.optStatus = new InputClass(this.table.environment, this.table.l, 'Status',\r\n this.row.Active ? 'fa-toggle-on' : 'fa-toggle-off', InputType.Icon,\r\n 'm-h-5 h-20 ' + (this.row.Active ? 'green' : ''));\r\n this.optStatus.row = this.row;\r\n this.optStatus.onClick = (btn) => {\r\n new RequestClass(this.table.l).send(this.table.url + '/Status/' + btn.row.Id, Method.Post, null, btn, (r) => {\r\n btn.class = 'm-h-5 h-20 ' + (r ? 'green' : '');\r\n btn.icon = r ? 'fa-toggle-on' : 'fa-toggle-off';\r\n });\r\n };\r\n }\r\n this.options = this.getOptions();\r\n if (this.table.form){\r\n this.optEdit.onClick = () => {\r\n this.table.form.url = this.table.url + 'Update/' + this.row.Id;\r\n if (this.table.hasChildren && this.row.ParentId != null) {\r\n this.table.form.onSuccessBase = () => {\r\n this.table.modal.hide();\r\n if (this.table.childrenAutoLoad){\r\n this.loadParent.emit(this.row.parent_id);\r\n }else{\r\n this.table.load();\r\n }\r\n };\r\n } else {\r\n this.table.form.onSuccessBase = () => {\r\n if (!this.table.form.onTop){\r\n this.table.modal.hide();\r\n }\r\n this.table.load();\r\n };\r\n }\r\n this.edit();\r\n };\r\n } else {\r\n this.optEdit.url = this.table.url + '/Update/' + this.row.Id;\r\n }\r\n\r\n this.optDelete.onClick = () => {\r\n if (this.table.form){\r\n this.table.form.clear();\r\n }\r\n if (this.table.permissions.Type === PermissionTypeEnum.Form){\r\n this.table.rows = this.table.rows.filter(x => x.Id !== this.row.Id);\r\n this.changeRows.emit(this.row);\r\n } else {\r\n this.confirmShow.emit(this.row.Id);\r\n }\r\n };\r\n if (this.table.sortable){\r\n this.setSortRow();\r\n }\r\n }\r\n loadChildren(p): void{\r\n new RequestClass(this.table.environment, this.table.l).send(this.table.url + `List/${p}`, Method.Post,\r\n null, this.showChildren, (result) => {\r\n this.children = result.List;\r\n setTimeout(() => {\r\n $(this.childrenDiv.nativeElement).slideDown();\r\n this.showChildren.icon = 'fad fa-angle-down f-s-22';\r\n }, 50);\r\n });\r\n }\r\n select(): void{\r\n this.row.selected = !this.row.selected;\r\n }\r\n onChangeRows(e): void{\r\n return this.changeRows.emit(e);\r\n }\r\n onConfirmShow(e): void{\r\n return this.confirmShow.emit(e);\r\n }\r\n setSortRow(): void{\r\n setTimeout(() => {\r\n if (this.table.hasChildren) {\r\n // @ts-ignore\r\n $(this.childrenDiv.nativeElement).sortable({\r\n axis: 'y',\r\n handle: '> .row > .item-con > .handle-sortable',\r\n update: () => {\r\n const data = [];\r\n // @ts-ignore\r\n $(this.childrenDiv.nativeElement).sortable('toArray').forEach(x => data.push(x));\r\n new RequestClass(this.table.l).send(this.table.url + 'Sort', Method.Post, data, null, () => {\r\n if (this.table.onSort){\r\n this.table.onSort();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }, 500);\r\n }\r\n getOptions(): InputClass[]{\r\n return (this.addChildren !== null && (this.table.level === null || this.table.level > this.level) ? [this.addChildren] : [])\r\n .concat(this.table.options.filter(x => x.condition == null || x.condition(this.row)).map((o) => {\r\n const i = HelperClass.clone(o);\r\n if (i.url){\r\n i.url = i.url.replace('{}', this.row.Id);\r\n }\r\n i.row = this.row;\r\n i.class = i.class + ' m-h-5 h-25 d-ib va-m f-u';\r\n return i;\r\n })).concat(this.table.hasStatus ? [this.optStatus] : [])\r\n .concat(this.table.permissions.hasAccess('Update') ? [this.optEdit] : [])\r\n .concat(this.table.permissions.hasAccess('Delete') ? [this.optDelete] : []);\r\n }\r\n getCell(col: TableCollClass): any{\r\n console.log('getCell');\r\n const cv = _.get(this.row, col.name);\r\n if (col.fun != null) {\r\n return col.fun(this.row);\r\n } else if (col.enum !== null) {\r\n return col.enum.get(cv);\r\n } else if (col.type === TableCollType.DateDif) {\r\n return HelperClass.getDateDif(this.table.l, cv);\r\n } else if (col.type === TableCollType.Date) {\r\n return HelperClass.getDate(cv);\r\n } else if (col.type === TableCollType.DateTime) {\r\n return HelperClass.getDateTime(cv);\r\n } else if (col.type === TableCollType.Time) {\r\n return HelperClass.getTime(cv);\r\n } else if (col.type === TableCollType.Url) {\r\n return '<a target=\"_blank\" href=\"' + cv + '\">' + cv + '</a>';\r\n } else if (col.type === TableCollType.Image) {\r\n return '<img class=\"h-100\" alt=\"\" src=\"' + this.service.environment.url + cv + '\"/>';\r\n } else if (col.type === TableCollType.Price) {\r\n return cv.toLocaleString() + ' ' + this.table.l('Rial');\r\n } else if (col.type === TableCollType.Plaque) {\r\n const parts = cv.split('_');\r\n if (parts.length === 4) {\r\n return '<div class=\"plaque' + (parts[1] === 'ع' ? ' p' : '') + (parts[1] === 'الف' ? ' g' : '') + '\">' +\r\n '<div class=\"part1\">' + parts[0] + '</div>' +\r\n '<div class=\"part2\">' + parts[1] + '</div>' +\r\n '<div class=\"part3\">' + parts[2] + '</div>' +\r\n '<div class=\"part4\">' + parts[3] + '</div>' +\r\n '</div>';\r\n } else if (parts.length === 2){\r\n return '<div class=\"plaque plaque-m\">' +\r\n '<div class=\"part1\">' + parts[0] + '</div>' +\r\n '<div class=\"part2\">' + parts[1] + '</div>' +\r\n '</div>';\r\n }\r\n } else if (col.type === TableCollType.PlaqueText) {\r\n const parts = cv.split('_');\r\n if (parts.length === 4){\r\n return `<div class=\"ltr\">${parts[0]} ${parts[1]}&lrm; ${parts[2]} ${parts[3]}</div>`;\r\n }\r\n }\r\n return this.table.l(cv);\r\n }\r\n getCol(n): string{\r\n let c = this.row;\r\n n.split('.').forEach((x) => {\r\n c = c[x];\r\n });\r\n return c;\r\n }\r\n edit(): void{\r\n if (this.table.permissions.Type === PermissionTypeEnum.Form){\r\n this.table.form.name = this.table.name + 'UpdateTitle';\r\n this.table.form.setData(this.row);\r\n this.table.form.setButtons(this.table.form.onTop, true, this.row.Id);\r\n this.table.form.inputs.filter(x => x.inEditDisabled).forEach(x => x.disabled = true);\r\n this.table.form.inputs.filter(x => !x.inEditVisible).forEach(x => x.visible = false);\r\n }else{\r\n new RequestClass(this.table.environment, this.table.l).send(this.table.url + 'Get/' + this.row.Id, Method.Post,\r\n null, this.optEdit, (result) => {\r\n this.table.form.name = this.table.name + 'UpdateTitle';\r\n this.table.form.setButtons(this.table.form.onTop, true, this.row.Id);\r\n this.table.form.setData(result);\r\n this.table.form.inputs.filter(x => x.inEditDisabled).forEach(x => x.disabled = true);\r\n this.table.form.inputs.filter(x => !x.inEditVisible).forEach(x => x.visible = false);\r\n if (this.table.modal){\r\n this.table.modal.show();\r\n }\r\n });\r\n }\r\n }\r\n getChildren(): any[]{\r\n return this.row.Id ? this.table.rows.filter(x => x.ParentId === this.row.Id) : [];\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {Router} from '@angular/router';\r\nimport {TableClass} from '../../classes/table.class';\r\nimport {InputType, Method, TableCollType} from '../../classes/enum.class';\r\nimport {InputClass} from '../../classes/form.class';\r\nimport {HelperClass} from '../../classes/helper.class';\r\nimport {RequestClass} from '../../classes/request.class';\r\nimport * as $ from 'jquery';\r\nimport {ConfirmComponent} from '../confirm/confirm.component';\r\n\r\n@Component({\r\n selector: 'lib-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class TableComponent implements OnInit{\r\n @Input()\r\n table: TableClass;\r\n @Output()\r\n changeRows = new EventEmitter<object>();\r\n get type(): typeof InputType{ return InputType; }\r\n get colType(): typeof TableCollType{ return TableCollType; }\r\n @ViewChild('rows') rows: ElementRef;\r\n @ViewChild('tableDiv') tableDiv: ElementRef;\r\n @ViewChild('exportDropDown') exportDropDown: ElementRef;\r\n @ViewChild('confirm') confirm: ConfirmComponent;\r\n loadIcon: InputClass;\r\n sizeIcon: InputClass;\r\n select: InputClass = null;\r\n optDelete: InputClass;\r\n reload: InputClass;\r\n maximum: InputClass;\r\n export: InputClass;\r\n constructor(public router: Router) {\r\n }\r\n itemsWidth = 0;\r\n options: InputClass[];\r\n ngOnInit(): void {\r\n // if (this.app.isReport){\r\n // this.table.perPage = -1;\r\n // this.table.extraButtons = false;\r\n // this.table.displayLabel = false;\r\n // this.table.isReport = true;\r\n // this.table.permissions.Accesses = ['List'];\r\n // this.table.permissions.Options = [];\r\n // this.table.cols.forEach(x => x.sort = false);\r\n // this.table.onLoad = () => {\r\n // setTimeout(() => {\r\n // window.print();\r\n // }, 500);\r\n // };\r\n // }\r\n this.loadIcon = new InputClass(this.table.environment, null, 'LoadIcon');\r\n this.sizeIcon = new InputClass(this.table.environment, null, 'SizeIcon');\r\n if (this.table.hasChildren){\r\n this.table.cols.forEach(x => x.sort = false);\r\n }\r\n this.itemsWidth = this.table.cols.reduce((a, {percent}) => a + percent, 0);\r\n this.reload = new InputClass(this.table.environment, this.table.l, 'Reload', 'fad fa-sync-alt', InputType.Icon, 'm-h-5');\r\n this.maximum = new InputClass(this.table.environment, this.table.l, 'Maximum', 'fad fa-expand-arrows-alt', InputType.Icon, 'm-h-5');\r\n this.export = new InputClass(this.table.environment, this.table.l, 'Export', 'fad fa-arrow-to-bottom', InputType.Icon, 'm-h-5');\r\n this.optDelete = new InputClass(this.table.environment, this.table.l, 'Delete', 'fad fa-trash', InputType.Icon, 'red h-25 m-h-5 d-ib va-m f-u');\r\n for (const c of this.table.cols.filter(x => x.withSearch)){\r\n c.search = new InputClass(this.table.environment, this.table.l, c.name,\r\n null, c.type === TableCollType.Date ? InputType.Date : InputType.Text, 'h-25 table-search');\r\n c.search.displayLabel = false;\r\n c.search.onChange = () => {\r\n this.table.load();\r\n };\r\n }\r\n if (this.table.sortable){\r\n this.table.perPage = -1;\r\n this.table.onLoad = () => {\r\n this.setSortable();\r\n };\r\n }\r\n if (this.table.hasChildren && this.table.form){\r\n this.table.form.inputs.push(new InputClass(this.table.environment, this.table.l, 'ParentId',\r\n null, InputType.Hidden, null, null, false));\r\n }\r\n this.table.set(this.changeRows);\r\n if (this.table.searchForm){\r\n this.table.searchForm.displayLabel = false;\r\n this.table.searchForm.inputs.forEach(x => {\r\n x.required = false;\r\n x.displayLabel = false;\r\n x.withClear = true;\r\n x.class = x.class + ' h-30';\r\n x.onChange = () => {\r\n this.table.load();\r\n };\r\n });\r\n }\r\n this.options = this.getOptions();\r\n this.reload.onClick = () => {\r\n this.table.load(this.reload);\r\n };\r\n this.maximum.onClick = () => {\r\n $(this.tableDiv.nativeElement).toggleClass('maximum');\r\n this.maximum.icon = this.maximum.name === 'Minimum' ? 'fad fa-expand-arrows-alt' : 'fad fa-compress-arrows-alt';\r\n this.maximum.name = this.maximum.name === 'Minimum' ? 'Maximum' : 'Minimum';\r\n };\r\n this.export.onClick = () => {\r\n if (!this.export.loading){\r\n $(this.exportDropDown.nativeElement).fadeToggle();\r\n }\r\n };\r\n this.optDelete.onClick = (i) => {\r\n if (this.table.form){\r\n this.table.form.clear();\r\n }\r\n const data = {\r\n ids: this.table.rows.filter(x => x.selected).map(x => x.id)\r\n };\r\n this.confirm.show(this.table.l('DeleteMessage'), this.table.url + '/Delete/' + 0, data, () => {\r\n this.table.load(null);\r\n });\r\n };\r\n this.table.showConfirm = (l: string, url: string, data, accept: (btn: InputClass) => void) => {\r\n this.confirm.show(l, url, data, accept);\r\n };\r\n }\r\n allSelected(): boolean{\r\n return this.table.rows.filter(x => !x.selected).length === 0;\r\n }\r\n isSelected(): boolean{\r\n return this.table.rows.filter(x => x.selected).length > 0;\r\n }\r\n selectAll(): void{\r\n if (this.table.rows.filter(x => !x.selected).length === 0){\r\n this.table.rows.forEach(x => x.selected = false);\r\n }else{\r\n this.table.rows.forEach(x => x.selected = true);\r\n }\r\n }\r\n getOptions(): InputClass[]{\r\n return this.table.isReport ? [] : this.table.options.filter(x => x.condition == null).map((o) => {\r\n const i = HelperClass.clone(o);\r\n i.class = i.class + ' m-h-5 h-25 d-ib va-m f-u';\r\n return i;\r\n }).concat(this.table.permissions && this.table.permissions.hasAccess('Delete') ? [this.optDelete] : []);\r\n }\r\n setSortable(): void{\r\n setTimeout(() => {\r\n // @ts-ignore\r\n $(this.rows.nativeElement).sortable({\r\n axis: 'y',\r\n items: 'tr',\r\n update: () => {\r\n const data = [];\r\n // @ts-ignore\r\n $(this.rows.nativeElement).sortable('toArray').forEach(x => data.push(x));\r\n new RequestClass(this.table.l).send(this.table.url + 'Sort', Method.Post, {Ids: data}, null, () => {\r\n if (this.table.onSort){\r\n this.table.onSort();\r\n }\r\n });\r\n }\r\n }).disableSelection();\r\n }, 500);\r\n }\r\n getRows(): any[]{\r\n const c = this.table.rows.filter(x => !x.ParentId);\r\n c.forEach((x, i) => x.RowNum = c.length - i + 1);\r\n return c;\r\n }\r\n getOptionModals(): InputClass[]{\r\n return this.table.options.filter(x => x.modal != null);\r\n }\r\n onChangeRows(e): void{\r\n return this.changeRows.emit(e);\r\n }\r\n onConfirmShow(rowId): void{\r\n this.confirm.show(this.table.l('DeleteMessage'), this.table.url + 'Delete/' + rowId, null, () => {\r\n this.table.load(null);\r\n });\r\n }\r\n changeSort(e, s: string): void{\r\n if ($(e.target).closest('.header-search').hasClass('header-search')){\r\n return;\r\n }\r\n this.table.sortType = this.table.sort === s ? this.table.sortType === 'ASC' ? 'DESC' : 'ASC' : 'ASC';\r\n this.table.sort = s;\r\n this.table.load();\r\n }\r\n report(type: string): void{\r\n $(this.exportDropDown.nativeElement).fadeOut();\r\n if (type === 'Print' || type === 'PDF'){\r\n window.open(this.table.getUrl(true), '_blank', 'location=yes,height=570,width=520,scrollbars=yes,status=yes');\r\n } else {\r\n new RequestClass(this.table.l).send(this.table.getUrl(true), Method.Post, null, this.export, (result) => {\r\n const report = [];\r\n for (const r of result.List){\r\n const row = {};\r\n for (const k of Object.keys(r)){\r\n row[this.table.l(k)] = r[k];\r\n }\r\n report.push(row);\r\n }\r\n if (type === 'Excel'){\r\n // new ExcelService().exportAsExcelFile(report, 'Report');\r\n } else if (type === 'CSV'){\r\n // new ExcelService().exportAsCsvFile(report, 'Report');\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrls: ['./tooltip.component.css']\r\n})\r\nexport class TooltipComponent{\r\n @Input()\r\n text: string;\r\n @Input()\r\n position = 'bottom';\r\n constructor(){\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError, InputType} from '../../../classes/enum.class';\r\nimport {HelperClass} from '../../../classes/helper.class';\r\n\r\n@Component({\r\n selector: 'lib-form-bank-card',\r\n templateUrl: './form.bank-card.component.html',\r\n styleUrls: ['./form.bank-card.component.css']\r\n})\r\nexport class FormBankCardComponent implements OnInit {\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n cValue = '';\r\n get type(): typeof InputType {\r\n return InputType;\r\n }\r\n part1: InputClass;\r\n part2: InputClass;\r\n part3: InputClass;\r\n part4: InputClass;\r\n @ViewChild('inputPart1') inputPart1: ElementRef;\r\n @ViewChild('inputPart2') inputPart2: ElementRef;\r\n @ViewChild('inputPart3') inputPart3: ElementRef;\r\n @ViewChild('inputPart4') inputPart4: ElementRef;\r\n ngOnInit(): void {\r\n this.part1 = new InputClass(this.inp.environment, this.inp.l, 'BankCardPart1', null, InputType.Number, 'bank-card-part-1 bank-card-part-item',\r\n '', true, 1000, 9999);\r\n this.part2 = new InputClass(this.inp.environment, this.inp.l, 'BankCardPart2', null, InputType.Number, 'bank-card-part-2 bank-card-part-item',\r\n '', true, 1000, 9999);\r\n this.part3 = new InputClass(this.inp.environment, this.inp.l, 'BankCardPart3', null, InputType.Number, 'bank-card-part-3 bank-card-part-item',\r\n '', true, 1000, 9999);\r\n this.part4 = new InputClass(this.inp.environment, this.inp.l, 'BankCardPart4', null, InputType.Number, 'bank-card-part-4 bank-card-part-item',\r\n '', true, 1000, 9999);\r\n this.part1.displayLabel = this.part2.displayLabel = this.part3.displayLabel = this.part4.displayLabel = false;\r\n this.part1.placeholder = this.part2.placeholder = this.part3.placeholder = this.part4.placeholder = null;\r\n this.part1.onChange = (v) => {\r\n this.inp.error = null;\r\n if (v.length === 4){\r\n this.part2.focus();\r\n }\r\n };\r\n this.part2.onChange = (v) => {\r\n this.inp.error = null;\r\n if (v.length === 4){\r\n this.part3.focus();\r\n }\r\n };\r\n this.part3.onChange = (v) => {\r\n this.inp.error = null;\r\n if (v.length === 4){\r\n this.part4.focus();\r\n }\r\n };\r\n this.part4.onChange = (v) => {\r\n this.inp.error = null;\r\n if (v.length === 4){\r\n this.changeIndex.emit('Tab');\r\n }\r\n };\r\n this.inp.setValue = (v) => {\r\n if (v === null){\r\n return;\r\n }\r\n this.part1.value = v.substr(0, 4);\r\n this.part2.value = v.substr(4, 4);\r\n this.part3.value = v.substr(8, 4);\r\n this.part4.value = v.substr(12, 4);\r\n };\r\n this.inp.isValid = () => {\r\n const v = this.getValue();\r\n if (!this.inp.required && !v) {\r\n return true;\r\n }\r\n if (!v) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!HelperClass.checkCartDigit(v)){\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.part1.value = this.inp.default ? this.inp.default.substr(0, 4) : null;\r\n this.part2.value = this.inp.default ? this.inp.default.substr(4, 4) : null;\r\n this.part3.value = this.inp.default ? this.inp.default.substr(8, 4) : null;\r\n this.part4.value = this.inp.default ? this.inp.default.substr(12, 4) : null;\r\n };\r\n this.inp.data = () => {\r\n return this.getValue();\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n }\r\n changeFocus(p, a): void{\r\n if (p === 'Part1'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part2.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.changeIndex.emit('ShiftTab');\r\n }\r\n } else if (p === 'Part2'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part3.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part1.focus();\r\n }\r\n } else if (p === 'Part3'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part4.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part2.focus();\r\n }\r\n } else if (p === 'Part4'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.changeIndex.emit('Tab');\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part3.focus();\r\n }\r\n }\r\n }\r\n onFocusIn(e = null): void{\r\n if (e == null || !(e.screenX && e.screenX !== 0 && e.screenY && e.screenY !== 0)){\r\n this.part1.focus();\r\n }\r\n }\r\n onKeyDown(e): void{\r\n this.inp.error = null;\r\n const code = e.keyCode || e.which;\r\n if (code === 9) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n }\r\n getValue(): string{\r\n return `${this.part1.value ? this.part1.value : ''}${this.part2.value ? this.part2.value : ''}${this.part3.value ? this.part3.value : ''}${this.part4.value ? this.part4.value : ''}`;\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass} from '../../../classes/form.class';\r\n\r\n@Component({\r\n selector: 'lib-form-button',\r\n templateUrl: './form.button.component.html',\r\n styleUrls: ['./form.button.component.css']\r\n})\r\nexport class FormButtonComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n constructor(){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n }\r\n onFocusIn(): void{\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n onClick(e): void{\r\n if (e.screenX && e.screenX !== 0 && e.screenY && e.screenY !== 0) {\r\n this.mouseClick();\r\n }else{\r\n this.codeClick();\r\n }\r\n }\r\n mouseClick(): void{\r\n this.onFocusIn();\r\n if (this.inp.modal){\r\n this.inp.modal.show();\r\n if (this.inp.modal.form){\r\n this.inp.modal.form.onSuccessBase = () => {\r\n this.inp.modal.hide();\r\n };\r\n }\r\n }\r\n if (!this.inp.loading && this.inp.onClick != null){\r\n this.inp.onClick(this.inp);\r\n }\r\n }\r\n codeClick(): void{\r\n this.onFocusIn();\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n if (code === 13) {\r\n e.preventDefault();\r\n if (!this.inp.loading && this.inp.onClick != null){\r\n this.inp.onClick(this.inp);\r\n }\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-checkbox',\r\n templateUrl: './form.checkbox.component.html',\r\n styleUrls: ['./form.checkbox.component.css']\r\n})\r\nexport class FormCheckboxComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n constructor(){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.value = this.inp.default;\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.data = () => {\r\n return this.inp.value;\r\n };\r\n this.inp.setValue = (v) => {\r\n this.inp.value = v;\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n }\r\n onFocusIn(): void{\r\n this.inp.error = null;\r\n this.inputBase.nativeElement.focus();\r\n }\r\n onClick(): void{\r\n this.inputBase.nativeElement.click();\r\n }\r\n onChange(): void{\r\n if (this.inp.onChange){\r\n setTimeout(() => {\r\n this.inp.onChange(this.inp);\r\n }, 1);\r\n }\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9 || code === 13) {\r\n e.preventDefault();\r\n this.changeIndex.emit(code === 9 ? e.shiftKey ? 'ShiftTab' : 'Tab' : e.shiftKey ? 'ShiftEnter' : 'Enter');\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as moment from 'jalali-moment';\r\nimport * as $ from 'jquery';\r\nimport {DayClass, InputClass} from '../../../classes/form.class';\r\nimport {InputError} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-date',\r\n templateUrl: './form.date.component.html',\r\n styleUrls: ['./form.date.component.css']\r\n})\r\nexport class FormDateComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Input()\r\n inForm: boolean;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n previousDays: DayClass[] = [];\r\n nextDays: DayClass[] = [];\r\n days: DayClass[] = [];\r\n todayDay: number;\r\n todayMonth: number;\r\n todayYear: number;\r\n cSearch = '';\r\n state = 'day';\r\n months = ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'];\r\n active: moment.Moment = moment();\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputLabel') inputLabel: ElementRef;\r\n @ViewChild('inputCalendarDiv') inputCalendarDiv: ElementRef;\r\n constructor(){\r\n }\r\n ngOnInit(): void{\r\n // moment.locale('fa');\r\n const today = moment().locale('fa');\r\n this.todayDay = parseInt(today.format('jDD'), 10);\r\n this.todayMonth = parseInt(today.format('jMM'), 10);\r\n this.todayYear = parseInt(today.format('jYYYY'), 10);\r\n if (this.inp.value){\r\n this.active = moment(this.inp.value);\r\n this.inp.value = this.active.format('jYYYY/jMM/jDD');\r\n this.inp.search = this.inp.value;\r\n }else{\r\n this.active = moment();\r\n }\r\n this.setDate();\r\n this.inp.setValue = (v) => {\r\n if (v === null){\r\n this.inp.clear();\r\n return;\r\n } else if (typeof v === 'string') {\r\n const d = parseInt(v.substring(6, v.length - 2), 10);\r\n this.active = moment(d);\r\n }else{\r\n this.active = moment(v);\r\n }\r\n this.inp.value = this.active.format('jYYYY/jMM/jDD');\r\n this.inp.search = this.active.format('jYYYY/jMM/jDD');\r\n this.setDate();\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && !this.inp.value) {\r\n return true;\r\n }\r\n if (!moment(this.inp.value, 'jYYYY/jMM/jDD').isValid()) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n if (this.inp.default){\r\n this.inp.setValue(this.inp.default, false);\r\n }else{\r\n this.inp.value = null;\r\n this.inp.search = null;\r\n }\r\n };\r\n this.inp.data = () => {\r\n return this.inp.value ? moment(this.inp.value, 'jYYYY/jMM/jDD').locale('en').format('YYYY/MM/DD') : null;\r\n };\r\n this.inp.focus = () => {\r\n this.openCalendar();\r\n };\r\n this.inp.focusOut = () => {\r\n $(this.inputBase.nativeElement).blur();\r\n };\r\n }\r\n setDate(): void{\r\n const n = this.active.clone();\r\n const countDayInMonth = n.daysInMonth();\r\n const startWeek = parseInt(n.startOf('month').format('d'), 10);\r\n const previousMonth = n.subtract(1, 'month');\r\n const countDayInPreviousMonth = previousMonth.daysInMonth();\r\n const nextMonth = n.add(2, 'month');\r\n const previousDays: DayClass[] = [];\r\n const nextDays = [];\r\n const days = [];\r\n if (startWeek !== 6){\r\n for (let i = countDayInPreviousMonth - startWeek; i <= countDayInPreviousMonth; i++){\r\n previousDays.push(new DayClass(i, this.isToday(previousMonth, i), false));\r\n }\r\n }\r\n for (let i = 1; i <= countDayInMonth; i++){\r\n days.push(new DayClass(i, this.isToday(this.active, i), this.isSelected(this.active, i)));\r\n }\r\n const end = (days.length + previousDays.length) % 7;\r\n if (end !== 0){\r\n for (let i = 1; i <= 7 - end; i++){\r\n nextDays.push(new DayClass(i, this.isToday(nextMonth, i), false));\r\n }\r\n }\r\n this.previousDays = previousDays;\r\n this.nextDays = nextDays;\r\n this.days = days;\r\n }\r\n isToday(m: moment.Moment, d: number): boolean{\r\n const month = parseInt(m.format('jMM'), 10);\r\n const year = parseInt(m.format('jYYYY'), 10);\r\n return year === this.todayYear && month === this.todayMonth && d === this.todayDay;\r\n }\r\n isSelected(m: moment.Moment, d: number): boolean{\r\n if (this.inp.value == null){\r\n return false;\r\n }\r\n const month = parseInt(m.format('jMM'), 10);\r\n const year = parseInt(m.format('jYYYY'), 10);\r\n const vDay = parseInt(this.inp.value.split('/')[2], 10);\r\n const vMonth = parseInt(this.inp.value.split('/')[1], 10);\r\n const vYear = parseInt(this.inp.value.split('/')[0], 10);\r\n return year === vYear && month === vMonth && d === vDay;\r\n }\r\n add(c: number): void{\r\n this.active.add(c, this.state === 'day' ? 'month' : 'year');\r\n this.setDate();\r\n }\r\n changeMonth(c: number): void{\r\n this.active = moment(this.active.format('jYYYY') + '/' + ('0' + c).slice(-2) + '/' + this.active.format('jDD'), 'jYYYY/jMM/jDD');\r\n this.setDate();\r\n this.changeState('day');\r\n }\r\n changeYear(c: number): void{\r\n this.active = moment(('000' + c).slice(-4) + '/' + this.active.format('jMM') + '/' + this.active.format('jDD'), 'jYYYY/jMM/jDD');\r\n this.setDate();\r\n this.changeState('month');\r\n }\r\n toggleCalendar(): void{\r\n this.openCalendar();\r\n }\r\n openCalendar(): void {\r\n this.setPosition();\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9 || code === 13) {\r\n e.preventDefault();\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n this.changeIndex.emit(code === 9 ? e.shiftKey ? 'ShiftTab' : 'Tab' : e.shiftKey ? 'ShiftEnter' : 'Enter');\r\n if (!this.inForm){\r\n $(this.inputBase.nativeElement).blur();\r\n }\r\n }\r\n }\r\n onKeyUp(e): void{\r\n this.inp.error = null;\r\n this.inp.value = null;\r\n if (this.cSearch !== e.target.value) {\r\n this.cSearch = e.target.value;\r\n if (this.inp.search !== '' && this.inp.search !== null){\r\n const v = moment(this.inp.search, 'jYYYY/jMM/jDD');\r\n if (v.isValid() && this.inp.search.length <= 10){\r\n this.active = v;\r\n this.inp.value = this.active.format('jYYYY/jMM/jDD');\r\n this.setDate();\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.inp);\r\n }\r\n }else{\r\n this.setDate();\r\n }\r\n } else {\r\n this.setDate();\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.inp);\r\n }\r\n }\r\n }\r\n }\r\n onFocusOut(): void{\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n this.inp.search = this.inp.value;\r\n this.state = 'day';\r\n }\r\n setPosition(): void{\r\n const rect = this.inputDiv.nativeElement.getBoundingClientRect();\r\n const offsetOfBottom = window.innerHeight - rect.bottom;\r\n const height = this.inputCalendarDiv.nativeElement.offsetHeight;\r\n if (offsetOfBottom < height){\r\n $(this.inputDiv.nativeElement).addClass('top');\r\n }else{\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n }\r\n }\r\n selectDate(d: DayClass): void {\r\n this.inp.error = null;\r\n const s = this.days.find(x => x.selected);\r\n if (s){\r\n s.selected = false;\r\n }\r\n const m = parseInt(this.active.format('jMM'), 10);\r\n const y = parseInt(this.active.format('jYYYY'), 10);\r\n this.setValue(y, m, d.day);\r\n d.selected = true;\r\n this.cSearch = this.inp.search;\r\n setTimeout(() => {\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n this.changeIndex.emit('Tab');\r\n if (!this.inForm){\r\n $(this.inputBase.nativeElement).blur();\r\n }\r\n }, 10);\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.inp);\r\n }\r\n }\r\n setValue(y: number, m: number, d: number): void{\r\n this.inp.value = y + '/' + (m > 9 ? m : '0' + m) + '/' + (d > 9 ? d : '0' + d);\r\n this.inp.search = y + '/' + (m > 9 ? m : '0' + m) + '/' + (d > 9 ? d : '0' + d);\r\n }\r\n changeState(s: string): void{\r\n this.state = s;\r\n }\r\n getYears(): number[]{\r\n const y = parseInt(this.active.format('jYYYY'), 10);\r\n const sy = y - (y % 20);\r\n return Array.from({length: 20}, (x, i) => sy + i);\r\n }\r\n getActiveMonth(): string{\r\n return this.months[parseInt(this.active.format('jM'), 10) - 1];\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as moment from 'jalali-moment';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError, InputType} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-datetime',\r\n templateUrl: './form.datetime.component.html',\r\n styleUrls: ['./form.datetime.component.css']\r\n})\r\nexport class FormDatetimeComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Input()\r\n inForm: boolean;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n date: InputClass;\r\n time: InputClass;\r\n constructor(){\r\n }\r\n ngOnInit(): void{\r\n this.date = new InputClass(this.inp.environment, this.inp.l, 'Date', null, InputType.Date);\r\n this.time = new InputClass(this.inp.environment, this.inp.l, 'Time', null, InputType.Time);\r\n this.date.displayLabel = this.time.displayLabel = false;\r\n if (this.inp.value){\r\n this.inp.setValue(this.inp.value, false);\r\n }\r\n this.inp.setValue = (v) => {\r\n if (v === null){\r\n this.inp.clear();\r\n return;\r\n } else if (typeof v === 'string') {\r\n v = parseInt(v.substring(6, v.length - 2), 10);\r\n }\r\n const m = moment(v).locale('fa');\r\n this.date.setValue(m, false);\r\n this.time.setValue({Hours: m.hours(), Minutes: m.minutes()}, false);\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.value = this.getValue();\r\n this.inp.error = null;\r\n this.date.error = null;\r\n this.time.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n this.date.error = InputError.Required;\r\n this.time.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && !this.inp.value) {\r\n return true;\r\n }\r\n if (!moment(this.inp.value, 'jYYYY/jMM/jDD HH:mm').isValid()) {\r\n this.inp.error = InputError.Invalid;\r\n this.date.error = InputError.Invalid;\r\n this.time.error = InputError.Invalid;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n if (this.inp.default){\r\n this.inp.setValue(this.inp.default, false);\r\n }else{\r\n this.date.clear();\r\n this.time.clear();\r\n }\r\n };\r\n this.inp.data = () => {\r\n return moment(this.getValue(), 'jYYYY/jMM/jDD HH:mm').locale('en').format('YYYY/MM/DD HH:mm');\r\n };\r\n this.inp.focus = () => {\r\n this.date.focus();\r\n };\r\n this.inp.focusOut = () => {\r\n this.date.focusOut();\r\n };\r\n }\r\n changeFocus(p, a): void{\r\n if (p === 'Date'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.time.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.changeIndex.emit('ShiftTab');\r\n }\r\n } else {\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.changeIndex.emit('Tab');\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.date.focus();\r\n }\r\n }\r\n }\r\n getValue(): string{\r\n return !this.date.value || !this.time.value ? null : `${this.date.value} ${this.time.value}`;\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-file',\r\n templateUrl: './form.file.component.html',\r\n styleUrls: ['./form.file.component.css']\r\n})\r\nexport class FormFileComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputBaseFile') inputBaseFile: ElementRef;\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n constructor(){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inp.setValue = (v) => {\r\n this.inp.value = v;\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && !this.inp.value) {\r\n return true;\r\n }\r\n if (this.inp.allowed != null && this.inp.value != null && typeof this.inp.value !== 'string' &&\r\n this.inp.value.map(x => this.inp.allowed.includes(x.name.split('.').pop().toLowerCase())).filter(x => !x).length > 0) {\r\n this.inp.error = InputError.NotAllowed;\r\n return false;\r\n }\r\n if (this.inp.maxLength !== -1 && this.inp.value != null && typeof this.inp.value !== 'string' &&\r\n this.inp.value.map(x => x.size > this.inp.maxLength * 1024).filter(x => x).length > 0) {\r\n this.inp.error = InputError.MaxContent;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.value = this.inp.default;\r\n };\r\n this.inp.data = () => {\r\n if (this.inp.value && typeof this.inp.value !== 'string') {\r\n if (!this.inp.exportPdf) {\r\n return this.inp.value;\r\n } else {\r\n // const doc = new jsPDF();\r\n // let y = 5;\r\n // for (const img of this.inp.value) {\r\n // const i = await this.getPdfImage(img);\r\n // if (y + i.h > 287) {\r\n // doc.addPage();\r\n // y = 5;\r\n // }\r\n // doc.addImage(i.base64, 'JPEG', 5, y, i.w, i.h);\r\n // y += i.h + 5;\r\n // }\r\n // return doc.output('blob');\r\n }\r\n }\r\n return null;\r\n };\r\n this.inp.focus = () => {\r\n this.onClick();\r\n };\r\n }\r\n getPdfImage(file): any{\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n const i = new Image();\r\n i.src = window.URL.createObjectURL(file);\r\n i.onload = () => {\r\n let w = i.width;\r\n let h = i.height;\r\n if (w > 200){\r\n h = (200 * h) / w;\r\n w = 200;\r\n }\r\n if (h > 287){\r\n w = (287 * w) / h;\r\n h = 287;\r\n }\r\n resolve({base64: reader.result.toString(), w, h});\r\n };\r\n };\r\n reader.onerror = error => reject(error);\r\n });\r\n }\r\n onClick(): void{\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n onChange(e): void{\r\n this.inp.error = null;\r\n const v = [];\r\n for (const f of e.target.files){\r\n v.push(f);\r\n }\r\n this.inp.value = v;\r\n this.changeIndex.emit('Tab');\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9 || code === 13) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n }\r\n onFocusIn(): void{\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n title(): string{\r\n if (this.inp.value == null){\r\n return this.inp.l('FileNotSelected');\r\n }\r\n const t = typeof this.inp.value === 'string' ? this.inp.value : this.inp.value.map(x => x.name).join(', ');\r\n const l = typeof this.inp.value === 'string' ? 1 : this.inp.value.length;\r\n return this.inp.l('FileSelected', [l, t]);\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass} from '../../../classes/form.class';\r\n\r\n@Component({\r\n selector: 'lib-form-icon',\r\n templateUrl: './form.icon.component.html',\r\n styleUrls: ['./form.icon.component.css']\r\n})\r\nexport class FormIconComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n constructor(){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inp.setValue = (v) => {\r\n };\r\n this.inp.isValid = () => {\r\n return true;\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n }\r\n onFocusIn(): void{\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n onClick(e): void{\r\n if (e.screenX && e.screenX !== 0 && e.screenY && e.screenY !== 0) {\r\n this.mouseClick();\r\n }else{\r\n this.codeClick();\r\n }\r\n }\r\n mouseClick(): void{\r\n this.onFocusIn();\r\n if (this.inp.modal){\r\n if (this.inp.row){\r\n this.inp.modal.relatedId = this.inp.row.Id;\r\n }\r\n this.inp.modal.show();\r\n if (this.inp.modal.form){\r\n this.inp.modal.form.onSuccessBase = () => {\r\n this.inp.modal.hide();\r\n };\r\n }\r\n }\r\n if (!this.inp.loading && this.inp.onClick != null){\r\n this.inp.onClick(this.inp);\r\n }\r\n }\r\n codeClick(): void{\r\n this.onFocusIn();\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n if (code === 13) {\r\n e.preventDefault();\r\n if (!this.inp.loading && this.inp.onClick != null){\r\n this.inp.onClick(this.inp);\r\n }\r\n }\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {FormClass} from '../../../classes/form.class';\r\nimport {InputType} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.css']\r\n})\r\nexport class FormComponent implements OnInit{\r\n @Input()\r\n form: FormClass;\r\n get type(): typeof InputType { return InputType; }\r\n constructor(){\r\n }\r\n ngOnInit(): void{\r\n }\r\n changeIndex(index, action): void{\r\n const n = action === 'ShiftTab' || action === 'ShiftEnter' ? -1 : 1;\r\n const lastInp = this.form.inputs.map(\r\n x => x.type !== InputType.Submit && x.type !== InputType.Button &&\r\n x.type !== InputType.Label && x.type !== InputType.Hidden && !x.disabled && x.visible).lastIndexOf(true);\r\n if (index === lastInp && action === 'Enter') {\r\n const submit = this.form.inputs.findIndex(x => x.type === InputType.Submit);\r\n if (submit !== -1){\r\n this.form.submit();\r\n return;\r\n }\r\n }\r\n let next = index + n;\r\n while (next >= 0 && next < this.form.inputs.length && (this.form.inputs[next].disabled || !this.form.inputs[next].visible\r\n || this.form.inputs[next].type === InputType.Label || this.form.inputs[next].type === InputType.Hidden)){\r\n next = next + n;\r\n }\r\n if (next >= 0 && next < this.form.inputs.length){\r\n setTimeout(() => {\r\n this.form.inputs[next].focus(true);\r\n }, 1);\r\n }else{\r\n setTimeout(() => {\r\n this.form.inputs[index].focusOut();\r\n }, 1);\r\n }\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {InputClass} from '../../../classes/form.class';\r\n\r\n@Component({\r\n selector: 'lib-form-label',\r\n templateUrl: './form.label.component.html',\r\n styleUrls: ['./form.label.component.css']\r\n})\r\nexport class FormLabelComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n constructor(){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inp.setValue = (v) => {\r\n };\r\n this.inp.isValid = () => {\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n };\r\n }\r\n onClick(): void{\r\n if (this.inp.onClick){\r\n this.inp.onClick(this.inp);\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass, OptionClass} from '../../../../classes/form.class';\r\nimport {InputError, InputType} from '../../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-plaque-select',\r\n templateUrl: './form.plaque.select.component.html',\r\n styleUrls: ['./form.plaque.select.component.css']\r\n})\r\nexport class FormPlaqueSelectComponent implements OnInit{\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @Input()\r\n inp: InputClass;\r\n cSearch = '';\r\n open = false;\r\n top = false;\r\n part1: InputClass;\r\n part2: InputClass;\r\n part3: InputClass;\r\n part4: InputClass;\r\n get type(): typeof InputType { return InputType; }\r\n alphas = ['الف', 'ب', 'پ', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'و', 'ه', 'ی'];\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputOptionsDiv') inputOptionsDiv: ElementRef;\r\n @ViewChild('inputLabel') inputLabel: ElementRef;\r\n ngOnInit(): void{\r\n this.inp.setValue = (v) => {\r\n this.inp.value = v;\r\n this.inp.options = [];\r\n };\r\n this.inp.setSearch = (s) => {\r\n const p = s ? s.split('_') : null;\r\n if (p && p.length === 4) {\r\n setTimeout(() => {\r\n this.part1.value = p[0];\r\n this.part2.value = p[1];\r\n this.part2.search = p[1];\r\n this.part3.value = p[2];\r\n this.part4.value = p[3];\r\n }, 100);\r\n } else if (p && p.length === 2) {\r\n setTimeout(() => {\r\n this.part1.value = p[0];\r\n this.part3.value = p[1];\r\n }, 100);\r\n }else {\r\n this.part1.value = '';\r\n this.part2.value = '';\r\n this.part2.search = '';\r\n this.part3.value = '';\r\n this.part4.value = '';\r\n }\r\n };\r\n this.inp.focus = () => {\r\n this.openOptions(true);\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.value = this.inp.default;\r\n this.inp.search = '';\r\n this.part1.value = '';\r\n this.part2.value = '';\r\n this.part2.search = '';\r\n this.part3.value = '';\r\n this.part4.value = '';\r\n if (this.inp.rel != null){\r\n this.inp.rel.options = [];\r\n }\r\n };\r\n this.inp.data = () => {\r\n return this.inp.value;\r\n };\r\n this.part1 = new InputClass(this.inp.environment, this.inp.l, 'Part1', null, InputType.Number,\r\n 'plaque-part-1 plaque-part-item' + (this.inp.type === InputType.SelectAutoCompletePlaqueM ? ' plaque-part-m' : ''),\r\n '', true,\r\n this.inp.type === InputType.SelectAutoCompletePlaqueM ? 100 : 10,\r\n this.inp.type === InputType.SelectAutoCompletePlaqueM ? 999 : 99);\r\n this.part2 = new InputClass(this.inp.environment, this.inp.l, 'Part2', null, InputType.Select,\r\n 'plaque-part-2 plaque-part-item' + (this.inp.type === InputType.SelectAutoCompletePlaqueM ? ' plaque-part-m' : ''),\r\n '', true);\r\n this.part2.options = this.alphas.map(x => new OptionClass(x, x));\r\n this.part3 = new InputClass(this.inp.environment, this.inp.l, 'Part3', null, InputType.Number,\r\n 'plaque-part-3 plaque-part-item' + (this.inp.type === InputType.SelectAutoCompletePlaqueM ? ' plaque-part-m' : ''),\r\n '', true,\r\n this.inp.type === InputType.SelectAutoCompletePlaqueM ? 10000 : 100,\r\n this.inp.type === InputType.SelectAutoCompletePlaqueM ? 99999 : 999);\r\n this.part4 = new InputClass(this.inp.environment, this.inp.l, 'Part4', null, InputType.Number,\r\n 'plaque-part-4 plaque-part-item' + (this.inp.type === InputType.SelectAutoCompletePlaqueM ? ' plaque-part-m' : ''),\r\n '', true, 10, 99);\r\n this.part1.displayLabel = this.part2.displayLabel = this.part3.displayLabel = this.part4.displayLabel = false;\r\n this.part1.placeholder = this.part2.placeholder = this.part3.placeholder = this.part4.placeholder = null;\r\n this.part1.onChange = (v) => {\r\n this.inp.error = null;\r\n this.inp.value = null;\r\n if (v.length === 2 && this.inp.type === InputType.SelectAutoCompletePlaque){\r\n this.part2.focus();\r\n this.loadOptions();\r\n } else if (v.length === 3 && this.inp.type === InputType.SelectAutoCompletePlaqueM){\r\n this.part3.focus();\r\n this.loadOptions();\r\n }\r\n };\r\n this.part2.onChange = () => {\r\n this.inp.error = null;\r\n this.inp.value = null;\r\n setTimeout(() => {\r\n this.part3.focus();\r\n this.loadOptions();\r\n }, 100);\r\n };\r\n this.part3.onChange = (v) => {\r\n this.inp.error = null;\r\n this.inp.value = null;\r\n if (v.length === 3 && this.inp.type === InputType.SelectAutoCompletePlaque){\r\n this.part4.focus();\r\n this.loadOptions();\r\n } else if (v.length === 5 && this.inp.type === InputType.SelectAutoCompletePlaqueM){\r\n this.loadOptions();\r\n }\r\n };\r\n this.part4.onChange = (v) => {\r\n this.inp.error = null;\r\n this.inp.value = null;\r\n if (v.length === 2){\r\n this.loadOptions();\r\n }\r\n };\r\n this.part1.onKeyDown = this.part2.onKeyDown = this.part3.onKeyDown = this.part4.onKeyDown = (e) => {\r\n const code = e.keyCode || e.which;\r\n if (code === 38 || code === 40){\r\n this.onKeyDown(e);\r\n }\r\n };\r\n this.part1.onFocusOut = (e) => {\r\n if (!$(e.relatedTarget).closest('.form-input.plaque-select').hasClass('plaque-select') && !$(e.rangeParent).closest('.form-input.plaque-select').hasClass('plaque-select')){\r\n if (this.open){\r\n this.closeOptions();\r\n }\r\n }\r\n };\r\n this.part2.onFocusOut = (e) => {\r\n if (!$(e.relatedTarget).closest('.form-input.plaque-select').hasClass('plaque-select') && !$(e.rangeParent).closest('.form-input.plaque-select').hasClass('plaque-select')){\r\n if (this.open){\r\n this.closeOptions();\r\n }\r\n }\r\n };\r\n this.part3.onFocusOut = (e) => {\r\n if (!$(e.relatedTarget).closest('.form-input.plaque-select').hasClass('plaque-select') && !$(e.rangeParent).closest('.form-input.plaque-select').hasClass('plaque-select')){\r\n if (this.open){\r\n this.closeOptions();\r\n }\r\n }\r\n };\r\n this.part4.onFocusOut = (e) => {\r\n if (!$(e.relatedTarget).closest('.form-input.plaque-select').hasClass('plaque-select') && !$(e.rangeParent).closest('.form-input.plaque-select').hasClass('plaque-select')){\r\n if (this.open){\r\n this.closeOptions();\r\n }\r\n }\r\n };\r\n }\r\n loadOptions(): void{\r\n const v = this.getSearch().replace(/^_+|_+$/g, '');\r\n if (v){\r\n this.inp.load(this.inp.url.replace('{}', v));\r\n }else{\r\n this.inp.options = [];\r\n }\r\n }\r\n openOptions(f = false): boolean{\r\n this.setPosition();\r\n this.setHoverCenter();\r\n this.open = true;\r\n this.focusInput(f);\r\n return true;\r\n }\r\n focusInput(f = false): void{\r\n if (f){\r\n this.part1.focus();\r\n }\r\n }\r\n closeOptions(): boolean{\r\n setTimeout(() => {\r\n this.open = false;\r\n this.top = false;\r\n this.inp.hover = -1;\r\n if (this.inp.value === null){\r\n this.inp.search = '';\r\n this.part1.value = '';\r\n this.part2.value = '';\r\n this.part2.search = '';\r\n this.part3.value = '';\r\n this.part4.value = '';\r\n this.inp.options = [];\r\n }\r\n }, 1);\r\n return true;\r\n }\r\n setPosition(): void{\r\n const rect = this.inputDiv.nativeElement.getBoundingClientRect();\r\n const offsetOfBottom = window.innerHeight - rect.bottom;\r\n const height = this.inputOptionsDiv.nativeElement.offsetHeight;\r\n this.top = offsetOfBottom < height;\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9) {\r\n e.preventDefault();\r\n this.cI(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n else if (code === 13){\r\n e.preventDefault();\r\n if (this.open){\r\n const h = this.getSelected();\r\n if (!h){\r\n return;\r\n }\r\n this.selectOption(h.value);\r\n }else{\r\n this.cI('Tab');\r\n }\r\n }\r\n else if (code === 40){\r\n e.preventDefault();\r\n if (this.inp.hover + 1 >= this.inp.index){\r\n return;\r\n }\r\n this.inp.hover = this.getHover();\r\n this.setHoverCenter();\r\n }\r\n else if (code === 38){\r\n e.preventDefault();\r\n if (this.inp.hover <= 0){\r\n this.inp.hover = 0;\r\n return;\r\n }\r\n this.inp.hover = this.getHover(-1);\r\n this.setHoverCenter();\r\n }\r\n }\r\n toggleOption(): void{\r\n this.openOptions();\r\n }\r\n selectOption(v, isEdit = false): void{\r\n this.inp.error = null;\r\n const va = this.getValue(v);\r\n this.inp.value = v;\r\n this.inp.hover = va ? va.index : -1;\r\n this.inp.search = va ? va.search : '';\r\n this.cSearch = this.inp.search;\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.inp);\r\n }\r\n if (this.inp.rel){\r\n this.inp.rel.value = null;\r\n this.inp.rel.hover = -1;\r\n this.inp.rel.index = 0;\r\n this.inp.rel.search = '';\r\n this.inp.rel.options = [];\r\n this.inp.rel.url = this.inp.relUrl.replace('{}', this.inp.value);\r\n if (this.inp.rel.type !== InputType.SelectAutoComplete) {\r\n this.inp.rel.load();\r\n }else{\r\n this.inp.rel.url += '_{}';\r\n }\r\n }\r\n const p = va ? va.option.Plaque.split('_') : null;\r\n if (p && p.length === 4) {\r\n this.part1.value = p ? p[0] : '';\r\n this.part2.value = p ? p[1] : '';\r\n this.part2.search = p ? p[1] : '';\r\n this.part3.value = p ? p[2] : '';\r\n this.part4.value = p ? p[3] : '';\r\n } else if (p && p.length === 2) {\r\n this.part1.value = p ? p[0] : '';\r\n this.part3.value = p ? p[1] : '';\r\n }\r\n if (!isEdit){\r\n this.cI('Tab');\r\n }\r\n }\r\n cI(i: string): void{\r\n setTimeout(() => {\r\n this.changeIndex.emit(i);\r\n }, 10);\r\n setTimeout(() => {\r\n this.closeOptions();\r\n }, 20);\r\n }\r\n setHoverCenter(): void {\r\n setTimeout(() => {\r\n const hover: any = $(this.inputOptionsDiv.nativeElement).find('.option.hover');\r\n const items: any = $(this.inputOptionsDiv.nativeElement).find('.items');\r\n if (hover.length === 0){\r\n return;\r\n }\r\n items.scrollTop = items.scrollTop - items.offset.top + hover.offset.top - hover.height();\r\n }, 1);\r\n }\r\n getSelected(o: OptionClass[] = this.inp.options): any{\r\n const h = o.find(x => x.index === this.inp.hover);\r\n if (h){\r\n return h;\r\n }\r\n for (const i of o){\r\n const hi = this.getSelected(i.options);\r\n if (hi){\r\n return hi;\r\n }\r\n }\r\n }\r\n getHover(i = 1, o: OptionClass[] = this.inp.options, h = this.inp.hover): number{\r\n const ho = o.find(x => x.index === h + i);\r\n if (ho){\r\n if (ho.show){\r\n return ho.index;\r\n }else {\r\n h = h + i;\r\n }\r\n }\r\n for (const it of o){\r\n const hi = this.getHover(i, it.options, h);\r\n if (hi){\r\n return hi;\r\n }\r\n }\r\n return 0;\r\n }\r\n getValue(v, o: OptionClass[] = this.inp.options): OptionClass{\r\n const h = o.find(x => x.value === v);\r\n if (h){\r\n return h;\r\n }\r\n for (const i of o){\r\n const hi = this.getValue(v, i.options);\r\n if (hi){\r\n return hi;\r\n }\r\n }\r\n }\r\n plaqueChangeFocus(p, a): void{\r\n if (p === 'Part1'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part2.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.changeIndex.emit('ShiftTab');\r\n }\r\n } else if (p === 'Part2'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part3.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part1.focus();\r\n }\r\n } else if (p === 'Part3'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part4.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part2.focus();\r\n }\r\n } else if (p === 'Part4'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.changeIndex.emit('Tab');\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part3.focus();\r\n }\r\n }\r\n }\r\n getSearch(): string{\r\n return this.inp.type === InputType.SelectAutoCompletePlaque ?\r\n `${this.part1.value ? this.part1.value + '_' : ''}${this.part2.value ? this.part2.value + '_' : ''}${this.part3.value ? this.part3.value + '_' : ''}${this.part4.value ? this.part4.value : ''}` :\r\n `${this.part1.value ? this.part1.value + '_' : ''}${this.part3.value ? this.part3.value + '_' : ''}`;\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {InputClass, OptionClass} from '../../../classes/form.class';\r\nimport {InputError, InputType} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-plaque',\r\n templateUrl: './form.plaque.component.html',\r\n styleUrls: ['./form.plaque.component.css']\r\n})\r\nexport class FormPlaqueComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n part1: InputClass;\r\n part2: InputClass;\r\n part3: InputClass;\r\n part4: InputClass;\r\n get type(): typeof InputType { return InputType; }\r\n alphas = ['الف', 'ب', 'پ', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'و', 'ه', 'ی'];\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputLabel') inputLabel: ElementRef;\r\n constructor(){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.part1 = new InputClass(this.inp.environment, this.inp.l, 'Part1', null, InputType.Number,\r\n 'plaque-part-1 plaque-part-item' + (this.inp.type === InputType.PlaqueM ? ' plaque-part-m' : ''),\r\n '', true,\r\n this.inp.type === InputType.PlaqueM ? 100 : 10,\r\n this.inp.type === InputType.PlaqueM ? 999 : 99);\r\n this.part2 = new InputClass(this.inp.environment, this.inp.l, 'Part2', null, InputType.Select,\r\n 'plaque-part-2 plaque-part-item' + (this.inp.type === InputType.PlaqueM ? ' plaque-part-m' : ''),\r\n '', true);\r\n this.part2.options = this.alphas.map(x => new OptionClass(x, x));\r\n this.part3 = new InputClass(this.inp.environment, this.inp.l, 'Part3', null, InputType.Number,\r\n 'plaque-part-3 plaque-part-item' + (this.inp.type === InputType.PlaqueM ? ' plaque-part-m' : ''),\r\n '', true,\r\n this.inp.type === InputType.PlaqueM ? 10000 : 100,\r\n this.inp.type === InputType.PlaqueM ? 99999 : 999);\r\n this.part4 = new InputClass(this.inp.environment, this.inp.l, 'Part4', null, InputType.Number,\r\n 'plaque-part-4 plaque-part-item' + (this.inp.type === InputType.PlaqueM ? ' plaque-part-m' : ''),\r\n '', true, 10, 99);\r\n this.part1.displayLabel = this.part2.displayLabel = this.part3.displayLabel = this.part4.displayLabel = false;\r\n this.part1.placeholder = this.part2.placeholder = this.part3.placeholder = this.part4.placeholder = null;\r\n this.part1.onChange = (v) => {\r\n this.inp.error = null;\r\n if (v.length === 2 && this.inp.type === InputType.Plaque){\r\n this.part2.focus();\r\n } else if (v.length === 3 && this.inp.type === InputType.PlaqueM){\r\n this.part3.focus();\r\n }\r\n };\r\n this.part2.onChange = () => {\r\n this.inp.error = null;\r\n setTimeout(() => {\r\n this.part3.focus();\r\n }, 100);\r\n };\r\n this.part3.onChange = (v) => {\r\n this.inp.error = null;\r\n if (v.length === 3 && this.inp.type === InputType.Plaque){\r\n this.part4.focus();\r\n } else if (v.length === 5 && this.inp.type === InputType.PlaqueM){\r\n this.changeIndex.emit('Tab');\r\n }\r\n };\r\n this.part4.onChange = (v) => {\r\n this.inp.error = null;\r\n if (v.length === 2){\r\n this.changeIndex.emit('Tab');\r\n }\r\n };\r\n this.inp.setValue = (v) => {\r\n const parts = v.split('_');\r\n if (parts.length === 4){\r\n setTimeout(() => {\r\n this.inp.value = v;\r\n this.part1.value = parts[0];\r\n this.part2.value = parts[1];\r\n this.part2.search = parts[1];\r\n this.part3.value = parts[2];\r\n this.part4.value = parts[3];\r\n }, 100);\r\n } else if (parts.length === 2){\r\n setTimeout(() => {\r\n this.inp.value = v;\r\n this.part1.value = parts[0];\r\n this.part3.value = parts[1];\r\n }, 100);\r\n }else{\r\n this.part1.value = '';\r\n this.part2.value = '';\r\n this.part2.search = '';\r\n this.part3.value = '';\r\n this.part4.value = '';\r\n }\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.value = this.getValue();\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && !this.inp.value) {\r\n return true;\r\n }\r\n if (this.inp.required && this.inp.type === InputType.Plaque &&\r\n (!this.part1.isValid() || !this.part2.isValid() || !this.part3.isValid() || !this.part4.isValid())){\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n if (this.inp.required && this.inp.type === InputType.PlaqueM && (!this.part1.isValid() || !this.part3.isValid())){\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.value = this.inp.default;\r\n this.part1.value = this.part2.value = this.part3.value = this.part4.value = null;\r\n this.part2.search = '';\r\n };\r\n this.inp.data = () => {\r\n return this.getValue();\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n }\r\n changeFocus(p, a): void{\r\n if (p === 'Part1'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part2.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.changeIndex.emit('ShiftTab');\r\n }\r\n } else if (p === 'Part2'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part3.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part1.focus();\r\n }\r\n } else if (p === 'Part3'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.part4.focus();\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part2.focus();\r\n }\r\n } else if (p === 'Part4'){\r\n if (a === 'Tab' || a === 'Enter'){\r\n this.changeIndex.emit('Tab');\r\n } else if (a === 'ShiftTab' || a === 'ShiftEnter'){\r\n this.part3.focus();\r\n }\r\n }\r\n }\r\n onFocusIn(e = null): void{\r\n if (e == null || !(e.screenX && e.screenX !== 0 && e.screenY && e.screenY !== 0)){\r\n this.part1.focus();\r\n }\r\n }\r\n onKeyDown(e): void{\r\n this.inp.error = null;\r\n const code = e.keyCode || e.which;\r\n if (code === 9) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n }\r\n getValue(): string{\r\n return this.inp.type === InputType.Plaque ?\r\n `${this.part1.value ? this.part1.value : ''}_${this.part2.value ? this.part2.value : ''}_${this.part3.value ? this.part3.value : ''}_${this.part4.value ? this.part4.value : ''}` :\r\n `${this.part1.value ? this.part1.value : ''}_${this.part3.value ? this.part3.value : ''}`;\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-radio',\r\n templateUrl: './form.radio.component.html',\r\n styleUrls: ['./form.radio.component.css']\r\n})\r\nexport class FormRadioComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n constructor(){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inp.load();\r\n this.inp.setValue = (v) => {\r\n this.inp.value = v;\r\n if (this.inp.value == null){\r\n this.inp.value = this.inp.options.find(x => true).value;\r\n }\r\n this.onChange();\r\n };\r\n this.inp.setValue(this.inp.value, false);\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && this.inp.value === null) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.setValue(this.inp.default, false);\r\n };\r\n this.inp.data = () => {\r\n return this.inp.value;\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n }\r\n\r\n onClick(): void{\r\n this.onFocusIn();\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9 || code === 13) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n const selected = this.inp.options.findIndex(x => x.value === this.inp.value);\r\n if (code === 37){\r\n const next = (selected >= this.inp.options.length - 1) ? selected : selected + 1;\r\n this.inp.value = this.inp.options[next].value;\r\n }\r\n if (code === 39){\r\n const next = (selected > 0) ? selected - 1 : 0;\r\n this.inp.value = this.inp.options[next].value;\r\n }\r\n }\r\n onChange(): void{\r\n this.inp.error = null;\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.inp);\r\n }\r\n }\r\n onFocusIn(): void{\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass, OptionClass} from '../../../../classes/form.class';\r\n\r\n@Component({\r\n selector: 'lib-form-select-item',\r\n templateUrl: './form.select.item.component.html',\r\n styleUrls: ['./form.select.item.component.css']\r\n})\r\nexport class FormSelectItemComponent implements OnInit{\r\n @Output()\r\n selectOption = new EventEmitter<string>();\r\n @Input()\r\n select: InputClass;\r\n @Input()\r\n item: OptionClass;\r\n @Input()\r\n parent: OptionClass = null;\r\n @Input()\r\n index: number;\r\n ngOnInit(): void{\r\n this.item.parent = this.parent;\r\n }\r\n hoverOption(opt: OptionClass): void{\r\n this.select.hover = opt.index;\r\n }\r\n toggleChildren(e): void{\r\n const ch = $(e.target).closest('.option-con').find(' > .children');\r\n const oc = $(e.target).closest('.option-con').find(' > .caret-icon');\r\n if (ch.hasClass('open')) {\r\n ch.removeClass('open');\r\n ch.slideUp();\r\n oc.removeClass('fa-caret-down').addClass('fa-caret-left');\r\n } else {\r\n ch.addClass('open');\r\n ch.slideDown();\r\n oc.addClass('fa-caret-down').removeClass('fa-caret-left');\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass, OptionClass} from '../../../classes/form.class';\r\nimport {InputError, InputType} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-select',\r\n templateUrl: './form.select.component.html',\r\n styleUrls: ['./form.select.component.css']\r\n})\r\nexport class FormSelectComponent implements OnInit{\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @Input()\r\n inp: InputClass;\r\n @Input()\r\n inForm: boolean;\r\n cSearch = '';\r\n get type(): typeof InputType { return InputType; }\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputOptionsDiv') inputOptionsDiv: ElementRef;\r\n @ViewChild('inputLabel') inputLabel: ElementRef;\r\n ngOnInit(): void{\r\n if (this.inp.type !== InputType.SelectAutoComplete){\r\n this.inp.load();\r\n }\r\n this.inp.setValue = (v, isEdit) => {\r\n if (!this.inp.multiple){\r\n this.selectOption(v == null ? null : v.toString(), isEdit);\r\n }else{\r\n for (const t of v){\r\n this.selectOption(t.toString(), isEdit);\r\n }\r\n }\r\n };\r\n if (this.inp.default != null){\r\n this.inp.setValue(this.inp.default, false);\r\n }\r\n this.inp.setSearch = (s) => {\r\n this.inp.search = s;\r\n };\r\n this.inp.focus = () => {\r\n this.openOptions();\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && ((!this.inp.multiple && !this.inp.value) || (this.inp.multiple && this.getSelected().length === 0))) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n if (!this.inp.multiple){\r\n this.inp.setValue(this.inp.default, true);\r\n }else{\r\n this.inp.options.forEach(x => this.unCheck(x));\r\n }\r\n if (this.inp.rel != null){\r\n this.inp.rel.options = [];\r\n }\r\n if (this.inp.type === InputType.SelectAutoComplete){\r\n this.inp.options = [];\r\n }\r\n };\r\n this.inp.data = () => {\r\n return !this.inp.multiple ? this.inp.value : this.getSelected();\r\n };\r\n this.inp.focusOut = () => {\r\n $(this.inputBase.nativeElement).blur();\r\n };\r\n }\r\n loadOptions(): void{\r\n const v = this.inp.search.replace(/^_+|_+$/g, '');\r\n if (v){\r\n this.inp.load(this.inp.url.replace('{}', v));\r\n }else{\r\n this.inp.options = [];\r\n }\r\n }\r\n openOptions(): void{\r\n this.setPosition();\r\n this.setHoverCenter();\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n onFocusOut(): void{\r\n this.closeOptions();\r\n }\r\n closeOptions(): boolean{\r\n setTimeout(() => {\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n this.inp.hover = -1;\r\n if (this.inp.value === null){\r\n this.inp.search = '';\r\n if (this.inp.type === InputType.SelectAutoComplete){\r\n this.inp.options = [];\r\n }else{\r\n this.setOptions();\r\n }\r\n }\r\n }, 1);\r\n return true;\r\n }\r\n setPosition(): void{\r\n const rect = this.inputDiv.nativeElement.getBoundingClientRect();\r\n const offsetOfBottom = window.innerHeight - rect.bottom;\r\n const height = this.inputOptionsDiv.nativeElement.offsetHeight;\r\n if (offsetOfBottom < height){\r\n $(this.inputDiv.nativeElement).addClass('top');\r\n }else{\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n }\r\n }\r\n setOptions(r = this.inp.options): void{\r\n r.map((x) => {\r\n this.setOptions(x.options);\r\n x.show = (this.inp.value !== null || this.inp.search === '' || x.name.includes(this.inp.search) ||\r\n x.value.includes(this.inp.search) || x.options.filter(o => o.show).length > 0);\r\n });\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9) {\r\n e.preventDefault();\r\n this.cI(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n else if (code === 13){\r\n e.preventDefault();\r\n if ($(this.inputBase.nativeElement).is(':focus')){\r\n const h = this.getSelectedHover();\r\n if (!h){\r\n return;\r\n }\r\n this.selectOption(h.value);\r\n }else{\r\n this.cI('Tab');\r\n }\r\n }\r\n else if (code === 40){\r\n e.preventDefault();\r\n if (this.inp.hover + 1 >= this.inp.index){\r\n return;\r\n }\r\n this.inp.hover = this.getHover();\r\n this.setHoverCenter();\r\n }\r\n else if (code === 38){\r\n e.preventDefault();\r\n if (this.inp.hover <= 0){\r\n this.inp.hover = 0;\r\n return;\r\n }\r\n this.inp.hover = this.getHover(-1);\r\n this.setHoverCenter();\r\n }\r\n }\r\n toggleOption(e): void{\r\n if (this.inp.multiple && $(e.target).closest('.option').hasClass('option')){\r\n return;\r\n }\r\n this.openOptions();\r\n }\r\n onKeyUp(e): void{\r\n if (this.cSearch !== e.target.value) {\r\n this.cSearch = e.target.value;\r\n if (this.inp.type === InputType.Select){\r\n return;\r\n }\r\n this.inp.value = null;\r\n if (this.inp.type === InputType.SelectSearch){\r\n this.setOptions();\r\n }else if (e.target.value){\r\n this.loadOptions();\r\n }else{\r\n this.inp.options = [];\r\n }\r\n }\r\n }\r\n selectOption(v, isEdit = false): void{\r\n this.inp.error = null;\r\n const va = this.getValue(v);\r\n if (this.inp.multiple){\r\n this.toggle(va);\r\n this.inp.search = '';\r\n }else{\r\n this.inp.value = v;\r\n this.inp.hover = va ? va.index : -1;\r\n this.inp.search = va ? va.name : '';\r\n }\r\n this.setOptions();\r\n this.cSearch = this.inp.search;\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.inp);\r\n }\r\n if (this.inp.rel){\r\n this.inp.rel.value = null;\r\n this.inp.rel.hover = -1;\r\n this.inp.rel.index = 0;\r\n this.inp.rel.search = '';\r\n this.inp.rel.options = [];\r\n this.inp.rel.url = this.inp.relUrl.replace('{}', this.inp.value);\r\n if (this.inp.rel.type !== InputType.SelectAutoComplete) {\r\n this.inp.rel.load();\r\n }else{\r\n this.inp.rel.url += '_{}';\r\n }\r\n }\r\n if (!isEdit && !this.inp.multiple){\r\n this.cI('Tab');\r\n }\r\n }\r\n toggle(op: OptionClass): void {\r\n if (op.selected){\r\n this.unCheck(op);\r\n setTimeout(() => {this.unCheckParent(op.parent); }, 100);\r\n }else{\r\n this.check(op);\r\n setTimeout(() => {this.checkParent(op.parent); }, 100);\r\n }\r\n }\r\n check(c: OptionClass): void {\r\n c.selected = true;\r\n this.checkChildren(c);\r\n }\r\n unCheck(c: OptionClass): void {\r\n c.selected = false;\r\n c.options.forEach((ch) => {\r\n this.unCheck(ch);\r\n });\r\n }\r\n checkChildren(o: OptionClass): void{\r\n o.options.forEach((ch) => {\r\n this.check(ch);\r\n });\r\n }\r\n checkParent(p: OptionClass): void{\r\n if (p){\r\n if (p.options.filter(x => !x.selected).length > 0){\r\n p.selected = null;\r\n }else{\r\n p.selected = true;\r\n }\r\n this.checkParent(p.parent);\r\n }\r\n }\r\n unCheckParent(p: OptionClass): void{\r\n if (p){\r\n if (p.options.filter(x => x.selected || x.selected == null).length > 0){\r\n p.selected = null;\r\n }else{\r\n p.selected = false;\r\n }\r\n this.unCheckParent(p.parent);\r\n }\r\n }\r\n cI(i: string): void{\r\n setTimeout(() => {\r\n this.changeIndex.emit(i);\r\n if (!this.inForm){\r\n $(this.inputBase.nativeElement).blur();\r\n }\r\n }, 10);\r\n setTimeout(() => {\r\n this.closeOptions();\r\n }, 20);\r\n }\r\n setHoverCenter(): void {\r\n setTimeout(() => {\r\n const hover: any = $(this.inputOptionsDiv.nativeElement).find('.option.hover');\r\n const items: any = $(this.inputOptionsDiv.nativeElement).find('.items');\r\n if (hover.length === 0){\r\n return;\r\n }\r\n items.scrollTop = items.scrollTop - items.offset.top + hover.offset.top - hover.height();\r\n }, 1);\r\n }\r\n title(): string {\r\n if (this.inp.value == null){\r\n return null;\r\n }\r\n return this.getTitle(this.inp);\r\n }\r\n getTitle(os): string{\r\n for (const s of os.options){\r\n if (s.value === this.inp.value.toString()){\r\n return this.inp.l(s.name);\r\n }\r\n const v = this.getTitle(s);\r\n if (v != null){\r\n return v;\r\n }\r\n }\r\n return null;\r\n }\r\n getSelectedHover(o: OptionClass[] = this.inp.options): any{\r\n const h = o.find(x => x.index === this.inp.hover);\r\n if (h){\r\n return h;\r\n }\r\n for (const i of o){\r\n const hi = this.getSelectedHover(i.options);\r\n if (hi){\r\n return hi;\r\n }\r\n }\r\n }\r\n getHover(i = 1, o: OptionClass[] = this.inp.options, h = this.inp.hover): number{\r\n const ho = o.find(x => x.index === h + i);\r\n if (ho){\r\n if (ho.show){\r\n return ho.index;\r\n }else {\r\n h = h + i;\r\n }\r\n }\r\n for (const it of o){\r\n const hi = this.getHover(i, it.options, h);\r\n if (hi){\r\n return hi;\r\n }\r\n }\r\n return 0;\r\n }\r\n getValue(v, o: OptionClass[] = this.inp.options): OptionClass{\r\n const h = o.find(x => x.value === v);\r\n if (h){\r\n return h;\r\n }\r\n for (const i of o){\r\n const hi = this.getValue(v, i.options);\r\n if (hi){\r\n return hi;\r\n }\r\n }\r\n }\r\n\r\n getSelected(opts: OptionClass[]= this.inp.options): any[]{\r\n let l = [];\r\n for (const f of opts){\r\n if (f.selected){\r\n l.push(f.value);\r\n }\r\n if (f.selected && f.options.length !== 0){\r\n continue;\r\n }\r\n const rs = this.getSelected(f.options);\r\n l = l.concat(rs);\r\n }\r\n return l;\r\n }\r\n}\r\n","import {PermissionTypeEnum} from './enum.class';\r\nimport {ModalClass} from './modal.class';\r\n\r\nexport class PermissionClass {\r\n constructor(public Name: string = '', public Icon: string = '', public Type: PermissionTypeEnum = null, public Area: string = '',\r\n public Controller: string = '', public Action: string = '', public Children: PermissionClass[] = [],\r\n public Accesses: PermissionClass[] = []) {\r\n }\r\n Modal: ModalClass;\r\n RelatedId: string = null;\r\n hasAccess(a: string): boolean{\r\n return this.Accesses.filter(x => x.Action === a && x.Type === PermissionTypeEnum.Access).length > 0;\r\n }\r\n hasOption(a: string): boolean{\r\n return this.Accesses.filter(x => x.Action === a && x.Type !== PermissionTypeEnum.Access).length > 0;\r\n }\r\n getOptions(): PermissionClass[]{\r\n return this.Accesses.filter(x => x.Type !== PermissionTypeEnum.Access);\r\n }\r\n getUrl(): string{\r\n return (this.Area ? '/' + this.Area : '') + '/' + this.Controller + '/' +\r\n (this.RelatedId ? `${this.RelatedId}/` : '') +\r\n (this.Action ? this.Action : '');\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {PermissionClass} from '../../../classes/permission.class';\r\nimport {InputError, InputType, PermissionTypeEnum} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-table',\r\n templateUrl: './form.table.component.html',\r\n styleUrls: ['./form.table.component.css']\r\n})\r\nexport class FormTableComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n constructor(){\r\n }\r\n ngOnInit(): void{\r\n const p = new PermissionClass();\r\n p.Type = PermissionTypeEnum.Form;\r\n const lAccess = new PermissionClass();\r\n lAccess.Action = 'List';\r\n const iAccess = new PermissionClass();\r\n iAccess.Action = 'Insert';\r\n const uAccess = new PermissionClass();\r\n uAccess.Action = 'Update';\r\n const dAccess = new PermissionClass();\r\n dAccess.Action = 'Delete';\r\n p.Accesses = [\r\n lAccess,\r\n iAccess,\r\n uAccess,\r\n dAccess\r\n ];\r\n this.inp.table.displayLabel = false;\r\n this.inp.table.style = {padding: 0, boxShadow: 'unset'};\r\n this.inp.table.permissions = p;\r\n this.inp.table.extraButtons = false;\r\n this.inp.table.cols.forEach(x => x.sort = false);\r\n if (this.inp.table.form){\r\n this.inp.table.form.onTop = true;\r\n this.inp.table.form.inputs.push(new InputClass(this.inp.environment, this.inp.l, 'Id', null, InputType.Hidden, '', null, false));\r\n this.inp.table.form.inputs.forEach(x => {\r\n x.displayLabel = false;\r\n x.class += ' h-30';\r\n });\r\n }\r\n this.inp.setValue = (v) => {\r\n this.inp.table.rows = v === null ? [] : v;\r\n };\r\n this.inp.focus = () => {\r\n if (this.inp.table.form){\r\n this.inp.table.form.inputs.find(_ => true).focus();\r\n }\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && this.inp.table.rows.length === 0) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && this.inp.table.rows.length === 0) {\r\n return true;\r\n }\r\n if (this.inp.required && this.inp.minLength !== -1 && this.inp.minLength === this.inp.maxLength &&\r\n this.inp.table.rows.length !== this.inp.minLength) {\r\n this.inp.error = InputError.Length;\r\n return false;\r\n }\r\n if (this.inp.required && this.inp.minLength !== -1 && this.inp.table.rows.length < this.inp.minLength) {\r\n this.inp.error = InputError.MinLength;\r\n return false;\r\n }\r\n if (this.inp.required && this.inp.maxLength !== -1 && this.inp.table.rows.length > this.inp.maxLength) {\r\n this.inp.error = InputError.MaxLength;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.setValue(this.inp.default === null ? [] : this.inp.default, false);\r\n };\r\n this.inp.data = () => {\r\n return this.inp.table.rows;\r\n };\r\n if (this.inp.default){\r\n this.inp.setValue(this.inp.default, false);\r\n }\r\n }\r\n changeRows(e): void{\r\n this.inp.error = null;\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-textarea',\r\n templateUrl: './form.textarea.component.html',\r\n styleUrls: ['./form.textarea.component.css']\r\n})\r\nexport class FormTextareaComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputLabel') inputLabel: ElementRef;\r\n constructor(){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inp.setValue = (v) => {\r\n this.inp.value = v;\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && !this.inp.value) {\r\n return true;\r\n }\r\n if (this.inp.required && this.inp.minLength !== -1 &&\r\n this.inp.minLength === this.inp.maxLength &&\r\n this.inp.value.length !== this.inp.minLength) {\r\n this.inp.error = InputError.Length;\r\n return false;\r\n }\r\n if (this.inp.required &&\r\n this.inp.minLength !== -1 &&\r\n this.inp.value.length < this.inp.minLength) {\r\n this.inp.error = InputError.MinLength;\r\n return false;\r\n }\r\n if (this.inp.required &&\r\n this.inp.maxLength !== -1 &&\r\n this.inp.value.length > this.inp.maxLength) {\r\n this.inp.error = InputError.MaxLength;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.value = this.inp.default;\r\n };\r\n this.inp.data = () => {\r\n return this.inp.value;\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n }\r\n onFocusIn(): void{\r\n this.inputBase.nativeElement.focus();\r\n }\r\n onKeyDown(e): void{\r\n this.inp.error = null;\r\n const code = e.keyCode || e.which;\r\n if (code === 9) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError, InputType} from '../../../classes/enum.class';\r\nimport {HelperClass} from '../../../classes/helper.class';\r\n\r\n@Component({\r\n selector: 'lib-form-textbox',\r\n templateUrl: './form.textbox.component.html',\r\n styleUrls: ['./form.textbox.component.css']\r\n})\r\nexport class FormTextboxComponent implements OnInit {\r\n @Input()\r\n inp: InputClass;\r\n cValue = '';\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n\r\n get type(): typeof InputType {\r\n return InputType;\r\n }\r\n\r\n navigationKeys = ['Backspace', 'Delete', 'Tab', 'Escape', 'Enter', 'Home', 'End', 'ArrowLeft', 'ArrowRight', 'Clear', 'Copy', 'Paste'];\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputLabel') inputLabel: ElementRef;\r\n\r\n ngOnInit(): void {\r\n this.inp.setValue = (v) => {\r\n this.inp.value = v != null ? v.toString() : '';\r\n };\r\n this.inp.focus = (changeIndex= false) => {\r\n this.onFocusIn(changeIndex);\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && !this.inp.value) {\r\n return true;\r\n }\r\n if (this.inp.type === InputType.Mobile && !RegExp(/^(09\\d{9})$/).test(this.inp.value)) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n if (this.inp.type === InputType.Phone && !RegExp(/^(0\\d{10})$/).test(this.inp.value)) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n if (this.inp.type === InputType.Url && !RegExp(/^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)$/).test(this.inp.value)) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n if (this.inp.required && this.inp.type === InputType.Email && !RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/).test(this.inp.value)) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n if (this.inp.type === InputType.NationalCode && !HelperClass.nationalCodeValid(this.inp.value)) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n if (this.inp.type === InputType.Sheba && !HelperClass.shebaValid(this.inp.value)) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n if (this.inp.type === InputType.PostalCode && !HelperClass.postalCodeValid(this.inp.value)) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n if (this.inp.type === InputType.Number || this.inp.type === InputType.Price){\r\n const v = this.inp.value.toString().replace(/,/g, '');\r\n if (!/^\\d+$/.test(v)){\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n }\r\n if (this.inp.type === InputType.Number || this.inp.type === InputType.Price){\r\n const v = parseInt(this.inp.value.replace(/,/g, ''), 10);\r\n if (this.inp.required && this.inp.minLength !== -1 && v < this.inp.minLength) {\r\n this.inp.error = InputError.MinAmount;\r\n return false;\r\n }\r\n if (this.inp.required && this.inp.maxLength !== -1 && v > this.inp.maxLength) {\r\n this.inp.error = InputError.MaxAmount;\r\n return false;\r\n }\r\n } else {\r\n if (this.inp.required && this.inp.minLength !== -1 && this.inp.minLength === this.inp.maxLength &&\r\n this.inp.value.length !== this.inp.minLength) {\r\n this.inp.error = InputError.Length;\r\n return false;\r\n }\r\n if (this.inp.required && this.inp.minLength !== -1 && this.inp.value.length < this.inp.minLength) {\r\n this.inp.error = InputError.MinLength;\r\n return false;\r\n }\r\n if (this.inp.required && this.inp.maxLength !== -1 && this.inp.value.length > this.inp.maxLength) {\r\n this.inp.error = InputError.MaxLength;\r\n return false;\r\n }\r\n }\r\n if (this.inp.match !== null && this.inp.value !== this.inp.match.value) {\r\n this.inp.error = InputError.NotMatch;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.setValue(this.inp.default, false);\r\n };\r\n this.inp.data = () => {\r\n let v = this.inp.value;\r\n if (v === null){\r\n return null;\r\n }\r\n if (v && this.inp.type === InputType.Number || this.inp.type === InputType.Price){\r\n v = parseInt(v.replace(/,/g, ''), 10);\r\n }\r\n return v;\r\n };\r\n }\r\n\r\n onFocusIn(changeIndex = false): void {\r\n if (changeIndex){\r\n this.inputBase.nativeElement.select();\r\n }else{\r\n this.inputBase.nativeElement.focus();\r\n }\r\n }\r\n onChange(e): void {\r\n this.onKeyUp(e);\r\n }\r\n\r\n onKeyUp(e): void {\r\n this.inp.value = e.target.value;\r\n if (this.inp.onKeyUp) {\r\n this.inp.onKeyUp(this.inp);\r\n }\r\n if (this.inp.onChange) {\r\n if (this.cValue !== e.target.value) {\r\n this.inp.onChange(e.target.value);\r\n this.cValue = e.target.value;\r\n }\r\n }\r\n }\r\n onClickButton(): void{\r\n if (this.inp.isValid()){\r\n this.inp.onClickButton();\r\n }\r\n }\r\n onKeyDown(e): void {\r\n if (this.inp.onKeyDown) {\r\n this.inp.onKeyDown(e);\r\n }\r\n const code = e.keyCode || e.which;\r\n if (code === 9 || code === 13) {\r\n e.preventDefault();\r\n if (code === 13 && this.inp.button){\r\n this.onClickButton();\r\n }else{\r\n this.changeIndex.emit(code === 9 ? e.shiftKey ? 'ShiftTab' : 'Tab' : e.shiftKey ? 'ShiftEnter' : 'Enter');\r\n }\r\n return;\r\n }\r\n this.inp.error = null;\r\n }\r\n\r\n getValue(): string {\r\n try {\r\n if (this.inp.value && this.inp.type === InputType.Price){\r\n const v = this.inp.value.toString().replace(/,/g, '');\r\n if (/^\\d+$/.test(v)){\r\n return parseInt(v, 10).toLocaleString();\r\n }\r\n return v;\r\n }\r\n return this.inp.value;\r\n }\r\n catch {\r\n return '';\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-time',\r\n templateUrl: './form.time.component.html',\r\n styleUrls: ['./form.time.component.css']\r\n})\r\nexport class FormTimeComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Input()\r\n inForm: boolean;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n cSearch = '';\r\n hours = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'];\r\n minutes = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59'];\r\n activeHour = null;\r\n activeMinute = null;\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputLabel') inputLabel: ElementRef;\r\n @ViewChild('inputOptionsDiv') inputOptionsDiv: ElementRef;\r\n constructor(){\r\n }\r\n ngOnInit(): void{\r\n if (this.inp.value){\r\n this.inp.setValue(this.inp.value, false);\r\n }\r\n this.inp.setValue = (v) => {\r\n if (v === null){\r\n this.inp.clear();\r\n return;\r\n } else {\r\n this.activeHour = `${(v.Hours > 9 ? v.Hours : `0${v.Hours}`)}`;\r\n this.activeMinute = `${(v.Minutes > 9 ? v.Minutes : `0${v.Minutes}`)}`;\r\n this.inp.value = `${this.activeHour}:${this.activeMinute}`;\r\n this.inp.search = `${this.activeHour}:${this.activeMinute}`;\r\n }\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && !this.inp.value) {\r\n return true;\r\n }\r\n if (!RegExp(/^(?:(?:([01]?\\d|2[0-3]):)([0-5]?\\d))$/).test(this.inp.value)) {\r\n this.inp.error = InputError.Invalid;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n if (this.inp.default){\r\n this.inp.setValue(this.inp.default, false);\r\n }else{\r\n this.inp.value = null;\r\n this.inp.search = null;\r\n }\r\n };\r\n this.inp.data = () => {\r\n return this.inp.value;\r\n };\r\n this.inp.focus = () => {\r\n this.openOptions();\r\n };\r\n this.inp.focusOut = () => {\r\n $(this.inputBase.nativeElement).blur();\r\n };\r\n }\r\n toggleTime(): void{\r\n this.openOptions();\r\n }\r\n openOptions(): void {\r\n this.setPosition();\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n setPosition(): void{\r\n const rect = this.inputDiv.nativeElement.getBoundingClientRect();\r\n const offsetOfBottom = window.innerHeight - rect.bottom;\r\n const height = this.inputOptionsDiv.nativeElement.offsetHeight;\r\n if (offsetOfBottom < height){\r\n $(this.inputDiv.nativeElement).addClass('top');\r\n }else{\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n }\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9 || code === 13) {\r\n e.preventDefault();\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n this.changeIndex.emit(code === 9 ? e.shiftKey ? 'ShiftTab' : 'Tab' : e.shiftKey ? 'ShiftEnter' : 'Enter');\r\n if (!this.inForm){\r\n $(this.inputBase.nativeElement).blur();\r\n }\r\n }\r\n }\r\n onKeyUp(e): void{\r\n this.inp.error = null;\r\n if (this.cSearch !== e.target.value) {\r\n this.cSearch = e.target.value;\r\n if (this.inp.search !== '' && this.inp.search !== null){\r\n if (RegExp(/^(?:(?:([01]?\\d|2[0-3]):)([0-5]?\\d))$/).test(this.inp.search)){\r\n const hm = this.inp.search.split(':');\r\n this.activeHour = hm[0].length === 2 ? hm[0] : `0${hm[0]}`;\r\n this.activeMinute = hm[1].length === 2 ? hm[1] : `0${hm[1]}`;\r\n this.inp.value = `${this.activeHour}:${this.activeMinute}`;\r\n return;\r\n }\r\n }\r\n this.activeHour = null;\r\n this.activeMinute = null;\r\n this.inp.value = null;\r\n }\r\n }\r\n onFocusOut(): void{\r\n $(this.inputDiv.nativeElement).removeClass('top');\r\n this.inp.search = this.inp.value;\r\n }\r\n selectTime(v: string, s: string): void{\r\n if (s === 'hour'){\r\n this.activeMinute = this.activeMinute === null ? '00' : this.activeMinute;\r\n this.activeHour = v;\r\n }else{\r\n this.activeHour = this.activeHour === null ? '00' : this.activeHour;\r\n this.activeMinute = v;\r\n this.changeIndex.emit('Tab');\r\n }\r\n this.inp.search = `${this.activeHour}:${this.activeMinute}`;\r\n this.inp.value = `${this.activeHour}:${this.activeMinute}`;\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass, TreeRowClass} from '../../../../classes/form.class';\r\n\r\n@Component({\r\n selector: 'lib-form-tree-item',\r\n templateUrl: './form.tree.item.component.html',\r\n styleUrls: ['./form.tree.item.component.css']\r\n})\r\nexport class FormTreeItemComponent implements OnInit{\r\n @Input()\r\n item: TreeRowClass;\r\n @Input()\r\n level: number;\r\n @Input()\r\n index: number;\r\n @Input()\r\n tree: InputClass;\r\n @Input()\r\n parent: TreeRowClass = null;\r\n @Input()\r\n base: boolean;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n constructor(){\r\n }\r\n ngOnInit(): void{\r\n this.item.parent = this.parent;\r\n }\r\n openClose(e): void {\r\n const ch = $(e.target).closest('.row-item').find(' > .children');\r\n const oc = $(e.target).closest('.row-item').find(' > .open-close');\r\n if (ch.hasClass('open')) {\r\n ch.removeClass('open');\r\n ch.stop().slideUp();\r\n oc.removeClass('fa-caret-down').addClass('fa-caret-left');\r\n } else {\r\n ch.addClass('open');\r\n ch.stop().slideDown();\r\n oc.addClass('fa-caret-down').removeClass('fa-caret-left');\r\n }\r\n }\r\n\r\n onClick(): void {\r\n this.item.toggle();\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as $ from 'jquery';\r\nimport {InputClass, TreeRowClass} from '../../../classes/form.class';\r\nimport {InputError} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-tree',\r\n templateUrl: './form.tree.component.html',\r\n styleUrls: ['./form.tree.component.css']\r\n})\r\nexport class FormTreeComponent implements OnInit{\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n constructor(){\r\n }\r\n ngOnInit(): void {\r\n this.inp.load();\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && this.getSelected().length === 0) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.data = () => {\r\n return this.getSelected();\r\n };\r\n this.inp.setValue = (v) => {\r\n this.check(v);\r\n };\r\n this.inp.clear = () => {\r\n this.inp.setValue([], false);\r\n };\r\n }\r\n\r\n onClick(): void{\r\n this.onFocusIn();\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9 || code === 13) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n }\r\n onFocusIn(): void{\r\n $(this.inputBase.nativeElement).focus();\r\n }\r\n getSelected(): any[]{\r\n let l = [];\r\n for (const f of this.inp.rows){\r\n l = l.concat(this.getRowSelected(f));\r\n }\r\n return l;\r\n }\r\n getRowSelected(ch: TreeRowClass): any[]{\r\n let l = [];\r\n if (ch.selected && (!this.inp.onlyChild || ch.children.length === 0)){\r\n l.push(ch.value);\r\n }\r\n ch.children.forEach((c) => {\r\n const rs = this.getRowSelected(c);\r\n l = l.concat(rs);\r\n });\r\n return l;\r\n }\r\n\r\n check(ids): void{\r\n for (const r of this.inp.rows){\r\n r.unCheck();\r\n if (ids.includes(r.value)){\r\n r.toggle();\r\n }\r\n this.checkChildren(r.children, ids);\r\n }\r\n }\r\n checkChildren(chs: TreeRowClass[], ids): void{\r\n for (const r of chs){\r\n if (ids.includes(r.value)){\r\n r.toggle();\r\n }\r\n this.checkChildren(r.children, ids);\r\n }\r\n }\r\n}\r\n","import {AccordionClass, FormClass} from './form.class';\r\nimport * as $ from 'jquery';\r\nimport {InputType} from './enum.class';\r\nimport {TableClass} from './table.class';\r\n\r\nexport class ModalClass {\r\n constructor(environment: any, l: (k, v?) => string, name: string, cls: string = '') {\r\n this.environment = environment;\r\n this.l = l;\r\n this.name = name;\r\n this.id = this.name;\r\n this.class = cls;\r\n }\r\n environment: any = null;\r\n l: (k, v?) => string;\r\n name: string;\r\n id: string;\r\n class: string;\r\n relatedId: null;\r\n form: FormClass = null;\r\n firstForm = true;\r\n table: TableClass = null;\r\n accordion: AccordionClass = null;\r\n onShow: () => void = null;\r\n onHide: () => void = null;\r\n show(): void{\r\n if (this.onShow){\r\n this.onShow();\r\n }\r\n $('body').addClass('open-modal');\r\n $('#' + this.id + 'Modal').fadeIn(300, () => {\r\n if (this.form != null){\r\n const i = this.form.inputs.find(x => !x.disabled && x.type !== InputType.Label && x.type !== InputType.Hidden &&\r\n x.type !== InputType.Constant && x.type !== InputType.Submit && x.type !== InputType.Button && x.type !== InputType.Icon &&\r\n x.type !== InputType.Check);\r\n if (i){\r\n i.focus();\r\n }\r\n }\r\n });\r\n }\r\n hide(): void{\r\n $('body').removeClass('open-modal');\r\n $('#' + this.id + 'Modal').fadeOut(300, () => {\r\n if (this.form && this.form.name !== 'Confirm' && this.form.name !== 'Alert'){\r\n this.form.clear();\r\n if (this.form.onHideModal){\r\n this.form.onHideModal();\r\n }\r\n }\r\n if (this.table && this.table.form){\r\n this.table.form.clear();\r\n }\r\n if (this.onHide){\r\n this.onHide();\r\n }\r\n });\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {FormClass, InputClass} from '../../classes/form.class';\r\nimport {ModalClass} from '../../classes/modal.class';\r\nimport {InputType} from '../../classes/enum.class';\r\nimport {LangClass} from '../../classes/lang.class';\r\nimport {PsToolkitUiConfigService} from '../../services/config.service';\r\n\r\n@Component({\r\n selector: 'lib-alert',\r\n templateUrl: './alert.component.html',\r\n styleUrls: ['./alert.component.css']\r\n})\r\nexport class AlertComponent {\r\n alert: ModalClass;\r\n alertLabel: InputClass;\r\n constructor(public config: PsToolkitUiConfigService){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n const l = (key: string, v = null): string => {\r\n return lang.get('Public', 'Alert', key, v);\r\n };\r\n this.alert = new ModalClass(config.environment, l, 'Alert');\r\n this.alert.form = new FormClass(config.environment, l, 'Alert');\r\n this.alertLabel = new InputClass(config.environment, l, 'Alert', null, InputType.Label, 'f-s-16 p-h-20 p-t-10 l-h-30');\r\n this.alert.form.inputs = [\r\n this.alertLabel\r\n ];\r\n this.alert.form.addButtons('Accept', 'blue', false);\r\n }\r\n show(l: string, accept: (btn: InputClass) => void): void{\r\n this.alertLabel.value = l;\r\n this.alert.form.onSuccess = (btn) => {\r\n this.alert.hide();\r\n accept(btn);\r\n };\r\n this.alert.show();\r\n }\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {FormClass, InputClass} from '../../classes/form.class';\r\nimport {ModalClass} from '../../classes/modal.class';\r\nimport {InputType} from '../../classes/enum.class';\r\nimport {PsToolkitUiConfigService} from '../../services/config.service';\r\nimport {LangClass} from '../../classes/lang.class';\r\n\r\n@Component({\r\n selector: 'lib-confirm',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.css']\r\n})\r\nexport class ConfirmComponent implements OnInit{\r\n @Input()\r\n tableId: string;\r\n l: (k, v?) => string;\r\n confirm: ModalClass;\r\n confirmLabel: InputClass;\r\n constructor(public config: PsToolkitUiConfigService){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n this.l = (key: string, v = null): string => {\r\n return lang.get('Public', 'Confirm', key, v);\r\n };\r\n }\r\n ngOnInit(): void {\r\n this.confirm = new ModalClass(this.config.environment, this.l, (this.tableId ? this.tableId : '') + 'Confirm');\r\n this.confirm.form = new FormClass(this.config.environment, this.l, 'Confirm');\r\n this.confirmLabel = new InputClass(this.config.environment, this.l, 'Confirm', null, InputType.Label, 'f-s-16 p-h-20 p-t-10 l-h-30', 'Confirm');\r\n this.confirm.form.inputs = [\r\n this.confirmLabel,\r\n ];\r\n this.confirm.form.addButtons('Accept', 'blue', false);\r\n }\r\n\r\n show(l: string, url: string, data, accept: (btn: InputClass) => void): void{\r\n this.confirmLabel.value = l;\r\n this.confirm.form.url = url;\r\n this.confirm.form.data = () => {\r\n return data;\r\n };\r\n this.confirm.form.onSuccess = (btn) => {\r\n this.confirm.hide();\r\n accept(btn);\r\n };\r\n this.confirm.show();\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {PsToolkitUiConfigService} from '../../services/config.service';\r\nimport {LangClass} from '../../classes/lang.class';\r\nimport {InputClass} from '../../classes/form.class';\r\nimport {InputType} from '../../classes/enum.class';\r\nimport {strings} from '../../classes/string.class';\r\n\r\n@Component({\r\n selector: 'lib-notfound',\r\n templateUrl: './notfound.component.html',\r\n styleUrls: ['./notfound.component.css']\r\n})\r\nexport class NotfoundComponent{\r\n back: InputClass;\r\n constructor(public config: PsToolkitUiConfigService){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n const l = (key: string, v = null): string => {\r\n return lang.get('Public', 'Notfound', key, v);\r\n };\r\n this.back = new InputClass(config.environment, l, 'Back', 'fad fa-arrow-right', InputType.Button, '');\r\n this.back.onClick = () => {\r\n window.history.back();\r\n };\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError} from '../../../classes/enum.class';\r\nimport {HelperClass} from '../../../classes/helper.class';\r\n\r\n@Component({\r\n selector: 'lib-form-finger',\r\n templateUrl: './form.finger.component.html',\r\n styleUrls: ['./form.finger.component.css']\r\n})\r\nexport class FormFingerComponent implements OnInit {\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n @ViewChild('inputBase') inputBase: ElementRef;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n @ViewChild('inputLabel') inputLabel: ElementRef;\r\n wsRegister = null;\r\n ngOnInit(): void {\r\n this.inp.setValue = (v) => {\r\n this.inp.value = v != null ? v : {\r\n R1: null,\r\n R2: null,\r\n R3: null,\r\n R4: null,\r\n R5: null,\r\n L1: null,\r\n L2: null,\r\n L3: null,\r\n L4: null,\r\n L5: null,\r\n };\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && !this.inp.value) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (!this.inp.required && !this.inp.value) {\r\n return true;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.setValue(null, false);\r\n };\r\n this.inp.data = () => {\r\n if (this.inp.value === null) {\r\n return null;\r\n }\r\n const d = new FormData();\r\n for (const [key, value] of Object.entries(this.inp.value)) {\r\n if (value != null && value !== 'Loading'){\r\n // @ts-ignore\r\n d.append(key, value.Hash.toString());\r\n // @ts-ignore\r\n d.append(key + 'Image', value.Image.toString());\r\n }\r\n }\r\n return d;\r\n };\r\n this.inp.setValue(null, false);\r\n }\r\n onClick(): void{\r\n this.onFocusIn();\r\n }\r\n\r\n onFocusIn(): void {\r\n this.inputBase.nativeElement.focus();\r\n }\r\n onKeyDown(e): void{\r\n const code = e.keyCode || e.which;\r\n if (code === 9 || code === 13) {\r\n e.preventDefault();\r\n this.changeIndex.emit(e.shiftKey ? 'ShiftTab' : 'Tab');\r\n }\r\n }\r\n addRemoveFinger(f: string): void{\r\n const fv = this.inp.value[f];\r\n if (fv === 'Loading') {\r\n if (this.wsRegister != null){\r\n this.wsRegister.close();\r\n this.wsRegister = null;\r\n }\r\n this.inp.value[f] = null;\r\n }else{\r\n this.inp.value.R1 = this.inp.value.R1 === 'Loading' ? null : this.inp.value.R1;\r\n this.inp.value.R2 = this.inp.value.R2 === 'Loading' ? null : this.inp.value.R2;\r\n this.inp.value.R3 = this.inp.value.R3 === 'Loading' ? null : this.inp.value.R3;\r\n this.inp.value.R4 = this.inp.value.R4 === 'Loading' ? null : this.inp.value.R4;\r\n this.inp.value.R5 = this.inp.value.R5 === 'Loading' ? null : this.inp.value.R5;\r\n this.inp.value.L1 = this.inp.value.L1 === 'Loading' ? null : this.inp.value.L1;\r\n this.inp.value.L2 = this.inp.value.L2 === 'Loading' ? null : this.inp.value.L2;\r\n this.inp.value.L3 = this.inp.value.L3 === 'Loading' ? null : this.inp.value.L3;\r\n this.inp.value.L4 = this.inp.value.L4 === 'Loading' ? null : this.inp.value.L4;\r\n this.inp.value.L5 = this.inp.value.L5 === 'Loading' ? null : this.inp.value.L5;\r\n if (fv != null){\r\n this.inp.value[f] = null;\r\n } else {\r\n this.wsRegister = new WebSocket('ws://localhost:7890/Register');\r\n this.wsRegister.onopen = () => {\r\n this.inp.value[f] = 'Loading';\r\n };\r\n this.wsRegister.onmessage = (evt) => {\r\n console.log(evt.data);\r\n if (evt.data === 'Exist'){\r\n this.inp.value[f] = null;\r\n HelperClass.addNotification(this.inp.l('FingerprintExist'));\r\n } else if (evt.data.startsWith('Error')){\r\n this.inp.value[f] = null;\r\n HelperClass.addNotification(evt.data);\r\n } else {\r\n this.inp.value[f] = JSON.parse(evt.data);\r\n }\r\n this.wsRegister.close();\r\n this.wsRegister = null;\r\n };\r\n this.wsRegister.onclose = () => {\r\n };\r\n this.wsRegister.onerror = () => {\r\n };\r\n }\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {InputClass} from '../../../../classes/form.class';\r\nimport {InputError, InputType} from '../../../../classes/enum.class';\r\nimport {HelperClass} from '../../../../classes/helper.class';\r\n\r\n@Component({\r\n selector: 'lib-form-car-search',\r\n templateUrl: './form.car.search.component.html',\r\n styleUrls: ['./form.car.search.component.css']\r\n})\r\nexport class FormCarSearchComponent implements OnInit {\r\n @Input()\r\n inp: InputClass;\r\n @Input()\r\n hasFingerprintModule;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n type = 'Car';\r\n car: InputClass;\r\n motor: InputClass;\r\n driver: InputClass;\r\n fingerprint: InputClass;\r\n wsAuth = null;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n constructor(){\r\n }\r\n ngOnInit(): void {\r\n this.car = new InputClass(this.inp.environment, this.inp.l, this.inp.name + 'Item',\r\n 'fa-user', InputType.SelectAutoCompletePlaque);\r\n this.motor = new InputClass(this.inp.environment, this.inp.l, this.inp.name + 'Item',\r\n 'fa-motorcycle', InputType.SelectAutoCompletePlaqueM);\r\n this.driver = new InputClass(this.inp.environment, this.inp.l, this.inp.name + 'Item',\r\n null, InputType.SelectAutoComplete);\r\n this.driver.placeholder = this.inp.l('DriverName');\r\n this.fingerprint = new InputClass(this.inp.environment, this.inp.l, this.inp.name + 'Item', null, InputType.Select);\r\n this.car.displayLabel = this.motor.displayLabel = this.driver.displayLabel = this.fingerprint.displayLabel = false;\r\n this.car.url = this.motor.url = this.driver.url = this.inp.url.replace('_{}', '_' + this.type);\r\n this.car.onChange = () => {\r\n this.changeIndex.emit('Tab');\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.car.data());\r\n }\r\n };\r\n this.motor.onChange = () => {\r\n this.changeIndex.emit('Tab');\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.motor.data());\r\n }\r\n };\r\n this.driver.onChange = () => {\r\n this.changeIndex.emit('Tab');\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.driver.data());\r\n }\r\n };\r\n this.fingerprint.onChange = () => {\r\n this.changeIndex.emit('Tab');\r\n if (this.inp.onChange){\r\n this.inp.onChange(this.fingerprint.data());\r\n }\r\n };\r\n this.fingerprint.disabled = true;\r\n this.fingerprint.placeholder = this.inp.l('LoadingText', 'Waiting');\r\n this.inp.setValue = (v) => {\r\n if (v != null){\r\n if (v.Search && v.Search.split('_').length === 2){\r\n this.type = 'Motor';\r\n setTimeout(() => {\r\n this.motor.setValue(v.Value, false);\r\n this.motor.setSearch(v.Search);\r\n });\r\n } else if (v.Search && v.Search.split('_').length === 4){\r\n this.type = 'Car';\r\n setTimeout(() => {\r\n this.car.setValue(v.Value, false);\r\n this.car.setSearch(v.Search);\r\n });\r\n }\r\n }\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && this.type === 'Car' && !this.car.isValid()) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (this.inp.required && this.type === 'Motor' && !this.motor.isValid()) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (this.inp.required && this.type === 'Driver' && !this.driver.isValid()) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (this.inp.required && this.type === 'Fingerprint' && !this.fingerprint.isValid()) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.setValue(null, false);\r\n this.type = 'Car';\r\n this.car.clear();\r\n this.motor.clear();\r\n this.driver.clear();\r\n this.fingerprint.clear();\r\n };\r\n this.inp.data = () => {\r\n return this.type === 'Car' ? this.car.data() :\r\n this.type === 'Motor' ? this.motor.data() :\r\n this.type === 'Driver' ? this.driver.data() :\r\n this.type === 'Fingerprint' ? this.fingerprint.data() : null;\r\n };\r\n }\r\n changeType(t: string): void {\r\n this.type = t;\r\n if (t === 'Fingerprint'){\r\n this.fingerprint.loading = true;\r\n this.fingerprint.placeholder = this.inp.l('LoadingText', 'Waiting');\r\n this.fingerprint.value = null;\r\n this.fingerprint.search = null;\r\n this.wsAuth = new WebSocket('ws://localhost:7890/Auth');\r\n this.wsAuth.onopen = () => {\r\n };\r\n\r\n this.wsAuth.onmessage = (evt) => {\r\n if (this.wsAuth != null){\r\n this.wsAuth.close();\r\n }\r\n if (evt.data === 'Notfound'){\r\n HelperClass.addNotification(this.inp.l('NotfoundTitle'));\r\n this.fingerprint.placeholder = this.inp.l('NotfoundTitle');\r\n this.fingerprint.value = null;\r\n this.fingerprint.search = null;\r\n this.fingerprint.loading = false;\r\n } else if (evt.data.startsWith('Error')){\r\n HelperClass.addNotification(evt.data);\r\n this.fingerprint.placeholder = this.inp.l('NotfoundTitle');\r\n this.fingerprint.value = null;\r\n this.fingerprint.search = null;\r\n this.fingerprint.loading = false;\r\n } else {\r\n const user = JSON.parse(evt.data);\r\n this.fingerprint.value = user.Id;\r\n this.fingerprint.search = user.Name;\r\n this.fingerprint.loading = false;\r\n }\r\n this.wsAuth.close();\r\n this.wsAuth = null;\r\n };\r\n this.wsAuth.onclose = () => {\r\n };\r\n }\r\n this.car.url = this.motor.url = this.driver.url = this.inp.url.replace('_{}', '_' + this.type);\r\n }\r\n onFocusIn(): void {\r\n if (this.type === 'Car'){\r\n this.car.focus();\r\n } else if (this.type === 'Motor'){\r\n this.motor.focus();\r\n } else if (this.type === 'Driver'){\r\n this.driver.focus();\r\n } else if (this.type === 'Fingerprint'){\r\n this.fingerprint.focus();\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {InputError, InputType, VehicleType} from '../../../classes/enum.class';\r\n\r\n@Component({\r\n selector: 'lib-form-car',\r\n templateUrl: './form.car.component.html',\r\n styleUrls: ['./form.car.component.css']\r\n})\r\nexport class FormCarComponent implements OnInit {\r\n @Input()\r\n inp: InputClass;\r\n @Output()\r\n changeIndex = new EventEmitter<string>();\r\n type: VehicleType = VehicleType.Car;\r\n car: InputClass;\r\n motor: InputClass;\r\n @ViewChild('inputDiv') inputDiv: ElementRef;\r\n get vehicleType(): typeof VehicleType { return VehicleType; }\r\n constructor(){\r\n }\r\n ngOnInit(): void {\r\n this.car = new InputClass(this.inp.environment, this.inp.l, this.inp.name + 'Item',\r\n 'fa-user', InputType.Plaque, '', null, this.inp.required);\r\n this.motor = new InputClass(this.inp.environment, this.inp.l, this.inp.name + 'Item',\r\n 'fa-motorcycle', InputType.PlaqueM, '', null, this.inp.required);\r\n this.car.displayLabel = this.motor.displayLabel = false;\r\n this.inp.setValue = (v) => {\r\n if (v != null){\r\n if (v.split('_').length === 2){\r\n this.type = VehicleType.Motorcycle;\r\n setTimeout(() => {\r\n this.motor.setValue(v, false);\r\n });\r\n } else if (v.split('_').length === 4){\r\n this.type = VehicleType.Car;\r\n setTimeout(() => {\r\n this.car.setValue(v, false);\r\n });\r\n }\r\n }\r\n };\r\n this.inp.focus = () => {\r\n this.onFocusIn();\r\n };\r\n this.inp.isValid = () => {\r\n this.inp.error = null;\r\n if (this.inp.required && this.type === VehicleType.Car && !this.car.isValid()) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n if (this.inp.required && this.type === VehicleType.Motorcycle && !this.motor.isValid()) {\r\n this.inp.error = InputError.Required;\r\n return false;\r\n }\r\n return true;\r\n };\r\n this.inp.clear = () => {\r\n this.inp.error = null;\r\n this.inp.setValue(null, false);\r\n this.type = VehicleType.Car;\r\n this.car.clear();\r\n this.motor.clear();\r\n };\r\n this.inp.data = () => {\r\n return this.type === VehicleType.Car ? this.car.data() : this.type === VehicleType.Motorcycle ? this.motor.data() : null;\r\n };\r\n }\r\n changeType(t: VehicleType): void {\r\n this.type = t;\r\n if (this.inp.onChange){\r\n this.inp.onChange(t);\r\n }\r\n }\r\n onFocusIn(): void {\r\n if (this.type === VehicleType.Car){\r\n this.car.focus();\r\n } else if (this.type === VehicleType.Motorcycle){\r\n this.motor.focus();\r\n }\r\n }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport {TableClass, TableCollClass} from '../../../classes/table.class';\r\nimport {InputType, Method, PermissionTypeEnum, TableCollType} from '../../../classes/enum.class';\r\nimport {InputClass} from '../../../classes/form.class';\r\nimport {RequestClass} from '../../../classes/request.class';\r\nimport {HelperClass} from '../../../classes/helper.class';\r\nimport {PsToolkitUiConfigService} from '../../../services/config.service';\r\nimport * as $ from 'jquery';\r\n\r\n@Component({\r\n selector: 'lib-table-report',\r\n templateUrl: './table.report.component.html',\r\n styleUrls: ['./table.report.component.css']\r\n})\r\nexport class TableReportComponent implements OnInit{\r\n @Input()\r\n confirmShow: any;\r\n @Output()\r\n changeRows = new EventEmitter<object>();\r\n @Input()\r\n level: number;\r\n @Input()\r\n table: TableClass;\r\n @Input()\r\n row;\r\n @Output()\r\n loadParent = new EventEmitter<string>();\r\n get type(): typeof InputType { return InputType; }\r\n options: InputClass[];\r\n optEdit: InputClass;\r\n optDelete: InputClass;\r\n optStatus: InputClass;\r\n showChildren: InputClass = null;\r\n addChildren: InputClass = null;\r\n itemsWidth = 0;\r\n children: any[] = [];\r\n @ViewChild('childrenDiv') childrenDiv: ElementRef;\r\n constructor(public service: PsToolkitUiConfigService) {\r\n }\r\n ngOnInit(): void {\r\n this.itemsWidth = this.table.cols.reduce((a, {percent}) => a + percent, 0);\r\n this.optEdit = new InputClass(this.table.environment, this.table.l, this.table.name + 'Update', 'fad fa-pen', InputType.Icon,\r\n 'blue h-25 m-h-5 d-ib va-m f-u');\r\n this.optDelete = new InputClass(this.table.environment, this.table.l, this.table.name + 'Delete', 'fad fa-trash', InputType.Icon,\r\n 'red h-25 m-h-5 d-ib va-m f-u');\r\n if (this.table.hasChildren){\r\n if (this.table.permissions.hasAccess('Insert')){\r\n this.addChildren = new InputClass(this.table.environment, this.table.l, 'Add', 'fad fa-plus fa-rotate-90', InputType.Icon,\r\n 'green m-h-5 h-25 d-ib va-m f-u');\r\n this.addChildren.onClick = () => {\r\n this.table.form.url = this.table.url + 'Insert';\r\n this.table.form.inputs.find(x => x.name === 'ParentId').setValue(this.row.Id, false);\r\n this.table.form.onSuccessBase = () => {\r\n this.table.modal.hide();\r\n this.showChildren.type = InputType.Icon;\r\n this.loadChildren(this.row.Id);\r\n };\r\n this.table.showInsertModal();\r\n };\r\n }\r\n this.showChildren = new InputClass(this.table.environment, this.table.l, 'Subset', 'fad fa-angle-left f-s-22',\r\n this.row.CountChild > 0 ? InputType.Icon : InputType.Hidden, 'h-25 m-h-5 d-ib va-m f-u');\r\n this.showChildren.onClick = () => {\r\n if ($(this.childrenDiv.nativeElement).is(':visible')){\r\n $(this.childrenDiv.nativeElement).hide();\r\n this.showChildren.icon = 'fad fa-angle-left f-s-22';\r\n } else if (this.children.length === 0){\r\n this.loadChildren(this.row.Id);\r\n } else {\r\n $(this.childrenDiv.nativeElement).show();\r\n this.showChildren.icon = 'fad fa-angle-down f-s-22';\r\n }\r\n };\r\n }\r\n if (this.table.hasStatus){\r\n this.optStatus = new InputClass(this.table.environment, this.table.l, 'Status',\r\n this.row.Active ? 'fa-toggle-on' : 'fa-toggle-off', InputType.Icon,\r\n 'm-h-5 h-20 ' + (this.row.Active ? 'green' : ''));\r\n this.optStatus.row = this.row;\r\n this.optStatus.onClick = (btn) => {\r\n new RequestClass(this.table.l).send(this.table.url + '/Status/' + btn.row.Id, Method.Post, null, btn, (r) => {\r\n btn.class = 'm-h-5 h-20 ' + (r ? 'green' : '');\r\n btn.icon = r ? 'fa-toggle-on' : 'fa-toggle-off';\r\n });\r\n };\r\n }\r\n this.options = this.getOptions();\r\n if (this.table.form){\r\n this.optEdit.onClick = () => {\r\n this.table.form.url = this.table.url + 'Update/' + this.row.Id;\r\n if (this.table.hasChildren && this.row.ParentId != null) {\r\n this.table.form.onSuccessBase = () => {\r\n this.table.modal.hide();\r\n this.loadParent.emit(this.row.parent_id);\r\n };\r\n } else {\r\n this.table.form.onSuccessBase = () => {\r\n this.table.modal.hide();\r\n this.table.load();\r\n };\r\n }\r\n this.edit();\r\n };\r\n } else {\r\n this.optEdit.url = this.table.url + '/' + this.row.Id;\r\n }\r\n if (this.table.sortable){\r\n this.setSortRow();\r\n }\r\n }\r\n loadChildren(p): void{\r\n new RequestClass(this.table.l).send(this.table.url + `List?ParentId=${p}`, Method.Post, null, this.showChildren, (result) => {\r\n this.children = result.List;\r\n setTimeout(() => {\r\n $(this.childrenDiv.nativeElement).slideDown();\r\n this.showChildren.icon = 'fad fa-angle-down f-s-22';\r\n }, 50);\r\n });\r\n }\r\n select(): void{\r\n this.row.selected = !this.row.selected;\r\n }\r\n onChangeRows(e): void{\r\n return this.changeRows.emit(e);\r\n }\r\n setSortRow(): void{\r\n setTimeout(() => {\r\n if (this.table.hasChildren) {\r\n // @ts-ignore\r\n $(this.childrenDiv.nativeElement).sortable({\r\n axis: 'y',\r\n handle: '> .row > .item-con > .handle-sortable',\r\n update: () => {\r\n const data = [];\r\n // @ts-ignore\r\n $(this.childrenDiv.nativeElement).sortable('toArray').forEach(x => data.push(x));\r\n new RequestClass(this.table.l).send(this.table.url + 'Sort', Method.Post, data, null, () => {\r\n if (this.table.onSort){\r\n this.table.onSort();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }, 500);\r\n }\r\n getOptions(): InputClass[]{\r\n return (this.addChildren !== null && (this.table.level === null || this.table.level > this.level) ? [this.addChildren] : [])\r\n .concat(this.table.options.filter(x => x.condition == null || x.condition(this.row)).map((o) => {\r\n const i = HelperClass.clone(o);\r\n if (i.url){\r\n i.url = i.url.replace('{}', this.row.Id);\r\n }\r\n if (i.modal && i.modal.form){\r\n i.modal.form.url = i.modal.form.url.replace('{}', this.row.Id);\r\n }\r\n i.row = this.row;\r\n i.class = i.class + ' m-h-5 h-25 d-ib va-m f-u';\r\n return i;\r\n })).concat(this.table.hasStatus ? [this.optStatus] : [])\r\n .concat(this.table.permissions.hasAccess('Update') ? [this.optEdit] : [])\r\n .concat(this.table.permissions.hasAccess('Delete') ? [this.optDelete] : []);\r\n }\r\n getCell(col: TableCollClass): any{\r\n console.log('getCell');\r\n const cv = _.get(this.row, col.name);\r\n if (col.fun != null) {\r\n return col.fun(this.row);\r\n } else if (col.enum !== null) {\r\n return col.enum.get(cv);\r\n } else if (col.type === TableCollType.DateDif) {\r\n return HelperClass.getDateDif(this.table.l, cv);\r\n } else if (col.type === TableCollType.Date) {\r\n return HelperClass.getDate(cv);\r\n } else if (col.type === TableCollType.DateTime) {\r\n return HelperClass.getDateTime(cv);\r\n } else if (col.type === TableCollType.Time) {\r\n return HelperClass.getTime(cv);\r\n } else if (col.type === TableCollType.Url) {\r\n return '<a target=\"_blank\" href=\"' + cv + '\">' + cv + '</a>';\r\n } else if (col.type === TableCollType.Image) {\r\n return '<img class=\"h-100\" alt=\"\" src=\"' + this.service.environment.url + cv + '\"/>';\r\n } else if (col.type === TableCollType.Price) {\r\n return cv.toLocaleString() + ' ' + this.table.l('Rial');\r\n } else if (col.type === TableCollType.Plaque) {\r\n const parts = cv.split('_');\r\n if (parts.length === 4) {\r\n return '<div class=\"plaque' + (parts[1] === 'ع' ? ' p' : '') + (parts[1] === 'الف' ? ' g' : '') + '\">' +\r\n '<div class=\"part1\">' + parts[0] + '</div>' +\r\n '<div class=\"part2\">' + parts[1] + '</div>' +\r\n '<div class=\"part3\">' + parts[2] + '</div>' +\r\n '<div class=\"part4\">' + parts[3] + '</div>' +\r\n '</div>';\r\n } else if (parts.length === 2){\r\n return '<div class=\"plaque plaque-m\">' +\r\n '<div class=\"part1\">' + parts[0] + '</div>' +\r\n '<div class=\"part2\">' + parts[1] + '</div>' +\r\n '</div>';\r\n }\r\n } else if (col.type === TableCollType.PlaqueText) {\r\n const parts = cv.split('_');\r\n if (parts.length === 4){\r\n return `<div class=\"ltr\">${parts[0]} ${parts[1]}&lrm; ${parts[2]} ${parts[3]}</div>`;\r\n }\r\n }\r\n return this.table.l(cv);\r\n }\r\n getCol(n): string{\r\n let c = this.row;\r\n n.split('.').forEach((x) => {\r\n c = c[x];\r\n });\r\n return c;\r\n }\r\n edit(): void{\r\n if (this.table.permissions.Type === PermissionTypeEnum.Form){\r\n this.table.form.name = 'Update';\r\n this.table.form.setData(this.row);\r\n this.table.form.setButtons(this.table.form.onTop, true, this.row.Id);\r\n this.table.form.inputs.filter(x => x.inEditDisabled).forEach(x => x.disabled = true);\r\n this.table.form.inputs.filter(x => !x.inEditVisible).forEach(x => x.visible = false);\r\n }else{\r\n new RequestClass(this.table.environment, this.table.l).send(this.table.url + 'Get/' + this.row.Id, Method.Post, null,\r\n this.optEdit, (result) => {\r\n this.table.form.name = 'Update';\r\n this.table.form.setButtons(this.table.form.onTop, true, this.row.Id);\r\n this.table.form.setData(result);\r\n this.table.form.inputs.filter(x => x.inEditDisabled).forEach(x => x.disabled = true);\r\n this.table.form.inputs.filter(x => !x.inEditVisible).forEach(x => x.visible = false);\r\n if (this.table.modal){\r\n this.table.modal.show();\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'safeStyle' }) export class SafeStylePipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) { } transform(value) { return this.sanitizer.bypassSecurityTrustStyle(value); } }\r\n","import {FormClass} from './form.class';\r\nimport {HelperClass} from './helper.class';\r\n\r\nexport class LoginClass {\r\n constructor(type: string) {\r\n this.type = type;\r\n }\r\n type: string;\r\n steps: LoginStepClass[] = [];\r\n active = 0;\r\n onSuccess: (result) => void = null;\r\n sendCodeUrl: string;\r\n reSendCodeUrl: string;\r\n loginUrl: string;\r\n setCookie(r): void{\r\n if (r.Token){\r\n HelperClass.setCookie('Authorization', `Bearer ${r.Token}`, 30);\r\n }\r\n }\r\n}\r\nexport class LoginStepClass{\r\n constructor(form: FormClass) {\r\n this.form = form;\r\n }\r\n form: FormClass = null;\r\n show(result: any = null): void {}\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {LangClass} from '../../classes/lang.class';\r\nimport {LoginClass, LoginStepClass} from '../../classes/login.class';\r\nimport {FormClass, InputClass, Progress} from '../../classes/form.class';\r\nimport {InputError, InputType, Method} from '../../classes/enum.class';\r\nimport {RequestClass} from '../../classes/request.class';\r\nimport {HelperClass} from '../../classes/helper.class';\r\nimport {PsToolkitUiConfigService} from '../../services/config.service';\r\n\r\n@Component({\r\n selector: 'lib-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit{\r\n @Input()\r\n login: LoginClass;\r\n mobile: InputClass;\r\n username: InputClass;\r\n l: (k, v?) => string;\r\n constructor(public config: PsToolkitUiConfigService){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n this.l = (key: string, v = null): string => {\r\n return lang.get('Public', 'Login', key, v);\r\n };\r\n }\r\n ngOnInit(): void {\r\n if (this.login.type === 'Sms'){\r\n const sendCodeForm = new FormClass(this.config.environment, this.l, 'SendCode', true, this.login.sendCodeUrl, 'p-h-50');\r\n const sendCode = new InputClass(this.config.environment, this.l, 'SendCode', 'fad fa-paper-plane', InputType.Submit);\r\n sendCodeForm.subName = 'SendCodeSubTitle';\r\n this.mobile = new InputClass(this.config.environment, this.l, 'Mobile',\r\n 'fad fa-mobile-alt', InputType.Mobile, 'm-b-10 h-45', '', true, 4, 50);\r\n sendCodeForm.onSuccess = () => {\r\n loginForm.subName = this.l('LoginSmsSubTitle', this.mobile.data());\r\n this.mobile.type = InputType.Hidden;\r\n code.progress.start();\r\n this.login.steps[1].show();\r\n setTimeout(() => {\r\n code.focus();\r\n }, 100);\r\n };\r\n sendCodeForm.inputs = [\r\n this.mobile,\r\n sendCode\r\n ];\r\n const loginForm = new FormClass(this.config.environment, this.l, 'LoginSms', true, this.login.loginUrl, 'p-h-50');\r\n loginForm.subName = this.l('LoginSmsSubTitle', '');\r\n loginForm.onSuccess = (result) => {\r\n this.login.setCookie(result);\r\n if (this.login.steps.length > 2 && result.CurrentUser === null){\r\n this.login.steps[2].show(result.StepData);\r\n } else {\r\n this.login.onSuccess(result);\r\n }\r\n };\r\n loginForm.onFailed = (msg) => {\r\n code.clear();\r\n this.mobile.error = InputError.NotExist;\r\n this.mobile.type = InputType.Mobile;\r\n setTimeout(() => {\r\n this.mobile.focus();\r\n }, 100);\r\n this.login.steps[0].show();\r\n };\r\n const code = new InputClass(this.config.environment, this.l, 'Code',\r\n 'fad fa-unlock-alt', InputType.Number, 'm-b-10 h-45', null, true, 1111, 9999);\r\n const labelResend = new InputClass(this.config.environment, this.l, 'ReSendCodeDes',\r\n null, InputType.Label, 'yellow resend-code');\r\n code.progress = new Progress(120);\r\n code.progress.onStart = () => {\r\n labelResend.value = null;\r\n };\r\n code.progress.onEnd = () => {\r\n labelResend.value = 'ReSendCodeDes';\r\n };\r\n labelResend.onClick = () => {\r\n labelResend.name = '(' + this.l('LoadingYellow', 'Send') + ')';\r\n new RequestClass(this.config.environment).send(this.login.reSendCodeUrl, Method.Post, loginForm.data(), null, () => {\r\n labelResend.name = 'ReSendCodeDes';\r\n code.progress.start();\r\n }, (error) => {\r\n HelperClass.addNotification(this.l(error));\r\n labelResend.name = 'ReSendCodeDes';\r\n });\r\n };\r\n const login = new InputClass(this.config.environment, this.l, 'LoginSms', 'fad fa-sign-in-alt', InputType.Submit);\r\n loginForm.inputs = [\r\n this.mobile,\r\n code,\r\n labelResend,\r\n login\r\n ];\r\n login.onClick = () => {\r\n loginForm.submit();\r\n };\r\n const loginStep = new LoginStepClass(loginForm);\r\n loginStep.show = () => {\r\n this.login.active = 0;\r\n };\r\n const sendCodeStep = new LoginStepClass(sendCodeForm);\r\n sendCodeStep.show = () => {\r\n this.login.active = 1;\r\n };\r\n this.login.steps.unshift(loginStep);\r\n this.login.steps.unshift(sendCodeStep);\r\n setTimeout(() => {\r\n this.mobile.focus();\r\n }, 100);\r\n } else if (this.login.type === 'Password'){\r\n const loginForm = new FormClass(this.config.environment, this.l, 'LoginPassword', true, this.login.loginUrl, 'p-h-50');\r\n loginForm.subName = 'LoginPasswordSubTitle';\r\n const login = new InputClass(this.config.environment, this.l, 'LoginPassword', 'fad fa-sign-in-alt', InputType.Submit);\r\n loginForm.onSuccess = (result) => {\r\n this.login.setCookie(result);\r\n if (this.login.steps.length > 1 && result.CurrentUser === null){\r\n this.login.steps[1].show(result.StepData);\r\n } else {\r\n this.login.onSuccess(result);\r\n }\r\n };\r\n this.username = new InputClass(this.config.environment, this.l, 'Username',\r\n 'fad fa-user', InputType.Text, 'm-b-10 h-45', '', true, 4, 50);\r\n loginForm.inputs = [\r\n this.username,\r\n new InputClass(this.config.environment, this.l, 'Password', 'fad fa-key', InputType.Password, 'm-b-10 h-45', '', true, 5, 50),\r\n login\r\n ];\r\n login.onClick = () => {\r\n loginForm.submit();\r\n };\r\n const loginStep = new LoginStepClass(loginForm);\r\n loginStep.show = () => {\r\n this.login.active = 0;\r\n };\r\n this.login.steps.unshift(loginStep);\r\n setTimeout(() => {\r\n this.username.focus();\r\n }, 100);\r\n }\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {LangClass} from '../../classes/lang.class';\r\nimport {PsToolkitUiConfigService} from '../../services/config.service';\r\n\r\n@Component({\r\n selector: 'lib-loading',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.css']\r\n})\r\nexport class LoadingComponent {\r\n l: (k, v?) => string;\r\n constructor(config: PsToolkitUiConfigService){\r\n const lang = new LangClass(config.currentLang, config.strings);\r\n this.l = (key: string, v = null): string => {\r\n return lang.get('Public', null, key, v);\r\n };\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-notification',\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.css']\r\n})\r\nexport class NotificationComponent {\r\n constructor(){\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport * as $ from 'jquery';\r\n\r\n@Component({\r\n selector: 'lib-layout',\r\n templateUrl: './layout.component.html',\r\n styleUrls: ['./layout.component.css']\r\n})\r\nexport class LayoutComponent {\r\n @Input()\r\n permissions: any[] = [];\r\n @Input()\r\n area: string;\r\n constructor() {\r\n }\r\n toggleSidebar(): void{\r\n $('#Layout .panel').toggleClass('open-sidebar').toggleClass('close-sidebar');\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {PsToolkitUiConfigService} from './services/config.service';\nimport {AccordionComponent} from './components/accordion/accordion.component';\nimport {FooterComponent} from './components/footer/footer.component';\nimport {HeaderComponent} from './components/header/header.component';\nimport {ModalComponent} from './components/modal/modal.component';\nimport {SidebarItemComponent} from './components/sidebar/item/sidebar.item.component';\nimport {SidebarComponent} from './components/sidebar/sidebar.component';\nimport {StepsComponent} from './components/steps/steps.component';\nimport {SubHeaderComponent} from './components/header/sub/sub.header.component';\nimport {TableLoadingComponent} from './components/table/loading/table.loading.component';\nimport {TablePaginationComponent} from './components/table/pagination/table.pagination.component';\nimport {TableRowComponent} from './components/table/row/table.row.component';\nimport {TableComponent} from './components/table/table.component';\nimport {TooltipComponent} from './components/tooltip/tooltip.component';\nimport {FormBankCardComponent} from './components/form/bank-card/form.bank-card.component';\nimport {FormButtonComponent} from './components/form/button/form.button.component';\nimport {FormCheckboxComponent} from './components/form/checkbox/form.checkbox.component';\nimport {FormDateComponent} from './components/form/date/form.date.component';\nimport {FormDatetimeComponent} from './components/form/datetime/form.datetime.component';\nimport {FormFileComponent} from './components/form/file/form.file.component';\nimport {FormIconComponent} from './components/form/icon/form.icon.component';\nimport {FormComponent} from './components/form/index/form.component';\nimport {FormLabelComponent} from './components/form/label/form.label.component';\nimport {FormPlaqueSelectComponent} from './components/form/plaque/select/form.plaque.select.component';\nimport {FormPlaqueComponent} from './components/form/plaque/form.plaque.component';\nimport {FormRadioComponent} from './components/form/radio/form.radio.component';\nimport {FormSelectItemComponent} from './components/form/select/item/form.select.item.component';\nimport {FormSelectComponent} from './components/form/select/form.select.component';\nimport {FormTableComponent} from './components/form/table/form.table.component';\nimport {FormTextareaComponent} from './components/form/textarea/form.textarea.component';\nimport {FormTextboxComponent} from './components/form/textbox/form.textbox.component';\nimport {FormTimeComponent} from './components/form/time/form.time.component';\nimport {FormTreeItemComponent} from './components/form/tree/item/form.tree.item.component';\nimport {FormTreeComponent} from './components/form/tree/form.tree.component';\nimport {AlertComponent} from './components/alert/alert.component';\nimport {ConfirmComponent} from './components/confirm/confirm.component';\nimport {NotfoundComponent} from './components/notfound/notfound.component';\nimport {FormFingerComponent} from './components/form/finger/form.finger.component';\nimport {FormCarSearchComponent} from './components/form/car/search/form.car.search.component';\nimport {FormCarComponent} from './components/form/car/form.car.component';\nimport {TableReportComponent} from './components/table/report/table.report.component';\nimport {RouterModule} from '@angular/router';\nimport {FormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {SafeStylePipe} from './classes/safestyle.class';\nimport {LoginComponent} from './components/login/login.component';\nimport {LoadingComponent} from './components/loading/loading.component';\nimport {NotificationComponent} from './components/notification/notification.component';\nimport {LayoutComponent} from './components/layout/layout.component';\n\n@NgModule({\n declarations: [\n FormSelectItemComponent, FormCheckboxComponent, TablePaginationComponent, FormBankCardComponent, SidebarItemComponent, SidebarComponent,\n FormDateComponent, FormPlaqueSelectComponent, TableLoadingComponent, FormTreeItemComponent, FormTextboxComponent, FormTextareaComponent,\n FormIconComponent, FormButtonComponent, FormDatetimeComponent, FormPlaqueComponent, SubHeaderComponent, FooterComponent, StepsComponent,\n FormFileComponent, FormSelectComponent, FormTableComponent, FormLabelComponent, AccordionComponent, FormRadioComponent, HeaderComponent,\n TooltipComponent, ConfirmComponent, TableComponent, ModalComponent, FormComponent, TableRowComponent, FormTreeComponent, AlertComponent,\n FormTimeComponent, NotfoundComponent, FormFingerComponent, FormCarSearchComponent, FormCarComponent, TableReportComponent,\n SafeStylePipe, LoginComponent, LoadingComponent, NotificationComponent, LayoutComponent\n ],\n imports: [\n CommonModule,\n RouterModule,\n FormsModule\n ],\n providers: [],\n exports: [\n FormSelectItemComponent, FormCheckboxComponent, TablePaginationComponent, FormBankCardComponent, SidebarItemComponent, SidebarComponent,\n FormDateComponent, FormPlaqueSelectComponent, TableLoadingComponent, FormTreeItemComponent, FormTextboxComponent, FormTextareaComponent,\n FormIconComponent, FormButtonComponent, FormDatetimeComponent, FormPlaqueComponent, SubHeaderComponent, FooterComponent, StepsComponent,\n FormFileComponent, FormSelectComponent, FormTableComponent, FormLabelComponent, AccordionComponent, FormRadioComponent, HeaderComponent,\n TooltipComponent, ConfirmComponent, TableComponent, ModalComponent, FormComponent, TableRowComponent, FormTreeComponent, AlertComponent,\n FormTimeComponent, NotfoundComponent, FormFingerComponent, FormCarSearchComponent, FormCarComponent, TableReportComponent,\n LoginComponent, LoadingComponent, NotificationComponent, LayoutComponent\n ]\n})\nexport class PsToolkitUiModule {\n static forRoot(config: any): ModuleWithProviders<PsToolkitUiModule> {\n return {\n ngModule: PsToolkitUiModule,\n providers: [\n {provide: PsToolkitUiConfigService, useValue: config }\n ]\n };\n }\n}\n\n","import {Injectable} from '@angular/core';\r\nimport {PermissionClass} from '../classes/permission.class';\r\n\r\n@Injectable()\r\nexport abstract class BaseComponent {\r\n l: (k, v?) => string;\r\n permissions: PermissionClass;\r\n protected constructor(app: any, public c, public a = null){\r\n this.l = (key: string, v = null): string => {\r\n return app.getL(`${c}${(a ? `.${a}` : '')}`, key, v);\r\n };\r\n if (app.currentUser !== null){\r\n this.permissions = this.getPermission(app.currentUser.Permissions);\r\n if (this.permissions){\r\n this.permissions.Area = app.area;\r\n }\r\n }\r\n }\r\n getPermission(permissions: PermissionClass[]): any{\r\n for (const per of permissions) {\r\n if (per.Controller === this.c && (this.a == null || per.Action === this.a)){\r\n return this.getPermissionClass(per);\r\n }\r\n if (per.Children){\r\n const pc = this.getPermission(per.Children);\r\n if (pc != null){\r\n return this.getPermissionClass(pc);\r\n }\r\n }\r\n if (per.Accesses){\r\n const pc = this.getPermission(per.Accesses);\r\n if (pc != null){\r\n return this.getPermissionClass(pc);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n getPermissionClass(p: any): PermissionClass{\r\n return new PermissionClass(p.Name, p.Icon, p.Type, p.Area, p.Controller, p.Action, p.Children, p.Accesses);\r\n }\r\n hasAccess(a: string): boolean{\r\n return this.permissions ? this.permissions.hasAccess(a) : false;\r\n }\r\n hasOption(a: string): boolean{\r\n return this.permissions ? this.permissions.hasOption(a) : false;\r\n }\r\n}\r\n","import {FormClass} from './form.class';\r\n\r\nexport class StepsClass {\r\n constructor(l: (k, v?) => string) {\r\n this.l = l;\r\n }\r\n l: (k, v?) => string;\r\n items: StepsItemClass[] = [];\r\n activeAll = false;\r\n}\r\nexport class StepsItemClass {\r\n constructor(public name: string, public icon: string, public url: string = null, public active: boolean = false) {\r\n this.title = name;\r\n }\r\n title: string;\r\n description: string = null;\r\n onClick: (item) => void = null;\r\n onDelete: (item) => void = null;\r\n}\r\n","import {ModalClass} from './modal.class';\r\nimport {FormClass, InputClass} from './form.class';\r\nimport {InputType, Method, PermissionTypeEnum, TableCollType} from './enum.class';\r\nimport {RequestClass} from './request.class';\r\nimport {PermissionClass} from './permission.class';\r\nimport {HelperClass} from './helper.class';\r\n\r\nexport class TableClass {\r\n constructor(environment: any, l: (k, v?) => string, permissions: PermissionClass, name: string = '', cls: string = '',\r\n perPage: number = 10, height: number = 50) {\r\n this.environment = environment;\r\n this.l = l;\r\n this.name = name;\r\n this.id = this.name;\r\n this.permissions = permissions;\r\n this.class = cls;\r\n this.perPage = perPage;\r\n this.height = height;\r\n }\r\n environment: any = null;\r\n l: (k, v?) => string;\r\n permissions: PermissionClass;\r\n permission = true;\r\n name: string;\r\n id: string;\r\n class: string;\r\n style = {};\r\n url = null;\r\n method: Method = Method.Post;\r\n height = 40;\r\n perPage = 10;\r\n cols: TableCollClass[] = [];\r\n buttons: InputClass[] = [];\r\n options: InputClass[] = [];\r\n rows = [];\r\n count = 0;\r\n page = 1;\r\n sort = null;\r\n queryParams = {};\r\n sortType = null;\r\n displayLabel = true;\r\n isReport = false;\r\n sortable = false;\r\n loading = true;\r\n hasStatus = false;\r\n hasChildren = false;\r\n childrenAutoLoad = false;\r\n withSelect = false;\r\n extraButtons = true;\r\n form: FormClass = null;\r\n searchForm: FormClass = null;\r\n modal: ModalClass = null;\r\n level = null;\r\n onLoad: () => void = null;\r\n onSort: () => void = null;\r\n showConfirm: (l: string, url: string, data, accept: (btn: InputClass) => void) => void = null;\r\n hasOption(): boolean{ return this.permissions && (this.permissions.hasAccess('Delete') ||\r\n this.permissions.hasAccess('Update') || this.hasStatus || this.options.length > 0 || this.hasChildren); }\r\n load(btn = null): void{\r\n if (this.url){\r\n new RequestClass(this.environment, this.l).table(this, btn);\r\n }else{\r\n this.loading = false;\r\n }\r\n }\r\n\r\n searchData(): {} {\r\n const d: any = {\r\n Page: this.page,\r\n PerPage: this.perPage,\r\n };\r\n if (this.sortable){\r\n d.Sort = 'Priority';\r\n d.SortType = 'ASC';\r\n }else if (this.sort){\r\n d.Sort = this.sort;\r\n d.SortType = this.sortType;\r\n }\r\n for (const c of this.cols.filter(x => x.withSearch && x.search != null && x.search.data() != null && x.search.data() !== '')){\r\n d[c.name] = c.search.data();\r\n }\r\n return this.searchForm ? this.searchForm.json(d) : d;\r\n }\r\n getUrl(isReport: boolean = false): string {\r\n return this.url + (this.isReport || isReport ? 'Report?' : 'List');\r\n }\r\n showInsertModal(): void {\r\n this.form.url = this.form.baseUrl = this.url + 'Insert';\r\n this.form.method = Method.Post;\r\n this.form.inputs.filter(x => x.inEditDisabled).forEach(x => x.disabled = false);\r\n this.form.inputs.filter(x => !x.inEditVisible).forEach(x => x.visible = true);\r\n this.modal.show();\r\n }\r\n set(changeRows = null): void{\r\n this.permission = true;\r\n if (this.permissions && this.permissions.hasAccess('List'))\r\n {\r\n this.url = this.permissions.getUrl();\r\n if (this.permissions.Type !== PermissionTypeEnum.Form){\r\n this.load();\r\n }else{\r\n this.loading = false;\r\n }\r\n }else{\r\n this.permission = false;\r\n return;\r\n }\r\n const insert = new InputClass(this.environment, this.l, this.name + 'InsertTitle', 'fad fa-plus fa-rotate-90', InputType.Button, 'w-u green h-30');\r\n if (this.permissions.hasAccess('Insert')){\r\n if (this.form){\r\n this.form.url = this.form.baseUrl = this.url + 'Insert';\r\n if (!this.form.onTop){\r\n insert.onClick = () => {\r\n this.form.onSuccessBase = () => {\r\n this.modal.hide();\r\n this.load();\r\n };\r\n this.showInsertModal();\r\n };\r\n this.buttons.unshift(insert);\r\n }else{\r\n this.form.displayLabel = false;\r\n }\r\n }else{\r\n insert.url = this.url;\r\n this.buttons.unshift(insert);\r\n }\r\n }\r\n if ((this.permissions.hasAccess('Insert') || this.permissions.hasAccess('Update')) && this.form){\r\n this.form.addButtons('Save', 'green', true, this.permissions.Type === PermissionTypeEnum.Form ? (data) => {\r\n if (data.Id){\r\n const i = this.rows.findIndex(x => x.Id === data.Id);\r\n this.rows[i] = data;\r\n }else{\r\n data.Id = parseInt(HelperClass.random(5, false, false), 10);\r\n this.rows.unshift(data);\r\n }\r\n if (changeRows){\r\n changeRows.emit(data);\r\n }\r\n this.form.clear();\r\n } : null);\r\n if (this.form.onTop){\r\n this.form.onSuccessBase = () => {\r\n this.form.clear();\r\n this.load();\r\n };\r\n } else {\r\n if (!this.modal){\r\n this.modal = new ModalClass(this.environment, this.l, this.name);\r\n }\r\n this.modal.form = this.form;\r\n }\r\n }\r\n else\r\n {\r\n if (this.modal){\r\n insert.onClick = () => {\r\n this.modal.show();\r\n };\r\n }else{\r\n insert.url = this.url + 'Insert';\r\n }\r\n }\r\n for (const option of this.permissions.getOptions()){\r\n if (this.options.filter(x => x.name === option.Name).length > 0){\r\n continue;\r\n }\r\n const opt = new InputClass(this.environment, this.l, option.Name, option.Icon, InputType.Icon, 'blue h-25 m-h-5 d-ib va-m f-u');\r\n if (option.Type === PermissionTypeEnum.OptionLink || option.Type === PermissionTypeEnum.OptionLinkNewTab){\r\n const p = new PermissionClass();\r\n p.RelatedId = this.permissions.RelatedId;\r\n p.Area = this.permissions.Area;\r\n p.Controller = this.permissions.Controller;\r\n p.Action = this.permissions.Action;\r\n opt.url = p.getUrl() + option.Action + '/{}';\r\n opt.urlNewTab = option.Type === PermissionTypeEnum.OptionLinkNewTab;\r\n } else if (option.Type === PermissionTypeEnum.OptionModal){\r\n opt.modal = option.Modal;\r\n opt.onClick = (btn) => {\r\n if (opt.modal.table){\r\n const p = new PermissionClass();\r\n p.RelatedId = btn.row.Id;\r\n p.Area = this.permissions.Area;\r\n p.Controller = this.permissions.Controller;\r\n p.Action = option.Action;\r\n p.Accesses = option.Accesses;\r\n opt.modal.table.permissions = p;\r\n if (opt.modal.table.form){\r\n opt.modal.table.form.url = p.getUrl() + 'Insert';\r\n opt.modal.table.form.baseUrl = p.getUrl() + 'Insert';\r\n }\r\n opt.modal.table.set();\r\n }\r\n if (opt.modal.form){\r\n opt.modal.form.url = opt.modal.form.baseUrl + 'Update/' + btn.row.Id;\r\n opt.modal.form.loadData(opt.modal.form.baseUrl + 'Get/' + btn.row.Id);\r\n opt.modal.form.onSuccessBase = () => {\r\n opt.modal.hide();\r\n };\r\n }\r\n if (opt.modal.accordion){\r\n for (const r of opt.modal.accordion.rows){\r\n if (r.table){\r\n const p = new PermissionClass();\r\n p.RelatedId = btn.row.Id;\r\n p.Area = this.permissions.Area;\r\n p.Controller = this.permissions.Controller;\r\n p.Action = r.name;\r\n p.Accesses = option.Accesses;\r\n r.table.permissions = p;\r\n if (r.table.form){\r\n r.table.form.url = p.getUrl() + 'Insert';\r\n r.table.form.baseUrl = p.getUrl() + 'Insert';\r\n }\r\n r.table.set();\r\n }\r\n }\r\n }\r\n };\r\n } else if (option.Type === PermissionTypeEnum.OptionReport){\r\n const p = new PermissionClass();\r\n p.RelatedId = this.permissions.RelatedId;\r\n p.Area = this.permissions.Area;\r\n p.Controller = this.permissions.Controller;\r\n p.Action = option.Action;\r\n opt.url = '/Report' + p.getUrl() + '/{}';\r\n opt.urlNewTab = true;\r\n } else if (option.Type === PermissionTypeEnum.OptionFile){\r\n const p = new PermissionClass();\r\n p.RelatedId = this.permissions.RelatedId;\r\n p.Area = this.permissions.Area;\r\n p.Controller = this.permissions.Controller;\r\n p.Action = this.permissions.Action + option.Action;\r\n opt.url = '/File' + p.getUrl() + '/{}';\r\n opt.urlNewTab = true;\r\n } else if (option.Type === PermissionTypeEnum.OptionConfirm){\r\n opt.onClick = (btn) => {\r\n const p = new PermissionClass();\r\n p.RelatedId = this.permissions.RelatedId;\r\n p.Area = this.permissions.Area;\r\n p.Controller = this.permissions.Controller;\r\n p.Action = option.Action;\r\n this.showConfirm(this.l(option.Action + 'Confirm'), p.getUrl() + '/' + btn.row.Id, null, () => {\r\n this.load();\r\n });\r\n };\r\n }\r\n this.options.push(opt);\r\n }\r\n }\r\n}\r\n\r\nexport class TableCollClass {\r\n constructor(name: string, percent: number, cls = '', type: TableCollType = TableCollType.Text,\r\n withSearch: boolean = true, sort: boolean = true) {\r\n this.name = name;\r\n this.percent = percent;\r\n this.class = cls;\r\n this.type = type;\r\n this.withSearch = withSearch;\r\n this.sort = sort;\r\n }\r\n enum = null;\r\n name: string;\r\n percent: number;\r\n class: string;\r\n sort = true;\r\n withSearch: boolean;\r\n search: InputClass = null;\r\n type: TableCollType;\r\n fun: (row) => void = null;\r\n}\r\n\r\nexport class TableRowClass {\r\n constructor(public data, public children) {\r\n }\r\n}\r\n"]}