fixed top events in search page

stage8
Alexey 9 years ago
parent 10517ac6a1
commit 9891430937
  1. 5
      apps/expobanner/views.py
  2. 6
      static/client/js/rejs/tops.js
  3. 102
      static/client/js/scripts.js
  4. 102
      static/client/js/vendor.js
  5. 16
      static/client/js_min/vendor.min.js

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import json
import re
from datetime import date
from django.http import HttpResponse
from django.shortcuts import redirect, get_object_or_404, render
@ -100,8 +101,8 @@ def get_top(request):
'catalog': catalog,
'month': request.GET.get('month')}
tops = Top.cached.all()
events = get_top_events(tops, params, request)
tops = Top.cached.filter(fr__lte=date.today(), to__gte=date.today()).order_by('?')
events = get_top_events(tops, params, request)[:3]
ctx = {'objects': events}
if not events:

@ -79,9 +79,9 @@
if (parent) {
parent.innerHTML = text;
$(document).ready(function () {
removeDublicates();
});
// $(document).ready(function () {
// removeDublicates();
// });
}
};

@ -88,6 +88,7 @@ function build_filters_period () {
function submit_search_form () {
var $form = $('.filter_form'),
params = $form.serialize(),
paramsForTop = $form.serializeArray(),
filters_url = $form.data('formurl'),
results_url = $form.data('resultsurl'),
$loader = $('#wait-ajax');
@ -101,7 +102,7 @@ function submit_search_form () {
$.getJSON(results_url, params, function(data) {
if (data.success) {
$('.page-body').html(data.results);
$('.page-body').html(data.results).prepend('<div id="expo_top_events"></div>');
build_sidebar();
$loader.hide();
}
@ -115,6 +116,105 @@ function submit_search_form () {
build_filters_period();
}
})
var API_URL_ROOT = "/expo-b/get-tops/";
var PARENT_ID = "expo_top_events";
var getUrl = function () {
var search = [];
var parts = /^\/([^\/]+)(?:\/|$)/i.exec(location.pathname);
if (parts) {
search.push("catalog=" + encodeURIComponent(parts[1]));
} else {
search.push("catalog=");
}
var data = window.sendData, theme = [];
$.each(paramsForTop, function(i,val){
if(val.name === 'theme') {
theme.push(parseInt(val.value));
}
});
data.theme = theme;
console.log('NEW:',data);
if (data instanceof Object) {
for (var key in data) {
if (data.hasOwnProperty(key)) {
var value = data[key];
if (value instanceof Array) {
for (var i = 0, l = value.length; i < l; i++) {
search.push(encodeURIComponent(key) + "=" + encodeURIComponent(value[i]));
}
} else {
search.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
}
}
}
}
return API_URL_ROOT + "?" + search.join("&");
};
var runCallback = function (callback, arg) {
try {
callback(arg);
} catch (error) {
// do nothing
}
// console.info('callback Done');
};
var getTops = function (url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function (event) {
if (event.target.readyState === 4) {
if (event.target.status === 200) {
if (document.readyState === "loading" && !window.marker_DOMtopjsElementInserted) {
// console.info('setting DOMContentLoaded event listener');
// console.info('setting DOMtopjsElementInserted event listener');
// document.addEventListener("DOMContentLoaded", function() {
document.addEventListener("DOMtopjsElementInserted", function() {
runCallback(callback, event.target.responseText);
});
} else {
runCallback(callback, event.target.responseText);
}
}
}
};
xhr.send();
};
var removeDublicates = function () {
$('div#' + PARENT_ID + ' ul li.cl-item').each(function(index, el) {
$('div.page-body ul.cat-list li.cl-item[data-slug=\'' + $(el).data('slug') + '\']').not(el).remove();
});
};
var insertTops = function (text) {
var parent = document.getElementById(PARENT_ID);
if (parent) {
parent.innerHTML = text;
// $(document).ready(function () {
// removeDublicates();
// });
}
};
var main = function () {
getTops(getUrl(), insertTops);
};
// main();
// window.addEventListener("load", main);
// document.addEventListener("DOMContentLoaded", main);
main();
}
$(document).ready(function () {

@ -4947,6 +4947,7 @@ function build_filters_period () {
function submit_search_form () {
var $form = $('.filter_form'),
params = $form.serialize(),
paramsForTop = $form.serializeArray(),
filters_url = $form.data('formurl'),
results_url = $form.data('resultsurl'),
$loader = $('#wait-ajax');
@ -4960,7 +4961,7 @@ function submit_search_form () {
$.getJSON(results_url, params, function(data) {
if (data.success) {
$('.page-body').html(data.results);
$('.page-body').html(data.results).prepend('<div id="expo_top_events"></div>');
build_sidebar();
$loader.hide();
}
@ -4974,6 +4975,105 @@ function submit_search_form () {
build_filters_period();
}
})
var API_URL_ROOT = "/expo-b/get-tops/";
var PARENT_ID = "expo_top_events";
var getUrl = function () {
var search = [];
var parts = /^\/([^\/]+)(?:\/|$)/i.exec(location.pathname);
if (parts) {
search.push("catalog=" + encodeURIComponent(parts[1]));
} else {
search.push("catalog=");
}
var data = window.sendData, theme = [];
$.each(paramsForTop, function(i,val){
if(val.name === 'theme') {
theme.push(parseInt(val.value));
}
});
data.theme = theme;
console.log('NEW:',data);
if (data instanceof Object) {
for (var key in data) {
if (data.hasOwnProperty(key)) {
var value = data[key];
if (value instanceof Array) {
for (var i = 0, l = value.length; i < l; i++) {
search.push(encodeURIComponent(key) + "=" + encodeURIComponent(value[i]));
}
} else {
search.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
}
}
}
}
return API_URL_ROOT + "?" + search.join("&");
};
var runCallback = function (callback, arg) {
try {
callback(arg);
} catch (error) {
// do nothing
}
// console.info('callback Done');
};
var getTops = function (url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function (event) {
if (event.target.readyState === 4) {
if (event.target.status === 200) {
if (document.readyState === "loading" && !window.marker_DOMtopjsElementInserted) {
// console.info('setting DOMContentLoaded event listener');
// console.info('setting DOMtopjsElementInserted event listener');
// document.addEventListener("DOMContentLoaded", function() {
document.addEventListener("DOMtopjsElementInserted", function() {
runCallback(callback, event.target.responseText);
});
} else {
runCallback(callback, event.target.responseText);
}
}
}
};
xhr.send();
};
var removeDublicates = function () {
$('div#' + PARENT_ID + ' ul li.cl-item').each(function(index, el) {
$('div.page-body ul.cat-list li.cl-item[data-slug=\'' + $(el).data('slug') + '\']').not(el).remove();
});
};
var insertTops = function (text) {
var parent = document.getElementById(PARENT_ID);
if (parent) {
parent.innerHTML = text;
// $(document).ready(function () {
// removeDublicates();
// });
}
};
var main = function () {
getTops(getUrl(), insertTops);
};
// main();
// window.addEventListener("load", main);
// document.addEventListener("DOMContentLoaded", main);
main();
}
$(document).ready(function () {

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save