Skip to content
This repository was archived by the owner on May 5, 2023. It is now read-only.

Commit df748c7

Browse files
committed
feat: add incr fields to statistics api and show them in demo
1 parent e0704f5 commit df748c7

File tree

5 files changed

+77
-17
lines changed

5 files changed

+77
-17
lines changed

demo/index.html

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<body>
1212
<header id="header">
1313
<h3 class="header-title">新冠肺炎(2019-nCov)疫情</h3>
14-
<div class="header-info header-info-l">数据来源:丁香园<small>(前往 <a href="https://github.com/leafcoder" target="_blank" style="color: #FFFFFF;">leafcoder/django-covid19</a></small></div>
14+
<div class="header-info header-info-l">数据来源:丁香园<small>(前往 <a href="https://github.com/leafcoder/django-covid19" target="_blank" style="color: #FFFFFF;">leafcoder/django-covid19</a></small></div>
1515
<div class="header-info header-info-r">时间:<span id="nowDate"></span><small>(每隔1分钟自动刷新)</small></div>
1616
</header>
1717

@@ -30,41 +30,47 @@ <h3 class="chart-title">现存确诊数排行前 10 位的国家</h3>
3030
</div>
3131
<div class="flex-cell flex-cell-c" style="padding-right:0;">
3232
<div class="chart-wrapper">
33-
<h3 class="chart-title">统计数据</h3>
33+
<h3 class="chart-title">国内外统计数据</h3>
3434
<div class="chart-div chart-done">
3535
<table class="data-t">
3636
<tr>
3737
<th><img src="img/icon-01.png" /></th>
3838
<td>
39+
<p>较昨日 <span id="internationalCurrentConfirmedIncr">0</span></p>
3940
<p><span id="internationalCurrentConfirmedCount">0</span></p>
40-
<p>国外现存确认</p>
41+
<p>国外现存确诊</p>
4142
</td>
4243
<th><img src="img/icon-02.png" /></th>
4344
<td>
45+
<p>较昨日 <span id="domesticCurrentConfirmedIncr">0</span></p>
4446
<p><span id="domesticCurrentConfirmedCount">0</span></p>
45-
<p>中国现存确认</p>
47+
<p>中国现存确诊</p>
4648
</td>
4749
</tr>
4850
<tr>
4951
<th><img src="img/icon-03.png" /></th>
5052
<td>
53+
<p>较昨日 <span id="internationalConfirmedIncr">0</span></p>
5154
<p><span id="internationalConfirmedCount">0</span></p>
5255
<p>国外累计确诊</p>
5356
</td>
5457
<th><img src="img/icon-04.png" /></th>
5558
<td>
59+
<p>较昨日 <span id="domesticConfirmedIncr">0</span></p>
5660
<p><span id="domesticConfirmedCount">0</span></p>
5761
<p>中国累计确诊</p>
5862
</td>
5963
</tr>
6064
<tr>
6165
<th><img src="img/icon-05.png" /></th>
6266
<td>
67+
<p>较昨日 <span id="internationalDeadIncr">0</span></p>
6368
<p><span id="internationalDeadCount">0</span></p>
6469
<p>国外死亡人数</p>
6570
</td>
6671
<th><img src="img/icon-06.png" /></th>
6772
<td>
73+
<p>较昨日 <span id="domesticDeadIncr">0</span></p>
6874
<p><span id="domesticDeadCount">0</span></p>
6975
<p>中国死亡人数</p>
7076
</td>
@@ -129,13 +135,41 @@ <h3 class="chart-title">各国累计确诊占比</h3>
129135
url: "http://111.231.75.86:8000/api/statistics/latest",
130136
dataType: "json"
131137
}).done(function(data) {
132-
//console.log('Data: ', data);
133138
rollNum("internationalConfirmedCount", 0, data.internationalStatistics.confirmedCount);
134139
rollNum("internationalDeadCount", 0, data.internationalStatistics.deadCount);
135140
rollNum("internationalCurrentConfirmedCount", 0, data.internationalStatistics.currentConfirmedCount);
136141
rollNum("domesticConfirmedCount", 0, data.domesticStatistics.confirmedCount);
137142
rollNum("domesticDeadCount", 0, data.domesticStatistics.deadCount);
138143
rollNum("domesticCurrentConfirmedCount", 0, data.domesticStatistics.currentConfirmedCount);
144+
if (data.internationalStatistics.confirmedIncr > 0)
145+
$("#internationalConfirmedIncr").html('+' + data.internationalStatistics.confirmedIncr)
146+
else
147+
$("#internationalConfirmedIncr").html(data.internationalStatistics.confirmedIncr)
148+
;
149+
if (data.internationalStatistics.deadIncr > 0)
150+
$("#internationalDeadIncr").html('+' + data.internationalStatistics.deadIncr)
151+
else
152+
$("#internationalDeadIncr").html(data.internationalStatistics.deadIncr);
153+
154+
if (data.internationalStatistics.currentConfirmedIncr > 0)
155+
$("#internationalCurrentConfirmedIncr").html('+' + data.internationalStatistics.currentConfirmedIncr)
156+
else
157+
$("#internationalCurrentConfirmedIncr").html(data.internationalStatistics.currentConfirmedIncr);
158+
159+
if (data.domesticStatistics.confirmedIncr > 0)
160+
$("#domesticConfirmedIncr").html('+' + data.domesticStatistics.confirmedIncr)
161+
else
162+
$("#domesticConfirmedIncr").html(data.domesticStatistics.confirmedIncr)
163+
;
164+
if (data.domesticStatistics.deadIncr > 0)
165+
$("#domesticDeadIncr").html('+' + data.domesticStatistics.deadIncr)
166+
else
167+
$("#domesticDeadIncr").html(data.domesticStatistics.deadIncr)
168+
;
169+
if (data.domesticStatistics.currentConfirmedIncr > 0)
170+
$("#domesticCurrentConfirmedIncr").html('+' + data.domesticStatistics.currentConfirmedIncr)
171+
else
172+
$("#domesticCurrentConfirmedIncr").html(data.domesticStatistics.currentConfirmedIncr)
139173
}).fail(function(jqXHR, textStatus) {
140174
console.log("Ajax Error: ", textStatus);
141175
});

