Dashboard page layout

jamesperet 10 years ago
parent
commit
6595150f1c

+ 13 - 2
app/assets/stylesheets/avalanche_theme.css.less

@@ -25,7 +25,6 @@ html, body {
25 25
 .container-bg {
26 26
 	background-color: @bg-ligh-gray;
27 27
 	margin-top: 0px;
28
-	min-height: 500px;
29 28
 	padding-bottom: 20px;
30 29
 }
31 30
 
@@ -157,6 +156,18 @@ h4 {
157 156
 	color: black;
158 157
 }
159 158
 
159
+.thumbnail h2 {
160
+	font-family: Avenir-HeavyOblique;
161
+	font-size: 28px;
162
+	color: #000000;
163
+	line-height: 44px;
164
+	margin-top: 0px;
165
+}
166
+
167
+.thumbnail h2 a, .box h2 a {
168
+	color: black;
169
+}
170
+
160 171
 .thumbnail-content h4 {
161 172
 	font-family: Avenir-MediumOblique;
162 173
 	font-size: 18px;
@@ -180,7 +191,7 @@ h4 {
180 191
 }
181 192
 
182 193
 .thumbnail .thumbnail-content {
183
-	padding: 4px;
194
+	padding: 8px;
184 195
 }
185 196
 
186 197
 .thumbnail-line-top {

+ 89 - 0
app/assets/stylesheets/dashboard.css.less

@@ -0,0 +1,89 @@
1
+// Dashboard Stylesheet
2
+//------------------------------------
3
+
4
+@import "colors.less";
5
+
6
+.dashboard-stats {
7
+	float: left;
8
+	text-align: center;
9
+	width: 18%;
10
+	margin-right: 3%;
11
+}
12
+
13
+.dashboard-stats:nth-child(1) {
14
+	margin-left:-4%;
15
+	margin-right: 2%;
16
+	
17
+}
18
+.dashboard-stats:nth-child(3) {
19
+	margin-right: 4%;
20
+}
21
+
22
+.dashboard-stats:nth-child(5) {
23
+	margin-left: 2%;
24
+	margin-right: 0%;
25
+}
26
+
27
+.dashboard-stats p:nth-child(1) {
28
+	font-family: Avenir-Black;
29
+	font-size: 42.9px;
30
+	color: #0F2105;
31
+	line-height: 59px;
32
+	margin-bottom: 0px;
33
+}
34
+
35
+.dashboard-stats p:nth-child(2) {
36
+	font-family: Helvetica-LightOblique;
37
+	font-size: 14px;
38
+	color: #1D1D26;
39
+	line-height: 17px;
40
+}
41
+
42
+.trust-stat .progress-bar {
43
+	text-align: center;
44
+	width: 100%;
45
+	margin-left: auto;
46
+	margin-right: auto;
47
+	margin-top: 10px;
48
+}
49
+
50
+.trust-stat p {
51
+	text-align: center;
52
+	font-family: Helvetica-LightOblique;
53
+	font-size: 14px;
54
+	color: #1D1D26;
55
+	line-height: 17px;
56
+	margin-top: 14px;
57
+}
58
+
59
+.thumbnail-content .dashboard-role {
60
+	font-family: Avenir-HeavyOblique;
61
+	font-size: 18px;
62
+	color: #000000;
63
+	line-height: 25px;
64
+	text-align: left;
65
+	margin-bottom: 0px;
66
+	font-weight: 200;
67
+}
68
+
69
+.mission-agent-percentage {
70
+	text-align: center;
71
+	font-family: Helvetica-LightOblique;
72
+	font-size: 14px;
73
+	color: #1D1D26;
74
+	line-height: 17px;
75
+	margin-top: 20px;
76
+	margin-bottom: 12px;
77
+}
78
+
79
+.mission-agent-percentage .progress {
80
+	background-color: @bg-ligh-gray;
81
+}
82
+
83
+.mission-status-timer {
84
+	height: 32px;
85
+}
86
+
87
+.thumbnail-content .dashboard-role:nth-child(1){
88
+	margin-top: 2px;
89
+}

+ 24 - 0
app/assets/stylesheets/missions.css.less

@@ -2,6 +2,10 @@
2 2
 //------------------------------------
3 3
 
4 4
 
5
+.mission-detail-container {
6
+	min-height: 500px;
7
+}
8
+
5 9
 // Mission Status
6 10
 
7 11
 @import "colors.less";
@@ -290,3 +294,23 @@ p.agent-stats i {
290 294
 	font-size: 30px;
291 295
 	padding-right: 10px;
292 296
 }
297
+
298
+// Mission time left
299
+
300
+.mission-time-left div:nth-child(1) {
301
+	font-family: Avenir-Black;
302
+	font-size: 24px;
303
+	color: #0F2105;
304
+	line-height: 33px;
305
+	float: left;
306
+	margin-right: 5px;
307
+}
308
+
309
+.mission-time-left div:nth-child(2) {
310
+	font-family: Avenir-Medium;
311
+	font-size: 16px;
312
+	color: #000000;
313
+	line-height: 22px;
314
+	float: left;
315
+	margin-top: 5px;
316
+}

+ 1 - 0
app/controllers/agents_controller.rb

@@ -1,6 +1,7 @@
1 1
 class AgentsController < ApplicationController
2 2
 
3 3
   def dashboard
4
+    @agent_missions = current_user.mission_agents
4 5
   end
5 6
   
6 7
   def list

+ 9 - 2
app/controllers/missions_controller.rb

@@ -8,6 +8,13 @@ class MissionsController < ApplicationController
8 8
     @open_missions = Mission.where("status = ? OR status = ?", 1, 2)
9 9
     @finished_missions = Mission.where("status = ? OR status = ?", 3, 4)
10 10
   end
11
+  
12
+  def mission_control
13
+    @mission = Mission.find(params[:id])
14
+    if current_user != @mission.owner
15
+      redirect_to missions_path, alert: (t 'mission.access_denied_error')
16
+    end
17
+  end
11 18
 
12 19
   # GET /missions/1
13 20
   # GET /missions/1.json
@@ -38,7 +45,7 @@ class MissionsController < ApplicationController
38 45
 
39 46
     respond_to do |format|
40 47
       if @mission.save
41
-        format.html { redirect_to @mission, notice: 'Mission was successfully created.' }
48
+        format.html { redirect_to mission_control_path(@mission), notice: 'Mission was successfully created.' }
42 49
         format.json { render action: 'show', status: :created, location: @mission }
43 50
       else
44 51
         format.html { render action: 'new' }
@@ -52,7 +59,7 @@ class MissionsController < ApplicationController
52 59
   def update
53 60
     respond_to do |format|
54 61
       if @mission.update(mission_params)
55
-        format.html { redirect_to @mission, notice: 'Mission was successfully updated.' }
62
+        format.html { redirect_to mission_control_path(@mission), notice: 'Mission was successfully updated.' }
56 63
         format.json { head :no_content }
57 64
       else
58 65
         format.html { render action: 'edit' }

+ 6 - 0
app/helpers/missions_helper.rb

@@ -31,4 +31,10 @@ module MissionsHelper
31 31
     end
32 32
   end
33 33
   
34
+  def mission_time_left(mission, position = 'pull-left')
35
+    content_tag(:div, class: 'mission-time-left '+ position) do
36
+      content_tag(:div, '45 '.to_s) + content_tag(:div, (t 'mission.days_left'))
37
+    end
38
+  end
39
+  
34 40
 end

+ 1 - 0
app/models/user.rb

@@ -8,6 +8,7 @@ class User < ActiveRecord::Base
8 8
   validates :password, length: {minimum: 5, maximum: 120}, on: :update, allow_blank: true
9 9
   
10 10
   has_many :posts
11
+  has_many :mission_agents
11 12
   
12 13
   mount_uploader :avatar, AvatarUploader
13 14
   process_in_background :avatar

+ 136 - 5
app/views/agents/dashboard.html.erb

@@ -1,10 +1,141 @@
1
-<%= content_tag(:div, class: 'container top-container') do %>
1
+<% # Header BG %>
2
+<%= content_tag(:div, class: 'container-bg container-pre-tabs') do %>
3
+	<%= content_tag(:div, class: 'container top-container container-bg') do %>
4
+		<%= content_tag(:div, class: 'row') do %>
5
+			<%= content_tag(:div, class: 'span12') do %>
6
+				<%= content_tag(:div, class: 'page-header') do %>
7
+					<%= content_tag(:h1, (t 'agent.dashboard')) %>
8
+				<% end %>
9
+			<% end %>
10
+		<% end %>
11
+		<%= content_tag(:div, class: 'row') do %>
12
+			<%= content_tag(:div, class: 'span8') do %>
13
+				<% # Mission Count %>
14
+				<%= content_tag(:div, class: 'dashboard-stats') do %>
15
+					<%= content_tag(:p) do %>
16
+						<%= content_tag(:i, '', class: 'icon-mission') %>
17
+						<%= content_tag(:span, '6') %>
18
+					<% end %>
19
+					<%= content_tag(:p, (t 'mission.missions')) %>
20
+				<% end %>
21
+				<% # Director Missions Count %>
22
+				<%= content_tag(:div, class: 'dashboard-stats') do %>
23
+					<%= content_tag(:p) do %>
24
+						<%= content_tag(:i, '', class: 'icon-radar') %>
25
+						<%= content_tag(:span, '2') %>
26
+					<% end %>
27
+					<%= content_tag(:p, (t 'mission.directing_missions')) %>
28
+				<% end %>
29
+				<% # Task Count %>
30
+				<%= content_tag(:div, class: 'dashboard-stats') do %>
31
+					<%= content_tag(:p) do %>
32
+						<%= content_tag(:i, '', class: 'icon-task') %>
33
+						<%= content_tag(:span, '21') %>
34
+					<% end %>
35
+					<%= content_tag(:p, (t 'agent.tasks')) %>
36
+				<% end %>
37
+				<% # Messsages Count %>
38
+				<%= content_tag(:div, class: 'dashboard-stats') do %>
39
+					<%= content_tag(:p) do %>
40
+						<%= content_tag(:i, '', class: 'icon-chat') %>
41
+						<%= content_tag(:span, '48') %>
42
+					<% end %>
43
+					<%= content_tag(:p, (t 'agent.messages')) %>
44
+				<% end %>
45
+				<% # Points %>
46
+				<%= content_tag(:div, class: 'dashboard-stats') do %>
47
+					<%= content_tag(:p) do %>
48
+						<%= content_tag(:span, '150K') %>
49
+					<% end %>
50
+					<%= content_tag(:p, (t 'agent.points')) %>
51
+				<% end %>
52
+				<%= bootstrap_flash %>
53
+			<% end %>
54
+			<%= content_tag(:div, class: 'span4 trust-stat') do %>
55
+				<div class="progress-bar">
56
+					<div class="progress progress-striped">
57
+					  <div class="bar bar-success" style="width: 95%;"></div>
58
+					</div>
59
+					<div class="percentage">95%</div>
60
+				</div>
61
+				<%= content_tag(:p, (t 'agent.trust')) %>
62
+			<% end %>
63
+		<% end %>
64
+	<% end %>
65
+<% end %>
66
+
67
+<% # Tabs %>
68
+<%= content_tag(:div, class: 'container container-tabs') do %>
69
+	<%= content_tag(:div, class: 'row') do %>
70
+		<%= content_tag(:div, class: 'span12') do %>
71
+			<%= content_tag(:ul, class: 'nav nav-tabs') do %>
72
+				<%= content_tag(:li, (link_to (t 'mission.missions'), dashboard_path), class: 'active') %>
73
+				<%= content_tag(:li, (link_to (t 'agent.tasks'), '#'), class: 'disabled') %>
74
+				<%= content_tag(:li, (link_to (t 'agent.messages'), '#'), class: 'disabled') %>
75
+			<% end %>
76
+		<% end %>
77
+	<% end %>
78
+<% end %>
79
+
80
+<% # Content%>
81
+<%= content_tag(:div, class: 'container') do %>
2 82
 	<%= content_tag(:div, class: 'row') do %>
3 83
 		<%= content_tag(:div, class: 'span12') do %>
4
-			<% # Page Content %>
5
-			<%= bootstrap_flash %>
6
-			<%= content_tag(:div, class: 'page-header') do %>
7
-				<%= content_tag(:h1, (t 'agent.dashboard')) %>
84
+			<%= content_tag(:ul, class: 'thumbnails mission-list') do %>
85
+				<% @agent_missions.each do |agent| %>
86
+					
87
+					<%= content_tag(:li, class: 'span4') do %>
88
+						<% content_tag(:div, class: 'thumbnail') do %>
89
+							<%= content_tag(:div, class: 'thumbnail-content') do%>
90
+								<%= content_tag(:h4, (t 'mission.mission')+':', class: 'dashboard-role') %>
91
+						          <%= content_tag(:h2, link_to(agent.mission.title, agent.mission)) %>
92
+								<%= content_tag(:h4, (t 'agent.role')+':', class: 'dashboard-role') %>
93
+						          <%= content_tag(:p, agent.role ) %>
94
+								<%= content_tag(:h4, (t 'agent.next_steps')+':', class: 'dashboard-role') %>
95
+								
96
+							<% end %>
97
+							<% # Steps %>
98
+							<% step_count = 0 %>
99
+							<% has_shown_more_tasks = false %>
100
+							<% agent.agent_steps.order('step ASC').each do |step| %>
101
+								<% step_count = step_count + 1 %>
102
+								<% if step_count <= 2 || agent.agent_steps.count <= 3 %>
103
+									<%= content_tag(:div, class: 'thumbnail-task') do %>
104
+										<%= content_tag(:p) do %>
105
+											<%= content_tag(:span, step.step, class: 'task-number') %>
106
+											<%= content_tag(:span, step.title, class: 'task-text') %>
107
+											<%= content_tag(:span, '<i class="fa fa-picture-o"></i>'.html_safe, class: 'task-icon') %>
108
+										<% end %>
109
+									<% end %>
110
+								<% else %>
111
+									<% if has_shown_more_tasks == false %>
112
+										<% has_shown_more_tasks = true %>
113
+										<%= content_tag(:div, class: 'thumbnail-task') do %>
114
+											<%= content_tag(:p, class: 'task-show-all') do %>
115
+												<%= content_tag(:span, ('+ ' + (agent.agent_steps.count - step_count).to_s + ' ' + (t 'mission.steps')).html_safe) %>
116
+											<% end %>
117
+										<% end %>
118
+									<% end %>
119
+								<% end %>
120
+							<% end %>
121
+							<%= content_tag(:div, class: 'thumbnail-content mission-agent-percentage') do %>
122
+								<div class="progress-bar">
123
+									<div class="progress progress-striped">
124
+									  <div class="bar bar-success" style="width: 30%;"></div>
125
+									</div>
126
+									<div class="percentage">30%</div>
127
+								</div>
128
+							<% end %>
129
+							<%= content_tag(:div, class: 'thumbnail-content mission-status-timer') do%>
130
+								<%= content_tag(:div) do %>
131
+									<%= mission_time_left(agent.mission) %>
132
+									<%= status(agent.mission.status) %>
133
+								<% end %>
134
+							<% end %>
135
+						<% end %>
136
+					<% end %>
137
+					
138
+				<% end %>
8 139
 			<% end %>
9 140
 		<% end %>
10 141
 	<% end %>

+ 1 - 1
app/views/missions/_mission_details.html.erb

@@ -1,5 +1,5 @@
1 1
 <%= content_tag(:div, class: 'container-bg container-pre-tabs') do %>
2
-	<%= content_tag(:div, class: 'container top-container container-bg') do %>
2
+	<%= content_tag(:div, class: 'container top-container container-bg mission-detail-container') do %>
3 3
 		<%= content_tag(:div, class: 'row') do %>
4 4
 			<%= content_tag(:div, class: 'span12') do %>
5 5
 			

+ 1 - 3
app/views/missions/edit.html.erb

@@ -1,5 +1,3 @@
1
-<h1>Editing mission</h1>
2
-
3 1
 <%= content_tag(:div, class: 'container top-container container-last') do %>
4 2
 	<%= content_tag(:div, class: 'row') do %>
5 3
 		<%= content_tag(:div, class: 'span12') do %>
@@ -8,7 +6,7 @@
8 6
 				<%= content_tag(:small, (t 'mission.edit_mission')+':') %>
9 7
 				<%= content_tag(:h1) do %>
10 8
 					<%=  @mission.title %>
11
-					<%= link_to (t 'nav.back'), missions_path, class: 'btn btn-mini' %>
9
+					<%= link_to (t 'nav.back'), mission_control_path(@mission), class: 'btn btn-mini' %>
12 10
 					<%= status(@mission.status) %>
13 11
 				<% end %>
14 12
 			<% end %>

+ 17 - 0
app/views/missions/mission_control.html.erb

@@ -0,0 +1,17 @@
1
+<%= content_tag(:div, class: 'container top-container container-last') do %>
2
+	<%= content_tag(:div, class: 'row') do %>
3
+		<%= content_tag(:div, class: 'span12') do %>
4
+
5
+			<%= content_tag(:div, class: 'page-header page-header-type') do %>
6
+				<%= content_tag(:small, (t 'mission.mission_control')+':') %>
7
+				<%= content_tag(:h1) do %>
8
+					<%=  @mission.title %>
9
+					<%= link_to (t 'nav.edit'), edit_mission_path(@mission), class: 'btn btn-mini' %>
10
+					<%= link_to (t 'nav.back'), dashboard_path, class: 'btn btn-mini' %>
11
+					<%= status(@mission.status) %>
12
+				<% end %>
13
+			<% end %>
14
+			<%= bootstrap_flash %>
15
+		<% end %>
16
+	<% end %>		
17
+<% end %>

+ 1 - 0
config/routes.rb

@@ -24,6 +24,7 @@ Avalanche2::Application.routes.draw do
24 24
   
25 25
   # Missions
26 26
   resources :missions
27
+  get 'mission_control/:id' => 'missions#mission_control', as: :mission_control
27 28
   get '/missions/:id/agents', to: 'missions#show_agents', as: :mission_agents_list
28 29
   get 'missions/:id/agents/:agent', to: 'missions#show_agent_details', as: :mission_agent_details
29 30
   get 'missions/:id/agents/:agent/take_agent_role', to: 'missions#take_agent_role', as: :take_agent_role