sbf 0.0.1

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 (369) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +21 -0
  5. data/app/assets/javascripts/application.js +15 -0
  6. data/app/assets/javascripts/map.js +665 -0
  7. data/app/assets/javascripts/onemap.js +1928 -0
  8. data/app/assets/javascripts/units.js.coffee +3 -0
  9. data/app/assets/stylesheets/application.css +13 -0
  10. data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +13 -0
  11. data/app/assets/stylesheets/scaffolds.css.scss +69 -0
  12. data/app/assets/stylesheets/units.css.scss +3 -0
  13. data/app/controllers/application_controller.rb +5 -0
  14. data/app/controllers/buses_controller.rb +5 -0
  15. data/app/controllers/units_controller.rb +74 -0
  16. data/app/helpers/application_helper.rb +2 -0
  17. data/app/helpers/units_helper.rb +2 -0
  18. data/app/models/ability.rb +39 -0
  19. data/app/models/block.rb +163 -0
  20. data/app/models/estate.rb +70 -0
  21. data/app/models/quota.rb +80 -0
  22. data/app/models/settings.rb +4 -0
  23. data/app/models/unit.rb +121 -0
  24. data/app/views/blocks/_map.html.erb +37 -0
  25. data/app/views/kaminari/twitter-bootstrap/_first_page.html.haml +8 -0
  26. data/app/views/kaminari/twitter-bootstrap/_last_page.html.haml +8 -0
  27. data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +19 -0
  28. data/app/views/layouts/application.html.erb +14 -0
  29. data/app/views/layouts/rails_admin/application.html.haml +31 -0
  30. data/app/views/units/_form.html.erb +37 -0
  31. data/app/views/units/edit.html.erb +6 -0
  32. data/app/views/units/index.html.erb +30 -0
  33. data/app/views/units/index.json.jbuilder +4 -0
  34. data/app/views/units/new.html.erb +5 -0
  35. data/app/views/units/show.html.erb +29 -0
  36. data/app/views/units/show.json.jbuilder +1 -0
  37. data/config/initializers/rails_admin.rb +203 -0
  38. data/config/routes.rb +3 -0
  39. data/db/migrate/20130721172422_create_blocks.rb +17 -0
  40. data/db/migrate/20130721173925_create_units.rb +16 -0
  41. data/db/migrate/20130721205526_create_estates.rb +12 -0
  42. data/db/migrate/20130722004104_add_estate_id_to_block.rb +5 -0
  43. data/db/migrate/20130722004318_update_estate_id_for_blocks.rb +13 -0
  44. data/db/migrate/20130722010900_remove_estate_from_blocks.rb +5 -0
  45. data/db/migrate/20130722105351_fix_numeric_columns.rb +39 -0
  46. data/db/migrate/20130910145656_create_quota.rb +16 -0
  47. data/db/migrate/20130910151554_populate_quota_table.rb +35 -0
  48. data/db/migrate/20130912181314_remove_ethnic_quota_from_blocks.rb +5 -0
  49. data/db/schema.rb +68 -0
  50. data/lib/kml/busstops-kml-105.kml +156 -0
  51. data/lib/kml/busstops-kml-106.kml +368 -0
  52. data/lib/kml/busstops-kml-108.kml +156 -0
  53. data/lib/kml/busstops-kml-135.kml +181 -0
  54. data/lib/kml/busstops-kml-136.kml +792 -0
  55. data/lib/kml/busstops-kml-137.kml +675 -0
  56. data/lib/kml/busstops-kml-138.kml +634 -0
  57. data/lib/kml/busstops-kml-139.kml +323 -0
  58. data/lib/kml/busstops-kml-140.kml +156 -0
  59. data/lib/kml/busstops-kml-165.kml +207 -0
  60. data/lib/kml/busstops-kml-166.kml +622 -0
  61. data/lib/kml/busstops-kml-167.kml +554 -0
  62. data/lib/kml/busstops-kml-168.kml +840 -0
  63. data/lib/kml/busstops-kml-169.kml +1401 -0
  64. data/lib/kml/busstops-kml-170.kml +1171 -0
  65. data/lib/kml/busstops-kml-171.kml +225 -0
  66. data/lib/kml/busstops-kml-187.kml +225 -0
  67. data/lib/kml/busstops-kml-188.kml +179 -0
  68. data/lib/kml/busstops-kml-196.kml +646 -0
  69. data/lib/kml/busstops-kml-197.kml +662 -0
  70. data/lib/kml/busstops-kml-198.kml +1005 -0
  71. data/lib/kml/busstops-kml-199.kml +1052 -0
  72. data/lib/kml/busstops-kml-200.kml +1331 -0
  73. data/lib/kml/busstops-kml-201.kml +1351 -0
  74. data/lib/kml/busstops-kml-218.kml +248 -0
  75. data/lib/kml/busstops-kml-219.kml +179 -0
  76. data/lib/kml/busstops-kml-220.kml +248 -0
  77. data/lib/kml/busstops-kml-221.kml +225 -0
  78. data/lib/kml/busstops-kml-225.kml +179 -0
  79. data/lib/kml/busstops-kml-226.kml +363 -0
  80. data/lib/kml/busstops-kml-227.kml +849 -0
  81. data/lib/kml/busstops-kml-228.kml +1015 -0
  82. data/lib/kml/busstops-kml-229.kml +759 -0
  83. data/lib/kml/busstops-kml-230.kml +557 -0
  84. data/lib/kml/busstops-kml-231.kml +998 -0
  85. data/lib/kml/busstops-kml-232.kml +2153 -0
  86. data/lib/kml/busstops-kml-233.kml +498 -0
  87. data/lib/kml/busstops-kml-234.kml +502 -0
  88. data/lib/kml/busstops-kml-235.kml +249 -0
  89. data/lib/kml/busstops-kml-249.kml +248 -0
  90. data/lib/kml/busstops-kml-250.kml +179 -0
  91. data/lib/kml/busstops-kml-251.kml +455 -0
  92. data/lib/kml/busstops-kml-252.kml +409 -0
  93. data/lib/kml/busstops-kml-253.kml +570 -0
  94. data/lib/kml/busstops-kml-254.kml +202 -0
  95. data/lib/kml/busstops-kml-256.kml +363 -0
  96. data/lib/kml/busstops-kml-257.kml +536 -0
  97. data/lib/kml/busstops-kml-258.kml +515 -0
  98. data/lib/kml/busstops-kml-259.kml +774 -0
  99. data/lib/kml/busstops-kml-260.kml +536 -0
  100. data/lib/kml/busstops-kml-261.kml +738 -0
  101. data/lib/kml/busstops-kml-262.kml +783 -0
  102. data/lib/kml/busstops-kml-263.kml +1044 -0
  103. data/lib/kml/busstops-kml-264.kml +543 -0
  104. data/lib/kml/busstops-kml-265.kml +624 -0
  105. data/lib/kml/busstops-kml-266.kml +934 -0
  106. data/lib/kml/busstops-kml-267.kml +883 -0
  107. data/lib/kml/busstops-kml-268.kml +187 -0
  108. data/lib/kml/busstops-kml-280.kml +271 -0
  109. data/lib/kml/busstops-kml-281.kml +248 -0
  110. data/lib/kml/busstops-kml-282.kml +639 -0
  111. data/lib/kml/busstops-kml-283.kml +501 -0
  112. data/lib/kml/busstops-kml-284.kml +432 -0
  113. data/lib/kml/busstops-kml-285.kml +432 -0
  114. data/lib/kml/busstops-kml-286.kml +363 -0
  115. data/lib/kml/busstops-kml-287.kml +272 -0
  116. data/lib/kml/busstops-kml-288.kml +792 -0
  117. data/lib/kml/busstops-kml-289.kml +801 -0
  118. data/lib/kml/busstops-kml-290.kml +673 -0
  119. data/lib/kml/busstops-kml-291.kml +474 -0
  120. data/lib/kml/busstops-kml-292.kml +256 -0
  121. data/lib/kml/busstops-kml-293.kml +748 -0
  122. data/lib/kml/busstops-kml-294.kml +999 -0
  123. data/lib/kml/busstops-kml-295.kml +769 -0
  124. data/lib/kml/busstops-kml-296.kml +1051 -0
  125. data/lib/kml/busstops-kml-297.kml +904 -0
  126. data/lib/kml/busstops-kml-298.kml +731 -0
  127. data/lib/kml/busstops-kml-299.kml +644 -0
  128. data/lib/kml/busstops-kml-300.kml +274 -0
  129. data/lib/kml/busstops-kml-302.kml +156 -0
  130. data/lib/kml/busstops-kml-311.kml +179 -0
  131. data/lib/kml/busstops-kml-312.kml +455 -0
  132. data/lib/kml/busstops-kml-313.kml +639 -0
  133. data/lib/kml/busstops-kml-314.kml +639 -0
  134. data/lib/kml/busstops-kml-315.kml +708 -0
  135. data/lib/kml/busstops-kml-316.kml +394 -0
  136. data/lib/kml/busstops-kml-317.kml +363 -0
  137. data/lib/kml/busstops-kml-318.kml +830 -0
  138. data/lib/kml/busstops-kml-319.kml +370 -0
  139. data/lib/kml/busstops-kml-320.kml +560 -0
  140. data/lib/kml/busstops-kml-321.kml +432 -0
  141. data/lib/kml/busstops-kml-322.kml +365 -0
  142. data/lib/kml/busstops-kml-323.kml +529 -0
  143. data/lib/kml/busstops-kml-324.kml +549 -0
  144. data/lib/kml/busstops-kml-325.kml +717 -0
  145. data/lib/kml/busstops-kml-326.kml +645 -0
  146. data/lib/kml/busstops-kml-327.kml +908 -0
  147. data/lib/kml/busstops-kml-328.kml +467 -0
  148. data/lib/kml/busstops-kml-329.kml +876 -0
  149. data/lib/kml/busstops-kml-330.kml +795 -0
  150. data/lib/kml/busstops-kml-331.kml +442 -0
  151. data/lib/kml/busstops-kml-342.kml +271 -0
  152. data/lib/kml/busstops-kml-343.kml +547 -0
  153. data/lib/kml/busstops-kml-344.kml +317 -0
  154. data/lib/kml/busstops-kml-345.kml +557 -0
  155. data/lib/kml/busstops-kml-346.kml +777 -0
  156. data/lib/kml/busstops-kml-347.kml +777 -0
  157. data/lib/kml/busstops-kml-348.kml +762 -0
  158. data/lib/kml/busstops-kml-349.kml +668 -0
  159. data/lib/kml/busstops-kml-350.kml +366 -0
  160. data/lib/kml/busstops-kml-351.kml +301 -0
  161. data/lib/kml/busstops-kml-352.kml +367 -0
  162. data/lib/kml/busstops-kml-353.kml +271 -0
  163. data/lib/kml/busstops-kml-354.kml +225 -0
  164. data/lib/kml/busstops-kml-355.kml +611 -0
  165. data/lib/kml/busstops-kml-356.kml +842 -0
  166. data/lib/kml/busstops-kml-357.kml +838 -0
  167. data/lib/kml/busstops-kml-358.kml +808 -0
  168. data/lib/kml/busstops-kml-359.kml +786 -0
  169. data/lib/kml/busstops-kml-360.kml +680 -0
  170. data/lib/kml/busstops-kml-361.kml +785 -0
  171. data/lib/kml/busstops-kml-362.kml +815 -0
  172. data/lib/kml/busstops-kml-363.kml +389 -0
  173. data/lib/kml/busstops-kml-374.kml +432 -0
  174. data/lib/kml/busstops-kml-376.kml +205 -0
  175. data/lib/kml/busstops-kml-377.kml +889 -0
  176. data/lib/kml/busstops-kml-378.kml +936 -0
  177. data/lib/kml/busstops-kml-379.kml +577 -0
  178. data/lib/kml/busstops-kml-380.kml +794 -0
  179. data/lib/kml/busstops-kml-381.kml +619 -0
  180. data/lib/kml/busstops-kml-382.kml +716 -0
  181. data/lib/kml/busstops-kml-383.kml +204 -0
  182. data/lib/kml/busstops-kml-385.kml +271 -0
  183. data/lib/kml/busstops-kml-386.kml +795 -0
  184. data/lib/kml/busstops-kml-387.kml +875 -0
  185. data/lib/kml/busstops-kml-388.kml +598 -0
  186. data/lib/kml/busstops-kml-389.kml +648 -0
  187. data/lib/kml/busstops-kml-390.kml +297 -0
  188. data/lib/kml/busstops-kml-391.kml +519 -0
  189. data/lib/kml/busstops-kml-392.kml +426 -0
  190. data/lib/kml/busstops-kml-393.kml +959 -0
  191. data/lib/kml/busstops-kml-394.kml +250 -0
  192. data/lib/kml/busstops-kml-395.kml +187 -0
  193. data/lib/kml/busstops-kml-405.kml +248 -0
  194. data/lib/kml/busstops-kml-407.kml +277 -0
  195. data/lib/kml/busstops-kml-408.kml +670 -0
  196. data/lib/kml/busstops-kml-409.kml +1094 -0
  197. data/lib/kml/busstops-kml-410.kml +1009 -0
  198. data/lib/kml/busstops-kml-411.kml +880 -0
  199. data/lib/kml/busstops-kml-412.kml +988 -0
  200. data/lib/kml/busstops-kml-413.kml +396 -0
  201. data/lib/kml/busstops-kml-417.kml +615 -0
  202. data/lib/kml/busstops-kml-418.kml +869 -0
  203. data/lib/kml/busstops-kml-419.kml +1174 -0
  204. data/lib/kml/busstops-kml-420.kml +463 -0
  205. data/lib/kml/busstops-kml-421.kml +253 -0
  206. data/lib/kml/busstops-kml-422.kml +180 -0
  207. data/lib/kml/busstops-kml-423.kml +865 -0
  208. data/lib/kml/busstops-kml-424.kml +664 -0
  209. data/lib/kml/busstops-kml-425.kml +457 -0
  210. data/lib/kml/busstops-kml-426.kml +179 -0
  211. data/lib/kml/busstops-kml-438.kml +157 -0
  212. data/lib/kml/busstops-kml-439.kml +388 -0
  213. data/lib/kml/busstops-kml-440.kml +248 -0
  214. data/lib/kml/busstops-kml-441.kml +409 -0
  215. data/lib/kml/busstops-kml-442.kml +411 -0
  216. data/lib/kml/busstops-kml-443.kml +795 -0
  217. data/lib/kml/busstops-kml-444.kml +321 -0
  218. data/lib/kml/busstops-kml-447.kml +226 -0
  219. data/lib/kml/busstops-kml-448.kml +668 -0
  220. data/lib/kml/busstops-kml-449.kml +508 -0
  221. data/lib/kml/busstops-kml-450.kml +796 -0
  222. data/lib/kml/busstops-kml-451.kml +783 -0
  223. data/lib/kml/busstops-kml-452.kml +157 -0
  224. data/lib/kml/busstops-kml-454.kml +670 -0
  225. data/lib/kml/busstops-kml-455.kml +1211 -0
  226. data/lib/kml/busstops-kml-456.kml +496 -0
  227. data/lib/kml/busstops-kml-457.kml +220 -0
  228. data/lib/kml/busstops-kml-470.kml +248 -0
  229. data/lib/kml/busstops-kml-473.kml +434 -0
  230. data/lib/kml/busstops-kml-474.kml +433 -0
  231. data/lib/kml/busstops-kml-475.kml +405 -0
  232. data/lib/kml/busstops-kml-478.kml +271 -0
  233. data/lib/kml/busstops-kml-479.kml +780 -0
  234. data/lib/kml/busstops-kml-480.kml +604 -0
  235. data/lib/kml/busstops-kml-481.kml +676 -0
  236. data/lib/kml/busstops-kml-482.kml +603 -0
  237. data/lib/kml/busstops-kml-483.kml +501 -0
  238. data/lib/kml/busstops-kml-484.kml +179 -0
  239. data/lib/kml/busstops-kml-485.kml +317 -0
  240. data/lib/kml/busstops-kml-486.kml +460 -0
  241. data/lib/kml/busstops-kml-487.kml +887 -0
  242. data/lib/kml/busstops-kml-488.kml +210 -0
  243. data/lib/kml/busstops-kml-501.kml +455 -0
  244. data/lib/kml/busstops-kml-502.kml +317 -0
  245. data/lib/kml/busstops-kml-503.kml +317 -0
  246. data/lib/kml/busstops-kml-504.kml +411 -0
  247. data/lib/kml/busstops-kml-505.kml +461 -0
  248. data/lib/kml/busstops-kml-506.kml +544 -0
  249. data/lib/kml/busstops-kml-509.kml +256 -0
  250. data/lib/kml/busstops-kml-510.kml +869 -0
  251. data/lib/kml/busstops-kml-511.kml +1146 -0
  252. data/lib/kml/busstops-kml-512.kml +963 -0
  253. data/lib/kml/busstops-kml-513.kml +1307 -0
  254. data/lib/kml/busstops-kml-514.kml +437 -0
  255. data/lib/kml/busstops-kml-515.kml +363 -0
  256. data/lib/kml/busstops-kml-516.kml +599 -0
  257. data/lib/kml/busstops-kml-517.kml +1078 -0
  258. data/lib/kml/busstops-kml-518.kml +709 -0
  259. data/lib/kml/busstops-kml-519.kml +179 -0
  260. data/lib/kml/busstops-kml-520.kml +225 -0
  261. data/lib/kml/busstops-kml-532.kml +363 -0
  262. data/lib/kml/busstops-kml-534.kml +179 -0
  263. data/lib/kml/busstops-kml-535.kml +989 -0
  264. data/lib/kml/busstops-kml-536.kml +1196 -0
  265. data/lib/kml/busstops-kml-537.kml +631 -0
  266. data/lib/kml/busstops-kml-540.kml +346 -0
  267. data/lib/kml/busstops-kml-541.kml +984 -0
  268. data/lib/kml/busstops-kml-542.kml +256 -0
  269. data/lib/kml/busstops-kml-543.kml +496 -0
  270. data/lib/kml/busstops-kml-544.kml +855 -0
  271. data/lib/kml/busstops-kml-545.kml +612 -0
  272. data/lib/kml/busstops-kml-546.kml +225 -0
  273. data/lib/kml/busstops-kml-547.kml +645 -0
  274. data/lib/kml/busstops-kml-548.kml +363 -0
  275. data/lib/kml/busstops-kml-549.kml +386 -0
  276. data/lib/kml/busstops-kml-550.kml +225 -0
  277. data/lib/kml/busstops-kml-551.kml +271 -0
  278. data/lib/kml/busstops-kml-566.kml +436 -0
  279. data/lib/kml/busstops-kml-567.kml +461 -0
  280. data/lib/kml/busstops-kml-568.kml +253 -0
  281. data/lib/kml/busstops-kml-571.kml +241 -0
  282. data/lib/kml/busstops-kml-572.kml +630 -0
  283. data/lib/kml/busstops-kml-573.kml +430 -0
  284. data/lib/kml/busstops-kml-574.kml +625 -0
  285. data/lib/kml/busstops-kml-575.kml +1110 -0
  286. data/lib/kml/busstops-kml-576.kml +1082 -0
  287. data/lib/kml/busstops-kml-577.kml +205 -0
  288. data/lib/kml/busstops-kml-581.kml +735 -0
  289. data/lib/kml/busstops-kml-582.kml +248 -0
  290. data/lib/kml/busstops-kml-594.kml +179 -0
  291. data/lib/kml/busstops-kml-595.kml +179 -0
  292. data/lib/kml/busstops-kml-597.kml +436 -0
  293. data/lib/kml/busstops-kml-598.kml +458 -0
  294. data/lib/kml/busstops-kml-601.kml +179 -0
  295. data/lib/kml/busstops-kml-602.kml +389 -0
  296. data/lib/kml/busstops-kml-603.kml +157 -0
  297. data/lib/kml/busstops-kml-605.kml +456 -0
  298. data/lib/kml/busstops-kml-606.kml +298 -0
  299. data/lib/kml/busstops-kml-607.kml +792 -0
  300. data/lib/kml/busstops-kml-608.kml +463 -0
  301. data/lib/kml/busstops-kml-626.kml +248 -0
  302. data/lib/kml/busstops-kml-628.kml +157 -0
  303. data/lib/kml/busstops-kml-629.kml +501 -0
  304. data/lib/kml/busstops-kml-630.kml +340 -0
  305. data/lib/kml/busstops-kml-631.kml +249 -0
  306. data/lib/kml/busstops-kml-632.kml +202 -0
  307. data/lib/kml/busstops-kml-633.kml +319 -0
  308. data/lib/kml/busstops-kml-635.kml +225 -0
  309. data/lib/kml/busstops-kml-636.kml +317 -0
  310. data/lib/kml/busstops-kml-638.kml +667 -0
  311. data/lib/kml/busstops-kml-656.kml +156 -0
  312. data/lib/kml/busstops-kml-657.kml +271 -0
  313. data/lib/kml/busstops-kml-660.kml +432 -0
  314. data/lib/kml/busstops-kml-662.kml +227 -0
  315. data/lib/kml/busstops-kml-663.kml +271 -0
  316. data/lib/kml/busstops-kml-664.kml +202 -0
  317. data/lib/kml/busstops-kml-665.kml +718 -0
  318. data/lib/kml/busstops-kml-666.kml +179 -0
  319. data/lib/kml/busstops-kml-667.kml +206 -0
  320. data/lib/kml/busstops-kml-669.kml +225 -0
  321. data/lib/kml/busstops-kml-688.kml +271 -0
  322. data/lib/kml/busstops-kml-690.kml +179 -0
  323. data/lib/kml/busstops-kml-691.kml +496 -0
  324. data/lib/kml/busstops-kml-692.kml +179 -0
  325. data/lib/kml/busstops-kml-693.kml +271 -0
  326. data/lib/kml/busstops-kml-695.kml +363 -0
  327. data/lib/kml/busstops-kml-696.kml +842 -0
  328. data/lib/kml/busstops-kml-697.kml +265 -0
  329. data/lib/kml/busstops-kml-698.kml +179 -0
  330. data/lib/kml/busstops-kml-700.kml +156 -0
  331. data/lib/kml/busstops-kml-719.kml +294 -0
  332. data/lib/kml/busstops-kml-721.kml +319 -0
  333. data/lib/kml/busstops-kml-722.kml +460 -0
  334. data/lib/kml/busstops-kml-723.kml +843 -0
  335. data/lib/kml/busstops-kml-724.kml +989 -0
  336. data/lib/kml/busstops-kml-725.kml +297 -0
  337. data/lib/kml/busstops-kml-726.kml +447 -0
  338. data/lib/kml/busstops-kml-727.kml +942 -0
  339. data/lib/kml/busstops-kml-728.kml +179 -0
  340. data/lib/kml/busstops-kml-75.kml +156 -0
  341. data/lib/kml/busstops-kml-750.kml +271 -0
  342. data/lib/kml/busstops-kml-751.kml +225 -0
  343. data/lib/kml/busstops-kml-752.kml +271 -0
  344. data/lib/kml/busstops-kml-753.kml +180 -0
  345. data/lib/kml/busstops-kml-754.kml +887 -0
  346. data/lib/kml/busstops-kml-755.kml +1067 -0
  347. data/lib/kml/busstops-kml-756.kml +609 -0
  348. data/lib/kml/busstops-kml-757.kml +448 -0
  349. data/lib/kml/busstops-kml-758.kml +391 -0
  350. data/lib/kml/busstops-kml-785.kml +341 -0
  351. data/lib/kml/busstops-kml-786.kml +365 -0
  352. data/lib/kml/busstops-kml-787.kml +662 -0
  353. data/lib/kml/busstops-kml-788.kml +1180 -0
  354. data/lib/kml/busstops-kml-789.kml +180 -0
  355. data/lib/kml/busstops-kml-816.kml +179 -0
  356. data/lib/kml/busstops-kml-817.kml +179 -0
  357. data/lib/kml/busstops-kml-818.kml +478 -0
  358. data/lib/kml/busstops-kml-819.kml +604 -0
  359. data/lib/kml/busstops-kml-820.kml +318 -0
  360. data/lib/kml/busstops-kml-849.kml +503 -0
  361. data/lib/kml/busstops-kml-850.kml +157 -0
  362. data/lib/kml/busstops-kml-877.kml +156 -0
  363. data/lib/kml/busstops-kml-908.kml +156 -0
  364. data/lib/kml/busstops-kml-969.kml +156 -0
  365. data/lib/sbf.rb +6 -0
  366. data/lib/sbf/engine.rb +19 -0
  367. data/lib/sbf/version.rb +3 -0
  368. data/lib/tasks/sbf_tasks.rake +4 -0
  369. metadata +467 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c637317310cf4f2302699d36fd15029d6472c3d8
