Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 espaco 1
/***
2
Metronic AngularJS App Main Script
3
***/
4
 
5
/* Metronic App */
6
var MetronicApp = angular.module("MetronicApp", [
7
    "ui.router",
8
    "ui.bootstrap",
9
    "oc.lazyLoad",  
10
    "ngSanitize"
11
]);
12
 
13
/* Configure ocLazyLoader(refer: https://github.com/ocombe/ocLazyLoad) */
14
MetronicApp.config(['$ocLazyLoadProvider', function($ocLazyLoadProvider) {
15
    $ocLazyLoadProvider.config({
16
        cssFilesInsertBefore: 'ng_load_plugins_before' // load the above css files before a LINK element with this ID. Dynamic CSS files must be loaded between core and theme css files
17
    });
18
}]);
19
 
20
/********************************************
21
 BEGIN: BREAKING CHANGE in AngularJS v1.3.x:
22
*********************************************/
23
/**
24
`$controller` will no longer look for controllers on `window`.
25
The old behavior of looking on `window` for controllers was originally intended
26
for use in examples, demos, and toy apps. We found that allowing global controller
27
functions encouraged poor practices, so we resolved to disable this behavior by
28
default.
29
 
30
To migrate, register your controllers with modules rather than exposing them
31
as globals:
32
 
33
Before:
34
 
35
```javascript
36
function MyController() {
37
  // ...
38
}
39
```
40
 
41
After:
42
 
43
```javascript
44
angular.module('myApp', []).controller('MyController', [function() {
45
  // ...
46
}]);
47
 
48
Although it's not recommended, you can re-enable the old behavior like this:
49
 
50
```javascript
51
angular.module('myModule').config(['$controllerProvider', function($controllerProvider) {
52
  // this option might be handy for migrating old apps, but please don't use it
53
  // in new ones!
54
  $controllerProvider.allowGlobals();
55
}]);
56
**/
57
 
58
//AngularJS v1.3.x workaround for old style controller declarition in HTML
59
MetronicApp.config(['$controllerProvider', function($controllerProvider) {
60
  // this option might be handy for migrating old apps, but please don't use it
61
  // in new ones!
62
  $controllerProvider.allowGlobals();
63
}]);
64
 
65
/********************************************
66
 END: BREAKING CHANGE in AngularJS v1.3.x:
67
*********************************************/
68
 
69
/* Setup global settings */
70
MetronicApp.factory('settings', ['$rootScope', function($rootScope) {
71
    // supported languages
72
    var settings = {
73
        layout: {
74
            pageAutoScrollOnLoad: 1000 // auto scroll to top on page load
75
        },
76
        layoutImgPath: Metronic.getAssetsPath() + 'admin/layout/img/',
77
        layoutCssPath: Metronic.getAssetsPath() + 'admin/layout/css/'
78
    };
79
 
80
    $rootScope.settings = settings;
81
 
82
    return settings;
83
}]);
84
 
85
/* Setup App Main Controller */
86
MetronicApp.controller('AppController', ['$scope', '$rootScope', function($scope, $rootScope) {
87
    $scope.$on('$viewContentLoaded', function() {
88
        Metronic.initComponents(); // init core components
89
        //Layout.init(); //  Init entire layout(header, footer, sidebar, etc) on page load if the partials included in server side instead of loading with ng-include directive 
90
    });
91
}]);
92
 
93
/***
94
Layout Partials.
95
By default the partials are loaded through AngularJS ng-include directive. In case they loaded in server side(e.g: PHP include function) then below partial
96
initialization can be disabled and Layout.init() should be called on page load complete as explained above.
97
***/
98
 
99
/* Setup Layout Part - Header */
100
MetronicApp.controller('HeaderController', ['$scope', function($scope) {
101
    $scope.$on('$includeContentLoaded', function() {
102
        Layout.initHeader(); // init header
103
    });
104
}]);
105
 
106
/* Setup Layout Part - Sidebar */
107
MetronicApp.controller('PageHeadController', ['$scope', function($scope) {
108
    $scope.$on('$includeContentLoaded', function() {        
109
        Demo.init(); // init theme panel
110
    });
111
}]);
112
 
113
/* Setup Layout Part - Footer */
114
MetronicApp.controller('FooterController', ['$scope', function($scope) {
115
    $scope.$on('$includeContentLoaded', function() {
116
        Layout.initFooter(); // init footer
117
    });
118
}]);
119
 
120
/* Setup Rounting For All Pages */
121
MetronicApp.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
122
 
123
    // Redirect any unmatched url
124
    $urlRouterProvider.otherwise("/dashboard.html");
125
 
126
    $stateProvider
127
 
128
        // Dashboard
