• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] progressbar von jquery ui 2mal durchlaufen lassen

soyyo71

New member
hallo und ein frohes neues.....
es ist zwar nicht die feine art andere seine probleme lösen zu lassen, den eigentlich sollte ich es alleine schaffen. aber nach unendlich vielen stunden und vielen tagen bitte ich euch hier um hilfe. ich behaupte daß ich wenigstens im ansatz dieses script verstehe, doch als alter mann und absolut neu in dieser materie möchte ich sie trotzdem erlernen. folgendes szenario:
das script läuft einmal als anonyme funktion durch und soll dann noch einmal als benannte funktion, angehangen als (inst) bei complete: function durchlaufen. die kommentare sind eine denkstütze für mich. meine auslegung. sicherlich mit fehlern.
ich entschuldige mich wenn es zu unübersichtlich wirkt. für eure hilfe wäre ich sehr dankbar.
hier das original: Progressbar | jQuery UI

vielen dank

Code:
$(function() {
    var progressTimer,
      progressbar = $( "#progressbar" ),
      progressLabel = $( ".progress-label" ),
      dialogButtons = [{
        text: "Download Abbrechen",
        click: closeDownload
      }],
      dialog = $( "#dialog" ).dialog({
        autoOpen: false,
        closeOnEscape: false,
        resizable: false,
        buttons: dialogButtons,
        open: function() {
          progressTimer = setTimeout( progress, 2000 );
        },
        beforeClose: function() {
          appbutton.button( "option", {
            disabled: false,
            label: "Beginne Download"
          });
        }
      }),
      appbutton = $( "#appbutton" )
        .button()
        .on( "click", function() {
          $( this ).button( "option", {
            disabled: true,
            label: "Download läuft..."
          });
          dialog.dialog( "open" );
        });
 
    progressbar.progressbar({
      value: false,
      change: function() {
        progressLabel.text( "Fortschritt Download: " + progressbar.progressbar( "value" ) + "%" );
      },
      complete: function() {
		appbutton.text("Download Call'a'Cab App");
        progressLabel.text( "Download erfolgreich!" );
        dialog.dialog( "option", "buttons", [{
          text: "App Installieren",
          click: inst,
		   open: function() {			  
		 progressTimer = setTimeout( progress, 5000 );			 
	  },
        }]);
        $(".ui-dialog button").last().focus();
      }
    });
 
    function progress() {
      var val = progressbar.progressbar( "value" ) || 0;
 
      progressbar.progressbar( "value", val + Math.floor( Math.random() * 3 ) );
 
      if ( val <= 99 ) {
        progressTimer = setTimeout( progress, 50 );
      }
    }
 
    function closeDownload() {
      clearTimeout( progressTimer );
      dialog
        .dialog( "option", "buttons", dialogButtons )
        .dialog( "close" );
      progressbar.progressbar( "value", false );
      progressLabel
        .text( "Beginne Download..." );
      appbutton.focus();
    }
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  function inst() {
    var progressTimer,
      progressbar = $( "#progressbar" ),
      progressLabel = $( ".progress-label" ),
      dialogButtons = [{						
        text: " Installation Abbrechen ", 
        click: closeDownload
		}],
      dialog = $( "#dialog" ).dialog({						
       autoOpen: false,
        closeOnEscape: false,
        resizable: false,
        buttons: dialogButtons,
        open: function () {
          progressTimer = setTimeout( progress, 2000 );
		  },
		  beforeClose: function() {
          appbutton.button( "option", {
            disabled: false,
            label: "Download Call'a'Cab App" 
          });
        }
      }),
	  
      appbutton = $( "#appbutton" )
	  .button()
	  .on( "click", function() { 	
          $( this ).button( "option", {												
            disabled: false,														
            change: "Installation läuft..." 
          });
          dialog.dialog( "open" );
        });
 
    progressbar.progressbar({
      value: false,
      change: function() {
        progressLabel.text( "BFortschritt Installation: " + progressbar.progressbar( "value" ) + "%" );
      },
      complete: function() {
        progressLabel.text( "Installation beendet!" );
        dialog.dialog( "option", "buttons", [{
          text: "Schließen",
          click: closeDownload
		  }]);
        $(".ui-dialog button").last().on("click", function(){
			  var fenster = window.open('jqm.html', 'f', 'width=500,height=300');
			  if(fenster){
				  
			  fenster.focus();
			  }else{
			  alert('Bitte neues Fenster erlauben');
		}
			  return false;
		  });
      }
    });
 
    function progress() {
      var val = progressbar.progressbar( "value" ) || 0;
 
      progressbar.progressbar( "value", val + Math.floor( Math.random() * 3 ) );
 
      if ( val <= 99 ) {
        progressTimer = setTimeout( progress, 50 );
      }
    }
  
	function closeDownload() {
      clearTimeout( progressTimer );
      dialog.dialog( "option", "buttons", dialogButtons ).dialog("close");
      progressbar.progressbar( "value", false );
      progressLabel.text( "Beginn der Installation..." );
      appbutton.focus();
    }
	
};
});
 
