Skip to content

Commit ecee580

Browse files
authored
Merge pull request #19 from SoftwareAteliers/16-netcore30
.NET Core 3.0
2 parents 97f094a + fd3f18e commit ecee580

File tree

14 files changed

+140
-105
lines changed

14 files changed

+140
-105
lines changed

AspNetCoreVueStarter.csproj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp2.2</TargetFramework>
4+
<TargetFramework>netcoreapp3.0</TargetFramework>
55
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
66
<TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
77
<IsPackable>false</IsPackable>
@@ -19,9 +19,8 @@
1919
</PropertyGroup>
2020

2121
<ItemGroup>
22-
<PackageReference Include="Microsoft.AspNetCore.App" />
23-
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="2.2.0" />
24-
<PackageReference Include="VueCliMiddleware" Version="2.2.1" />
22+
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.0.0" />
23+
<PackageReference Include="VueCliMiddleware" Version="3.0.0" />
2524
</ItemGroup>
2625

2726
<ItemGroup>

ClientApp/package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ClientApp/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"lint": "vue-cli-service lint"
99
},
1010
"dependencies": {
11+
"date-fns": "^2.2.1",
1112
"register-service-worker": "^1.6.2",
1213
"vue": "^2.6.10",
1314
"vue-class-component": "^7.1.0",
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { format } from 'date-fns';
2+
3+
export default (date: Date) => {
4+
return format(new Date(date), 'eeee, dd MMMM');
5+
};

ClientApp/src/main.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@ import App from './App.vue';
66
import router from './router';
77
import store from '@/store/index';
88
import './registerServiceWorker';
9+
import dateFilter from '@/filters/date.filter';
910

1011
Vue.config.productionTip = false;
1112

13+
Vue.filter('date', dateFilter);
14+
1215
new Vue({
1316
vuetify,
1417
router,

ClientApp/src/models/Forecast.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export class Forecast {
22
constructor(
3-
public dateFormatted: Date,
3+
public date: Date,
44
public temperatureC: number,
55
public temperatureF: number,
66
public summary: string,

ClientApp/src/views/FetchData.vue

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
class="elevation-1"
1515
>
1616
<v-progress-linear v-slot:progress color="blue" indeterminate></v-progress-linear>
17-
<template v-slot:items="props">
18-
<td>{{ props.item.dateFormatted }}</td>
19-
<td>{{ props.item.temperatureC }}</td>
20-
<td>{{ props.item.temperatureF }}</td>
21-
<td>{{ props.item.summary }}</td>
17+
<template v-slot:item.date="{ item }">
18+
<td>{{ item.date | date }}</td>
19+
</template>
20+
<template v-slot:item.temperatureC="{ item }">
21+
<v-chip :color="getColor(item.temperatureC)" dark>{{ item.temperatureC }}</v-chip>
2222
</template>
2323
</v-data-table>
2424
</v-col>
@@ -56,27 +56,34 @@ export default class FetchDataView extends Vue {
5656
private errorMessage: string = 'Error while loading weather forecast.';
5757
private forecasts: Forecast[] = [];
5858
private headers = [
59-
{ text: 'Date', value: 'dateFormatted' },
59+
{ text: 'Date', value: 'date' },
6060
{ text: 'Temp. (C)', value: 'temperatureC' },
6161
{ text: 'Temp. (F)', value: 'temperatureF' },
6262
{ text: 'Summary', value: 'summary' },
6363
];
6464
65-
private created() {
66-
this.fetchWeatherForecasts();
65+
private getColor(temperature: number) {
66+
if (temperature < 0) {
67+
return 'blue';
68+
} else if (temperature >= 0 && temperature < 30) {
69+
return 'green';
70+
} else {
71+
return 'red';
72+
}
73+
}
74+
private async created() {
75+
await this.fetchWeatherForecasts();
6776
}
6877
69-
private fetchWeatherForecasts() {
70-
axios
71-
.get<Forecast[]>('api/SampleData/WeatherForecasts')
72-
.then((response) => {
73-
this.forecasts = response.data;
74-
})
75-
.catch((e) => {
76-
this.showError = true;
77-
this.errorMessage = `Error while loading weather forecast: ${e.message}.`;
78-
})
79-
.finally(() => (this.loading = false));
78+
private async fetchWeatherForecasts() {
79+
try {
80+
const response = await axios.get<Forecast[]>('api/WeatherForecast');
81+
this.forecasts = response.data;
82+
} catch (e) {
83+
this.showError = true;
84+
this.errorMessage = `Error while loading weather forecast: ${e.message}.`;
85+
}
86+
this.loading = false;
8087
}
8188
}
8289
</script>

Controllers/SampleDataController.cs

Lines changed: 0 additions & 45 deletions
This file was deleted.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using AspNetCoreVueStarter.Models;
6+
using Microsoft.AspNetCore.Mvc;
7+
using Microsoft.Extensions.Logging;
8+
9+
namespace AspNetCoreVueStarter.Controllers
10+
{
11+
[Route("api/[controller]")]
12+
[ApiController]
13+
public class WeatherForecastController : ControllerBase
14+
{
15+
private static readonly string[] Summaries = new[]
16+
{
17+
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
18+
};
19+
20+
private readonly ILogger<WeatherForecastController> _logger;
21+
22+
public WeatherForecastController(ILogger<WeatherForecastController> logger)
23+
{
24+
_logger = logger;
25+
}
26+
27+
[HttpGet]
28+
public IEnumerable<WeatherForecast> Get()
29+
{
30+
var rng = new Random();
31+
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
32+
{
33+
Date = DateTime.Now.AddDays(index),
34+
TemperatureC = rng.Next(-20, 55),
35+
Summary = Summaries[rng.Next(Summaries.Length)]
36+
})
37+
.ToArray();
38+
}
39+
}
40+
}

Models/WeatherForecast.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
6+
namespace AspNetCoreVueStarter.Models
7+
{
8+
public class WeatherForecast
9+
{
10+
public DateTime Date { get; set; }
11+
12+
public int TemperatureC { get; set; }
13+
14+
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
15+
16+
public string Summary { get; set; }
17+
}
18+
}

0 commit comments

Comments
 (0)