Improve toggle (#2071)

This commit is contained in:
Christophe Maudoux 2020-02-10 10:58:48 +01:00
parent 83e802f208
commit d91bb8f6b9
6 changed files with 53 additions and 35 deletions

View File

@ -170,9 +170,9 @@ sub myNotifs {
unless $req->param('epoch');
my $notif = $self->_viewNotif( $req, $ref, $req->param('epoch') );
$notif =~ s/"checkbox"/"checkbox" checked disabled/g;
return $self->sendJSONresponse( $req,
{ notification => $notif, result => $notif } );
{ notification => $notif, result => ( $notif ? 1 : 0 ) } );
}
my $_notifications = $self->retrieveNotifs($req);

View File

@ -14,19 +14,26 @@ setMsg = (msg, level) ->
displayError = (j, status, err) ->
setMsg 'notificationRetreiveFailed', 'warning'
toggle = (button, verif) ->
toggle = (button, notif, epoch) ->
setMsg msg, 'positive'
if verif
$("#myNotification").attr('hidden', 'true')
button.removeClass 'btn-danger'
button.addClass 'btn-success'
else
$("#myNotification").removeAttr('hidden')
$(".btn-danger").each ->
$(this).removeClass 'btn-danger'
$(this).addClass 'btn-success'
$(".btn-danger").each ->
$(this).removeClass 'btn-danger'
$(this).addClass 'btn-success'
$(".fa-eye-slash").each ->
$(this).removeClass 'fa-eye-slash'
$(this).addClass 'fa-eye'
$(".verify").each ->
$(this).text window.translate 'verify'
$(this).attr('trspan', 'verify')
if notif and epoch
$("#icon-#{notif}-#{epoch}").removeClass 'fa-eye'
$("#icon-#{notif}-#{epoch}").addClass 'fa-eye-slash'
$("#text-#{notif}-#{epoch}").text window.translate 'hide'
$("#text-#{notif}-#{epoch}").attr('trspan', 'hide')
button.removeClass 'btn-success'
button.addClass 'btn-danger'
$("#myNotification").removeAttr('hidden')
else $("#myNotification").attr('hidden', 'true')
# viewNotif function (launched by "verify" button)
viewNotif = (notif, epoch, button) ->
@ -43,7 +50,7 @@ viewNotif = (notif, epoch, button) ->
success: (resp) ->
if resp.result
console.log 'Notification:', resp.notification
toggle button, 0
toggle button, notif, epoch
$('#displayNotif').html resp.notification
$('#notifRef').text(notif)
myDate = new Date(epoch * 1000)
@ -58,5 +65,5 @@ $(document).ready ->
$(this).text(myDate.toLocaleString())
$('#goback').attr 'href', portal
$('body').on 'click', '.btn-success', () -> viewNotif ( $(this).attr 'notif' ), ( $(this).attr 'epoch' ), $(this)
$('body').on 'click', '.btn-danger', () -> toggle $(this), 1
$('body').on 'click', '.btn-danger', () -> toggle $(this)

View File

@ -23,20 +23,30 @@ LemonLDAP::NG Notifications script
return setMsg('notificationRetreiveFailed', 'warning');
};
toggle = function(button, verif) {
toggle = function(button, notif, epoch) {
setMsg(msg, 'positive');
if (verif) {
$("#myNotification").attr('hidden', 'true');
button.removeClass('btn-danger');
return button.addClass('btn-success');
} else {
$("#myNotification").removeAttr('hidden');
$(".btn-danger").each(function() {
$(this).removeClass('btn-danger');
return $(this).addClass('btn-success');
});
$(".btn-danger").each(function() {
$(this).removeClass('btn-danger');
return $(this).addClass('btn-success');
});
$(".fa-eye-slash").each(function() {
$(this).removeClass('fa-eye-slash');
return $(this).addClass('fa-eye');
});
$(".verify").each(function() {
$(this).text(window.translate('verify'));
return $(this).attr('trspan', 'verify');
});
if (notif && epoch) {
$("#icon-" + notif + "-" + epoch).removeClass('fa-eye');
$("#icon-" + notif + "-" + epoch).addClass('fa-eye-slash');
$("#text-" + notif + "-" + epoch).text(window.translate('hide'));
$("#text-" + notif + "-" + epoch).attr('trspan', 'hide');
button.removeClass('btn-success');
return button.addClass('btn-danger');
button.addClass('btn-danger');
return $("#myNotification").removeAttr('hidden');
} else {
return $("#myNotification").attr('hidden', 'true');
}
};
@ -56,7 +66,7 @@ LemonLDAP::NG Notifications script
var myDate;
if (resp.result) {
console.log('Notification:', resp.notification);
toggle(button, 0);
toggle(button, notif, epoch);
$('#displayNotif').html(resp.notification);
$('#notifRef').text(notif);
myDate = new Date(epoch * 1000);
@ -82,7 +92,7 @@ LemonLDAP::NG Notifications script
return viewNotif($(this).attr('notif'), $(this).attr('epoch'), $(this));
});
return $('body').on('click', '.btn-danger', function() {
return toggle($(this), 1);
return toggle($(this));
});
});

