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";
6 selector: 'project-card',
9 <div class="col-xs-12">
10 <div class="text-right" role="group">
11 <button class="btn btn-link" (click)="delete(project)">
12 <span class="fa fa-trash fa-size-x2"></span>
18 <table class="table table-striped">
21 <th><span class="fa fa-fw fa-id-badge"></span> <span>Project ID</span></th>
22 <td>{{ project.id }}</td>
25 <th><span class="fa fa-fw fa-exchange"></span> <span>Sharing type</span></th>
26 <td>{{ project.type | readableType }}</td>
29 <th><span class="fa fa-fw fa-folder-open-o"></span> <span>Local path</span></th>
30 <td>{{ project.pathClient }}</td>
32 <tr *ngIf="project.pathServer && project.pathServer != ''">
33 <th><span class="fa fa-fw fa-folder-open-o"></span> <span>Server path</span></th>
34 <td>{{ project.pathServer }}</td>
37 <th><span class="fa fa-fw fa-flag"></span> <span>Status</span></th>
38 <td>{{ project.status }} - {{ project.isInSync ? "Up to Date" : "Out of Sync"}}
39 <button *ngIf="!project.isInSync" class="btn btn-link" (click)="sync(project)">
40 <span class="fa fa-refresh fa-size-x2"></span>
47 styleUrls: ['./app/config/config.component.css']
50 export class ProjectCardComponent {
52 @Input() project: IProject;
55 private alert: AlertService,
56 private configSvr: ConfigService
60 delete(prj: IProject) {
61 this.configSvr.deleteProject(prj)
64 this.alert.error("Delete local ERROR: " + err);
69 this.configSvr.syncProject(prj)
72 this.alert.error("ERROR: " + err);
78 // Remove APPS. prefix if translate has failed
83 export class ProjectReadableTypePipe implements PipeTransform {
84 transform(type: ProjectType): string {
86 case ProjectType.NATIVE_PATHMAP: return "Native (path mapping)";
87 case ProjectType.SYNCTHING: return "Cloud (Syncthing)";
88 default: return String(type);