├── ScheduleWidgetNuGet ├── ScheduleWidget.bat ├── NuGet.exe ├── ScheduleWidget.dll ├── ScheduleWidget.2.1.0.nupkg ├── ScheduleWidget.2.2.0.nupkg ├── readme.txt └── ScheduleWidget.nuspec ├── ScheduleWidgetNuGet40 ├── ScheduleWidget.bat ├── NuGet.exe ├── ScheduleWidget.dll ├── ScheduleWidget.2.5.0.nupkg ├── readme.txt └── ScheduleWidget.nuspec ├── ScheduleWidgetSampleProject ├── ScheduleWidgetSampleProject │ ├── Views │ │ ├── _ViewStart.cshtml │ │ ├── Shared │ │ │ ├── DisplayTemplates │ │ │ │ └── TimeSpan.cshtml │ │ │ ├── EditorTemplates │ │ │ │ ├── TimeSpan.cshtml │ │ │ │ └── DateTime.cshtml │ │ │ ├── Error.cshtml │ │ │ └── _Layout.cshtml │ │ └── Home │ │ │ ├── ScheduleOccurrence.cshtml │ │ │ └── Index.cshtml │ ├── Global.asax │ ├── favicon.ico │ ├── Images │ │ ├── accent.png │ │ ├── bullet.png │ │ ├── heroAccent.png │ │ ├── orderedList0.png │ │ ├── orderedList1.png │ │ ├── orderedList2.png │ │ ├── orderedList3.png │ │ ├── orderedList4.png │ │ ├── orderedList5.png │ │ ├── orderedList6.png │ │ ├── orderedList7.png │ │ ├── orderedList8.png │ │ └── orderedList9.png │ ├── Scripts │ │ └── _references.js │ ├── Models │ │ ├── Enumerations.cs │ │ └── ScheduleOccurrenceDTO.cs │ ├── Content │ │ ├── themes │ │ │ └── base │ │ │ │ ├── images │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ ├── ui-icons_cd0a0a_256x240.png │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ ├── minified │ │ │ │ ├── images │ │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ │ ├── ui-icons_cd0a0a_256x240.png │ │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ ├── jquery.ui.selectable.min.css │ │ │ │ ├── jquery.ui.progressbar.min.css │ │ │ │ ├── jquery.ui.autocomplete.min.css │ │ │ │ ├── jquery.ui.core.min.css │ │ │ │ ├── jquery.ui.accordion.min.css │ │ │ │ ├── jquery.ui.tabs.min.css │ │ │ │ ├── jquery.ui.resizable.min.css │ │ │ │ ├── jquery.ui.slider.min.css │ │ │ │ ├── jquery.ui.dialog.min.css │ │ │ │ └── jquery.ui.button.min.css │ │ │ │ ├── jquery.ui.all.css │ │ │ │ ├── jquery.ui.selectable.css │ │ │ │ ├── jquery.ui.progressbar.css │ │ │ │ ├── jquery.ui.base.css │ │ │ │ ├── jquery.ui.accordion.css │ │ │ │ ├── jquery.ui.resizable.css │ │ │ │ ├── jquery.ui.slider.css │ │ │ │ ├── jquery.ui.autocomplete.css │ │ │ │ ├── jquery.ui.dialog.css │ │ │ │ ├── jquery.ui.tabs.css │ │ │ │ ├── jquery.ui.core.css │ │ │ │ └── jquery.ui.button.css │ │ └── fullcalendar.print.css │ ├── App_Start │ │ ├── FilterConfig.cs │ │ ├── RouteConfig.cs │ │ └── BundleConfig.cs │ ├── Global.asax.cs │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── packages.config │ ├── README.txt │ ├── Properties │ │ └── AssemblyInfo.cs │ └── Repository │ │ └── ScheduleRepository.cs ├── packages │ ├── WebGrease.1.3.0 │ │ ├── tools │ │ │ └── WG.exe │ │ ├── lib │ │ │ ├── WebGrease.dll │ │ │ └── Antlr3.Runtime.dll │ │ ├── WebGrease.1.3.0.nupkg │ │ └── WebGrease.1.3.0.nuspec │ ├── jQuery.1.8.2 │ │ ├── jQuery.1.8.2.nupkg │ │ ├── jQuery.1.8.2.nuspec │ │ └── Tools │ │ │ ├── install.ps1 │ │ │ └── uninstall.ps1 │ ├── repositories.config │ ├── Modernizr.2.6.2 │ │ ├── Modernizr.2.6.2.nupkg │ │ ├── Tools │ │ │ ├── uninstall.ps1 │ │ │ └── install.ps1 │ │ └── Modernizr.2.6.2.nuspec │ ├── knockoutjs.2.2.0 │ │ ├── knockoutjs.2.2.0.nupkg │ │ └── knockoutjs.2.2.0.nuspec │ ├── ScheduleWidget.2.5.0 │ │ └── lib │ │ │ └── NET40 │ │ │ └── ScheduleWidget.dll │ ├── jQuery.Validation.1.10.0 │ │ ├── jQuery.Validation.1.10.0.nupkg │ │ └── jQuery.Validation.1.10.0.nuspec │ ├── jQuery.Fullcalendar.1.6.1 │ │ ├── jQuery.Fullcalendar.1.6.1.nupkg │ │ ├── content │ │ │ └── Content │ │ │ │ └── fullcalendar.print.css │ │ └── jQuery.Fullcalendar.1.6.1.nuspec │ ├── jQuery.UI.Combined.1.8.24 │ │ ├── jQuery.UI.Combined.1.8.24.nupkg │ │ ├── Tools │ │ │ ├── uninstall.ps1 │ │ │ └── install.ps1 │ │ ├── Content │ │ │ └── Content │ │ │ │ └── themes │ │ │ │ └── base │ │ │ │ ├── images │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ ├── ui-icons_cd0a0a_256x240.png │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ ├── minified │ │ │ │ ├── images │ │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ │ ├── ui-icons_2e83ff_256x240.png │ │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ │ ├── ui-icons_cd0a0a_256x240.png │ │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ │ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ │ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ │ │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png │ │ │ │ ├── jquery.ui.selectable.min.css │ │ │ │ ├── jquery.ui.progressbar.min.css │ │ │ │ ├── jquery.ui.autocomplete.min.css │ │ │ │ ├── jquery.ui.core.min.css │ │ │ │ ├── jquery.ui.accordion.min.css │ │ │ │ ├── jquery.ui.tabs.min.css │ │ │ │ ├── jquery.ui.resizable.min.css │ │ │ │ ├── jquery.ui.slider.min.css │ │ │ │ ├── jquery.ui.dialog.min.css │ │ │ │ └── jquery.ui.button.min.css │ │ │ │ ├── jquery.ui.all.css │ │ │ │ ├── jquery.ui.selectable.css │ │ │ │ ├── jquery.ui.progressbar.css │ │ │ │ ├── jquery.ui.base.css │ │ │ │ ├── jquery.ui.accordion.css │ │ │ │ ├── jquery.ui.resizable.css │ │ │ │ ├── jquery.ui.slider.css │ │ │ │ ├── jquery.ui.autocomplete.css │ │ │ │ ├── jquery.ui.dialog.css │ │ │ │ ├── jquery.ui.tabs.css │ │ │ │ ├── jquery.ui.core.css │ │ │ │ └── jquery.ui.button.css │ │ └── jQuery.UI.Combined.1.8.24.nuspec │ ├── Microsoft.AspNet.Mvc.4.0.20710.0 │ │ ├── lib │ │ │ └── net40 │ │ │ │ └── System.Web.Mvc.dll │ │ ├── Microsoft.AspNet.Mvc.4.0.20710.0.nupkg │ │ └── Microsoft.AspNet.Mvc.4.0.20710.0.nuspec │ ├── Microsoft.AspNet.Razor.2.0.20715.0 │ │ ├── lib │ │ │ └── net40 │ │ │ │ └── System.Web.Razor.dll │ │ ├── Microsoft.AspNet.Razor.2.0.20715.0.nupkg │ │ └── Microsoft.AspNet.Razor.2.0.20715.0.nuspec │ ├── Microsoft.AspNet.WebPages.2.0.20710.0 │ │ ├── lib │ │ │ └── net40 │ │ │ │ ├── System.Web.Helpers.dll │ │ │ │ ├── System.Web.WebPages.dll │ │ │ │ ├── System.Web.WebPages.Razor.dll │ │ │ │ └── System.Web.WebPages.Deployment.dll │ │ ├── Microsoft.AspNet.WebPages.2.0.20710.0.nupkg │ │ └── Microsoft.AspNet.WebPages.2.0.20710.0.nuspec │ ├── Microsoft.AspNet.Web.Optimization.1.0.0 │ │ ├── lib │ │ │ └── net40 │ │ │ │ └── System.Web.Optimization.dll │ │ ├── Microsoft.AspNet.Web.Optimization.1.0.0.nupkg │ │ └── Microsoft.AspNet.Web.Optimization.1.0.0.nuspec │ ├── Microsoft.Web.Infrastructure.1.0.0.0 │ │ ├── Microsoft.Web.Infrastructure.1.0.0.0.nupkg │ │ ├── lib │ │ │ └── net40 │ │ │ │ └── Microsoft.Web.Infrastructure.dll │ │ └── Microsoft.Web.Infrastructure.1.0.0.0.nuspec │ ├── Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0 │ │ ├── lib │ │ │ └── net40 │ │ │ │ └── Microsoft.Web.Mvc.FixedDisplayModes.dll │ │ ├── Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0.nupkg │ │ └── Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0.nuspec │ ├── Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0 │ │ ├── Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0.nupkg │ │ └── Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0.nuspec │ └── Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0 │ │ ├── Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0.nupkg │ │ └── Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0.nuspec └── ScheduleWidgetSampleProject.sln ├── ScheduleWidget ├── packages │ └── repositories.config ├── ScheduleWidget.Sandbox │ ├── App.config │ ├── Program.cs │ ├── DailyScenario2.cs │ ├── MonthlyScenario2.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── DailyScenario1.cs │ ├── WeeklyScenario1.cs │ ├── WeeklyScenario2.cs │ └── MonthlyScenario1.cs ├── ScheduleWidget │ ├── ScheduledEvents │ │ ├── WeekInRange.cs │ │ ├── FrequencyBuilder │ │ │ ├── IEventFrequencyBuilder.cs │ │ │ ├── ConcreteBuilders │ │ │ │ ├── DailyEventBuilder.cs │ │ │ │ ├── OneTimeEventBuilder.cs │ │ │ │ ├── DailyEventWithFirstDateTimeBuilder.cs │ │ │ │ ├── WeeklyEventBuilder.cs │ │ │ │ ├── QuarterlyEventBuilder.cs │ │ │ │ ├── MonthlyEventBuilder.cs │ │ │ │ └── YearlyEventBuilder.cs │ │ │ └── EventFrequencyBuilder.cs │ │ ├── ISchedule.cs │ │ ├── Anniversary.cs │ │ ├── DayOfWeekEnumComparer.cs │ │ ├── RangeInYear.cs │ │ └── Utilities.cs │ ├── TemporalExpressions │ │ ├── TemporalExpression.cs │ │ ├── UnionTE.cs │ │ ├── IntersectionTE.cs │ │ ├── CollectionTE.cs │ │ ├── DateTE.cs │ │ ├── AnniversaryTE.cs │ │ ├── DifferenceTE.cs │ │ ├── DayIntervalTE.cs │ │ ├── FixedHolidayTE.cs │ │ ├── DayOfMonthTE.cs │ │ ├── YearTE.cs │ │ ├── FloatingHolidayTE.cs │ │ ├── DayOfWeekTE.cs │ │ └── RangeEachYearTE.cs │ ├── Enums │ │ ├── QuarterlyIntervalEnum.cs │ │ ├── DayOfWeekEnum.cs │ │ ├── QuarterEnum.cs │ │ ├── MonthlyIntervalEnum.cs │ │ ├── FrequencyTypeEnum.cs │ │ └── EnumExtensions.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── ScheduleWidget.csproj ├── manifest.nuspec ├── ScheduleWidget.UnitTest │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── SimpleDateTest.cs │ ├── DayOfMonthTests.cs │ ├── AnniversaryTests.cs │ ├── OneTimeOnlyTests.cs │ ├── FixedHolidayTests.cs │ └── FloatingHolidayTests.cs └── ScheduleWidget.sln ├── .gitattributes └── LICENSE.txt /ScheduleWidgetNuGet/ScheduleWidget.bat: -------------------------------------------------------------------------------- 1 | nuget.exe pack ScheduleWidget.nuspec -------------------------------------------------------------------------------- /ScheduleWidgetNuGet40/ScheduleWidget.bat: -------------------------------------------------------------------------------- 1 | nuget.exe pack ScheduleWidget.nuspec -------------------------------------------------------------------------------- /ScheduleWidgetNuGet/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetNuGet/NuGet.exe -------------------------------------------------------------------------------- /ScheduleWidgetNuGet40/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetNuGet40/NuGet.exe -------------------------------------------------------------------------------- /ScheduleWidgetNuGet/ScheduleWidget.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetNuGet/ScheduleWidget.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } -------------------------------------------------------------------------------- /ScheduleWidgetNuGet40/ScheduleWidget.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetNuGet40/ScheduleWidget.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Views/Shared/DisplayTemplates/TimeSpan.cshtml: -------------------------------------------------------------------------------- 1 | @Html.Label(Model.ToString("hh':'mm")) -------------------------------------------------------------------------------- /ScheduleWidgetNuGet/ScheduleWidget.2.1.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetNuGet/ScheduleWidget.2.1.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetNuGet/ScheduleWidget.2.2.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetNuGet/ScheduleWidget.2.2.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetNuGet40/ScheduleWidget.2.5.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetNuGet40/ScheduleWidget.2.5.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="ScheduleWidgetSampleProject.MvcApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /ScheduleWidget/packages/repositories.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/tools/WG.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/tools/WG.exe -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/favicon.ico -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.1.8.2/jQuery.1.8.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.1.8.2/jQuery.1.8.2.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/lib/WebGrease.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/lib/WebGrease.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/accent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/accent.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/bullet.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Views/Shared/EditorTemplates/TimeSpan.cshtml: -------------------------------------------------------------------------------- 1 | @model TimeSpan 2 | @Html.TextBox("", Model.ToString("hh':'mm"), new { @class = "textbox narrow" }) -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/repositories.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Modernizr.2.6.2/Modernizr.2.6.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Modernizr.2.6.2/Modernizr.2.6.2.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/WebGrease.1.3.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/WebGrease.1.3.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/lib/Antlr3.Runtime.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/lib/Antlr3.Runtime.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/knockoutjs.2.2.0/knockoutjs.2.2.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/knockoutjs.2.2.0/knockoutjs.2.2.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/heroAccent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/heroAccent.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Scripts/_references.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Scripts/_references.js -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList0.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList1.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList2.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList3.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList4.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList5.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList6.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList7.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList8.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Images/orderedList9.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Models/Enumerations.cs: -------------------------------------------------------------------------------- 1 | namespace ScheduleWidgetSampleProject.Models 2 | { 3 | public enum RecurrencePattern 4 | { 5 | OneTime, 6 | Repeat 7 | }; 8 | } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/ScheduleWidget.2.5.0/lib/NET40/ScheduleWidget.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/ScheduleWidget.2.5.0/lib/NET40/ScheduleWidget.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.Validation.1.10.0/jQuery.Validation.1.10.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.Validation.1.10.0/jQuery.Validation.1.10.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.Fullcalendar.1.6.1/jQuery.Fullcalendar.1.6.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.Fullcalendar.1.6.1/jQuery.Fullcalendar.1.6.1.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/jQuery.UI.Combined.1.8.24.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/jQuery.UI.Combined.1.8.24.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.4.0.20710.0/lib/net40/System.Web.Mvc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.4.0.20710.0/lib/net40/System.Web.Mvc.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Razor.2.0.20715.0/lib/net40/System.Web.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Razor.2.0.20715.0/lib/net40/System.Web.Razor.dll -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/WeekInRange.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace ScheduleWidget.ScheduledEvents 3 | { 4 | internal class WeekInRange 5 | { 6 | public int WeekNumber { get; set; } 7 | public int Year { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.4.0.20710.0/Microsoft.AspNet.Mvc.4.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.4.0.20710.0/Microsoft.AspNet.Mvc.4.0.20710.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.Helpers.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.Helpers.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Modernizr.2.6.2/Tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # Update the _references.js file 6 | Remove-Reference $scriptsFolderProjectItem $modernizrFileNameRegEx -------------------------------------------------------------------------------- /ScheduleWidgetNuGet/readme.txt: -------------------------------------------------------------------------------- 1 | How to build a new nupkg for upload to nuget: 2 | 3 | (1) Download nuget.exe and drop in this folder. 4 | (2) Edit the ScheduleWidget.nuspec file to rev up the version 5 | (3) Run ScheduleWidget.bat 6 | (4) Verify nupkg created. 7 | 8 | Deploy to nuget. -------------------------------------------------------------------------------- /ScheduleWidgetNuGet40/readme.txt: -------------------------------------------------------------------------------- 1 | How to build a new nupkg for upload to nuget: 2 | 3 | (1) Download nuget.exe and drop in this folder. 4 | (2) Edit the ScheduleWidget.nuspec file to rev up the version 5 | (3) Run ScheduleWidget.bat 6 | (4) Verify nupkg created. 7 | 8 | Deploy to nuget. -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Razor.2.0.20715.0/Microsoft.AspNet.Razor.2.0.20715.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Razor.2.0.20715.0/Microsoft.AspNet.Razor.2.0.20715.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # Update the _references.js file 6 | Remove-Reference $scriptsFolderProjectItem $juiFileNameRegEx -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/System.Web.Optimization.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/System.Web.Optimization.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Razor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Razor.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.Web.Infrastructure.1.0.0.0/Microsoft.Web.Infrastructure.1.0.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.Web.Infrastructure.1.0.0.0/Microsoft.Web.Infrastructure.1.0.0.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.Web.Infrastructure.1.0.0.0/lib/net40/Microsoft.Web.Infrastructure.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.Web.Infrastructure.1.0.0.0/lib/net40/Microsoft.Web.Infrastructure.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/Microsoft.AspNet.WebPages.2.0.20710.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/Microsoft.AspNet.WebPages.2.0.20710.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Deployment.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Deployment.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Web.Optimization.1.0.0/Microsoft.AspNet.Web.Optimization.1.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Web.Optimization.1.0.0/Microsoft.AspNet.Web.Optimization.1.0.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/IEventFrequencyBuilder.cs: -------------------------------------------------------------------------------- 1 | using ScheduleWidget.TemporalExpressions; 2 | 3 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder 4 | { 5 | public interface IEventFrequencyBuilder 6 | { 7 | UnionTE Create(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/lib/net40/Microsoft.Web.Mvc.FixedDisplayModes.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/lib/net40/Microsoft.Web.Mvc.FixedDisplayModes.dll -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/TemporalExpression.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | 4 | namespace ScheduleWidget.TemporalExpressions 5 | { 6 | public abstract class TemporalExpression 7 | { 8 | public abstract bool Includes(DateTime aDate); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Views/Shared/EditorTemplates/DateTime.cshtml: -------------------------------------------------------------------------------- 1 | @model DateTime? 2 | @if (Model.HasValue) 3 | { 4 | @Html.TextBox("", Model.Value.ToString("MM/dd/yyyy"), new { @class = "textbox narrow" }) 5 | } 6 | else 7 | { 8 | @Html.TextBox("", "", new { @class = "textbox narrow" }) 9 | } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0/Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0/Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Models/ScheduleOccurrenceDTO.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidgetSampleProject.Models 4 | { 5 | public class ScheduleOccurrenceDTO 6 | { 7 | public int ScheduleID { get; set; } 8 | public DateTime OccurrenceDate { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model System.Web.Mvc.HandleErrorInfo 2 | 3 | @{ 4 | ViewBag.Title = "Error"; 5 | } 6 | 7 | 8 | Error. 9 | An error occurred while processing your request. 10 | 11 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0.nupkg -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamesstill/ScheduleWidget/HEAD/ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.selectable.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.selectable.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.selectable.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.selectable.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.all.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Theming 9 | */ 10 | @import "jquery.ui.base.css"; 11 | @import "jquery.ui.theme.css"; 12 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.progressbar.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.progressbar.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/App_Start/FilterConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Mvc; 3 | 4 | namespace ScheduleWidgetSampleProject 5 | { 6 | public class FilterConfig 7 | { 8 | public static void RegisterGlobalFilters(GlobalFilterCollection filters) 9 | { 10 | filters.Add(new HandleErrorAttribute()); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.all.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Theming 9 | */ 10 | @import "jquery.ui.base.css"; 11 | @import "jquery.ui.theme.css"; 12 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.progressbar.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.progressbar.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.selectable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Selectable 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Selectable#theming 9 | */ 10 | .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } 11 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | if ($scriptsFolderProjectItem -eq $null) { 6 | # No Scripts folder 7 | Write-Host "No Scripts folder found" 8 | exit 9 | } 10 | 11 | # Update the _references.js file 12 | AddOrUpdate-Reference $scriptsFolderProjectItem $juiFileNameRegEx $juiFileName -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Modernizr.2.6.2/Tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | if ($scriptsFolderProjectItem -eq $null) { 6 | # No Scripts folder 7 | Write-Host "No Scripts folder found" 8 | exit 9 | } 10 | 11 | # Update the _references.js file 12 | AddOrUpdate-Reference $scriptsFolderProjectItem $modernizrFileNameRegEx $modernizrFileName -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.selectable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Selectable 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Selectable#theming 9 | */ 10 | .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } 11 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.progressbar.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Progressbar 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Progressbar#theming 9 | */ 10 | .ui-progressbar { height:2em; text-align: left; overflow: hidden; } 11 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.progressbar.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Progressbar 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Progressbar#theming 9 | */ 10 | .ui-progressbar { height:2em; text-align: left; overflow: hidden; } 11 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/Enums/QuarterlyIntervalEnum.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ScheduleWidget.Enums 7 | { 8 | /// 9 | /// The month(s) in which a quarterly event recurs - First / Second / Last month of the quarter 10 | /// 11 | [Flags] 12 | public enum QuarterlyIntervalEnum 13 | { 14 | First = 1, 15 | Second = 2, 16 | Last = 4 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/Enums/DayOfWeekEnum.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.Enums 4 | { 5 | [Flags] 6 | public enum DayOfWeekEnum 7 | { 8 | Sun = 1, 9 | Mon = 2, 10 | Tue = 4, 11 | Wed = 8, 12 | Thu = 16, 13 | Fri = 32, 14 | Sat = 64, 15 | EveryDay = Sun | Mon | Tue | Wed | Thu | Fri | Sat, 16 | WorkDay = Mon | Tue | Wed | Thu | Fri, 17 | MWF = Mon | Wed | Fri, 18 | TuTh = Tue | Thu 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/Enums/QuarterEnum.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ScheduleWidget.Enums 7 | { 8 | /// 9 | /// The actual Quarter (not interval!) the event occurs in - First, second, Third or Fourth. 10 | /// 11 | [Flags] 12 | public enum QuarterEnum 13 | { 14 | //None = 0, 15 | First = 1, 16 | Second = 2, 17 | Third = 4, 18 | Fourth = 8, 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/Enums/MonthlyIntervalEnum.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.Enums 4 | { 5 | /// 6 | /// The week(s) in which a monthly event recurs, e.g. every 3rd week, or the last week, or the first and second weeks 7 | /// 8 | [Flags] 9 | public enum MonthlyIntervalEnum 10 | { 11 | First = 1, 12 | Second = 2, 13 | Third = 4, 14 | Fourth = 8, 15 | Last = 16, 16 | EveryWeek = First | Second | Third | Fourth | Last 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/ISchedule.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace ScheduleWidget.ScheduledEvents 5 | { 6 | public interface ISchedule 7 | { 8 | bool IsOccurring(DateTime aDate); 9 | DateTime? PreviousOccurrence(DateTime aDate); 10 | DateTime? PreviousOccurrence(DateTime aDate, DateRange during); 11 | DateTime? NextOccurrence(DateTime aDate); 12 | DateTime? NextOccurrence(DateTime aDate, DateRange during); 13 | IEnumerable Occurrences(DateRange during); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/UnionTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | 4 | namespace ScheduleWidget.TemporalExpressions 5 | { 6 | public class UnionTE : CollectionTE 7 | { 8 | /// 9 | /// Returns true if the date is included anywhere in the expression 10 | /// 11 | /// 12 | /// 13 | public override bool Includes(DateTime aDate) 14 | { 15 | return Expressions.Any(e => e.Includes(aDate)); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/IntersectionTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | 4 | namespace ScheduleWidget.TemporalExpressions 5 | { 6 | public class IntersectionTE : CollectionTE 7 | { 8 | /// 9 | /// Returns true if the date is included in all of the expressions 10 | /// 11 | /// 12 | /// 13 | public override bool Includes(DateTime aDate) 14 | { 15 | return Expressions.All(e => e.Includes(aDate)); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | using System.Runtime.InteropServices; 3 | 4 | // Setting ComVisible to false makes the types in this assembly not visible 5 | // to COM components. If you need to access a type in this assembly from 6 | // COM, set the ComVisible attribute to true on that type. 7 | [assembly: ComVisible(false)] 8 | 9 | // The following GUID is for the ID of the typelib if this project is exposed to COM 10 | [assembly: Guid("5b0fae42-ecee-4f73-a4ce-356943049282")] 11 | 12 | 13 | [assembly: InternalsVisibleTo("ScheduleWidget.UnitTest")] -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/Anniversary.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | 4 | namespace ScheduleWidget.ScheduledEvents 5 | { 6 | /// 7 | /// An anniversary is a day that commemorates or celebrates a past event that 8 | /// occurs on the same day of the year as the initial event. For example, a 9 | /// birthday that occurs every Aug 1 can migrate over days of the week year 10 | /// after year but always falls on the same month and day. 11 | /// 12 | [Serializable] 13 | public class Anniversary 14 | { 15 | public int Month { get; set; } 16 | public int Day { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/ConcreteBuilders/DailyEventBuilder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.TemporalExpressions; 4 | 5 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder.ConcreteBuilders 6 | { 7 | public class DailyEventBuilder : IEventFrequencyBuilder 8 | { 9 | public UnionTE Create() 10 | { 11 | var union = new UnionTE(); 12 | 13 | foreach (DayOfWeekEnum day in Enum.GetValues(typeof(DayOfWeekEnum))) 14 | { 15 | union.Add(new DayOfWeekTE(day)); 16 | } 17 | 18 | return union; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /ScheduleWidget/manifest.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ScheduleWidget 5 | 2.5.1 6 | James Still 7 | James Still, Dajo Hein, Kurt Mang, Raghav Khunger 8 | ScheduleWidget handles recurring events for calendars 9 | false 10 | 11 | .netstandard and .net framework schedule recurring events calendars 12 | en-US 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.autocomplete.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.autocomplete.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px} -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/CollectionTE.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace ScheduleWidget.TemporalExpressions 4 | { 5 | public abstract class CollectionTE : TemporalExpression 6 | { 7 | protected CollectionTE() 8 | { 9 | Expressions = new List(); 10 | } 11 | 12 | public ICollection Expressions { get; set; } 13 | 14 | /// 15 | /// Adds a temporal expression to the list 16 | /// 17 | /// Temporal expression to add. 18 | public void Add(TemporalExpression expr) 19 | { 20 | Expressions.Add(expr); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Global.asax.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | using System.Web.Optimization; 3 | using System.Web.Routing; 4 | 5 | namespace ScheduleWidgetSampleProject 6 | { 7 | // Note: For instructions on enabling IIS6 or IIS7 classic mode, 8 | // visit http://go.microsoft.com/?LinkId=9394801 9 | 10 | public class MvcApplication : System.Web.HttpApplication 11 | { 12 | protected void Application_Start() 13 | { 14 | AreaRegistration.RegisterAllAreas(); 15 | 16 | FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 17 | RouteConfig.RegisterRoutes(RouteTable.Routes); 18 | BundleConfig.RegisterBundles(BundleTable.Bundles); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.autocomplete.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.autocomplete.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px} -------------------------------------------------------------------------------- /ScheduleWidgetNuGet40/ScheduleWidget.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ScheduleWidget 5 | 2.5.0 6 | James Still 7 | James Still, Dajo Hein, Kurt Mang, Raghav Khunger 8 | ScheduleWidget handles recurring events for calendars 9 | false 10 | .net451 schedule recurring events calendars 11 | en-US 12 | http://www.squarewidget.com/schedulewidget 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.base.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Theming 9 | */ 10 | @import url("jquery.ui.core.css"); 11 | 12 | @import url("jquery.ui.accordion.css"); 13 | @import url("jquery.ui.autocomplete.css"); 14 | @import url("jquery.ui.button.css"); 15 | @import url("jquery.ui.datepicker.css"); 16 | @import url("jquery.ui.dialog.css"); 17 | @import url("jquery.ui.progressbar.css"); 18 | @import url("jquery.ui.resizable.css"); 19 | @import url("jquery.ui.selectable.css"); 20 | @import url("jquery.ui.slider.css"); 21 | @import url("jquery.ui.tabs.css"); 22 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/WebGrease.1.3.0/WebGrease.1.3.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WebGrease 5 | 1.3.0 6 | webgrease@microsoft.com 7 | Microsoft 8 | http://www.microsoft.com/web/webpi/eula/msn_webgrease_eula.htm 9 | true 10 | Web Grease is a suite of tools for optimizing javascript, css files and images. 11 | en-US 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/Enums/FrequencyTypeEnum.cs: -------------------------------------------------------------------------------- 1 | namespace ScheduleWidget.Enums 2 | { 3 | /// 4 | /// The frequency at which an event repeats - every Day, Week, Month, Quarter, Year etc. 5 | /// Cannot be combined like Monthly, Daily etc. (XOR type) 6 | /// 7 | public enum FrequencyTypeEnum 8 | { 9 | None = 0, 10 | Daily = 1, 11 | Weekly = 2, 12 | Monthly = 4, 13 | Quarterly = 8, 14 | Yearly = 16, 15 | 16 | // ** This is not the way to handle this. Check the DayOfWeekEnum instead. ** 17 | //EveryWeekDay = 32, // Every weekday (Monday to Friday) 18 | //EveryMonWedFri = 64, // Every Monday, Wednesday and Friday 19 | //EveryTuTh = 128 // Every Tuesday and Thursday 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.base.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Theming 9 | */ 10 | @import url("jquery.ui.core.css"); 11 | 12 | @import url("jquery.ui.accordion.css"); 13 | @import url("jquery.ui.autocomplete.css"); 14 | @import url("jquery.ui.button.css"); 15 | @import url("jquery.ui.datepicker.css"); 16 | @import url("jquery.ui.dialog.css"); 17 | @import url("jquery.ui.progressbar.css"); 18 | @import url("jquery.ui.resizable.css"); 19 | @import url("jquery.ui.selectable.css"); 20 | @import url("jquery.ui.slider.css"); 21 | @import url("jquery.ui.tabs.css"); 22 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Views/Home/ScheduleOccurrence.cshtml: -------------------------------------------------------------------------------- 1 | @model ScheduleWidgetSampleProject.Models.ScheduleOccurrenceDTO 2 | 3 | @{ 4 | ViewBag.Title = "ScheduleOccurrence"; 5 | } 6 | 7 | Schedule Occurrence 8 | 9 | 10 | Schedule Occurrence 11 | 12 | 13 | @Html.DisplayNameFor(model => model.ScheduleID) 14 | @Html.DisplayFor(model => model.ScheduleID) 15 | 16 | 17 | 18 | @Html.DisplayNameFor(model => model.OccurrenceDate) 19 | @Html.DisplayFor(model => model.OccurrenceDate) 20 | 21 | 22 | 23 | Now that I have the unique schedule ID and the occurrence date I can do 24 | something with this particular event. 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.Web.Infrastructure.1.0.0.0/Microsoft.Web.Infrastructure.1.0.0.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.Web.Infrastructure 5 | 1.0.0.0 6 | Microsoft.Web.Infrastructure 7 | Microsoft 8 | Microsoft 9 | http://go.microsoft.com/fwlink/?LinkID=214339 10 | http://www.asp.net 11 | false 12 | This package contains the Microsoft.Web.Infrastructure assembly that lets you dynamically register HTTP modules at run time. 13 | en-US 14 | 15 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/knockoutjs.2.2.0/knockoutjs.2.2.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | knockoutjs 5 | 2.2.0 6 | Steven Sanderson 7 | Steven Sanderson 8 | http://www.opensource.org/licenses/mit-license.php 9 | http://knockoutjs.com/ 10 | http://github.com/SteveSanderson/knockout.nuget/raw/master/logo.png 11 | false 12 | A JavaScript MVVM library to help you create rich, dynamic user interfaces with clean maintainable code 13 | en-US 14 | knockout mvvm 15 | 16 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0/Microsoft.jQuery.Unobtrusive.Ajax.2.0.30116.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.jQuery.Unobtrusive.Ajax 5 | 2.0.30116.0 6 | Microsoft jQuery Unobtrusive Ajax 7 | Microsoft 8 | Microsoft 9 | http://www.microsoft.com/web/webpi/eula/aspnet_and_web_tools_2012_EULA_RTM_ENU.htm 10 | true 11 | jQuery plugin that lets you unobtrusively set up jQuery Ajax. 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/fullcalendar.print.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * FullCalendar v1.6.1 Print Stylesheet 3 | * Docs & License: http://arshaw.com/fullcalendar/ 4 | * (c) 2013 Adam Shaw 5 | */ 6 | 7 | /* 8 | * Include this stylesheet on your page to get a more printer-friendly calendar. 9 | * When including this stylesheet, use the media='print' attribute of the tag. 10 | * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. 11 | */ 12 | 13 | 14 | /* Events 15 | -----------------------------------------------------*/ 16 | 17 | .fc-event { 18 | background: #fff !important; 19 | color: #000 !important; 20 | } 21 | 22 | /* for vertical events */ 23 | 24 | .fc-event-bg { 25 | display: none !important; 26 | } 27 | 28 | .fc-event .ui-resizable-handle { 29 | display: none !important; 30 | } 31 | 32 | 33 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.Fullcalendar.1.6.1/content/Content/fullcalendar.print.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * FullCalendar v1.6.1 Print Stylesheet 3 | * Docs & License: http://arshaw.com/fullcalendar/ 4 | * (c) 2013 Adam Shaw 5 | */ 6 | 7 | /* 8 | * Include this stylesheet on your page to get a more printer-friendly calendar. 9 | * When including this stylesheet, use the media='print' attribute of the tag. 10 | * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. 11 | */ 12 | 13 | 14 | /* Events 15 | -----------------------------------------------------*/ 16 | 17 | .fc-event { 18 | background: #fff !important; 19 | color: #000 !important; 20 | } 21 | 22 | /* for vertical events */ 23 | 24 | .fc-event-bg { 25 | display: none !important; 26 | } 27 | 28 | .fc-event .ui-resizable-handle { 29 | display: none !important; 30 | } 31 | 32 | 33 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.jQuery.Unobtrusive.Validation 5 | 2.0.30116.0 6 | Microsoft jQuery Unobtrusive Validation 7 | Microsoft 8 | Microsoft 9 | http://www.microsoft.com/web/webpi/eula/aspnet_and_web_tools_2012_EULA_RTM_ENU.htm 10 | true 11 | jQuery plugin that unobtrusively sets up jQuery.Validation. 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/DateTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.TemporalExpressions 4 | { 5 | /// 6 | /// Compares two specific dates exactly 7 | /// 8 | public class DateTE : TemporalExpression 9 | { 10 | private DateTime _specificDate; 11 | 12 | /// 13 | /// The date value 14 | /// 15 | /// 16 | public DateTE(DateTime aDate) 17 | { 18 | _specificDate = aDate; 19 | } 20 | 21 | /// 22 | /// Returns true if the date matches this date value 23 | /// 24 | /// 25 | /// 26 | public override bool Includes(DateTime aDate) 27 | { 28 | return (_specificDate.Date == aDate.Date); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.core.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.core.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px);clip:rect(1px,1px,1px,1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.accordion.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.accordion.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0!important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.core.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.core.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px);clip:rect(1px,1px,1px,1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.accordion.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.accordion.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0!important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block} -------------------------------------------------------------------------------- /ScheduleWidgetNuGet/ScheduleWidget.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ScheduleWidget 5 | 2.2.0 6 | James Still 7 | James Still, Dajo Hein, Kurt Mang 8 | ScheduleWidget handles recurring events for calendars 9 | false 10 | http://www.squarewidget.com/schedulewidget 11 | http://www.opensource.org/licenses/mit-license.php 12 | 13 | 14 | 15 | .net45 schedule recurring events calendars 16 | en-US 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/AnniversaryTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.TemporalExpressions 4 | { 5 | /// 6 | /// An anniversary temporal expression is a day that commemorates or 7 | /// celebrates a past event that occurs on the same day of the year as 8 | /// the initial event. For example, a birthday that occurs every Aug 1 9 | /// can migrate over days of the week year after year but always falls 10 | /// on the same month and day. 11 | /// 12 | public class AnniversaryTE : YearTE 13 | { 14 | /// 15 | /// The month and day, e.g., "Aug 1 (Birthday)": 16 | /// var birthday = new AnniversaryTE(8, 1); 17 | /// 18 | /// 19 | /// 20 | public AnniversaryTE(int month, int day) 21 | : base(1, DateTime.Now.Year, month, day) 22 | { } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.Sandbox 4 | { 5 | class Program 6 | { 7 | static void Main(string[] args) 8 | { 9 | RunDailyScenarios(); 10 | RunWeeklyScenarios(); 11 | RunMonthlyScenarios(); 12 | 13 | Console.WriteLine(); 14 | Console.WriteLine("Finished running all scenarios. Press ENTER to exit."); 15 | Console.ReadLine(); 16 | } 17 | 18 | private static void RunDailyScenarios() 19 | { 20 | DailyScenario1.Run(); 21 | DailyScenario2.Run(); 22 | } 23 | 24 | private static void RunWeeklyScenarios() 25 | { 26 | WeeklyScenario1.Run(); 27 | WeeklyScenario2.Run(); 28 | } 29 | 30 | private static void RunMonthlyScenarios() 31 | { 32 | MonthlyScenario1.Run(); 33 | MonthlyScenario2.Run(); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Web.Optimization.1.0.0/Microsoft.AspNet.Web.Optimization.1.0.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.AspNet.Web.Optimization 5 | 1.0.0 6 | Microsoft ASP.NET Web Optimization Framework 7 | Microsoft 8 | Microsoft 9 | http://www.microsoft.com/web/webpi/eula/weboptimization_1_eula_ENU.htm 10 | true 11 | ASP.NET Optimization introduces a way to bundle and optimize css/js files. 12 | Microsoft AspNet optimization bundling minification 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Razor.2.0.20715.0/Microsoft.AspNet.Razor.2.0.20715.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.AspNet.Razor 5 | 2.0.20715.0 6 | Microsoft ASP.NET Razor 2 7 | Microsoft 8 | Microsoft 9 | http://www.microsoft.com/web/webpi/eula/WebPages_2_eula_ENU.htm 10 | http://www.asp.net/web-pages 11 | true 12 | This package contains the runtime assemblies for ASP.NET Web Pages. ASP.NET Web Pages and the new Razor syntax provide a fast, terse, clean and lightweight way to combine server code with HTML to create dynamic web content. 13 | en-US 14 | Microsoft AspNet WebPages AspNetWebPages Razor 15 | 16 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.tabs.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.tabs.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0!important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tabs .ui-tabs-hide{display:none!important} -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/DifferenceTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.TemporalExpressions 4 | { 5 | public class DifferenceTE : TemporalExpression 6 | { 7 | private readonly TemporalExpression _inclusiveExpression; 8 | private readonly TemporalExpression _exclusiveExpression; 9 | 10 | public DifferenceTE(TemporalExpression inclusiveExpression, TemporalExpression exclusiveExpression) 11 | { 12 | _inclusiveExpression = inclusiveExpression; 13 | _exclusiveExpression = exclusiveExpression; 14 | } 15 | 16 | /// 17 | /// Returns true if the inclusive expression is true and the exclusive expression is false 18 | /// 19 | /// 20 | /// 21 | public override bool Includes(DateTime aDate) 22 | { 23 | return (_inclusiveExpression.Includes(aDate) && !_exclusiveExpression.Includes(aDate)); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.resizable.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.resizable.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.slider.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.slider.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.tabs.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.tabs.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0!important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tabs .ui-tabs-hide{display:none!important} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.resizable.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.resizable.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.slider.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.slider.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScheduleWidgetSampleProject", "ScheduleWidgetSampleProject\ScheduleWidgetSampleProject.csproj", "{DB858331-5A78-4C1C-A3BC-B6048581327E}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {DB858331-5A78-4C1C-A3BC-B6048581327E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {DB858331-5A78-4C1C-A3BC-B6048581327E}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {DB858331-5A78-4C1C-A3BC-B6048581327E}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {DB858331-5A78-4C1C-A3BC-B6048581327E}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2012 James Still 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/DayOfWeekEnumComparer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using ScheduleWidget.Enums; 3 | 4 | namespace ScheduleWidget.ScheduledEvents 5 | { 6 | public class DayOfWeekEnumComparer : IComparer 7 | { 8 | public static int Rank(DayOfWeekEnum firstDayOfWeek, DayOfWeekEnum dayOfWeek) 9 | { 10 | return (int)dayOfWeek + (dayOfWeek < firstDayOfWeek ? EnumExtensions.DayOfWeekMaxBitField + 1 : 0); 11 | } 12 | 13 | public static int Compare(DayOfWeekEnum firstDayOfWeek, DayOfWeekEnum x, DayOfWeekEnum y) 14 | { 15 | return Rank(firstDayOfWeek, x).CompareTo(Rank(firstDayOfWeek, y)); 16 | } 17 | 18 | DayOfWeekEnum firstDayOfWeek; 19 | public DayOfWeekEnumComparer(DayOfWeekEnum firstDayOfWeek) 20 | { 21 | this.firstDayOfWeek = firstDayOfWeek; 22 | } 23 | 24 | public int Compare(DayOfWeekEnum x, DayOfWeekEnum y) 25 | { 26 | return DayOfWeekEnumComparer.Compare(this.firstDayOfWeek, x, y); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.WebPages.2.0.20710.0/Microsoft.AspNet.WebPages.2.0.20710.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.AspNet.WebPages 5 | 2.0.20710.0 6 | Microsoft ASP.NET Web Pages 2 7 | Microsoft 8 | Microsoft 9 | http://www.microsoft.com/web/webpi/eula/WebPages_2_eula_ENU.htm 10 | http://www.asp.net/web-pages 11 | true 12 | This package contains core runtime assemblies shared between ASP.NET MVC and ASP.NET Web Pages. 13 | en-US 14 | Microsoft AspNet WebPages AspNetWebPages 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.1.8.2/jQuery.1.8.2.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | jQuery 5 | 1.8.2 6 | jQuery 7 | John Resig 8 | John Resig 9 | http://jquery.org/license 10 | http://jquery.com/ 11 | false 12 | jQuery is a new kind of JavaScript Library. 13 | jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. 14 | jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. 15 | en-US 16 | jQuery 17 | 18 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/ConcreteBuilders/OneTimeEventBuilder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.TemporalExpressions; 4 | 5 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder.ConcreteBuilders 6 | { 7 | public class OneTimeEventBuilder : IEventFrequencyBuilder 8 | { 9 | private readonly Event _event; 10 | 11 | public OneTimeEventBuilder(Event aEvent) 12 | { 13 | _event = aEvent; 14 | } 15 | 16 | /// 17 | /// No frequency means a one-time only event 18 | /// 19 | /// 20 | public UnionTE Create() 21 | { 22 | var union = new UnionTE(); 23 | if (_event.FrequencyTypeOptions == FrequencyTypeEnum.None) 24 | { 25 | if (_event.OneTimeOnlyEventDate.HasValue) 26 | { 27 | union.Add(new DateTE(_event.OneTimeOnlyEventDate.Value)); 28 | } 29 | } 30 | return union; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/App_Start/RouteConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Mvc; 2 | using System.Web.Routing; 3 | 4 | namespace ScheduleWidgetSampleProject 5 | { 6 | public class RouteConfig 7 | { 8 | public static void RegisterRoutes(RouteCollection routes) 9 | { 10 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 11 | 12 | routes.MapRoute( 13 | "CreateSchedule", 14 | "Home/CreateSchedule/{eventDate}", 15 | new {controller = "Home", action = "CreateSchedule"} 16 | ); 17 | 18 | routes.MapRoute( 19 | "ScheduleOccurrence", 20 | "Home/ScheduleOccurrence/{id}/{eventDate}", 21 | new {controller = "Home", action = "ScheduleOccurrence"} 22 | ); 23 | 24 | routes.MapRoute( 25 | name: "Default", 26 | url: "{controller}/{action}/{id}", 27 | defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional} 28 | ); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0/Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.AspNet.Mvc.FixedDisplayModes 5 | 1.0.0 6 | Microsoft ASP.NET MVC Fixed DisplayModes 7 | Microsoft 8 | Microsoft 9 | http://www.microsoft.com/web/webpi/eula/mvc4extensions_prerelease_eula.htm 10 | http://www.asp.net/mvc 11 | true 12 | This package contains a workaround for a bug affecting mobile view caching in ASP.NET MVC 4. More information is available at http://www.asp.net/whitepapers/mvc4-release-notes. 13 | en-US 14 | Microsoft AspNet Mvc AspNetMvc 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/DayIntervalTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | 4 | namespace ScheduleWidget.TemporalExpressions 5 | { 6 | public class DayIntervalTE : TemporalExpression 7 | { 8 | private readonly int _dayIntervals; 9 | private readonly DateTime _firstDateTime; 10 | 11 | /// 12 | /// Every n day(s) 13 | /// 14 | /// Day interval. E.g., Every 1 day, every 2 days, .... , every n days. 15 | /// To check a day that comes under expected day interval. 16 | public DayIntervalTE(int dayIntervals, DateTime firstDateTime) 17 | { 18 | _dayIntervals = dayIntervals; 19 | _firstDateTime = firstDateTime.Date; 20 | } 21 | 22 | public override bool Includes(DateTime aDate) 23 | { 24 | if (aDate < _firstDateTime) 25 | { 26 | return false; 27 | } 28 | return (aDate - _firstDateTime).Days % _dayIntervals == 0; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/ConcreteBuilders/DailyEventWithFirstDateTimeBuilder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.TemporalExpressions; 4 | 5 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder.ConcreteBuilders 6 | { 7 | public class DailyEventWithFirstDateTimeBuilder : IEventFrequencyBuilder 8 | { 9 | private readonly Event _event; 10 | 11 | public DailyEventWithFirstDateTimeBuilder(Event aEvent) 12 | { 13 | //Assigning default value to day interval if the value is 0. 14 | if (aEvent.RepeatInterval == 0) 15 | aEvent.RepeatInterval = 1; 16 | 17 | _event = aEvent; 18 | } 19 | 20 | public UnionTE Create() 21 | { 22 | var union = new UnionTE(); 23 | 24 | var firstDateTime = _event.StartDateTime ?? DateTime.Now; 25 | 26 | foreach (DayOfWeekEnum day in Enum.GetValues(typeof(DayOfWeekEnum))) 27 | { 28 | union.Add(new DayIntervalTE(_event.RepeatInterval, firstDateTime)); 29 | } 30 | 31 | return union; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.accordion.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Accordion 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Accordion#theming 9 | */ 10 | /* IE/Win - Fix animation bug - #4615 */ 11 | .ui-accordion { width: 100%; } 12 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } 13 | .ui-accordion .ui-accordion-li-fix { display: inline; } 14 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } 15 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } 16 | .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } 17 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 18 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } 19 | .ui-accordion .ui-accordion-content-active { display: block; } 20 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Microsoft.AspNet.Mvc.4.0.20710.0/Microsoft.AspNet.Mvc.4.0.20710.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.AspNet.Mvc 5 | 4.0.20710.0 6 | Microsoft ASP.NET MVC 4 7 | Microsoft 8 | Microsoft 9 | http://www.microsoft.com/web/webpi/eula/MVC_4_eula_ENU.htm 10 | http://www.asp.net/mvc 11 | true 12 | This package contains the runtime assemblies for ASP.NET MVC. ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that enables a clean separation of concerns and that gives you full control over markup. 13 | en-US 14 | Microsoft AspNet Mvc AspNetMvc 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.accordion.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Accordion 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Accordion#theming 9 | */ 10 | /* IE/Win - Fix animation bug - #4615 */ 11 | .ui-accordion { width: 100%; } 12 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } 13 | .ui-accordion .ui-accordion-li-fix { display: inline; } 14 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } 15 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } 16 | .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } 17 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 18 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } 19 | .ui-accordion .ui-accordion-content-active { display: block; } 20 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.dialog.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.dialog.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.dialog.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.dialog.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move} -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/FixedHolidayTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.TemporalExpressions 4 | { 5 | /// 6 | /// Fixed holiday is one where the month and day never change 7 | /// from year to year, e.g., Jul 4 (Independence Day) 8 | /// 9 | public class FixedHolidayTE : TemporalExpression 10 | { 11 | private readonly int _month; 12 | private readonly int _day; 13 | 14 | /// 15 | /// The holiday month and day, e.g., "July 4 (Independence Day)": 16 | /// var independenceDay = new FixedHolidayTE(7, 4); 17 | /// 18 | /// 19 | /// 20 | public FixedHolidayTE(int month, int day) 21 | { 22 | _month = month; 23 | _day = day; 24 | } 25 | 26 | /// 27 | /// Returns true if the date falls on a holiday 28 | /// 29 | /// 30 | /// 31 | public override bool Includes(DateTime aDate) 32 | { 33 | return (aDate.Month == _month && aDate.Day == _day); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduleWidget.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ScheduleWidget 5 | 2.5.1 6 | false 7 | James Still 8 | ScheduleWidget handles recurring events for calendars 9 | Copyright (c) 2019 James Still 10 | schedule recurring events calendar calendars 11 | http://schedulewidget.azurewebsites.net 12 | netstandard2.0;net45;net46;net47; 13 | 2.5.1 14 | 15 | https://github.com/jamesstill/ScheduleWidget 16 | https://squarewidget.com/wp-content/uploads/2018/10/sw_logo_171_x_179.png 17 | true 18 | 2.5.1.0 19 | 2.5.1.0 20 | http://www.opensource.org/licenses/mit-license.php 21 | 22 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.resizable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Resizable 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Resizable#theming 9 | */ 10 | .ui-resizable { position: relative;} 11 | .ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; } 12 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 13 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } 14 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } 15 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } 16 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } 17 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 18 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 19 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 20 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.slider.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Slider 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Slider#theming 9 | */ 10 | .ui-slider { position: relative; text-align: left; } 11 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 12 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } 13 | 14 | .ui-slider-horizontal { height: .8em; } 15 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 16 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 17 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 18 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 19 | 20 | .ui-slider-vertical { width: .8em; height: 100px; } 21 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 22 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 23 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 24 | .ui-slider-vertical .ui-slider-range-max { top: 0; } -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/DayOfMonthTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | 4 | namespace ScheduleWidget.TemporalExpressions 5 | { 6 | /// 7 | /// Temporal expression describing recurrence on a particular day of the month. 8 | /// For example, the 24th of every month or the 13th. 9 | /// 10 | public class DayOfMonthTE : TemporalExpression 11 | { 12 | private readonly int _day; 13 | 14 | /// 15 | /// Temporal expression describing recurrence on a particular day of the month: 16 | /// 17 | /// var day24 = new DayOfMonthTE(24); 18 | /// 19 | /// 20 | public DayOfMonthTE(int day) 21 | { 22 | _day = day; 23 | } 24 | 25 | /// 26 | /// Returns true if the day exists in the current month or false if it does not. 27 | /// For instance, day 31 exists for March but not for February or November. 28 | /// 29 | /// 30 | /// 31 | public override bool Includes(DateTime aDate) 32 | { 33 | return (aDate.Day == _day); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.resizable.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Resizable 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Resizable#theming 9 | */ 10 | .ui-resizable { position: relative;} 11 | .ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; } 12 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 13 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } 14 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } 15 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } 16 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } 17 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 18 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 19 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 20 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.slider.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Slider 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Slider#theming 9 | */ 10 | .ui-slider { position: relative; text-align: left; } 11 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 12 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } 13 | 14 | .ui-slider-horizontal { height: .8em; } 15 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 16 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 17 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 18 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 19 | 20 | .ui-slider-vertical { width: .8em; height: 100px; } 21 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 22 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 23 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 24 | .ui-slider-vertical .ui-slider-range-max { top: 0; } -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/RangeInYear.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | 4 | namespace ScheduleWidget.ScheduledEvents 5 | { 6 | /// 7 | /// Supports schedules that occur only part of the year. The street cleaning 8 | /// example occurs only in the non-winter months (April through October). So 9 | /// the range would be a start month of 4 and end month of 10. Start and end 10 | /// days are optional since very fine-grained ranges are rare. 11 | /// 12 | [Serializable] 13 | public class RangeInYear 14 | { 15 | /// 16 | /// The start month for a schedule occurring during only part of the year 17 | /// 18 | public int StartMonth { get; set; } 19 | 20 | /// 21 | /// Optional start day of the month for fine-grained schedules (e.g., Apr 15). 22 | /// 23 | public int? StartDayOfMonth { get; set; } 24 | 25 | /// 26 | /// The end month for a schedule occurring during only part of the year 27 | /// 28 | public int EndMonth { get; set; } 29 | 30 | /// 31 | /// Optional end day of the month for fine-grained schedules (e.g., Oct 15). 32 | /// 33 | public int? EndDayOfMonth { get; set; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.autocomplete.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Autocomplete 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Autocomplete#theming 9 | */ 10 | .ui-autocomplete { position: absolute; cursor: default; } 11 | 12 | /* workarounds */ 13 | * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ 14 | 15 | /* 16 | * jQuery UI Menu 1.8.24 17 | * 18 | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) 19 | * Licensed under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://docs.jquery.com/UI/Menu#theming 23 | */ 24 | .ui-menu { 25 | list-style:none; 26 | padding: 2px; 27 | margin: 0; 28 | display:block; 29 | float: left; 30 | } 31 | .ui-menu .ui-menu { 32 | margin-top: -3px; 33 | } 34 | .ui-menu .ui-menu-item { 35 | margin:0; 36 | padding: 0; 37 | zoom: 1; 38 | float: left; 39 | clear: left; 40 | width: 100%; 41 | } 42 | .ui-menu .ui-menu-item a { 43 | text-decoration:none; 44 | display:block; 45 | padding:.2em .4em; 46 | line-height:1.5; 47 | zoom:1; 48 | } 49 | .ui-menu .ui-menu-item a.ui-state-hover, 50 | .ui-menu .ui-menu-item a.ui-state-active { 51 | font-weight: normal; 52 | margin: -1px; 53 | } 54 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.autocomplete.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Autocomplete 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Autocomplete#theming 9 | */ 10 | .ui-autocomplete { position: absolute; cursor: default; } 11 | 12 | /* workarounds */ 13 | * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ 14 | 15 | /* 16 | * jQuery UI Menu 1.8.24 17 | * 18 | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) 19 | * Licensed under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://docs.jquery.com/UI/Menu#theming 23 | */ 24 | .ui-menu { 25 | list-style:none; 26 | padding: 2px; 27 | margin: 0; 28 | display:block; 29 | float: left; 30 | } 31 | .ui-menu .ui-menu { 32 | margin-top: -3px; 33 | } 34 | .ui-menu .ui-menu-item { 35 | margin:0; 36 | padding: 0; 37 | zoom: 1; 38 | float: left; 39 | clear: left; 40 | width: 100%; 41 | } 42 | .ui-menu .ui-menu-item a { 43 | text-decoration:none; 44 | display:block; 45 | padding:.2em .4em; 46 | line-height:1.5; 47 | zoom:1; 48 | } 49 | .ui-menu .ui-menu-item a.ui-state-hover, 50 | .ui-menu .ui-menu-item a.ui-state-active { 51 | font-weight: normal; 52 | margin: -1px; 53 | } 54 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Web.Debug.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.Fullcalendar.1.6.1/jQuery.Fullcalendar.1.6.1.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | jQuery.Fullcalendar 5 | 1.6.1 6 | jQuery.Fullcalendar 7 | Adam Shaw 8 | Adam Shaw 9 | http://arshaw.com/fullcalendar/ 10 | false 11 | A full-sized, drag and drop calendar for jQuery 12 | 13 | Fullcalendar is Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. 14 | 15 | Copyright (c) 2011 Adam Shaw (http://arshaw.com) 16 | A full-sized, drag and drop calendar for jQuery 17 | version 1.6.1 (4/14/13) 18 | - fixed event inner content overflow bug (issue 1783) 19 | - fixed table header className bug (1772) 20 | - removed text-shadow on events (better for general use, thx tkrotoff) 21 | Copyright (c) 2013 Adam Shaw 22 | 23 | Fullcalendar jQuery Calendar 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.Validation.1.10.0/jQuery.Validation.1.10.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | jQuery.Validation 5 | 1.10.0 6 | jQuery Validation 7 | Jörn Zaefferer 8 | Jörn Zaefferer 9 | http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 10 | false 11 | This jQuery plugin makes simple clientside form validation trivial, while offering lots of option for customization. That makes a good choice if you’re building something new from scratch, but also when you’re trying to integrate it into an existing application with lots of existing markup. The plugin comes bundled with a useful set of validation methods, including URL and email validation, while providing an API to write your own methods. All bundled methods come with default error messages in english and translations into 32 languages. 12 | NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at http://nugetpackages.codeplex.com/ 13 | en-US 14 | jQuery plugins 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.dialog.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Dialog 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Dialog#theming 9 | */ 10 | .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } 11 | .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } 12 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 13 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 14 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 15 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 16 | .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 17 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } 18 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } 19 | .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } 20 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 21 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 22 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Web.Release.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.tabs.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Tabs 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Tabs#theming 9 | */ 10 | .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 11 | .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } 12 | .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } 13 | .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } 14 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } 15 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } 16 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 17 | .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } 18 | .ui-tabs .ui-tabs-hide { display: none !important; } 19 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.dialog.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Dialog 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Dialog#theming 9 | */ 10 | .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } 11 | .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } 12 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 13 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 14 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 15 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 16 | .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 17 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } 18 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } 19 | .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } 20 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 21 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 22 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.1.8.2/Tools/install.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # VS 11 and above supports the new intellisense JS files 6 | $vsVersion = [System.Version]::Parse($dte.Version) 7 | $supportsJsIntelliSenseFile = $vsVersion.Major -ge 11 8 | 9 | if (-not $supportsJsIntelliSenseFile) { 10 | $displayVersion = $vsVersion.Major 11 | Write-Host "IntelliSense JS files are not supported by your version of Visual Studio: $displayVersion" 12 | exit 13 | } 14 | 15 | if ($scriptsFolderProjectItem -eq $null) { 16 | # No Scripts folder 17 | Write-Host "No Scripts folder found" 18 | exit 19 | } 20 | 21 | # Delete the vsdoc file from the project 22 | try { 23 | $vsDocProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("jquery-$ver-vsdoc.js") 24 | Delete-ProjectItem $vsDocProjectItem 25 | } 26 | catch { 27 | Write-Host "Error deleting vsdoc file: " + $_.Exception -ForegroundColor Red 28 | exit 29 | } 30 | 31 | # Copy the intellisense file to the project from the tools folder 32 | $intelliSenseFileSourcePath = Join-Path $toolsPath $intelliSenseFileName 33 | try { 34 | $scriptsFolderProjectItem.ProjectItems.AddFromFileCopy($intelliSenseFileSourcePath) 35 | } 36 | catch { 37 | # This will throw if the file already exists, so we need to catch here 38 | } 39 | 40 | # Update the _references.js file 41 | AddOrUpdate-Reference $scriptsFolderProjectItem $jqueryFileNameRegEx $jqueryFileName -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.tabs.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Tabs 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Tabs#theming 9 | */ 10 | .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 11 | .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } 12 | .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } 13 | .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } 14 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } 15 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } 16 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 17 | .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } 18 | .ui-tabs .ui-tabs-hide { display: none !important; } 19 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/YearTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ScheduleWidget.TemporalExpressions 7 | { 8 | public class YearTE : TemporalExpression 9 | { 10 | private readonly int _yearIntervals; 11 | private readonly int _eventStartYear; 12 | private readonly int _month; 13 | private readonly int _day; 14 | 15 | public YearTE(int yearIntervals, int eventStartYear, int month, int day) 16 | { 17 | _yearIntervals = yearIntervals; 18 | _eventStartYear = eventStartYear; 19 | _month = month; 20 | _day = day; 21 | } 22 | 23 | /// 24 | /// Returns true if the date falls on the day of year 25 | /// 26 | /// 27 | /// 28 | public override bool Includes(DateTime aDate) 29 | { 30 | return IntervalMatches(aDate) && DayOfMonthMatches(aDate); 31 | } 32 | 33 | protected bool IntervalMatches(DateTime aDate) 34 | { 35 | return _yearIntervals > 1 36 | ? (Math.Abs(aDate.Year - _eventStartYear)) % _yearIntervals == 0 37 | : true; 38 | } 39 | 40 | protected bool DayOfMonthMatches(DateTime aDate) 41 | { 42 | return (aDate.Month == _month && aDate.Day == _day); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.core.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Theming/API 9 | */ 10 | 11 | /* Layout helpers 12 | ----------------------------------*/ 13 | .ui-helper-hidden { display: none; } 14 | .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } 15 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 16 | .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } 17 | .ui-helper-clearfix:after { clear: both; } 18 | .ui-helper-clearfix { zoom: 1; } 19 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 20 | 21 | 22 | /* Interaction Cues 23 | ----------------------------------*/ 24 | .ui-state-disabled { cursor: default !important; } 25 | 26 | 27 | /* Icons 28 | ----------------------------------*/ 29 | 30 | /* states and images */ 31 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 32 | 33 | 34 | /* Misc visuals 35 | ----------------------------------*/ 36 | 37 | /* Overlays */ 38 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 39 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/Enums/EnumExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace ScheduleWidget.Enums 5 | { 6 | internal static class EnumExtensions 7 | { 8 | public const int MonthlyIntervalMaxBitField = 31; 9 | public const int FrequencyTypeMaxBitField = 7; 10 | public const int DayOfWeekMaxBitField = 127; 11 | 12 | public static IEnumerable GetFlags(Enum input) 13 | { 14 | foreach (Enum value in Enum.GetValues(input.GetType())) 15 | if (input.HasFlag(value)) 16 | yield return value; 17 | } 18 | 19 | public static DayOfWeek GetDayOfWeek(DayOfWeekEnum dayOfWeek) 20 | { 21 | switch (dayOfWeek) 22 | { 23 | case DayOfWeekEnum.Sun: 24 | return DayOfWeek.Sunday; 25 | case DayOfWeekEnum.Mon: 26 | return DayOfWeek.Monday; 27 | case DayOfWeekEnum.Tue: 28 | return DayOfWeek.Tuesday; 29 | case DayOfWeekEnum.Wed: 30 | return DayOfWeek.Wednesday; 31 | case DayOfWeekEnum.Thu: 32 | return DayOfWeek.Thursday; 33 | case DayOfWeekEnum.Fri: 34 | return DayOfWeek.Friday; 35 | //case DayOfWeekEnum.Sat: 36 | // return DayOfWeek.Saturday; 37 | } 38 | return DayOfWeek.Sunday; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.core.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI CSS Framework 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Theming/API 9 | */ 10 | 11 | /* Layout helpers 12 | ----------------------------------*/ 13 | .ui-helper-hidden { display: none; } 14 | .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } 15 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 16 | .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } 17 | .ui-helper-clearfix:after { clear: both; } 18 | .ui-helper-clearfix { zoom: 1; } 19 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 20 | 21 | 22 | /* Interaction Cues 23 | ----------------------------------*/ 24 | .ui-state-disabled { cursor: default !important; } 25 | 26 | 27 | /* Icons 28 | ----------------------------------*/ 29 | 30 | /* states and images */ 31 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 32 | 33 | 34 | /* Misc visuals 35 | ----------------------------------*/ 36 | 37 | /* Overlays */ 38 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 39 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/Utilities.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.ScheduledEvents 4 | { 5 | static public class Utilities 6 | { 7 | 8 | /// 9 | /// DateTime.SafeAddDays, 10 | /// This is an extension method. 11 | /// Adds days to a date time object without the possibility of generating an out of range exception. 12 | /// This is useful when the DateTime object might be set to minimum or maximum value. 13 | /// 14 | /// The new date time object. 15 | static public DateTime SafeAddDays(this DateTime initialValue, double days) 16 | { 17 | try { return initialValue.AddDays(days); } 18 | catch (Exception) { return (days > 0) ? DateTime.MaxValue: DateTime.MinValue; } 19 | } 20 | /// 21 | /// DateTime.SafeAddYears, 22 | /// This is an extension method. 23 | /// Adds years to a date time object without the possibility of generating an out of range exception. 24 | /// This is useful when the DateTime object might be set to minimum or maximum value. 25 | /// 26 | /// The new date time object. 27 | static public DateTime SafeAddYears(this DateTime initialValue, int years) 28 | { 29 | try { return initialValue.AddYears(years); } 30 | catch (Exception) { return (years > 0) ? DateTime.MaxValue : DateTime.MinValue; ; } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/DailyScenario2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.ScheduledEvents; 3 | 4 | namespace ScheduleWidget.Sandbox 5 | { 6 | public static class DailyScenario2 7 | { 8 | public static void Run() 9 | { 10 | Console.WriteLine(Environment.NewLine); 11 | Console.WriteLine("Running daily scenario 2 without a StartDateTime value"); 12 | Console.WriteLine(Environment.NewLine); 13 | 14 | var aEvent = new Event() 15 | { 16 | ID = 1, 17 | Title = "Event 1", 18 | Frequency = 1, // daily 19 | MonthlyInterval = 0, // not applicable 20 | DaysOfWeek = 127 // every day of week 21 | }; 22 | 23 | var during = new DateRange() 24 | { 25 | StartDateTime = new DateTime(2013, 12, 1), 26 | EndDateTime = new DateTime(2013, 12, 31) 27 | }; 28 | 29 | var schedule = new Schedule(aEvent); 30 | var dates = schedule.Occurrences(during); 31 | foreach (var date in dates) 32 | { 33 | Console.WriteLine(date.ToShortDateString()); 34 | } 35 | 36 | Console.WriteLine(Environment.NewLine); 37 | Console.WriteLine("Printed out all dates between {0} and {1}", 38 | during.StartDateTime.ToShortDateString(), 39 | during.EndDateTime.ToShortDateString()); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/README.txt: -------------------------------------------------------------------------------- 1 | 2 | ScheduleWidget Sample Project 3 | 4 | 5 | 6 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ 7 | / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ 8 | ( S ) c ) h ) e ) d ) u ) l ) e ) W ) i ) d ) g ) e ) t ) 9 | \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ 10 | 11 | R E A D M E 12 | 13 | 14 | ScheduleWidget is a .NET 4.x scheduling engine that handles recurring events 15 | for calendars. It is powerful, easy, and free. My contact info: 16 | 17 | Author: James Still 18 | EMail: james DOT still AT gmail.com 19 | Twitter: @squarewidget 20 | Blog: squarewidget.com 21 | 22 | The project page is here: http://www.squarewidget.com/schedulewidget 23 | 24 | It is available as a nuget package and open source is at github here: 25 | https://github.com/jamesstill/ScheduleWidget 26 | 27 | This sample project was created to show a fully-functional web application 28 | in which ScheduleWidget is used to create and display event occurrences on 29 | a javascript calendar control. As the tool becomes more popular I've had 30 | several devs contacting me with similar questions. The tutorials I put up 31 | on my blog address little recipes here and there but I can tell we need a 32 | full project to illustrate the workflow. 33 | 34 | Enjoy! 35 | 36 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/jQuery.UI.Combined.1.8.24.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | jQuery.UI.Combined 5 | 1.8.24 6 | jQuery UI (Combined Library) 7 | jQuery UI Team 8 | jQuery UI Team 9 | http://jquery.org/license 10 | http://jqueryui.com/ 11 | http://nuget.org/Media/Default/Packages/jQuery.UI.Combined/1.8.9/jQueryUILogo.png 12 | false 13 | jQuery UI is an open source library of interface components — interactions, full-featured widgets, and animation effects — based on the stellar jQuery javascript library . Each component is built according to jQuery's event-driven architecture (find something, manipulate it) and is themeable, making it easy for developers of any skill level to integrate and extend into their own code. 14 | NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at http://nugetpackages.codeplex.com/ 15 | The full jQuery UI library as a single combined file. Includes the base theme. 16 | en-US 17 | jQuery jQueryUI plugins 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.UnitTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ScheduleWidget.UnitTest")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("ScheduleWidget.UnitTest")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2011")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("7b3de696-3da5-4fcd-9baa-8cc7010ba04b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ScheduleWidgetSampleProject")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ScheduleWidgetSampleProject")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("b8d55184-4ebd-40c6-824a-55de7b2002fa")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/MonthlyScenario2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.ScheduledEvents; 4 | 5 | namespace ScheduleWidget.Sandbox 6 | { 7 | public static class MonthlyScenario2 8 | { 9 | public static void Run() 10 | { 11 | Console.WriteLine(Environment.NewLine); 12 | Console.WriteLine("Running monthly scenario 2."); 13 | Console.WriteLine(Environment.NewLine); 14 | 15 | var aEvent = new Event() 16 | { 17 | ID = 1, 18 | Title = "Event 1", 19 | FrequencyTypeOptions = FrequencyTypeEnum.Monthly, 20 | MonthlyIntervalOptions = MonthlyIntervalEnum.First, 21 | DaysOfWeekOptions = DayOfWeekEnum.Mon | DayOfWeekEnum.Fri 22 | }; 23 | 24 | var during = new DateRange() 25 | { 26 | StartDateTime = new DateTime(2013, 12, 1), 27 | EndDateTime = new DateTime(2013, 12, 31) 28 | }; 29 | 30 | var schedule = new Schedule(aEvent); 31 | var dates = schedule.Occurrences(during); 32 | foreach (var date in dates) 33 | { 34 | Console.WriteLine(date.ToShortDateString()); 35 | } 36 | 37 | Console.WriteLine(Environment.NewLine); 38 | Console.WriteLine("Printed out all dates between {0} and {1}", 39 | during.StartDateTime.ToShortDateString(), 40 | during.EndDateTime.ToShortDateString()); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ScheduleWidget.Sandbox")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ScheduleWidget.Sandbox")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("031f5eb0-221c-417f-93c3-272be7d14ac4")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/DailyScenario1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.ScheduledEvents; 3 | 4 | namespace ScheduleWidget.Sandbox 5 | { 6 | public static class DailyScenario1 7 | { 8 | public static void Run() 9 | { 10 | Console.WriteLine(Environment.NewLine); 11 | Console.WriteLine("Running daily scenario 1 with a StartDateTime value of 12/1/2013"); 12 | Console.WriteLine(Environment.NewLine); 13 | 14 | var aEvent = new Event() 15 | { 16 | ID = 1, 17 | Title = "Event 1", 18 | Frequency = 1, // daily 19 | MonthlyInterval = 0, // not applicable 20 | DaysOfWeek = 127, // every day of week 21 | StartDateTime = new DateTime(2013, 12, 1) 22 | }; 23 | 24 | var during = new DateRange() 25 | { 26 | StartDateTime = new DateTime(2013, 12, 1), 27 | EndDateTime = new DateTime(2013, 12, 31) 28 | }; 29 | 30 | var schedule = new Schedule(aEvent); 31 | var dates = schedule.Occurrences(during); 32 | foreach (var date in dates) 33 | { 34 | Console.WriteLine(date.ToShortDateString()); 35 | } 36 | 37 | Console.WriteLine(Environment.NewLine); 38 | Console.WriteLine("Printed out all dates between {0} and {1}", 39 | during.StartDateTime.ToShortDateString(), 40 | during.EndDateTime.ToShortDateString()); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/WeeklyScenario1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.ScheduledEvents; 3 | 4 | namespace ScheduleWidget.Sandbox 5 | { 6 | public static class WeeklyScenario1 7 | { 8 | public static void Run() 9 | { 10 | Console.WriteLine(Environment.NewLine); 11 | Console.WriteLine("Running weekly scenario 1 with a StartDateTime value"); 12 | Console.WriteLine(Environment.NewLine); 13 | 14 | var aEvent = new Event() 15 | { 16 | ID = 1, 17 | Title = "Every Mon and Wed", 18 | Frequency = 2, // weekly 19 | MonthlyInterval = 0, // not applicable 20 | DaysOfWeek = 10, // every Mon and Wed 21 | StartDateTime = new DateTime(2013, 12, 1) 22 | }; 23 | 24 | var during = new DateRange() 25 | { 26 | StartDateTime = new DateTime(2013, 12, 1), 27 | EndDateTime = new DateTime(2013, 12, 31) 28 | }; 29 | 30 | var schedule = new Schedule(aEvent); 31 | var dates = schedule.Occurrences(during); 32 | foreach (var date in dates) 33 | { 34 | Console.WriteLine(date.ToShortDateString()); 35 | } 36 | 37 | Console.WriteLine(Environment.NewLine); 38 | Console.WriteLine("Printed out all dates between {0} and {1}", 39 | during.StartDateTime.ToShortDateString(), 40 | during.EndDateTime.ToShortDateString()); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/Modernizr.2.6.2/Modernizr.2.6.2.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Modernizr 5 | 2.6.2 6 | Modernizr 7 | Faruk Ateş,Paul Irish,Alex Sexton 8 | Faruk Ateş,Paul Irish,Alex Sexton 9 | http://www.modernizr.com/license/ 10 | http://www.modernizr.com/ 11 | http://www.modernizr.com/i/logo.png 12 | false 13 | Modernizr adds classes to the <html> element which allow you to target specific browser functionality in your stylesheet. You don't actually need to write any Javascript to use it. 14 | Modernizr is a small and simple JavaScript library that helps you take advantage of emerging web technologies (CSS3, HTML5) while still maintaining a fine level of control over older browsers that may not yet support these new technologies. 15 | NOTE: This package is maintained on behalf of the library owners by the NuGet Community Packages project at http://nugetpackages.codeplex.com/ 16 | Modernizr is a small and simple JavaScript library that helps you take advantage of emerging web technologies (CSS3, HTML 5) while still maintaining a fine level of control over older browsers that may not yet support these new technologies. 17 | en-US 18 | JavaScript HTML HTML5 CSS CSS3 SVG 19 | 20 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/WeeklyScenario2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.ScheduledEvents; 3 | 4 | namespace ScheduleWidget.Sandbox 5 | { 6 | public static class WeeklyScenario2 7 | { 8 | public static void Run() 9 | { 10 | Console.WriteLine(Environment.NewLine); 11 | Console.WriteLine("Running weekly scenario 2 with a StartDateTime value"); 12 | Console.WriteLine(Environment.NewLine); 13 | 14 | var aEvent = new Event() 15 | { 16 | ID = 1, 17 | Title = "Every Mon and Wed", 18 | Frequency = 2, // weekly 19 | RepeatInterval = 2, // bi-weekly 20 | MonthlyInterval = 0, // not applicable 21 | DaysOfWeek = 10, // every Mon and Wed 22 | StartDateTime = new DateTime(2013, 12, 1) 23 | }; 24 | 25 | var during = new DateRange() 26 | { 27 | StartDateTime = new DateTime(2013, 12, 1), 28 | EndDateTime = new DateTime(2013, 12, 31) 29 | }; 30 | 31 | var schedule = new Schedule(aEvent); 32 | var dates = schedule.Occurrences(during); 33 | foreach (var date in dates) 34 | { 35 | Console.WriteLine(date.ToShortDateString()); 36 | } 37 | 38 | Console.WriteLine(Environment.NewLine); 39 | Console.WriteLine("Printed out all dates between {0} and {1}", 40 | during.StartDateTime.ToShortDateString(), 41 | during.EndDateTime.ToShortDateString()); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.Sandbox/MonthlyScenario1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.ScheduledEvents; 4 | 5 | namespace ScheduleWidget.Sandbox 6 | { 7 | public static class MonthlyScenario1 8 | { 9 | /// 10 | /// The canonical Critical Mass monthly bicycle ride 11 | /// 12 | public static void Run() 13 | { 14 | Console.WriteLine(Environment.NewLine); 15 | Console.WriteLine("Running monthly scenario 1."); 16 | Console.WriteLine(Environment.NewLine); 17 | 18 | var aEvent = new Event() 19 | { 20 | ID = 1, 21 | Title = "Critical Mass", 22 | FrequencyTypeOptions = FrequencyTypeEnum.Monthly, 23 | MonthlyIntervalOptions = MonthlyIntervalEnum.Last, 24 | DaysOfWeekOptions = DayOfWeekEnum.Fri 25 | }; 26 | 27 | var during = new DateRange() 28 | { 29 | StartDateTime = new DateTime(2013, 12, 1), 30 | EndDateTime = new DateTime(2013, 12, 31) 31 | }; 32 | 33 | var schedule = new Schedule(aEvent); 34 | var dates = schedule.Occurrences(during); 35 | foreach (var date in dates) 36 | { 37 | Console.WriteLine(date.ToShortDateString()); 38 | } 39 | 40 | Console.WriteLine(Environment.NewLine); 41 | Console.WriteLine("Printed out all dates between {0} and {1}", 42 | during.StartDateTime.ToShortDateString(), 43 | during.EndDateTime.ToShortDateString()); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.1.8.2/Tools/uninstall.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package, $project) 2 | 3 | . (Join-Path $toolsPath common.ps1) 4 | 5 | # Determine the file paths 6 | $projectIntelliSenseFilePath = Join-Path $projectScriptsFolderPath $intelliSenseFileName 7 | $origIntelliSenseFilePath = Join-Path $toolsPath $intelliSenseFileName 8 | 9 | if (Test-Path $projectIntelliSenseFilePath) { 10 | if ((Get-Checksum $projectIntelliSenseFilePath) -eq (Get-Checksum $origIntelliSenseFilePath)) { 11 | # The intellisense file in the project matches the file in the tools folder, delete it 12 | 13 | if ($scriptsFolderProjectItem -eq $null) { 14 | # No Scripts folder 15 | exit 16 | } 17 | 18 | try { 19 | # Get the project item for the intellisense file 20 | $intelliSenseFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item($intelliSenseFileName) 21 | } 22 | catch { 23 | # The item wasn't found 24 | exit 25 | } 26 | 27 | # Delete the project item 28 | Delete-ProjectItem $intelliSenseFileProjectItem 29 | } 30 | else { 31 | $projectScriptsFolderLeaf = Split-Path $projectScriptsFolderPath -Leaf 32 | Write-Host "Skipping '$projectScriptsFolderLeaf\$intelliSenseFileName' because it was modified." -ForegroundColor Magenta 33 | } 34 | } 35 | else { 36 | # The intellisense file was not found in project 37 | Write-Host "The intellisense file was not found in project at path $projectIntelliSenseFilePath" 38 | } 39 | 40 | # Update the _references.js file 41 | Remove-Reference $scriptsFolderProjectItem $jqueryFileNameRegEx -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.UnitTest/SimpleDateTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using NUnit.Framework; 4 | using ScheduleWidget.ScheduledEvents; 5 | using ScheduleWidget.TemporalExpressions; 6 | 7 | namespace ScheduleWidget.UnitTest 8 | { 9 | [TestFixture] 10 | public class SimpleDateTests 11 | { 12 | [Test] 13 | public void SimpleExcludedDayTest1() 14 | { 15 | var date = new DateTE(DateTime.Today); 16 | 17 | Assert.IsTrue(date.Includes(DateTime.Today)); 18 | Assert.IsFalse(date.Includes(DateTime.Today.AddDays(1))); 19 | } 20 | 21 | [Test] 22 | public void SimpleExcludedDayTest2() 23 | { 24 | // first Mon of Sep 25 | var excludedDay = new DateTime(2012, 9, 3); 26 | var aEvent = CreateRecurringEvent(); 27 | var excludedDates = new List() 28 | { 29 | excludedDay 30 | }; 31 | 32 | var schedule = new Schedule(aEvent, excludedDates); 33 | Assert.IsNotNull(schedule); 34 | Assert.IsFalse(schedule.IsOccurring(excludedDay)); 35 | } 36 | 37 | private static Event CreateRecurringEvent() 38 | { 39 | return new Event() 40 | { 41 | ID = 1, 42 | Title = "My Recurring Event", 43 | FrequencyTypeOptions = Enums.FrequencyTypeEnum.Monthly, 44 | MonthlyIntervalOptions = Enums.MonthlyIntervalEnum.First | Enums.MonthlyIntervalEnum.Third, 45 | DaysOfWeekOptions = Enums.DayOfWeekEnum.Mon | Enums.DayOfWeekEnum.Wed 46 | }; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/ConcreteBuilders/WeeklyEventBuilder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using ScheduleWidget.Enums; 4 | using ScheduleWidget.TemporalExpressions; 5 | 6 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder.ConcreteBuilders 7 | { 8 | public class WeeklyEventBuilder : IEventFrequencyBuilder 9 | { 10 | private readonly Event _event; 11 | 12 | public WeeklyEventBuilder(Event aEvent) 13 | { 14 | _event = aEvent; 15 | } 16 | 17 | public UnionTE Create() 18 | { 19 | var union = new UnionTE(); 20 | var daysOfWeek = EnumExtensions.GetFlags(_event.DaysOfWeekOptions); 21 | var firstDayOfWeek = EnumExtensions.GetDayOfWeek(_event.FirstDayOfWeek); 22 | var weeklyIntervals = _event.RepeatInterval; 23 | if (weeklyIntervals > 0 && _event.StartDateTime != null) 24 | { 25 | foreach (DayOfWeekEnum day in daysOfWeek.Cast().OrderBy(e => e, new DayOfWeekEnumComparer(_event.FirstDayOfWeek))) 26 | { 27 | var dayOfWeek = new DayInWeekTE(day, firstDayOfWeek, (DateTime)_event.StartDateTime, weeklyIntervals); 28 | union.Add(dayOfWeek); 29 | } 30 | } 31 | else 32 | { 33 | foreach (DayOfWeekEnum day in daysOfWeek.Cast().OrderBy(e => e, new DayOfWeekEnumComparer(_event.FirstDayOfWeek))) 34 | { 35 | var dayOfWeek = new DayOfWeekTE(day); 36 | union.Add(dayOfWeek); 37 | } 38 | } 39 | 40 | return union; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/FloatingHolidayTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | 4 | namespace ScheduleWidget.TemporalExpressions 5 | { 6 | /// 7 | /// Floating holiday is one where the month never changes from year to year but the day does, 8 | /// e.g., the first Monday of September (Labor Day). So Sep = 9, Mon = 1, and first week = 1 9 | /// 10 | public class FloatingHolidayTE : DayInMonthTE 11 | { 12 | private readonly int _month; 13 | 14 | /// 15 | /// The holiday month, day, and count where the holiday falls on a different 16 | /// date every year, e.g., first Monday of September (Labor Day): 17 | /// 18 | /// var laborDay = new FloatingHolidayTE(9, 1, 1); 19 | /// 20 | /// 21 | /// 22 | /// 23 | public FloatingHolidayTE(int month, DayOfWeekEnum dayOfWeekOption, MonthlyIntervalEnum monthlyIntervalOption) : base(dayOfWeekOption, monthlyIntervalOption) 24 | { 25 | _month = month; 26 | } 27 | 28 | /// 29 | /// Returns true if the date falls on a holiday 30 | /// 31 | /// 32 | /// 33 | public override bool Includes(DateTime aDate) 34 | { 35 | return MonthMatches(aDate) && TEHelpers.DayOfWeekMatches(aDate, _dayOfWeek) && TEHelpers.WeekMatches(aDate, _monthlyInterval); 36 | } 37 | 38 | private bool MonthMatches(DateTime aDate) 39 | { 40 | return aDate.Month == _month; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 48 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ScheduleWidget Sample Project 6 | 7 | 8 | @Styles.Render("~/Content/css") 9 | @Scripts.Render("~/bundles/modernizr") 10 | @Scripts.Render("~/bundles/jquery") 11 | 12 | 13 | 14 | 15 | 16 | @Html.ActionLink("ScheduleWidget", "Index", "Home") 17 | 18 | 19 | 20 | Hello, @User.Identity.Name! 21 | 22 | 23 | 24 | @Html.ActionLink("Home", "Index", "Home") 25 | 26 | 27 | 28 | 29 | 30 | 31 | @RenderSection("featured", required: false) 32 | 33 | @RenderBody() 34 | 35 | 36 | 43 | 44 | @RenderSection("scripts", required: false) 45 | 46 | 47 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/minified/jquery.ui.button.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.button.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0} -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.button.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.8.24 - 2012-09-28 2 | * https://github.com/jquery/jquery-ui 3 | * Includes: jquery.ui.button.css 4 | * Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ 5 | .ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0} -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.UnitTest/DayOfMonthTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.ScheduledEvents; 4 | using ScheduleWidget.TemporalExpressions; 5 | using NUnit.Framework; 6 | 7 | namespace ScheduleWidget.UnitTest 8 | { 9 | [TestFixture] 10 | public class DayOfMonthTests 11 | { 12 | [Test] 13 | public void Day24() 14 | { 15 | var day = new DayOfMonthTE(24); 16 | 17 | Assert.IsTrue(day.Includes(new DateTime(2010, 6, 24))); 18 | Assert.IsTrue(day.Includes(new DateTime(2011, 1, 24))); 19 | Assert.IsTrue(day.Includes(new DateTime(2012, 9, 24))); 20 | 21 | Assert.IsFalse(day.Includes(new DateTime(2010, 8, 14))); 22 | Assert.IsFalse(day.Includes(new DateTime(2011, 3, 15))); 23 | Assert.IsFalse(day.Includes(new DateTime(2012, 8, 1))); 24 | } 25 | 26 | [Test] 27 | public void Day31() 28 | { 29 | var day = new DayOfMonthTE(24); 30 | 31 | var aEvent = CreateDay31Event(); 32 | var schedule = new Schedule(aEvent); 33 | 34 | schedule. 35 | 36 | 37 | 38 | 39 | Assert.IsTrue(day.Includes(new DateTime(2010, 6, 24))); 40 | Assert.IsTrue(day.Includes(new DateTime(2011, 1, 24))); 41 | Assert.IsTrue(day.Includes(new DateTime(2012, 9, 24))); 42 | 43 | Assert.IsFalse(day.Includes(new DateTime(2010, 8, 14))); 44 | Assert.IsFalse(day.Includes(new DateTime(2011, 3, 15))); 45 | Assert.IsFalse(day.Includes(new DateTime(2012, 8, 1))); 46 | } 47 | 48 | private static Event CreateDay31Event() 49 | { 50 | return new Event() 51 | { 52 | ID = 1, 53 | Title = "Day 31 of Every Month", 54 | Frequency = 4 // monthly 55 | }; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/ConcreteBuilders/QuarterlyEventBuilder.cs: -------------------------------------------------------------------------------- 1 | using ScheduleWidget.Enums; 2 | using ScheduleWidget.TemporalExpressions; 3 | 4 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder.ConcreteBuilders 5 | { 6 | /// 7 | /// Allows for recurring Quarterly events. Events set to Freq = Quarterly will also 8 | /// have a MonthlyInterval and DailyInterval set, so we can specify e.g. event takes 9 | /// place on the 1st and last quarter, last week, Wednesday, Thursday and Fridays 10 | /// 11 | public class QuarterlyEventBuilder : IEventFrequencyBuilder 12 | { 13 | private readonly Event _event; 14 | 15 | public QuarterlyEventBuilder(Event aEvent) 16 | { 17 | _event = aEvent; 18 | } 19 | 20 | public UnionTE Create() 21 | { 22 | var union = new UnionTE(); 23 | 24 | var quarters = EnumExtensions.GetFlags(_event.QuarterlyOptions); 25 | var quarterlyIntervals = EnumExtensions.GetFlags(_event.QuarterlyIntervalOptions); 26 | var monthlyIntervals = EnumExtensions.GetFlags(_event.MonthlyIntervalOptions); 27 | var daysOfWeek = EnumExtensions.GetFlags(_event.DaysOfWeekOptions); 28 | 29 | foreach (QuarterEnum quarter in quarters) 30 | { 31 | foreach (QuarterlyIntervalEnum qInt in quarterlyIntervals) 32 | { 33 | foreach (MonthlyIntervalEnum mInt in monthlyIntervals) 34 | { 35 | foreach (DayOfWeekEnum day in daysOfWeek) 36 | { 37 | var dayInQuarter = new DayInQuarterTE(quarter, qInt, mInt, day); 38 | union.Add(dayInQuarter); 39 | } 40 | } 41 | } 42 | } 43 | return union; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.UnitTest/AnniversaryTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using NUnit.Framework; 4 | using ScheduleWidget.ScheduledEvents; 5 | using ScheduleWidget.Enums; 6 | 7 | namespace ScheduleWidget.UnitTest 8 | { 9 | [TestFixture] 10 | public class AnniversaryTests 11 | { 12 | [Test] 13 | public void AnniversaryTest1() 14 | { 15 | var anniversary = new Anniversary() 16 | { 17 | Day = 1, 18 | Month = 8 19 | }; 20 | 21 | var aEvent = new Event() 22 | { 23 | ID = 1, 24 | Title = "Daughter's Birthday", 25 | FrequencyTypeOptions = FrequencyTypeEnum.Yearly, 26 | Anniversary = anniversary 27 | }; 28 | 29 | var schedule = new Schedule(aEvent); 30 | Assert.IsTrue(schedule.IsOccurring(new DateTime(2008, 8, 1))); 31 | } 32 | 33 | [Test] 34 | public void AnniversaryTest2() 35 | { 36 | var anniversary = new Anniversary() 37 | { 38 | Day = 5, 39 | Month = 6 40 | }; 41 | 42 | var aEvent = new Event() 43 | { 44 | ID = 1, 45 | Title = "Give Flowers to Wife", 46 | FrequencyTypeOptions = FrequencyTypeEnum.Yearly, 47 | Anniversary = anniversary 48 | }; 49 | 50 | var schedule = new Schedule(aEvent); 51 | Assert.IsFalse(schedule.IsOccurring(new DateTime(2009, 6, 4))); 52 | 53 | var range = new DateRange() 54 | { 55 | StartDateTime = new DateTime(2010, 1, 1), 56 | EndDateTime = new DateTime(2020, 12, 31) 57 | }; 58 | 59 | var occurrences = schedule.Occurrences(range).ToList(); 60 | Assert.IsTrue(occurrences.Count.Equals(11)); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.UnitTest/OneTimeOnlyTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using NUnit.Framework; 5 | using ScheduleWidget.ScheduledEvents; 6 | using ScheduleWidget.TemporalExpressions; 7 | using ScheduleWidget.Enums; 8 | 9 | namespace ScheduleWidget.UnitTest 10 | { 11 | [TestFixture] 12 | public class OneTimeOnlyTests 13 | { 14 | [Test] 15 | public void OneTimeOnlyTest1() 16 | { 17 | var laborDay = new DateTime(2012, 9, 1); 18 | 19 | var aEvent = new Event() 20 | { 21 | ID = 1, 22 | Title = "Labor Day Extravaganza", 23 | FrequencyTypeOptions = FrequencyTypeEnum.None, 24 | OneTimeOnlyEventDate = laborDay, 25 | }; 26 | 27 | var schedule = new Schedule(aEvent); 28 | Assert.IsTrue(schedule.IsOccurring(laborDay)); 29 | } 30 | 31 | [Test] 32 | public void OneTimeOnlyTest2() 33 | { 34 | var laborDay = new DateTime(2012, 9, 1); 35 | 36 | var aEvent = new Event() 37 | { 38 | ID = 1, 39 | Title = "Labor Day Extravaganza", 40 | FrequencyTypeOptions = FrequencyTypeEnum.None, 41 | OneTimeOnlyEventDate = laborDay, 42 | }; 43 | 44 | var schedule = new Schedule(aEvent); 45 | 46 | var range = new DateRange() 47 | { 48 | StartDateTime = new DateTime(2012, 8, 1), 49 | EndDateTime = new DateTime(2012, 10, 1) 50 | }; 51 | 52 | var occurrences = schedule.Occurrences(range); 53 | var count = 0; 54 | using (var items = occurrences.GetEnumerator()) 55 | { 56 | while (items.MoveNext()) 57 | count++; 58 | } 59 | 60 | Assert.IsTrue(count > 0); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Repository/ScheduleRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using ScheduleWidgetSampleProject.Models; 4 | 5 | namespace ScheduleWidgetSampleProject.Repository 6 | { 7 | public class ScheduleRepository 8 | { 9 | public ScheduleDTO GetSchedule(int id) 10 | { 11 | return MockDatabase.Schedules.FirstOrDefault(s => s.ID == id); 12 | } 13 | 14 | public IEnumerable GetAllSchedules() 15 | { 16 | return MockDatabase.Schedules; 17 | } 18 | 19 | public bool Save(ScheduleDTO scheduleDTO) 20 | { 21 | if (scheduleDTO.ID == 0) 22 | { 23 | scheduleDTO.ID = MockDatabase.UniqueID; 24 | MockDatabase.UniqueID++; 25 | MockDatabase.Schedules.Add(scheduleDTO); 26 | } 27 | else 28 | { 29 | var schedule = MockDatabase.Schedules.FirstOrDefault(s => s.ID == scheduleDTO.ID); 30 | 31 | if (schedule == null) 32 | return false; 33 | 34 | schedule.Title = scheduleDTO.Title; 35 | schedule.Frequency = scheduleDTO.Frequency; 36 | schedule.DaysOfWeek = scheduleDTO.DaysOfWeek; 37 | schedule.WeeklyInterval = scheduleDTO.WeeklyInterval; 38 | schedule.MonthlyInterval = scheduleDTO.MonthlyInterval; 39 | schedule.NumberOfOccurrences = scheduleDTO.NumberOfOccurrences; 40 | schedule.StartDate = scheduleDTO.StartDate; 41 | schedule.EndDate = scheduleDTO.EndDate; 42 | schedule.StartTime = scheduleDTO.StartTime; 43 | schedule.EndTime = scheduleDTO.EndTime; 44 | } 45 | 46 | return true; 47 | } 48 | } 49 | 50 | public static class MockDatabase 51 | { 52 | public static int UniqueID = 1; 53 | public static List Schedules = new List(); 54 | } 55 | } -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/EventFrequencyBuilder.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.ScheduledEvents.FrequencyBuilder.ConcreteBuilders; 4 | 5 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder 6 | { 7 | public class EventFrequencyBuilder 8 | { 9 | public static IEventFrequencyBuilder Create(Event aEvent) 10 | { 11 | IEventFrequencyBuilder builder; 12 | 13 | switch (aEvent.FrequencyTypeOptions) 14 | { 15 | case FrequencyTypeEnum.None: 16 | builder = new OneTimeEventBuilder(aEvent); 17 | break; 18 | 19 | case FrequencyTypeEnum.Daily: 20 | // if the event is using FirstDateTime then return a builder for that 21 | // otherwise return the simpler builder for backward compatibility 22 | if (aEvent.StartDateTime.HasValue) 23 | builder = new DailyEventWithFirstDateTimeBuilder(aEvent); 24 | else 25 | builder = new DailyEventBuilder(); 26 | break; 27 | 28 | case FrequencyTypeEnum.Weekly: 29 | builder = new WeeklyEventBuilder(aEvent); 30 | break; 31 | 32 | case FrequencyTypeEnum.Monthly: 33 | builder = new MonthlyEventBuilder(aEvent); 34 | break; 35 | 36 | case FrequencyTypeEnum.Quarterly: 37 | builder = new QuarterlyEventBuilder(aEvent); 38 | break; 39 | 40 | case FrequencyTypeEnum.Yearly: 41 | builder = new YearlyEventBuilder(aEvent); 42 | break; 43 | 44 | default: 45 | Trace.TraceError("Unknown frequency type '{0}'", aEvent.FrequencyTypeOptions); 46 | builder = null; 47 | break; 48 | } 49 | 50 | return builder; 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/DayOfWeekTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | 4 | namespace ScheduleWidget.TemporalExpressions 5 | { 6 | /// 7 | /// Compares two specific days of week exactly 8 | /// 9 | public class DayOfWeekTE : TemporalExpression 10 | { 11 | private readonly DayOfWeekEnum _dayOfWeek; 12 | 13 | /// 14 | /// The day of week value 15 | /// 16 | /// 17 | public DayOfWeekTE(DayOfWeekEnum aDayOfWeek) 18 | { 19 | _dayOfWeek = aDayOfWeek; 20 | } 21 | 22 | /// 23 | /// Returns true if the date day of week matches the flag 24 | /// attribute value: 25 | /// 26 | /// Sun = 1, 27 | /// Mon = 2, 28 | /// Tue = 4, 29 | /// Wed = 8, 30 | /// Thu = 16, 31 | /// Fri = 32, 32 | /// Sat = 64 33 | /// 34 | /// 35 | /// 36 | /// 37 | public override bool Includes(DateTime aDate) 38 | { 39 | switch(aDate.DayOfWeek) 40 | { 41 | case DayOfWeek.Sunday: 42 | return ((int) _dayOfWeek == 1); 43 | 44 | case DayOfWeek.Monday: 45 | return ((int)_dayOfWeek == 2); 46 | 47 | case DayOfWeek.Tuesday: 48 | return ((int)_dayOfWeek == 4); 49 | 50 | case DayOfWeek.Wednesday: 51 | return ((int)_dayOfWeek == 8); 52 | 53 | case DayOfWeek.Thursday: 54 | return ((int)_dayOfWeek == 16); 55 | 56 | case DayOfWeek.Friday: 57 | return ((int)_dayOfWeek == 32); 58 | 59 | case DayOfWeek.Saturday: 60 | return ((int)_dayOfWeek == 64); 61 | 62 | default: 63 | return false; 64 | } 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/TemporalExpressions/RangeEachYearTE.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ScheduleWidget.TemporalExpressions 4 | { 5 | /// 6 | /// Compares a range of time within a year. For example, any date that 7 | /// falls between April and October: 8 | /// var nonWinterMonths = new RangeEachYearTE(4, 10); 9 | /// 10 | public class RangeEachYearTE : TemporalExpression 11 | { 12 | public int StartMonth { get; set; } 13 | public int EndMonth { get; set; } 14 | public int StartDay { get; set; } 15 | public int EndDay { get; set; } 16 | 17 | public RangeEachYearTE(int startMonth, int endMonth, int startDay, int endDay) 18 | { 19 | StartMonth = startMonth; 20 | EndMonth = endMonth; 21 | StartDay = startDay; 22 | EndDay = endDay; 23 | } 24 | 25 | public RangeEachYearTE(int startMonth, int endMonth) 26 | { 27 | StartMonth = startMonth; 28 | EndMonth = endMonth; 29 | StartDay = 0; 30 | EndDay = 0; 31 | } 32 | 33 | /// 34 | /// Returns true if the date is included in the expression 35 | /// 36 | /// 37 | /// 38 | public override bool Includes(DateTime aDate) 39 | { 40 | return MonthsInclude(aDate) || 41 | StartMonthIncludes(aDate) || 42 | EndMonthIncludes(aDate); 43 | } 44 | 45 | private bool MonthsInclude(DateTime aDate) 46 | { 47 | return (aDate.Month > StartMonth && aDate.Month < EndMonth); 48 | } 49 | 50 | private bool StartMonthIncludes(DateTime aDate) 51 | { 52 | if (aDate.Month != StartMonth) 53 | return false; 54 | 55 | if (StartDay == 0) 56 | return true; 57 | 58 | return (aDate.Day >= StartDay); 59 | } 60 | 61 | private bool EndMonthIncludes(DateTime aDate) 62 | { 63 | if (aDate.Month != EndMonth) 64 | return false; 65 | 66 | if (EndDay == 0) 67 | return true; 68 | 69 | return (aDate.Day <= EndDay); 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.UnitTest/FixedHolidayTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Xml.Linq; 3 | using NUnit.Framework; 4 | using ScheduleWidget.Enums; 5 | using ScheduleWidget.ScheduledEvents; 6 | using ScheduleWidget.TemporalExpressions; 7 | 8 | namespace ScheduleWidget.UnitTest 9 | { 10 | [TestFixture] 11 | public class FixedHolidayTests 12 | { 13 | [Test] 14 | public void StreetCleaningIndependenceDayTest() 15 | { 16 | var holidays = GetHolidays(); 17 | var aEvent = CreateStreetCleaningEvent(); 18 | var schedule = new Schedule(aEvent, holidays); 19 | 20 | Assert.IsNotNull(holidays); 21 | Assert.IsNotNull(aEvent); 22 | Assert.IsNotNull(schedule); 23 | Assert.IsFalse(schedule.IsOccurring(new DateTime(2012, 7, 4))); 24 | Assert.IsFalse(schedule.IsOccurring(new DateTime(2016, 7, 4))); 25 | } 26 | 27 | /// 28 | /// Street cleaning occurs from April to October on the first and third Monday of the 29 | /// month, excluding holidays. In this test there are two holidays: July 4 and Labor 30 | /// Day (first Monday in Sep). The street cleaning example is taken directly from 31 | /// Martin Fowler's white paper "Recurring Events for Calendars". 32 | /// 33 | private static Event CreateStreetCleaningEvent() 34 | { 35 | return new Event() 36 | { 37 | ID = 1, 38 | Title = "Fowler's Street Cleaning", 39 | RangeInYear = new RangeInYear() 40 | { 41 | StartMonth = 4, // April 42 | EndMonth = 10, // October 43 | }, 44 | FrequencyTypeOptions = FrequencyTypeEnum.Monthly, 45 | MonthlyIntervalOptions = MonthlyIntervalEnum.First | MonthlyIntervalEnum.Third, 46 | DaysOfWeekOptions = DayOfWeekEnum.Mon 47 | }; 48 | } 49 | 50 | private static UnionTE GetHolidays() 51 | { 52 | var union = new UnionTE(); 53 | union.Add(new FixedHolidayTE(7, 4)); 54 | union.Add(new FloatingHolidayTE(9, DayOfWeekEnum.Mon, MonthlyIntervalEnum.First)); 55 | return union; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/ConcreteBuilders/MonthlyEventBuilder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.TemporalExpressions; 4 | 5 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder.ConcreteBuilders 6 | { 7 | public class MonthlyEventBuilder : IEventFrequencyBuilder 8 | { 9 | private readonly Event _event; 10 | 11 | public MonthlyEventBuilder(Event aEvent) 12 | { 13 | //Assigning default value to month interval if the value is 0. 14 | if (aEvent.RepeatInterval == 0) 15 | aEvent.RepeatInterval = 1; 16 | 17 | _event = aEvent; 18 | } 19 | 20 | public UnionTE Create() 21 | { 22 | var union = new UnionTE(); 23 | var firstDateTime = _event.StartDateTime ?? DateTime.Now; 24 | 25 | if (_event.DayOfMonth == 0 && (int)_event.MonthlyIntervalOptions == 0) 26 | _event.MonthlyIntervalOptions = MonthlyIntervalEnum.EveryWeek; 27 | 28 | if (_event.DayOfMonth > 0) 29 | { 30 | var dayInMonth = new MonthTE(_event.RepeatInterval, firstDateTime, _event.DayOfMonth); 31 | union.Add(dayInMonth); 32 | } 33 | else if (_event.MonthlyInterval == (int)MonthlyIntervalEnum.EveryWeek) 34 | { 35 | var daysOfWeek = EnumExtensions.GetFlags(_event.DaysOfWeekOptions); 36 | foreach (DayOfWeekEnum dayOfWeek in daysOfWeek) 37 | { 38 | var dayInMonth = new MonthTE(_event.RepeatInterval, firstDateTime, dayOfWeek); 39 | union.Add(dayInMonth); 40 | } 41 | } 42 | else 43 | { 44 | var monthlyIntervals = EnumExtensions.GetFlags(_event.MonthlyIntervalOptions); 45 | var daysOfWeek = EnumExtensions.GetFlags(_event.DaysOfWeekOptions); 46 | foreach (MonthlyIntervalEnum monthlyInterval in monthlyIntervals) 47 | { 48 | foreach (DayOfWeekEnum dayOfWeek in daysOfWeek) 49 | { 50 | var dayInMonth = new MonthTE(_event.RepeatInterval, firstDateTime, dayOfWeek, monthlyInterval); 51 | union.Add(dayInMonth); 52 | } 53 | } 54 | } 55 | 56 | return union; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.UnitTest/FloatingHolidayTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using NUnit.Framework; 3 | using ScheduleWidget.Enums; 4 | using ScheduleWidget.ScheduledEvents; 5 | using ScheduleWidget.TemporalExpressions; 6 | 7 | namespace ScheduleWidget.UnitTest 8 | { 9 | [TestFixture] 10 | public class FloatingHolidayTests 11 | { 12 | [Test] 13 | public void StreetCleaningLaborDayTest() 14 | { 15 | var holidays = GetHolidays(); 16 | var aEvent = CreateStreetCleaningEvent(); 17 | var schedule = new Schedule(aEvent, holidays); 18 | 19 | Assert.IsNotNull(holidays); 20 | Assert.IsNotNull(aEvent); 21 | Assert.IsNotNull(schedule); 22 | 23 | // Labor Day 24 | Assert.IsFalse(schedule.IsOccurring(new DateTime(2012, 9, 3))); 25 | Assert.IsFalse(schedule.IsOccurring(new DateTime(2013, 9, 2))); 26 | // Third Monday in Sep 27 | Assert.IsTrue(schedule.IsOccurring(new DateTime(2014, 9, 15))); 28 | } 29 | 30 | /// 31 | /// Street cleaning occurs from April to October on the first and third Monday of the 32 | /// month, excluding holidays. In this test there are two holidays: July 4 and Labor 33 | /// Day (first Monday in Sep). The street cleaning example is taken directly from 34 | /// Martin Fowler's white paper "Recurring Events for Calendars". 35 | /// 36 | private static Event CreateStreetCleaningEvent() 37 | { 38 | return new Event() 39 | { 40 | ID = 1, 41 | Title = "Fowler's Street Cleaning", 42 | RangeInYear = new RangeInYear() 43 | { 44 | StartMonth = 4, // April 45 | EndMonth = 10, // October 46 | }, 47 | FrequencyTypeOptions = FrequencyTypeEnum.Monthly, 48 | MonthlyIntervalOptions = MonthlyIntervalEnum.First | MonthlyIntervalEnum.Third, 49 | DaysOfWeekOptions = DayOfWeekEnum.Mon 50 | }; 51 | } 52 | 53 | private static UnionTE GetHolidays() 54 | { 55 | var union = new UnionTE(); 56 | union.Add(new FixedHolidayTE(7, 4)); 57 | union.Add(new FloatingHolidayTE(9, DayOfWeekEnum.Mon, MonthlyIntervalEnum.First)); 58 | return union; 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/App_Start/BundleConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Optimization; 3 | 4 | namespace ScheduleWidgetSampleProject 5 | { 6 | public class BundleConfig 7 | { 8 | // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725 9 | public static void RegisterBundles(BundleCollection bundles) 10 | { 11 | bundles.Add(new ScriptBundle("~/bundles/jquery").Include( 12 | "~/Scripts/jquery-{version}.js", 13 | "~/Scripts/fullcalendar.js")); 14 | 15 | bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include( 16 | "~/Scripts/jquery-ui-{version}.js")); 17 | 18 | bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( 19 | "~/Scripts/jquery.unobtrusive*", 20 | "~/Scripts/jquery.validate*")); 21 | 22 | // Use the development version of Modernizr to develop with and learn from. Then, when you're 23 | // ready for production, use the build tool at http://modernizr.com to pick only the tests you need. 24 | bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( 25 | "~/Scripts/modernizr-*")); 26 | 27 | bundles.Add(new StyleBundle("~/Content/css").Include( 28 | "~/Content/site.css", 29 | "~/Content/fullcalendar.css")); 30 | 31 | bundles.Add(new StyleBundle("~/Content/themes/base/css").Include( 32 | "~/Content/themes/base/jquery.ui.core.css", 33 | "~/Content/themes/base/jquery.ui.resizable.css", 34 | "~/Content/themes/base/jquery.ui.selectable.css", 35 | "~/Content/themes/base/jquery.ui.accordion.css", 36 | "~/Content/themes/base/jquery.ui.autocomplete.css", 37 | "~/Content/themes/base/jquery.ui.button.css", 38 | "~/Content/themes/base/jquery.ui.dialog.css", 39 | "~/Content/themes/base/jquery.ui.slider.css", 40 | "~/Content/themes/base/jquery.ui.tabs.css", 41 | "~/Content/themes/base/jquery.ui.datepicker.css", 42 | "~/Content/themes/base/jquery.ui.progressbar.css", 43 | "~/Content/themes/base/jquery.ui.theme.css")); 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.21005.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScheduleWidget", "ScheduleWidget\ScheduleWidget.csproj", "{D3C50C97-90AE-4CC4-A4A3-9DC9F01E19E5}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScheduleWidget.UnitTest", "ScheduleWidget.UnitTest\ScheduleWidget.UnitTest.csproj", "{C7F36444-DD65-4BC5-8154-B42005BE22F8}" 9 | EndProject 10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{06422817-9D16-47EB-9CE2-952A0C41F280}" 11 | ProjectSection(SolutionItems) = preProject 12 | manifest.nuspec = manifest.nuspec 13 | EndProjectSection 14 | EndProject 15 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScheduleWidget.Sandbox", "ScheduleWidget.Sandbox\ScheduleWidget.Sandbox.csproj", "{65F375F0-1906-4278-A49A-7776EF3E2671}" 16 | EndProject 17 | Global 18 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 19 | Debug|Any CPU = Debug|Any CPU 20 | Release|Any CPU = Release|Any CPU 21 | EndGlobalSection 22 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 23 | {D3C50C97-90AE-4CC4-A4A3-9DC9F01E19E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 24 | {D3C50C97-90AE-4CC4-A4A3-9DC9F01E19E5}.Debug|Any CPU.Build.0 = Debug|Any CPU 25 | {D3C50C97-90AE-4CC4-A4A3-9DC9F01E19E5}.Release|Any CPU.ActiveCfg = Release|Any CPU 26 | {D3C50C97-90AE-4CC4-A4A3-9DC9F01E19E5}.Release|Any CPU.Build.0 = Release|Any CPU 27 | {C7F36444-DD65-4BC5-8154-B42005BE22F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 28 | {C7F36444-DD65-4BC5-8154-B42005BE22F8}.Debug|Any CPU.Build.0 = Debug|Any CPU 29 | {C7F36444-DD65-4BC5-8154-B42005BE22F8}.Release|Any CPU.ActiveCfg = Release|Any CPU 30 | {C7F36444-DD65-4BC5-8154-B42005BE22F8}.Release|Any CPU.Build.0 = Release|Any CPU 31 | {65F375F0-1906-4278-A49A-7776EF3E2671}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 32 | {65F375F0-1906-4278-A49A-7776EF3E2671}.Debug|Any CPU.Build.0 = Debug|Any CPU 33 | {65F375F0-1906-4278-A49A-7776EF3E2671}.Release|Any CPU.ActiveCfg = Release|Any CPU 34 | {65F375F0-1906-4278-A49A-7776EF3E2671}.Release|Any CPU.Build.0 = Release|Any CPU 35 | EndGlobalSection 36 | GlobalSection(SolutionProperties) = preSolution 37 | HideSolutionNode = FALSE 38 | EndGlobalSection 39 | GlobalSection(TestCaseManagementSettings) = postSolution 40 | CategoryFile = ScheduleWidget.vsmdi 41 | EndGlobalSection 42 | EndGlobal 43 | -------------------------------------------------------------------------------- /ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/ConcreteBuilders/YearlyEventBuilder.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using ScheduleWidget.Enums; 3 | using ScheduleWidget.TemporalExpressions; 4 | 5 | namespace ScheduleWidget.ScheduledEvents.FrequencyBuilder.ConcreteBuilders 6 | { 7 | public class YearlyEventBuilder : IEventFrequencyBuilder 8 | { 9 | private readonly Event _event; 10 | 11 | public YearlyEventBuilder(Event aEvent) 12 | { 13 | //Assigning default value to year interval if the value is 0. 14 | if (aEvent.RepeatInterval == 0) 15 | aEvent.RepeatInterval = 1; 16 | 17 | _event = aEvent; 18 | } 19 | 20 | /// 21 | /// On yearly frequency build an anniversary temporal expression 22 | /// 23 | /// 24 | public UnionTE Create() 25 | { 26 | var union = new UnionTE(); 27 | if (_event.FrequencyTypeOptions == FrequencyTypeEnum.Yearly) 28 | { 29 | if (_event.Anniversary == null) 30 | { 31 | throw new ApplicationException("Events with a yearly frequency requires an anniversary."); 32 | } 33 | 34 | if (_event.Anniversary.Day < 1 || _event.Anniversary.Day > 31 || 35 | _event.Anniversary.Month < 1 || _event.Anniversary.Month > 12) 36 | throw new ApplicationException("The anniversary month and day are invalid."); 37 | 38 | 39 | if (_event.RepeatInterval > 1 && _event.StartDateTime == null) 40 | throw new ApplicationException("Events with a yearly repeat interval greater than one, require a start date."); 41 | 42 | // Find the proper start year for the year temporal event, based on the event start date. 43 | int year = DateTime.Now.Year; 44 | if (_event.StartDateTime != null) 45 | { 46 | DateTime startDate = (DateTime)_event.StartDateTime; 47 | if (startDate.Month == _event.Anniversary.Month && 48 | startDate.Day > _event.Anniversary.Day) 49 | startDate = startDate.AddMonths(1); 50 | year = (startDate.Month > _event.Anniversary.Month) ? 51 | startDate.Year + 1 : startDate.Year; 52 | } 53 | 54 | union.Add(new YearTE(_event.RepeatInterval, year, _event.Anniversary.Month, _event.Anniversary.Day)); 55 | } 56 | return union; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/ScheduleWidgetSampleProject/Content/themes/base/jquery.ui.button.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Button 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Button#theming 9 | */ 10 | .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ 11 | .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ 12 | button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ 13 | .ui-button-icons-only { width: 3.4em; } 14 | button.ui-button-icons-only { width: 3.7em; } 15 | 16 | /*button text element */ 17 | .ui-button .ui-button-text { display: block; line-height: 1.4; } 18 | .ui-button-text-only .ui-button-text { padding: .4em 1em; } 19 | .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } 20 | .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } 21 | .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } 22 | .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } 23 | /* no icon support for input elements, provide padding by default */ 24 | input.ui-button { padding: .4em 1em; } 25 | 26 | /*button icon element(s) */ 27 | .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } 28 | .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } 29 | .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } 30 | .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 31 | .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 32 | 33 | /*button sets*/ 34 | .ui-buttonset { margin-right: 7px; } 35 | .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } 36 | 37 | /* workarounds */ 38 | button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ 39 | -------------------------------------------------------------------------------- /ScheduleWidgetSampleProject/packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.button.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery UI Button 1.8.24 3 | * 4 | * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) 5 | * Licensed under the MIT license. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Button#theming 9 | */ 10 | .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ 11 | .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ 12 | button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ 13 | .ui-button-icons-only { width: 3.4em; } 14 | button.ui-button-icons-only { width: 3.7em; } 15 | 16 | /*button text element */ 17 | .ui-button .ui-button-text { display: block; line-height: 1.4; } 18 | .ui-button-text-only .ui-button-text { padding: .4em 1em; } 19 | .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } 20 | .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } 21 | .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } 22 | .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } 23 | /* no icon support for input elements, provide padding by default */ 24 | input.ui-button { padding: .4em 1em; } 25 | 26 | /*button icon element(s) */ 27 | .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } 28 | .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } 29 | .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } 30 | .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 31 | .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 32 | 33 | /*button sets*/ 34 | .ui-buttonset { margin-right: 7px; } 35 | .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } 36 | 37 | /* workarounds */ 38 | button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ 39 | --------------------------------------------------------------------------------
Now that I have the unique schedule ID and the occurrence date I can do 24 | something with this particular event. 25 |
@Html.ActionLink("ScheduleWidget", "Index", "Home")