Dateiverwaltung für die WebBox
ulrich
2020-01-24 05e9c4c92b3ed8e96c010ade8671964e74a2a1ae
commit | author | age
05e9c4 1 function AppVorlage() {
U 2   var self = this;
3   var appMenu;
4   var vorlagen;
5   var api;
6
7   this.datei_neuer_text = function() {
8     self.menu_message("Neuer Text");  
9   };
10
11   /* Funktionen aus App-Vorlage */
12   
13   this.init = function() {
14     self.vorlagen = new Vorlagen();
15     self.appMenu = new AppMenu();
16     self.appMenu.init(
17       "data/menu/",
18       "hauptmenue.json",
19       "data/tpl/app-menu.tpl",
20       ".west",
21       "8em");
22
23     document.querySelector('.hamburger').addEventListener('click', function(e) {
24       self.menue_umschalten();
25     });
26
27   };
28
29   this.menue_umschalten = function() {
30     var ham = document.querySelector(".hamburger");
31     ham.classList.toggle("is-active"); // hamburger-icon umschalten
32     self.appMenu.toggle(); // menue oeffnen/schliessen
33   };
34
35   this.info_dialog_zeigen = function() {
36     self.dialog_laden_und_zeigen('data/tpl/dlg-info.tpl', '');
37     self.menue_umschalten();
38   };
39
40   this.seitenleiste_umschalten = function() {
41     var ostDiv = document.querySelector('.ost');
42     if(ostDiv.classList.contains('ost-open')) {
43       ostDiv.classList.remove('ost-open');
44         ostDiv.style.flexBasis = '0em';
45     } else {
46         ostDiv.classList.add('ost-open');
47         ostDiv.style.flexBasis = '6em';
48     }
49     self.menue_umschalten();
50   };
51
52   this.fusszeile_umschalten = function() {
53     var suedDiv = document.querySelector('.sued');
54     if(suedDiv.classList.contains('sued-open')) {
55       suedDiv.classList.remove('sued-open');
56         suedDiv.style.height = '0';
57     } else {
58       suedDiv.classList.add('sued-open');
59         suedDiv.style.height = '1.5em';
60     }
61     self.menue_umschalten();
62   };
63
64   this.menu_message = function(msg) {
65     self.meldung_mit_timeout(msg, 1500);
66     var suedDiv = document.querySelector('.sued');
67     if(suedDiv.classList.contains('sued-open')) {
68     } else {
69       suedDiv.classList.add('sued-open');
70         suedDiv.style.height = '1.5em';
71     }
72     self.menue_umschalten();
73   };
74
75   this.message_1 = function() {
76     self.menu_message('Eine Mitteilung.');
77   };
78
79   this.message_2 = function() {
80     self.menu_message('Was wir schon immer sagen wollten.');
81   };
82
83   this.message_3 = function(text) {
84     self.menu_message(text);
85   };
86
87   this.meldung_mit_timeout = function(meldung, timeout) {
88     var s = document.querySelector('.sued');
89     s.textContent = meldung;
90     setTimeout(function() {
91       s.textContent = 'Bereit.';
92       setTimeout(function() {
93         var suedDiv = document.querySelector('.sued');
94         if(suedDiv.classList.contains('sued-open')) {
95               suedDiv.classList.remove('sued-open');
96               suedDiv.style.height = '0';
97         }
98       }, 500);
99     }, timeout);
100   };
101
102   /* Dialog-Funktionen */
103
104   /*
105     Einen Dialog aus Vorlagen erzeugen
106
107     vurl - URL zur Dialogvorlage
108     msgTpl - URL mit einer Vorlage eines Mitteilungstextes (optional)
109   */
110   this.dialog_laden_und_zeigen = function(vurl, msgTpl) {
111     if(msgTpl !== '') {
112       fetch(msgTpl)
113         .then(data => {
114           // Handle data
115           self.dialog_zeigen(vurl, data);
116         }).catch(error => {
117           // Handle error
118         });
119     } else {
120       self.dialog_zeigen(vurl, '');
121     }
122   };
123
124   this.dialog_zeigen = function(vurl, inhalt) {
125     var dlg = document.querySelector(".dialog");
126     self.vorlagen.html_erzeugen(
127       vurl,
128       inhalt,
129       function(html) {
130         //dlg.html(html);
131         dlg.style.height = '5em';
132         dlg.innerHTML = html;
133         document.querySelector('.close-btn').addEventListener('click', self.dialog_schliessen);
134         //dlg.slideDown(300);
135     });
136   };
137
138   self.dialog_schliessen = function() {
139     document.querySelector('.close-btn').removeEventListener('click', self.dialog_schliessen);
140     //$('.dialog').slideUp(300);
141     var dlg = document.querySelector('.dialog');
142     //dlg.style.display = "none";
143     dlg.style.height = '0';
144     dlg.innerHTML = '';
145   };
146
147     /* API functions */
148
149     // http://localhost:8079/file-cms/svc?c=de.uhilger.filecms.api.FileMgr&f=JSONNICE&m=list&p=
150     this.fm_get_list = function(relPfad) {
151       $('#ansicht').attr('onclick','').unbind('click');
152       var m = '?c=de.uhilger.filecms.api.FileMgr&m=list&p=' + relPfad;
153       var u = '../svc' + m;
154       self.fm_get(u, "json", function(resp) {
155
156         if(resp.List[0].FileRef !== undefined) {
157           var files = new Array();
158           if(resp.List[0].FileRef instanceof Array) {
159             for(var i = 0; i < resp.List[0].FileRef.length; i++) {
160               files.push(new FileRef(resp.List[0].FileRef[i]));
161             }
162           } else {
163             files.push(new FileRef(resp.List[0].FileRef));
164           }
165           var fl = new FileList(files);
166           fm_render_list(fl);
167         } else {
168           $('#dateien').empty();
169         }
170
171       });
172     };
173
174 /* -------- ajax helper functions ----------- */
175
176     this.fm_get = function(u, dtype, scallback) {
177       $.ajax({
178         url: u,
179         type: "GET",
180         dataType: dtype,
181         success: scallback,
182         error: function (xhr, status, errorThrown) {
183           alert("Error: " + errorThrown + " Status: " + status + " URL: " + u);
184         },
185         complete: function (xhr, status) {
186           //console.log( "The request is complete!" );
187         }
188
189       });
190     };
191
192     this.fm_post = function(u, d, dtype, scallback) {
193       $.ajax({
194         url: u,
195         data: d,
196         type: "POST",
197         dataType: dtype,
198         success: scallback,
199         error: function (xhr, status, errorThrown) {
200           $('#fehler').html("Error: " + errorThrown + " Status: " + status);
201         },
202         complete: function (xhr, status) {
203           //alert( "The request is complete!" );
204         }
205       });
206     };
207     
208 }