Nittro a refresh snippetu po určité době

před 2 lety

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>

`

před 2 lety

denny
Člen | 2
+
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

před 2 lety

teekey99
Člen | 7
+
+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í ;)

před rokem

motorcb
Člen | 525
+
0
-

@teekey99:

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

před rokem

nightfish
Člen | 139
+
0
-

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

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

před rokem

motorcb
Člen | 525
+
0
-

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

před rokem

nightfish
Člen | 139
+
+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