change in algo of event generation plus now multi week events enabled
This commit is contained in:
parent
d2fea92969
commit
022d28e5e7
|
@ -82,12 +82,12 @@ var calendarAPI = function(){
|
||||||
month = dt.getMonth()+1;
|
month = dt.getMonth()+1;
|
||||||
year = dt.getFullYear();
|
year = dt.getFullYear();
|
||||||
}
|
}
|
||||||
// month = 2;
|
// month = 10;
|
||||||
// year = 2008;
|
// year = 2008;
|
||||||
c.cur_month = month;
|
c.cur_month = month;
|
||||||
c.cur_year = year;
|
c.cur_year = year;
|
||||||
$('#view_holder').load("cals/month_view?month="+month+"&year="+year, function() {
|
$('#view_holder').load("cals/month_view?month="+month+"&year="+year, function() {
|
||||||
getEvents(month,year);
|
c.getEvents(month,year);
|
||||||
$('.current_day_title').text(c.monthlist[c.cur_month]+" "+c.cur_year);
|
$('.current_day_title').text(c.monthlist[c.cur_month]+" "+c.cur_year);
|
||||||
if($('#calendar_month').length > 0){
|
if($('#calendar_month').length > 0){
|
||||||
var $c_table = $('#calendar_month');
|
var $c_table = $('#calendar_month');
|
||||||
|
@ -111,71 +111,109 @@ var calendarAPI = function(){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
var getEvents = function(month,year){
|
|
||||||
$.getJSON("cals/getEvents",{"type":"monthview","month":month,"year":year},function(events){
|
}
|
||||||
var $eventrow = $("<tr></tr>");
|
|
||||||
var nos = new Array();
|
this.getEvents = function(month,year){
|
||||||
var currow = 0;
|
$.getJSON("cals/getEvents",{"type":"monthview","month":month,"year":year},function(events){
|
||||||
var lastno = 0;
|
makerow(events);
|
||||||
nos.push(0);
|
})
|
||||||
$.each(events,function(i,evnt){
|
var doneEventArray = new Array();
|
||||||
|
var makerow = function(events){
|
||||||
|
var $eventrow =null;
|
||||||
|
var currow = 0;
|
||||||
|
var curdate = 0;
|
||||||
|
var allow = false;
|
||||||
|
var curparent = null;
|
||||||
|
var lastno = 0;
|
||||||
|
var indexcount = events.length;
|
||||||
|
$.each(events,function(i,evnt){
|
||||||
|
indexcount++;
|
||||||
|
if($.inArray(evnt.index,doneEventArray) == -1){
|
||||||
|
|
||||||
var daydom = $("#calendar_month td[date="+evnt.start_date+"]");
|
var daydom = $("#calendar_month td[date="+evnt.start_date+"]");
|
||||||
var curparent = daydom.parent().parent().parent();
|
var thisparent = daydom.parent().parent().parent();
|
||||||
var thisrow = curparent.attr("row");
|
var thisrow = thisparent.attr("row");
|
||||||
var pos = daydom.attr("position");
|
var pos = parseInt(daydom.attr("position"));
|
||||||
var thisno = daydom.attr("no");
|
var thisno = daydom.attr("no");
|
||||||
|
if(thisrow != currow){
|
||||||
|
if(curparent){
|
||||||
|
curparent.append($eventrow);
|
||||||
|
}
|
||||||
|
$eventrow = null;
|
||||||
|
$eventrow = $("<tr class='event_row'></tr>");
|
||||||
|
allow = true;
|
||||||
|
}else if(evnt.start_date > curdate){
|
||||||
|
allow = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
var recordcurdate = true;
|
||||||
|
|
||||||
var index = "new";
|
if(allow){
|
||||||
var smallcount = 0;
|
if(pos == 1){
|
||||||
|
var colspan = 0;
|
||||||
for(x in nos){
|
if(evnt.total_days>7){
|
||||||
if(thisno > nos[x]){
|
colspan = 7;
|
||||||
smallcount++;
|
var totaldays = parseInt(evnt.total_days) - colspan;
|
||||||
}
|
var stardate = parseInt(evnt.start_date) + colspan;
|
||||||
if(smallcount > 0){
|
var index = i + 1;
|
||||||
index = x;
|
var tempArray = {"index":indexcount,"id":evnt.id,"start_date":stardate,"total_days":totaldays,"title":evnt.title,"color":evnt.color,"show_link":evnt.show_link};
|
||||||
break;
|
events.splice(index,0,tempArray);
|
||||||
}
|
//recordcurdate = false;
|
||||||
}
|
}else{
|
||||||
if(index == "new"){
|
colspan = evnt.total_days;
|
||||||
nos=[]
|
|
||||||
$eventrow = null;
|
|
||||||
$eventrow = $("<tr></tr>");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(thisrow!=currow){
|
|
||||||
$eventrow = null;
|
|
||||||
$eventrow = $("<tr></tr>");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if(index!="new"){
|
|
||||||
nos[index] = (parseInt(thisno) + parseInt(evnt.total_days)) - 1;
|
|
||||||
}else{
|
|
||||||
nos.push((parseInt(thisno) + parseInt(evnt.total_days)) - 1);
|
|
||||||
}
|
|
||||||
if(pos == 1){
|
|
||||||
$eventrow.html('<td colspan="'+evnt.total_days+'" class="main_td" pos="'+pos+'"><div class="event" link="'+evnt.show_link+'" style="background-color: '+evnt.color+';">'+evnt.title+'</div></td>');
|
|
||||||
}else{
|
|
||||||
if($eventrow.html()==""){
|
|
||||||
$eventrow.append('<td colspan="'+(pos-1)+'">');
|
|
||||||
}else{
|
|
||||||
if((lastno+1)!=thisno){
|
|
||||||
var inposition = $eventrow.find("td.main_td").attr("pos");
|
|
||||||
var colspan = parseInt(pos) - parseInt(inposition);
|
|
||||||
colspan--;
|
|
||||||
$eventrow.append('<td colspan="'+colspan+'">');
|
|
||||||
}
|
}
|
||||||
|
$eventrow.html('<td colspan="'+colspan+'" class="main_td" pos="'+pos+'"><div class="event" link="'+evnt.show_link+'" style="background-color: '+evnt.color+';">'+evnt.title+'</div></td>');
|
||||||
|
}else{
|
||||||
|
if($eventrow.html()==""){
|
||||||
|
$eventrow.append('<td colspan="'+(pos-1)+'">');
|
||||||
|
}else{
|
||||||
|
if((lastno+1)!=thisno){
|
||||||
|
var inposition = parseInt($eventrow.find("td.main_td:last").attr("pos"));
|
||||||
|
var curcolspan = $eventrow.find("td.main_td:last").attr("colspan");
|
||||||
|
var colspan = pos - (inposition+parseInt(curcolspan));
|
||||||
|
$eventrow.append('<td colspan="'+colspan+'">');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var colspan = 0;
|
||||||
|
if((pos + parseInt(evnt.total_days))-1 > 7){
|
||||||
|
colspan = 7-(pos-1);
|
||||||
|
var totaldays = parseInt(evnt.total_days) - colspan;
|
||||||
|
var stardate = parseInt(evnt.start_date) + colspan;
|
||||||
|
|
||||||
|
var index = i + 1;
|
||||||
|
var tempArray = {"index":indexcount,"id":evnt.id,"start_date":stardate,"total_days":totaldays,"title":evnt.title,"color":evnt.color,"show_link":evnt.show_link};
|
||||||
|
events.splice(index,0,tempArray);
|
||||||
|
// recordcurdate = false;
|
||||||
|
|
||||||
|
}else{
|
||||||
|
colspan = evnt.total_days;
|
||||||
|
}
|
||||||
|
// if(evnt.title == "Again")
|
||||||
|
// console.log(colspan);
|
||||||
|
$eventrow.append('<td colspan="'+colspan+'" class="main_td" pos="'+pos+'"><div link="'+evnt.show_link+'" class="event" style="background-color: '+evnt.color+';">'+evnt.title+'</div></td>');
|
||||||
}
|
}
|
||||||
$eventrow.append('<td colspan="'+evnt.total_days+'" class="main_td" pos="'+pos+'"><div link="'+evnt.show_link+'" class="event" style="background-color: '+evnt.color+';">'+evnt.title+'</div></td>');
|
lastno = (parseInt(thisno) + parseInt(evnt.total_days)) - 1;
|
||||||
|
currow = thisrow;
|
||||||
|
curdate =(evnt.start_date + evnt.total_days) - 1;
|
||||||
|
allow = false;
|
||||||
|
curparent = thisparent;
|
||||||
|
if(recordcurdate)
|
||||||
|
doneEventArray.push(evnt.index);
|
||||||
|
|
||||||
}
|
}
|
||||||
lastno = (parseInt(thisno) + parseInt(evnt.total_days)) - 1;
|
}
|
||||||
currow = thisrow;
|
|
||||||
curparent.append($eventrow);
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
if(curparent){
|
||||||
|
curparent.append($eventrow);
|
||||||
|
}
|
||||||
|
if(events.length != doneEventArray.length){
|
||||||
|
makerow(events);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.loadWeekView = function(){
|
this.loadWeekView = function(){
|
||||||
$('#view_holder').load("cals/week_view", function() {
|
$('#view_holder').load("cals/week_view", function() {
|
||||||
$('.current_day_title').text('September 2 - 8, 2012');
|
$('.current_day_title').text('September 2 - 8, 2012');
|
||||||
|
|
|
@ -58,17 +58,19 @@ class Panel::Calendar::BackEnd::CalsController < OrbitBackendController
|
||||||
def get_events
|
def get_events
|
||||||
month = params[:month]
|
month = params[:month]
|
||||||
year = params[:year]
|
year = params[:year]
|
||||||
events = Event.where(:start_month => month).and(:start_year => year).asc(:start_date)
|
month = month.to_i
|
||||||
|
year = year.to_i
|
||||||
|
events = Event.where(:start_month => month).and(:start_year => year).asc(:start_date).desc(:total_days)
|
||||||
@events = Array.new
|
@events = Array.new
|
||||||
events.each do |event|
|
events.each_with_index do |event,i|
|
||||||
# @temp = Array.new
|
# @temp = Array.new
|
||||||
no_of_days = Date.new(event.end_year,event.end_month,event.end_date) - Date.new(event.start_year,event.start_month,event.start_date)
|
no_of_days = event.total_days
|
||||||
no_of_days = no_of_days.to_i
|
no_of_days = no_of_days.to_i
|
||||||
no_of_days += 1
|
no_of_days += 1
|
||||||
color = Cal.find(event.cal_id).color
|
color = Cal.find(event.cal_id).color
|
||||||
@events << {"start_date"=>event.start_date, "total_days" => no_of_days, "title" => event.title,"color"=>color,"show_link"=>panel_calendar_back_end_event_path(event)}
|
@events << {"id"=>event.id,"index"=>i,"start_date"=>event.start_date, "total_days" => no_of_days, "title" => event.title,"color"=>color,"show_link"=>panel_calendar_back_end_event_path(event)}
|
||||||
end
|
end
|
||||||
@events = @events.sort{|k,v| v[:total_days] <=> k[:total_days]}
|
|
||||||
render :json => @events.to_json
|
render :json => @events.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,9 @@ class Panel::Calendar::BackEnd::EventsController < OrbitBackendController
|
||||||
temp = $start.split("/")
|
temp = $start.split("/")
|
||||||
start_date = temp[0]
|
start_date = temp[0]
|
||||||
start_month = temp[1]
|
start_month = temp[1]
|
||||||
star_year = temp[2]
|
start_year = temp[2]
|
||||||
|
@m = start_month
|
||||||
|
@y = start_year
|
||||||
temp = $end.split("/")
|
temp = $end.split("/")
|
||||||
end_date = temp[0]
|
end_date = temp[0]
|
||||||
end_month = temp[1]
|
end_month = temp[1]
|
||||||
|
@ -35,10 +36,20 @@ class Panel::Calendar::BackEnd::EventsController < OrbitBackendController
|
||||||
|
|
||||||
cal_id = params[:event][:cal_id]
|
cal_id = params[:event][:cal_id]
|
||||||
|
|
||||||
|
# if start_am_pm == "PM"
|
||||||
|
# temp_start_time = $starttime + 12
|
||||||
|
# end
|
||||||
|
# if end_am_pm == "PM"
|
||||||
|
# temp_end_time = $endtime + 12
|
||||||
|
# end
|
||||||
|
|
||||||
|
final_start_time = Date.new(start_year.to_i,start_month.to_i,start_date.to_i)
|
||||||
|
final_end_time = Date.new(end_year.to_i,end_month.to_i,end_date.to_i)
|
||||||
|
total_days = final_end_time - final_start_time
|
||||||
@event = Event.new
|
@event = Event.new
|
||||||
@event.title = title
|
@event.title = title
|
||||||
@event.note = note
|
@event.note = note
|
||||||
@event.start_year = star_year
|
@event.start_year = start_year
|
||||||
@event.end_year = end_year
|
@event.end_year = end_year
|
||||||
@event.start_month = start_month
|
@event.start_month = start_month
|
||||||
@event.end_month = end_month
|
@event.end_month = end_month
|
||||||
|
@ -49,6 +60,9 @@ class Panel::Calendar::BackEnd::EventsController < OrbitBackendController
|
||||||
@event.end_time = $endtime
|
@event.end_time = $endtime
|
||||||
@event.end_am_pm = end_am_pm
|
@event.end_am_pm = end_am_pm
|
||||||
@event.cal_id = cal_id
|
@event.cal_id = cal_id
|
||||||
|
@event.final_start_time = final_start_time
|
||||||
|
@event.final_end_time = final_end_time
|
||||||
|
@event.total_days = total_days
|
||||||
@event.save!
|
@event.save!
|
||||||
|
|
||||||
respond_to do |h|
|
respond_to do |h|
|
||||||
|
|
|
@ -14,6 +14,9 @@ class Event
|
||||||
field :start_am_pm
|
field :start_am_pm
|
||||||
field :end_time, type: Float
|
field :end_time, type: Float
|
||||||
field :end_am_pm
|
field :end_am_pm
|
||||||
|
field :final_start_time, type: Date
|
||||||
|
field :final_end_time, type: Date
|
||||||
|
field :total_days, type: Integer
|
||||||
|
|
||||||
belongs_to :cal
|
belongs_to :cal
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
$("#event_create").empty().hide();
|
$("#event_create").empty().hide();
|
||||||
$("#create_event_btn").removeClass("active");
|
$("#create_event_btn").removeClass("active");
|
||||||
|
$("#calendar_month tr.event_row").remove();
|
||||||
|
calendar.getEvents(<%= @m %>,<%= @y %>);
|
|
@ -1,3 +1,4 @@
|
||||||
zh_tw:
|
zh_tw:
|
||||||
calendar:
|
calendar:
|
||||||
calendars: Calendars
|
calendars: Calendars
|
||||||
|
create: Create
|
|
@ -7,7 +7,20 @@ class Panel::Gprs::BackEnd::LocationsController < OrbitBackendController
|
||||||
def create
|
def create
|
||||||
debugger
|
debugger
|
||||||
@newlocation = Location.new(params[:location])
|
@newlocation = Location.new(params[:location])
|
||||||
render :json => {"success"=>"true"}.to_json
|
@newlocation.save!
|
||||||
|
render :action => "index"
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_locations
|
||||||
|
locations = Location.all
|
||||||
|
@data = Array.new
|
||||||
|
|
||||||
|
locations.each do |location|
|
||||||
|
picurl = "http://"+request.host + location.file.url
|
||||||
|
thumburl = "http://"+request.host + location.file.thumb.url
|
||||||
|
@data << {"name"=>location.name,"pic_url"=>picurl,"thumb_url"=>thumburl,"description"=>location.description}
|
||||||
|
end
|
||||||
|
render :json => @data.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,9 @@ Rails.application.routes.draw do
|
||||||
namespace :gprs do
|
namespace :gprs do
|
||||||
namespace :back_end do
|
namespace :back_end do
|
||||||
|
|
||||||
resources :locations
|
match "locations/get_locations" => "locations#get_locations"
|
||||||
|
|
||||||
|
resources :locations
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Reference in New Issue