client/app/app.js
author cavaliet
Thu, 09 Oct 2014 15:25:56 +0200
changeset 7 813fec862542
parent 6 c53e9b24f93f
child 9 ae8a74bd6add
permissions -rw-r--r--
little correction
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     1
(function(){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     2
    'use strict';
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     3
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     4
    angular.module('mons', [ 'ngResource', 'ngRoute', 'autocomplete' ])
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     5
        .config(function($routeProvider) {
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     6
            $routeProvider.
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     7
                when('/', {
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     8
                    controller: 'homeCtrl'
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
     9
               }).
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    10
               otherwise({
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    11
                   redirectTo: '/'
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    12
               });
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    13
        })
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    14
        .config(function($logProvider){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    15
            $logProvider.debugEnabled(true);
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    16
        })
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    17
        .service('dataApi', function($resource, context) {
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    18
            console.log('dataApi',$resource, context);
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    19
            this.dataResource = $resource(context.urls.dataUrl);
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    20
        })
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    21
        .service('dataModel', function(dataApi) {
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    22
            //console.log('dataModel',this,dataApi);
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    23
            this.data = dataApi.dataResource.get();
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    24
        })
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    25
        .controller('homeCtrl', function($scope, $location, dataModel, context){
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    26
            //console.log('homeCtrl 1', $scope, $location, context);
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    27
            console.log('homeCtrl 2', context);
1
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    28
            $scope.data = dataModel.data;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    29
            
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    30
            dataModel.data.$promise.then(function(data) {
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    31
                if(typeof data.categories!=='undefined' && data.categories.length>0){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    32
                    var cats = [];
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    33
                    var nbCat = data.categories.length;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    34
                    for(var i=0;i<nbCat;i++){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    35
                        cats.push(data.categories[i].label);
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    36
                        if(typeof data.categories[i].subcategories!=='undefined' && data.categories[i].subcategories.length>0){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    37
                            var nbSubCat = data.categories[i].subcategories.length;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    38
                            for(var j=0;j<nbSubCat;j++){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    39
                                cats.push(data.categories[i].subcategories[j].label);
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    40
                            }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    41
                        }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    42
                    }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    43
                    $scope.allCatLabels = cats;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    44
                }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    45
            });
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    46
            
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    47
            $scope.selectedlevel = false;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
    48
            
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    49
            
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    50
            
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    51
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    52
            // Socket management
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    53
            var sock = null;
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    54
            var ellog = null;
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    55
            
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    56
            ellog = document.getElementById('log');
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    57
            function log(m) {
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    58
                if(ellog){
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    59
                    ellog.innerHTML += m + '\n';
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    60
                    ellog.scrollTop = ellog.scrollHeight;
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    61
                }
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    62
            }
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    63
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    64
            var wsuri;
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    65
            if (window.location.protocol === 'file:') {
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    66
                wsuri = 'ws://127.0.0.1:8090/annot';
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    67
            } else {
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    68
                wsuri = 'ws://' + window.location.hostname + ':8090/annot';
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    69
            }
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    70
            wsuri = wsuri + '?event=test';
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    71
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    72
            if ('WebSocket' in window) {
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    73
                sock = new WebSocket(wsuri);
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    74
            } else if ('MozWebSocket' in window) {
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    75
                sock = new window.MozWebSocket(wsuri);
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    76
            } else {
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    77
                if(context.logging===true){
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    78
                    log('Browser does not support WebSocket!');
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    79
                }
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    80
                window.location = 'http://autobahn.ws/unsupportedbrowser';
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    81
            }
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    82
            console.log('socket in controller = ', sock);
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    83
            if (sock) {
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    84
                sock.onopen = function() {
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    85
                    if(context.logging===true){
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    86
                        log('Connected to ' + wsuri);
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    87
                    }
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    88
                };
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    89
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    90
                sock.onclose = function(e) {
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    91
                    if(context.logging===true){
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    92
                        log('Connection closed (wasClean = ' + e.wasClean + ', code = ' + e.code + ', reason = ' + e.reason + ')');
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    93
                    }
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    94
                    alert('Communication interrompue : la socket vient de se fermer.');
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    95
                    sock = null;
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    96
                };
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    97
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
    98
                sock.onmessage = function(e) {
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
    99
                    if(context.logging===true){
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   100
                        log('Got message: ' + e.data);
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   101
                    }
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   102
                    alert('Annotation bien reçue.');
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   103
                };
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   104
            }
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   105
1
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   106
            $scope.sendAnnotation = function(eventCode){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   107
                if($scope.username==='' || typeof $scope.username==='undefined'){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   108
                    alert('Vous devez indiquer un nom d\'utilisateur.');
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   109
                    return;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   110
                }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   111
                if(eventCode==='' || typeof eventCode==='undefined'){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   112
                    alert('Vous devez indiquer un nom de catégorie.');
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   113
                    return;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   114
                }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   115
                // Send query
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   116
                if (sock) {
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   117
                    var new_annot = {
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   118
                            categories : eventCode,
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   119
                            user : $scope.username
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   120
                    };
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   121
                    sock.send(JSON.stringify(new_annot));
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   122
                    if(context.logging===true){
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   123
                        log('Sent: ' + JSON.stringify(new_annot));
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   124
                    }
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   125
                } else {
7
813fec862542 little correction
cavaliet
parents: 6
diff changeset
   126
                    alert('La socket ne fonctionne pas.');
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   127
                    if(context.logging===true){
7
813fec862542 little correction
cavaliet
parents: 6
diff changeset
   128
                        log('Not connected.');
6
c53e9b24f93f loggin in annotation client depends on a boolean
cavaliet
parents: 5
diff changeset
   129
                    }
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   130
                }
1
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   131
            };
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   132
            
5
90a7c431b979 first step of working annotation real annotation client
cavaliet
parents: 1
diff changeset
   133
            // Interface management
1
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   134
            $scope.selectLevel = function(i, eventCode){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   135
                if(i===false){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   136
                    $scope.returnVisStyle = {visibility:'hidden'};
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   137
                    $scope.selectedlevel = false;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   138
                    return;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   139
                }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   140
                if(typeof $scope.data.categories[i].subcategories!=='undefined' && $scope.data.categories[i].subcategories.length>0){
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   141
                    $scope.selectedlevel = $scope.data.categories[i].subcategories;
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   142
                    $scope.returnVisStyle = {visibility:'show'};
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   143
                }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   144
                else{
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   145
                    // Send query
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   146
                    $scope.sendAnnotation(eventCode);
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   147
                }
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   148
            };
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   149
            
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   150
        });
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   151
1cdebfeb77f9 add client folder and update hgignore
cavaliet
parents:
diff changeset
   152
})();