src/p4l/static/p4l/js/p4l.js
author cavaliet
Fri, 20 Sep 2013 15:44:11 +0200
changeset 112 ba6056f58516
parent 111 e2ecb345b58f
child 117 0a4e7d6ebe80
permissions -rw-r--r--
error handled on save
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
63
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
     1
"use strict";
26
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
// initialize the app
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
47
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
     4
var app = angular.module("recordApp", ['ngResource', 'ngRoute', 'pascalprecht.translate'])
26
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
33
945b144d68c1 put context variables in a single object
ymh <ymh.work@gmail.com>
parents: 28
diff changeset
     6
app.service("Api", function($resource, context) {
47
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
     7
    this.record = $resource(context.urls.record_api,
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
     8
            {},
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
     9
            {
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    10
                get: {
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    11
                    method: "GET",
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    12
                    isArray: false
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    13
                },
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    14
                save:{
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    15
                    method:"PUT",
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    16
                    isArray:false,
111
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
    17
                    headers:{'X-CSRFToken':context.csrf_token}
47
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    18
                } 
b07f8d11f2b8 Update angular.
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    19
            });
26
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
});
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
111
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
    22
app.service("RecordModel", function(Api, context) {
49
fcfa68f39f6b model/controler separation.
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    23
    this.record = Api.record.get({recordId: context.record_id});
fcfa68f39f6b model/controler separation.
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    24
    this.uriLabels = context.uri_labels;
fcfa68f39f6b model/controler separation.
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    25
});
fcfa68f39f6b model/controler separation.
ymh <ymh.work@gmail.com>
parents: 47
diff changeset
    26
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    27
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    28
app.directive('objectDisp', ['$compile', '$http', '$templateCache', 'context', function($compile, $http, $templateCache, context) {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    29
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    30
    var getTemplate = function(templateName) {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    31
        var templateLoader,
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    32
        templateUrl = context.urls.base_static+'p4l/templates/'+templateName+'.html';
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    33
        templateLoader = $http.get(templateUrl, {cache: $templateCache});
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    34
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    35
        return templateLoader;
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    36
    }
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    37
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    38
    var linker = function(scope, element, attrs) {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    39
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    40
        var loader = getTemplate(scope.dispTemplate);
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    41
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    42
        var promise = loader.success(function(html) {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    43
            element.html(html);
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    44
        }).then(function (response) {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    45
            element.replaceWith($compile(element.html())(scope));
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    46
        });
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    47
    }
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    48
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    49
    return {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    50
        restrict: 'E',
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    51
        scope: {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    52
            dispTemplate: "=",
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    53
            obj: "="
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    54
        },
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    55
        link: linker
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    56
    };
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    57
}]);
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    58
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    59
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    60
app.directive('objectList', function(RecordModel, context) {
50
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
    61
    return {
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
    62
        restrict: 'E',
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
    63
        replace: true,
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
    64
        transclude: true,
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
    65
        scope: {
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    66
            list:"=objectList",
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    67
            dispTemplate: "@dispTemplate",
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    68
            formTemplate: "@formTemplate",
79
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    69
            objectFields: "@objectFields",
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    70
            labelFields: "@labelFields",
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    71
            sizeFields: "@sizeFields",
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    72
            table: "@table"
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    73
        },
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    74
        controller: function($scope, $element, $attrs, $transclude) {
79
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    75
        	
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    76
            $scope.getStaticTemplateUrl = function(templateName) {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    77
                return context.urls.base_static+'p4l/templates/'+templateName+".html";
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    78
            }
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    79
            $scope.getEmptyObjectFromList = function(fieldList) {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    80
                var res = {};
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    81
                for ( var field in fieldList) {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    82
                    res[field] = "";
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    83
                }
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    84
                return res;
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    85
            }
79
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    86
        },  
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    87
        templateUrl: function(tElement, tAttrs){
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    88
        	if(tAttrs.table=="true"){
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    89
        		return context.urls.base_static+'p4l/templates/objectListTable.html'
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    90
        	}
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    91
        	else{
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    92
        		return context.urls.base_static+'p4l/templates/objectList.html'
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
    93
        	}
50
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
    94
        },
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
    95
        link: function($scope, $element, $attrs) {
88
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    96
            
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    97
            // Setup divs table parameters
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    98
            $scope.headFields = angular.fromJson($scope.objectFields);
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
    99
            $scope.headLabels = angular.fromJson($scope.labelFields);
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   100
            $scope.headSizes = angular.fromJson($scope.sizeFields);
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   101
            if($scope.headSizes==undefined){
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   102
                $scope.headSizes = [];
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   103
                var n = $scope.headFields.length;
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   104
                for(var i=0;i<n;i++){
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   105
                    $scope.headSizes.push(2);
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   106
                }
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   107
            }
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   108
            if($scope.headLabels==undefined){
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   109
                $scope.headLabels = $scope.headFields;
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   110
            }
79
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
   111
        	
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   112
            $scope.editedObj = null;
88
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   113
            $scope.editedIndex = -1;
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   114
            
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   115
            $scope.getEmptyObject = function() {
79
d585f6b46b88 new system for object list
cavaliet
parents: 71
diff changeset
   116
                return $scope.getEmptyObjectFromList($scope.headFields);
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   117
            };
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   118
88
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   119
            $scope.setEditedObject = function(obj, index) {
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   120
                
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   121
                var newObj = obj;
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   122
                if(index>=0) {
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   123
                    newObj = angular.copy(obj);
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   124
                }                
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   125
                $scope.editedObj = newObj;
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   126
                $scope.editedIndex = index;
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   127
            }
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   128
            
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   129
            $scope.newEditedObject = function() {
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   130
                var newObj = $scope.getEmptyObject();
88
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   131
                $scope.setEditedObject(newObj, -1);
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   132
            };
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   133
            
88
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   134
            $scope.removeFromList = function(index) {
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   135
                if(index>=0){
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   136
                    $scope.list.splice(index, 1);
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   137
                }
88
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   138
                $scope.setEditedObject(null, -1);
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   139
            }
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   140
                        
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   141
            $scope.onOk = function() {
88
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   142
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   143
                if($scope.editedIndex >= 0) {
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   144
                    $scope.list[$scope.editedIndex] = $scope.editedObj;
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   145
                }
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   146
                else {
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   147
                    $scope.list.push($scope.editedObj);    
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   148
                }
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   149
                
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   150
                $scope.setEditedObject(null, -1);
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   151
                
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   152
            }
50
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
   153
            
88
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   154
            $scope.onCancel = function() {
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   155
                $scope.setEditedObject(null, -1);                
1753fcef095a Improve object list behaviour in edit form
ymh <ymh.work@gmail.com>
parents: 80
diff changeset
   156
            }
50
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
   157
        }
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
   158
    };
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
   159
});
2e52a8a10f8e Add directive to edit objects
ymh <ymh.work@gmail.com>
parents: 49
diff changeset
   160
