customeranalytics 0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. customeranalytics/__init__.py +319 -0
  2. customeranalytics/configs.py +480 -0
  3. customeranalytics/data_storage_configurations/__init__.py +245 -0
  4. customeranalytics/data_storage_configurations/data_access.py +165 -0
  5. customeranalytics/data_storage_configurations/data_works_pipeline.py +207 -0
  6. customeranalytics/data_storage_configurations/es_create_index.py +544 -0
  7. customeranalytics/data_storage_configurations/logger.py +36 -0
  8. customeranalytics/data_storage_configurations/query_es.py +157 -0
  9. customeranalytics/data_storage_configurations/reports.py +684 -0
  10. customeranalytics/data_storage_configurations/schedule_data_integration.py +355 -0
  11. customeranalytics/docs/queries.yaml +245 -0
  12. customeranalytics/docs/web_configs.yaml +2 -0
  13. customeranalytics/exploratory_analysis/__init__.py +109 -0
  14. customeranalytics/exploratory_analysis/churn.py +232 -0
  15. customeranalytics/exploratory_analysis/cohorts.py +535 -0
  16. customeranalytics/exploratory_analysis/descriptive_statistics.py +470 -0
  17. customeranalytics/exploratory_analysis/funnels.py +407 -0
  18. customeranalytics/exploratory_analysis/product_analytics.py +340 -0
  19. customeranalytics/exploratory_analysis/promotion_analytics.py +299 -0
  20. customeranalytics/exploratory_analysis/rfm.py +202 -0
  21. customeranalytics/exploratory_analysis/sample_data/sample_data_avg_order_count_per_promo_per_cust.csv +99 -0
  22. customeranalytics/exploratory_analysis/sample_data/sample_data_chart_1_search.csv +2 -0
  23. customeranalytics/exploratory_analysis/sample_data/sample_data_chart_2_search.csv +46 -0
  24. customeranalytics/exploratory_analysis/sample_data/sample_data_chart_3_search.csv +2 -0
  25. customeranalytics/exploratory_analysis/sample_data/sample_data_chart_4_search.csv +2 -0
  26. customeranalytics/exploratory_analysis/sample_data/sample_data_churn.csv +2 -0
  27. customeranalytics/exploratory_analysis/sample_data/sample_data_churn_weekly.csv +10 -0
  28. customeranalytics/exploratory_analysis/sample_data/sample_data_client_feature_predicted.csv +1590 -0
  29. customeranalytics/exploratory_analysis/sample_data/sample_data_client_kpis.csv +7060 -0
  30. customeranalytics/exploratory_analysis/sample_data/sample_data_clvrfm_anomaly.csv +561 -0
  31. customeranalytics/exploratory_analysis/sample_data/sample_data_clvsegments_amount.csv +8 -0
  32. customeranalytics/exploratory_analysis/sample_data/sample_data_customer_journey.csv +18 -0
  33. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_clv.csv +103 -0
  34. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_cohort_downloads.csv +68 -0
  35. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_cohort_from_1_to_2.csv +66 -0
  36. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_cohort_from_2_to_3.csv +64 -0
  37. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_cohort_from_3_to_4.csv +55 -0
  38. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_dimension_values.csv +199 -0
  39. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_funnel.csv +36 -0
  40. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_funnel_downloads.csv +68 -0
  41. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_inorganic_ratio.csv +6070 -0
  42. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_orders.csv +57 -0
  43. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_organic_orders.csv +64 -0
  44. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_products_of_sales.csv +12574 -0
  45. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_promotion_discount.csv +64 -0
  46. customeranalytics/exploratory_analysis/sample_data/sample_data_daily_promotion_revenue.csv +6070 -0
  47. customeranalytics/exploratory_analysis/sample_data/sample_data_dcohort_anomaly.csv +6 -0
  48. customeranalytics/exploratory_analysis/sample_data/sample_data_dcohort_anomaly_2.csv +118 -0
  49. customeranalytics/exploratory_analysis/sample_data/sample_data_deliver.csv +47 -0
  50. customeranalytics/exploratory_analysis/sample_data/sample_data_deliver_kpis.csv +2 -0
  51. customeranalytics/exploratory_analysis/sample_data/sample_data_deliver_weekday_hour.csv +25 -0
  52. customeranalytics/exploratory_analysis/sample_data/sample_data_dfunnel_anomaly.csv +118 -0
  53. customeranalytics/exploratory_analysis/sample_data/sample_data_dimension_kpis.csv +199 -0
  54. customeranalytics/exploratory_analysis/sample_data/sample_data_dorders_anomaly.csv +85 -0
  55. customeranalytics/exploratory_analysis/sample_data/sample_data_frequency_clusters.csv +6 -0
  56. customeranalytics/exploratory_analysis/sample_data/sample_data_frequency_recency.csv +3740 -0
  57. customeranalytics/exploratory_analysis/sample_data/sample_data_hourly_funnel.csv +25 -0
  58. customeranalytics/exploratory_analysis/sample_data/sample_data_hourly_funnel_downloads.csv +25 -0
  59. customeranalytics/exploratory_analysis/sample_data/sample_data_hourly_inorganic_ratio.csv +2353 -0
  60. customeranalytics/exploratory_analysis/sample_data/sample_data_hourly_orders.csv +25 -0
  61. customeranalytics/exploratory_analysis/sample_data/sample_data_hourly_organic_orders.csv +2353 -0
  62. customeranalytics/exploratory_analysis/sample_data/sample_data_inorganic_orders_per_promotion_per_day.csv +6070 -0
  63. customeranalytics/exploratory_analysis/sample_data/sample_data_kpis.csv +2 -0
  64. customeranalytics/exploratory_analysis/sample_data/sample_data_monetary_clusters.csv +6 -0
  65. customeranalytics/exploratory_analysis/sample_data/sample_data_monetary_frequency.csv +3740 -0
  66. customeranalytics/exploratory_analysis/sample_data/sample_data_monthly_funnel.csv +5 -0
  67. customeranalytics/exploratory_analysis/sample_data/sample_data_monthly_funnel_downloads.csv +5 -0
  68. customeranalytics/exploratory_analysis/sample_data/sample_data_monthly_orders.csv +4 -0
  69. customeranalytics/exploratory_analysis/sample_data/sample_data_most_combined_products.csv +11 -0
  70. customeranalytics/exploratory_analysis/sample_data/sample_data_most_ordered_categories.csv +11 -0
  71. customeranalytics/exploratory_analysis/sample_data/sample_data_most_ordered_products.csv +11 -0
  72. customeranalytics/exploratory_analysis/sample_data/sample_data_order_and_payment_amount_differences.csv +91 -0
  73. customeranalytics/exploratory_analysis/sample_data/sample_data_prepare.csv +101 -0
  74. customeranalytics/exploratory_analysis/sample_data/sample_data_prepare_weekday_hour.csv +25 -0
  75. customeranalytics/exploratory_analysis/sample_data/sample_data_product_kpis.csv +201 -0
  76. customeranalytics/exploratory_analysis/sample_data/sample_data_product_usage_before_after_amount_accept.csv +11 -0
  77. customeranalytics/exploratory_analysis/sample_data/sample_data_product_usage_before_after_amount_reject.csv +7 -0
  78. customeranalytics/exploratory_analysis/sample_data/sample_data_product_usage_before_after_orders_accept.csv +11 -0
  79. customeranalytics/exploratory_analysis/sample_data/sample_data_product_usage_before_after_orders_reject.csv +11 -0
  80. customeranalytics/exploratory_analysis/sample_data/sample_data_promotion_comparison.csv +91 -0
  81. customeranalytics/exploratory_analysis/sample_data/sample_data_promotion_kpis.csv +99 -0
  82. customeranalytics/exploratory_analysis/sample_data/sample_data_promotion_number_of_customer.csv +99 -0
  83. customeranalytics/exploratory_analysis/sample_data/sample_data_promotion_usage_before_after_amount_accept.csv +81 -0
  84. customeranalytics/exploratory_analysis/sample_data/sample_data_promotion_usage_before_after_amount_reject.csv +11 -0
  85. customeranalytics/exploratory_analysis/sample_data/sample_data_promotion_usage_before_after_orders_accept.csv +55 -0
  86. customeranalytics/exploratory_analysis/sample_data/sample_data_promotion_usage_before_after_orders_reject.csv +37 -0
  87. customeranalytics/exploratory_analysis/sample_data/sample_data_purchase_amount_distribution.csv +22 -0
  88. customeranalytics/exploratory_analysis/sample_data/sample_data_recency_clusters.csv +6 -0
  89. customeranalytics/exploratory_analysis/sample_data/sample_data_recency_monetary.csv +3740 -0
  90. customeranalytics/exploratory_analysis/sample_data/sample_data_rfm.csv +2001 -0
  91. customeranalytics/exploratory_analysis/sample_data/sample_data_ride.csv +101 -0
  92. customeranalytics/exploratory_analysis/sample_data/sample_data_ride_weekday_hour.csv +25 -0
  93. customeranalytics/exploratory_analysis/sample_data/sample_data_segmentation.csv +11 -0
  94. customeranalytics/exploratory_analysis/sample_data/sample_data_segments_change_daily_before_after_amount.csv +10 -0
  95. customeranalytics/exploratory_analysis/sample_data/sample_data_segments_change_daily_before_after_orders.csv +9 -0
  96. customeranalytics/exploratory_analysis/sample_data/sample_data_segments_change_monthly_before_after_amount.csv +10 -0
  97. customeranalytics/exploratory_analysis/sample_data/sample_data_segments_change_monthly_before_after_orders.csv +11 -0
  98. customeranalytics/exploratory_analysis/sample_data/sample_data_segments_change_weekly_before_after_amount.csv +10 -0
  99. customeranalytics/exploratory_analysis/sample_data/sample_data_segments_change_weekly_before_after_orders.csv +10 -0
  100. customeranalytics/exploratory_analysis/sample_data/sample_data_user_counts_per_order_seq.csv +47 -0
  101. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_average_order_per_user.csv +13 -0
  102. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_average_payment_amount.csv +13 -0
  103. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_average_session_per_user.csv +13 -0
  104. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_cohort_downloads.csv +13 -0
  105. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_cohort_from_1_to_2.csv +13 -0
  106. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_cohort_from_2_to_3.csv +13 -0
  107. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_cohort_from_3_to_4.csv +12 -0
  108. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_funnel.csv +25 -0
  109. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_funnel_downloads.csv +25 -0
  110. customeranalytics/exploratory_analysis/sample_data/sample_data_weekly_orders.csv +10 -0
  111. customeranalytics/ml_process/__init__.py +64 -0
  112. customeranalytics/ml_process/ab_test.py +615 -0
  113. customeranalytics/ml_process/anomaly_detection.py +456 -0
  114. customeranalytics/ml_process/clv_prediction.py +301 -0
  115. customeranalytics/ml_process/customer_segmentation.py +354 -0
  116. customeranalytics/ml_process/delivery_analytics.py +754 -0
  117. customeranalytics/utils.py +186 -0
  118. customeranalytics/web/app/__init__.py +37 -0
  119. customeranalytics/web/app/base/__init__.py +9 -0
  120. customeranalytics/web/app/base/forms.py +16 -0
  121. customeranalytics/web/app/base/models.py +43 -0
  122. customeranalytics/web/app/base/routes.py +126 -0
  123. customeranalytics/web/app/base/static/assets/css/app.css +20 -0
  124. customeranalytics/web/app/base/static/assets/fonts/Inter-Black.woff +0 -0
  125. customeranalytics/web/app/base/static/assets/fonts/Inter-Black.woff2 +0 -0
  126. customeranalytics/web/app/base/static/assets/fonts/Inter-BlackItalic.woff +0 -0
  127. customeranalytics/web/app/base/static/assets/fonts/Inter-BlackItalic.woff2 +0 -0
  128. customeranalytics/web/app/base/static/assets/fonts/Inter-Bold.woff +0 -0
  129. customeranalytics/web/app/base/static/assets/fonts/Inter-Bold.woff2 +0 -0
  130. customeranalytics/web/app/base/static/assets/fonts/Inter-BoldItalic.woff +0 -0
  131. customeranalytics/web/app/base/static/assets/fonts/Inter-BoldItalic.woff2 +0 -0
  132. customeranalytics/web/app/base/static/assets/fonts/Inter-ExtraBold.woff +0 -0
  133. customeranalytics/web/app/base/static/assets/fonts/Inter-ExtraBold.woff2 +0 -0
  134. customeranalytics/web/app/base/static/assets/fonts/Inter-ExtraBoldItalic.woff +0 -0
  135. customeranalytics/web/app/base/static/assets/fonts/Inter-ExtraBoldItalic.woff2 +0 -0
  136. customeranalytics/web/app/base/static/assets/fonts/Inter-ExtraLight-BETA.woff +0 -0
  137. customeranalytics/web/app/base/static/assets/fonts/Inter-ExtraLight-BETA.woff2 +0 -0
  138. customeranalytics/web/app/base/static/assets/fonts/Inter-ExtraLightItalic-BETA.woff +0 -0
  139. customeranalytics/web/app/base/static/assets/fonts/Inter-ExtraLightItalic-BETA.woff2 +0 -0
  140. customeranalytics/web/app/base/static/assets/fonts/Inter-Italic.woff +0 -0
  141. customeranalytics/web/app/base/static/assets/fonts/Inter-Italic.woff2 +0 -0
  142. customeranalytics/web/app/base/static/assets/fonts/Inter-Light-BETA.woff +0 -0
  143. customeranalytics/web/app/base/static/assets/fonts/Inter-Light-BETA.woff2 +0 -0
  144. customeranalytics/web/app/base/static/assets/fonts/Inter-LightItalic-BETA.woff +0 -0
  145. customeranalytics/web/app/base/static/assets/fonts/Inter-LightItalic-BETA.woff2 +0 -0
  146. customeranalytics/web/app/base/static/assets/fonts/Inter-Medium.woff +0 -0
  147. customeranalytics/web/app/base/static/assets/fonts/Inter-Medium.woff2 +0 -0
  148. customeranalytics/web/app/base/static/assets/fonts/Inter-MediumItalic.woff +0 -0
  149. customeranalytics/web/app/base/static/assets/fonts/Inter-MediumItalic.woff2 +0 -0
  150. customeranalytics/web/app/base/static/assets/fonts/Inter-Regular.woff +0 -0
  151. customeranalytics/web/app/base/static/assets/fonts/Inter-Regular.woff2 +0 -0
  152. customeranalytics/web/app/base/static/assets/fonts/Inter-SemiBold.woff +0 -0
  153. customeranalytics/web/app/base/static/assets/fonts/Inter-SemiBold.woff2 +0 -0
  154. customeranalytics/web/app/base/static/assets/fonts/Inter-SemiBoldItalic.woff +0 -0
  155. customeranalytics/web/app/base/static/assets/fonts/Inter-SemiBoldItalic.woff2 +0 -0
  156. customeranalytics/web/app/base/static/assets/fonts/Inter-Thin-BETA.woff +0 -0
  157. customeranalytics/web/app/base/static/assets/fonts/Inter-Thin-BETA.woff2 +0 -0
  158. customeranalytics/web/app/base/static/assets/fonts/Inter-ThinItalic-BETA.woff +0 -0
  159. customeranalytics/web/app/base/static/assets/fonts/Inter-ThinItalic-BETA.woff2 +0 -0
  160. customeranalytics/web/app/base/static/assets/fonts/Inter-italic.var.woff2 +0 -0
  161. customeranalytics/web/app/base/static/assets/fonts/Inter-upright.var.woff2 +0 -0
  162. customeranalytics/web/app/base/static/assets/fonts/Inter.var.woff2 +0 -0
  163. customeranalytics/web/app/base/static/assets/fonts/fa-brands-400.eot +0 -0
  164. customeranalytics/web/app/base/static/assets/fonts/fa-brands-400.svg +3570 -0
  165. customeranalytics/web/app/base/static/assets/fonts/fa-brands-400.ttf +0 -0
  166. customeranalytics/web/app/base/static/assets/fonts/fa-brands-400.woff +0 -0
  167. customeranalytics/web/app/base/static/assets/fonts/fa-brands-400.woff2 +0 -0
  168. customeranalytics/web/app/base/static/assets/fonts/fa-regular-400.eot +0 -0
  169. customeranalytics/web/app/base/static/assets/fonts/fa-regular-400.svg +801 -0
  170. customeranalytics/web/app/base/static/assets/fonts/fa-regular-400.ttf +0 -0
  171. customeranalytics/web/app/base/static/assets/fonts/fa-regular-400.woff +0 -0
  172. customeranalytics/web/app/base/static/assets/fonts/fa-regular-400.woff2 +0 -0
  173. customeranalytics/web/app/base/static/assets/fonts/fa-solid-900.eot +0 -0
  174. customeranalytics/web/app/base/static/assets/fonts/fa-solid-900.svg +5028 -0
  175. customeranalytics/web/app/base/static/assets/fonts/fa-solid-900.ttf +0 -0
  176. customeranalytics/web/app/base/static/assets/fonts/fa-solid-900.woff +0 -0
  177. customeranalytics/web/app/base/static/assets/fonts/fa-solid-900.woff2 +0 -0
  178. customeranalytics/web/app/base/static/assets/img/avatars/avatar-1.png +0 -0
  179. customeranalytics/web/app/base/static/assets/img/avatars/avatar-2.png +0 -0
  180. customeranalytics/web/app/base/static/assets/img/avatars/avatar-3.png +0 -0
  181. customeranalytics/web/app/base/static/assets/img/avatars/avatar-4.png +0 -0
  182. customeranalytics/web/app/base/static/assets/img/avatars/avatar-5.png +0 -0
  183. customeranalytics/web/app/base/static/assets/img/avatars/info.jpeg +0 -0
  184. customeranalytics/web/app/base/static/assets/img/icons/customanality.png +0 -0
  185. customeranalytics/web/app/base/static/assets/img/icons/icon-48x48.png +0 -0
  186. customeranalytics/web/app/base/static/assets/js/app.js +2 -0
  187. customeranalytics/web/app/base/static/assets/js/app.js.LICENSE +566 -0
  188. customeranalytics/web/app/base/static/assets/js/app.js.LICENSE.txt +556 -0
  189. customeranalytics/web/app/base/static/assets/js/modules/bootstrap.js +15 -0
  190. customeranalytics/web/app/base/static/assets/js/modules/chartjs.js +4 -0
  191. customeranalytics/web/app/base/static/assets/js/modules/feather.js +8 -0
  192. customeranalytics/web/app/base/static/assets/js/modules/flatpickr.js +4 -0
  193. customeranalytics/web/app/base/static/assets/js/modules/moment.js +4 -0
  194. customeranalytics/web/app/base/static/assets/js/modules/sidebar.js +23 -0
  195. customeranalytics/web/app/base/static/assets/js/modules/theme.js +16 -0
  196. customeranalytics/web/app/base/templates/accounts/login.html +81 -0
  197. customeranalytics/web/app/base/templates/accounts/register.html +80 -0
  198. customeranalytics/web/app/base/templates/includes/footer.html +28 -0
  199. customeranalytics/web/app/base/templates/includes/navigation.html +51 -0
  200. customeranalytics/web/app/base/templates/includes/scripts.html +3 -0
  201. customeranalytics/web/app/base/templates/includes/sidebar.html +146 -0
  202. customeranalytics/web/app/base/templates/layouts/base-fullscreen.html +36 -0
  203. customeranalytics/web/app/base/templates/layouts/base.html +84 -0
  204. customeranalytics/web/app/base/util.py +30 -0
  205. customeranalytics/web/app/home/__init__.py +9 -0
  206. customeranalytics/web/app/home/forms.py +1039 -0
  207. customeranalytics/web/app/home/models.py +438 -0
  208. customeranalytics/web/app/home/profiles.py +310 -0
  209. customeranalytics/web/app/home/routes.py +386 -0
  210. customeranalytics/web/app/home/search.py +288 -0
  211. customeranalytics/web/app/home/static/assets/img/avatars/avatar-1.png +0 -0
  212. customeranalytics/web/app/home/static/assets/img/avatars/avatar-2.png +0 -0
  213. customeranalytics/web/app/home/static/assets/img/avatars/avatar-3.png +0 -0
  214. customeranalytics/web/app/home/static/assets/img/avatars/avatar-4.png +0 -0
  215. customeranalytics/web/app/home/static/assets/img/avatars/avatar-5.png +0 -0
  216. customeranalytics/web/app/home/static/assets/img/icons/customanality.png +0 -0
  217. customeranalytics/web/app/home/static/assets/img/icons/icon-48x48.png +0 -0
  218. customeranalytics/web/app/home/templates/abtest-product.html +280 -0
  219. customeranalytics/web/app/home/templates/abtest-promotion.html +362 -0
  220. customeranalytics/web/app/home/templates/abtest-segments.html +298 -0
  221. customeranalytics/web/app/home/templates/add-data-delivery.html +184 -0
  222. customeranalytics/web/app/home/templates/add-data-product.html +177 -0
  223. customeranalytics/web/app/home/templates/add-data-purchase.html +392 -0
  224. customeranalytics/web/app/home/templates/anomaly.html +261 -0
  225. customeranalytics/web/app/home/templates/clv.html +211 -0
  226. customeranalytics/web/app/home/templates/cohorts.html +308 -0
  227. customeranalytics/web/app/home/templates/customer-segmentation.html +308 -0
  228. customeranalytics/web/app/home/templates/data-es.html +152 -0
  229. customeranalytics/web/app/home/templates/data-execute.html +397 -0
  230. customeranalytics/web/app/home/templates/delivery.html +404 -0
  231. customeranalytics/web/app/home/templates/funnel-customer.html +240 -0
  232. customeranalytics/web/app/home/templates/funnel-session.html +236 -0
  233. customeranalytics/web/app/home/templates/index.html +524 -0
  234. customeranalytics/web/app/home/templates/index2.html +515 -0
  235. customeranalytics/web/app/home/templates/page-403.html +46 -0
  236. customeranalytics/web/app/home/templates/page-404.html +45 -0
  237. customeranalytics/web/app/home/templates/page-500.html +45 -0
  238. customeranalytics/web/app/home/templates/pages-blank.html +33 -0
  239. customeranalytics/web/app/home/templates/pages-sign-in.html +67 -0
  240. customeranalytics/web/app/home/templates/pages-sign-up.html +61 -0
  241. customeranalytics/web/app/home/templates/product.html +203 -0
  242. customeranalytics/web/app/home/templates/profile.html +1009 -0
  243. customeranalytics/web/app/home/templates/rfm.html +254 -0
  244. customeranalytics/web/app/home/templates/search.html +167 -0
  245. customeranalytics/web/app/home/templates/settings.html +205 -0
  246. customeranalytics/web/app/home/templates/stats-desc.html +230 -0
  247. customeranalytics/web/app/home/templates/stats-purchase.html +221 -0
  248. customeranalytics/web/config.py +30 -0
  249. customeranalytics/web/db.sqlite3 +0 -0
  250. customeranalytics/web/run.py +30 -0
  251. customeranalytics-0.1.dist-info/METADATA +1102 -0
  252. customeranalytics-0.1.dist-info/RECORD +254 -0
  253. customeranalytics-0.1.dist-info/WHEEL +4 -0
  254. customeranalytics-0.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,1009 @@
