You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

936 lines
27 KiB

/*!
* jQuery.ellipsis
* https://github.com/jjenzz/jquery.ellipsis
* --------------------------------------------------------------------------
* Copyright (c) 2013 J. Smith (@jjenzz)
* Dual licensed under the MIT and GPL licenses:
* https://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* adds a class to the last 'allowed' line of text so you can apply
* text-overflow: ellipsis;
*/
(function (a) {
$(".reservationlist").show();
$(".waitlistlist").hide();
$(".historylist").hide();
$(".leftNav").removeClass("tabline-left");
$(".middleNav").removeClass("tabline");
$(".middleNav").addClass("tabline-right");
$("#myres").click(function () {
$(".middleNav").addClass("tabline-right");
$(".middleNav").removeClass("tabline-left");
$(".leftNav").removeClass("tabline-left");
$(".reservationlist").show();
$(".waitlistlist").hide();
$(".historylist").hide();
});
$("#mywait").click(function () {
$(".reservationlist").hide();
$(".waitlistlist").show();
$(".historylist").hide();
$(".middleNav").removeClass("tabline-right");
$(".middleNav").removeClass("tabline-left");
});
$("#myreshis").click(function () {
$(".middleNav").addClass("tabline-left");
$(".middleNav").removeClass("tabline-right");
$(".reservationlist").hide();
$(".waitlistlist").hide();
$(".historylist").show();
});
if (typeof define === "function" && define.amd) {
define(["jquery"], a);
} else {
a(jQuery);
}
})(function (d) {
var c = "ellipsis",
b = '<span style="white-space: nowrap;">',
e = {
lines: "auto",
ellipClass: "ellip",
responsive: false,
};
function a(h, q) {
var m = this,
w = 0,
g = [],
k,
p,
i,
f,
j,
n,
s;
m.$cont = d(h);
m.opts = d.extend({}, e, q);
function o() {
m.text = m.$cont.text();
m.opts.ellipLineClass = m.opts.ellipClass + "-line";
m.$el = d('<span class="' + m.opts.ellipClass + '" />');
m.$el.text(m.text);
m.$cont.empty().append(m.$el);
t();
}
function t() {
if (typeof m.opts.lines === "number" && m.opts.lines < 2) {
m.$el.addClass(m.opts.ellipLineClass);
return;
}
n = m.$cont.height();
if (m.opts.lines === "auto" && m.$el.prop("scrollHeight") <= n) {
return;
}
if (!k) {
return;
}
s = d.trim(m.text).split(/\s+/);
m.$el.html(b + s.join("</span> " + b) + "</span>");
m.$el.find("span").each(k);
if (p != null) {
u(p);
}
}
function u(x) {
s[x] = '<span class="' + m.opts.ellipLineClass + '">' + s[x];
s.push("</span>");
m.$el.html(s.join(" "));
}
if (m.opts.lines === "auto") {
var r = function (y, A) {
var x = d(A),
z = x.position().top;
j = j || x.height();
if (z === f) {
g[w].push(x);
} else {
f = z;
w += 1;
g[w] = [x];
}
if (z + j > n) {
p = y - g[w - 1].length;
return false;
}
};
k = r;
}
if (typeof m.opts.lines === "number" && m.opts.lines > 1) {
var l = function (y, A) {
var x = d(A),
z = x.position().top;
if (z !== f) {
f = z;
w += 1;
}
if (w === m.opts.lines) {
p = y;
return false;
}
};
k = l;
}
if (m.opts.responsive) {
var v = function () {
g = [];
w = 0;
f = null;
p = null;
m.$el.html(m.text);
clearTimeout(i);
i = setTimeout(t, 100);
};
d(window).on("resize." + c, v);
}
o();
}
d.fn[c] = function (f) {
return this.each(function () {
try {
d(this).data(c, new a(this, f));
} catch (g) {
if (window.console) {
console.error(c + ": " + g);
}
}
});
};
});
var events = (function ($, window, jQuery) {
var _vars_ = {};
var guest_max;
var guest_number = 0;
var reserved_seats;
return {
set_vars: function (options) {
$.extend(_vars_, options || {});
},
get_vars: function () {
return _vars_;
},
set_reservations_header: function (res_type) {
// set my reservations header.
//general informations
$.ajax({
url:
app.get_vars().baseurl +
"events/reservations/get_reservations_info/" +
res_type,
type: "GET",
cache: false,
data: {},
beforeSend: function () {
// $("#events_list").append('<p class="text-center"><i class="fa fa-spin fa-spinner"/> '+app.get_vars()._app.notif.loading+'</p>');
},
success: function (result) {
if (app.isalive(result)) {
$("span.confirmed_reservations").html(result.mdata["normal_res"]);
$("span.waiting_reservations").html(result.mdata["waitlist_res"]);
$("span.total_reservations").html(result.mdata["total_res"]);
$("span.total_reservation_count_off_mod").html(
result.mdata["nr_total_events"]
);
/*Name of user*/
// $('.first_name').html(app.get_vars()._app.msg.first_name);
/*Total events the user participated in Normal reservations, WL and my history*/
var wl_counter, mh_counter, nr_total_res_counter, cancel_wl_counter;
wl_counter = result.mdata["total_waitlist_active_res"];
cancel_wl_counter = result.mdata["total_waitlist_cancel_res"];
mh_counter = result.mdata["mh_total_events"];
nr_total_res_counter = result.mdata["nr_total_events"];
if (cancel_wl_counter > 1) {
$("span.total_waitlist_cancel_res").html(
" <b>" +
cancel_wl_counter +
" </b> événements sur liste d’attente annulés."
);
}
if (cancel_wl_counter == 1) {
$("span.total_waitlist_cancel_res").html(
" <b>" +
cancel_wl_counter +
" </b> événement sur liste d’attente annulé."
);
}
if (cancel_wl_counter == 0 || cancel_wl_counter == "") {
$("span.total_waitlist_cancel_res").html("");
}
$("span.total_waitlist_active_res").html(
result.mdata["total_waitlist_active_res"]
);
$("span.total_moderated_waitlist_res_events").html(
result.mdata["total_moderated_waitlist_res_events"]
);
$("span.mh_total_events").html(result.mdata["mh_total_events"]);
/*Add 's' to evenement if the total event is more than 1*/
if (nr_total_res_counter > 1) {
$("span#add_s_nr_res").html("s");
} else {
$("span#add_s_nr_res").html("");
}
/*Add 's' to evenement if the total waitlist event is more than 1*/
if (wl_counter > 1) {
$("span#add_s_wl").html("s");
} else {
$("span#add_s_wl").html("");
}
/*Add 's' to evenement if the total history event is more than 1*/
if (mh_counter > 1) {
$("span#add_s_mh").html("s");
} else {
$("span#add_s_mh").html("");
}
$.ajax({
url: app.get_vars().baseurl + "getMyReservationsInfo/",
type: "GET",
cache: false,
async: false,
data: {},
beforeSend: function () {
// $("#events_list").append('<p class="text-center"><i class="fa fa-spin fa-spinner"/> '+app.get_vars()._app.notif.loading+'</p>');
},
success: function (result1) {
if (app.isalive(result1)) {
try {
if (result1.res_period) {
$(".remaining_res_based_on_mod").html(
`${result1.remaining_res_current_period} ${result1.res_period}`
);
var res_counter,
res_rem_crt_prd_counter,
res_rem_nxt_prd_counter;
res_counter = result1.total_reservation_count;
res_rem_crt_prd_counter =
result1.remaining_res_current_period;
res_rem_nxt_prd_counter =
result1.remaining_res_next_period;
/*Set dynamic data*/
if (result1.cancel_events_count > 1) {
$("span.total_cancel_reservation_count").html(
"<b> " +
result1.cancel_events_count +
"</b> événements annulés."
);
}
if (result1.cancel_events_count == 1) {
$("span.total_cancel_reservation_count").html(
"<b> " +
result1.cancel_events_count +
"</b> événement annulé."
);
}
if (
result1.cancel_events_count == 0 ||
result1.cancel_events_count == ""
) {
$("span.total_cancel_reservation_count").html("");
}
$("span.total_reservation_count").text(
result1.total_reservation_count
);
$("span.total_reservation_mod_event_count").html(
result1.total_reservation_mod_event_count
);
$("span.remaining_res_current_period").html(
result1.remaining_res_current_period
);
$("span.remaining_res_next_period").html(
result1.remaining_res_next_period
);
/*If gen_modd_sett is off hide the total mod_current/next period res*/
if (result1.gen_mod_sett < 1) {
$(".off_gen_mod_sett").removeClass("hide_wrd");
$(".on_gen_mod_sett").addClass("hide_wrd");
$(".ftr_mod_notif").addClass("hide_wrd");
} else {
$(".off_gen_mod_sett").addClass("hide_wrd");
$(".on_gen_mod_sett").removeClass("hide_wrd");
$(".ftr_mod_notif").removeClass("hide_wrd");
}
/*Add 's' to evenement if the total reserved event is more than 1*/
if (res_counter > 1) {
$("span#add_s_res").html("s");
} else {
$("span#add_s_res").html("");
}
/*Add 's' to evenement and demande if remaining_res_current_period > 1*/
if (res_rem_crt_prd_counter > 1) {
$("span.add_limit").text("");
$("span.add_wrd_restants").text("restants");
$("span.add_wrd_demandes").text("demandés");
$("span.add_wrd_events").text("événements");
} else if (res_rem_crt_prd_counter == 1) {
$("span.add_limit").text("");
$("span.add_wrd_restants").text("restant");
$("span.add_wrd_demandes").text("demandé");
$("span.add_wrd_events").text("événement");
} else {
$("span.remaining_res_current_period").html(
result1.max_res
);
$("span.add_wrd_limit").text("limite de ");
$("span.add_wrd_restants").text("atteinte");
$("span.add_wrd_events").text("événements");
$("span.add_wrd_demandes").text("demandés");
}
/*Add 's' to evenement and demande if remaining_res_next_period > 1*/
if (res_rem_nxt_prd_counter > 1) {
$("span.add_limit3").text("");
$("span.add_wrd_restants3").text("restants");
$("span.add_wrd_demandes3").text("demandés");
$("span.add_wrd_events3").text("événements");
} else if (res_rem_nxt_prd_counter == 1) {
$("span.add_limit3").text("");
$("span.add_wrd_restants3").text("restant");
$("span.add_wrd_demandes3").text("demandé");
$("span.add_wrd_events3").text("événement");
} else {
$("span.remaining_res_next_period").html(
result1.max_res
);
$("span.add_wrd_limit3").text("limite de ");
$("span.add_wrd_restants3").text("atteinte");
$("span.add_wrd_events3").text("événements");
$("span.add_wrd_demandes3").text("demandés");
}
$("span.res_period2").html(result1.res_period2);
$("span.res_period3").html(result1.res_period3);
$("span.when_can_reserve").html(result1.when_can_reserve);
if (result1.remaining_res == 0) {
$(".nr_exceeded_msg").removeAttr("hidden");
}
// $('.my_res_gen_header').append(
// `<small><span class="allowed_reservations">* Out of ${result1.max_res} maximum reservations, you have ${result1.remaining_res} remaining reservations left for moderated events for ${result1.res_period}</span></small><br />`
// )
}
// if (result1.nshow_period) {
// $('.my_res_gen_header').append(
// `<small><span class="allowed_reservations">* Out of ${result1.max_noshow} maximum noshow(s), you have ${result1.total_noshow} noshow(s) for the past ${result1.nshow_period} . If you reach the limit for the said period, you will not be allowed to reserve on moderated events</span></small>`
// )
// }
} catch (e) {
} finally {
}
}
},
});
}
},
});
//moderation infos
},
filter: function (page, res_type) {
if ($(window).width() > 568) {
var month = $(".filter-box.desktop #filter-month").val();
var type = $(".filter-box.desktop #filter-type").val();
var city = $(".filter-box.desktop #filter-city").val();
} else {
var month = $(".filter-box.mobile #filter-month").val();
var type = $(".filter-box.mobile #filter-type").val();
var city = $(".filter-box.mobile #filter-city").val();
}
var search_keyword;
switch (res_type) {
case 1:
search_keyword = $("#search_mres_history").val();
break;
case 2:
search_keyword = $("#search_mwait").val();
break;
default:
search_keyword = $("#search_mres").val();
}
$.ajax({
url:
app.get_vars().baseurl +
"events/reservations/filter_reservations/" +
res_type,
type: "GET",
cache: false,
data: {
month: month,
type: type,
city: city,
page: page,
search: search_keyword,
},
beforeSend: function () {
// $("#events_list").append('<p class="text-center"><i class="fa fa-spin fa-spinner"/> '+app.get_vars()._app.notif.loading+'</p>');
},
success: function (result) {
if (app.isalive(result)) {
// if ($(window).width() >= 992) {
// if (result.mdata.result_count <= 3) $('#events-list').height(620);
// else $('#events-list').height(1240);
// }
switch (res_type) {
case 1:
$("#events-list-history").empty();
$("#paginate2").empty();
break;
case 2:
$("#events-list-waitlist").empty();
$("#paginate3").empty();
break;
default:
$("#events-list").empty();
$("#paginate").empty();
}
events._format._event(page, result, res_type);
}
$(".myres_search .fa-spin").remove();
},
});
},
_format: {
_event: function (page, result, res_type) {
//start listing events
var page = parseInt(page);
var count = 1;
var events_list = "";
var page_link = "";
var event_box = "";
var card_h_class = "h-10";
let additionalURLParam = "";
switch (parseInt(res_type)) {
case 0:
events_list_id = "#events-list";
events_list = $("#events-list");
page_link = $("#paginate");
event_box = "event-box-";
break;
case 1:
card_h_class = "h-10";
events_list_id = "#events-list-history";
events_list = $("#events-list-history");
page_link = $("#paginate2");
event_box = "event-box-mresh";
additionalURLParam = "&hs=true";
break;
case 2:
events_list_id = "#events-list-waitlist";
events_list = $("#events-list-waitlist");
page_link = $("#paginate3");
event_box = "event-box-mwait";
break;
default:
}
events_list.empty();
page_link.empty();
if (typeof result.mdata != "undefined") {
if ($.isEmptyObject(result.mdata.details)) {
// events_list.height(200);
if (result.mdata.logged_in) {
events_list.append(
"<div class='col-md-12 events-list-empty'>" +
"<h2 class='text-center'>" +
app.get_vars()._app.no_match_found +
"</h2>" +
"</div>"
);
} else {
events_list.append(
"<div class='col-md-12 events-list-empty'>" +
"<h2 class='text-center'>" +
app.get_vars()._app.no_results_found +
"</h2>" +
"</div>"
);
}
} else {
var row_items = [],
records_count = result.mdata.details.length;
$.each(result.mdata.details, function (i, item) {
eventDetails = result.mdata.details;
var imges = "";
var fav = "";
var fav_text = "";
var favlink = "";
// var event_schedule_id = item.bostatus.split("_");
let annule = "";
if (item.event_favorite != null && item.event_favorite != "") {
favlink = "favlink";
// fav =
// "<img id='favorite-img' src='" +
// app.get_vars().baseurl +
// "resources/images/M.jpg" +
// "' alt='" +
// item.title +
// "' class='img-responsive'> ";
fav_text = "En partenariat avec <i>Company For Madagascar</i>";
}
if (
(item.event_status[0]["event_status"] == "CANCEL" &&
item.date_feature == 1) ||
(item.event_status[0]["event_status"] == "CANCEL" &&
item.date_feature == 2) ||
(item.date_feature == 2 &&
item.event_count == item.cancel_count)
) {
annule =
"<a href='" +
app.get_vars().baseurl +
"event_details?event_id=" +
item.event_id +
"' class='event-link'><span style='position: absolute; color: #fff; height: 100%; background-color: #00000094; text-align: center; width: 100%; padding-top: 4.5rem; font-size: 2.5rem; font-family: Arial !important;'>ANNULÉ</span></a>";
}
row_items.push({
event:
`<div class="col-md-4 col-sm-6 col-12 mt-3 mb-3" style="align-items: initial;">
<div class="card ` +
favlink +
`" data-eventsched-id='${
item.event_schedule_id
}' data-eventid='${
item.event_id
}' data-restype-id="${res_type}">
<div class="wrapperimg">
<a href='${
app.get_vars().baseurl
}event_details?event_id=${
item.event_id
}${additionalURLParam}' class='event-link'>
<img src='${app.get_vars().baseurl}resources/images/frontoffice/events/${item.file_name}' alt='${item.title}' class='card-img-top'>
<p class="eventcat-overlay"><span class="eventcat event-type" id='hp-event-type-city${item.event_schedule_id}'>${item.event_type.toUpperCase()}</span></p>
</a>
` +
annule +
`
</div>
<div class="card-body">
<br/>
<div><h5 class="card-title"><p class='event-card-title'>` +
fav +
` ${item.title}</p></h5></div>
<p class="eventdate" id='hp-event-date${item.event_schedule_id}'></p>
<div class="eventcontent">
<span class="favorites">` +
fav_text +
`</span>
<div class="event-desc">
<p class="card-text" >${item.description}</p>
</div>
</div>
</div>
<div class="card-footer ` +
favlink +
` ${card_h_class}" id='${event_box}${i}'>
<div style="line-height:3;" class="` +
favlink +
`"><p class="mb-2"><a class='event-link' href="${
app.get_vars().baseurl
}event_details?event_id=${
item.event_id
}${additionalURLParam}">${
app.get_vars()._app.read_more
} »</a></p></div>
</div>
</div>
</div>`,
row: [i, parseInt(item.event_schedule_id)],
});
if (events._format._margin(records_count, i + 1)) {
events_list.append(`<div class='card-deck mark${i}'> </div>`);
var detailsIndex = 0;
$.map(row_items, function (row_item, key) {
$(events_list_id + " .mark" + i).append(row_item.event);
$(".event-desc").ellipsis({
lines: 3,
});
subscribe.button.setButtonStatus(
row_item.row[1],
1,
$("#" + event_box + row_item.row[0]),
res_type,
eventDetails[detailsIndex]
);
detailsIndex++;
});
row_items = []; // reset
}
count++;
});
// Pagination Links below
var totalpages = result.mdata.pages;
var range = 3;
if (page > 1) {
var previous = page - 1;
page_link.append(
"<li class='page-item'><a href='#1' class='page-link' data-page='1'>" +
"<<" +
"</a></li>"
);
page_link.append(
"<li class='page-item'><a href='#" +
previous +
"' class='page-link' data-page='" +
previous +
"'>" +
"<" +
"</a></li>"
);
}
for (x = page - range; x <= page + range; x++) {
if (x > 0 && x <= totalpages) {
if (x == page)
page_link.append(
"<li class='page-item'><a href='#" +
x +
"' class='page-link pagination-active' data-page='" +
x +
"'>" +
x +
"</a></li>"
);
else
page_link.append(
"<li class='page-item'><a href='#" +
x +
"' class='page-link' data-page='" +
x +
"'>" +
x +
"</a></li>"
);
}
}
if (page >= 1 && page < totalpages) {
var next = page + 1;
page_link.append(
"<li class='page-item'><a href='#" +
next +
"' class='page-link' data-page='" +
next +
"'>" +
">" +
"</a></li>"
);
page_link.append(
"<li class='page-item'><a href='#" +
totalpages +
"' class='page-link' data-page='" +
next +
"'>" +
">>" +
"</a></li>"
);
}
}
} //end of if result.mdata is defined
},
_margin: function (records_count, i) {
if (i % 6 === 0 || records_count === i) return true;
else return false;
},
strip_tags: function (element) {
var whitelist = "p,a";
$(element)
.not(whitelist)
.each(function () {
var content = $(this).contents();
$(this).replaceWith(content);
});
},
},
_change_hash: function () {
var page = location.hash.trim().replace("#", "");
if (parseInt(page)) {
window.location.hash = "";
} else {
events.filter(1, 0);
events.filter(1, 1);
events.filter(1, 2);
$("#filter-month").val();
}
},
getCookie: function (name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();
},
clear_cookie: function () {
$.ajax({
url: app.get_vars().baseurl + "events/subscribe/clear_link_cookie",
type: "GET",
success: function (result) {},
});
},
searchReservations: function (id) {
$(".myres_search .fa-spin").remove();
$(".myres_search ").prepend(
`<i class="fa fa-spin fa-spinner mr-2"></i> `
);
switch (id) {
case "search_mres":
events.filter(1, 0);
break;
case "search_mwait":
events.filter(1, 2);
break;
default:
events.filter(1, 1);
}
},
};
// Pass in jQuery.
})(jQuery, this);
$(function () {
$(window).on("orientationchange", function () {
if (window.orientation == 0) {
var m = $(".filter-box.desktop #filter-month").val();
var month = $(".filter-box.mobile #filter-month").val(m);
var t = $(".filter-box.desktop #filter-type").val();
var type = $(".filter-box.mobile #filter-type").val(t);
var c = $(".filter-box.desktop #filter-city").val();
var city = $(".filter-box.mobile #filter-city").val(c);
} else {
var m = $(".filter-box.mobile #filter-month").val();
var month = $(".filter-box.desktop #filter-month").val(m);
var t = $(".filter-box.mobile #filter-type").val();
var type = $(".filter-box.desktop #filter-type").val(t);
var c = $(".filter-box.mobile #filter-city").val();
var city = $(".filter-box.desktop #filter-city").val(c);
}
});
// Check Link Cookie
events.clear_cookie();
// events.show_session();
$(".hr-style").removeProp("border");
$("#collapse").on("hide.bs.collapse", function () {
$(".btn-filter-mobile").html('<i class="fa fa-plus"></i>');
});
$("#collapse").on("show.bs.collapse", function () {
$(".btn-filter-mobile").html('<i class="fa fa-minus"></i>');
});
$(window)
.on("hashchange", function (e) {
e.preventDefault();
active_tab = $(".nav-link.active").attr("id");
var page = location.hash.trim().replace("#", "");
page = parseInt(page) ? page : 1;
if (page) {
switch (active_tab) {
case "myreshis":
events.filter(page, 1);
break;
case "mywait":
events.filter(page, 2);
break;
default:
events.filter(page, 0);
}
}
return false;
})
.trigger("hashchange");
// Scroll to top
$(document)
.on("click", ".page-link", function () {
try {
$(".filter-view:visible")[0].scrollIntoView(true);
} catch (e) {}
})
.on("change", ".filter-select", function () {
try {
$(".filter-view:visible")[0].scrollIntoView(true);
} catch (e) {}
});
$(document).on("click", "#filter-box-mobile-toggle", function () {
$("#filter-box-mobile-toggle .plus").toggle();
$("#filter-box-mobile-toggle .minus").toggle();
});
// send events on filter change
$(document).on("change", "#filter-month", function () {
dataLayer.push({
fo_filter: undefined,
});
dataLayer.push({
fo_filter: this.value,
});
console.log("Filter month");
});
$(document).on("change", "#filter-type", function () {
dataLayer.push({
fo_filter: undefined,
});
dataLayer.push({
fo_filter: this.value,
});
console.log("Filter type");
});
$(document).on("change", "#filter-city", function () {
dataLayer.push({
fo_filter: undefined,
});
dataLayer.push({
fo_filter: this.value,
});
console.log("Filter city");
});
$(document).on("click", '[data-toggle="tab"]', function () {
var page = location.hash.trim().replace("#", "");
if (!$(this).hasClass("data_loaded")) {
$(this).addClass("data_loaded");
switch (this.id) {
case "mywait":
events.filter(1, 2);
break;
case "myreshis":
events.filter(1, 1);
break;
default:
}
}
if (this.id == "") {
} else {
// events.filter(1, 0);
}
// page = (parseInt(page))?page:1;
// if(page) {
// }
$(".event-desc").ellipsis({
lines: 3,
});
});
$(document).on("click", '[data-toggle="collapse"]', function () {
$(".event-desc").ellipsis({
lines: 3,
});
});
$(".search-input").on("keypress", function (e) {
if (e.which == 13) {
events.searchReservations(this.id);
e.preventDefault();
}
});
$(".search_btn").on("click", function (e) {
events.searchReservations($(this).data("input"));
e.preventDefault();
});
events.set_reservations_header(0);
});