129
        .state('dashboard', {
130
            url: "/dashboard.html",
131
            templateUrl: "views/dashboard.html",            
132
            data: {pageTitle: 'Dashboard', pageSubTitle: 'statistics & reports'},
133
            controller: "DashboardController",
134
            resolve: {
135
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
136
                    return $ocLazyLoad.load({
137
                        name: 'MetronicApp',
138
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
139
                        files: [
140
                            '../../../assets/global/plugins/morris/morris.css',
141
                            '../../../assets/admin/pages/css/tasks.css',
142
 
143
                            '../../../assets/global/plugins/morris/morris.min.js',
144
                            '../../../assets/global/plugins/morris/raphael-min.js',
145
                            '../../../assets/global/plugins/jquery.sparkline.min.js',
146
 
147
                            '../../../assets/admin/pages/scripts/index3.js',
148
                            '../../../assets/admin/pages/scripts/tasks.js',
149
 
150
                             'js/controllers/DashboardController.js'
151
                        ]
152
                    });
153
                }]
154
            }
155
        })
156
 
157
        // AngularJS plugins
158
        .state('fileupload', {
159
            url: "/file_upload.html",
160
            templateUrl: "views/file_upload.html",
161
            data: {pageTitle: 'AngularJS File Upload', pageSubTitle: 'angularjs file upload'},
162
            controller: "GeneralPageController",
163
            resolve: {
164
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
165
                    return $ocLazyLoad.load([{
166
                        name: 'angularFileUpload',
167
                        files: [
168
                            '../../../assets/global/plugins/angularjs/plugins/angular-file-upload/angular-file-upload.min.js',
169
                        ]
170
                    }, {
171
                        name: 'MetronicApp',
172
                        files: [
173
                            'js/controllers/GeneralPageController.js'
174
                        ]
175
                    }]);
176
                }]
177
            }
178
        })
179
 
180
        // UI Select
181
        .state('uiselect', {
182
            url: "/ui_select.html",
183
            templateUrl: "views/ui_select.html",
184
            data: {pageTitle: 'AngularJS Ui Select', pageSubTitle: 'select2 written in angularjs'},
185
            controller: "UISelectController",
186
            resolve: {
187
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
188
                    return $ocLazyLoad.load([{
189
                        name: 'ui.select',
190
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
191
                        files: [
192
                            '../../../assets/global/plugins/angularjs/plugins/ui-select/select.min.css',
193
                            '../../../assets/global/plugins/angularjs/plugins/ui-select/select.min.js'
194
                        ]
195
                    }, {
196
                        name: 'MetronicApp',
197
                        files: [
198
                            'js/controllers/UISelectController.js'
199
                        ]
200
                    }]);
201
                }]
202
            }
203
        })
204
 
205
        // UI Bootstrap
206
        .state('uibootstrap', {
207
            url: "/ui_bootstrap.html",
208
            templateUrl: "views/ui_bootstrap.html",
209
            data: {pageTitle: 'AngularJS UI Bootstrap', pageSubTitle: 'bootstrap components written in angularjs'},
210
            controller: "GeneralPageController",
211
            resolve: {
212
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
213
                    return $ocLazyLoad.load([{
214
                        name: 'MetronicApp',
215
                        files: [
216
                            'js/controllers/GeneralPageController.js'
217
                        ]
218
                    }]);
219
                }]
220
            }
221
        })
222
 
223
        // Tree View
224
        .state('tree', {
225
            url: "/tree",
226
            templateUrl: "views/tree.html",
227
            data: {pageTitle: 'jQuery Tree View', pageSubTitle: 'tree view samples'},
228
            controller: "GeneralPageController",
229
            resolve: {
230
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
231
                    return $ocLazyLoad.load([{
232
                        name: 'MetronicApp',
233
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
234
                        files: [
235
                            '../../../assets/global/plugins/jstree/dist/themes/default/style.min.css',
236
 
237
                            '../../../assets/global/plugins/jstree/dist/jstree.min.js',
238
                            '../../../assets/admin/pages/scripts/ui-tree.js',
239
                            'js/controllers/GeneralPageController.js'
240
                        ]
241
                    }]);
242
                }]
243
            }
244
        })    
245
 
246
        // Form Tools
