cronapp-framework-mobile-js 1.0.4

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 (1247) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/components/crn-QRCode.components.json +55 -0
  4. package/components/crn-anchor.components.json +290 -0
  5. package/components/crn-button-bar.components.json +64 -0
  6. package/components/crn-button.components.json +339 -0
  7. package/components/crn-card.components.json +95 -0
  8. package/components/crn-chart.components.json +57 -0
  9. package/components/crn-chat.components.json +8 -0
  10. package/components/crn-checkbox.components.json +330 -0
  11. package/components/crn-complex-search.components.json +43 -0
  12. package/components/crn-component.components.json +58 -0
  13. package/components/crn-container.components.json +21 -0
  14. package/components/crn-cron-crud.components.json +21 -0
  15. package/components/crn-datasource.components.json +188 -0
  16. package/components/crn-dynamic-file.components.json +142 -0
  17. package/components/crn-dynamic-image.components.json +156 -0
  18. package/components/crn-dynamic-select.components.json +111 -0
  19. package/components/crn-enterprise-combobox.components.json +162 -0
  20. package/components/crn-evaluation.components.json +64 -0
  21. package/components/crn-filter-button.components.json +327 -0
  22. package/components/crn-form-template.components.json +11 -0
  23. package/components/crn-frame.components.json +59 -0
  24. package/components/crn-header-button.components.json +63 -0
  25. package/components/crn-heading.components.json +109 -0
  26. package/components/crn-icon.components.json +305 -0
  27. package/components/crn-image.components.json +124 -0
  28. package/components/crn-infinite-scroll.components.json +29 -0
  29. package/components/crn-input-button.components.json +294 -0
  30. package/components/crn-input-floating.components.json +198 -0
  31. package/components/crn-input-icon.components.json +389 -0
  32. package/components/crn-input-inline.components.json +198 -0
  33. package/components/crn-input.components.json +185 -0
  34. package/components/crn-ion-content.components.json +24 -0
  35. package/components/crn-ion-footer-bar.components.json +515 -0
  36. package/components/crn-ion-header-bar.components.json +343 -0
  37. package/components/crn-ion-list.components.json +152 -0
  38. package/components/crn-ion-nav-buttons.components.json +63 -0
  39. package/components/crn-ion-segment-item.components.json +68 -0
  40. package/components/crn-ion-segment.components.json +1009 -0
  41. package/components/crn-ion-tab-item.components.json +50 -0
  42. package/components/crn-ion-tab.components.json +270 -0
  43. package/components/crn-item-options.components.json +26 -0
  44. package/components/crn-item-select.components.json +72 -0
  45. package/components/crn-item-swipe.components.json +62 -0
  46. package/components/crn-kendo-chat.components.json +88 -0
  47. package/components/crn-label.components.json +123 -0
  48. package/components/crn-list-avatar.components.json +266 -0
  49. package/components/crn-list-icon.components.json +255 -0
  50. package/components/crn-list-item-avatar.components.json +242 -0
  51. package/components/crn-list-item-icon.components.json +248 -0
  52. package/components/crn-list-item-thumbnail.components.json +232 -0
  53. package/components/crn-list-item.components.json +166 -0
  54. package/components/crn-list-simple.components.json +186 -0
  55. package/components/crn-list-swipe.components.json +105 -0
  56. package/components/crn-list-thumbnail.components.json +254 -0
  57. package/components/crn-list.components.json +75 -0
  58. package/components/crn-map.components.json +55 -0
  59. package/components/crn-mobile-menu.components.json +32 -0
  60. package/components/crn-multiselect.components.json +110 -0
  61. package/components/crn-navbar.components.json +107 -0
  62. package/components/crn-option-button.components.json +83 -0
  63. package/components/crn-paragraph.components.json +120 -0
  64. package/components/crn-radio.components.json +90 -0
  65. package/components/crn-radioOption.components.json +23 -0
  66. package/components/crn-range.components.json +310 -0
  67. package/components/crn-rating.components.json +226 -0
  68. package/components/crn-search.components.json +210 -0
  69. package/components/crn-select-options.components.json +17 -0
  70. package/components/crn-select.components.json +93 -0
  71. package/components/crn-signature-pad.components.json +35 -0
  72. package/components/crn-slider-item.components.json +251 -0
  73. package/components/crn-slider.components.json +106 -0
  74. package/components/crn-spacer.components.json +21 -0
  75. package/components/crn-start.components.json +13 -0
  76. package/components/crn-tabs-icon-only-item.components.json +85 -0
  77. package/components/crn-tabs-icon-only.components.json +508 -0
  78. package/components/crn-tabs.components.json +36 -0
  79. package/components/crn-textarea.components.json +109 -0
  80. package/components/crn-toggle.components.json +305 -0
  81. package/components/crn-video.components.json +67 -0
  82. package/components/css/app.css +140 -0
  83. package/components/css/background-color.css +125 -0
  84. package/components/css/chatStyle.css +221 -0
  85. package/components/css/color-default.css +279 -0
  86. package/components/css/crn-ion-footer-bar.css +77 -0
  87. package/components/css/crn-ion-segment.css +961 -0
  88. package/components/css/icon-size.css +15 -0
  89. package/components/css/multiselect-editor.css +102 -0
  90. package/components/css/tabs-color.css +413 -0
  91. package/components/js/format.min.js +2 -0
  92. package/components/js/jquery.inputmask.bundle.js +3883 -0
  93. package/components/js/jquery.mask.min.js +19 -0
  94. package/components/js/pouchdb.cordova-sqlite.js +5540 -0
  95. package/components/js/qrcode.js +1319 -0
  96. package/components/reports/BOOLEAN.parameter.html +10 -0
  97. package/components/reports/DATE.parameter.html +4 -0
  98. package/components/reports/DOUBLE.parameter.html +4 -0
  99. package/components/reports/FLOAT.parameter.html +4 -0
  100. package/components/reports/INTEGER.parameter.html +4 -0
  101. package/components/reports/LONG.parameter.html +5 -0
  102. package/components/reports/STRING.parameter.html +5 -0
  103. package/components/reports/reports.parameters.html +20 -0
  104. package/components/templates/advanced.list.designtime.html +46 -0
  105. package/components/templates/advanced.list.template.html +1 -0
  106. package/components/templates/anchor.template.html +1 -0
  107. package/components/templates/button-bar.template.html +5 -0
  108. package/components/templates/button-report.template.html +1 -0
  109. package/components/templates/button.template.html +4 -0
  110. package/components/templates/card.template.html +7 -0
  111. package/components/templates/chat.template.html +39 -0
  112. package/components/templates/checkbox.template.html +8 -0
  113. package/components/templates/combobox.designtime.html +12 -0
  114. package/components/templates/combobox.template.html +8 -0
  115. package/components/templates/complexsearch.template.html +7 -0
  116. package/components/templates/crn-frame.designtime.html +11 -0
  117. package/components/templates/crn-frame.template.html +2 -0
  118. package/components/templates/crn-ion-segment-item.template.html +6 -0
  119. package/components/templates/crn-ion-segment.template.html +32 -0
  120. package/components/templates/crn-signature-pad.designtime.html +5 -0
  121. package/components/templates/crn-signature-pad.template.html +1 -0
  122. package/components/templates/cron-combobox.designtime.html +6 -0
  123. package/components/templates/cron-combobox.template.html +5 -0
  124. package/components/templates/cron-crud.template.html +7 -0
  125. package/components/templates/cron-mobile-menu.designtime.html +10 -0
  126. package/components/templates/div.horizontal.template.html +27 -0
  127. package/components/templates/div.vertical.template.html +11 -0
  128. package/components/templates/dynamic-combobox.template.html +6 -0
  129. package/components/templates/dynamicfile.designtime.html +5 -0
  130. package/components/templates/dynamicfile.template.html +8 -0
  131. package/components/templates/dynamicimage.designtime.html +8 -0
  132. package/components/templates/dynamicimage.template.html +9 -0
  133. package/components/templates/evaluation.designtime.html +7 -0
  134. package/components/templates/evaluation.template.html +1 -0
  135. package/components/templates/filterbutton.template.html +3 -0
  136. package/components/templates/floattextinput.designtime.html +4 -0
  137. package/components/templates/floattextinput.template.html +4 -0
  138. package/components/templates/form.template.html +5 -0
  139. package/components/templates/header.template.html +3 -0
  140. package/components/templates/icontextinput.template.html +4 -0
  141. package/components/templates/image.template.html +18 -0
  142. package/components/templates/inlinetextinput.template.html +4 -0
  143. package/components/templates/ion-footer-bar.template.html +15 -0
  144. package/components/templates/ion-header-bar.template.html +13 -0
  145. package/components/templates/ion-tab-item.designtime.html +5 -0
  146. package/components/templates/ion-tab.template.html +8 -0
  147. package/components/templates/item.avatar.template.html +5 -0
  148. package/components/templates/item.icon.template.html +4 -0
  149. package/components/templates/item.options.template.html +14 -0
  150. package/components/templates/item.slider.template.html +4 -0
  151. package/components/templates/item.swipe.template.html +14 -0
  152. package/components/templates/item.template.html +5 -0
  153. package/components/templates/item.thumbnail.template.html +5 -0
  154. package/components/templates/kendo-chat.designtime.html +20 -0
  155. package/components/templates/kendo-chat.template.html +75 -0
  156. package/components/templates/list.avatar.template.html +7 -0
  157. package/components/templates/list.icon.template.html +6 -0
  158. package/components/templates/list.swipe.template.html +16 -0
  159. package/components/templates/list.template.html +5 -0
  160. package/components/templates/list.thumbnail.template.html +7 -0
  161. package/components/templates/maps.designtime.html +1 -0
  162. package/components/templates/maps.template.html +1 -0
  163. package/components/templates/menu.template.html +21 -0
  164. package/components/templates/multiselect.template.html +5 -0
  165. package/components/templates/nav.bar.template.html +5 -0
  166. package/components/templates/public.menu.template.html +21 -0
  167. package/components/templates/publicMenu.template.html +14 -0
  168. package/components/templates/radiogroup-dynamic.template.html +15 -0
  169. package/components/templates/radiogroup.template.html +21 -0
  170. package/components/templates/range.template.html +5 -0
  171. package/components/templates/rating.template.html +9 -0
  172. package/components/templates/search.template.html +6 -0
  173. package/components/templates/slider.template.html +20 -0
  174. package/components/templates/tabs-icon-only.template.html +16 -0
  175. package/components/templates/tabs.template.html +5 -0
  176. package/components/templates/textarea.template.html +1 -0
  177. package/components/templates/textinput.template.html +3 -0
  178. package/components/templates/textinputbutton.template.html +12 -0
  179. package/components/templates/title.template.html +1 -0
  180. package/components/templates/toggle-dynamic.template.html +11 -0
  181. package/components/templates/toggle.template.html +9 -0
  182. package/components/templates/video.designtime.html +2 -0
  183. package/components/templates/video.template.html +1 -0
  184. package/components/templates/views/public/home.view.html +16 -0
  185. package/components/templates/views/public/menu.view.html +20 -0
  186. package/components/upload/upload.html +41 -0
  187. package/css/app.css +0 -0
  188. package/css/app_2.9.css +426 -0
  189. package/css/cronos.css +63 -0
  190. package/css/fonts/SourceSansPro/SourceSansPro-Black.otf +0 -0
  191. package/css/fonts/SourceSansPro/SourceSansPro-BlackIt.otf +0 -0
  192. package/css/fonts/SourceSansPro/SourceSansPro-Bold.otf +0 -0
  193. package/css/fonts/SourceSansPro/SourceSansPro-BoldIt.otf +0 -0
  194. package/css/fonts/SourceSansPro/SourceSansPro-ExtraLight.otf +0 -0
  195. package/css/fonts/SourceSansPro/SourceSansPro-ExtraLightIt.otf +0 -0
  196. package/css/fonts/SourceSansPro/SourceSansPro-It.otf +0 -0
  197. package/css/fonts/SourceSansPro/SourceSansPro-Light.otf +0 -0
  198. package/css/fonts/SourceSansPro/SourceSansPro-LightIt.otf +0 -0
  199. package/css/fonts/SourceSansPro/SourceSansPro-Regular.otf +0 -0
  200. package/css/fonts/SourceSansPro/SourceSansPro-Semibold.otf +0 -0
  201. package/css/fonts/SourceSansPro/SourceSansPro-SemiboldIt.otf +0 -0
  202. package/css/fonts/SourceSansPro/SourceSansPro.css +83 -0
  203. package/css/fonts/WorkSans/WorkSans-Black.ttf +0 -0
  204. package/css/fonts/WorkSans/WorkSans-BlackItalic.ttf +0 -0
  205. package/css/fonts/WorkSans/WorkSans-Bold.ttf +0 -0
  206. package/css/fonts/WorkSans/WorkSans-BoldItalic.ttf +0 -0
  207. package/css/fonts/WorkSans/WorkSans-ExtraBold.ttf +0 -0
  208. package/css/fonts/WorkSans/WorkSans-ExtraBoldItalic.ttf +0 -0
  209. package/css/fonts/WorkSans/WorkSans-ExtraLight.ttf +0 -0
  210. package/css/fonts/WorkSans/WorkSans-ExtraLightItalic.ttf +0 -0
  211. package/css/fonts/WorkSans/WorkSans-Italic.ttf +0 -0
  212. package/css/fonts/WorkSans/WorkSans-Light.ttf +0 -0
  213. package/css/fonts/WorkSans/WorkSans-LightItalic.ttf +0 -0
  214. package/css/fonts/WorkSans/WorkSans-Medium.ttf +0 -0
  215. package/css/fonts/WorkSans/WorkSans-MediumItalic.ttf +0 -0
  216. package/css/fonts/WorkSans/WorkSans-Regular.ttf +0 -0
  217. package/css/fonts/WorkSans/WorkSans-SemiBold.ttf +0 -0
  218. package/css/fonts/WorkSans/WorkSans-SemiBoldItalic.ttf +0 -0
  219. package/css/fonts/WorkSans/WorkSans-Thin.ttf +0 -0
  220. package/css/fonts/WorkSans/WorkSans-ThinItalic.ttf +0 -0
  221. package/css/fonts/WorkSans/WorkSans.css +97 -0
  222. package/css/fonts/arial-narrow/arial-narrow-bold-italic.ttf +0 -0
  223. package/css/fonts/arial-narrow/arial-narrow-bold.ttf +0 -0
  224. package/css/fonts/arial-narrow/arial-narrow-italic.ttf +0 -0
  225. package/css/fonts/arial-narrow/arial-narrow.css +27 -0
  226. package/css/fonts/arial-narrow/arial-narrow.ttf +0 -0
  227. package/css/fonts/calibri/calibri-bold-italic.ttf +0 -0
  228. package/css/fonts/calibri/calibri-bold.ttf +0 -0
  229. package/css/fonts/calibri/calibri-italic.ttf +0 -0
  230. package/css/fonts/calibri/calibri-light-italic.ttf +0 -0
  231. package/css/fonts/calibri/calibri-light.ttf +0 -0
  232. package/css/fonts/calibri/calibri-regular.ttf +0 -0
  233. package/css/fonts/calibri/calibri.css +41 -0
  234. package/css/fonts/georgia/georgia.css +27 -0
  235. package/css/fonts/georgia/georgia_bold.ttf +0 -0
  236. package/css/fonts/georgia/georgia_bold_italic.ttf +0 -0
  237. package/css/fonts/georgia/georgia_italic.ttf +0 -0
  238. package/css/fonts/georgia/georgia_regular.ttf +0 -0
  239. package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.eot +0 -0
  240. package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.svg +288 -0
  241. package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.ttf +0 -0
  242. package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.woff +0 -0
  243. package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.woff2 +0 -0
  244. package/css/fonts/helvetica-neue/HelveticaNeue.css +125 -0
  245. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Bd.otf +0 -0
  246. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-BdIt.otf +0 -0
  247. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Blk.otf +0 -0
  248. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-BlkIt.otf +0 -0
  249. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Hv.otf +0 -0
  250. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-HvIt.otf +0 -0
  251. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-It.otf +0 -0
  252. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Lt.otf +0 -0
  253. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-LtIt.otf +0 -0
  254. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Md.otf +0 -0
  255. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-MdIt.otf +0 -0
  256. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Roman.otf +0 -0
  257. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Th.otf +0 -0
  258. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-ThIt.otf +0 -0
  259. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-UltLt.otf +0 -0
  260. package/css/fonts/helvetica-neue/HelveticaNeueLTPro-UltLtIt.otf +0 -0
  261. package/css/fonts/inter/Inter-Black.otf +0 -0
  262. package/css/fonts/inter/Inter-BlackItalic.otf +0 -0
  263. package/css/fonts/inter/Inter-Bold.otf +0 -0
  264. package/css/fonts/inter/Inter-BoldItalic.otf +0 -0
  265. package/css/fonts/inter/Inter-ExtraBold.otf +0 -0
  266. package/css/fonts/inter/Inter-ExtraBoldItalic.otf +0 -0
  267. package/css/fonts/inter/Inter-ExtraLightItalic.otf +0 -0
  268. package/css/fonts/inter/Inter-Italic.otf +0 -0
  269. package/css/fonts/inter/Inter-Light.otf +0 -0
  270. package/css/fonts/inter/Inter-LightItalic.otf +0 -0
  271. package/css/fonts/inter/Inter-Medium.otf +0 -0
  272. package/css/fonts/inter/Inter-MediumItalic.otf +0 -0
  273. package/css/fonts/inter/Inter-Regular.otf +0 -0
  274. package/css/fonts/inter/Inter-SemiBold.otf +0 -0
  275. package/css/fonts/inter/Inter-SemiBoldItalic.otf +0 -0
  276. package/css/fonts/inter/Inter-Thin.otf +0 -0
  277. package/css/fonts/inter/Inter-ThinItalic.otf +0 -0
  278. package/css/fonts/inter/inter.css +104 -0
  279. package/css/fonts/lato/Lato-Black.ttf +0 -0
  280. package/css/fonts/lato/Lato-BlackItalic.ttf +0 -0
  281. package/css/fonts/lato/Lato-Bold.ttf +0 -0
  282. package/css/fonts/lato/Lato-BoldItalic.ttf +0 -0
  283. package/css/fonts/lato/Lato-Hairline.ttf +0 -0
  284. package/css/fonts/lato/Lato-HairlineItalic.ttf +0 -0
  285. package/css/fonts/lato/Lato-Heavy.ttf +0 -0
  286. package/css/fonts/lato/Lato-HeavyItalic.ttf +0 -0
  287. package/css/fonts/lato/Lato-Italic.ttf +0 -0
  288. package/css/fonts/lato/Lato-Light.ttf +0 -0
  289. package/css/fonts/lato/Lato-LightItalic.ttf +0 -0
  290. package/css/fonts/lato/Lato-Medium.ttf +0 -0
  291. package/css/fonts/lato/Lato-MediumItalic.ttf +0 -0
  292. package/css/fonts/lato/Lato-Regular.ttf +0 -0
  293. package/css/fonts/lato/Lato-Semibold.ttf +0 -0
  294. package/css/fonts/lato/Lato-SemiboldItalic.ttf +0 -0
  295. package/css/fonts/lato/Lato-Thin.ttf +0 -0
  296. package/css/fonts/lato/Lato-ThinItalic.ttf +0 -0
  297. package/css/fonts/lato/lato.css +125 -0
  298. package/css/fonts/material-icons/font-material-icon.css +22 -0
  299. package/css/fonts/material-icons/material-icons.woff2 +0 -0
  300. package/css/fonts/news-cycle/NewsCycle-Bold.ttf +0 -0
  301. package/css/fonts/news-cycle/NewsCycle-Regular.ttf +0 -0
  302. package/css/fonts/news-cycle/NewsCycle.css +13 -0
  303. package/css/fonts/nunito/nunito.css +270 -0
  304. package/css/fonts/open-sans/OpenSans-Bold.ttf +0 -0
  305. package/css/fonts/open-sans/OpenSans-BoldItalic.ttf +0 -0
  306. package/css/fonts/open-sans/OpenSans-ExtraBold.ttf +0 -0
  307. package/css/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf +0 -0
  308. package/css/fonts/open-sans/OpenSans-Italic.ttf +0 -0
  309. package/css/fonts/open-sans/OpenSans-Light.ttf +0 -0
  310. package/css/fonts/open-sans/OpenSans-LightItalic.ttf +0 -0
  311. package/css/fonts/open-sans/OpenSans-Regular.ttf +0 -0
  312. package/css/fonts/open-sans/OpenSans-Semibold.ttf +0 -0
  313. package/css/fonts/open-sans/OpenSans-SemiboldItalic.ttf +0 -0
  314. package/css/fonts/open-sans/OpenSans.css +69 -0
  315. package/css/fonts/raleway/Raleway-Black.ttf +0 -0
  316. package/css/fonts/raleway/Raleway-BlackItalic.ttf +0 -0
  317. package/css/fonts/raleway/Raleway-Bold.ttf +0 -0
  318. package/css/fonts/raleway/Raleway-BoldItalic.ttf +0 -0
  319. package/css/fonts/raleway/Raleway-ExtraBold.ttf +0 -0
  320. package/css/fonts/raleway/Raleway-ExtraBoldItalic.ttf +0 -0
  321. package/css/fonts/raleway/Raleway-ExtraLight.ttf +0 -0
  322. package/css/fonts/raleway/Raleway-ExtraLightItalic.ttf +0 -0
  323. package/css/fonts/raleway/Raleway-Italic.ttf +0 -0
  324. package/css/fonts/raleway/Raleway-Light.ttf +0 -0
  325. package/css/fonts/raleway/Raleway-LightItalic.ttf +0 -0
  326. package/css/fonts/raleway/Raleway-Medium.ttf +0 -0
  327. package/css/fonts/raleway/Raleway-MediumItalic.ttf +0 -0
  328. package/css/fonts/raleway/Raleway-Regular.ttf +0 -0
  329. package/css/fonts/raleway/Raleway-SemiBold.ttf +0 -0
  330. package/css/fonts/raleway/Raleway-SemiBoldItalic.ttf +0 -0
  331. package/css/fonts/raleway/Raleway-Thin.ttf +0 -0
  332. package/css/fonts/raleway/Raleway-ThinItalic.ttf +0 -0
  333. package/css/fonts/raleway/raleway.css +111 -0
  334. package/css/fonts/rawline/rawline-100.ttf +0 -0
  335. package/css/fonts/rawline/rawline-100i.ttf +0 -0
  336. package/css/fonts/rawline/rawline-200.ttf +0 -0
  337. package/css/fonts/rawline/rawline-200i.ttf +0 -0
  338. package/css/fonts/rawline/rawline-300.ttf +0 -0
  339. package/css/fonts/rawline/rawline-300i.ttf +0 -0
  340. package/css/fonts/rawline/rawline-400.ttf +0 -0
  341. package/css/fonts/rawline/rawline-400i.ttf +0 -0
  342. package/css/fonts/rawline/rawline-500.ttf +0 -0
  343. package/css/fonts/rawline/rawline-500i.ttf +0 -0
  344. package/css/fonts/rawline/rawline-600.ttf +0 -0
  345. package/css/fonts/rawline/rawline-600i.ttf +0 -0
  346. package/css/fonts/rawline/rawline-700.ttf +0 -0
  347. package/css/fonts/rawline/rawline-700i.ttf +0 -0
  348. package/css/fonts/rawline/rawline-800.ttf +0 -0
  349. package/css/fonts/rawline/rawline-800i.ttf +0 -0
  350. package/css/fonts/rawline/rawline-900.ttf +0 -0
  351. package/css/fonts/rawline/rawline-900i.ttf +0 -0
  352. package/css/fonts/rawline/rawline.css +111 -0
  353. package/css/fonts/roboto/Roboto-Black.ttf +0 -0
  354. package/css/fonts/roboto/Roboto-BlackItalic.ttf +0 -0
  355. package/css/fonts/roboto/Roboto-Bold.ttf +0 -0
  356. package/css/fonts/roboto/Roboto-BoldItalic.ttf +0 -0
  357. package/css/fonts/roboto/Roboto-Italic.ttf +0 -0
  358. package/css/fonts/roboto/Roboto-Light.ttf +0 -0
  359. package/css/fonts/roboto/Roboto-LightItalic.ttf +0 -0
  360. package/css/fonts/roboto/Roboto-Medium.ttf +0 -0
  361. package/css/fonts/roboto/Roboto-MediumItalic.ttf +0 -0
  362. package/css/fonts/roboto/Roboto-Regular.ttf +0 -0
  363. package/css/fonts/roboto/Roboto-Thin.ttf +0 -0
  364. package/css/fonts/roboto/Roboto-ThinItalic.ttf +0 -0
  365. package/css/fonts/roboto/roboto.css +83 -0
  366. package/css/fonts/times-new-roman/Times-New-Roman.css +27 -0
  367. package/css/fonts/times-new-roman/times-new-roman-bold-italic.ttf +0 -0
  368. package/css/fonts/times-new-roman/times-new-roman-italic.ttf +0 -0
  369. package/css/fonts/times-new-roman/times-new-roman.ttf +0 -0
  370. package/css/fonts/times-new-roman/times-new-romanbold.ttf +0 -0
  371. package/css/fonts/ubuntu/Ubuntu-B.ttf +0 -0
  372. package/css/fonts/ubuntu/Ubuntu-BI.ttf +0 -0
  373. package/css/fonts/ubuntu/Ubuntu-C.ttf +0 -0
  374. package/css/fonts/ubuntu/Ubuntu-L.ttf +0 -0
  375. package/css/fonts/ubuntu/Ubuntu-LI.ttf +0 -0
  376. package/css/fonts/ubuntu/Ubuntu-M.ttf +0 -0
  377. package/css/fonts/ubuntu/Ubuntu-MI.ttf +0 -0
  378. package/css/fonts/ubuntu/Ubuntu-R.ttf +0 -0
  379. package/css/fonts/ubuntu/Ubuntu-RI.ttf +0 -0
  380. package/css/fonts/ubuntu/Ubuntu.css +55 -0
  381. package/css/groupingOfCss/checkbox.css +75 -0
  382. package/css/groupingOfCss/col.css +728 -0
  383. package/css/groupingOfCss/dynamicImage.css +24 -0
  384. package/css/groupingOfCss/import_groupingOfCss.css +5 -0
  385. package/css/groupingOfCss/qrCodeCronapp.css +4 -0
  386. package/css/groupingOfCss/upload-image.css +68 -0
  387. package/css/old/modal.css +156 -0
  388. package/css/themes/aquamarine.min.css +5 -0
  389. package/css/themes/cerulean.min.css +5 -0
  390. package/css/themes/cosmo.min.css +5 -0
  391. package/css/themes/custom/aquamarine/bar-aquamarine.css +138 -0
  392. package/css/themes/custom/aquamarine/button-aquamarine.css +306 -0
  393. package/css/themes/custom/aquamarine/crn-ion-segment-aquamarine.css +60 -0
  394. package/css/themes/custom/aquamarine/custom-aquamarine.css +842 -0
  395. package/css/themes/custom/aquamarine/img/arrow-gray.svg +3 -0
  396. package/css/themes/custom/aquamarine/img/arrow-white.svg +3 -0
  397. package/css/themes/custom/cerulean/button-cerulean.css +528 -0
  398. package/css/themes/custom/cerulean/crn-ion-segment-cerulean.css +68 -0
  399. package/css/themes/custom/cerulean/custom-cerulean.css +697 -0
  400. package/css/themes/custom/cosmo/custom-cosmo.css +662 -0
  401. package/css/themes/custom/cyborg/custom-cyborg.css +773 -0
  402. package/css/themes/custom/darkly/custom-darkly.css +758 -0
  403. package/css/themes/custom/dsgov/button-dsgov.css +252 -0
  404. package/css/themes/custom/dsgov/custom-dsgov.css +932 -0
  405. package/css/themes/custom/flatly/custom-flatly.css +636 -0
  406. package/css/themes/custom/fuse/button-fuse.css +362 -0
  407. package/css/themes/custom/fuse/custom-fuse.css +777 -0
  408. package/css/themes/custom/journal/custom-journal.css +642 -0
  409. package/css/themes/custom/krypton/custom-krypton.css +1696 -0
  410. package/css/themes/custom/lumen/button-lumen.css +81 -0
  411. package/css/themes/custom/lumen/crn-ion-header-bar.css +59 -0
  412. package/css/themes/custom/lumen/custom-lumen.css +687 -0
  413. package/css/themes/custom/material/custom-material.css +635 -0
  414. package/css/themes/custom/material-round/custom-material-round.css +1761 -0
  415. package/css/themes/custom/materialui/custom-materialui.css +265 -0
  416. package/css/themes/custom/materialui/font/Roboto-Black.woff +0 -0
  417. package/css/themes/custom/materialui/font/Roboto-Black.woff2 +0 -0
  418. package/css/themes/custom/materialui/font/Roboto-BlackItalic.woff +0 -0
  419. package/css/themes/custom/materialui/font/Roboto-BlackItalic.woff2 +0 -0
  420. package/css/themes/custom/materialui/font/Roboto-Bold.woff +0 -0
  421. package/css/themes/custom/materialui/font/Roboto-Bold.woff2 +0 -0
  422. package/css/themes/custom/materialui/font/Roboto-BoldItalic.woff +0 -0
  423. package/css/themes/custom/materialui/font/Roboto-BoldItalic.woff2 +0 -0
  424. package/css/themes/custom/materialui/font/Roboto-Italic.woff +0 -0
  425. package/css/themes/custom/materialui/font/Roboto-Italic.woff2 +0 -0
  426. package/css/themes/custom/materialui/font/Roboto-Light.woff +0 -0
  427. package/css/themes/custom/materialui/font/Roboto-Light.woff2 +0 -0
  428. package/css/themes/custom/materialui/font/Roboto-LightItalic.woff +0 -0
  429. package/css/themes/custom/materialui/font/Roboto-LightItalic.woff2 +0 -0
  430. package/css/themes/custom/materialui/font/Roboto-Medium.woff +0 -0
  431. package/css/themes/custom/materialui/font/Roboto-Medium.woff2 +0 -0
  432. package/css/themes/custom/materialui/font/Roboto-MediumItalic.woff +0 -0
  433. package/css/themes/custom/materialui/font/Roboto-MediumItalic.woff2 +0 -0
  434. package/css/themes/custom/materialui/font/Roboto-Regular.woff +0 -0
  435. package/css/themes/custom/materialui/font/Roboto-Regular.woff2 +0 -0
  436. package/css/themes/custom/materialui/font/Roboto-Thin.woff +0 -0
  437. package/css/themes/custom/materialui/font/Roboto-Thin.woff2 +0 -0
  438. package/css/themes/custom/materialui/font/Roboto-ThinItalic.woff +0 -0
  439. package/css/themes/custom/materialui/font/Roboto-ThinItalic.woff2 +0 -0
  440. package/css/themes/custom/materialui/font/fonts.css +108 -0
  441. package/css/themes/custom/materialui/img/arrow-gray.svg +11 -0
  442. package/css/themes/custom/materialui/img/arrow-white.svg +11 -0
  443. package/css/themes/custom/nature/custom-nature.css +1710 -0
  444. package/css/themes/custom/paper/button-paper.css +5 -0
  445. package/css/themes/custom/paper/custom-paper.css +676 -0
  446. package/css/themes/custom/readable/button-readable.css +82 -0
  447. package/css/themes/custom/readable/crn-ion-segment-readable.css +143 -0
  448. package/css/themes/custom/readable/custom-readable.css +641 -0
  449. package/css/themes/custom/sandstone/custom-sandstone.css +615 -0
  450. package/css/themes/custom/simplex/button-simplex.css +472 -0
  451. package/css/themes/custom/simplex/crn-ion-segment-simplex.css +60 -0
  452. package/css/themes/custom/simplex/custom-simplex.css +625 -0
  453. package/css/themes/custom/slate/button-slate.css +477 -0
  454. package/css/themes/custom/slate/crn-ion-segment-slate.css +102 -0
  455. package/css/themes/custom/slate/custom-slate.css +635 -0
  456. package/css/themes/custom/spacelab/bar-spacelab.css +143 -0
  457. package/css/themes/custom/spacelab/button-spacelab.css +471 -0
  458. package/css/themes/custom/spacelab/crn-ion-segment-spacelab.css +60 -0
  459. package/css/themes/custom/spacelab/custom-spacelab.css +653 -0
  460. package/css/themes/custom/superhero/custom-superhero.css +637 -0
  461. package/css/themes/custom/theme-general/button.css +526 -0
  462. package/css/themes/custom/theme-general/checkbox.css +546 -0
  463. package/css/themes/custom/theme-general/crn-ion-header-bar.css +418 -0
  464. package/css/themes/custom/theme-general/crn-ion-segment.css +234 -0
  465. package/css/themes/custom/theme-general/icon.css +39 -0
  466. package/css/themes/custom/theme-general/input.css +50 -0
  467. package/css/themes/custom/theme-general/login.css +317 -0
  468. package/css/themes/custom/theme-general/modal.css +135 -0
  469. package/css/themes/custom/theme-general/range.css +79 -0
  470. package/css/themes/custom/theme-general/reset-password.css +62 -0
  471. package/css/themes/custom/theme-general/signup.css +39 -0
  472. package/css/themes/custom/theme-general/theme-general.css +263 -0
  473. package/css/themes/custom/theme-general/toggle.css +190 -0
  474. package/css/themes/custom/united/custom-united.css +627 -0
  475. package/css/themes/custom/yeti/button-yeti.css +86 -0
  476. package/css/themes/custom/yeti/custom-yeti.css +622 -0
  477. package/css/themes/cyborg.min.css +5 -0
  478. package/css/themes/darkly.min.css +5 -0
  479. package/css/themes/dsgov.min.css +5 -0
  480. package/css/themes/flatly.min.css +5 -0
  481. package/css/themes/fuse.min.css +5 -0
  482. package/css/themes/journal.min.css +5 -0
  483. package/css/themes/krypton.min.css +5 -0
  484. package/css/themes/lumen.min.css +5 -0
  485. package/css/themes/material-round.min.css +5 -0
  486. package/css/themes/material.min.css +5 -0
  487. package/css/themes/materialui.min.css +5 -0
  488. package/css/themes/nature.min.css +5 -0
  489. package/css/themes/paper.min.css +5 -0
  490. package/css/themes/readable.min.css +5 -0
  491. package/css/themes/sandstone.min.css +5 -0
  492. package/css/themes/simplex.min.css +5 -0
  493. package/css/themes/slate.min.css +5 -0
  494. package/css/themes/spacelab.min.css +5 -0
  495. package/css/themes/superhero.min.css +5 -0
  496. package/css/themes/theme.editor.view.html +890 -0
  497. package/css/themes/united.min.css +5 -0
  498. package/css/themes/yeti.min.css +5 -0
  499. package/deprecated/components/crn-QRCode.components.json +54 -0
  500. package/deprecated/components/crn-anchor.components.json +89 -0
  501. package/deprecated/components/crn-button-bar.components.json +64 -0
  502. package/deprecated/components/crn-button.components.json +316 -0
  503. package/deprecated/components/crn-card.components.json +95 -0
  504. package/deprecated/components/crn-chart.components.json +57 -0
  505. package/deprecated/components/crn-chat.components.json +8 -0
  506. package/deprecated/components/crn-checkbox.components.json +184 -0
  507. package/deprecated/components/crn-complex-search.components.json +43 -0
  508. package/deprecated/components/crn-container.components.json +21 -0
  509. package/deprecated/components/crn-cron-crud.components.json +21 -0
  510. package/deprecated/components/crn-datasource.components.json +181 -0
  511. package/deprecated/components/crn-dynamic-file.components.json +85 -0
  512. package/deprecated/components/crn-dynamic-image.components.json +153 -0
  513. package/deprecated/components/crn-dynamic-select.components.json +111 -0
  514. package/deprecated/components/crn-evaluation.components.json +64 -0
  515. package/deprecated/components/crn-filter-button.components.json +305 -0
  516. package/deprecated/components/crn-form-template.components.json +11 -0
  517. package/deprecated/components/crn-header-button.components.json +63 -0
  518. package/deprecated/components/crn-heading.components.json +109 -0
  519. package/deprecated/components/crn-icon.components.json +258 -0
  520. package/deprecated/components/crn-image.components.json +121 -0
  521. package/deprecated/components/crn-infinite-scroll.components.json +32 -0
  522. package/deprecated/components/crn-input-button.components.json +205 -0
  523. package/deprecated/components/crn-input-floating.components.json +196 -0
  524. package/deprecated/components/crn-input-icon.components.json +187 -0
  525. package/deprecated/components/crn-input-inline.components.json +198 -0
  526. package/deprecated/components/crn-input.components.json +185 -0
  527. package/deprecated/components/crn-ion-content.components.json +24 -0
  528. package/deprecated/components/crn-ion-footer-bar.components.json +351 -0
  529. package/deprecated/components/crn-ion-header-bar.components.json +211 -0
  530. package/deprecated/components/crn-ion-list.components.json +152 -0
  531. package/deprecated/components/crn-ion-nav-buttons.components.json +63 -0
  532. package/deprecated/components/crn-ion-segment-item.components.json +65 -0
  533. package/deprecated/components/crn-ion-segment.components.json +974 -0
  534. package/deprecated/components/crn-ion-tab-item.components.json +50 -0
  535. package/deprecated/components/crn-ion-tab.components.json +138 -0
  536. package/deprecated/components/crn-item-options.components.json +26 -0
  537. package/deprecated/components/crn-item-select.components.json +69 -0
  538. package/deprecated/components/crn-item-swipe.components.json +62 -0
  539. package/deprecated/components/crn-kendo-chat.components.json +88 -0
  540. package/deprecated/components/crn-label.components.json +113 -0
  541. package/deprecated/components/crn-list-avatar.components.json +260 -0
  542. package/deprecated/components/crn-list-icon.components.json +249 -0
  543. package/deprecated/components/crn-list-item-avatar.components.json +236 -0
  544. package/deprecated/components/crn-list-item-icon.components.json +242 -0
  545. package/deprecated/components/crn-list-item-thumbnail.components.json +226 -0
  546. package/deprecated/components/crn-list-item.components.json +160 -0
  547. package/deprecated/components/crn-list-simple.components.json +180 -0
  548. package/deprecated/components/crn-list-swipe.components.json +105 -0
  549. package/deprecated/components/crn-list-thumbnail.components.json +248 -0
  550. package/deprecated/components/crn-list.components.json +75 -0
  551. package/deprecated/components/crn-map.components.json +55 -0
  552. package/deprecated/components/crn-mobile-menu.components.json +32 -0
  553. package/deprecated/components/crn-multiselect.components.json +110 -0
  554. package/deprecated/components/crn-navbar.components.json +106 -0
  555. package/deprecated/components/crn-option-button.components.json +72 -0
  556. package/deprecated/components/crn-paragraph.components.json +110 -0
  557. package/deprecated/components/crn-radio.components.json +90 -0
  558. package/deprecated/components/crn-radioOption.components.json +23 -0
  559. package/deprecated/components/crn-range.components.json +106 -0
  560. package/deprecated/components/crn-rating.components.json +189 -0
  561. package/deprecated/components/crn-search.components.json +210 -0
  562. package/deprecated/components/crn-select-options.components.json +17 -0
  563. package/deprecated/components/crn-select.components.json +93 -0
  564. package/deprecated/components/crn-slider-item.components.json +236 -0
  565. package/deprecated/components/crn-slider.components.json +105 -0
  566. package/deprecated/components/crn-spacer.components.json +21 -0
  567. package/deprecated/components/crn-start.components.json +10 -0
  568. package/deprecated/components/crn-tabs-icon-only-item.components.json +85 -0
  569. package/deprecated/components/crn-tabs-icon-only.components.json +382 -0
  570. package/deprecated/components/crn-tabs.components.json +36 -0
  571. package/deprecated/components/crn-textarea.components.json +109 -0
  572. package/deprecated/components/crn-toggle.components.json +161 -0
  573. package/deprecated/components/crn-video.components.json +67 -0
  574. package/deprecated/components/css/app.css +78 -0
  575. package/deprecated/components/css/background-color.css +121 -0
  576. package/deprecated/components/css/chatStyle.css +221 -0
  577. package/deprecated/components/css/color-default.css +83 -0
  578. package/deprecated/components/css/crn-ion-segment.css +786 -0
  579. package/deprecated/components/css/icon-size.css +15 -0
  580. package/deprecated/components/css/multiselect-editor.css +119 -0
  581. package/deprecated/components/css/tabs-color.css +248 -0
  582. package/deprecated/components/js/format.min.js +2 -0
  583. package/deprecated/components/js/jquery.inputmask.bundle.js +3883 -0
  584. package/deprecated/components/js/jquery.mask.min.js +19 -0
  585. package/deprecated/components/js/pouchdb.cordova-sqlite.js +5540 -0
  586. package/deprecated/components/js/qrcode.js +1319 -0
  587. package/deprecated/components/reports/BOOLEAN.parameter.html +10 -0
  588. package/deprecated/components/reports/DATE.parameter.html +4 -0
  589. package/deprecated/components/reports/DOUBLE.parameter.html +4 -0
  590. package/deprecated/components/reports/FLOAT.parameter.html +4 -0
  591. package/deprecated/components/reports/INTEGER.parameter.html +4 -0
  592. package/deprecated/components/reports/LONG.parameter.html +5 -0
  593. package/deprecated/components/reports/STRING.parameter.html +5 -0
  594. package/deprecated/components/reports/reports.parameters.html +20 -0
  595. package/deprecated/components/templates/advanced.list.designtime.html +33 -0
  596. package/deprecated/components/templates/advanced.list.template.html +1 -0
  597. package/deprecated/components/templates/anchor.template.html +1 -0
  598. package/deprecated/components/templates/button-bar.template.html +5 -0
  599. package/deprecated/components/templates/button-report.template.html +1 -0
  600. package/deprecated/components/templates/button.template.html +4 -0
  601. package/deprecated/components/templates/card.template.html +7 -0
  602. package/deprecated/components/templates/chat.template.html +39 -0
  603. package/deprecated/components/templates/checkbox.template.html +8 -0
  604. package/deprecated/components/templates/combobox.designtime.html +12 -0
  605. package/deprecated/components/templates/combobox.template.html +8 -0
  606. package/deprecated/components/templates/complexsearch.template.html +7 -0
  607. package/deprecated/components/templates/crn-ion-segment-item.template.html +6 -0
  608. package/deprecated/components/templates/crn-ion-segment.template.html +27 -0
  609. package/deprecated/components/templates/cron-crud.template.html +7 -0
  610. package/deprecated/components/templates/cron-mobile-menu.designtime.html +10 -0
  611. package/deprecated/components/templates/div.horizontal.template.html +27 -0
  612. package/deprecated/components/templates/div.vertical.template.html +11 -0
  613. package/deprecated/components/templates/dynamic-combobox.template.html +6 -0
  614. package/deprecated/components/templates/dynamicfile.template.html +8 -0
  615. package/deprecated/components/templates/dynamicimage.designtime.html +10 -0
  616. package/deprecated/components/templates/dynamicimage.template.html +9 -0
  617. package/deprecated/components/templates/evaluation.designtime.html +7 -0
  618. package/deprecated/components/templates/evaluation.template.html +1 -0
  619. package/deprecated/components/templates/filterbutton.template.html +3 -0
  620. package/deprecated/components/templates/floattextinput.designtime.html +4 -0
  621. package/deprecated/components/templates/floattextinput.template.html +4 -0
  622. package/deprecated/components/templates/form.template.html +5 -0
  623. package/deprecated/components/templates/header.template.html +3 -0
  624. package/deprecated/components/templates/icontextinput.template.html +4 -0
  625. package/deprecated/components/templates/image.template.html +18 -0
  626. package/deprecated/components/templates/inlinetextinput.template.html +4 -0
  627. package/deprecated/components/templates/ion-footer-bar.template.html +15 -0
  628. package/deprecated/components/templates/ion-header-bar.template.html +13 -0
  629. package/deprecated/components/templates/ion-tab-item.designtime.html +5 -0
  630. package/deprecated/components/templates/ion-tab.template.html +8 -0
  631. package/deprecated/components/templates/item.avatar.template.html +5 -0
  632. package/deprecated/components/templates/item.icon.template.html +4 -0
  633. package/deprecated/components/templates/item.options.template.html +14 -0
  634. package/deprecated/components/templates/item.slider.template.html +4 -0
  635. package/deprecated/components/templates/item.swipe.template.html +14 -0
  636. package/deprecated/components/templates/item.template.html +5 -0
  637. package/deprecated/components/templates/item.thumbnail.template.html +5 -0
  638. package/deprecated/components/templates/kendo-chat.designtime.html +20 -0
  639. package/deprecated/components/templates/kendo-chat.template.html +75 -0
  640. package/deprecated/components/templates/list.avatar.template.html +7 -0
  641. package/deprecated/components/templates/list.icon.template.html +6 -0
  642. package/deprecated/components/templates/list.swipe.template.html +16 -0
  643. package/deprecated/components/templates/list.template.html +5 -0
  644. package/deprecated/components/templates/list.thumbnail.template.html +7 -0
  645. package/deprecated/components/templates/maps.designtime.html +1 -0
  646. package/deprecated/components/templates/maps.template.html +1 -0
  647. package/deprecated/components/templates/menu.template.html +21 -0
  648. package/deprecated/components/templates/multiselect.template.html +5 -0
  649. package/deprecated/components/templates/nav.bar.template.html +5 -0
  650. package/deprecated/components/templates/publicMenu.template.html +14 -0
  651. package/deprecated/components/templates/radiogroup-dynamic.template.html +15 -0
  652. package/deprecated/components/templates/radiogroup.template.html +21 -0
  653. package/deprecated/components/templates/range.template.html +5 -0
  654. package/deprecated/components/templates/rating.template.html +9 -0
  655. package/deprecated/components/templates/search.template.html +6 -0
  656. package/deprecated/components/templates/slider.template.html +20 -0
  657. package/deprecated/components/templates/tabs-icon-only.template.html +16 -0
  658. package/deprecated/components/templates/tabs.template.html +5 -0
  659. package/deprecated/components/templates/textarea.template.html +1 -0
  660. package/deprecated/components/templates/textinput.template.html +3 -0
  661. package/deprecated/components/templates/textinputbutton.template.html +12 -0
  662. package/deprecated/components/templates/title.template.html +1 -0
  663. package/deprecated/components/templates/toggle-dynamic.template.html +11 -0
  664. package/deprecated/components/templates/toggle.template.html +9 -0
  665. package/deprecated/components/templates/video.designtime.html +2 -0
  666. package/deprecated/components/templates/video.template.html +1 -0
  667. package/deprecated/components/templates/views/public/home.view.html +16 -0
  668. package/deprecated/components/templates/views/public/menu.view.html +20 -0
  669. package/deprecated/components/upload/upload.html +41 -0
  670. package/deprecated/css/app.css +392 -0
  671. package/deprecated/css/custom-ionic.css +195 -0
  672. package/deprecated/css/groupingOfCss/checkbox.css +75 -0
  673. package/deprecated/css/groupingOfCss/col.css +728 -0
  674. package/deprecated/css/groupingOfCss/dynamicImage.css +24 -0
  675. package/deprecated/css/groupingOfCss/import_groupingOfCss.css +6 -0
  676. package/deprecated/css/groupingOfCss/login.css +260 -0
  677. package/deprecated/css/groupingOfCss/qrCodeCronapp.css +4 -0
  678. package/deprecated/css/groupingOfCss/upload-image.css +68 -0
  679. package/deprecated/css/old/modal.css +133 -0
  680. package/deprecated/css/themes/custom/material/custom-material.css +12 -0
  681. package/deprecated/css/themes/material.min.css +4 -0
  682. package/deprecated/dist/components/css/app.css +1 -0
  683. package/deprecated/dist/components/css/background-color.css +1 -0
  684. package/deprecated/dist/components/css/chatStyle.css +1 -0
  685. package/deprecated/dist/components/css/color-default.css +1 -0
  686. package/deprecated/dist/components/css/crn-ion-segment.css +1 -0
  687. package/deprecated/dist/components/css/icon-size.css +1 -0
  688. package/deprecated/dist/components/css/multiselect-editor.css +1 -0
  689. package/deprecated/dist/components/css/tabs-color.css +1 -0
  690. package/deprecated/dist/components/js/format.min.js +1 -0
  691. package/deprecated/dist/components/js/jquery.inputmask.bundle.js +3 -0
  692. package/deprecated/dist/components/js/jquery.mask.min.js +1 -0
  693. package/deprecated/dist/components/js/pouchdb.cordova-sqlite.js +2 -0
  694. package/deprecated/dist/components/js/qrcode.js +1 -0
  695. package/deprecated/dist/components/templates/advanced.list.designtime.html +1 -0
  696. package/deprecated/dist/components/templates/advanced.list.template.html +1 -0
  697. package/deprecated/dist/components/templates/anchor.template.html +1 -0
  698. package/deprecated/dist/components/templates/button-bar.template.html +1 -0
  699. package/deprecated/dist/components/templates/button-report.template.html +1 -0
  700. package/deprecated/dist/components/templates/button.template.html +1 -0
  701. package/deprecated/dist/components/templates/card.template.html +1 -0
  702. package/deprecated/dist/components/templates/chat.template.html +1 -0
  703. package/deprecated/dist/components/templates/checkbox.template.html +1 -0
  704. package/deprecated/dist/components/templates/combobox.designtime.html +1 -0
  705. package/deprecated/dist/components/templates/combobox.template.html +1 -0
  706. package/deprecated/dist/components/templates/complexsearch.template.html +1 -0
  707. package/deprecated/dist/components/templates/crn-ion-segment-item.template.html +1 -0
  708. package/deprecated/dist/components/templates/crn-ion-segment.template.html +1 -0
  709. package/deprecated/dist/components/templates/cron-crud.template.html +1 -0
  710. package/deprecated/dist/components/templates/cron-mobile-menu.designtime.html +1 -0
  711. package/deprecated/dist/components/templates/div.horizontal.template.html +1 -0
  712. package/deprecated/dist/components/templates/div.vertical.template.html +1 -0
  713. package/deprecated/dist/components/templates/dynamic-combobox.template.html +1 -0
  714. package/deprecated/dist/components/templates/dynamicfile.template.html +1 -0
  715. package/deprecated/dist/components/templates/dynamicimage.designtime.html +1 -0
  716. package/deprecated/dist/components/templates/dynamicimage.template.html +1 -0
  717. package/deprecated/dist/components/templates/evaluation.designtime.html +1 -0
  718. package/deprecated/dist/components/templates/evaluation.template.html +1 -0
  719. package/deprecated/dist/components/templates/filterbutton.template.html +1 -0
  720. package/deprecated/dist/components/templates/floattextinput.designtime.html +1 -0
  721. package/deprecated/dist/components/templates/floattextinput.template.html +1 -0
  722. package/deprecated/dist/components/templates/form.template.html +1 -0
  723. package/deprecated/dist/components/templates/header.template.html +1 -0
  724. package/deprecated/dist/components/templates/iconinput.template.html +1 -0
  725. package/deprecated/dist/components/templates/icontextinput.template.html +1 -0
  726. package/deprecated/dist/components/templates/image.template.html +1 -0
  727. package/deprecated/dist/components/templates/inlinetextinput.template.html +1 -0
  728. package/deprecated/dist/components/templates/ion-footer-bar.template.html +1 -0
  729. package/deprecated/dist/components/templates/ion-header-bar.template.html +1 -0
  730. package/deprecated/dist/components/templates/ion-tab-item.designtime.html +1 -0
  731. package/deprecated/dist/components/templates/ion-tab.designtime.html +1 -0
  732. package/deprecated/dist/components/templates/ion-tab.template.html +1 -0
  733. package/deprecated/dist/components/templates/item.avatar.template.html +1 -0
  734. package/deprecated/dist/components/templates/item.icon.template.html +1 -0
  735. package/deprecated/dist/components/templates/item.options.template.html +1 -0
  736. package/deprecated/dist/components/templates/item.slider.template.html +1 -0
  737. package/deprecated/dist/components/templates/item.swipe.template.html +1 -0
  738. package/deprecated/dist/components/templates/item.template.html +1 -0
  739. package/deprecated/dist/components/templates/item.thumbnail.template.html +1 -0
  740. package/deprecated/dist/components/templates/kendo-chat.designtime.html +1 -0
  741. package/deprecated/dist/components/templates/kendo-chat.template.html +1 -0
  742. package/deprecated/dist/components/templates/list.avatar.template.html +1 -0
  743. package/deprecated/dist/components/templates/list.icon.template.html +1 -0
  744. package/deprecated/dist/components/templates/list.swipe.template.html +1 -0
  745. package/deprecated/dist/components/templates/list.template.html +1 -0
  746. package/deprecated/dist/components/templates/list.thumbnail.template.html +1 -0
  747. package/deprecated/dist/components/templates/maps.designtime.html +1 -0
  748. package/deprecated/dist/components/templates/maps.template.html +1 -0
  749. package/deprecated/dist/components/templates/menu.template.html +1 -0
  750. package/deprecated/dist/components/templates/multiselect.template.html +1 -0
  751. package/deprecated/dist/components/templates/nav.bar.template.html +1 -0
  752. package/deprecated/dist/components/templates/publicMenu.template.html +1 -0
  753. package/deprecated/dist/components/templates/radiogroup-dynamic.template.html +1 -0
  754. package/deprecated/dist/components/templates/radiogroup.template.html +1 -0
  755. package/deprecated/dist/components/templates/range.template.html +1 -0
  756. package/deprecated/dist/components/templates/rating.template.html +1 -0
  757. package/deprecated/dist/components/templates/search.template.html +1 -0
  758. package/deprecated/dist/components/templates/slider.template.html +1 -0
  759. package/deprecated/dist/components/templates/tabs-icon-only.template.html +1 -0
  760. package/deprecated/dist/components/templates/tabs.template.html +1 -0
  761. package/deprecated/dist/components/templates/textarea.template.html +1 -0
  762. package/deprecated/dist/components/templates/textinput.template.html +1 -0
  763. package/deprecated/dist/components/templates/textinputbutton.template.html +1 -0
  764. package/deprecated/dist/components/templates/title.template.html +1 -0
  765. package/deprecated/dist/components/templates/toggle-dynamic.template.html +1 -0
  766. package/deprecated/dist/components/templates/toggle.template.html +1 -0
  767. package/deprecated/dist/components/templates/video.designtime.html +1 -0
  768. package/deprecated/dist/components/templates/video.template.html +1 -0
  769. package/deprecated/dist/components/templates/views/public/home.view.html +1 -0
  770. package/deprecated/dist/components/templates/views/public/menu.view.html +1 -0
  771. package/deprecated/dist/css/app.css +1 -0
  772. package/deprecated/dist/css/cronos.css +1 -0
  773. package/deprecated/dist/css/custom-ionic.css +1 -0
  774. package/deprecated/dist/css/groupingOfCss/checkbox.css +1 -0
  775. package/deprecated/dist/css/groupingOfCss/col.css +1 -0
  776. package/deprecated/dist/css/groupingOfCss/dynamicImage.css +1 -0
  777. package/deprecated/dist/css/groupingOfCss/import_groupingOfCss.css +1 -0
  778. package/deprecated/dist/css/groupingOfCss/login.css +1 -0
  779. package/deprecated/dist/css/groupingOfCss/qrCodeCronapp.css +1 -0
  780. package/deprecated/dist/css/groupingOfCss/upload-image.css +1 -0
  781. package/deprecated/dist/css/old/modal.css +1 -0
  782. package/deprecated/dist/i18n/locale_en_us.json +126 -0
  783. package/deprecated/dist/i18n/locale_pt_br.json +126 -0
  784. package/deprecated/dist/img/cron-icon/crn-QRCode.svg +1 -0
  785. package/deprecated/dist/img/cron-icon/crn-anchor.svg +1 -0
  786. package/deprecated/dist/img/cron-icon/crn-button-bar.svg +1 -0
  787. package/deprecated/dist/img/cron-icon/crn-button.svg +1 -0
  788. package/deprecated/dist/img/cron-icon/crn-card.svg +1 -0
  789. package/deprecated/dist/img/cron-icon/crn-carousel.svg +1 -0
  790. package/deprecated/dist/img/cron-icon/crn-chart.svg +1 -0
  791. package/deprecated/dist/img/cron-icon/crn-checkbox.svg +1 -0
  792. package/deprecated/dist/img/cron-icon/crn-container.svg +1 -0
  793. package/deprecated/dist/img/cron-icon/crn-cron-crud.svg +1 -0
  794. package/deprecated/dist/img/cron-icon/crn-datasource.svg +1 -0
  795. package/deprecated/dist/img/cron-icon/crn-dynamic-file.svg +1 -0
  796. package/deprecated/dist/img/cron-icon/crn-dynamic-image.svg +1 -0
  797. package/deprecated/dist/img/cron-icon/crn-enterprise-dynamic-combobox.svg +1 -0
  798. package/deprecated/dist/img/cron-icon/crn-evaluation.svg +1 -0
  799. package/deprecated/dist/img/cron-icon/crn-form.svg +1 -0
  800. package/deprecated/dist/img/cron-icon/crn-header.svg +1 -0
  801. package/deprecated/dist/img/cron-icon/crn-icon.svg +1 -0
  802. package/deprecated/dist/img/cron-icon/crn-image.svg +1 -0
  803. package/deprecated/dist/img/cron-icon/crn-infinite-scroll.svg +1 -0
  804. package/deprecated/dist/img/cron-icon/crn-input-floating.svg +1 -0
  805. package/deprecated/dist/img/cron-icon/crn-input-inline.svg +1 -0
  806. package/deprecated/dist/img/cron-icon/crn-ion-footer-bar.svg +1 -0
  807. package/deprecated/dist/img/cron-icon/crn-ion-list.svg +1 -0
  808. package/deprecated/dist/img/cron-icon/crn-item-swipe.svg +1 -0
  809. package/deprecated/dist/img/cron-icon/crn-kendo-chat.svg +1 -0
  810. package/deprecated/dist/img/cron-icon/crn-label.svg +1 -0
  811. package/deprecated/dist/img/cron-icon/crn-list-avatar.svg +1 -0
  812. package/deprecated/dist/img/cron-icon/crn-list-icon.svg +1 -0
  813. package/deprecated/dist/img/cron-icon/crn-list-item-avatar.svg +1 -0
  814. package/deprecated/dist/img/cron-icon/crn-list-item-icon.svg +1 -0
  815. package/deprecated/dist/img/cron-icon/crn-list-item-thumbnail.svg +1 -0
  816. package/deprecated/dist/img/cron-icon/crn-list-item.svg +1 -0
  817. package/deprecated/dist/img/cron-icon/crn-list-swipe.svg +1 -0
  818. package/deprecated/dist/img/cron-icon/crn-list-thumbnail.svg +1 -0
  819. package/deprecated/dist/img/cron-icon/crn-list.svg +1 -0
  820. package/deprecated/dist/img/cron-icon/crn-map.svg +1 -0
  821. package/deprecated/dist/img/cron-icon/crn-multiselect.svg +1 -0
  822. package/deprecated/dist/img/cron-icon/crn-paragraph.svg +1 -0
  823. package/deprecated/dist/img/cron-icon/crn-plugin.svg +1 -0
  824. package/deprecated/dist/img/cron-icon/crn-radio.svg +1 -0
  825. package/deprecated/dist/img/cron-icon/crn-radiogroup.svg +1 -0
  826. package/deprecated/dist/img/cron-icon/crn-range.svg +1 -0
  827. package/deprecated/dist/img/cron-icon/crn-rating.svg +1 -0
  828. package/deprecated/dist/img/cron-icon/crn-select.svg +1 -0
  829. package/deprecated/dist/img/cron-icon/crn-spacer.svg +1 -0
  830. package/deprecated/dist/img/cron-icon/crn-tabs-icon-only.svg +1 -0
  831. package/deprecated/dist/img/cron-icon/crn-tabs.svg +1 -0
  832. package/deprecated/dist/img/cron-icon/crn-text-component.svg +1 -0
  833. package/deprecated/dist/img/cron-icon/crn-textarea.svg +1 -0
  834. package/deprecated/dist/img/cron-icon/crn-textinput.svg +1 -0
  835. package/deprecated/dist/img/cron-icon/crn-textinputbutton.svg +1 -0
  836. package/deprecated/dist/img/cron-icon/crn-textinputicon.svg +1 -0
  837. package/deprecated/dist/img/cron-icon/crn-toggle.svg +1 -0
  838. package/deprecated/dist/img/cron-icon/crn-video.svg +1 -0
  839. package/deprecated/dist/img/placehold-100x100.png +0 -0
  840. package/deprecated/dist/img/placehold-300x200.png +0 -0
  841. package/deprecated/dist/img/placehold-900x500.png +0 -0
  842. package/deprecated/dist/img/qr-code.png +0 -0
  843. package/deprecated/dist/img/svg-charts.svg +1 -0
  844. package/deprecated/dist/img/user.svg +1 -0
  845. package/deprecated/dist/js/LanguageSelectDirective.js +1 -0
  846. package/deprecated/dist/js/LocaleService.js +1 -0
  847. package/deprecated/dist/js/app.authentication.js +1 -0
  848. package/deprecated/dist/js/app.js +1 -0
  849. package/deprecated/dist/js/controllers.authentication.js +1 -0
  850. package/deprecated/dist/js/controllers.js +1 -0
  851. package/deprecated/dist/js/custom.controllers.js +1 -0
  852. package/deprecated/dist/js/customModules.js +1 -0
  853. package/deprecated/dist/js/customStateProvider.js +0 -0
  854. package/deprecated/dist/js/directives.js +17 -0
  855. package/deprecated/dist/js/filters.js +1 -0
  856. package/deprecated/dist/js/local-dateformat.directive.js +1 -0
  857. package/deprecated/dist/js/reports/parameters.controller.js +1 -0
  858. package/deprecated/dist/js/reports/reports.service.js +1 -0
  859. package/deprecated/dist/js/services.js +1 -0
  860. package/deprecated/dist/js/upload.service.js +1 -0
  861. package/deprecated/img/cron-icon/crn-QRCode.svg +38 -0
  862. package/deprecated/img/cron-icon/crn-anchor.svg +29 -0
  863. package/deprecated/img/cron-icon/crn-button-bar.svg +1 -0
  864. package/deprecated/img/cron-icon/crn-button.svg +24 -0
  865. package/deprecated/img/cron-icon/crn-card.svg +1 -0
  866. package/deprecated/img/cron-icon/crn-carousel.svg +26 -0
  867. package/deprecated/img/cron-icon/crn-chart.svg +19 -0
  868. package/deprecated/img/cron-icon/crn-checkbox.svg +15 -0
  869. package/deprecated/img/cron-icon/crn-container.svg +1 -0
  870. package/deprecated/img/cron-icon/crn-cron-crud.svg +28 -0
  871. package/deprecated/img/cron-icon/crn-datasource.svg +27 -0
  872. package/deprecated/img/cron-icon/crn-dynamic-file.svg +1 -0
  873. package/deprecated/img/cron-icon/crn-dynamic-image.svg +25 -0
  874. package/deprecated/img/cron-icon/crn-enterprise-dynamic-combobox.svg +27 -0
  875. package/deprecated/img/cron-icon/crn-evaluation.svg +1 -0
  876. package/deprecated/img/cron-icon/crn-form.svg +24 -0
  877. package/deprecated/img/cron-icon/crn-header.svg +18 -0
  878. package/deprecated/img/cron-icon/crn-icon.svg +23 -0
  879. package/deprecated/img/cron-icon/crn-image.svg +20 -0
  880. package/deprecated/img/cron-icon/crn-infinite-scroll.svg +1 -0
  881. package/deprecated/img/cron-icon/crn-input-floating.svg +1 -0
  882. package/deprecated/img/cron-icon/crn-input-inline.svg +1 -0
  883. package/deprecated/img/cron-icon/crn-ion-footer-bar.svg +1 -0
  884. package/deprecated/img/cron-icon/crn-ion-list.svg +1 -0
  885. package/deprecated/img/cron-icon/crn-item-swipe.svg +15 -0
  886. package/deprecated/img/cron-icon/crn-kendo-chat.svg +1 -0
  887. package/deprecated/img/cron-icon/crn-label.svg +1 -0
  888. package/deprecated/img/cron-icon/crn-list-avatar.svg +1 -0
  889. package/deprecated/img/cron-icon/crn-list-icon.svg +1 -0
  890. package/deprecated/img/cron-icon/crn-list-item-avatar.svg +1 -0
  891. package/deprecated/img/cron-icon/crn-list-item-icon.svg +1 -0
  892. package/deprecated/img/cron-icon/crn-list-item-thumbnail.svg +1 -0
  893. package/deprecated/img/cron-icon/crn-list-item.svg +1 -0
  894. package/deprecated/img/cron-icon/crn-list-swipe.svg +17 -0
  895. package/deprecated/img/cron-icon/crn-list-thumbnail.svg +17 -0
  896. package/deprecated/img/cron-icon/crn-list.svg +16 -0
  897. package/deprecated/img/cron-icon/crn-map.svg +1 -0
  898. package/deprecated/img/cron-icon/crn-multiselect.svg +1 -0
  899. package/deprecated/img/cron-icon/crn-paragraph.svg +1 -0
  900. package/deprecated/img/cron-icon/crn-plugin.svg +44 -0
  901. package/deprecated/img/cron-icon/crn-radio.svg +21 -0
  902. package/deprecated/img/cron-icon/crn-radiogroup.svg +25 -0
  903. package/deprecated/img/cron-icon/crn-range.svg +1 -0
  904. package/deprecated/img/cron-icon/crn-rating.svg +20 -0
  905. package/deprecated/img/cron-icon/crn-select.svg +1 -0
  906. package/deprecated/img/cron-icon/crn-spacer.svg +1 -0
  907. package/deprecated/img/cron-icon/crn-tabs-icon-only.svg +24 -0
  908. package/deprecated/img/cron-icon/crn-tabs.svg +17 -0
  909. package/deprecated/img/cron-icon/crn-text-component.svg +22 -0
  910. package/deprecated/img/cron-icon/crn-textarea.svg +22 -0
  911. package/deprecated/img/cron-icon/crn-textinput.svg +23 -0
  912. package/deprecated/img/cron-icon/crn-textinputbutton.svg +33 -0
  913. package/deprecated/img/cron-icon/crn-textinputicon.svg +29 -0
  914. package/deprecated/img/cron-icon/crn-toggle.svg +1 -0
  915. package/deprecated/img/cron-icon/crn-video.svg +1 -0
  916. package/deprecated/img/placehold-100x100.png +0 -0
  917. package/deprecated/img/placehold-300x200.png +0 -0
  918. package/deprecated/img/placehold-900x500.png +0 -0
  919. package/deprecated/img/qr-code.png +0 -0
  920. package/deprecated/img/svg-charts.svg +1 -0
  921. package/deprecated/img/user.svg +18 -0
  922. package/dist/components/css/app.css +1 -0
  923. package/dist/components/css/background-color.css +1 -0
  924. package/dist/components/css/chatStyle.css +1 -0
  925. package/dist/components/css/color-default.css +1 -0
  926. package/dist/components/css/crn-ion-footer-bar.css +1 -0
  927. package/dist/components/css/crn-ion-segment.css +1 -0
  928. package/dist/components/css/icon-size.css +1 -0
  929. package/dist/components/css/multiselect-editor.css +1 -0
  930. package/dist/components/css/tabs-color.css +1 -0
  931. package/dist/components/js/format.min.js +1 -0
  932. package/dist/components/js/jquery.inputmask.bundle.js +1 -0
  933. package/dist/components/js/jquery.mask.min.js +1 -0
  934. package/dist/components/js/pouchdb.cordova-sqlite.js +1 -0
  935. package/dist/components/js/qrcode.js +1 -0
  936. package/dist/components/templates/advanced.list.designtime.html +17 -0
  937. package/dist/components/templates/advanced.list.template.html +1 -0
  938. package/dist/components/templates/anchor.template.html +1 -0
  939. package/dist/components/templates/button-bar.template.html +1 -0
  940. package/dist/components/templates/button-report.template.html +1 -0
  941. package/dist/components/templates/button.template.html +1 -0
  942. package/dist/components/templates/card.template.html +1 -0
  943. package/dist/components/templates/chat.template.html +1 -0
  944. package/dist/components/templates/checkbox.template.html +1 -0
  945. package/dist/components/templates/combobox.designtime.html +1 -0
  946. package/dist/components/templates/combobox.template.html +1 -0
  947. package/dist/components/templates/complexsearch.template.html +1 -0
  948. package/dist/components/templates/crn-frame.designtime.html +6 -0
  949. package/dist/components/templates/crn-frame.template.html +1 -0
  950. package/dist/components/templates/crn-ion-segment-item.template.html +1 -0
  951. package/dist/components/templates/crn-ion-segment.template.html +1 -0
  952. package/dist/components/templates/crn-signature-pad.designtime.html +1 -0
  953. package/dist/components/templates/crn-signature-pad.template.html +1 -0
  954. package/dist/components/templates/cron-combobox.designtime.html +1 -0
  955. package/dist/components/templates/cron-combobox.template.html +1 -0
  956. package/dist/components/templates/cron-crud.template.html +1 -0
  957. package/dist/components/templates/cron-mobile-menu.designtime.html +1 -0
  958. package/dist/components/templates/div.horizontal.template.html +1 -0
  959. package/dist/components/templates/div.vertical.template.html +1 -0
  960. package/dist/components/templates/dynamic-combobox.template.html +1 -0
  961. package/dist/components/templates/dynamicfile.designtime.html +1 -0
  962. package/dist/components/templates/dynamicfile.template.html +1 -0
  963. package/dist/components/templates/dynamicimage.designtime.html +1 -0
  964. package/dist/components/templates/dynamicimage.template.html +1 -0
  965. package/dist/components/templates/evaluation.designtime.html +1 -0
  966. package/dist/components/templates/evaluation.template.html +1 -0
  967. package/dist/components/templates/filterbutton.template.html +1 -0
  968. package/dist/components/templates/floattextinput.designtime.html +1 -0
  969. package/dist/components/templates/floattextinput.template.html +1 -0
  970. package/dist/components/templates/form.template.html +1 -0
  971. package/dist/components/templates/header.template.html +1 -0
  972. package/dist/components/templates/icontextinput.template.html +1 -0
  973. package/dist/components/templates/image.template.html +1 -0
  974. package/dist/components/templates/inlinetextinput.template.html +1 -0
  975. package/dist/components/templates/ion-footer-bar.template.html +1 -0
  976. package/dist/components/templates/ion-header-bar.template.html +1 -0
  977. package/dist/components/templates/ion-tab-item.designtime.html +1 -0
  978. package/dist/components/templates/ion-tab.template.html +1 -0
  979. package/dist/components/templates/item.avatar.template.html +1 -0
  980. package/dist/components/templates/item.icon.template.html +1 -0
  981. package/dist/components/templates/item.options.template.html +1 -0
  982. package/dist/components/templates/item.slider.template.html +1 -0
  983. package/dist/components/templates/item.swipe.template.html +1 -0
  984. package/dist/components/templates/item.template.html +1 -0
  985. package/dist/components/templates/item.thumbnail.template.html +1 -0
  986. package/dist/components/templates/kendo-chat.designtime.html +1 -0
  987. package/dist/components/templates/kendo-chat.template.html +1 -0
  988. package/dist/components/templates/list.avatar.template.html +1 -0
  989. package/dist/components/templates/list.icon.template.html +1 -0
  990. package/dist/components/templates/list.swipe.template.html +1 -0
  991. package/dist/components/templates/list.template.html +1 -0
  992. package/dist/components/templates/list.thumbnail.template.html +1 -0
  993. package/dist/components/templates/maps.designtime.html +1 -0
  994. package/dist/components/templates/maps.template.html +1 -0
  995. package/dist/components/templates/menu.template.html +1 -0
  996. package/dist/components/templates/multiselect.template.html +1 -0
  997. package/dist/components/templates/nav.bar.template.html +1 -0
  998. package/dist/components/templates/public.menu.template.html +1 -0
  999. package/dist/components/templates/publicMenu.template.html +1 -0
  1000. package/dist/components/templates/radiogroup-dynamic.template.html +1 -0
  1001. package/dist/components/templates/radiogroup.template.html +1 -0
  1002. package/dist/components/templates/range.template.html +1 -0
  1003. package/dist/components/templates/rating.template.html +1 -0
  1004. package/dist/components/templates/search.template.html +1 -0
  1005. package/dist/components/templates/slider.template.html +1 -0
  1006. package/dist/components/templates/tabs-icon-only.template.html +1 -0
  1007. package/dist/components/templates/tabs.template.html +1 -0
  1008. package/dist/components/templates/textarea.template.html +1 -0
  1009. package/dist/components/templates/textinput.template.html +1 -0
  1010. package/dist/components/templates/textinputbutton.template.html +1 -0
  1011. package/dist/components/templates/title.template.html +1 -0
  1012. package/dist/components/templates/toggle-dynamic.template.html +1 -0
  1013. package/dist/components/templates/toggle.template.html +1 -0
  1014. package/dist/components/templates/video.designtime.html +1 -0
  1015. package/dist/components/templates/video.template.html +1 -0
  1016. package/dist/components/templates/views/public/home.view.html +1 -0
  1017. package/dist/components/templates/views/public/menu.view.html +1 -0
  1018. package/dist/css/app.css +0 -0
  1019. package/dist/css/app_2.9.css +1 -0
  1020. package/dist/css/cronos.css +1 -0
  1021. package/dist/css/groupingOfCss/checkbox.css +1 -0
  1022. package/dist/css/groupingOfCss/col.css +1 -0
  1023. package/dist/css/groupingOfCss/dynamicImage.css +1 -0
  1024. package/dist/css/groupingOfCss/import_groupingOfCss.css +1 -0
  1025. package/dist/css/groupingOfCss/qrCodeCronapp.css +1 -0
  1026. package/dist/css/groupingOfCss/upload-image.css +1 -0
  1027. package/dist/css/old/modal.css +1 -0
  1028. package/dist/css/themes/aquamarine.min.css +1 -0
  1029. package/dist/css/themes/cerulean.min.css +1 -0
  1030. package/dist/css/themes/cosmo.min.css +1 -0
  1031. package/dist/css/themes/custom/aquamarine/bar-aquamarine.css +1 -0
  1032. package/dist/css/themes/custom/aquamarine/button-aquamarine.css +1 -0
  1033. package/dist/css/themes/custom/aquamarine/crn-ion-segment-aquamarine.css +1 -0
  1034. package/dist/css/themes/custom/aquamarine/custom-aquamarine.css +1 -0
  1035. package/dist/css/themes/custom/aquamarine/img/arrow-gray.svg +1 -0
  1036. package/dist/css/themes/custom/aquamarine/img/arrow-white.svg +1 -0
  1037. package/dist/css/themes/custom/cerulean/button-cerulean.css +1 -0
  1038. package/dist/css/themes/custom/cerulean/crn-ion-segment-cerulean.css +1 -0
  1039. package/dist/css/themes/custom/cerulean/custom-cerulean.css +1 -0
  1040. package/dist/css/themes/custom/cosmo/custom-cosmo.css +1 -0
  1041. package/dist/css/themes/custom/cyborg/custom-cyborg.css +1 -0
  1042. package/dist/css/themes/custom/darkly/custom-darkly.css +1 -0
  1043. package/dist/css/themes/custom/dsgov/button-dsgov.css +1 -0
  1044. package/dist/css/themes/custom/dsgov/custom-dsgov.css +1 -0
  1045. package/dist/css/themes/custom/flatly/custom-flatly.css +1 -0
  1046. package/dist/css/themes/custom/fuse/button-fuse.css +1 -0
  1047. package/dist/css/themes/custom/fuse/custom-fuse.css +1 -0
  1048. package/dist/css/themes/custom/journal/custom-journal.css +1 -0
  1049. package/dist/css/themes/custom/krypton/custom-krypton.css +1 -0
  1050. package/dist/css/themes/custom/lumen/button-lumen.css +1 -0
  1051. package/dist/css/themes/custom/lumen/crn-ion-header-bar.css +1 -0
  1052. package/dist/css/themes/custom/lumen/custom-lumen.css +1 -0
  1053. package/dist/css/themes/custom/material/custom-material.css +1 -0
  1054. package/dist/css/themes/custom/material-round/custom-material-round.css +1 -0
  1055. package/dist/css/themes/custom/materialui/custom-materialui.css +1 -0
  1056. package/dist/css/themes/custom/materialui/font/Roboto-Black.woff +0 -0
  1057. package/dist/css/themes/custom/materialui/font/Roboto-Black.woff2 +0 -0
  1058. package/dist/css/themes/custom/materialui/font/Roboto-BlackItalic.woff +0 -0
  1059. package/dist/css/themes/custom/materialui/font/Roboto-BlackItalic.woff2 +0 -0
  1060. package/dist/css/themes/custom/materialui/font/Roboto-Bold.woff +0 -0
  1061. package/dist/css/themes/custom/materialui/font/Roboto-Bold.woff2 +0 -0
  1062. package/dist/css/themes/custom/materialui/font/Roboto-BoldItalic.woff +0 -0
  1063. package/dist/css/themes/custom/materialui/font/Roboto-BoldItalic.woff2 +0 -0
  1064. package/dist/css/themes/custom/materialui/font/Roboto-Italic.woff +0 -0
  1065. package/dist/css/themes/custom/materialui/font/Roboto-Italic.woff2 +0 -0
  1066. package/dist/css/themes/custom/materialui/font/Roboto-Light.woff +0 -0
  1067. package/dist/css/themes/custom/materialui/font/Roboto-Light.woff2 +0 -0
  1068. package/dist/css/themes/custom/materialui/font/Roboto-LightItalic.woff +0 -0
  1069. package/dist/css/themes/custom/materialui/font/Roboto-LightItalic.woff2 +0 -0
  1070. package/dist/css/themes/custom/materialui/font/Roboto-Medium.woff +0 -0
  1071. package/dist/css/themes/custom/materialui/font/Roboto-Medium.woff2 +0 -0
  1072. package/dist/css/themes/custom/materialui/font/Roboto-MediumItalic.woff +0 -0
  1073. package/dist/css/themes/custom/materialui/font/Roboto-MediumItalic.woff2 +0 -0
  1074. package/dist/css/themes/custom/materialui/font/Roboto-Regular.woff +0 -0
  1075. package/dist/css/themes/custom/materialui/font/Roboto-Regular.woff2 +0 -0
  1076. package/dist/css/themes/custom/materialui/font/Roboto-Thin.woff +0 -0
  1077. package/dist/css/themes/custom/materialui/font/Roboto-Thin.woff2 +0 -0
  1078. package/dist/css/themes/custom/materialui/font/Roboto-ThinItalic.woff +0 -0
  1079. package/dist/css/themes/custom/materialui/font/Roboto-ThinItalic.woff2 +0 -0
  1080. package/dist/css/themes/custom/materialui/font/fonts.css +1 -0
  1081. package/dist/css/themes/custom/materialui/img/arrow-gray.svg +1 -0
  1082. package/dist/css/themes/custom/materialui/img/arrow-white.svg +1 -0
  1083. package/dist/css/themes/custom/nature/custom-nature.css +1 -0
  1084. package/dist/css/themes/custom/paper/button-paper.css +1 -0
  1085. package/dist/css/themes/custom/paper/custom-paper.css +1 -0
  1086. package/dist/css/themes/custom/readable/button-readable.css +1 -0
  1087. package/dist/css/themes/custom/readable/crn-ion-segment-readable.css +1 -0
  1088. package/dist/css/themes/custom/readable/custom-readable.css +1 -0
  1089. package/dist/css/themes/custom/sandstone/custom-sandstone.css +1 -0
  1090. package/dist/css/themes/custom/simplex/button-simplex.css +1 -0
  1091. package/dist/css/themes/custom/simplex/crn-ion-segment-simplex.css +1 -0
  1092. package/dist/css/themes/custom/simplex/custom-simplex.css +1 -0
  1093. package/dist/css/themes/custom/slate/button-slate.css +1 -0
  1094. package/dist/css/themes/custom/slate/crn-ion-segment-slate.css +1 -0
  1095. package/dist/css/themes/custom/slate/custom-slate.css +1 -0
  1096. package/dist/css/themes/custom/spacelab/bar-spacelab.css +1 -0
  1097. package/dist/css/themes/custom/spacelab/button-spacelab.css +1 -0
  1098. package/dist/css/themes/custom/spacelab/crn-ion-segment-spacelab.css +1 -0
  1099. package/dist/css/themes/custom/spacelab/custom-spacelab.css +1 -0
  1100. package/dist/css/themes/custom/superhero/custom-superhero.css +1 -0
  1101. package/dist/css/themes/custom/theme-general/button.css +1 -0
  1102. package/dist/css/themes/custom/theme-general/checkbox.css +1 -0
  1103. package/dist/css/themes/custom/theme-general/crn-ion-header-bar.css +1 -0
  1104. package/dist/css/themes/custom/theme-general/crn-ion-segment.css +1 -0
  1105. package/dist/css/themes/custom/theme-general/icon.css +1 -0
  1106. package/dist/css/themes/custom/theme-general/input.css +1 -0
  1107. package/dist/css/themes/custom/theme-general/login.css +1 -0
  1108. package/dist/css/themes/custom/theme-general/modal.css +1 -0
  1109. package/dist/css/themes/custom/theme-general/range.css +1 -0
  1110. package/dist/css/themes/custom/theme-general/reset-password.css +1 -0
  1111. package/dist/css/themes/custom/theme-general/signup.css +1 -0
  1112. package/dist/css/themes/custom/theme-general/theme-general.css +1 -0
  1113. package/dist/css/themes/custom/theme-general/toggle.css +1 -0
  1114. package/dist/css/themes/custom/united/custom-united.css +1 -0
  1115. package/dist/css/themes/custom/yeti/button-yeti.css +1 -0
  1116. package/dist/css/themes/custom/yeti/custom-yeti.css +1 -0
  1117. package/dist/css/themes/cyborg.min.css +1 -0
  1118. package/dist/css/themes/darkly.min.css +1 -0
  1119. package/dist/css/themes/dsgov.min.css +1 -0
  1120. package/dist/css/themes/flatly.min.css +1 -0
  1121. package/dist/css/themes/fuse.min.css +1 -0
  1122. package/dist/css/themes/journal.min.css +1 -0
  1123. package/dist/css/themes/krypton.min.css +1 -0
  1124. package/dist/css/themes/lumen.min.css +1 -0
  1125. package/dist/css/themes/material-round.min.css +1 -0
  1126. package/dist/css/themes/material.min.css +1 -0
  1127. package/dist/css/themes/materialui.min.css +1 -0
  1128. package/dist/css/themes/nature.min.css +1 -0
  1129. package/dist/css/themes/paper.min.css +1 -0
  1130. package/dist/css/themes/readable.min.css +1 -0
  1131. package/dist/css/themes/sandstone.min.css +1 -0
  1132. package/dist/css/themes/simplex.min.css +1 -0
  1133. package/dist/css/themes/slate.min.css +1 -0
  1134. package/dist/css/themes/spacelab.min.css +1 -0
  1135. package/dist/css/themes/superhero.min.css +1 -0
  1136. package/dist/css/themes/theme.editor.view.html +1 -0
  1137. package/dist/css/themes/united.min.css +1 -0
  1138. package/dist/css/themes/yeti.min.css +1 -0
  1139. package/dist/i18n/locale_en_us.json +132 -0
  1140. package/dist/i18n/locale_pt_br.json +132 -0
  1141. package/dist/js/LanguageSelectDirective.js +1 -0
  1142. package/dist/js/LocaleService.js +1 -0
  1143. package/dist/js/app.authentication.js +1 -0
  1144. package/dist/js/app.js +1 -0
  1145. package/dist/js/controllers.authentication.js +1 -0
  1146. package/dist/js/controllers.js +1 -0
  1147. package/dist/js/custom.controllers.js +1 -0
  1148. package/dist/js/customModules.js +1 -0
  1149. package/dist/js/customStateProvider.js +105 -0
  1150. package/dist/js/directives.js +1 -0
  1151. package/dist/js/filters.js +1 -0
  1152. package/dist/js/local-dateformat.directive.js +1 -0
  1153. package/dist/js/reports/parameters.controller.js +1 -0
  1154. package/dist/js/reports/reports.service.js +1 -0
  1155. package/dist/js/services.js +1 -0
  1156. package/dist/js/upload.service.js +1 -0
  1157. package/gulpfile.js +58 -0
  1158. package/i18n/locale_en_us.json +132 -0
  1159. package/i18n/locale_pt_br.json +132 -0
  1160. package/img/cron-icon/crn-QRCode.svg +38 -0
  1161. package/img/cron-icon/crn-anchor.svg +29 -0
  1162. package/img/cron-icon/crn-button-bar.svg +1 -0
  1163. package/img/cron-icon/crn-button.svg +24 -0
  1164. package/img/cron-icon/crn-card.svg +1 -0
  1165. package/img/cron-icon/crn-carousel.svg +26 -0
  1166. package/img/cron-icon/crn-chart.svg +19 -0
  1167. package/img/cron-icon/crn-checkbox.svg +15 -0
  1168. package/img/cron-icon/crn-component.svg +22 -0
  1169. package/img/cron-icon/crn-container.svg +1 -0
  1170. package/img/cron-icon/crn-cron-crud.svg +28 -0
  1171. package/img/cron-icon/crn-datasource.svg +27 -0
  1172. package/img/cron-icon/crn-dynamic-file.svg +1 -0
  1173. package/img/cron-icon/crn-dynamic-image.svg +25 -0
  1174. package/img/cron-icon/crn-enterprise-combobox.svg +24 -0
  1175. package/img/cron-icon/crn-enterprise-dynamic-combobox.svg +27 -0
  1176. package/img/cron-icon/crn-evaluation.svg +1 -0
  1177. package/img/cron-icon/crn-form.svg +24 -0
  1178. package/img/cron-icon/crn-frame.svg +30 -0
  1179. package/img/cron-icon/crn-header.svg +18 -0
  1180. package/img/cron-icon/crn-icon.svg +23 -0
  1181. package/img/cron-icon/crn-image.svg +20 -0
  1182. package/img/cron-icon/crn-infinite-scroll.svg +1 -0
  1183. package/img/cron-icon/crn-input-floating.svg +1 -0
  1184. package/img/cron-icon/crn-input-inline.svg +1 -0
  1185. package/img/cron-icon/crn-ion-footer-bar.svg +1 -0
  1186. package/img/cron-icon/crn-ion-list.svg +1 -0
  1187. package/img/cron-icon/crn-item-swipe.svg +15 -0
  1188. package/img/cron-icon/crn-kendo-chat.svg +1 -0
  1189. package/img/cron-icon/crn-label.svg +1 -0
  1190. package/img/cron-icon/crn-list-avatar.svg +1 -0
  1191. package/img/cron-icon/crn-list-icon.svg +1 -0
  1192. package/img/cron-icon/crn-list-item-avatar.svg +1 -0
  1193. package/img/cron-icon/crn-list-item-icon.svg +1 -0
  1194. package/img/cron-icon/crn-list-item-thumbnail.svg +1 -0
  1195. package/img/cron-icon/crn-list-item.svg +1 -0
  1196. package/img/cron-icon/crn-list-swipe.svg +17 -0
  1197. package/img/cron-icon/crn-list-thumbnail.svg +17 -0
  1198. package/img/cron-icon/crn-list.svg +16 -0
  1199. package/img/cron-icon/crn-map.svg +1 -0
  1200. package/img/cron-icon/crn-multiselect.svg +1 -0
  1201. package/img/cron-icon/crn-paragraph.svg +1 -0
  1202. package/img/cron-icon/crn-plugin.svg +44 -0
  1203. package/img/cron-icon/crn-radio.svg +21 -0
  1204. package/img/cron-icon/crn-radiogroup.svg +25 -0
  1205. package/img/cron-icon/crn-range.svg +1 -0
  1206. package/img/cron-icon/crn-rating.svg +20 -0
  1207. package/img/cron-icon/crn-select.svg +1 -0
  1208. package/img/cron-icon/crn-signature-pad.svg +27 -0
  1209. package/img/cron-icon/crn-spacer.svg +1 -0
  1210. package/img/cron-icon/crn-tabs-icon-only.svg +24 -0
  1211. package/img/cron-icon/crn-tabs.svg +17 -0
  1212. package/img/cron-icon/crn-text-component.svg +22 -0
  1213. package/img/cron-icon/crn-textarea.svg +22 -0
  1214. package/img/cron-icon/crn-textinput.svg +23 -0
  1215. package/img/cron-icon/crn-textinputbutton.svg +33 -0
  1216. package/img/cron-icon/crn-textinputicon.svg +29 -0
  1217. package/img/cron-icon/crn-toggle.svg +1 -0
  1218. package/img/cron-icon/crn-video.svg +1 -0
  1219. package/img/logo.svg +1 -0
  1220. package/img/placehold-100x100.png +0 -0
  1221. package/img/placehold-300x200.png +0 -0
  1222. package/img/placehold-900x500.png +0 -0
  1223. package/img/qr-code.png +0 -0
  1224. package/img/svg-charts.svg +1 -0
  1225. package/img/user.svg +18 -0
  1226. package/img/web.png +0 -0
  1227. package/js/LanguageSelectDirective.js +30 -0
  1228. package/js/LocaleService.js +59 -0
  1229. package/js/app.authentication.js +620 -0
  1230. package/js/app.js +349 -0
  1231. package/js/controllers.authentication.js +717 -0
  1232. package/js/controllers.js +90 -0
  1233. package/js/custom.controllers.js +11 -0
  1234. package/js/customModules.js +1 -0
  1235. package/js/customStateProvider.js +105 -0
  1236. package/js/directives.js +2955 -0
  1237. package/js/filters.js +47 -0
  1238. package/js/local-dateformat.directive.js +15 -0
  1239. package/js/reports/parameters.controller.js +86 -0
  1240. package/js/reports/reports.service.js +446 -0
  1241. package/js/services.js +5 -0
  1242. package/js/upload.service.js +168 -0
  1243. package/lib/kendo/kendo.all.min.js +125 -0
  1244. package/lib/kendo/kendo.default-v2.min.css +10 -0
  1245. package/lib/notification-mobile.js +57 -0
  1246. package/package.json +48 -0
  1247. package/postupdate.json +539 -0