Zuletzt bearbeitet:
Guten Tag und Dir auch ein frohes Neues, obwohl das mit dem Source ja nicht so "fröhlich" aussieht.

Ich muss Dir eben einen Zahn ziehen - also sitzt mal eben still! :D
$(function()... ist ein sog. "Shorthand" für $( document ).ready(). Das heißt, die Funktion ausgeführt wird, wenn Dein Dokument geladen ist.

Dann schau mal, ob die Funktionen "progress" und "closeDownload" korrekt sind - ich meine, dass die letzte "}" zu spät kommt und sich die genannten Funktionen außerhalb von "inst()" befinden dürfen.

Aber das jetzt nur mal eben im Schnelldurchblick ...

Viel wichtiger: Mach Dir erstmal ein schönes Wochenende! Wenn Source Dich nervt, nimm ein paar Stunden Abstand - häufig hilft der zweite Blick von ganz allein.

Schönes WE also.
 
hallo SteelWheel.....


vielen Dank für deine Antwort. Ich hab es etwas verbessern können. leider ist irgendwo noch ein hacken, wahrscheinlich mehrere. Ich habe bei allen funktionen eine alert box für mich eingebaut, um den ablauf des parsers besser zu verstehen. hat mir etwas geholfen. ich habe ihn hier verbessert eingefügt..mehr oder weniger verbessert. wer noch interesse hat mir zu helfen kann sich das script auf Progressbar | jQuery UI kopieren, und in https://jsfiddle.net/ durchspielen. dort kann man auch die externen links zu den CDN von jquery-ui links bei External Resources reinkopieren. wer mein script dort reinkopiert wird sehen wie sich die progressbar nach der progressTimer funktion mit den 5000 millisekunden einen merkwürdigen wert mitgibt.
übrigens....das alles ist für kein projekt. ich mache es nur zum reinen lernen.

vielen dank......ach ja...und hilfe brauch ich auch bei meiner geolocation geschichte...dieses aber in einem anderen thread
 
Du kannst auch zu JSFiddle verlinken mit deinem Script und allen Links. Dann braucht ein Helfer nicht erst noch alles rüber kopieren.
 
hallo.......ich habe etwas hilfe bekommen. das script wurde dadurch kürzer. dank Hyper Lord aus einem anderen forum.
schaut euch dass mal an wenn ihr zeit habt:

vielen vielen Dank Hyper Lord daß du dich meiner Geschichte angenommen hast, und ich entschuldige mich wenn ich beim reinkopieren hier einen fehler gemacht habe. ich habe mir deine verkürzte Version genommen und in meine Übung reinkopiert. Sie gefällt mir weil sie ja deutlich kürzer ist. Das Problem war und ist aber geblieben. Und zwar: beim 2. ProgressTimer-Aufruf erscheint im Dialog Label der Text false% .
Schau mal bitte https://jsfiddle.net/soyyo/j3xq65s3/6/ (meine alte Version) hier wenn du mal zeit hast. Hier hab ich mal deine Version : Edit fiddle - JSFiddle aber so wie es am Ende sein soll. Mit einem window open auf die Resource bei jquery-ui. Dabei wird die auffallen daß am Schluss 2 weitere Probleme auftauchen: 1. appbutton ist am ende leider nicht focus und das neue window nimmt keine Größenangaben an.

Aber trotzdem....vielen vielen herzlichen Dank. ach ja.....ich hab aus downloadButton für mich mal appbutton gemacht.
 
Zurück
Oben