4
+ data.tar.gz: 7c505356e156f11f4f34a831dd8231226ca8a93b
5
+ SHA512:
6
+ metadata.gz: 52550866302e742ca6eedffdb4443abd92dea8a6f330c3e82d3b33d4e08cd53362214732014aebd3709d04e7859fe9b7307ff72a30e1f29bfd8141b50ae1b026
7
+ data.tar.gz: 34510540ba41de3d156ce1a2e457eee008371ed7e0469a8b10bd96bfecddb98c387209c09d8274f9f9d17894ef9171d39a866cffa23bbbb2a8ef47b620ee6c54
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2013 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ = Sbf
2
+
3
+ This project rocks and uses MIT-LICENSE.
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Sbf'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+
18
+
19
+
20
+ Bundler::GemHelper.install_tasks
21
+
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require turbolinks
@@ -0,0 +1,665 @@
1
+ // layerData json structure: for future extension
2
+
3
+ var custom_layerData = {
4
+ AgencyName: "LTA",
5
+ Category: "Transit",
6
+ FeatureType: "Point",
7
+ FieldNames: "NAME,TOTALROOMS,KEEPERNAME,POSTALCODE,DESCRIPTION,ADDRESS,HYPERLINK",
8
+ Icon: undefined,
9
+ IconPath: "http://t1.onemap.sg/icons/HOTELS/",
10
+ MapTipFieldName: "NAME",
11
+ MaxLevel: "",
12
+ MinLevel: "",
13
+ RelatedTabName: "",
14
+ calloutFieldName: "",
15
+ calloutURL: "",
16
+ color: "",
17
+ lineThickness: "",
18
+ outlineColor: "",
19
+ pointColour: undefined,
20
+ visibleFields: "1,0,0,1,0,1,1"
21
+ }
22
+
23
+ function loadScript(entry) {
24
+ // alert(entry + $('#div_onemap').length + typeof dojo + $('#map_canvas').length + typeof google);
25
+ getAddress();
26
+
27
+ if (typeof google === 'undefined') {
28
+ var script = document.createElement("script");
29
+ script.type = "text/javascript";
30
+ script.src = 'http://maps.googleapis.com/maps/api/js?v=3&libraries=places&sensor=false&callback=initGMap';
31
+ document.body.appendChild(script);
32
+ } else {
33
+ initGMap();
34
+ }
35
+
36
+ // $.getScript("http://www.onemap.sg/API/JS?accessKEY=<%= Settings.onemap_api_key %>&v=2.8&type=full", function(data) {
37
+ // eval(data);
38
+ // window.dojo.addOnLoad(addressSearch);
39
+ // });
40
+
41
+ if (typeof dojo === 'undefined') {
42
+ var script2 = document.createElement("script");
43
+ script2.type = "text/javascript";
44
+ script2.src = onemap_path;
45
+ document.body.appendChild(script2);
46
+
47
+ var script3 = document.createElement("script");
48
+ script3.type = "text/javascript";
49
+ script3.src = "http://t1.onemap.sg/om_js/arcgis_js_api/library/2.8/arcgis/js/default.js";
50
+ document.body.appendChild(script3);
51
+
52
+
53
+ script3.onreadystatechange = function() {
54
+ if (this.readyState == 'complete' || this.readyState == 'loaded') this.onload({ target: this });
55
+ };
56
+
57
+ script3.onload = function(load) {
58
+ /*init code here*/
59
+ dojo.addOnLoad(initOneMap);
60
+ };
61
+ } else {
62
+ dojo.addOnLoad(initOneMap);
63
+ }
64
+
65
+ // jQuery.ajax({
66
+ // async:false,
67
+ // type:'GET',
68
+ // url: "http://www.onemap.sg/API/JS?accessKEY=<%= Settings.onemap_api_key %>&v=2.8&type=full",
69
+ // data:null,
70
+ // success: om_success,
71
+ // dataType:'script'
72
+ // });
73
+ }
74
+
75
+ //window.onload = loadScript('window');
76
+ $('body').bind('pjax:end',loadScript('pjax:end'));
77
+ // $('body').bind('pjax:end',dojo.addOnLoad(addressSearch));
78
+
79
+
80
+ // $(document).bind('pjax:success', function() {
81
+ // jQuery.ajax({
82
+ // async:false,
83
+ // type:'GET',
84
+ // url: "http://www.onemap.sg/API/JS?accessKEY=<%= Settings.onemap_api_key %>&v=2.8&type=full",
85
+ // data:null,
86
+ // success: om_success,
87
+ // dataType:'script'
88
+ // });
89
+ // });
90
+ // loadScript;
91
+ // //google.maps.event.addDomListener(window, 'load', initialize);
92
+ // dojo.addOnLoad(addressSearch);
93
+ // });
94
+
95
+ // $(document).bind('pjax:popstate', function() {
96
+ // $(document).bind('pjax:end', function(event) {
97
+ // $(event.target).find('script').each(function() {
98
+ // $.globalEval(this.text || this.textContent || this.innerHTML || '');
99
+ // })
100
+ // });
101
+ // });
102
+
103
+ function getAddress() {
104
+ if (typeof address === 'undefined') address = $('#address').data("address");
105
+ return address;
106
+ }
107
+
108
+ /*
109
+ methods for Google Maps
110
+ */
111
+
112
+ function initGMap() {
113
+ // alert("loaded!");
114
+ var address = getAddress();
115
+ var yourAddress = address + ", Singapore";
116
+ var geocoder = new google.maps.Geocoder();
117
+
118
+ var mapOptions;
119
+
120
+ infowindow = new google.maps.InfoWindow();
121
+
122
+ geocoder.geocode({
123
+ address: yourAddress
124
+ }, function(locResult) {
125
+ console.log(locResult, 'gmap_result');
126
+
127
+ var center = locResult[0].geometry.location;
128
+
129
+ mapOptions = {
130
+ zoom: 18,
131
+ center: center,
132
+ mapTypeId: google.maps.MapTypeId.ROADMAP
133
+ }
134
+
135
+ map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
136
+
137
+ var marker = new google.maps.Marker({
138
+ position: center,
139
+ title: address,
140
+ map: map,
141
+ });
142
+
143
+ var transitLayer = new google.maps.TransitLayer();
144
+ transitLayer.setMap(map);
145
+
146
+ var request = {
147
+ location: center,
148
+ radius: '1000',
149
+ types: ['bus_station']
150
+ };
151
+
152
+ service = new google.maps.places.PlacesService(map);
153
+ service.nearbySearch(request, callback);
154
+ });
155
+
156
+ // alert(google);
157
+ // alert(dojo);
158
+ // dojo.addOnLoad(addressSearch);
159
+ }
160
+
161
+ function callback(results, status) {
162
+ if (status == google.maps.places.PlacesServiceStatus.OK) {
163
+ console.log(results, 'places');
164
+ for (var i = 0; i < results.length; i++) {
165
+ var place = results[i];
166
+ createMarker(results[i]);
167
+ }
168
+ }
169
+ }
170
+
171
+ function createMarker(place) {
172
+ var placeLoc = place.geometry.location;
173
+ var marker = new google.maps.Marker({
174
+ map: map,
175
+ position: place.geometry.location
176
+ });
177
+
178
+ google.maps.event.addListener(marker, 'click', function() {
179
+ infowindow.setContent(place.name);
180
+ infowindow.open(map, this);
181
+ });
182
+ }
183
+
184
+ function overlayData(mashupResults)
185
+ {
186
+ function hexToRgb(hex) {
187
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
188
+ return result ? {
189
+ r: parseInt(result[1], 16),
190
+ g: parseInt(result[2], 16),
191
+ b: parseInt(result[3], 16)
192
+ } : null;
193
+ }
194
+ var results = mashupResults.results;
195
+ console.log(mashupResults, 'bus_stops')
196
+
197
+ if (results == "No results") {
198
+ // alert("Theme not found. Please check theme name.");
199
+ return
200
+ }
201
+
202
+ var featcount = mashupResults.count;
203
+ var iconPath = mashupResults.iconPath;
204
+
205
+ iconPath = 'http://www.publictransport.sg/img/bus.gif';
206
+ var featType = mashupResults.featType;
207
+ var theme = mashupResults.theme;
208
+
209
+ themeGraphicsLayer.clear();
210
+ var i;
211
+ var xPnt;
212
+ var yPnt;
213
+ var xCord;
214
+ var yCord;
215
+
216
+ var pntArr = new Array();
217
+
218
+
219
+ if (results.length==0){
220
+ return
221
+ }
222
+
223
+ if (featType == "Point" || theme == 'Bus_Stop')
224
+ {
225
+ //process all the results
226
+ for (i = 0; i < results.length; i++)
227
+ {
228
+
229
+ //create point graphic on map using generatePointGraphic function
230
+ var PointGraphic=generatePointGraphic(results[i].XY,results[i].ICON_NAME,iconPath)
231
+ //set graphic attributes
232
+ PointGraphic.attributes=results[i]
233
+ //add newly created graphic in graphiclayer
234
+ themeGraphicsLayer.add(PointGraphic);
235
+ }
236
+ }
237
+ else if (featType == "Polygon")
238
+ {
239
+ var polygon;
240
+ for (i = 0;i < results.length; i++)
241
+ {
242
+ if(mashupResults.results[i].SYMBOLCOLOR !=undefined && mashupResults.results[i].SYMBOLCOLOR !="")
243
+ {
244
+ var polyColor = mashupResults.results[i].SYMBOLCOLOR;
245
+ var r= hexToRgb(polyColor).r;
246
+ var g= hexToRgb(polyColor).g;
247
+ var b= hexToRgb(polyColor).b;
248
+ }
249
+ else if(mashupResults.results[i].SYMBOLCOLOR =="")
250
+ {
251
+ var r= 0;
252
+ var g= 0;
253
+ var b= 0;
254
+ }
255
+ pntArr = [];
256
+ polygon = new esri.geometry.Polygon(new esri.SpatialReference({wkid:3414}));
257
+
258
+ for (var x=0; x < results[i].XY.split("|").length; x++)
259
+ {
260
+ xCord = results[i].XY.split("|")[x].split(",")[0];
261
+ yCord = results[i].XY.split("|")[x].split(",")[1];
262
+
263
+ var PointLocation = new esri.geometry.Point(xCord, yCord, new esri.SpatialReference({ wkid: 3414 }))
264
+ pntArr.push(PointLocation);
265
+ }
266
+ polygon.addRing(pntArr);
267
+
268
+ gra = new esri.Graphic;
269
+ gra.geometry = polygon;
270
+ gra.attributes=results[i];
271
+
272
+ var sfs = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
273
+ new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
274
+ new dojo.Color([0,0,0]), 2),new dojo.Color([r,g,b,0.8]));
275
+
276
+ gra.symbol = sfs;
277
+ themeGraphicsLayer.add(gra);
278
+ }
279
+ }
280
+ else if (featType == "Line")
281
+ {
282
+ var pLine;
283
+ for (i = 0;i < results.length; i++)
284
+ {
285
+ if(mashupResults.results[i].SYMBOLCOLOR !=undefined && mashupResults.results[i].SYMBOLCOLOR !="")
286
+ {
287
+ var polyColor = mashupResults.results[i].SYMBOLCOLOR;
288
+ var r= hexToRgb(polyColor).r;
289
+ var g= hexToRgb(polyColor).g;
290
+ var b= hexToRgb(polyColor).b;
291
+ }
292
+ else if(mashupResults.results[i].SYMBOLCOLOR =="")
293
+ {
294
+ var r= 0;
295
+ var g= 0;
296
+ var b= 0;
297
+ }
298
+ pntArr = [];
299
+ pLine = new esri.geometry.Polyline(new esri.SpatialReference({wkid:3414}));
300
+
301
+ for (var x=0; x < results[i].XY.split("|").length; x++)
302
+ {
303
+ xCord = results[i].XY.split("|")[x].split(",")[0];
304
+ yCord = results[i].XY.split("|")[x].split(",")[1];
305
+
306
+ var PointLocation = new esri.geometry.Point(xCord, yCord, new esri.SpatialReference({ wkid: 3414 }))
307
+ pntArr.push(PointLocation);
308
+ }
309
+ pLine.addPath(pntArr);
310
+
311
+ gra = new esri.Graphic;
312
+ gra.geometry = pLine;
313
+ gra.attributes = results[i];
314
+
315
+ var sfs = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
316
+ new dojo.Color([r,g,b]), 2);
317
+ gra.symbol = sfs;
318
+ themeGraphicsLayer.add(gra);
319
+ }
320
+ }
321
+ }
322
+
323
+
324
+ /*
325
+ methods for OneMap
326
+ */
327
+
328
+ function OverlayTheme(){
329
+ // debugger;
330
+
331
+ //var themeName = document.getElementById('txtTheme').value;
332
+ var themeName = 'Bus_Stop';
333
+ //themeName = 'Hotels';
334
+
335
+ // if (themeName == "") {
336
+ // alert('Please provide theme name')
337
+ // return
338
+ // }
339
+
340
+ mashup = new MashupData();
341
+ mashup.themeName = themeName;
342
+ mashup.layerData = custom_layerData; // somehow this avoids the error triggerd in GetMashupData due to invalid layerData
343
+ mashup.extent = OneMap.map.extent.xmin + "," + OneMap.map.extent.ymin + "," + OneMap.map.extent.xmax + "," + OneMap.map.extent.ymax;
344
+ // mashup.extent = OneMap.map.extent;
345
+
346
+ // (old) hack to prevent GetDataForCallout from breaking due to missing layerdata for Bus_Stop!
347
+ //if ((obj.layerData == undefined) || (obj.layerData == "")) {
348
+ // var extractData = new GetLayerInfoClass()
349
+ // extractData.themeName = 'Hotels';
350
+ // var extractedLayerData = extractData.ExtracLayerInfo(function(results) {
351
+ // mashup.layerData = results;
352
+ // })
353
+ //}
354
+ console.log(mashup, 'mashup_layerdata');
355
+
356
+ //add graphic layer
357
+ themeGraphicsLayer = new esri.layers.GraphicsLayer();
358
+ themeGraphicsLayer.id=themeName;
359
+ OneMap.map.addLayer(themeGraphicsLayer);
360
+
361
+ mashup.GetMashupData(overlayData);
362
+
363
+
364
+ //resize info widnow
365
+ OneMap.map.infoWindow.resize(300, 200);
366
+ OneMap.map.infoWindow.hide();
367
+ OneMap.onOneMapExtentChange(OverlayThemeOnExtentChnage)
368
+ try{
369
+
370
+ //set graphic onclick event
371
+ dojo.connect(themeGraphicsLayer, "onClick", function(evt)
372
+ {//debugger
373
+ console.log(mashup, 'mashup');
374
+ mashup.GetDataForCallout(evt.graphic,"",function(results)
375
+ {//debugger
376
+ var formattedResults=formatResultsBus(results);//mashup.formatResults(results);
377
+ OneMap.map.infoWindow.setContent(formattedResults);
378
+ $('a.busstop_code').bind('click', queryBusCode);
379
+
380
+ OneMap.map.infoWindow.show(evt.screenPoint,OneMap.map.getInfoWindowAnchor(evt.screenPoint));
381
+ });
382
+ })
383
+ }
384
+ catch (err)
385
+ {}
386
+ }
387
+
388
+ function OverlayThemeOnExtentChnage(extent)
389
+ {//debugger
390
+
391
+ mashup.extent = extent.xmin + "," + extent.ymin + "," + extent.xmax + "," + extent.ymax;
392
+
393
+ mashup.GetMashupData(overlayData)
394
+ }
395
+
396
+ function initOneMap() {
397
+ //alert(typeof OneMap);
398
+ // dojo.query('#div_onemap_infowindow').forEach(function(node){
399
+ // console.log(node,'dojo_node');
400
+ // dijit.byNode(node).destroyRecursive(true);
401
+ // });
402
+
403
+ // hack to remove orphaned dojo widget: div_onemap_infowindow
404
+ var ids = ["div_onemap_infowindow"];
405
+ dijit.registry.forEach(function(w){
406
+ if(dojo.indexOf(ids,1)){ // 1 will be yourid it will get destroy
407
+ w.destroyRecursive();
408
+ }
409
+ });
410
+
411
+ addressSearch();
412
+ }
413
+
414
+ function queryBusCode() {
415
+ code = $(this).attr('id');
416
+ var busstop_link = $(this);
417
+ var url = "http://www.onemap.sg/API/services.svc/busstop/" + code;
418
+ $.ajax({
419
+ url: url,
420
+ dataType: "jsonp",
421
+ success: function(data) {
422
+ console.log(data,'bus_services');
423
+
424
+ var services = $.map(data['Services'], function(n,i){
425
+ return "<a class='busstop_route'>" + n.SERVICES + "</a>";
426
+ });
427
+
428
+ var services_div = "<div id='" + code + "'>" + services.join("|") + "</div>"
429
+ busstop_link.replaceWith(services_div);
430
+
431
+ $('a.busstop_route').bind('click', queryBusRoute);
432
+
433
+ var layerList = OneMap.map.layerIds;
434
+ for (var i=0; i<layerList.length; i++) {
435
+ var layer = layerList[i]
436
+ if (layer.indexOf("route_layer") == 0) OneMap.map.removeLayer(OneMap.map.getLayer(layer));
437
+ }
438
+ }
439
+ });
440
+ }
441
+
442
+ function repaintPolyLine(layer) {
443
+ //create a random color for the symbol
444
+ var r = Math.floor(Math.random() * 250);
445
+ var g = Math.floor(Math.random() * 100);
446
+ var b = Math.floor(Math.random() * 100);
447
+
448
+ var symbol = new esri.symbol.SimpleLineSymbol().setWidth(4).setColor(new dojo.Color([r,g,b]));
449
+
450
+ var feature_layer = layer.getLayers()[0];
451
+ var features = feature_layer.graphics;
452
+ for (var i=0, il=features.length; i<il; i++) {
453
+ //set symbol
454
+ features[i].setSymbol(symbol);
455
+ }
456
+
457
+ dojo.connect(feature_layer,"onMouseOver",onMouseOverPolyLine);
458
+ }
459
+
460
+ function onMouseOverPolyLine(layer) {
461
+ // alert('test!');
462
+ }
463
+
464
+ var testKML;
465
+
466
+ function queryBusRoute() {
467
+ code = $(this).attr('id');
468
+ service = $(this).text();
469
+ var busstop_link = $(this);
470
+ var strKMLURL = "http://www.publictransport.sg/kml/busroutes/";
471
+
472
+ for(var i=0;i<2;i++) {
473
+ var layer_id = 'route_layer_' + service + '_' + (i+1);
474
+ if ($.inArray(layer_id, OneMap.map.layerIds) > -1) continue;
475
+
476
+ var kmlUrl = strKMLURL + service + "-" + (i+1) + ".kml";
477
+ var kml = new esri.layers.KMLLayer(kmlUrl,{
478
+ // http://www.onemap.sg/api/help/JSCoordConvertor.aspx
479
+ outSR: new esri.SpatialReference({ wkid: 3414 })
480
+ });
481
+
482
+ testKML = kml;
483
+
484
+ // if (kml.loaded) {
485
+ // repaintPolyLine();
486
+ // }
487
+ // else {
488
+ dojo.connect(kml,"onLoad",repaintPolyLine);
489
+
490
+ kml.id = layer_id;
491
+ OneMap.map.addLayer(kml);
492
+ }
493
+ }
494
+
495
+ function formatResultsBus(resultObject) {
496
+ //debugger;
497
+ var nameVal = ""
498
+ nameVal = nameVal + "<br/>"
499
+ // to add Name on top
500
+ for (var key in resultObject[0]) {
501
+ switch (key) {
502
+ case 'NAME':
503
+ if (resultObject[0]["NAME"] != "") {
504
+ nameVal += "<strong>" + resultObject[0][key] + "</strong>" + "<br/>"
505
+ break;
506
+ }
507
+ else { break; }
508
+ case 'BUS_STOP_CODE':
509
+ if (resultObject[0][key] != "") {
510
+ var code = resultObject[0][key];
511
+ nameVal += "<br/><a id='" + code +"' class='busstop_code'>Services</a>" + "<br/>"
512
+ break;
513
+ }
514
+ else { break; }
515
+ }
516
+ }
517
+ for (var key in resultObject[0]) {
518
+ switch (key) {
519
+ case 'NAME':
520
+ if (resultObject[0]["NAME"] != "") {
521
+ break;
522
+ }
523
+ else { break; }
524
+ case "PHOTOURL":
525
+ if (resultObject[0]["PHOTOURL"] != "") {
526
+ break;
527
+ }
528
+ else { break; }
529
+ case "ICON_NAME":
530
+ if (resultObject[0]["ICON_NAME"] != "") {
531
+ break;
532
+ }
533
+ else { break; }
534
+ case "XY":
535
+ if (resultObject[0]["XY"] != "") {
536
+ break;
537
+ }
538
+ else { break; }
539
+ case 'DESCRIPTION':
540
+ if (resultObject[0]["DESCRIPTION"] != "") {
541
+ nameVal += resultObject[0]["DESCRIPTION"] + " "
542
+ break;
543
+ }
544
+ else { break; }
545
+ case "HYPERLINK":
546
+ if (resultObject[0]["HYPERLINK"] != "") {
547
+ nameVal += "<br/><a href=" + resultObject[0]["HYPERLINK"] + " target='_blank'>More Info</a>" + "<br/>"
548
+ break;
549
+ }
550
+ else { break; }
551
+ case "ADDRESSSTREETNAME":
552
+ if (resultObject[0]["ADDRESSSTREETNAME"] != "") {
553
+ nameVal += resultObject[0]["ADDRESSSTREETNAME"] + " "
554
+ break;
555
+ }
556
+ else { break; }
557
+ case "ADDRESSFLOORNUMBER":
558
+ if (resultObject[0]["ADDRESSFLOORNUMBER"] != "") {
559
+ nameVal += resultObject[0]["ADDRESSFLOORNUMBER"] + " "
560
+ break;
561
+ }
562
+ else { break; }
563
+ case "ADDRESSBLOCKHOUSENUMBER":
564
+ if (resultObject[0]["ADDRESSBLOCKHOUSENUMBER"] != "") {
565
+ nameVal += resultObject[0]["ADDRESSBLOCKHOUSENUMBER"] + " "
566
+ break;
567
+ }
568
+ else { break; }
569
+ case "ADDRESSBUILDINGNAME":
570
+ if (resultObject[0]["ADDRESSBUILDINGNAME"] != "") {
571
+ nameVal += resultObject[0]["ADDRESSBUILDINGNAME"] + " "
572
+ break;
573
+ }
574
+ else { break; }
575
+ case "ADDRESSFLOORNUMBER":
576
+ if (resultObject[0]["ADDRESSFLOORNUMBER"] != "") {
577
+ nameVal += resultObject[0]["ADDRESSFLOORNUMBER"] + " "
578
+ break;
579
+ }
580
+ else { break; }
581
+ case "ADDRESSUNITNUMBER":
582
+ if (resultObject[0]["ADDRESSUNITNUMBER"] != "") {
583
+ nameVal += resultObject[0]["ADDRESSUNITNUMBER"] + " "
584
+ break;
585
+ }
586
+ else { break; }
587
+ case "ADDRESSPOSTALCODE":
588
+ if (resultObject[0]["ADDRESSPOSTALCODE"] != "") {
589
+ nameVal += resultObject[0]["ADDRESSPOSTALCODE"] + " "
590
+ break;
591
+ }
592
+ else { break; }
593
+ case "SYMBOLCOLOR":
594
+ if (resultObject[0]["SYMBOLCOLOR"] != "") {
595
+ break;
596
+ }
597
+ else { break; }
598
+ case "MAPTIP":
599
+ if (resultObject[0]["MAPTIP"] != "") {
600
+ break;
601
+ }
602
+ else { break; }
603
+ case "OBJECTID":
604
+ if (resultObject[0]["OBJECTID"] != "") {
605
+ break;
606
+ }
607
+ else { break; }
608
+ default:
609
+ nameVal += resultObject[0][key] + "<br/>"
610
+ }
611
+ }
612
+ // for photo to be on bottom
613
+ for (var key in resultObject[0]) {
614
+ switch (key) {
615
+ case "PHOTOURL":
616
+ if (resultObject[0]["PHOTOURL"] != "") {
617
+ nameVal += "<img src=" + resultObject[0]["PHOTOURL"] + "></img>" + "<br/>"
618
+ break;
619
+ }
620
+ else { break; }
621
+ }
622
+ }
623
+ return nameVal
624
+
625
+ }
626
+
627
+ function addressSearch() {
628
+ var basicSearch = new BasicSearch;
629
+ basicSearch.searchVal = address;
630
+ basicSearch.returnGeom = 1;
631
+ basicSearch.GetSearchResults(function(resultData) {
632
+ var results = resultData.results;
633
+ console.log(results,'om_BasicSearch');
634
+ omResults = results;
635
+ var row = false;
636
+ if (results=='No results') {
637
+ // return false
638
+ }
639
+ else {
640
+ row = results[0];
641
+ // alert(row);
642
+ // return row;
643
+ }
644
+ createMap(row);
645
+ });
646
+ // dojo.addOnLoad(createMap);
647
+ }
648
+
649
+ function createMap(center) {
650
+ var levelNumber=8;
651
+ var centerPoint="28968.103,33560.969"
652
+
653
+ if (center != false) {
654
+ centerPoint = center.X + ',' + center.Y;
655
+ }
656
+
657
+ OneMap = new GetOneMap('div_onemap','SM',{level:levelNumber,center:centerPoint});
658
+ dojo.addOnLoad(OverlayTheme);
659
+
660
+ if (center != false) {
661
+ OneMap.showLocation(parseFloat(center.X),parseFloat(center.Y));
662
+ }
663
+
664
+ dojo.require("esri.layers.KMLLayer");
665
+ }