calenstyle
Version:
CalenStyle is a Responsive Drag-and-Drop Event Calendar for Web, iOS, Android & Windows. CalenStyle is customizable plugin having multiple, clean-designed event calendar templates specially designed for web & mobile applications.
362 lines (301 loc) • 8.59 kB
JavaScript
module.exports = function(grunt)
{
var sBanner = '/* ----------------------------------------------------------------------------- ' +
'\n\n CalenStyle - Responsive Event Calendar' +
'\n Version <%= pkg.version %>' +
'\n Copyright (c)<%= grunt.template.today("yyyy") %> Lajpat Shah' +
'\n Contributors : https://github.com/nehakadam/CalenStyle/contributors' +
'\n Repository : https://github.com/nehakadam/CalenStyle' +
'\n Homepage : https://nehakadam.github.io/CalenStyle' +
'\n\n ----------------------------------------------------------------------------- */\n\n';
var sJSHeader = sBanner + "(function () {\n\n \"use strict\";\n\n",
sJSFooter = "\n\n}());\n\n",
sAJS = [
'src/calenstyle-core.js',
'src/calenstyle-monthview.js',
'src/calenstyle-detailview.js',
'src/calenstyle-quickagendaview.js',
'src/calenstyle-taskplannerview.js',
'src/calenstyle-agendaview.js',
'src/calenstyle-weekplannerview.js',
'src/calenstyle-daylistview.js',
'src/calenstyle-appointmentview.js',
'src/calenstyle-filterbar.js',
'src/calenstyle-pickers.js'
],
sAJSCustom = [
'src/calenstyle-core.js',
'src/calenstyle-monthview.js',
'src/calenstyle-detailview.js',
'src/calenstyle-agendaview.js',
'src/calenstyle-quickagendaview.js',
'src/calenstyle-pickers.js'
],
sACSS = [
'src/calenstyle.css',
'src/calenstyle-jquery-ui-override.css'
],
sAWatch = sAJS.concat(sACSS);
grunt.initConfig(
{
pkg: grunt.file.readJSON('package.json'),
concat:
{
options:
{
separator: '\n\n\n\n',
stripBanners: true
},
dist:
{
src: sAJS,
dest: 'src/calenstyle.js',
options:
{
nonull: true,
banner: sJSHeader,
footer: sJSFooter
}
},
customconcat:
{
src: sAJSCustom,
dest: 'src/calenstyle-custom.js',
options:
{
nonull: true,
banner: sJSHeader,
footer: sJSFooter
}
},
lang:
{
options:
{
banner: sBanner
},
src: ['src/i18n/*', '!src/i18n/calenstyle-i18n.js'],
dest: 'src/i18n/calenstyle-i18n.js',
nonull: true
}
},
copy:
{
main:
{
expand: true,
cwd: 'src/',
src: '**',
dest: 'dist'
},
lang:
{
expand: true,
cwd: 'src/i18n',
src: '**',
dest: 'dist/i18n'
}
},
uglify:
{
options:
{
banner: sBanner,
mangle: true
},
build:
{
src: 'src/<%= pkg.name %>.js',
dest: 'dist/<%= pkg.name %>.min.js',
nonull: true
},
customuglify:
{
src: 'src/calenstyle-custom.js',
dest: 'dist/calenstyle-custom.min.js',
nonull: true
}
},
cssmin:
{
options:
{
banner: sBanner
},
build:
{
src: ['src/<%= pkg.name %>.css', 'src/calenstyle-jquery-ui-override.css'],
dest: 'dist/<%= pkg.name %>.min.css',
nonull: true
}
},
watch:
{
dev:
{
files: sAWatch,
tasks: ['concat:dist']
},
prod:
{
files: sAWatch,
tasks: ['default']
}
},
jshint:
{
core: 'src/calenstyle-core.js',
MonthView: 'src/calenstyle-monthview.js',
DetailView: 'src/calenstyle-detailview.js',
QuickAgendaView: 'src/calenstyle-quickagendaview.js',
TaskPlannerView: 'src/calenstyle-taskplannerview.js',
AgendaView: 'src/calenstyle-agendaview.js',
DayListView: 'src/calenstyle-daylistview.js',
WeekPlannerView: 'src/calenstyle-weekplannerview.js',
AppointmentView: 'src/calenstyle-appointmentview.js',
Pickers: 'src/calenstyle-pickers.js',
FilterBar: 'src/calenstyle-filterbar.js',
Main: ['src/calenstyle.js'],
options:
{
strict: false,
curly: false,
eqeqeq: true,
eqnull: true,
browser: true,
devel: true,
//unused: true,
//undef: true,
globals:
{
$: false,
jQuery: false,
define: false,
require: false,
module: false,
Hammer: true,
CalenStyle: true
},
force: true
}
},
csslint:
{
dist:
{
src: ['src/*.css']
},
options:
{
"adjoining-classes": false,
"important": false,
"universal-selector": false,
"box-sizing": false,
"box-model": false,
"overqualified-elements": false,
"unqualified-attributes": false,
"fallback-colors": false,
"font-sizes": false,
"floats": false,
"display-property-grouping": false,
"ids": false,
"vendor-prefix": false,
"regex-selectors": false
}
},
eslint:
{
target: ['src/calenstyle.js']
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-csslint');
grunt.loadNpmTasks('grunt-eslint');
grunt.registerTask('common', ['copy', 'uglify', 'cssmin']);
grunt.registerTask('default', ['concat:dist', 'common']);
//grunt.registerTask('default', ['concat:dist']);
grunt.registerTask('customconcat', ['concat:customconcat', 'default']);
grunt.registerTask('updateLanguages', ['concat:lang', 'copy:lang']);
grunt.registerTask('CalenStyleConcat', function()
{
var sViewBannerText = "\n You can use following views with CalenStyle Custom File - \n";
sAJSCustom.push(sAJS[0]);
grunt.log.writeln("Input Views");
grunt.log.writeln(this.args);
for(var iTempIndex = 0; iTempIndex < this.args.length; iTempIndex++)
{
var sViewName = this.args[iTempIndex];
if(sViewName === "DetailedMonthView" || sViewName === "MonthView" || sViewName === "DatePicker")
sViewBannerText += "\n DetailedMonthView, MonthView, DatePicker \n";
else if(sViewName === "WeekView" || sViewName === "DayView" || sViewName === "CustomView" || sViewName === "DayEventDetailView")
sViewBannerText += "\n WeekView, DayView, CustomView \n";
else if(sViewName === "DayEventListView" || sViewName === "DayEventDetailView")
sViewBannerText += "\n DayEventListView, DayEventDetailView \n";
else if(sViewName === "AgendaView")
sViewBannerText += "\n AgendaView \n";
else if(sViewName === "QuickAgendaView")
sViewBannerText += "\n QuickAgendaView \n";
else if(sViewName === "TaskPlannerView")
sViewBannerText += "\n TaskPlannerView \n";
else if(sViewName === "WeekPlannerView")
sViewBannerText += "\n WeekPlannerView \n";
else if(sViewName === "AppointmentView")
sViewBannerText += "\n AppointmentView \n";
else if(sViewName === "FilterBar")
sViewBannerText += "\n FilterBar \n";
else if(sViewName === "Pickers")
sViewBannerText += "\n MonthPicker and YearPicker \n";
if(sViewName === "DetailedMonthView")
addFileToCustomArray(sAJS[1]);
else if(sViewName === "MonthView")
addFileToCustomArray(sAJS[1]);
else if(sViewName === "DatePicker")
addFileToCustomArray(sAJS[1]);
else if(sViewName === "WeekView")
addFileToCustomArray(sAJS[2]);
else if(sViewName === "DayView")
addFileToCustomArray(sAJS[2]);
else if(sViewName === "CustomView")
addFileToCustomArray(sAJS[2]);
else if(sViewName === "QuickAgendaView")
addFileToCustomArray(sAJS[3]);
else if(sViewName === "TaskPlannerView")
addFileToCustomArray(sAJS[4]);
else if(sViewName === "AgendaView")
addFileToCustomArray(sAJS[5]);
else if(sViewName === "WeekPlannerView")
addFileToCustomArray(sAJS[6]);
else if(sViewName === "DayEventListView")
addFileToCustomArray(sAJS[7]);
else if(sViewName === "DayEventDetailView")
{
addFileToCustomArray(sAJS[7]);
addFileToCustomArray(sAJS[2]);
}
else if(sViewName === "AppointmentView")
addFileToCustomArray(sAJS[8]);
else if(sViewName === "FilterBar")
addFileToCustomArray(sAJS[9]);
else if(sViewName === "Pickers")
addFileToCustomArray(sAJS[10]);
}
grunt.log.writeln(sViewBannerText);
grunt.task.run('customconcat');
});
function addFileToCustomArray(sFileName)
{
for(iTempIndex = 0; iTempIndex < sAJSCustom.length; iTempIndex++)
{
if(sAJSCustom[iTempIndex] === sFileName)
return true;
}
sAJSCustom.push(sFileName);
return true;
}
grunt.registerTask('lint', ['jshint:Main', 'csslint']);
};