Гость
Форумы / SharePoint [игнор отключен] [закрыт для гостей] / 2013 события с иконками в календаре / 2 сообщений из 2, страница 1 из 1
14.07.2017, 11:27
    #39488934
l_kator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2013 события с иконками в календаре
Стоит задача в зависимости от категории события в календаре отображать его заданным цветом и с сооьветствующей иконкой. Я нашла решение для цвета

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
<script type="text/javascript">
LoadSodByKey("SP.UI.ApplicationPages.Calendar.js", function () {
        WaitForCalendarToLoad();
    });
var SEPARATOR = "|||";
  
function WaitForCalendarToLoad() {
        SP.UI.ApplicationPages.SummaryCalendarView.prototype.renderGrids = function SP_UI_ApplicationPages_SummaryCalendarView$renderGrids($p0) {
        var $v_0 = new Sys.StringBuilder();
        var $v_1 = $p0.length;        for (var $v_2 = 0; $v_2 < $v_1; $v_2++) {
            this.$7V_2($v_2, $p0[$v_2]);
        }
        for (var $v_3 = 0; $v_3 < $v_1; $v_3++) {
            $v_0.append('<div>');
            this.$I_2.$7Q_1($v_0, $p0[$v_3], $v_3);
            $v_0.append(this.emptY_DIV);
            $v_0.append('</div>');
        }
        this.setInnerHtml($v_0.toString());
        ColourCalendar();
    }
  
SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed = function($p0, $p1) {
  if (this.$K_1.$8G_0()) {
            this.$28_1();
            return;
        }
        this.$41_1 = false;
        if (this.$3G_1) {
            this.$D_1.$4T_1();
            this.$3G_1 = false;
        }
        if (SP.UI.ApplicationPages.SU.$2(this.$39_1[this.$j_1])) {
            this.$39_1[this.$j_1] = [];
        }
        Array.addRange(this.$39_1[this.$j_1], $p0);
        this.$D_1.$7S_1(this.$j_1, this.$v_1, $p1, this.$39_1[this.$j_1]);
        this.$j_1++;
        this.$1h_1();
  ColourCalendar();
 }
}
  
function ColourCalendar() {
        if(jQuery('a:contains(' + SEPARATOR + ')') != null)
        {            
   jQuery('a:contains(' + SEPARATOR + ')').each(function (i) {
   $box = jQuery(this).parents('div[title]');
   var colour = GetColourCodeFromCategory(GetCategory(this.innerHTML));
   this.innerHTML = GetActualText(this.innerHTML);
   jQuery($box).attr("title", GetActualText(jQuery($box).attr("title")));
   $box.css({'background-color': colour, 'color' : 'black !important;'});
   });       
 }  
}
  
function GetActualText(originalText) {    
 var parts = originalText.split(SEPARATOR);
 return parts[0] + parts[2];  
}
  
function GetCategory(originalText) {
 var parts = originalText.split(SEPARATOR);
 return parts[1];  
}
  
function GetColourCodeFromCategory(category) {
 var colour = null;    
 switch (category.trim()) {
  case 'Meeting':        
   colour = '#4FDB51';
   break;      
  case 'Holiday HU':        
   colour = '#01b789';
   break;      
  case 'Business':        
   colour = "#F08616";
   break;      
  case 'Holiday DE':        
   colour = "##013dbf";        
   break;      
  case 'Belgium':        
   colour = "#bf7901";        
   break;      
  case 'Birthday':        
   colour = "#6E80FA";        
   break;      
  case 'Vocation':        
   colour = "#bf0000";        
   break;    
 }    
 return colour;  
}
</script>



и для иконок

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
<script type="text/javascript"> 
var CALENDAR_LIST_TITLE = "Calendar"
 
ExecuteOrDelayUntilScriptLoaded(CustomizeCalendarEvents,"SP.UI.ApplicationPages.Calendar.js");  
 
function CustomizeCalendarEvents() {  
 
    try  
    {        
 
        var _onItemsSucceed = SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed;    
        SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed = function($p0, $p1) {   
            var clientContext = new SP.ClientContext(); 
            //get calendar list
            var calendarList = clientContext.get_web().get_lists().getByTitle(CALENDAR_LIST_TITLE);
 
            //get the value of the icon column for each event
            var items = [];
            for(var i=0; i<$p0.length; i++)   
            {  
                var eventId = $p0[i].$11_0; 
                var calendarListItem = calendarList.getItemById(eventId);
                clientContext.load(calendarListItem, 'Icon');
                items.push(calendarListItem);
            }
 
            //execute query
            clientContext.executeQueryAsync(Function.createDelegate(this, function()
            { 
                for(var i=0; i<$p0.length; i++)   
                { 
                    //get icon
                    var icon = items[i].get_item('Icon') 
                    if(icon && icon.$2_1 )
                    {
                        //append icon to the event titel
                        $p0[i].$3Q_0 = $p0[i].$3Q_0 + "<img src='" + icon.$2_1 + "' /> " 
                    }
                }
                //call original onItemsSucceed
                _onItemsSucceed.call(this, $p0, $p1);  
            }), Function.createDelegate(this, function(){ 
                //call original onItemsSucceed
                _onItemsSucceed.call(this, $p0, $p1); 
            }));
         }; 
    } 
    catch (err) { 
        console.log('An error occured:' + err.message);
    }  
}
 </script>




Но как их совместить?
...
Рейтинг: 0 / 0
14.07.2017, 15:01
    #39489146
l_kator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2013 события с иконками в календаре
Ну или хотя бы словами скажите, что делает это:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function WaitForCalendarToLoad() {
        SP.UI.ApplicationPages.SummaryCalendarView.prototype.renderGrids = function SP_UI_ApplicationPages_SummaryCalendarView$renderGrids($p0) {
        var $v_0 = new Sys.StringBuilder();
        var $v_1 = $p0.length;        for (var $v_2 = 0; $v_2 < $v_1; $v_2++) {
            this.$7V_2($v_2, $p0[$v_2]);
        }
        for (var $v_3 = 0; $v_3 < $v_1; $v_3++) {
            $v_0.append('<div>');
            this.$I_2.$7Q_1($v_0, $p0[$v_3], $v_3);
            $v_0.append(this.emptY_DIV);
            $v_0.append('</div>');
        }
        this.setInnerHtml($v_0.toString());
        ColourCalendar();
    }
...
Рейтинг: 0 / 0
Форумы / SharePoint [игнор отключен] [закрыт для гостей] / 2013 события с иконками в календаре / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]