candl 0.1.7 → 0.1.8

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -21
  3. data/app/views/candl/calendar/_agenda.slim +38 -38
  4. data/app/views/candl/calendar/_frame.slim +8 -24
  5. data/app/views/candl/calendar/_month.slim +96 -99
  6. data/config/locales/de.yml +4 -1
  7. data/config/locales/en.yml +4 -1
  8. data/lib/candl/agenda_model.rb +16 -8
  9. data/lib/candl/event_loader_model.rb +3 -4
  10. data/lib/candl/month_model.rb +19 -13
  11. data/lib/candl/version.rb +1 -1
  12. data/spec/dummy/log/development.log +1112 -0
  13. data/spec/dummy/log/test.log +140 -0
  14. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-O/-OuZyMXBCo53DWs3nzu-ipI_pam6RR6vKJXtxIIAmnU.cache +1 -0
  15. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-k/-K1Fie3NdcJf56jr8mPldRRDzJNTeh4_vsa18FqND1g.cache +1 -0
  16. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2Z/2Z6zeR9_pqCdf0-slDIQTyGsBCtCyrnE4qM0KzNCweY.cache +4 -0
  17. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/33/33qlMuCAp93zrmU4AXC7G1lZdUctPzy3V4yI_dz32DA.cache +0 -0
  18. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/37/37t8cBi5Ot_JijeK-rrfF963M9V4uwRCiptinpqsSFs.cache +1 -0
  19. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3F/3FDl6PkuZftt2ARdyregr01TDi8FlvRFAzLhX-eJP1o.cache +0 -0
  20. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4Y/4YWxV6X8L-62hJaV5PwhEix-tMU7OJU9WvIixStA36A.cache +3 -0
  21. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4u/4uQ6m4x3k5pOmK7CJLB8WHneQkRpVVXgwdZID-75Jak.cache +1 -0
  22. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5-/5-ZKN9F2fNqq_8bDZAMnRh3OM71eQRQQF3axD83UaMI.cache +0 -0
  23. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6O/6o5qh0hGcBLliuuH20gAF8DHPUrCHa1uJOvYpWHqRAE.cache +1 -0
  24. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7v/7VsB1HDDrp4xR8JFw9yUsUdIrIrxiIW3dAgQbYS_xqg.cache +0 -0
  25. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8G/8GWrnAJQ7ccsytI_X2A54ORHLB4rDZChfGHZcT0SMoE.cache +1 -0
  26. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8o/8O2-MaUZwyfEd7eWh2zCIjPZH_3F0ndH8gDniNlatYQ.cache +1 -0
  27. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ay/AyGtSALF4as4M7w8Q304gAgt2ML5UrR_lP611vN1lJg.cache +5 -0
  28. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BC/bcPJvZScZPAXkLG5kDtk3w7NualOoo-RNea7jWvebgA.cache +1 -0
  29. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/BM/bMOEJHuqNybAnN2e5H3KnhgDy5RiL6nldLnqqBJCZ7A.cache +0 -0
  30. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dg/Dgoulq6UX8tF4AeCtMtEqiAYekcoTRs2FcluLOEnfPg.cache +0 -0
  31. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ee/EE4TAIFWksex_ogwdswC1ECxNGs5MIZRMbGng-kD4Gg.cache +0 -0
  32. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GU/GUuXNH1ANl0JsukNOIO4Ip3xTqe9Rp832UROR6jCq-4.cache +0 -0
  33. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/GZ/gziE_dXiUS6_CaXj4gKabwwdugLuAcBy5X4rWaEQNbo.cache +1 -0
  34. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +0 -0
  35. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HY/HY6x2AGLk1f80hwhHwmnj_urVb48VvyYpRaYbQTJiIA.cache +2 -0
  36. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Id/IdAC_ahCxkVg27zpgOx_lm5udzBGEf-d9Ec4SJdsTVU.cache +0 -0
  37. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Id/IdJMqrMJUYleQocklKpB10fNYrV29AGPrrzsRPfzmVw.cache +1 -0
  38. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Iw/IWhWkrXh_r7aVAqUg7JG3RljMc1bcqZCS4RNchl_vFM.cache +0 -0
  39. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J8/J83sHh5VcDTYAkDTGUOP-wmL668UPV43ADTfCHWXxqk.cache +1 -0
  40. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JE/jEbf5bimr4w2CzQGLBSPEhEMr8ISRMpy7eWCvlE_EqU.cache +0 -0
  41. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JG/jGOhbZTT_6X6T6dS8ceQcWKbqtuTRDc-jKo85Sb1lxE.cache +1 -0
  42. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KQ/kQrjGUDXOGkcHuvasu7-Q8Ff1bwWyxjhbU-WwIgUrl4.cache +1 -0
  43. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kh/KhSdRxAd88HI_d-dtZnBQYzjj5RChfb7VeQcx32glx0.cache +0 -0
  44. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L5/l5R8zNFCkXYZ0mKCq-QxcSC7VPEHjYjOCmUOjxL3F6A.cache +0 -0
  45. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mh/MhQt37z9hIPIn_UguwqFB63T2daHmL9NlIVNjHzQERY.cache +0 -0
  46. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mk/MkV0xX3Lq7SrUcluuf68pak0sN7jRMjfq91ZHa23jhY.cache +0 -0
  47. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NU/NUNmx3PBFfclR8ANw7sgdGdrHh9Vmk--XKOaa4dmVv4.cache +0 -0
  48. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ph/pHGIOKGPqj6D4T4F_wjdQ0mjGVEz13NsXM36txEhtCw.cache +0 -0
  49. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q_/Q_FbsoUpy0J0uLj5gPFAa5mtjH3BkzOTv9lMxJc0fNc.cache +1 -0
  50. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Qq/QQBJATWTrd8yKJPrfVlhqrh3uW_VvmiMbcgBpQKThqI.cache +1 -0
  51. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/S-/S--d5aRJDmwx9JFjVOHKq7S3fTnIwFuinx5ddJGJEeE.cache +0 -0
  52. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TA/TaUBVmOiKqEZ60C4U0MxmY3Im8nn_Lp68MupS6kkMgQ.cache +0 -0
  53. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TN/tnJAyKiYcFFyYPofhJTkzFED3UjfhJij29e55YN8Hzk.cache +0 -0
  54. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UG/uGzeN4BgbHvi4k4z-4WBvyqFeigTAmy7kRiRIeHu6-M.cache +0 -0
  55. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ui/UIRVAD8aR68kJgXhRwZSytLjgKOq0S2XbiLCQ6CdSVE.cache +1 -0
  56. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VZ/VZlUPWlEAaZAkUhO58ld86nnhnH5eoxuZ6vN_8yq_3o.cache +0 -0
  57. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vq/vQyL48kds8OYuMV4sQgv2sEwwYqWtl7ijVIL5xfLYpY.cache +0 -0
  58. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wa/wAKuCh03XLbw_n2QBQZKEiWsu2Q-G4yb41j9oB5hbbA.cache +0 -0
  59. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YI/YILD0GXU3KhA3St7SegqxM8-q2oLRUsp-QlJZe1jmvU.cache +1 -0
  60. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YI/YImdd_aFw47DKIk2D32E-zSf3xdXCC7JS8qsKrnO3Vg.cache +1 -0
  61. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YT/ytuZE33sIoG8-ZWJDaJA-Q91B2d5NEeJX0Y6gvLkdPQ.cache +1 -0
  62. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zm/ZmUCQt-mihVvmdXnAtl-mHl0Elg2_kCfpOSeznZBMp4.cache +0 -0
  63. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zx/zXXyNb20Py5YWBwoy5r6TgNtiWfpvkyuSDoKj-LxGZU.cache +0 -0
  64. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_6/_6cPQIIVPikBIM1TGMWjNoNVbCBlhRa4y7qFGvtnhn0.cache +0 -0
  65. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ad/ADMeAkaJFzDXz8RNqDqQ9S4qc05Nmo7wLexbebBPXk8.cache +1 -0
  66. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ba/badSeDdMvZ2LUpo9ZBjedqstJ5FeTa1TDa0WGLLfdjw.cache +0 -0
  67. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bf/Bf0mwSzs9KfsYO0Q6xOADTYSgoZwQumAmGCHUwfhocI.cache +1 -0
  68. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bo/BOynRQJrySSqZJ7QPX3R9arjEoRbWhDPVXU68-4jDro.cache +3 -0
  69. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cM/cMPW5PIW2be9y60C1f0Tcx_JlbSGxQsrGEvKe0TaxQI.cache +1 -0
  70. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cn/cngUxF1y3yln8cZd0TTy5vtmKjB6D_pG2wPUIpcfSiE.cache +1 -0
  71. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dH/Dh_HnJ90p1jVRbZeF8VIITXPE1ERfI_JV7xb3TjjK5s.cache +0 -0
  72. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dj/djDDOgRO3ImHwH-IWfbmrxJ4Uz8A_RNy4ayggV4Nu2o.cache +1 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dn/dnJf0eqwfaXXy8VOlOY--XQ_CzAJRUMcr7VF3MaYPL0.cache +2 -0
  74. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dn/dnk1PXaSsx8535n1YUelqcDTCe76x8ZDZ2rx9CFBKVI.cache +0 -0
  75. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ep/ep7eFHGuQvnQENfjUjkA_uSE4UroidynVQhX4Q4TMRA.cache +0 -0
  76. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fM/fMKjz4OTeXFvqJ4wrz5dYcqb72q1qYLsi_xIKo_eP-Y.cache +1 -0
  77. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fv/FVUaEmQUfKzrSGelhhxhIMgDGa--Pwq7k5A-2wOquUg.cache +4 -0
  78. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gR/gr5xKtK3Z16vB0IUAwXIyH0u4BhFxWRyo9N_yvuzj1c.cache +0 -0
  79. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ga/gaqi__w9GfLCKQZMhFre_f8ptOHW3FQgu30K663f1aA.cache +0 -0
  80. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hx/hx3sTij9WJMEmtNYh7AmVx2EEo4_WHqGvMBQEV8HOWQ.cache +1 -0
  81. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i3/i3IRVdb5aQh7wlSFumMwLqf-ywVQ9r_I5YAexxiOcm0.cache +1 -0
  82. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iz/IzaofNv-1fZa6TILd9gFNykwfzygcX366Q68ng69N7k.cache +0 -0
  83. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jV/JVeQ30W8bgmwsx3sv2y3pA5HK0xj_jATaNohkBE7imM.cache +0 -0
  84. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m7/m73B2Qjp4zhTY2DBTU0_xLv9aPCPffaWjZmP106qgIo.cache +2 -0
  85. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nJ/nj-ghHcaclb76sY0R5gn4tIlUS577savQvgQTdTKJm0.cache +0 -0
  86. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/na/na2eOzBQo1T309NBkEZ-W7G7HiTgHJ1z6QrsDXOm9bw.cache +1 -0
  87. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nf/nffP4GMWcn1fGhlLywhOooggtyLfbthuixLP32hpjUk.cache +1 -0
  88. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/p7/p7ORDKCfHECYV7pyjA8vxk0qO4Abb3WSr_lKe52DcRQ.cache +0 -0
  89. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rY/rYpXNKnUBOApY5AN7Ju9cp8z4XogOarpjSdEqVo_uEo.cache +1 -0
  90. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sR/SroEa4R-5BKxQQdiynmGnok3z1Qg0hXhUPrBJs4vEgg.cache +0 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tK/tKYvw73bd8hShFOafL-_GThfNfIomo9mapduHjCPGQA.cache +1 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/uTx-CCMEI2s7qS8xgYYoNMofIMzPfurFewEN1GsCQzc.cache +1 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vo/VonYUph2e4KyVCQx8J7eNEI3yixQi6RDCI2ZtAIuPis.cache +1 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wd/Wd8IeaewxVRi4eebpyGgnctORzjlLuO0NmqjbUDlk20.cache +1 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xf/xfMktSuZO9a6Kc_zS5VXZYinUJ7qDMXWdSGByNNfQDY.cache +1 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xo/xOoIvshwL_r5QAQeNDyUICSZQAcF9Gjrblr8XRoEZwE.cache +0 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zL/zLh-QAeJ72_Lsz0dXWrGC6xql3Y4Rx58tf1FY8cS4To.cache +0 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zO/ZOvSgEsWBXesgrkchzbdqDSSO0xIRbeByft93lW591E.cache +1 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zY/ZYY_opCdnWzbhXSFbD1odo34MfyX7JaYQqvdovtpE2M.cache +1 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/za/ZAuUfP5BGr4LY8sRMnPvQC2M9a3LxotLzNAL0PgKMJQ.cache +0 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zu/zuQ-4u6haTFG6dmj__27YIVnPyHh7hueznjgdOqf9V0.cache +1 -0
  102. metadata +181 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f453ff6b5464c6f58fabdfef441cc0080af51524582d2db10341cdb4f0782774
