try{
var async = require('async');
var fs = require('fs');
var csv = require('ya-csv');
if(fs.existsSync('settings.csv'))
{
var path="";
var reader = csv.createCsvFileReader('settings.csv',{'separator': ','});
reader.addListener('data', function(data)
{
if(data[0]=='datafolder')
{
path = data[1];
}
if(data[0]=='event')
{
var ca = 0;
var bm = 0;
if(data[1].search('Corporate_Events')>=0)
{
ca = 1;
}
if(data[1].search('Board_Meetings')>=0)
{
bm =1
}
async.parallel
({
data1 : function(callback){
if (fs.existsSync(path+'/events/BM_All_Forthcoming.csv') && bm == 1) {
fs.readFile(path+'/events/BM_All_Forthcoming.csv','utf-8', function(err, data){
if(err){console.log(err)}
callback(err, data);
});
}else
{
fs.readdir('./', function(err, files){
if(err){console.log(err)}
callback(err,'0');
});
}
},
data2 : function(callback){
if (fs.existsSync(path+'/events/CA_ALL_FORTHCOMING.csv') && ca == 1) {
fs.readFile(path+'/events/CA_ALL_FORTHCOMING.csv','utf-8', function(err, data){
if(err){console.log(err)}
callback(err, data);
});
}else
{
fs.readdir('./', function(err, files){
if(err){console.log(err)}
callback(err,'0');
});
}
}
}, function(err, result)
{
var arrFileData = new Array();
var arrFileDataCA = new Array();
if (bm == 1)
{
var arrRow = new Array();
arrRow = result['data1'].split('\n');
for(var i=0 ; i<arrRow.length;i++)
{
var tempArr = arrRow[i].split(',');
arrFileData.push(tempArr);
}
}
if (ca == 1)
{
var arrRowCA = new Array();
arrRowCA = result['data2'].split('\n');
for(var i=0 ; i<arrRowCA.length;i++)
{
var tempArr1 = arrRowCA[i].split(',');
arrFileDataCA.push(tempArr1);
}
}
Ext.define('Ext.calendar.App', {
requires: [
'Ext.Viewport',
'Ext.layout.container.Border',
'Ext.picker.Date',
'Ext.calendar.util.Date',
'Ext.calendar.CalendarPanel',
'Ext.calendar.data.MemoryCalendarStore',
'Ext.calendar.data.MemoryEventStore',
'Ext.calendar.data.Calendars',
'Ext.calendar.form.EventWindow'
],
constructor : function() {
var M = Ext.calendar.data.EventMappings;
var arrRec = new Array();
if(bm == 1)
{
for(var i=1 ; i<arrFileData.length-1;i++)
{
for(var i=1 ; i<arrFileData.length-1;i++)
{
if(arrFileData[i][4] != null && arrFileData[i][4] != "" && typeof arrFileData[i][4] != 'undefined')
{
var evtFinalDate = "";
var arrTempDate = arrFileData[i][4].toString().split('-');
var evtDate = arrTempDate[0].toString().replace("\"", "");
var evtMonth = getMonth(arrTempDate[1].toString());
var evtYear = arrTempDate[2].toString().replace("\"", "");
evtFinalDate = evtYear+'-'+evtMonth+'-'+evtDate;
var rec = new Ext.calendar.data.EventModel();
rec.data[M.Title.name] = 'Company name:'+arrFileData[i][1]+' Event:'+arrFileData[i][3];
rec.data[M.EventId.name] = 1000+i;
rec.data[M.CalendarId.name] = 100+i;
rec.data[M.StartDate.name] = new Date(evtFinalDate);
rec.data[M.EndDate.name] = new Date(evtFinalDate);
rec.data[M.Notes.name] = '';
arrRec.push(rec);
}
}
}
}
if(ca == 1)
{
for(var i=1 ; i<arrFileDataCA.length-1;i++)
{
for(var i=1 ; i<arrFileDataCA.length-1;i++)
{
if(arrFileDataCA[i][6] != null && arrFileDataCA[i][6] != "" && typeof arrFileDataCA[i][6] != 'undefined')
{
var evtFinalDate = "";
var arrTempDate = arrFileDataCA[i][6].toString().split('-');
var evtDate = arrTempDate[0].toString().replace("\"", "");
var evtMonth = getMonth(arrTempDate[1].toString());
var evtYear = arrTempDate[2].toString().replace("\"", "");
evtFinalDate = evtYear+'-'+evtMonth+'-'+evtDate;
var rec = new Ext.calendar.data.EventModel();
rec.data[M.Title.name] = 'Company name:'+arrFileDataCA[i][1]+' Event:'+arrFileDataCA[i][5];
rec.data[M.EventId.name] = 5000+i;
rec.data[M.CalendarId.name] = 700+i;
rec.data[M.StartDate.name] = new Date(evtFinalDate);
rec.data[M.EndDate.name] = new Date(evtFinalDate);
rec.data[M.Notes.name] = 'Event';
arrRec.push(rec);
}
}
}
}
function getMonth(mon){
var month='';
switch(mon)
{
case 'Jan':
month='01';
break;
case 'Feb':
month='02';
break;
case 'Mar':
month='03';
break;
case 'Apr':
month='04';
break;
case 'May':
month='05';
break;
case 'Jun':
month='06';
break;
case 'Jul':
month='07';
break;
case 'Aug':
month='08';
break;
case 'Sep':
month='09';
break;
case 'Oct':
month='10';
break;
case 'Nov':
month='11';
break;
case 'Dec':
month='12';
break;
}
return month;
}
this.checkScrollOffset();
this.calendarStore = Ext.create('Ext.calendar.data.MemoryCalendarStore', {
data: Ext.calendar.data.Calendars.getData()
});
this.eventStore = Ext.create('Ext.calendar.data.MemoryEventStore', {
data: arrRec
});
Ext.create('Ext.Viewport', {
layout: 'border',
renderTo: 'calendar-ct',
items: [{
id: 'app-header',
region: 'north',
height: 35,
border: false,
contentEl: 'app-header-content'
},{
id: 'app-center',
title: '...',
region: 'center',
layout: 'border',
listeners: {
'afterrender': function(){
Ext.getCmp('app-center').header.addCls('app-center-header');
}
},
items: [{
id:'app-west',
region: 'west',
width: 179,
border: false,
items: [{
xtype: 'datepicker',
id: 'app-nav-picker',
cls: 'ext-cal-nav-picker',
listeners: {
'select': {
fn: function(dp, dt){
Ext.getCmp('app-calendar').setStartDate(dt);
},
scope: this
}
}
}]
},{
xtype: 'calendarpanel',
eventStore: this.eventStore,
calendarStore: this.calendarStore,
border: false,
id:'app-calendar',
region: 'center',
activeItem: 3,
monthViewCfg: {
showHeader: true,
showWeekLinks: true,
showWeekNumbers: true
},
listeners: {
'eventclick': {
fn: function(vw, rec, el){
this.showEditWindow(rec, el);
this.clearMsg();
},
scope: this
},
'eventover': function(vw, rec, el){
},
'eventout': function(vw, rec, el){
},
'eventadd': {
fn: function(cp, rec){
this.showMsg('Event '+ rec.data.Title +' was added');
},
scope: this
},
'eventupdate': {
fn: function(cp, rec){
this.showMsg('Event '+ rec.data.Title +' was updated');
},
scope: this
},
'eventcancel': {
fn: function(cp, rec){
},
scope: this
},
'viewchange': {
fn: function(p, vw, dateInfo){
if(this.editWin){
this.editWin.hide();
}
if(dateInfo){
Ext.getCmp('app-nav-picker').setValue(dateInfo.activeDate);
this.updateTitle(dateInfo.viewStart, dateInfo.viewEnd);
}
},
scope: this
},
'dayclick': {
fn: function(vw, dt, ad, el){
this.showEditWindow({
StartDate: dt,
IsAllDay: ad
}, el);
this.clearMsg();
},
scope: this
},
'rangeselect': {
fn: function(win, dates, onComplete){
this.showEditWindow(dates);
this.editWin.on('hide', onComplete, this, {single:true});
this.clearMsg();
},
scope: this
},
'eventmove': {
fn: function(vw, rec){
var mappings = Ext.calendar.data.EventMappings,
time = rec.data[mappings.IsAllDay.name] ? '' : ' \\a\\t g:i a';
rec.commit();
this.showMsg('Event '+ rec.data[mappings.Title.name] +' was moved to '+
Ext.Date.format(rec.data[mappings.StartDate.name], ('F jS'+time)));
},
scope: this
},
'eventresize': {
fn: function(vw, rec){
rec.commit();
this.showMsg('Event '+ rec.data.Title +' was updated');
},
scope: this
},
'eventdelete': {
fn: function(win, rec){
this.eventStore.remove(rec);
this.showMsg('Event '+ rec.data.Title +' was deleted');
},
scope: this
},
'initdrag': {
fn: function(vw){
if(this.editWin && this.editWin.isVisible()){
this.editWin.hide();
}
},
scope: this
}
}
}]
}]
});
},
showEditWindow : function(rec, animateTarget){
if(!this.editWin){
this.editWin = Ext.create('Ext.calendar.form.EventWindow', {
calendarStore: this.calendarStore,
listeners: {
'eventadd': {
fn: function(win, rec){
win.hide();
rec.data.IsNew = false;
this.eventStore.add(rec);
this.eventStore.sync();
this.showMsg('Event '+ rec.data.Title +' was added');
},
scope: this
},
'eventupdate': {
fn: function(win, rec){
win.hide();
rec.commit();
this.eventStore.sync();
this.showMsg('Event '+ rec.data.Title +' was updated');
},
scope: this
},
'eventdelete': {
fn: function(win, rec){
this.eventStore.remove(rec);
this.eventStore.sync();
win.hide();
this.showMsg('Event '+ rec.data.Title +' was deleted');
},
scope: this
},
'editdetails': {
fn: function(win, rec){
win.hide();
Ext.getCmp('app-calendar').showEditForm(rec);
}
}
}
});
}
this.editWin.show(rec, animateTarget);
},
updateTitle: function(startDt, endDt){
var p = Ext.getCmp('app-center'),
fmt = Ext.Date.format;
if(Ext.Date.clearTime(startDt).getTime() == Ext.Date.clearTime(endDt).getTime()){
p.setTitle(fmt(startDt, 'F j, Y'));
}
else if(startDt.getFullYear() == endDt.getFullYear()){
if(startDt.getMonth() == endDt.getMonth()){
p.setTitle(fmt(startDt, 'F j') + ' - ' + fmt(endDt, 'j, Y'));
}
else{
p.setTitle(fmt(startDt, 'F j') + ' - ' + fmt(endDt, 'F j, Y'));
}
}
else{
p.setTitle(fmt(startDt, 'F j, Y') + ' - ' + fmt(endDt, 'F j, Y'));
}
},
showMsg: function(msg){
Ext.fly('app-msg').update(msg).removeCls('x-hidden');
},
clearMsg: function(){
Ext.fly('app-msg').update('').addCls('x-hidden');
},
checkScrollOffset: function() {
var scrollbarWidth = Ext.getScrollbarSize ? Ext.getScrollbarSize().width : Ext.getScrollBarWidth();
if (scrollbarWidth < 3) {
Ext.getBody().addCls('x-no-scrollbar');
}
if (Ext.isWindows) {
Ext.getBody().addCls('x-win');
}
}
},
function() {
Ext.form.Basic.override({
reset: function() {
var me = this;
me.getFields().each(function(f) {
f.reset();
});
return me;
}
});
Ext.data.MemoryProxy.override({
updateOperation: function(operation, callback, scope) {
operation.setCompleted();
operation.setSuccessful();
Ext.callback(callback, scope || me, [operation]);
},
create: function() {
this.updateOperation.apply(this, arguments);
},
update: function() {
this.updateOperation.apply(this, arguments);
},
destroy: function() {
this.updateOperation.apply(this, arguments);
}
});
});
});
}
});
}
}catch(err)
{
console.log(err.stack);
}