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
        // global configs go here
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
            pageSidebarClosed: false, // sidebar menu state
75
            pageBodySolid: false, // solid body color state
76
            pageAutoScrollOnLoad: 1000 // auto scroll to top on page load
77
        },
78
        layoutImgPath: Metronic.getAssetsPath() + 'admin/layout/img/',
79
        layoutCssPath: Metronic.getAssetsPath() + 'admin/layout/css/'
80
    };
81
 
82
    $rootScope.settings = settings;
83
 
84
    return settings;
85
}]);
86
 
87
/* Setup App Main Controller */
88
MetronicApp.controller('AppController', ['$scope', '$rootScope', function($scope, $rootScope) {
89
    $scope.$on('$viewContentLoaded', function() {
90
        Metronic.initComponents(); // init core components
91
        //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 
92
    });
93
}]);
94
 
95
/***
96
Layout Partials.
97
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
98
initialization can be disabled and Layout.init() should be called on page load complete as explained above.
99
***/
100
 
101
/* Setup Layout Part - Header */
102
MetronicApp.controller('HeaderController', ['$scope', function($scope) {
103
    $scope.$on('$includeContentLoaded', function() {
104
        Layout.initHeader(); // init header
105
    });
106
}]);
107
 
108
/* Setup Layout Part - Sidebar */
109
MetronicApp.controller('SidebarController', ['$scope', function($scope) {
110
    $scope.$on('$includeContentLoaded', function() {
111
        Layout.initSidebar(); // init sidebar
112
    });
113
}]);
114
 
115
/* Setup Layout Part - Quick Sidebar */
116
MetronicApp.controller('QuickSidebarController', ['$scope', function($scope) {    
117
    $scope.$on('$includeContentLoaded', function() {
118
        setTimeout(function(){
119
            QuickSidebar.init(); // init quick sidebar        
120
        }, 2000)
121
    });
122
}]);
123
 
124
/* Setup Layout Part - Theme Panel */
125
MetronicApp.controller('ThemePanelController', ['$scope', function($scope) {    
126
    $scope.$on('$includeContentLoaded', function() {
127
        Demo.init(); // init theme panel
128
    });
129
}]);
130
 
131
/* Setup Layout Part - Footer */
132
MetronicApp.controller('FooterController', ['$scope', function($scope) {
133
    $scope.$on('$includeContentLoaded', function() {
134
        Layout.initFooter(); // init footer
135
    });
136
}]);
137
 
138
/* Setup Rounting For All Pages */
139
MetronicApp.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
140
    // Redirect any unmatched url
141
    $urlRouterProvider.otherwise("/dashboard.html");  
142
 
143
    $stateProvider
144
 
145
        // Dashboard
146
        .state('dashboard', {
147
            url: "/dashboard.html",
148
            templateUrl: "views/dashboard.html",            
149
            data: {pageTitle: 'Admin Dashboard Template'},
150
            controller: "DashboardController",
151
            resolve: {
152
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
153
                    return $ocLazyLoad.load({
154
                        name: 'MetronicApp',
155
                        insertBefore: '#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
156
                        files: [
157
                            '../../../assets/global/plugins/morris/morris.css',
158
                            '../../../assets/admin/pages/css/tasks.css',
159
 
160
                            '../../../assets/global/plugins/morris/morris.min.js',
161
                            '../../../assets/global/plugins/morris/raphael-min.js',
162
                            '../../../assets/global/plugins/jquery.sparkline.min.js',
163
 
164
                            '../../../assets/admin/pages/scripts/index3.js',
165
                            '../../../assets/admin/pages/scripts/tasks.js',
166
 
167
                             'js/controllers/DashboardController.js'
168
                        ]
169
                    });
170
                }]
171
            }
172
        })
173
 
174
        // AngularJS plugins
175
        .state('fileupload', {
176
            url: "/file_upload.html",
177
            templateUrl: "views/file_upload.html",
178
            data: {pageTitle: 'AngularJS File Upload'},
179
            controller: "GeneralPageController",
180
            resolve: {
181
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
182
                    return $ocLazyLoad.load([{
183
                        name: 'angularFileUpload',
184
                        files: [
185
                            '../../../assets/global/plugins/angularjs/plugins/angular-file-upload/angular-file-upload.min.js',
186
                        ]
187
                    }, {
188
                        name: 'MetronicApp',
189
                        files: [
190
                            'js/controllers/GeneralPageController.js'
191
                        ]
192
                    }]);
193
                }]
194
            }