1
+ {% extends "layouts/base.html" %}
2
+
3
+ {% block title %} Profile {% endblock %}
4
+
5
+ <!-- Specific Page CSS goes HERE -->
6
+ {% block stylesheets %}{% endblock stylesheets %}
7
+
8
+ {% block content %}
9
+
10
+ <main class="content">
11
+ <div class="container-fluid p-0">
12
+
13
+ <h1 class="h3 mb-3">Profile</h1>
14
+
15
+ <div class="row">
16
+ <div class="col-md-4 col-xl-3">
17
+ <div class="card mb-3">
18
+ <div class="card-header">
19
+ <h5 class="card-title mb-0">Profile Details</h5>
20
+ </div>
21
+ <div class="card-body text-center">
22
+ {% if pic == 'None' %}
23
+ <div class="card-body text-center" style="text-allign:center;">
24
+ <span id="firstName" hidden>{{ current_user.username }} </span>
25
+ <span id="lastName" hidden>{{ current_user.email }} </span>
26
+ <div id="profileImage" width="128" height="128" align="center"></div>
27
+ </div>
28
+ {% endif %}
29
+ {% if pic != 'None' %}
30
+ <img src="/static/assets/img/avatars/{{ pic }}" alt="Jodie Drewer" class="img-fluid rounded-circle mb-2" width="128" height="128" />
31
+ {% endif %}
32
+
33
+
34
+
35
+ <form action="/upload-image" method="POST" enctype="multipart/form-data">
36
+ <div class="form-group">
37
+ <div class="custom-file mb-1">
38
+ <label for="image" class="btn" style="color:green;">Select Image</label>
39
+ <input type="file" class="custom-file-input" style="visibility:hidden;" name="image" id="image" required>
40
+ <button type="submit" class="btn btn-primary">Upload</button>
41
+ </div>
42
+ </div>
43
+
44
+ </form>
45
+
46
+
47
+
48
+ <h5 class="card-title mb-0">
49
+ {{ current_user.username }}
50
+ </h5>
51
+ <div class="text-muted mb-2">
52
+ {{ current_user.email }}
53
+ </div>
54
+
55
+ <div>
56
+ <a data-toggle="modal" data-target="#test" class="btn btn-primary btn-sm" ><span data-feather="message-square"></span> Message</a>
57
+ <form method="POST">
58
+ <div class="modal fade" id="test" tabindex="-1" role="dialog" aria-hidden="true">
59
+ <div class="modal-dialog" role="document">
60
+ <div class="modal-content" style=" width: 800px;">
61
+ <div class="modal-header">
62
+ <h4 class="card-subtitle text-muted"></h4>
63
+ <button type="button" class="btn-close" data-dismiss="modal" aria-label="Close"></button>
64
+ </div>
65
+ <div class="modal-body m-3">
66
+ <div class="card">
67
+ <div class="card-body">
68
+ <h5 class="card-title mb-3" style="text-align:left;">Title Of Message</h5>
69
+ <input name="general_message" class="form-control mb-3 " type="text" style=" width: 700px; outline: none; border-radius: 25px; border: 2px solid #73AD21;" required/>
70
+ <div class="accordion" id="accordionExample">
71
+ <div class="card">
72
+ <div class="card-header" id="headingOne">
73
+ <h5 class="card-title my-1">
74
+ <a href="#" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne" style="color:green;font-size:12px">
75
+ Filters
76
+ </a>
77
+ </h5>
78
+ </div>
79
+ <div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-parent="#accordionExample">
80
+ <div class="row">
81
+ <div class="col-md-6">
82
+ <div class="card">
83
+ <div class="card-body">
84
+ <div class="card">
85
+ <div class="card-header">
86
+ <h5 class="card-title mb-0" style="text-align:left;">dimension selection</h5>
87
+ </div>
88
+ <div class="card-body">
89
+ <select name="index" id="index" class="form-control" style="font-size:12px;">
90
+ {% for d in filters['dimensions'] %}
91
+ {% if d == 'There is no available report. Please execute Schedule Data Process' %}
92
+ <option value= "main">{{ d }}</option>
93
+ {% endif %}
94
+ {% if d != 'There is no available report. Please execute Schedule Data Process' %}
95
+ <option value="{{ d }}">{{ d }}</option>
96
+ {% endif %}
97
+ {% endfor %}
98
+ </select>
99
+ </div>
100
+ </div>
101
+
102
+
103
+ <div class="card">
104
+ <div class="card-header">
105
+ <h5 class="card-title mb-0" style="text-align:left;">chart title</h5>
106
+ </div>
107
+ <div class="card-body">
108
+ <select name="chart" id="chart" class="form-control" style="font-size:12px;">
109
+ <option>select chart to show on message ..</option>
110
+ {% for page in filters['chart_names'] %}
111
+ <optgroup label="{{ page }}">
112
+ {% for d in filters['chart_names'][page] %}
113
+ <option value= "{{page + '*' + d}}">{{ d }}</option>
114
+ {% endfor %}
115
+ </optgroup>
116
+ {% endfor %}
117
+ </select>
118
+ </div>
119
+ </div>
120
+
121
+ </div>
122
+ </div>
123
+ </div>
124
+
125
+ <div class="col-md-6">
126
+ <div class="card flex-fil">
127
+ <div class="card-body col-12">
128
+ <div class="col-12 ">
129
+ <div class="align-self-center w-100">
130
+ <div class="chart">
131
+ <input name="date" id="datetimepicker-dashboard" hidden>
132
+ </div>
133
+ </div>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+
142
+
143
+ </div>
144
+ <h5 class="card-title mb-1" style="text-align:left;">Content
145
+ </h5>
146
+
147
+ <div class="mb-3">
148
+
149
+ </div>
150
+ <textarea name="message" class="form-control"
151
+ placeholder="use <chart nme> to show charts or <kpis> Ex: <Daily Funnel> Ex: <Daily Funnel *dimension:location_1; date:2021-05-13;>"
152
+
153
+ rows="5" style="width: 700px; outline: none; border-radius: 25px; border: 2px solid #73AD21;" required></textarea>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ <div class="modal-footer">
158
+ <button name="edit" value="True" type="submit" class="btn btn-pill btn-outline-primary">send</button>
159
+ </div>
160
+ </div>
161
+ </div>
162
+ </div>
163
+ </form>
164
+ </div>
165
+ </div>
166
+ <hr class="my-0" />
167
+ <div class="card-body">
168
+ <h5 class="h6 card-title">Skills</h5>
169
+ <a href="#" class="badge bg-primary mr-1 my-1">HTML</a>
170
+ <a href="#" class="badge bg-primary mr-1 my-1">JavaScript</a>
171
+ <a href="#" class="badge bg-primary mr-1 my-1">Python</a>
172
+ <a href="#" class="badge bg-primary mr-1 my-1">AI</a>
173
+ <a href="#" class="badge bg-primary mr-1 my-1">AWS</a>
174
+ </div>
175
+ <hr class="my-0" />
176
+ <div class="card-body">
177
+ <h5 class="h6 card-title">About</h5>
178
+ <ul class="list-unstyled mb-0">
179
+ <li class="mb-1"><span data-feather="home" class="feather-sm mr-1"></span> Lives in <a href="#">Istanbul, Turkey</a></li>
180
+ </ul>
181
+ </div>
182
+ <hr class="my-0" />
183
+ <div class="card-body">
184
+ <h5 class="h6 card-title">Elsewhere</h5>
185
+ <ul class="list-unstyled mb-0">
186
+ <li class="mb-1"><span class="fas fa-globe fa-fw mr-1"></span> <a href="#">GitHub</a></li>
187
+ <li class="mb-1"><span class="fab fa-linkedin fa-fw mr-1"></span> <a href="#">LinkedIn</a></li>
188
+ </ul>
189
+ </div>
190
+ </div>
191
+ </div>
192
+
193
+ <div class="col-md-8 col-xl-9">
194
+ <div class="card" style = "height: 600px; overflow:auto; padding: 5px;">
195
+ <div class="card-header">
196
+
197
+ <h5 class="card-title mb-0">Activities</h5>
198
+ </div>
199
+ <div class="card-body h-100">
200
+ {% if messages != None %}
201
+ {% for m in messages %}
202
+ <div class="d-flex align-items-start">
203
+ {% if m['user_avatar'] == 'None' %}
204
+ <div class="card-body text-center" style="text-allign:center;">
205
+ <span id="firstName" hidden>{{ m['username'] }} </span>
206
+ <span id="lastName" hidden>{{ m['email'] }} </span>
207
+ <div id="profileImage" width="128" height="128" align="center"></div>
208
+ </div>
209
+ {% endif %}
210
+ {% if m['user_avatar'] != None %}
211
+ <img src="/static/assets/img/avatars/{{ m['user_avatar'] }}" class="img-fluid rounded-circle mb-2" width="128" height="128" />
212
+ {% endif %}
213
+ <div class="flex-grow-1">
214
+ <small class="float-right text-navy">{{ m['date_1'] }}</small>
215
+ <strong>{{ m['user'] }}</strong> {{ m['general_message'] }}<br />
216
+ <small class="text-muted">{{ m['date_2'] }}</small><br />
217
+
218
+ <div class="card-body">
219
+ <div id="{{ m['chart_name'] }}" class="plotly-gra ph-div"></div>
220
+ </div>
221
+
222
+
223
+ {% if m['message'] != '' %}
224
+ {% for sub_m in m['message'] %}
225
+ <div class="d-flex align-items-start">
226
+ {% if sub_m['user_avatar'] == 'None' %}
227
+ <div class="card-body text-center" style="text-allign:center;">
228
+ <span id="firstName" hidden>{{ sub_m['user'] }} </span>
229
+ <span id="lastName" hidden>{{ sub_m['user'] }} </span>
230
+ <div id="profileImage" width="128" height="128" align="center"></div>
231
+ </div>
232
+ {% endif %}
233
+ {% if sub_m['user_avatar'] != None %}
234
+ <img src="/static/assets/img/avatars/{{ sub_m['user_avatar'] }}" class="img-fluid rounded-circle mb-2" width="128" height="128" />
235
+ {% endif %}
236
+ <div class="flex-grow-1 mb-1">
237
+ <strong>{{ sub_m['user'] }}</strong> <br />
238
+ <div class="border text-sm text-muted p-2 mt-1">{{ sub_m['message'] }}</div>
239
+ <small class="text-muted">{{ sub_m['date_2'] }}</small><br />
240
+ </div>
241
+ </div>
242
+ {% endfor %}
243
+ {% endif %}
244
+ <div class="d-flex align-items-start">
245
+ {% if pic == 'None' %}
246
+ <span id="firstName" hidden>{{ current_user.username }} </span>
247
+ <span id="lastName" hidden>{{ current_user.email }} </span>
248
+ <div id="profileImage" width="128" height="128" align="center"></div>
249
+ {% endif %}
250
+ {% if pic != 'None' %}
251
+ <img src="/static/assets/img/avatars/{{ pic }}" alt="Jodie Drewer" class="img-fluid rounded-circle mb-2" width="128" height="128" />
252
+ {% endif %}
253
+ <div class="flex-grow-1">
254
+ <strong>{{ current_user.username }}</strong> <br />
255
+ <div class="col-md-12">
256
+ <div class="flex-grow-1">
257
+ <form method="POST">
258
+ <input name="message" class="border text-sm text-muted p-2 mt-1"
259
+ type="text" style=" width: 790px; outline: none; border-radius: 25px; border: 2px solid #73AD21;"/>
260
+ <button type="submit" name="id" value="{{ m['id'] }}" class="btn btn-pill btn-outline-primary">send</button>
261
+ </form>
262
+ </div>
263
+ </div>
264
+ </div>
265
+ </div>
266
+ </div>
267
+ </div>
268
+ <hr />
269
+ {% endfor %}
270
+ {% endif %}
271
+ <hr />
272
+ </div>
273
+ </div>
274
+ </div>
275
+ </div>
276
+
277
+ </div>
278
+
279
+
280
+ </main>
281
+
282
+ <style>
283
+ /* width */
284
+ ::-webkit-scrollbar {
285
+ width: 10px;
286
+ }
287
+
288
+ /* Track */
289
+ ::-webkit-scrollbar-track {
290
+ background: #f1f1f1;
291
+ }
292
+
293
+ /* Handle */
294
+ ::-webkit-scrollbar-thumb {
295
+ background: #888;
296
+ }
297
+
298
+ /* Handle on hover */
299
+ ::-webkit-scrollbar-thumb:hover {
300
+ background: #555;
301
+ }
302
+ .inputfile {
303
+
304
+ opacity: 8;
305
+ overflow: hidden;
306
+ position: absolute;
307
+ z-index: -1;
308
+ }
309
+
310
+ .inputfile + label {
311
+ cursor: pointer; /* "hand" cursor */
312
+ }
313
+
314
+
315
+ </style>
316
+
317
+ {% endblock content %}
318
+
319
+ <!-- Specific Page JS goes HERE -->
320
+ {% block javascripts %}
321
+ <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
322
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script>
323
+ <script>
324
+ try {
325
+ var plot1 = {{chart.daily_funnel | safe}};
326
+
327
+ Plotly.plot(daily_funnel, // the ID of the div, created above
328
+ plot1.trace,
329
+ plot1.layout, {});
330
+ }
331
+ catch (e) {};
332
+
333
+ try {
334
+
335
+
336
+ var plot2 = {{chart.weekly_funnel | safe}};
337
+
338
+
339
+ Plotly.plot(weekly_funnel, // the ID of the div, created above
340
+ plot2.trace,
341
+ plot2.layout, {});
342
+ }
343
+ catch (e) {};
344
+
345
+ try {
346
+ var plot34 = {{chart.product_usage_before_after_amount_accept | safe}};
347
+
348
+ Plotly.plot(product_usage_before_after_amount_accept, // the ID of the div, created above
349
+ plot34.trace,
350
+ plot34.layout, {});
351
+ }
352
+ catch (e) {};
353
+
354
+
355
+ try {
356
+
357
+
358
+ var plot2 = {{chart.weekly_funnel | safe}};
359
+
360
+
361
+ Plotly.plot(weekly_funnel, // the ID of the div, created above
362
+ plot2.trace,
363
+ plot2.layout, {});
364
+ }
365
+ catch (e) {};
366
+ try {
367
+
368
+
369
+ var plot2 = {{chart.weekly_funnel | safe}};
370
+
371
+
372
+ Plotly.plot(weekly_funnel, // the ID of the div, created above
373
+ plot2.trace,
374
+ plot2.layout, {});
375
+ }
376
+ catch (e) {};
377
+
378
+
379
+ try {
380
+ var plot1 = {{chart.daily_funnel | safe}};
381
+
382
+ Plotly.plot(daily_funnel, // the ID of the div, created above
383
+ plot1.trace,
384
+ plot1.layout, {});
385
+ } catch (e) {};
386
+
387
+
388
+
389
+
390
+ try {
391
+ var plot2 = {{chart.weekly_funnel | safe}};
392
+
393
+ Plotly.plot(weekly_funnel, // the ID of the div, created above
394
+ plot2.trace,
395
+ plot2.layout, {});
396
+ } catch (e) {};
397
+
398
+
399
+
400
+
401
+ try {
402
+ var plot3 = {{chart.monthly_funnel | safe}};
403
+
404
+ Plotly.plot(monthly_funnel, // the ID of the div, created above
405
+ plot3.trace,
406
+ plot3.layout, {});
407
+ } catch (e) {};
408
+
409
+
410
+
411
+
412
+ try {
413
+ var plot4 = {{chart.hourly_funnel | safe}};
414
+
415
+ Plotly.plot(hourly_funnel, // the ID of the div, created above
416
+ plot4.trace,
417
+ plot4.layout, {});
418
+ } catch (e) {};
419
+
420
+
421
+
422
+
423
+ try {
424
+ var plot5 = {{chart.daily_funnel_downloads | safe}};
425
+
426
+ Plotly.plot(daily_funnel_downloads, // the ID of the div, created above
427
+ plot5.trace,
428
+ plot5.layout, {});
429
+ } catch (e) {};
430
+
431
+
432
+
433
+
434
+ try {
435
+ var plot6 = {{chart.weekly_funnel_downloads | safe}};
436
+
437
+ Plotly.plot(weekly_funnel_downloads, // the ID of the div, created above
438
+ plot6.trace,
439
+ plot6.layout, {});
440
+ } catch (e) {};
441
+
442
+
443
+
444
+
445
+ try {
446
+ var plot7 = {{chart.monthly_funnel_downloads | safe}};
447
+
448
+ Plotly.plot(monthly_funnel_downloads, // the ID of the div, created above
449
+ plot7.trace,
450
+ plot7.layout, {});
451
+ } catch (e) {};
452
+
453
+
454
+
455
+
456
+ try {
457
+ var plot8 = {{chart.hourly_funnel_downloads | safe}};
458
+
459
+ Plotly.plot(hourly_funnel_downloads, // the ID of the div, created above
460
+ plot8.trace,
461
+ plot8.layout, {});
462
+ } catch (e) {};
463
+
464
+
465
+
466
+
467
+ try {
468
+ var plot9 = {{chart.daily_cohort_downloads | safe}};
469
+
470
+ Plotly.plot(daily_cohort_downloads, // the ID of the div, created above
471
+ plot9.trace,
472
+ plot9.layout, {});
473
+ } catch (e) {};
474
+
475
+
476
+
477
+
478
+ try {
479
+ var plot10 = {{chart.daily_cohort_from_1_to_2 | safe}};
480
+
481
+ Plotly.plot(daily_cohort_from_1_to_2, // the ID of the div, created above
482
+ plot10.trace,
483
+ plot10.layout, {});
484
+ } catch (e) {};
485
+
486
+
487
+
488
+
489
+ try {
490
+ var plot11 = {{chart.daily_cohort_from_2_to_3 | safe}};
491
+
492
+ Plotly.plot(daily_cohort_from_2_to_3, // the ID of the div, created above
493
+ plot11.trace,
494
+ plot11.layout, {});
495
+ } catch (e) {};
496
+
497
+
498
+
499
+
500
+ try {
501
+ var plot12 = {{chart.daily_cohort_from_3_to_4 | safe}};
502
+
503
+ Plotly.plot(daily_cohort_from_3_to_4, // the ID of the div, created above
504
+ plot12.trace,
505
+ plot12.layout, {});
506
+ } catch (e) {};
507
+
508
+
509
+
510
+
511
+ try {
512
+ var plot13 = {{chart.weekly_cohort_downloads | safe}};
513
+
514
+ Plotly.plot(weekly_cohort_downloads, // the ID of the div, created above
515
+ plot13.trace,
516
+ plot13.layout, {});
517
+ } catch (e) {};
518
+
519
+
520
+
521
+
522
+ try {
523
+ var plot14 = {{chart.weekly_cohort_from_1_to_2 | safe}};
524
+
525
+ Plotly.plot(weekly_cohort_from_1_to_2, // the ID of the div, created above
526
+ plot14.trace,
527
+ plot14.layout, {});
528
+ } catch (e) {};
529
+
530
+
531
+
532
+
533
+ try {
534
+ var plot15 = {{chart.weekly_cohort_from_2_to_3 | safe}};
535
+
536
+ Plotly.plot(weekly_cohort_from_2_to_3, // the ID of the div, created above
537
+ plot15.trace,
538
+ plot15.layout, {});
539
+ } catch (e) {};
540
+
541
+
542
+
543
+
544
+ try {
545
+ var plot16 = {{chart.weekly_cohort_from_3_to_4 | safe}};
546
+
547
+ Plotly.plot(weekly_cohort_from_3_to_4, // the ID of the div, created above
548
+ plot16.trace,
549
+ plot16.layout, {});
550
+ } catch (e) {};
551
+
552
+
553
+
554
+
555
+ try {
556
+ var plot17 = {{chart.daily_orders | safe}};
557
+
558
+ Plotly.plot(daily_orders, // the ID of the div, created above
559
+ plot17.trace,
560
+ plot17.layout, {});
561
+ } catch (e) {};
562
+
563
+
564
+
565
+
566
+ try {
567
+ var plot18 = {{chart.hourly_orders | safe}};
568
+
569
+ Plotly.plot(hourly_orders, // the ID of the div, created above
570
+ plot18.trace,
571
+ plot18.layout, {});
572
+ } catch (e) {};
573
+
574
+
575
+
576
+
577
+ try {
578
+ var plot19 = {{chart.weekly_orders | safe}};
579
+
580
+ Plotly.plot(weekly_orders, // the ID of the div, created above
581
+ plot19.trace,
582
+ plot19.layout, {});
583
+ } catch (e) {};
584
+
585
+
586
+
587
+
588
+ try {
589
+ var plot20 = {{chart.monthly_orders | safe}};
590
+
591
+ Plotly.plot(monthly_orders, // the ID of the div, created above
592
+ plot20.trace,
593
+ plot20.layout, {});
594
+ } catch (e) {};
595
+
596
+
597
+
598
+
599
+ try {
600
+ var plot21 = {{chart.weekly_average_session_per_user | safe}};
601
+
602
+ Plotly.plot(weekly_average_session_per_user, // the ID of the div, created above
603
+ plot21.trace,
604
+ plot21.layout, {});
605
+ } catch (e) {};
606
+
607
+
608
+
609
+
610
+ try {
611
+ var plot22 = {{chart.weekly_average_payment_amount | safe}};
612
+
613
+ Plotly.plot(weekly_average_payment_amount, // the ID of the div, created above
614
+ plot22.trace,
615
+ plot22.layout, {});
616
+ } catch (e) {};
617
+
618
+
619
+
620
+
621
+ try {
622
+ var plot23 = {{chart.purchase_amount_distribution | safe}};
623
+
624
+ Plotly.plot(purchase_amount_distribution, // the ID of the div, created above
625
+ plot23.trace,
626
+ plot23.layout, {});
627
+ } catch (e) {};
628
+
629
+
630
+
631
+
632
+ try {
633
+ var plot24 = {{chart.weekly_average_payment_amount | safe}};
634
+
635
+ Plotly.plot(weekly_average_payment_amount, // the ID of the div, created above
636
+ plot24.trace,
637
+ plot24.layout, {});
638
+ } catch (e) {};
639
+
640
+
641
+
642
+
643
+ try {
644
+ var plot25 = {{chart.most_combined_products | safe}};
645
+
646
+ Plotly.plot(most_combined_products, // the ID of the div, created above
647
+ plot25.trace,
648
+ plot25.layout, {});
649
+ } catch (e) {};
650
+
651
+
652
+
653
+
654
+ try {
655
+ var plot26 = {{chart.most_ordered_products | safe}};
656
+
657
+ Plotly.plot(most_ordered_products, // the ID of the div, created above
658
+ plot26.trace,
659
+ plot26.layout, {});
660
+ } catch (e) {};
661
+
662
+
663
+
664
+
665
+ try {
666
+ var plot27 = {{chart.most_ordered_categories | safe}};
667
+
668
+ Plotly.plot(most_ordered_categories, // the ID of the div, created above
669
+ plot27.trace,
670
+ plot27.layout, {});
671
+ } catch (e) {};
672
+
673
+
674
+
675
+
676
+ try {
677
+ var plot28 = {{chart.promotion_comparison | safe}};
678
+
679
+ Plotly.plot(promotion_comparison, // the ID of the div, created above
680
+ plot28.trace,
681
+ plot28.layout, {});
682
+ } catch (e) {};
683
+
684
+
685
+
686
+
687
+ try {
688
+ var plot29 = {{chart.order_and_payment_amount_differences | safe}};
689
+
690
+ Plotly.plot(order_and_payment_amount_differences, // the ID of the div, created above
691
+ plot29.trace,
692
+ plot29.layout, {});
693
+ } catch (e) {};
694
+
695
+
696
+
697
+
698
+ try {
699
+ var plot30 = {{chart.promotion_usage_before_after_amount_accept | safe}};
700
+
701
+ Plotly.plot(promotion_usage_before_after_amount_accept, // the ID of the div, created above
702
+ plot30.trace,
703
+ plot30.layout, {});
704
+ } catch (e) {};
705
+
706
+
707
+
708
+
709
+ try {
710
+ var plot31 = {{chart.promotion_usage_before_after_amount_reject | safe}};
711
+
712
+ Plotly.plot(promotion_usage_before_after_amount_reject, // the ID of the div, created above
713
+ plot31.trace,
714
+ plot31.layout, {});
715
+ } catch (e) {};
716
+
717
+
718
+
719
+
720
+ try {
721
+ var plot32 = {{chart.promotion_usage_before_after_orders_accept | safe}};
722
+
723
+ Plotly.plot(promotion_usage_before_after_orders_accept, // the ID of the div, created above
724
+ plot32.trace,
725
+ plot32.layout, {});
726
+ } catch (e) {};
727
+
728
+
729
+
730
+
731
+ try {
732
+ var plot33 = {{chart.promotion_usage_before_after_orders_reject | safe}};
733
+
734
+ Plotly.plot(promotion_usage_before_after_orders_reject, // the ID of the div, created above
735
+ plot33.trace,
736
+ plot33.layout, {});
737
+ } catch (e) {};
738
+
739
+
740
+
741
+
742
+ try {
743
+ var plot34 = {{chart.product_usage_before_after_amount_accept | safe}};
744
+
745
+ Plotly.plot(product_usage_before_after_amount_accept, // the ID of the div, created above
746
+ plot34.trace,
747
+ plot34.layout, {});
748
+ } catch (e) {};
749
+
750
+
751
+
752
+
753
+ try {
754
+ var plot35 = {{chart.product_usage_before_after_amount_reject | safe}};
755
+
756
+ Plotly.plot(product_usage_before_after_amount_reject, // the ID of the div, created above
757
+ plot35.trace,
758
+ plot35.layout, {});
759
+ } catch (e) {};
760
+
761
+
762
+
763
+
764
+ try {
765
+ var plot36 = {{chart.product_usage_before_after_orders_accept | safe}};
766
+
767
+ Plotly.plot(product_usage_before_after_orders_accept, // the ID of the div, created above
768
+ plot36.trace,
769
+ plot36.layout, {});
770
+ } catch (e) {};
771
+
772
+
773
+
774
+
775
+ try {
776
+ var plot37 = {{chart.product_usage_before_after_orders_reject | safe}};
777
+
778
+ Plotly.plot(product_usage_before_after_orders_reject, // the ID of the div, created above
779
+ plot37.trace,
780
+ plot37.layout, {});
781
+ } catch (e) {};
782
+
783
+
784
+
785
+
786
+ try {
787
+ var plot38 = {{chart.segments_change_daily_before_after_orders | safe}};
788
+
789
+ Plotly.plot(segments_change_daily_before_after_orders, // the ID of the div, created above
790
+ plot38.trace,
791
+ plot38.layout, {});
792
+ } catch (e) {};
793
+
794
+
795
+
796
+
797
+ try {
798
+ var plot39 = {{chart.segments_change_weekly_before_after_orders | safe}};
799
+
800
+ Plotly.plot(segments_change_weekly_before_after_orders, // the ID of the div, created above
801
+ plot39.trace,
802
+ plot39.layout, {});
803
+ } catch (e) {};
804
+
805
+
806
+
807
+
808
+ try {
809
+ var plot40 = {{chart.segments_change_weekly_before_after_orders | safe}};
810
+
811
+ Plotly.plot(segments_change_weekly_before_after_orders, // the ID of the div, created above
812
+ plot40.trace,
813
+ plot40.layout, {});
814
+ } catch (e) {};
815
+
816
+
817
+
818
+
819
+ try {
820
+ var plot41 = {{chart.segments_change_daily_before_after_amount | safe}};
821
+
822
+ Plotly.plot(segments_change_daily_before_after_amount, // the ID of the div, created above
823
+ plot41.trace,
824
+ plot41.layout, {});
825
+ } catch (e) {};
826
+
827
+
828
+
829
+
830
+ try {
831
+ var plot42 = {{chart.segments_change_weekly_before_after_amount | safe}};
832
+
833
+ Plotly.plot(segments_change_weekly_before_after_amount, // the ID of the div, created above
834
+ plot42.trace,
835
+ plot42.layout, {});
836
+ } catch (e) {};
837
+
838
+
839
+
840
+
841
+ try {
842
+ var plot43 = {{chart.segments_change_weekly_before_after_amount | safe}};
843
+
844
+ Plotly.plot(segments_change_weekly_before_after_amount, // the ID of the div, created above
845
+ plot43.trace,
846
+ plot43.layout, {});
847
+ } catch (e) {};
848
+
849
+
850
+
851
+
852
+ try {
853
+ var plot44 = {{chart.rfm | safe}};
854
+
855
+ Plotly.plot(rfm, // the ID of the div, created above
856
+ plot44.trace,
857
+ plot44.layout, {});
858
+ } catch (e) {};
859
+
860
+
861
+
862
+
863
+ try {
864
+ var plot45 = {{chart.frequency_recency | safe}};
865
+
866
+ Plotly.plot(frequency_recency, // the ID of the div, created above
867
+ plot45.trace,
868
+ plot45.layout, {});
869
+ } catch (e) {};
870
+
871
+
872
+
873
+
874
+ try {
875
+ var plot46 = {{chart.monetary_frequency | safe}};
876
+
877
+ Plotly.plot(monetary_frequency, // the ID of the div, created above
878
+ plot46.trace,
879
+ plot46.layout, {});
880
+ } catch (e) {};
881
+
882
+
883
+
884
+
885
+ try {
886
+ var plot47 = {{chart.recency_monetary | safe}};
887
+
888
+ Plotly.plot(recency_monetary, // the ID of the div, created above
889
+ plot47.trace,
890
+ plot47.layout, {});
891
+ } catch (e) {};
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+ try {
901
+ var plot49 = {{chart.frequency_clusters | safe}};
902
+
903
+ Plotly.plot(frequency_clusters, // the ID of the div, created above
904
+ plot49.trace,
905
+ plot49.layout, {});
906
+ } catch (e) {};
907
+
908
+
909
+
910
+
911
+ try {
912
+ var plot50 = {{chart.monetary_clusters | safe}};
913
+
914
+ Plotly.plot(monetary_clusters, // the ID of the div, created above
915
+ plot50.trace,
916
+ plot50.layout, {});
917
+ } catch (e) {};
918
+
919
+
920
+
921
+
922
+ try {
923
+ var plot51 = {{chart.recency_clusters | safe}};
924
+
925
+ Plotly.plot(recency_clusters, // the ID of the div, created above
926
+ plot51.trace,
927
+ plot51.layout, {});
928
+ } catch (e) {};
929
+
930
+
931
+
932
+
933
+ try {
934
+ var plot52 = {{chart.daily_clv | safe}};
935
+
936
+ Plotly.plot(daily_clv, // the ID of the div, created above
937
+ plot52.trace,
938
+ plot52.layout, {});
939
+ } catch (e) {};
940
+
941
+
942
+
943
+
944
+ try {
945
+ var plot53 = {{chart.daily_clv | safe}};
946
+
947
+ Plotly.plot(daily_clv, // the ID of the div, created above
948
+ plot53.trace,
949
+ plot53.layout, {});
950
+ } catch (e) {};
951
+
952
+
953
+
954
+
955
+ try {
956
+ var plot54 = {{chart.customer_journey | safe}};
957
+
958
+ Plotly.plot(customer_journey, // the ID of the div, created above
959
+ plot54.trace,
960
+ plot54.layout, {});
961
+ } catch (e) {};
962
+
963
+
964
+
965
+
966
+ try {
967
+ var plot55 = {{chart.clvsegments_amount | safe}};
968
+
969
+ Plotly.plot(clvsegments_amount, // the ID of the div, created above
970
+ plot55.trace,
971
+ plot55.layout, {});
972
+ } catch (e) {};
973
+
974
+
975
+
976
+
977
+
978
+ document.addEventListener("DOMContentLoaded", function() {
979
+ document.getElementById("datetimepicker-dashboard").flatpickr({
980
+ inline: true,
981
+
982
+ prevArrow: "<span class=\"fas fa-chevron-left\" title=\"Previous month\"></span>",
983
+ nextArrow: "<span class=\"fas fa-chevron-right\" title=\"Next month\"></span>",
984
+ });
985
+ });
986
+
987
+ $(document).ready(function(){
988
+ var firstName = $('#firstName').text();
989
+ var lastName = $('#lastName').text();
990
+ var intials = $('#firstName').text().charAt(0) + $('#lastName').text().charAt(0);
991
+ var profileImage = $('#profileImage').text(intials);
992
+ });
993
+
994
+ $(document).ready(function(){
995
+ var firstName = $('#firstName').text();
996
+ var lastName = $('#lastName').text();
997
+ var intials = $('#firstName').text().charAt(0) + $('#lastName').text().charAt(0);
998
+ var profileImage = $('#profileImageTop').text(intials);
999
+ });
1000
+
1001
+ imgInp.onchange = evt => {
1002
+ const [file] = imgInp.files
1003
+ if (file) {
1004
+ blah.src = URL.createObjectURL(file)
1005
+ }
1006
+ }
1007
+ </script>
1008
+
1009
+ {% endblock javascripts %}