@supermapgis/vue-iclient-leaflet 11.2.0

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 (719) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +31 -0
  3. package/dist/iclient-leaflet-vue.css +24471 -0
  4. package/dist/iclient-leaflet-vue.js +190317 -0
  5. package/dist/iclient-leaflet-vue.min.css +9 -0
  6. package/dist/iclient-leaflet-vue.min.js +517 -0
  7. package/dist/index.js +15 -0
  8. package/lib/_assets/iconfont/icon-sm-components.css +245 -0
  9. package/lib/_assets/iconfont/icon-sm-components.eot +0 -0
  10. package/lib/_assets/iconfont/icon-sm-components.svg +197 -0
  11. package/lib/_assets/iconfont/icon-sm-components.ttf +0 -0
  12. package/lib/_assets/iconfont/icon-sm-components.woff +0 -0
  13. package/lib/_assets/iconfont/icon-sm-components.woff2 +0 -0
  14. package/lib/_lang/en.js +446 -0
  15. package/lib/_lang/index.js +385 -0
  16. package/lib/_lang/zh.js +445 -0
  17. package/lib/_mixin/AntdRender.js +686 -0
  18. package/lib/_mixin/Card.js +197 -0
  19. package/lib/_mixin/GridLayer.js +153 -0
  20. package/lib/_mixin/Layer.js +140 -0
  21. package/lib/_mixin/Options.js +114 -0
  22. package/lib/_mixin/Popper.js +134 -0
  23. package/lib/_mixin/Theme.js +441 -0
  24. package/lib/_mixin/ThirdService.js +243 -0
  25. package/lib/_mixin/TileLayer.js +138 -0
  26. package/lib/_mixin/Timer.js +230 -0
  27. package/lib/_mixin/VmUpdater.js +204 -0
  28. package/lib/_mixin/WebMapBase.js +3467 -0
  29. package/lib/_mixin/map-events.js +200 -0
  30. package/lib/_mixin/map-getter.js +341 -0
  31. package/lib/_types/AddressMatchParameter.js +118 -0
  32. package/lib/_types/GeoJSONParamter.js +113 -0
  33. package/lib/_types/RestDataParameter.js +141 -0
  34. package/lib/_types/RestMapParameter.js +141 -0
  35. package/lib/_types/RestParameter.js +121 -0
  36. package/lib/_types/event/BaseTypes.js +124 -0
  37. package/lib/_types/event/Event.js +442 -0
  38. package/lib/_types/event/Events.js +484 -0
  39. package/lib/_types/event/Pixel.js +295 -0
  40. package/lib/_types/event/Util.js +305 -0
  41. package/lib/_types/iPortalDataParameter.js +121 -0
  42. package/lib/_types/iServerBaseParameter.js +111 -0
  43. package/lib/_types/iServerDataParameter.js +154 -0
  44. package/lib/_types/iServerMapParameter.js +154 -0
  45. package/lib/_types/index.js +231 -0
  46. package/lib/_types/map-event.js +163 -0
  47. package/lib/_utils/EchartsDataService.js +843 -0
  48. package/lib/_utils/RestService.js +7096 -0
  49. package/lib/_utils/WebMapService.js +1607 -0
  50. package/lib/_utils/epsg-define.js +181 -0
  51. package/lib/_utils/get-features.js +232 -0
  52. package/lib/_utils/global-event.js +134 -0
  53. package/lib/_utils/iPortalDataService.js +7459 -0
  54. package/lib/_utils/iServerRestService.js +7603 -0
  55. package/lib/_utils/props-binder.js +129 -0
  56. package/lib/_utils/statistics.js +147 -0
  57. package/lib/_utils/style/color/colorPalette.js +192 -0
  58. package/lib/_utils/style/color/serialColors.js +352 -0
  59. package/lib/_utils/style/common/common.css +1 -0
  60. package/lib/_utils/style/mixins/config.css +0 -0
  61. package/lib/_utils/style/mixins/mixins.css +0 -0
  62. package/lib/_utils/style/theme/antd.css +25242 -0
  63. package/lib/_utils/style/theme/antdVar.css +0 -0
  64. package/lib/_utils/style/theme/chart.js +7477 -0
  65. package/lib/_utils/style/theme/set-theme.js +200 -0
  66. package/lib/_utils/style/theme/theme.css +0 -0
  67. package/lib/_utils/style/theme/theme.json +356 -0
  68. package/lib/_utils/util.js +484 -0
  69. package/lib/_utils/vue-types/index.js +396 -0
  70. package/lib/_utils/vue-types/utils.js +318 -0
  71. package/lib/avatar/index.js +656 -0
  72. package/lib/avatar/style/avatar.css +1 -0
  73. package/lib/avatar/style/css.js +9 -0
  74. package/lib/avatar/style/index.css +2135 -0
  75. package/lib/avatar/style/index.js +9 -0
  76. package/lib/border/index.js +642 -0
  77. package/lib/border/style/border.css +1 -0
  78. package/lib/border/style/css.js +7 -0
  79. package/lib/border/style/index.js +7 -0
  80. package/lib/breadcrumb/index.js +813 -0
  81. package/lib/breadcrumb/style/breadcrumb.css +1 -0
  82. package/lib/breadcrumb/style/css.js +9 -0
  83. package/lib/breadcrumb/style/index.css +2102 -0
  84. package/lib/breadcrumb/style/index.js +9 -0
  85. package/lib/button/index.js +758 -0
  86. package/lib/button/style/button.css +1 -0
  87. package/lib/button/style/css.js +9 -0
  88. package/lib/button/style/index.css +3571 -0
  89. package/lib/button/style/index.js +9 -0
  90. package/lib/card/index.js +824 -0
  91. package/lib/card/style/card.css +1 -0
  92. package/lib/card/style/css.js +9 -0
  93. package/lib/card/style/index.css +2379 -0
  94. package/lib/card/style/index.js +9 -0
  95. package/lib/chart/index.js +9471 -0
  96. package/lib/chart/style/chart.css +1 -0
  97. package/lib/chart/style/css.js +11 -0
  98. package/lib/chart/style/index.js +11 -0
  99. package/lib/checkbox/index.js +756 -0
  100. package/lib/checkbox/style/checkbox.css +1 -0
  101. package/lib/checkbox/style/css.js +9 -0
  102. package/lib/checkbox/style/index.css +2286 -0
  103. package/lib/checkbox/style/index.js +9 -0
  104. package/lib/collapse/index.js +446 -0
  105. package/lib/collapse/style/collapse.css +1 -0
  106. package/lib/collapse/style/css.js +9 -0
  107. package/lib/collapse/style/index.css +2187 -0
  108. package/lib/collapse/style/index.js +9 -0
  109. package/lib/collapse-card/index.js +588 -0
  110. package/lib/collapse-card/style/collapse-card.css +1 -0
  111. package/lib/collapse-card/style/css.js +7 -0
  112. package/lib/collapse-card/style/index.js +7 -0
  113. package/lib/color-picker/index.js +521 -0
  114. package/lib/color-picker/style/color-picker.css +1 -0
  115. package/lib/color-picker/style/css.js +7 -0
  116. package/lib/color-picker/style/index.js +7 -0
  117. package/lib/date-picker/index.js +680 -0
  118. package/lib/date-picker/style/css.js +9 -0
  119. package/lib/date-picker/style/date-picker.css +1 -0
  120. package/lib/date-picker/style/index.css +4236 -0
  121. package/lib/date-picker/style/index.js +9 -0
  122. package/lib/dropdown/index.js +347 -0
  123. package/lib/dropdown/style/css.js +9 -0
  124. package/lib/dropdown/style/dropdown.css +1 -0
  125. package/lib/dropdown/style/index.css +2344 -0
  126. package/lib/dropdown/style/index.js +9 -0
  127. package/lib/empty/index.js +643 -0
  128. package/lib/empty/style/css.js +9 -0
  129. package/lib/empty/style/empty.css +1 -0
  130. package/lib/empty/style/index.css +2095 -0
  131. package/lib/empty/style/index.js +9 -0
  132. package/lib/icon/index.js +681 -0
  133. package/lib/icon/style/css.js +9 -0
  134. package/lib/icon/style/icon.css +1 -0
  135. package/lib/icon/style/index.css +2058 -0
  136. package/lib/icon/style/index.js +9 -0
  137. package/lib/identify/index.js +1081 -0
  138. package/lib/identify/style/css.js +9 -0
  139. package/lib/identify/style/identify.css +1 -0
  140. package/lib/identify/style/index.js +9 -0
  141. package/lib/iframe/index.js +344 -0
  142. package/lib/iframe/style/css.js +7 -0
  143. package/lib/iframe/style/iframe.css +1 -0
  144. package/lib/iframe/style/index.js +7 -0
  145. package/lib/image/index.js +446 -0
  146. package/lib/image/style/css.js +7 -0
  147. package/lib/image/style/image.css +1 -0
  148. package/lib/image/style/index.js +7 -0
  149. package/lib/index.js +1040 -0
  150. package/lib/indicator/index.js +996 -0
  151. package/lib/indicator/style/countTo.css +1 -0
  152. package/lib/indicator/style/css.js +7 -0
  153. package/lib/indicator/style/index.js +7 -0
  154. package/lib/indicator/style/indicator.css +1 -0
  155. package/lib/init.js +207 -0
  156. package/lib/input/index.js +1151 -0
  157. package/lib/input/style/css.js +9 -0
  158. package/lib/input/style/index.css +2549 -0
  159. package/lib/input/style/index.js +9 -0
  160. package/lib/input/style/input.css +1 -0
  161. package/lib/input-number/index.js +739 -0
  162. package/lib/input-number/style/css.js +9 -0
  163. package/lib/input-number/style/index.css +2360 -0
  164. package/lib/input-number/style/index.js +9 -0
  165. package/lib/input-number/style/input-number.css +1 -0
  166. package/lib/layout/index.js +700 -0
  167. package/lib/layout/style/css.js +9 -0
  168. package/lib/layout/style/index.css +2185 -0
  169. package/lib/layout/style/index.js +9 -0
  170. package/lib/layout/style/layout.css +0 -0
  171. package/lib/liquid-fill/index.js +983 -0
  172. package/lib/liquid-fill/style/css.js +7 -0
  173. package/lib/liquid-fill/style/index.js +7 -0
  174. package/lib/liquid-fill/style/liquid-fill.css +1 -0
  175. package/lib/marker/index.js +649 -0
  176. package/lib/marker/style/css.js +0 -0
  177. package/lib/marker/style/index.js +0 -0
  178. package/lib/menu/index.js +858 -0
  179. package/lib/menu/style/css.js +9 -0
  180. package/lib/menu/style/index.css +2777 -0
  181. package/lib/menu/style/index.js +9 -0
  182. package/lib/menu/style/menu.css +0 -0
  183. package/lib/message/index.js +174 -0
  184. package/lib/message/style/css.js +9 -0
  185. package/lib/message/style/index.css +2143 -0
  186. package/lib/message/style/index.js +9 -0
  187. package/lib/message/style/message.css +1 -0
  188. package/lib/modal/index.js +742 -0
  189. package/lib/modal/style/css.js +9 -0
  190. package/lib/modal/style/index.css +2289 -0
  191. package/lib/modal/style/index.js +9 -0
  192. package/lib/modal/style/modal.css +1 -0
  193. package/lib/nav/style/css.js +9 -0
  194. package/lib/nav/style/index.js +9 -0
  195. package/lib/nav/style/nav.css +1 -0
  196. package/lib/notification/index.js +151 -0
  197. package/lib/notification/style/css.js +9 -0
  198. package/lib/notification/style/index.css +2285 -0
  199. package/lib/notification/style/index.js +9 -0
  200. package/lib/notification/style/notification.css +1 -0
  201. package/lib/pagination/index.js +352 -0
  202. package/lib/pagination/style/css.js +9 -0
  203. package/lib/pagination/style/index.css +2529 -0
  204. package/lib/pagination/style/index.js +9 -0
  205. package/lib/pagination/style/pagination.css +1 -0
  206. package/lib/popup/index.js +800 -0
  207. package/lib/popup/style/css.js +0 -0
  208. package/lib/popup/style/index.js +0 -0
  209. package/lib/progress/index.js +1146 -0
  210. package/lib/progress/style/css.js +9 -0
  211. package/lib/progress/style/index.css +2226 -0
  212. package/lib/progress/style/index.js +9 -0
  213. package/lib/progress/style/progress.css +1 -0
  214. package/lib/radio/index.js +852 -0
  215. package/lib/radio/style/css.js +9 -0
  216. package/lib/radio/style/index.css +2381 -0
  217. package/lib/radio/style/index.js +9 -0
  218. package/lib/radio/style/radio.css +1 -0
  219. package/lib/select/index.js +836 -0
  220. package/lib/select/style/css.js +9 -0
  221. package/lib/select/style/index.css +2655 -0
  222. package/lib/select/style/index.js +9 -0
  223. package/lib/select/style/select.css +1 -0
  224. package/lib/slider/index.js +347 -0
  225. package/lib/slider/style/css.js +9 -0
  226. package/lib/slider/style/index.css +2233 -0
  227. package/lib/slider/style/index.js +9 -0
  228. package/lib/slider/style/slider.css +1 -0
  229. package/lib/slideshow/index.js +913 -0
  230. package/lib/slideshow/style/css.js +9 -0
  231. package/lib/slideshow/style/index.js +9 -0
  232. package/lib/slideshow/style/slideshow.css +1 -0
  233. package/lib/spin/index.js +357 -0
  234. package/lib/spin/style/css.js +9 -0
  235. package/lib/spin/style/index.css +2268 -0
  236. package/lib/spin/style/index.js +9 -0
  237. package/lib/spin/style/spin.css +1 -0
  238. package/lib/steps/index.js +748 -0
  239. package/lib/steps/style/css.js +9 -0
  240. package/lib/steps/style/index.css +2724 -0
  241. package/lib/steps/style/index.js +9 -0
  242. package/lib/steps/style/steps.css +1 -0
  243. package/lib/style.js +7 -0
  244. package/lib/switch/index.js +654 -0
  245. package/lib/switch/style/css.js +9 -0
  246. package/lib/switch/style/index.css +2241 -0
  247. package/lib/switch/style/index.js +9 -0
  248. package/lib/switch/style/switch.css +1 -0
  249. package/lib/table/index.js +810 -0
  250. package/lib/table/style/css.js +9 -0
  251. package/lib/table/style/index.css +2909 -0
  252. package/lib/table/style/index.js +9 -0
  253. package/lib/table/style/table.css +1 -0
  254. package/lib/table-popup/index.js +438 -0
  255. package/lib/table-popup/style/css.js +9 -0
  256. package/lib/table-popup/style/index.js +9 -0
  257. package/lib/table-popup/style/table-popup.css +1 -0
  258. package/lib/tabs/index.js +743 -0
  259. package/lib/tabs/style/css.js +9 -0
  260. package/lib/tabs/style/index.css +2692 -0
  261. package/lib/tabs/style/index.js +9 -0
  262. package/lib/tabs/style/tabs.css +1 -0
  263. package/lib/text/index.js +434 -0
  264. package/lib/text/style/css.js +7 -0
  265. package/lib/text/style/index.js +7 -0
  266. package/lib/text/style/text.css +1 -0
  267. package/lib/tile-layer/index.js +535 -0
  268. package/lib/tile-layer/style/css.js +0 -0
  269. package/lib/tile-layer/style/index.js +0 -0
  270. package/lib/time-line/index.js +654 -0
  271. package/lib/time-line/style/css.js +7 -0
  272. package/lib/time-line/style/index.js +7 -0
  273. package/lib/time-line/style/time-line.css +1 -0
  274. package/lib/time-picker/index.js +669 -0
  275. package/lib/time-picker/style/css.js +9 -0
  276. package/lib/time-picker/style/index.css +2418 -0
  277. package/lib/time-picker/style/index.js +9 -0
  278. package/lib/time-picker/style/time-picker.css +1 -0
  279. package/lib/time-range/index.js +526 -0
  280. package/lib/time-range/style/css.js +7 -0
  281. package/lib/time-range/style/index.js +7 -0
  282. package/lib/time-range/style/time-range.css +1 -0
  283. package/lib/time-slider/index.js +1169 -0
  284. package/lib/time-slider/style/css.js +7 -0
  285. package/lib/time-slider/style/index.js +7 -0
  286. package/lib/time-slider/style/time-slider.css +1 -0
  287. package/lib/time-text/index.js +393 -0
  288. package/lib/time-text/style/css.js +7 -0
  289. package/lib/time-text/style/index.js +7 -0
  290. package/lib/time-text/style/time-text.css +1 -0
  291. package/lib/tooltip/index.js +635 -0
  292. package/lib/tooltip/style/css.js +9 -0
  293. package/lib/tooltip/style/index.css +2231 -0
  294. package/lib/tooltip/style/index.js +9 -0
  295. package/lib/tooltip/style/tooltip.css +0 -0
  296. package/lib/transfer/index.js +636 -0
  297. package/lib/transfer/style/css.js +9 -0
  298. package/lib/transfer/style/index.css +2302 -0
  299. package/lib/transfer/style/index.js +9 -0
  300. package/lib/transfer/style/transfer.css +1 -0
  301. package/lib/tree/index.js +857 -0
  302. package/lib/tree/style/css.js +9 -0
  303. package/lib/tree/style/index.css +2644 -0
  304. package/lib/tree/style/index.js +9 -0
  305. package/lib/tree/style/tree.css +1 -0
  306. package/lib/tree-select/index.js +765 -0
  307. package/lib/tree-select/style/css.js +9 -0
  308. package/lib/tree-select/style/index.css +2508 -0
  309. package/lib/tree-select/style/index.js +9 -0
  310. package/lib/tree-select/style/tree-select.css +1 -0
  311. package/lib/video-player/index.js +1472 -0
  312. package/lib/video-player/style/css.js +11 -0
  313. package/lib/video-player/style/index.js +11 -0
  314. package/lib/video-player/style/video-player.css +1 -0
  315. package/lib/web-map/index.js +2241 -0
  316. package/lib/web-map/style/css.js +15 -0
  317. package/lib/web-map/style/index.js +15 -0
  318. package/lib/web-map/style/web-map.css +1 -0
  319. package/package.json +97 -0
  320. package/src/common/_assets/iconfont/icon-sm-components.css +245 -0
  321. package/src/common/_assets/iconfont/icon-sm-components.eot +0 -0
  322. package/src/common/_assets/iconfont/icon-sm-components.svg +197 -0
  323. package/src/common/_assets/iconfont/icon-sm-components.ttf +0 -0
  324. package/src/common/_assets/iconfont/icon-sm-components.woff +0 -0
  325. package/src/common/_assets/iconfont/icon-sm-components.woff2 +0 -0
  326. package/src/common/_lang/en.js +355 -0
  327. package/src/common/_lang/index.js +177 -0
  328. package/src/common/_lang/zh.js +342 -0
  329. package/src/common/_mixin/AntdRender.ts +114 -0
  330. package/src/common/_mixin/Card.ts +22 -0
  331. package/src/common/_mixin/Theme.ts +222 -0
  332. package/src/common/_mixin/ThirdService.ts +58 -0
  333. package/src/common/_mixin/Timer.ts +58 -0
  334. package/src/common/_mixin/VmUpdater.ts +46 -0
  335. package/src/common/_types/AddressMatchParameter.js +9 -0
  336. package/src/common/_types/GeoJSONParamter.ts +17 -0
  337. package/src/common/_types/RestDataParameter.js +8 -0
  338. package/src/common/_types/RestMapParameter.js +8 -0
  339. package/src/common/_types/RestParameter.js +12 -0
  340. package/src/common/_types/event/BaseTypes.js +24 -0
  341. package/src/common/_types/event/Event.js +315 -0
  342. package/src/common/_types/event/Events.js +353 -0
  343. package/src/common/_types/event/Pixel.js +177 -0
  344. package/src/common/_types/event/Util.js +173 -0
  345. package/src/common/_types/iPortalDataParameter.js +12 -0
  346. package/src/common/_types/iServerBaseParameter.ts +28 -0
  347. package/src/common/_types/iServerDataParameter.ts +13 -0
  348. package/src/common/_types/iServerMapParameter.ts +13 -0
  349. package/src/common/_utils/EchartsDataService.js +527 -0
  350. package/src/common/_utils/RestService.js +130 -0
  351. package/src/common/_utils/WebMapService.ts +1292 -0
  352. package/src/common/_utils/epsg-define.js +55 -0
  353. package/src/common/_utils/get-features.js +92 -0
  354. package/src/common/_utils/global-event.js +6 -0
  355. package/src/common/_utils/iPortalDataService.js +444 -0
  356. package/src/common/_utils/iServerRestService.js +487 -0
  357. package/src/common/_utils/statistics.js +36 -0
  358. package/src/common/_utils/style/color/colorPalette.ts +63 -0
  359. package/src/common/_utils/style/color/serialColors.ts +207 -0
  360. package/src/common/_utils/style/common/common.scss +39 -0
  361. package/src/common/_utils/style/mixins/config.scss +4 -0
  362. package/src/common/_utils/style/mixins/mixins.scss +48 -0
  363. package/src/common/_utils/style/theme/antd.less +2 -0
  364. package/src/common/_utils/style/theme/antdVar.less +371 -0
  365. package/src/common/_utils/style/theme/chart.js +548 -0
  366. package/src/common/_utils/style/theme/set-theme.ts +43 -0
  367. package/src/common/_utils/style/theme/theme.json +356 -0
  368. package/src/common/_utils/style/theme/theme.scss +495 -0
  369. package/src/common/_utils/util.js +251 -0
  370. package/src/common/_utils/vue-types/index.js +267 -0
  371. package/src/common/_utils/vue-types/utils.js +194 -0
  372. package/src/common/avatar/Avatar.vue +41 -0
  373. package/src/common/avatar/index.js +9 -0
  374. package/src/common/avatar/style/avatar.scss +8 -0
  375. package/src/common/avatar/style/index.js +4 -0
  376. package/src/common/avatar/style/index.less +3 -0
  377. package/src/common/border/Border.vue +121 -0
  378. package/src/common/border/assets/border.config.json +67 -0
  379. package/src/common/border/assets/image/border1.png +0 -0
  380. package/src/common/border/assets/image/border10.png +0 -0
  381. package/src/common/border/assets/image/border11.png +0 -0
  382. package/src/common/border/assets/image/border12.png +0 -0
  383. package/src/common/border/assets/image/border13.png +0 -0
  384. package/src/common/border/assets/image/border2.png +0 -0
  385. package/src/common/border/assets/image/border3.png +0 -0
  386. package/src/common/border/assets/image/border4.png +0 -0
  387. package/src/common/border/assets/image/border5.png +0 -0
  388. package/src/common/border/assets/image/border6.png +0 -0
  389. package/src/common/border/assets/image/border7.png +0 -0
  390. package/src/common/border/assets/image/border8.png +0 -0
  391. package/src/common/border/assets/image/border9.png +0 -0
  392. package/src/common/border/index.js +9 -0
  393. package/src/common/border/style/border.scss +19 -0
  394. package/src/common/border/style/index.js +4 -0
  395. package/src/common/breadcrumb/Breadcrumb.vue +21 -0
  396. package/src/common/breadcrumb/BreadcrumbItem.vue +21 -0
  397. package/src/common/breadcrumb/BreadcrumbSeparator.vue +19 -0
  398. package/src/common/breadcrumb/index.js +13 -0
  399. package/src/common/breadcrumb/style/breadcrumb.scss +21 -0
  400. package/src/common/breadcrumb/style/index.js +4 -0
  401. package/src/common/breadcrumb/style/index.less +3 -0
  402. package/src/common/button/Button.vue +34 -0
  403. package/src/common/button/Group.vue +31 -0
  404. package/src/common/button/index.js +11 -0
  405. package/src/common/button/style/button.scss +91 -0
  406. package/src/common/button/style/index.js +4 -0
  407. package/src/common/button/style/index.less +3 -0
  408. package/src/common/button/style/mixin.scss +56 -0
  409. package/src/common/card/Card.vue +32 -0
  410. package/src/common/card/Grid.vue +20 -0
  411. package/src/common/card/Meta.vue +20 -0
  412. package/src/common/card/index.js +13 -0
  413. package/src/common/card/style/card.scss +43 -0
  414. package/src/common/card/style/index.js +4 -0
  415. package/src/common/card/style/index.less +3 -0
  416. package/src/common/chart/ChartMixin.vue +1572 -0
  417. package/src/common/chart/index.js +9 -0
  418. package/src/common/chart/style/chart.scss +10 -0
  419. package/src/common/chart/style/index.js +5 -0
  420. package/src/common/checkbox/Checkbox.vue +37 -0
  421. package/src/common/checkbox/Group.vue +36 -0
  422. package/src/common/checkbox/index.js +11 -0
  423. package/src/common/checkbox/style/checkbox.scss +40 -0
  424. package/src/common/checkbox/style/index.js +4 -0
  425. package/src/common/checkbox/style/index.less +3 -0
  426. package/src/common/collapse/Collapse.vue +32 -0
  427. package/src/common/collapse/Panel.vue +26 -0
  428. package/src/common/collapse/index.js +11 -0
  429. package/src/common/collapse/style/collapse.scss +10 -0
  430. package/src/common/collapse/style/index.js +4 -0
  431. package/src/common/collapse/style/index.less +3 -0
  432. package/src/common/collapse-card/CollapseCard.vue +150 -0
  433. package/src/common/collapse-card/index.js +9 -0
  434. package/src/common/collapse-card/style/collapse-card.scss +176 -0
  435. package/src/common/collapse-card/style/index.js +4 -0
  436. package/src/common/color-picker/ColorPicker.vue +106 -0
  437. package/src/common/color-picker/index.js +9 -0
  438. package/src/common/color-picker/style/color-picker.scss +37 -0
  439. package/src/common/color-picker/style/index.js +4 -0
  440. package/src/common/config-provider/ConfigProvider.vue +31 -0
  441. package/src/common/config-provider/index.js +9 -0
  442. package/src/common/date-picker/BaseMixin.vue +23 -0
  443. package/src/common/date-picker/DatePicker.vue +20 -0
  444. package/src/common/date-picker/MonthPicker.vue +20 -0
  445. package/src/common/date-picker/RangePicker.vue +20 -0
  446. package/src/common/date-picker/WeekPicker.vue +20 -0
  447. package/src/common/date-picker/index.js +15 -0
  448. package/src/common/date-picker/style/date-picker.scss +290 -0
  449. package/src/common/date-picker/style/index.js +4 -0
  450. package/src/common/date-picker/style/index.less +3 -0
  451. package/src/common/date-picker/style/mixin.scss +75 -0
  452. package/src/common/dropdown/Dropdown.vue +31 -0
  453. package/src/common/dropdown/index.js +9 -0
  454. package/src/common/dropdown/style/dropdown.scss +22 -0
  455. package/src/common/dropdown/style/index.js +4 -0
  456. package/src/common/dropdown/style/index.less +3 -0
  457. package/src/common/empty/Empty.vue +26 -0
  458. package/src/common/empty/RenderEmpty.ts +50 -0
  459. package/src/common/empty/assets/image/empty.png +0 -0
  460. package/src/common/empty/index.js +9 -0
  461. package/src/common/empty/style/empty.scss +31 -0
  462. package/src/common/empty/style/index.js +4 -0
  463. package/src/common/empty/style/index.less +3 -0
  464. package/src/common/icon/Icon.vue +66 -0
  465. package/src/common/icon/index.js +9 -0
  466. package/src/common/icon/style/icon.scss +12 -0
  467. package/src/common/icon/style/index.js +4 -0
  468. package/src/common/icon/style/index.less +3 -0
  469. package/src/common/iframe/Iframe.vue +17 -0
  470. package/src/common/iframe/index.js +9 -0
  471. package/src/common/iframe/style/iframe.scss +7 -0
  472. package/src/common/iframe/style/index.js +4 -0
  473. package/src/common/image/Image.vue +83 -0
  474. package/src/common/image/index.js +9 -0
  475. package/src/common/image/style/image.scss +33 -0
  476. package/src/common/image/style/index.js +4 -0
  477. package/src/common/indicator/CountTo.vue +92 -0
  478. package/src/common/indicator/Indicator.vue +308 -0
  479. package/src/common/indicator/index.js +11 -0
  480. package/src/common/indicator/style/countTo.scss +7 -0
  481. package/src/common/indicator/style/index.js +4 -0
  482. package/src/common/indicator/style/indicator.scss +47 -0
  483. package/src/common/input/BaseMixin.vue +24 -0
  484. package/src/common/input/Group.vue +31 -0
  485. package/src/common/input/Input.vue +41 -0
  486. package/src/common/input/Password.vue +41 -0
  487. package/src/common/input/Search.vue +40 -0
  488. package/src/common/input/TextArea.vue +25 -0
  489. package/src/common/input/index.js +17 -0
  490. package/src/common/input/style/index.js +4 -0
  491. package/src/common/input/style/index.less +3 -0
  492. package/src/common/input/style/input.scss +72 -0
  493. package/src/common/input/style/mixin.scss +42 -0
  494. package/src/common/input-number/InputNumber.vue +44 -0
  495. package/src/common/input-number/index.js +9 -0
  496. package/src/common/input-number/style/index.js +4 -0
  497. package/src/common/input-number/style/index.less +3 -0
  498. package/src/common/input-number/style/input-number.scss +43 -0
  499. package/src/common/layout/Content.vue +25 -0
  500. package/src/common/layout/Footer.vue +25 -0
  501. package/src/common/layout/Header.vue +25 -0
  502. package/src/common/layout/Layout.vue +25 -0
  503. package/src/common/layout/Sider.vue +33 -0
  504. package/src/common/layout/index.js +17 -0
  505. package/src/common/layout/style/index.js +4 -0
  506. package/src/common/layout/style/index.less +3 -0
  507. package/src/common/layout/style/layout.scss +5 -0
  508. package/src/common/liquid-fill/LiquidFill.vue +209 -0
  509. package/src/common/liquid-fill/index.js +9 -0
  510. package/src/common/liquid-fill/style/index.js +4 -0
  511. package/src/common/liquid-fill/style/liquid-fill.scss +6 -0
  512. package/src/common/menu/Menu.vue +31 -0
  513. package/src/common/menu/MenuItem.vue +37 -0
  514. package/src/common/menu/SubMenu.vue +51 -0
  515. package/src/common/menu/index.js +13 -0
  516. package/src/common/menu/style/index.js +4 -0
  517. package/src/common/menu/style/index.less +3 -0
  518. package/src/common/menu/style/menu.scss +0 -0
  519. package/src/common/message/Message.js +12 -0
  520. package/src/common/message/index.js +3 -0
  521. package/src/common/message/style/index.js +4 -0
  522. package/src/common/message/style/index.less +3 -0
  523. package/src/common/message/style/message.scss +16 -0
  524. package/src/common/modal/Modal.vue +64 -0
  525. package/src/common/modal/index.js +9 -0
  526. package/src/common/modal/main.ts +49 -0
  527. package/src/common/modal/style/index.js +4 -0
  528. package/src/common/modal/style/index.less +3 -0
  529. package/src/common/modal/style/modal.scss +23 -0
  530. package/src/common/nav/Nav.vue +158 -0
  531. package/src/common/nav/assets/image/background_image.png +0 -0
  532. package/src/common/nav/assets/image/item_active.png +0 -0
  533. package/src/common/nav/index.js +9 -0
  534. package/src/common/nav/style/index.js +5 -0
  535. package/src/common/nav/style/nav.scss +55 -0
  536. package/src/common/notification/Notification.js +10 -0
  537. package/src/common/notification/index.js +3 -0
  538. package/src/common/notification/style/index.js +4 -0
  539. package/src/common/notification/style/index.less +3 -0
  540. package/src/common/notification/style/notification.scss +30 -0
  541. package/src/common/pagination/Pagination.vue +32 -0
  542. package/src/common/pagination/index.js +9 -0
  543. package/src/common/pagination/style/index.js +4 -0
  544. package/src/common/pagination/style/index.less +3 -0
  545. package/src/common/pagination/style/pagination.scss +131 -0
  546. package/src/common/progress/Progress.vue +98 -0
  547. package/src/common/progress/index.js +9 -0
  548. package/src/common/progress/style/index.js +4 -0
  549. package/src/common/progress/style/index.less +3 -0
  550. package/src/common/progress/style/progress.scss +43 -0
  551. package/src/common/radio/Button.vue +18 -0
  552. package/src/common/radio/Group.vue +48 -0
  553. package/src/common/radio/Radio.vue +36 -0
  554. package/src/common/radio/index.js +13 -0
  555. package/src/common/radio/style/index.js +4 -0
  556. package/src/common/radio/style/index.less +3 -0
  557. package/src/common/radio/style/radio.scss +127 -0
  558. package/src/common/select/OptGroup.vue +20 -0
  559. package/src/common/select/Option.vue +22 -0
  560. package/src/common/select/Select.vue +49 -0
  561. package/src/common/select/index.js +13 -0
  562. package/src/common/select/style/index.js +4 -0
  563. package/src/common/select/style/index.less +3 -0
  564. package/src/common/select/style/select.scss +140 -0
  565. package/src/common/slider/Slider.vue +31 -0
  566. package/src/common/slider/index.js +9 -0
  567. package/src/common/slider/style/index.js +4 -0
  568. package/src/common/slider/style/index.less +3 -0
  569. package/src/common/slider/style/slider.scss +8 -0
  570. package/src/common/slideshow/Slideshow.vue +354 -0
  571. package/src/common/slideshow/SlideshowItem.vue +17 -0
  572. package/src/common/slideshow/Swiper.js +29 -0
  573. package/src/common/slideshow/index.js +11 -0
  574. package/src/common/slideshow/style/index.js +5 -0
  575. package/src/common/slideshow/style/slideshow.scss +48 -0
  576. package/src/common/spin/Spin.vue +17 -0
  577. package/src/common/spin/index.js +9 -0
  578. package/src/common/spin/main.ts +13 -0
  579. package/src/common/spin/style/index.js +4 -0
  580. package/src/common/spin/style/index.less +3 -0
  581. package/src/common/spin/style/spin.scss +14 -0
  582. package/src/common/steps/Step.vue +33 -0
  583. package/src/common/steps/Steps.vue +39 -0
  584. package/src/common/steps/index.js +11 -0
  585. package/src/common/steps/style/index.js +4 -0
  586. package/src/common/steps/style/index.less +3 -0
  587. package/src/common/steps/style/mixin.scss +67 -0
  588. package/src/common/steps/style/steps.scss +98 -0
  589. package/src/common/switch/Switch.vue +41 -0
  590. package/src/common/switch/index.js +9 -0
  591. package/src/common/switch/style/index.js +4 -0
  592. package/src/common/switch/style/index.less +3 -0
  593. package/src/common/switch/style/switch.scss +20 -0
  594. package/src/common/table/Column.vue +18 -0
  595. package/src/common/table/ColumnGroup.vue +19 -0
  596. package/src/common/table/Table.vue +18 -0
  597. package/src/common/table/index.js +13 -0
  598. package/src/common/table/style/index.js +4 -0
  599. package/src/common/table/style/index.less +3 -0
  600. package/src/common/table/style/table.scss +138 -0
  601. package/src/common/table-popup/TablePopup.vue +73 -0
  602. package/src/common/table-popup/index.js +9 -0
  603. package/src/common/table-popup/style/index.js +5 -0
  604. package/src/common/table-popup/style/table-popup.scss +52 -0
  605. package/src/common/tabs/TabPane.vue +26 -0
  606. package/src/common/tabs/Tabs.vue +41 -0
  607. package/src/common/tabs/index.js +11 -0
  608. package/src/common/tabs/style/index.js +4 -0
  609. package/src/common/tabs/style/index.less +3 -0
  610. package/src/common/tabs/style/tabs.scss +95 -0
  611. package/src/common/text/Text.vue +69 -0
  612. package/src/common/text/index.js +9 -0
  613. package/src/common/text/style/index.js +4 -0
  614. package/src/common/text/style/text.scss +23 -0
  615. package/src/common/time-line/TimeLine.vue +260 -0
  616. package/src/common/time-line/index.js +9 -0
  617. package/src/common/time-line/style/index.js +4 -0
  618. package/src/common/time-line/style/time-line.scss +10 -0
  619. package/src/common/time-picker/TimePicker.vue +47 -0
  620. package/src/common/time-picker/index.js +9 -0
  621. package/src/common/time-picker/style/index.js +4 -0
  622. package/src/common/time-picker/style/index.less +3 -0
  623. package/src/common/time-picker/style/time-picker.scss +69 -0
  624. package/src/common/time-range/TimeRange.vue +122 -0
  625. package/src/common/time-range/index.js +9 -0
  626. package/src/common/time-range/style/index.js +4 -0
  627. package/src/common/time-range/style/time-range.scss +10 -0
  628. package/src/common/time-slider/TimeSlider.vue +591 -0
  629. package/src/common/time-slider/index.js +9 -0
  630. package/src/common/time-slider/style/index.js +4 -0
  631. package/src/common/time-slider/style/mixin.scss +36 -0
  632. package/src/common/time-slider/style/time-slider.scss +147 -0
  633. package/src/common/time-text/TimeText.vue +51 -0
  634. package/src/common/time-text/index.js +9 -0
  635. package/src/common/time-text/style/index.js +4 -0
  636. package/src/common/time-text/style/time-text.scss +14 -0
  637. package/src/common/tooltip/Tooltip.vue +21 -0
  638. package/src/common/tooltip/index.js +9 -0
  639. package/src/common/tooltip/style/index.js +4 -0
  640. package/src/common/tooltip/style/index.less +3 -0
  641. package/src/common/tooltip/style/tooltip.scss +5 -0
  642. package/src/common/transfer/Transfer.vue +19 -0
  643. package/src/common/transfer/index.js +9 -0
  644. package/src/common/transfer/style/index.js +4 -0
  645. package/src/common/transfer/style/index.less +3 -0
  646. package/src/common/transfer/style/transfer.scss +52 -0
  647. package/src/common/tree/DirectoryTree.vue +32 -0
  648. package/src/common/tree/Tree.vue +32 -0
  649. package/src/common/tree/TreeNode.vue +49 -0
  650. package/src/common/tree/index.js +13 -0
  651. package/src/common/tree/style/index.js +4 -0
  652. package/src/common/tree/style/index.less +3 -0
  653. package/src/common/tree/style/tree.scss +16 -0
  654. package/src/common/tree-select/TreeSelect.vue +43 -0
  655. package/src/common/tree-select/TreeSelectNode.vue +49 -0
  656. package/src/common/tree-select/index.js +11 -0
  657. package/src/common/tree-select/style/index.js +4 -0
  658. package/src/common/tree-select/style/index.less +3 -0
  659. package/src/common/tree-select/style/tree-select.scss +38 -0
  660. package/src/common/video-player/VideoPlayer.vue +423 -0
  661. package/src/common/video-player/index.js +9 -0
  662. package/src/common/video-player/style/index.js +5 -0
  663. package/src/common/video-player/style/video-player.scss +266 -0
  664. package/src/common/web-map/WebMapBase.ts +1178 -0
  665. package/src/common/web-map/config/MunicipalCenter.json +1 -0
  666. package/src/common/web-map/config/ProvinceCenter.json +1 -0
  667. package/src/image.d.ts +7 -0
  668. package/src/init.js +38 -0
  669. package/src/leaflet/README.md +31 -0
  670. package/src/leaflet/_mixin/GridLayer.js +33 -0
  671. package/src/leaflet/_mixin/Layer.js +26 -0
  672. package/src/leaflet/_mixin/Options.js +10 -0
  673. package/src/leaflet/_mixin/Popper.js +25 -0
  674. package/src/leaflet/_mixin/TileLayer.js +18 -0
  675. package/src/leaflet/_mixin/map-getter.ts +122 -0
  676. package/src/leaflet/_types/index.js +17 -0
  677. package/src/leaflet/_types/map-event.js +34 -0
  678. package/src/leaflet/_utils/props-binder.js +23 -0
  679. package/src/leaflet/chart/Chart.vue +25 -0
  680. package/src/leaflet/chart/ChartViewModel.js +44 -0
  681. package/src/leaflet/chart/index.js +9 -0
  682. package/src/leaflet/components.ts +206 -0
  683. package/src/leaflet/css.js +3 -0
  684. package/src/leaflet/entrys.json +106 -0
  685. package/src/leaflet/identify/Identify.vue +233 -0
  686. package/src/leaflet/identify/IdentifyViewModel.js +114 -0
  687. package/src/leaflet/identify/index.js +9 -0
  688. package/src/leaflet/identify/style/identify.scss +30 -0
  689. package/src/leaflet/identify/style/index.js +4 -0
  690. package/src/leaflet/index.ts +5 -0
  691. package/src/leaflet/leaflet-wrapper.js +125 -0
  692. package/src/leaflet/marker/Marker.vue +46 -0
  693. package/src/leaflet/marker/MarkerViewModel.js +31 -0
  694. package/src/leaflet/marker/index.js +9 -0
  695. package/src/leaflet/package.json +97 -0
  696. package/src/leaflet/popup/Popup.vue +93 -0
  697. package/src/leaflet/popup/PopupViewModel.js +75 -0
  698. package/src/leaflet/popup/index.js +9 -0
  699. package/src/leaflet/style.js +3 -0
  700. package/src/leaflet/style.scss +52 -0
  701. package/src/leaflet/web-map/WebMap.vue +213 -0
  702. package/src/leaflet/web-map/WebMapViewModel.ts +1102 -0
  703. package/src/leaflet/web-map/_mixin/map-events.ts +65 -0
  704. package/src/leaflet/web-map/index.js +9 -0
  705. package/src/leaflet/web-map/layer/tile/TileLayer.vue +88 -0
  706. package/src/leaflet/web-map/layer/tile/TileLayerViewModel.js +66 -0
  707. package/src/leaflet/web-map/layer/tile/index.js +9 -0
  708. package/src/leaflet/web-map/style/index.js +7 -0
  709. package/src/leaflet/web-map/style/web-map.scss +32 -0
  710. package/src/sfc.d.ts +50 -0
  711. package/src/vue-i18n.d.ts +26 -0
  712. package/src/vue-options.d.ts +18 -0
  713. package/static/libs/echarts-layer/EchartsLayer.js +390 -0
  714. package/static/libs/geostats/geostats.js +1227 -0
  715. package/static/libs/iclient-common/iclient-common.js +2 -0
  716. package/static/libs/iclient-leaflet/iclient-leaflet.min.css +8 -0
  717. package/static/libs/iclient-leaflet/iclient-leaflet.min.js +1741 -0
  718. package/static/libs/json-sql/jsonsql.js +125 -0
  719. package/tsconfig.json +43 -0
