如何在完整日历的同一单元格中赋予多种颜色?

Posted

技术标签:

【中文标题】如何在完整日历的同一单元格中赋予多种颜色?【英文标题】:how to give multiple colors in the same cell in a full calendar? 【发布时间】:2015-08-30 12:29:09 【问题描述】:

我想创建一个活动日历。楼上楼下有两个大厅。功能应分为上午或下午。楼上上午、楼上下午、楼下上午和楼下下午总共有 4 种不同的颜色。

我想将日历单元格分成四个并为它们分配不同的颜色。我只能检索一种颜色。我正在使用 php codeigniter 框架。我不擅长css样式如果有人可以给我一个想法,如果这将是一个很大的帮助。提前致谢。

应该是这样的

我现在的输出是这样的

以下是我用来生成日历的脚本

<script>
    $(document).ready(function() 
        var selected_date;

        var holiday_list =<?php echo json_encode($calendar_results); ?>;

        var events = []; //The events array

        $.each(holiday_list, function(key, value) 
            events.push(               
                title:value.type, //get the type(am or pm)
                start: value.date_cal,  //date of the calendar           
            );
        );

        /* initialize the calendar
         -----------------------------------------------------------------*/

        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();

        var calendar = $('#calendar').fullCalendar(
            header: 
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            ,
            isRTL: $('body').hasClass('rtl'), //rtl support for calendar
            selectable: true,
            selectHelper: true,
            select: function(start, end, allDay) 

                selected_date = new Date(start);
                selected_date = $.fullCalendar.formatDate(selected_date, 'yyyy-MM-dd');

            ,
            editable: true,
            droppable: false, // this allows things to be dropped onto the calendar !!!
            drop: function(date, allDay)  // this function is called when something is dropped

            ,
            buttonText: 
                prev: '<i class="fa fa-chevron-left"></i>',
                next: '<i class="fa fa-chevron-right"></i>'
            ,
            eventLimit: true,
            events: events

        );


    );
</script>

型号

function get_all_reservations_for_calendar()
        $this->db->select('reservations.date_cal,reservations.type,reservations.title,reservations.description');
        $this->db->from('reservations');
        $this->db->where('is_deleted', '0');
        $query = $this->db->get();
        return $query->result();
    

控制器

function index() 
        $reservation_service        = new Reservation_service();
        $output['calendar_results'] = $reservation_service->get_all_reservations_for_calendar();
        $partials                   = array('content' => 'dashboard/dashboard_view');
        $this->template->load('template/main_template', $partials, $output);
    

【问题讨论】:

它似乎没有一个简单的选项来定制你想要的方式。我能想到的唯一方法是创建一个custom view。您可能需要自定义 DayGrid @code-jaff 是的。我认为我们不能分割细胞。但可以改变颜色 【参考方案1】:

我自己找到了一种提供多种颜色的方法。但不能分裂细胞。我发布它是假设当他们需要类似的东西时它会帮助其他人。我只更改了脚本

<script>
    $(document).ready(function() 
        var selected_date;

        var holiday_list =<?php echo json_encode($calendar_results); ?>;        
        var downHall=[];
        var upHall=[];
        var events = []; //The events array

        $.each(holiday_list, function(key, value) 
            events.push(
                title: value.type + value.title, //get the type(am or pm)
                start: value.date_cal, //date of the calendar           
            );            

        if(value.title ==='Royal Princess Ballroom (Downstairs)' && value.type ==='am')
                downHall.push(
                    title: value.title + ' (' + value.type + ')' , //get the type(am or pm)
                    start: value.date_cal, //date of the calendar  
                    color:'#FFFF00',
                    textColor:'#000603',
                );
            else if(value.title ==='Royal Princess Ballroom (Downstairs)' && value.type ==='pm')
                downHall.push(
                    title: value.title + ' (' + value.type + ')' , //get the type(am or pm)
                    start: value.date_cal, //date of the calendar  
                    color:'#FE642E',
                    textColor:'#000603',
                );
            
            else if(value.title ==='Grand Kings Ballroom (Upstairs)' && value.type ==='pm')
                upHall.push(
                    title: value.title + ' (' + value.type + ')' , //get the type(am or pm)
                    start: value.date_cal, //date of the calendar  
                    color:'#9FF781',
                    textColor:'#000603',

                );
            else
                upHall.push(
                    title: value.title + ' (' + value.type + ')' , //get the type(am or pm)
                    start: value.date_cal, //date of the calendar  
                    color:'#31B404',
                    textColor:'#000603',
                );
                        

        );
        /* initialize the calendar
         -----------------------------------------------------------------*/

        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();

        var calendar = $('#calendar').fullCalendar(
            header: 
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            ,
            isRTL: $('body').hasClass('rtl'), //rtl support for calendar
            selectable: true,
            selectHelper: true,
            select: function(start, end, allDay) 

                selected_date = new Date(start);
                selected_date = $.fullCalendar.formatDate(selected_date, 'yyyy-MM-dd');

            ,
            editable: true,
            droppable: false, // this allows things to be dropped onto the calendar !!!
            drop: function(date, allDay)  // this function is called when something is dropped

            ,
            buttonText: 
                prev: '<i class="fa fa-chevron-left"></i>',
                next: '<i class="fa fa-chevron-right"></i>'
            ,
            eventLimit: true,           
            events: downHall.concat(upHall),                   

        );


    );


</script>

我的输出

希望这会帮助那些与我一样挣扎的人。

【讨论】:

以上是关于如何在完整日历的同一单元格中赋予多种颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如果单元格中的计算值发生变化,则更改单元格颜色

C#/VB.NET 在Excel单元格中应用多种字体格式

为啥我的日历图标没有出现在表格单元格中?

[C#]如何在winform的矩阵单元格中填充颜色?

Java 在Excel单元格中应用一种/多种字体样式

在iOS中选择单元格时如何以编程方式更改原型单元格中的标签文本颜色和图像