4
- data.tar.gz: 6ef66482d98e39352a822e9c204af6982693f7f079e0cd31394c2414076eef4c
3
+ metadata.gz: ae5b957c2eb6a2da21113e9fbd401c9e92670d59e2b7cb3bd179fa8330ff8b0d
4
+ data.tar.gz: 1b9f60b83fc4c6bfcd27c8624d0df0886434c996f544d2918178f9803e2e8739
5
5
  SHA512:
6
- metadata.gz: 919af5b1fdbb29b54b7e668ef119862143cf6f72c2ea8abb8fa1e500de39b1f6cd51841f2d5a97b30fdef1eed2bd01fe723385fbfbb35397f92aa8f527d9d6f5
7
- data.tar.gz: 26ebe116f5fa6c8957b7e890b593eee95b563832ec988e007f074c3f668f584e0b69ef4255ee2af1f5cd1efb2396c5072c574b371eba5e4120ec60f665d2bb5e
6
+ metadata.gz: e7cb797136db669b46393567c0eee45e2510097cc85ae63efe2aef5e00ada2efc00f09a5070f949791fcf6b7d19f76945c29ddb17aae86d13c734c19dc4b477d
7
+ data.tar.gz: 9f1da686f930b06667f7a59d5839a5d20619b94f0b4bb93c678d34fa5ee352f3f4b1153077b3652bcd8cff1dea2220cebc85b341a85e27e6be7a0e265e70899c
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Candl
2
2
 