@@ -0,0 +1,2955 @@
1
+ window.addEventListener('message', function(event) {
2
+ if (event.data == "reload") {
3
+ window.location.reload();
4
+ }
5
+ else if (event.data == "reload(true)") {
6
+ window.location.reload(true);
7
+ }
8
+ });
9
+
10
+ (function($app) {
11
+
12
+ app.common = {
13
+ generateId: function() {
14
+ var numbersOnly = '0123456789';
15
+ var result = Math.floor((1 + Math.random()) * 0x10000)
16
+ .toString(16)
17
+ .substring(1);
18
+ if (numbersOnly.indexOf(result.substr(0,1)) > -1)
19
+ return this.generateId();
20
+ return result;
21
+ }
22
+ };
23
+
24
+ var isoDate = /(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/;
25
+
26
+ /**
27
+ * Fun��o que retorna o formato que ser� utilizado no componente
28
+ * capturando o valor do atributo format do elemento, para mais formatos
29
+ * consulte os formatos permitidos em http://momentjs.com/docs/#/parsing/string-format/
30
+ *
31
+ */
32
+ var patternFormat = function(element) {
33
+ if (element) {
34
+ return $(element).attr('format') || 'DD/MM/YYYY';
35
+ }
36
+ return 'DD/MM/YYYY';
37
+ };
38
+
39
+ var parsePermission = function(perm) {
40
+ var result = {
41
+ visible: {
42
+ public: true
43
+ },
44
+ enabled: {
45
+ public: true
46
+ },
47
+ render: {
48
+ public: true
49
+ },
50
+ notvisible: {
51
+ public: false
52
+ },
53
+ notenabled: {
54
+ public: false
55
+ },
56
+ notrender: {
57
+ public: false
58
+ }
59
+ }
60
+
61
+ if (perm) {
62
+ var perms = perm.toLowerCase().trim().split(",");
63
+ for (var i=0;i<perms.length;i++) {
64
+ var p = perms[i].trim();
65
+ if (p) {
66
+ var pair = p.split(":");
67
+ if (pair.length == 2) {
68
+ var key = pair[0].trim();
69
+ var value = pair[1].trim();
70
+ if (value) {
71
+ var values = value.split(";");
72
+ var json = {};
73
+ for (var j=0;j<values.length;j++) {
74
+ var v = values[j].trim();
75
+ if (v) {
76
+ json[v] = true;
77
+ }
78
+ }
79
+ result[key] = json;
80
+ }
81
+ }
82
+ }
83
+ }
84
+ }
85
+ return result;
86
+ }
87
+
88
+ app.directive('updateLanguage', function ($rootScope) {
89
+ return {
90
+ link: function (scope, element) {
91
+ let listener = function (event, translationResp) {
92
+ let defaultLang = "en";
93
+ let currentLang = translationResp.language ? translationResp.language.split('_')[0] : null;
94
+ element.attr("lang", currentLang || defaultLang);
95
+ };
96
+ $rootScope.$on('$translateChangeSuccess', listener);
97
+ }
98
+ };
99
+ });
100
+
101
+ app.directive('asDate', maskDirectiveAsDate);
102
+
103
+ app.directive('input', transformText);
104
+
105
+ app.directive('textarea', transformText)
106
+
107
+ .directive('ngDestroy', function() {
108
+ return {
109
+ restrict: 'A',
110
+ link: function(scope, element, attrs, ctrl) {
111
+ element.on('$destroy', function() {
112
+ if (attrs.ngDestroy && attrs.ngDestroy.length > 0)
113
+ if (attrs.ngDestroy.indexOf('app.') > -1 || attrs.ngDestroy.indexOf('blockly.') > -1)
114
+ scope.$eval(attrs.ngDestroy);
115
+ else
116
+ eval(attrs.ngDestroy);
117
+ });
118
+ }
119
+ }
120
+ })
121
+
122
+ .filter('mask',function($translate) {
123
+ return function(value, maskValue, type) {
124
+ maskValue = parseMaskType(maskValue, $translate);
125
+ if (!maskValue)
126
+ return value;
127
+
128
+
129
+ var useUTC;
130
+
131
+ if (type !== undefined) {
132
+ useUTC = type == 'date' || type == 'datetime' || type == 'time';
133
+
134
+ if (!window.fixedTimeZone) {
135
+ useUTC = false;
136
+ }
137
+ } else {
138
+ useUTC = window.fixedTimeZone;
139
+ }
140
+
141
+ if (maskValue.indexOf(";local") > 0) {
142
+ useUTC = false;
143
+ }
144
+
145
+ maskValue = maskValue.replace(';1', '').replace(';0', '').replace(';local', '').trim();
146
+ if ((typeof value == "string" && value.match(isoDate)) || value instanceof Date) {
147
+ if (useUTC) {
148
+ return moment(value).utcOffset(window.timeZoneOffset).format(maskValue);
149
+ } else {
150
+ return moment(value).format(maskValue);
151
+ }
152
+ } else if (typeof value == 'number') {
153
+ return format(maskValue, value);
154
+ } else if (value != undefined && value != null && value != "" && maskValue != '') {
155
+ var input = $("<input type=\"text\">");
156
+ input.mask(maskValue);
157
+ return input.masked(value);
158
+ } else {
159
+ return value;
160
+ }
161
+ };
162
+ })
163
+
164
+ .directive('screenParams', [function() {
165
+ 'use strict';
166
+ return {
167
+ link: function(scope, elem, attrs, ctrl) {
168
+ var screenParams = eval(attrs.screenParams);
169
+ if (screenParams && screenParams.length) {
170
+ screenParams.forEach(function(screenParam) {
171
+ if (scope.params && !scope.params[screenParam.key])
172
+ scope.params[screenParam.key] = screenParam.value || '';
173
+ });
174
+ }
175
+ }
176
+ }
177
+ }])
178
+
179
+ .directive('screenVariables', [function() {
180
+ 'use strict';
181
+ return {
182
+ link: async function(scope, elem, attrs, ctrl) {
183
+ let screenVariables = eval(attrs.screenVariables);
184
+ if (screenVariables && screenVariables.length) {
185
+ screenVariables.forEach(async (screenVariables) => {
186
+ if (scope.vars && !scope.vars[screenVariables.key]) {
187
+ let value = screenVariables.value || '';
188
+ if (screenVariables.type === 'blockly') {
189
+ value = await scope.$eval(value.replace('.run(','.toPromise().run('));
190
+ }
191
+ else if (screenVariables.type === 'expression') {
192
+ if (value.startsWith('params')) {
193
+ value = scope.params[value.replace('params.','')];
194
+ }
195
+ else if (value.startsWith('vars')) {
196
+ value = scope.vars[value.replace('vars.','')];
197
+ }
198
+ else {
199
+ value = await scope.$eval(value);
200
+ }
201
+ }
202
+ scope.vars[screenVariables.key] = value;
203
+ }
204
+ });
205
+ }
206
+ }
207
+ }
208
+ }])
209
+
210
+ .directive('mask', maskDirectiveMask)
211
+
212
+ .directive('dynamicImage', function($compile, $translate) {
213
+ return {
214
+ restrict: 'A',
215
+ scope: true,
216
+ require: 'ngModel',
217
+ link: function(scope, element, attr) {
218
+ let templateDyn =
219
+ '<div ngf-drop="" ngf-drag-over-class="dragover" class="dynamicImage" >\
220
+ <img role="img" alt="$altText$" style="width: 100%;" ng-if="$ngModel$" data-ng-src="{{$ngModel$.startsWith(\'http\') || ($ngModel$.startsWith(\'/\') && $ngModel$.length < 1000)? $ngModel$ : \'data:image/png;base64,\' + $ngModel$}}">\
221
+ <div class="btn action-button-border" ng-if="!$ngModel$" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.setFile(\'$ngModel$\', $file)" ngf-pattern="\'image/*\'" ngf-max-size="$maxFileSize$">\
222
+ $userHtml$\
223
+ </div>\
224
+ <div aria-label="$closeAriaText$" class="remove-image-button button button-assertive" ng-if="$ngModel$" ng-click="$ngModel$=null">\
225
+ <span class="icon ion-android-close"></span>\
226
+ </div>\
227
+ <div aria-label="$videocamAriaText$" class="button button-default buttomImage" ng-if="!$ngModel$" ng-click="cronapi.internal.startCamera(\'$ngModel$\',\'$quality$\',\'$allowEdit$\',\'$targetWidth$\',\'$targetHeight$\')">\
228
+ <span class="icon ion-ios-videocam"></span>\
229
+ </div>\
230
+ </div>';
231
+
232
+ const imageQuality = attr.quality || $(element).closest('[data-component="crn-dynamic-image"]').attr('quality') || '60';
233
+ const attributes = {
234
+ ngModel: attr.ngModel,
235
+ required: (attr.ngRequired && attr.ngRequired == "true")?"required":"",
236
+ content: element.html(),
237
+ altText: attr.alt ? attr.alt : $translate.instant('Users.view.Picture'),
238
+ closeAriaText: $translate.instant('Home.view.Close'),
239
+ videocamAriaText: $translate.instant('OpenCamera'),
240
+ maxFileSize: attr.maxFileSize ? attr.maxFileSize : "",
241
+ quality: imageQuality,
242
+ allowEdit: attr.allowEdit ? attr.allowEdit : "false",
243
+ targetWidth: attr.targetWidth ? attr.targetWidth : "640",
244
+ targetHeight: attr.targetHeight ? attr.targetHeight : "480"
245
+ };
246
+
247
+ templateDyn = $(templateDyn
248
+ .split('$ngModel$').join(attributes.ngModel)
249
+ .split('$required$').join(attributes.required)
250
+ .split('$userHtml$').join(attributes.content)
251
+ .split('$maxFileSize$').join(attributes.maxFileSize)
252
+ .split('$altText$').join(attributes.altText)
253
+ .split('$closeAriaText$').join(attributes.closeAriaText)
254
+ .split('$videocamAriaText$').join(attributes.videocamAriaText)
255
+ .split('$quality$').join(attributes.quality)
256
+ .split('$allowEdit$').join(attributes.allowEdit)
257
+ .split('$targetWidth$').join(attributes.targetWidth)
258
+ .split('$targetHeight$').join(attributes.targetHeight)
259
+ );
260
+
261
+ $(element).html(templateDyn);
262
+ $compile(templateDyn)(element.scope());
263
+ }
264
+ }
265
+ })
266
+ .directive('dynamicFile', function($compile, $translate) {
267
+ var template = '';
268
+ return {
269
+ restrict: 'A',
270
+ scope: true,
271
+ require: 'ngModel',
272
+ link: function(scope, element, attr) {
273
+ var s = scope;
274
+ var required = (attr.ngRequired && attr.ngRequired == "true"?"required":"");
275
+ var closeAriaText = $translate.instant('Home.view.Close');
276
+ var splitedNgModel = attr.ngModel.split('.');
277
+ var datasource = splitedNgModel[0];
278
+ var field = splitedNgModel[splitedNgModel.length-1];
279
+ var number = Math.floor((Math.random() * 1000) + 20);
280
+ var content = element.html();
281
+
282
+ var maxFileSize = "";
283
+ var acceptFile = attr.acceptFile || "'*.*'";
284
+ if (attr.maxFileSize)
285
+ maxFileSize = attr.maxFileSize;
286
+
287
+ var fileInfo = attr.fileInfo ? `'${attr.fileInfo}'`: 'undefined';
288
+
289
+ var templateDyn = '\
290
+ <div ng-show="!$ngModel$" ngf-drop="" ngf-drag-over-class="dragover">\
291
+ <div class="btn action-button-border" ngf-drop="" ngf-select="" ngf-change="cronapi.internal.uploadFile(\'$ngModel$\', $file, \'uploadprogress$number$\', $fileInfo$)" ngf-max-size="$maxFileSize$" ngf-pattern="$acceptPattern$" ngf-accept="$acceptFile$">\
292
+ $userHtml$\
293
+ </div>\
294
+ <div class="progress" data-type="bootstrapProgress" id="uploadprogress$number$" style="display:none">\
295
+ <div class="progress-bar" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100" style="width:0%">\
296
+ <span class="sr-only"></span>\
297
+ </div>\
298
+ </div>\
299
+ </div> \
300
+ <div ng-show="$ngModel$" class="upload-image-component-attribute"> \
301
+ <div aria-label="$closeAriaText$" class="button button-assertive" style="float:right;" ng-if="$ngModel$" ng-click="$ngModel$=null"> \
302
+ <span role="img" alt="$closeAriaText$" class="icon ion-android-close"></span> \
303
+ </div> \
304
+ <div> \
305
+ <div ng-bind-html="cronapi.internal.generatePreviewDescriptionByte($ngModel$, $fileInfo$)"></div> \
306
+ <div aria-label="Download" class="button button-positive" ng-click="cronapi.internal.downloadFileEntityMobile($datasource$,\'$field$\', undefined, $fileInfo$)">$lblDownload$</div> \
307
+ </div> \
308
+ </div> \
309
+ ';
310
+ templateDyn = $(templateDyn
311
+ .split('$ngModel$').join(attr.ngModel)
312
+ .split('$datasource$').join(datasource)
313
+ .split('$field$').join(field)
314
+ .split('$number$').join(number)
315
+ .split('$required$').join(required)
316
+ .split('$userHtml$').join(content)
317
+ .split('$maxFileSize$').join(maxFileSize)
318
+ .split('$closeAriaText$').join(closeAriaText)
319
+ .split('$lblDownload$').join($translate.instant('download'))
320
+ .split('$fileInfo$').join(fileInfo)
321
+ .split('$acceptPattern$').join(acceptFile)
322
+ .split('$acceptFile$').join(acceptFile)
323
+ );
324
+
325
+ $(element).html(templateDyn);
326
+ $compile(templateDyn)(element.scope());
327
+ }
328
+ }
329
+ })
330
+ .directive('pwCheck', [function() {
331
+ 'use strict';
332
+ return {
333
+ require: 'ngModel',
334
+ link: function(scope, elem, attrs, ctrl) {
335
+ var firstPassword = '#' + attrs.pwCheck;
336
+ elem.add(firstPassword).on('keyup', function() {
337
+ scope.$apply(function() {
338
+ var v = elem.val() === $(firstPassword).val();
339
+ ctrl.$setValidity('pwmatch', v);
340
+ });
341
+ });
342
+ }
343
+ }
344
+ }])
345
+
346
+ .directive('qr', ['$window', function($window){
347
+ return {
348
+ restrict: 'EA',
349
+ require: '^ngModel',
350
+ template: '<canvas ng-hide="image"></canvas><img alt="qr-code" ng-if="image" ng-src="{{canvasImage}}"/>',
351
+ link: function postlink(scope, element, attrs, ngModel){
352
+ if (scope.size === undefined && attrs.size) {
353
+ scope.text = attrs.size;
354
+ }
355
+ var getTypeNumeber = function(){
356
+ return scope.typeNumber || 0;
357
+ };
358
+ var getCorrection = function(){
359
+ var levels = {
360
+ 'L': 1,
361
+ 'M': 0,
362
+ 'Q': 3,
363
+ 'H': 2
364
+ };
365
+ var correctionLevel = scope.correctionLevel || 0;
366
+ return levels[correctionLevel] || 0;
367
+ };
368
+ var getText = function(){
369
+ return ngModel.$modelValue || "";
370
+ };
371
+ var getSize = function(){
372
+ return scope.size || $(element).outerWidth();
373
+ };
374
+ var isNUMBER = function(text){
375
+ var ALLOWEDCHARS = /^[0-9]*$/;
376
+ return ALLOWEDCHARS.test(text);
377
+ };
378
+ var isALPHA_NUM = function(text){
379
+ var ALLOWEDCHARS = /^[0-9A-Z $%*+\-./:]*$/;
380
+ return ALLOWEDCHARS.test(text);
381
+ };
382
+ var is8bit = function(text){
383
+ for (var i = 0; i < text.length; i++) {
384
+ var code = text.charCodeAt(i);
385
+ if (code > 255) {
386
+ return false;
387
+ }
388
+ }
389
+ return true;
390
+ };
391
+ var checkInputMode = function(inputMode, text){
392
+ if (inputMode === 'NUMBER' && !isNUMBER(text)) {
393
+ throw new Error('The `NUMBER` input mode is invalid for text.');
394
+ }
395
+ else if (inputMode === 'ALPHA_NUM' && !isALPHA_NUM(text)) {
396
+ throw new Error('The `ALPHA_NUM` input mode is invalid for text.');
397
+ }
398
+ else if (inputMode === '8bit' && !is8bit(text)) {
399
+ throw new Error('The `8bit` input mode is invalid for text.');
400
+ }
401
+ else if (!is8bit(text)) {
402
+ throw new Error('Input mode is invalid for text.');
403
+ }
404
+ return true;
405
+ };
406
+ var getInputMode = function(text){
407
+ var inputMode = scope.inputMode;
408
+ inputMode = inputMode || (isNUMBER(text) ? 'NUMBER' : undefined);
409
+ inputMode = inputMode || (isALPHA_NUM(text) ? 'ALPHA_NUM' : undefined);
410
+ inputMode = inputMode || (is8bit(text) ? '8bit' : '');
411
+ return checkInputMode(inputMode, text) ? inputMode : '';
412
+ };
413
+ var canvas = element.find('canvas')[0];
414
+ var canvas2D = !!$window.CanvasRenderingContext2D;
415
+ scope.TYPE_NUMBER = getTypeNumeber();
416
+ scope.TEXT = getText();
417
+ scope.CORRECTION = getCorrection();
418
+ scope.SIZE = getSize();
419
+ scope.INPUT_MODE = getInputMode(scope.TEXT);
420
+ scope.canvasImage = '';
421
+ var draw = function(context, qr, modules, tile){
422
+ for (var row = 0; row < modules; row++) {
423
+ for (var col = 0; col < modules; col++) {
424
+ var w = (Math.ceil((col + 1) * tile) - Math.floor(col * tile)),
425
+ h = (Math.ceil((row + 1) * tile) - Math.floor(row * tile));
426
+ context.fillStyle = qr.isDark(row, col) ? '#000' : '#fff';
427
+ context.fillRect(Math.round(col * tile), Math.round(row * tile), w, h);
428
+ }
429
+ }
430
+ };
431
+ var render = function(canvas, value, typeNumber, correction, size, inputMode){
432
+ var trim = /^\s+|\s+$/g;
433
+ var text = value.replace(trim, '');
434
+ var qr = new QRCode(typeNumber, correction, inputMode);
435
+ qr.addData(text);
436
+ qr.make();
437
+ var context = canvas.getContext('2d');
438
+ var modules = qr.getModuleCount();
439
+ var tile = size / modules;
440
+ canvas.width = canvas.height = size;
441
+ if (canvas2D) {
442
+ draw(context, qr, modules, tile);
443
+ scope.canvasImage = canvas.toDataURL() || '';
444
+ }
445
+ };
446
+
447
+ scope.$watch(function(){return ngModel.$modelValue}, function(value, old){
448
+ if (value !== old || value !== scope.TEXT) {
449
+ scope.text = ngModel.$modelValue;
450
+ scope.TEXT = getText();
451
+ scope.INPUT_MODE = getInputMode(scope.TEXT);
452
+ render(canvas, scope.TEXT, scope.TYPE_NUMBER, scope.CORRECTION, scope.SIZE, scope.INPUT_MODE);
453
+ }
454
+ });
455
+ render(canvas, scope.TEXT, scope.TYPE_NUMBER, scope.CORRECTION, scope.SIZE, scope.INPUT_MODE);
456
+ }};
457
+ }])
458
+
459
+ /**
460
+ * Valida��o de campos CPF e CNPJ,
461
+ * para utilizar essa diretiva, adicione o atributo valid com o valor
462
+ * do tipo da valida��o (cpf ou cnpj). Exemplo <input type="text" valid="cpf">
463
+ */
464
+ .directive('valid', function() {
465
+ return {
466
+ require: '^ngModel',
467
+ restrict: 'A',
468
+ link: function(scope, element, attrs, ngModel) {
469
+ var validator = {
470
+ 'cpf': CPF,
471
+ 'cnpj': CNPJ
472
+ };
473
+
474
+ ngModel.$validators[attrs.valid] = function(modelValue, viewValue) {
475
+ var value = modelValue || viewValue;
476
+ var fieldValid = validator[attrs.valid].isValid(value);
477
+ if (!fieldValid) {
478
+ element.scope().$applyAsync(function(){ element[0].setCustomValidity(element[0].dataset['errorMessage']); }) ;
479
+ } else {
480
+ element[0].setCustomValidity("");
481
+ }
482
+ return (fieldValid || !value);
483
+ };
484
+ }
485
+ }
486
+ })
487
+
488
+ .directive('cronappSecurity', function($rootScope) {
489
+ return {
490
+ restrict: 'A',
491
+ priority: Number.MIN_SAFE_INTEGER,
492
+ link: function(scope, element, attrs) {
493
+ if (attrs.cronappSecurity == '' || attrs.cronappSecurity == undefined || attrs.cronappSecurity == null) {
494
+ return;
495
+ }
496
+ var roles = [];
497
+ var user = JSON.parse(localStorage.getItem('_u'))
498
+ if (user && user.roles) {
499
+ roles = user.roles.toLowerCase().split(",");
500
+ }
501
+
502
+ var perms = parsePermission(attrs.cronappSecurity);
503
+ var show = false;
504
+ var enabled = false;
505
+ var render = false;
506
+ for (var i=0;i<roles.length;i++) {
507
+ var role = roles[i].trim();
508
+ if (role) {
509
+ if (perms.visible[role]) {
510
+ show = true;
511
+ }
512
+ if (perms.enabled[role]) {
513
+ enabled = true;
514
+ }
515
+ if (perms.render[role]) {
516
+ render = true;
517
+ }
518
+ }
519
+ }
520
+
521
+ for (var i=0;i<roles.length;i++) {
522
+ var role = roles[i].trim();
523
+ if (role) {
524
+ if (perms.notvisible[role]) {
525
+ show = false;
526
+ }
527
+ if (perms.notenabled[role]) {
528
+ enabled = false;
529
+ }
530
+ if (perms.notrender[role]) {
531
+ render = false;
532
+ }
533
+ }
534
+ }
535
+
536
+ let $element = $(element);
537
+ let applyPermission = () => {
538
+ if (!show) {
539
+ $element.hide();
540
+ }
541
+ if (!enabled) {
542
+ $element.find('*').addBack().attr('disabled', true).off('click').on('click', e => e.preventDefault());
543
+ }
544
+ if (!render) {
545
+ $element.remove();
546
+ }
547
+ };
548
+
549
+ let wait = setInterval(()=>{
550
+ if ($rootScope.$$phase !== '$apply' && $rootScope.$$phase !== '$digest') {
551
+ applyPermission();
552
+ clearInterval(wait);
553
+ }
554
+ });
555
+
556
+ }
557
+ }
558
+ })
559
+
560
+ .directive('cronappStars', [function() {
561
+ 'use strict';
562
+ return {
563
+ restrict: 'A',
564
+ require: 'ngModel',
565
+ link: function(scope, elem, attrs, ngModelCtrl) {
566
+
567
+ var $elem = $(elem);
568
+ var $star = $('<i style="font-size: 200%" class="component-holder ion ion-android-star-outline" style="" xattr-size="" data-component="crn-icon"></i>' );
569
+
570
+ $elem.html("");
571
+ var stars = [];
572
+
573
+ for (var i=1;i<=5;i++) {
574
+ var clonned = $star.clone();
575
+ $elem.append(clonned);
576
+
577
+ clonned.attr("idx", i);
578
+ clonned.click(function() {
579
+ scope.$apply(function() {
580
+ ngModelCtrl.$viewValue = parseInt($(this).attr("idx")); //set new view value
581
+ ngModelCtrl.$commitViewValue();
582
+
583
+ }.bind(this));
584
+ });
585
+
586
+ stars.push(clonned);
587
+ }
588
+
589
+ function changeStars(value) {
590
+ for (var i=1;i<=5;i++) {
591
+ stars[i-1].removeClass('ion-android-star-outline');
592
+ stars[i-1].removeClass('ion-android-star');
593
+ if (i <= value) {
594
+ stars[i-1].addClass('ion-android-star');
595
+ } else {
596
+ stars[i-1].addClass('ion-android-star-outline');
597
+ }
598
+ }
599
+
600
+ return value;
601
+ }
602
+
603
+ ngModelCtrl.$parsers.push(changeStars);
604
+ ngModelCtrl.$formatters.push(changeStars);
605
+
606
+ }
607
+ }
608
+ }])
609
+
610
+ .directive('cronappRating', [function() {
611
+ 'use strict';
612
+ return {
613
+ restrict: 'E',
614
+ require: 'ngModel',
615
+ link: function(scope, elem, attrs, ngModelCtrl) {
616
+
617
+ attrs.theme = $(elem).find('i').attr('xattr-theme');
618
+ attrs.iconOn = $(elem).find('i').attr('class');
619
+ attrs.iconSize = $(elem).find('i').attr('icon-size');
620
+
621
+ var $elem = $(elem);
622
+ var starArray = []
623
+
624
+ if(attrs.xattrDefaultValue){
625
+ ngModelCtrl.$viewValue = 0; //set new view value
626
+ ngModelCtrl.$commitViewValue();
627
+ }
628
+
629
+ for (var i=1;i<=5;i++) {
630
+ starArray.push($(elem).find('i').get(i - 1));
631
+ $(starArray[i-1]).addClass(attrs.iconOff || "ion ion-android-star-outline");
632
+ }
633
+
634
+ $elem.html("");
635
+ var stars = [];
636
+
637
+ for (var i=1;i<=5;i++) {
638
+ var clonned = $(starArray[i-1]).clone();
639
+ $elem.append(clonned);
640
+
641
+ clonned.attr("idx", i);
642
+ clonned.click(function() {
643
+ scope.$apply(function() {
644
+ let idx = parseInt($(this).attr("idx"));
645
+ //set new view value or reset the value
646
+ ngModelCtrl.$viewValue = ( ngModelCtrl.$viewValue !== idx ) ? idx : 0;
647
+ ngModelCtrl.$commitViewValue();
648
+
649
+ }.bind(this));
650
+ });
651
+
652
+ stars.push(clonned);
653
+ }
654
+
655
+ function changeStars(value) {
656
+ for (var i=1;i<=5;i++) {
657
+ stars[i-1].removeClass(attrs.iconOff || "ion ion-android-star-outline");
658
+ stars[i-1].removeClass(attrs.iconOn);
659
+ stars[i-1].removeClass(attrs.theme);
660
+ if (i <= value) {
661
+ stars[i-1].addClass(attrs.iconOn);
662
+ stars[i-1].addClass(attrs.theme);
663
+ } else {
664
+ stars[i-1].addClass(attrs.iconOff || "ion ion-android-star-outline");
665
+ stars[i-1].addClass(attrs.theme);
666
+ stars[i-1].addClass(attrs.iconSize);
667
+ }
668
+ }
669
+ return value;
670
+ }
671
+ ngModelCtrl.$parsers.push(changeStars);
672
+ ngModelCtrl.$formatters.push(changeStars);
673
+
674
+ }
675
+ }
676
+ }])
677
+
678
+ .directive('ngInitialValue', function($parse) {
679
+ return {
680
+ restrict: 'A',
681
+ require: 'ngModel',
682
+ link: function(scope, element, attrs, ngModelCtrl) {
683
+ if (attrs.ngInitialValue) {
684
+ var modelGetter = $parse(attrs['ngModel']);
685
+ var modelSetter = modelGetter.assign;
686
+ var evaluated;
687
+
688
+ try {
689
+ evaluated = scope.$eval(attrs.ngInitialValue);
690
+ } catch (e) {
691
+ evaluated = attrs.ngInitialValue;
692
+ }
693
+
694
+ // verifica se é um checkbox para transformar para um valor booleano
695
+ if (element[0].type == 'checkbox' && evaluated) {
696
+ evaluated = ('' + evaluated).toLowerCase() == 'true';
697
+ }
698
+
699
+ modelSetter(scope, evaluated);
700
+ }
701
+ }
702
+ }
703
+ })
704
+
705
+ .directive('crnAllowNullValues', [function () {
706
+ return {
707
+ restrict: 'A',
708
+ require: '?ngModel',
709
+ link: function (scope, el, attrs, ctrl) {
710
+ ctrl.$formatters = [];
711
+ ctrl.$parsers = [];
712
+ let falseValue = attrs.ngFalseValue ? attrs.ngFalseValue.split("'").join("") : false;
713
+ let trueValue = attrs.ngTrueValue ? attrs.ngTrueValue.split("'").join("") : true;
714
+ let isAllowNullValues = (value) => {
715
+ return value === 'true' || value === undefined
716
+ || value === null || value.length == 0;
717
+ };
718
+ if (isAllowNullValues(attrs.crnAllowNullValues)) {
719
+ ctrl.$render = function () {
720
+ let viewValue = ctrl.$viewValue;
721
+ el.data('checked', viewValue);
722
+ switch (viewValue) {
723
+ case true:
724
+ case trueValue:
725
+ el.prop('indeterminate', false);
726
+ setTimeout(() => el.prop('checked', true));
727
+ viewValue = trueValue;
728
+ break;
729
+ case false:
730
+ case falseValue:
731
+ el.prop('indeterminate', false);
732
+ setTimeout(() => el.prop('checked', false));
733
+ viewValue = falseValue;
734
+ break;
735
+ default:
736
+ viewValue = null;
737
+ el.prop('indeterminate', true);
738
+ }
739
+ setTimeout(() => ctrl.$setViewValue(viewValue));
740
+ };
741
+ } else {
742
+ ctrl.$render = function () {
743
+ let viewValue = ctrl.$viewValue;
744
+ if (ctrl.$viewValue === undefined || ctrl.$viewValue === null) {
745
+ ctrl.$setViewValue(false);
746
+ viewValue = false;
747
+ }
748
+ if (viewValue === falseValue) {
749
+ let modelForEval = attrs.ngFalseValue ? `${el.attr('ng-model')}=${attrs.ngFalseValue}` : `${el.attr('ng-model')}=${falseValue}`;
750
+ scope.$eval(modelForEval);
751
+ }
752
+ el.data('checked', viewValue);
753
+ switch (viewValue) {
754
+ case true:
755
+ case trueValue:
756
+ el.prop('indeterminate', false);
757
+ setTimeout(() => el.prop('checked', true));
758
+ viewValue = trueValue;
759
+ break;
760
+ default:
761
+ el.prop('indeterminate', false);
762
+ setTimeout(() => el.prop('checked', false));
763
+ viewValue = falseValue;
764
+ break;
765
+ }
766
+ setTimeout(() => ctrl.$setViewValue(viewValue));
767
+ };
768
+ }
769
+ el.bind('click', function (e) {
770
+ let checked;
771
+ switch (el.data('checked')) {
772
+ case false:
773
+ case falseValue:
774
+ checked = attrs.ngTrueValue ? trueValue : true;
775
+ break;
776
+ default:
777
+ checked = attrs.ngFalseValue ? falseValue : false;
778
+ }
779
+ ctrl.$setViewValue(checked);
780
+ scope.$apply(ctrl.$render);
781
+ e.preventDefault();
782
+ });
783
+ }
784
+ };
785
+ }])
786
+
787
+ .directive('cronappFilter', function($compile) {
788
+ var setFilterInButton = function($element, bindedFilter, operator) {
789
+ var fieldset = $element.closest('div');
790
+ if (!fieldset)
791
+ return;
792
+ var button = fieldset.find('button[cronapp-filter]');
793
+ if (!button)
794
+ return;
795
+
796
+ var filters = button.data('filters');
797
+ if (!filters)
798
+ filters = [];
799
+
800
+ var index = -1;
801
+ var ngModel = $element.attr('ng-model');
802
+ $(filters).each(function(idx) {
803
+ if (this.ngModel == ngModel)
804
+ index = idx;
805
+ });
806
+
807
+ if (index > -1)
808
+ filters.splice(index, 1);
809
+
810
+ if (bindedFilter.length > 0) {
811
+ var bindedFilterJson = {
812
+ "ngModel" : ngModel,
813
+ "bindedFilter" : bindedFilter
814
+ };
815
+ filters.push(bindedFilterJson);
816
+ }
817
+ button.data('filters', filters);
818
+ }
819
+
820
+ var makeAutoPostSearch = function($element, bindedFilter, datasource, attrs) {
821
+ var fieldset = $element.closest('div');
822
+ if (fieldset && fieldset.length > 0) {
823
+ var button = fieldset.find('button[cronapp-filter]');
824
+ if (button && button.length > 0) {
825
+ var filters = button.data('filters');
826
+ if (filters && filters.length > 0) {
827
+ bindedFilter = '';
828
+ $(filters).each(function() {
829
+ bindedFilter += this.bindedFilter+";";
830
+ });
831
+ }
832
+ }
833
+ }
834
+ datasource.search(bindedFilter, (attrs.cronappFilterCaseinsensitive=="true"));
835
+ }
836
+
837
+ var inputBehavior = function(scope, element, attrs, ngModelCtrl, $element, typeElement, operator, autopost) {
838
+ var filterTemplate = '';
839
+ var filtersSplited = attrs.cronappFilter.split(';');
840
+ var datasource;
841
+ if (attrs.crnDatasource) {
842
+ datasource = eval(attrs.crnDatasource);
843
+ } else {
844
+ var fieldset = $element.closest('div');
845
+ if (!fieldset)
846
+ return;
847
+ var button = fieldset.find('button[cronapp-filter]');
848
+ if (!button)
849
+ return;
850
+
851
+ if (!button.attr('crn-datasource')) {
852
+ return;
853
+ }
854
+
855
+ datasource = eval(button.attr('crn-datasource'));
856
+ }
857
+
858
+ var isOData = datasource.isOData()
859
+ $(filtersSplited).each(function() {
860
+ if (this.length > 0) {
861
+ if (filterTemplate != "") {
862
+ if (isOData) {
863
+ filterTemplate += " or ";
864
+ } else {
865
+ filterTemplate += ";";
866
+ }
867
+ }
868
+
869
+ if (isOData) {
870
+ if (operator == "=" && typeElement == 'text' && filterTemplate == "") {
871
+ filterTemplate = "substringof({value.lower}, tolower("+this+"))";
872
+ }
873
+ else if (operator == "=") {
874
+ filterTemplate += " substringof({value.lower},tolower("+this+"))";
875
+ }
876
+ else if (operator == "!=") {
877
+ filterTemplate += this + " ne {value}";
878
+ }
879
+ else if (operator == ">") {
880
+ filterTemplate += this + " gt {value}";
881
+ }
882
+ else if (operator == ">=") {
883
+ filterTemplate += this + " ge {value}";
884
+ }
885
+ else if (operator == "<") {
886
+ filterTemplate += this + " lt {value}";
887
+ }
888
+ else if (operator == "<=") {
889
+ filterTemplate += this + " le {value}";
890
+ }
891
+ } else {
892
+ if (typeElement == 'text') {
893
+ filterTemplate += this + '@' + operator + '%{value}%';
894
+ } else {
895
+ filterTemplate += this + operator + '{value}';
896
+ }
897
+ }
898
+ }
899
+ });
900
+ if (filterTemplate.length == 0) {
901
+ if (isOData) {
902
+ filterTemplate = "{value}";
903
+ } else {
904
+ filterTemplate = '%{value}%';
905
+ }
906
+ }
907
+
908
+ if (ngModelCtrl) {
909
+ scope.$watch(attrs.ngModel, function(newVal, oldVal) {
910
+ if (angular.equals(newVal, oldVal)) { return; }
911
+ var eType = $element.data('type') || $element.attr('type');
912
+ var value = ngModelCtrl.$modelValue;
913
+
914
+ if (isOData) {
915
+
916
+ if (value instanceof Date) {
917
+ if (eType == "datetime-local") {
918
+ value = "datetimeoffset'" + value.toISOString() + "'";
919
+ } else {
920
+ value = "datetime'" + value.toISOString().substring(0, 23) + "'";
921
+ }
922
+ }
923
+
924
+ else if (typeof value == "number") {
925
+ value = value;
926
+ }
927
+
928
+ else if (typeof value == "boolean") {
929
+ value = value;
930
+ } else {
931
+ value = "'" + value + "'";
932
+ }
933
+
934
+ } else {
935
+ if (value instanceof Date) {
936
+ value = value.toISOString();
937
+ if (eType == "date") {
938
+ value = value + "@@date";
939
+ }
940
+ else if (eType == "time" || eType == "time-local") {
941
+ value = value + "@@time";
942
+ }
943
+ else {
944
+ value = value + "@@datetime";
945
+ }
946
+ }
947
+
948
+ else if (typeof value == "number") {
949
+ value = value + "@@number";
950
+ }
951
+
952
+ else if (typeof value == "boolean") {
953
+ value = value + "@@boolean";
954
+ }
955
+
956
+ }
957
+ var bindedFilter = filterTemplate.split('{value}').join(value);
958
+ if (typeof value == 'string') {
959
+ bindedFilter = bindedFilter.split('{value.lower}').join(value.toLowerCase());
960
+ } else {
961
+ bindedFilter = bindedFilter.split('{value.lower}').join(value);
962
+ }
963
+ if (ngModelCtrl.$viewValue.length == 0)
964
+ bindedFilter = '';
965
+
966
+ setFilterInButton($element, bindedFilter, operator);
967
+ if (autopost)
968
+ makeAutoPostSearch($element, bindedFilter, datasource, attrs);
969
+
970
+ });
971
+ }
972
+ else {
973
+ if (typeElement == 'text') {
974
+ $element.on("keyup", function() {
975
+ var datasource = eval(attrs.crnDatasource);
976
+ var value = undefined;
977
+ if (ngModelCtrl && ngModelCtrl != undefined)
978
+ value = ngModelCtrl.$viewValue;
979
+ else
980
+ value = this.value;
981
+ var bindedFilter = filterTemplate.split('{value}').join(value);
982
+ if (this.value.length == 0)
983
+ bindedFilter = '';
984
+
985
+ setFilterInButton($element, bindedFilter, operator);
986
+ if (autopost)
987
+ makeAutoPostSearch($element, bindedFilter, datasource, attrs);
988
+ });
989
+ }
990
+ else {
991
+ $element.on("change", function() {
992
+ var datasource = eval(attrs.crnDatasource);
993
+ var value = undefined;
994
+ var typeElement = $(this).attr('type');
995
+ if (attrs.asDate != undefined)
996
+ typeElement = 'date';
997
+
998
+ if (ngModelCtrl && ngModelCtrl != undefined) {
999
+ value = ngModelCtrl.$viewValue;
1000
+ }
1001
+ else {
1002
+ if (typeElement == 'checkbox')
1003
+ value = $(this).is(':checked');
1004
+ else if (typeElement == 'date') {
1005
+ value = this.value;
1006
+ if (this.value.length > 0) {
1007
+ var momentDate = moment(this.value, patternFormat(this));
1008
+ value = momentDate.toDate().toISOString();
1009
+ }
1010
+ }
1011
+ else
1012
+ value = this.value;
1013
+ }
1014
+ var bindedFilter = filterTemplate.split('{value}').join(value);
1015
+ if (value.toString().length == 0)
1016
+ bindedFilter = '';
1017
+
1018
+ setFilterInButton($element, bindedFilter, operator);
1019
+ if (autopost)
1020
+ makeAutoPostSearch($element, bindedFilter, datasource, attrs);
1021
+ });
1022
+ }
1023
+ }
1024
+ }
1025
+
1026
+ var forceDisableDatasource = function(datasourceName, scope) {
1027
+ var disableDatasource = setInterval(function() {
1028
+ try {
1029
+ var datasourceInstance = eval(datasourceName);
1030
+ if (datasourceInstance) {
1031
+ $(document).ready(function() {
1032
+ var time = 0;
1033
+ var intervalForceDisable = setInterval(function() {
1034
+ if (time < 10) {
1035
+ scope.$apply(function () {
1036
+ datasourceInstance.enabled = false;
1037
+ datasourceInstance.data = [];
1038
+ });
1039
+ time++;
1040
+ }
1041
+ else
1042
+ clearInterval(intervalForceDisable);
1043
+ }, 20);
1044
+ });
1045
+ clearInterval(disableDatasource);
1046
+ }
1047
+ }
1048
+ catch(e) {
1049
+ //try again, until render
1050
+ }
1051
+ },10);
1052
+ }
1053
+
1054
+ var buttonBehavior = function(scope, element, attrs, ngModelCtrl, $element, typeElement, operator, autopost) {
1055
+ var datasourceName = '';
1056
+ if (attrs.crnDatasource)
1057
+ datasourceName = attrs.crnDatasource;
1058
+ else
1059
+ datasourceName = $element.parent().attr('crn-datasource');
1060
+
1061
+ var datasource = eval(datasourceName);
1062
+ var isOData = datasource.isOData()
1063
+
1064
+ var requiredFilter = attrs.requiredFilter && attrs.requiredFilter.toString() == "true";
1065
+ if (requiredFilter) {
1066
+ this.forceDisableDatasource(datasourceName, scope);
1067
+ }
1068
+
1069
+ $element.on('click', function() {
1070
+ var $this = $(this);
1071
+ var filters = $this.data('filters');
1072
+ if (datasourceName && datasourceName.length > 0 && filters) {
1073
+ var bindedFilter = '';
1074
+ $(filters).each(function() {
1075
+ if (bindedFilter != '') {
1076
+ bindedFilter += (isOData?" and ":";");
1077
+ }
1078
+ bindedFilter += this.bindedFilter;
1079
+ });
1080
+
1081
+ var datasourceToFilter = eval(datasourceName);
1082
+
1083
+ if (requiredFilter) {
1084
+ datasourceToFilter.enabled = bindedFilter.length > 0;
1085
+ if (datasourceToFilter.enabled) {
1086
+ datasourceToFilter.search(bindedFilter, (attrs.cronappFilterCaseinsensitive=="true"));
1087
+ }
1088
+ else {
1089
+ scope.$apply(function () {
1090
+ datasourceToFilter.data = [];
1091
+ });
1092
+ }
1093
+ }
1094
+ else
1095
+ datasourceToFilter.search(bindedFilter, (attrs.cronappFilterCaseinsensitive=="true"));
1096
+ }
1097
+ });
1098
+ }
1099
+
1100
+ return {
1101
+ restrict: 'A',
1102
+ require: '?ngModel',
1103
+ link: function(scope, element, attrs, ngModelCtrl) {
1104
+ var $element = $(element);
1105
+ var typeElement = $element.data('type') || $element.attr('type');
1106
+ if (attrs.asDate != undefined)
1107
+ typeElement = 'date';
1108
+
1109
+ var operator = '=';
1110
+ if (attrs.cronappFilterOperator && attrs.cronappFilterOperator.length > 0)
1111
+ operator = attrs.cronappFilterOperator;
1112
+
1113
+ var autopost = true;
1114
+ if (attrs.cronappFilterAutopost && attrs.cronappFilterAutopost == "false")
1115
+ autopost = false;
1116
+
1117
+ //Correção para aceitar datasources fora de ordem
1118
+ setTimeout(function() {
1119
+ if ($element[0].tagName == "INPUT")
1120
+ inputBehavior(scope, element, attrs, ngModelCtrl, $element, typeElement, operator, autopost);
1121
+ else
1122
+ buttonBehavior(scope, element, attrs, ngModelCtrl, $element, typeElement, operator, autopost);
1123
+ }, 100);
1124
+ }
1125
+ }
1126
+ })
1127
+
1128
+ .directive('cronList', ['$compile', '$parse', function($compile, $parse){
1129
+ 'use strict';
1130
+
1131
+ const defaultAdvancedTemplate =
1132
+ `<ion-list type="" can-swipe="listCanSwipe">
1133
+ <ion-item ng-class="{'cron-list-selected' : isChecked(rowData)}" class="item {{options.editableButtonClass}} {{options.iconClassPosition}} {{options.imageClassPosition}}" ng-repeat="rowData in datasource">
1134
+ <ul ng-if="options.allowMultiselect" class="checkbox-group component-holder {{'cron-list-multiselect-' + options.imageType}}" data-component="crn-checkbox"><label class="checkbox"><input ng-checked="isChecked(rowData);" type="checkbox"></label></ul>
1135
+ <img alt='Thumbnail' ng-if="options.imageType !== 'do-not-show' && rowData[options.fields.image]"
1136
+ ng-src="{{options.isImageFromDropbox ? '' : 'data:image/png;base64,'}}{{rowData[options.fields.image]}}" class="{{options.imageToClassPosition}}">
1137
+ <div class="{{options.xattrTextPosition}} {{options.textToClassPosition}}">
1138
+ <h2 ng-if="rowData[options.fields.field0]">{{rowData[options.fields.field0]|mask:options.fields.mask0:options.fields.type0}}</h2>
1139
+ <p class="dark" ng-if="hasValue(rowData[options.fields.field1])">{{rowData[options.fields.field1]|mask:options.fields.mask1:options.fields.type1}}</p>
1140
+ <p class="dark" ng-if="hasValue(rowData[options.fields.field2])">{{rowData[options.fields.field2]|mask:options.fields.mask2:options.fields.type2}}</p>
1141
+ <p class="dark" ng-if="hasValue(rowData[options.fields.field3])">{{rowData[options.fields.field3]|mask:options.fields.mask3:options.fields.type3}}</p>
1142
+ <p class="dark" ng-if="hasValue(rowData[options.fields.field4])">{{rowData[options.fields.field4]|mask:options.fields.mask4:options.fields.type4}}</p>
1143
+ <p class="dark" ng-if="hasValue(rowData[options.fields.field5])">{{rowData[options.fields.field5]|mask:options.fields.mask5:options.fields.type5}}</p>
1144
+ <i ng-if="options.icon" class="{{options.icon}}" xattr-theme="dark"></i>
1145
+ </div>
1146
+ </ion-item>
1147
+ </ion-list>
1148
+ <ion-infinite-scroll></ion-infinite-scroll>`;
1149
+
1150
+ const defaultSearchTemplate =
1151
+ "<div class=\"item item-input-inset\">\n" +
1152
+ " <div class=\"item-input-wrapper\">\n" +
1153
+ " <i class=\"icon ion-search placeholder-icon\"></i>\n" +
1154
+ " <input aria-label=\"{{'template.crud.search' | translate}}\" type=\"text\" ng-model=\"vars.searchableList[options.randomModel]\" cronapp-filter=\"{{options.filterFields}}\" cronapp-filter-operator=\"\" cronapp-filter-caseinsensitive=\"false\"\n" +
1155
+ " cronapp-filter-autopost=\"true\" crn-datasource=\"{{options.dataSourceScreen.name}}\" placeholder=\"{{\'template.crud.search\' | translate}}\">\n" +
1156
+ " </div>\n" +
1157
+ " <button ng-if=\"showButton()\" ng-click=\"limparSelecao()\"\n" +
1158
+ " class=\"button-small cron-list-button-clean button button-inline button-positive component-holder\">\n" +
1159
+ " <span cron-list-button-text>Limpar Seleção</span></button>\n" +
1160
+ "</div>";
1161
+
1162
+ var getExpression = function(dataSourceName) {
1163
+ return 'rowData in '.concat(dataSourceName).concat('.data');
1164
+ }
1165
+
1166
+ var buildFormat = function(column) {
1167
+ var result = '';
1168
+
1169
+ result = ' | mask: "' + column.type + '"';
1170
+ if(column.format){
1171
+ result = ' | mask: "' + column.format + '":"'+column.type+'"';
1172
+ }
1173
+
1174
+ return result;
1175
+ }
1176
+
1177
+ var getEditCommand = function(dataSourceName) {
1178
+ return dataSourceName + '.startEditing(rowData)';
1179
+ }
1180
+
1181
+ var getCronappSecurity = function(column) {
1182
+ if (column.security)
1183
+ return `cronapp-security="${column.security}"`;
1184
+ return "";
1185
+ }
1186
+
1187
+ var addDefaultButton = function(dataSourceName, column) {
1188
+ const EDIT_TEMPLATE = '<ion-option-button ' + getCronappSecurity(column) + ' class="button-positive ion-edit button-edit" ng-click="' + getEditCommand(dataSourceName) + '"><span>&nbsp;{{"Permission.view.Edit" | translate}}</span></ion-option-button>';
1189
+ const DELETE_TEMPLATE = '<ion-option-button ' + getCronappSecurity(column) + ' class="button-assertive ion-trash-a button-delete" ng-click="' + dataSourceName + '.remove(rowData)"><span>&nbsp;{{"Permission.view.Remove" | translate}}</span></ion-option-button>';
1190
+
1191
+ if (column.command == 'edit|destroy') {
1192
+ return EDIT_TEMPLATE.concat(DELETE_TEMPLATE);
1193
+ } else if (column.command == 'edit') {
1194
+ return EDIT_TEMPLATE;
1195
+ } else if (column.command == 'destroy') {
1196
+ return DELETE_TEMPLATE;
1197
+ }
1198
+ }
1199
+
1200
+ var encodeHTML = function(value) {
1201
+ return value.replace(/&/g, '&amp;')
1202
+ .replace(/</g, '&lt;')
1203
+ .replace(/>/g, '&gt;')
1204
+ .replace(/"/g, '&quot;')
1205
+ .replace(/'/g, '&apos;');
1206
+ }
1207
+
1208
+ var generateBlocklyCall = function(blocklyInfo) {
1209
+ var call;
1210
+ if (blocklyInfo.type == "client") {
1211
+ var splitedClass = blocklyInfo.blocklyClass.split('/');
1212
+ var blocklyName = splitedClass[splitedClass.length-1];
1213
+ call = "blockly.js.blockly." + blocklyName;
1214
+ call += "." + blocklyInfo.blocklyMethod;
1215
+ var params = "()";
1216
+ if (blocklyInfo.blocklyParams.length > 0) {
1217
+ params = "(";
1218
+ blocklyInfo.blocklyParams.forEach(function(p) {
1219
+ params += (p.value ? encodeHTML(p.value) : "''") + ",";
1220
+ }.bind(this))
1221
+ params = params.substr(0, params.length - 1);
1222
+ params += ")";
1223
+ }
1224
+ call += params;
1225
+ } else if (blocklyInfo.type == "server") {
1226
+ var blocklyName = blocklyInfo.blocklyClass + ':' + blocklyInfo.blocklyMethod;
1227
+ call = "cronapi.util.makeCallServerBlocklyAsync('"+blocklyName+"',null,null,";
1228
+ if (blocklyInfo.blocklyParams.length > 0) {
1229
+ blocklyInfo.blocklyParams.forEach(function(p) {
1230
+ call += (p.value ? encodeHTML(p.value) : "''") + ",";
1231
+ }.bind(this))
1232
+ }
1233
+ call = call.substr(0, call.length - 1);
1234
+ call += ")";
1235
+ }
1236
+
1237
+ return call;
1238
+ }
1239
+
1240
+ var addBlockly = function(column) {
1241
+ return '<ion-option-button class="button-dark ' + getCronappSecurity(column) + ' ion-navigate" ng-click="'
1242
+ + generateBlocklyCall(column.blocklyInfo)
1243
+ + '"></ion-option-button>';
1244
+ }
1245
+
1246
+ var isImage = function(fieldName, schemaFields) {
1247
+ for (var i = 0; i < schemaFields.length; i++) {
1248
+ var field = schemaFields[i];
1249
+ if (fieldName == field.name) {
1250
+ return (field.type == 'Binary');
1251
+ }
1252
+ }
1253
+
1254
+ return false;
1255
+ }
1256
+
1257
+ var addCustomButton = function(column) {
1258
+ return `<ion-option-button ${getCronappSecurity(column)} class="button-dark ${column.iconClass}" ng-click="listButtonClick($index, rowData, '${window.stringToJs(column.execute)}', $event)">${column.label}</ion-option-button> `
1259
+ }
1260
+
1261
+ return {
1262
+ restrict: 'E',
1263
+ require: '?ngModel',
1264
+ scope: true,
1265
+ priority: 9999998,
1266
+ terminal: true,
1267
+ link: function(scope, element, attrs, ngModelCtrl) {
1268
+
1269
+ scope.hasValue = value => value !== null && value !== undefined;
1270
+ var optionsList = {};
1271
+ var dataSourceName = '';
1272
+ var buttons = '';
1273
+
1274
+ try {
1275
+ optionsList = JSON.parse(attrs.options);
1276
+ dataSourceName = optionsList.dataSourceScreen.name;
1277
+ var dataSource = eval(optionsList.dataSourceScreen.name);
1278
+ var imageDirection = optionsList.imagePosition ? optionsList.imagePosition : "left";
1279
+ var iconDirection = optionsList.iconPosition ? optionsList.iconPosition : "right";
1280
+ var bothDirection = imageDirection === 'left' && iconDirection === 'left' ? 'left' : (imageDirection === 'right' && iconDirection === 'right' ? 'right' : '');
1281
+ var checkboxTemplate = '';
1282
+ var modelArrayToInsert = [];
1283
+ var isKey = false;
1284
+ scope.options = optionsList;
1285
+
1286
+ if(attrs['ngModel']){
1287
+ var modelGetter = $parse(attrs['ngModel']);
1288
+ var modelSetter = modelGetter.assign;
1289
+
1290
+ if(optionsList.allowMultiselect){
1291
+
1292
+ scope.verifyIsKey = function(rowData){
1293
+ isKey = false;
1294
+ if(optionsList.fieldType && optionsList.fieldType === "key"){
1295
+ rowData = this.changeRowDataField(rowData);
1296
+ isKey = true;
1297
+ }
1298
+ return rowData;
1299
+ }
1300
+
1301
+ scope.limparSelecao = function(){
1302
+ modelSetter(scope, []);
1303
+ }
1304
+
1305
+ scope.isChecked = function(rowData) {
1306
+ let hasObject = false;
1307
+ modelArrayToInsert = modelGetter(scope);
1308
+ rowData = scope.verifyIsKey(rowData);
1309
+ hasObject = scope.hasObjectChecked(isKey, rowData, null, event);
1310
+ scope.isSelected = hasObject;
1311
+ return hasObject;
1312
+ }
1313
+
1314
+ scope.hasObjectChecked = function(isKey, rowData, fn, event){
1315
+ let hasObject = false;
1316
+ if(Array.isArray(modelArrayToInsert)){
1317
+ if(isKey && typeof rowData !== "object"){
1318
+ modelArrayToInsert.forEach((el, idx) => {
1319
+ if(rowData === el){
1320
+ hasObject = true;
1321
+ }
1322
+ });
1323
+ }
1324
+ else{
1325
+ modelArrayToInsert.forEach((el, idx) => {
1326
+ if(dataSource.objectIsEquals(rowData, el)){
1327
+ hasObject = true;
1328
+ }
1329
+ });
1330
+ }
1331
+ }
1332
+ return hasObject;
1333
+ }
1334
+
1335
+ scope.checkboxButtonClick = function(idx, rowData, fn, event) {
1336
+ let hasObject = false;
1337
+ let currentTarget = $(event.currentTarget);
1338
+ let checkedSize = currentTarget.find('input[type=checkbox]:checked').length;
1339
+ modelArrayToInsert = modelGetter(scope);
1340
+ if(!Array.isArray(modelArrayToInsert)){
1341
+ modelArrayToInsert = [];
1342
+ }
1343
+ if(!$(event.target).is('input[type=checkbox]') && !fn){
1344
+ if(checkedSize > 0){
1345
+ currentTarget.find("input[type=checkbox]").prop('checked', false);
1346
+ }
1347
+ else{
1348
+ currentTarget.find("input[type=checkbox]").prop('checked', true);
1349
+ }
1350
+ }
1351
+ let currentCheckbox = $(event.currentTarget).find('input[type=checkbox]');
1352
+ rowData = scope.verifyIsKey(rowData);
1353
+ if($(currentCheckbox).is(':checked')){
1354
+ hasObject = scope.hasObjectChecked(isKey, rowData, fn, event);
1355
+ if(!hasObject){
1356
+ modelArrayToInsert.push(rowData);
1357
+ }
1358
+ }
1359
+ else{
1360
+ if(isKey && typeof rowData !== "object"){
1361
+ modelArrayToInsert.forEach((el, idx) => {
1362
+ if(rowData === el){
1363
+ modelArrayToInsert.splice(idx, 1);
1364
+ }
1365
+ });
1366
+ }
1367
+ else{
1368
+ modelArrayToInsert.forEach((el, idx) => {
1369
+ if(dataSource.objectIsEquals(rowData, el)){
1370
+ modelArrayToInsert.splice(idx, 1);
1371
+ }
1372
+ });
1373
+ }
1374
+ }
1375
+ modelSetter(scope, modelArrayToInsert);
1376
+ event.stopPropagation();
1377
+ }
1378
+ }
1379
+ else{
1380
+ scope.setRowDataModel = function(idx, rowData, fn, event) {
1381
+ if(optionsList.fieldType && optionsList.fieldType === "key"){
1382
+ rowData = this.changeRowDataField(rowData);
1383
+ }
1384
+ modelSetter(scope, rowData);
1385
+ }
1386
+ }
1387
+
1388
+ scope.changeRowDataField = function(rowData){
1389
+ rowData = dataSource.getKeyValues(rowData);
1390
+ var keys = Object.keys(rowData);
1391
+ if(keys.length === 1){
1392
+ rowData = rowData[keys];
1393
+ }
1394
+ return rowData;
1395
+ }
1396
+ }
1397
+
1398
+ scope.listButtonClick = function(idx, rowData, fn, event) {
1399
+ if (event.target.tagName == 'INPUT') {
1400
+ return;
1401
+ }
1402
+
1403
+ dataSource.goTo(rowData);
1404
+
1405
+ var consolidated = {
1406
+ item: rowData,
1407
+ index: idx
1408
+ }
1409
+
1410
+ var contextVars = {
1411
+ 'currentData': dataSource.data,
1412
+ 'datasource': dataSource,
1413
+ 'selectedIndex': idx,
1414
+ 'index': idx,
1415
+ 'selectedRow': rowData,
1416
+ 'consolidated': consolidated,
1417
+ 'item': rowData,
1418
+ 'selectedKeys': dataSource.getKeyValues(dataSource.active, true)
1419
+ };
1420
+
1421
+ scope.$eval(fn, contextVars);
1422
+
1423
+ event.preventDefault();
1424
+ event.stopPropagation();
1425
+ }
1426
+
1427
+ var searchableField = null;
1428
+ var isNativeEdit = false;
1429
+ var addedImage = false;
1430
+
1431
+ scope.options = optionsList;
1432
+ scope.options.fields = {};
1433
+ scope.options.isImageFromDropbox = false;
1434
+ scope.options.editableButtonClass = "";
1435
+ scope.options.itemContentClass = "";
1436
+ scope.options.itemSimple = "";
1437
+ scope.options.filterFields = "";
1438
+ scope.options.randomModel = Math.floor(Math.random() * (9000)) + 1000;
1439
+ if(!optionsList.imagePosition) scope.options.imagePosition = "left";
1440
+ if(!optionsList.iconPosition) scope.options.iconPosition = "right";
1441
+ if(!optionsList.imageType) scope.options.imageType = "avatar";
1442
+ var imageDirection = optionsList.imagePosition ? optionsList.imagePosition : "left";
1443
+ var iconDirection = optionsList.iconPosition ? optionsList.iconPosition : "right";
1444
+ var bothDirection = imageDirection === 'left' && iconDirection === 'left' ? 'left' : (imageDirection === 'right' && iconDirection === 'right' ? 'right' : '');
1445
+ var visibleColumns = [];
1446
+
1447
+ for (var i = 0; i < optionsList.columns.length; i++) {
1448
+ var column = optionsList.columns[i];
1449
+ if (column.visible) {
1450
+ visibleColumns.push(optionsList.columns[i]);
1451
+ }
1452
+ }
1453
+
1454
+ for (var i = 0; i < visibleColumns.length; i++) {
1455
+ var column = visibleColumns[i];
1456
+ if (column.field && column.dataType == 'Database') {
1457
+ scope.options.fields["security" + i] = column.security;
1458
+ scope.options.fields["field" + i] = column.field;
1459
+ scope.options.fields["type" + i] = column.type;
1460
+ scope.options.fields["mask" + i] = column.format;
1461
+ if (!addedImage && isImage(column.field, optionsList.dataSourceScreen.entityDataSource.schemaFields) && optionsList.imageType !== "do-not-show"){
1462
+ scope.options.fields["image"] = column.field;
1463
+ delete scope.options.fields["field" + i];
1464
+ addedImage = true;
1465
+ scope.options.isImageFromDropbox = false;
1466
+ }
1467
+ else if(!addedImage && (column.type == 'image')){
1468
+ scope.options.fields["image"] = column.field;
1469
+ delete scope.options.fields["field" + i];
1470
+ addedImage = true;
1471
+ scope.options.isImageFromDropbox = true;
1472
+ }
1473
+ else{
1474
+ if (column.filterable) {
1475
+ searchableField = (searchableField != null) ? searchableField + ';' + column.field : column.field;
1476
+ }
1477
+ }
1478
+ }
1479
+ else if (column.dataType == 'Command' || column.dataType == 'Blockly' || column.dataType == 'Customized'){
1480
+ scope.options.editableButtonClass = "item-complex item-right-editable";
1481
+ if(column.dataType == 'Command'){
1482
+ scope.options.fields["field" + i] = column.field;
1483
+ buttons = buttons.concat(addDefaultButton(dataSourceName, column));
1484
+ if ((column.command == 'edit') || (column.command == 'edit|destroy')) {
1485
+ isNativeEdit = true;
1486
+ }
1487
+ } else if (column.dataType == 'Blockly') {
1488
+ buttons = buttons.concat(addBlockly(column));
1489
+ } else if (column.dataType == 'Customized') {
1490
+ buttons = buttons.concat(addCustomButton(column));
1491
+ }
1492
+ }
1493
+ }
1494
+ } catch(err) {
1495
+ console.log('CronList invalid configuration! ' + err);
1496
+ }
1497
+
1498
+ if(!scope.options.editableButtonClass && !addedImage){
1499
+ scope.options.itemContentClass = "item-content"
1500
+ scope.options.itemSimple = "item-simple"
1501
+ }
1502
+ else if(!scope.options.editableButtonClass && addedImage){
1503
+ scope.options.itemContentClass = "item-content"
1504
+ scope.options.editableButtonClass = "item-complex";
1505
+ scope.options.itemSimple = ""
1506
+ }
1507
+
1508
+ if(scope.options.fields.image && scope.options.imageType != 'do-not-show'){
1509
+ scope.options.imageClassPosition = "item-" + scope.options.imageType + '-' + scope.options.imagePosition;
1510
+ }
1511
+
1512
+ if(!addedImage){
1513
+ scope.options.imageType = "do-not-show"
1514
+ }
1515
+
1516
+ if(scope.options.icon && scope.options.iconPosition && scope.options.imageType){
1517
+ scope.options.iconClassPosition = "item-icon-" + scope.options.iconPosition;
1518
+ }
1519
+
1520
+ if(bothDirection && scope.options.icon && scope.options.imagePosition && scope.options.imageType){
1521
+ scope.options.imageToClassPosition = "image-to-" + scope.options.imagePosition + '-' + scope.options.imageType;
1522
+ scope.options.textToClassPosition = "text-to-" + scope.options.iconPosition + '-' + scope.options.imageType;
1523
+ }
1524
+
1525
+ if(!scope.options.advancedTemplate){
1526
+ scope.options.advancedTemplate = defaultAdvancedTemplate;
1527
+ }
1528
+
1529
+ if(!scope.options.searchTemplate){
1530
+ scope.options.searchTemplate = defaultSearchTemplate
1531
+ }
1532
+
1533
+ var templateDyn = null;
1534
+ if (searchableField) {
1535
+ scope.options.filterFields = searchableField;
1536
+ templateDyn = scope.options.searchTemplate + scope.options.advancedTemplate;
1537
+ } else {
1538
+ templateDyn = scope.options.advancedTemplate;
1539
+ }
1540
+
1541
+ for (let index = 0; index < visibleColumns.length; index++) {
1542
+ let column = visibleColumns[index];
1543
+ if (column.field && column.dataType === 'Database' && scope.options.fields[`security${index}`]) {
1544
+ let find = `ng-if="rowData[options.fields.field${index}]"`;
1545
+ let toReplace = `${find} cronapp-security="${scope.options.fields['security' + index]}"`;
1546
+ templateDyn = templateDyn.replace(find, toReplace);
1547
+ }
1548
+ }
1549
+ templateDyn = $(templateDyn);
1550
+
1551
+ scope.options.xattrTextPosition = attrs.xattrTextPosition;
1552
+
1553
+ templateDyn.attr("type", optionsList.listType);
1554
+ $(element).replaceWith(templateDyn);
1555
+ var $element = templateDyn;
1556
+
1557
+ var ionItem = $element.find('ion-item');
1558
+ if($(ionItem).attr('ng-repeat') === "rowData in datasource"){
1559
+ ionItem.attr('ng-repeat', getExpression(dataSourceName));
1560
+ }
1561
+
1562
+ if (isNativeEdit) {
1563
+ ionItem.attr('ng-click', getEditCommand(dataSourceName));
1564
+ }
1565
+
1566
+ var ngClickAttrTemplate = "";
1567
+ var ngClickAttrTemplateCheckbox = "";
1568
+
1569
+ if(optionsList.allowMultiselect){
1570
+ if(attrs['ngModel']){
1571
+ ngClickAttrTemplateCheckbox = "checkboxButtonClick($index, rowData, \'"+window.stringToJs(attrs.ngClick)+"\', $event);"
1572
+ }
1573
+ checkboxTemplate = $element.find('ul');
1574
+ if(attrs.ngClick){
1575
+ checkboxTemplate = $(checkboxTemplate).attr('ng-click', ngClickAttrTemplateCheckbox).get(0).outerHTML;
1576
+ ngClickAttrTemplate = ngClickAttrTemplate + "listButtonClick($index, rowData, \'"+window.stringToJs(attrs.ngClick)+"\', $event);";
1577
+ }
1578
+ ionItem.attr('ng-click', ngClickAttrTemplateCheckbox + ngClickAttrTemplate);
1579
+ }
1580
+ else{
1581
+ if(attrs['ngModel']){
1582
+ ngClickAttrTemplate = "setRowDataModel($index, rowData, \'"+window.stringToJs(attrs.ngClick)+"\', $event);";
1583
+ }
1584
+ if(attrs.ngClick){
1585
+ ngClickAttrTemplate = ngClickAttrTemplate + "listButtonClick($index, rowData, \'"+window.stringToJs(attrs.ngClick)+"\', $event);";
1586
+ }
1587
+ ionItem.attr('ng-click', ngClickAttrTemplate);
1588
+ }
1589
+
1590
+ if (attrs.onDoubleTap) {
1591
+ ionItem.attr('on-double-tap', attrs.onDoubleTap);
1592
+ }
1593
+ if (attrs.onHold) {
1594
+ ionItem.attr('on-hold', attrs.onHold);
1595
+ }
1596
+ if (attrs.onTap) {
1597
+ ionItem.attr('on-tap', attrs.onTap);
1598
+ }
1599
+ if (attrs.onSwipe) {
1600
+ ionItem.attr('on-swipe', attrs.onSwipe);
1601
+ }
1602
+
1603
+ const attrsExcludeds = ['options','ng-repeat','ng-click'];
1604
+ const filteredItems = Object.values(attrs.$attr).filter(function(item) {
1605
+ return !attrsExcludeds.includes(item);
1606
+ })
1607
+ for( let o in filteredItems){
1608
+ ionItem.attr(filteredItems[o], attrs[o]);
1609
+ }
1610
+
1611
+ ionItem.append(buttons);
1612
+
1613
+ var firstScroll = true;
1614
+ scope.nextPageInfinite = function() {
1615
+ if ($element.find('ion-item').length < dataSource.data.length || dataSource.data.length == 0) {
1616
+ scope.$broadcast('scroll.infiniteScrollComplete');
1617
+ return;
1618
+ }
1619
+
1620
+ if ($element.find('ion-item').length == dataSource.data.length || (dataSource.isOfflineMode())) {
1621
+ if (!firstScroll) {
1622
+ dataSource.nextPage(function() {
1623
+ scope.$broadcast('scroll.infiniteScrollComplete');
1624
+ });
1625
+ } else {
1626
+ scope.$broadcast('scroll.infiniteScrollComplete');
1627
+ firstScroll = false;
1628
+ }
1629
+ }
1630
+ }
1631
+
1632
+ var infiniteScroll = $element.filter(function( index ) {
1633
+ return $(this).is('ion-infinite-scroll');
1634
+ });
1635
+
1636
+ infiniteScroll.attr('on-infinite', 'nextPageInfinite()');
1637
+ infiniteScroll.attr('distance', '1%');
1638
+
1639
+ scope.showButton = function() {
1640
+ if (optionsList.allowMultiselect) {
1641
+ var model = modelGetter(scope);
1642
+ if (model !== null && model !== undefined) {
1643
+ return model.length > 0;
1644
+ }
1645
+ }
1646
+ return false;
1647
+ }
1648
+
1649
+ $compile(templateDyn, null, 9999998)(scope);
1650
+ }
1651
+ }
1652
+ }])
1653
+
1654
+ .directive('cronInfiniteScroll', ['$compile', function($compile){
1655
+ 'use strict';
1656
+ return {
1657
+ restrict: 'EA',
1658
+ link: function(scope, element, attrs) {
1659
+ var dataSource = attrs.cronInfiniteScroll ? eval(attrs.cronInfiniteScroll) : attrs.crnDatasource ? eval(attrs.crnDatasource): undefined;
1660
+ if (dataSource) {
1661
+ scope.nextPageInfinite = function() {
1662
+ dataSource.nextPage();
1663
+ scope.$broadcast('scroll.infiniteScrollComplete');
1664
+ }
1665
+
1666
+ var templateDyn = $('<ion-infinite-scroll></ion-infinite-scroll>');
1667
+ $(element).html(templateDyn);
1668
+
1669
+ var infiniteScroll = $(element).find('ion-infinite-scroll');
1670
+ infiniteScroll.attr('on-infinite', 'nextPageInfinite()');
1671
+ infiniteScroll.attr('distance', '1%');
1672
+
1673
+ $compile(templateDyn)(element.scope());
1674
+ }
1675
+ }
1676
+ }
1677
+ }])
1678
+
1679
+ .filter('raw',function($translate) {
1680
+ return function(o) {
1681
+ if (o != null && o !== undefined) {
1682
+ if (typeof o == 'number') {
1683
+ return o + "";
1684
+ }
1685
+ if (typeof o == 'boolean') {
1686
+ return o + "";
1687
+ }
1688
+ if (o instanceof Date) {
1689
+ var dt = "datetimeoffset'" + o.toISOString() + "'";
1690
+ }
1691
+ else {
1692
+ if (o.length >= 10 && o.match(ISO_PATTERN)) {
1693
+ return "datetimeoffset'" + o + "'";
1694
+ } else {
1695
+ return "'" + o.replaceAll("'", "''") + "'";
1696
+ }
1697
+ }
1698
+ } else {
1699
+ return "";
1700
+ }
1701
+ }
1702
+ })
1703
+
1704
+ .directive('xkeyField', ['$compile', function($compile){
1705
+ 'use strict';
1706
+ return {
1707
+ restrict: 'A',
1708
+ link: function(scope, element, attrs) {
1709
+ if (attrs.xkeyField && attrs.xdisplayField) {
1710
+ var dataSource = '';
1711
+ if (attrs.crnDatasource) {
1712
+ dataSource = attrs.crnDatasource;
1713
+ }
1714
+
1715
+ element.removeAttr('xkey-field');
1716
+ element.removeAttr('xdisplay-field');
1717
+ element.append('<option ng-repeat="opt in ' + dataSource + '.data" value="{{opt.' + attrs.xkeyField + '}}">{{opt.' + attrs.xdisplayField + '}}</option>');
1718
+
1719
+ $compile($(element))(scope);
1720
+ }
1721
+ }
1722
+ }
1723
+ }])
1724
+
1725
+ .directive('cronMobileMenu', ['$compile', '$translate', function($compile, $translate){
1726
+ 'use strict';
1727
+
1728
+ var populateMenu = function(menuOptions) {
1729
+ var template = '';
1730
+ if (menuOptions && menuOptions!= null && menuOptions.subMenuOptions && menuOptions.subMenuOptions != null && Array.isArray(menuOptions.subMenuOptions)){
1731
+ menuOptions.subMenuOptions.forEach(function(menu) {
1732
+ var security = (menu.security && menu.security != null) ? ' cronapp-security="' + menu.security + '" ' : '';
1733
+ var action = (menu.action && menu.action != null) ? ' ng-click="' + menu.action + '" ' : '';
1734
+ var hide = (menu.hide && menu.hide != null) ? ' ng-hide="' + menu.hide + '" ' : '';
1735
+ var iconClass = (menu.iconClass && menu.iconClass != null) ? menu.iconClass : '';
1736
+ var imagePosition = (menu.imagePosition && menu.imagePosition != null) ? 'item-icon-' + menu.imagePosition : '';
1737
+ var textPosition = (menu.textPosition && menu.textPosition != null) ? 'text-' + menu.textPosition : '';
1738
+ var contentTheme = (menu.contentTheme && menu.contentTheme != null) ? menu.contentTheme : '';
1739
+ var iconTheme = (menu.iconTheme && menu.iconTheme != null) ? menu.iconTheme : '';
1740
+ var title = $translate.instant(menu.title);
1741
+
1742
+ template = template + '\
1743
+ <a menu-close="" class="item ' + imagePosition + '" ' + action + security + hide + '> \
1744
+ <i class="' + iconClass + ' ' + iconTheme + '" style="font-size: 150%"></i> \
1745
+ <div class="item-content ' + textPosition + '"> \
1746
+ <h2 class="' + contentTheme + '">' + title + '</h2> \
1747
+ </div> \
1748
+ </a> ';
1749
+ })
1750
+ }
1751
+ return template;
1752
+ }
1753
+
1754
+ return {
1755
+ restrict: 'EA',
1756
+ link: function (scope, element, attrs) {
1757
+ attrs.$observe('options', function (attrOptions) {
1758
+ var TEMPLATE_MAIN = '<ul class="nav navbar-nav" style="float:none"></ul>';
1759
+ var options = {};
1760
+ try {
1761
+ options = JSON.parse(attrOptions);
1762
+ } catch (e) {
1763
+ console.log('CronMobileMenu: Invalid configuration!')
1764
+ }
1765
+
1766
+ var main = $(TEMPLATE_MAIN);
1767
+ var menus = populateMenu(options);
1768
+ main.append(menus);
1769
+
1770
+ var newElement = angular.element(main);
1771
+ element.html('');
1772
+ element.append(main);
1773
+ element.attr('id', null);
1774
+ $compile(newElement)(scope);
1775
+ });
1776
+ }
1777
+ }
1778
+ }])
1779
+
1780
+ .directive('srcLazy', function($compile){
1781
+ 'use strict';
1782
+ return {
1783
+ restrict: 'A',
1784
+ link: function(scope, element, attrs) {
1785
+ var $element = $(element);
1786
+
1787
+ setTimeout(function() {
1788
+ if ($element.is(':appeared')) {
1789
+ element.attr('src', attrs.srcLazy);
1790
+ return;
1791
+ }
1792
+
1793
+ if (!attrs.srcLazyPreview) {
1794
+ $element.css('visibility', 'hidden');
1795
+ } else {
1796
+ $element.attr('src', attrs.srcLazyPreview);
1797
+ }
1798
+
1799
+ $element.appear();
1800
+
1801
+ $element.on('appear', function(event, $all_appeared_elements) {
1802
+ if (!$element.attr('src-lazy')) {
1803
+ return;
1804
+ }
1805
+ if (!attrs.srcLazyPreview) {
1806
+ $element.css('visibility', 'visible');
1807
+ }
1808
+ console.log(attrs.srcLazy);
1809
+ $element.attr('src', attrs.srcLazy);
1810
+ $element.attr('src-lazy', '');
1811
+ });
1812
+ },100);
1813
+
1814
+ scope.$on('$destroy', function() {
1815
+ $element.appearStop();
1816
+ });
1817
+ }
1818
+ }
1819
+ })
1820
+
1821
+ .directive('crnSkin', function($compile, $http) {
1822
+ return {
1823
+ restrict: 'A',
1824
+ link: function(scope, element, attrs, ctrl) {
1825
+ if (attrs.crnSkin) {
1826
+ $http.get(attrs.crnSkin, {cache: true}).then((response) => {
1827
+ if (response.data) {
1828
+ let data = response.data;
1829
+ if (data.startsWith(":root{")) {
1830
+ data = data.substring(6);
1831
+ }
1832
+ if (data.endsWith("}")) {
1833
+ data = data.substring(0,data.length-2);
1834
+ }
1835
+
1836
+ $element = $(element);
1837
+ let style = $element.attr("style")||"";
1838
+ if (style) {
1839
+ style += ", ";
1840
+ }
1841
+ style += data;
1842
+ $element.attr("style", style);
1843
+ }
1844
+ });
1845
+ }
1846
+ }
1847
+ }
1848
+ })
1849
+
1850
+ .directive('cronMap', function ($compile) {
1851
+ return {
1852
+ restrict: 'AE',
1853
+ replace: true,
1854
+ link: function (scope, element, attrs) {
1855
+
1856
+ var component = element.find('.cronMap')[0];
1857
+ $compile(component)(element.scope());
1858
+
1859
+ var componentOptions = element.find('.cronMapIframe')[0];
1860
+ $compile(componentOptions)(element.scope());
1861
+
1862
+ var $templateDyn = "";
1863
+ var src = attrs.src;
1864
+ var width = attrs.width;
1865
+ var height = attrs.height;
1866
+ $templateDyn = `<iframe class="cronMapIframe" src="${src}" width="${width}" height="${height}" style="border:0;" allowfullscreen="" loading="lazy"></iframe>`;
1867
+
1868
+ element.html($templateDyn);
1869
+ $compile($templateDyn)(element.scope());
1870
+ }
1871
+ }
1872
+ })
1873
+
1874
+ .directive('signaturePad', function($compile, $window) {
1875
+ 'use strict';
1876
+ var canvas, element, EMPTY_IMAGE = null;
1877
+ return {
1878
+ restrict: 'E',
1879
+ require: "ngModel",
1880
+ scope: true,
1881
+ replace: true,
1882
+ transclude: true,
1883
+ template: '<div style="height: 200px; width: 100%;"> \
1884
+ <canvas style="width:100%; height: 100%;" ng-click="mouseup()" ng-mouseup="mouseup()"></canvas> \
1885
+ <div class="component-holder ng-scope col-md-2" style="bottom: 0; position: absolute; padding-left: 5px;" data-component="crn-button"> \
1886
+ <button class="button button-block button-medium filled button-energized col-xs-3" ng-click="clear()"> \
1887
+ <i class="glyphicon glyphicon-erase" icon-theme=""></i> <span class="" text-theme="">{{\'clear\'|translate}}</span> \
1888
+ </button> \
1889
+ </div> \
1890
+ </div>',
1891
+ scope: {
1892
+ dataurl: '=',
1893
+ ngClick: '@',
1894
+ ngModel: '='
1895
+ },
1896
+ controller: [
1897
+ '$scope',
1898
+ function($scope) {
1899
+
1900
+ let getBinaryFromSignature = () => {
1901
+ let binary = $scope.signaturePad.toDataURL();
1902
+ if (binary) {
1903
+ binary = binary.split(',')[1];
1904
+ }
1905
+ return binary;
1906
+ }
1907
+
1908
+ $scope.mouseup = function(e) {
1909
+ if (!$scope.signaturePad.isEmpty()) {
1910
+ $scope.ngModel = getBinaryFromSignature();
1911
+ }
1912
+ };
1913
+
1914
+ $scope.$watch('ngModel', function(value, old) {
1915
+ if (value !== old) {
1916
+ if (getBinaryFromSignature() !== value) {
1917
+ $scope.signaturePad.fromDataURL("data:image/png;base64," + value, {
1918
+ ratio: 1
1919
+ });
1920
+ }
1921
+ $scope.ngModel = value;
1922
+ }
1923
+ }, true);
1924
+
1925
+ $scope.clear = function() {
1926
+ $scope.signaturePad.clear();
1927
+ $scope.ngModel = null;
1928
+ };
1929
+
1930
+ }
1931
+ ],
1932
+ link: function(scope, element, attrs, ngModelCtrl, $timeout) {
1933
+ canvas = element.find('canvas')[0];
1934
+
1935
+ scope.onResize = function() {
1936
+ var ratio = Math.max($window.devicePixelRatio || 1, 1);
1937
+ var canvas = element.find('canvas')[0];
1938
+
1939
+ var refCanvas = document.createElement('canvas');
1940
+ refCanvas.width = canvas.width;
1941
+ refCanvas.height = canvas.height;
1942
+ var refCtx = refCanvas.getContext('2d');
1943
+ if (canvas.width != 0 && canvas.height != 0) {
1944
+ refCtx.drawImage(canvas, 0, 0);
1945
+ }
1946
+
1947
+ canvas.width = canvas.offsetWidth * ratio;
1948
+ canvas.height = canvas.offsetHeight * ratio;
1949
+ if (refCanvas.width != 0 && refCanvas.height != 0) {
1950
+ canvas.getContext("2d").drawImage(refCanvas, 0, 0);
1951
+ }
1952
+ canvas.getContext("2d").scale(ratio, ratio);
1953
+ };
1954
+
1955
+ scope.onResize();
1956
+
1957
+ scope.signaturePad = new SignaturePad(canvas);
1958
+
1959
+ angular.element($window).on('resize', function() {
1960
+ scope.onResize();
1961
+ });
1962
+
1963
+ $compile(element)(element.scope());
1964
+
1965
+ let mouseButtonDown = false;
1966
+ $(canvas).on('pointerdown',(e) => {
1967
+ if (e.which === 1) {
1968
+ mouseButtonDown = true;
1969
+ }
1970
+ e.preventDefault();
1971
+ });
1972
+ $(canvas).on('pointerup',(e) => {
1973
+ if (e.which === 1 && mouseButtonDown) {
1974
+ mouseButtonDown = false;
1975
+ $timeout(() => angular.element(canvas).triggerHandler('mouseup'));
1976
+ }
1977
+ });
1978
+
1979
+ }
1980
+ };
1981
+ })
1982
+ .directive('cronFrame', cronFrame)
1983
+ .directive('crnFrame', cronFrame)
1984
+ .directive('crnComponent', cronFrame)
1985
+
1986
+ .directive('cronVideo', function ($compile) {
1987
+ return {
1988
+ restrict: 'AE',
1989
+ replace: true,
1990
+ link: function (scope, element, attrs) {
1991
+
1992
+ var component = element.find('.cronVideo')[0];
1993
+ $compile(component)(element.scope());
1994
+
1995
+ var componentOptions = element.find('.cronVideoIframe')[0];
1996
+ $compile(componentOptions)(element.scope());
1997
+
1998
+ var $templateDyn = "";
1999
+ var src = attrs.src;
2000
+ var width = attrs.width;
2001
+ var height = attrs.height;
2002
+ var title = attrs.title;
2003
+ $templateDyn = `<iframe class="cronVideoIframe" src="${src}" width="${width}" height="${height}" title="${title}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> </iframe>`;
2004
+
2005
+ element.html($templateDyn);
2006
+ $compile($templateDyn)(element.scope());
2007
+ }
2008
+ }
2009
+ })
2010
+ .directive('cronSelect', function ($compile) {
2011
+ return {
2012
+ restrict: 'E',
2013
+ replace: true,
2014
+ require: 'ngModel',
2015
+ link: async function (scope, element, attrs, ngModelCtrl) {
2016
+ let select = {};
2017
+ try {
2018
+ select = JSON.parse(attrs.options);
2019
+ } catch(err) {
2020
+ console.error('ComboBox invalid configuration! ' + err);
2021
+ }
2022
+
2023
+ let id = attrs.id ? ' id="' + attrs.id + '"' : '';
2024
+ let name = attrs.name ? ' name="' + attrs.name + '"' : '';
2025
+ let parent = element.parent();
2026
+ $(parent).append('<input style="width: 100%;" '+ id + name + ' class="cronSelect"/>');
2027
+ let $element = $(parent).find('input.cronSelect');
2028
+ let cronDisabled = attrs.cronDisabled;
2029
+ let options = await app.kendoHelper.getConfigCombobox(select, scope);
2030
+ options.close = attrs.ngClose ? function (){scope.$eval(attrs.ngClose)}: undefined;
2031
+ options.dataBound = attrs.ngDataBound ? function (){scope.$eval(attrs.ngDataBound)}: undefined;
2032
+ options.filtering = attrs.ngFiltering ? function (){scope.$eval(attrs.ngFiltering)}: undefined;
2033
+ options.select = attrs.ngSelect ? function (){scope.$eval(attrs.ngSelect);}: undefined;
2034
+ options.change = function() {
2035
+ _scope.$apply(function () {
2036
+ _ngModelCtrl.$setViewValue(this.value());
2037
+ }.bind(combobox));
2038
+ };
2039
+
2040
+ options.messages = {
2041
+ noData: attrs.noResultsMessage ? attrs.noResultsMessage : "NO DATA FOUND"
2042
+ };
2043
+
2044
+ let combobox;
2045
+ if (select.dontAllowOutsideList === true) {
2046
+ combobox = $element.kendoDropDownList(options).data('kendoDropDownList');
2047
+ }
2048
+ else {
2049
+ combobox = $element.kendoComboBox(options).data('kendoComboBox');
2050
+ }
2051
+ $(element).remove();
2052
+
2053
+ let internalInput;
2054
+ let initializeAttrAndEvents = () => {
2055
+ internalInput = $(parent).find('.k-input.cronSelect');
2056
+ if (internalInput.length) {
2057
+ internalInput.attr("ng-required", attrs.ngRequired);
2058
+ if (attrs.ngRequired === 'true')
2059
+ internalInput.attr("required", "required");
2060
+ internalInput.attr("ng-model", attrs.ngModel);
2061
+ internalInput.attr("id", attrs.id);
2062
+ internalInput.attr("validationmessage", attrs.validationmessage);
2063
+ let $parent = internalInput.parent();
2064
+ internalInput.on('change',() => {
2065
+ if (attrs.ngRequired === "true") {
2066
+ if (internalInput.val().length == 0) {
2067
+ $parent.addClass('ng-invalid-required');
2068
+ internalInput.addClass('ng-invalid-required');
2069
+ }
2070
+ else {
2071
+ $parent.removeClass('ng-invalid-required');
2072
+ internalInput.removeClass('ng-invalid-required');
2073
+ }
2074
+ }
2075
+ });
2076
+ }
2077
+ else {
2078
+ setTimeout(() => initializeAttrAndEvents());
2079
+ }
2080
+ };
2081
+ initializeAttrAndEvents();
2082
+ if (cronDisabled) {
2083
+ combobox.enable(false);
2084
+ } else {
2085
+ combobox.enable(true);
2086
+ }
2087
+
2088
+ let _scope = scope;
2089
+ let _ngModelCtrl = ngModelCtrl;
2090
+
2091
+ let initializing = true;
2092
+ if (ngModelCtrl) {
2093
+ ngModelCtrl.$formatters.push(function (value) {
2094
+ let result = '';
2095
+
2096
+ if ((typeof value === 'boolean') || (value)) {
2097
+ result = value;
2098
+ }
2099
+ combobox.value(result);
2100
+
2101
+ if (!initializing) {
2102
+ if (attrs.ngChange) scope.$eval(attrs.ngChange);
2103
+ }
2104
+
2105
+
2106
+ initializing = false;
2107
+ combobox.value(result);
2108
+ return result;
2109
+ });
2110
+ ngModelCtrl.$parsers.push(function (value) {
2111
+ if (internalInput) {
2112
+ internalInput.trigger('change');
2113
+ }
2114
+ if ((typeof value === 'boolean') || value) {
2115
+ return value;
2116
+ }
2117
+ return null;
2118
+ });
2119
+ }
2120
+ }
2121
+ };
2122
+ });
2123
+
2124
+ app.directive("kendoChat", function ($compile, $timeout) {
2125
+ return {
2126
+ restrict: "E",
2127
+ link: function (scope, element, attrs) {
2128
+ let onPostMessage = attrs.ngOnPostMessage;
2129
+ let onSendMessage = attrs.ngOnSendMessage;
2130
+ let onTypingEnd = attrs.ngOnTypingEnd;
2131
+ let onTypingStart = attrs.ngOnTypingStart;
2132
+ let onActionClick = attrs.ngOnActionClick;
2133
+ let chatUserId = attrs.chatUserId;
2134
+ let chatUsername = attrs.chatUsername;
2135
+ let chatUserImage = attrs.chatUserImage;
2136
+ let chatPlaceholder = attrs.chatPlaceholder;
2137
+
2138
+ let loggedUserInfo = (localStorage.getItem('_u') !== undefined) ? JSON.parse(localStorage.getItem('_u')) : null;
2139
+
2140
+ let defaultUserId = window.navigator.userAgent;
2141
+ let defaultUserName = '';
2142
+
2143
+ if (loggedUserInfo && loggedUserInfo.user) {
2144
+ defaultUserName = loggedUserInfo.user.name;
2145
+ }
2146
+
2147
+ let chatElement = $("<div></div>");
2148
+
2149
+ chatElement.kendoChat({
2150
+ messages: {
2151
+ placeholder: chatPlaceholder,
2152
+ },
2153
+ user: {
2154
+ id: chatUserId || defaultUserId,
2155
+ name: chatUsername || defaultUserName,
2156
+ iconUrl: chatUserImage,
2157
+ },
2158
+ });
2159
+
2160
+ chat = chatElement.data("kendoChat");
2161
+
2162
+ //Binding Chat Events
2163
+ chat.bind("post", (msg) => {
2164
+ if (onPostMessage) {
2165
+ try {
2166
+ let contextVars = {
2167
+ chatMessage: msg,
2168
+ };
2169
+ scope.$eval(onPostMessage, contextVars);
2170
+ } catch (e) {
2171
+ console.error(e);
2172
+ }
2173
+ }
2174
+ });
2175
+
2176
+ chat.bind("sendMessage", (msg) => {
2177
+ if (onSendMessage) {
2178
+ try {
2179
+ let contextVars = {
2180
+ chatMessage: msg,
2181
+ };
2182
+ scope.$eval(onSendMessage, contextVars);
2183
+ } catch (e) {
2184
+ console.error(e);
2185
+ }
2186
+ }
2187
+ });
2188
+
2189
+ chat.bind("typingStart", (msg) => {
2190
+ if (onTypingStart) {
2191
+ try {
2192
+ let contextVars = {
2193
+ chatMessage: msg,
2194
+ };
2195
+ scope.$eval(onTypingStart, contextVars);
2196
+ } catch (e) {
2197
+ console.error(e);
2198
+ }
2199
+ }
2200
+ });
2201
+
2202
+ chat.bind("typingEnd", (msg) => {
2203
+ if (onTypingEnd) {
2204
+ try {
2205
+ let contextVars = {
2206
+ chatMessage: msg,
2207
+ };
2208
+ scope.$eval(onTypingEnd, contextVars);
2209
+ } catch (e) {
2210
+ console.error(e);
2211
+ }
2212
+ }
2213
+ });
2214
+
2215
+ chat.bind("actionClick", (msg) => {
2216
+ if (onActionClick) {
2217
+ try {
2218
+ let contextVars = {
2219
+ chatMessage: msg,
2220
+ };
2221
+ scope.$eval(onActionClick, contextVars);
2222
+ } catch (e) {
2223
+ console.error(e);
2224
+ }
2225
+ }
2226
+ });
2227
+
2228
+ element.empty().append(chatElement);
2229
+
2230
+ function fitChatHeightToWindow() {
2231
+ let chatElement = $('.k-chat');
2232
+ chatElement.height($(window).height() - chatElement.offset().top);
2233
+ }
2234
+
2235
+ $(window).resize(() => {
2236
+ fitChatHeightToWindow();
2237
+ });
2238
+
2239
+ $timeout(() => {
2240
+ fitChatHeightToWindow();
2241
+ });
2242
+ },
2243
+ };
2244
+ });
2245
+
2246
+ }(app));
2247
+
2248
+ (function ($) {
2249
+ var selectors = [];
2250
+
2251
+ var checkLock = false;
2252
+ var defaults = {
2253
+ interval: 250,
2254
+ force_process: false
2255
+ };
2256
+ var $window = $(window);
2257
+
2258
+ var $priorAppeared = [];
2259
+
2260
+ function isAppeared() {
2261
+ return $(this).is(':appeared');
2262
+ }
2263
+
2264
+ function isNotTriggered() {
2265
+ return !$(this).data('_appear_triggered');
2266
+ }
2267
+
2268
+ function process() {
2269
+ checkLock = false;
2270
+
2271
+ for (var index = 0, selectorsLength = selectors.length; index < selectorsLength; index++) {
2272
+ var $appeared = $(selectors[index]).filter(isAppeared);
2273
+
2274
+ $appeared
2275
+ .filter(isNotTriggered)
2276
+ .data('_appear_triggered', true)
2277
+ .trigger('appear', [$appeared]);
2278
+
2279
+ if ($priorAppeared[index]) {
2280
+ var $disappeared = $priorAppeared[index].not($appeared);
2281
+ $disappeared
2282
+ .data('_appear_triggered', false)
2283
+ .trigger('disappear', [$disappeared]);
2284
+ }
2285
+ $priorAppeared[index] = $appeared;
2286
+ }
2287
+ }
2288
+
2289
+ function addSelector(selector) {
2290
+ selectors.push(selector);
2291
+ $priorAppeared.push();
2292
+ }
2293
+
2294
+ $.expr.pseudos.appeared = $.expr.createPseudo(function (_arg) {
2295
+ return function (element) {
2296
+ var $element = $(element);
2297
+
2298
+ var windowLeft = $window.scrollLeft();
2299
+ var windowTop = $window.scrollTop();
2300
+ var offset = $element.offset();
2301
+ var left = offset.left;
2302
+ var top = offset.top;
2303
+
2304
+ if (top + $element.height() >= windowTop &&
2305
+ top - ($element.data('appear-top-offset') || 0) <= windowTop + $window.height() &&
2306
+ left + $element.width() >= windowLeft &&
2307
+ left - ($element.data('appear-left-offset') || 0) <= windowLeft + $window.width()) {
2308
+ return true;
2309
+ }
2310
+ return false;
2311
+ };
2312
+ });
2313
+
2314
+ $.fn.extend({
2315
+ appear: function (selector, options) {
2316
+ $.appear(this, options);
2317
+ return this;
2318
+ }
2319
+ });
2320
+
2321
+ $.fn.extend({
2322
+ appearStop: function (selector, options) {
2323
+ $.appearStop(this, options);
2324
+ return this;
2325
+ }
2326
+ });
2327
+
2328
+ $.extend({
2329
+ appearStop: function (selector, options) {
2330
+ var idx = -1;
2331
+ for (i = 0;i<selectors.length;i++) {
2332
+ if (selectors[i].get(0) == selector.get(0)) {
2333
+ idx = i;
2334
+ break;
2335
+ }
2336
+ }
2337
+ if (idx != -1) {
2338
+ selectors.splice(idx);
2339
+ }
2340
+ },
2341
+ appear: function (selector, options) {
2342
+ var opts = $.extend({}, defaults, options || {});
2343
+ var $ionContent = $("ion-content");
2344
+
2345
+ if (!$ionContent.length) {
2346
+ return;
2347
+ }
2348
+
2349
+ if (!$ionContent.get(0).checkBinded) {
2350
+ var onCheck = function () {
2351
+ if (checkLock) {
2352
+ return;
2353
+ }
2354
+ checkLock = true;
2355
+
2356
+ setTimeout(process, opts.interval);
2357
+ };
2358
+
2359
+ $ionContent.scroll(onCheck).resize(onCheck);
2360
+ $ionContent.get(0).checkBinded = true;
2361
+ }
2362
+
2363
+ if (opts.force_process) {
2364
+ setTimeout(process, opts.interval);
2365
+ }
2366
+
2367
+ addSelector(selector);
2368
+ }
2369
+ });
2370
+ }(function () {
2371
+ if (typeof module !== 'undefined') {
2372
+ // Node
2373
+ return require('jquery');
2374
+ }
2375
+ return jQuery;
2376
+ }()));
2377
+
2378
+ function maskDirectiveAsDate($compile, $translate, $parse) {
2379
+ return maskDirective($compile, $translate, 'as-date', $parse);
2380
+ }
2381
+
2382
+ function maskDirectiveMask($compile, $translate, $parse) {
2383
+ return maskDirective($compile, $translate, 'mask', $parse);
2384
+ }
2385
+
2386
+ function maskDirective($compile, $translate, attrName, $parse) {
2387
+ return {
2388
+ restrict: 'A',
2389
+ require: '?ngModel',
2390
+ link: function (scope, element, attrs, ngModelCtrl) {
2391
+
2392
+ var modelGetter = $parse(attrs['ngModel']);
2393
+ var modelSetter = modelGetter.assign;
2394
+
2395
+ if(attrName == 'as-date' && attrs.mask !== undefined)
2396
+ return;
2397
+
2398
+ var $element = $(element);
2399
+
2400
+ var type = $element.attr("type");
2401
+
2402
+ if (type == "checkbox" || type == "password")
2403
+ return;
2404
+
2405
+ $element.data("type", type);
2406
+
2407
+ $element.attr("type", "text");
2408
+
2409
+ if (ngModelCtrl) {
2410
+ ngModelCtrl.$formatters = [];
2411
+ ngModelCtrl.$parsers = [];
2412
+ }
2413
+
2414
+ if (attrs.asDate !== undefined && type == 'text')
2415
+ type = "date";
2416
+
2417
+ var textMask = true;
2418
+
2419
+ var removeMask = false;
2420
+
2421
+ var attrMask = attrs.mask || attrs.format;
2422
+
2423
+ if (!attrMask) {
2424
+ attrMask = parseMaskType(type, $translate);
2425
+ } else {
2426
+ attrMask = parseMaskType(attrMask, $translate);
2427
+ }
2428
+
2429
+ if (attrMask.endsWith(";0")) {
2430
+ removeMask = true;
2431
+ }
2432
+
2433
+ var mask = attrMask.replace(';1', '').replace(';0', '').replace(';local', '').trim();
2434
+
2435
+ var keyboard = attrs.keyboard;
2436
+ var keyboardDecimalChar = $translate.instant('keyboardDecimalChar') && $translate.instant('keyboardDecimalChar').length == 1 ? $translate.instant('keyboardDecimalChar') : ',';
2437
+
2438
+ if (keyboard) {
2439
+ parseKeyboardType(keyboard, keyboardDecimalChar, $element)
2440
+ }
2441
+
2442
+ if (mask == undefined || mask.length == 0) {
2443
+ return;
2444
+ }
2445
+
2446
+ if (type == 'date' || type == 'datetime' || type == 'datetime-local' || type == 'month' || type == 'time' || type == 'time-local' || type == 'week') {
2447
+ var useUTC = type == 'date' || type == 'datetime' || type == 'time';
2448
+
2449
+ if (!window.fixedTimeZone) {
2450
+ useUTC = false;
2451
+ }
2452
+
2453
+ if(type == 'date'){
2454
+ mask = moment.HTML5_FMT.DATE;
2455
+ $element.attr("type", "date");
2456
+ }
2457
+ else if(type == 'month'){
2458
+ mask = moment.HTML5_FMT.MONTH;
2459
+ $element.attr("type", "month");
2460
+ }else if( type == 'week'){
2461
+ mask = moment.HTML5_FMT.WEEK;
2462
+ $element.attr("type", "week");
2463
+ }else if( type == 'datetime' || type == 'datetime-local' ){
2464
+ mask = moment.HTML5_FMT.DATETIME_LOCAL;
2465
+ $element.attr("type", "datetime-local");
2466
+ }else if( type == 'time' || type == 'time-local' ){
2467
+ mask = moment.HTML5_FMT.TIME;
2468
+ $element.attr("type", "time");
2469
+ }
2470
+
2471
+ if (ngModelCtrl) {
2472
+ ngModelCtrl.$formatters.push(function (value) {
2473
+
2474
+ if(value){
2475
+ if(useUTC){
2476
+ return moment(value).utcOffset(window.timeZoneOffset).format(mask);
2477
+ }
2478
+ return moment(value).format(mask);
2479
+ }else{
2480
+ return null;
2481
+ }
2482
+ });
2483
+
2484
+ ngModelCtrl.$parsers.push(function (value) {
2485
+ if (value) {
2486
+ if(useUTC){
2487
+ return moment(value, mask).utcOffset(window.timeZoneOffset, true).toDate();
2488
+ }
2489
+ return moment(value,mask).toDate();
2490
+ }
2491
+ return new Date(value);
2492
+ });
2493
+ }
2494
+
2495
+ } else if (type == 'number' || type == 'money' || type == 'integer' || type == 'money-decimal') {
2496
+ removeMask = true;
2497
+ textMask = false;
2498
+
2499
+ var currency = mask.trim().replace(/\./g, '').replace(/\,/g, '').replace(/#/g, '').replace(/0/g, '').replace(/9/g, '');
2500
+
2501
+ if (!keyboard) {
2502
+ if(type == 'integer' || type == 'money-decimal') {
2503
+ keyboard = "integer"
2504
+ } else {
2505
+ keyboard = "number";
2506
+ }
2507
+ }
2508
+
2509
+ var prefix = '';
2510
+ var suffix = '';
2511
+ var thousands = '';
2512
+ var decimal = ',';
2513
+ var precision = 0;
2514
+
2515
+ if (mask.startsWith(currency)) {
2516
+ prefix = currency;
2517
+ }
2518
+ else if (mask.endsWith(currency)) {
2519
+ suffix = currency;
2520
+ }
2521
+
2522
+ var pureMask = mask.trim().replace(prefix, '').replace(suffix, '').trim();
2523
+
2524
+ if (pureMask.startsWith("#.")) {
2525
+ thousands = '.';
2526
+ }
2527
+ else if (pureMask.startsWith("#,")) {
2528
+ thousands = ',';
2529
+ }
2530
+
2531
+ var dMask = null;
2532
+
2533
+ if (pureMask.indexOf(",0") != -1) {
2534
+ decimal = ',';
2535
+ dMask = ",0";
2536
+ }
2537
+ else if (pureMask.indexOf(".0") != -1) {
2538
+ decimal = '.';
2539
+ dMask = ".0";
2540
+ }
2541
+
2542
+ if (dMask != null) {
2543
+ var strD = pureMask.substring(pureMask.indexOf(dMask) + 1);
2544
+ precision = strD.length;
2545
+ }
2546
+
2547
+ var inputmaskType = 'numeric';
2548
+
2549
+ if (precision == 0){
2550
+ inputmaskType = 'integer';
2551
+ }
2552
+
2553
+ var ipOptions = {
2554
+ 'rightAlign': (type == 'money' || type == 'money-decimal'),
2555
+ 'unmaskAsNumber': true,
2556
+ 'allowMinus': (type == 'money' || type == 'money-decimal') ? false : true,
2557
+ 'prefix': prefix,
2558
+ 'suffix': suffix,
2559
+ 'radixPoint': decimal,
2560
+ 'digits': precision,
2561
+ 'numericInput' : (type == 'money-decimal')
2562
+ };
2563
+
2564
+ if (thousands) {
2565
+ ipOptions['autoGroup'] = true;
2566
+ ipOptions['groupSeparator'] = thousands;
2567
+ }
2568
+
2569
+ if(type == 'money-decimal'){
2570
+ inputmaskType = 'currency';
2571
+ }
2572
+
2573
+ $(element).inputmask(inputmaskType, ipOptions);
2574
+
2575
+ useInputMaskPlugin(element, ngModelCtrl, scope, modelSetter, mask);
2576
+ }
2577
+ else if (type == 'text' || type == 'tel') {
2578
+
2579
+ if (!keyboard) {
2580
+ if(type == 'tel') {
2581
+ keyboard = "tel"
2582
+ }
2583
+ }
2584
+
2585
+ if(!attrs.maskPlaceholder){
2586
+ $element.mask(mask);
2587
+ useMaskPlugin(element, ngModelCtrl, scope, modelSetter, removeMask);
2588
+ }
2589
+ else{
2590
+ options = {};
2591
+ options['placeholder'] = attrs.maskPlaceholder
2592
+ $(element).inputmask(mask, options);
2593
+ $(element).off('keypress');
2594
+ if(removeMask){
2595
+ useInputMaskPlugin(element, ngModelCtrl, scope, modelSetter, mask);
2596
+ }
2597
+ }
2598
+
2599
+ }
2600
+ else if(type == 'email' || type == 'password' || type == 'search'){
2601
+ if (!keyboard) {
2602
+ keyboard = type;
2603
+ }
2604
+ }
2605
+
2606
+ if (keyboard) {
2607
+ parseKeyboardType(keyboard, keyboardDecimalChar, $element)
2608
+ }
2609
+ }
2610
+ }
2611
+ }
2612
+
2613
+ function useInputMaskPlugin(element, ngModelCtrl, scope, modelSetter, mask){
2614
+ //Forçando um set no model no evento de keyup.
2615
+ var $element = $(element);
2616
+ var unmaskedvalue = function(event) {
2617
+ var rawValue = $(this).inputmask('unmaskedvalue');
2618
+ $(this).data('rawvalue',rawValue);
2619
+ element._ignoreFormatter = true;
2620
+ scope.safeApply(function(){
2621
+ modelSetter(scope, rawValue);
2622
+ });
2623
+ };
2624
+
2625
+ $(element).off('keypress');
2626
+ $(element).on('keyup', unmaskedvalue);
2627
+
2628
+ if (ngModelCtrl) {
2629
+ ngModelCtrl.$formatters.push(function (value) {
2630
+ //Ignorar a formatação pela máscara na primeira vez
2631
+ if (element._ignoreFormatter) {
2632
+ element._ignoreFormatter = false;
2633
+ return $(element).val();
2634
+ }
2635
+ element._ignoreFormatter = false;
2636
+ if (value != undefined && value != null && value !== '') {
2637
+ return format(mask, value);
2638
+ }
2639
+ return null;
2640
+ });
2641
+ ngModelCtrl.$parsers.push(function (value) {
2642
+ if (value != undefined && value != null && value !== '') {
2643
+ var unmaskedvalue = $element.inputmask('unmaskedvalue');
2644
+ if (unmaskedvalue !== '')
2645
+ return unmaskedvalue;
2646
+ }
2647
+ return null;
2648
+ });
2649
+ }
2650
+ }
2651
+
2652
+ function useMaskPlugin(element, ngModelCtrl, scope, modelSetter, removeMask){
2653
+ var $element = $(element);
2654
+ var unmaskedvalue = function() {
2655
+ if (removeMask)
2656
+ $(this).data('rawvalue',$(this).cleanVal());
2657
+ }
2658
+
2659
+ $(element).on('keydown', unmaskedvalue).on('keyup', unmaskedvalue);
2660
+
2661
+ if (removeMask && ngModelCtrl) {
2662
+ ngModelCtrl.$formatters.push(function (value) {
2663
+ if (value) {
2664
+ return $element.masked(value);
2665
+ }
2666
+
2667
+ return null;
2668
+ });
2669
+
2670
+ ngModelCtrl.$parsers.push(function (value) {
2671
+ if (value) {
2672
+ return $element.cleanVal();
2673
+ }
2674
+
2675
+ return null;
2676
+ });
2677
+ }
2678
+ }
2679
+
2680
+ function parseKeyboardType(keyboard, keyboardDecimalChar, $element) {
2681
+ if(keyboard == 'integer' || keyboard == 'number' || keyboard == 'tel') {
2682
+ $element.attr('pattern', "\\d*");
2683
+ $element.attr('inputmode', "decimal");
2684
+ }
2685
+ if(keyboard == 'tel' || keyboard == 'email' || keyboard == 'search' || keyboard == 'password'){
2686
+ $element.attr('type', keyboard);
2687
+ }
2688
+ if(cordova.platformId === "ios" && keyboard == 'number') {
2689
+ $element.attr('decimal', "true");
2690
+ $element.attr('allow-multiple-decimals', "true");
2691
+ $element.attr('decimal-char', keyboardDecimalChar);
2692
+ }
2693
+ }
2694
+
2695
+ function parseMaskType(type, $translate) {
2696
+ if (type == "datetime" || type == "datetime-local") {
2697
+ type = $translate.instant('Format.DateTime');
2698
+ if (type == 'Format.DateTime')
2699
+ type = 'DD/MM/YYYY HH:mm:ss'
2700
+ }
2701
+
2702
+ else if (type == "date") {
2703
+ type = $translate.instant('Format.Date');
2704
+ if (type == 'Format.Date')
2705
+ type = 'DD/MM/YYYY'
2706
+ }
2707
+
2708
+ else if (type == "time" || type == "time-local") {
2709
+ type = $translate.instant('Format.Hour');
2710
+ if (type == 'Format.Hour')
2711
+ type = 'HH:mm:ss'
2712
+ }
2713
+
2714
+ else if (type == "month") {
2715
+ type = 'MMMM';
2716
+ }
2717
+
2718
+ else if (type == "number") {
2719
+ type = $translate.instant('Format.Decimal');
2720
+ if (type == 'Format.Decimal')
2721
+ type = '0,00'
2722
+ }
2723
+
2724
+ else if (type == "money" || type == "money-decimal") {
2725
+ type = $translate.instant('Format.Money');
2726
+ if (type == 'Format.Money')
2727
+ type = '#.#00,00'
2728
+ }
2729
+
2730
+ else if (type == "integer") {
2731
+ type = '0';
2732
+ }
2733
+
2734
+ else if (type == "week") {
2735
+ type = 'dddd';
2736
+ }
2737
+
2738
+ else if (type == "tel") {
2739
+ type = '(99) 99999-9999;0';
2740
+ }
2741
+
2742
+ else if (type == "text") {
2743
+ type = '';
2744
+ }
2745
+
2746
+ else if (type == "string") {
2747
+ type = '';
2748
+ }
2749
+
2750
+ return type;
2751
+ }
2752
+
2753
+ function transformText() {
2754
+ return {
2755
+ restrict: 'E',
2756
+ require: '?ngModel',
2757
+ link: function(scope, elem, attrs, ngModelCtrl) {
2758
+
2759
+ let textTransform = function(element, value) {
2760
+ if (element && value && (typeof value === 'string' || value instanceof String)) {
2761
+ if(element.css('text-transform') === 'uppercase'){
2762
+ return value.toUpperCase();
2763
+ } else if(element.css('text-transform') === 'lowercase'){
2764
+ return value.toLowerCase();
2765
+ }
2766
+ }
2767
+ return value
2768
+ };
2769
+
2770
+ if (ngModelCtrl) {
2771
+ ngModelCtrl.$formatters.push(function (result) {
2772
+ return textTransform(elem,result)
2773
+ });
2774
+
2775
+ ngModelCtrl.$parsers.push(function (result) {
2776
+ return textTransform(elem,result)
2777
+ });
2778
+ }
2779
+ }
2780
+ }
2781
+ }
2782
+
2783
+ function cronFrame($compile, $sce, $parse) {
2784
+ 'use strict';
2785
+ return {
2786
+ restrict: 'AE',
2787
+ link: function (scope, element, attrs, ngModelCtrl) {
2788
+
2789
+ scope.fragment = scope.fragment || {};
2790
+ var framentMap = scope.fragment[element.parent.id] || {};
2791
+
2792
+ scope.$watch(
2793
+ function () {
2794
+ return attrs.origin;
2795
+ },
2796
+ function (newVal) {
2797
+ let template = "";
2798
+ let style = attrs.style || "";
2799
+ let clazz = attrs.class || "";
2800
+ if (attrs.origin) {
2801
+ if (!attrs.type) {
2802
+ attrs.type = "include";
2803
+ }
2804
+ if (attrs.type == "include") {
2805
+ let str = `<div style="${style}" class="${clazz}" ng-include="'${attrs.origin}'" ng-if="true"></div>`;
2806
+ template = $(str);
2807
+ if (attrs.params) {
2808
+ try {
2809
+ let params = eval(attrs.params);
2810
+ for (let index in params) {
2811
+ let item = params[index];
2812
+ if ("expression" == item.type) {
2813
+ scope.$watch(item.value, function (newVal) {
2814
+ framentMap[item.key] = newVal;
2815
+ var elem = $(str);
2816
+ elem.attr(
2817
+ "onload",
2818
+ `params = ${JSON.stringify(framentMap)}`
2819
+ );
2820
+ var html = $compile(elem)(scope);
2821
+ element.html(html);
2822
+ });
2823
+ } else {
2824
+ framentMap[item.key] = item.value;
2825
+ }
2826
+ }
2827
+ template.attr(
2828
+ "onload",
2829
+ `params = ${JSON.stringify(framentMap)}`
2830
+ );
2831
+ } catch (err) {
2832
+ console.error(err);
2833
+ }
2834
+ }
2835
+ } else if (attrs.type == "frame") {
2836
+ var url = $sce.trustAsResourceUrl(attrs.origin);
2837
+ template = $(
2838
+ `<iframe style="${style}" class="${clazz}" ng-src="${url}" width="100%" height="100%" loading="lazy"></iframe>`
2839
+ );
2840
+ }
2841
+ }
2842
+ let html = angular.element(template);
2843
+ html = $compile(html)(scope);
2844
+ element.html("");
2845
+ element.append(html);
2846
+ }
2847
+ );
2848
+ }
2849
+ }
2850
+ }
2851
+
2852
+ app.kendoHelper = {
2853
+ parseOptionsCronToConfigKendo: function(options, dataSource, scope) {
2854
+
2855
+ let valuePrimitive = false;
2856
+
2857
+ if (!options.dynamic || options.dynamic=='false') {
2858
+ valuePrimitive = true;
2859
+ options.dataValueField = options.dataValueField || 'value';
2860
+ options.dataTextField = options.dataTextField || 'key';
2861
+ }
2862
+ else if (options.dataSourceScreen && options.dataSourceScreen.entityDataSource) {
2863
+ options.dataSourceScreen.entityDataSource.append = true;
2864
+ dataSource = app.kendoHelper.getDataSource(options.dataSourceScreen.entityDataSource, scope, true, options.dataSourceScreen.rowsPerPage);
2865
+ dataSource.transport.read = app.kendoHelper.getEventReadCombo;
2866
+ valuePrimitive = true;
2867
+ }
2868
+
2869
+ if (!options.dataValueField || options.dataValueField.trim() == '') {
2870
+ options.dataValueField = (options.dataTextField == null ? undefined : options.dataTextField);
2871
+ }
2872
+
2873
+ var getFieldType = function(field) {
2874
+ var fields = options.dataSourceScreen.entityDataSource.schemaFields;
2875
+ for (count = 0; count < fields.length; count++) {
2876
+ if (field == fields[count].name) {
2877
+ return fields[count].type.toLowerCase();
2878
+ break;
2879
+ }
2880
+ }
2881
+
2882
+ return null;
2883
+ };
2884
+
2885
+ var isValidDateType = function(field) {
2886
+ var dateTypes = ["date", "time", "datetime"];
2887
+ if(dateTypes.indexOf(field) > -1){
2888
+ return field;
2889
+ }
2890
+ return null;
2891
+ };
2892
+
2893
+ if (!options.customTemplate) {
2894
+ if(options.dataSourceScreen && options.dataSourceScreen.entityDataSource && options.dataSourceScreen.entityDataSource.schemaFields) {
2895
+ if (options.format || (isValidDateType(getFieldType(options.dataTextField)))) {
2896
+ options.template = "#= useMask(" + options.dataTextField + ",'" + options.format + "','" + getFieldType(options.dataTextField) + "') #";
2897
+ options.valueTemplate = "#= useMask(" + options.dataTextField + ",'" + options.format + "','" + getFieldType(options.dataTextField) + "') #";
2898
+ }
2899
+ }
2900
+ }
2901
+
2902
+ var config = {
2903
+ dataTextField: (options.dataTextField == null ? undefined : options.dataTextField),
2904
+ dataValueField: (options.dataValueField == null ? undefined : options.dataValueField),
2905
+ dataSource: dataSource,
2906
+ headerTemplate: (options.headerTemplate == null ? undefined : options.headerTemplate),
2907
+ template: (options.template == null ? undefined : options.template),
2908
+ placeholder: (options.placeholder == null ? undefined : options.placeholder),
2909
+ footerTemplate: (options.footerTemplate == null ? undefined : options.footerTemplate),
2910
+ filter: (options.filter == null ? undefined : options.filter),
2911
+ valuePrimitive : valuePrimitive,
2912
+ valueTemplate : (options.valueTemplate == null ? undefined : options.valueTemplate),
2913
+ suggest: true
2914
+ };
2915
+
2916
+ if (options.optionLabel) {
2917
+ options.optionLabelText = options.optionLabel;
2918
+ options.optionLabelValue = '';
2919
+ }
2920
+
2921
+ config.optionLabel = {};
2922
+ config.optionLabel[config.dataTextField] = options.optionLabelText === undefined ? "" : options.optionLabelText;
2923
+ config.optionLabel[config.dataValueField] = options.optionLabelValue === undefined ? null : options.optionLabelValue;
2924
+ return config;
2925
+ },
2926
+ getConfigCombobox: async function(options, scope) {
2927
+ let dataSource = {};
2928
+
2929
+ if (options) {
2930
+ if (!options.dynamic || options.dynamic=='false') {
2931
+ dataSource.data = (options.staticDataSource == null ? undefined : options.staticDataSource);
2932
+ for (let i = 0; i < dataSource.data.length; i++) {
2933
+ try {
2934
+ if (dataSource.data[i].key && dataSource.data[i].key.startsWith('cronapi.server(')) {
2935
+ dataSource.data[i].key = dataSource.data[i].key.replace('.run(','.toPromise().run(');
2936
+ }
2937
+
2938
+ let keyEvaluated = await scope.$eval(dataSource.data[i].key);
2939
+ dataSource.data[i].key = keyEvaluated !== undefined && keyEvaluated !== null ? keyEvaluated : dataSource.data[i].key;
2940
+ }
2941
+ catch (e) {
2942
+ dataSource.data[i].key = dataSource.data[i].key;
2943
+ }
2944
+ }
2945
+ }
2946
+
2947
+ config = this.parseOptionsCronToConfigKendo(options, dataSource, scope);
2948
+
2949
+ return config;
2950
+ }
2951
+
2952
+ return {};
2953
+ }
2954
+ };
2955
+