View File

@ -1 +1,2 @@
(function(){var t,e,a,s,n;e=$("#msg").attr("trspan"),a=function(t,n){return $("#msg").html(window.translate(t)),$("#color").removeClass("message-positive message-warning alert-success alert-warning"),$("#color").addClass("message-"+n),"positive"===n&&(n="success"),$("#color").addClass("alert-"+n)},t=function(t,n,e){return a("notificationRetreiveFailed","warning")},s=function(t,n){return a(e,"positive"),n?($("#myNotification").attr("hidden","true"),t.removeClass("btn-danger"),t.addClass("btn-success")):($("#myNotification").removeAttr("hidden"),$(".btn-danger").each(function(){return $(this).removeClass("btn-danger"),$(this).addClass("btn-success")}),t.removeClass("btn-success"),t.addClass("btn-danger"))},n=function(e,o,i){return console.log("Ref:",e,"epoch:",o),e&&o?(console.log("Send AJAX request"),$.ajax({type:"GET",url:portal+"mynotifications/"+e,data:{epoch:o},dataType:"json",error:t,success:function(t){var n;return t.result?(console.log("Notification:",t.notification),s(i,0),$("#displayNotif").html(t.notification),$("#notifRef").text(e),n=new Date(1e3*o),$("#notifEpoch").text(n.toLocaleString())):a("notificationNotFound","warning")}})):a("notificationRetreiveFailed","warning")},$(document).ready(function(){return $(".data-epoch").each(function(){var t;return t=new Date(1e3*$(this).text()),$(this).text(t.toLocaleString())}),$("#goback").attr("href",portal),$("body").on("click",".btn-success",function(){return n($(this).attr("notif"),$(this).attr("epoch"),$(this))}),$("body").on("click",".btn-danger",function(){return s($(this),1)})})}).call(this);
(function(){var t,e,n,a,i;e=$("#msg").attr("trspan"),n=function(t,e){return $("#msg").html(window.translate(t)),$("#color").removeClass("message-positive message-warning alert-success alert-warning"),$("#color").addClass("message-"+e),"positive"===e&&(e="success"),$("#color").addClass("alert-"+e)},t=function(t,e,a){return n("notificationRetreiveFailed","warning")},a=function(t,a,i){return n(e,"positive"),$(".btn-danger").each(function(){return $(this).removeClass("btn-danger"),$(this).addClass("btn-success")}),$(".fa-eye-slash").each(function(){return $(this).removeClass("fa-eye-slash"),$(this).addClass("fa-eye")}),$(".verify").each(function(){return $(this).text(window.translate("verify")),$(this).attr("trspan","verify")}),a&&i?($("#icon-"+a+"-"+i).removeClass("fa-eye"),$("#icon-"+a+"-"+i).addClass("fa-eye-slash"),$("#text-"+a+"-"+i).text(window.translate("hide")),$("#text-"+a+"-"+i).attr("trspan","hide"),t.removeClass("btn-success"),t.addClass("btn-danger"),$("#myNotification").removeAttr("hidden")):$("#myNotification").attr("hidden","true")},i=function(e,i,o){return console.log("Ref:",e,"epoch:",i),e&&i?(console.log("Send AJAX request"),$.ajax({type:"GET",url:portal+"mynotifications/"+e,data:{epoch:i},dataType:"json",error:t,success:function(t){var s;return t.result?(console.log("Notification:",t.notification),a(o,e,i),$("#displayNotif").html(t.notification),$("#notifRef").text(e),s=new Date(1e3*i),$("#notifEpoch").text(s.toLocaleString())):n("notificationNotFound","warning")}})):n("notificationRetreiveFailed","warning")},$(document).ready(function(){return $(".data-epoch").each(function(){var t;return t=new Date(1e3*$(this).text()),$(this).text(t.toLocaleString())}),$("#goback").attr("href",portal),$("body").on("click",".btn-success",function(){return i($(this).attr("notif"),$(this).attr("epoch"),$(this))}),$("body").on("click",".btn-danger",function(){return a($(this))})})}).call(this);
//# sourceMappingURL=lemonldap-ng-portal/site/htdocs/static/common/js/notifications.min.js.map

View File