247
        .state('formtools', {
248
            url: "/form-tools",
249
            templateUrl: "views/form_tools.html",
250
            data: {pageTitle: 'Form Tools', pageSubTitle: 'form components & widgets sample'},
251
            controller: "GeneralPageController",
252
            resolve: {
253
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
254
                    return $ocLazyLoad.load([{
255
                        name: 'MetronicApp',
256
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
257
                        files: [
258
                            '../../../assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css',
259
                            '../../../assets/global/plugins/bootstrap-switch/css/bootstrap-switch.min.css',
260
                            '../../../assets/global/plugins/jquery-tags-input/jquery.tagsinput.css',
261
                            '../../../assets/global/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css',
262
                            '../../../assets/global/plugins/typeahead/typeahead.css',
263
 
264
                            '../../../assets/global/plugins/fuelux/js/spinner.min.js',
265
                            '../../../assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js',
266
                            '../../../assets/global/plugins/jquery-inputmask/jquery.inputmask.bundle.min.js',
267
                            '../../../assets/global/plugins/jquery.input-ip-address-control-1.0.min.js',
268
                            '../../../assets/global/plugins/bootstrap-pwstrength/pwstrength-bootstrap.min.js',
269
                            '../../../assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js',
270
                            '../../../assets/global/plugins/jquery-tags-input/jquery.tagsinput.min.js',
271
                            '../../../assets/global/plugins/bootstrap-maxlength/bootstrap-maxlength.min.js',
272
                            '../../../assets/global/plugins/bootstrap-touchspin/bootstrap.touchspin.js',
273
                            '../../../assets/global/plugins/typeahead/handlebars.min.js',
274
                            '../../../assets/global/plugins/typeahead/typeahead.bundle.min.js',
275
                            '../../../assets/admin/pages/scripts/components-form-tools.js',
276
 
277
                            'js/controllers/GeneralPageController.js'
278
                        ]
279
                    }]);
280
                }]
281
            }
282
        })        
283
 
284
        // Date & Time Pickers
285
        .state('pickers', {
286
            url: "/pickers",
287
            templateUrl: "views/pickers.html",
288
            data: {pageTitle: 'Date & Time Pickers', pageSubTitle: 'date, time, color, daterange pickers'},
289
            controller: "GeneralPageController",
290
            resolve: {
291
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
292
                    return $ocLazyLoad.load([{
293
                        name: 'MetronicApp',
294
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
295
                        files: [
296
                            '../../../assets/global/plugins/clockface/css/clockface.css',
297
                            '../../../assets/global/plugins/bootstrap-datepicker/css/datepicker3.css',
298
                            '../../../assets/global/plugins/bootstrap-timepicker/css/bootstrap-timepicker.min.css',
299
                            '../../../assets/global/plugins/bootstrap-colorpicker/css/colorpicker.css',
300
                            '../../../assets/global/plugins/bootstrap-daterangepicker/daterangepicker-bs3.css',
301
                            '../../../assets/global/plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css',
302
 
303
                            '../../../assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js',
304
                            '../../../assets/global/plugins/bootstrap-timepicker/js/bootstrap-timepicker.min.js',
305
                            '../../../assets/global/plugins/clockface/js/clockface.js',
306
                            '../../../assets/global/plugins/bootstrap-daterangepicker/moment.min.js',
307
                            '../../../assets/global/plugins/bootstrap-daterangepicker/daterangepicker.js',
308
                            '../../../assets/global/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js',
309
                            '../../../assets/global/plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js',
310
 
311
                            '../../../assets/admin/pages/scripts/components-pickers.js',
312
 
313
                            'js/controllers/GeneralPageController.js'
314
                        ]
315
                    }]);
316
                }]
317
            }
318
        })
319
 
320
        // Custom Dropdowns
321
        .state('dropdowns', {
322
            url: "/dropdowns",
323
            templateUrl: "views/dropdowns.html",
324
            data: {pageTitle: 'Custom Dropdowns', pageSubTitle: 'select2 & bootstrap select dropdowns'},
325
            controller: "GeneralPageController",
326
            resolve: {
327
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
328
                    return $ocLazyLoad.load([{
329
                        name: 'MetronicApp',
330
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
331
                        files: [
332
                            '../../../assets/global/plugins/bootstrap-select/bootstrap-select.min.css',
333
                            '../../../assets/global/plugins/select2/select2.css',
334
                            '../../../assets/global/plugins/jquery-multi-select/css/multi-select.css',
335
 
336
                            '../../../assets/global/plugins/bootstrap-select/bootstrap-select.min.js',
337
                            '../../../assets/global/plugins/select2/select2.min.js',
338
                            '../../../assets/global/plugins/jquery-multi-select/js/jquery.multi-select.js',
339
 
340
                            '../../../assets/admin/pages/scripts/components-dropdowns.js',
341
 
342
                            'js/controllers/GeneralPageController.js'
343
                        ]
344
                    }]);
345
                }]
346
            }
347
        })
348
 
349
        // Advanced Datatables
