javascript - Jquery FullCalendar,在输出中显示周数和天数名称

标签 javascript jquery fullcalendar

我有一个 Jquery FullCalendar。我能够从 json 中获取值的行和列的总值。我想将周数添加到行输出,将日期名称添加到列输出

For eg:- This is my row output values 950 500 550 200 and these are my column output values 700 300 300 200 250 200 250

Fiddle到现在为止的工作!!

我希望生成如下输出:-

For Row Values (W 44)950, (W 45)500, (W 46)550, (W 47)200 Total:(2200) and for column values something like this (Sun)700 (Mon)300 (Tue)300 (Wed)200 (Thu)250 (Fri)200 (Sat)250

完整代码:-

var baseEvent;

var $calendar = $('#calendar').fullCalendar({
 weekNumbers: true,
header: {
    left: 'prev,next today',
    center: 'title',
    right: 'month,agendaWeek,agendaDay'
},
editable: true,
selectable: true,
selectHelper: true,
eventRender: eventRenderCallback,
viewRender: viewRenderCallback,
eventAfterAllRender: eventAfterAllRenderCallback,
defaultView: 'month',
events: [
    {"title":"500","start":"Oct 1 2015"},   
    {"title":"50","start":"Oct 2 2015"},
    {"title":"500","start":"Oct 3 2015"},   
    {"title":"50","start":"Oct 4 2015"},
    {"title":"500","start":"Oct 6 2015"},   
    {"title":"50","start":"Oct 7 2015"},
    {"title":"500","start":"Oct 8 2015"},   
    {"title":"50","start":"Oct 9 2015"},
    {"title":"500","start":"Oct 10 2015"},   
    {"title":"50","start":"Oct 11 2015"},
    {"title":"500","start":"Oct 12 2015"},   
    {"title":"50","start":"Oct 13 2015"},
    {"title":"500","start":"Oct 14 2015"},   
    {"title":"50","start":"Oct 15 2015"},
    {"title":"500","start":"Oct 16 2015"},   
    {"title":"50","start":"Oct 17 2015"},
    {"title":"500","start":"Nov 1 2015"},   
    {"title":"50","start":"Nov 2 2015"},
    {"title":"100","start":"Nov 3 2015"},   
    {"title":"50","start":"Nov 4 2015"},
    {"title":"100","start":"Nov 5 2015"},   
    {"title":"50","start":"Nov 6 2015"},
    {"title":"100","start":"Nov 7 2015"},   
    {"title":"50","start":"Nov 8 2015"},
    {"title":"100","start":"Nov 9 2015"},   
    {"title":"50","start":"Nov 10 2015"},
    {"title":"100","start":"Nov 11 2015"},   
    {"title":"50","start":"Nov 12 2015"},
    {"title":"100","start":"Nov 13 2015"},   
    {"title":"50","start":"Nov 14 2015"},
    {"title":"100","start":"Nov 15 2015"},   
    {"title":"50","start":"Nov 16 2015"},
    {"title":"100","start":"Nov 17 2015"},   
    {"title":"50","start":"Nov 18 2015"},
    {"title":"100","start":"Nov 19 2015"},   
    {"title":"50","start":"Nov 20 2015"},
    {"title":"100","start":"Nov 21 2015"},   
    {"title":"50","start":"Nov 22 2015"},
    {"title":"100","start":"Nov 23 2015"},   
    {"title":"50","start":"Nov 24 2015"},

    {"title":"500","start":"Dec 1 2015"},   
    {"title":"50","start":"Dec 2 2015"}

]
});

var rowTotals = [];
var columnTotals = [];
var offset = 0;

function eventRenderCallback(event,element){
var viewDateMonth = $('#calendar').fullCalendar('getDate').getMonth();
if(event.start.getMonth() == viewDateMonth){
    addToDateArray(event.start.getDate(), parseInt(event.title));
}
}

function eventAfterAllRenderCallback(view){
var total = 0;
for (var i = 0; i < 6; i++){
    total += rowTotals[i];
    var label = $("#rows label:nth-child(" + (i+1) + ")");
    label.html(rowTotals[i]);     
}

for (var i = 0; i < 7; i++){
    var label = $("#cols label:nth-child(" + (i+1) + ")");
    label.html(columnTotals[i]);     
}

$("#total").html("("+total+")");
}

function viewRenderCallback(view,element){
offset = $("tr.fc-week.fc-first td.fc-other-month").length;
rowTotals = [0,0,0,0,0,0];
columnTotals = [0,0,0,0,0,0,0];

if(view.name == "agendaDay"){
    $("#rows label").show();
    $("#cols label").hide();
    $("#cols label:nth-child(" + (view.start.getDay()+1) + ")").show();
}else if(view.name == "agendaWeek"){
    $("#cols label").show();
    $("#rows label").hide();
    var row = Math.floor((view.start.getDate() + offset - 1) / 7);
    $("#rows label:nth-child(" + (row+1) + ")").show();
}else {
    $("#cols label").show();
    $("#rows label").show();
}
}                   

function addToDateArray(date,num){
var pos = date + offset;
var row = Math.floor((pos - 1) / 7);
var col = (pos - 1) % 7

rowTotals[row] += num;
columnTotals[col] += num;
}

请编辑 fiddle 以获取任何解决方案。谢谢!!!

最佳答案

由于您在 fullcalendar 中使用 weekNumbers 选项,因此它会为您计算周数。分数!它们可以使用 $(".fc-week-number div") 从 dom 中检索。您可以使用简单的日期名称索引数组来获取日期。

Fiddle

function eventAfterAllRenderCallback(view){
    var total = 0;
    for (var i = 0; i < 6; i++){
        total += rowTotals[i];
        var label = $("#rows label:nth-child(" + (i+1) + ")");
        var week = $(".fc-week-number div").eq(i).html();
        label.html("(W"+(week)+") " + rowTotals[i]);     
    }

    var dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat'];
    for (var i = 0; i < 7; i++){
        var label = $("#cols label:nth-child(" + (i+1) + ")");
        label.html("(" + dayNames[i] + ") " + columnTotals[i]);     
    }

    $("#total").html("("+total+")");
}

关于javascript - Jquery FullCalendar,在输出中显示周数和天数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33972456/

相关文章:

javascript - jQuery 每个元素的子元素

jquery - 复制 HTML 并保留事件

jquery - 带有可导出日历的 Rails 3 应用程序

javascript - Bug Bootstrap 4 和 fullcalendar.js - bootstrap 4 模式中的 fullcalendar

javascript - 这是第一个选项上的 jQuery 错误吗?

javascript - 去掉一个数中的小数

javascript - 为什么 Google Chrome 的脚本调试器不让我设置断点?

javascript - 全局变量不能在 Angular.foreach 中使用

javascript - 如何在移动设备和桌面上使用媒体查询?

reactjs - 在 FullCalendar 中自定义 Day Cell 内容