54
9f6e5abc5e74 add directive for list of objects.
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   161
60
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   162
app.directive('addSemUri', function(RecordModel, context, $timeout){
51
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   163
  return {
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   164
      restrict: 'E',
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   165
      replace: true,
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   166
      transclude: true,
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   167
      scope: {
57
3a8a55131180 clean and debug
cavaliet
parents: 52
diff changeset
   168
    	  listname:"@",
3a8a55131180 clean and debug
cavaliet
parents: 52
diff changeset
   169
    	  list:"=",
61
305f9fcd409b keep on record form. several sparql requests
cavaliet
parents: 60
diff changeset
   170
    	  placeholder:"@",
51
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   171
      },
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   172
      templateUrl: function(tElement, tAttrs) {
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   173
          return context.urls.base_static+'p4l/templates/addSemanticUriForm.html';  
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   174
      },
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   175
      link: function($scope, $element, $attrs) {
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   176
    	  // Get queries attributes from $scope listname and context query dict
63
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   177
    	  var attr_dict = context.query_dicts[$scope.listname];
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   178
    	  for (var k in attr_dict){
51
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   179
			  if (attr_dict.hasOwnProperty(k)) {
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   180
			      $scope[k] = attr_dict[k];
51
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   181
			  }
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   182
		  }
67
2ed617d40598 forms hidden by default
cavaliet
parents: 63
diff changeset
   183
		  $scope.formVisible = false;
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   184
    	  // initalize autocomplete and browse thesaurus events
60
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   185
    	  // We have to timeout because init_browse needs the real ids and not {{ $id }}
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   186
    	  // NB : scope.apply generates bug
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   187
    	  $timeout(function(){
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   188
    		  init_autocomplete();
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   189
    		  init_browse();
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   190
          }, 0);
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   191
      },
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   192
      controller: function($scope, $element, $attrs, $transclude, RecordModel){
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   193
	    $scope.record = RecordModel.record;
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   194
	    $scope.uriLabels = RecordModel.uriLabels;
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   195
	    $scope.addUriText = '';
111
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
   196
	    $scope.uriInDict = false;
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   197
	    
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   198
	    $scope.addUriToList = function() {
57
3a8a55131180 clean and debug
cavaliet
parents: 52
diff changeset
   199
	    	$scope.list.push($scope.addUriText);
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   200
	        $scope.addUriText = '';
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   201
	    };
60
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   202
	    $scope.removeFromList = function(obj) {
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   203
            var i = $scope.list.indexOf(obj);
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   204
            if(i>=0){
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   205
                $scope.list.splice(i, 1);
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   206
            }
da37c87abbfb enhance add sem directive
cavaliet
parents: 59
diff changeset
   207
        }
52
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   208
	    
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   209
	    $scope.updateUriLabelDict = function(k,v) {
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   210
	        $scope.uriLabels[k] = v;
99801979086c clean directive
cavaliet
parents: 51
diff changeset
   211
	    };
111
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
   212
	    $scope.$watch("addUriText", function(newValue, oldValue){
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
   213
	    	$scope.uriInDict = (($scope.dataquery!='') && ($scope.addUriText in $scope.uriLabels));
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
   214
	    });
51
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   215
      }
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   216
    }
55
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   217
});
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   218
63
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   219
app.directive('simpleSemUri', function(RecordModel, context, $timeout) {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   220
    return {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   221
        restrict: 'E',
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   222
        replace: true,
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   223
        transclude: true,
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   224
        scope: {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   225
            listname:"@",
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   226
            val:"=",
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   227
            placeholder:"@",
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   228
        },
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   229
        templateUrl: function(tElement, tAttrs) {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   230
            return context.urls.base_static+'p4l/templates/simpleSemanticUriForm.html';  
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   231
        },
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   232
        link: function($scope, $element, $attrs) {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   233
            // Get queries attributes from $scope listname and context query dict
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   234
            var attr_dict = context.query_dicts[$scope.listname];
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   235
            for (var k in attr_dict){
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   236
                if (attr_dict.hasOwnProperty(k)) {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   237
                    $scope[k] = attr_dict[k];
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   238
                }
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   239
            }
67
2ed617d40598 forms hidden by default
cavaliet
parents: 63
diff changeset
   240
            $scope.formVisible = false;
63
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   241
            // initalize autocomplete and browse thesaurus events
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   242
            // We have to timeout because init_browse needs the real ids and not {{ $id }}
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   243
            // NB : scope.apply generates bug
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   244
            $timeout(function(){
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   245
                init_autocomplete();
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   246
                init_browse();
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   247
            }, 0);
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   248
        },
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   249
        controller: function($scope, $element, $attrs, $transclude, RecordModel) {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   250
            $scope.record = RecordModel.record;
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   251
            $scope.uriLabels = RecordModel.uriLabels;
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   252
            $scope.addUriText = '';
111
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
   253
    	    $scope.uriInDict = false;
63
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   254
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   255
            $scope.updateVal = function() {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   256
                $scope.val = $scope.addUriText;
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   257
            };
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   258
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   259
            $scope.updateUriLabelDict = function(k,v) {
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   260
                $scope.uriLabels[k] = v;
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   261
            };
111
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
   262
            $scope.$watch("addUriText", function(newValue, oldValue){
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
   263
    	    	$scope.uriInDict = (($scope.dataquery!='') && ($scope.addUriText in $scope.uriLabels));
e2ecb345b58f thesaurus add button enabled only when uri is correct
cavaliet
parents: 88
diff changeset
   264
    	    });
63
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   265
        }
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   266
    };
09a086a49b71 use strict mode for p4l.js
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
   267
});
59
a0ef3043b1d2 Merge with cae920b543068c169d5d09fdbb2fd7c4eac7e147 and enhance add sem directive
cavaliet
parents: 57 55
diff changeset
   268