195
        })
196
 
197
        // UI Select
198
        .state('uiselect', {
199
            url: "/ui_select.html",
200
            templateUrl: "views/ui_select.html",
201
            data: {pageTitle: 'AngularJS Ui Select'},
202
            controller: "UISelectController",
203
            resolve: {
204
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
205
                    return $ocLazyLoad.load([{
206
                        name: 'ui.select',
207
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
208
                        files: [
209
                            '../../../assets/global/plugins/angularjs/plugins/ui-select/select.min.css',
210
                            '../../../assets/global/plugins/angularjs/plugins/ui-select/select.min.js'
211
                        ]
212
                    }, {
213
                        name: 'MetronicApp',
214
                        files: [
215
                            'js/controllers/UISelectController.js'
216
                        ]
217
                    }]);
218
                }]
219
            }
220
        })
221
 
222
        // UI Bootstrap
223
        .state('uibootstrap', {
224
            url: "/ui_bootstrap.html",
225
            templateUrl: "views/ui_bootstrap.html",
226
            data: {pageTitle: 'AngularJS UI Bootstrap'},
227
            controller: "GeneralPageController",
228
            resolve: {
229
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
230
                    return $ocLazyLoad.load([{
231
                        name: 'MetronicApp',
232
                        files: [
233
                            'js/controllers/GeneralPageController.js'
234
                        ]
235
                    }]);
236
                }]
237
            }
238
        })
239
 
240
        // Tree View
241
        .state('tree', {
242
            url: "/tree",
243
            templateUrl: "views/tree.html",
244
            data: {pageTitle: 'jQuery Tree View'},
245
            controller: "GeneralPageController",
246
            resolve: {
247
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
248
                    return $ocLazyLoad.load([{
249
                        name: 'MetronicApp',
250
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
251
                        files: [
252
                            '../../../assets/global/plugins/jstree/dist/themes/default/style.min.css',
253
 
254
                            '../../../assets/global/plugins/jstree/dist/jstree.min.js',
255
                            '../../../assets/admin/pages/scripts/ui-tree.js',
256
                            'js/controllers/GeneralPageController.js'
257
                        ]
258
                    }]);
259
                }]
260
            }
261
        })    
262
 
263
        // Form Tools
264
        .state('formtools', {
265
            url: "/form-tools",
266
            templateUrl: "views/form_tools.html",
267
            data: {pageTitle: 'Form Tools'},
268
            controller: "GeneralPageController",
269
            resolve: {
270
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
271
                    return $ocLazyLoad.load([{
272
                        name: 'MetronicApp',
273
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
274
                        files: [
275
                            '../../../assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css',
276
                            '../../../assets/global/plugins/bootstrap-switch/css/bootstrap-switch.min.css',
277
                            '../../../assets/global/plugins/jquery-tags-input/jquery.tagsinput.css',
278
                            '../../../assets/global/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css',
279
                            '../../../assets/global/plugins/typeahead/typeahead.css',
280
 
281
                            '../../../assets/global/plugins/fuelux/js/spinner.min.js',
282
                            '../../../assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js',
283
                            '../../../assets/global/plugins/jquery-inputmask/jquery.inputmask.bundle.min.js',
284
                            '../../../assets/global/plugins/jquery.input-ip-address-control-1.0.min.js',
285
                            '../../../assets/global/plugins/bootstrap-pwstrength/pwstrength-bootstrap.min.js',
286
                            '../../../assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js',
287
                            '../../../assets/global/plugins/jquery-tags-input/jquery.tagsinput.min.js',
288
                            '../../../assets/global/plugins/bootstrap-maxlength/bootstrap-maxlength.min.js',
289
                            '../../../assets/global/plugins/bootstrap-touchspin/bootstrap.touchspin.js',
290
                            '../../../assets/global/plugins/typeahead/handlebars.min.js',
291
                            '../../../assets/global/plugins/typeahead/typeahead.bundle.min.js',
292
                            '../../../assets/admin/pages/scripts/components-form-tools.js',
293
 
294
                            'js/controllers/GeneralPageController.js'
295
                        ]
296
                    }]);
297
                }]
298
            }
