diff --git a/api/routes/campaigns.js b/api/routes/campaigns.js index b095dbf..983efe5 100644 --- a/api/routes/campaigns.js +++ b/api/routes/campaigns.js @@ -54,6 +54,22 @@ campaigns.route('/:id') return next(); }); }) + + .delete((req, res, next) => { + CampaignModel.findByIdAndRemove(req.params.id, (err, item) => { + if (err) { + err.status = codes.wrongrequest; + return next(err); + } + else if (!item) { + err = new Error("item not found"); + err.status = codes.notfound; + return next(err); + } + return next(); + }) + }) + .all( routerHandling.httpMethodNotAllowed ); diff --git a/static/src/app/app.config.ts b/static/src/app/app.config.ts index 2559dbd..2eb172f 100644 --- a/static/src/app/app.config.ts +++ b/static/src/app/app.config.ts @@ -14,6 +14,7 @@ export class AppConfig { public readonly apiRequestAwardPath = this.apiUrl + '/request/award'; public readonly apiPromotionPath = this.apiUrl + '/request/promotion'; public readonly apiWarPath = this.apiUrl + '/wars'; + public readonly apiCampaignPath = this.apiUrl + '/campaigns'; } diff --git a/static/src/app/services/campaign-service/campaign.service.ts b/static/src/app/services/campaign-service/campaign.service.ts new file mode 100644 index 0000000..392bb85 --- /dev/null +++ b/static/src/app/services/campaign-service/campaign.service.ts @@ -0,0 +1,31 @@ +import {Injectable} from "@angular/core"; +import {Campaign} from "../../models/model-interfaces"; +import {AppConfig} from "../../app.config"; +import {HttpClient} from "../http-client"; + +@Injectable() +export class CampaignService { + + campaigns: Campaign[]; + + constructor(private http: HttpClient, + private config: AppConfig) { + } + + getAllCampaigns() { + return this.http.get(this.config.apiWarPath) + .map(res => res.json()) + } + + submitCampaign(campaign: Campaign) { + return this.http.post(this.config.apiCampaignPath, campaign) + .map(res => res.json()) + } + + deleteCampaign(id: string) { + return this.http.delete(this.config.apiCampaignPath + '/' + id) + .map(res => res.json()) + } + +} + diff --git a/static/src/app/services/war-service/war.service.ts b/static/src/app/services/war-service/war.service.ts index 1c2bf61..ee17911 100644 --- a/static/src/app/services/war-service/war.service.ts +++ b/static/src/app/services/war-service/war.service.ts @@ -1,22 +1,15 @@ import {Injectable} from "@angular/core"; -import {Campaign, War} from "../../models/model-interfaces"; +import {War} from "../../models/model-interfaces"; import {AppConfig} from "../../app.config"; import {HttpClient} from "../http-client"; @Injectable() export class WarService { - campaigns: Campaign[]; - constructor(private http: HttpClient, private config: AppConfig) { } - getAllCampaigns() { - return this.http.get(this.config.apiWarPath) - .map(res => res.json()) - } - getWar(warId: string) { return this.http.get(this.config.apiWarPath + '/' + warId) .map(res => res.json()) diff --git a/static/src/app/statistic/overview/stats-overview.component.ts b/static/src/app/statistic/overview/stats-overview.component.ts index b350b0a..ca737fc 100644 --- a/static/src/app/statistic/overview/stats-overview.component.ts +++ b/static/src/app/statistic/overview/stats-overview.component.ts @@ -1,7 +1,7 @@ import {Component} from "@angular/core"; -import {WarService} from "../../services/war-service/war.service"; import {ActivatedRoute} from "@angular/router"; import {CarouselConfig} from "ngx-bootstrap"; +import {CampaignService} from "../../services/campaign-service/campaign.service"; @Component({ @@ -26,7 +26,7 @@ export class StatisticOverviewComponent { }; constructor(private route: ActivatedRoute, - private warService: WarService) { + private campaignService: CampaignService) { } ngOnInit() { @@ -34,10 +34,10 @@ export class StatisticOverviewComponent { .map(params => params['id']) .subscribe((id) => { this.id = id; - if (this.warService.campaigns) { - this.initWars(this.warService.campaigns); + if (this.campaignService.campaigns) { + this.initWars(this.campaignService.campaigns); } else { - this.warService.getAllCampaigns().subscribe(campaigns => { + this.campaignService.getAllCampaigns().subscribe(campaigns => { this.initWars(campaigns); }) } diff --git a/static/src/app/statistic/stats.module.ts b/static/src/app/statistic/stats.module.ts index b1ce602..ff13c4b 100644 --- a/static/src/app/statistic/stats.module.ts +++ b/static/src/app/statistic/stats.module.ts @@ -6,12 +6,13 @@ import {WarService} from "../services/war-service/war.service"; import {DataTableModule} from "angular2-datatable"; import {LineChartModule, PieChartModule} from "@swimlane/ngx-charts"; import {AccordionModule, CarouselModule} from "ngx-bootstrap"; +import {CampaignService} from "../services/campaign-service/campaign.service"; @NgModule({ declarations: statsRoutingComponents, imports: [CommonModule, SharedModule, statsRouterModule, LineChartModule, PieChartModule, AccordionModule.forRoot(), CarouselModule.forRoot(), DataTableModule], - providers: [WarService] + providers: [WarService, CampaignService] }) export class StatsModule { static routes = statsRouterModule; diff --git a/static/src/app/statistic/war-detail/war-detail.component.css b/static/src/app/statistic/war-detail/war-detail.component.css index b96dc82..63e13d6 100644 --- a/static/src/app/statistic/war-detail/war-detail.component.css +++ b/static/src/app/statistic/war-detail/war-detail.component.css @@ -2,6 +2,7 @@ position: fixed; overflow-y: scroll; overflow-x: hidden; + border-left: thin solid lightgrey; bottom: 20px; width: 100%; padding-left: 50px; diff --git a/static/src/app/statistic/war-list/war-list.component.css b/static/src/app/statistic/war-list/war-list.component.css index 971ee7a..2b5a65a 100644 --- a/static/src/app/statistic/war-list/war-list.component.css +++ b/static/src/app/statistic/war-list/war-list.component.css @@ -3,7 +3,8 @@ } :host /deep/ .card-header { - background-color: slategray; + background-color: #222222; + cursor: pointer; padding: 15px; color: white; font-weight: 600; diff --git a/static/src/app/statistic/war-list/war-list.component.html b/static/src/app/statistic/war-list/war-list.component.html index 2dfae0c..5e1d82c 100644 --- a/static/src/app/statistic/war-list/war-list.component.html +++ b/static/src/app/statistic/war-list/war-list.component.html @@ -1,15 +1,23 @@
-