diff --git a/web_app_django/tweet/static/css/hover_window.css b/web_app_django/tweet/static/css/hover_window.css new file mode 100644 index 0000000000000000000000000000000000000000..286cf33a29fb74a8cb83c6682d72671960053a55 --- /dev/null +++ b/web_app_django/tweet/static/css/hover_window.css @@ -0,0 +1,38 @@ +.window_info { + padding: 1rem 1.25rem; + margin-bottom: 1rem; + border-radius: .25rem; + background-color: rgba(50, 138, 175, 0.9); + width: auto; + min-width: 12rem; + border-width: 0; + /* right: 1rem; */ + box-shadow: 0 4px 6px 0 rgba(50, 138, 175, 0.6); + } +.window_info tr .content { + text-align: left; + color: rgb(234, 238, 232); + max-width: 200px; +} +.window_info tr .label { + text-align: left; + color: rgb(236, 225, 123); + max-width: 8rem; +} + +.marker_wrap{ + display: flex; + background-color: rgba(4, 42, 66, 0.8); + width: auto; + min-width: 10rem; + height: 2rem; + border: none; + border-radius: 0.3rem; + text-align: left; +} +.marker_label{ + margin: auto; + flex: 1; + color: rgb(236, 225, 123); + line-height: 1.5rem; +} diff --git a/web_app_django/tweet/static/css/img.css b/web_app_django/tweet/static/css/img.css deleted file mode 100644 index 9affde1e30b56ab70a203b6af540820e5f785d6f..0000000000000000000000000000000000000000 --- a/web_app_django/tweet/static/css/img.css +++ /dev/null @@ -1,20 +0,0 @@ - -a.snapchat{ - position: relative; - background: lightgrey; - } - - a.snapchat img { - position: absolute; - opacity: 0; - width: 100px; - height: 100px; - left: 0; - top: -20px; - transition: opacity .5s, top .5s; - } - - a.snapchat:hover img { - opacity: 1; - top: 20px; - } \ No newline at end of file diff --git a/web_app_django/tweet/static/css/style.css b/web_app_django/tweet/static/css/style.css new file mode 100644 index 0000000000000000000000000000000000000000..d13540f63aee95c34eeaa2eb6f0fd5433837ec21 --- /dev/null +++ b/web_app_django/tweet/static/css/style.css @@ -0,0 +1,640 @@ +html { + font-size: 12px; + } + .amap-copyright{ + box-sizing: content-box + } + * { + box-sizing: border-box + } + .input-textarea{ + color:grey; + height:8em; + overflow:auto; + border-radius:0.4rem; + border:1px solid #ced4da; + margin-bottom:1rem; + } + body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + line-height: 1.5; + font-weight: 300; + color: #111213; + } + + hr { + margin: 0.5rem 0; + box-sizing: content-box; + height: 0; + overflow: visible; + border: 0; + border-top: 1px solid rgba(0, 0, 0, .1) + } + + p { + margin-top: 0; + margin-bottom: 0; + } + + label { + display: inline-block; + margin-bottom: 0.4rem; + } + + label, .btn { + margin-left: 0; + font-size: 1rem; + } + + button, input, select { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; + overflow: visible; + text-transform: none + } + + [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner { + padding: 0; + border-style: none; + } + + input[type=checkbox], input[type=radio] { + box-sizing: border-box; + padding: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + margin: 0 0.5rem 0 0; + } + + h4 { + font-family: inherit; + line-height: 1.8; + font-weight: 300; + color: inherit; + font-size: 1.1rem; + margin-top: 0; + margin-bottom: .5rem + } + + .btn { + /* display: inline-block; */ + margin: 0.25rem; + flex: 1; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out; + background-color: transparent; + background-image: none; + color: #25A5F7; + border-color: #25A5F7; + padding: .25rem .5rem; + line-height: 1.5; + border-radius: 1rem; + -webkit-appearance: button; + cursor:pointer; + } + + .btn:hover { + color: #fff; + background-color: #25A5F7; + border-color: #25A5F7 + } + + .btn:hover { + text-decoration: none + } + + + .input-item { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 3rem; + } + + .input-item:last-child { + margin-bottom: 0; + } + + .input-item>select, .input-item>input[type=text], .input-item>input[type=date] { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; + } + + .input-item>select:not(:last-child), .input-item>input[type=text]:not(:last-child), .input-item>input[type=date]:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 + } + + .input-item>select:not(:first-child), .input-item>input[type=text]:not(:first-child), .input-item>input[type=date]:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 + } + + .input-item-prepend { + margin-right: -1px; + } + + .input-item-text, input[type=text],input[type=date], select { + height: calc(2.2rem + 2px); + } + + .input-item-text { + width: 6rem; + text-align: justify; + padding: 0.4rem 0.7rem; + display: inline-block; + text-justify: distribute-all-lines; + /*ie6-8*/ + text-align-last: justify; + /* ie9*/ + -moz-text-align-last: justify; + /*ff*/ + -webkit-text-align-last: justify; + /*chrome 20+*/ + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: .25rem; + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + + .input-item-text input[type=checkbox], .input-item-text input[type=radio] { + margin-top: 0 + } + + + .input-card { + display: flex; + flex-direction: column; + min-width: 0; + height: auto; + word-wrap: break-word; + background-color:rgba(0, 0, 0, 0.6); + color: white; + background-clip: border-box; + border-radius: .25rem; + width: 22rem; + border-width: 0; + border-radius: 0.4rem; + box-shadow: 0 2px 6px 0 rgba(114, 124, 245, .5); + position: absolute; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 0.75rem 1.25rem; + } + + + .input-text { + line-height: 2rem; + margin-right: 2rem; + } + + .info hr { + margin-right: 0; + margin-left: 0; + border-top-color: grey; + } + + .info { + padding: .75rem 1.25rem; + margin-bottom: 1rem; + border-radius: .25rem; + /* position: fixed; */ + top: 1rem; + background-color: white; + width: auto; + min-width: 22rem; + border-width: 0; + right: 1rem; + box-shadow: 0 2px 6px 0 rgba(114, 124, 245, .5); + } + + + .code { + left: 1.5rem; + right: 1.5rem; + top: 1.5rem; + bottom: 1.5rem; + overflow: auto; + margin-bottom: 0rem; + } + + .code .btn { + top: 1rem; + position: absolute; + right: 1rem; + } + + .code .result { + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 0.5rem; + padding: 1rem; + bottom: 1rem; + position: absolute; + top: 5.5rem; + right: 1rem; + left: 1rem; + overflow: auto; + } + + .code .status { + color: #80adff; + display: inline-block; + font-size: 14px; + } + + .code h4 { + display: inline-block; + max-width: 20rem; + margin-right: 1rem; + margin-bottom: 1rem; + } + + select, input[type=text], input[type=date] { + display: inline-block; + width: 100%; + padding: .375rem 1.75rem .375rem .75rem; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center; + background-size: 8px 10px; + border: 1px solid #ced4da; + border-radius: .25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none + } + + + + input[type=text],input[type=date] { + background: #fff; + padding: .375rem .75rem; + } + + select:focus, input[type=text]:focus, input[type=date]:focus { + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 .1rem rgba(128, 189, 255, .1) + } + + .btn:focus { + outline: 0; + box-shadow: none; + } + + select:focus::-ms-value, input[type=text]:focus::-ms-value,input[type=date]:focus::-ms-value { + color: #495057; + background-color: #fff + } + + + /* native toastr */ + .native-toast { + position: fixed; + background-color: rgba(50, 50, 50, .8); + border-radius: 33px; + color: white; + left: 50%; + text-align: center; + padding: 6px 12px; + opacity: 0; + z-index: 99999; + transition: transform .25s, opacity .25s, top .25s; + box-sizing: border-box; + } + + .native-toast-bottom { + bottom: 50px; + -ms-transform: translateX(-50%) translateY(50px); + transform: translateX(-50%) translateY(50px) + } + + .native-toast-bottom.native-toast-shown { + opacity: 1; + -ms-transform: translateX(-50%) translateY(0); + transform: translateX(-50%) translateY(0); + } + + .native-toast-bottom.native-toast-edge { + bottom: 0; + } + + .native-toast-top { + top: 50px; + -ms-transform: translateX(-50%) translateY(-50px); + transform: translateX(-50%) translateY(-50px) + } + + .native-toast-top.native-toast-shown { + opacity: 1; + -ms-transform: translateX(-50%) translateY(0); + transform: translateX(-50%) translateY(0); + } + + .native-toast-top.native-toast-edge { + top: 0; + } + + .native-toast-center { + top: 0; + -ms-transform: translateX(-50%) translateY(-50px); + transform: translateX(-50%) translateY(-50px) + } + + .native-toast-center.native-toast-shown { + opacity: 1; + top: 50%; + -ms-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); + } + + .native-toast-edge { + border-radius: 0; + width: 100%; + text-align: left; + } + + @media screen and (min-width: 40rem) { + .native-toast:not(.native-toast-edge) { + max-width: 18rem; + } + } + + /* + max-width does not seem to work in small screen? + */ + + /*@media screen and (max-width: 768px) { + .native-toast:not(.native-toast-edge) { + max-width: 400px; + } + } + + @media screen and (max-width: 468px) { + .native-toast:not(.native-toast-edge) { + max-width: 300px; + } + }*/ + + /* types */ + + .native-toast-error { + background-color: #d92727; + color: white; + } + + .native-toast-success { + background-color: #62a465; + color: white; + } + + .native-toast-warning { + background-color: #fab01b; + color: white; + } + + .native-toast-info { + background-color: rgb(82, 98, 189); + color: white; + } + + [class^="native-toast-icon-"] { + vertical-align: middle; + margin-right: 8px + } + + [class^="native-toast-icon-"] svg { + width: 16px; + height: 16px; + } + + /********************** custom for project **********************/ + /* 标题框 */ + .title-banner{ + position: fixed; + width: 42rem; + top: 2rem; + left: 0; + height: 6rem; + background: rgba(21, 84, 110, 0.749); + /* border-radius: 0 0.4rem 0.4rem 0; */ + display: flex; + align-items: center; + } + .title-content{ + margin: auto; + text-align: center; + } + .title-content p{ + color: whitesmoke; + font-size: 1.7rem; + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + font-weight: 350; + } + + /* 城市选择框 */ + .selection-hub{ + position: fixed; + left: 2rem; + top: 0; + padding-top: 20%; + width: 20rem; + } + .selection-window{ + display: flex; + flex-flow: column; + align-items: center; + height: 11rem; + border: transparent; + margin: 4rem 0; + padding: 0.5rem; + background-color:rgba(9, 75, 116, 0.264); + box-shadow: 0 4px 6px 0 rgba(50, 138, 175, 0.749); + border-radius: 0.4rem; + } + .selection-window .title{ + position: absolute; + padding: 0.7rem 2rem; + background: rgba(4, 42, 66, 0.75); + transform: translate(0,-60%) + } + .selection-window .title p{ + font-size: 1.5rem; + padding: 0.3rem; + color: rgb(236, 225, 123); + font-weight: 400; + } + .selection-window .content{ + width: 60%; + margin: auto; + } + .select_lg { + align-items: center; + border: none; + outline: none; + height: 5rem; + line-height: 3rem; + padding-left: 2rem; + background-color: rgba(50, 138, 175, 0.749); + color:rgb(255, 255, 255); + font-size: 2rem; + } + .info-hub{ + position: fixed; + right: 2rem; + top: 0; + padding-top: 5%; + width: 40rem; + height: 40rem; + display: -webkit-flex; + display: flex; + flex-flow: column; + /* align-items: center; */ + } + .sub_window { + flex: auto; + min-width: 15rem; + margin: 2rem 0; + height: auto; + word-wrap: break-word; + background-color:rgba(9, 75, 116, 0.264); + color: white; + background-clip: border-box; + border-radius: .25rem; + border-width: 0; + border-radius: 0.4rem; + box-shadow: 0 4px 6px 0 rgba(50, 138, 175, 0.749); + padding: 0.75rem 1.25rem; + } + .sub_window .title{ + display: block; + color: rgb(253, 253, 253); + position: absolute; + transform: translate(25%, -70%); + font-size: 1.35rem; + width: 31rem; + padding: 0.75rem 1rem; + text-align: left; + background: rgba(4, 42, 66, 0.75); + font-weight: 420; + } + .sub_window .rcm_list{ + margin-top: 2rem; + } + .rcm_list .table-header{ + width: 100%; + display: flex; + flex-flow: row; + } + .rcm_list .table-header li{ + flex: 1; + text-align: center; + font-size: 1.5rem; + color: rgb(236, 225, 123); + } + .rcm_list .table-content{ + font-size: 1.2rem; + display: flex; + flex-flow: column; + } + .rcm_list .line-info{ + flex: 1; + width: 100%; + display: flex; + flex-flow: row; + } + .rcm_list .line-info p{ + flex: 1; + text-align: center; + } + + .sub_window .horzontal-spliter{ + margin-top: 2rem; + display: flex; + flex-flow: row; + } + .horzontal-spliter .sublist{ + padding-left: 0.75rem; + display: flex; + flex-flow: column; + } + .sublist .list-item{ + width: 100%; + flex: 1; + display: flex; + flex-flow: row; + align-items: center; + margin-left: 1rem; + } + .sublist .list-item p{ + text-align: center; + padding-left: 0.75rem; + } + + #circle { + width: 10px; + height: 10px; + background: rgb(209,209,255); + -moz-border-radius: 50px; + -webkit-border-radius: 50px; + border-radius: 50px; + } + #circle2 { + width: 10px; + height: 10px; + background: rgb(94,211,229); + -moz-border-radius: 50px; + -webkit-border-radius: 50px; + border-radius: 50px; + } + #circle3 { + width: 10px; + height: 10px; + background: rgb(110, 190, 160); + -moz-border-radius: 50px; + -webkit-border-radius: 50px; + border-radius: 50px; + } + + .chart{ + width: 15rem; + height: 15rem; + color: rgb(110, 190, 160) + } + + + + + + \ No newline at end of file diff --git a/web_app_django/tweet/static/images/circle.png b/web_app_django/tweet/static/images/circle.png deleted file mode 100644 index 8510accf77434e3815005f1923478ea1216b05bf..0000000000000000000000000000000000000000 Binary files a/web_app_django/tweet/static/images/circle.png and /dev/null differ diff --git a/web_app_django/tweet/static/img.js b/web_app_django/tweet/static/img.js deleted file mode 100644 index 365ba8ff7cea14745fbad73073a63042e5b4bb4f..0000000000000000000000000000000000000000 --- a/web_app_django/tweet/static/img.js +++ /dev/null @@ -1,13 +0,0 @@ - -<script> - - $(document).ready(function(){ - $("#Image").mouseover(function(){ - $("#Image").show(); - }); - $("#Image").mouseout(function(){ - $("#Image").hide(); - }); - }); - -</script> diff --git a/web_app_django/tweet/static/js/district.js b/web_app_django/tweet/static/js/district.js new file mode 100644 index 0000000000000000000000000000000000000000..36245a3f2bf20e183fe07123322cab60c29645b3 --- /dev/null +++ b/web_app_django/tweet/static/js/district.js @@ -0,0 +1,8 @@ +var districts = [ + { 'name': 'Melbourne', 'center': '144.946014,-37.815018' ,'size': melval*0.01,'rate':melrate} , + { 'name': 'Sydney', 'center': '151.209900,-33.865143','size':sydval*0.01,'rate':sydrate }, + { 'name': 'Brisbane', 'center': '153.021072,-27.470125' ,'size':brival*0.01,'rate':brirate}, + { 'name': 'Adelaide', 'center': '138.599503,-34.921230' ,'size':adeval*0.01,'rate':aderate}, + { 'name': 'Perth', 'center': '115.857048,-31.953512' ,'size':perval*0.01,'rate':perrate} + +]; \ No newline at end of file diff --git a/web_app_django/tweet/static/js/img.js b/web_app_django/tweet/static/js/img.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/web_app_django/tweet/static/js/infoshow.js b/web_app_django/tweet/static/js/infoshow.js new file mode 100644 index 0000000000000000000000000000000000000000..e0be71683f483c526bf29d99bec782d472e6f1fb --- /dev/null +++ b/web_app_django/tweet/static/js/infoshow.js @@ -0,0 +1,84 @@ +var infoWin; +var tableDom; +var rcmWins =[]; +/** + * 封装便捷的撞题 + * @param {AMap.Map} map + * @param {Array} event + * @param {Object} content + */ + + +function openInfoWin(map, event, content) { + if (!infoWin) { + infoWin = new AMap.InfoWindow({ + isCustom: true, //使用自定义窗体 + offset: new AMap.Pixel(70, -10), + }); + } + + var x = event.offsetX; + var y = event.offsetY; + var lngLat = map.containerToLngLat(new AMap.Pixel(x, y)); + // console.log(lngLat) + + if (!tableDom) { + let infoDom = document.createElement('div'); + infoDom.className = 'window_info'; + tableDom = document.createElement('table'); + infoDom.appendChild(tableDom); + infoWin.setContent(infoDom); + } + + var trStr = ''; + for (var name in content) { + var val = content[name]; + trStr += + '<tr>' + + '<td class="label">' + name + '</td>' + + '<td> </td>' + + '<td class="content">' + val + '</td>' + + '</tr>' + } + + tableDom.innerHTML = trStr; + infoWin.open(map, lngLat); +} + +function closeInfoWin() { + if (infoWin) { + infoWin.close(); + } +} + +function showRcmWin(map,points){ + var coor; + var name; + var price; + if(points.length > 0){ + rcmWins = [] + for(city in points){ + if(points[city].price == 0){ + continue + } + coor = points[city]["center"].split(',') + name = points[city]["name"] + price = points[city]["price"] + var rcmWin = new AMap.Marker({ + position:coor, + content: "<div class = 'marker_wrap' ><div class='marker_label'><p>"+name +" : " +price+"元</p></div></div>", + offset: new AMap.Pixel(-50, -35), + }); + rcmWins.push(rcmWin) + } + map.add(rcmWins) + } + return rcmWins +} + +function closeRcmWin(map,rcmWins){ + rcmWins.forEach(marker => { + map.remove(marker); + }); + rcmWins = [] +} \ No newline at end of file diff --git a/web_app_django/tweet/templates/index.html b/web_app_django/tweet/templates/index.html index 4fb600e2347e796bd266ba02002d4e332feca253..fd0976d2ed96fc002e0ae38dee12bb73d682fe4e 100644 --- a/web_app_django/tweet/templates/index.html +++ b/web_app_django/tweet/templates/index.html @@ -1,43 +1,270 @@ {% load static %} <!DOCTYPE html> <html lang="zh-CN"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>COMP90024 Team:69</title> + <link href="http://a.amap.com/Loca/static/manual/example/style/demo.css" rel="stylesheet"> + <style> + html, + body, + #container { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + } + </style> +</head> +<body> +<div id="container" class="container"> +</div> + <div class="title-banner"> + <div class="title-content"> + <p>The Analysis of the sin of Wrath</p> + <p>based on tweets across the major cities in Melbourne</p> + </div> + </div> +<div class="info-hub"> + <div class="sub_window" style="width:auto"> + <div class="title"> + <p>Hate Speech Rate VS number of assault violence </p> + </div> + <div id="chart" class="chart" ></div> + </div> +</div> - - <body> + - {% if cityInfo %} - {% for city in cityInfo %} - <td>{{city.key}}</td> - <td> {{city.value}}</td> - - {% endfor %} - {% for city1 in cityTotal %} - <td>{{city1.melbourne}}</td> - <td> {{city1.sydney}}</td> - <td> {{city1.adelaide}}</td> - <td> {{city1.perth}}</td> - <td> {{city1.brisbane}}</td> - - {% endfor %} - - <td>{{NswCount}}</td> - <td>{{VicCount}}</td> - <td>{{SaCount}}</td> - {% for cityOld in cityTotalOld %} - <td>{{cityOld.melbourne}}</td> - <td> {{cityOld.sydney}}</td> - <td> {{cityOld.adelaide}}</td> - - {% endfor %} - {%else%} - <hr>NO DATA</hr> + +{% if cityInfo %} +{% for city in cityInfo %} + {% for city1 in cityTotal %} - - {% endif %} - </body> - - + {% if city.key == "melbourne" %} + <script type="text/javascript"> + var melval = "{{city.value}}"; + var melrate = "{{city1.melbourne}}"; + </script> + {% endif %} + + {% if city.key == "sydney" %} + <script> + var sydval = "{{city.value}}"; + var sydrate = "{{city1.sydney}}"; + </script> + {% endif %} + + + {% if city.key == "adelaide" %} + <script> + var adeval = "{{city.value}}"; + var aderate = "{{city1.adelaide}}"; + + </script> + {% endif %} + + {% if city.key == "brisbane" %} + <script> + var brival = "{{city.value}}"; + var brirate = "{{city1.brisbane}}"; + + </script> + {% endif %} + + {% if city.key == "perth" %} + <script> + var perval = "{{city.value}}"; + var perrate = "{{city1.perth}}"; + </script> + {% endif %} + + + {% endfor %} + + {% endfor %} + <script src="{% static 'js/district.js' %}"></script> + + + +<td>{{NswCount}}</td> +<script> + var nswcount = "{{NswCount}}"; +</script> +<td>{{VicCount}}</td> +<script> + var viccount = "{{VicCount}}"; +</script> +<td>{{SaCount}}</td> +<script> + var sacount = "{{SaCount}}"; +</script> +{% for cityOld in cityTotalOld %} +<td>{{cityOld.melbourne}}</td> +<script> + var melold = "{{cityOld.melbourne}}"; +</script> +<td> {{cityOld.sydney}}</td> +<script> + var sydold = "{{cityOld.sydney}}"; +</script> +<td> {{cityOld.adelaide}}</td> +<script> + var adeold = "{{cityOld.adelaide}}"; +</script> + {% endfor %} +{%else%} +<hr>NO DATA</hr> + + + +{% endif %} +<!--<script src="./script/loca.js"></script>--> +<link rel="stylesheet" href="{% static 'css/style.css' %}"/> +<link rel="stylesheet" href="{% static 'css/hover_window.css' %}"/> +<script src="http://webapi.amap.com/loca?v=1.2.0&key=393144ee0738b91f3e93b0c6d0c36562"></script> +<script src= "{% static 'js/infoshow.js' %}"></script> +<script src = "https://www.gstatic.com/charts/loader.js"></script> +<script type = "text/javascript"> + google.charts.load('current', {packages: ['corechart']}); + </script> +<!-- <script src=".\infoshow.js"></script> --> +<script src = "{% static 'js/district.js' %}"></script> + +<script> - </html> \ No newline at end of file + var map = Loca.create('container', { + + zoom: 4.5, + center: [150, -28] + }); + + var layer = Loca.visualLayer({ + eventSupport: true, // selectStyle 配置需要开启 eventSupport: true + container: map, + type: 'point', + shape: 'circle' + }); + + + layer.on('mousemove', function (ev) { + // 事件类型 + var type = ev.type; + // 当前元素的原始数据 + var rawData = ev.rawData; + + // 原始鼠标事件 + var originalEvent = ev.originalEvent; + + openInfoWin(map.getMap(), originalEvent, { + 'City': rawData.name, + 'Hate_Speech_Rate': rawData.rate + }); + }); + + layer.on('mouseleave', function (ev) { + closeInfoWin(); + }); + + layer.setData(districts, { + lnglat: 'center' + }); + + layer.setOptions({ + style: { + radius: function(data){ + return data.value.size + }, + color: '#c54400', + borderColor: '#c5001f', + borderWidth: 1.5, + opacity: 0.3 + }, + + }); + + layer.render(); + + var layer0 = Loca.visualLayer({ + eventSupport: true, // selectStyle 配置需要开启 eventSupport: true + container: map, + type: 'point', + shape: 'circle' + }); + + layer0.setData(districts, { + lnglat: 'center' + }); + + layer0.setOptions({ + style: { + radius:5, + color: '#626262', + borderColor: '#626262', + borderWidth: 1.5, + opacity: 0.8 + }, + selectStyle: { + radius: 10, + color: '#ffe30a', + opacity: 0.8 + } + }); + + layer0.render(); + + + function drawChart() { + // Define the chart to be drawn. + var data = new google.visualization.DataTable(); + var nsw = parseFloat(nswcount); + var vic = parseFloat(viccount); + var sa = parseFloat(sacount); + var syd =parseFloat(sydold); + var mel = parseFloat(melold); + var ade = parseFloat(adeold); + data.addColumn('string', 'State'); + data.addColumn('number', 'Criminal Stastics from Aurin'); + data.addColumn('number', 'Hate Speech Percentage'); + + data.addRows([ + ['Nsw', nsw, syd], + ['Vic', vic, mel], + ['Sa', sa, ade] + + + ]); + + // Set chart options + var options = { + hAxis: { + title: 'State' + }, + vAxis: { + title: '' + }, + 'width':450, + 'height':350, + pointsVisible: true, + backgroundColor:"transparent" + }; + + // Instantiate and draw the chart. + var chart = new google.visualization.LineChart(document.getElementById('chart')); + chart.draw(data, options); + } + google.charts.setOnLoadCallback(drawChart); + + +</script> + + +</body> +</html> + + + \ No newline at end of file diff --git a/web_app_django/tweet/views.py b/web_app_django/tweet/views.py index 6423e190d218622d031d10ffd0bfb95ef002bf21..c1b43192e7d4739d8ed146a45ae88abaf8cddb89 100644 --- a/web_app_django/tweet/views.py +++ b/web_app_django/tweet/views.py @@ -111,7 +111,7 @@ def index(request): - docs = SERVER['tweet_2014_raw'] + docs = SERVER['tweet_2014_results'] cityInfoOld = [] cityTotalOld = [] cityPercentageOld = {} @@ -123,7 +123,7 @@ def index(request): for data in cityInfoOld: if data.key == doc.key: number = (data.value/doc.value)*100 - percentage = str(round(number,2))+"%" + percentage = round(number,2) #print(percentage) cityPercentageOld[data.key] = percentage cityTotalOld.append(cityPercentageOld)