⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsclass_scheduler.js

📁 SugarCRM5.1 开源PHP客户关系管理系统
💻 JS
📖 第 1 页 / 共 2 页
字号:
	if(has_meridiem) {		GLOBAL_REGISTRY.focus.fields.time_start = hour_start + time_separator + minute_start + meridiem;	} else {		GLOBAL_REGISTRY.focus.fields.time_start = hour_start+time_separator+minute_start;		//GLOBAL_REGISTRY.focus.fields.time_start = document.EditView.time_hour_start.value+time_separator+minute_start;	}	GLOBAL_REGISTRY.focus.fields.date_start = document.EditView.date_start.value;	GLOBAL_REGISTRY.focus.fields.duration_hours = document.EditView.duration_hours.value;	GLOBAL_REGISTRY.focus.fields.duration_minutes = document.EditView.duration_minutes.value;	GLOBAL_REGISTRY.focus.fields.datetime_start = SugarDateTime.mysql2jsDateTime(GLOBAL_REGISTRY.focus.fields.date_start,GLOBAL_REGISTRY.focus.fields.time_start);	this.timeslots = new Array();	this.hours = 9;	this.segments = 4;	this.start_hours_before = 4;	var minute_interval = 15;	var dtstart = GLOBAL_REGISTRY.focus.fields.datetime_start;	// initialize first date in timeslots	var curdate = new Date(dtstart.getFullYear(),dtstart.getMonth(),dtstart.getDate(),dtstart.getHours()-this.start_hours_before,0);	if(typeof(GLOBAL_REGISTRY.focus.fields.duration_minutes) == 'undefined') {		GLOBAL_REGISTRY.focus.fields.duration_minutes = 0;	}	GLOBAL_REGISTRY.focus.fields.datetime_end = new Date(dtstart.getFullYear(),dtstart.getMonth(),dtstart.getDate(),dtstart.getHours()+parseInt(GLOBAL_REGISTRY.focus.fields.duration_hours),dtstart.getMinutes()+parseInt(GLOBAL_REGISTRY.focus.fields.duration_minutes),0);	var has_start = false;	var has_end = false;	for(i=0;i < this.hours*this.segments; i++) {		var hash = SugarDateTime.getUTCHash(curdate);		var obj = {"hash":hash,"date_obj":curdate};		if(has_start == false && GLOBAL_REGISTRY.focus.fields.datetime_start.getTime() <= curdate.getTime()) {			obj.is_start = true;			has_start = true;		}		if(has_end == false && GLOBAL_REGISTRY.focus.fields.datetime_end.getTime() <= curdate.getTime()) {			obj.is_end = true;			has_end = true;		}		this.timeslots.push(obj);		curdate = new Date(curdate.getFullYear(),curdate.getMonth(),curdate.getDate(),curdate.getHours(),curdate.getMinutes()+minute_interval);	}}SugarWidgetSchedulerAttendees.prototype.load = function (parentNode) {	this.parentNode = parentNode;	this.display();}SugarWidgetSchedulerAttendees.prototype.display = function() {	var dtstart = GLOBAL_REGISTRY.focus.fields.datetime_start;	var top_date = SugarDateTime.getFormattedDate(dtstart);	var html = '<div class="schedulerDiv"><table class="schedulerTable" border=0 cellpadding=0 cellspacing=0>';	html += '<tr class="schedulerTopRow">';	html += '<td height="20" align="center" class="schedulerTopDateCell" colspan="'+((this.hours*this.segments)+2)+'">'+ top_date +'</td>';	html += '</tr>';	html += '<tr class="schedulerTimeRow">';	html += '<td class="schedulerAttendeeHeaderCell">&nbsp;</td>';	for(var i=0;i < (this.timeslots.length/this.segments); i++) {		var hours = this.timeslots[i*this.segments].date_obj.getHours();		var am_pm = '';		if(time_reg_format.indexOf('A') >= 0 || time_reg_format.indexOf('a') >= 0) {			am_pm = "AM";			if(hours > 12) {				am_pm = "PM";				hours -= 12;			}			if(hours == 12) {				am_pm = "PM";			}			if(hours == 0) {				hours = 12;				am_pm = "AM";			}			if(time_reg_format.indexOf('a') >= 0) {				am_pm = am_pm.toLowerCase();			}			if(hours != 0 && hours != 12 && i != 0) {				am_pm = "";			}		}		var form_hours = hours+time_separator+"00";		html += '<td colspan="'+this.segments+'" class="schedulerTimeCell">'+form_hours+am_pm+'</td>';	}	html += '<td class="schedulerDeleteHeaderCell">&nbsp;</td>';	html += '</tr>';	html += '</table></div>';	this.parentNode.innerHTML = html;	var thetable = this.parentNode.getElementsByTagName('tbody')[0];	if(typeof (GLOBAL_REGISTRY) == 'undefined') {		return;	}	// grab current user (as event-coordinator)	if(typeof (GLOBAL_REGISTRY.focus.users_arr) == 'undefined' || GLOBAL_REGISTRY.focus.users_arr.length == 0) {		GLOBAL_REGISTRY.focus.users_arr = [ GLOBAL_REGISTRY.current_user ];	}	if(typeof GLOBAL_REGISTRY.focus.users_arr_hash == 'undefined') {		GLOBAL_REGISTRY.focus.users_arr_hash = new Object();	}	// append attendee rows	for(var i=0;i < GLOBAL_REGISTRY.focus.users_arr.length;i++) {		var row = new SugarWidgetScheduleRow(this.timeslots);		row.focus_bean = GLOBAL_REGISTRY.focus.users_arr[i];		GLOBAL_REGISTRY.focus.users_arr_hash[ GLOBAL_REGISTRY.focus.users_arr[i]['fields']['id']] =	GLOBAL_REGISTRY.focus.users_arr[i];		row.load(thetable);	}}SugarWidgetSchedulerAttendees.form_add_attendee = function (list_row) {	if(typeof (GLOBAL_REGISTRY.result_list[list_row]) != 'undefined' && typeof(GLOBAL_REGISTRY.focus.users_arr_hash[ GLOBAL_REGISTRY.result_list[list_row].fields.id]) == 'undefined') {		GLOBAL_REGISTRY.focus.users_arr[ GLOBAL_REGISTRY.focus.users_arr.length ] = GLOBAL_REGISTRY.result_list[list_row];	}	GLOBAL_REGISTRY.scheduler_attendees_obj.display();}//////////////////////////////////////////////////// class: SugarWidgetScheduleRow// widget to display each row in the scheduler////////////////////////////////////////////////////SugarClass.inherit("SugarWidgetScheduleRow","SugarClass");function SugarWidgetScheduleRow(timeslots) {	this.init(timeslots);}SugarWidgetScheduleRow.prototype.init = function(timeslots) {	this.timeslots = timeslots;}SugarWidgetScheduleRow.prototype.load = function (thetable) {	this.thetable = thetable;	this.display();	var self = this;	vcalClient = new SugarVCalClient();	if(typeof (GLOBAL_REGISTRY['freebusy_adjusted']) == 'undefined' ||	typeof (GLOBAL_REGISTRY['freebusy_adjusted'][this.focus_bean.fields.id]) == 'undefined') {		global_request_registry[req_count] = [this,'display'];		vcalClient.load(this.focus_bean.fields.id,req_count);		req_count++;	} else {		this.display();	}}SugarWidgetScheduleRow.prototype.display = function() {	var self = this;	var tr;	if(typeof (this.element) != 'undefined') {		this.thetable.deleteRow(this.element_index);		tr = this.thetable.insertRow(this.element_index);	} else {		tr = this.thetable.insertRow(this.thetable.rows.length);	}	tr.className = "schedulerAttendeeRow";	var td = tr.insertCell(tr.cells.length);	// icon + full name	td.className = 'schedulerAttendeeCell';	//var img = '<img align="absmiddle" src="'+GLOBAL_REGISTRY.config['site_url']+'/themes/'+GLOBAL_REGISTRY.current_user.theme+'/images/'+self.focus_bean.module+'s.gif"/>&nbsp;';	var img = '<img align="absmiddle" src="themes/default/images/'+self.focus_bean.module+'s.gif"/>&nbsp;';	td.innerHTML = img;	td.innerHTML = td.innerHTML;	if (self.focus_bean.fields.full_name)		td.innerHTML += ' ' + self.focus_bean.fields.full_name;	else		td.innerHTML += ' ' + self.focus_bean.fields.name;	// add freebusy tds here:	this.add_freebusy_nodes(tr);	// delete button	var td = tr.insertCell(tr.cells.length);	td.className = 'schedulerAttendeeDeleteCell';	td.noWrap = true;	if ( GLOBAL_REGISTRY.focus.fields.assigned_user_id != self.focus_bean.fields.id ) {        td.innerHTML = '<a title="'+ GLOBAL_REGISTRY['meeting_strings']['LBL_DEL'] +'" class="listViewTdToolsS1" href="javascript:SugarWidgetScheduleRow.deleteRow(\''+self.focus_bean.fields.id+'\');">&nbsp;<img src="themes/'+GLOBAL_REGISTRY.current_user.theme+'/images/delete_inline.gif" align="absmiddle" alt="'+ GLOBAL_REGISTRY['meeting_strings']['LBL_DEL'] +'" border="0"> '+ GLOBAL_REGISTRY['meeting_strings']['LBL_DEL'] +'</a>';    }	this.element = tr;	this.element_index = this.thetable.rows.length - 1;}SugarWidgetScheduleRow.deleteRow = function(bean_id) {	// can't delete organizer	if(GLOBAL_REGISTRY.focus.users_arr.length == 1 || GLOBAL_REGISTRY.focus.fields.assigned_user_id == bean_id) {		return;	}	for(var i=0;i<GLOBAL_REGISTRY.focus.users_arr.length;i++) {		if(GLOBAL_REGISTRY.focus.users_arr[i]['fields']['id']==bean_id) {			delete GLOBAL_REGISTRY.focus.users_arr_hash[GLOBAL_REGISTRY.focus.users_arr[i]['fields']['id']];			GLOBAL_REGISTRY.focus.users_arr.splice(i,1);			GLOBAL_REGISTRY.container.root_widget.display();		}	}}function DL_GetElementLeft(eElement) {	/*	 * ifargument is invalid	 * (not specified, is null or is 0)	 * and function is a method	 * identify the element as the method owner	 */	if(!eElement && this) {		eElement = this;	}	/*	 * initialize var to store calculations	 * identify first offset parent element	 * move up through element hierarchy	 * appending left offset of each parent	 * until no more offset parents exist	 */	var nLeftPos = eElement.offsetLeft;	var eParElement = eElement.offsetParent;	while (eParElement != null) {		nLeftPos += eParElement.offsetLeft;		eParElement = eParElement.offsetParent;	}	return nLeftPos; // return the number calculated}function DL_GetElementTop(eElement) {	if(!eElement && this) {		eElement = this;	}	var nTopPos = eElement.offsetTop;	var eParElement = eElement.offsetParent;	while (eParElement != null) {		nTopPos += eParElement.offsetTop;		eParElement = eParElement.offsetParent;	}	return nTopPos;}//////////////////////////////////////////// adds the <td>s for freebusy display within a rowSugarWidgetScheduleRow.prototype.add_freebusy_nodes = function(tr,attendee) {	var hours = 9;	var segments = 4;	var html = '';	var is_loaded = false;	if(typeof GLOBAL_REGISTRY['freebusy_adjusted'] != 'undefined' && typeof GLOBAL_REGISTRY['freebusy_adjusted'][this.focus_bean.fields.id] != 'undefined') {		is_loaded = true;	}	var in_current = false;	for(var i=0;i < this.timeslots.length; i++) {		var cellclassname = 'schedulerSlotCellHour';		var td = tr.insertCell(tr.cells.length);		if(typeof(this.timeslots[i]['is_start']) != 'undefined') {			in_current = true;			cellclassname = 'schedulerSlotCellStartTime';		}		if(typeof(this.timeslots[i]['is_end']) != 'undefined') {			in_current = false;			cellclassname = 'schedulerSlotCellEndTime';		}		td.className =cellclassname;		if(in_current) {			td.style.backgroundColor="#ffffff";		}		if(is_loaded) {			// iftheres a freebusy stack in this slice			if(	typeof(GLOBAL_REGISTRY['freebusy_adjusted'][this.focus_bean.fields.id][this.timeslots[i].hash]) != 'undefined') {				td.style.backgroundColor="#4D5EAA";				if(in_current) {					fb_limit = 1;					if(typeof(GLOBAL_REGISTRY.focus.orig_users_arr_hash) != 'undefined' && typeof(GLOBAL_REGISTRY.focus.orig_users_arr_hash[this.focus_bean.fields.id]) != 'undefined') {						fb_limit = 2;					}					if(	GLOBAL_REGISTRY['freebusy_adjusted'][this.focus_bean.fields.id][this.timeslots[i].hash] >= fb_limit) {						td.style.backgroundColor="#AA4D4D";					} else {						td.style.backgroundColor="#4D5EAA";					}				}			}		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -