├── .DS_Store ├── Every5MinuteEnterForEachStation0401.csv ├── README.md ├── Shanghai_Metro_Visualization_example.png ├── commuter.html ├── commuter_living_area.json ├── commuter_working_area.json ├── connections_by_station_name.json ├── css ├── bootstrap-theme.css ├── bootstrap-theme.css.map ├── bootstrap-theme.min.css ├── bootstrap-toggle.min.css ├── bootstrap.css ├── bootstrap.css.map └── bootstrap.min.css ├── d3.min.js ├── every5minute_entry0401.json ├── every5minute_entry0401_list.json ├── every5minute_exit0401_list.json ├── fonts ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2 ├── js ├── bootstrap-toggle.min.js ├── bootstrap.js ├── bootstrap.min.js ├── jquery-1.11.3.min.js └── npm.js ├── metro_by_name_with_data.html ├── metro_by_promotion.html ├── metro_entries.html ├── metro_exits.html ├── metro_in_a_day.html ├── parse_smartcard.py ├── passengers.html ├── process_entry.py ├── result.txt ├── search ├── routes.txt ├── shortest_path_search.py ├── stops.txt └── test_graph.py ├── smartcard.txt ├── soda.torrent ├── stations_by_name.json ├── stations_by_name_with_alias.json ├── test.html ├── train ├── .DS_Store ├── ATS.txt ├── ATS字段备注.docx ├── TOS.txt └── base │ ├── entrance_exist.txt │ ├── line.txt │ ├── price.txt │ ├── runDiagram.txt │ ├── station.txt │ ├── timetable.txt │ └── 数据字段备注.docx ├── trains.json ├── weekday_promotion.json ├── weekend_promotion.json └── 数据需求.txt /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icomingi/metro/bb78b72ecadc57e0c8deedf9731a78a65ab62ef4/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ###What's new? 2 | 3 | The 2016 SODA competition just started from July 12. The metro data is provided again. You're welcome to join. See more information here: [Shanghai 2016 SODA](http://soda.datashanghai.gov.cn/) 4 | 5 | --- 6 | 7 | ###What's this project? 8 | 9 | This is a data visualization project based on the public transportation data (mostly metro data) released by Shanghai government in 2015. With this project, I and my friends participated in the 2015 SODA (Shanghai Open Data Application) competition and won a little prize. 10 | 11 | ###What the visualization is about? 12 | 13 | As a daily metro commuter, I am really interested in knowing how many people are flowing in and out of the metro system at each station. So I created this project just to answer that. 14 | 15 | ###Give me an example of the visualization. 16 | 17 | Check this out. If you clone this project, you can also see some animations. 18 | 19 | ![Shanghai Metro Visualization](/Shanghai_Metro_Visualization_example.png) 20 | 21 | ###How to see the visualiation? 22 | 23 | Follow the following steps, you will see the visualization on your computer as well: 24 | 25 | 1. Clone this repo 26 | 2. CD into the directory of the repo 27 | 3. Run a local server on this directory. In my case, I run a local server by typing in "python -m SimpleHTTPServer 8888" 28 | 4. Open your browser and go to localhost:8888 29 | 5. Click some HTML file links 30 | 31 | ###What are the tools used for this project? 32 | 33 | The visualization is built with d3 library. The data are handled by some python scripts while queries are done with SQLServer (not included here). 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Shanghai_Metro_Visualization_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icomingi/metro/bb78b72ecadc57e0c8deedf9731a78a65ab62ef4/Shanghai_Metro_Visualization_example.png -------------------------------------------------------------------------------- /commuter_living_area.json: -------------------------------------------------------------------------------- 1 | [["莘庄", "14128"], ["九亭", "12108"], ["莲花路", "9377"], ["上海南站", "8626"], ["广兰路", "7910"], ["徐泾东", "7804"], ["淞虹路", "7785"], ["彭浦新村", "7264"], ["七宝", "7176"], ["通河新村", "7056"], ["泗泾", "6405"], ["中山公园", "6238"], ["金运路", "6206"], ["沈杜公路", "6192"], ["龙阳路", "6141"], ["佘山", "6043"], ["南翔", "5904"], ["共富新村", "5535"], ["上海火车站", "5507"], ["镇坪路", "5254"], ["顾村公园", "5245"], ["大华三路", "5035"], ["桃浦新村", "4985"], ["杨思", "4936"], ["松江大学城", "4754"], ["娄山关路", "4722"], ["曹杨路", "4698"], ["共康路", "4661"], ["北新泾", "4636"], ["江湾镇", "4590"], ["世纪大道", "4429"], ["成山路", "4421"], ["唐镇", "4337"], ["中潭路", "4304"], ["芦恒路", "4233"], ["世纪公园", "4192"], ["锦江乐园", "4186"], ["行知路", "4113"], ["杨高南路", "4100"], ["锦绣路", "3963"], ["殷高西路", "3951"], ["新村路", "3933"], ["芳华路", "3927"], ["宝安公路", "3881"], ["长江南路", "3852"], ["江苏路", "3758"], ["虹口足球场", "3748"], ["上海大学站", "3744"], ["金沙江路", "3651"], ["外环路", "3644"], ["漕宝路", "3618"], ["李子园路", "3591"], ["市光路", "3575"], ["延长路", "3571"], ["三林", "3568"], ["博兴路", "3566"], ["曲阳路", "3546"], ["东昌路", "3502"], ["延吉中路", "3471"], ["川沙", "3441"], ["上海西站", "3437"], ["长清路", "3396"], ["耀华路", "3343"], ["富锦路", "3219"], ["杨树浦路", "3172"], ["陕西南路", "3136"], ["华夏东路", "3098"], ["西藏北路", "3070"], ["场中路", "3064"], ["凌兆新村", "3017"], ["黄兴路", "3011"], ["威宁路", "2993"], ["桂林路", "2992"], ["大柏树", "2914"], ["徐家汇", "2865"], ["临平路", "2810"], ["蓝村路", "2788"], ["宜山路", "2782"], ["巨峰路", "2730"], ["陆家浜路", "2649"], ["静安寺", "2638"], ["西藏南路", "2631"], ["塘桥", "2628"], ["海伦路", "2608"], ["龙漕路", "2580"], ["合川路", "2552"], ["金科路", "2540"], ["虹桥路", "2457"], ["云山路", "2440"], ["杨高中路", "2415"], ["高青路", "2390"], ["国权路", "2386"], ["祁连山南路", "2381"], ["嫩江路", "2350"], ["三林东", "2340"], ["中山北路", "2340"], ["五莲路", "2318"], ["长寿路", "2307"], ["金桥路", "2242"], ["南京西路", "2220"], ["松江体育中心", "2202"], ["人民广场", "2195"], ["浦东大道", "2193"], ["嘉定北", "2177"], ["老西门", "2176"], ["御桥", "2169"], ["东川路", "2158"], ["南京东路", "2152"], ["德平路", "2151"], ["小南门", "2145"], ["枫桥路", "2139"], ["航中路", "2133"], ["呼兰路", "2127"], ["江月路", "2110"], ["颛桥", "2103"], ["鲁班路", "2100"], ["嘉定新城", "2097"], ["刘行", "2097"], ["四平路", "2096"], ["中兴路", "2066"], ["大连路", "2054"], ["灵岩南路", "2017"], ["丰庄", "1977"], ["岚皋路", "1967"], ["东靖路", "1955"], ["大木桥路", "1948"], ["鞍山新村", "1943"], ["联航路", "1933"], ["邮电新村", "1933"], ["东明路", "1926"], ["上海马戏城", "1926"], ["惠南", "1892"], ["江湾体育场", "1885"], ["漕河泾开发区", "1884"], ["上海体育馆", "1859"], ["龙柏新村", "1855"], ["美兰湖", "1848"], ["江浦公园", "1843"], ["江杨北路", "1841"], ["鹤沙航城", "1816"], ["陆家嘴", "1805"], ["张江高科", "1790"], ["延安西路", "1773"], ["浦江镇", "1771"], ["东安路", "1770"], ["同济大学", "1760"], ["浦电路", "1747"], ["高科西路", "1747"], ["上海体育场", "1743"], ["江浦路", "1730"], ["隆昌路", "1730"], ["金平路", "1720"], ["赤峰路", "1717"], ["云台路", "1714"], ["星中路", "1709"], ["松江新城", "1691"], ["交通大学", "1676"], ["昌平路", "1629"], ["东陆路", "1621"], ["石龙路", "1613"], ["嘉定西", "1569"], ["虹桥火车站", "1569"], ["浦三路", "1541"], ["北桥", "1538"], ["马陆", "1531"], ["宁国路", "1528"], ["隆德路", "1520"], ["临沂新村", "1473"], ["马当路", "1466"], ["上南路", "1461"], ["爱国路", "1446"], ["白银路", "1426"], ["金京路", "1408"], ["新场", "1402"], ["嘉善路", "1372"], ["杨高北路", "1361"], ["宝山路", "1361"], ["打浦桥", "1354"], ["翔殷路", "1334"], ["周浦东", "1332"], ["中春路", "1314"], ["宋园路", "1310"], ["安亭", "1307"], ["淞浜路", "1292"], ["华宁路", "1282"], ["新江湾城", "1274"], ["真如", "1267"], ["上大路", "1250"], ["五角场", "1249"], ["商城路", "1244"], ["肇嘉浜路", "1235"], ["华夏西路", "1229"], ["祁连山路", "1227"], ["大渡河路", "1211"], ["黄兴公园", "1186"], ["汶水路", "1176"], ["罗南新村", "1174"], ["剑川路", "1164"], ["南陈路", "1153"], ["上海科技馆", "1130"], ["友谊路", "1118"], ["南浦大桥", "1117"], ["东宝兴路", "1104"], ["常熟路", "1087"], ["民生路", "1059"], ["水城路", "1051"], ["兆丰路", "1047"], ["花桥", "1043"], ["友谊西路", "1035"], ["新闸路", "1008"], ["金海路", "1002"], ["北洋泾路", "981"], ["春申路", "969"], ["水产路", "954"], ["大场镇", "949"], ["洞泾", "948"], ["上海动物园", "948"], ["曲阜路", "946"], ["四川北路", "906"], ["淞发路", "898"], ["闵行开发区", "896"], ["虹桥2号航站楼", "876"], ["银都路", "867"], ["航津路", "856"], ["汉中路", "850"], ["上海儿童医学中心", "848"], ["黄陂南路", "824"], ["龙华", "818"], ["港城路", "816"], ["龙华中路", "807"], ["龙溪路", "806"], ["醉白池", "799"], ["真北路", "767"], ["豫园", "763"], ["外高桥保税区北", "751"], ["外高桥保税区南", "750"], ["新天地", "748"], ["上海游泳馆", "745"], ["漕溪路", "730"], ["罗山路", "728"], ["凌空路", "724"], ["大世界", "689"], ["洲海路", "674"], ["潘广路", "663"], ["三门路", "645"], ["宝杨路", "633"], ["上海野生动物园", "630"], ["东方体育中心", "602"], ["龙耀路", "572"], ["上海汽车城", "541"], ["航头东", "534"], ["天潼路", "520"], ["金沙江西路", "481"], ["源深体育中心", "479"], ["祁华路", "465"], ["光明路", "464"], ["衡山路", "460"], ["国际客运中心", "447"], ["武宁路", "437"], ["上海图书馆", "399"], ["书院", "388"], ["伊犁路", "379"], ["创新中路", "362"], ["提篮桥", "321"], ["紫藤路", "320"], ["五洲大道", "316"], ["武威路", "315"], ["申江路", "268"], ["上海赛车场", "259"], ["张华浜", "255"], ["昌吉东路", "252"], ["惠南东", "248"], ["远东大道", "238"], ["云锦路", "218"], ["花木路", "194"], ["铁力路", "192"], ["松江南站", "173"], ["殷高东路", "168"], ["滴水湖", "159"], ["后滩", "156"], ["临港大道", "124"], ["文井路", "114"], ["虹桥1号航站楼", "111"], ["复兴岛", "85"], ["浦东国际机场", "55"], ["中华艺术宫", "54"], ["海天三路", "34"], ["华夏中路", "27"]] -------------------------------------------------------------------------------- /commuter_working_area.json: -------------------------------------------------------------------------------- 1 | [["人民广场", "23657"], ["陆家嘴", "20635"], ["静安寺", "19376"], ["漕河泾开发区", "18734"], ["徐家汇", "17457"], ["浦电路", "14226"], ["南京东路", "13641"], ["南京西路", "11724"], ["陕西南路", "11689"], ["宜山路", "11348"], ["上海火车站", "10903"], ["中山公园", "10666"], ["金科路", "10666"], ["张江高科", "10270"], ["江苏路", "10010"], ["世纪大道", "8524"], ["娄山关路", "8115"], ["桂林路", "7906"], ["东昌路", "7878"], ["长寿路", "7833"], ["淞虹路", "7737"], ["黄陂南路", "7677"], ["商城路", "7421"], ["曹杨路", "7297"], ["常熟路", "6476"], ["打浦桥", "6464"], ["延安西路", "6232"], ["虹桥路", "6071"], ["大世界", "6047"], ["合川路", "5776"], ["肇嘉浜路", "5493"], ["广兰路", "5259"], ["浦东大道", "5121"], ["昌平路", "4820"], ["虹口足球场", "4813"], ["上海体育馆", "4809"], ["莘庄", "4681"], ["漕宝路", "4616"], ["伊犁路", "4548"], ["汉中路", "4476"], ["大连路", "4473"], ["陆家浜路", "4396"], ["西藏南路", "4057"], ["交通大学", "3822"], ["上海马戏城", "3777"], ["汶水路", "3717"], ["四川北路", "3649"], ["鲁班路", "3644"], ["真北路", "3520"], ["蓝村路", "3449"], ["豫园", "3422"], ["上海体育场", "3394"], ["海伦路", "3362"], ["杨高中路", "3263"], ["镇坪路", "3209"], ["嘉善路", "3182"], ["塘桥", "2892"], ["老西门", "2881"], ["龙阳路", "2767"], ["七宝", "2742"], ["杨树浦路", "2708"], ["天潼路", "2676"], ["东安路", "2634"], ["莲花路", "2610"], ["金沙江路", "2571"], ["大柏树", "2541"], ["延长路", "2463"], ["马当路", "2452"], ["花木路", "2450"], ["九亭", "2447"], ["上海南站", "2383"], ["新闸路", "2370"], ["祁连山路", "2322"], ["源深体育中心", "2296"], ["威宁路", "2258"], ["曲阜路", "2235"], ["虹桥火车站", "2219"], ["上海科技馆", "2203"], ["东宝兴路", "2185"], ["大渡河路", "2147"], ["四平路", "2116"], ["新天地", "2037"], ["徐泾东", "1993"], ["五角场", "1957"], ["龙华中路", "1955"], ["南浦大桥", "1933"], ["国际客运中心", "1929"], ["小南门", "1905"], ["江湾体育场", "1877"], ["南翔", "1866"], ["隆德路", "1849"], ["大木桥路", "1818"], ["西藏北路", "1802"], ["上海游泳馆", "1770"], ["岚皋路", "1725"], ["龙漕路", "1685"], ["临平路", "1675"], ["衡山路", "1657"], ["漕溪路", "1578"], ["宝山路", "1571"], ["同济大学", "1570"], ["宋园路", "1565"], ["临沂新村", "1541"], ["中山北路", "1513"], ["枫桥路", "1497"], ["宁国路", "1496"], ["嘉定北", "1480"], ["颛桥", "1478"], ["江浦路", "1472"], ["武宁路", "1471"], ["赤峰路", "1403"], ["隆昌路", "1401"], ["中兴路", "1400"], ["高科西路", "1384"], ["提篮桥", "1377"], ["水城路", "1354"], ["中潭路", "1351"], ["李子园路", "1345"], ["浦江镇", "1313"], ["金海路", "1310"], ["上海图书馆", "1254"], ["江月路", "1243"], ["松江大学城", "1231"], ["金桥路", "1167"], ["龙柏新村", "1164"], ["民生路", "1155"], ["耀华路", "1143"], ["锦江乐园", "1138"], ["沈杜公路", "1137"], ["国权路", "1125"], ["外高桥保税区南", "1090"], ["北新泾", "1085"], ["东川路", "1073"], ["虹桥2号航站楼", "1059"], ["龙溪路", "1056"], ["共康路", "1015"], ["呼兰路", "1015"], ["新村路", "1014"], ["虹桥1号航站楼", "1014"], ["江湾镇", "1013"], ["彭浦新村", "987"], ["石龙路", "966"], ["长江南路", "966"], ["银都路", "963"], ["行知路", "960"], ["祁连山南路", "955"], ["曲阳路", "952"], ["星中路", "946"], ["联航路", "930"], ["世纪公园", "911"], ["杨高南路", "891"], ["中春路", "881"], ["泗泾", "867"], ["航津路", "861"], ["鞍山新村", "843"], ["上海大学站", "842"], ["邮电新村", "842"], ["龙华", "818"], ["共富新村", "815"], ["嘉定新城", "814"], ["黄兴路", "797"], ["成山路", "795"], ["外高桥保税区北", "780"], ["顾村公园", "758"], ["芳华路", "752"], ["唐镇", "720"], ["铁力路", "719"], ["安亭", "719"], ["文井路", "718"], ["金运路", "717"], ["桃浦新村", "715"], ["江浦公园", "707"], ["大华三路", "669"], ["上海儿童医学中心", "661"], ["罗山路", "654"], ["延吉中路", "646"], ["华宁路", "639"], ["杨思", "636"], ["松江新城", "623"], ["德平路", "622"], ["浦东国际机场", "597"], ["殷高西路", "589"], ["上海西站", "585"], ["闵行开发区", "585"], ["富锦路", "578"], ["北桥", "577"], ["锦绣路", "576"], ["场中路", "574"], ["翔殷路", "572"], ["川沙", "567"], ["长清路", "565"], ["金沙江西路", "546"], ["外环路", "541"], ["中华艺术宫", "538"], ["北洋泾路", "537"], ["通河新村", "537"], ["剑川路", "533"], ["云台路", "529"], ["淞浜路", "529"], ["佘山", "525"], ["友谊路", "524"], ["嘉定西", "509"], ["马陆", "508"], ["真如", "506"], ["云锦路", "501"], ["云山路", "492"], ["三门路", "491"], ["芦恒路", "487"], ["黄兴公园", "476"], ["御桥", "471"], ["后滩", "464"], ["松江体育中心", "460"], ["周浦东", "440"], ["市光路", "437"], ["丰庄", "437"], ["上海汽车城", "435"], ["凌兆新村", "434"], ["上大路", "432"], ["惠南", "425"], ["美兰湖", "424"], ["巨峰路", "402"], ["东方体育中心", "399"], ["申江路", "398"], ["灵岩南路", "396"], ["嫩江路", "395"], ["水产路", "390"], ["上海动物园", "389"], ["金京路", "377"], ["高青路", "366"], ["三林", "365"], ["金平路", "363"], ["东明路", "362"], ["洞泾", "360"], ["大场镇", "353"], ["博兴路", "342"], ["五莲路", "325"], ["浦三路", "316"], ["上南路", "310"], ["武威路", "303"], ["兆丰路", "295"], ["华夏西路", "290"], ["爱国路", "288"], ["白银路", "275"], ["复兴岛", "269"], ["滴水湖", "268"], ["海天三路", "263"], ["春申路", "259"], ["淞发路", "258"], ["龙耀路", "252"], ["华夏东路", "250"], ["三林东", "240"], ["上海赛车场", "239"], ["洲海路", "231"], ["宝安公路", "229"], ["江杨北路", "224"], ["新场", "209"], ["松江南站", "207"], ["宝杨路", "206"], ["新江湾城", "204"], ["醉白池", "198"], ["南陈路", "190"], ["杨高北路", "189"], ["花桥", "183"], ["罗南新村", "183"], ["友谊西路", "180"], ["昌吉东路", "176"], ["航中路", "172"], ["刘行", "163"], ["东靖路", "152"], ["紫藤路", "134"], ["上海野生动物园", "129"], ["东陆路", "127"], ["光明路", "118"], ["五洲大道", "111"], ["张华浜", "109"], ["港城路", "99"], ["远东大道", "94"], ["创新中路", "92"], ["鹤沙航城", "81"], ["殷高东路", "67"], ["祁华路", "66"], ["临港大道", "54"], ["华夏中路", "53"], ["凌空路", "47"], ["航头东", "43"], ["潘广路", "41"], ["书院", "32"], ["惠南东", "25"]] -------------------------------------------------------------------------------- /connections_by_station_name.json: -------------------------------------------------------------------------------- 1 | [["富锦路", "友谊西路", "1"], ["友谊西路", "宝安公路", "1"], ["宝安公路", "共富新村", "1"], ["共富新村", "呼兰路", "1"], ["呼兰路", "通河新村", "1"], ["通河新村", "共康路", "1"], ["共康路", "彭浦新村", "1"], ["彭浦新村", "汶水路", "1"], ["汶水路", "上海马戏城", "1"], ["上海马戏城", "延长路", "1"], ["延长路", "中山北路", "1"], ["中山北路", "上海火车站", "1"], ["上海火车站", "汉中路", "1"], ["汉中路", "新闸路", "1"], ["新闸路", "人民广场", "1"], ["人民广场", "黄陂南路", "1"], ["黄陂南路", "陕西南路", "1"], ["陕西南路", "常熟路", "1"], ["常熟路", "衡山路", "1"], ["衡山路", "徐家汇", "1"], ["徐家汇", "上海体育馆", "1"], ["上海体育馆", "漕宝路", "1"], ["漕宝路", "上海南站", "1"], ["上海南站", "锦江乐园", "1"], ["锦江乐园", "莲花路", "1"], ["莲花路", "外环路", "1"], ["外环路", "莘庄", "1"], ["航中路", "紫藤路", "10"], ["紫藤路", "龙柏新村", "10"], ["龙柏新村", "龙溪路", "10"], ["虹桥火车站", "虹桥2号航站楼", "10"], ["虹桥2号航站楼", "虹桥1号航站楼", "10"], ["虹桥1号航站楼", "上海动物园", "10"], ["上海动物园", "龙溪路", "10"], ["龙溪路", "水城路", "10"], ["水城路", "伊犁路", "10"], ["伊犁路", "宋园路", "10"], ["宋园路", "虹桥路", "10"], ["虹桥路", "交通大学", "10"], ["交通大学", "上海图书馆", "10"], ["上海图书馆", "陕西南路", "10"], ["陕西南路", "新天地", "10"], ["新天地", "老西门", "10"], ["老西门", "豫园", "10"], ["豫园", "南京东路", "10"], ["南京东路", "天潼路", "10"], ["天潼路", "四川北路", "10"], ["四川北路", "海伦路", "10"], ["海伦路", "邮电新村", "10"], ["邮电新村", "四平路", "10"], ["四平路", "同济大学", "10"], ["同济大学", "国权路", "10"], ["国权路", "五角场", "10"], ["五角场", "江湾体育场", "10"], ["江湾体育场", "三门路", "10"], ["三门路", "殷高东路", "10"], ["殷高东路", "新江湾城", "10"], ["花桥", "光明路", "11"], ["光明路", "兆丰路", "11"], ["兆丰路", "安亭", "11"], ["安亭", "上海汽车城", "11"], ["上海汽车城", "昌吉东路", "11"], ["昌吉东路", "上海赛车场", "11"], ["上海赛车场", "嘉定新城", "11"], ["嘉定北", "嘉定西", "11"], ["嘉定西", "白银路", "11"], ["白银路", "嘉定新城", "11"], ["嘉定新城", "马陆", "11"], ["马陆", "南翔", "11"], ["南翔", "桃浦新村", "11"], ["桃浦新村", "武威路", "11"], ["武威路", "祁连山路", "11"], ["祁连山路", "李子园", "11"], ["李子园", "上海西站", "11"], ["上海西站", "真如", "11"], ["真如", "枫桥路", "11"], ["枫桥路", "曹杨路", "11"], ["曹杨路", "隆德路", "11"], ["隆德路", "江苏路", "11"], ["江苏路", "交通大学", "11"], ["交通大学", "徐家汇", "11"], ["徐家汇", "上海游泳馆", "11"], ["上海游泳馆", "龙华", "11"], ["龙华", "云锦路", "11"], ["云锦路", "龙耀路", "11"], ["龙耀路", "东方体育中心", "11"], ["东方体育中心", "三林", "11"], ["三林", "三林东", "11"], ["三林东", "浦三路", "11"], ["浦三路", "御桥", "11"], ["御桥", "罗山路", "11"], ["曲阜路", "天潼路", "12"], ["天潼路", "国际客运中心", "12"], ["国际客运中心", "提篮桥", "12"], ["提篮桥", "大连路", "12"], ["大连路", "江浦公园", "12"], ["江浦公园", "宁国路", "12"], ["宁国路", "隆昌路", "12"], ["隆昌路", "爱国路", "12"], ["爱国路", "复兴岛", "12"], ["复兴岛", "东陆路", "12"], ["东陆路", "巨峰路", "12"], ["巨峰路", "杨高北路", "12"], ["杨高北路", "金京路", "12"], ["金京路", "申江路", "12"], ["申江路", "金海路", "12"], ["金运路", "金沙江西路", "13"], ["金沙江西路", "丰庄", "13"], ["丰庄", "祁连山南路", "13"], ["祁连山南路", "真北路", "13"], ["真北路", "大渡河路", "13"], ["大渡河路", "金沙江路", "13"], ["金沙江路", "隆德路", "13"], ["隆德路", "武宁路", "13"], ["武宁路", "长寿路", "13"], ["龙阳路", "华夏中路", "16"], ["华夏中路", "罗山路", "16"], ["罗山路", "周浦东", "16"], ["周浦东", "鹤沙航城", "16"], ["鹤沙航城", "航头东", "16"], ["航头东", "新场", "16"], ["新场", "野生动物园", "16"], ["野生动物园", "惠南", "16"], ["惠南", "惠南东", "16"], ["惠南东", "书院", "16"], ["书院", "临港大道", "16"], ["临港大道", "滴水湖", "16"], ["徐泾东", "虹桥火车站", "2"], ["虹桥火车站", "虹桥2号航站楼", "2"], ["虹桥2号航站楼", "淞虹路", "2"], ["淞虹路", "北新泾", "2"], ["北新泾", "威宁路", "2"], ["威宁路", "娄山关路", "2"], ["娄山关路", "中山公园", "2"], ["中山公园", "江苏路", "2"], ["江苏路", "静安寺", "2"], ["静安寺", "南京西路", "2"], ["南京西路", "人民广场", "2"], ["人民广场", "南京东路", "2"], ["南京东路", "陆家嘴", "2"], ["陆家嘴", "东昌路", "2"], ["东昌路", "世纪大道", "2"], ["世纪大道", "上海科技馆", "2"], ["上海科技馆", "世纪公园", "2"], ["世纪公园", "龙阳路", "2"], ["龙阳路", "张江高科", "2"], ["张江高科", "金科路", "2"], ["金科路", "广兰路", "2"], ["广兰路", "唐镇", "2"], ["唐镇", "创新中路", "2"], ["创新中路", "华夏东路", "2"], ["华夏东路", "川沙", "2"], ["川沙", "凌空路", "2"], ["凌空路", "远东大道", "2"], ["远东大道", "海天三路", "2"], ["海天三路", "浦东国际机场", "2"], ["江杨北路", "铁力路", "3"], ["铁力路", "友谊路", "3"], ["友谊路", "宝杨路", "3"], ["宝杨路", "水产路", "3"], ["水产路", "淞滨路", "3"], ["淞滨路", "张华浜", "3"], ["张华浜", "淞发路", "3"], ["淞发路", "长江南路", "3"], ["长江南路", "殷高西路", "3"], ["殷高西路", "江湾镇", "3"], ["江湾镇", "大柏树", "3"], ["大柏树", "赤峰路", "3"], ["赤峰路", "虹口足球场", "3"], ["虹口足球场", "东宝兴路", "3"], ["东宝兴路", "宝山路", "3"], ["宝山路", "上海火车站", "3"], ["上海火车站", "中潭路", "3"], ["中潭路", "镇坪路", "3"], ["镇坪路", "曹杨路", "3"], ["曹杨路", "金沙江路", "3"], ["金沙江路", "中山公园", "3"], ["中山公园", "延安西路", "3"], ["延安西路", "虹桥路", "3"], ["虹桥路", "宜山路", "3"], ["宜山路", "漕溪路", "3"], ["漕溪路", "龙漕路", "3"], ["龙漕路", "石龙路", "3"], ["石龙路", "上海南站", "3"], ["上海体育馆", "宜山路", "4"], ["宜山路", "虹桥路", "4"], ["虹桥路", "延安西路", "4"], ["延安西路", "中山公园", "4"], ["中山公园", "金沙江路", "4"], ["金沙江路", "曹杨路", "4"], ["曹杨路", "镇坪路", "4"], ["镇坪路", "中潭路", "4"], ["中潭路", "上海火车站", "4"], ["上海火车站", "宝山路", "4"], ["宝山路", "海伦路", "4"], ["海伦路", "临平路", "4"], ["临平路", "大连路", "4"], ["大连路", "杨树浦路", "4"], ["杨树浦路", "浦东大道", "4"], ["浦东大道", "世纪大道", "4"], ["世纪大道", "浦电路", "4"], ["浦电路", "蓝村路", "4"], ["蓝村路", "塘桥", "4"], ["塘桥", "南浦大桥", "4"], ["南浦大桥", "西藏南路", "4"], ["西藏南路", "鲁班路", "4"], ["鲁班路", "大木桥路", "4"], ["大木桥路", "东安路", "4"], ["东安路", "上海体育场", "4"], ["上海体育场", "上海体育馆", "4"], ["莘庄", "春申路", "5"], ["春申路", "银都路", "5"], ["银都路", "颛桥", "5"], ["颛桥", "北桥", "5"], ["北桥", "剑川路", "5"], ["剑川路", "东川路", "5"], ["东川路", "金平路", "5"], ["金平路", "华宁路", "5"], ["华宁路", "文井路", "5"], ["文井路", "闵行开发区", "5"], ["东方体育中心", "灵岩南路", "6"], ["灵岩南路", "上南路", "6"], ["上南路", "华夏西路", "6"], ["华夏西路", "高青路", "6"], ["高青路", "东明路", "6"], ["东明路", "高科西路", "6"], ["高科西路", "临沂新村", "6"], ["临沂新村", "上海儿童医学中心", "6"], ["上海儿童医学中心", "蓝村路", "6"], ["蓝村路", "浦电路", "6"], ["浦电路", "世纪大道", "6"], ["世纪大道", "源深体育中心", "6"], ["源深体育中心", "民生路", "6"], ["民生路", "北洋泾路", "6"], ["北洋泾路", "德平路", "6"], ["德平路", "云山路", "6"], ["云山路", "金桥路", "6"], ["金桥路", "博兴路", "6"], ["博兴路", "五莲路", "6"], ["五莲路", "巨峰路", "6"], ["巨峰路", "东靖路", "6"], ["东靖路", "五洲大道", "6"], ["五洲大道", "洲海路", "6"], ["洲海路", "外高桥保税区南站", "6"], ["外高桥保税区南站", "航津路", "6"], ["航津路", "外高桥保税区北站", "6"], ["外高桥保税区北站", "港城路", "6"], ["美兰湖", "罗南新村", "7"], ["罗南新村", "潘广路", "7"], ["潘广路", "刘行", "7"], ["刘行", "顾村公园", "7"], ["顾村公园", "祁华路", "7"], ["祁华路", "上海大学", "7"], ["上海大学", "南陈路", "7"], ["南陈路", "上大路", "7"], ["上大路", "场中路", "7"], ["场中路", "大场镇", "7"], ["大场镇", "行知路", "7"], ["行知路", "大华三路", "7"], ["大华三路", "新村路", "7"], ["新村路", "岚皋路", "7"], ["岚皋路", "镇坪路", "7"], ["镇坪路", "长寿路", "7"], ["长寿路", "昌平路", "7"], ["昌平路", "静安寺", "7"], ["静安寺", "常熟路", "7"], ["常熟路", "肇嘉浜路", "7"], ["肇嘉浜路", "东安路", "7"], ["东安路", "龙华中路", "7"], ["龙华中路", "后滩", "7"], ["后滩", "长清路", "7"], ["长清路", "耀华路", "7"], ["耀华路", "云台路", "7"], ["云台路", "高科西路", "7"], ["高科西路", "杨高南路", "7"], ["杨高南路", "锦绣路", "7"], ["锦绣路", "芳华路", "7"], ["芳华路", "龙阳路", "7"], ["龙阳路", "花木路", "7"], ["沈杜公路", "联航路", "8"], ["联航路", "江月路", "8"], ["江月路", "浦江镇", "8"], ["浦江镇", "芦恒路", "8"], ["芦恒路", "凌兆新村", "8"], ["凌兆新村", "东方体育中心", "8"], ["东方体育中心", "杨思", "8"], ["杨思", "成山路", "8"], ["成山路", "耀华路", "8"], ["耀华路", "中华艺术宫", "8"], ["中华艺术宫", "西藏南路", "8"], ["西藏南路", "陆家浜路", "8"], ["陆家浜路", "老西门", "8"], ["老西门", "大世界", "8"], ["大世界", "人民广场", "8"], ["人民广场", "曲阜路", "8"], ["曲阜路", "中兴路", "8"], ["中兴路", "西藏北路", "8"], ["西藏北路", "虹口足球场", "8"], ["虹口足球场", "曲阳路", "8"], ["曲阳路", "四平路", "8"], ["四平路", "鞍山新村", "8"], ["鞍山新村", "江浦路", "8"], ["江浦路", "黄兴路", "8"], ["黄兴路", "延吉中路", "8"], ["延吉中路", "黄兴公园", "8"], ["黄兴公园", "翔殷路", "8"], ["翔殷路", "嫩江路", "8"], ["嫩江路", "市光路", "8"], ["松江南站", "醉白池", "9"], ["醉白池", "松江体育中心", "9"], ["松江体育中心", "松江新城", "9"], ["松江新城", "松江大学城", "9"], ["松江大学城", "洞泾", "9"], ["洞泾", "佘山", "9"], ["佘山", "泗泾", "9"], ["泗泾", "九亭", "9"], ["九亭", "中春路", "9"], ["中春路", "七宝", "9"], ["七宝", "星中路", "9"], ["星中路", "合川路", "9"], ["合川路", "漕河泾开发区", "9"], ["漕河泾开发区", "桂林路", "9"], ["桂林路", "宜山路", "9"], ["宜山路", "徐家汇", "9"], ["徐家汇", "肇嘉浜路", "9"], ["肇嘉浜路", "嘉善路", "9"], ["嘉善路", "打浦桥", "9"], ["打浦桥", "马当路", "9"], ["马当路", "陆家浜路", "9"], ["陆家浜路", "小南门", "9"], ["小南门", "商城路", "9"], ["商城路", "世纪大道", "9"], ["世纪大道", "杨高中路", "9"]] -------------------------------------------------------------------------------- /css/bootstrap-theme.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.5 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} -------------------------------------------------------------------------------- /css/bootstrap-toggle.min.css: -------------------------------------------------------------------------------- 1 | /*! ======================================================================== 2 | * Bootstrap Toggle: bootstrap-toggle.css v2.2.0 3 | * http://www.bootstraptoggle.com 4 | * ======================================================================== 5 | * Copyright 2014 Min Hur, The New York Times Company 6 | * Licensed under MIT 7 | * ======================================================================== */ 8 | .checkbox label .toggle,.checkbox-inline .toggle{margin-left:-20px;margin-right:5px} 9 | .toggle{position:relative;overflow:hidden} 10 | .toggle input[type=checkbox]{display:none} 11 | .toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;-moz-user-select:none;-webkit-user-select:none} 12 | .toggle.off .toggle-group{left:-100%} 13 | .toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0} 14 | .toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0} 15 | .toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px} 16 | .toggle.btn{min-width:59px;min-height:34px} 17 | .toggle-on.btn{padding-right:24px} 18 | .toggle-off.btn{padding-left:24px} 19 | .toggle.btn-lg{min-width:79px;min-height:45px} 20 | .toggle-on.btn-lg{padding-right:31px} 21 | .toggle-off.btn-lg{padding-left:31px} 22 | .toggle-handle.btn-lg{width:40px} 23 | .toggle.btn-sm{min-width:50px;min-height:30px} 24 | .toggle-on.btn-sm{padding-right:20px} 25 | .toggle-off.btn-sm{padding-left:20px} 26 | .toggle.btn-xs{min-width:35px;min-height:22px} 27 | .toggle-on.btn-xs{padding-right:12px} 28 | .toggle-off.btn-xs{padding-left:12px} -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icomingi/metro/bb78b72ecadc57e0c8deedf9731a78a65ab62ef4/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icomingi/metro/bb78b72ecadc57e0c8deedf9731a78a65ab62ef4/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icomingi/metro/bb78b72ecadc57e0c8deedf9731a78a65ab62ef4/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icomingi/metro/bb78b72ecadc57e0c8deedf9731a78a65ab62ef4/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /js/bootstrap-toggle.min.js: -------------------------------------------------------------------------------- 1 | /*! ======================================================================== 2 | * Bootstrap Toggle: bootstrap-toggle.js v2.2.0 3 | * http://www.bootstraptoggle.com 4 | * ======================================================================== 5 | * Copyright 2014 Min Hur, The New York Times Company 6 | * Licensed under MIT 7 | * ======================================================================== */ 8 | +function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.toggle"),f="object"==typeof b&&b;e||d.data("bs.toggle",e=new c(this,f)),"string"==typeof b&&e[b]&&e[b]()})}var c=function(b,c){this.$element=a(b),this.options=a.extend({},this.defaults(),c),this.render()};c.VERSION="2.2.0",c.DEFAULTS={on:"On",off:"Off",onstyle:"primary",offstyle:"default",size:"normal",style:"",width:null,height:null},c.prototype.defaults=function(){return{on:this.$element.attr("data-on")||c.DEFAULTS.on,off:this.$element.attr("data-off")||c.DEFAULTS.off,onstyle:this.$element.attr("data-onstyle")||c.DEFAULTS.onstyle,offstyle:this.$element.attr("data-offstyle")||c.DEFAULTS.offstyle,size:this.$element.attr("data-size")||c.DEFAULTS.size,style:this.$element.attr("data-style")||c.DEFAULTS.style,width:this.$element.attr("data-width")||c.DEFAULTS.width,height:this.$element.attr("data-height")||c.DEFAULTS.height}},c.prototype.render=function(){this._onstyle="btn-"+this.options.onstyle,this._offstyle="btn-"+this.options.offstyle;var b="large"===this.options.size?"btn-lg":"small"===this.options.size?"btn-sm":"mini"===this.options.size?"btn-xs":"",c=a('