source: genappalpha/languages/html5/types/input.footer @ 936

Last change on this file since 936 was 936, checked in by ehb, 6 years ago

alpha copy of genapp

File size: 16.8 KB
Line 
1if( skipped_row == 1 ){ input_html += "</tr>"; }
2input_html += '</table>';
3$( '#__moduleid___input_area' ).html( input_html );
4eval( input_eval );
5</script>
6<p><button id="__moduleid___submit" class="help_link"><span class="buttontext">Submit</span></button>
7__~help:submit{<span class="help">__help:submit__</span>}
8<button id="__moduleid___reset" class="help_link"><span class="buttontext">Reset to default values</span></button>
9__~help:reset{<span class="help">__help:reset__</span>}
10__~newsession{<button id="__moduleid___newsession"><span class="buttontext">Start new session</span></button>}
11</p>
12<span id="__moduleid___progress"></span>
13<script>
14__~noreset{$( "#__moduleid___reset" ).remove();}
15__~submit_label{$( "#__moduleid___submit .buttontext" ).html( "__submit_label__" );}
16__~nosubmit{$( "#__moduleid___submit" ).remove();}
17__~hideifnotlogon{if(!$( "#_state" ).data( "_logon" ).length){$( "#__moduleid___submit" ).hide();$( "#__moduleid___reset" ).hide();}}
18__~newsession{$( "#__moduleid___newsession" ).click( function() { getSid(); return false; });}
19
20var __moduleid___output_msgs = $("#__moduleid___output_msgs");
21__moduleid___output_msgs.text( "" );
22
23var __moduleid___timeout_handler = "unset";
24var __moduleid___timeout_handler_uuid;
25
26function get_results___moduleid__( id, last_timeout, getlastmsg, getinput )
27{
28__~debug:job{    console.log( "get results 1 id " + id );}
29//             url:"ajax/get_results.php?_window=" +  window.name + "&_logon=" +$( "#_state" ).data( "_logon" ) + '&_uuid=' + id,
30    var job_status = "";
31    $.getJSON(
32             "ajax/get_results.php",
33             {
34                tagmode: "any",
35                format: "json",
36                _window : window.name,
37                _logon : $( "#_state" ).data( "_logon" ),
38                _uuid : id,
39                _getlastmsg : getlastmsg,
40                _getinput : getinput ? true : false
41             } )
42    .done( function( data, status, xhr ) {
43__~debug:job{        console.log( "get results 2" );}
44           var do_refresh = 1;
45__~nojobcontrol{           do_refresh = 0;}
46           if ( do_refresh ) {
47              ga.fc.clear( $.base64.encode( "./" + $( "#_state" ).data( "_project" ) ) );
48              ga.jc.clear_leaf( id );
49           }
50
51           job_status = ga.data.update( "__moduleid__", data ).job_status;
52           if ( job_status == "complete" ||
53                job_status == "cancelled" ||
54                job_status == "failed" )
55           {
56              if ( __moduleid___timeout_handler != "unset" )
57              {
58                  clearTimeout( __moduleid___timeout_handler );
59                  __moduleid___timeout_handler = "unset";
60              }
61              unsubMsging( id, "__moduleid__" );
62              eval( __moduleid___done_eval );
63           } else {
64               if ( !last_timeout || last_timeout < 2000 )
65               {
66                  last_timeout = 2000;
67               } else {
68                  if ( last_timeout < 16000 )
69                  {
70                      last_timeout *= 2;
71                  } else {
72                      last_timeout = 16000;
73                  }
74               }
75__~debug:job{               console.log( "another set timeout " + last_timeout );}
76               __moduleid___timeout_handler =  setTimeout( get_results___moduleid__, last_timeout, id, last_timeout, 0 );
77               __moduleid___timeout_handler_uuid = id;
78           }
79          } )
80    .fail( function( xhr, status, errorThrown ) {
81__~debug:job{        console.log( "get results fail" );}
82           $( "#__moduleid___results" ).html( "<span class=\"warning\"> Failed: " + status + " : '" + xhr.status + ":" + errorThrown + "' on URL ajax/tools/center.php </span>" );
83           $('#__moduleid___progress').html( "" );
84           if ( __moduleid___timeout_handler != "unset" )
85           {
86               clearTimeout( __moduleid___timeout_handler );
87               __moduleid___timeout_handler = "unset";
88           }
89           unsubMsging( id, "__moduleid__" );
90           eval( __moduleid___done_eval );
91          } );
92    return false;
93};
94
95function msg___moduleid__ ( id, data )
96{
97   ga.data.update( "__moduleid__", data, get_results___moduleid__, id );
98};
99
100$( "#__moduleid___submit" ).click( function( e ) {
101   e.preventDefault();
102   e.returnValue = false;
103   if ( __moduleid___timeout_handler != "unset" ) {
104       __~debug:jobtimeout{console.log( "Unsetting previous handler uuid " + __moduleid___timeout_handler_uuid );}
105       clearTimeout( __moduleid___timeout_handler );
106       if ( __moduleid___timeout_handler_uuid ) {
107           unsubMsging( __moduleid___timeout_handler_uuid, "__moduleid__" );
108       }
109       __moduleid___timeout_handler = "unset";
110   }
111   ga.value.resetDefaultValues( "__moduleid___output", true );
112
113   __~captcha{ga.captcha( do___moduleid___submit, $(this) ); return false;}
114   return do___moduleid___submit( $(this) );
115});
116
117function do___moduleid___submit( $form, airavataresource, skipcached ) {
118
119   var $ok = 0;
120   __~nojobcontrol{   $ok = 1;}
121   __~debug:valuenx{ga.valuen.save( "__moduleid__" ); if (!$ok) {return false;};}
122
123   ga.event( "", "__moduleid__", "submit clicked" );
124
125   __~license{if(!ga.license("__license__")){return false;}}
126
127__~submit_cb{   ga.altfile.bdata[ "__moduleid__" ].cb("#__submit_cb__"); ga.altfile.button.cb(); return false;}
128
129__~debug:job{   console.log( "you clicked" );}
130
131   if ( !ga.valid.checksubmit( "__moduleid__" ) ) {
132       ga.valid.showerrormessage();
133       return false;
134   }
135
136   if ( ga.specproj.data.length ) {
137      if ( $( "#_state" ).data( '_logon' ) &&
138           $( "#_state" ).data( '_logon' ).length ) {
139          $( "#sel_project" ).html( ga.specproj.gname() );
140          $( "#_state" ).data( '_project', ga.specproj.gname() );
141          __~debug:specproj{console.log( "setting specproject" );}
142      }
143   } 
144
145   if ( !airavataresource ) {
146      __~debug:airavata{console.log( "airavataresource not defined" );}
147      switch( airavataresource = ga.airavata.select( "__resource__", "__airavataselect__", do___moduleid___submit, $form ) ) {
148      case "deferred" : __~debug:airavata{console.log( "airavata submit deffered" ); }return false; break;
149      case "abort"    : __~debug:airavata{console.log( "airavata submit aborted" ); }return false; break;
150      case "notused"  : __~debug:airavata{console.log( "not airavata" ); }break;
151      }
152      __~debug:airavata{console.log( "airavata resource is " + airavataresource );}
153   }
154   __~debug:airavata{console.log( "airavata resource is " + airavataresource );}
155
156   $.ajax({
157       type: 'get'
158       ,url: "ajax/sys_config/sys_joblocked.php?_window=" +  window.name + "&_logon=" + $( "#_state" ).data( "_logon" )
159__~submitpolicy{ + "&_submitpolicy=__submitpolicy__"}
160__~cache{ + "&_cache_module=" + encodeURIComponent( "__moduleid__/" + $( "#_state" ).data( "_project" ) ) }
161__~jobweight{ + "&_jobweight=" + "__jobweight__"}
162       ,context: $form
163       ,success: function( data ) { // your success handler
164__~debug:job{                 console.log( "joblocked returned:" + data );}
165          if ( !$ok )
166          {
167          switch ( data )
168          {
169             case "1" :
170             {
171                 messagebox( { icon:"warning.png", text:"This project directory is currently locked by another project.\nYou can wait until it completes, change the project in user configuration or clear the lock in the job manager." } );
172                 return;
173             } break;
174             case "2" :
175             {
176                 messagebox( { icon:"warning.png", text:"You must be logged in to submit this module." } );
177                 return;
178             } break;
179             case "0" :
180             {
181__~debug:job{                 console.log( "ok, but we are not submitting yet" );}
182                 $ok = 1;
183             } break;
184             default :
185             {
186                if ( /^Your job/.test( data ) ) {
187                   messagebox( { icon : "warning.png",
188                                 text : data } );
189                   return;
190                }
191                __~debug:cache{console.log( "cache check found uuid " + data );}
192                if ( skipcached ) {
193                    $ok = 1;
194                } else {
195                    return ga.cache.msg( "__~cachefound{__cachefound__}", "__~cachedelete{__cachedelete__}", get_results___moduleid__, do___moduleid___submit, data, $form, airavataresource );
196                }
197             } break;
198          }
199          }
200       }
201       ,error: function() { // your error handler
202          messagebox( { icon:"toast.png", text:"Checking the project lock failed. This is possibly a server or network issue" } );
203       }
204       ,complete: function() {
205          this.off('submit');
206          if ( $ok )
207          {
208__~debug:job{              console.log( "complete, we could submit here" );}
209
210              $( "#__moduleid___results" ).text( "" );
211__~debug:ajax{    console.log( $( "#__moduleid__" ).serializeArray() );}
212              ga.value.saveLastValues( "__moduleid__" );
213              ga.value.resetDefaultValues( "__moduleid___output", true );
214
215              var found_errors = 0;
216              $("#__moduleid__").find("input").each(function(i){
217                 if ( $(this).attr( 'required' ) && $(this).val().length == 0 )
218                 {
219                    var tag =  "#__moduleid__ " + "#" + $(this).attr('id') + "_msg";
220__~debug:ajax{          console.log( "missing: " + tag );}
221                    $( tag ).html( "missing required field" );
222                    found_errors = 1;
223                 }
224              });
225              if ( found_errors ) {
226                  return;
227              }
228
229    var tree_html = "";
230    $( "._hidden_tree_selects" ).remove( );
231    $.each( input_trees, function( k, v ){
232__~debug:_tree{        console.log( "input_trees k " + k + " v " + v );}
233        $( 'input[type=hidden][name="' + v + '[]"]' ).remove();
234        var selectedElms = $('#' + v).jstree("get_selected", true);
235        var i = 0;
236        $.each(selectedElms, function() {
237           tree_html += '<input type="hidden" name="' + v + '[]" value="' + this.id + '" class="_hidden_tree_selects"/>';
238__~debug:_tree{           console.log( "this.id:" + this.id );}
239        });
240    });
241__~debug:_tree{    console.log( tree_html );}
242    $( this ).append( tree_html );
243
244__~session{   var input = $("<input>").attr("type", "hidden").attr("name", "_sid").val( $( "#global_data" ).data( "sid" ) );$( this ).append($(input)); }
245    var logonadd = $("<input>").attr("type", "hidden").attr("name", "_logon").val( $( "#_state" ).data( "_logon" ) );$( this ).append($(logonadd));
246    var projectadd = $("<input>").attr("type", "hidden").attr("name", "_project").val( $( "#_state" ).data( "_project" ) );$( this ).append($(projectadd));
247    var windowadd = $("<input>").attr("type", "hidden").attr("name", "_window").val( window.name );$( this ).append($(windowadd));
248    var vuuid = uuid.v1();
249__~debug:job{    console.log( "uuid:" + vuuid );}
250__~debug:jc{    console.log( "uuid: " + vuuid );}
251
252__~navigator{       $( this ).append( $("<input>").attr("type", "hidden").attr("name", "_navigator").val( navigator.userAgent ) );}
253__~eventlog{        $( this ).append( $("<input>").attr("type", "hidden").attr("name", "_eventlog").val( ga.event.list() ) );}
254__~docrootexecutable{$( this ).append( $("<input>").attr("type", "hidden").attr("name", "_docrootexecutable").val( "__docrootexecutable__" ) );}
255
256    if ( airavataresource != "notused" ) {
257        $( this ).append( $("<input>").attr("type", "hidden").attr("name", "_airavataresource").val( airavataresource ) );
258    }
259
260    var uuidadd = $("<input>").attr("type", "hidden").attr("name", "_uuid").val( vuuid );$( this ).append($(uuidadd));
261//    ga.altfile.add( "__moduleid__" );
262    ga.valuen.addhtml( "__moduleid__" );
263
264    subMsging( vuuid, msg___moduleid__, "__moduleid__" );
265
266    var formData = new FormData($('form')[0]);
267__~debug:ajax{    console.log( "calling ajax" );}
268
269    $('#__moduleid___progress').html( "Uploading:<progress></progress>" );
270
271    var job_status = "";
272
273    ga.event( "", "__moduleid__", "submit: passed submit checks, submitting" );
274
275    $.ajax( {
276             dataType: "json",
277             cache:false,
278//             timeout:3000,  // for testing
279             type:"POST",
280             url:"ajax/__menu:id__/__moduleid__.php",
281             data: formData,
282             xhr: function() {  // Custom XMLHttpRequest
283                 var myXhr = $.ajaxSettings.xhr();
284                 if(myXhr.upload){ // Check if upload property exists
285                     myXhr.upload.addEventListener('progress',
286                         function(e) {
287                         if(e.lengthComputable){
288                           $('#__moduleid___progress progress').attr({value:e.loaded,max:e.total});
289                         } }
290//                     progressHandlingFunction
291                    , false);
292                 }
293                 return myXhr;
294             },
295             contentType: false,
296             processData: false
297            } )
298    .done( function( data, status, xhr ) {
299__~debug:ajax{           console.log( "data, status, xhr" );}
300__~debug:ajax{           console.log( data );}
301__~debug:ajax{           console.log( status );}
302__~debug:ajax{           console.log( xhr );}
303// refresh cache for this project
304           $('#__moduleid___progress').html( "" );
305   
306           var do_refresh = 1;
307__~nojobcontrol{           do_refresh = 0;}
308           if ( do_refresh ) {
309              ga.fc.clear( $.base64.encode( "./" + $( "#_state" ).data( "_project" ) ) );
310              ga.jc.clear_leaf( vuuid );
311           }
312           
313// loop through data pairs
314           __moduleid___output_msgs.text( "" );
315           job_status = ga.data.update( "__moduleid__", data ).job_status;
316
317           if ( job_status == "complete" ||
318                job_status == "cancelled" ||
319                job_status == "failed" )
320           {
321               if ( __moduleid___timeout_handler != "unset" )
322               {
323                   clearTimeout( __moduleid___timeout_handler );
324                   __moduleid___timeout_handler = "unset";
325               }
326               unsubMsging( vuuid, "__moduleid__" );
327               eval( __moduleid___done_eval );
328           } else {
329               __moduleid___timeout_handler = setTimeout( get_results___moduleid__, 2000, vuuid, 2000, 0 );
330               __moduleid___timeout_handler_uuid = vuuid;
331__~debug:job{               console.log( "set timeout 2000" );}
332           }
333          } )
334    .fail( function( xhr, status, errorThrown ) {
335__~debug:ajax{           console.log( "xhr, status, errorThrown" );}
336__~debug:ajax{           console.log( xhr );}
337__~debug:ajax{           console.log( status );}
338__~debug:ajax{           console.log( errorThrown );}
339           $( "#__moduleid___results" ).html( "<span class=\"warning\"> Failed: " + status + " : '" + xhr.status + ":" + errorThrown + "' on URL ajax/__menu:id__/__moduleid__.php </span>" );
340           $('#__moduleid___progress').html( "" );
341           if ( __moduleid___timeout_handler != "unset" )
342           {
343               clearTimeout( __moduleid___timeout_handler );
344               __moduleid___timeout_handler = "unset";
345           }
346           unsubMsging( vuuid, "__moduleid__" );
347           eval( __moduleid___done_eval );
348          } );
349          } else {
350__~debug:job{              console.log( "complete but locked" );}
351          }
352       }
353   });
354}
355
356__moduleid___reset = function() {
357    __~debug:valuenx{ga.valuen.restore( "__moduleid__" ); return false;}
358    if ( !__~textarea:rows{1}0 ) {
359        // required to reset scrollheight ...
360        document.getElementById( "__moduleid___output_textarea" ).style.height = 0;
361    }
362
363    if ( __moduleid___timeout_handler != "unset" ) {
364       __~debug:jobtimeout{console.log( "Unsetting previous handler uuid " + __moduleid___timeout_handler_uuid );}
365       clearTimeout( __moduleid___timeout_handler );
366       if ( __moduleid___timeout_handler_uuid ) {
367           unsubMsging( __moduleid___timeout_handler_uuid, "__moduleid__" );
368       }
369       __moduleid___timeout_handler = "unset";
370    }
371    ga.event( "", "__moduleid__", "reset clicked" );
372    ga.valid.clearerrorcounter();
373    //    ga.value.resetDefaultValues( "__moduleid__" );
374    ga.valuen.restore.dflt(  "__moduleid__" );
375    ga.value.resetDefaultValues( "__moduleid___output", true );
376    __~debug:repeat{console.log( "input_repeats:" + input_repeats );}
377    eval( input_repeats );
378    return false;
379}
380
381$( "#__moduleid___reset" ).click( function() {
382   return __moduleid___reset();
383});
384
385setHoverHelp();
386__~resetonload{ga.value.resetDefaultValues( "__moduleid__" );ga.value.resetDefaultValues( "__moduleid___output" ); ga.value.resetDefaultValue( "__moduleid___output", "__moduleid___output_msgs" );}
387__~resetoutonload{ga.value.resetDefaultValues( "__moduleid___output" ); ga.value.resetDefaultValue( "__moduleid___output", "#__moduleid___output_msgs" );}
388eval( input_repeats );
389ga.pull.doPull();
390</script>
391</form>
392<div id="__moduleid___results"></div>
Note: See TracBrowser for help on using the repository browser.