load preferences
authorKilian Saffran <ksaffran@dks.lu>
Thu, 21 Feb 2019 20:26:10 +0000 (21:26 +0100)
committerKilian Saffran <ksaffran@dks.lu>
Thu, 21 Feb 2019 20:26:10 +0000 (21:26 +0100)
index.html
js/app.js
modules/settings/form_datastore.html
modules/settings/index.js
null.json [deleted file]
renderer.js

index 60455e8..1b5b8bd 100644 (file)
@@ -18,8 +18,8 @@
             <div class="bg-dark border-right" id="sidebar-wrapper">
               <div class="sidebar-heading"><a href="javascript:location.href='index.html';"><img src="img/invoicejournal.png" style="width: 140px;"><br/>Invoice Journal</a></div>
               <div class="list-group list-group-flush">
-                    <select class="form-control list-group-item list-group-item-action" id="globaldatasets" onchange="browserapp.loaddataset();">
-                      <option></option>
+                    <select class="form-control list-group-item list-group-item-action bg-primary text-white" id="globaldatasets" onchange="browserapp.loaddataset();">
+                      <option value=""></option>
                     </select>
                     <a  class="list-group-item list-group-item-action bg-light" href="javascript:browserapp.loadmodule('overview');">Übersicht</a>
                     <a  class="list-group-item list-group-item-action bg-light" href="javascript:browserapp.loadmodule('invoices');">Rechnungen</a>
index 8dcd62f..3ef4326 100644 (file)
--- a/js/app.js
+++ b/js/app.js
@@ -1,17 +1,20 @@
 $( document ).ready(function() {
   console.log( "Main ready!" );
+  usersystem.getLocalDataSets(browserapp.getdatasets);
   browserapp.loadmodule("overview");
-  browserapp.getdatasets();
+  
   console.log("After module load!");
 });
 
