├── .gitignore
├── README.md
├── config
├── env.js
├── jest
│ ├── cssTransform.js
│ └── fileTransform.js
├── paths.js
├── polyfills.js
├── webpack.config.dev.js
├── webpack.config.prod.js
└── webpackDevServer.config.js
├── docs
├── HTML
│ ├── css
│ │ ├── comm.css
│ │ └── index.css
│ ├── img
│ │ ├── 1.png
│ │ ├── logo.png
│ │ ├── nav1.png
│ │ ├── nav2.png
│ │ ├── nav3.png
│ │ ├── nav4.png
│ │ └── uesrname.png
│ ├── js
│ │ ├── bootstrap-fileinput-master20151222
│ │ │ ├── css
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ ├── fileinput.css
│ │ │ │ └── fileinput.min.css
│ │ │ ├── examples
│ │ │ │ ├── index-2.html
│ │ │ │ └── index.html
│ │ │ ├── fonts
│ │ │ │ └── glyphicons-halflings-regular.woff
│ │ │ ├── img
│ │ │ │ ├── loading-sm.gif
│ │ │ │ └── loading.gif
│ │ │ └── js
│ │ │ │ ├── bootstrap.min.js
│ │ │ │ ├── fileinput.js
│ │ │ │ ├── fileinput.min.js
│ │ │ │ ├── fileinput_locale_LANG.js
│ │ │ │ ├── fileinput_locale_de.js
│ │ │ │ ├── fileinput_locale_es.js
│ │ │ │ ├── fileinput_locale_hu.js
│ │ │ │ ├── fileinput_locale_ru.js
│ │ │ │ ├── fileinput_locale_uk.js
│ │ │ │ ├── fileinput_locale_zh.js
│ │ │ │ └── jquery-2.0.3.min.js
│ │ ├── bootstrap-select.js
│ │ ├── china.js
│ │ ├── china.json
│ │ ├── data-1469162638978-rJDcVXku.json
│ │ ├── echarts.min.js
│ │ ├── heilongjiang.js
│ │ ├── heilongjiang.json
│ │ ├── index.js
│ │ ├── jquery-1.11.3.min.js
│ │ └── lines-bus.json
│ ├── 消息中心.html
│ ├── 牧场概览.html
│ ├── 电子围栏.html
│ └── 轨迹回放.html
└── UE
│ ├── data
│ ├── document.js
│ └── styles.css
│ ├── files
│ ├── 告警中心
│ │ ├── data.js
│ │ └── styles.css
│ ├── 智慧放牧服务平台
│ │ ├── data.js
│ │ └── styles.css
│ ├── 牧场概览
│ │ ├── data.js
│ │ └── styles.css
│ ├── 电子围栏
│ │ ├── data.js
│ │ └── styles.css
│ ├── 登录
│ │ ├── data.js
│ │ └── styles.css
│ ├── 轨迹回放
│ │ ├── data.js
│ │ └── styles.css
│ └── 首页
│ │ ├── data.js
│ │ └── styles.css
│ ├── images
│ ├── 告警中心
│ │ ├── line_horizontal_u459p000.png
│ │ ├── line_horizontal_u461.png
│ │ ├── line_horizontal_u461p000.png
│ │ └── u455.png
│ ├── 智慧放牧服务平台
│ │ └── u9.png
│ ├── 牧场概览
│ │ ├── line_horizontal_u156.png
│ │ ├── line_horizontal_u156p000.png
│ │ ├── line_horizontal_u156p001.png
│ │ ├── line_horizontal_u160p000.png
│ │ ├── line_horizontal_u160p001.png
│ │ ├── line_horizontal_u164.png
│ │ ├── line_horizontal_u164p000.png
│ │ ├── line_horizontal_u164p001.png
│ │ ├── line_horizontal_u168.png
│ │ ├── line_horizontal_u168p000.png
│ │ ├── line_horizontal_u168p001.png
│ │ └── u140.png
│ ├── 电子围栏
│ │ ├── line_horizontal_u255.png
│ │ ├── line_horizontal_u255p000.png
│ │ ├── line_horizontal_u257.png
│ │ ├── line_horizontal_u257p000.png
│ │ ├── line_horizontal_u259p000.png
│ │ ├── line_horizontal_u263.png
│ │ ├── line_horizontal_u263p000.png
│ │ ├── u245.png
│ │ ├── u251.png
│ │ └── u253.png
│ ├── 登录
│ │ └── u109.png
│ ├── 轨迹回放
│ │ ├── line_horizontal_u346.png
│ │ ├── line_horizontal_u346p000.png
│ │ ├── line_horizontal_u348.png
│ │ ├── line_horizontal_u348p000.png
│ │ ├── line_horizontal_u362.png
│ │ ├── line_horizontal_u362p000.png
│ │ ├── u334.png
│ │ └── u336.png
│ └── 首页
│ │ ├── u21.png
│ │ ├── u23.png
│ │ ├── u25.png
│ │ ├── u31.png
│ │ ├── u33.png
│ │ ├── u35.png
│ │ ├── u37.png
│ │ ├── u39.png
│ │ ├── u43.png
│ │ └── u45.png
│ ├── index.html
│ ├── plugins
│ ├── debug
│ │ ├── debug.js
│ │ └── styles
│ │ │ ├── debug.css
│ │ │ └── images
│ │ │ ├── reset.svg
│ │ │ ├── reset_hover.svg
│ │ │ ├── variables_hover.png
│ │ │ ├── variables_hover.svg
│ │ │ ├── variables_off.png
│ │ │ ├── variables_off.svg
│ │ │ ├── variables_on.png
│ │ │ └── variables_on.svg
│ ├── page_notes
│ │ ├── page_notes.js
│ │ └── styles
│ │ │ ├── images
│ │ │ ├── back.png
│ │ │ ├── back.svg
│ │ │ ├── back_hover.png
│ │ │ ├── back_hover.svg
│ │ │ ├── footnotes.png
│ │ │ ├── footnotes.svg
│ │ │ ├── footnotes_hover.png
│ │ │ ├── footnotes_hover.svg
│ │ │ ├── footnotes_on.png
│ │ │ ├── footnotes_on.svg
│ │ │ ├── forward.png
│ │ │ ├── forward.svg
│ │ │ ├── forward_hover.png
│ │ │ ├── forward_hover.svg
│ │ │ ├── notes_hover.png
│ │ │ ├── notes_hover.svg
│ │ │ ├── notes_off.png
│ │ │ ├── notes_off.svg
│ │ │ ├── notes_on.png
│ │ │ └── notes_on.svg
│ │ │ └── page_notes.css
│ ├── recordplay
│ │ ├── recordplay.js
│ │ └── styles
│ │ │ └── recordplay.css
│ └── sitemap
│ │ ├── sitemap.js
│ │ └── styles
│ │ ├── images
│ │ ├── 079_page_16.png
│ │ ├── 086_case_16.png
│ │ ├── 225_responsive_16.png
│ │ ├── 228_togglenotes_16.png
│ │ ├── 229_variables_16.png
│ │ ├── 231_event_16.png
│ │ ├── 232_search_16.png
│ │ ├── 233_hyperlink_16.png
│ │ ├── 235_folderclosed_16.png
│ │ ├── 236_folderopen_16.png
│ │ ├── adaptivecheck.png
│ │ ├── flow.png
│ │ ├── flow.svg
│ │ ├── folder_closed.png
│ │ ├── folder_closed.svg
│ │ ├── folder_open.png
│ │ ├── folder_open.svg
│ │ ├── hotspots.png
│ │ ├── hotspots.svg
│ │ ├── hotspots_hover.png
│ │ ├── hotspots_hover.svg
│ │ ├── hotspots_on.png
│ │ ├── hotspots_on.svg
│ │ ├── images.html
│ │ ├── minus.gif
│ │ ├── note.png
│ │ ├── note.svg
│ │ ├── page.png
│ │ ├── page.svg
│ │ ├── plus.gif
│ │ ├── share.png
│ │ ├── share.svg
│ │ ├── share_hover.png
│ │ ├── share_hover.svg
│ │ ├── share_on.png
│ │ ├── share_on.svg
│ │ ├── sitemap_hover.png
│ │ ├── sitemap_hover.svg
│ │ ├── sitemap_off.png
│ │ ├── sitemap_off.svg
│ │ ├── sitemap_on.png
│ │ ├── sitemap_on.svg
│ │ ├── views.png
│ │ ├── views.svg
│ │ ├── views_hover.png
│ │ ├── views_hover.svg
│ │ ├── views_on.png
│ │ └── views_on.svg
│ │ └── sitemap.css
│ ├── resources
│ ├── Other.html
│ ├── chrome
│ │ ├── allow_access.gif
│ │ ├── axure-chrome-extension.crx
│ │ ├── axure_logo.gif
│ │ ├── axure_logo.png
│ │ ├── chrome.html
│ │ ├── extensions_menu.gif
│ │ ├── splitter.gif
│ │ └── splitter.png
│ ├── css
│ │ ├── axure_rp_page.css
│ │ ├── default.css
│ │ ├── images
│ │ │ ├── images.html
│ │ │ ├── newwindow.gif
│ │ │ ├── note.gif
│ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png
│ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png
│ │ │ ├── ui-bg_glass_65_ffffff_1x400.png
│ │ │ ├── ui-bg_glass_75_dadada_1x400.png
│ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png
│ │ │ ├── ui-bg_glass_75_ffffff_1x400.png
│ │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png
│ │ │ ├── ui-bg_inset-soft_95_fef1ec_1x100.png
│ │ │ ├── ui-icons_222222_256x240.png
│ │ │ ├── ui-icons_2e83ff_256x240.png
│ │ │ ├── ui-icons_454545_256x240.png
│ │ │ ├── ui-icons_888888_256x240.png
│ │ │ └── ui-icons_cd0a0a_256x240.png
│ │ ├── jquery-ui-themes.css
│ │ └── reset.css
│ ├── expand.html
│ ├── images
│ │ ├── 259_close_12rollover1.png
│ │ ├── 259_close_12rollover2.png
│ │ ├── 260_collapse_12rollover1.png
│ │ ├── 260_collapse_12rollover2.png
│ │ ├── 261_expand_12rollover1.png
│ │ ├── 261_expand_12rollover2.png
│ │ ├── close.png
│ │ ├── close.svg
│ │ ├── close_hover.png
│ │ ├── close_hover.svg
│ │ ├── divider.png
│ │ ├── divider.svg
│ │ ├── expand.png
│ │ ├── expand.svg
│ │ ├── expand_hover.png
│ │ ├── expand_hover.svg
│ │ ├── images.html
│ │ └── transparent.gif
│ ├── reload.html
│ └── scripts
│ │ ├── axure
│ │ ├── action.js
│ │ ├── adaptive.js
│ │ ├── annotation.js
│ │ ├── axQuery.js
│ │ ├── axQuery.std.js
│ │ ├── doc.js
│ │ ├── drag.js
│ │ ├── events.js
│ │ ├── expr.js
│ │ ├── flyout.js
│ │ ├── geometry.js
│ │ ├── globals.js
│ │ ├── ie.js
│ │ ├── init.temp.js
│ │ ├── legacy.js
│ │ ├── math.js
│ │ ├── model.js
│ │ ├── move.js
│ │ ├── recording.js
│ │ ├── repeater.js
│ │ ├── sto.js
│ │ ├── style.js
│ │ ├── tree.js
│ │ ├── utils.temp.js
│ │ ├── variables.js
│ │ ├── viewer.js
│ │ └── visibility.js
│ │ ├── axutils.js
│ │ ├── jquery-1.7.1.min.js
│ │ ├── jquery-ui-1.8.10.custom.min.js
│ │ ├── messagecenter.js
│ │ └── player
│ │ ├── axplayer.js
│ │ └── splitter.js
│ ├── start.html
│ ├── start_c_1.html
│ ├── start_g_0.html
│ ├── 告警中心.html
│ ├── 智慧放牧服务平台.html
│ ├── 牧场概览.html
│ ├── 电子围栏.html
│ ├── 登录.html
│ ├── 轨迹回放.html
│ └── 首页.html
├── package-lock.json
├── package.json
├── public
├── assets
│ ├── data
│ │ ├── hangzhou-tracks.json
│ │ └── lines-bus.json
│ ├── lib
│ │ └── jquery-3.2.1.min.js
│ └── map
│ │ ├── china.json
│ │ ├── city
│ │ ├── 110100.json
│ │ ├── 120100.json
│ │ ├── 130100.json
│ │ ├── 130200.json
│ │ ├── 130300.json
│ │ ├── 130400.json
│ │ ├── 130500.json
│ │ ├── 130600.json
│ │ ├── 130700.json
│ │ ├── 130800.json
│ │ ├── 130900.json
│ │ ├── 131000.json
│ │ ├── 131100.json
│ │ ├── 140100.json
│ │ ├── 140200.json
│ │ ├── 140300.json
│ │ ├── 140400.json
│ │ ├── 140500.json
│ │ ├── 140600.json
│ │ ├── 140700.json
│ │ ├── 140800.json
│ │ ├── 140900.json
│ │ ├── 141000.json
│ │ ├── 141100.json
│ │ ├── 150100.json
│ │ ├── 150200.json
│ │ ├── 150300.json
│ │ ├── 150400.json
│ │ ├── 150500.json
│ │ ├── 150600.json
│ │ ├── 150700.json
│ │ ├── 150800.json
│ │ ├── 150900.json
│ │ ├── 152200.json
│ │ ├── 152500.json
│ │ ├── 152900.json
│ │ ├── 210100.json
│ │ ├── 210200.json
│ │ ├── 210300.json
│ │ ├── 210400.json
│ │ ├── 210500.json
│ │ ├── 210600.json
│ │ ├── 210700.json
│ │ ├── 210800.json
│ │ ├── 210900.json
│ │ ├── 211000.json
│ │ ├── 211100.json
│ │ ├── 211200.json
│ │ ├── 211300.json
│ │ ├── 211400.json
│ │ ├── 220100.json
│ │ ├── 220200.json
│ │ ├── 220300.json
│ │ ├── 220400.json
│ │ ├── 220500.json
│ │ ├── 220600.json
│ │ ├── 220700.json
│ │ ├── 220800.json
│ │ ├── 222400.json
│ │ ├── 230100.json
│ │ ├── 230200.json
│ │ ├── 230300.json
│ │ ├── 230400.json
│ │ ├── 230500.json
│ │ ├── 230600.json
│ │ ├── 230700.json
│ │ ├── 230800.json
│ │ ├── 230900.json
│ │ ├── 231000.json
│ │ ├── 231100.json
│ │ ├── 231200.json
│ │ ├── 232700.json
│ │ ├── 310100.json
│ │ ├── 310200.json
│ │ ├── 320100.json
│ │ ├── 320200.json
│ │ ├── 320300.json
│ │ ├── 320400.json
│ │ ├── 320500.json
│ │ ├── 320600.json
│ │ ├── 320700.json
│ │ ├── 320800.json
│ │ ├── 320900.json
│ │ ├── 321000.json
│ │ ├── 321100.json
│ │ ├── 321200.json
│ │ ├── 321300.json
│ │ ├── 330100.json
│ │ ├── 330200.json
│ │ ├── 330300.json
│ │ ├── 330400.json
│ │ ├── 330500.json
│ │ ├── 330600.json
│ │ ├── 330700.json
│ │ ├── 330800.json
│ │ ├── 330900.json
│ │ ├── 331000.json
│ │ ├── 331100.json
│ │ ├── 340100.json
│ │ ├── 340200.json
│ │ ├── 340300.json
│ │ ├── 340400.json
│ │ ├── 340500.json
│ │ ├── 340600.json
│ │ ├── 340700.json
│ │ ├── 340800.json
│ │ ├── 341000.json
│ │ ├── 341100.json
│ │ ├── 341200.json
│ │ ├── 341300.json
│ │ ├── 341500.json
│ │ ├── 341600.json
│ │ ├── 341700.json
│ │ ├── 341800.json
│ │ ├── 350100.json
│ │ ├── 350200.json
│ │ ├── 350300.json
│ │ ├── 350400.json
│ │ ├── 350500.json
│ │ ├── 350600.json
│ │ ├── 350700.json
│ │ ├── 350800.json
│ │ ├── 350900.json
│ │ ├── 360100.json
│ │ ├── 360200.json
│ │ ├── 360300.json
│ │ ├── 360400.json
│ │ ├── 360500.json
│ │ ├── 360600.json
│ │ ├── 360700.json
│ │ ├── 360800.json
│ │ ├── 360900.json
│ │ ├── 361000.json
│ │ ├── 361100.json
│ │ ├── 370100.json
│ │ ├── 370200.json
│ │ ├── 370300.json
│ │ ├── 370400.json
│ │ ├── 370500.json
│ │ ├── 370600.json
│ │ ├── 370700.json
│ │ ├── 370800.json
│ │ ├── 370900.json
│ │ ├── 371000.json
│ │ ├── 371100.json
│ │ ├── 371200.json
│ │ ├── 371300.json
│ │ ├── 371400.json
│ │ ├── 371500.json
│ │ ├── 371600.json
│ │ ├── 371700.json
│ │ ├── 410100.json
│ │ ├── 410200.json
│ │ ├── 410300.json
│ │ ├── 410400.json
│ │ ├── 410500.json
│ │ ├── 410600.json
│ │ ├── 410700.json
│ │ ├── 410800.json
│ │ ├── 410900.json
│ │ ├── 411000.json
│ │ ├── 411100.json
│ │ ├── 411200.json
│ │ ├── 411300.json
│ │ ├── 411400.json
│ │ ├── 411500.json
│ │ ├── 411600.json
│ │ ├── 411700.json
│ │ ├── 420100.json
│ │ ├── 420200.json
│ │ ├── 420300.json
│ │ ├── 420500.json
│ │ ├── 420600.json
│ │ ├── 420700.json
│ │ ├── 420800.json
│ │ ├── 420900.json
│ │ ├── 421000.json
│ │ ├── 421100.json
│ │ ├── 421200.json
│ │ ├── 421300.json
│ │ ├── 422800.json
│ │ ├── 429000.json
│ │ ├── 430100.json
│ │ ├── 430200.json
│ │ ├── 430300.json
│ │ ├── 430400.json
│ │ ├── 430500.json
│ │ ├── 430600.json
│ │ ├── 430700.json
│ │ ├── 430800.json
│ │ ├── 430900.json
│ │ ├── 431000.json
│ │ ├── 431100.json
│ │ ├── 431200.json
│ │ ├── 431300.json
│ │ ├── 433100.json
│ │ ├── 440100.json
│ │ ├── 440200.json
│ │ ├── 440300.json
│ │ ├── 440400.json
│ │ ├── 440500.json
│ │ ├── 440600.json
│ │ ├── 440700.json
│ │ ├── 440800.json
│ │ ├── 440900.json
│ │ ├── 441200.json
│ │ ├── 441300.json
│ │ ├── 441400.json
│ │ ├── 441500.json
│ │ ├── 441600.json
│ │ ├── 441700.json
│ │ ├── 441800.json
│ │ ├── 441900.json
│ │ ├── 442000.json
│ │ ├── 445100.json
│ │ ├── 445200.json
│ │ ├── 445300.json
│ │ ├── 450100.json
│ │ ├── 450200.json
│ │ ├── 450300.json
│ │ ├── 450400.json
│ │ ├── 450500.json
│ │ ├── 450600.json
│ │ ├── 450700.json
│ │ ├── 450800.json
│ │ ├── 450900.json
│ │ ├── 451000.json
│ │ ├── 451100.json
│ │ ├── 451200.json
│ │ ├── 451300.json
│ │ ├── 451400.json
│ │ ├── 460100.json
│ │ ├── 460200.json
│ │ ├── 460300.json
│ │ ├── 469000.json
│ │ ├── 500100.json
│ │ ├── 510100.json
│ │ ├── 510300.json
│ │ ├── 510400.json
│ │ ├── 510500.json
│ │ ├── 510600.json
│ │ ├── 510700.json
│ │ ├── 510800.json
│ │ ├── 510900.json
│ │ ├── 511000.json
│ │ ├── 511100.json
│ │ ├── 511300.json
│ │ ├── 511400.json
│ │ ├── 511500.json
│ │ ├── 511600.json
│ │ ├── 511700.json
│ │ ├── 511800.json
│ │ ├── 511900.json
│ │ ├── 512000.json
│ │ ├── 513200.json
│ │ ├── 513300.json
│ │ ├── 513400.json
│ │ ├── 520100.json
│ │ ├── 520200.json
│ │ ├── 520300.json
│ │ ├── 520400.json
│ │ ├── 522200.json
│ │ ├── 522300.json
│ │ ├── 522400.json
│ │ ├── 522600.json
│ │ ├── 522700.json
│ │ ├── 530100.json
│ │ ├── 530300.json
│ │ ├── 530400.json
│ │ ├── 530500.json
│ │ ├── 530600.json
│ │ ├── 530700.json
│ │ ├── 530800.json
│ │ ├── 530900.json
│ │ ├── 532300.json
│ │ ├── 532500.json
│ │ ├── 532600.json
│ │ ├── 532800.json
│ │ ├── 532900.json
│ │ ├── 533100.json
│ │ ├── 533300.json
│ │ ├── 533400.json
│ │ ├── 540100.json
│ │ ├── 542100.json
│ │ ├── 542200.json
│ │ ├── 542300.json
│ │ ├── 542400.json
│ │ ├── 542500.json
│ │ ├── 542600.json
│ │ ├── 610100.json
│ │ ├── 610200.json
│ │ ├── 610300.json
│ │ ├── 610400.json
│ │ ├── 610500.json
│ │ ├── 610600.json
│ │ ├── 610700.json
│ │ ├── 610800.json
│ │ ├── 610900.json
│ │ ├── 611000.json
│ │ ├── 620100.json
│ │ ├── 620200.json
│ │ ├── 620300.json
│ │ ├── 620400.json
│ │ ├── 620500.json
│ │ ├── 620600.json
│ │ ├── 620700.json
│ │ ├── 620800.json
│ │ ├── 620900.json
│ │ ├── 621000.json
│ │ ├── 621100.json
│ │ ├── 621200.json
│ │ ├── 622900.json
│ │ ├── 623000.json
│ │ ├── 630100.json
│ │ ├── 632100.json
│ │ ├── 632200.json
│ │ ├── 632300.json
│ │ ├── 632500.json
│ │ ├── 632600.json
│ │ ├── 632700.json
│ │ ├── 632800.json
│ │ ├── 640100.json
│ │ ├── 640200.json
│ │ ├── 640300.json
│ │ ├── 640400.json
│ │ ├── 640500.json
│ │ ├── 650100.json
│ │ ├── 650200.json
│ │ ├── 652100.json
│ │ ├── 652200.json
│ │ ├── 652300.json
│ │ ├── 652700.json
│ │ ├── 652800.json
│ │ ├── 652900.json
│ │ ├── 653000.json
│ │ ├── 653100.json
│ │ ├── 653200.json
│ │ ├── 654000.json
│ │ ├── 654200.json
│ │ ├── 654300.json
│ │ ├── 659000.json
│ │ ├── 710000.json
│ │ ├── 810100.json
│ │ ├── 820000.json
│ │ └── china-main-city-map.js
│ │ └── province
│ │ ├── anhui.json
│ │ ├── aomen.json
│ │ ├── beijing.json
│ │ ├── chongqing.json
│ │ ├── fujian.json
│ │ ├── gansu.json
│ │ ├── guangdong.json
│ │ ├── guangxi.json
│ │ ├── guizhou.json
│ │ ├── hainan.json
│ │ ├── hebei.json
│ │ ├── heilongjiang.json
│ │ ├── henan.json
│ │ ├── hubei.json
│ │ ├── hunan.json
│ │ ├── jiangsu.json
│ │ ├── jiangxi.json
│ │ ├── jilin.json
│ │ ├── liaoning.json
│ │ ├── neimenggu.json
│ │ ├── ningxia.json
│ │ ├── qinghai.json
│ │ ├── shandong.json
│ │ ├── shanghai.json
│ │ ├── shanxi.json
│ │ ├── shanxi1.json
│ │ ├── sichuan.json
│ │ ├── tianjin.json
│ │ ├── xianggang.json
│ │ ├── xinjiang.json
│ │ ├── xizang.json
│ │ ├── yunnan.json
│ │ └── zhejiang.json
├── favicon.ico
├── index.html
└── manifest.json
├── scripts
├── build.js
├── start.js
└── test.js
└── src
├── Root.js
├── components
├── cityPicker
│ └── CityPicker.js
├── count
│ ├── Count.js
│ └── Count.scss
├── fence
│ ├── Fence.js
│ └── Fence.scss
├── fenceBmapChart
│ └── FenceBmapChart.js
├── footer
│ ├── Footer.js
│ └── Footer.scss
├── header
│ ├── Header.js
│ └── Header.scss
├── heatMapChart
│ └── HeatMapChart.js
├── livestockPieChart
│ └── LivestockPieChart.js
├── nav
│ ├── Nav.js
│ └── Nav.scss
├── notice
│ ├── Notice.js
│ └── Notice.scss
├── noticeMapChart
│ └── NoticeMapChart.js
├── overview
│ ├── Overview.js
│ └── Overview.scss
├── pasturePieChart
│ └── PasturePieChart.js
├── pictorialBarChart
│ └── PictorialBarChart.js
├── rankLineChart
│ └── RankLineChart.js
├── refreshTime
│ ├── RefreshTime.js
│ └── RefreshTime.scss
├── sum
│ ├── Sum.js
│ └── Sum.scss
├── trace
│ ├── Trace.js
│ └── Trace.scss
├── traceHistoryBmapChart
│ └── TraceHistoryBmapChart.js
└── traceTodayBmapChart
│ └── TraceTodayBmapChart.js
├── css
└── index.scss
├── img
├── logo.png
├── nav1.png
├── nav2.png
├── nav3.png
├── nav4.png
├── poverty.png
└── uesrname.png
├── index.js
├── js
└── utils
│ ├── areaData.json
│ ├── bmapStyle.json
│ ├── comm.js
│ ├── geoMap.js
│ └── global.js
├── pages
├── app
│ ├── App.js
│ └── App.scss
├── home
│ └── Home.js
└── login
│ └── Login.js
└── registerServiceWorker.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 |
6 | # testing
7 | /coverage
8 |
9 | # production
10 | /build
11 |
12 | # misc
13 | .DS_Store
14 | .env.local
15 | .env.development.local
16 | .env.test.local
17 | .env.production.local
18 |
19 | npm-debug.log*
20 | yarn-debug.log*
21 | yarn-error.log*
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | React+Router+Echarts+Bmap+Webpack+ES6+Babel+SCSS
2 | ========================================
3 |
4 | Introduction:
5 | ---------------
6 | A single page web application (SPA) about geographic big data visualization, with React, React Router, Echarts, Bmap, etc.
7 |
8 | This project was bootstrapped with [Create React App](https://github.com/facebookincubator/create-react-app).
9 |
10 | ## Available Scripts
11 |
12 | In the project directory, you can run:
13 |
14 | ### `npm start`
15 |
16 | Runs the app in the development mode.
17 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
18 |
19 | The page will reload if you make edits.
20 | You will also see any lint errors in the console.
21 |
22 | ### `npm test`
23 |
24 | Launches the test runner in the interactive watch mode.
25 | See the section about [running tests](#running-tests) for more information.
26 |
27 | ### `npm run build`
28 |
29 | Builds the app for production to the `build` folder.
30 | It correctly bundles React in production mode and optimizes the build for the best performance.
31 |
32 | The build is minified and the filenames include the hashes.
33 | Your app is ready to be deployed!
34 |
35 | See the section about [deployment](#deployment) for more information.
36 |
37 |
--------------------------------------------------------------------------------
/config/env.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const fs = require('fs');
4 | const path = require('path');
5 | const paths = require('./paths');
6 |
7 | // Make sure that including paths.js after env.js will read .env variables.
8 | delete require.cache[require.resolve('./paths')];
9 |
10 | const NODE_ENV = process.env.NODE_ENV;
11 | if (!NODE_ENV) {
12 | throw new Error(
13 | 'The NODE_ENV environment variable is required but was not specified.'
14 | );
15 | }
16 |
17 | // https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
18 | var dotenvFiles = [
19 | `${paths.dotenv}.${NODE_ENV}.local`,
20 | `${paths.dotenv}.${NODE_ENV}`,
21 | // Don't include `.env.local` for `test` environment
22 | // since normally you expect tests to produce the same
23 | // results for everyone
24 | NODE_ENV !== 'test' && `${paths.dotenv}.local`,
25 | paths.dotenv,
26 | ].filter(Boolean);
27 |
28 | // Load environment variables from .env* files. Suppress warnings using silent
29 | // if this file is missing. dotenv will never modify any environment variables
30 | // that have already been set.
31 | // https://github.com/motdotla/dotenv
32 | dotenvFiles.forEach(dotenvFile => {
33 | if (fs.existsSync(dotenvFile)) {
34 | require('dotenv').config({
35 | path: dotenvFile,
36 | });
37 | }
38 | });
39 |
40 | // We support resolving modules according to `NODE_PATH`.
41 | // This lets you use absolute paths in imports inside large monorepos:
42 | // https://github.com/facebookincubator/create-react-app/issues/253.
43 | // It works similar to `NODE_PATH` in Node itself:
44 | // https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
45 | // Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.
46 | // Otherwise, we risk importing Node.js core modules into an app instead of Webpack shims.
47 | // https://github.com/facebookincubator/create-react-app/issues/1023#issuecomment-265344421
48 | // We also resolve them to make sure all tools using them work consistently.
49 | const appDirectory = fs.realpathSync(process.cwd());
50 | process.env.NODE_PATH = (process.env.NODE_PATH || '')
51 | .split(path.delimiter)
52 | .filter(folder => folder && !path.isAbsolute(folder))
53 | .map(folder => path.resolve(appDirectory, folder))
54 | .join(path.delimiter);
55 |
56 | // Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be
57 | // injected into the application via DefinePlugin in Webpack configuration.
58 | const REACT_APP = /^REACT_APP_/i;
59 |
60 | function getClientEnvironment(publicUrl) {
61 | const raw = Object.keys(process.env)
62 | .filter(key => REACT_APP.test(key))
63 | .reduce(
64 | (env, key) => {
65 | env[key] = process.env[key];
66 | return env;
67 | },
68 | {
69 | // Useful for determining whether we’re running in production mode.
70 | // Most importantly, it switches React into the correct mode.
71 | NODE_ENV: process.env.NODE_ENV || 'development',
72 | // Useful for resolving the correct path to static assets in `public`.
73 | // For example, .
74 | // This should only be used as an escape hatch. Normally you would put
75 | // images into the `src` and `import` them in code to get their paths.
76 | PUBLIC_URL: publicUrl,
77 | }
78 | );
79 | // Stringify all values so we can feed into Webpack DefinePlugin
80 | const stringified = {
81 | 'process.env': Object.keys(raw).reduce((env, key) => {
82 | env[key] = JSON.stringify(raw[key]);
83 | return env;
84 | }, {}),
85 | };
86 |
87 | return { raw, stringified };
88 | }
89 |
90 | module.exports = getClientEnvironment;
91 |
--------------------------------------------------------------------------------
/config/jest/cssTransform.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | // This is a custom Jest transformer turning style imports into empty objects.
4 | // http://facebook.github.io/jest/docs/tutorial-webpack.html
5 |
6 | module.exports = {
7 | process() {
8 | return 'module.exports = {};';
9 | },
10 | getCacheKey() {
11 | // The output is always the same.
12 | return 'cssTransform';
13 | },
14 | };
15 |
--------------------------------------------------------------------------------
/config/jest/fileTransform.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const path = require('path');
4 |
5 | // This is a custom Jest transformer turning file imports into filenames.
6 | // http://facebook.github.io/jest/docs/tutorial-webpack.html
7 |
8 | module.exports = {
9 | process(src, filename) {
10 | return `module.exports = ${JSON.stringify(path.basename(filename))};`;
11 | },
12 | };
13 |
--------------------------------------------------------------------------------
/config/paths.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const path = require('path');
4 | const fs = require('fs');
5 | const url = require('url');
6 |
7 | // Make sure any symlinks in the project folder are resolved:
8 | // https://github.com/facebookincubator/create-react-app/issues/637
9 | const appDirectory = fs.realpathSync(process.cwd());
10 | const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
11 |
12 | const envPublicUrl = process.env.PUBLIC_URL;
13 |
14 | function ensureSlash(path, needsSlash) {
15 | const hasSlash = path.endsWith('/');
16 | if (hasSlash && !needsSlash) {
17 | return path.substr(path, path.length - 1);
18 | } else if (!hasSlash && needsSlash) {
19 | return `${path}/`;
20 | } else {
21 | return path;
22 | }
23 | }
24 |
25 | const getPublicUrl = appPackageJson =>
26 | envPublicUrl || require(appPackageJson).homepage;
27 |
28 | // We use `PUBLIC_URL` environment variable or "homepage" field to infer
29 | // "public path" at which the app is served.
30 | // Webpack needs to know it to put the right
10 |
11 |
12 |
13 |
14 |