├── .nuget
├── NuGet.Config
├── NuGet.exe
└── NuGet.targets
├── LICENSE
├── PM-Dashboard.Tests
├── App.config
├── PM-Dashboard.Tests.csproj
├── Properties
│ └── AssemblyInfo.cs
└── packages.config
├── PM-Dashboard.sln
├── PM-Dashboard
├── App_Start
│ ├── BundleConfig.cs
│ ├── FilterConfig.cs
│ └── RouteConfig.cs
├── Content
│ ├── app.css
│ ├── app.html5bp.css
│ ├── fonts
│ │ ├── ._glyphicons-halflings-regular.eot
│ │ ├── ._glyphicons-halflings-regular.svg
│ │ ├── ._glyphicons-halflings-regular.ttf
│ │ ├── ._glyphicons-halflings-regular.woff
│ │ ├── ._glyphicons-halflings-regular.woff2
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ └── images
│ │ ├── ._glyphicons-halflings-white.png
│ │ ├── ._glyphicons-halflings.png
│ │ ├── ._igicons-pm-opt.png
│ │ ├── ._igicons-pm.png
│ │ ├── employees
│ │ ├── ._0000001.png
│ │ ├── ._0000002.png
│ │ ├── ._0000003.png
│ │ ├── ._0000004.png
│ │ ├── ._0000005.png
│ │ ├── ._0000006.png
│ │ ├── ._0000007.png
│ │ ├── ._0000008.png
│ │ ├── ._0000009.png
│ │ ├── ._0000010.png
│ │ ├── ._0000011.png
│ │ ├── ._0000012.png
│ │ ├── ._0000013.png
│ │ ├── ._0000014.png
│ │ ├── ._0000015.png
│ │ ├── ._0000016.png
│ │ ├── ._0000017.png
│ │ ├── ._0000018.png
│ │ ├── ._0000019.png
│ │ ├── ._0000020.png
│ │ ├── ._0000021.png
│ │ ├── ._0000022.png
│ │ ├── ._0000023.png
│ │ ├── ._0000024.png
│ │ ├── ._0000025.png
│ │ ├── 0000001.png
│ │ ├── 0000002.png
│ │ ├── 0000003.png
│ │ ├── 0000004.png
│ │ ├── 0000005.png
│ │ ├── 0000006.png
│ │ ├── 0000007.png
│ │ ├── 0000008.png
│ │ ├── 0000009.png
│ │ ├── 0000010.png
│ │ ├── 0000011.png
│ │ ├── 0000012.png
│ │ ├── 0000013.png
│ │ ├── 0000014.png
│ │ ├── 0000015.png
│ │ ├── 0000016.png
│ │ ├── 0000017.png
│ │ ├── 0000018.png
│ │ ├── 0000019.png
│ │ ├── 0000020.png
│ │ ├── 0000021.png
│ │ ├── 0000022.png
│ │ ├── 0000023.png
│ │ ├── 0000024.png
│ │ └── 0000025.png
│ │ ├── glyphicons-halflings-white.png
│ │ ├── glyphicons-halflings.png
│ │ ├── igicons-pm-opt.png
│ │ └── igicons-pm.png
├── Controllers
│ └── HomeController.cs
├── Global.asax
├── Global.asax.cs
├── Images
│ ├── accent.png
│ ├── bullet.png
│ ├── heroAccent.png
│ ├── icons
│ │ ├── android-icon-144x144.png
│ │ ├── android-icon-192x192.png
│ │ ├── android-icon-36x36.png
│ │ ├── android-icon-48x48.png
│ │ ├── android-icon-72x72.png
│ │ ├── android-icon-96x96.png
│ │ ├── apple-icon-114x114.png
│ │ ├── apple-icon-120x120.png
│ │ ├── apple-icon-144x144.png
│ │ ├── apple-icon-152x152.png
│ │ ├── apple-icon-180x180.png
│ │ ├── apple-icon-57x57.png
│ │ ├── apple-icon-60x60.png
│ │ ├── apple-icon-72x72.png
│ │ ├── apple-icon-76x76.png
│ │ ├── apple-icon-precomposed.png
│ │ ├── apple-icon.png
│ │ ├── apple-touch-icon.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon-96x96.png
│ │ ├── ms-icon-144x144.png
│ │ ├── ms-icon-150x150.png
│ │ ├── ms-icon-310x310.png
│ │ └── ms-icon-70x70.png
│ ├── orderedList0.png
│ ├── orderedList1.png
│ ├── orderedList2.png
│ ├── orderedList3.png
│ ├── orderedList4.png
│ ├── orderedList5.png
│ ├── orderedList6.png
│ ├── orderedList7.png
│ ├── orderedList8.png
│ └── orderedList9.png
├── Infragistics.Web.Mvc.Free.dll
├── Models
│ └── ResourceData.cs
├── PM-Dashboard.csproj
├── Properties
│ └── AssemblyInfo.cs
├── Resources
│ ├── Main.Designer.cs
│ ├── Main.ja.Designer.cs
│ ├── Main.ja.resx
│ └── Main.resx
├── Scripts
│ ├── _references.js
│ ├── app
│ │ ├── app.actions.js
│ │ ├── app.main.js
│ │ ├── app.utils.js
│ │ ├── app.viewmodels.js
│ │ ├── resources.js
│ │ └── resources.min.js
│ ├── i18n
│ │ ├── locale-en.js
│ │ └── locale-ja.js
│ ├── ignite
│ │ ├── infragistics.core.js
│ │ ├── infragistics.dv.js
│ │ └── infragistics.lob.js
│ ├── jquery-1.11.2.min.js
│ ├── jquery-mCustomScrollbar.3.0.8.js
│ ├── jquery-ui-1.10.3.min.js
│ ├── knockout-3.3.0.min.js
│ ├── modernizr-2.8.3.js
│ └── modernizr-2.8.3.min.js
├── Views
│ ├── Home
│ │ └── Index.cshtml
│ ├── Shared
│ │ ├── Error.cshtml
│ │ └── _Layout.cshtml
│ ├── Web.config
│ └── _ViewStart.cshtml
├── Web.Debug.config
├── Web.Release.config
├── Web.config
├── browserconfig.xml
├── favicon.ico
├── manifest.json
└── packages.config
├── README.md
└── packages
└── repositories.config
/.nuget/NuGet.Config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.nuget/NuGet.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/.nuget/NuGet.exe
--------------------------------------------------------------------------------
/.nuget/NuGet.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(MSBuildProjectDirectory)\..\
5 |
6 |
7 | false
8 |
9 |
10 | false
11 |
12 |
13 | true
14 |
15 |
16 | false
17 |
18 |
19 |
20 |
21 |
22 |
26 |
27 |
28 |
29 |
30 | $([System.IO.Path]::Combine($(SolutionDir), ".nuget"))
31 |
32 |
33 |
34 |
35 | $(SolutionDir).nuget
36 |
37 |
38 |
39 | $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config
40 | $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config
41 |
42 |
43 |
44 | $(MSBuildProjectDirectory)\packages.config
45 | $(PackagesProjectConfig)
46 |
47 |
48 |
49 |
50 | $(NuGetToolsPath)\NuGet.exe
51 | @(PackageSource)
52 |
53 | "$(NuGetExePath)"
54 | mono --runtime=v4.0.30319 "$(NuGetExePath)"
55 |
56 | $(TargetDir.Trim('\\'))
57 |
58 | -RequireConsent
59 | -NonInteractive
60 |
61 | "$(SolutionDir) "
62 | "$(SolutionDir)"
63 |
64 |
65 | $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)
66 | $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols
67 |
68 |
69 |
70 | RestorePackages;
71 | $(BuildDependsOn);
72 |
73 |
74 |
75 |
76 | $(BuildDependsOn);
77 | BuildPackage;
78 |
79 |
80 |
81 |
82 |
83 |
84 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
99 |
100 |
103 |
104 |
105 |
106 |
108 |
109 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
141 |
142 |
143 |
144 |
145 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 IgniteUI - HTML5/jQuery Controls and Tools
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/PM-Dashboard.Tests/App.config:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/PM-Dashboard.Tests/PM-Dashboard.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 |
7 |
8 | 2.0
9 | {2439933D-E255-4E9E-BB2D-03D79B4539B3}
10 | Library
11 | Properties
12 | PM_Dashboard.Tests
13 | PM-Dashboard.Tests
14 | v4.5
15 | 512
16 | {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
17 | SAK
18 | SAK
19 | SAK
20 | SAK
21 | ..\
22 | true
23 |
24 |
25 | true
26 | full
27 | false
28 | bin\Debug\
29 | DEBUG;TRACE
30 | prompt
31 | 4
32 |
33 |
34 | pdbonly
35 | true
36 | bin\Release\
37 | TRACE
38 | prompt
39 | 4
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | True
58 | ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
59 |
60 |
61 | True
62 | ..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll
63 |
64 |
65 | ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
66 |
67 |
68 |
69 |
70 | ..\packages\Microsoft.AspNet.WebApi.Client.4.0.30506.0\lib\net40\System.Net.Http.Formatting.dll
71 |
72 |
73 |
74 |
75 | True
76 | ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll
77 |
78 |
79 | ..\packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll
80 |
81 |
82 | ..\packages\Microsoft.AspNet.WebApi.WebHost.4.0.30506.0\lib\net40\System.Web.Http.WebHost.dll
83 |
84 |
85 | True
86 | ..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll
87 |
88 |
89 | True
90 | ..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll
91 |
92 |
93 | True
94 | ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll
95 |
96 |
97 | True
98 | ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll
99 |
100 |
101 | True
102 | ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 | {ED8E9BCF-2899-4B1C-B5AD-873EC41E34F7}
117 | PM-Dashboard
118 |
119 |
120 |
121 |
122 |
129 |
--------------------------------------------------------------------------------
/PM-Dashboard.Tests/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("PM_Dashboard.Tests")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("PM_Dashboard.Tests")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
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("9cd89ef6-a929-4201-b903-42eee5ff5a7c")]
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 |
--------------------------------------------------------------------------------
/PM-Dashboard.Tests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/PM-Dashboard.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.30723.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PM-Dashboard", "PM-Dashboard\PM-Dashboard.csproj", "{ED8E9BCF-2899-4B1C-B5AD-873EC41E34F7}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PM-Dashboard.Tests", "PM-Dashboard.Tests\PM-Dashboard.Tests.csproj", "{2439933D-E255-4E9E-BB2D-03D79B4539B3}"
9 | EndProject
10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{B7B8EBF6-71DB-4DCA-AAC8-2CD7330FD531}"
11 | ProjectSection(SolutionItems) = preProject
12 | .nuget\NuGet.Config = .nuget\NuGet.Config
13 | .nuget\NuGet.exe = .nuget\NuGet.exe
14 | .nuget\NuGet.targets = .nuget\NuGet.targets
15 | EndProjectSection
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 | {ED8E9BCF-2899-4B1C-B5AD-873EC41E34F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24 | {ED8E9BCF-2899-4B1C-B5AD-873EC41E34F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
25 | {ED8E9BCF-2899-4B1C-B5AD-873EC41E34F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
26 | {ED8E9BCF-2899-4B1C-B5AD-873EC41E34F7}.Release|Any CPU.Build.0 = Release|Any CPU
27 | {2439933D-E255-4E9E-BB2D-03D79B4539B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28 | {2439933D-E255-4E9E-BB2D-03D79B4539B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
29 | {2439933D-E255-4E9E-BB2D-03D79B4539B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
30 | {2439933D-E255-4E9E-BB2D-03D79B4539B3}.Release|Any CPU.Build.0 = Release|Any CPU
31 | EndGlobalSection
32 | GlobalSection(SolutionProperties) = preSolution
33 | HideSolutionNode = FALSE
34 | EndGlobalSection
35 | EndGlobal
36 |
--------------------------------------------------------------------------------
/PM-Dashboard/App_Start/BundleConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Web;
2 | using System.Web.Optimization;
3 |
4 | namespace PM_Dashboard
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/dependencies").Include(
12 | "~/Scripts/modernizr-2.8.3.min.js",
13 | "~/Scripts/jquery-1.11.2.min.js",
14 | "~/Scripts/jquery-ui-1.10.3.min.js"));
15 |
16 | bundles.Add(new ScriptBundle("~/bundles/igniteui").Include(
17 | "~/Scripts/ignite/infragistics.core.js",
18 | "~/Scripts/ignite/infragistics.lob.js",
19 | "~/Scripts/ignite/infragistics.dv.js"));
20 |
21 | bundles.Add(new ScriptBundle("~/bundles/knockout").Include(
22 | "~/Scripts/knockout-3.3.0.min.js"));
23 |
24 | bundles.Add(new StyleBundle("~/Content/css").Include(
25 | "~/Content/app.html5bp.css",
26 | "~/Content/app.css"));
27 |
28 | bundles.Add(new ScriptBundle("~/bundles/app").Include(
29 | "~/Scripts/jquery-mCustomScrollbar.3.0.8.js",
30 | "~/Scripts/app/app.utils.js",
31 | "~/Scripts/app/app.actions.js",
32 | "~/Scripts/app/app.viewmodels.js",
33 | "~/Scripts/app/app.main.js"));
34 |
35 | BundleTable.EnableOptimizations = true;
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/PM-Dashboard/App_Start/FilterConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Web;
2 | using System.Web.Mvc;
3 |
4 | namespace PM_Dashboard
5 | {
6 | public class FilterConfig
7 | {
8 | public static void RegisterGlobalFilters(GlobalFilterCollection filters)
9 | {
10 | filters.Add(new HandleErrorAttribute());
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/PM-Dashboard/App_Start/RouteConfig.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 | using System.Web.Mvc;
6 | using System.Web.Routing;
7 |
8 | namespace PM_Dashboard
9 | {
10 | public class RouteConfig
11 | {
12 | public static void RegisterRoutes(RouteCollection routes)
13 | {
14 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15 |
16 | routes.MapRoute(
17 | name: "Default",
18 | url: "{controller}/{action}/{id}",
19 | defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
20 | );
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.svg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.svg
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/._glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/PM-Dashboard/Content/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/._glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/._glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/._glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/._glyphicons-halflings.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/._igicons-pm-opt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/._igicons-pm-opt.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/._igicons-pm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/._igicons-pm.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000001.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000002.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000003.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000004.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000004.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000005.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000006.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000006.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000007.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000007.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000008.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000008.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000009.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000009.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000010.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000010.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000011.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000011.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000012.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000012.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000013.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000013.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000014.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000015.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000016.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000017.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000017.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000018.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000019.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000019.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000020.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000021.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000021.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000022.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000022.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000023.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000023.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000024.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/._0000025.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/._0000025.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000001.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000001.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000002.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000002.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000003.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000003.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000004.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000004.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000005.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000006.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000006.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000007.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000007.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000008.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000008.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000009.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000009.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000010.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000010.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000011.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000011.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000012.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000012.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000013.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000013.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000014.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000015.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000016.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000017.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000017.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000018.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000019.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000019.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000020.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000020.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000021.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000021.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000022.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000022.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000023.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000023.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000024.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/employees/0000025.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/employees/0000025.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/glyphicons-halflings.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/igicons-pm-opt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/igicons-pm-opt.png
--------------------------------------------------------------------------------
/PM-Dashboard/Content/images/igicons-pm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Content/images/igicons-pm.png
--------------------------------------------------------------------------------
/PM-Dashboard/Controllers/HomeController.cs:
--------------------------------------------------------------------------------
1 | using PM_Dashboard.Models;
2 | using System;
3 | using System.Globalization;
4 | using System.Collections.Generic;
5 | using System.Dynamic;
6 | using System.Linq;
7 | using System.Web;
8 | using System.Web.Mvc;
9 | using Infragistics.Web.Mvc;
10 |
11 | namespace PM_Dashboard.Controllers
12 | {
13 | public class HomeController : Controller
14 | {
15 | static ResourceData data = new ResourceData();
16 |
17 | public ActionResult Index(string returnUrl)
18 | {
19 | ViewBag.ReturnUrl = returnUrl;
20 | //data.projects = data.projects.OrderBy(project => project.status).ThenBy(project => project.project_id).ToList();
21 |
22 | string pID = data.projects[0].project_id.ToString(); // Obtain 1st Project ID
23 | GridModel overview = new GridModel();
24 | overview.DataSource = data.resourceOverview[pID].weeks[0].resources.AsQueryable();
25 |
26 | overview.ID = "resource-overview-table";
27 | overview.PrimaryKey = "employeedID";
28 | overview.Width = "100%";
29 | overview.AutoGenerateColumns = false;
30 | overview.AutoGenerateLayouts = false;
31 | overview.EnableHoverStyles = false;
32 | overview.AutofitLastColumn = false;
33 |
34 | GridColumn employeeIDCol = new GridColumn();
35 | employeeIDCol.Key = "employeeID";
36 | employeeIDCol.HeaderText = "Employee ID";
37 | employeeIDCol.DataType = "string";
38 | employeeIDCol.Hidden = true;
39 |
40 | GridColumn disciplineCol = new GridColumn();
41 | disciplineCol.Key = "discipline";
42 | disciplineCol.HeaderText = "Discipline";
43 | disciplineCol.DataType = "string";
44 | disciplineCol.Width = "113px";
45 | disciplineCol.HeaderCssClass = "disciplineCol";
46 | disciplineCol.ColumnCssClass = "disciplineCol";
47 | disciplineCol.FormatterFunction = "formatResourceFirstCol";
48 |
49 | overview.Columns.Add(employeeIDCol);
50 | overview.Columns.Add(disciplineCol);
51 |
52 | int wk = 1;
53 | int compareWithStartDate, compareWithEndDate;
54 | string today = "2015-07-07 12:00:00";
55 | DateTime t1 = Convert.ToDateTime(today);
56 | DateTime sdate,edate;
57 | string sdateMonth, edateMonth, sdateDay, edateDay, curLabel;
58 | curLabel = @Resources.Main.Overview_CurrentLabel;
59 | foreach (var week in data.resourceOverview[pID].weeks)
60 | {
61 |
62 | sdate = Convert.ToDateTime(week.startDate);
63 | edate = Convert.ToDateTime(week.endDate);
64 | compareWithStartDate = DateTime.Compare(t1, sdate);
65 | compareWithEndDate = DateTime.Compare(t1, edate);
66 |
67 | sdateMonth = week.startDate.Substring(5, 2).TrimStart(new Char[] { '0' });
68 | sdateDay = week.startDate.Substring(8, 2).TrimStart(new Char[] { '0' });
69 | edateMonth = week.endDate.Substring(5, 2).TrimStart(new Char[] { '0' });
70 | edateDay = week.endDate.Substring(8, 2).TrimStart(new Char[] { '0' });
71 | GridColumn weekCol = new GridColumn();
72 | weekCol.Key = "discipline";
73 | if (compareWithStartDate > 0 && compareWithEndDate < 0) {
74 | weekCol.HeaderText = @"
";
75 | }
76 | else
77 | {
78 | weekCol.HeaderText = @"";
79 | }
80 | weekCol.DataType = "string";
81 | weekCol.Width = "113px";
82 | weekCol.ColumnCssClass = "gaugeRow";
83 | weekCol.Template = @"";
84 |
85 | overview.Columns.Add(weekCol);
86 |
87 | wk = wk + 1;
88 | }
89 | overview.AddClientEvent("rowsRendered", "app.utils.renderLinearGauge(resourceOverview['10000'])");
90 |
91 |
92 |
93 | GridModel tasks = new GridModel();
94 | tasks.DataSource = data.taskList[pID].tasks.AsQueryable();
95 |
96 | tasks.ID = "project-tasks-table";
97 | tasks.PrimaryKey = "id";
98 | tasks.AutoGenerateColumns = false;
99 | tasks.AlternateRowStyles = false;
100 | tasks.EnableHoverStyles = true;
101 | tasks.ShowHeader = false;
102 |
103 |
104 | GridColumn taskIDCol = new GridColumn();
105 | taskIDCol.Key = "id";
106 | taskIDCol.HeaderText = "Task ID";
107 | taskIDCol.DataType = "number";
108 | taskIDCol.Hidden = true;
109 |
110 | GridColumn taskCol = new GridColumn();
111 | taskCol.Key = "name";
112 | taskCol.HeaderText = "Task";
113 | taskCol.DataType = "string";
114 | taskCol.FormatterFunction = @"function(v,r) { return """" + v + "" (# "" + r.id + "")"" + Resources.TaskProjectedEndLabel + "" "" + (parseDate(r.endDate).getMonth()+1) + '/' + parseDate(r.endDate).getDate() + """" + r.hours + "" "" + Resources.TaskHoursLabel + """" + Resources.TaskHrsLabel + ""
""; }";
115 |
116 | GridColumn flagCol = new GridColumn();
117 | flagCol.Key = "flag";
118 | flagCol.HeaderText = "Flag";
119 | flagCol.DataType = "string";
120 | flagCol.Hidden = true;
121 |
122 | GridColumn discCol = new GridColumn();
123 | discCol.Key = "discipline";
124 | discCol.HeaderText = "Discipline";
125 | discCol.DataType = "string";
126 | discCol.Hidden = true;
127 |
128 | GridColumn edateCol = new GridColumn();
129 | edateCol.Key = "endDate";
130 | edateCol.HeaderText = "End Date";
131 | edateCol.DataType = "string";
132 | edateCol.Hidden = true;
133 |
134 | GridColumn sdateCol = new GridColumn();
135 | sdateCol.Key = "startDate";
136 | sdateCol.HeaderText = "Start Date";
137 | sdateCol.DataType = "string";
138 | sdateCol.Hidden = true;
139 |
140 | GridColumn hoursCol = new GridColumn();
141 | hoursCol.Key = "hours";
142 | hoursCol.HeaderText = "hours";
143 | hoursCol.DataType = "string";
144 | hoursCol.Hidden = true;
145 |
146 | /*Add Columns*/
147 | tasks.Columns.Add(taskIDCol);
148 | tasks.Columns.Add(taskCol);
149 | tasks.Columns.Add(flagCol);
150 | tasks.Columns.Add(discCol);
151 | tasks.Columns.Add(edateCol);
152 | tasks.Columns.Add(sdateCol);
153 | tasks.Columns.Add(hoursCol);
154 |
155 | GridColumnLayoutModel layout = new GridColumnLayoutModel();
156 | layout.Key = "assets";
157 | layout.AutoGenerateColumns = false;
158 | layout.EnableHoverStyles = false;
159 | layout.ShowHeader = false;
160 |
161 | GridColumn type = new GridColumn();
162 | type.Key = "type";
163 | type.HeaderText = "Type";
164 | type.DataType = "string";
165 | type.ColumnCssClass = "file-type";
166 | type.FormatterFunction = @"function(val){return """";}";
167 |
168 | GridColumn name = new GridColumn();
169 | name.Key = "name";
170 | name.HeaderText = "Assets";
171 | name.DataType = "string";
172 | name.ColumnCssClass = "task-name";
173 |
174 | GridColumn url = new GridColumn();
175 | url.Key = "url";
176 | url.HeaderText = "URL";
177 | url.DataType = "string";
178 | url.FormatterFunction = @"function(val){return ""("" + Resources.TaskViewFile + "")"";}";
179 |
180 | layout.Columns.Add(type);
181 | layout.Columns.Add(name);
182 | layout.Columns.Add(url);
183 |
184 |
185 | tasks.ColumnLayouts.Add(layout);
186 |
187 | tasks.AddClientEvent("rowsRendered", "app.utils.taskListRowsRendered()");
188 | tasks.AddClientEvent("rowExpanding", "app.utils.taskListRowsExpanding(evt,ui)");
189 |
190 |
191 | dynamic vm = new ExpandoObject();
192 | vm.data = data;
193 | vm.grid = overview;
194 | vm.tasks = tasks;
195 |
196 | return View(vm);
197 | }
198 |
199 | public JsonResult GetProjectData()
200 | {
201 | return Json(data.projects, JsonRequestBehavior.AllowGet);
202 | }
203 |
204 | public JsonResult GetResourceOverviewData()
205 | {
206 | return Json(data.resourceOverview, JsonRequestBehavior.AllowGet);
207 | }
208 |
209 | public JsonResult GetEmployeesData()
210 | {
211 | return Json(data.employees, JsonRequestBehavior.AllowGet);
212 | }
213 |
214 | public JsonResult GetTaskListData()
215 | {
216 | return Json(data.taskList, JsonRequestBehavior.AllowGet);
217 | }
218 | }
219 | }
--------------------------------------------------------------------------------
/PM-Dashboard/Global.asax:
--------------------------------------------------------------------------------
1 | <%@ Application Codebehind="Global.asax.cs" Inherits="PM_Dashboard.MvcApplication" Language="C#" %>
2 |
--------------------------------------------------------------------------------
/PM-Dashboard/Global.asax.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 | using System.Web.Http;
6 | using System.Web.Mvc;
7 | using System.Web.Optimization;
8 | using System.Web.Routing;
9 |
10 | namespace PM_Dashboard
11 | {
12 | // Note: For instructions on enabling IIS6 or IIS7 classic mode,
13 | // visit http://go.microsoft.com/?LinkId=9394801
14 |
15 | public class MvcApplication : System.Web.HttpApplication
16 | {
17 | protected void Application_Start()
18 | {
19 | AreaRegistration.RegisterAllAreas();
20 |
21 | FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
22 | RouteConfig.RegisterRoutes(RouteTable.Routes);
23 | BundleConfig.RegisterBundles(BundleTable.Bundles);
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/PM-Dashboard/Images/accent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/accent.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/bullet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/bullet.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/heroAccent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/heroAccent.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/android-icon-144x144.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/android-icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/android-icon-192x192.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/android-icon-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/android-icon-36x36.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/android-icon-48x48.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/android-icon-72x72.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/android-icon-96x96.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-114x114.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-120x120.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-144x144.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-152x152.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-180x180.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-57x57.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-60x60.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-72x72.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-76x76.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon-precomposed.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-icon.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/apple-touch-icon.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/favicon-96x96.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/ms-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/ms-icon-144x144.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/ms-icon-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/ms-icon-150x150.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/ms-icon-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/ms-icon-310x310.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/icons/ms-icon-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/icons/ms-icon-70x70.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList0.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList1.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList2.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList3.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList4.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList5.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList6.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList7.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList8.png
--------------------------------------------------------------------------------
/PM-Dashboard/Images/orderedList9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Images/orderedList9.png
--------------------------------------------------------------------------------
/PM-Dashboard/Infragistics.Web.Mvc.Free.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Infragistics.Web.Mvc.Free.dll
--------------------------------------------------------------------------------
/PM-Dashboard/PM-Dashboard.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 |
8 |
9 | 2.0
10 | {ED8E9BCF-2899-4B1C-B5AD-873EC41E34F7}
11 | {E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
12 | Library
13 | Properties
14 | PM_Dashboard
15 | PM-Dashboard
16 | v4.5
17 | false
18 | true
19 |
20 |
21 |
22 |
23 | SAK
24 | SAK
25 | SAK
26 | SAK
27 | ..\
28 | true
29 |
30 |
31 | true
32 | full
33 | false
34 | bin\
35 | DEBUG;TRACE
36 | prompt
37 | 4
38 |
39 |
40 | pdbonly
41 | true
42 | bin\
43 | TRACE
44 | prompt
45 | 4
46 |
47 |
48 |
49 | False
50 | .\Infragistics.Web.Mvc.Free.dll
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | True
75 | ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
76 |
77 |
78 | True
79 | ..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.0\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll
80 |
81 |
82 | ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
83 |
84 |
85 |
86 |
87 |
88 |
89 | True
90 | ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll
91 |
92 |
93 | True
94 | ..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll
95 |
96 |
97 | ..\packages\Microsoft.AspNet.Web.Optimization.1.0.0\lib\net40\System.Web.Optimization.dll
98 |
99 |
100 | True
101 | ..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll
102 |
103 |
104 | True
105 | ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll
106 |
107 |
108 | True
109 | ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll
110 |
111 |
112 | True
113 | ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll
114 |
115 |
116 | True
117 | ..\packages\Microsoft.AspNet.WebPages.Data.2.0.30506.0\lib\net40\WebMatrix.Data.dll
118 |
119 |
120 | True
121 | ..\packages\Microsoft.AspNet.WebPages.WebData.2.0.30506.0\lib\net40\WebMatrix.WebData.dll
122 |
123 |
124 | True
125 | ..\packages\Microsoft.Data.Edm.5.2.0\lib\net40\Microsoft.Data.Edm.dll
126 |
127 |
128 | True
129 | ..\packages\Microsoft.Data.OData.5.2.0\lib\net40\Microsoft.Data.OData.dll
130 |
131 |
132 | True
133 | ..\packages\System.Spatial.5.2.0\lib\net40\System.Spatial.dll
134 |
135 |
136 | True
137 | ..\packages\WebGrease.1.3.0\lib\WebGrease.dll
138 |
139 |
140 | True
141 | ..\packages\WebGrease.1.3.0\lib\Antlr3.Runtime.dll
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 | Global.asax
151 |
152 |
153 |
154 |
155 | True
156 | True
157 | Main.resx
158 |
159 |
160 | True
161 | True
162 | Main.ja.resx
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 | Designer
251 |
252 |
253 | Web.config
254 |
255 |
256 | Web.config
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 | Designer
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 | Designer
286 |
287 |
288 |
289 |
290 | Resources
291 | PublicResXFileCodeGenerator
292 | Main.ja.Designer.cs
293 |
294 |
295 | PublicResXFileCodeGenerator
296 | Main.Designer.cs
297 | Resources
298 |
299 |
300 |
301 | 10.0
302 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 | True
315 | True
316 | 63241
317 | /
318 | http://localhost:63238/
319 | False
320 | False
321 |
322 |
323 | False
324 |
325 |
326 |
327 |
328 |
329 |
335 |
--------------------------------------------------------------------------------
/PM-Dashboard/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("PM_Dashboard")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("PM_Dashboard")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
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("35fc5244-e307-4b38-9689-8343ccddce3b")]
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 |
--------------------------------------------------------------------------------
/PM-Dashboard/Resources/Main.ja.Designer.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Resources/Main.ja.Designer.cs
--------------------------------------------------------------------------------
/PM-Dashboard/Resources/Main.ja.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 割り当てられたリソース
122 |
123 |
124 | 時間
125 |
126 |
127 | : 利用可能な時間数
128 |
129 |
130 | : その他の時間数
131 |
132 |
133 | : このタスクの時間数
134 |
135 |
136 | タスク #
137 |
138 |
139 | タスクに割り当てられた人はいません。
140 |
141 |
142 | 基本予算
143 |
144 |
145 | 時間/見積もり時間
146 |
147 |
148 | 予定終了日
149 |
150 |
151 | 推定予算
152 |
153 |
154 | 予測終了日
155 |
156 |
157 | タスクの進行状況
158 |
159 |
160 | <span>現在<b>古い</b>ブラウザーが使用されているため、このアプリケーションはサポートされていません。アプリケーションを表示するには、<a href="http://browsehappy.com/" class="animate-decor-disappear">ブラウザーをアップグレード</a>してください。</span>
161 |
162 |
163 | 進行中
164 |
165 |
166 | 開始日
167 |
168 |
169 | 今日
170 |
171 |
172 | 予定
173 |
174 |
175 | プロジェクト マネージャー
176 |
177 |
178 | リソースの見積もり時間が作業可能な時間を超えています。
179 |
180 |
181 | 見積もり時間がリソースの作業可能な 40 時間を超えています。
182 |
183 |
184 | 40時間以上の超過割り当て
185 |
186 |
187 | 割り当て時間超過
188 |
189 |
190 | リソースの稼働時間が見積もり時間を超えています。
191 |
192 |
193 | リソースの実稼働時間が見積もりの 40 時間を超えています。
194 |
195 |
196 | 40時間以上の超過見積もり
197 |
198 |
199 | 見積もり時間超過
200 |
201 |
202 | チャートの見方
203 |
204 |
205 | 割り当て超過
206 |
207 |
208 | 見積もり時間超過
209 |
210 |
211 | 見積もり時間
212 |
213 |
214 | 作業時間
215 |
216 |
217 | 現在
218 |
219 |
220 | 稼働時間 vs. 見積もり時間
221 |
222 |
223 | プロジェクトの人数制限は 6 人です
224 |
225 |
226 | 読み込んでいます...
227 |
228 |
229 | プロジェクト計画
230 |
231 |
232 | プロジェクト #
233 |
234 |
235 | プロジェクト タスク
236 |
237 |
238 | 時間
239 |
240 |
241 | 時間
242 |
243 |
244 | 予定終了日
245 |
246 |
247 | ファイルを表示
248 |
249 |
250 | 選択した時間範囲に利用可能なタスクがありません。
251 |
252 |
253 | クリックしてこのリソースを追加
254 |
255 |
256 | すべてのチーム メンバー
257 |
258 |
259 | 開発
260 |
261 |
262 | プロジェクト マネジメント
263 |
264 |
265 | UX
266 |
267 |
268 | ビジュアル デザイン
269 |
270 |
271 | :利用可能な時間数
272 |
273 |
274 | プロジェクト
275 |
276 |
277 | 追加するチーム メンバーを選択してください。
278 |
279 |
280 | チーム メンバーを表示
281 |
282 |
283 | プロジェクト マネジメント ダッシュボード
284 |
285 |
286 | 業務アプリケーションでは、ここに Dropbox などの外部ストレージ サービスにあるアセットの表示やサイト内のその他のページへリンクできます。
287 |
288 |
289 | サンプル ダイアログ
290 |
291 |
292 | ワイヤーフレームの調整
293 |
294 |
295 | 面接データの分析
296 |
297 |
298 | デザイン プレビュー
299 |
300 |
301 | デザイン仕様
302 |
303 |
304 | バグの修正
305 |
306 |
307 | デザイン要素の収集と準備
308 |
309 |
310 | インタラクション ドキュメント
311 |
312 |
313 | プロトタイプの調整
314 |
315 |
316 | ミーティング メモ
317 |
318 |
319 | 面接の質問準備
320 |
321 |
322 | プロトタイプ
323 |
324 |
325 | プロジェクトの更新されたリンクの提供
326 |
327 |
328 | 面接の記録
329 |
330 |
331 | リサーチ メモ
332 |
333 |
334 | 開発リンクをプロジェクト マネジャーに送信
335 |
336 |
337 | バグ リストの更新
338 |
339 |
340 | ユーザー テストのフィードバックを保存
341 |
342 |
343 | バグのユーザー テスト
344 |
345 |
346 | ワイヤーフレーム スケッチ
347 |
348 |
349 | タスク リストの更新
350 |
351 |
352 | インタラクションの注釈
353 |
354 |
355 | バックエンド開発
356 |
357 |
358 | バックエンド開発 II
359 |
360 |
361 | デザイン リサーチ
362 |
363 |
364 | 開発
365 |
366 |
367 | 開発 II
368 |
369 |
370 | 開発 III
371 |
372 |
373 | 開発研究
374 |
375 |
376 | 開発研究 II
377 |
378 |
379 | 開発研究 III
380 |
381 |
382 | 開発研究 IV
383 |
384 |
385 | 開発研究 V
386 |
387 |
388 | 開発の完了
389 |
390 |
391 | 最終レビューと発売
392 |
393 |
394 | フロントエンド開発
395 |
396 |
397 | フロントエンド開発 II
398 |
399 |
400 | プロジェクト レビュー
401 |
402 |
403 | 関係者の面接
404 |
405 |
406 | ユーザー テスト
407 |
408 |
409 | ユーザー テストとバグ修正
410 |
411 |
412 | ユーザー テストとバグ修正 II
413 |
414 |
415 | ビジュアル デザイン
416 |
417 |
418 | ビジュアル デザイン II
419 |
420 |
421 | ワイヤーフレーム
422 |
423 |
424 | ワイヤーフレーム II
425 |
426 |
--------------------------------------------------------------------------------
/PM-Dashboard/Resources/Main.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | Assigned Resources
122 |
123 |
124 | hrs available
125 |
126 |
127 | hrs other
128 |
129 |
130 | hrs this task
131 |
132 |
133 | task #
134 |
135 |
136 | Sorry, but no one has been assigned to this task.
137 |
138 |
139 | baseline budget
140 |
141 |
142 | hours/planned
143 |
144 |
145 | planned end date
146 |
147 |
148 | projected budget
149 |
150 |
151 | projected end date
152 |
153 |
154 | task progress
155 |
156 |
157 | <span>Unfortuantely, you are using an <b>outdated</b> browser and some element for this app are not supported. Please <a href="http://browsehappy.com/" class="animate-decor-disappear">upgrade your browser</a> to view.</span>
158 |
159 |
160 | current
161 |
162 |
163 | starting
164 |
165 |
166 | today
167 |
168 |
169 | upcoming
170 |
171 |
172 | Project Manager
173 |
174 |
175 | Resource has more hours planned than available
176 |
177 |
178 | Resource has more hours planned than available and is over 40 hrs
179 |
180 |
181 | Over Allocated More Than 40 hrs
182 |
183 |
184 | Over Allocated
185 |
186 |
187 | Resource has worked more than planned
188 |
189 |
190 | Resource has worked mored than planned and is over 40 hrs
191 |
192 |
193 | Over Planned hrs more than 40 hrs
194 |
195 |
196 | Over Planned hrs
197 |
198 |
199 | How To Read the Charts
200 |
201 |
202 | over allocation
203 |
204 |
205 | over planned hours
206 |
207 |
208 | planned
209 |
210 |
211 | worked
212 |
213 |
214 | Worked Hours vs. Planned Hours
215 |
216 |
217 | 6 person limit per project
218 |
219 |
220 | please wait...
221 |
222 |
223 | ProjectPlanner
224 |
225 |
226 | Proj#
227 |
228 |
229 | Project Tasks
230 |
231 |
232 | Sorry, there are no tasks available during the selected time frame.
233 |
234 |
235 | Click Again to Confirm Add
236 |
237 |
238 | All Team Members
239 |
240 |
241 | Development
242 |
243 |
244 | Project Management
245 |
246 |
247 | User Experience
248 |
249 |
250 | Visual Design
251 |
252 |
253 | hrs available
254 |
255 |
256 | projects
257 |
258 |
259 | Select Team Member To Add
260 |
261 |
262 | View Team Members
263 |
264 |
265 | Project Management Dashboard
266 |
267 |
268 | In a production app, these links can be used to show assets located on external storage services such as Dropbox or point to another location within the site.
269 |
270 |
271 | This is a Sample Application
272 |
273 |
274 | hrs
275 |
276 |
277 | current
278 |
279 |
280 | hours
281 |
282 |
283 | hrs
284 |
285 |
286 | Projected End
287 |
288 |
289 | view file
290 |
291 |
292 | Make Adjustments to Wireframe
293 |
294 |
295 | Analyze Interview Data
296 |
297 |
298 | Design Previews
299 |
300 |
301 | Design Specs
302 |
303 |
304 | Fix Bugs
305 |
306 |
307 | Gather and Prepare Initial Design elements
308 |
309 |
310 | Interaction Documentation
311 |
312 |
313 | Make Adjustments to Prototype
314 |
315 |
316 | Meeting Notes
317 |
318 |
319 | Prepare Interview Questions
320 |
321 |
322 | Prototyping
323 |
324 |
325 | Provide Updated Link of Project
326 |
327 |
328 | Record Interviews
329 |
330 |
331 | Research Notes
332 |
333 |
334 | Send Development Link to Project Manageer
335 |
336 |
337 | Update Bug Report
338 |
339 |
340 | Document Feedback from User Tests
341 |
342 |
343 | User Test for Bugs
344 |
345 |
346 | Wireframe sketches
347 |
348 |
349 | Update Task List Documentation
350 |
351 |
352 | Annotation of Interactions
353 |
354 |
355 | Back-end Development
356 |
357 |
358 | Back-end Development II
359 |
360 |
361 | Design Research
362 |
363 |
364 | Development
365 |
366 |
367 | Development II
368 |
369 |
370 | Development III
371 |
372 |
373 | Development Research
374 |
375 |
376 | Development Research II
377 |
378 |
379 | Development Research III
380 |
381 |
382 | Development Research IV
383 |
384 |
385 | Development Research V
386 |
387 |
388 | Finalize Development
389 |
390 |
391 | Final Review and Launch
392 |
393 |
394 | Front-end Development
395 |
396 |
397 | Front-end Development II
398 |
399 |
400 | Project Review
401 |
402 |
403 | Stakeholder Interviews
404 |
405 |
406 | User Testing
407 |
408 |
409 | User Testing and Fix Bugs
410 |
411 |
412 | User Testing and Fix Bugs II
413 |
414 |
415 | Visual Design
416 |
417 |
418 | Visual Design II
419 |
420 |
421 | Wireframing
422 |
423 |
424 | WireFraming II
425 |
426 |
--------------------------------------------------------------------------------
/PM-Dashboard/Scripts/_references.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/Scripts/_references.js
--------------------------------------------------------------------------------
/PM-Dashboard/Scripts/app/app.actions.js:
--------------------------------------------------------------------------------
1 | (function ($, app) {
2 |
3 | 'user strict';
4 |
5 | window.app = app || {};
6 |
7 | var actions = {
8 | filterTasks: function (columns, numColumns, tIndex) {
9 | var selectedElem = $('#resource-overview-table tr th'),
10 | taskElem = $('#project-tasks-table > tbody > tr'),
11 | selectedWkStart = selectedElem.eq(columns[0]).find('.igColHeader').attr('data-week-start'),
12 | selectedWkEnd = selectedElem.eq(columns[numColumns - 1]).find('.igColHeader').attr('data-week-end');
13 |
14 | tIndex = tIndex || 0;
15 |
16 | // FILTER TASKS BASED ON WEEK SELECTION
17 | taskElem.filter(function () {
18 | var start = $(this).find('.taskItem').attr('data-task-start'),
19 | end = $(this).find('.taskItem').attr('data-task-end');
20 |
21 | // Show tasks that fall within the selected range of week(s)
22 | if ((start >= selectedWkStart && start <= selectedWkEnd) || (end >= selectedWkStart && end <= selectedWkEnd) || (selectedWkStart >= start && selectedWkStart <= end && selectedWkEnd <= end && selectedWkEnd >= start)) {
23 | $(this).switchClass('hidden', 'show').show();
24 | } else {
25 | if ($(this).prev().is(':visible') && $(this).attr('data-container') == 'true') {
26 | $(this).removeClass('hidden');
27 | } else {
28 | // Else Hide Rows
29 | $(this).switchClass('show', 'hidden').hide();
30 | }
31 | }
32 |
33 | return $(this);
34 | }).promise().done(function () {
35 | // Remove Selected class from all rows and add to first visible row
36 | $('.task.item').removeClass('ui-iggrid-selectedcell ui-state-active');
37 |
38 | // If Index is 0, then collapse all rows and expand first visible row
39 | if (tIndex === 0) {
40 | if ($('.task.item.show:eq(0)').attr('state') != 'e') {
41 | $('#project-tasks-table').igHierarchicalGrid("collapse", $("#project-tasks-table tbody > tr[state=e]"));
42 | }
43 |
44 | $('.task.item.show:eq(0)').addClass('ui-iggrid-selectedcell ui-state-active');
45 | }
46 | // Make sure current is highlighted
47 | else {
48 | $('.task.item:eq(' + tIndex + ')').addClass('ui-iggrid-selectedcell ui-state-active');
49 | }
50 |
51 | // Show/Hide No Task Message
52 | if ($("#project-tasks-table tbody > tr.task.item.show").length < 1) {
53 | $('#tasklist-empty-msg').show();
54 |
55 | $('#project-assignments .action.add-resource').addClass('disabled');
56 | } else {
57 | $('#tasklist-empty-msg').hide();
58 | }
59 | });
60 | },
61 | updateProjectListDoughnutChart: function (chart, status, tasksComplete, tasksTotal, init) {
62 | init = init || false;
63 | var b;
64 | switch (status.toLowerCase()) {
65 | case 'danger':
66 | b = "#FF5D43";
67 | break;
68 | case 'warning':
69 | b = "#FBA137";
70 | break;
71 | default:
72 | b = "#57d73a";
73 | break;
74 | }
75 | if (!init) {
76 | chart.igDoughnutChart({
77 | series: [{
78 | name: "Project",
79 | labelMemberPath: "category",
80 | labelsPosition: "none",
81 | valueMemberPath: "count",
82 | brushes: [b, '#3d3d3d'],
83 | dataSource: [
84 | { "category": "Tasks Completed", "count": ~~tasksComplete },
85 | { "category": "Total Tasks", "count": (~~tasksTotal - ~~tasksComplete) }
86 | ]
87 | }]
88 | });
89 | } else {
90 | chart.igDoughnutChart({
91 | width: '100%',
92 | height: '20px',
93 | innerExtent: 60,
94 | series: [{
95 | isSurfaceInteractionDisabled: true,
96 | name: "Project",
97 | labelMemberPath: "category",
98 | labelsPosition: "none",
99 | valueMemberPath: "count",
100 | outlines: ['#3d3d3d', '#3d3d3d'],
101 | brushes: [b, '#3d3d3d'],
102 | dataSource: [
103 | { "category": "Tasks Completed", "count": ~~tasksComplete },
104 | { "category": "Total Tasks", "count": (~~tasksTotal - ~~tasksComplete) }
105 | ],
106 | showTooltip: false,
107 | radiusFactor: 1,
108 | startAngle: 270
109 | }]
110 | });
111 | }
112 |
113 | },
114 | updateResourceAssignmentDoughnutChart: function () {
115 |
116 | var curTaskAssignCount = $('#project-assignments-list li .hours.chart').length, a = 0, n,
117 | taskItem, taskAssign, hrsOnTask, hrsOnOther, hrsFree, statusBrush, selectedHrs,
118 | hrsOnTaskVal, hrsOnOtherVal, hrsFreeVal;
119 |
120 | for (a = 0; a < curTaskAssignCount; a += 1) {
121 |
122 | taskItem = $('#project-assignments-list li:eq(' + a + ')');
123 | taskAssign = $('#project-assignments-list li .hours.chart:eq(' + a + ')');
124 | selectedHrs = 40;
125 |
126 | // Check to see if current task is pending change, if so, then use changed value
127 | if (taskItem.attr('data-pending-changes') == 'true') {
128 | hrsOnTask = ~~taskItem.find('.hrs-overview .hrs-on-task b').text();
129 | hrsOnOther = ~~taskItem.find('.hrs-overview .hrs-on-other b').text();
130 | hrsFree = ~~taskItem.find('.hrs-overview .hrs-free b').text();
131 | } else {
132 | hrsOnTask = ~~taskAssign.attr('data-hrs-task');
133 | hrsOnOther = Math.abs(~~taskAssign.attr('data-hrs') - hrsOnTask) + ~~taskAssign.attr('data-other');
134 | hrsFree = selectedHrs - (hrsOnTask + hrsOnOther);
135 | }
136 |
137 | statusBrush = app.utils.getDisciplineBrush(taskItem.attr('data-discipline'));
138 | statusBrush = (hrsFree < 0) ? '#FBA137' : statusBrush;
139 |
140 | /*Set Initial Values for Chart*/
141 | hrsOnTaskVal = (hrsOnTask < 2) ? 2 : hrsOnTask;
142 | hrsOnOtherVal = ((selectedHrs - hrsOnTaskVal) - Math.max(0, hrsFree));
143 | hrsFreeVal = hrsFree;
144 |
145 | if ((selectedHrs - hrsOnTaskVal) < 0 || hrsOnOtherVal <= 2) {
146 | hrsOnOtherVal = 2;
147 | hrsFreeVal = hrsFreeVal - hrsOnOtherVal;
148 | if ((selectedHrs - hrsOnTaskVal) <= 1) {
149 | n = ((selectedHrs - hrsOnTaskVal) < 1) ? 2 : 0;
150 | hrsOnOtherVal = hrsOnOtherVal - (Math.abs(selectedHrs - hrsOnTaskVal) + n);
151 | }
152 | }
153 |
154 | // If Task Hours is 0 then disable subtract hours button
155 | if (~~taskItem.find('.hrs-on-task b').text() === 0) {
156 | taskItem.find('.subtract-hrs').addClass('disabled');
157 | }
158 |
159 | taskAssign.igDoughnutChart({
160 | width: '100%',
161 | // height: '60px', // Might need to provide a height
162 | innerExtent: 80,
163 | series: [{
164 | isSurfaceInteractionDisabled: true,
165 | name: "Resource",
166 | labelMemberPath: "category",
167 | labelsPosition: "none",
168 | valueMemberPath: "count",
169 | outlines: [statusBrush, '#767676', '#dddddd'],
170 | brushes: [statusBrush, '#767676', '#dddddd'],
171 | dataSource: [
172 | { "category": "Hrs On Project", "count": hrsOnTaskVal },
173 | { "category": "Hrs On Other", "count": hrsOnOtherVal },
174 | { "category": "Hrs Free", "count": hrsFreeVal }
175 | ],
176 | showTooltip: false,
177 | radiusFactor: 1,
178 | startAngle: 270
179 | }]
180 | });
181 | }
182 | }
183 | };
184 |
185 | window.app.actions = actions;
186 |
187 | }(jQuery, window.app || {}));
188 |
--------------------------------------------------------------------------------
/PM-Dashboard/Scripts/app/app.viewmodels.js:
--------------------------------------------------------------------------------
1 | (function ($, app) {
2 | 'use strict';
3 |
4 | var tempDate = app.utils.parseDate('2015-07-07 12:57:00'), // Set Fake Date for Today
5 | tempDateObj = new Date('07/07/2015 12:57:00');
6 |
7 |
8 | var viewModels = {
9 | projectListModel: function (p) {
10 | var self = this;
11 |
12 | self.project_id = ko.observable(p.project_id);
13 | self.client_name = ko.observable(p.client_name);
14 | self.client_abbr = ko.observable(p.client_abbr);
15 | self.status = ko.observable(p.status);
16 | self.tasks_complete = ko.observable(p.tasks_complete);
17 | self.tasks_total = ko.observable(p.tasks_total);
18 | self.end_date = ko.observable(p.end_date);
19 | self.start_date = ko.observable(p.start_date);
20 |
21 | self.formatStartDate = ko.computed(function () {
22 | var parseStart = app.utils.parseDate(self.start_date());
23 | return (parseStart.getMonth() + 1) + '/' + parseStart.getDate();
24 | });
25 | self.formatProjecID = ko.computed(function () {
26 | var pID = self.project_id();
27 | return '# ' + pID;
28 | });
29 | },
30 | projectViewModel: function (projects) {
31 | var self = this, p = 0, sDate, eDate;
32 | self.currentProjects = ko.observableArray();
33 | self.upcomingProjects = ko.observableArray();
34 | var projectCount = projects.length;
35 |
36 | for (p = 0; p < projectCount; p += 1) {
37 | sDate = app.utils.parseDate(projects[p].start_date, 'yyyy/mm/dd');
38 | eDate = app.utils.parseDate(projects[p].end_date, 'yyyy/mm/dd');
39 |
40 | // Check if "Today's" date falls between project's start and end for current week iteration
41 | if (tempDate > sDate && tempDate < eDate) {
42 | self.currentProjects.push(new app.viewmodels.projectListModel(projects[p]));
43 | } else {
44 | self.upcomingProjects.push(new app.viewmodels.projectListModel(projects[p]));
45 | }
46 |
47 | }
48 |
49 | self.sortProjectList = function () {
50 | self.currentProjects.sort(function (a, b) { var s1 = ((a.status() === 'danger') ? 0 : ((a.status() === 'warning') ? 1 : 2)), s2 = ((b.status() === 'danger') ? 0 : ((b.status() === 'warning') ? 1 : 2)); return ((s1 > s2) ? 1 : -1); });
51 | };
52 |
53 | self.selectedProjectIndex = function (pID) {
54 | var i = 0, index;
55 | for (i = 0; i < self.currentProjects().length; i += 1) {
56 | if (~~self.currentProjects()[i].project_id() === ~~pID) {
57 | index = i;
58 | break;
59 | }
60 | }
61 | return index;
62 | };
63 |
64 | self.addProject = function (p) {
65 | self.currentProjects.push(new app.viewmodels.projectListModel(p));
66 | self.sortProjectList(); // Re-sort
67 | };
68 |
69 | self.updateProject = function (pID, currentProject) {
70 | var index = self.selectedProjectIndex(pID);
71 |
72 | // Update Model
73 | self.currentProjects()[index].project_id(currentProject.project_id);
74 | self.currentProjects()[index].client_name(currentProject.client_name);
75 | self.currentProjects()[index].client_abbr(currentProject.client_abbr);
76 | self.currentProjects()[index].status(currentProject.status);
77 | self.currentProjects()[index].tasks_complete(currentProject.tasks_complete);
78 | self.currentProjects()[index].tasks_total(currentProject.tasks_total);
79 | self.currentProjects()[index].end_date(currentProject.end_date);
80 | self.currentProjects()[index].start_date(currentProject.start_date);
81 |
82 | // Updates Project Doughnut Chart Status
83 | app.actions.updateProjectListDoughnutChart($('.projects.current li:eq(' + index + ') .doughnut'), self.currentProjects()[index].status(), self.currentProjects()[index].tasks_complete(), self.currentProjects()[index].tasks_total());
84 |
85 | self.sortProjectList(); // Re-sort
86 | };
87 |
88 | self.sortProjectList(); // Sort List on Initialization
89 | },
90 | projectDetailsViewModel: function (project) {
91 |
92 | var self = this;
93 | self.project = project;
94 |
95 | self.project_id = ko.observable(project.project_id);
96 | self.client_name = ko.observable(project.client_name);
97 | self.client_abbr = ko.observable(project.client_abbr);
98 | self.start_date = ko.observable(project.start_date);
99 | self.end_date = ko.observable(project.end_date);
100 | self.projected_end_date = ko.observable(project.projected_end_date);
101 | self.budget = ko.observable(project.budget);
102 | self.budget_projected = ko.observable(project.budget_projected);
103 | self.hours_planned = ko.observable(project.hours_planned);
104 | self.hours_worked = ko.observable(project.hours_worked);
105 | self.tasks_total = ko.observable(project.tasks_total);
106 | self.tasks_complete = ko.observable(project.tasks_complete);
107 | self.status = ko.observable(project.status);
108 |
109 | self.hrsCompletePercent = ko.computed(function () {
110 | var temp = Math.round((~~self.hours_worked() / ~~self.hours_planned()) * 100);
111 | return '(' + ((temp >= 0) ? temp : 0) + '%)';
112 | });
113 | self.tasksCompletePercent = ko.computed(function () {
114 | var temp = Math.round((~~self.tasks_complete() / ~~self.tasks_total()) * 100);
115 | return '(' + ((temp >= 0) ? temp : 0) + '%)';
116 | });
117 |
118 | self.end_date_format = ko.computed(function () {
119 | var e = app.utils.parseDate(self.end_date());
120 | return (e.getMonth() + 1) + '/' + e.getDate() + '/' + e.getFullYear();
121 | });
122 | self.projected_end_date_format = ko.computed(function () {
123 | var e = app.utils.parseDate(self.projected_end_date());
124 | return (e.getMonth() + 1) + '/' + e.getDate() + '/' + e.getFullYear();
125 | });
126 |
127 | self.budget_format = function (b) {
128 | if (typeof (b) === 'function') { return "$ " + b().toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); }
129 | };
130 | self.budget_projected_format = function (b) {
131 | if (typeof (b) === 'function') { return "$ " + b().toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); }
132 | };
133 |
134 | $('#project-panel').attr('data-projectID', self.project_id());
135 |
136 | self.updateProjDetailsDisplay = function (p) {
137 | self.project_id(p.project_id);
138 | self.client_name(p.client_name);
139 | self.client_abbr(p.client_abbr);
140 | self.start_date(p.start_date);
141 | self.end_date(p.end_date);
142 | self.projected_end_date(p.projected_end_date);
143 | self.budget(p.budget);
144 | self.budget_projected(p.budget_projected);
145 | self.hours_planned(p.hours_planned);
146 | self.hours_worked(p.hours_worked);
147 | self.tasks_total(p.tasks_total);
148 | self.tasks_complete(p.tasks_complete);
149 | self.status(p.status);
150 | };
151 | },
152 | AssignmentResourceListModel: function (employee, task, changeBool, addBool, newBool) {
153 | var self = this;
154 |
155 | self.id = employee.id;
156 | self.name = employee.name;
157 | self.discipline = Resources.Disciplines[employee.discipline.toLowerCase().replace(" ", "")];
158 | self.disciplineCls = employee.discipline;
159 | self.email = employee.email;
160 | self.phone = employee.phone;
161 |
162 | self.pending_changes = ko.observable(changeBool);
163 | self.addition_changes = ko.observable(addBool);
164 | self.addition_new = ko.observable(newBool);
165 |
166 | self.task_end_date = task.end_date;
167 | self.task_start_date = task.start_date;
168 | self.project_id = task.project_id;
169 | self.task_id = task.task_id;
170 | self.hrs_on_task = ko.observable(task.hrs_on_task);
171 | self.hrs_on_project = ko.observable(task.hrs_on_project);
172 | self.hrs_on_other = ko.observable(task.hrs_on_other);
173 |
174 | var sDate = app.utils.parseDate(self.task_start_date, 'yyyy/mm/dd');
175 | var eDate = app.utils.parseDate(self.task_end_date, 'yyyy/mm/dd');
176 |
177 | self.pastWeek = ko.computed(function () {
178 | return sDate < tempDate && eDate < tempDate;
179 | });
180 |
181 | self.status = ko.computed(function () {
182 | return ((self.hrs_on_project() + self.hrs_on_other()) > 40) ? 'warning' : 'ok';
183 | });
184 |
185 | self.disciplineClass = ko.computed(function () {
186 | return self.disciplineCls.toLowerCase().replace(/\s/g, '-');
187 | });
188 |
189 | self.hrs_all_other = ko.computed(function () {
190 | return self.hrs_on_other() + (self.hrs_on_project() - self.hrs_on_task());
191 | });
192 |
193 | self.hrs_free = ko.computed(function () {
194 | return 40 - (self.hrs_on_project() + self.hrs_on_other());
195 | });
196 | },
197 | AssignmentResourceViewModel: function (employees, pID) {
198 | var self = this;
199 | self.tasks = ko.observableArray();
200 | self.currentFilter = ko.observable();
201 |
202 | // Get Project Tasks by looping through employees
203 | self.generateList = function (e, id) {
204 | id = id || pID;
205 | var numEmployeed = employees.length, ar = 0, arlm = 0, t;
206 | self.tasks.destroyAll(); // Empty existing observable
207 | self.currentFilter = ko.observable(); // Clears filter
208 |
209 | for (ar = 0; ar < numEmployeed; ar += 1) {
210 | arlm = 0;
211 |
212 | // Filter tasks by current project
213 | t = e[ar].tasks.filter(function (obj) { return ~~obj.project_id === ~~id; });
214 |
215 | // Loop through filtered tasks for employee
216 | for (arlm = 0; arlm < t.length; arlm += 1) {
217 | self.tasks.push(new app.viewmodels.AssignmentResourceListModel({
218 | "id": e[ar].employee_id,
219 | "name": e[ar].name,
220 | "discipline": e[ar].discipline,
221 | "email": e[ar].email,
222 | "phone": e[ar].phone
223 | }, t[arlm], 'false', false, false));
224 | }
225 |
226 | }
227 | self.sortTaskList(); // Sort List
228 | };
229 |
230 | self.addResourceAssignment = function (e, t, newAddBool) {
231 | self.tasks.push(new app.viewmodels.AssignmentResourceListModel(e, t, 'true', true, newAddBool));
232 | self.sortTaskList(); // Sort Assignment List
233 | };
234 |
235 | self.removeResourceAssignment = function (pID, tID, eID) {
236 | self.tasks.remove(function (task) {
237 | return (~~task.id === ~~eID && ~~task.task_id === ~~tID && ~~task.project_id === ~~pID);
238 | });
239 | };
240 |
241 | self.sortTaskList = function () {
242 | self.tasks.sort(function (a, b) { return (a.discipline.toLowerCase() > b.discipline.toLowerCase()) ? 1 : -1; });
243 | };
244 |
245 |
246 | self.filterTasks = ko.computed(function () {
247 | if (!self.currentFilter()) {
248 | return self.tasks();
249 | } else {
250 | return ko.utils.arrayFilter(self.tasks(), function (task) {
251 | return ~~task.task_id === ~~self.currentFilter();
252 | });
253 | }
254 | });
255 |
256 | self.filter = function (id) {
257 | id = (typeof id === 'undefined') ? '0' : id; // Checkpoint to see if ID was passed, else default to 0
258 | self.currentFilter(id);
259 | };
260 |
261 | self.updateDoughnutChart = function () {
262 | app.actions.updateResourceAssignmentDoughnutChart();
263 | };
264 |
265 |
266 | // Initialize List
267 | self.generateList(employees, pID);
268 | self.sortTaskList(); // Sort Assignment List
269 | },
270 | EmployeeDirectoryModel: function (employee) {
271 | var self = this;
272 | self.id = employee.employee_id;
273 | self.name = employee.name;
274 | self.discipline = Resources.Disciplines[employee.discipline.toLowerCase().replace(" ", "")];
275 | self.disciplineCls = employee.discipline;
276 | self.email = employee.email;
277 | self.phone = employee.phone;
278 | self.projects = ko.observableArray(employee.projects);
279 |
280 | self.is_disabled = ko.observable(false);
281 |
282 | self.disciplineClass = ko.computed(function () {
283 | return self.disciplineCls.toLowerCase().replace(/\s/g, '-');
284 | });
285 |
286 | self.assigned_projects = ko.computed(function () {
287 | return self.projects().length;
288 | });
289 |
290 | var cEnd = $('#project-tasks-table tr:visible:eq(0) .taskItem').attr('data-task-end'); // availability;
291 | self.availability = ko.observableArray(employee.tasks.filter(function (t) {
292 | return t.end_date == cEnd && t.project_id == $('#project-panel').attr('data-projectid');
293 | }));
294 |
295 | self.hours_project = ko.computed(function () {
296 | var a = self.availability().filter(function (t) {
297 | return t.project_id == $('#headline').attr('data-projectid');
298 | });
299 |
300 | return (a.length > 0) ? (a[0].hrs_on_project) : 0;
301 | });
302 | self.hours_other = ko.computed(function () {
303 | return (self.availability().length > 0) ? (self.availability()[0].hrs_total - self.hours_project()) : 0;
304 | });
305 |
306 | self.hours_available = ko.computed(function () {
307 | return (self.availability().length > 0) ? (40 - (self.hours_other() + self.hours_project())) : 40;
308 | });
309 | },
310 | EmployeeDirectoryViewModel: function (employees) {
311 | var self = this, numEmployees = employees.length, e = 0;
312 | self.employees = ko.observableArray();
313 |
314 | for (e = 0; e < numEmployees; e += 1) {
315 | self.employees.push(new app.viewmodels.EmployeeDirectoryModel(employees[e]));
316 | }
317 |
318 | self.updateAvailability = function (emp, idx) {
319 | idx = idx || 0;
320 | var cEnd = $('#project-tasks-table tr.task.item:visible:eq(' + idx + ') .taskItem').attr('data-task-end');
321 | numEmployees = emp.length;
322 |
323 | for (e = 0; e < numEmployees; e += 1) {
324 | // Update # of Projects
325 | if (emp[e].projects.length > 0) {
326 | self.employees()[e].projects(emp[e].projects);
327 | }
328 | else { self.employees()[e].projects([]); }
329 |
330 | self.employees()[e].availability(emp[e].tasks.filter(function (t) {
331 | return t.end_date == cEnd;
332 | }));
333 | }
334 | };
335 | }
336 | };
337 |
338 | window.app.viewmodels = viewModels;
339 |
340 | }(jQuery, window.app || {}));
341 |
--------------------------------------------------------------------------------
/PM-Dashboard/Scripts/i18n/locale-en.js:
--------------------------------------------------------------------------------
1 | // JavaScript source code
2 | var Resources = Resources || {};
3 |
4 | Resources = {
5 | TaskProjectedEndLabel: "Projected End",
6 | TaskHoursLabel: "hours",
7 | TaskHrsLabel: "hrs",
8 | TaskViewFile: "view file",
9 | OverviewCurLabel: "current",
10 | Disciplines: {
11 | visualdesign: "visual design",
12 | userexperience: "user experience",
13 | projectmanagement: "project management",
14 | development: "development"
15 | },
16 | OverviewLabels: {
17 | visualdesign: "visual design",
18 | userexperience: "user experience",
19 | projectmanagement: "management",
20 | development: "development"
21 | }
22 | };
--------------------------------------------------------------------------------
/PM-Dashboard/Scripts/i18n/locale-ja.js:
--------------------------------------------------------------------------------
1 | // JavaScript source code
2 | var Resources = Resources || {};
3 |
4 | Resources = {
5 | TaskProjectedEndLabel: "見積もり終了日",
6 | TaskHoursLabel: "時間",
7 | TaskHrsLabel: "時間",
8 | TaskViewFile: "ファイルを表示",
9 | OverviewCurLabel: "現在",
10 | Disciplines: {
11 | visualdesign: "ビジュアル デザイン",
12 | userexperience: "ユーザー エクスペリエンス",
13 | projectmanagement: "プロジェクト マネジメント",
14 | development: "開発"
15 | },
16 | OverviewLabels: {
17 | visualdesign: "ビジュアル デザイン",
18 | userexperience: "ユーザー エクスペリエンス",
19 | projectmanagement: "マネジメント",
20 | development: "開発"
21 | }
22 | };
--------------------------------------------------------------------------------
/PM-Dashboard/Scripts/modernizr-2.8.3.min.js:
--------------------------------------------------------------------------------
1 | /*! Modernizr v2.8.3 www.modernizr.com
2 | * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
3 | * Available under the BSD and MIT licenses: www.modernizr.com/license/
4 | */
5 | window.Modernizr = function (e, t, n) { function r(e) { b.cssText = e } function o(e, t) { return r(S.join(e + ";") + (t || "")) } function a(e, t) { return typeof e === t } function i(e, t) { return !!~("" + e).indexOf(t) } function c(e, t) { for (var r in e) { var o = e[r]; if (!i(o, "-") && b[o] !== n) return "pfx" == t ? o : !0 } return !1 } function s(e, t, r) { for (var o in e) { var i = t[e[o]]; if (i !== n) return r === !1 ? e[o] : a(i, "function") ? i.bind(r || t) : i } return !1 } function u(e, t, n) { var r = e.charAt(0).toUpperCase() + e.slice(1), o = (e + " " + k.join(r + " ") + r).split(" "); return a(t, "string") || a(t, "undefined") ? c(o, t) : (o = (e + " " + T.join(r + " ") + r).split(" "), s(o, t, n)) } function l() { p.input = function (n) { for (var r = 0, o = n.length; o > r; r++) j[n[r]] = !!(n[r] in E); return j.list && (j.list = !(!t.createElement("datalist") || !e.HTMLDataListElement)), j }("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")), p.inputtypes = function (e) { for (var r, o, a, i = 0, c = e.length; c > i; i++) E.setAttribute("type", o = e[i]), r = "text" !== E.type, r && (E.value = x, E.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(o) && E.style.WebkitAppearance !== n ? (g.appendChild(E), a = t.defaultView, r = a.getComputedStyle && "textfield" !== a.getComputedStyle(E, null).WebkitAppearance && 0 !== E.offsetHeight, g.removeChild(E)) : /^(search|tel)$/.test(o) || (r = /^(url|email)$/.test(o) ? E.checkValidity && E.checkValidity() === !1 : E.value != x)), P[e[i]] = !!r; return P }("search tel url email datetime date month week time datetime-local number range color".split(" ")) } var d, f, m = "2.8.3", p = {}, h = !0, g = t.documentElement, v = "modernizr", y = t.createElement(v), b = y.style, E = t.createElement("input"), x = ":)", w = {}.toString, S = " -webkit- -moz- -o- -ms- ".split(" "), C = "Webkit Moz O ms", k = C.split(" "), T = C.toLowerCase().split(" "), N = { svg: "http://www.w3.org/2000/svg" }, M = {}, P = {}, j = {}, $ = [], D = $.slice, F = function (e, n, r, o) { var a, i, c, s, u = t.createElement("div"), l = t.body, d = l || t.createElement("body"); if (parseInt(r, 10)) for (; r--;) c = t.createElement("div"), c.id = o ? o[r] : v + (r + 1), u.appendChild(c); return a = ["", '"].join(""), u.id = v, (l ? u : d).innerHTML += a, d.appendChild(u), l || (d.style.background = "", d.style.overflow = "hidden", s = g.style.overflow, g.style.overflow = "hidden", g.appendChild(d)), i = n(u, e), l ? u.parentNode.removeChild(u) : (d.parentNode.removeChild(d), g.style.overflow = s), !!i }, z = function (t) { var n = e.matchMedia || e.msMatchMedia; if (n) return n(t) && n(t).matches || !1; var r; return F("@media " + t + " { #" + v + " { position: absolute; } }", function (t) { r = "absolute" == (e.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).position }), r }, A = function () { function e(e, o) { o = o || t.createElement(r[e] || "div"), e = "on" + e; var i = e in o; return i || (o.setAttribute || (o = t.createElement("div")), o.setAttribute && o.removeAttribute && (o.setAttribute(e, ""), i = a(o[e], "function"), a(o[e], "undefined") || (o[e] = n), o.removeAttribute(e))), o = null, i } var r = { select: "input", change: "input", submit: "form", reset: "form", error: "img", load: "img", abort: "img" }; return e }(), L = {}.hasOwnProperty; f = a(L, "undefined") || a(L.call, "undefined") ? function (e, t) { return t in e && a(e.constructor.prototype[t], "undefined") } : function (e, t) { return L.call(e, t) }, Function.prototype.bind || (Function.prototype.bind = function (e) { var t = this; if ("function" != typeof t) throw new TypeError; var n = D.call(arguments, 1), r = function () { if (this instanceof r) { var o = function () { }; o.prototype = t.prototype; var a = new o, i = t.apply(a, n.concat(D.call(arguments))); return Object(i) === i ? i : a } return t.apply(e, n.concat(D.call(arguments))) }; return r }), M.flexbox = function () { return u("flexWrap") }, M.flexboxlegacy = function () { return u("boxDirection") }, M.canvas = function () { var e = t.createElement("canvas"); return !(!e.getContext || !e.getContext("2d")) }, M.canvastext = function () { return !(!p.canvas || !a(t.createElement("canvas").getContext("2d").fillText, "function")) }, M.webgl = function () { return !!e.WebGLRenderingContext }, M.touch = function () { var n; return "ontouchstart" in e || e.DocumentTouch && t instanceof DocumentTouch ? n = !0 : F(["@media (", S.join("touch-enabled),("), v, ")", "{#modernizr{top:9px;position:absolute}}"].join(""), function (e) { n = 9 === e.offsetTop }), n }, M.geolocation = function () { return "geolocation" in navigator }, M.postmessage = function () { return !!e.postMessage }, M.websqldatabase = function () { return !!e.openDatabase }, M.indexedDB = function () { return !!u("indexedDB", e) }, M.hashchange = function () { return A("hashchange", e) && (t.documentMode === n || t.documentMode > 7) }, M.history = function () { return !(!e.history || !history.pushState) }, M.draganddrop = function () { var e = t.createElement("div"); return "draggable" in e || "ondragstart" in e && "ondrop" in e }, M.websockets = function () { return "WebSocket" in e || "MozWebSocket" in e }, M.rgba = function () { return r("background-color:rgba(150,255,150,.5)"), i(b.backgroundColor, "rgba") }, M.hsla = function () { return r("background-color:hsla(120,40%,100%,.5)"), i(b.backgroundColor, "rgba") || i(b.backgroundColor, "hsla") }, M.multiplebgs = function () { return r("background:url(https://),url(https://),red url(https://)"), /(url\s*\(.*?){3}/.test(b.background) }, M.backgroundsize = function () { return u("backgroundSize") }, M.borderimage = function () { return u("borderImage") }, M.borderradius = function () { return u("borderRadius") }, M.boxshadow = function () { return u("boxShadow") }, M.textshadow = function () { return "" === t.createElement("div").style.textShadow }, M.opacity = function () { return o("opacity:.55"), /^0.55$/.test(b.opacity) }, M.cssanimations = function () { return u("animationName") }, M.csscolumns = function () { return u("columnCount") }, M.cssgradients = function () { var e = "background-image:", t = "gradient(linear,left top,right bottom,from(#9f9),to(white));", n = "linear-gradient(left top,#9f9, white);"; return r((e + "-webkit- ".split(" ").join(t + e) + S.join(n + e)).slice(0, -e.length)), i(b.backgroundImage, "gradient") }, M.cssreflections = function () { return u("boxReflect") }, M.csstransforms = function () { return !!u("transform") }, M.csstransforms3d = function () { var e = !!u("perspective"); return e && "webkitPerspective" in g.style && F("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}", function (t) { e = 9 === t.offsetLeft && 3 === t.offsetHeight }), e }, M.csstransitions = function () { return u("transition") }, M.fontface = function () { var e; return F('@font-face {font-family:"font";src:url("https://")}', function (n, r) { var o = t.getElementById("smodernizr"), a = o.sheet || o.styleSheet, i = a ? a.cssRules && a.cssRules[0] ? a.cssRules[0].cssText : a.cssText || "" : ""; e = /src/i.test(i) && 0 === i.indexOf(r.split(" ")[0]) }), e }, M.generatedcontent = function () { var e; return F(["#", v, "{font:0/0 a}#", v, ':after{content:"', x, '";visibility:hidden;font:3px/1 a}'].join(""), function (t) { e = t.offsetHeight >= 3 }), e }, M.video = function () { var e = t.createElement("video"), n = !1; try { (n = !!e.canPlayType) && (n = new Boolean(n), n.ogg = e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), n.h264 = e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), n.webm = e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, "")) } catch (r) { } return n }, M.audio = function () { var e = t.createElement("audio"), n = !1; try { (n = !!e.canPlayType) && (n = new Boolean(n), n.ogg = e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), n.mp3 = e.canPlayType("audio/mpeg;").replace(/^no$/, ""), n.wav = e.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), n.m4a = (e.canPlayType("audio/x-m4a;") || e.canPlayType("audio/aac;")).replace(/^no$/, "")) } catch (r) { } return n }, M.localstorage = function () { try { return localStorage.setItem(v, v), localStorage.removeItem(v), !0 } catch (e) { return !1 } }, M.sessionstorage = function () { try { return sessionStorage.setItem(v, v), sessionStorage.removeItem(v), !0 } catch (e) { return !1 } }, M.webworkers = function () { return !!e.Worker }, M.applicationcache = function () { return !!e.applicationCache }, M.svg = function () { return !!t.createElementNS && !!t.createElementNS(N.svg, "svg").createSVGRect }, M.inlinesvg = function () { var e = t.createElement("div"); return e.innerHTML = "", (e.firstChild && e.firstChild.namespaceURI) == N.svg }, M.smil = function () { return !!t.createElementNS && /SVGAnimate/.test(w.call(t.createElementNS(N.svg, "animate"))) }, M.svgclippaths = function () { return !!t.createElementNS && /SVGClipPath/.test(w.call(t.createElementNS(N.svg, "clipPath"))) }; for (var H in M) f(M, H) && (d = H.toLowerCase(), p[d] = M[H](), $.push((p[d] ? "" : "no-") + d)); return p.input || l(), p.addTest = function (e, t) { if ("object" == typeof e) for (var r in e) f(e, r) && p.addTest(r, e[r]); else { if (e = e.toLowerCase(), p[e] !== n) return p; t = "function" == typeof t ? t() : t, "undefined" != typeof h && h && (g.className += " " + (t ? "" : "no-") + e), p[e] = t } return p }, r(""), y = E = null, function (e, t) { function n(e, t) { var n = e.createElement("p"), r = e.getElementsByTagName("head")[0] || e.documentElement; return n.innerHTML = "x", r.insertBefore(n.lastChild, r.firstChild) } function r() { var e = y.elements; return "string" == typeof e ? e.split(" ") : e } function o(e) { var t = v[e[h]]; return t || (t = {}, g++, e[h] = g, v[g] = t), t } function a(e, n, r) { if (n || (n = t), l) return n.createElement(e); r || (r = o(n)); var a; return a = r.cache[e] ? r.cache[e].cloneNode() : p.test(e) ? (r.cache[e] = r.createElem(e)).cloneNode() : r.createElem(e), !a.canHaveChildren || m.test(e) || a.tagUrn ? a : r.frag.appendChild(a) } function i(e, n) { if (e || (e = t), l) return e.createDocumentFragment(); n = n || o(e); for (var a = n.frag.cloneNode(), i = 0, c = r(), s = c.length; s > i; i++) a.createElement(c[i]); return a } function c(e, t) { t.cache || (t.cache = {}, t.createElem = e.createElement, t.createFrag = e.createDocumentFragment, t.frag = t.createFrag()), e.createElement = function (n) { return y.shivMethods ? a(n, e, t) : t.createElem(n) }, e.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + r().join().replace(/[\w\-]+/g, function (e) { return t.createElem(e), t.frag.createElement(e), 'c("' + e + '")' }) + ");return n}")(y, t.frag) } function s(e) { e || (e = t); var r = o(e); return !y.shivCSS || u || r.hasCSS || (r.hasCSS = !!n(e, "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")), l || c(e, r), e } var u, l, d = "3.7.0", f = e.html5 || {}, m = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i, p = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i, h = "_html5shiv", g = 0, v = {}; !function () { try { var e = t.createElement("a"); e.innerHTML = "", u = "hidden" in e, l = 1 == e.childNodes.length || function () { t.createElement("a"); var e = t.createDocumentFragment(); return "undefined" == typeof e.cloneNode || "undefined" == typeof e.createDocumentFragment || "undefined" == typeof e.createElement }() } catch (n) { u = !0, l = !0 } }(); var y = { elements: f.elements || "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video", version: d, shivCSS: f.shivCSS !== !1, supportsUnknownElements: l, shivMethods: f.shivMethods !== !1, type: "default", shivDocument: s, createElement: a, createDocumentFragment: i }; e.html5 = y, s(t) }(this, t), p._version = m, p._prefixes = S, p._domPrefixes = T, p._cssomPrefixes = k, p.mq = z, p.hasEvent = A, p.testProp = function (e) { return c([e]) }, p.testAllProps = u, p.testStyles = F, p.prefixed = function (e, t, n) { return t ? u(e, t, n) : u(e, "pfx") }, g.className = g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (h ? " js " + $.join(" ") : ""), p }(this, this.document);
--------------------------------------------------------------------------------
/PM-Dashboard/Views/Home/Index.cshtml:
--------------------------------------------------------------------------------
1 | @using Infragistics.Web.Mvc;
2 |
3 | @model dynamic
4 |
5 | @{
6 | ViewBag.Title = @Resources.Main.Title;
7 | var currentProject = @Model.data.projects[0];
8 | }
9 |
10 |
28 |
29 |
30 |
31 |
projectplanner
32 |
33 |
34 |
35 |
@Resources.Main.PleaseWait
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |

46 |
Richard Kevinson@Resources.Main.Nav_UserDiscipline
47 |
48 |
49 | @Resources.Main.Nav_Today
50 |
51 |
52 |
53 |
54 | @Resources.Main.Nav_CurrentProjects
55 |
56 | -
57 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 | @Resources.Main.Nav_UpcomingProjects
73 |
74 | -
75 |
76 |
77 | @Resources.Main.Nav_Starting
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
projectplanner
96 |
/@Resources.Main.PM_Headline_Proj:
97 |
98 |
99 |
100 |
101 | Project Details
102 |
103 | @Resources.Main.Details_BaselineBudget
104 | 0.00
105 |
106 |
107 | @Resources.Main.Details_ProjectedBudget
108 | 0.00
109 |
110 |
111 | @Resources.Main.Details_HoursPlanned
112 | --/-- (--%)
113 |
114 |
115 | @Resources.Main.Details_TaskProgress
116 | --/-- (--%)
117 |
118 |
119 | @Resources.Main.Details_PlannedEndDate
120 | --/--/----
121 |
122 |
123 | @Resources.Main.Details_ProjectedEndDate
124 | --/--/----
125 |
126 |
127 |
128 |
129 |
130 |
131 |
@Resources.Main.Overview_Title (@Resources.Main.Overview_Warning)
132 |
133 |
134 | @Resources.Main.OverviewLegend_Worked
135 | @Resources.Main.OverviewLegend_Planned
136 |
137 |
138 | @Resources.Main.OverviewLegend_OverPlanned
139 | @Resources.Main.OverviewLegend_OverAllocated
140 |
141 |
142 |
143 |
144 |
145 | @(Html.Infragistics().Grid(Model.grid))
146 |
147 |
@Resources.Main.OverviewLegendHelp_Title
148 |
149 |
150 | -
151 |
152 |
@Resources.Main.OverviewLegendHelp_OverAllocatedTitle
153 |
@Resources.Main.OverviewLegendHelp_OverAllocatedDesc
154 |
155 |
156 |
157 | -
158 |
159 |
@Resources.Main.OverviewLegendHelp_OverPlannedTitle
160 |
@Resources.Main.OverviewLegendHelp_OverPlannedDesc
161 |
162 |
163 |
164 | -
165 |
166 |
@Resources.Main.OverviewLegendHelp_OverAllocatedMoreTitle
167 |
@Resources.Main.OverviewLegendHelp_OverAllocatedMoreDesc
168 |
169 | +10
170 |
171 | -
172 |
173 |
@Resources.Main.OverviewLegendHelp_OverPlannedMoreTitle
174 |
@Resources.Main.OverviewLegendHelp_OverPlannedMoreDesc
175 |
176 | +10
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
@Resources.Main.ProjectTasks
187 |
188 |
@Resources.Main.ProjectTasks_Warning
189 |
190 |
191 | @(Html.Infragistics().Grid(Model.tasks))
192 |
193 |
194 |
195 | @Resources.Main.AssignedResources
196 |
201 |
202 |
203 |
204 |
205 |
206 |
@Resources.Main.AssignedResources_Warning
207 |
208 |
209 |
210 |
211 |
212 |
213 | -
214 |
215 |
![]()
216 |
217 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
40@Resources.Main.AssignedResources_Chart_Hrs
230 |
231 |
232 |
236 |
237 | @Resources.Main.AssignedResources_HrsTask
238 | @Resources.Main.AssignedResources_HrsOther
239 | @Resources.Main.AssignedResources_HrsAvailable
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
266 |
267 | -
268 |
269 |
![]()
270 |
271 |
272 | @Resources.Main.Team_Confirm
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 | @Resources.Main.Team_Projects
282 | @Resources.Main.Team_HrsAvailable
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
@Resources.Main.ViewLink_Alert_Title
298 |
299 |
300 |
301 |
@Resources.Main.ViewLink_Alert_Msg
302 |
303 |
304 |
305 |
316 |
317 | @{
318 | if (File.Exists(Server.MapPath("~/scripts/i18n/locale-" + UICulture.Split('-')[0] + ".js")))
319 | {
320 |
321 | }
322 | else
323 | {
324 |
325 | }
326 | }
--------------------------------------------------------------------------------
/PM-Dashboard/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 |
--------------------------------------------------------------------------------
/PM-Dashboard/Views/Shared/_Layout.cshtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | @ViewBag.Title - My ASP.NET MVC Application
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | @Styles.Render("~/Content/css")
37 |
38 |
39 | @Scripts.Render("~/bundles/dependencies")
40 |
41 |
48 |
53 |
56 |
57 |
58 | @RenderBody()
59 |
60 | @Scripts.Render("~/bundles/igniteui")
61 | @Scripts.Render("~/bundles/knockout")
62 | @Scripts.Render("~/bundles/app")
63 | @RenderSection("scripts", required: false)
64 |
65 |
66 |
--------------------------------------------------------------------------------
/PM-Dashboard/Views/Web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
40 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/PM-Dashboard/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "~/Views/Shared/_Layout.cshtml";
3 | }
--------------------------------------------------------------------------------
/PM-Dashboard/Web.Debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
29 |
30 |
--------------------------------------------------------------------------------
/PM-Dashboard/Web.Release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
19 |
30 |
31 |
--------------------------------------------------------------------------------
/PM-Dashboard/Web.config:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/PM-Dashboard/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 | #ffffff
--------------------------------------------------------------------------------
/PM-Dashboard/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IgniteUI/project-management-dashboard-sample/be6b5aa3a192fb3318ceaf364f98204e788ad3c8/PM-Dashboard/favicon.ico
--------------------------------------------------------------------------------
/PM-Dashboard/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "App",
3 | "icons": [
4 | {
5 | "src": "\/Images/icons/android-icon-36x36.png",
6 | "sizes": "36x36",
7 | "type": "image\/png",
8 | "density": "0.75"
9 | },
10 | {
11 | "src": "\/Images/icons/android-icon-48x48.png",
12 | "sizes": "48x48",
13 | "type": "image\/png",
14 | "density": "1.0"
15 | },
16 | {
17 | "src": "\/Images/icons/android-icon-72x72.png",
18 | "sizes": "72x72",
19 | "type": "image\/png",
20 | "density": "1.5"
21 | },
22 | {
23 | "src": "\/Images/icons/android-icon-96x96.png",
24 | "sizes": "96x96",
25 | "type": "image\/png",
26 | "density": "2.0"
27 | },
28 | {
29 | "src": "\/Images/icons/android-icon-144x144.png",
30 | "sizes": "144x144",
31 | "type": "image\/png",
32 | "density": "3.0"
33 | },
34 | {
35 | "src": "\/Images/icons/android-icon-192x192.png",
36 | "sizes": "192x192",
37 | "type": "image\/png",
38 | "density": "4.0"
39 | }
40 | ]
41 | }
--------------------------------------------------------------------------------
/PM-Dashboard/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Ignite UI Project Management Dashboard Sample
2 |
3 | 
4 |
5 | The Project Management Dashboard sample showcases Ignite UI controls like the [doughnut chart](http://igniteui.com/doughnut-chart/overview) and the [hierarchical grid](http://igniteui.com/hierarchical-grid/overview) to represent task progress and time allocation. This sample even combines the [grid](http://igniteui.com/grid/overview) and [linear gauge](http://igniteui.com/linear-gauge/overview) to help users easily identify risks and adjust project plans accordingly.
6 |
7 | ### [http://igniteui.com/project-management-dashboard-sample](http://igniteui.com/project-management-dashboard-sample)
8 |
9 |
10 | ##What is Ignite UI?
11 | [](http://igniteui.com)
12 |
13 | [Ignite UI](http://igniteui.com/) is an advanced HTML5+ toolset that helps you create stunning, modern Web apps. Building on jQuery and jQuery UI, it primarily consists of feature rich, high-performing UI controls/widgets such as all kinds of charts, data visualization maps, (hierarchical, editable) data grids, pivot grids, enhanced editors (combo box, masked editors, HTML editor, date picker, to name a few), flexible data source connectors, and a whole lot more. Too many to list here - check out [the site](http://igniteui.com/) for more info and to [download](https://igniteui.com/download) a trial.
14 |
15 | Ignite UI is not just another library created in someone's free time. It is commercial-ready, extremely well-tested, tuned for top performance, designed for good UX, and backed by [Infragistics](http://www.infragistics.com/), an experience-focused company with a track record of over 24 years of experience in providing enterprise-ready, high-performance user interface tools for web, windows and mobile environments.
16 |
17 | [](http://infragistics.com)
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/packages/repositories.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------