@@ -0,0 +1,1227 @@
1
+ /**
2
+ * geostats() is a tiny and standalone javascript library for classification
3
+ * Project page - https://github.com/simogeo/geostats
4
+ * Copyright (c) 2011 Simon Georget, http://www.empreinte-urbaine.eu
5
+ * Licensed under the MIT license
6
+ */
7
+
8
+
9
+ (function (definition) {
10
+ // This file will function properly as a <script> tag, or a module
11
+ // using CommonJS and NodeJS or RequireJS module formats.
12
+
13
+ // CommonJS
14
+ if (typeof exports === "object") {
15
+ module.exports = definition();
16
+
17
+ // RequireJS
18
+ } else if (typeof define === "function" && define.amd) {
19
+ define(definition);
20
+
21
+ // <script>
22
+ } else {
23
+ geostats = definition();
24
+ }
25
+
26
+ })(function () {
27
+
28
+ var isInt = function(n) {
29
+ return typeof n === 'number' && parseFloat(n) == parseInt(n, 10) && !isNaN(n);
30
+ } // 6 characters
31
+
32
+ var _t = function(str) {
33
+ return str;
34
+ };
35
+
36
+ //taking from http://stackoverflow.com/questions/18082/validate-decimal-numbers-in-javascript-isnumeric
37
+ var isNumber = function(n) {
38
+ return !isNaN(parseFloat(n)) && isFinite(n);
39
+ }
40
+
41
+
42
+
43
+ //indexOf polyfill
44
+ // from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
45
+ if (!Array.prototype.indexOf) {
46
+ Array.prototype.indexOf = function (searchElement, fromIndex) {
47
+ if ( this === undefined || this === null ) {
48
+ throw new TypeError( '"this" is null or not defined' );
49
+ }
50
+
51
+ var length = this.length >>> 0; // Hack to convert object.length to a UInt32
52
+
53
+ fromIndex = +fromIndex || 0;
54
+
55
+ if (Math.abs(fromIndex) === Infinity) {
56
+ fromIndex = 0;
57
+ }
58
+
59
+ if (fromIndex < 0) {
60
+ fromIndex += length;
61
+ if (fromIndex < 0) {
62
+ fromIndex = 0;
63
+ }
64
+ }
65
+
66
+ for (;fromIndex < length; fromIndex++) {
67
+ if (this[fromIndex] === searchElement) {
68
+ return fromIndex;
69
+ }
70
+ }
71
+
72
+ return -1;
73
+ };
74
+ }
75
+
76
+ var geostats = function(a) {
77
+
78
+ this.objectID = '';
79
+ this.separator = ' - ';
80
+ this.legendSeparator = this.separator;
81
+ this.method = '';
82
+ this.precision = 0;
83
+ this.precisionflag = 'auto';
84
+ this.roundlength = 2; // Number of decimals, round values
85
+ this.is_uniqueValues = false;
86
+ this.debug = false;
87
+ this.silent = false;
88
+
89
+ this.bounds = Array();
90
+ this.ranges = Array();
91
+ this.inner_ranges = null;
92
+ this.colors = Array();
93
+ this.counter = Array();
94
+
95
+ // statistics information
96
+ this.stat_sorted = null;
97
+ this.stat_mean = null;
98
+ this.stat_median = null;
99
+ this.stat_sum = null;
100
+ this.stat_max = null;
101
+ this.stat_min = null;
102
+ this.stat_pop = null;
103
+ this.stat_variance = null;
104
+ this.stat_stddev = null;
105
+ this.stat_cov = null;
106
+
107
+
108
+ /**
109
+ * logging method
110
+ */
111
+ this.log = function(msg, force) {
112
+
113
+ if(this.debug == true || force != null)
114
+ console.log(this.objectID + "(object id) :: " + msg);
115
+
116
+ };
117
+
118
+ /**
119
+ * Set bounds
120
+ */
121
+ this.setBounds = function(a) {
122
+
123
+ this.log('Setting bounds (' + a.length + ') : ' + a.join());
124
+
125
+ this.bounds = Array() // init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
126
+
127
+ this.bounds = a;
128
+ //this.bounds = this.decimalFormat(a);
129
+
130
+ };
131
+
132
+ /**
133
+ * Set a new serie
134
+ */
135
+ this.setSerie = function(a) {
136
+
137
+ this.log('Setting serie (' + a.length + ') : ' + a.join());
138
+
139
+ this.serie = Array() // init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
140
+ this.serie = a;
141
+
142
+ //reset statistics after changing serie
143
+ this.resetStatistics();
144
+
145
+ this.setPrecision();
146
+
147
+ };
148
+
149
+ /**
150
+ * Set colors
151
+ */
152
+ this.setColors = function(colors) {
153
+
154
+ this.log('Setting color ramp (' + colors.length + ') : ' + colors.join());
155
+
156
+ this.colors = colors;
157
+
158
+ };
159
+
160
+ /**
161
+ * Get feature count
162
+ * With bounds array(0, 0.75, 1.5, 2.25, 3);
163
+ * should populate this.counter with 5 keys
164
+ * and increment counters for each key
165
+ */
166
+ this.doCount = function() {
167
+
168
+ if (this._nodata())
169
+ return;
170
+
171
+
172
+ var tmp = this.sorted();
173
+
174
+ this.counter = new Array();
175
+
176
+ // we init counter with 0 value
177
+ for(i = 0; i < this.bounds.length -1; i++) {
178
+ this.counter[i]= 0;
179
+ }
180
+
181
+ for(j=0; j < tmp.length; j++) {
182
+
183
+ // get current class for value to increment the counter
184
+ var cclass = this.getClass(tmp[j]);
185
+ this.counter[cclass]++;
186
+
187
+ }
188
+
189
+ };
190
+
191
+ /**
192
+ * Set decimal precision according to user input
193
+ * or automatcally determined according
194
+ * to the given serie.
195
+ */
196
+ this.setPrecision = function(decimals) {
197
+
198
+ // only when called from user
199
+ if(typeof decimals !== "undefined") {
200
+ this.precisionflag = 'manual';
201
+ this.precision = decimals;
202
+ }
203
+
204
+ // we calculate the maximal decimal length on given serie
205
+ if(this.precisionflag == 'auto') {
206
+
207
+ for (var i = 0; i < this.serie.length; i++) {
208
+
209
+ // check if the given value is a number and a float
210
+ if (!isNaN((this.serie[i]+"")) && (this.serie[i]+"").toString().indexOf('.') != -1) {
211
+ var precision = (this.serie[i] + "").split(".")[1].length;
212
+ } else {
213
+ var precision = 0;
214
+ }
215
+
216
+ if(precision > this.precision) {
217
+ this.precision = precision;
218
+ }
219
+
220
+ }
221
+
222
+ }
223
+ if(this.precision > 20) {
224
+ // prevent "Uncaught RangeError: toFixed() digits argument must be between 0 and 20" bug. See https://github.com/simogeo/geostats/issues/34
225
+ this.log('this.precision value (' + this.precision + ') is greater than max value. Automatic set-up to 20 to prevent "Uncaught RangeError: toFixed()" when calling decimalFormat() method.');
226
+ this.precision = 20;
227
+ }
228
+
229
+ this.log('Calling setPrecision(). Mode : ' + this.precisionflag + ' - Decimals : '+ this.precision);
230
+
231
+ this.serie = this.decimalFormat(this.serie);
232
+
233
+ };
234
+
235
+ /**
236
+ * Format array numbers regarding to precision
237
+ */
238
+ this.decimalFormat = function(a) {
239
+
240
+ var b = new Array();
241
+
242
+ for (var i = 0; i < a.length; i++) {
243
+ // check if the given value is a number
244
+ if (isNumber(a[i])) {
245
+ b[i] = parseFloat(parseFloat(a[i]).toFixed(this.precision));
246
+ } else {
247
+ b[i] = a[i];
248
+ }
249
+ }
250
+
251
+ return b;
252
+ }
253
+
254
+ /**
255
+ * Transform a bounds array to a range array the following array : array(0,
256
+ * 0.75, 1.5, 2.25, 3); becomes : array('0-0.75', '0.75-1.5', '1.5-2.25',
257
+ * '2.25-3');
258
+ */
259
+ this.setRanges = function() {
260
+
261
+ this.ranges = Array(); // init empty array to prevent bug when calling classification after another with less items (sample getQuantile(6) and getQuantile(4))
262
+
263
+ for (i = 0; i < (this.bounds.length - 1); i++) {
264
+ this.ranges[i] = this.bounds[i] + this.separator + this.bounds[i + 1];
265
+ }
266
+ };
267
+
268
+ /** return min value */
269
+ this.min = function() {
270
+
271
+ if (this._nodata())
272
+ return;
273
+
274
+ this.stat_min = this.serie[0];
275
+
276
+ for (i = 0; i < this.pop(); i++) {
277
+ if (this.serie[i] < this.stat_min) {
278
+ this.stat_min = this.serie[i];
279
+ }
280
+ }
281
+
282
+ return this.stat_min;
283
+ };
284
+
285
+ /** return max value */
286
+ this.max = function() {
287
+
288
+ if (this._nodata())
289
+ return;
290
+
291
+ this.stat_max = this.serie[0];
292
+ for (i = 0; i < this.pop(); i++) {
293
+ if (this.serie[i] > this.stat_max) {
294
+ this.stat_max = this.serie[i];
295
+ }
296
+ }
297
+
298
+ return this.stat_max;
299
+ };
300
+
301
+ /** return sum value */
302
+ this.sum = function() {
303
+
304
+ if (this._nodata())
305
+ return;
306
+
307
+ if (this.stat_sum == null) {
308
+
309
+ this.stat_sum = 0;
310
+ for (i = 0; i < this.pop(); i++) {
311
+ this.stat_sum += parseFloat(this.serie[i]);
312
+ }
313
+
314
+ }
315
+
316
+ return this.stat_sum;
317
+ };
318
+
319
+ /** return population number */
320
+ this.pop = function() {
321
+
322
+ if (this._nodata())
323
+ return;
324
+
325
+ if (this.stat_pop == null) {
326
+
327
+ this.stat_pop = this.serie.length;
328
+
329
+ }
330
+
331
+ return this.stat_pop;
332
+ };
333
+
334
+ /** return mean value */
335
+ this.mean = function() {
336
+
337
+ if (this._nodata())
338
+ return;
339
+
340
+ if (this.stat_mean == null) {
341
+
342
+ this.stat_mean = parseFloat(this.sum() / this.pop());
343
+
344
+ }
345
+
346
+ return this.stat_mean;
347
+ };
348
+
349
+ /** return median value */
350
+ this.median = function() {
351
+
352
+ if (this._nodata())
353
+ return;
354
+
355
+ if (this.stat_median == null) {
356
+
357
+ this.stat_median = 0;
358
+ var tmp = this.sorted();
359
+
360
+ // serie pop is odd
361
+ if (tmp.length % 2) {
362
+ this.stat_median = parseFloat(tmp[(Math.ceil(tmp.length / 2) - 1)]);
363
+
364
+ // serie pop is even
365
+ } else {
366
+ this.stat_median = ( parseFloat(tmp[((tmp.length / 2) - 1)]) + parseFloat(tmp[(tmp.length / 2)]) ) / 2;
367
+ }
368
+
369
+ }
370
+
371
+ return this.stat_median;
372
+ };
373
+
374
+ /** return variance value */
375
+ this.variance = function() {
376
+
377
+ round = (typeof round === "undefined") ? true : false;
378
+
379
+ if (this._nodata())
380
+ return;
381
+
382
+ if (this.stat_variance == null) {
383
+
384
+ var tmp = 0, serie_mean = this.mean();
385
+ for (var i = 0; i < this.pop(); i++) {
386
+ tmp += Math.pow( (this.serie[i] - serie_mean), 2 );
387
+ }
388
+
389
+ this.stat_variance = tmp / this.pop();
390
+
391
+ if(round == true) {
392
+ this.stat_variance = Math.round(this.stat_variance * Math.pow(10,this.roundlength) )/ Math.pow(10,this.roundlength);
393
+ }
394
+
395
+ }
396
+
397
+ return this.stat_variance;
398
+ };
399
+
400
+ /** return standard deviation value */
401
+ this.stddev = function(round) {
402
+
403
+ round = (typeof round === "undefined") ? true : false;
404
+
405
+ if (this._nodata())
406
+ return;
407
+
408
+ if (this.stat_stddev == null) {
409
+
410
+ this.stat_stddev = Math.sqrt(this.variance());
411
+
412
+ if(round == true) {
413
+ this.stat_stddev = Math.round(this.stat_stddev * Math.pow(10,this.roundlength) )/ Math.pow(10,this.roundlength);
414
+ }
415
+
416
+ }
417
+
418
+ return this.stat_stddev;
419
+ };
420
+
421
+ /** coefficient of variation - measure of dispersion */
422
+ this.cov = function(round) {
423
+
424
+ round = (typeof round === "undefined") ? true : false;
425
+
426
+ if (this._nodata())
427
+ return;
428
+
429
+ if (this.stat_cov == null) {
430
+
431
+ this.stat_cov = this.stddev() / this.mean();
432
+
433
+ if(round == true) {
434
+ this.stat_cov = Math.round(this.stat_cov * Math.pow(10,this.roundlength) )/ Math.pow(10,this.roundlength);
435
+ }
436
+
437
+ }
438
+
439
+ return this.stat_cov;
440
+ };
441
+
442
+ /** reset all attributes after setting a new serie */
443
+ this.resetStatistics = function() {
444
+ this.stat_sorted = null;
445
+ this.stat_mean = null;
446
+ this.stat_median = null;
447
+ this.stat_sum = null;
448
+ this.stat_max = null;
449
+ this.stat_min = null;
450
+ this.stat_pop = null;
451
+ this.stat_variance = null;
452
+ this.stat_stddev = null;
453
+ this.stat_cov = null;
454
+ }
455
+
456
+ /** data test */
457
+ this._nodata = function() {
458
+ if (this.serie.length == 0) {
459
+
460
+ if(this.silent) this.log("[silent mode] Error. You should first enter a serie!", true);
461
+ else throw new TypeError("Error. You should first enter a serie!");
462
+ return 1;
463
+ } else
464
+ return 0;
465
+
466
+ };
467
+
468
+ /** check if the serie contains negative value */
469
+ this._hasNegativeValue = function() {
470
+
471
+ for (i = 0; i < this.serie.length; i++) {
472
+ if(this.serie[i] < 0)
473
+ return true;
474
+ }
475
+
476
+ return false;
477
+ };
478
+
479
+ /** check if the serie contains zero value */
480
+ this._hasZeroValue = function() {
481
+
482
+ for (i = 0; i < this.serie.length; i++) {
483
+ if(parseFloat(this.serie[i]) === 0)
484
+ return true;
485
+ }
486
+
487
+ return false;
488
+ };
489
+
490
+ /** return sorted values (as array) */
491
+ this.sorted = function() {
492
+
493
+ if (this.stat_sorted == null) {
494
+
495
+ if(this.is_uniqueValues == false) {
496
+ this.stat_sorted = this.serie.sort(function(a, b) {
497
+ return a - b;
498
+ });
499
+ } else {
500
+ this.stat_sorted = this.serie.sort(function(a,b){
501
+ var nameA=a.toString().toLowerCase(), nameB=b.toString().toLowerCase();
502
+ if(nameA < nameB) return -1;
503
+ if(nameA > nameB) return 1;
504
+ return 0;
505
+ })
506
+ }
507
+ }
508
+
509
+ return this.stat_sorted;
510
+
511
+ };
512
+
513
+ /** return all info */
514
+ this.info = function() {
515
+
516
+ if (this._nodata())
517
+ return;
518
+
519
+ var content = '';
520
+ content += _t('Population') + ' : ' + this.pop() + ' - [' + _t('Min')
521
+ + ' : ' + this.min() + ' | ' + _t('Max') + ' : ' + this.max()
522
+ + ']' + "\n";
523
+ content += _t('Mean') + ' : ' + this.mean() + ' - ' + _t('Median') + ' : ' + this.median() + "\n";
524
+ content += _t('Variance') + ' : ' + this.variance() + ' - ' + _t('Standard deviation') + ' : ' + this.stddev()
525
+ + ' - ' + _t('Coefficient of variation') + ' : ' + this.cov() + "\n";
526
+
527
+ return content;
528
+ };
529
+
530
+ /**
531
+ * Set Manual classification Return an array with bounds : ie array(0,
532
+ * 0.75, 1.5, 2.25, 3);
533
+ * Set ranges and prepare data for displaying legend
534
+ *
535
+ */
536
+ this.setClassManually = function(array) {
537
+
538
+ if (this._nodata())
539
+ return;
540
+
541
+ if(array[0] !== this.min() || array[array.length-1] !== this.max()) {
542
+ if(this.silent) this.log("[silent mode] " + t('Given bounds may not be correct! please check your input.\nMin value : ' + this.min() + ' / Max value : ' + this.max()), true);
543
+ else throw new TypeError(_t('Given bounds may not be correct! please check your input.\nMin value : ' + this.min() + ' / Max value : ' + this.max()));
544
+ return;
545
+ }
546
+
547
+ this.setBounds(array);
548
+ this.setRanges();
549
+
550
+ // we specify the classification method
551
+ this.method = _t('manual classification') + ' (' + (array.length -1) + ' ' + _t('classes') + ')';
552
+
553
+ return this.bounds;
554
+ };
555
+
556
+ /**
557
+ * Equal intervals classification Return an array with bounds : ie array(0,
558
+ * 0.75, 1.5, 2.25, 3);
559
+ */
560
+ this.getClassEqInterval = function(nbClass, forceMin, forceMax) {
561
+
562
+ if (this._nodata())
563
+ return;
564
+
565
+ var tmpMin = (typeof forceMin === "undefined") ? this.min() : forceMin;
566
+ var tmpMax = (typeof forceMax === "undefined") ? this.max() : forceMax;
567
+
568
+ var a = Array();
569
+ var val = tmpMin;
570
+ var interval = (tmpMax - tmpMin) / nbClass;
571
+
572
+ for (i = 0; i <= nbClass; i++) {
573
+ a[i] = val;
574
+ val += interval;
575
+ }
576
+
577
+ //-> Fix last bound to Max of values
578
+ a[nbClass] = tmpMax;
579
+
580
+ this.setBounds(a);
581
+ this.setRanges();
582
+
583
+ // we specify the classification method
584
+ this.method = _t('eq. intervals') + ' (' + nbClass + ' ' + _t('classes') + ')';
585
+
586
+ return this.bounds;
587
+ };
588
+
589
+
590
+ this.getQuantiles = function(nbClass) {
591
+ var tmp = this.sorted();
592
+ var quantiles = [];
593
+
594
+ var step = this.pop() / nbClass;
595
+ for (var i = 1; i < nbClass; i++) {
596
+ var qidx = Math.round(i*step+0.49);
597
+ quantiles.push(tmp[qidx-1]); // zero-based
598
+ }
599
+
600
+ return quantiles;
601
+ };
602
+
603
+ /**
604
+ * Quantile classification Return an array with bounds : ie array(0, 0.75,
605
+ * 1.5, 2.25, 3);
606
+ */
607
+ this.getClassQuantile = function(nbClass) {
608
+
609
+ if (this._nodata())
610
+ return;
611
+
612
+ var tmp = this.sorted();
613
+ var bounds = this.getQuantiles(nbClass);
614
+ bounds.unshift(tmp[0]);
615
+
616
+ if (bounds[tmp.length - 1] !== tmp[tmp.length - 1])
617
+ bounds.push(tmp[tmp.length - 1]);
618
+
619
+ this.setBounds(bounds);
620
+ this.setRanges();
621
+
622
+ // we specify the classification method
623
+ this.method = _t('quantile') + ' (' + nbClass + ' ' + _t('classes') + ')';
624
+
625
+ return this.bounds;
626
+
627
+ };
628
+
629
+ /**
630
+ * Standard Deviation classification
631
+ * Return an array with bounds : ie array(0,
632
+ * 0.75, 1.5, 2.25, 3);
633
+ */
634
+ this.getClassStdDeviation = function(nbClass, matchBounds) {
635
+
636
+ if (this._nodata())
637
+ return;
638
+
639
+ var tmpMax = this.max();
640
+ var tmpMin = this.min();
641
+
642
+ var a = Array();
643
+
644
+ // number of classes is odd
645
+ if(nbClass % 2 == 1) {
646
+
647
+ // Euclidean division to get the inferior bound
648
+ var infBound = Math.floor(nbClass / 2);
649
+
650
+ var supBound = infBound + 1;
651
+
652
+ // we set the central bounds
653
+ a[infBound] = this.mean() - ( this.stddev() / 2);
654
+ a[supBound] = this.mean() + ( this.stddev() / 2);
655
+
656
+ // Values < to infBound, except first one
657
+ for (i = infBound - 1; i > 0; i--) {
658
+ var val = a[i+1] - this.stddev();
659
+ a[i] = val;
660
+ }
661
+
662
+ // Values > to supBound, except last one
663
+ for (i = supBound + 1; i < nbClass; i++) {
664
+ var val = a[i-1] + this.stddev();
665
+ a[i] = val;
666
+ }
667
+
668
+ // number of classes is even
669
+ } else {
670
+
671
+ var meanBound = nbClass / 2;
672
+
673
+ // we get the mean value
674
+ a[meanBound] = this.mean();
675
+
676
+ // Values < to the mean, except first one
677
+ for (i = meanBound - 1; i > 0; i--) {
678
+ var val = a[i+1] - this.stddev();
679
+ a[i] = val;
680
+ }
681
+
682
+ // Values > to the mean, except last one
683
+ for (i = meanBound + 1; i < nbClass; i++) {
684
+ var val = a[i-1] + this.stddev();
685
+ a[i] = val;
686
+ }
687
+ }
688
+
689
+
690
+ // we finally set the first value
691
+ // do we excatly match min value or not ?
692
+ a[0] = (typeof matchBounds === "undefined") ? a[1]-this.stddev() : this.min();
693
+
694
+ // we finally set the last value
695
+ // do we excatly match max value or not ?
696
+ a[nbClass] = (typeof matchBounds === "undefined") ? a[nbClass-1]+this.stddev() : this.max();
697
+
698
+ this.setBounds(a);
699
+ this.setRanges();
700
+
701
+ // we specify the classification method
702
+ this.method = _t('std deviation') + ' (' + nbClass + ' ' + _t('classes')+ ')';
703
+
704
+ return this.bounds;
705
+ };
706
+
707
+
708
+ /**
709
+ * Geometric Progression classification
710
+ * http://en.wikipedia.org/wiki/Geometric_progression
711
+ * Return an array with bounds : ie array(0,
712
+ * 0.75, 1.5, 2.25, 3);
713
+ */
714
+ this.getClassGeometricProgression = function(nbClass) {
715
+
716
+ if (this._nodata())
717
+ return;
718
+
719
+ if(this._hasNegativeValue() || this._hasZeroValue()) {
720
+ if(this.silent) this.log("[silent mode] " + _t('geometric progression can\'t be applied with a serie containing negative or zero values.'), true);
721
+ else throw new TypeError(_t('geometric progression can\'t be applied with a serie containing negative or zero values.'));
722
+ return;
723
+ }
724
+
725
+ var a = Array();
726
+ var tmpMin = this.min();
727
+ var tmpMax = this.max();
728
+
729
+ var logMax = Math.log(tmpMax) / Math.LN10; // max decimal logarithm (or base 10)
730
+ var logMin = Math.log(tmpMin) / Math.LN10;; // min decimal logarithm (or base 10)
731
+
732
+ var interval = (logMax - logMin) / nbClass;
733
+
734
+ // we compute log bounds
735
+ for (i = 0; i < nbClass; i++) {
736
+ if(i == 0) {
737
+ a[i] = logMin;
738
+ } else {
739
+ a[i] = a[i-1] + interval;
740
+ }
741
+ }
742
+
743
+ // we compute antilog
744
+ a = a.map(function(x) { return Math.pow(10, x); });
745
+
746
+ // and we finally add max value
747
+ a.push(this.max());
748
+
749
+ this.setBounds(a);
750
+ this.setRanges();
751
+
752
+ // we specify the classification method
753
+ this.method = _t('geometric progression') + ' (' + nbClass + ' ' + _t('classes') + ')';
754
+
755
+ return this.bounds;
756
+ };
757
+
758
+ /**
759
+ * Arithmetic Progression classification
760
+ * http://en.wikipedia.org/wiki/Arithmetic_progression
761
+ * Return an array with bounds : ie array(0,
762
+ * 0.75, 1.5, 2.25, 3);
763
+ */
764
+ this.getClassArithmeticProgression = function(nbClass) {
765
+
766
+ if (this._nodata())
767
+ return;
768
+
769
+ var denominator = 0;
770
+
771
+ // we compute the (french) "Raison"
772
+ for (i = 1; i <= nbClass; i++) {
773
+ denominator += i;
774
+ }
775
+
776
+ var a = Array();
777
+ var tmpMin = this.min();
778
+ var tmpMax = this.max();
779
+
780
+ var interval = (tmpMax - tmpMin) / denominator;
781
+
782
+ for (i = 0; i <= nbClass; i++) {
783
+ if(i == 0) {
784
+ a[i] = tmpMin;
785
+ } else {
786
+ a[i] = a[i-1] + (i * interval);
787
+ }
788
+ }
789
+
790
+ this.setBounds(a);
791
+ this.setRanges();
792
+
793
+ // we specify the classification method
794
+ this.method = _t('arithmetic progression') + ' (' + nbClass + ' ' + _t('classes') + ')';
795
+
796
+ return this.bounds;
797
+ };
798
+
799
+ /**
800
+ * Credits : Doug Curl (javascript) and Daniel J Lewis (python implementation)
801
+ * http://www.arcgis.com/home/item.html?id=0b633ff2f40d412995b8be377211c47b
802
+ * http://danieljlewis.org/2010/06/07/jenks-natural-breaks-algorithm-in-python/
803
+ */
804
+ this.getClassJenks = function(nbClass) {
805
+
806
+ if (this._nodata())
807
+ return;
808
+
809
+ dataList = this.sorted();
810
+
811
+ // now iterate through the datalist:
812
+ // determine mat1 and mat2
813
+ // really not sure how these 2 different arrays are set - the code for
814
+ // each seems the same!
815
+ // but the effect are 2 different arrays: mat1 and mat2
816
+ var mat1 = []
817
+ for ( var x = 0, xl = dataList.length + 1; x < xl; x++) {
818
+ var temp = []
819
+ for ( var j = 0, jl = nbClass + 1; j < jl; j++) {
820
+ temp.push(0)
821
+ }
822
+ mat1.push(temp)
823
+ }
824
+
825
+ var mat2 = []
826
+ for ( var i = 0, il = dataList.length + 1; i < il; i++) {
827
+ var temp2 = []
828
+ for ( var c = 0, cl = nbClass + 1; c < cl; c++) {
829
+ temp2.push(0)
830
+ }
831
+ mat2.push(temp2)
832
+ }
833
+
834
+ // absolutely no idea what this does - best I can tell, it sets the 1st
835
+ // group in the
836
+ // mat1 and mat2 arrays to 1 and 0 respectively
837
+ for ( var y = 1, yl = nbClass + 1; y < yl; y++) {
838
+ mat1[0][y] = 1
839
+ mat2[0][y] = 0
840
+ for ( var t = 1, tl = dataList.length + 1; t < tl; t++) {
841
+ mat2[t][y] = Infinity
842
+ }
843
+ var v = 0.0
844
+ }
845
+
846
+ // and this part - I'm a little clueless on - but it works
847
+ // pretty sure it iterates across the entire dataset and compares each
848
+ // value to
849
+ // one another to and adjust the indices until you meet the rules:
850
+ // minimum deviation
851
+ // within a class and maximum separation between classes
852
+ for ( var l = 2, ll = dataList.length + 1; l < ll; l++) {
853
+ var s1 = 0.0
854
+ var s2 = 0.0
855
+ var w = 0.0
856
+ for ( var m = 1, ml = l + 1; m < ml; m++) {
857
+ var i3 = l - m + 1
858
+ var val = parseFloat(dataList[i3 - 1])
859
+ s2 += val * val
860
+ s1 += val
861
+ w += 1
862
+ v = s2 - (s1 * s1) / w
863
+ var i4 = i3 - 1
864
+ if (i4 != 0) {
865
+ for ( var p = 2, pl = nbClass + 1; p < pl; p++) {
866
+ if (mat2[l][p] >= (v + mat2[i4][p - 1])) {
867
+ mat1[l][p] = i3
868
+ mat2[l][p] = v + mat2[i4][p - 1]
869
+ }
870
+ }
871
+ }
872
+ }
873
+ mat1[l][1] = 1
874
+ mat2[l][1] = v
875
+ }
876
+
877
+ var k = dataList.length
878
+ var kclass = []
879
+
880
+ // fill the kclass (classification) array with zeros:
881
+ for (i = 0; i <= nbClass; i++) {
882
+ kclass.push(0);
883
+ }
884
+
885
+ // this is the last number in the array:
886
+ kclass[nbClass] = parseFloat(dataList[dataList.length - 1])
887
+ // this is the first number - can set to zero, but want to set to lowest
888
+ // to use for legend:
889
+ kclass[0] = parseFloat(dataList[0])
890
+ var countNum = nbClass
891
+ while (countNum >= 2) {
892
+ var id = parseInt((mat1[k][countNum]) - 2)
893
+ kclass[countNum - 1] = dataList[id]
894
+ k = parseInt((mat1[k][countNum] - 1))
895
+ // spits out the rank and value of the break values:
896
+ // console.log("id="+id,"rank = " + String(mat1[k][countNum]),"val =
897
+ // " + String(dataList[id]))
898
+ // count down:
899
+ countNum -= 1
900
+ }
901
+ // check to see if the 0 and 1 in the array are the same - if so, set 0
902
+ // to 0:
903
+ if (kclass[0] == kclass[1]) {
904
+ kclass[0] = 0
905
+ }
906
+
907
+ this.setBounds(kclass);
908
+ this.setRanges();
909
+
910
+
911
+ this.method = _t('Jenks') + ' (' + nbClass + ' ' + _t('classes') + ')';
912
+
913
+ return this.bounds; //array of breaks
914
+ }
915
+
916
+
917
+ /**
918
+ * Quantile classification Return an array with bounds : ie array(0, 0.75,
919
+ * 1.5, 2.25, 3);
920
+ */
921
+ this.getClassUniqueValues = function() {
922
+
923
+ if (this._nodata())
924
+ return;
925
+
926
+ this.is_uniqueValues = true;
927
+
928
+ var tmp = this.sorted(); // display in alphabetical order
929
+
930
+ var a = Array();
931
+
932
+ for (i = 0; i < this.pop(); i++) {
933
+ if(a.indexOf(tmp[i]) === -1)
934
+ a.push(tmp[i]);
935
+ }
936
+
937
+ this.bounds = a;
938
+
939
+ // we specify the classification method
940
+ this.method = _t('unique values');
941
+
942
+ return a;
943
+
944
+ };
945
+
946
+
947
+ /**
948
+ * Return the class of a given value.
949
+ * For example value : 6
950
+ * and bounds array = (0, 4, 8, 12);
951
+ * Return 2
952
+ */
953
+ this.getClass = function(value) {
954
+
955
+ for(i = 0; i < this.bounds.length; i++) {
956
+
957
+
958
+ if(this.is_uniqueValues == true) {
959
+ if(value == this.bounds[i])
960
+ return i;
961
+ } else {
962
+ // parseFloat() is necessary
963
+ if(parseFloat(value) <= this.bounds[i + 1]) {
964
+ return i;
965
+ }
966
+ }
967
+ }
968
+
969
+ return _t("Unable to get value's class.");
970
+
971
+ };
972
+
973
+ /**
974
+ * Return the ranges array : array('0-0.75', '0.75-1.5', '1.5-2.25',
975
+ * '2.25-3');
976
+ */
977
+ this.getRanges = function() {
978
+
979
+ return this.ranges;
980
+
981
+ };
982
+
983
+ /**
984
+ * Returns the number/index of this.ranges that value falls into
985
+ */
986
+ this.getRangeNum = function(value) {
987
+
988
+ var bounds, i;
989
+
990
+ for (i = 0; i < this.ranges.length; i++) {
991
+ bounds = this.ranges[i].split(/ - /);
992
+ if (value <= parseFloat(bounds[1])) {
993
+ return i;
994
+ }
995
+ }
996
+ }
997
+
998
+ /*
999
+ * Compute inner ranges based on serie.
1000
+ * Produce discontinous ranges used for legend - return an array similar to :
1001
+ * array('0.00-0.74', '0.98-1.52', '1.78-2.25', '2.99-3.14');
1002
+ * If inner ranges already computed, return array values.
1003
+ */
1004
+ this.getInnerRanges = function() {
1005
+
1006
+ // if already computed, we return the result
1007
+ if(this.inner_ranges != null)
1008
+ return this.inner_ranges;
1009
+
1010
+
1011
+ var a = new Array();
1012
+ var tmp = this.sorted();
1013
+
1014
+ var cnt = 1; // bounds array counter
1015
+
1016
+ for (i = 0; i < tmp.length; i++) {
1017
+
1018
+ if(i == 0) var range_firstvalue = tmp[i]; // we init first range value
1019
+
1020
+ if(parseFloat(tmp[i]) > parseFloat(this.bounds[cnt])) {
1021
+
1022
+ a[cnt - 1] = '' + range_firstvalue + this.separator + tmp[i-1];
1023
+
1024
+ var range_firstvalue = tmp[i];
1025
+
1026
+ cnt++;
1027
+
1028
+ }
1029
+
1030
+ // we reach the last range, we finally complete manually
1031
+ // and return the array
1032
+ if(cnt == (this.bounds.length - 1)) {
1033
+ // we set the last value
1034
+ a[cnt - 1] = '' + range_firstvalue + this.separator + tmp[tmp.length-1];
1035
+
1036
+ this.inner_ranges = a;
1037
+ return this.inner_ranges;
1038
+ }
1039
+
1040
+
1041
+ }
1042
+
1043
+ };
1044
+
1045
+ this.getSortedlist = function() {
1046
+
1047
+ return this.sorted().join(', ');
1048
+
1049
+ };
1050
+
1051
+ /**
1052
+ * Return an html legend
1053
+ * colors : specify an array of color (hexadecimal values)
1054
+ * legend : specify a text input for the legend. By default, just displays 'legend'
1055
+ * counter : if not null, display counter value
1056
+ * callback : if not null, callback function applied on legend boundaries
1057
+ * mode : null, 'default', 'distinct', 'discontinuous' :
1058
+ * - if mode is null, will display legend as 'default mode'
1059
+ * - 'default' : displays ranges like in ranges array (continuous values), sample : 29.26 - 378.80 / 378.80 - 2762.25 / 2762.25 - 6884.84
1060
+ * - 'distinct' : Add + 1 according to decimal precision to distinguish classes (discrete values), sample : 29.26 - 378.80 / 378.81 - 2762.25 / 2762.26 - 6884.84
1061
+ * - 'discontinuous' : indicates the range of data actually falling in each class , sample : 29.26 - 225.43 / 852.12 - 2762.20 / 3001.25 - 6884.84 / not implemented yet
1062
+ * order : null, 'ASC', 'DESC'
1063
+ */
1064
+ this.getHtmlLegend = function(colors, legend, counter, callback, mode, order) {
1065
+
1066
+ var cnt= '';
1067
+ var elements = new Array();
1068
+
1069
+ this.doCount(); // we do count, even if not displayed
1070
+
1071
+ if(colors != null) {
1072
+ ccolors = colors;
1073
+ }
1074
+ else {
1075
+ ccolors = this.colors;
1076
+ }
1077
+
1078
+ if(legend != null) {
1079
+ lg = legend;
1080
+ }
1081
+ else {
1082
+ lg = 'Legend';
1083
+ }
1084
+
1085
+ if(counter != null) {
1086
+ getcounter = true;
1087
+ }
1088
+ else {
1089
+ getcounter = false;
1090
+ }
1091
+
1092
+ if(callback != null) {
1093
+ fn = callback;
1094
+ }
1095
+ else {
1096
+ fn = function(o) {return o;};
1097
+ }
1098
+ if(mode == null) {
1099
+ mode = 'default';
1100
+ }
1101
+ if(mode == 'discontinuous') {
1102
+ this.getInnerRanges();
1103
+ // check if some classes are not populated / equivalent of in_array function
1104
+ if(this.counter.indexOf(0) !== -1) {
1105
+ if(this.silent) this.log("[silent mode] " + _t("Geostats cannot apply 'discontinuous' mode to the getHtmlLegend() method because some classes are not populated.\nPlease switch to 'default' or 'distinct' modes. Exit!"), true);
1106
+ else throw new TypeError(_t("Geostats cannot apply 'discontinuous' mode to the getHtmlLegend() method because some classes are not populated.\nPlease switch to 'default' or 'distinct' modes. Exit!"));
1107
+ return;
1108
+ }
1109
+
1110
+ }
1111
+ if(order !== 'DESC') order = 'ASC';
1112
+
1113
+ if(ccolors.length < this.ranges.length) {
1114
+ if(this.silent) this.log("[silent mode] " + _t('The number of colors should fit the number of ranges. Exit!'), true);
1115
+ else throw new TypeError(_t('The number of colors should fit the number of ranges. Exit!'));
1116
+ return;
1117
+ }
1118
+
1119
+ if(this.is_uniqueValues == false) {
1120
+
1121
+ for (i = 0; i < (this.ranges.length); i++) {
1122
+ if(getcounter===true) {
1123
+ cnt = ' <span class="geostats-legend-counter">(' + this.counter[i] + ')</span>';
1124
+ }
1125
+ //console.log("Ranges : " + this.ranges[i]);
1126
+
1127
+ // default mode
1128
+ var tmp = this.ranges[i].split(this.separator);
1129
+
1130
+ var start_value = parseFloat(tmp[0]).toFixed(this.precision);
1131
+ var end_value = parseFloat(tmp[1]).toFixed(this.precision);
1132
+
1133
+
1134
+ // if mode == 'distinct' and we are not working on the first value
1135
+ if(mode == 'distinct' && i != 0) {
1136
+
1137
+ if(isInt(start_value)) {
1138
+ start_value = parseInt(start_value) + 1;
1139
+ // format to float if necessary
1140
+ if(this.precisionflag == 'manual' && this.precision != 0) start_value = parseFloat(start_value).toFixed(this.precision);
1141
+ } else {
1142
+
1143
+ start_value = parseFloat(start_value) + (1 / Math.pow(10,this.precision));
1144
+ // strangely the formula above return sometimes long decimal values,
1145
+ // the following instruction fix it
1146
+ start_value = parseFloat(start_value).toFixed(this.precision);
1147
+ }
1148
+ }
1149
+
1150
+ // if mode == 'discontinuous'
1151
+ if(mode == 'discontinuous') {
1152
+
1153
+ var tmp = this.inner_ranges[i].split(this.separator);
1154
+ // console.log("Ranges : " + this.inner_ranges[i]);
1155
+
1156
+ var start_value = parseFloat(tmp[0]).toFixed(this.precision);
1157
+ var end_value = parseFloat(tmp[1]).toFixed(this.precision);
1158
+
1159
+ }
1160
+
1161
+ // we apply callback function
1162
+ var el = fn(start_value) + this.legendSeparator + fn(end_value);
1163
+
1164
+ var block = '<div><div class="geostats-legend-block" style="background-color:' + ccolors[i] + '"></div> ' + el + cnt + '</div>';
1165
+ elements.push(block);
1166
+ }
1167
+
1168
+ } else {
1169
+
1170
+ // only if classification is done on unique values
1171
+ for (i = 0; i < (this.bounds.length); i++) {
1172
+ if(getcounter===true) {
1173
+ cnt = ' <span class="geostats-legend-counter">(' + this.counter[i] + ')</span>';
1174
+ }
1175
+ var el = fn(this.bounds[i]);
1176
+ var block = '<div><div class="geostats-legend-block" style="background-color:' + ccolors[i] + '"></div> ' + el + cnt + '</div>';
1177
+
1178
+ elements.push(block);
1179
+ }
1180
+
1181
+ }
1182
+
1183
+ // do we reverse the return legend ?
1184
+ if(order === 'DESC') elements.reverse();
1185
+
1186
+ // finally we create HTML and return it
1187
+ var content = '<div class="geostats-legend"><div class="geostats-legend-title">' + _t(lg) + '</div>';
1188
+ for (i = 0; i < (elements.length); i++) {
1189
+ content += elements[i];
1190
+ }
1191
+ content += '</div>';
1192
+
1193
+ return content;
1194
+ };
1195
+
1196
+
1197
+
1198
+ // object constructor
1199
+ // At the end of script. If not setPrecision() method is not known
1200
+
1201
+ // we create an object identifier for debugging
1202
+ this.objectID = new Date().getUTCMilliseconds();
1203
+ this.log('Creating new geostats object');
1204
+
1205
+ if(typeof a !== 'undefined' && a.length > 0) {
1206
+ this.serie = a;
1207
+ this.setPrecision();
1208
+ this.log('Setting serie (' + a.length + ') : ' + a.join());
1209
+ } else {
1210
+ this.serie = Array();
1211
+
1212
+ };
1213
+
1214
+ // creating aliases on classification function for backward compatibility
1215
+ this.getJenks = this.getClassJenks;
1216
+ this.getGeometricProgression = this.getClassGeometricProgression;
1217
+ this.getEqInterval = this.getClassEqInterval;
1218
+ this.getQuantile = this.getClassQuantile;
1219
+ this.getStdDeviation = this.getClassStdDeviation;
1220
+ this.getUniqueValues = this.getClassUniqueValues;
1221
+ this.getArithmeticProgression = this.getClassArithmeticProgression;
1222
+
1223
+ };
1224
+
1225
+ window.geostats = geostats;
1226
+ return geostats;
1227
+ });