ncovapi/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ class Statistics(models.Model):
3333
seriousCount = models.IntegerField('现存无症状', default=0)
3434
curedCount = models.IntegerField(default=0)
3535
deadCount = models.IntegerField(default=0)
36+
currentConfirmedIncr = models.IntegerField(default=0)
37+
confirmedIncr = models.IntegerField(default=0)
38+
suspectedIncr = models.IntegerField(default=0)
39+
curedIncr = models.IntegerField(default=0)
40+
deadIncr = models.IntegerField(default=0)
3641
crawler = models.ForeignKey(
3742
"Crawler", on_delete=models.CASCADE, related_name="statistics",
3843
db_column="crawlerId"

ncovapi/serializers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ class StatisticsGroupSerializer(serializers.Serializer):
1313
curedCount = serializers.IntegerField()
1414
deadCount = serializers.IntegerField()
1515

16+
currentConfirmedIncr = serializers.IntegerField()
17+
confirmedIncr = serializers.IntegerField()
18+
suspectedIncr = serializers.IntegerField()
19+
curedIncr = serializers.IntegerField()
20+
deadIncr = serializers.IntegerField()
21+
1622

1723
class WHOArticleSerializer(serializers.Serializer):
1824

ncovapi/views.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ def get_object(self):
4444
item['seriousCount'] = inst.seriousCount
4545
item['curedCount'] = inst.curedCount
4646
item['deadCount'] = inst.deadCount
47+
item['currentConfirmedIncr'] = inst.currentConfirmedIncr
48+
item['confirmedIncr'] = inst.confirmedIncr
49+
item['suspectedIncr'] = inst.suspectedIncr
50+
item['curedIncr'] = inst.curedIncr
51+
item['deadIncr'] = inst.deadIncr
4752
countryType = inst.countryType
4853
if countryType == Statistics.GLOBAL:
4954
result['globalStatistics'] = item

spider/nCoV/spiders/dxy.py

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# @Author: zhanglei3
33
# @Date: 2020-04-08 09:08:13
44
# @Last Modified by: leafcoder
5-
# @Last Modified time: 2020-04-30 10:09:06
5+
# @Last Modified time: 2020-05-01 00:05:04
66

77
"""丁香园数据源"""
88

@@ -76,14 +76,18 @@ def parse(self, response):
7676
country.pop('provinceShortName')
7777
country.pop('modifyTime', None)
7878
country.pop('createTime', None)
79-
country['incrVo'] = json.dumps(country['incrVo'])
80-
yield scrapy.Request(
81-
country['statisticsData'],
82-
callback=self.parse_country_statistics_data,
83-
meta={
84-
'country': country
85-
}
86-
)
79+
country['incrVo'] = json.dumps(country.get('incrVo', {}))
80+
statistics_data = country.get('statisticsData')
81+
if statistics_data:
82+
yield scrapy.Request(
83+
statistics_data,
84+
callback=self.parse_country_statistics_data,
85+
meta={
86+
'country': country
87+
}
88+
)
89+
else:
90+
yield items.CountryItem(dailyData=[], **country)
8791

8892
# 时间线事件,id=“getTimelineService2” 为英文内容
8993
timelines = self.get_list(scripts, '#getTimelineService1')
@@ -161,7 +165,9 @@ def explain_statistics(self, data):
161165
item = {}
162166
for key in (
163167
'currentConfirmedCount', 'curedCount', 'confirmedCount',
164-
'seriousCount', 'suspectedCount', 'deadCount'):
168+
'seriousCount', 'suspectedCount', 'deadCount',
169+
'currentConfirmedIncr', 'curedIncr', 'confirmedIncr',
170+
'suspectedIncr', 'deadIncr'):
165171
item[key] = statistics.get(key, 0)
166172
item['countryType'] = items.StatisticsItem.django_model.GLOBAL
167173
yield items.StatisticsItem(**item)
@@ -170,7 +176,9 @@ def explain_statistics(self, data):
170176
item = {}
171177
for key in (
172178
'currentConfirmedCount', 'curedCount', 'confirmedCount',
173-
'seriousCount', 'suspectedCount', 'deadCount'):
179+
'seriousCount', 'suspectedCount', 'deadCount',
180+
'currentConfirmedIncr', 'curedIncr', 'confirmedIncr',
181+
'suspectedIncr', 'deadIncr'):
174182
item[key] = statistics.get(key, 0)
175183
item['countryType'] \
176184
= items.StatisticsItem.django_model.INTERNATIONAL
@@ -180,7 +188,9 @@ def explain_statistics(self, data):
180188
item = {}
181189
for key in (
182190
'currentConfirmedCount', 'curedCount', 'confirmedCount',
183-
'seriousCount', 'suspectedCount', 'deadCount'):
191+
'seriousCount', 'suspectedCount', 'deadCount',
192+
'currentConfirmedIncr', 'curedIncr', 'confirmedIncr',
193+
'suspectedIncr', 'deadIncr'):
184194
item[key] = statistics.get(key, 0)
185195
item['countryType'] = items.StatisticsItem.django_model.DOMESTIC
186196
yield items.StatisticsItem(**item)

0 commit comments

Comments
 (0)