framework7rails 0.9.7 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +17 -0
  3. data/Framework7-0.9.6/.gitignore +5 -0
  4. data/Framework7-0.9.6/.jshintrc +33 -0
  5. data/Framework7-0.9.6/.travis.yml +5 -0
  6. data/Framework7-0.9.6/CHANGELOG.md +342 -0
  7. data/Framework7-0.9.6/Gruntfile.js +560 -0
  8. data/Framework7-0.9.6/LICENSE +20 -0
  9. data/Framework7-0.9.6/README.md +113 -0
  10. data/Framework7-0.9.6/apps/todo7/css/todo7.css +208 -0
  11. data/Framework7-0.9.6/apps/todo7/img/Icon-152.png +0 -0
  12. data/Framework7-0.9.6/apps/todo7/img/bg.jpg +0 -0
  13. data/Framework7-0.9.6/apps/todo7/img/icon-114.png +0 -0
  14. data/Framework7-0.9.6/apps/todo7/img/icon-120.png +0 -0
  15. data/Framework7-0.9.6/apps/todo7/img/icon-144.png +0 -0
  16. data/Framework7-0.9.6/apps/todo7/img/icon-57.png +0 -0
  17. data/Framework7-0.9.6/apps/todo7/img/icon-72.png +0 -0
  18. data/Framework7-0.9.6/apps/todo7/img/icon-76.png +0 -0
  19. data/Framework7-0.9.6/apps/todo7/index.html +112 -0
  20. data/Framework7-0.9.6/apps/todo7/jade/index.jade +99 -0
  21. data/Framework7-0.9.6/apps/todo7/js/todo7.js +102 -0
  22. data/Framework7-0.9.6/apps/todo7/less/todo7.less +221 -0
  23. data/Framework7-0.9.6/apps/todo7/manifest.php +27 -0
  24. data/Framework7-0.9.6/apps/weather7/css/weather7.css +291 -0
  25. data/Framework7-0.9.6/apps/weather7/img/bg.jpg +0 -0
  26. data/Framework7-0.9.6/apps/weather7/img/icon-114.png +0 -0
  27. data/Framework7-0.9.6/apps/weather7/img/icon-120.png +0 -0
  28. data/Framework7-0.9.6/apps/weather7/img/icon-144.png +0 -0
  29. data/Framework7-0.9.6/apps/weather7/img/icon-152.png +0 -0
  30. data/Framework7-0.9.6/apps/weather7/img/icon-57.png +0 -0
  31. data/Framework7-0.9.6/apps/weather7/img/icon-72.png +0 -0
  32. data/Framework7-0.9.6/apps/weather7/img/icon-76.png +0 -0
  33. data/Framework7-0.9.6/apps/weather7/img/logo.png +0 -0
  34. data/Framework7-0.9.6/apps/weather7/img/yahoo-logo.png +0 -0
  35. data/Framework7-0.9.6/apps/weather7/index.html +127 -0
  36. data/Framework7-0.9.6/apps/weather7/jade/index.jade +113 -0
  37. data/Framework7-0.9.6/apps/weather7/js/weather7.js +213 -0
  38. data/Framework7-0.9.6/apps/weather7/less/weather7.less +294 -0
  39. data/Framework7-0.9.6/apps/weather7/manifest.php +29 -0
  40. data/Framework7-0.9.6/bower.json +30 -0
  41. data/Framework7-0.9.6/dist/about.html +28 -0
  42. data/Framework7-0.9.6/dist/css/framework7.css +4922 -0
  43. data/Framework7-0.9.6/dist/css/framework7.min.css +15 -0
  44. data/Framework7-0.9.6/dist/css/framework7.rtl.css +427 -0
  45. data/Framework7-0.9.6/dist/css/framework7.rtl.min.css +1 -0
  46. data/Framework7-0.9.6/dist/css/framework7.themes.css +279 -0
  47. data/Framework7-0.9.6/dist/css/framework7.themes.min.css +1 -0
  48. data/Framework7-0.9.6/dist/css/my-app.css +0 -0
  49. data/Framework7-0.9.6/dist/form.html +229 -0
  50. data/Framework7-0.9.6/dist/img/i-f7.png +0 -0
  51. data/Framework7-0.9.6/dist/img/i-form-calendar.png +0 -0
  52. data/Framework7-0.9.6/dist/img/i-form-comment.png +0 -0
  53. data/Framework7-0.9.6/dist/img/i-form-email.png +0 -0
  54. data/Framework7-0.9.6/dist/img/i-form-gender.png +0 -0
  55. data/Framework7-0.9.6/dist/img/i-form-name.png +0 -0
  56. data/Framework7-0.9.6/dist/img/i-form-password.png +0 -0
  57. data/Framework7-0.9.6/dist/img/i-form-settings.png +0 -0
  58. data/Framework7-0.9.6/dist/img/i-form-tel.png +0 -0
  59. data/Framework7-0.9.6/dist/img/i-form-toggle.png +0 -0
  60. data/Framework7-0.9.6/dist/img/i-form-url.png +0 -0
  61. data/Framework7-0.9.6/dist/index.html +102 -0
  62. data/Framework7-0.9.6/dist/js/framework7.js +7479 -0
  63. data/Framework7-0.9.6/dist/js/framework7.min.js +18 -0
  64. data/Framework7-0.9.6/dist/js/my-app.js +48 -0
  65. data/Framework7-0.9.6/dist/services.html +28 -0
  66. data/Framework7-0.9.6/examples/split-view/about.html +19 -0
  67. data/Framework7-0.9.6/examples/split-view/css/my-app.css +23 -0
  68. data/Framework7-0.9.6/examples/split-view/index.html +135 -0
  69. data/Framework7-0.9.6/examples/split-view/jade/about.jade +15 -0
  70. data/Framework7-0.9.6/examples/split-view/jade/index.jade +107 -0
  71. data/Framework7-0.9.6/examples/split-view/jade/left-page-1.jade +15 -0
  72. data/Framework7-0.9.6/examples/split-view/jade/left-page-2.jade +15 -0
  73. data/Framework7-0.9.6/examples/split-view/jade/services.jade +15 -0
  74. data/Framework7-0.9.6/examples/split-view/js/my-app.js +15 -0
  75. data/Framework7-0.9.6/examples/split-view/left-page-1.html +19 -0
  76. data/Framework7-0.9.6/examples/split-view/left-page-2.html +19 -0
  77. data/Framework7-0.9.6/examples/split-view/less/my-app.less +23 -0
  78. data/Framework7-0.9.6/examples/split-view/services.html +19 -0
  79. data/Framework7-0.9.6/examples/split-view-panel/about.html +20 -0
  80. data/Framework7-0.9.6/examples/split-view-panel/css/my-app.css +56 -0
  81. data/Framework7-0.9.6/examples/split-view-panel/index.html +135 -0
  82. data/Framework7-0.9.6/examples/split-view-panel/jade/about.jade +18 -0
  83. data/Framework7-0.9.6/examples/split-view-panel/jade/index.jade +107 -0
  84. data/Framework7-0.9.6/examples/split-view-panel/jade/left-page-1.jade +15 -0
  85. data/Framework7-0.9.6/examples/split-view-panel/jade/left-page-2.jade +15 -0
  86. data/Framework7-0.9.6/examples/split-view-panel/jade/services.jade +18 -0
  87. data/Framework7-0.9.6/examples/split-view-panel/js/my-app.js +15 -0
  88. data/Framework7-0.9.6/examples/split-view-panel/left-page-1.html +19 -0
  89. data/Framework7-0.9.6/examples/split-view-panel/left-page-2.html +19 -0
  90. data/Framework7-0.9.6/examples/split-view-panel/less/my-app.less +62 -0
  91. data/Framework7-0.9.6/examples/split-view-panel/services.html +20 -0
  92. data/Framework7-0.9.6/examples/tab-bar/about.html +19 -0
  93. data/Framework7-0.9.6/examples/tab-bar/css/my-app.css +34 -0
  94. data/Framework7-0.9.6/examples/tab-bar/index.html +238 -0
  95. data/Framework7-0.9.6/examples/tab-bar/jade/about.jade +15 -0
  96. data/Framework7-0.9.6/examples/tab-bar/jade/index.jade +189 -0
  97. data/Framework7-0.9.6/examples/tab-bar/jade/services.jade +15 -0
  98. data/Framework7-0.9.6/examples/tab-bar/js/my-app.js +15 -0
  99. data/Framework7-0.9.6/examples/tab-bar/less/my-app.less +35 -0
  100. data/Framework7-0.9.6/examples/tab-bar/services.html +19 -0
  101. data/Framework7-0.9.6/kitchen-sink/about.html +22 -0
  102. data/Framework7-0.9.6/kitchen-sink/accordion.html +171 -0
  103. data/Framework7-0.9.6/kitchen-sink/color-themes.html +42 -0
  104. data/Framework7-0.9.6/kitchen-sink/contacts.html +190 -0
  105. data/Framework7-0.9.6/kitchen-sink/core-features.html +70 -0
  106. data/Framework7-0.9.6/kitchen-sink/css/kitchen-sink.css +233 -0
  107. data/Framework7-0.9.6/kitchen-sink/deep-2.html +22 -0
  108. data/Framework7-0.9.6/kitchen-sink/deep-navbar-2.html +19 -0
  109. data/Framework7-0.9.6/kitchen-sink/deep-navbar-3.html +19 -0
  110. data/Framework7-0.9.6/kitchen-sink/deep-navbar.html +18 -0
  111. data/Framework7-0.9.6/kitchen-sink/forms-buttons.html +64 -0
  112. data/Framework7-0.9.6/kitchen-sink/forms-checkboxes.html +200 -0
  113. data/Framework7-0.9.6/kitchen-sink/forms-elements.html +359 -0
  114. data/Framework7-0.9.6/kitchen-sink/forms-selects.html +72 -0
  115. data/Framework7-0.9.6/kitchen-sink/forms-storage.html +181 -0
  116. data/Framework7-0.9.6/kitchen-sink/forms.html +56 -0
  117. data/Framework7-0.9.6/kitchen-sink/grid.html +140 -0
  118. data/Framework7-0.9.6/kitchen-sink/hide-navbar-toolbar.html +42 -0
  119. data/Framework7-0.9.6/kitchen-sink/img/beach.jpg +0 -0
  120. data/Framework7-0.9.6/kitchen-sink/img/lock.jpg +0 -0
  121. data/Framework7-0.9.6/kitchen-sink/img/monkey.jpg +0 -0
  122. data/Framework7-0.9.6/kitchen-sink/img/mountains.jpg +0 -0
  123. data/Framework7-0.9.6/kitchen-sink/index.html +466 -0
  124. data/Framework7-0.9.6/kitchen-sink/infinite-scroll-load.php +19 -0
  125. data/Framework7-0.9.6/kitchen-sink/infinite-scroll.html +119 -0
  126. data/Framework7-0.9.6/kitchen-sink/jade/about.jade +19 -0
  127. data/Framework7-0.9.6/kitchen-sink/jade/accordion.jade +133 -0
  128. data/Framework7-0.9.6/kitchen-sink/jade/color-themes.jade +37 -0
  129. data/Framework7-0.9.6/kitchen-sink/jade/contacts.jade +115 -0
  130. data/Framework7-0.9.6/kitchen-sink/jade/core-features.jade +74 -0
  131. data/Framework7-0.9.6/kitchen-sink/jade/deep-navbar-2.jade +15 -0
  132. data/Framework7-0.9.6/kitchen-sink/jade/deep-navbar-3.jade +15 -0
  133. data/Framework7-0.9.6/kitchen-sink/jade/deep-navbar.jade +15 -0
  134. data/Framework7-0.9.6/kitchen-sink/jade/forms-buttons.jade +71 -0
  135. data/Framework7-0.9.6/kitchen-sink/jade/forms-checkboxes.jade +152 -0
  136. data/Framework7-0.9.6/kitchen-sink/jade/forms-elements.jade +239 -0
  137. data/Framework7-0.9.6/kitchen-sink/jade/forms-selects.jade +60 -0
  138. data/Framework7-0.9.6/kitchen-sink/jade/forms-storage.jade +134 -0
  139. data/Framework7-0.9.6/kitchen-sink/jade/forms.jade +52 -0
  140. data/Framework7-0.9.6/kitchen-sink/jade/grid.jade +110 -0
  141. data/Framework7-0.9.6/kitchen-sink/jade/hide-navbar-toolbar.jade +38 -0
  142. data/Framework7-0.9.6/kitchen-sink/jade/index.jade +427 -0
  143. data/Framework7-0.9.6/kitchen-sink/jade/infinite-scroll.jade +20 -0
  144. data/Framework7-0.9.6/kitchen-sink/jade/list-view.jade +266 -0
  145. data/Framework7-0.9.6/kitchen-sink/jade/login-screen-embedded.jade +22 -0
  146. data/Framework7-0.9.6/kitchen-sink/jade/login-screen.jade +20 -0
  147. data/Framework7-0.9.6/kitchen-sink/jade/media-lists.jade +170 -0
  148. data/Framework7-0.9.6/kitchen-sink/jade/messages.jade +71 -0
  149. data/Framework7-0.9.6/kitchen-sink/jade/modals.jade +36 -0
  150. data/Framework7-0.9.6/kitchen-sink/jade/navbars-toolbars.jade +43 -0
  151. data/Framework7-0.9.6/kitchen-sink/jade/no-navbar-toolbar.jade +7 -0
  152. data/Framework7-0.9.6/kitchen-sink/jade/no-navbar.jade +7 -0
  153. data/Framework7-0.9.6/kitchen-sink/jade/no-toolbar.jade +17 -0
  154. data/Framework7-0.9.6/kitchen-sink/jade/notifications.jade +23 -0
  155. data/Framework7-0.9.6/kitchen-sink/jade/panels.jade +21 -0
  156. data/Framework7-0.9.6/kitchen-sink/jade/photo-browser.jade +36 -0
  157. data/Framework7-0.9.6/kitchen-sink/jade/popover.jade +21 -0
  158. data/Framework7-0.9.6/kitchen-sink/jade/preloader.jade +31 -0
  159. data/Framework7-0.9.6/kitchen-sink/jade/pull-to-refresh.jade +44 -0
  160. data/Framework7-0.9.6/kitchen-sink/jade/searchbar.jade +146 -0
  161. data/Framework7-0.9.6/kitchen-sink/jade/slider-custom.jade +23 -0
  162. data/Framework7-0.9.6/kitchen-sink/jade/slider-horizontal.jade +18 -0
  163. data/Framework7-0.9.6/kitchen-sink/jade/slider-multiple.jade +48 -0
  164. data/Framework7-0.9.6/kitchen-sink/jade/slider-nested.jade +26 -0
  165. data/Framework7-0.9.6/kitchen-sink/jade/slider-space-between.jade +18 -0
  166. data/Framework7-0.9.6/kitchen-sink/jade/slider-vertical.jade +18 -0
  167. data/Framework7-0.9.6/kitchen-sink/jade/slider.jade +57 -0
  168. data/Framework7-0.9.6/kitchen-sink/jade/sortable-list.jade +107 -0
  169. data/Framework7-0.9.6/kitchen-sink/jade/swipe-delete.jade +195 -0
  170. data/Framework7-0.9.6/kitchen-sink/jade/tabbar-labels.jade +54 -0
  171. data/Framework7-0.9.6/kitchen-sink/jade/tabbar.jade +50 -0
  172. data/Framework7-0.9.6/kitchen-sink/jade/tabs.jade +34 -0
  173. data/Framework7-0.9.6/kitchen-sink/jade/transitions.jade +27 -0
  174. data/Framework7-0.9.6/kitchen-sink/js/kitchen-sink.js +442 -0
  175. data/Framework7-0.9.6/kitchen-sink/less/kitchen-sink.less +245 -0
  176. data/Framework7-0.9.6/kitchen-sink/list-view.html +318 -0
  177. data/Framework7-0.9.6/kitchen-sink/login-screen-embedded.html +36 -0
  178. data/Framework7-0.9.6/kitchen-sink/login-screen.html +21 -0
  179. data/Framework7-0.9.6/kitchen-sink/media-lists.html +173 -0
  180. data/Framework7-0.9.6/kitchen-sink/messages.html +84 -0
  181. data/Framework7-0.9.6/kitchen-sink/modals.html +33 -0
  182. data/Framework7-0.9.6/kitchen-sink/navbars-toolbars.html +46 -0
  183. data/Framework7-0.9.6/kitchen-sink/no-navbar-toolbar.html +11 -0
  184. data/Framework7-0.9.6/kitchen-sink/no-navbar.html +11 -0
  185. data/Framework7-0.9.6/kitchen-sink/no-toolbar.html +18 -0
  186. data/Framework7-0.9.6/kitchen-sink/notifications.html +21 -0
  187. data/Framework7-0.9.6/kitchen-sink/panel-right2.html +16 -0
  188. data/Framework7-0.9.6/kitchen-sink/panel-right3.html +16 -0
  189. data/Framework7-0.9.6/kitchen-sink/panels.html +23 -0
  190. data/Framework7-0.9.6/kitchen-sink/photo-browser.html +36 -0
  191. data/Framework7-0.9.6/kitchen-sink/popover.html +21 -0
  192. data/Framework7-0.9.6/kitchen-sink/preloader.html +28 -0
  193. data/Framework7-0.9.6/kitchen-sink/pull-to-refresh.html +52 -0
  194. data/Framework7-0.9.6/kitchen-sink/searchbar.html +233 -0
  195. data/Framework7-0.9.6/kitchen-sink/slider-custom.html +28 -0
  196. data/Framework7-0.9.6/kitchen-sink/slider-horizontal.html +29 -0
  197. data/Framework7-0.9.6/kitchen-sink/slider-multiple.html +89 -0
  198. data/Framework7-0.9.6/kitchen-sink/slider-nested.html +32 -0
  199. data/Framework7-0.9.6/kitchen-sink/slider-space-between.html +29 -0
  200. data/Framework7-0.9.6/kitchen-sink/slider-vertical.html +29 -0
  201. data/Framework7-0.9.6/kitchen-sink/slider.html +54 -0
  202. data/Framework7-0.9.6/kitchen-sink/sortable-list.html +137 -0
  203. data/Framework7-0.9.6/kitchen-sink/swipe-delete.html +216 -0
  204. data/Framework7-0.9.6/kitchen-sink/tabbar-labels.html +51 -0
  205. data/Framework7-0.9.6/kitchen-sink/tabbar.html +0 -0
  206. data/Gemfile +4 -0
  207. data/LICENSE.txt +22 -0
  208. data/README.md +109 -0
  209. data/Rakefile +2 -0
  210. data/framework7rails.gemspec +23 -0
  211. data/install_local.sh +2 -0
  212. data/lib/framework7rails/version.rb +4 -0
  213. data/lib/framework7rails.rb +8 -0
  214. data/update_from_vendor.rb +40 -0
  215. data/vendor/assets/images/i-f7.png +0 -0
  216. data/vendor/assets/images/i-form-calendar.png +0 -0
  217. data/vendor/assets/images/i-form-comment.png +0 -0
  218. data/vendor/assets/images/i-form-email.png +0 -0
  219. data/vendor/assets/images/i-form-gender.png +0 -0
  220. data/vendor/assets/images/i-form-name.png +0 -0
  221. data/vendor/assets/images/i-form-password.png +0 -0
  222. data/vendor/assets/images/i-form-settings.png +0 -0
  223. data/vendor/assets/images/i-form-tel.png +0 -0
  224. data/vendor/assets/images/i-form-toggle.png +0 -0
  225. data/vendor/assets/images/i-form-url.png +0 -0
  226. data/vendor/assets/javascripts/framework7.js +8288 -0
  227. data/vendor/assets/javascripts/framework7.js.map +1 -0
  228. data/vendor/assets/stylesheets/framework7.css +5078 -0
  229. data/vendor/assets/stylesheets/framework7.themes.css +279 -0
  230. metadata +231 -3