350
        .state('datatablesAdvanced', {
351
            url: "/datatables/advanced.html",
352
            templateUrl: "views/datatables/advanced.html",
353
            data: {pageTitle: 'Advanced Datatables', pageSubTitle: 'advanced datatables samples'},
354
            controller: "GeneralPageController",
355
            resolve: {
356
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
357
                    return $ocLazyLoad.load({
358
                        name: 'MetronicApp',
359
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
360
                        files: [
361
                            '../../../assets/global/plugins/select2/select2.css',                            
362
                            '../../../assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css',
363
                            '../../../assets/global/plugins/datatables/extensions/Scroller/css/dataTables.scroller.min.css',
364
                            '../../../assets/global/plugins/datatables/extensions/ColReorder/css/dataTables.colReorder.min.css',
365
 
366
                            '../../../assets/global/plugins/select2/select2.min.js',
367
                            '../../../assets/global/plugins/datatables/all.min.js',
368
                            'js/scripts/table-advanced.js',
369
 
370
                            'js/controllers/GeneralPageController.js'
371
                        ]
372
                    });
373
                }]
374
            }
375
        })
376
 
377
        // Ajax Datetables
378
        .state('datatablesAjax', {
379
            url: "/datatables/ajax.html",
380
            templateUrl: "views/datatables/ajax.html",
381
            data: {pageTitle: 'Ajax Datatables', pageSubTitle: 'ajax datatables samples'},
382
            controller: "GeneralPageController",
383
            resolve: {
384
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
385
                    return $ocLazyLoad.load({
386
                        name: 'MetronicApp',
387
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
388
                        files: [
389
                            '../../../assets/global/plugins/select2/select2.css',                            
390
                            '../../../assets/global/plugins/bootstrap-datepicker/css/datepicker.css',
391
                            '../../../assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css',
392
 
393
                            '../../../assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js',
394
                            '../../../assets/global/plugins/select2/select2.min.js',
395
                            '../../../assets/global/plugins/datatables/all.min.js',
396
 
397
                            '../../../assets/global/scripts/datatable.js',
398
                            'js/scripts/table-ajax.js',
399
 
400
                            'js/controllers/GeneralPageController.js'
401
                        ]
402
                    });
403
                }]
404
            }
405
        })
406
 
407
        // User Profile
408
        .state("profile", {
409
            url: "/profile",
410
            templateUrl: "views/profile/main.html",
411
            data: {pageTitle: 'User Profile', pageSubTitle: 'user profile sample'},
412
            controller: "UserProfileController",
413
            resolve: {
414
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
415
                    return $ocLazyLoad.load({
416
                        name: 'MetronicApp',  
417
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
418
                        files: [
419
                            '../../../assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css',
420
                            '../../../assets/admin/pages/css/profile.css',
421
                            '../../../assets/admin/pages/css/tasks.css',
422
 
423
                            '../../../assets/global/plugins/jquery.sparkline.min.js',
424
                            '../../../assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js',
425
 
426
                            '../../../assets/admin/pages/scripts/profile.js',
427
 
428
                            'js/controllers/UserProfileController.js'
429
                        ]                    
430
                    });
431
                }]
432
            }
433
        })
434
 
435
        // User Profile Dashboard
436
        .state("profile.dashboard", {
437
            url: "/dashboard",
438
            templateUrl: "views/profile/dashboard.html",
439
            data: {pageTitle: 'User Profile', pageSubTitle: 'user profile dashboard sample'}
440
        })
441
 
442
        // User Profile Account
443
        .state("profile.account", {
444
            url: "/account",
445
            templateUrl: "views/profile/account.html",
446
            data: {pageTitle: 'User Account', pageSubTitle: 'user profile account sample'}
447
        })
448
 
449
        // User Profile Help
450
        .state("profile.help", {
451
            url: "/help",
452
            templateUrl: "views/profile/help.html",
453
            data: {pageTitle: 'User Help', pageSubTitle: 'user profile help sample'}      
454
        })
455
 
456
        // Todo
457
        .state('todo', {
458
            url: "/todo",
459
            templateUrl: "views/todo.html",
460
            data: {pageTitle: 'Todo', pageSubTitle: 'user todo & tasks sample'},
461
            controller: "TodoController",
462
            resolve: {
463
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
464
                    return $ocLazyLoad.load({
465
                        name: 'MetronicApp',  
466
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
467
                        files: [
468
                            '../../../assets/global/plugins/bootstrap-datepicker/css/datepicker3.css',
469
                            '../../../assets/global/plugins/select2/select2.css',
470
                            '../../../assets/admin/pages/css/todo.css',
471
 
472
                            '../../../assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js',
473
                            '../../../assets/global/plugins/select2/select2.min.js',
474
 
475
                            '../../../assets/admin/pages/scripts/todo.js',
476
 
477
                            'js/controllers/TodoController.js'  
478
                        ]                    
479
                    });
480
                }]
481
            }
482
        })
483
 
484
}]);
485
 
486
/* Init global settings and run the app */
487
MetronicApp.run(["$rootScope", "settings", "$state", function($rootScope, settings, $state) {
488
    $rootScope.$state = $state; // state to be accessed from view
489
}]);