module-part1.js 11.6 KB
Newer Older
frank.xa.zhang's avatar
frank.xa.zhang committed
1 2 3 4 5 6 7 8 9 10 11 12 13
//Common Bind Module Method
var bindModule = function (thisModule, controllerProvider, compileProvider, filterProvider, provide) {

    thisModule.controller = controllerProvider.register;
    thisModule.directive = compileProvider.directive;
    thisModule.filter = filterProvider.register;
    thisModule.factory = provide.factory;
    thisModule.service = provide.service;

    return thisModule;
};

// register common module for shared functionalities for all other feature modules
14 15 16 17 18 19 20 21 22 23
var commonModule = angular.module('app.common', ['pascalprecht.translate', 'ngAnimate', 'ui.grid', 'ui.grid.selection', 'ui.grid.selection', 'ui.grid.treeView', 'ui.grid.resizeColumns', 'ui.grid.grouping', 'ui.grid.exporter', 'app.config', 'ui.grid.edit', 'angularFileUpload'])
    .run(['$log', function ($log) {
        $log.debug('app.common.run()...');
    }])
    // define the script files for lazy loading and method to create depencency map for resovle config in route
    .provider('scriptDependency', ['version', function (version) {
        'use strict';
        // Here must add version parameter ?v=***,
        // to solve the problem that the bundle is not refreshed when its content changed.

24 25
        this.noPermissionPage = [{
            url: '/bundles/noPermissionPage.js?v=' + version,
26 27
            type: 'text/javascript'
        }, {
28
            url: '/bundles/noPermissionPage.less?v=' + version,
29 30
            type: 'text/css'
        }];
frank.xa.zhang's avatar
frank.xa.zhang committed
31

32 33 34 35 36 37 38 39 40
        this.vat = [{
            url: '/bundles/vat.js?v=' + version,
            type: 'text/javascript'
        }, {
            url: '/bundles/vat.css?v=' + version,
            type: 'text/css'
        }, {
            url: '/bundles/vat.less?v=' + version,
            type: 'text/css'
41 42 43 44 45 46 47 48
        }];

        this.infrastructure = [{
            url: '/bundles/infrastructure.js?v=' + version,
            type: 'text/javascript'
        }, {
            url: '/bundles/infrastructure.less?v=' + version,
            type: 'text/css'
49
        }];
frank.xa.zhang's avatar
frank.xa.zhang committed
50 51


52 53
        this.calendar = [{
            url: '/bundles/calendar.js?v=' + version,
54 55
            type: 'text/javascript'
        }, {
56
            url: '/bundles/calendar.css?v=' + version,
57 58
            type: 'text/css'
        }, {
59
            url: '/bundles/calendar.less?v=' + version,
60 61
            type: 'text/css'
        }];
frank.xa.zhang's avatar
frank.xa.zhang committed
62

frank.xa.zhang's avatar
frank.xa.zhang committed
63 64 65 66 67 68 69

this.framework = [{
            url: '/bundles/framework.less?v=' + version,
            type: 'text/css'
        }];        this.summary = [

            {
70 71
                url: '/bundles/summary.css?v=' + version,
                type: 'text/css'
frank.xa.zhang's avatar
frank.xa.zhang committed
72 73 74 75 76 77 78
            }];

        this.main = [
            {
                url: '/bundles/appMain.less?v=' + version,
                type: 'text/css'
            }];
frank.xa.zhang's avatar
frank.xa.zhang committed
79

80 81 82 83
        this.createDependenciesMap = function (dependencies) {
            if (!angular.isArray(dependencies)) {
                throw new TypeError('"scriptUrls" should be an array type!');
            }
frank.xa.zhang's avatar
frank.xa.zhang committed
84

85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
            var dependenciesMap = {
                dependency: ['$q', '$rootScope',
                    function ($q, $rootScope) {
                        var deferred = $q.defer();
                        PWC.Loader.load(dependencies, function (hasNewJsLoaded) {
                            // If has new JavaScript resource loaded, should call $apply, otherwise,
                            // should not call it.
                            if (hasNewJsLoaded) {
                                $rootScope.$apply(function () {
                                    deferred.resolve();
                                });
                            } else {
                                deferred.resolve();
                            }
                        });
                        return deferred.promise;
                    }
                ]
            };

            return dependenciesMap;
        };

        this.$get = function () {
            return {
                createDependenciesMap: createDependenciesMap,
                infrastructure: infrastructure,
                vat: vat,
frank.xa.zhang's avatar
frank.xa.zhang committed
113
                noPermissionPageModule: noPermissionPageModule,
114
                calendar: calendar,
frank.xa.zhang's avatar
frank.xa.zhang committed
115 116
                main:main,
                framework:framework
117 118 119
            };
        };
    }]);
frank.xa.zhang's avatar
frank.xa.zhang committed
120 121 122

// register services module
var webservices = angular.module('app.webservices', ['app.common'])
123 124 125
    .run(['$log', function ($log) {
        $log.debug('app.webservices.run()...');
    }]);
frank.xa.zhang's avatar
frank.xa.zhang committed
126 127