@ -1 +1 @@
{"version":3,"sources":["lemonldap-ng-portal/site/htdocs/static/common/js/notifications.js"],"names":["displayError","msg","setMsg","toggle","viewNotif","$","attr","level","html","window","translate","removeClass","addClass","j","status","err","button","verif","removeAttr","each","this","notif","epoch","console","log","ajax","type","url","portal","data","dataType","error","success","resp","myDate","result","notification","text","Date","toLocaleString","document","ready","on","call"],"mappings":"CAMA,WACE,IAAIA,EAAcC,EAAKC,EAAQC,EAAQC,EAEvCH,EAAMI,EAAE,QAAQC,KAAK,UAErBJ,EAAS,SAASD,EAAKM,GAOrB,OANAF,EAAE,QAAQG,KAAKC,OAAOC,UAAUT,IAChCI,EAAE,UAAUM,YAAY,gEACxBN,EAAE,UAAUO,SAAS,WAAaL,GACpB,aAAVA,IACFA,EAAQ,WAEHF,EAAE,UAAUO,SAAS,SAAWL,IAGzCP,EAAe,SAASa,EAAGC,EAAQC,GACjC,OAAOb,EAAO,6BAA8B,YAG9CC,EAAS,SAASa,EAAQC,GAExB,OADAf,EAAOD,EAAK,YACRgB,GACFZ,EAAE,mBAAmBC,KAAK,SAAU,QACpCU,EAAOL,YAAY,cACZK,EAAOJ,SAAS,iBAEvBP,EAAE,mBAAmBa,WAAW,UAChCb,EAAE,eAAec,KAAK,WAEpB,OADAd,EAAEe,MAAMT,YAAY,cACbN,EAAEe,MAAMR,SAAS,iBAE1BI,EAAOL,YAAY,eACZK,EAAOJ,SAAS,gBAI3BR,EAAY,SAASiB,EAAOC,EAAON,GAEjC,OADAO,QAAQC,IAAI,OAAQH,EAAO,SAAUC,GACjCD,GAASC,GACXC,QAAQC,IAAI,qBACLnB,EAAEoB,KAAK,CACZC,KAAM,MACNC,IAAKC,OAAS,mBAAqBP,EACnCQ,KAAM,CACJP,MAAOA,GAETQ,SAAU,OACVC,MAAO/B,EACPgC,QAAS,SAASC,GAChB,IAAIC,EACJ,OAAID,EAAKE,QACPZ,QAAQC,IAAI,gBAAiBS,EAAKG,cAClCjC,EAAOa,EAAQ,GACfX,EAAE,iBAAiBG,KAAKyB,EAAKG,cAC7B/B,EAAE,aAAagC,KAAKhB,GACpBa,EAAS,IAAII,KAAa,IAARhB,GACXjB,EAAE,eAAegC,KAAKH,EAAOK,mBAE7BrC,EAAO,uBAAwB,eAKrCA,EAAO,6BAA8B,YAIhDG,EAAEmC,UAAUC,MAAM,WAUhB,OATApC,EAAE,eAAec,KAAK,WACpB,IAAIe,EAEJ,OADAA,EAAS,IAAII,KAAsB,IAAjBjC,EAAEe,MAAMiB,QACnBhC,EAAEe,MAAMiB,KAAKH,EAAOK,oBAE7BlC,EAAE,WAAWC,KAAK,OAAQsB,QAC1BvB,EAAE,QAAQqC,GAAG,QAAS,eAAgB,WACpC,OAAOtC,EAAUC,EAAEe,MAAMd,KAAK,SAAUD,EAAEe,MAAMd,KAAK,SAAUD,EAAEe,SAE5Df,EAAE,QAAQqC,GAAG,QAAS,cAAe,WAC1C,OAAOvC,EAAOE,EAAEe,MAAO,SAI1BuB,KAAKvB"}
{"version":3,"sources":["lemonldap-ng-portal/site/htdocs/static/common/js/notifications.js"],"names":["displayError","msg","setMsg","toggle","viewNotif","$","attr","level","html","window","translate","removeClass","addClass","j","status","err","button","notif","epoch","each","this","text","removeAttr","console","log","ajax","type","url","portal","data","dataType","error","success","resp","myDate","result","notification","Date","toLocaleString","document","ready","on","call"],"mappings":"CAMA,WACE,GAAIA,GAAcC,EAAKC,EAAQC,EAAQC,CAEvCH,GAAMI,EAAE,QAAQC,KAAK,UAErBJ,EAAS,SAASD,EAAKM,GAOrB,MANAF,GAAE,QAAQG,KAAKC,OAAOC,UAAUT,IAChCI,EAAE,UAAUM,YAAY,gEACxBN,EAAE,UAAUO,SAAS,WAAaL,GACpB,aAAVA,IACFA,EAAQ,WAEHF,EAAE,UAAUO,SAAS,SAAWL,IAGzCP,EAAe,SAASa,EAAGC,EAAQC,GACjC,MAAOb,GAAO,6BAA8B,YAG9CC,EAAS,SAASa,EAAQC,EAAOC,GAc/B,MAbAhB,GAAOD,EAAK,YACZI,EAAE,eAAec,KAAK,WAEpB,MADAd,GAAEe,MAAMT,YAAY,cACbN,EAAEe,MAAMR,SAAS,iBAE1BP,EAAE,iBAAiBc,KAAK,WAEtB,MADAd,GAAEe,MAAMT,YAAY,gBACbN,EAAEe,MAAMR,SAAS,YAE1BP,EAAE,WAAWc,KAAK,WAEhB,MADAd,GAAEe,MAAMC,KAAKZ,OAAOC,UAAU,WACvBL,EAAEe,MAAMd,KAAK,SAAU,YAE5BW,GAASC,GACXb,EAAE,SAAWY,EAAQ,IAAMC,GAAOP,YAAY,UAC9CN,EAAE,SAAWY,EAAQ,IAAMC,GAAON,SAAS,gBAC3CP,EAAE,SAAWY,EAAQ,IAAMC,GAAOG,KAAKZ,OAAOC,UAAU,SACxDL,EAAE,SAAWY,EAAQ,IAAMC,GAAOZ,KAAK,SAAU,QACjDU,EAAOL,YAAY,eACnBK,EAAOJ,SAAS,cACTP,EAAE,mBAAmBiB,WAAW,WAEhCjB,EAAE,mBAAmBC,KAAK,SAAU,SAI/CF,EAAY,SAASa,EAAOC,EAAOF,GAEjC,MADAO,SAAQC,IAAI,OAAQP,EAAO,SAAUC,GACjCD,GAASC,GACXK,QAAQC,IAAI,qBACLnB,EAAEoB,MACPC,KAAM,MACNC,IAAKC,OAAS,mBAAqBX,EACnCY,MACEX,MAAOA,GAETY,SAAU,OACVC,MAAO/B,EACPgC,QAAS,SAASC,GAChB,GAAIC,EACJ,OAAID,GAAKE,QACPZ,QAAQC,IAAI,gBAAiBS,EAAKG,cAClCjC,EAAOa,EAAQC,EAAOC,GACtBb,EAAE,iBAAiBG,KAAKyB,EAAKG,cAC7B/B,EAAE,aAAagB,KAAKJ,GACpBiB,EAAS,GAAIG,MAAa,IAARnB,GACXb,EAAE,eAAegB,KAAKa,EAAOI,mBAE7BpC,EAAO,uBAAwB,eAKrCA,EAAO,6BAA8B,YAIhDG,EAAEkC,UAAUC,MAAM,WAUhB,MATAnC,GAAE,eAAec,KAAK,WACpB,GAAIe,EAEJ,OADAA,GAAS,GAAIG,MAAsB,IAAjBhC,EAAEe,MAAMC,QACnBhB,EAAEe,MAAMC,KAAKa,EAAOI,oBAE7BjC,EAAE,WAAWC,KAAK,OAAQsB,QAC1BvB,EAAE,QAAQoC,GAAG,QAAS,eAAgB,WACpC,MAAOrC,GAAUC,EAAEe,MAAMd,KAAK,SAAUD,EAAEe,MAAMd,KAAK,SAAUD,EAAEe,SAE5Df,EAAE,QAAQoC,GAAG,QAAS,cAAe,WAC1C,MAAOtC,GAAOE,EAAEe,aAInBsB,KAAKtB","file":"lemonldap-ng-portal/site/htdocs/static/common/js/notifications.min.js"}

View File

@ -17,14 +17,14 @@
</thead>
<tbody>
<TMPL_LOOP NAME="NOTIFICATIONS">
<tr id='delete-<TMPL_VAR NAME="epoch">'>
<tr>
<td class="data-epoch"><TMPL_VAR NAME="epoch"></td>
<td class="align-middle"><TMPL_VAR NAME="reference"></td>
<td>
<span notif='<TMPL_VAR NAME="reference">' epoch='<TMPL_VAR NAME="epoch">' class="btn btn-success" role="button">
<span class="fa fa-eye"></span>
<span trspan="verify">Verify</span>
</span>
<span notif='<TMPL_VAR NAME="reference">' epoch='<TMPL_VAR NAME="epoch">' class="btn btn-success" role="button">
<span id='icon-<TMPL_VAR NAME="reference">-<TMPL_VAR NAME="epoch">' class="fa fa-eye"></span>
<span id='text-<TMPL_VAR NAME="reference">-<TMPL_VAR NAME="epoch">' class="verify" trspan="verify">Verify</span>
</span>
</td>
</tr>
</TMPL_LOOP>