Nette AJAX loading pro konkrétní elementy

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
igor.pocta
Člen | 100
+
0
-

Ahoj,

snažím se vytvořit Loading Overlay při AJAX požadavku přes celou stránku.

Když to zaregistruji přímo jako další extension pro Nette, tak to funguje skvěle ale funguje to pro všechny AJAX požadavky přes tohle rozšíření. To byl původně cíl ale pak jsem zaregistroval, že to dělá i u Ublaboo/Datagrid, když má nastavené autosubmit.

Jak to nastavím jen pro konkrétní typy formuláře? Např. když u formuláře mám class=„ajax ajaxLoading“ ?

Děkuji za pomoc

before: function (jqXHR, settings) {
    $("body").LoadingOverlay("show", {
        zIndex: 999
    });
},
complete: function (payload, status, jqXHR, settings) {
    $("body").LoadingOverlay("hide", function () {
    });
    $.nette.load()
},
error: function (payload, status, jqXHR, settings) {
    $("body").LoadingOverlay("hide", function () {
    });
}
CZechBoY
Člen | 3608
+
+1
-

Třeba

if (settings.nette && settings.nette.el) {
	showSpinner = $(settings.nette.el).hasClass('ajaxLoading');
	if (showSpinner === false) {
		return;
	}
}
igor.pocta
Člen | 100
+
0
-

Díky, funguje skvěle.

matopeto
Člen | 395
+
0
-

mozno pouzi nejaky data attribut ako custom class :) nieco ako data-ajax-loading alebo tak :)

igor.pocta
Člen | 100
+
0
-

Ještě bych měl dotaz, zaujal mě https://paulkr.github.io/overhang.js/

Když si dám scriptík do snippetu na flash zprávičky, tak mi vyskočí ale nezmizí. Nejspíš je to tím, že stránka už je načtená a nezaregistruje timeout.

Nějaký tip?

GEpic
Člen | 562
+
0
-

igor.pocta napsal(a):

Ještě bych měl dotaz, zaujal mě https://paulkr.github.io/overhang.js/

Když si dám scriptík do snippetu na flash zprávičky, tak mi vyskočí ale nezmizí. Nejspíš je to tím, že stránka už je načtená a nezaregistruje timeout.

Nějaký tip?

Já si na to udělal vlastní funkci:

{snippet flashMessages}
    <script n:inner-foreach="$flashes as $flash">
        flashMessage({$flash->message}, {$flash->type});
    </script>
{/snippet}

a v externím JS souboru mam:

function flashMessage(message, type){
    $.notify({
        message: message
    },{
        type: type,
        delay: 2500,
        animate: {
            enter: 'animated fadeInRight',
            exit: 'animated fadeOutRight'
        },
        offset: {
            x: 20,
            y: 85
        }
    });
}

Je to jiná knihovna, ale stejný princip – využívám tyto – Bootstrap Notify (mouse0270)

Někdy je potřeba zobrazit jak alert tak info zároveň, nebo vypsat 2 a více flash naráz.

Editoval GEpic (14. 1. 2017 18:44)

igor.pocta
Člen | 100
+
0
-

@GEpic Díky za tip, měl jsem to podobně ale jak už to u mě bývá, problém byl jinde. Flashes jsem vypisoval v době, kdy se ještě externí JS nenačetl. :)