// register framework module for application framework
128
var frameworkModule = angular.module('app.framework', ['app.webservices', 'app.common', 'ui.dashboard'])
129 130 131 132 133 134 135 136
    .run(['$log', function ($log) {
        $log.debug('app.framework.run()...');
    }])
    .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', 'scriptDependencyProvider', '$stateProvider',
        function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, scriptDependencyProvider, $stateProvider) {
            'use strict';
            // this is required to add controller/directive/filter/service after angular bootstrap
            bindModule(frameworkModule, $controllerProvider, $compileProvider, $filterProvider, $provide);
frank.xa.zhang's avatar
frank.xa.zhang committed
137

138
            //铃铛通知
139
            $stateProvider.state({
140 141
                name: 'notification',
                url: '/notification',
142 143 144 145
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                            function ($scope, $stateParams, appTranslation) {
146
                                appTranslation.load([appTranslation.appPart]);
147
                            }],
148
                        template: '<app-push-notification></app-push-notification>',
149 150
                    }
                },
frank.xa.zhang's avatar
frank.xa.zhang committed
151 152 153 154 155
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
            });

156 157

            $stateProvider.state({
158 159
                name: 'summary',
                url: '/summary',
160
                views: {
161 162 163
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                            function ($scope, $stateParams, appTranslation) {
164 165
                                appTranslation.load([appTranslation.appPart]);
                            }],
166
                        template: '<app-summary></app-summary>'
167 168
                    }
                },
169 170
                resolve: scriptDependencyProvider.createDependenciesMap(_.flatten([scriptDependencyProvider.summary, scriptDependencyProvider.vat])),
                deepStateRedirect: true,
171 172
                sticky: true
            });
frank.xa.zhang's avatar
frank.xa.zhang committed
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189

            $stateProvider.state({
                name: 'mainPage',
                url: '/mainPage',
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                            function ($scope, $stateParams, appTranslation) {
                                appTranslation.load([appTranslation.appPart]);
                            }],
                        template: '<app-main></app-main>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(_.flatten([scriptDependencyProvider.main])),
                deepStateRedirect: true,
                sticky: true
            });
190 191
        }
    ]);
192

193 194 195 196
// register cache module for application framework
var cacheModule = angular.module('app.cache', ['app.common'])
    .run(['$log', 'cacheService', function ($log, cacheService) {
        $log.debug('app.cache.run()...');
197

198 199 200 201 202 203 204 205 206 207 208 209 210
    }]);

var vatModule = angular.module('app.vat', ['ui.grid', 'ui.grid.selection', 'ui.grid.moveColumns', 'ui.grid.grouping', 'ui.grid.expandable', 'ui.grid.treeView', 'ui.grid.exporter', 'ui.grid.resizeColumns', 'mc.resizer', 'ui.select', 'ngAnimate', 'ngSanitize', 'ui.bootstrap', 'ui.grid.edit', 'perfect_scrollbar', 'dx', 'ui.grid.pinning',])
    .run(['$log', function ($log) {
        $log.debug('app.vat.run()...');
    }])
    .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider',
        function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) {
            'use strict';
            // this is required to add controller/directive/filter/service after angular bootstrap
            bindModule(vatModule, $controllerProvider, $compileProvider, $filterProvider, $provide);

            uiSelectConfig.theme = 'select2';
211 212

            $stateProvider.state({
213 214 215
                name: 'vat',
                url: '/vat',
                cache: false,
216
                views: {
217 218 219 220
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                            function ($scope, $stateParams, appTranslation) {
                                appTranslation.load([appTranslation.vat]);
221
                            }],
222
                        template: '<vat-layout></vat-layout>',
223 224
                    }
                },
225 226
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
227 228 229
                sticky: true
            });

230 231 232

            /**********the end of a beautiful separated line for analyzeReport*********/

233
            $stateProvider.state({
234 235
                name: 'vat.devGrid',
                url: '/devGrid',
236
                views: {
237 238 239 240
                    '@vat': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                            function ($scope, $stateParams, appTranslation) {
                                appTranslation.load([appTranslation.vat]);
241
                            }],
242
                        template: '<dev-grid></dev-grid>',
243 244
                    }
                },
245 246 247
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.vat),
                deepStateRedirect: true,
                sticky: true
248
            });
249 250 251 252 253 254 255 256 257 258 259 260 261 262 263
        }]);

//税务日历模块
var taxCalendarModule = angular.module('app.taxCalendar', ['mc.resizer', 'ui.select', 'ngSanitize', 'perfect_scrollbar', 'dx', 'ngFileSaver'])
    .run(['$log', function ($log) {
        $log.debug('app.taxCalendar.run()...');
    }])
    .config(['$controllerProvider', '$urlRouterProvider', '$compileProvider', '$filterProvider', '$provide', '$stateProvider', 'uiSelectConfig', 'scriptDependencyProvider',
        function ($controllerProvider, $urlRouterProvider, $compileProvider, $filterProvider, $provide, $stateProvider, uiSelectConfig, scriptDependencyProvider) {
            'use strict';
            bindModule(taxCalendarModule, $controllerProvider, $compileProvider, $filterProvider, $provide);

            //税务日历
            $stateProvider.state({
                name: 'taxCalendar',
264
                url: '/taxCalendar',
265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
                views: {
                    '@': {
                        controller: ['$scope', '$stateParams', 'appTranslation',
                            function ($scope, $stateParams, appTranslation) {
                                appTranslation.load([appTranslation.appPart]);
                            }],
                        template: '<calendar-display></calendar-display>',
                    }
                },
                resolve: scriptDependencyProvider.createDependenciesMap(scriptDependencyProvider.calendar),
                deepStateRedirect: true,
                sticky: true
            });

        }]);