发布测试版 2.5.0
This commit is contained in:
@@ -67,8 +67,8 @@ function InitCalendar(sources)
|
||||
allDayText:'全天',
|
||||
slotLabelFormat: 'HH:mm',
|
||||
timeFormat: 'HH:mm',
|
||||
minTime:'07:00:00',
|
||||
maxTime:'23:00:00',
|
||||
//minTime:'07:00:00',
|
||||
//maxTime:'23:00:00',
|
||||
titleRangeSeparator:' - ',
|
||||
monthNames: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],
|
||||
monthNamesShort: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
|
||||
@@ -87,13 +87,11 @@ function InitCalendar(sources)
|
||||
});
|
||||
},
|
||||
viewRender:function(view) {
|
||||
/*
|
||||
window.clearInterval(timelineInterval);
|
||||
timelineInterval = window.setInterval(function() {
|
||||
timeLine(view);
|
||||
}, 10000);
|
||||
timeLine(view);
|
||||
*/
|
||||
},
|
||||
loading:function(status, view) {
|
||||
if (status) {
|
||||
@@ -105,33 +103,29 @@ function InitCalendar(sources)
|
||||
|
||||
// 改变大小事件 event, dayDelta, minuteDelta, revertFunc
|
||||
eventResize: function(event, delta, revertFunc) {
|
||||
|
||||
if(auth_id == user_id) {
|
||||
if (auth_id == user_id) {
|
||||
resizeEvent(event, delta, revertFunc);
|
||||
} else {
|
||||
toastrError('不能给下属调整事件。');
|
||||
revertFunc();
|
||||
}
|
||||
},
|
||||
|
||||
// 拖动事件
|
||||
eventDrop: function(event, delta, revertFunc) {
|
||||
|
||||
if(auth_id == user_id) {
|
||||
if (auth_id == user_id) {
|
||||
moveEvent(event, delta, revertFunc);
|
||||
} else {
|
||||
toastrError('不能给下属移动事件。');
|
||||
revertFunc();
|
||||
}
|
||||
},
|
||||
|
||||
// 点击事件
|
||||
eventClick: function(event, jsEvent, view) {
|
||||
if(event.shared == true) {
|
||||
if (event.shared == true) {
|
||||
viewEvent(event, jsEvent, view);
|
||||
|
||||
} else if(auth_id == event.userid) {
|
||||
if(event.id > 0) {
|
||||
} else if (auth_id == event.userid) {
|
||||
if (event.id > 0) {
|
||||
editEvent(event, jsEvent, view);
|
||||
} else {
|
||||
addEvent(event, jsEvent, view);
|
||||
@@ -143,8 +137,7 @@ function InitCalendar(sources)
|
||||
|
||||
// 选择后弹出
|
||||
select: function(start, end, jsEvent, view) {
|
||||
|
||||
if(auth_id == user_id) {
|
||||
if (auth_id == user_id) {
|
||||
addEvent({start: start, end: end}, jsEvent, view);
|
||||
} else {
|
||||
toastrError('不能给下属添加事件。');
|
||||
@@ -155,7 +148,6 @@ function InitCalendar(sources)
|
||||
if(view.type == 'listMonth') {
|
||||
return;
|
||||
}
|
||||
|
||||
overlay.find('#overlay-title').text(calEvent.title);
|
||||
overlay.find('#overlay-start').text(calEvent.start.format());
|
||||
overlay.find('#overlay-end').text(calEvent.end.format());
|
||||
@@ -207,7 +199,7 @@ function timeLine(curView) {
|
||||
|
||||
var timeline = parentDiv.children(".timeline");
|
||||
if (timeline.length == 0) {
|
||||
//添加时间线标签
|
||||
// 添加时间线标签
|
||||
timeline = $("<hr>").addClass("timeline");
|
||||
parentDiv.prepend(timeline);
|
||||
}
|
||||
@@ -222,7 +214,7 @@ function timeLine(curView) {
|
||||
var percentOfDay = curSeconds / 86400;
|
||||
var topPos = Math.floor(parentDiv.height() * percentOfDay);
|
||||
|
||||
timeline.css("top", topPos+"px");
|
||||
timeline.css("top", topPos + "px");
|
||||
|
||||
// 周视图时设置时间线的位置和宽度
|
||||
if (curView.name == "agendaWeek") {
|
||||
@@ -332,8 +324,8 @@ function moveEvent(event, delta, revertFunc)
|
||||
function editEvent(event, jsEvent, view)
|
||||
{
|
||||
var data = dateFormat(event);
|
||||
data.id = event.id;
|
||||
data.title = event.title;
|
||||
data.id = event.id;
|
||||
data.title = event.title;
|
||||
data.location = event.location;
|
||||
data.description = event.description;
|
||||
data.lastmodified = event.lastmodified;
|
||||
@@ -351,7 +343,6 @@ function editEvent(event, jsEvent, view)
|
||||
text: '提交',
|
||||
'class': 'btn-info',
|
||||
click: function() {
|
||||
|
||||
var $this = $(this);
|
||||
if ($('#title').val().length == 0) {
|
||||
toastrError('主题必须填写。');
|
||||
@@ -461,15 +452,16 @@ function getCalendars(callback)
|
||||
if(this.active == 1) {
|
||||
var checkbox = 'checked';
|
||||
}
|
||||
|
||||
if(this.id == 'shared') {
|
||||
var checkbox = 'checked disabled';
|
||||
var checkbox = 'checked';
|
||||
}
|
||||
rows.push('<li class="list-group-item">'+ edit +'<label class="checkbox-inline"><input data-calendar="active" data-id="'+this.id+'" type="checkbox" '+checkbox+' /> <span class="text" style="color:'+this.calendarcolor+'">'+this.displayname+'</span></label></li>');
|
||||
});
|
||||
rows.push('</ul>');
|
||||
$('#calendars').html(rows.join(''));
|
||||
|
||||
if(callback) {
|
||||
if (callback) {
|
||||
callback(res.data.sources);
|
||||
}
|
||||
});
|
||||
@@ -520,7 +512,7 @@ $(function() {
|
||||
|
||||
#loading { background:red; color:#fff; padding:3px; position:absolute; top:5px;right:5px;z-index:9999;}
|
||||
|
||||
.category .tree ul {padding:5px 0;}
|
||||
.category .tree ul { padding:5px 0; }
|
||||
.category .tree ul li.me {padding:5px; color:#666;}
|
||||
.category .tree ul li ul {padding:5px 0 0;}
|
||||
.category .tree ul li ul li {padding:5px 5px 0 5px; border:0;border-top:1px solid #eee;}
|
||||
@@ -542,13 +534,13 @@ $(function() {
|
||||
<div class="tree">
|
||||
|
||||
<ul class="list-group">
|
||||
|
||||
|
||||
<li class="list-group-item"><strong>下属日历</strong></li>
|
||||
|
||||
@if($underling['role'])
|
||||
@foreach($underling['role'] as $role_id => $role)
|
||||
<li class="list-group-item">
|
||||
{{$role['title']}}
|
||||
<i class="fa fa-angle-down"></i> {{$role['name']}}
|
||||
<ul>
|
||||
@if($underling['user'][$role_id])
|
||||
@foreach($underling['user'][$role_id] as $user)
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
<div class="gdoo-list-grid">
|
||||
|
||||
<div id="widget_calendar_datetime" class="m-t-xs"></div>
|
||||
|
||||
@verbatim
|
||||
<div class="b-t" id="widget_calendar_event_list" style="width:100%;height:200px;">
|
||||
<div v-for="row in data.dayEvents">
|
||||
<li class="calendar-day-event">
|
||||
<div v-if="row.allday" class="day-tag">
|
||||
<span title="全天">全天</span>
|
||||
</div>
|
||||
<div class="day-tag time-tag" v-else>
|
||||
<span :title="row.start">{{row.start}}</span>
|
||||
<span :title="row.end">{{row.end}}</span>
|
||||
</div>
|
||||
<div class="title-tag" v-if="row.allday" :title="row.title">
|
||||
<div class="text_overflow" style="cursor:pointer;">{{row.title}}</div>
|
||||
<i class="text_overflow">{{row._start}} - {{row._end}} </i>
|
||||
</div>
|
||||
<div class="title-tag title-time-tag" v-else :title="row.title">
|
||||
<div class="text_overflow" style="cursor:pointer;">{{row.title}}</div>
|
||||
</div>
|
||||
</li>
|
||||
</div>
|
||||
</div>
|
||||
@endverbatim
|
||||
|
||||
</div>
|
||||
|
||||
<style>
|
||||
#widget_calendar_event_list {
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
padding: 5px;
|
||||
}
|
||||
.calendar-day-event {
|
||||
list-style: none;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #efefef;
|
||||
padding: 6px 0 0;
|
||||
height: 44px;
|
||||
}
|
||||
.calendar-day-event .day-tag {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 6px;
|
||||
width: 46px;
|
||||
border-right: 2px solid #53aaff;
|
||||
height: 30px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
}
|
||||
.calendar-day-event .time-tag {
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.calendar-day-event .day-tag span {
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
.calendar-day-event .title-tag {
|
||||
position: absolute;
|
||||
padding-left: 56px;
|
||||
margin: 0;
|
||||
}
|
||||
.calendar-day-event .title-time-tag {
|
||||
line-height: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
.calendar-day-event .title-tag i {
|
||||
line-height: 14px;
|
||||
height: 14px;
|
||||
overflow: hidden;
|
||||
font-size: 12px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-style: normal;
|
||||
color: #999;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
$.fn.datetimepicker.Constructor.Default = $.extend({}, $.fn.datetimepicker.Constructor.Default, {
|
||||
dayViewHeaderFormat:'YYYY年MM月',
|
||||
icons: {
|
||||
today: 'fa fa-caret-square-o-right',
|
||||
clear: 'fa fa-trash-o',
|
||||
close: 'fa fa-close',
|
||||
time: "fa fa-clock-o",
|
||||
date: "fa fa-calendar-check-o",
|
||||
up: "fa fa-arrow-up",
|
||||
down: "fa fa-arrow-down",
|
||||
previous: 'fa fa-angle-left',
|
||||
next: 'fa fa-angle-right',
|
||||
},
|
||||
tooltips:{
|
||||
today: '今天',
|
||||
time: '时间',
|
||||
clear: '清除',
|
||||
close: '关闭',
|
||||
selectMonth: '选择月份',
|
||||
prevMonth: '上个月',
|
||||
nextMonth: '下个月',
|
||||
selectYear: '选择年份',
|
||||
prevYear: '上一年',
|
||||
nextYear: '下一年',
|
||||
selectDecade: '选择时期',
|
||||
prevDecade: '上个年代',
|
||||
nextDecade: '下个年代',
|
||||
prevCentury: '上个世纪',
|
||||
nextCentury: '下个世纪',
|
||||
incrementHour: '增加一小时',
|
||||
pickHour: '选择小时',
|
||||
decrementHour:'减少一小时',
|
||||
incrementMinute: '增加一分钟',
|
||||
pickMinute: '选择分',
|
||||
decrementMinute:'减少一分钟',
|
||||
incrementSecond: '增加一秒',
|
||||
pickSecond: '选择秒',
|
||||
decrementSecond:'减少一秒'
|
||||
}
|
||||
});
|
||||
|
||||
(function ($) {
|
||||
var datas = [];
|
||||
var $calendar = $('#widget_calendar_datetime');
|
||||
$calendar.datetimepicker({
|
||||
format: 'YYYY-MM-DD',
|
||||
inline: true,
|
||||
sideBySide: true,
|
||||
onSelectDay: function(clsName, day) {
|
||||
if (datas[day]) {
|
||||
clsName += ' todo';
|
||||
}
|
||||
return clsName;
|
||||
}
|
||||
});
|
||||
var picker = $calendar.data('datetimepicker');
|
||||
|
||||
function getStartEndDate(viewDate, callback) {
|
||||
datas = {};
|
||||
let start = viewDate.clone().startOf('M').startOf('w').startOf('d');
|
||||
let end = start.clone().add(41, 'd').format('L');
|
||||
start = start.format('L');
|
||||
$.getJSON(app.url('calendar/event/data', {start, end}), function(rows) {
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
const row = rows[i];
|
||||
datas[row.date] = datas[row.date] || [];
|
||||
datas[row.date].push(row);
|
||||
}
|
||||
picker._fillDate();
|
||||
if (typeof callback === 'function') {
|
||||
callback(datas);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 初始化数据
|
||||
getStartEndDate(picker._viewDate, function() {
|
||||
let day = picker.date().format('L');
|
||||
vueData.dayEvents = datas[day] || [];
|
||||
});
|
||||
|
||||
$calendar.on('update.datetimepicker', function(e) {
|
||||
getStartEndDate(e.viewDate);
|
||||
});
|
||||
|
||||
$calendar.on('change.datetimepicker', function(e) {
|
||||
let day = e.date.format('L');
|
||||
vueData.dayEvents = datas[day] || [];
|
||||
});
|
||||
|
||||
let vueData = Vue.reactive({dayEvents:[]});
|
||||
let vm = Vue.createApp({
|
||||
setup(props, ctx) {
|
||||
return {data: vueData};
|
||||
}
|
||||
}).mount("#widget_calendar_event_list");
|
||||
|
||||
gdoo.widgets['calendar_widget_index'] = {
|
||||
remoteData: function() {
|
||||
picker._doAction({}, 'today');
|
||||
getStartEndDate(picker._viewDate);
|
||||
}
|
||||
};
|
||||
})(jQuery);
|
||||
</script>
|
||||
Reference in New Issue
Block a user