@@ -0,0 +1,113 @@
1
+ doctype
2
+ html.with-statusbar-overlay(manifest="manifest.php")
3
+ head
4
+ meta(charset="utf-8")
5
+ meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui")
6
+ meta(name='apple-mobile-web-app-capable', content='yes')
7
+ meta(name="apple-mobile-web-app-status-bar-style", content="black-translucent")
8
+ title Weather7
9
+ link(rel="stylesheet", href="../../dist/css/framework7.min.css")
10
+ link(rel="stylesheet", href="css/weather7.css")
11
+ // Favicon
12
+ link(href="img/icon-57.png", rel="shortcut icon")
13
+ |
14
+ <!-- iOS 7 iPad (retina) -->
15
+ <link href="img/icon-152.png" sizes="152x152" rel="apple-touch-icon">
16
+ <!-- iOS 6 iPad (retina) -->
17
+ <link href="img/icon-144.png" sizes="144x144" rel="apple-touch-icon">
18
+ <!-- iOS 7 iPhone (retina) -->
19
+ <link href="img/icon-120.png" sizes="120x120" rel="apple-touch-icon">
20
+ <!-- iOS 6 iPhone (retina) -->
21
+ <link href="img/icon-114.png" sizes="114x114" rel="apple-touch-icon">
22
+ <!-- iOS 7 iPad -->
23
+ <link href="img/icon-76.png" sizes="76x76" rel="apple-touch-icon">
24
+ <!-- iOS 6 iPad -->
25
+ <link href="img/icon-72.png" sizes="72x72" rel="apple-touch-icon">
26
+ <!-- iOS 6 iPhone -->
27
+ <link href="img/icon-57.png" sizes="57x57" rel="apple-touch-icon">
28
+ body
29
+ // Statusbar overlay
30
+ .statusbar-overlay
31
+ // Main views
32
+ .views
33
+ .view.view-main.navbar-through
34
+ .navbar
35
+ .navbar-inner
36
+ .center.sliding
37
+ span.navbar-logo
38
+ .right
39
+ a(href="#").open-popup.link.icon-only
40
+ i.icon.icon-plus +
41
+ .pages
42
+ .page(data-page="index")
43
+ .page-content
44
+ .list-block.places-list
45
+ ul
46
+ .list-block-label
47
+ img(src="img/yahoo-logo.png", height="20")
48
+ // Search popup
49
+ .popup
50
+ .view.navbar-fixed
51
+ .navbar
52
+ .navbar-inner
53
+ .left
54
+ input(type="text", placeholder="Search city...")
55
+ .preloader.preloader-white
56
+ .right
57
+ a(href="#").link.close-popup Cancel
58
+ .pages
59
+ .page
60
+ .page-content
61
+ ul.search-results
62
+ // Templates
63
+ script(id="search-results-template", type="text/template")
64
+ {{#each this}}
65
+ {{#if admin1}}{{#if admin1.content}}
66
+ li.close-popup(data-woeid="{{woeid}}", data-city="{{name}}", data-country="{{country.content}}")
67
+ | {{name}}
68
+ span {{admin1.content}}, {{country.content}}
69
+ {{/if}}{{/if}}
70
+ {{/each}}
71
+
72
+ script(id="home-items-template", type="text/template")
73
+ {{#each this}}
74
+ li.swipeout(data-woeid="{{woeid}}")
75
+ .swipeout-content
76
+ a(href="#", data-woeid="{{woeid}}").item-content.item-link
77
+ .item-inner
78
+ .item-title
79
+ .city {{city}}
80
+ .country {{country}}
81
+ .item-after {{condition.temp}}&deg;
82
+ .swipeout-actions-right
83
+ a(href="#").swipeout-delete Delete
84
+ {{/each}}
85
+ script(id="details-template", type="text/template")
86
+ .navbar
87
+ .navbar-inner
88
+ .left.sliding
89
+ a(href="index.html").back.link
90
+ span.navbar-logo
91
+ .pages.navbar-through
92
+ .page(data-page="detail")
93
+ .page-content
94
+ .detail-city {{city}}
95
+ .detail-condition {{condition.text}}
96
+ .detail-temp {{condition.temp}}&deg;
97
+ .list-block.forecast-list
98
+ ul
99
+ {{#each forecast}}
100
+ li.item-content
101
+ .item-inner
102
+ .item-title {{dayOfWeek date}}
103
+ .item-after
104
+ span.state {{text}}
105
+ span.temps
106
+ span.high {{high}}&deg;
107
+ span.low {{low}}&deg;
108
+ {{/each}}
109
+
110
+ // Path to Framework7 Library JS
111
+ script(type="text/javascript", src="../../dist/js/framework7.min.js")
112
+ // Path to your app js
113
+ script(type="text/javascript", src="js/weather7.js")
@@ -0,0 +1,213 @@
1
+ // Initialize your app
2
+ var myApp = new Framework7({
3
+ modalTitle: 'weather7'
4
+ });
5
+
6
+ // Export selectors engine
7
+ var $$ = Dom7;
8
+
9
+ // Register required Template7 helpers, before templates compilation
10
+ Template7.registerHelper('dayOfWeek', function (date) {
11
+ date = new Date(date);
12
+ var days = ('Monday Tuesday Wednesday Thursday Friday Saturday Sunday').split(' ');
13
+ return days[date.getDay()];
14
+ });
15
+ // Templates using Template7 template engine
16
+ myApp.searchResultsTemplate = Template7.compile($$('#search-results-template').html());
17
+ myApp.homeItemsTemplate = Template7.compile($$('#home-items-template').html());
18
+ myApp.detailsTemplate = Template7.compile($$('#details-template').html());
19
+
20
+ // Add view
21
+ var mainView = myApp.addView('.view-main', {
22
+ dynamicNavbar: true,
23
+ });
24
+
25
+ // Search Locations
26
+ var searchTimeout;
27
+ myApp.searchLocation = function (search) {
28
+ var query = encodeURIComponent('select * from geo.places where text="' + search + '"');
29
+ var q = 'http://query.yahooapis.com/v1/public/yql?q=' + query + '&format=json';
30
+ if (searchTimeout) clearTimeout(searchTimeout);
31
+ $$('.popup .preloader').show();
32
+ searchTimeout = setTimeout(function () {
33
+ $$.get(q, function (results) {
34
+ var html = '';
35
+ results = JSON.parse(results);
36
+ $$('.popup .preloader').hide();
37
+ if (results.query.count > 0) {
38
+ var places = results.query.results.place;
39
+ html = myApp.searchResultsTemplate(places);
40
+ }
41
+ $$('.popup .search-results').html(html);
42
+ });
43
+ }, 300);
44
+ };
45
+ // Get locations weather data
46
+ myApp.updateWeatherData = function (callback) {
47
+ var woeids = [];
48
+ if (!localStorage.w7Places) return;
49
+ var places = JSON.parse(localStorage.w7Places);
50
+ if (places.length === 0) {
51
+ localStorage.w7Data = JSON.stringify([]);
52
+ return;
53
+ }
54
+ if (!navigator.onLine) {
55
+ myApp.alert('You need internet connection to update weather data');
56
+ }
57
+ for (var i = 0; i < places.length; i++) {
58
+ woeids.push(places[i].woeid);
59
+ }
60
+ var query = encodeURIComponent('select * from weather.forecast where woeid in (' + JSON.stringify(woeids).replace('[', '').replace(']', '') + ') and u="c"');
61
+ var q = 'http://query.yahooapis.com/v1/public/yql?q=' + query + '&format=json';
62
+ myApp.showIndicator();
63
+ $$.get(q, function (data) {
64
+ var weatherData = [];
65
+ myApp.hideIndicator();
66
+ data = JSON.parse(data);
67
+ if (!data.query || !data.query.results) return;
68
+ var places = data.query.results.channel;
69
+ var place;
70
+ if ($$.isArray(places)) {
71
+ for (var i = 0; i < places.length; i++) {
72
+ place = places[i];
73
+ weatherData.push({
74
+ city: place.location.city,
75
+ country: place.location.country,
76
+ region: place.location.region,
77
+ humidity: place.atmosphere.humidity,
78
+ pressure: place.atmosphere.pressure,
79
+ sunrise: place.astronomy.sunrise,
80
+ sunset: place.astronomy.sunset,
81
+ wind: place.wind,
82
+ condition: place.item.condition,
83
+ forecast: place.item.forecast,
84
+ lat: place.item.lat,
85
+ long: place.item.long,
86
+ woeid: woeids[i]
87
+ });
88
+ }
89
+ }
90
+ else {
91
+ place = places;
92
+ weatherData.push({
93
+ city: place.location.city,
94
+ country: place.location.country,
95
+ region: place.location.region,
96
+ humidity: place.atmosphere.humidity,
97
+ pressure: place.atmosphere.pressure,
98
+ sunrise: place.astronomy.sunrise,
99
+ sunset: place.astronomy.sunset,
100
+ wind: place.wind,
101
+ condition: place.item.condition,
102
+ forecast: place.item.forecast,
103
+ lat: place.item.lat,
104
+ long: place.item.long,
105
+ woeid: woeids[0]
106
+ });
107
+ }
108
+ localStorage.w7Data = JSON.stringify(weatherData);
109
+ if (callback) callback();
110
+ });
111
+ };
112
+ // Build list of places on home page
113
+ myApp.buildWeatherHTML = function () {
114
+ var weatherData = localStorage.w7Data;
115
+ if (!weatherData) return;
116
+ $$('.places-list ul').html('');
117
+ weatherData = JSON.parse(weatherData);
118
+ var html = myApp.homeItemsTemplate(weatherData);
119
+ $$('.places-list ul').html(html);
120
+ };
121
+
122
+ // Delete place
123
+ $$('.places-list').on('delete', '.swipeout', function () {
124
+ var woeid = $$(this).attr('data-woeid');
125
+ // Update Places
126
+ if (!localStorage.w7Places) return;
127
+ var places = JSON.parse(localStorage.w7Places);
128
+ for (var i = 0; i < places.length; i++) {
129
+ if (places[i].woeid === woeid) places.splice(i, 1);
130
+ }
131
+ localStorage.w7Places = JSON.stringify(places);
132
+ // Update places data
133
+ if (!localStorage.w7Data) return;
134
+ var data = JSON.parse(localStorage.w7Data);
135
+ for (i = 0; i < data.length; i++) {
136
+ if (data[i].woeid === woeid) data.splice(i, 1);
137
+ }
138
+ localStorage.w7Data = JSON.stringify(data);
139
+ });
140
+
141
+ // Handle search results
142
+ $$('.popup input[type="text"]').on('change keyup keydown', function () {
143
+ myApp.searchLocation(this.value);
144
+ });
145
+ $$('.popup').on('closed', function () {
146
+ $$('.popup input[type="text"]').val('');
147
+ $$('.popup .search-results').html('');
148
+ $$('.popup .preloader').hide();
149
+ });
150
+ $$('.popup').on('open', function () {
151
+ $$('.views').addClass('blured');
152
+ $$('.statusbar-overlay').addClass('with-popup-opened');
153
+ });
154
+ $$('.popup').on('opened', function () {
155
+ $$('.popup input[type="text"]')[0].focus();
156
+ });
157
+ $$('.popup').on('close', function () {
158
+ $$('.views').removeClass('blured');
159
+ $$('.popup input[type="text"]')[0].blur();
160
+ $$('.statusbar-overlay').removeClass('with-popup-opened');
161
+ });
162
+ $$('.popup .search-results').on('click', 'li', function () {
163
+ var li = $$(this);
164
+ var woeid = li.attr('data-woeid');
165
+ var city = li.attr('data-city');
166
+ var country = li.attr('data-country');
167
+ var places;
168
+ if (localStorage.w7Places) places = JSON.parse(localStorage.w7Places);
169
+ else places = [];
170
+ places.push({
171
+ woeid: li.attr('data-woeid'),
172
+ city: li.attr('data-city'),
173
+ country: li.attr('data-country')
174
+ });
175
+ localStorage.w7Places = JSON.stringify(places);
176
+ myApp.updateWeatherData(function () {
177
+ myApp.buildWeatherHTML();
178
+ });
179
+ });
180
+
181
+ // Update html and weather data on app load
182
+ myApp.buildWeatherHTML();
183
+ myApp.updateWeatherData(function () {
184
+ myApp.buildWeatherHTML();
185
+ });
186
+
187
+ // Build details page
188
+ $$('.places-list').on('click', 'a.item-link', function (e) {
189
+ var woeid = $$(this).attr('data-woeid');
190
+ var item;
191
+ var weatherData = JSON.parse(localStorage.w7Data);
192
+ for (var i = 0; i < weatherData.length; i++) {
193
+ if (weatherData[i].woeid === woeid) item = weatherData[i];
194
+ }
195
+ var pageContent = myApp.detailsTemplate(item);
196
+ mainView.loadContent(pageContent);
197
+ });
198
+
199
+ // Update app when manifest updated
200
+ // http://www.html5rocks.com/en/tutorials/appcache/beginner/
201
+ // Check if a new cache is available on page load.
202
+ window.addEventListener('load', function (e) {
203
+ window.applicationCache.addEventListener('updateready', function (e) {
204
+ if (window.applicationCache.status === window.applicationCache.UPDATEREADY) {
205
+ // Browser downloaded a new app cache.
206
+ myApp.confirm('A new version of weather7 is available. Do you want to load it right now?', function () {
207
+ window.location.reload();
208
+ });
209
+ } else {
210
+ // Manifest didn't changed. Nothing new to server.
211
+ }
212
+ }, false);
213
+ }, false);
@@ -0,0 +1,294 @@
1
+ //Mixins
2
+ .transition(@t) {
3
+ -webkit-transition-duration: @t;
4
+ -moz-transition-duration: @t;
5
+ -ms-transition-duration: @t;
6
+ -o-transition-duration: @t;
7
+ transition-duration: @t;
8
+ }
9
+ .transform(@t) {
10
+ -webkit-transform: @t;
11
+ -moz-transform: @t;
12
+ -ms-transform: @t;
13
+ -o-transform: @t;
14
+ transform: @t;
15
+ }
16
+ html,body {
17
+ overflow: hidden;
18
+ height: 100%;
19
+ width: 100%;
20
+ }
21
+ body {
22
+ background: #000;
23
+ }
24
+ /*==============================
25
+ Blured effect on views
26
+ ==============================*/
27
+ .views {
28
+ .transition(400ms);
29
+ -webkit-filter: blur(0px);
30
+ .transform(translate3d(0,0,0) scale(1));
31
+ }
32
+ .views.blured {
33
+ -webkit-filter: blur(10px);
34
+ .transform(translate3d(0,0,0) scale(1.3));
35
+ }
36
+ /*==============================
37
+ Pages styling
38
+ ==============================*/
39
+ .pages {
40
+ background: #000;
41
+ }
42
+ .page[data-page="index"], .page[data-page="detail"] {
43
+ background: none;
44
+ background: #000 url(../img/bg.jpg) no-repeat center;
45
+ -webkit-background-size: cover;
46
+ background-size: cover;
47
+
48
+ }
49
+ /* iOS over scrolling fix */
50
+ html.ios {
51
+ .page {
52
+ overflow: auto;
53
+ -webkit-overflow-scrolling:touch;
54
+ }
55
+ .page-content {
56
+ margin-bottom: 1px;
57
+ }
58
+ }
59
+ /*==============================
60
+ Navbar
61
+ ==============================*/
62
+ .navbar {
63
+ border-bottom: none;
64
+ background: #2b1127;
65
+ color:#fff;
66
+ }
67
+ span.navbar-logo {
68
+ width: 100px;
69
+ height: 25px;
70
+ background: url(../img/logo.png) no-repeat center;
71
+ -webkit-background-size: 100% auto;
72
+ background-size: 100% auto;
73
+ display: block;
74
+ }
75
+ i.icon-plus {
76
+ color:#fff;
77
+ }
78
+ /*==============================
79
+ Homepage places list
80
+ ==============================*/
81
+ .places-list {
82
+ margin: 0;
83
+ color:#fff;
84
+ ul {
85
+ background: none;
86
+ border: none;
87
+ border-bottom: 1px solid rgba(255,255,255,0.2);
88
+ }
89
+ a.item-link .item-inner, .item-inner {
90
+ background: none;
91
+ padding-right: 15px;
92
+ border-bottom-color: rgba(255,255,255,0.2);
93
+ }
94
+ li:last-child {
95
+ .item-inner, a.item-link:active .item-inner{
96
+ border-bottom: none;
97
+ }
98
+ }
99
+ a.item-link:active {
100
+ background: rgba(255,255,255,0.1);
101
+ }
102
+ .item-after {
103
+ font-size: 41px;
104
+ font-weight: 100;
105
+ max-height: none;
106
+ color:#fff;
107
+ }
108
+ .city {
109
+ font-size: 25px;
110
+ font-weight: 300;
111
+ position: relative;
112
+ overflow: hidden;
113
+ max-width: 100%;
114
+ text-overflow:ellipsis;
115
+ white-space: nowrap;
116
+ }
117
+ .country {
118
+ font-size: 14px;
119
+ font-weight: 300;
120
+ }
121
+ .list-block-label {
122
+ text-align: center;
123
+ color: #fff;
124
+ opacity: 0.6;
125
+ }
126
+ }
127
+ /*==============================
128
+ Search popup styling
129
+ ==============================*/
130
+ .popup {
131
+ background: rgba(25,18,15,0.55);
132
+ color:#fff;
133
+ .navbar {
134
+ background: #1c1d21;
135
+ .left {
136
+ width: 100%;
137
+ -webkit-box-flex:1;
138
+ -webkit-flex-shrink:1;
139
+ -ms-flex-shrink:1;
140
+ flex-shrink:1;
141
+ margin-right: 0;
142
+ }
143
+ }
144
+ .preloader {
145
+ position: absolute;
146
+ right: 10px;
147
+ top: 50%;
148
+ margin-top: -10px;
149
+ height: 20px;
150
+ width: 20px;
151
+ display: none;
152
+ }
153
+ input[type="text"] {
154
+ height: 28px;
155
+ -webkit-box-sizing: border-box;
156
+ -moz-box-sizing: border-box;
157
+ box-sizing: border-box;
158
+ color:#fff;
159
+ padding: 4px 40px 4px 10px;
160
+ display: block;
161
+ width: 100%;
162
+ margin: 0;
163
+ border: none;
164
+ border-radius: 5px;
165
+ background: #000;
166
+ -webkit-appearance:none;
167
+ appearance:none;
168
+ font-family: inherit;
169
+ font-size: 14px;
170
+ }
171
+ .pages, .page {
172
+ background: none;
173
+ }
174
+ a.link {
175
+ color:#fff;
176
+ }
177
+ .search-results {
178
+ list-style: none;
179
+ margin: 0 0;
180
+ padding: 0 20px 0 18px;
181
+ font-size: 16px;
182
+ li {
183
+ margin: 10px 0;
184
+ cursor: pointer;
185
+ white-space: nowrap;
186
+ max-width: 100%;
187
+ position: relative;
188
+ overflow: hidden;
189
+ text-overflow: ellipsis;
190
+ }
191
+ span {
192
+ font-size: 14px;
193
+ color: rgba(255,255,255,0.8);
194
+ font-weight: 300;
195
+ margin-left: 5px;
196
+ }
197
+ }
198
+ }
199
+ /*==============================
200
+ Details page styles
201
+ ==============================*/
202
+ .page[data-page="detail"] {
203
+ color: #fff;
204
+ }
205
+ .detail-city {
206
+ margin-top: 20px;
207
+ font-size: 31px;
208
+ text-align: center;
209
+ font-weight: 300;
210
+ }
211
+ .detail-condition {
212
+ text-align: center;
213
+ }
214
+ .detail-temp {
215
+ font-size: 81px;
216
+ line-height: 81px;
217
+ font-weight: 100;
218
+ text-align: center;
219
+ }
220
+ .list-block.forecast-list {
221
+ font-weight: 300;
222
+ @media all and (min-width:600px) {
223
+ width: 600px;
224
+ margin-left: auto;
225
+ margin-right: auto;
226
+ }
227
+ ul {
228
+ border: none;
229
+ background: rgba(0,0,0,0.2);
230
+ }
231
+ .item-inner {
232
+ border-bottom-color: rgba(0,0,0,0.3);
233
+ }
234
+ li:last-child .item-inner{
235
+ border-bottom: none;
236
+ }
237
+ span {
238
+ display: inline-block;
239
+ }
240
+ span.state {
241
+ color:#fff;
242
+ font-size: 14px;
243
+ }
244
+ span.temps {
245
+ width: 70px;
246
+ margin-left: 15px;
247
+ display: inline-block;
248
+ text-align: right;
249
+ span {
250
+ width: 30px;
251
+ }
252
+ span.high {
253
+ color:#fff;
254
+ }
255
+ }
256
+ }
257
+ /*==============================
258
+ Styles for case with statusbar overlay
259
+ ==============================*/
260
+ html.with-statusbar-overlay {
261
+ .statusbar-overlay {
262
+ background: #2b1127;
263
+ &.with-popup-opened {
264
+ z-index: 11000;
265
+ background: #1c1d21;
266
+ }
267
+ }
268
+ @media all and (max-width:630px) and (max-height:630px) {
269
+ .popup {
270
+ top: 20px;
271
+ height: ~'-webkit-calc(100% - 20px)';
272
+ height: ~'-moz-calc(100% - 20px)';
273
+ height: ~'-ms-calc(100% - 20px)';
274
+ height: ~'calc(100% - 20px)';
275
+ }
276
+ }
277
+ }
278
+
279
+ /*==============================
280
+ Modal
281
+ ==============================*/
282
+ .modal-inner {
283
+ border-bottom: 1px solid #390532;
284
+ }
285
+ .modal-button {
286
+ border-right: 1px solid #390532;
287
+ }
288
+ .modal-inner, .modal-button {
289
+ color:#fff;
290
+ background: rgba(77, 12, 68, 0.9);
291
+ }
292
+ .modal-button:active {
293
+ background: lighten(#390532,10%);
294
+ }
@@ -0,0 +1,29 @@
1
+ <?php
2
+ header('Content-Type: text/cache-manifest');
3
+ $filesToCache = array(
4
+ './index.html',
5
+ './js/weather7.js',
6
+ './css/weather7.css',
7
+ './img/logo.png',
8
+ './img/bg.jpg',
9
+ './img/yahoo-logo.png',
10
+ '../../dist/js/framework7.min.js',
11
+ '../../dist/css/framework7.min.css'
12
+ );
13
+ ?>
14
+ CACHE MANIFEST
15
+
16
+ CACHE:
17
+ <?php
18
+ // Print files that we need to cache and store hash data
19
+ $hashes = '';
20
+ foreach($filesToCache as $file) {
21
+ echo $file."\n";
22
+ $hashes.=md5_file($file);
23
+ };
24
+ ?>
25
+
26
+ NETWORK:
27
+ *
28
+
29
+ # Hash Version: <?=md5($hashes)?>
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "Framework7",
3
+ "repository": {
4
+ "type": "git",
5
+ "url": "https://github.com/nolimits4web/Framework7.git"
6
+ },
7
+ "description": "Full Featured HTML Framework For Building iOS 7 Apps",
8
+ "version": "0.9.6",
9
+ "author": "Vladimir Kharlampidi",
10
+ "homepage": "http://www.idangero.us/framework7",
11
+ "keywords": ["mobile", "framework", "ios 7", "ios7", "ios8", "ios 8", "iphone", "ipad", "apple", "phonegap", "native", "touch", "appstore", "app", "f7"],
12
+ "scripts": [
13
+ "dist/js/framework7.js"
14
+ ],
15
+ "main": "dist/",
16
+ "styles": [
17
+ "dist/css/framework7.css"
18
+ ],
19
+ "license": ["MIT"],
20
+ "ignore": [
21
+ ".*",
22
+ "build",
23
+ "custom",
24
+ "kitchen-sink/",
25
+ "Gruntfile.js",
26
+ "apps",
27
+ "node_modules",
28
+ "package.json"
29
+ ]
30
+ }