Nittro a refresh snippetu po určité době

sinuhet
Člen | 1
+
+3
-

Zdravím,
zkouším Nittro a nevím si rady jak pomocí javascriptu obnovovat po nějaké době snippet. Pomocí nette.ajax.js mi fungoval tento script

`

<script>

    $(function(){
      $.nette.init();

        setTimeout(function(){ get_data();}, 10000);

        function get_data(){

            $.nette.ajax({
                url: "?do=refreshData",
                complete: function (payload) {
                    setTimeout(function(){ get_data();}, 10000);
                }
            });


        }
    });

</script>

`

denny
Člen | 3
+
0
-

Zdravím, také zápasím se stejným problémem. Vůbec nevím, jestli na to jdu dobře. Prozatím mám:

<script>
_context.invoke(function(di) {
    di.getService('snippetManager').on('after-update', function(e) {
		setTimeout(function(){
			...
		}, 60000)
    });
});
</script>

Teoreticky bych mohl zavolat metodu

di.getService('ajax').get(...)

ale ta mi překreslí celou stránku. Co kdybych potřeboval překreslit, jen např. snippet information?

Díky. moc

teekey99
Člen | 45
+
+1
-

Vytvoř si v presenteru handle, který bude snippet překreslovat. Např.:

public function handleRedrawMySnippet()
{
	if ($this->isAjax()) {
		$this->redrawControl('mySnippet');
	}
}

A potom v šabloně

<script>
	_context.invoke(function(di) {
		var page = di.getService('page');

    	setInterval(function() {
			page.open({link redrawMySnippet!});
		}, 10000);
	});
</script>

Ještě by bylo dobrý ten interval někam ukládat a ošetřit jeho clearování, když snippet ze stránky mizí ;)

motorcb
Člen | 552
+
0
-

@teekey99:

Kde v JS vemu proměnnou _context ????

nightfish
Člen | 517
+
0
-

motorcb napsal(a):
Kde v JS vemu proměnnou _context ????

Tu poskytne Nittro (konkrétně Nittro/Core).

motorcb
Člen | 552
+
0
-

@nightfish:
Díky, a jak ji dostanu do šablony?

nightfish
Člen | 517
+
+1
-

Kompletní info najdeš v návodu

Ve zkratce:

  • stáhneš Nittro a dáš jej někam do document_rootu
  • do layoutu přidáš
<link rel="stylesheet" type="text/css" href="path/to/nittro.min.css" />
<script type="application/javascript" src="path/to/nittro.min.js" async defer></script>
  • a nainstaluješ Nette bridge přes composer: composer require nittro/nette-bridges