diff --git a/app/assets/javascripts/calendar_widget.js b/app/assets/javascripts/calendar_widget.js
index f663bb7..b79fcd9 100644
--- a/app/assets/javascripts/calendar_widget.js
+++ b/app/assets/javascripts/calendar_widget.js
@@ -10,6 +10,8 @@
fetchInterval = null,
month = date.getMonth(),
year = date.getFullYear(),
+ first_target_day = new Date(year,month,1),
+ last_target_day = new Date(year,month+1,0),
firstDay = new Date(year,month,1),
lastDay = new Date(year,month+1,0),
today = date.getDate(),
@@ -40,12 +42,12 @@
}
function lighten_color(my_hex,percent){
if (my_hex[0] == '#'){
- my_hex = my_hex.slice(1,-1)
+ my_hex = my_hex.slice(1)
}
var comp = ''
var rgb = []
var batch_size = Math.ceil(my_hex.length/3)
- for (i=0;i<3;i++){
+ for (var i=0;i<3;i++){
rgb.push(my_hex.slice(batch_size*i,batch_size*(i+1)))
}
$.each(rgb,function(){
@@ -55,7 +57,7 @@
if (tmp>255) tmp = 255
if (tmp < 0) tmp = 0
tmp = tmp.toString(16)
- for (i=0;i<2-tmp.length;i++){
+ for (var i=0;i<2-tmp.length;i++){
tmp = '0' + tmp
}
comp = comp + tmp
@@ -222,6 +224,7 @@
var first_line_first_date = first_line_first_day.getDate()
var first_line_first_month = first_line_first_day.getMonth()
var first_line_first_year = first_line_first_day.getFullYear()
+ first_target_day = new Date(first_line_first_year,first_line_first_month,first_line_first_date)
for(var i = 0;i < 7;i++){
var td = $("
| ");
if(i >= firstDay.getDay()){
@@ -258,6 +261,7 @@
next_month = 0;
next_year = next_year + 1;
}
+ last_target_day = new Date(next_year,next_month,6-lastDay.getDay())
for(var i = 0;i < 7;i++){
var td = $(" | ");
if(i <= lastDay.getDay()){
@@ -303,10 +307,11 @@
}
var fetchEvents = function(){
var usd = Math.round(firstDay/1000),
- ued = Math.round(lastDay/1000);
+ usd_target = Math.round(first_target_day/1000),
+ ued_target = Math.round(last_target_day/1000);
$.ajax({
url : "/xhr/calendars/agenda",
- data : {"unix_start" : usd, "unix_end" : ued, "subpart_id" : subpartid, "locale" : $('html').attr('lang')},
+ data : {"month_start" : usd,"unix_start" : usd_target, "unix_end" : ued_target, "subpart_id" : subpartid, "locale" : $('html').attr('lang')},
dataType : "json",
type : "get"
}).done(function(data){
@@ -369,9 +374,9 @@
})
var clicked_color = dom.find('.w-calendar-event').css('background-color')
if (clicked_color){
- clicked_color = lighten_color(rgb2hex(clicked_color),-20)
+ clicked_color = lighten_color(rgb2hex(clicked_color),-35)
if (clicked_color!='#000000'){
- dom.find('table').append($(''))
+ dom.find('table').append($(''))
}
}
monthDom.find("i.loading").addClass("hide");
@@ -402,14 +407,20 @@
lastDay = new Date(year,month+1,0);
today = (initialDate.getMonth() == month && initialDate.getFullYear() == year ? initialDate.getDate() : 0);
last_inserted_date = 1;
- renderMonth();
- dom.find("table.w-calendar-table tbody").html(monthDom.find("tbody").html());
+ var toggle_type,ele;
if (toggle_data && toggle_flag){
- toggle_event(dom.find('td[data-date-node="'+toggle_data+'"]'),'show')
+ ele = dom.find('td[data-date-node="'+toggle_data+'"]')
+ toggle_type = (ele.hasClass('w-calendar-event') ? 'show' : 'hide')
}else{
toggle_data = undefined
}
- fetchInterval = setTimeout(fetchEvents,1000);
+ renderMonth();
+ dom.find("table.w-calendar-table tbody").html(monthDom.find("tbody").html());
+ if (ele){
+ ele = dom.find('td[data-date-node="'+toggle_data+'"]')
+ toggle_event(ele,toggle_type)
+ }
+ fetchInterval = setTimeout(fetchEvents,300);
}
nextMonthFunc = this.nextMonth;
this.prevMonth = function(toggle_flag){
@@ -424,14 +435,20 @@
lastDay = new Date(year,month+1,0);
today = (initialDate.getMonth() == month && initialDate.getFullYear() == year ? initialDate.getDate() : 0);
last_inserted_date = 1;
- renderMonth();
- dom.find("table.w-calendar-table tbody").html(monthDom.find("tbody").html());
+ var toggle_type,ele;
if (toggle_data && toggle_flag){
- toggle_event(dom.find('td[data-date-node="'+toggle_data+'"]'),'show')
+ ele = dom.find('td[data-date-node="'+toggle_data+'"]')
+ toggle_type = (ele.hasClass('w-calendar-event') ? 'show' : 'hide')
}else{
toggle_data = undefined
}
- fetchInterval = setTimeout(fetchEvents,1000);
+ renderMonth();
+ dom.find("table.w-calendar-table tbody").html(monthDom.find("tbody").html());
+ if (ele){
+ ele = dom.find('td[data-date-node="'+toggle_data+'"]')
+ toggle_event(ele,toggle_type)
+ }
+ fetchInterval = setTimeout(fetchEvents,300);
}
prevMonthFunc = this.prevMonth;
}
\ No newline at end of file
diff --git a/app/assets/javascripts/calendar_widget2.js b/app/assets/javascripts/calendar_widget2.js
index f663bb7..eb65861 100644
--- a/app/assets/javascripts/calendar_widget2.js
+++ b/app/assets/javascripts/calendar_widget2.js
@@ -10,6 +10,8 @@
fetchInterval = null,
month = date.getMonth(),
year = date.getFullYear(),
+ first_target_day = new Date(year,month,1),
+ last_target_day = new Date(year,month+1,0),
firstDay = new Date(year,month,1),
lastDay = new Date(year,month+1,0),
today = date.getDate(),
@@ -40,12 +42,12 @@
}
function lighten_color(my_hex,percent){
if (my_hex[0] == '#'){
- my_hex = my_hex.slice(1,-1)
+ my_hex = my_hex.slice(1)
}
var comp = ''
var rgb = []
var batch_size = Math.ceil(my_hex.length/3)
- for (i=0;i<3;i++){
+ for (var i=0;i<3;i++){
rgb.push(my_hex.slice(batch_size*i,batch_size*(i+1)))
}
$.each(rgb,function(){
@@ -55,7 +57,7 @@
if (tmp>255) tmp = 255
if (tmp < 0) tmp = 0
tmp = tmp.toString(16)
- for (i=0;i<2-tmp.length;i++){
+ for (var i=0;i<2-tmp.length;i++){
tmp = '0' + tmp
}
comp = comp + tmp
@@ -222,6 +224,7 @@
var first_line_first_date = first_line_first_day.getDate()
var first_line_first_month = first_line_first_day.getMonth()
var first_line_first_year = first_line_first_day.getFullYear()
+ first_target_day = new Date(first_line_first_year,first_line_first_month,first_line_first_date)
for(var i = 0;i < 7;i++){
var td = $(" | ");
if(i >= firstDay.getDay()){
@@ -258,6 +261,7 @@
next_month = 0;
next_year = next_year + 1;
}
+ last_target_day = new Date(next_year,next_month,6-lastDay.getDay())
for(var i = 0;i < 7;i++){
var td = $(" | ");
if(i <= lastDay.getDay()){
@@ -303,10 +307,11 @@
}
var fetchEvents = function(){
var usd = Math.round(firstDay/1000),
- ued = Math.round(lastDay/1000);
+ usd_target = Math.round(first_target_day/1000),
+ ued_target = Math.round(last_target_day/1000);
$.ajax({
url : "/xhr/calendars/agenda",
- data : {"unix_start" : usd, "unix_end" : ued, "subpart_id" : subpartid, "locale" : $('html').attr('lang')},
+ data : {"month_start" : usd,"unix_start" : usd_target, "unix_end" : ued_target, "subpart_id" : subpartid, "locale" : $('html').attr('lang')},
dataType : "json",
type : "get"
}).done(function(data){
@@ -369,9 +374,9 @@
})
var clicked_color = dom.find('.w-calendar-event').css('background-color')
if (clicked_color){
- clicked_color = lighten_color(rgb2hex(clicked_color),-20)
+ clicked_color = lighten_color(rgb2hex(clicked_color),-35)
if (clicked_color!='#000000'){
- dom.find('table').append($(''))
+ dom.find('table').append($(''))
}
}
monthDom.find("i.loading").addClass("hide");
@@ -402,14 +407,20 @@
lastDay = new Date(year,month+1,0);
today = (initialDate.getMonth() == month && initialDate.getFullYear() == year ? initialDate.getDate() : 0);
last_inserted_date = 1;
- renderMonth();
- dom.find("table.w-calendar-table tbody").html(monthDom.find("tbody").html());
+ var toggle_type,ele;
if (toggle_data && toggle_flag){
- toggle_event(dom.find('td[data-date-node="'+toggle_data+'"]'),'show')
+ ele = dom.find('td[data-date-node="'+toggle_data+'"]')
+ toggle_type = (ele.hasClass('w-calendar-event') ? 'show' : 'hide')
}else{
toggle_data = undefined
}
- fetchInterval = setTimeout(fetchEvents,1000);
+ renderMonth();
+ dom.find("table.w-calendar-table tbody").html(monthDom.find("tbody").html());
+ if (ele){
+ ele = dom.find('td[data-date-node="'+toggle_data+'"]')
+ toggle_event(ele,toggle_type)
+ }
+ fetchInterval = setTimeout(fetchEvents,300);
}
nextMonthFunc = this.nextMonth;
this.prevMonth = function(toggle_flag){
@@ -424,14 +435,20 @@
lastDay = new Date(year,month+1,0);
today = (initialDate.getMonth() == month && initialDate.getFullYear() == year ? initialDate.getDate() : 0);
last_inserted_date = 1;
- renderMonth();
- dom.find("table.w-calendar-table tbody").html(monthDom.find("tbody").html());
+ var toggle_type,ele;
if (toggle_data && toggle_flag){
- toggle_event(dom.find('td[data-date-node="'+toggle_data+'"]'),'show')
+ ele = dom.find('td[data-date-node="'+toggle_data+'"]')
+ toggle_type = (ele.hasClass('w-calendar-event') ? 'show' : 'hide')
}else{
toggle_data = undefined
}
- fetchInterval = setTimeout(fetchEvents,1000);
+ renderMonth();
+ dom.find("table.w-calendar-table tbody").html(monthDom.find("tbody").html());
+ if (ele){
+ ele = dom.find('td[data-date-node="'+toggle_data+'"]')
+ toggle_event(ele,toggle_type)
+ }
+ fetchInterval = setTimeout(fetchEvents,300);
}
prevMonthFunc = this.prevMonth;
}
\ No newline at end of file
diff --git a/app/assets/stylesheets/calendar_widget1.css b/app/assets/stylesheets/calendar_widget1.css
index 9fb5796..41fca23 100644
--- a/app/assets/stylesheets/calendar_widget1.css
+++ b/app/assets/stylesheets/calendar_widget1.css
@@ -95,4 +95,21 @@ a.event-container{
}
.widget-calendar-1 td{
cursor: pointer;
+}
+.widget-calendar-1 .w-calendar-table td div {
+ width: 3em;
+ height: 3em;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+}
+.widget-calendar-1 .w-calendar-table td:hover {
+ background: #eaeaea;
+ color: black;
+}
+.widget-calendar-1 .w-calendar-table .w-calendar-event {
+ background: #444444;
+}
+.widget-calendar-1 table td.w-calendar-other-month {
+ color: #999797;
}
\ No newline at end of file
diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb
index 19d9dac..0e58593 100644
--- a/app/controllers/calendars_controller.rb
+++ b/app/controllers/calendars_controller.rb
@@ -66,7 +66,7 @@ class CalendarsController < ApplicationController
events = Event.agenda_events(agenda_start,agenda_end)
end
end
- render json: {"events" => events,"calendar_title"=>get_calendar_title(Time.at(params[:unix_start].to_i))}.to_json({"frontend" => true})
+ render json: {"events" => events,"calendar_title"=>get_calendar_title(Time.at(params[:month_start].to_i))}.to_json({"frontend" => true})
end
end
def get_calendar_title(now_date=nil)
diff --git a/app/models/event.rb b/app/models/event.rb
index debe478..6da5f2c 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -155,7 +155,7 @@ class Event
end
when "Weekly"
@start_date = re.start
- @end_date = re.end
+ @edn_date = re.end
@i = TimeDifference.between(re.start.to_date,end_date.to_date).in_weeks.to_i
(1..@i).each do |i|
@start_date += (7*re.frequency.to_i)