299
        })        
300
 
301
        // Date & Time Pickers
302
        .state('pickers', {
303
            url: "/pickers",
304
            templateUrl: "views/pickers.html",
305
            data: {pageTitle: 'Date & Time Pickers'},
306
            controller: "GeneralPageController",
307
            resolve: {
308
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
309
                    return $ocLazyLoad.load([{
310
                        name: 'MetronicApp',
311
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
312
                        files: [
313
                            '../../../assets/global/plugins/clockface/css/clockface.css',
314
                            '../../../assets/global/plugins/bootstrap-datepicker/css/datepicker3.css',
315
                            '../../../assets/global/plugins/bootstrap-timepicker/css/bootstrap-timepicker.min.css',
316
                            '../../../assets/global/plugins/bootstrap-colorpicker/css/colorpicker.css',
317
                            '../../../assets/global/plugins/bootstrap-daterangepicker/daterangepicker-bs3.css',
318
                            '../../../assets/global/plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css',
319
 
320
                            '../../../assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js',
321
                            '../../../assets/global/plugins/bootstrap-timepicker/js/bootstrap-timepicker.min.js',
322
                            '../../../assets/global/plugins/clockface/js/clockface.js',
323
                            '../../../assets/global/plugins/bootstrap-daterangepicker/moment.min.js',
324
                            '../../../assets/global/plugins/bootstrap-daterangepicker/daterangepicker.js',
325
                            '../../../assets/global/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js',
326
                            '../../../assets/global/plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js',
327
 
328
                            '../../../assets/admin/pages/scripts/components-pickers.js',
329
 
330
                            'js/controllers/GeneralPageController.js'
331
                        ]
332
                    }]);
333
                }]
334
            }
335
        })
336
 
337
        // Custom Dropdowns
338
        .state('dropdowns', {
339
            url: "/dropdowns",
340
            templateUrl: "views/dropdowns.html",
341
            data: {pageTitle: 'Custom Dropdowns'},
342
            controller: "GeneralPageController",
343
            resolve: {
344
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
345
                    return $ocLazyLoad.load([{
346
                        name: 'MetronicApp',
347
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
348
                        files: [
349
                            '../../../assets/global/plugins/bootstrap-select/bootstrap-select.min.css',
350
                            '../../../assets/global/plugins/select2/select2.css',
351
                            '../../../assets/global/plugins/jquery-multi-select/css/multi-select.css',
352
 
353
                            '../../../assets/global/plugins/bootstrap-select/bootstrap-select.min.js',
354
                            '../../../assets/global/plugins/select2/select2.min.js',
355
                            '../../../assets/global/plugins/jquery-multi-select/js/jquery.multi-select.js',
356
 
357
                            '../../../assets/admin/pages/scripts/components-dropdowns.js',
358
 
359
                            'js/controllers/GeneralPageController.js'
360
                        ]
361
                    }]);
362
                }]
363
            }
364
        })
365
 
366
        // Advanced Datatables
367
        .state('datatablesAdvanced', {
368
            url: "/datatables/advanced.html",
369
            templateUrl: "views/datatables/advanced.html",
370
            data: {pageTitle: 'Advanced Datatables'},
371
            controller: "GeneralPageController",
372
            resolve: {
373
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
374
                    return $ocLazyLoad.load({
375
                        name: 'MetronicApp',
376
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
377
                        files: [
378
                            '../../../assets/global/plugins/select2/select2.css',                            
379
                            '../../../assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css',
380
                            '../../../assets/global/plugins/datatables/extensions/Scroller/css/dataTables.scroller.min.css',
381
                            '../../../assets/global/plugins/datatables/extensions/ColReorder/css/dataTables.colReorder.min.css',
382
 
383
                            '../../../assets/global/plugins/select2/select2.min.js',
384
                            '../../../assets/global/plugins/datatables/all.min.js',
385
                            'js/scripts/table-advanced.js',
386
 
387
                            'js/controllers/GeneralPageController.js'
388
                        ]
389
                    });
390
                }]
391
            }