+
 console.log(navigator.platform);
 console.log(location.protocol);
 var browserapp = {
+  config: null,
   loadmodule: function(modulename){
-    var appdata = browserapp.getconfig();
+    //var appdata = browserapp.getconfig();
     var params = "?";
-    for (var i in appdata){
+    for (var i in this.config){
       params += "&" + i +"=" + encodeURIComponent(appdata[i]);
     }
     console.log("modules/"+modulename+"/index.html"+params);
@@ -25,26 +28,49 @@ var browserapp = {
     }
     if (pageparams){
       for (var i in pageparams){
-
         params += "&" + i +"=" + encodeURIComponent(pageparams[i]);
       }
     }
     //console.log("modules/"+modulename+"/index.html"+params);
     $("#moduleframe").attr("src","modules/"+modulename+"/"+ page +".html"+ params);
   },
-  getconfig:function (){
-    var cdata = usersystem.getPreference("currentdataset");
+  getconfig: async function (){
+    console.log("GetConfig");
+    var cdata = await usersystem.getPreference($("#globaldatasets").val());
+    console.log("Current Dataset");
+    console.log(cdata);
+    var ret = {};
     if ((cdata) && (cdata.name)){
-
+      ret= {dbfile:cdata.dbfile,serviceurl:"http://"+cdata.server+":6060/"};
     }
-    return {dbfile:"invoicejournal",serviceurl:"http://localhost:6060/"};
+    return ret;
   },
-  getdatasets(){
-    var ds = usersystem.getLocalDataSets();
-    for (var i in ds){
-      $("#globaldatasets").append('<option value="'+ds[i].key+'">'+ds[i].name+'</option>');
+  getdatasets: function(gdata){
+    //var ds = usersystem.getLocalDataSets();
+    //console.log("Datasets");
+    //console.log(gdata.length);
+    
+    for (var i in gdata){
+      console.log("TEST:" + i);
+      var prop = usersystem.getPreference(gdata[i],browserapp.addglobaldataset);
+      
+    }
+
+  },
+  addglobaldataset: function(key,gdataset){
+    $("#globaldatasets").append('<option value="'+key+'">'+gdataset.name+'</option>');
+  },
+  loaddataset: function(){
+    if ($("globaldatasets").val() == ""){
+      this.config = null;
+    }else {
+      var ldata = usersystem.getPreference($("globaldatasets").val());
+      console.log("New Loaded DataSet:");
+      console.log(ldata);
+      this.config={dbfile:ldata.dbfile,serviceurl:"http://"+ldata.server+":6060/"};
     }
     
+    
   }
   
 }
\ No newline at end of file
index 417221e..39a1be8 100644 (file)
            </div>
                 </div>
               </nav>
-    <div class="cotainer-fluid" style="margin-top: 52px; padding: 10px;">            
-      <div class="row justify-content-center">
+    <div class="cotainer-fluid" style="margin-top: 52px;">  
+      <ul class="nav nav-tabs" id="pagetab" role="tablist">
+        <li class="nav-item"><a aria-controls="global" aria-selected="true" class="nav-link active" data-toggle="tab" href="#global" id="global-tab" role="tab">Global</a></li>
+        <li class="nav-item"><a aria-controls="templates" aria-selected="false" class="nav-link" data-toggle="tab" href="#templates" id="templates-tab" role="tab">Vorlagen</a></li>
+      </ul>
+      <div class="tab-content" id="tabpagecontent">
+      <div aria-labelledby="global-tab" class="tab-pane fade show active" id="global" role="tabpanel">   
+      <div class="row">
         <div class="col-md-12">
-          <div class="form-group row col-md-4">
-            <label for="name" class="col-sm-2">Name</label>
-            <div class="col-sm-10">
-                <input type="text" class="form-control" id="name" name="name"/>
-            </div>
+          <div class="card">
+          <div class="card-body">
+          <div class="form-group">
+            <label for="name" >Name</label>
+            <input type="text" class="form-control" id="name" name="name"/>
           </div>
         </div>
+        </div>
+        </div>
+      </div>
+      <div class="row">
         <div class="col-md-4">
           <div class="card">
-            <div class="card-header">
-              Verbindung
-            </div>
+            <div class="card-header"> Verbindung </div>
             <div class="card-body">
-              <div class="form-group row">
-                <label for="type" class="col-sm-3">Verbindungs-Typ</label>
-                <div class="col-sm-3">
-                    <select id="type" name="type" class="form-control">
-                        <option value="local">Lokal</option>
-                        <option value="local">LAN</option>
-                        <option value="Cloud">Cloud</option>
-                      </select>
-                </div>
+              <div class="form-group">
+                <label for="type">Verbindungs-Typ</label>
+                <select id="type" name="type" class="form-control">
+                  <option value="local">Lokal</option>
+                  <option value="local">LAN</option>
+                  <option value="Cloud">Cloud</option>
+                </select>
               </div>
-              <div class="form-group row">
-                <label for="serer" class="col-sm-3">Server</label>
-                  <div class="col-sm-8">
-                    <input type="text" class="form-control" id="server" name="server"/>
-                  </div>
+              <div class="form-group">
+                <label for="server">Server</label>
+                  <input type="text" class="form-control" id="server" name="server"/>
               </div>
-              <div class="form-group row">
-                <label for="dbfile" class="col-sm-3">Datenbank</label>
-                <div class="col-sm-8">
-                  <input type="text" class="form-control" id="dbfile" name="dbfile"/>
-                </div>
+              <div class="form-group">
+                <label for="dbfile">Datenbank</label>
+                <input type="text" class="form-control" id="dbfile" name="dbfile"/>
+              </div>
+              <div class="form-group">
+                <label for="type">VPN</label>
+                <select id="vpn" name="vpn" class="form-control">
+                  <option value=""></option>
+                </select>
               </div>
-                <div class="form-group row">
-                    <label for="type" class="col-sm-3">VPN</label>
-                    <div class="col-sm-8">
-                        <select id="vpn" name="vpn" class="form-control">
-                            <option value=""></option>
-                            <option value="vpn1">VPN 1</option>
-                          </select>
-                    </div>
-                  </div>
           </div>
         </div>
         </div>
                 Standard Werte
               </div>
               <div class="card-body">
-                  <div class="form-group row">
-                      <label for="dbname" class="col-sm-2">Mehrwert-Steuer(%)</label>
-                      <div class="col-sm-10">
-                        <input type="text" class="form-control" id="vat" name="vat"/>
-                      </div>
-                    </div>
-                    <div class="form-group row">
-                        <label for="dbname" class="col-sm-2">Währung (Symbol)</label>
-                        <div class="col-sm-10">
-                          <input type="text" class="form-control" id="currency" name="currency"/>
-                        </div>
-                      </div>
-                      
+                <div class="form-group">
+                  <label for="dbname">Mehrwert-Steuer(%)</label>
+                  <input type="text" class="form-control" id="vat" name="vat"/>
+                </div>
+                <div class="form-group">
+                  <label for="dbname">Währung (Symbol)</label>
+                  <input type="text" class="form-control" id="currency" name="currency"/>
+                </div>      
               </div>
             </div>
           </div>
                   E-Mail Server
                 </div>
                 <div class="card-body">
-                    <div class="form-group row">
-                        <label for="mailserver" class="col-sm-2">Email-Server</label>
-                        <div class="col-sm-10">
-                          <input type="text" class="form-control" id="mailserver" name="mailserver"/>
-                        </div>
-                      </div>
-                      <div class="form-group row">
-                          <label for="mailport" class="col-sm-2">Port</label>
-                          <div class="col-sm-10">
-                            <input type="text" class="form-control" id="mailport" name="mailport"/>
-                          </div>
-                        </div>
-                        <div class="form-group row">
-                            <label for="mailencryption" class="col-sm-2">Verschlüsselung</label>
-                            <div class="col-sm-4">
-                                <select id="mailencryption" name="mailencryption" class="form-control">
-                                    <option value="">None</option>
-                                    <option value="TLS">TLS</option>
-                                    <option value="SSL">SSL</option>
-                                  </select>
-                            </div>
-                          </div>
-                          <div class="form-group row">
-                              <label for="maillogin" class="col-sm-2">Login</label>
-                              <div class="col-sm-10">
-                                <input type="text" class="form-control" id="maillogin" name="maillogin"/>
-                              </div>
-                            </div>
-                            <div class="form-group row">
-                                <label for="mailpassword" class="col-sm-2">Passwort</label>
-                                <div class="col-sm-10">
-                                  <input type="password" class="form-control" id="mailpassword" name="mailpassword"/>
-                                </div>
-                              </div>
+                    <div class="form-group">
+                      <label for="mailserver">Email-Server</label>
+                      <input type="text" class="form-control" id="mailserver" name="mailserver"/>
+                    </div>
+                    <div class="form-group">
+                      <label for="mailport">Verschlüsselung/Port</label>
+                      <div class="input-group">
+                      <select id="mailencryption" name="mailencryption" class="form-control">
+                          <option value="">None</option>
+                          <option value="TLS">TLS</option>
+                          <option value="SSL">SSL</option>
+                        </select>
+                      <input type="text" class="form-control" id="mailport" name="mailport"/>
+                    </div>
+                    </div>
+                    <div class="form-group">
+                      <label for="maillogin">Login</label>
+                      <input type="text" class="form-control" id="maillogin" name="maillogin"/>
+                    </div>
+                    <div class="form-group">
+                      <label for="mailpassword">Passwort</label>
+                      <input type="password" class="form-control" id="mailpassword" name="mailpassword"/>
+                    </div>
                 </div>
               </div>
             </div>
-          <div class="col-md-6">
-              <div class="card">
-                <div class="card-header" style="padding: 0px; padding-left: 20px;">
-                    <nav class="navbar navbar-expand-md navbar-dark">
-                        Druck-Vorlagen
+      </div>
+      </div>
+          <div aria-labelledby="templates-tab" class="tab-pane fade" id="templates" role="tabpanel">
+          <div class="row">
+            <div class="col-md-6" style="padding-right: 0px;">
+                    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
+                        <h5 class="text-white">Druck-Vorlagen</h5>
                               <div class="ml-auto">
                          
                          <div class="btn-group" role="group" aria-label="Basic example">
-                              <button class="btn btn-default" onclick="printtemplate.new();"><i class="fas fa-plus"></i><br/>Neu</button>
-                              <button class="btn btn-default" onclick="printtemplate.edit();"><i class="fas fa-edit"></i><br/>bearb.</button>
-                              <button class="btn btn-default" onclick="printtemplate.delete();" ><i class="fas fa-trash"></i><br/>Löschen</button>
-                              <button class="btn btn-default" onclick="printtemplate.duplicate();" ><i class="fas fa-copy"></i><br/>Copy</button>
+                              <button class="btn btn-primary" onclick="printtemplate.new();"><i class="fas fa-plus"></i><br/>Neu</button>
+                              <button class="btn btn-primary" onclick="printtemplate.edit();"><i class="fas fa-edit"></i><br/>bearb.</button>
+                              <button class="btn btn-primary" onclick="printtemplate.delete();" ><i class="fas fa-trash"></i><br/>Löschen</button>
+                              <button class="btn btn-primary" onclick="printtemplate.duplicate();" ><i class="fas fa-copy"></i><br/>Copy</button>
                          </div>
                               </div>
                             </nav>
-                </div>
-                <div class="card-body" style="padding: 0px;">
+                
                     
                     <table id="tbl_invoicetemplates" class="table table-bordered table-hover table-striped">
                         <thead class="thead-dark"> 
                         <tfoot></tfoot>
                         <tbody></tbody>
                     </table>
-                </div>
-              </div>
             </div>
-            <div class="col-md-6">
-                <div class="card">
-                  <div class="card-header" style="padding: 0px; padding-left: 20px;">
-                      <nav class="navbar navbar-expand-md navbar-dark">
-                          Email-Vorlagen
+            <div class="col-md-6" style="padding-left: 0px;">
+                      <nav class="navbar navbar-expand-md navbar-dark bg-dark">
+                        <h5 class="text-white">Email-Vorlagen</h5>
                                 <div class="ml-auto">
                            
                            <div class="btn-group" role="group" aria-label="Basic example">
-                                <button class="btn btn-default" onclick="mailtemplate.new();"><i class="fas fa-plus"></i><br/>Neu</button>
-                                <button class="btn btn-default" onclick="mailtemplate.edit();"><i class="fas fa-edit"></i><br/>bearb.</button>
-                                <button class="btn btn-default" onclick="mailtemplate.delete();" ><i class="fas fa-trash"></i><br/>Löschen</button>
-                                <button class="btn btn-default" onclick="mailtemplate.duplicate();" ><i class="fas fa-copy"></i><br/>Copy</button>
+                                <button class="btn btn-primary" onclick="mailtemplate.new();"><i class="fas fa-plus"></i><br/>Neu</button>
+                                <button class="btn btn-primary" onclick="mailtemplate.edit();"><i class="fas fa-edit"></i><br/>bearb.</button>
+                                <button class="btn btn-primary" onclick="mailtemplate.delete();" ><i class="fas fa-trash"></i><br/>Löschen</button>
+                                <button class="btn btn-primary" onclick="mailtemplate.duplicate();" ><i class="fas fa-copy"></i><br/>Copy</button>
                            </div>
                                 </div>
                               </nav>
-                  </div>
-                  <div class="card-body"  style="padding: 0px;">
                       <table id="tbl_emailtemplates" class="table table-bordered table-hover table-striped">
                           <thead class="thead-dark"> 
                                   <th data-checkbox="true"></th>
                           <tfoot></tfoot>
                           <tbody></tbody>
                       </table>
-                  </div>
-                </div>
+                  
               </div>
+            </div>
+            </div>
+          </div>
       </div>
-    
-    </div>
+
 <script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
 <script src="../../node_modules/jquery/dist/jquery.min.js"></script>
 <script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
index 1caddee..543d6ec 100644 (file)
@@ -1,4 +1,4 @@
 function initpage(){
     console.log(parent.usersystem.getsysinfo());
-    parent.usersystem.setProperty("testproperty",{id:"TEST"});
+    //parent.usersystem.setProperty("testproperty",{id:"TEST"});
 }
\ No newline at end of file
diff --git a/null.json b/null.json
deleted file mode 100644 (file)
index 63032c3..0000000
--- a/null.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"DKS Buchhaltung","type":"local","server":"","dbfile":"","vpn":"","vat":"","currency":"","mailserver":"","mailport":"","mailencryption":"","maillogin":"","mailpassword":""}
\ No newline at end of file
index fb2acd1..a6d612c 100644 (file)
@@ -29,7 +29,7 @@ var usersystem = {
     showError: function(errtitle,errmsg){
         dialog.showErrorBox(errtitle, errmsg);
     },
-    setPreference(key,data){
+    setPreference: function(key,data){
        
         console.log("save preferences to: " + this.profilepath()  + key + ".json");
         if ((typeof data == 'object') || (typeof data == 'array')){
@@ -47,51 +47,50 @@ var usersystem = {
         });
         return false;
     },
-    getPreference(key){
+    getPreference: function(key,callback=null){
         var data = null;
         if (fs.existsSync(this.profilepath()  + key + ".json")){
+            console.log("Read Key:" + key);
             fs.readFile(this.profilepath()  + key + ".json", 'utf-8', (err, data) => {
                 if(err){
                     //this.showError("Error reading Preference!",err.message);
                     console.log("Error reading Preference!" + err.message);
                     return data;
                 }
+                //console.log(data);
                 if (data.startsWith("{") || data.startsWith("[")){
                     data = JSON.parse(data);
                 }
+                if (callback){
+                    callback(key,data);
+                }
+                
                 // Change how to handle the file content
-                console.log("The preference content is : " + data);
-                return JSON.stringify(data);
+                //console.log("The preference content is : " );
+                //console.log(data);
+                return data;
             });
         }
         return data;
     },
-    getLocalDataSets(){
+    getLocalDataSets: function(callback=null){
         var datasets =[];
         fs.readdir(this.profilepath(), function (err, files) {
             //handling error
             if (err) {
                 return console.log('Unable to scan directory: ' + err);
             } 
-            
             //listing all files using forEach
             files.forEach(function (file) {
-                console.log(file); 
                 if (file.match('db\..*\.json')){
-                    var key = file.replace('.json','');
-                    var data = this.getPreference(file);
-                    if (data){
-                        datasets.push({"key":key,"name":data.name});
-                    }
+                    console.log(file);
+                    datasets.push(file.replace('.json',''));
                 }
-                
-                
             });
-            return datasets;
+            callback(datasets);
         });
-        return datasets;
     },
-    getsysinfo(){
+    getsysinfo: function(){
         return {
             "hostname": os.hostname(),
             "userdir": os.homedir(),