/**
* @ngdoc fasit
* @name fasit.module.#fasit
* @fasit
*
* @description
* Huvudmodul i applikationen FasIT
*
*/
(function() {
const dependencies: string[] = [
'ui.bootstrap',
'ui.utils',
'ngRoute',
'ngCookies',
'ngResource',
'ngSanitize',
'jmdobry.angular-cache',
'pascalprecht.translate',
'angularFileUpload',
'angulartics',
'angulartics.google.analytics'
];
const fasitApp: any = angular.module('fasit', dependencies);
fasitApp.config(fasitConfig).run(fasitRun);
/* @ngInject */
function fasitConfig(
$routeProvider: any,
$angularCacheFactoryProvider: any,
$translateProvider: any,
$locationProvider: any,
$httpProvider: any,
$rootScopeProvider: any,
$compileProvider: any,
$provide: any
) {
$provide.decorator('ngViewDirective',
[
'$delegate', function($delegate) {
const directive = $delegate[1];
const tempLink = directive.link;
const link: any = function(scope, $element) {
scope.$$routeInit = true;
tempLink(scope, $element);
};
directive.compile = function($element, attr) {
return link;
};
return $delegate;
}
]);
//$compileProvider.debugInfoEnabled(false);
// TODO frha: Hårdkoda inte adresser utan se till att det blir ett domänvärde eftersom det används på fler ställen
$routeProvider
.when('/Dokument/:id', {
templateUrl: 'app/Scopes/Dokument/Dokument.html',
controller: 'DokumentCtrl',
reloadOnSearch: false })
.when('/FasitNytt',
{
templateUrl: 'app/Scopes/FasitNytt/FasitNytt.html',
controller: 'FasitNyttCtrl',
reloadOnSearch: false
})
.when('/Objekt/:id',
{
templateUrl: 'app/Scopes/MaeklarObjekt/MaeklarObjekt.html',
controller: 'MaeklarObjektCtrl',
reloadOnSearch: false
})
.when('/Objektlista',
{
templateUrl: 'app/Scopes/ObjektLista/ObjektLista.html',
controller: 'ObjektListaCtrl',
reloadOnSearch: false
})
.when('/Kontakt/:personId',
{
templateUrl: 'app/Scopes/Kontakt/Kontakt.html',
controller: 'KontaktCtrl',
reloadOnSearch: false,
})
.when('/Kontaktlista',
{
templateUrl: 'app/Scopes/KontaktLista/KontaktLista.html',
controller: 'KontaktListaCtrl',
reloadOnSearch: false
})
// TODO frha: Borde inte denna kunna tas bort?
.when('/KontaktlistaOld',
{
templateUrl: 'app/Scopes/KontaktLista/KontaktListaOld.html',
controller: 'KontaktListaCtrlOld',
reloadOnSearch: false
})
.when('/NyKontakt',
{
templateUrl: 'app/Scopes/NyKontakt/NyKontakt.html',
controller: 'NyKontaktCtrl',
reloadOnSearch: false
})
.when('/Saljdriv/Skickadetips',
{
templateUrl: 'app/Scopes/Saelj/SkickadeTips/SkickadeTips.html',
controller: 'SkickadeTipsCtrl',
reloadOnSearch: false
})
.when('/Installningar',
{
templateUrl: 'app/Scopes/Instaellningar/Instaellningar.html',
controller: 'InstaellningarCtrl',
reloadOnSearch: false
})
.when('/Omraden',
{
templateUrl: 'app/Scopes/InstaellningarOmraaden/InstaellningarOmraaden.html',
controller: 'InstaellningarOmraadenCtrl',
reloadOnSearch: false
})
.when('/Tillaggsklausuler',
{
templateUrl: 'app/Scopes/InstaellningarTillaeggsklausuler/InstaellningarTillaeggsklausuler.html',
controller: 'StandardTextAdminSideDrawerCtrl',
reloadOnSearch: false
})
.when('/FristaaendeDokument', // TODO frha: Byt namn till FristaendeDokument för att följa standard för adresser
{
templateUrl: 'app/Scopes/FristaaendeDokument/FristaaendeDokument.html',
controller: 'FristaaendeDokumentCtrl',
reloadOnSearch: false
})
.when('/Fakturor',
{
templateUrl: 'app/Scopes/Fakturor/Fakturor.html',
controller: 'FakturorCtrl',
reloadOnSearch: false
})
.when('/Komponenter',
{
templateUrl: 'app/Scopes/Komponenter/Komponenter.html',
controller: 'KomponenterCtrl',
reloadOnSearch: false
})
.when('/DigitalBudgivning/:id',
{
templateUrl: 'app/Scopes/DigitalBudgivningMobil/DigitalBudgivningMobil.html',
controller: 'DigitalBudgivningMobilCtrl',
reloadOnSearch: false
})
.when('/Haendelser', // TODO frha: Byt namn till Handelser för att följa standard för adresser
{
templateUrl: 'app/Scopes/Haendelser/Haendelser.html',
controller: 'HaendelserCtrl',
reloadOnSearch: false
})
// Routar vi via Angular2 så får vi problem när vi vill använda angularJS-servicar.
// Workaround är att köra även Angular 2+ via AngularJS routing tills nödvändiga servicar är migrerade eller en lösning har hittats.
// detta är en känd bugg i att köra hybridappar, som i nuläget inte verkar ha någon lösning
// https://github.com/angular/angular/issues/14239
// Ska hybridrouting köras (med en del routes som hanteras av Angular 2+) behöver template vara tom, för att rensa ng-view.
.when('/CleanCache', { template: '' })
.when('/NyttObjekt', { template: '' })
.when('/Saljdriv', { template: '' })
.when('/Saljdriv/Forsaljning', { template: '' }) // TODO frha: skilj på de olika
.when('/Saljdriv/Intagsforsok', {
template: ''
})
.when('/Saljdriv/Provision', {
template: ``
})
.when('/Saljdriv/Mojlighetlista/Guldgruvan',
{
template: ``,
reloadOnSearch: false
})
.when('/Saljdriv/Mojlighetlista/Aterkoppling',
{
template: ``,
reloadOnSearch: false
})
.when('/Saljdriv/Mojlighetlista/VantarPaKontakt',
{
template: ``,
reloadOnSearch: false
})
.otherwise({ redirectTo: '/Saljdriv' });
// sätter max antal digests som får köra innan Angular varnar för endless-loopar
$rootScopeProvider.digestTtl(50);
const localStorageOptions: { maxAge: number;recycleFreq: number;deleteOnExpire: string;storageMode: string } = {
maxAge: 60 * 60 * 1000,
recycleFreq: 60 * 1000,
deleteOnExpire: 'passive',
storageMode: 'none' //vs localStorage
};
$angularCacheFactoryProvider.setCacheDefaults(localStorageOptions);
$httpProvider.interceptors.push('responseInterceptor');
$translateProvider.useSanitizeValueStrategy(null);
$translateProvider.preferredLanguage('sv_SE'); // Sätter startspråk
$translateProvider.fallbackLanguage('sv_SE'); // Sätter språk som används vid ogiltig input
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|mailto|callto|tel):/);
}
/* @ngInject */
function fasitRun (configModelService: fb.IConfigModelService) {
configModelService.init();
}
})();