Moved project creation in a modal windows
[src/xds/xds-server.git] / webapp / src / app / projects / projectCard.component.ts
1 import { Component, Input, Pipe, PipeTransform } from '@angular/core';
2 import { ConfigService, IProject, ProjectType } from "../services/config.service";
3 import { AlertService } from "../services/alert.service";
4
5 @Component({
6     selector: 'project-card',
7     template: `
8         <div class="row">
9             <div class="col-xs-12">
10                 <div class="text-right" role="group">
11                     <button class="btn btn-link" (click)="delete(project)"><span class="fa fa-trash fa-size-x2"></span></button>
12                 </div>
13             </div>
14         </div>
15
16         <table class="table table-striped">
17             <tbody>
18             <tr>
19                 <th><span class="fa fa-fw fa-id-badge"></span>&nbsp;<span>Project ID</span></th>
20                 <td>{{ project.id }}</td>
21             </tr>
22             <tr>
23                 <th><span class="fa fa-fw fa-exchange"></span>&nbsp;<span>Sharing type</span></th>
24                 <td>{{ project.type | readableType }}</td>
25             </tr>
26             <tr>
27                 <th><span class="fa fa-fw fa-folder-open-o"></span>&nbsp;<span>Local path</span></th>
28                 <td>{{ project.pathClient }}</td>
29             </tr>
30             <tr *ngIf="project.pathServer != ''">
31                 <th><span class="fa fa-fw fa-folder-open-o"></span>&nbsp;<span>Server path</span></th>
32                 <td>{{ project.pathServer }}</td>
33             </tr>
34             <!--
35             <tr>
36                 <th><span class="fa fa-fw fa-status"></span>&nbsp;<span>Status</span></th>
37                 <td>{{ project.remotePrjDef.status }}</td>
38             </tr>
39             -->
40             </tbody>
41         </table >
42     `,
43     styleUrls: ['./app/config/config.component.css']
44 })
45
46 export class ProjectCardComponent {
47
48     @Input() project: IProject;
49
50     constructor(
51         private alert: AlertService,
52         private configSvr: ConfigService
53     ) {
54     }
55
56
57     delete(prj: IProject) {
58         this.configSvr.deleteProject(prj)
59             .subscribe(res => {
60             }, err => {
61                 this.alert.error("Delete local ERROR: " + err);
62             });
63     }
64
65 }
66
67 // Remove APPS. prefix if translate has failed
68 @Pipe({
69     name: 'readableType'
70 })
71
72 export class ProjectReadableTypePipe implements PipeTransform {
73     transform(type: ProjectType): string {
74         switch (type) {
75             case ProjectType.NATIVE_PATHMAP: return "Native (path mapping)";
76             case ProjectType.SYNCTHING: return "Cloud (Syncthing)";
77             default: return String(type);
78         }
79     }
80 }