70
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   269
app.directive('languagesListInput', function(RecordModel, context) {
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   270
    return {
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   271
        restrict: 'E',
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   272
        replace: true,
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   273
        transclude: true,
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   274
        scope: {
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   275
        	obj:"=",
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   276
        },
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   277
        templateUrl: function(tElement, tAttrs) {
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   278
            return context.urls.base_static+'p4l/templates/languagesListInput.html';  
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   279
        },
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   280
        link: function($scope, $element, $attrs) {
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   281
            // Get list from context languages_list
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   282
            $scope.list = context.languages_list;
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   283
        }
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   284
    };
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   285
});
2ee11f57e318 language list in directive template
cavaliet
parents: 67
diff changeset
   286
112
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   287
app.controller("RecordCtrl", function($translate, $scope, RecordModel, context){
55
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   288
    
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   289
    $scope.record = RecordModel.record;
71
abd73d06615e Save indicator
ymh <ymh.work@gmail.com>
parents: 70
diff changeset
   290
    $scope.uriLabels = RecordModel.uriLabels;
abd73d06615e Save indicator
ymh <ymh.work@gmail.com>
parents: 70
diff changeset
   291
    
abd73d06615e Save indicator
ymh <ymh.work@gmail.com>
parents: 70
diff changeset
   292
    $scope.saving = false;
55
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   293
        
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   294
    $scope.submitRecord = function() {
71
abd73d06615e Save indicator
ymh <ymh.work@gmail.com>
parents: 70
diff changeset
   295
        $scope.saving = true;
112
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   296
        $scope.record.$save(
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   297
        	{ recordId: context.record_id },
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   298
        	function(){
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   299
        		//console.log("SUCCESS");
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   300
        	},
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   301
        	function(){
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   302
        		alert($translate("An error occured. Somes datas may be incorrect or incomplete."));
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   303
        		$scope.saving=false;
ba6056f58516 error handled on save
cavaliet
parents: 111
diff changeset
   304
        	})
74
ad7d84868c98 add back buttopn on edit
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   305
            .then(function(response) {
ad7d84868c98 add back buttopn on edit
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   306
                $scope.saving=false;
ad7d84868c98 add back buttopn on edit
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   307
            });
55
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   308
    }
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   309
    
74
ad7d84868c98 add back buttopn on edit
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   310
    $scope.getPreviousUrl = function() {
ad7d84868c98 add back buttopn on edit
ymh <ymh.work@gmail.com>
parents: 71
diff changeset
   311
        return context.urls.previous || context.urls.home;
80
c1e36f5911a9 Merge with 1d45a564a39851504ccc27bb6944db7e85430fbc
cavaliet
parents: 79 74
diff changeset
   312
    }
55
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   313
    
a1182b90cbd0 put directive togethers
ymh <ymh.work@gmail.com>
parents: 54
diff changeset
   314
});
51
634e0994c1c8 add uri generic
cavaliet
parents: 50
diff changeset
   315
26
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
app.config(['$routeProvider', function($routeProvider) {
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
//    $routeProvider.when('/', {controller: 'RecordCtrl', templateUrl: 'partials/record.html'});
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
//    $routeProvider.otherwise({redirectTo: '/'});
a0e152dd1fad first version of angular intégration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
  }]);
28
f26426e9360b update view simplification. Baby step towards complete form.
ymh <ymh.work@gmail.com>
parents: 26
diff changeset
   320