392
        })
393
 
394
        // Ajax Datetables
395
        .state('datatablesAjax', {
396
            url: "/datatables/ajax.html",
397
            templateUrl: "views/datatables/ajax.html",
398
            data: {pageTitle: 'Ajax Datatables'},
399
            controller: "GeneralPageController",
400
            resolve: {
401
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
402
                    return $ocLazyLoad.load({
403
                        name: 'MetronicApp',
404
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
405
                        files: [
406
                            '../../../assets/global/plugins/select2/select2.css',                            
407
                            '../../../assets/global/plugins/bootstrap-datepicker/css/datepicker.css',
408
                            '../../../assets/global/plugins/datatables/plugins/bootstrap/dataTables.bootstrap.css',
409
 
410
                            '../../../assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js',
411
                            '../../../assets/global/plugins/select2/select2.min.js',
412
                            '../../../assets/global/plugins/datatables/all.min.js',
413
 
414
                            '../../../assets/global/scripts/datatable.js',
415
                            'js/scripts/table-ajax.js',
416
 
417
                            'js/controllers/GeneralPageController.js'
418
                        ]
419
                    });
420
                }]
421
            }
422
        })
423
 
424
        // User Profile
425
        .state("profile", {
426
            url: "/profile",
427
            templateUrl: "views/profile/main.html",
428
            data: {pageTitle: 'User Profile'},
429
            controller: "UserProfileController",
430
            resolve: {
431
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
432
                    return $ocLazyLoad.load({
433
                        name: 'MetronicApp',  
434
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
435
                        files: [
436
                            '../../../assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.css',
437
                            '../../../assets/admin/pages/css/profile.css',
438
                            '../../../assets/admin/pages/css/tasks.css',
439
 
440
                            '../../../assets/global/plugins/jquery.sparkline.min.js',
441
                            '../../../assets/global/plugins/bootstrap-fileinput/bootstrap-fileinput.js',
442
 
443
                            '../../../assets/admin/pages/scripts/profile.js',
444
 
445
                            'js/controllers/UserProfileController.js'
446
                        ]                    
447
                    });
448
                }]
449
            }
450
        })
451
 
452
        // User Profile Dashboard
453
        .state("profile.dashboard", {
454
            url: "/dashboard",
455
            templateUrl: "views/profile/dashboard.html",
456
            data: {pageTitle: 'User Profile'}
457
        })
458
 
459
        // User Profile Account
460
        .state("profile.account", {
461
            url: "/account",
462
            templateUrl: "views/profile/account.html",
463
            data: {pageTitle: 'User Account'}
464
        })
465
 
466
        // User Profile Help
467
        .state("profile.help", {
468
            url: "/help",
469
            templateUrl: "views/profile/help.html",
470
            data: {pageTitle: 'User Help'}      
471
        })
472
 
473
        // Todo
474
        .state('todo', {
475
            url: "/todo",
476
            templateUrl: "views/todo.html",
477
            data: {pageTitle: 'Todo'},
478
            controller: "TodoController",
479
            resolve: {
480
                deps: ['$ocLazyLoad', function($ocLazyLoad) {
481
                    return $ocLazyLoad.load({
482
                        name: 'MetronicApp',  
483
                        insertBefore: '#ng_load_plugins_before', // load the above css files before '#ng_load_plugins_before'
484
                        files: [
485
                            '../../../assets/global/plugins/bootstrap-datepicker/css/datepicker3.css',
486
                            '../../../assets/global/plugins/select2/select2.css',
487
                            '../../../assets/admin/pages/css/todo.css',
488
 
489
                            '../../../assets/global/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js',
490
                            '../../../assets/global/plugins/select2/select2.min.js',
491
 
492
                            '../../../assets/admin/pages/scripts/todo.js',
493
 
494
                            'js/controllers/TodoController.js'  
495
                        ]                    
496
                    });
497
                }]
498
            }
499
        })
500
 
501
}]);
502
 
503
/* Init global settings and run the app */
504
MetronicApp.run(["$rootScope", "settings", "$state", function($rootScope, settings, $state) {
505
    $rootScope.$state = $state; // state to be accessed from view
506
}]);