3
+ [![Build Status](https://travis-ci.org/hicknhack-software/candl.svg?branch=master)](https://travis-ci.org/hicknhack-software/candl)
4
+
3
5
  This gem helps load and display a calendar from google calendar in an agenda or month style view.
4
6
 
5
7
  ## Usage
@@ -11,7 +13,7 @@ Find an example inclusion of the _frame.slim partial in the show.slim file in ca
11
13
  The main steps to use this gem are:
12
14
  - Initialize an agenda or month model object with a config that specifies these values:
13
15
 
14
- ````
16
+ ```json
15
17
  config = {
16
18
  "calendar": {
17
19
  "google_calendar_api_host_base_path": "https://www.googleapis.com/calendar/v3/calendars/",
@@ -31,7 +33,7 @@ config = {
31
33
  "maps_query_parameter": "q"
32
34
  }
33
35
  }
34
- ````
36
+ ```
35
37
 
36
38
  - The node "calendar" holds all relevant information to the chosen calendar that you want to load events from.
37
39
  - Under "general" there is the "maps_query_host" wich is the base url to a map service (like google maps in this example) and the "maps_query_parameter". (Maybe in the future there will be more map services, that let one search for a location just via the url and a parameter. But for now i only found gmaps to be able to do this. Like: https://www.google.de/maps/?q=Dresden+Hauptbahnhof)
@@ -67,25 +69,26 @@ require 'candl'
67
69
 
68
70
  In the view you want the calendar to appear initialize a configuration hash like so:
69
71
  ```slim
70
- - config = { \
71
- calendar: { \
72
- google_calendar_api_host_base_path: "https://www.googleapis.com/calendar/v3/calendars/", \
73
- calendar_id: "schau-hnh%40web.de", \
74
- api_key: "AIzaSyB5F1X5hBi8vPsmt1itZTpMluUAjytf6hI" \
75
- }, \
76
- agenda: { \
77
- display_day_count: 14, \
78
- days_shift_coefficient: 7 \
79
- }, \
80
- month: { \
81
- summary_teaser_length_in_characters: 42, \
82
- delta_start_of_weekday_from_sunday: 1 \
83
- }, \
84
- general: { \
85
- maps_query_host: "https://www.google.de/maps", \
86
- maps_query_parameter: "q", \
87
- cache_update_interval_in_s: 7200 \
88
- } \
72
+ ruby:
73
+ config = {
74
+ calendar: {
75
+ google_calendar_api_host_base_path: "https://www.googleapis.com/calendar/v3/calendars/",
76
+ calendar_id: "schau-hnh%40web.de",
77
+ api_key: "AIzaSyB5F1X5hBi8vPsmt1itZTpMluUAjytf6hI"
78
+ },
79
+ agenda: {
80
+ display_day_count: 14,
81
+ days_shift_coefficient: 7
82
+ },
83
+ month: {
84
+ summary_teaser_length_in_characters: 42,
85
+ delta_start_of_weekday_from_sunday: 1
86
+ },
87
+ general: {
88
+ maps_query_host: "https://www.google.de/maps",
89
+ maps_query_parameter: "q",
90
+ cache_update_interval_in_s: 7200
91
+ }
89
92
  }
90
93
  ```
91
94
  In this example done in a view that uses .slim instead of .erb but in the end config is just a ruby hash that needs to have the right key's and sensible values for them.
@@ -1,47 +1,47 @@
1
1
 
2
- - unless calendar_agenda.agenda_grouped_events.empty?
3
- .agenda
4
- - calendar_agenda.agenda_grouped_events.keys.sort.each do |date|
5
- .row_head class=Candl::AgendaModel.emphasize_date(date, Date.today, 'today', 'not_today') = l(date, format: '%A, %e. %B %Y')
6
- - calendar_agenda.agenda_grouped_events[date].each do |event|
2
+ .agenda
3
+ - calendar_agenda.agenda_grouped_events.keys.sort.each do |date|
4
+ .row_head class=Candl::AgendaModel.emphasize_date(date, Date.today, 'today', 'not_today') = l(date, format: '%A, %e. %B %Y')
5
+ - calendar_agenda.agenda_grouped_events[date].each do |event|
7
6
 
8
- .event_shell
9
- .open_more data-id=""
10
- .event
11
- - if event.dtstart.instance_of?(DateTime)
12
- span.time = event.dtstart.localtime.strftime('%k:%M')
13
- - else
14
- span.time ▶
15
- span.flex_wrap_it.breakable.summary{ title = Candl::AgendaModel.summary_title(event) } == event.summary.to_s.force_encoding("UTF-8")
16
- i class="material-icons auto_margin_left" arrow_drop_down
7
+ .event_shell
8
+ .open_more data-id=""
9
+ .event
10
+ - if event.dtstart.instance_of?(DateTime)
11
+ span.time = event.dtstart.localtime.strftime('%k:%M')
12
+ - else
13
+ span.time ▶
14
+ span.flex_wrap_it.breakable.summary{ title = Candl::AgendaModel.summary_title(event) } == event.summary.to_s.force_encoding("UTF-8")
15
+ i class="material-icons auto_margin_left" arrow_drop_down
17
16
 
18
- .details style="display: none;"
19
- .timeframe title="Zeitraum"
20
- .text
21
- span.icon
22
- i class="material-icons" date_range
23
- span.content
24
- - if event.dtstart.instance_of?(DateTime)
25
- = l(event.dtstart.localtime, format: :short) + " - " + l(event.dtend.localtime, format: :hnh_short)
17
+ .details style="display: none;"
18
+ .timeframe title="Zeitraum"
19
+ .text
20
+ span.icon
21
+ i class="material-icons" date_range
22
+ span.content
23
+ - if event.dtstart.instance_of?(DateTime)
24
+ - if event.dtstart.to_date != event.dtend.to_date
25
+ = l(event.dtstart.localtime, format: :short) + " - " + l(event.dtend.localtime, format: :short)
26
26
  - else
27
- = l(event.dtstart, format: :short) + " - " + l((event.dtend - 1.day), format: :short)
28
-
29
- - if !event.location.to_s.strip.empty?
30
- .location title="Adresse"
31
- .text
32
- span.icon
33
- i class="material-icons" location_on
34
- span.content
35
- a href=calendar_agenda.address_to_maps_path(event.location.to_s) target="_blank"
36
- .flex_wrap_it.breakable = event.location.to_s.force_encoding("UTF-8")
27
+ = l(event.dtstart.localtime, format: :short) + " - " + l(event.dtend.localtime, format: :hnh_short)
28
+ - else
29
+ = l(event.dtstart, format: :short) + " - " + l((event.dtend - 1.day), format: :short)
37
30
 
38
- - if !event.description.to_s.strip.empty?
39
- .description title="Weitere Beschreibung"
31
+ - if !event.location.to_s.strip.empty?
32
+ .location title="Adresse"
40
33
  .text
41
34
  span.icon
42
- i class="material-icons" description
35
+ i class="material-icons" location_on
43
36
  span.content
44
- .flex_wrap_it.breakable = auto_link(event.description.to_s.force_encoding("UTF-8"), html: { target: '_blank' })
37
+ a href=calendar_agenda.address_to_maps_path(event.location.to_s) target="_blank"
38
+ .flex_wrap_it.breakable = event.location.to_s.force_encoding("UTF-8")
39
+
40
+ - if !event.description.to_s.strip.empty?
41
+ .description title="Weitere Beschreibung"
42
+ .text
43
+ span.icon
44
+ i class="material-icons" description
45
+ span.content
46
+ .flex_wrap_it.breakable = auto_link(event.description.to_s.force_encoding("UTF-8"), html: { target: '_blank' })
45
47
 
46
- - else
47
- p No upcoming events in the next week.
@@ -2,31 +2,16 @@
2
2
  - is_month = params[:v] != 'a'
3
3
  - current_shift_factor = params[:s] || 0
4
4
  - date_today = Date.today
5
- - update_interval = config[:general][:cache_update_interval_in_s]
5
+ - update_interval = config[:general][:cache_update_interval_in_s] ||= 2.hours
6
6
 
7
7
  - if is_month
8
- - begin
9
- - month = Rails.cache.fetch("#month/#{current_shift_factor}/#{date_today}", expires_in: update_interval) do
10
- - Candl::MonthModel.new(config, current_shift_factor, date_today)
11
- - rescue => exception
12
- - events_error_free = false
13
- - puts "\033[31mERROR - GOT EXCEPTION:\033[0m"
14
- - puts exception
15
- / Maybe there is a beter way to signal the exception?
8
+ - model = Rails.cache.fetch("#month/#{current_shift_factor}/#{date_today}", expires_in: update_interval) do
9
+ - Candl::MonthModel.new(config, current_shift_factor, date_today)
16
10
  - else
17
- - begin
18
- - agenda = Rails.cache.fetch("#agenda/#{current_shift_factor}/#{date_today}", expires_in: update_interval) do
19
- - Candl::AgendaModel.new(config, current_shift_factor, date_today)
20
- - rescue => exception
21
- - events_error_free = false
22
- - puts "\033[31mERROR - GOT EXCEPTION:\033[0m"
23
- - puts exception
24
- / Maybe there is a beter way to signal the exception?
25
-
26
- - if events_error_free
27
- - model = (is_month ? month : agenda)
28
-
29
-
11
+ - model = Rails.cache.fetch("#agenda/#{current_shift_factor}/#{date_today}", expires_in: update_interval) do
12
+ - Candl::AgendaModel.new(config, current_shift_factor, date_today)
13
+
14
+ - if model.initialization_successful
30
15
  .popover_backdrop.init_display_none
31
16
 
32
17
  div
@@ -55,5 +40,4 @@
55
40
  = render partial: "candl/calendar/agenda", locals: { calendar_agenda: model }
56
41
 
57
42
  - else
58
- .error_message Der Kalender kann wegen einer kurzzeitigen technischen Störung gerade nicht angezeigt werden. Bitte versuchen Sie es in einer Weile noch einmal.
59
-
43
+ .error_message 'error.no_events_loaded'
@@ -1,97 +1,46 @@
1
- - unless (calendar_month.grouped_events.empty? && calendar_month.grouped_multiday_events.empty?)
2
- table.table.table-bordered.month_view
3
- thead
4
- colgroup span="7"
5
- tr
6
- th colspan="7" scope="colgroup" = l((calendar_month.view_dates.select{ |date| date.day == 14 }).first, format: '%B %Y')
7
- tr
8
- - calendar_month.weekday_dates.each do |date|
9
- th.weekday_name_header scope="col" = l(date, format: '%A')
10
-
11
- tbody
12
- - Candl::MonthModel.weeks_in_months_view_dates(calendar_month.view_dates).times do |row|
13
- tr.day_row
14
- - 7.times do |collumn|
1
+ table.table.table-bordered.month_view
2
+ thead
3
+ colgroup span="7"
4
+ tr
5
+ th colspan="7" scope="colgroup" = l((calendar_month.view_dates.select{ |date| date.day == 14 }).first, format: '%B %Y')
6
+ tr
7
+ - calendar_month.weekday_dates.each do |date|
8
+ th.weekday_name_header scope="col" = l(date, format: '%A')
9
+
10
+ tbody
11
+ - Candl::MonthModel.weeks_in_months_view_dates(calendar_month.view_dates).times do |row|
12
+ tr.day_row
13
+ - 7.times do |collumn|
14
+ - current_day = calendar_month.view_dates[7 * row + collumn]
15
+ td class=Candl::MonthModel.emphasize_date(current_day, Date.today, 'bg-info', 'bg-default')
16
+ - if current_day.day == 1
17
+ .day_head = current_day.day.to_s + '. ' + l(current_day, format: '%b.')
18
+ - else
19
+ .day_head = current_day.day.to_s
20
+
21
+ - weekly_multiday_event_heap = calendar_month.grouped_multiday_events[row]
22
+
23
+ - until weekly_multiday_event_heap.empty?
24
+ tr
25
+ - collumn = 0
26
+ - while collumn < 7 do
15
27
  - current_day = calendar_month.view_dates[7 * row + collumn]
16
- td class=Candl::MonthModel.emphasize_date(current_day, Date.today, 'bg-info', 'bg-default')
17
- - if current_day.day == 1
18
- .day_head = current_day.day.to_s + '. ' + l(current_day, format: '%b.')
19
- - else
20
- .day_head = current_day.day.to_s
28
+ - current_event = Candl::MonthModel.find_best_fit_for_day(calendar_month.view_dates[7 * row], current_day, weekly_multiday_event_heap)
29
+ - if current_event
30
+ - weekly_multiday_event_heap.delete_if{ |event| event.uid == current_event.uid }
21
31
 
22
- - weekly_multiday_event_heap = calendar_month.grouped_multiday_events[row]
32
+ - current_event_length_within_current_week = [(calendar_month.view_dates[7 * row + 6] + 1.day), current_event.dtend].min.to_date - current_day.to_date
23
33
 
24
- - until weekly_multiday_event_heap.empty?
25
- tr
26
- - collumn = 0
27
- - while collumn < 7 do
28
- - current_day = calendar_month.view_dates[7 * row + collumn]
29
- - current_event = Candl::MonthModel.find_best_fit_for_day(calendar_month.view_dates[7 * row], current_day, weekly_multiday_event_heap)
30
- - if current_event
31
- - weekly_multiday_event_heap.delete_if{ |event| event.uid == current_event.uid }
34
+ - collumn += current_event_length_within_current_week - 1
32
35
 
33
- - current_event_length_within_current_week = [(calendar_month.view_dates[7 * row + 6] + 1.day), current_event.dtend].min - current_day
36
+ - if current_event_length_within_current_week > 0
37
+ td.small_padding colspan=current_event_length_within_current_week
38
+ .multiday_event.onclick_open_backdrop class=Candl::MonthModel.multiday_event_cutoff(current_event.dtstart < current_day, current_event.dtend > (calendar_month.view_dates[7 * row + 6] + 1.day), 'multiday_event_leftcut', 'multiday_event_bothcut', 'multiday_event_rightcut')
34
39
 
35
- - collumn += current_event_length_within_current_week - 1
36
-
37
- - if current_event_length_within_current_week > 0
38
- td.small_padding colspan=current_event_length_within_current_week
39
- .multiday_event.onclick_open_backdrop class=Candl::MonthModel.multiday_event_cutoff(current_event.dtstart < current_day, current_event.dtend > (calendar_month.view_dates[7 * row + 6] + 1.day), 'multiday_event_leftcut', 'multiday_event_bothcut', 'multiday_event_rightcut')
40
-
41
- .snowflake_popover[data-placement="bottom" data-toggle="popover" data-container="body" type="button" data-html="true" href="#"]
42
-
43
- div
44
- span.summary.breakable{ title = Candl::MonthModel.summary_title(current_event) } == current_event.summary.to_s.force_encoding("UTF-8").truncate(calendar_month.summary_teaser_length().to_i, seperator: ' ')
45
-
46
- .popover_content.hide
47
- .close_span
48
- .close title='Schließen'
49
- i.material-icons close
50
-
51
- .summary title='Zusammenfassung'
52
- .text
53
- i.material-icons.icon_spacing subject
54
- .breakable = current_event.summary.to_s.force_encoding('UTF-8')
55
- hr
56
-
57
- .from_to title='Zeitraum'
58
- .text
59
- i.material-icons.icon_spacing date_range
60
- = l(current_event.dtstart, format: :short) + " - " + l((current_event.dtend - 1.day), format: :short)
61
- hr
62
-
63
- - if !current_event.location.to_s.strip.empty?
64
- .location title='Adresse'
65
- .text
66
- i.material-icons.icon_spacing location_on
67
- a href=calendar_month.address_to_maps_path(current_event.location.to_s).force_encoding('UTF-8') target='_blank'
68
- .flex_wrap_it.breakable = current_event.location.to_s.force_encoding('UTF-8')
69
- hr
70
-
71
- - if !current_event.description.to_s.strip.empty?
72
- .description title='Weitere Beschreibung'
73
- .text
74
- i.material-icons.icon_spacing description
75
- .flex_wrap_it.breakable = auto_link(current_event.description.to_s.force_encoding("UTF-8"), html: { target: '_blank' })
76
- - else
77
- td
78
-
79
- - collumn += 1
80
-
81
- tr.events_row
82
- - 7.times do |collumn|
83
- - current_day = calendar_month.view_dates[7 * row + collumn]
84
- td class=Candl::MonthModel.emphasize_date(current_day, Date.today, 'bg-info', 'bg-default')
85
-
86
- - if calendar_month.grouped_events[current_day]
87
- - calendar_month.grouped_events[current_day].sort_by{ |event| event.dtstart.localtime }.each do |event|
88
-
89
- .event.onclick_open_backdrop
90
40
  .snowflake_popover[data-placement="bottom" data-toggle="popover" data-container="body" type="button" data-html="true" href="#"]
91
41
 
92
42
  div
93
- span.time = event.dtstart.localtime.strftime('%k:%M')
94
- span.summary.breakable{ title = Candl::MonthModel.summary_title(event) } == event.summary.to_s.force_encoding("UTF-8").truncate(calendar_month.summary_teaser_length.to_i, seperator: ' ')
43
+ span.summary.breakable{ title = Candl::MonthModel.summary_title(current_event) } == current_event.summary.to_s.force_encoding("UTF-8").truncate(calendar_month.summary_teaser_length().to_i, seperator: ' ')
95
44
 
96
45
  .popover_content.hide
97
46
  .close_span
@@ -101,29 +50,77 @@
101
50
  .summary title='Zusammenfassung'
102
51
  .text
103
52
  i.material-icons.icon_spacing subject
104
- .breakable = event.summary.to_s.force_encoding('UTF-8')
53
+ .breakable = current_event.summary.to_s.force_encoding('UTF-8')
105
54
  hr
106
55
 
107
56
  .from_to title='Zeitraum'
108
57
  .text
109
58
  i.material-icons.icon_spacing date_range
110
- = l(event.dtstart.localtime, format: :short) + " - " + l(event.dtend.localtime, format: :hnh_short)
59
+ = l(current_event.dtstart, format: :short) + " - " + l((current_event.dtend - 1.day), format: :short)
60
+ hr
111
61
 
112
- - if !event.location.to_s.strip.empty?
113
- hr
62
+ - if !current_event.location.to_s.strip.empty?
114
63
  .location title='Adresse'
115
64
  .text
116
- .icon_spacing
117
- i.material-icons location_on
118
- a href=calendar_month.address_to_maps_path(event.location.to_s).force_encoding('UTF-8') target='_blank'
119
- .flex_wrap_it.breakable = event.location.to_s.force_encoding('UTF-8')
120
-
121
- - if !event.description.to_s.strip.empty?
65
+ i.material-icons.icon_spacing location_on
66
+ a href=calendar_month.address_to_maps_path(current_event.location.to_s).force_encoding('UTF-8') target='_blank'
67
+ .flex_wrap_it.breakable = current_event.location.to_s.force_encoding('UTF-8')
122
68
  hr
69
+
70
+ - if !current_event.description.to_s.strip.empty?
123
71
  .description title='Weitere Beschreibung'
124
72
  .text
125
73
  i.material-icons.icon_spacing description
126
- .flex_wrap_it.breakable = auto_link(event.description.to_s.force_encoding("UTF-8"), html: { target: '_blank' })
74
+ .flex_wrap_it.breakable = auto_link(current_event.description.to_s.force_encoding("UTF-8"), html: { target: '_blank' })
75
+ - else
76
+ td
77
+
78
+ - collumn += 1
79
+
80
+ tr.events_row
81
+ - 7.times do |collumn|
82
+ - current_day = calendar_month.view_dates[7 * row + collumn]
83
+ td class=Candl::MonthModel.emphasize_date(current_day, Date.today, 'bg-info', 'bg-default')
84
+
85
+ - if calendar_month.grouped_events[current_day]
86
+ - calendar_month.grouped_events[current_day].sort_by{ |event| event.dtstart.localtime }.each do |event|
87
+
88
+ .event.onclick_open_backdrop
89
+ .snowflake_popover[data-placement="bottom" data-toggle="popover" data-container="body" type="button" data-html="true" href="#"]
90
+
91
+ div
92
+ span.time = event.dtstart.localtime.strftime('%k:%M')
93
+ span.summary.breakable{ title = Candl::MonthModel.summary_title(event) } == event.summary.to_s.force_encoding("UTF-8").truncate(calendar_month.summary_teaser_length.to_i, seperator: ' ')
94
+
95
+ .popover_content.hide
96
+ .close_span
97
+ .close title='Schließen'
98
+ i.material-icons close
99
+
100
+ .summary title='Zusammenfassung'
101
+ .text
102
+ i.material-icons.icon_spacing subject
103
+ .breakable = event.summary.to_s.force_encoding('UTF-8')
104
+ hr
105
+
106
+ .from_to title='Zeitraum'
107
+ .text
108
+ i.material-icons.icon_spacing date_range
109
+ = l(event.dtstart.localtime, format: :short) + " - " + l(event.dtend.localtime, format: :hnh_short)
110
+
111
+ - if !event.location.to_s.strip.empty?
112
+ hr
113
+ .location title='Adresse'
114
+ .text
115
+ .icon_spacing
116
+ i.material-icons location_on
117
+ a href=calendar_month.address_to_maps_path(event.location.to_s).force_encoding('UTF-8') target='_blank'
118
+ .flex_wrap_it.breakable = event.location.to_s.force_encoding('UTF-8')
119
+
120
+ - if !event.description.to_s.strip.empty?
121
+ hr
122
+ .description title='Weitere Beschreibung'
123
+ .text
124
+ i.material-icons.icon_spacing description
125
+ .flex_wrap_it.breakable = auto_link(event.description.to_s.force_encoding("UTF-8"), html: { target: '_blank' })
127
126
 
128
- - else
129
- p No upcoming events in the next week.
@@ -1,4 +1,7 @@
1
1
  de:
2
2
  time:
3
3
  formats:
4
- hnh_short: "%R Uhr"
4
+ hnh_short: "%R Uhr"
5
+
6
+ error:
7
+ no_events_loaded: "Fehler aufgetreten. Bitte versuchen sie es später noch einmal."
@@ -1,4 +1,7 @@
1
1
  en:
2
2
  time:
3
3
  formats:
4
- hnh_short: "%l:%M %P"
4
+ hnh_short: "%l:%M %P"
5
+
6
+ error:
7
+ no_events_loaded: "An error occurred. Please try again later."
@@ -1,6 +1,8 @@
1
1
  module Candl
2
2
  class AgendaModel
3
3
  # Attributes one needs to access from the "outside"
4
+ attr_reader :initialization_successful
5
+
4
6
  attr_reader :display_day_count
5
7
  attr_reader :days_shift_coefficient
6
8
 
@@ -28,20 +30,26 @@ module Candl
28
30
  # } \
29
31
  # }
30
32
  def initialize(config, current_shift_factor, date_today = Date.today)
31
- self.google_calendar_base_path = config[:calendar][:google_calendar_api_host_base_path]
33
+ self.google_calendar_base_path = config[:calendar][:google_calendar_api_host_base_path] ||= "https://www.googleapis.com/calendar/v3/calendars/"
32
34
  self.calendar_id = config[:calendar][:calendar_id]
33
35
  self.api_key = config[:calendar][:api_key]
34
36
 
35
- self.display_day_count = config[:agenda][:display_day_count]
36
- self.days_shift_coefficient = config[:agenda][:days_shift_coefficient]
37
+ self.display_day_count = config[:agenda][:display_day_count] ||= 14
38
+ self.days_shift_coefficient = config[:agenda][:days_shift_coefficient] ||= 7
37
39
 
38
- self.maps_query_host = config[:general][:maps_query_host]
39
- self.maps_query_parameter = config[:general][:maps_query_parameter]
40
+ self.maps_query_host = config[:general][:maps_query_host] ||= "https://www.google.de/maps"
41
+ self.maps_query_parameter = config[:general][:maps_query_parameter] ||= "q"
40
42
 
41
43
  from = current_start_date(current_shift_factor, date_today)
42
44
  to = current_end_date(current_shift_factor, date_today)
43
45
 
44
- events = agenda_events(from, to)
46
+ self.initialization_successful = true
47
+ begin
48
+ events = agenda_events(from, to)
49
+ rescue => exception
50
+ self.initialization_successful = false
51
+ logger.error "ERROR: #{exception}"
52
+ end
45
53
 
46
54
  self.agenda_grouped_events = get_days_grouped_events(events)
47
55
  end
@@ -101,8 +109,6 @@ module Candl
101
109
 
102
110
  # build a google maps path from the adress details
103
111
  def address_to_maps_path(address)
104
- # URI::HTTP.build( host: maps_query_host, query: { q: address.force_encoding("UTF-8").gsub(" ", "+") }.to_query).to_s
105
-
106
112
  ActionDispatch::Http::URL.path_for path: maps_query_host, params: Hash[maps_query_parameter.to_s, address.force_encoding("UTF-8").gsub(" ", "+")]
107
113
  end
108
114
 
@@ -118,6 +124,8 @@ module Candl
118
124
  events.group_by { |event| event.dtstart.to_date }
119
125
  end
120
126
 
127
+ attr_writer :initialization_successful
128
+
121
129
  attr_writer :display_day_count
122
130
  attr_writer :days_shift_coefficient
123
131
 
@@ -44,7 +44,6 @@ module Candl
44
44
  if requested_events["items"] != nil
45
45
  restructured_events = requested_events["items"].map{ |e| e["start"]["dateTime"] != nil ? Event.new(DateTime.parse(e["start"]["dateTime"]), DateTime.parse(e["end"]["dateTime"]), e["summary"], e["description"], e["location"], e["id"]) : Event.new(Date.parse(e["start"]["date"]), Date.parse(e["end"]["date"]), e["summary"], e["description"], e["location"], e["id"]) }
46
46
  else
47
- # raise Exception.new("Calendar event request failed and responded with:\n #{requested_events}")
48
47
  raise "Calendar event request failed and responded with:\n #{requested_events}"
49
48
  end
50
49
 
@@ -55,11 +54,11 @@ module Candl
55
54
  def self.spread_multiday_events(events, from, to)
56
55
  unspreaded_events = events.select{ |event| (event.dtend - event.dtstart).to_i > 0 }
57
56
 
58
- unspreaded_events.map do |event|
57
+ spreaded_events = unspreaded_events.map do |event|
59
58
  ([from, (event.dtstart + 1.day)].max .. [(event.dtend - 1.day), to].min).to_a.map do |date|
60
59
  Event.new.tap do |e|
61
- e.dtstart = date
62
- e.dtend = event.dtend
60
+ e.dtstart = date.to_date
61
+ e.dtend = event.dtend.to_date
63
62
  e.summary = event.summary
64
63
  e.location = event.location
65
64
  e.description = event.description
@@ -1,6 +1,8 @@
1
1
  module Candl
2
2
  class MonthModel
3
3
  # Attributes one needs to access from the "outside"
4
+ attr_reader :initialization_successful
5
+
4
6
  attr_reader :delta_start_of_weekday_from_sunday
5
7
  attr_reader :summary_teaser_length
6
8
 
@@ -30,25 +32,30 @@ module Candl
30
32
  # } \
31
33
  # }
32
34
  def initialize(config, current_shift_factor, date_today = Date.today)
33
- self.google_calendar_base_path = config[:calendar][:google_calendar_api_host_base_path]
35
+ self.google_calendar_base_path = config[:calendar][:google_calendar_api_host_base_path] ||= "https://www.googleapis.com/calendar/v3/calendars/"
34
36
  self.calendar_id = config[:calendar][:calendar_id]
35
37
  self.api_key = config[:calendar][:api_key]
36
38
 
37
- self.summary_teaser_length = config[:month][:summary_teaser_length_in_characters]
38
- self.delta_start_of_weekday_from_sunday = config[:month][:delta_start_of_weekday_from_sunday]
39
+ self.summary_teaser_length = config[:month][:summary_teaser_length_in_characters] ||= 42
40
+ self.delta_start_of_weekday_from_sunday = config[:month][:delta_start_of_weekday_from_sunday] ||= 1
39
41
 
40
- self.days_shift_coefficient = config[:agenda][:days_shift_coefficient]
42
+ self.days_shift_coefficient = config[:agenda][:days_shift_coefficient] ||= 7
41
43
 
42
- self.maps_query_host = config[:general][:maps_query_host]
43
- self.maps_query_parameter = config[:general][:maps_query_parameter]
44
- self.cache_update_interval_in_ms = config[:general][:cache_update_interval_in_ms]
44
+ self.maps_query_host = config[:general][:maps_query_host] ||= "https://www.google.de/maps"
45
+ self.maps_query_parameter = config[:general][:maps_query_parameter] ||= "q"
45
46
 
46
47
  date_month_start = MonthModel.current_month_start(current_shift_factor, date_today)
47
48
  date_month_end = MonthModel.current_month_end(current_shift_factor, date_today)
48
49
 
49
50
  self.view_dates = generate_months_view_dates(date_month_start, date_month_end)
50
51
 
51
- events = get_month_events(view_dates.first, view_dates.last)
52
+ self.initialization_successful = true
53
+ begin
54
+ events = get_month_events(view_dates.first, view_dates.last)
55
+ rescue => exception
56
+ self.initialization_successful = false
57
+ logger.error "ERROR: #{exception}"
58
+ end
52
59
 
53
60
  self.grouped_events = MonthModel::group_events(events, view_dates.first, view_dates.last)
54
61
  self.grouped_multiday_events = MonthModel::group_multiday_events(events, view_dates)
@@ -119,7 +126,6 @@ module Candl
119
126
 
120
127
  # build a google maps path from the adress details
121
128
  def address_to_maps_path(address)
122
- # URI::HTTP.build( host: maps_query_host, query: { maps_query_parameter: address.force_encoding("UTF-8").gsub(" ", "+") }.to_query).to_s
123
129
  ActionDispatch::Http::URL.path_for path: maps_query_host, params: Hash[maps_query_parameter.to_s, address.force_encoding("UTF-8").gsub(" ", "+")]
124
130
  end
125
131
 
@@ -175,13 +181,12 @@ module Candl
175
181
 
176
182
  # gets events within a day grouped by day
177
183
  def self.group_events(events, from, to)
178
- # events = month_events(from, to)
179
- events.select { |event| event.dtstart.instance_of?(DateTime) }.sort_by{ |event| event.dtstart.localtime }.group_by { |event| event.dtstart.to_date }
184
+ events.select{ |event| (event.dtstart.to_date == event.dtend.to_date) }.sort_by{ |event| event.dtstart.localtime }.group_by{ |event| event.dtstart.to_date }
180
185
  end
181
186
 
182
187
  # gets events that are multiple day's long grouped by the week
183
188
  def self.group_multiday_events(events, view_dates)
184
- multiday_events = events.select { |event| event.dtstart.instance_of?(Date) }
189
+ multiday_events = events.select { |event| event.dtstart.to_date != event.dtend.to_date }
185
190
 
186
191
  grouped_multiday_events = []
187
192
 
@@ -197,6 +202,8 @@ module Candl
197
202
  grouped_multiday_events
198
203
  end
199
204
 
205
+ attr_writer :initialization_successful
206
+
200
207
  attr_writer :delta_start_of_weekday_from_sunday
201
208
  attr_writer :summary_teaser_length
202
209
 
@@ -210,7 +217,6 @@ module Candl
210
217
  attr_accessor :google_calendar_base_path
211
218
  attr_accessor :maps_query_host
212
219
  attr_accessor :maps_query_parameter
213
- attr_accessor :cache_update_interval_in_ms
214
220
 
215
221
  attr_accessor :days_shift_coefficient
216
222
 
data/lib/candl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Candl
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end