Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

root / src / app / settings / settings.component.ts @ 54800558

Historique | Voir | Annoter | Télécharger (7,29 ko)

1
import { Component, OnInit } from "@angular/core";
2
import { RadSideDrawer } from "nativescript-ui-sidedrawer";
3
import { TextField } from "tns-core-modules/ui/text-field";
4
import { EventData } from "tns-core-modules/data/observable";
5
import { getViewById } from "tns-core-modules/ui/core/view";
6
import { View } from "tns-core-modules/ui/core/view";
7
import { Page } from "tns-core-modules/ui/page";
8
import { ActivatedRoute } from "@angular/router";
9
import { RouterExtensions } from "nativescript-angular/router";
10
import { getFile, getImage, getJSON, request, HttpResponse } from "tns-core-modules/http";
11
import { getString, setString, hasKey, remove, clear } from "tns-core-modules/application-settings";
12
import { ListPicker } from "tns-core-modules/ui/list-picker";
13
import { getFrameById } from "tns-core-modules/ui/frame";
14
import { ObservableArray, ChangedData } from "tns-core-modules/data/observable-array";
15
import { CheckBox } from '@nstudio/nativescript-checkbox';
16
import { topmost } from 'tns-core-modules/ui/frame';
17

    
18
import * as dialogs from "tns-core-modules/ui/dialogs";
19
import * as app from "tns-core-modules/application";
20
import { observable } from "rxjs";
21
import { RadioOption } from "./radio-option";
22

    
23
@Component({
24
    selector: "Settings",
25
    templateUrl: "./settings.component.html"
26
})
27
export class SettingsComponent implements OnInit {
28
    public pseudo: string;
29
    public email: string;
30
    public serverJSON: JSON;
31
    public serverName: string;
32
    public serverURI: string;
33
    public serverLabel: string;
34
    radioOptions?: Array<RadioOption>;
35

    
36
    constructor(private routerExtensions: RouterExtensions, private activeRoute: ActivatedRoute) {
37
        // Use the component constructor to inject providers.
38
    }
39

    
40
    ngOnInit(): void {
41
        this.radioOptions = [];
42

    
43
        let serversLabelTMP = Array();
44
        // Init your component properties here.
45
        this.pseudo = getString("pseudo", "");
46
        this.email = getString("email", "");
47
        this.serverName = getString("serverName", "");
48
        this.serverURI = getString("serverURI", "");
49

    
50
        //On recupere les infos serveurs et en particulier la liste des serveurs disponibles
51
        this.serverJSON = JSON.parse(getString("serverJSON"));
52

    
53
        let i = 0;
54
        this.serverJSON['servers'].forEach(element => {
55
            console.log(" JSON element : ", element.name);
56
            let option = new RadioOption(element.label, element.uri);
57
            this.radioOptions.push(option);
58
            if (i == 0) {
59
                console.log(" Premier element on le checked : ", element.label);
60
                this.serverLabel = element.label;
61
                this.serverName = element.label;
62
                this.serverURI = element.uri;
63
                option.selected = true;
64
            }
65
            i++;
66
        });
67
    }
68

    
69
    changeCheckedRadio(radioOption: RadioOption): void {
70
        radioOption.selected = !radioOption.selected;
71

    
72
        if (!radioOption.selected) {
73
            return;
74
        }
75

    
76
        this.serverLabel = radioOption.label;
77
        this.serverName = radioOption.label;
78
        this.serverURI = radioOption.uri;
79

    
80
        // uncheck all other options
81
        this.radioOptions.forEach(option => {
82
            //On est sur un qu'il faut décocher
83
            if (option.label !== radioOption.label) {
84
                option.selected = false;
85
            }
86
            //On est sur le choix coché
87
        });
88
    }
89

    
90

    
91
    onDrawerButtonTap(): void {
92
        const sideDrawer = <RadSideDrawer>app.getRootView();
93
        sideDrawer.showDrawer();
94
    }
95

    
96
    onFocus(args: EventData): void {
97
        console.log("on focus: ");
98
    }
99

    
100
    onBlur(args: EventData): void {
101
        const tf = <TextField>args.object;
102
        this.pseudo = tf.text.toLowerCase().replace(/[^a-z0-9]/g, "");
103
        tf.text = this.pseudo;
104
    }
105

    
106
    onReturnPress(args: EventData): void {
107
        console.log("on returnpress");
108
    }
109

    
110
    onTextChange(args: EventData): void {
111
        console.log("on textChange ");
112
    }
113

    
114
    onSelectedIndexChanged(args: EventData) {
115
        const picker = <ListPicker>args.object;
116
        console.log('index: ${picker.selectedIndex}; item" ${this.years[picker.selectedIndex]}');
117
    }
118

    
119
    onSaveTap(args: EventData): void {
120
        // alert("on sauvegarde ...");
121
        let button = <View>args.object;
122
        let parent = button.parent;
123
        if (parent) {
124
            let p = <TextField>getViewById(parent, "pseudo");
125
            let e = <TextField>getViewById(parent, "email");
126

    
127
            this.pseudo = p.text.toLowerCase().replace(/[^a-z0-9]/g, "")
128
            this.email = e.text;
129

    
130
            // console.log("on a un parent, le pseudo : " + this.pseudo);
131
            // console.log("le mail : " + this.email);
132

    
133
            if (this.pseudo == "" || this.email == "") {
134
                dialogs.alert({
135
                    title: "Pseudo ou email vide !",
136
                    message: "Veuillez saisir un pseudo et une adresse mail...",
137
                    okButtonText: "Ok"
138
                });
139
            }
140
            else {
141
                //il faudrait demander au serveur si ce pseudo n'est pas déjà utilisé ...
142
                request({
143
                    url: "https://" + this.serverURI + "/api.php",
144
                    method: "POST",
145
                    headers: { "Content-Type": "application/json" },
146
                    content: JSON.stringify({
147
                        command: "createUser",
148
                        pseudo: this.pseudo,
149
                        email: this.email
150
                    })
151
                }).then((response) => {
152
                    const result = response.content.toJSON();
153
                    console.log("Valeur de loginOK dans le retour request : ", result['loginOK']);
154

    
155
                    if (result['loginOK'] == true) {
156
                        setString("pseudo", this.pseudo);
157
                        setString("email", this.email);
158
                        setString("serverURI", this.serverURI);
159
                        setString("serverName", this.serverName);
160
                        dialogs.alert({
161
                            title: "Pseudo enregistré !",
162
                            message: "Votre pseudo est maintenant associé à votre adresse email vous pouvez utiliser l'application.",
163
                            okButtonText: "Ok"
164
                        }).then(() => {
165
                            this.routerExtensions.navigate(["/home"], { relativeTo: this.activeRoute });
166
                        });
167
                    }
168
                    else {
169
                        console.log("Pseudo déjà utilisé");
170
                        dialogs.alert({
171
                            title: "Pseudo déjà utilisé !",
172
                            message: "Malheureusement ce pseudo est déjà utilisé par quelqu'un d'autre. Veuillez changer de pseudo et tenter à nouveau votre chance :-)",
173
                            okButtonText: "Ok"
174
                        });
175
                    }
176
                }, (e) => {
177
                    console.log("request Error :", e);
178
                    dialogs.alert({
179
                        title: "Erreur de vérification !",
180
                        message: "Une erreur de communication avec le serveur nous empêche de vérifier si ce pseudo est déjà utilisé ... ré-essayez plus tard.",
181
                        okButtonText: "Ok"
182
                    });
183
                });
184
            }
185
        }
186
    }
187
}
Redmine Appliance - Powered by TurnKey Linux