raimund@548: /**
raimund@548:  * Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
raimund@548:  * Software engineering by Intevation GmbH
raimund@548:  *
raimund@548:  * This file is Free Software under the GNU GPL (v>=3)
raimund@548:  * and comes with ABSOLUTELY NO WARRANTY! Check out
raimund@548:  * the documentation coming with IMIS-Labordaten-Application for details.
raimund@548:  */
raimund@548: Ext.Loader.setConfig({
raimund@548:     enabled: true,
raimund@548:     paths: {
dustin@885:         'Ext.i18n': 'resources/lib/ext/i18n/',
dustin@885:         'Ext.ux.upload': 'resources/lib/ext/upload'
raimund@548:     }
raimund@548: });
raimund@548: 
raimund@548: Ext.application({
raimund@548: 
raimund@548:     // Name of the application. Do not change as this name is used in
raimund@548:     // references!
raimund@548:     name: 'Lada',
raimund@548: 
raimund@548:     // Setting up translations. This is done using a ext-plgin which can be
raimund@548:     // found on https://github.com/elmasse/Ext.i18n.Bundle
raimund@548:     requires: [
raimund@1051:         'Lada.view.Viewport',
raimund@548:         'Lada.override.Table',
andre@608:         'Lada.override.RestProxy',
raimund@570:         'Lada.override.RowEditor',
dustin@679:         'Lada.override.i18n.DE',
dustin@679:         'Lada.override.JSON',
raimund@1111:         'Lada.override.RowExpander',
raimund@1111:         'Lada.view.plugin.GridRowExpander',
raimund@548:         'Ext.i18n.Bundle',
raimund@548:         'Ext.layout.container.Column',
raimund@1051:         'Lada.store.Deskriptoren',
raimund@1051:         'Lada.store.Ortszuordnung',
raimund@1051:         'Lada.store.Messungen',
raimund@1051:         'Lada.store.Zusatzwerte',
raimund@1051:         'Lada.store.Status',
raimund@1051:         'Lada.store.Messwerte',
raimund@1051:         'Lada.store.MKommentare',
raimund@548:         'Lada.store.Datenbasis',
raimund@548:         'Lada.store.Messeinheiten',
raimund@548:         'Lada.store.Messgroessen',
raimund@548:         'Lada.store.Messmethoden',
raimund@548:         'Lada.store.Messstellen',
raimund@548:         'Lada.store.Netzbetreiber',
dustin@1004:         'Lada.store.Orte',
raimund@548:         'Lada.store.Pflichtmessgroessen',
raimund@548:         'Lada.store.Probenarten',
raimund@548:         'Lada.store.Probenzusaetze',
raimund@548:         'Lada.store.Staaten',
raimund@548:         'Lada.store.Umwelt',
dustin@963:         'Lada.store.Verwaltungseinheiten',
dustin@963:         'Lada.store.StatusWerte',
raimund@1066:         'Lada.store.StatusStufe',
mstanko@1107:         'Lada.store.Probenehmer',
mstanko@1107:         'Lada.store.DatensatzErzeuger',
mstanko@1107:         'Lada.store.MessprogrammKategorie',
raimund@1066:         'Lada.model.MessstelleLabor'
raimund@548:     ],
raimund@548:     bundle: {
raimund@548:         bundle: 'Lada',
raimund@548:         lang: 'de-DE',
raimund@548:         path: 'resources/i18n',
raimund@548:         noCache: true
raimund@548:     },
raimund@548: 
raimund@548:     // Setting this variable to true triggers loading the Viewport.js
raimund@548:     // file which sets ob the viewport.
raimund@668:     //autoCreateViewport: true,
raimund@548: 
raimund@548:     // Start the application.
raimund@548:     launch: function() {
dustin@716:         Lada.username = '';
dustin@716:         Lada.userroles = '';
dustin@716:         Lada.logintime = '';
dustin@798:         Lada.mst = [];
raimund@1075:         Lada.netzbetreiber = [];
dustin@976:         Lada.clientVersion = '2.2-STAMMDATEN';
dustin@805:         Lada.serverVersion = '';
dustin@716: 
andre@608:         var queryString = document.location.href.split('?')[1];
andre@608:         if (queryString) {
andre@608:             Lada.openIDParams = queryString;
andre@608:         }
andre@608:         Ext.Ajax.request({
dustin@999:             url: 'lada-server/rest/user',
andre@608:             method: 'GET',
andre@608:             scope: this,
andre@608:             success: this.onLoginSuccess,
andre@608:             failure: this.onLoginFailure
andre@608:         });
andre@608:     },
andre@608: 
raimund@669:     onLoginFailure: function(response) {
andre@608:         try {
andre@608:             var json = Ext.decode(response.responseText);
andre@608:             if (json) {
raimund@669:                 if (json.message === '699') {
andre@608:                     /* This is the unauthorized message with the authentication
andre@608:                      * redirect in the data */
raimund@913:                     Ext.MessageBox.alert('Es konnte kein Benutzername gefunden werden!',
raimund@913:                             json.data);
andre@608:                     return;
andre@608:                 }
raimund@669:                 if (json.message === '698') {
andre@608:                     /* This is general authentication error */
andre@608:                     Ext.MessageBox.alert('Kommunikation mit dem Login Server fehlgeschlagen',
andre@608:                             json.data);
andre@608:                     return;
andre@608:                 }
andre@608:             }
raimund@669:         }
raimund@669:         catch (e) {
andre@608:             // This is likely a 404 or some unknown error. Show general error then.
andre@608:         }
andre@608:         Ext.MessageBox.alert('Kommunikation mit dem Lada Server fehlgeschlagen',
andre@608:                 'Es konnte keine erfolgreiche Verbindung zum lada server aufgebaut werden.');
andre@608:     },
andre@608: 
dustin@715:     onLoginSuccess: function(response) {
dustin@715:         /* Parse Username and Timestamp */
dustin@715:         var json = Ext.decode(response.responseText);
dustin@716:         Lada.username = json.data.username;
dustin@716:         Lada.userroles = json.data.roles;
dustin@716:         Lada.logintime = json.data.servertime;
raimund@1066:         Lada.mst = []; //Store Messstellen this user may select
raimund@1039:         Lada.funktionen = json.data.funktionen;
raimund@1083:         Lada.netzbetreiber = json.data.netzbetreiber;
dustin@809:         //Lada.serverVersion
dustin@809:         this.getServerVersion();
raimund@1066:         var mstLabor = json.data.messstelleLabor;
raimund@1066:         for (var i = 0; i < mstLabor.length; i++) {
raimund@1066:             Lada.mst.push(mstLabor[i].messstelle);
raimund@1066:             Lada.mst.push(mstLabor[i].labor);
raimund@1066:         }
raimund@1066: 
raimund@1066:         var mstLaborStore = Ext.create('Ext.data.Store', {
raimund@1066:             storeId: 'messstellelabor',
raimund@1066:             model: 'Lada.model.MessstelleLabor'
raimund@1066:         });
dustin@715: 
raimund@548:         Ext.create('Lada.store.Datenbasis', {
raimund@548:             storeId: 'datenbasis'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Messeinheiten', {
raimund@548:             storeId: 'messeinheiten'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Messgroessen', {
raimund@548:             storeId: 'messgroessen'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Messmethoden', {
raimund@548:             storeId: 'messmethoden'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Messstellen', {
raimund@1066:             storeId: 'messstellen',
raimund@1066:             listeners: {
raimund@1066:                 load: {
raimund@1066:                     fn: function(store, records) {
raimund@1066:                         for (var i = 0; i < mstLabor.length; i++) {
raimund@1066:                             var item = store.getById(mstLabor[i].messstelle);
raimund@1066:                             var itemLabor = store.getById(mstLabor[i].labor);
raimund@1084:                             if (!itemLabor) {
raimund@1084:                                 continue;
raimund@1084:                             }
mstanko@1116:                             if ( item.get('messStelle') === itemLabor.get('messStelle') ) {
mstanko@1116:                                 displayCombi = item.get('messStelle');
mstanko@1116:                             } else {
mstanko@1116:                                 displayCombi = item.get('messStelle') + '/' + itemLabor.get('messStelle')
mstanko@1116:                             }
raimund@1066:                             mstLaborStore.add({
raimund@1066:                                 id: i,
raimund@1066:                                 messStelle: mstLabor[i].messstelle,
raimund@1066:                                 netzbetreiberId: item.get('netzbetreiberId'),
raimund@1066:                                 laborMst: mstLabor[i].labor,
mstanko@1116:                                 displayCombi: displayCombi
raimund@1066:                             });
raimund@1066:                         }
raimund@1066:                     }
raimund@1066:                 }
raimund@1066:             }
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Netzbetreiber', {
raimund@548:             storeId: 'netzbetreiber'
raimund@548:         });
dustin@1004:         Ext.create('Lada.store.Orte', {
dustin@1021:             storeId: 'orte',
dustin@1021:             defaultPageSize: 0
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Pflichtmessgroessen', {
raimund@548:             storeId: 'pflichtmessgroessen'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Probenarten', {
raimund@548:             storeId: 'probenarten'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Probenzusaetze', {
raimund@548:             storeId: 'probenzusaetze'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Staaten', {
raimund@548:             storeId: 'staaten'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Umwelt', {
raimund@548:             storeId: 'umwelt'
raimund@548:         });
raimund@548:         Ext.create('Lada.store.Verwaltungseinheiten', {
raimund@548:             storeId: 'verwaltungseinheiten'
raimund@548:         });
mstanko@1107:         Ext.create('Lada.store.Probenehmer', {
ehuber@1108:             storeId: 'probenehmer',
mstanko@1116:             autoLoad: true
mstanko@1107:         });
mstanko@1107:         Ext.create('Lada.store.DatensatzErzeuger', {
mstanko@1116:             storeId: 'datensatzerzeuger',
mstanko@1116:             autoLoad: true
mstanko@1107:         });
mstanko@1107:         Ext.create('Lada.store.MessprogrammKategorie', {
mstanko@1116:             storeId: 'messprogrammkategorie',
mstanko@1116:             autoLoad: true
mstanko@1107:         });
dustin@963:         Ext.create('Lada.store.StatusWerte', {
dustin@965:             storeId: 'statuswerte',
dustin@965:             autoLoad: true
dustin@963:         });
dustin@963:         Ext.create('Lada.store.StatusStufe', {
dustin@965:             storeId: 'statusstufe',
dustin@965:             autoLoad: 'true'
dustin@963:         });
raimund@1015:         Ext.create('Lada.store.ProbeQueries', {
raimund@1015:             storeId: 'probequeries',
raimund@1015:             autoLoad: 'true'
raimund@1015:         });
raimund@1077:         Ext.create('Lada.store.MessungQueries', {
raimund@1077:             storeId: 'messungqueries',
raimund@1077:             autoLoad: 'true'
raimund@1077:         });
raimund@1015:         Ext.create('Lada.store.MessprogrammQueries', {
raimund@1015:             storeId: 'messprogrammqueries',
raimund@1015:             autoLoad: 'true'
raimund@1015:         });
raimund@1015:         Ext.create('Lada.store.StammdatenQueries', {
raimund@1015:             storeId: 'stammdatenqueries',
raimund@1015:             autoLoad: 'true'
raimund@1015:         });
raimund@1015: 
dustin@967:         //A Store containing all MST a User is allowed to set.
dustin@967:         Ext.create('Lada.store.Messstellen', {
dustin@967:             storeId: 'messstellenFiltered',
dustin@967:             filters: function(item) {
dustin@967:                 if (Ext.Array.contains(Lada.mst, item.get('id'))) {
dustin@967:                     return true;
dustin@967:                 }
dustin@967:                 return false;
dustin@967:             }
dustin@967:         });
raimund@1075:         Ext.create('Lada.store.Netzbetreiber', {
raimund@1075:             storeId: 'netzbetreiberFiltered',
raimund@1075:             filters: function(item) {
raimund@1075:                 if (Ext.Array.contains(Lada.netzbetreiber, item.get('id'))) {
raimund@1075:                     return true;
raimund@1075:                 }
raimund@1075:                 return false;
raimund@1075:             }
raimund@1075:         });
raimund@1015:         Ext.create('Lada.view.Viewport');
raimund@548:     },
raimund@548: 
dustin@801:     getServerVersion: function() {
dustin@801:         var i18n = Lada.getApplication().bundle;
dustin@801:         Ext.Ajax.request({
dustin@999:             url: 'lada-server/rest/version',
dustin@801:             method: 'GET',
dustin@801:             headers: {
dustin@801:                 'X-OPENID-PARAMS': Lada.openIDParams
dustin@801:             },
dustin@801:             success: function(response) {
dustin@801:                 var json = Ext.decode(response.responseText);
dustin@805:                 Lada.serverVersion = json.data;
dustin@801:             },
dustin@801:             failure: function(response) {
dustin@801:                 console.log('Error in retrieving the server version.'
dustin@801:                     + ' It might be lower than 2.0-beta2'
dustin@801:                     + ' Or something is broken...');
dustin@805:                 Lada.serverVersion = i18n.getMsg('err.msg.generic.title');
dustin@801:             }
dustin@801:         });
dustin@801:     },
dustin@801: 
raimund@548:     // Define the controllers of the application. They will be initialized
raimund@548:     // first before the application "launch" function is called.
raimund@548:     controllers: [
raimund@548:         'Lada.controller.Filter',
dustin@978:         'Lada.controller.ModeSwitcher',
dustin@1011:         'Lada.controller.Map',
raimund@1049:         'Lada.controller.Ort',
dustin@975:         'Lada.controller.grid.ProbeList',
raimund@1077:         'Lada.controller.grid.MessungList',
dustin@975:         'Lada.controller.grid.MessprogrammeList',
dustin@984:         'Lada.controller.grid.Datensatzerzeuger',
dustin@984:         'Lada.controller.grid.Probenehmer',
raimund@587:         'Lada.controller.form.Probe',
dustin@611:         'Lada.controller.form.Messung',
raimund@587:         'Lada.controller.grid.Probenzusatzwert',
raimund@587:         'Lada.controller.grid.PKommentar',
raimund@597:         'Lada.controller.grid.MKommentar',
raimund@588:         'Lada.controller.grid.Messung',
raimund@595:         'Lada.controller.grid.Messwert',
raimund@638:         'Lada.controller.grid.Status',
raimund@1051:         'Lada.controller.grid.Ortszuordnung',
raimund@1051:         'Lada.controller.form.Ortszuordnung',
dustin@747:         'Lada.controller.form.Location',
dustin@758:         'Lada.controller.form.Messprogramm',
raimund@1072:         'Lada.controller.grid.MessprogrammKategorie',
raimund@1015:         'Lada.controller.grid.Messmethode',
raimund@1015:         'Lada.controller.FilterManagement'
dustin@758:         ]
raimund@548: });