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.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/components/crn-QRCode.components.json +55 -0
- package/components/crn-anchor.components.json +290 -0
- package/components/crn-button-bar.components.json +64 -0
- package/components/crn-button.components.json +339 -0
- package/components/crn-card.components.json +95 -0
- package/components/crn-chart.components.json +57 -0
- package/components/crn-chat.components.json +8 -0
- package/components/crn-checkbox.components.json +330 -0
- package/components/crn-complex-search.components.json +43 -0
- package/components/crn-component.components.json +58 -0
- package/components/crn-container.components.json +21 -0
- package/components/crn-cron-crud.components.json +21 -0
- package/components/crn-datasource.components.json +188 -0
- package/components/crn-dynamic-file.components.json +142 -0
- package/components/crn-dynamic-image.components.json +156 -0
- package/components/crn-dynamic-select.components.json +111 -0
- package/components/crn-enterprise-combobox.components.json +162 -0
- package/components/crn-evaluation.components.json +64 -0
- package/components/crn-filter-button.components.json +327 -0
- package/components/crn-form-template.components.json +11 -0
- package/components/crn-frame.components.json +59 -0
- package/components/crn-header-button.components.json +63 -0
- package/components/crn-heading.components.json +109 -0
- package/components/crn-icon.components.json +305 -0
- package/components/crn-image.components.json +124 -0
- package/components/crn-infinite-scroll.components.json +29 -0
- package/components/crn-input-button.components.json +294 -0
- package/components/crn-input-floating.components.json +198 -0
- package/components/crn-input-icon.components.json +389 -0
- package/components/crn-input-inline.components.json +198 -0
- package/components/crn-input.components.json +185 -0
- package/components/crn-ion-content.components.json +24 -0
- package/components/crn-ion-footer-bar.components.json +515 -0
- package/components/crn-ion-header-bar.components.json +343 -0
- package/components/crn-ion-list.components.json +152 -0
- package/components/crn-ion-nav-buttons.components.json +63 -0
- package/components/crn-ion-segment-item.components.json +68 -0
- package/components/crn-ion-segment.components.json +1009 -0
- package/components/crn-ion-tab-item.components.json +50 -0
- package/components/crn-ion-tab.components.json +270 -0
- package/components/crn-item-options.components.json +26 -0
- package/components/crn-item-select.components.json +72 -0
- package/components/crn-item-swipe.components.json +62 -0
- package/components/crn-kendo-chat.components.json +88 -0
- package/components/crn-label.components.json +123 -0
- package/components/crn-list-avatar.components.json +266 -0
- package/components/crn-list-icon.components.json +255 -0
- package/components/crn-list-item-avatar.components.json +242 -0
- package/components/crn-list-item-icon.components.json +248 -0
- package/components/crn-list-item-thumbnail.components.json +232 -0
- package/components/crn-list-item.components.json +166 -0
- package/components/crn-list-simple.components.json +186 -0
- package/components/crn-list-swipe.components.json +105 -0
- package/components/crn-list-thumbnail.components.json +254 -0
- package/components/crn-list.components.json +75 -0
- package/components/crn-map.components.json +55 -0
- package/components/crn-mobile-menu.components.json +32 -0
- package/components/crn-multiselect.components.json +110 -0
- package/components/crn-navbar.components.json +107 -0
- package/components/crn-option-button.components.json +83 -0
- package/components/crn-paragraph.components.json +120 -0
- package/components/crn-radio.components.json +90 -0
- package/components/crn-radioOption.components.json +23 -0
- package/components/crn-range.components.json +310 -0
- package/components/crn-rating.components.json +226 -0
- package/components/crn-search.components.json +210 -0
- package/components/crn-select-options.components.json +17 -0
- package/components/crn-select.components.json +93 -0
- package/components/crn-signature-pad.components.json +35 -0
- package/components/crn-slider-item.components.json +251 -0
- package/components/crn-slider.components.json +106 -0
- package/components/crn-spacer.components.json +21 -0
- package/components/crn-start.components.json +13 -0
- package/components/crn-tabs-icon-only-item.components.json +85 -0
- package/components/crn-tabs-icon-only.components.json +508 -0
- package/components/crn-tabs.components.json +36 -0
- package/components/crn-textarea.components.json +109 -0
- package/components/crn-toggle.components.json +305 -0
- package/components/crn-video.components.json +67 -0
- package/components/css/app.css +140 -0
- package/components/css/background-color.css +125 -0
- package/components/css/chatStyle.css +221 -0
- package/components/css/color-default.css +279 -0
- package/components/css/crn-ion-footer-bar.css +77 -0
- package/components/css/crn-ion-segment.css +961 -0
- package/components/css/icon-size.css +15 -0
- package/components/css/multiselect-editor.css +102 -0
- package/components/css/tabs-color.css +413 -0
- package/components/js/format.min.js +2 -0
- package/components/js/jquery.inputmask.bundle.js +3883 -0
- package/components/js/jquery.mask.min.js +19 -0
- package/components/js/pouchdb.cordova-sqlite.js +5540 -0
- package/components/js/qrcode.js +1319 -0
- package/components/reports/BOOLEAN.parameter.html +10 -0
- package/components/reports/DATE.parameter.html +4 -0
- package/components/reports/DOUBLE.parameter.html +4 -0
- package/components/reports/FLOAT.parameter.html +4 -0
- package/components/reports/INTEGER.parameter.html +4 -0
- package/components/reports/LONG.parameter.html +5 -0
- package/components/reports/STRING.parameter.html +5 -0
- package/components/reports/reports.parameters.html +20 -0
- package/components/templates/advanced.list.designtime.html +46 -0
- package/components/templates/advanced.list.template.html +1 -0
- package/components/templates/anchor.template.html +1 -0
- package/components/templates/button-bar.template.html +5 -0
- package/components/templates/button-report.template.html +1 -0
- package/components/templates/button.template.html +4 -0
- package/components/templates/card.template.html +7 -0
- package/components/templates/chat.template.html +39 -0
- package/components/templates/checkbox.template.html +8 -0
- package/components/templates/combobox.designtime.html +12 -0
- package/components/templates/combobox.template.html +8 -0
- package/components/templates/complexsearch.template.html +7 -0
- package/components/templates/crn-frame.designtime.html +11 -0
- package/components/templates/crn-frame.template.html +2 -0
- package/components/templates/crn-ion-segment-item.template.html +6 -0
- package/components/templates/crn-ion-segment.template.html +32 -0
- package/components/templates/crn-signature-pad.designtime.html +5 -0
- package/components/templates/crn-signature-pad.template.html +1 -0
- package/components/templates/cron-combobox.designtime.html +6 -0
- package/components/templates/cron-combobox.template.html +5 -0
- package/components/templates/cron-crud.template.html +7 -0
- package/components/templates/cron-mobile-menu.designtime.html +10 -0
- package/components/templates/div.horizontal.template.html +27 -0
- package/components/templates/div.vertical.template.html +11 -0
- package/components/templates/dynamic-combobox.template.html +6 -0
- package/components/templates/dynamicfile.designtime.html +5 -0
- package/components/templates/dynamicfile.template.html +8 -0
- package/components/templates/dynamicimage.designtime.html +8 -0
- package/components/templates/dynamicimage.template.html +9 -0
- package/components/templates/evaluation.designtime.html +7 -0
- package/components/templates/evaluation.template.html +1 -0
- package/components/templates/filterbutton.template.html +3 -0
- package/components/templates/floattextinput.designtime.html +4 -0
- package/components/templates/floattextinput.template.html +4 -0
- package/components/templates/form.template.html +5 -0
- package/components/templates/header.template.html +3 -0
- package/components/templates/icontextinput.template.html +4 -0
- package/components/templates/image.template.html +18 -0
- package/components/templates/inlinetextinput.template.html +4 -0
- package/components/templates/ion-footer-bar.template.html +15 -0
- package/components/templates/ion-header-bar.template.html +13 -0
- package/components/templates/ion-tab-item.designtime.html +5 -0
- package/components/templates/ion-tab.template.html +8 -0
- package/components/templates/item.avatar.template.html +5 -0
- package/components/templates/item.icon.template.html +4 -0
- package/components/templates/item.options.template.html +14 -0
- package/components/templates/item.slider.template.html +4 -0
- package/components/templates/item.swipe.template.html +14 -0
- package/components/templates/item.template.html +5 -0
- package/components/templates/item.thumbnail.template.html +5 -0
- package/components/templates/kendo-chat.designtime.html +20 -0
- package/components/templates/kendo-chat.template.html +75 -0
- package/components/templates/list.avatar.template.html +7 -0
- package/components/templates/list.icon.template.html +6 -0
- package/components/templates/list.swipe.template.html +16 -0
- package/components/templates/list.template.html +5 -0
- package/components/templates/list.thumbnail.template.html +7 -0
- package/components/templates/maps.designtime.html +1 -0
- package/components/templates/maps.template.html +1 -0
- package/components/templates/menu.template.html +21 -0
- package/components/templates/multiselect.template.html +5 -0
- package/components/templates/nav.bar.template.html +5 -0
- package/components/templates/public.menu.template.html +21 -0
- package/components/templates/publicMenu.template.html +14 -0
- package/components/templates/radiogroup-dynamic.template.html +15 -0
- package/components/templates/radiogroup.template.html +21 -0
- package/components/templates/range.template.html +5 -0
- package/components/templates/rating.template.html +9 -0
- package/components/templates/search.template.html +6 -0
- package/components/templates/slider.template.html +20 -0
- package/components/templates/tabs-icon-only.template.html +16 -0
- package/components/templates/tabs.template.html +5 -0
- package/components/templates/textarea.template.html +1 -0
- package/components/templates/textinput.template.html +3 -0
- package/components/templates/textinputbutton.template.html +12 -0
- package/components/templates/title.template.html +1 -0
- package/components/templates/toggle-dynamic.template.html +11 -0
- package/components/templates/toggle.template.html +9 -0
- package/components/templates/video.designtime.html +2 -0
- package/components/templates/video.template.html +1 -0
- package/components/templates/views/public/home.view.html +16 -0
- package/components/templates/views/public/menu.view.html +20 -0
- package/components/upload/upload.html +41 -0
- package/css/app.css +0 -0
- package/css/app_2.9.css +426 -0
- package/css/cronos.css +63 -0
- package/css/fonts/SourceSansPro/SourceSansPro-Black.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-BlackIt.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-Bold.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-BoldIt.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-ExtraLight.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-ExtraLightIt.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-It.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-Light.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-LightIt.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-Regular.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-Semibold.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro-SemiboldIt.otf +0 -0
- package/css/fonts/SourceSansPro/SourceSansPro.css +83 -0
- package/css/fonts/WorkSans/WorkSans-Black.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-BlackItalic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-Bold.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-BoldItalic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-ExtraBold.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-ExtraBoldItalic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-ExtraLight.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-ExtraLightItalic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-Italic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-Light.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-LightItalic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-Medium.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-MediumItalic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-Regular.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-SemiBold.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-SemiBoldItalic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-Thin.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans-ThinItalic.ttf +0 -0
- package/css/fonts/WorkSans/WorkSans.css +97 -0
- package/css/fonts/arial-narrow/arial-narrow-bold-italic.ttf +0 -0
- package/css/fonts/arial-narrow/arial-narrow-bold.ttf +0 -0
- package/css/fonts/arial-narrow/arial-narrow-italic.ttf +0 -0
- package/css/fonts/arial-narrow/arial-narrow.css +27 -0
- package/css/fonts/arial-narrow/arial-narrow.ttf +0 -0
- package/css/fonts/calibri/calibri-bold-italic.ttf +0 -0
- package/css/fonts/calibri/calibri-bold.ttf +0 -0
- package/css/fonts/calibri/calibri-italic.ttf +0 -0
- package/css/fonts/calibri/calibri-light-italic.ttf +0 -0
- package/css/fonts/calibri/calibri-light.ttf +0 -0
- package/css/fonts/calibri/calibri-regular.ttf +0 -0
- package/css/fonts/calibri/calibri.css +41 -0
- package/css/fonts/georgia/georgia.css +27 -0
- package/css/fonts/georgia/georgia_bold.ttf +0 -0
- package/css/fonts/georgia/georgia_bold_italic.ttf +0 -0
- package/css/fonts/georgia/georgia_italic.ttf +0 -0
- package/css/fonts/georgia/georgia_regular.ttf +0 -0
- package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.eot +0 -0
- package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.svg +288 -0
- package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.ttf +0 -0
- package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.woff +0 -0
- package/css/fonts/glyphicons-halflings/glyphicons-halflings-regular.woff2 +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeue.css +125 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Bd.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-BdIt.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Blk.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-BlkIt.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Hv.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-HvIt.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-It.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Lt.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-LtIt.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Md.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-MdIt.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Roman.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-Th.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-ThIt.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-UltLt.otf +0 -0
- package/css/fonts/helvetica-neue/HelveticaNeueLTPro-UltLtIt.otf +0 -0
- package/css/fonts/inter/Inter-Black.otf +0 -0
- package/css/fonts/inter/Inter-BlackItalic.otf +0 -0
- package/css/fonts/inter/Inter-Bold.otf +0 -0
- package/css/fonts/inter/Inter-BoldItalic.otf +0 -0
- package/css/fonts/inter/Inter-ExtraBold.otf +0 -0
- package/css/fonts/inter/Inter-ExtraBoldItalic.otf +0 -0
- package/css/fonts/inter/Inter-ExtraLightItalic.otf +0 -0
- package/css/fonts/inter/Inter-Italic.otf +0 -0
- package/css/fonts/inter/Inter-Light.otf +0 -0
- package/css/fonts/inter/Inter-LightItalic.otf +0 -0
- package/css/fonts/inter/Inter-Medium.otf +0 -0
- package/css/fonts/inter/Inter-MediumItalic.otf +0 -0
- package/css/fonts/inter/Inter-Regular.otf +0 -0
- package/css/fonts/inter/Inter-SemiBold.otf +0 -0
- package/css/fonts/inter/Inter-SemiBoldItalic.otf +0 -0
- package/css/fonts/inter/Inter-Thin.otf +0 -0
- package/css/fonts/inter/Inter-ThinItalic.otf +0 -0
- package/css/fonts/inter/inter.css +104 -0
- package/css/fonts/lato/Lato-Black.ttf +0 -0
- package/css/fonts/lato/Lato-BlackItalic.ttf +0 -0
- package/css/fonts/lato/Lato-Bold.ttf +0 -0
- package/css/fonts/lato/Lato-BoldItalic.ttf +0 -0
- package/css/fonts/lato/Lato-Hairline.ttf +0 -0
- package/css/fonts/lato/Lato-HairlineItalic.ttf +0 -0
- package/css/fonts/lato/Lato-Heavy.ttf +0 -0
- package/css/fonts/lato/Lato-HeavyItalic.ttf +0 -0
- package/css/fonts/lato/Lato-Italic.ttf +0 -0
- package/css/fonts/lato/Lato-Light.ttf +0 -0
- package/css/fonts/lato/Lato-LightItalic.ttf +0 -0
- package/css/fonts/lato/Lato-Medium.ttf +0 -0
- package/css/fonts/lato/Lato-MediumItalic.ttf +0 -0
- package/css/fonts/lato/Lato-Regular.ttf +0 -0
- package/css/fonts/lato/Lato-Semibold.ttf +0 -0
- package/css/fonts/lato/Lato-SemiboldItalic.ttf +0 -0
- package/css/fonts/lato/Lato-Thin.ttf +0 -0
- package/css/fonts/lato/Lato-ThinItalic.ttf +0 -0
- package/css/fonts/lato/lato.css +125 -0
- package/css/fonts/material-icons/font-material-icon.css +22 -0
- package/css/fonts/material-icons/material-icons.woff2 +0 -0
- package/css/fonts/news-cycle/NewsCycle-Bold.ttf +0 -0
- package/css/fonts/news-cycle/NewsCycle-Regular.ttf +0 -0
- package/css/fonts/news-cycle/NewsCycle.css +13 -0
- package/css/fonts/nunito/nunito.css +270 -0
- package/css/fonts/open-sans/OpenSans-Bold.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-BoldItalic.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-ExtraBold.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-ExtraBoldItalic.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-Italic.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-Light.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-LightItalic.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-Regular.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-Semibold.ttf +0 -0
- package/css/fonts/open-sans/OpenSans-SemiboldItalic.ttf +0 -0
- package/css/fonts/open-sans/OpenSans.css +69 -0
- package/css/fonts/raleway/Raleway-Black.ttf +0 -0
- package/css/fonts/raleway/Raleway-BlackItalic.ttf +0 -0
- package/css/fonts/raleway/Raleway-Bold.ttf +0 -0
- package/css/fonts/raleway/Raleway-BoldItalic.ttf +0 -0
- package/css/fonts/raleway/Raleway-ExtraBold.ttf +0 -0
- package/css/fonts/raleway/Raleway-ExtraBoldItalic.ttf +0 -0
- package/css/fonts/raleway/Raleway-ExtraLight.ttf +0 -0
- package/css/fonts/raleway/Raleway-ExtraLightItalic.ttf +0 -0
- package/css/fonts/raleway/Raleway-Italic.ttf +0 -0
- package/css/fonts/raleway/Raleway-Light.ttf +0 -0
- package/css/fonts/raleway/Raleway-LightItalic.ttf +0 -0
- package/css/fonts/raleway/Raleway-Medium.ttf +0 -0
- package/css/fonts/raleway/Raleway-MediumItalic.ttf +0 -0
- package/css/fonts/raleway/Raleway-Regular.ttf +0 -0
- package/css/fonts/raleway/Raleway-SemiBold.ttf +0 -0
- package/css/fonts/raleway/Raleway-SemiBoldItalic.ttf +0 -0
- package/css/fonts/raleway/Raleway-Thin.ttf +0 -0
- package/css/fonts/raleway/Raleway-ThinItalic.ttf +0 -0
- package/css/fonts/raleway/raleway.css +111 -0
- package/css/fonts/rawline/rawline-100.ttf +0 -0
- package/css/fonts/rawline/rawline-100i.ttf +0 -0
- package/css/fonts/rawline/rawline-200.ttf +0 -0
- package/css/fonts/rawline/rawline-200i.ttf +0 -0
- package/css/fonts/rawline/rawline-300.ttf +0 -0
- package/css/fonts/rawline/rawline-300i.ttf +0 -0
- package/css/fonts/rawline/rawline-400.ttf +0 -0
- package/css/fonts/rawline/rawline-400i.ttf +0 -0
- package/css/fonts/rawline/rawline-500.ttf +0 -0
- package/css/fonts/rawline/rawline-500i.ttf +0 -0
- package/css/fonts/rawline/rawline-600.ttf +0 -0
- package/css/fonts/rawline/rawline-600i.ttf +0 -0
- package/css/fonts/rawline/rawline-700.ttf +0 -0
- package/css/fonts/rawline/rawline-700i.ttf +0 -0
- package/css/fonts/rawline/rawline-800.ttf +0 -0
- package/css/fonts/rawline/rawline-800i.ttf +0 -0
- package/css/fonts/rawline/rawline-900.ttf +0 -0
- package/css/fonts/rawline/rawline-900i.ttf +0 -0
- package/css/fonts/rawline/rawline.css +111 -0
- package/css/fonts/roboto/Roboto-Black.ttf +0 -0
- package/css/fonts/roboto/Roboto-BlackItalic.ttf +0 -0
- package/css/fonts/roboto/Roboto-Bold.ttf +0 -0
- package/css/fonts/roboto/Roboto-BoldItalic.ttf +0 -0
- package/css/fonts/roboto/Roboto-Italic.ttf +0 -0
- package/css/fonts/roboto/Roboto-Light.ttf +0 -0
- package/css/fonts/roboto/Roboto-LightItalic.ttf +0 -0
- package/css/fonts/roboto/Roboto-Medium.ttf +0 -0
- package/css/fonts/roboto/Roboto-MediumItalic.ttf +0 -0
- package/css/fonts/roboto/Roboto-Regular.ttf +0 -0
- package/css/fonts/roboto/Roboto-Thin.ttf +0 -0
- package/css/fonts/roboto/Roboto-ThinItalic.ttf +0 -0
- package/css/fonts/roboto/roboto.css +83 -0
- package/css/fonts/times-new-roman/Times-New-Roman.css +27 -0
- package/css/fonts/times-new-roman/times-new-roman-bold-italic.ttf +0 -0
- package/css/fonts/times-new-roman/times-new-roman-italic.ttf +0 -0
- package/css/fonts/times-new-roman/times-new-roman.ttf +0 -0
- package/css/fonts/times-new-roman/times-new-romanbold.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-B.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-BI.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-C.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-L.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-LI.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-M.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-MI.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-R.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu-RI.ttf +0 -0
- package/css/fonts/ubuntu/Ubuntu.css +55 -0
- package/css/groupingOfCss/checkbox.css +75 -0
- package/css/groupingOfCss/col.css +728 -0
- package/css/groupingOfCss/dynamicImage.css +24 -0
- package/css/groupingOfCss/import_groupingOfCss.css +5 -0
- package/css/groupingOfCss/qrCodeCronapp.css +4 -0
- package/css/groupingOfCss/upload-image.css +68 -0
- package/css/old/modal.css +156 -0
- package/css/themes/aquamarine.min.css +5 -0
- package/css/themes/cerulean.min.css +5 -0
- package/css/themes/cosmo.min.css +5 -0
- package/css/themes/custom/aquamarine/bar-aquamarine.css +138 -0
- package/css/themes/custom/aquamarine/button-aquamarine.css +306 -0
- package/css/themes/custom/aquamarine/crn-ion-segment-aquamarine.css +60 -0
- package/css/themes/custom/aquamarine/custom-aquamarine.css +842 -0
- package/css/themes/custom/aquamarine/img/arrow-gray.svg +3 -0
- package/css/themes/custom/aquamarine/img/arrow-white.svg +3 -0
- package/css/themes/custom/cerulean/button-cerulean.css +528 -0
- package/css/themes/custom/cerulean/crn-ion-segment-cerulean.css +68 -0
- package/css/themes/custom/cerulean/custom-cerulean.css +697 -0
- package/css/themes/custom/cosmo/custom-cosmo.css +662 -0
- package/css/themes/custom/cyborg/custom-cyborg.css +773 -0
- package/css/themes/custom/darkly/custom-darkly.css +758 -0
- package/css/themes/custom/dsgov/button-dsgov.css +252 -0
- package/css/themes/custom/dsgov/custom-dsgov.css +932 -0
- package/css/themes/custom/flatly/custom-flatly.css +636 -0
- package/css/themes/custom/fuse/button-fuse.css +362 -0
- package/css/themes/custom/fuse/custom-fuse.css +777 -0
- package/css/themes/custom/journal/custom-journal.css +642 -0
- package/css/themes/custom/krypton/custom-krypton.css +1696 -0
- package/css/themes/custom/lumen/button-lumen.css +81 -0
- package/css/themes/custom/lumen/crn-ion-header-bar.css +59 -0
- package/css/themes/custom/lumen/custom-lumen.css +687 -0
- package/css/themes/custom/material/custom-material.css +635 -0
- package/css/themes/custom/material-round/custom-material-round.css +1761 -0
- package/css/themes/custom/materialui/custom-materialui.css +265 -0
- package/css/themes/custom/materialui/font/Roboto-Black.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-Black.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-BlackItalic.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-BlackItalic.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-Bold.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-Bold.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-BoldItalic.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-BoldItalic.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-Italic.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-Italic.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-Light.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-Light.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-LightItalic.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-LightItalic.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-Medium.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-Medium.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-MediumItalic.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-MediumItalic.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-Regular.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-Regular.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-Thin.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-Thin.woff2 +0 -0
- package/css/themes/custom/materialui/font/Roboto-ThinItalic.woff +0 -0
- package/css/themes/custom/materialui/font/Roboto-ThinItalic.woff2 +0 -0
- package/css/themes/custom/materialui/font/fonts.css +108 -0
- package/css/themes/custom/materialui/img/arrow-gray.svg +11 -0
- package/css/themes/custom/materialui/img/arrow-white.svg +11 -0
- package/css/themes/custom/nature/custom-nature.css +1710 -0
- package/css/themes/custom/paper/button-paper.css +5 -0
- package/css/themes/custom/paper/custom-paper.css +676 -0
- package/css/themes/custom/readable/button-readable.css +82 -0
- package/css/themes/custom/readable/crn-ion-segment-readable.css +143 -0
- package/css/themes/custom/readable/custom-readable.css +641 -0
- package/css/themes/custom/sandstone/custom-sandstone.css +615 -0
- package/css/themes/custom/simplex/button-simplex.css +472 -0
- package/css/themes/custom/simplex/crn-ion-segment-simplex.css +60 -0
- package/css/themes/custom/simplex/custom-simplex.css +625 -0
- package/css/themes/custom/slate/button-slate.css +477 -0
- package/css/themes/custom/slate/crn-ion-segment-slate.css +102 -0
- package/css/themes/custom/slate/custom-slate.css +635 -0
- package/css/themes/custom/spacelab/bar-spacelab.css +143 -0
- package/css/themes/custom/spacelab/button-spacelab.css +471 -0
- package/css/themes/custom/spacelab/crn-ion-segment-spacelab.css +60 -0
- package/css/themes/custom/spacelab/custom-spacelab.css +653 -0
- package/css/themes/custom/superhero/custom-superhero.css +637 -0
- package/css/themes/custom/theme-general/button.css +526 -0
- package/css/themes/custom/theme-general/checkbox.css +546 -0
- package/css/themes/custom/theme-general/crn-ion-header-bar.css +418 -0
- package/css/themes/custom/theme-general/crn-ion-segment.css +234 -0
- package/css/themes/custom/theme-general/icon.css +39 -0
- package/css/themes/custom/theme-general/input.css +50 -0
- package/css/themes/custom/theme-general/login.css +317 -0
- package/css/themes/custom/theme-general/modal.css +135 -0
- package/css/themes/custom/theme-general/range.css +79 -0
- package/css/themes/custom/theme-general/reset-password.css +62 -0
- package/css/themes/custom/theme-general/signup.css +39 -0
- package/css/themes/custom/theme-general/theme-general.css +263 -0
- package/css/themes/custom/theme-general/toggle.css +190 -0
- package/css/themes/custom/united/custom-united.css +627 -0
- package/css/themes/custom/yeti/button-yeti.css +86 -0
- package/css/themes/custom/yeti/custom-yeti.css +622 -0
- package/css/themes/cyborg.min.css +5 -0
- package/css/themes/darkly.min.css +5 -0
- package/css/themes/dsgov.min.css +5 -0
- package/css/themes/flatly.min.css +5 -0
- package/css/themes/fuse.min.css +5 -0
- package/css/themes/journal.min.css +5 -0
- package/css/themes/krypton.min.css +5 -0
- package/css/themes/lumen.min.css +5 -0
- package/css/themes/material-round.min.css +5 -0
- package/css/themes/material.min.css +5 -0
- package/css/themes/materialui.min.css +5 -0
- package/css/themes/nature.min.css +5 -0
- package/css/themes/paper.min.css +5 -0
- package/css/themes/readable.min.css +5 -0
- package/css/themes/sandstone.min.css +5 -0
- package/css/themes/simplex.min.css +5 -0
- package/css/themes/slate.min.css +5 -0
- package/css/themes/spacelab.min.css +5 -0
- package/css/themes/superhero.min.css +5 -0
- package/css/themes/theme.editor.view.html +890 -0
- package/css/themes/united.min.css +5 -0
- package/css/themes/yeti.min.css +5 -0
- package/deprecated/components/crn-QRCode.components.json +54 -0
- package/deprecated/components/crn-anchor.components.json +89 -0
- package/deprecated/components/crn-button-bar.components.json +64 -0
- package/deprecated/components/crn-button.components.json +316 -0
- package/deprecated/components/crn-card.components.json +95 -0
- package/deprecated/components/crn-chart.components.json +57 -0
- package/deprecated/components/crn-chat.components.json +8 -0
- package/deprecated/components/crn-checkbox.components.json +184 -0
- package/deprecated/components/crn-complex-search.components.json +43 -0
- package/deprecated/components/crn-container.components.json +21 -0
- package/deprecated/components/crn-cron-crud.components.json +21 -0
- package/deprecated/components/crn-datasource.components.json +181 -0
- package/deprecated/components/crn-dynamic-file.components.json +85 -0
- package/deprecated/components/crn-dynamic-image.components.json +153 -0
- package/deprecated/components/crn-dynamic-select.components.json +111 -0
- package/deprecated/components/crn-evaluation.components.json +64 -0
- package/deprecated/components/crn-filter-button.components.json +305 -0
- package/deprecated/components/crn-form-template.components.json +11 -0
- package/deprecated/components/crn-header-button.components.json +63 -0
- package/deprecated/components/crn-heading.components.json +109 -0
- package/deprecated/components/crn-icon.components.json +258 -0
- package/deprecated/components/crn-image.components.json +121 -0
- package/deprecated/components/crn-infinite-scroll.components.json +32 -0
- package/deprecated/components/crn-input-button.components.json +205 -0
- package/deprecated/components/crn-input-floating.components.json +196 -0
- package/deprecated/components/crn-input-icon.components.json +187 -0
- package/deprecated/components/crn-input-inline.components.json +198 -0
- package/deprecated/components/crn-input.components.json +185 -0
- package/deprecated/components/crn-ion-content.components.json +24 -0
- package/deprecated/components/crn-ion-footer-bar.components.json +351 -0
- package/deprecated/components/crn-ion-header-bar.components.json +211 -0
- package/deprecated/components/crn-ion-list.components.json +152 -0
- package/deprecated/components/crn-ion-nav-buttons.components.json +63 -0
- package/deprecated/components/crn-ion-segment-item.components.json +65 -0
- package/deprecated/components/crn-ion-segment.components.json +974 -0
- package/deprecated/components/crn-ion-tab-item.components.json +50 -0
- package/deprecated/components/crn-ion-tab.components.json +138 -0
- package/deprecated/components/crn-item-options.components.json +26 -0
- package/deprecated/components/crn-item-select.components.json +69 -0
- package/deprecated/components/crn-item-swipe.components.json +62 -0
- package/deprecated/components/crn-kendo-chat.components.json +88 -0
- package/deprecated/components/crn-label.components.json +113 -0
- package/deprecated/components/crn-list-avatar.components.json +260 -0
- package/deprecated/components/crn-list-icon.components.json +249 -0
- package/deprecated/components/crn-list-item-avatar.components.json +236 -0
- package/deprecated/components/crn-list-item-icon.components.json +242 -0
- package/deprecated/components/crn-list-item-thumbnail.components.json +226 -0
- package/deprecated/components/crn-list-item.components.json +160 -0
- package/deprecated/components/crn-list-simple.components.json +180 -0
- package/deprecated/components/crn-list-swipe.components.json +105 -0
- package/deprecated/components/crn-list-thumbnail.components.json +248 -0
- package/deprecated/components/crn-list.components.json +75 -0
- package/deprecated/components/crn-map.components.json +55 -0
- package/deprecated/components/crn-mobile-menu.components.json +32 -0
- package/deprecated/components/crn-multiselect.components.json +110 -0
- package/deprecated/components/crn-navbar.components.json +106 -0
- package/deprecated/components/crn-option-button.components.json +72 -0
- package/deprecated/components/crn-paragraph.components.json +110 -0
- package/deprecated/components/crn-radio.components.json +90 -0
- package/deprecated/components/crn-radioOption.components.json +23 -0
- package/deprecated/components/crn-range.components.json +106 -0
- package/deprecated/components/crn-rating.components.json +189 -0
- package/deprecated/components/crn-search.components.json +210 -0
- package/deprecated/components/crn-select-options.components.json +17 -0
- package/deprecated/components/crn-select.components.json +93 -0
- package/deprecated/components/crn-slider-item.components.json +236 -0
- package/deprecated/components/crn-slider.components.json +105 -0
- package/deprecated/components/crn-spacer.components.json +21 -0
- package/deprecated/components/crn-start.components.json +10 -0
- package/deprecated/components/crn-tabs-icon-only-item.components.json +85 -0
- package/deprecated/components/crn-tabs-icon-only.components.json +382 -0
- package/deprecated/components/crn-tabs.components.json +36 -0
- package/deprecated/components/crn-textarea.components.json +109 -0
- package/deprecated/components/crn-toggle.components.json +161 -0
- package/deprecated/components/crn-video.components.json +67 -0
- package/deprecated/components/css/app.css +78 -0
- package/deprecated/components/css/background-color.css +121 -0
- package/deprecated/components/css/chatStyle.css +221 -0
- package/deprecated/components/css/color-default.css +83 -0
- package/deprecated/components/css/crn-ion-segment.css +786 -0
- package/deprecated/components/css/icon-size.css +15 -0
- package/deprecated/components/css/multiselect-editor.css +119 -0
- package/deprecated/components/css/tabs-color.css +248 -0
- package/deprecated/components/js/format.min.js +2 -0
- package/deprecated/components/js/jquery.inputmask.bundle.js +3883 -0
- package/deprecated/components/js/jquery.mask.min.js +19 -0
- package/deprecated/components/js/pouchdb.cordova-sqlite.js +5540 -0
- package/deprecated/components/js/qrcode.js +1319 -0
- package/deprecated/components/reports/BOOLEAN.parameter.html +10 -0
- package/deprecated/components/reports/DATE.parameter.html +4 -0
- package/deprecated/components/reports/DOUBLE.parameter.html +4 -0
- package/deprecated/components/reports/FLOAT.parameter.html +4 -0
- package/deprecated/components/reports/INTEGER.parameter.html +4 -0
- package/deprecated/components/reports/LONG.parameter.html +5 -0
- package/deprecated/components/reports/STRING.parameter.html +5 -0
- package/deprecated/components/reports/reports.parameters.html +20 -0
- package/deprecated/components/templates/advanced.list.designtime.html +33 -0
- package/deprecated/components/templates/advanced.list.template.html +1 -0
- package/deprecated/components/templates/anchor.template.html +1 -0
- package/deprecated/components/templates/button-bar.template.html +5 -0
- package/deprecated/components/templates/button-report.template.html +1 -0
- package/deprecated/components/templates/button.template.html +4 -0
- package/deprecated/components/templates/card.template.html +7 -0
- package/deprecated/components/templates/chat.template.html +39 -0
- package/deprecated/components/templates/checkbox.template.html +8 -0
- package/deprecated/components/templates/combobox.designtime.html +12 -0
- package/deprecated/components/templates/combobox.template.html +8 -0
- package/deprecated/components/templates/complexsearch.template.html +7 -0
- package/deprecated/components/templates/crn-ion-segment-item.template.html +6 -0
- package/deprecated/components/templates/crn-ion-segment.template.html +27 -0
- package/deprecated/components/templates/cron-crud.template.html +7 -0
- package/deprecated/components/templates/cron-mobile-menu.designtime.html +10 -0
- package/deprecated/components/templates/div.horizontal.template.html +27 -0
- package/deprecated/components/templates/div.vertical.template.html +11 -0
- package/deprecated/components/templates/dynamic-combobox.template.html +6 -0
- package/deprecated/components/templates/dynamicfile.template.html +8 -0
- package/deprecated/components/templates/dynamicimage.designtime.html +10 -0
- package/deprecated/components/templates/dynamicimage.template.html +9 -0
- package/deprecated/components/templates/evaluation.designtime.html +7 -0
- package/deprecated/components/templates/evaluation.template.html +1 -0
- package/deprecated/components/templates/filterbutton.template.html +3 -0
- package/deprecated/components/templates/floattextinput.designtime.html +4 -0
- package/deprecated/components/templates/floattextinput.template.html +4 -0
- package/deprecated/components/templates/form.template.html +5 -0
- package/deprecated/components/templates/header.template.html +3 -0
- package/deprecated/components/templates/icontextinput.template.html +4 -0
- package/deprecated/components/templates/image.template.html +18 -0
- package/deprecated/components/templates/inlinetextinput.template.html +4 -0
- package/deprecated/components/templates/ion-footer-bar.template.html +15 -0
- package/deprecated/components/templates/ion-header-bar.template.html +13 -0
- package/deprecated/components/templates/ion-tab-item.designtime.html +5 -0
- package/deprecated/components/templates/ion-tab.template.html +8 -0
- package/deprecated/components/templates/item.avatar.template.html +5 -0
- package/deprecated/components/templates/item.icon.template.html +4 -0
- package/deprecated/components/templates/item.options.template.html +14 -0
- package/deprecated/components/templates/item.slider.template.html +4 -0
- package/deprecated/components/templates/item.swipe.template.html +14 -0
- package/deprecated/components/templates/item.template.html +5 -0
- package/deprecated/components/templates/item.thumbnail.template.html +5 -0
- package/deprecated/components/templates/kendo-chat.designtime.html +20 -0
- package/deprecated/components/templates/kendo-chat.template.html +75 -0
- package/deprecated/components/templates/list.avatar.template.html +7 -0
- package/deprecated/components/templates/list.icon.template.html +6 -0
- package/deprecated/components/templates/list.swipe.template.html +16 -0
- package/deprecated/components/templates/list.template.html +5 -0
- package/deprecated/components/templates/list.thumbnail.template.html +7 -0
- package/deprecated/components/templates/maps.designtime.html +1 -0
- package/deprecated/components/templates/maps.template.html +1 -0
- package/deprecated/components/templates/menu.template.html +21 -0
- package/deprecated/components/templates/multiselect.template.html +5 -0
- package/deprecated/components/templates/nav.bar.template.html +5 -0
- package/deprecated/components/templates/publicMenu.template.html +14 -0
- package/deprecated/components/templates/radiogroup-dynamic.template.html +15 -0
- package/deprecated/components/templates/radiogroup.template.html +21 -0
- package/deprecated/components/templates/range.template.html +5 -0
- package/deprecated/components/templates/rating.template.html +9 -0
- package/deprecated/components/templates/search.template.html +6 -0
- package/deprecated/components/templates/slider.template.html +20 -0
- package/deprecated/components/templates/tabs-icon-only.template.html +16 -0
- package/deprecated/components/templates/tabs.template.html +5 -0
- package/deprecated/components/templates/textarea.template.html +1 -0
- package/deprecated/components/templates/textinput.template.html +3 -0
- package/deprecated/components/templates/textinputbutton.template.html +12 -0
- package/deprecated/components/templates/title.template.html +1 -0
- package/deprecated/components/templates/toggle-dynamic.template.html +11 -0
- package/deprecated/components/templates/toggle.template.html +9 -0
- package/deprecated/components/templates/video.designtime.html +2 -0
- package/deprecated/components/templates/video.template.html +1 -0
- package/deprecated/components/templates/views/public/home.view.html +16 -0
- package/deprecated/components/templates/views/public/menu.view.html +20 -0
- package/deprecated/components/upload/upload.html +41 -0
- package/deprecated/css/app.css +392 -0
- package/deprecated/css/custom-ionic.css +195 -0
- package/deprecated/css/groupingOfCss/checkbox.css +75 -0
- package/deprecated/css/groupingOfCss/col.css +728 -0
- package/deprecated/css/groupingOfCss/dynamicImage.css +24 -0
- package/deprecated/css/groupingOfCss/import_groupingOfCss.css +6 -0
- package/deprecated/css/groupingOfCss/login.css +260 -0
- package/deprecated/css/groupingOfCss/qrCodeCronapp.css +4 -0
- package/deprecated/css/groupingOfCss/upload-image.css +68 -0
- package/deprecated/css/old/modal.css +133 -0
- package/deprecated/css/themes/custom/material/custom-material.css +12 -0
- package/deprecated/css/themes/material.min.css +4 -0
- package/deprecated/dist/components/css/app.css +1 -0
- package/deprecated/dist/components/css/background-color.css +1 -0
- package/deprecated/dist/components/css/chatStyle.css +1 -0
- package/deprecated/dist/components/css/color-default.css +1 -0
- package/deprecated/dist/components/css/crn-ion-segment.css +1 -0
- package/deprecated/dist/components/css/icon-size.css +1 -0
- package/deprecated/dist/components/css/multiselect-editor.css +1 -0
- package/deprecated/dist/components/css/tabs-color.css +1 -0
- package/deprecated/dist/components/js/format.min.js +1 -0
- package/deprecated/dist/components/js/jquery.inputmask.bundle.js +3 -0
- package/deprecated/dist/components/js/jquery.mask.min.js +1 -0
- package/deprecated/dist/components/js/pouchdb.cordova-sqlite.js +2 -0
- package/deprecated/dist/components/js/qrcode.js +1 -0
- package/deprecated/dist/components/templates/advanced.list.designtime.html +1 -0
- package/deprecated/dist/components/templates/advanced.list.template.html +1 -0
- package/deprecated/dist/components/templates/anchor.template.html +1 -0
- package/deprecated/dist/components/templates/button-bar.template.html +1 -0
- package/deprecated/dist/components/templates/button-report.template.html +1 -0
- package/deprecated/dist/components/templates/button.template.html +1 -0
- package/deprecated/dist/components/templates/card.template.html +1 -0
- package/deprecated/dist/components/templates/chat.template.html +1 -0
- package/deprecated/dist/components/templates/checkbox.template.html +1 -0
- package/deprecated/dist/components/templates/combobox.designtime.html +1 -0
- package/deprecated/dist/components/templates/combobox.template.html +1 -0
- package/deprecated/dist/components/templates/complexsearch.template.html +1 -0
- package/deprecated/dist/components/templates/crn-ion-segment-item.template.html +1 -0
- package/deprecated/dist/components/templates/crn-ion-segment.template.html +1 -0
- package/deprecated/dist/components/templates/cron-crud.template.html +1 -0
- package/deprecated/dist/components/templates/cron-mobile-menu.designtime.html +1 -0
- package/deprecated/dist/components/templates/div.horizontal.template.html +1 -0
- package/deprecated/dist/components/templates/div.vertical.template.html +1 -0
- package/deprecated/dist/components/templates/dynamic-combobox.template.html +1 -0
- package/deprecated/dist/components/templates/dynamicfile.template.html +1 -0
- package/deprecated/dist/components/templates/dynamicimage.designtime.html +1 -0
- package/deprecated/dist/components/templates/dynamicimage.template.html +1 -0
- package/deprecated/dist/components/templates/evaluation.designtime.html +1 -0
- package/deprecated/dist/components/templates/evaluation.template.html +1 -0
- package/deprecated/dist/components/templates/filterbutton.template.html +1 -0
- package/deprecated/dist/components/templates/floattextinput.designtime.html +1 -0
- package/deprecated/dist/components/templates/floattextinput.template.html +1 -0
- package/deprecated/dist/components/templates/form.template.html +1 -0
- package/deprecated/dist/components/templates/header.template.html +1 -0
- package/deprecated/dist/components/templates/iconinput.template.html +1 -0
- package/deprecated/dist/components/templates/icontextinput.template.html +1 -0
- package/deprecated/dist/components/templates/image.template.html +1 -0
- package/deprecated/dist/components/templates/inlinetextinput.template.html +1 -0
- package/deprecated/dist/components/templates/ion-footer-bar.template.html +1 -0
- package/deprecated/dist/components/templates/ion-header-bar.template.html +1 -0
- package/deprecated/dist/components/templates/ion-tab-item.designtime.html +1 -0
- package/deprecated/dist/components/templates/ion-tab.designtime.html +1 -0
- package/deprecated/dist/components/templates/ion-tab.template.html +1 -0
- package/deprecated/dist/components/templates/item.avatar.template.html +1 -0
- package/deprecated/dist/components/templates/item.icon.template.html +1 -0
- package/deprecated/dist/components/templates/item.options.template.html +1 -0
- package/deprecated/dist/components/templates/item.slider.template.html +1 -0
- package/deprecated/dist/components/templates/item.swipe.template.html +1 -0
- package/deprecated/dist/components/templates/item.template.html +1 -0
- package/deprecated/dist/components/templates/item.thumbnail.template.html +1 -0
- package/deprecated/dist/components/templates/kendo-chat.designtime.html +1 -0
- package/deprecated/dist/components/templates/kendo-chat.template.html +1 -0
- package/deprecated/dist/components/templates/list.avatar.template.html +1 -0
- package/deprecated/dist/components/templates/list.icon.template.html +1 -0
- package/deprecated/dist/components/templates/list.swipe.template.html +1 -0
- package/deprecated/dist/components/templates/list.template.html +1 -0
- package/deprecated/dist/components/templates/list.thumbnail.template.html +1 -0
- package/deprecated/dist/components/templates/maps.designtime.html +1 -0
- package/deprecated/dist/components/templates/maps.template.html +1 -0
- package/deprecated/dist/components/templates/menu.template.html +1 -0
- package/deprecated/dist/components/templates/multiselect.template.html +1 -0
- package/deprecated/dist/components/templates/nav.bar.template.html +1 -0
- package/deprecated/dist/components/templates/publicMenu.template.html +1 -0
- package/deprecated/dist/components/templates/radiogroup-dynamic.template.html +1 -0
- package/deprecated/dist/components/templates/radiogroup.template.html +1 -0
- package/deprecated/dist/components/templates/range.template.html +1 -0
- package/deprecated/dist/components/templates/rating.template.html +1 -0
- package/deprecated/dist/components/templates/search.template.html +1 -0
- package/deprecated/dist/components/templates/slider.template.html +1 -0
- package/deprecated/dist/components/templates/tabs-icon-only.template.html +1 -0
- package/deprecated/dist/components/templates/tabs.template.html +1 -0
- package/deprecated/dist/components/templates/textarea.template.html +1 -0
- package/deprecated/dist/components/templates/textinput.template.html +1 -0
- package/deprecated/dist/components/templates/textinputbutton.template.html +1 -0
- package/deprecated/dist/components/templates/title.template.html +1 -0
- package/deprecated/dist/components/templates/toggle-dynamic.template.html +1 -0
- package/deprecated/dist/components/templates/toggle.template.html +1 -0
- package/deprecated/dist/components/templates/video.designtime.html +1 -0
- package/deprecated/dist/components/templates/video.template.html +1 -0
- package/deprecated/dist/components/templates/views/public/home.view.html +1 -0
- package/deprecated/dist/components/templates/views/public/menu.view.html +1 -0
- package/deprecated/dist/css/app.css +1 -0
- package/deprecated/dist/css/cronos.css +1 -0
- package/deprecated/dist/css/custom-ionic.css +1 -0
- package/deprecated/dist/css/groupingOfCss/checkbox.css +1 -0
- package/deprecated/dist/css/groupingOfCss/col.css +1 -0
- package/deprecated/dist/css/groupingOfCss/dynamicImage.css +1 -0
- package/deprecated/dist/css/groupingOfCss/import_groupingOfCss.css +1 -0
- package/deprecated/dist/css/groupingOfCss/login.css +1 -0
- package/deprecated/dist/css/groupingOfCss/qrCodeCronapp.css +1 -0
- package/deprecated/dist/css/groupingOfCss/upload-image.css +1 -0
- package/deprecated/dist/css/old/modal.css +1 -0
- package/deprecated/dist/i18n/locale_en_us.json +126 -0
- package/deprecated/dist/i18n/locale_pt_br.json +126 -0
- package/deprecated/dist/img/cron-icon/crn-QRCode.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-anchor.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-button-bar.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-button.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-card.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-carousel.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-chart.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-checkbox.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-container.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-cron-crud.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-datasource.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-dynamic-file.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-dynamic-image.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-enterprise-dynamic-combobox.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-evaluation.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-form.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-header.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-icon.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-image.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-infinite-scroll.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-input-floating.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-input-inline.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-ion-footer-bar.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-ion-list.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-item-swipe.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-kendo-chat.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-label.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list-avatar.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list-icon.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list-item-avatar.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list-item-icon.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list-item-thumbnail.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list-item.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list-swipe.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list-thumbnail.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-list.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-map.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-multiselect.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-paragraph.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-plugin.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-radio.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-radiogroup.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-range.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-rating.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-select.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-spacer.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-tabs-icon-only.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-tabs.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-text-component.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-textarea.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-textinput.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-textinputbutton.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-textinputicon.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-toggle.svg +1 -0
- package/deprecated/dist/img/cron-icon/crn-video.svg +1 -0
- package/deprecated/dist/img/placehold-100x100.png +0 -0
- package/deprecated/dist/img/placehold-300x200.png +0 -0
- package/deprecated/dist/img/placehold-900x500.png +0 -0
- package/deprecated/dist/img/qr-code.png +0 -0
- package/deprecated/dist/img/svg-charts.svg +1 -0
- package/deprecated/dist/img/user.svg +1 -0
- package/deprecated/dist/js/LanguageSelectDirective.js +1 -0
- package/deprecated/dist/js/LocaleService.js +1 -0
- package/deprecated/dist/js/app.authentication.js +1 -0
- package/deprecated/dist/js/app.js +1 -0
- package/deprecated/dist/js/controllers.authentication.js +1 -0
- package/deprecated/dist/js/controllers.js +1 -0
- package/deprecated/dist/js/custom.controllers.js +1 -0
- package/deprecated/dist/js/customModules.js +1 -0
- package/deprecated/dist/js/customStateProvider.js +0 -0
- package/deprecated/dist/js/directives.js +17 -0
- package/deprecated/dist/js/filters.js +1 -0
- package/deprecated/dist/js/local-dateformat.directive.js +1 -0
- package/deprecated/dist/js/reports/parameters.controller.js +1 -0
- package/deprecated/dist/js/reports/reports.service.js +1 -0
- package/deprecated/dist/js/services.js +1 -0
- package/deprecated/dist/js/upload.service.js +1 -0
- package/deprecated/img/cron-icon/crn-QRCode.svg +38 -0
- package/deprecated/img/cron-icon/crn-anchor.svg +29 -0
- package/deprecated/img/cron-icon/crn-button-bar.svg +1 -0
- package/deprecated/img/cron-icon/crn-button.svg +24 -0
- package/deprecated/img/cron-icon/crn-card.svg +1 -0
- package/deprecated/img/cron-icon/crn-carousel.svg +26 -0
- package/deprecated/img/cron-icon/crn-chart.svg +19 -0
- package/deprecated/img/cron-icon/crn-checkbox.svg +15 -0
- package/deprecated/img/cron-icon/crn-container.svg +1 -0
- package/deprecated/img/cron-icon/crn-cron-crud.svg +28 -0
- package/deprecated/img/cron-icon/crn-datasource.svg +27 -0
- package/deprecated/img/cron-icon/crn-dynamic-file.svg +1 -0
- package/deprecated/img/cron-icon/crn-dynamic-image.svg +25 -0
- package/deprecated/img/cron-icon/crn-enterprise-dynamic-combobox.svg +27 -0
- package/deprecated/img/cron-icon/crn-evaluation.svg +1 -0
- package/deprecated/img/cron-icon/crn-form.svg +24 -0
- package/deprecated/img/cron-icon/crn-header.svg +18 -0
- package/deprecated/img/cron-icon/crn-icon.svg +23 -0
- package/deprecated/img/cron-icon/crn-image.svg +20 -0
- package/deprecated/img/cron-icon/crn-infinite-scroll.svg +1 -0
- package/deprecated/img/cron-icon/crn-input-floating.svg +1 -0
- package/deprecated/img/cron-icon/crn-input-inline.svg +1 -0
- package/deprecated/img/cron-icon/crn-ion-footer-bar.svg +1 -0
- package/deprecated/img/cron-icon/crn-ion-list.svg +1 -0
- package/deprecated/img/cron-icon/crn-item-swipe.svg +15 -0
- package/deprecated/img/cron-icon/crn-kendo-chat.svg +1 -0
- package/deprecated/img/cron-icon/crn-label.svg +1 -0
- package/deprecated/img/cron-icon/crn-list-avatar.svg +1 -0
- package/deprecated/img/cron-icon/crn-list-icon.svg +1 -0
- package/deprecated/img/cron-icon/crn-list-item-avatar.svg +1 -0
- package/deprecated/img/cron-icon/crn-list-item-icon.svg +1 -0
- package/deprecated/img/cron-icon/crn-list-item-thumbnail.svg +1 -0
- package/deprecated/img/cron-icon/crn-list-item.svg +1 -0
- package/deprecated/img/cron-icon/crn-list-swipe.svg +17 -0
- package/deprecated/img/cron-icon/crn-list-thumbnail.svg +17 -0
- package/deprecated/img/cron-icon/crn-list.svg +16 -0
- package/deprecated/img/cron-icon/crn-map.svg +1 -0
- package/deprecated/img/cron-icon/crn-multiselect.svg +1 -0
- package/deprecated/img/cron-icon/crn-paragraph.svg +1 -0
- package/deprecated/img/cron-icon/crn-plugin.svg +44 -0
- package/deprecated/img/cron-icon/crn-radio.svg +21 -0
- package/deprecated/img/cron-icon/crn-radiogroup.svg +25 -0
- package/deprecated/img/cron-icon/crn-range.svg +1 -0
- package/deprecated/img/cron-icon/crn-rating.svg +20 -0
- package/deprecated/img/cron-icon/crn-select.svg +1 -0
- package/deprecated/img/cron-icon/crn-spacer.svg +1 -0
- package/deprecated/img/cron-icon/crn-tabs-icon-only.svg +24 -0
- package/deprecated/img/cron-icon/crn-tabs.svg +17 -0
- package/deprecated/img/cron-icon/crn-text-component.svg +22 -0
- package/deprecated/img/cron-icon/crn-textarea.svg +22 -0
- package/deprecated/img/cron-icon/crn-textinput.svg +23 -0
- package/deprecated/img/cron-icon/crn-textinputbutton.svg +33 -0
- package/deprecated/img/cron-icon/crn-textinputicon.svg +29 -0
- package/deprecated/img/cron-icon/crn-toggle.svg +1 -0
- package/deprecated/img/cron-icon/crn-video.svg +1 -0
- package/deprecated/img/placehold-100x100.png +0 -0
- package/deprecated/img/placehold-300x200.png +0 -0
- package/deprecated/img/placehold-900x500.png +0 -0
- package/deprecated/img/qr-code.png +0 -0
- package/deprecated/img/svg-charts.svg +1 -0
- package/deprecated/img/user.svg +18 -0
- package/dist/components/css/app.css +1 -0
- package/dist/components/css/background-color.css +1 -0
- package/dist/components/css/chatStyle.css +1 -0
- package/dist/components/css/color-default.css +1 -0
- package/dist/components/css/crn-ion-footer-bar.css +1 -0
- package/dist/components/css/crn-ion-segment.css +1 -0
- package/dist/components/css/icon-size.css +1 -0
- package/dist/components/css/multiselect-editor.css +1 -0
- package/dist/components/css/tabs-color.css +1 -0
- package/dist/components/js/format.min.js +1 -0
- package/dist/components/js/jquery.inputmask.bundle.js +1 -0
- package/dist/components/js/jquery.mask.min.js +1 -0
- package/dist/components/js/pouchdb.cordova-sqlite.js +1 -0
- package/dist/components/js/qrcode.js +1 -0
- package/dist/components/templates/advanced.list.designtime.html +17 -0
- package/dist/components/templates/advanced.list.template.html +1 -0
- package/dist/components/templates/anchor.template.html +1 -0
- package/dist/components/templates/button-bar.template.html +1 -0
- package/dist/components/templates/button-report.template.html +1 -0
- package/dist/components/templates/button.template.html +1 -0
- package/dist/components/templates/card.template.html +1 -0
- package/dist/components/templates/chat.template.html +1 -0
- package/dist/components/templates/checkbox.template.html +1 -0
- package/dist/components/templates/combobox.designtime.html +1 -0
- package/dist/components/templates/combobox.template.html +1 -0
- package/dist/components/templates/complexsearch.template.html +1 -0
- package/dist/components/templates/crn-frame.designtime.html +6 -0
- package/dist/components/templates/crn-frame.template.html +1 -0
- package/dist/components/templates/crn-ion-segment-item.template.html +1 -0
- package/dist/components/templates/crn-ion-segment.template.html +1 -0
- package/dist/components/templates/crn-signature-pad.designtime.html +1 -0
- package/dist/components/templates/crn-signature-pad.template.html +1 -0
- package/dist/components/templates/cron-combobox.designtime.html +1 -0
- package/dist/components/templates/cron-combobox.template.html +1 -0
- package/dist/components/templates/cron-crud.template.html +1 -0
- package/dist/components/templates/cron-mobile-menu.designtime.html +1 -0
- package/dist/components/templates/div.horizontal.template.html +1 -0
- package/dist/components/templates/div.vertical.template.html +1 -0
- package/dist/components/templates/dynamic-combobox.template.html +1 -0
- package/dist/components/templates/dynamicfile.designtime.html +1 -0
- package/dist/components/templates/dynamicfile.template.html +1 -0
- package/dist/components/templates/dynamicimage.designtime.html +1 -0
- package/dist/components/templates/dynamicimage.template.html +1 -0
- package/dist/components/templates/evaluation.designtime.html +1 -0
- package/dist/components/templates/evaluation.template.html +1 -0
- package/dist/components/templates/filterbutton.template.html +1 -0
- package/dist/components/templates/floattextinput.designtime.html +1 -0
- package/dist/components/templates/floattextinput.template.html +1 -0
- package/dist/components/templates/form.template.html +1 -0
- package/dist/components/templates/header.template.html +1 -0
- package/dist/components/templates/icontextinput.template.html +1 -0
- package/dist/components/templates/image.template.html +1 -0
- package/dist/components/templates/inlinetextinput.template.html +1 -0
- package/dist/components/templates/ion-footer-bar.template.html +1 -0
- package/dist/components/templates/ion-header-bar.template.html +1 -0
- package/dist/components/templates/ion-tab-item.designtime.html +1 -0
- package/dist/components/templates/ion-tab.template.html +1 -0
- package/dist/components/templates/item.avatar.template.html +1 -0
- package/dist/components/templates/item.icon.template.html +1 -0
- package/dist/components/templates/item.options.template.html +1 -0
- package/dist/components/templates/item.slider.template.html +1 -0
- package/dist/components/templates/item.swipe.template.html +1 -0
- package/dist/components/templates/item.template.html +1 -0
- package/dist/components/templates/item.thumbnail.template.html +1 -0
- package/dist/components/templates/kendo-chat.designtime.html +1 -0
- package/dist/components/templates/kendo-chat.template.html +1 -0
- package/dist/components/templates/list.avatar.template.html +1 -0
- package/dist/components/templates/list.icon.template.html +1 -0
- package/dist/components/templates/list.swipe.template.html +1 -0
- package/dist/components/templates/list.template.html +1 -0
- package/dist/components/templates/list.thumbnail.template.html +1 -0
- package/dist/components/templates/maps.designtime.html +1 -0
- package/dist/components/templates/maps.template.html +1 -0
- package/dist/components/templates/menu.template.html +1 -0
- package/dist/components/templates/multiselect.template.html +1 -0
- package/dist/components/templates/nav.bar.template.html +1 -0
- package/dist/components/templates/public.menu.template.html +1 -0
- package/dist/components/templates/publicMenu.template.html +1 -0
- package/dist/components/templates/radiogroup-dynamic.template.html +1 -0
- package/dist/components/templates/radiogroup.template.html +1 -0
- package/dist/components/templates/range.template.html +1 -0
- package/dist/components/templates/rating.template.html +1 -0
- package/dist/components/templates/search.template.html +1 -0
- package/dist/components/templates/slider.template.html +1 -0
- package/dist/components/templates/tabs-icon-only.template.html +1 -0
- package/dist/components/templates/tabs.template.html +1 -0
- package/dist/components/templates/textarea.template.html +1 -0
- package/dist/components/templates/textinput.template.html +1 -0
- package/dist/components/templates/textinputbutton.template.html +1 -0
- package/dist/components/templates/title.template.html +1 -0
- package/dist/components/templates/toggle-dynamic.template.html +1 -0
- package/dist/components/templates/toggle.template.html +1 -0
- package/dist/components/templates/video.designtime.html +1 -0
- package/dist/components/templates/video.template.html +1 -0
- package/dist/components/templates/views/public/home.view.html +1 -0
- package/dist/components/templates/views/public/menu.view.html +1 -0
- package/dist/css/app.css +0 -0
- package/dist/css/app_2.9.css +1 -0
- package/dist/css/cronos.css +1 -0
- package/dist/css/groupingOfCss/checkbox.css +1 -0
- package/dist/css/groupingOfCss/col.css +1 -0
- package/dist/css/groupingOfCss/dynamicImage.css +1 -0
- package/dist/css/groupingOfCss/import_groupingOfCss.css +1 -0
- package/dist/css/groupingOfCss/qrCodeCronapp.css +1 -0
- package/dist/css/groupingOfCss/upload-image.css +1 -0
- package/dist/css/old/modal.css +1 -0
- package/dist/css/themes/aquamarine.min.css +1 -0
- package/dist/css/themes/cerulean.min.css +1 -0
- package/dist/css/themes/cosmo.min.css +1 -0
- package/dist/css/themes/custom/aquamarine/bar-aquamarine.css +1 -0
- package/dist/css/themes/custom/aquamarine/button-aquamarine.css +1 -0
- package/dist/css/themes/custom/aquamarine/crn-ion-segment-aquamarine.css +1 -0
- package/dist/css/themes/custom/aquamarine/custom-aquamarine.css +1 -0
- package/dist/css/themes/custom/aquamarine/img/arrow-gray.svg +1 -0
- package/dist/css/themes/custom/aquamarine/img/arrow-white.svg +1 -0
- package/dist/css/themes/custom/cerulean/button-cerulean.css +1 -0
- package/dist/css/themes/custom/cerulean/crn-ion-segment-cerulean.css +1 -0
- package/dist/css/themes/custom/cerulean/custom-cerulean.css +1 -0
- package/dist/css/themes/custom/cosmo/custom-cosmo.css +1 -0
- package/dist/css/themes/custom/cyborg/custom-cyborg.css +1 -0
- package/dist/css/themes/custom/darkly/custom-darkly.css +1 -0
- package/dist/css/themes/custom/dsgov/button-dsgov.css +1 -0
- package/dist/css/themes/custom/dsgov/custom-dsgov.css +1 -0
- package/dist/css/themes/custom/flatly/custom-flatly.css +1 -0
- package/dist/css/themes/custom/fuse/button-fuse.css +1 -0
- package/dist/css/themes/custom/fuse/custom-fuse.css +1 -0
- package/dist/css/themes/custom/journal/custom-journal.css +1 -0
- package/dist/css/themes/custom/krypton/custom-krypton.css +1 -0
- package/dist/css/themes/custom/lumen/button-lumen.css +1 -0
- package/dist/css/themes/custom/lumen/crn-ion-header-bar.css +1 -0
- package/dist/css/themes/custom/lumen/custom-lumen.css +1 -0
- package/dist/css/themes/custom/material/custom-material.css +1 -0
- package/dist/css/themes/custom/material-round/custom-material-round.css +1 -0
- package/dist/css/themes/custom/materialui/custom-materialui.css +1 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Black.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Black.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-BlackItalic.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-BlackItalic.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Bold.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Bold.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-BoldItalic.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-BoldItalic.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Italic.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Italic.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Light.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Light.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-LightItalic.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-LightItalic.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Medium.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Medium.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-MediumItalic.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-MediumItalic.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Regular.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Regular.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Thin.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-Thin.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-ThinItalic.woff +0 -0
- package/dist/css/themes/custom/materialui/font/Roboto-ThinItalic.woff2 +0 -0
- package/dist/css/themes/custom/materialui/font/fonts.css +1 -0
- package/dist/css/themes/custom/materialui/img/arrow-gray.svg +1 -0
- package/dist/css/themes/custom/materialui/img/arrow-white.svg +1 -0
- package/dist/css/themes/custom/nature/custom-nature.css +1 -0
- package/dist/css/themes/custom/paper/button-paper.css +1 -0
- package/dist/css/themes/custom/paper/custom-paper.css +1 -0
- package/dist/css/themes/custom/readable/button-readable.css +1 -0
- package/dist/css/themes/custom/readable/crn-ion-segment-readable.css +1 -0
- package/dist/css/themes/custom/readable/custom-readable.css +1 -0
- package/dist/css/themes/custom/sandstone/custom-sandstone.css +1 -0
- package/dist/css/themes/custom/simplex/button-simplex.css +1 -0
- package/dist/css/themes/custom/simplex/crn-ion-segment-simplex.css +1 -0
- package/dist/css/themes/custom/simplex/custom-simplex.css +1 -0
- package/dist/css/themes/custom/slate/button-slate.css +1 -0
- package/dist/css/themes/custom/slate/crn-ion-segment-slate.css +1 -0
- package/dist/css/themes/custom/slate/custom-slate.css +1 -0
- package/dist/css/themes/custom/spacelab/bar-spacelab.css +1 -0
- package/dist/css/themes/custom/spacelab/button-spacelab.css +1 -0
- package/dist/css/themes/custom/spacelab/crn-ion-segment-spacelab.css +1 -0
- package/dist/css/themes/custom/spacelab/custom-spacelab.css +1 -0
- package/dist/css/themes/custom/superhero/custom-superhero.css +1 -0
- package/dist/css/themes/custom/theme-general/button.css +1 -0
- package/dist/css/themes/custom/theme-general/checkbox.css +1 -0
- package/dist/css/themes/custom/theme-general/crn-ion-header-bar.css +1 -0
- package/dist/css/themes/custom/theme-general/crn-ion-segment.css +1 -0
- package/dist/css/themes/custom/theme-general/icon.css +1 -0
- package/dist/css/themes/custom/theme-general/input.css +1 -0
- package/dist/css/themes/custom/theme-general/login.css +1 -0
- package/dist/css/themes/custom/theme-general/modal.css +1 -0
- package/dist/css/themes/custom/theme-general/range.css +1 -0
- package/dist/css/themes/custom/theme-general/reset-password.css +1 -0
- package/dist/css/themes/custom/theme-general/signup.css +1 -0
- package/dist/css/themes/custom/theme-general/theme-general.css +1 -0
- package/dist/css/themes/custom/theme-general/toggle.css +1 -0
- package/dist/css/themes/custom/united/custom-united.css +1 -0
- package/dist/css/themes/custom/yeti/button-yeti.css +1 -0
- package/dist/css/themes/custom/yeti/custom-yeti.css +1 -0
- package/dist/css/themes/cyborg.min.css +1 -0
- package/dist/css/themes/darkly.min.css +1 -0
- package/dist/css/themes/dsgov.min.css +1 -0
- package/dist/css/themes/flatly.min.css +1 -0
- package/dist/css/themes/fuse.min.css +1 -0
- package/dist/css/themes/journal.min.css +1 -0
- package/dist/css/themes/krypton.min.css +1 -0
- package/dist/css/themes/lumen.min.css +1 -0
- package/dist/css/themes/material-round.min.css +1 -0
- package/dist/css/themes/material.min.css +1 -0
- package/dist/css/themes/materialui.min.css +1 -0
- package/dist/css/themes/nature.min.css +1 -0
- package/dist/css/themes/paper.min.css +1 -0
- package/dist/css/themes/readable.min.css +1 -0
- package/dist/css/themes/sandstone.min.css +1 -0
- package/dist/css/themes/simplex.min.css +1 -0
- package/dist/css/themes/slate.min.css +1 -0
- package/dist/css/themes/spacelab.min.css +1 -0
- package/dist/css/themes/superhero.min.css +1 -0
- package/dist/css/themes/theme.editor.view.html +1 -0
- package/dist/css/themes/united.min.css +1 -0
- package/dist/css/themes/yeti.min.css +1 -0
- package/dist/i18n/locale_en_us.json +132 -0
- package/dist/i18n/locale_pt_br.json +132 -0
- package/dist/js/LanguageSelectDirective.js +1 -0
- package/dist/js/LocaleService.js +1 -0
- package/dist/js/app.authentication.js +1 -0
- package/dist/js/app.js +1 -0
- package/dist/js/controllers.authentication.js +1 -0
- package/dist/js/controllers.js +1 -0
- package/dist/js/custom.controllers.js +1 -0
- package/dist/js/customModules.js +1 -0
- package/dist/js/customStateProvider.js +105 -0
- package/dist/js/directives.js +1 -0
- package/dist/js/filters.js +1 -0
- package/dist/js/local-dateformat.directive.js +1 -0
- package/dist/js/reports/parameters.controller.js +1 -0
- package/dist/js/reports/reports.service.js +1 -0
- package/dist/js/services.js +1 -0
- package/dist/js/upload.service.js +1 -0
- package/gulpfile.js +58 -0
- package/i18n/locale_en_us.json +132 -0
- package/i18n/locale_pt_br.json +132 -0
- package/img/cron-icon/crn-QRCode.svg +38 -0
- package/img/cron-icon/crn-anchor.svg +29 -0
- package/img/cron-icon/crn-button-bar.svg +1 -0
- package/img/cron-icon/crn-button.svg +24 -0
- package/img/cron-icon/crn-card.svg +1 -0
- package/img/cron-icon/crn-carousel.svg +26 -0
- package/img/cron-icon/crn-chart.svg +19 -0
- package/img/cron-icon/crn-checkbox.svg +15 -0
- package/img/cron-icon/crn-component.svg +22 -0
- package/img/cron-icon/crn-container.svg +1 -0
- package/img/cron-icon/crn-cron-crud.svg +28 -0
- package/img/cron-icon/crn-datasource.svg +27 -0
- package/img/cron-icon/crn-dynamic-file.svg +1 -0
- package/img/cron-icon/crn-dynamic-image.svg +25 -0
- package/img/cron-icon/crn-enterprise-combobox.svg +24 -0
- package/img/cron-icon/crn-enterprise-dynamic-combobox.svg +27 -0
- package/img/cron-icon/crn-evaluation.svg +1 -0
- package/img/cron-icon/crn-form.svg +24 -0
- package/img/cron-icon/crn-frame.svg +30 -0
- package/img/cron-icon/crn-header.svg +18 -0
- package/img/cron-icon/crn-icon.svg +23 -0
- package/img/cron-icon/crn-image.svg +20 -0
- package/img/cron-icon/crn-infinite-scroll.svg +1 -0
- package/img/cron-icon/crn-input-floating.svg +1 -0
- package/img/cron-icon/crn-input-inline.svg +1 -0
- package/img/cron-icon/crn-ion-footer-bar.svg +1 -0
- package/img/cron-icon/crn-ion-list.svg +1 -0
- package/img/cron-icon/crn-item-swipe.svg +15 -0
- package/img/cron-icon/crn-kendo-chat.svg +1 -0
- package/img/cron-icon/crn-label.svg +1 -0
- package/img/cron-icon/crn-list-avatar.svg +1 -0
- package/img/cron-icon/crn-list-icon.svg +1 -0
- package/img/cron-icon/crn-list-item-avatar.svg +1 -0
- package/img/cron-icon/crn-list-item-icon.svg +1 -0
- package/img/cron-icon/crn-list-item-thumbnail.svg +1 -0
- package/img/cron-icon/crn-list-item.svg +1 -0
- package/img/cron-icon/crn-list-swipe.svg +17 -0
- package/img/cron-icon/crn-list-thumbnail.svg +17 -0
- package/img/cron-icon/crn-list.svg +16 -0
- package/img/cron-icon/crn-map.svg +1 -0
- package/img/cron-icon/crn-multiselect.svg +1 -0
- package/img/cron-icon/crn-paragraph.svg +1 -0
- package/img/cron-icon/crn-plugin.svg +44 -0
- package/img/cron-icon/crn-radio.svg +21 -0
- package/img/cron-icon/crn-radiogroup.svg +25 -0
- package/img/cron-icon/crn-range.svg +1 -0
- package/img/cron-icon/crn-rating.svg +20 -0
- package/img/cron-icon/crn-select.svg +1 -0
- package/img/cron-icon/crn-signature-pad.svg +27 -0
- package/img/cron-icon/crn-spacer.svg +1 -0
- package/img/cron-icon/crn-tabs-icon-only.svg +24 -0
- package/img/cron-icon/crn-tabs.svg +17 -0
- package/img/cron-icon/crn-text-component.svg +22 -0
- package/img/cron-icon/crn-textarea.svg +22 -0
- package/img/cron-icon/crn-textinput.svg +23 -0
- package/img/cron-icon/crn-textinputbutton.svg +33 -0
- package/img/cron-icon/crn-textinputicon.svg +29 -0
- package/img/cron-icon/crn-toggle.svg +1 -0
- package/img/cron-icon/crn-video.svg +1 -0
- package/img/logo.svg +1 -0
- package/img/placehold-100x100.png +0 -0
- package/img/placehold-300x200.png +0 -0
- package/img/placehold-900x500.png +0 -0
- package/img/qr-code.png +0 -0
- package/img/svg-charts.svg +1 -0
- package/img/user.svg +18 -0
- package/img/web.png +0 -0
- package/js/LanguageSelectDirective.js +30 -0
- package/js/LocaleService.js +59 -0
- package/js/app.authentication.js +620 -0
- package/js/app.js +349 -0
- package/js/controllers.authentication.js +717 -0
- package/js/controllers.js +90 -0
- package/js/custom.controllers.js +11 -0
- package/js/customModules.js +1 -0
- package/js/customStateProvider.js +105 -0
- package/js/directives.js +2955 -0
- package/js/filters.js +47 -0
- package/js/local-dateformat.directive.js +15 -0
- package/js/reports/parameters.controller.js +86 -0
- package/js/reports/reports.service.js +446 -0
- package/js/services.js +5 -0
- package/js/upload.service.js +168 -0
- package/lib/kendo/kendo.all.min.js +125 -0
- package/lib/kendo/kendo.default-v2.min.css +10 -0
- package/lib/notification-mobile.js +57 -0
- package/package.json +48 -0
- package/postupdate.json +539 -0
package/js/directives.js
ADDED
|
@@ -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> {{"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> {{"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, '&')
|
|
1202
|
+
.replace(/</g, '<')
|
|
1203
|
+
.replace(/>/g, '>')
|
|
1204
|
+
.replace(/"/g, '"')
|
|
1205
|
+
.replace(/'/g, ''');
|
|
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
|
+
|