6 Commits

Author SHA1 Message Date
Gary Sharp a5c051916e Version bump for release 1.2.1128 2013-11-28 15:09:56 +11:00
Gary Sharp 4f4dbabf8b Bug Fix: Bootstrapper crash if previously failed
Updated bootstrapper correctly cleans up temporary files left by a
previous run which failed.
2013-11-26 17:30:05 +11:00
Gary Sharp e4c86f1cc1 Bug Fix: Touch support for menu
Support for PointerEvents, MSPointerEvents and Touch with fallback to
Mouse events.
2013-11-20 15:06:37 +11:00
Gary Sharp eabd9671f0 Bug Fix: Touch support for menu
Support for Touch, PointerEvents and Mouse event specifications.
2013-11-19 16:35:03 +11:00
Gary Sharp 9b34abfa29 Bug Fix: Default DeviceProfile DistributionType
The DistributionType is required but was not specified (null) in the
Database Seed (as a result of the move to an enum).
2013-11-19 14:19:41 +11:00
Gary Sharp d1007266c9 Include LumenWorks Framework Dependency
Disco.BI Dependency for CSV Parsing.
2013-11-19 09:55:23 +11:00
18 changed files with 1789 additions and 144 deletions
+4 -3
View File
@@ -46,8 +46,9 @@
<Reference Include="itextsharp"> <Reference Include="itextsharp">
<HintPath>..\Resources\Libraries\iTextSharp\itextsharp.dll</HintPath> <HintPath>..\Resources\Libraries\iTextSharp\itextsharp.dll</HintPath>
</Reference> </Reference>
<Reference Include="LumenWorks.Framework.IO"> <Reference Include="LumenWorks.Framework.IO, Version=3.8.0.0, Culture=neutral, PublicKeyToken=5ad3ea2f85776344, processorArchitecture=MSIL">
<HintPath>..\..\..\Resources\Libraries\LumenWorks.Framework.IO\LumenWorks.Framework.IO.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\Resources\Libraries\LumenWorks.Framework.IO\LumenWorks.Framework.IO.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.AspNet.SignalR.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.AspNet.SignalR.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
@@ -254,7 +255,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions> <ProjectExtensions>
<VisualStudio> <VisualStudio>
<UserProperties BuildVersion_UpdateFileVersion="True" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_DetectChanges="False" BuildVersion_BuildAction="Both" BuildVersion_StartDate="2011/7/1" /> <UserProperties BuildVersion_StartDate="2011/7/1" BuildVersion_BuildAction="Both" BuildVersion_DetectChanges="False" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.DeltaBaseYear.MonthAndDayStamp.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_UpdateFileVersion="True" />
</VisualStudio> </VisualStudio>
</ProjectExtensions> </ProjectExtensions>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" /> <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.1001.1541")] [assembly: AssemblyVersion("1.2.1128.1503")]
[assembly: AssemblyFileVersion("1.2.1001.1541")] [assembly: AssemblyFileVersion("1.2.1128.1503")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.1001.1300")] [assembly: AssemblyVersion("1.2.1128.1503")]
[assembly: AssemblyFileVersion("1.2.1001.1300")] [assembly: AssemblyFileVersion("1.2.1128.1503")]
+3 -1
View File
@@ -149,7 +149,9 @@ namespace Disco.ClientBootstrapper
// Unzip Client // Unzip Client
statusUI.UpdateStatus(null, "Extracting", "Retrieving Preparation Client, Please wait...", true, -1); statusUI.UpdateStatus(null, "Extracting", "Retrieving Preparation Client, Please wait...", true, -1);
string clientLocation = Path.Combine(tempWorkingDirectory, "PreparationClient"); string clientLocation = Path.Combine(tempWorkingDirectory, "PreparationClient");
if (!Directory.Exists(clientLocation)) if (Directory.Exists(clientLocation))
Directory.Delete(clientLocation, true);
Directory.CreateDirectory(clientLocation); Directory.CreateDirectory(clientLocation);
using (var clientSource = Ionic.Zip.ZipFile.Read(clientSourceLocation)) using (var clientSource = Ionic.Zip.ZipFile.Read(clientSourceLocation))
{ {
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.1001.1300")] [assembly: AssemblyVersion("1.2.1128.1503")]
[assembly: AssemblyFileVersion("1.2.1001.1300")] [assembly: AssemblyFileVersion("1.2.1128.1503")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.1001.1541")] [assembly: AssemblyVersion("1.2.1128.1503")]
[assembly: AssemblyFileVersion("1.2.1001.1541")] [assembly: AssemblyFileVersion("1.2.1128.1503")]
+9 -1
View File
@@ -60,7 +60,15 @@ namespace Disco.Data.Repository
{ {
if (Database.DeviceProfiles.Count() == 0) if (Database.DeviceProfiles.Count() == 0)
{ {
Database.DeviceProfiles.Add(new DeviceProfile { ShortName = "WS", Name = "Default", Description = "Initial Default Workstation Profile", ComputerNameTemplate = "DeviceProfile.ShortName + ''-'' + SerialNumber" }); Database.DeviceProfiles.Add(
new DeviceProfile
{
ShortName = "WS",
Name = "Default",
Description = "Initial Default Workstation Profile",
ComputerNameTemplate = "DeviceProfile.ShortName + ''-'' + SerialNumber",
DistributionType = DeviceProfile.DistributionTypes.OneToMany
});
} }
} }
public static void SeedJobSubTypes(this DiscoDataContext Database) public static void SeedJobSubTypes(this DiscoDataContext Database)
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.1001.1541")] [assembly: AssemblyVersion("1.2.1128.1503")]
[assembly: AssemblyFileVersion("1.2.1001.1541")] [assembly: AssemblyFileVersion("1.2.1128.1503")]
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.1001.1541")] [assembly: AssemblyVersion("1.2.1128.1503")]
[assembly: AssemblyFileVersion("1.2.1001.1541")] [assembly: AssemblyFileVersion("1.2.1128.1503")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.1001.1541")] [assembly: AssemblyVersion("1.2.1128.1503")]
[assembly: AssemblyFileVersion("1.2.1001.1541")] [assembly: AssemblyFileVersion("1.2.1128.1503")]
+98 -51
View File
@@ -39565,70 +39565,117 @@ jQuery.fn.DataTable.defaults.aLengthMenu = [[10, 20, 50, -1], [10, 20, 50, "All"
// Menu Functionality // Menu Functionality
var $menu = $('#menu'); var $menu = $('#menu');
var $menuItems = $menu.find('li');
var $menuItemParents = $menuItems.filter('.hasSubMenu');
var $menuSubMenus = $menuItems.filter('.subMenu');
var menuAllowTouchNavigation = null;
$menuItemParents.each(function () { if ($menu.length > 0) {
var $parent = $(this);
var $subMenu = $parent.children('ul.subMenu'); function subMenuShow() {
$parent.data('menuSubMenu', $subMenu); var $this = $(this);
}).mouseover(function () { var $subMenu = $this.children('ul.subMenu');
var $parent = $(this); var hideToken = $this.data('menuHideToken');
var $subMenu = $parent.data('menuSubMenu');
var hideToken = $parent.data('menuHideToken');
if (hideToken) if (hideToken)
window.clearTimeout(hideToken); window.clearTimeout(hideToken);
if (!$subMenu.is(':visible')) {
if (!$subMenu.is(':visible'))
$subMenu.show(); $subMenu.show();
if (menuAllowTouchNavigation !== null)
menuTouchPreventNavigation();
} }
}).mouseout(function () { function subMenuHide() {
var $parent = $(this); var $this = $(this);
var $subMenu = $parent.data('menuSubMenu'); var $subMenu = $this.children('ul.subMenu');
var hideToken = window.setTimeout(function () { var hideToken = window.setTimeout(function () {
$subMenu.hide(); $subMenu.hide();
}, 250); }, 250);
$parent.data('menuHideToken', hideToken);
});
if (Modernizr.touch) { $this.data('menuHideToken', hideToken);
menuAllowTouchNavigation = true;
$menuItemParents.children('a').on('touchstart', menuTouchStarted);
} else if (window.navigator.msPointerEnabled) {
menuAllowTouchNavigation = true;
$menuItemParents.children('a').on('MSPointerUp', menuTouchMSPointerUp);
} }
function menuTouchPreventNavigation() { function subMenuTouchDown(e, preventClick) {
// Block Touch Navigation for 350ms
allowTouchNavigation = false;
window.setTimeout(function () {
allowTouchNavigation = true;
}, 350);
}
function menuTouchNavigationBlockClick(e) {
$(this).off('click', menuTouchNavigationBlockClick);
e.preventDefault();
}
//#region TouchEvents Implementation
function menuSubMenuVisible($element) {
return $element.closest('li').data('menuSubMenu').is(':visible');
}
function menuTouchStarted(e) {
var $this = $(this); var $this = $(this);
if (!menuSubMenuVisible($this)) var $link = $this.children('a');
$this.click(menuTouchNavigationBlockClick); var $subMenu = $this.children('ul.subMenu');
}
//#endregion
//#region MS Pointer Implementation if (!$subMenu.is(':visible')) {
function menuTouchMSPointerUp(e) {
if (!allowTouchNavigation && e.originalEvent.pointerType == e.originalEvent.MSPOINTER_TYPE_TOUCH) $subMenu.show();
$(this).click(menuTouchNavigationBlockClick);
e.preventDefault();
e.stopPropagation();
if (preventClick) {
// Stop Click Event
if ($link.length > 0) {
var preventClick = function () { $link.off('click', preventClick); return false; }
$link.on('click', preventClick);
}
}
return false;
}
}
if (Modernizr.hasEvent('pointerdown')) {
// Pointer Events
$menu
.on('pointerover', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType !== 'touch') {
subMenuShow.call(this);
}
})
.on('pointerout', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType !== 'touch') {
subMenuHide.call(this);
}
})
.on('pointerdown', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType === 'touch') {
return subMenuTouchDown.call(this, e, true);
}
});
$(document).on('pointerdown', function (e) {
if (e.originalEvent.pointerType === 'touch') {
if ($(e.target).closest('#menu').length == 0)
$menu.find('li.hasSubMenu>ul.subMenu:visible').hide();
}
});
} else if (Modernizr.hasEvent('mspointerdown')) {
// MS Pointer Events
$menu
.on('MSPointerOver', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType !== e.originalEvent.MSPOINTER_TYPE_TOUCH) {
subMenuShow.call(this);
}
})
.on('MSPointerOut', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType !== e.originalEvent.MSPOINTER_TYPE_TOUCH) {
subMenuHide.call(this);
}
})
.on('MSPointerDown', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType === e.originalEvent.MSPOINTER_TYPE_TOUCH) {
return subMenuTouchDown.call(this, e, true);
}
});
$(document).on('MSPointerDown', function (e) {
if (e.originalEvent.pointerType === e.originalEvent.MSPOINTER_TYPE_TOUCH) {
if ($(e.target).closest('#menu').length == 0)
$menu.find('li.hasSubMenu>ul.subMenu:visible').hide();
}
});
} else if (Modernizr.touch) {
// Touch Events
$menu
.on('mouseover', 'li.hasSubMenu', subMenuShow)
.on('mouseout', 'li.hasSubMenu', subMenuHide)
.on('touchstart', 'li.hasSubMenu', function (e) {
return subMenuTouchDown.call(this, e, false);
});
} else {
// Mouse Events
$menu
.on('mouseover', 'li.hasSubMenu', subMenuShow)
.on('mouseout', 'li.hasSubMenu', subMenuHide);
}
} }
//#endregion
}); });
})(jQuery, window, document, Modernizr); })(jQuery, window, document, Modernizr);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -15,70 +15,117 @@
// Menu Functionality // Menu Functionality
var $menu = $('#menu'); var $menu = $('#menu');
var $menuItems = $menu.find('li');
var $menuItemParents = $menuItems.filter('.hasSubMenu');
var $menuSubMenus = $menuItems.filter('.subMenu');
var menuAllowTouchNavigation = null;
$menuItemParents.each(function () { if ($menu.length > 0) {
var $parent = $(this);
var $subMenu = $parent.children('ul.subMenu'); function subMenuShow() {
$parent.data('menuSubMenu', $subMenu); var $this = $(this);
}).mouseover(function () { var $subMenu = $this.children('ul.subMenu');
var $parent = $(this); var hideToken = $this.data('menuHideToken');
var $subMenu = $parent.data('menuSubMenu');
var hideToken = $parent.data('menuHideToken');
if (hideToken) if (hideToken)
window.clearTimeout(hideToken); window.clearTimeout(hideToken);
if (!$subMenu.is(':visible')) {
if (!$subMenu.is(':visible'))
$subMenu.show(); $subMenu.show();
if (menuAllowTouchNavigation !== null)
menuTouchPreventNavigation();
} }
}).mouseout(function () { function subMenuHide() {
var $parent = $(this); var $this = $(this);
var $subMenu = $parent.data('menuSubMenu'); var $subMenu = $this.children('ul.subMenu');
var hideToken = window.setTimeout(function () { var hideToken = window.setTimeout(function () {
$subMenu.hide(); $subMenu.hide();
}, 250); }, 250);
$parent.data('menuHideToken', hideToken);
});
if (Modernizr.touch) { $this.data('menuHideToken', hideToken);
menuAllowTouchNavigation = true;
$menuItemParents.children('a').on('touchstart', menuTouchStarted);
} else if (window.navigator.msPointerEnabled) {
menuAllowTouchNavigation = true;
$menuItemParents.children('a').on('MSPointerUp', menuTouchMSPointerUp);
} }
function menuTouchPreventNavigation() { function subMenuTouchDown(e, preventClick) {
// Block Touch Navigation for 350ms
allowTouchNavigation = false;
window.setTimeout(function () {
allowTouchNavigation = true;
}, 350);
}
function menuTouchNavigationBlockClick(e) {
$(this).off('click', menuTouchNavigationBlockClick);
e.preventDefault();
}
//#region TouchEvents Implementation
function menuSubMenuVisible($element) {
return $element.closest('li').data('menuSubMenu').is(':visible');
}
function menuTouchStarted(e) {
var $this = $(this); var $this = $(this);
if (!menuSubMenuVisible($this)) var $link = $this.children('a');
$this.click(menuTouchNavigationBlockClick); var $subMenu = $this.children('ul.subMenu');
}
//#endregion
//#region MS Pointer Implementation if (!$subMenu.is(':visible')) {
function menuTouchMSPointerUp(e) {
if (!allowTouchNavigation && e.originalEvent.pointerType == e.originalEvent.MSPOINTER_TYPE_TOUCH) $subMenu.show();
$(this).click(menuTouchNavigationBlockClick);
e.preventDefault();
e.stopPropagation();
if (preventClick) {
// Stop Click Event
if ($link.length > 0) {
var preventClick = function () { $link.off('click', preventClick); return false; }
$link.on('click', preventClick);
}
}
return false;
}
}
if (Modernizr.hasEvent('pointerdown')) {
// Pointer Events
$menu
.on('pointerover', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType !== 'touch') {
subMenuShow.call(this);
}
})
.on('pointerout', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType !== 'touch') {
subMenuHide.call(this);
}
})
.on('pointerdown', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType === 'touch') {
return subMenuTouchDown.call(this, e, true);
}
});
$(document).on('pointerdown', function (e) {
if (e.originalEvent.pointerType === 'touch') {
if ($(e.target).closest('#menu').length == 0)
$menu.find('li.hasSubMenu>ul.subMenu:visible').hide();
}
});
} else if (Modernizr.hasEvent('mspointerdown')) {
// MS Pointer Events
$menu
.on('MSPointerOver', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType !== e.originalEvent.MSPOINTER_TYPE_TOUCH) {
subMenuShow.call(this);
}
})
.on('MSPointerOut', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType !== e.originalEvent.MSPOINTER_TYPE_TOUCH) {
subMenuHide.call(this);
}
})
.on('MSPointerDown', 'li.hasSubMenu', function (e) {
if (e.originalEvent.pointerType === e.originalEvent.MSPOINTER_TYPE_TOUCH) {
return subMenuTouchDown.call(this, e, true);
}
});
$(document).on('MSPointerDown', function (e) {
if (e.originalEvent.pointerType === e.originalEvent.MSPOINTER_TYPE_TOUCH) {
if ($(e.target).closest('#menu').length == 0)
$menu.find('li.hasSubMenu>ul.subMenu:visible').hide();
}
});
} else if (Modernizr.touch) {
// Touch Events
$menu
.on('mouseover', 'li.hasSubMenu', subMenuShow)
.on('mouseout', 'li.hasSubMenu', subMenuHide)
.on('touchstart', 'li.hasSubMenu', function (e) {
return subMenuTouchDown.call(this, e, false);
});
} else {
// Mouse Events
$menu
.on('mouseover', 'li.hasSubMenu', subMenuShow)
.on('mouseout', 'li.hasSubMenu', subMenuHide);
}
} }
//#endregion
}); });
})(jQuery, window, document, Modernizr); })(jQuery, window, document, Modernizr);
+2 -2
View File
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// //
// You can specify all the values or you can default the Revision and Build Numbers // You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
[assembly: AssemblyVersion("1.2.1001.1541")] [assembly: AssemblyVersion("1.2.1128.1503")]
[assembly: AssemblyFileVersion("1.2.1001.1541")] [assembly: AssemblyFileVersion("1.2.1128.1503")]
File diff suppressed because it is too large Load Diff