voltar 0.0.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +37 -0
- data/app/assets/fonts/FontAwesome.otf +0 -0
- data/app/assets/fonts/Simple-Line-Icons.eot +0 -0
- data/app/assets/fonts/Simple-Line-Icons.svg +1369 -0
- data/app/assets/fonts/Simple-Line-Icons.ttf +0 -0
- data/app/assets/fonts/Simple-Line-Icons.woff +0 -0
- data/app/assets/fonts/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/fontawesome-webfont.svg +520 -0
- data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/app/assets/fonts/sourcesanspro/sourcesanspro-bold.woff +0 -0
- data/app/assets/fonts/sourcesanspro/sourcesanspro-light.woff +0 -0
- data/app/assets/fonts/sourcesanspro/sourcesanspro.woff +0 -0
- data/app/assets/javascripts/voltar/app.js +203 -0
- data/app/assets/javascripts/voltar/application.js +33 -0
- data/app/assets/javascripts/voltar/controllers/app_ctrl.js.erb +673 -0
- data/app/assets/javascripts/voltar/directives/app_directives.js +345 -0
- data/app/assets/javascripts/voltar/factories/app_services.js +255 -0
- data/app/assets/javascripts/voltar/stripe.js.coffee +2 -0
- data/app/assets/stylesheets/voltar/app.css +4990 -0
- data/app/assets/stylesheets/voltar/application.css +23 -0
- data/app/assets/stylesheets/voltar/voltar.css.scss +93 -0
- data/app/controllers/voltar/application_controller.rb +4 -0
- data/app/controllers/voltar/dashboard_controller.rb +11 -0
- data/app/helpers/voltar/application_helper.rb +4 -0
- data/app/views/layouts/voltar/application.html.erb +40 -0
- data/app/views/voltar/account/_billing.html.erb +552 -0
- data/app/views/voltar/account/_locations.html.erb +135 -0
- data/app/views/voltar/account/_managers.html +134 -0
- data/app/views/voltar/account/_password.html.erb +57 -0
- data/app/views/voltar/account/_profile.html.erb +84 -0
- data/app/views/voltar/dashboard/index.html.erb +0 -0
- data/app/views/voltar/inventory/_delete_dialog.html.erb +16 -0
- data/app/views/voltar/inventory/_edit.html.erb +244 -0
- data/app/views/voltar/inventory/_index.html.erb +160 -0
- data/app/views/voltar/inventory/_mark_as_sold_dialog.html.erb +26 -0
- data/app/views/voltar/shared/_keen_js.html.haml +11 -0
- data/app/views/voltar/shared/_voltar_app.html.erb +83 -0
- data/app/views/voltar/shared/_voltar_aside.html.erb +71 -0
- data/app/views/voltar/shared/_voltar_footer.html.erb +13 -0
- data/app/views/voltar/shared/_voltar_header.html.erb +156 -0
- data/app/views/voltar/shared/app/_country_province_select.html +19 -0
- data/app/views/voltar/shared/app/_dashboard.html.erb +243 -0
- data/app/views/voltar/shared/app/_notifications.html.erb +13 -0
- data/app/views/voltar/shared/app/_spinner.html.erb +8 -0
- data/config/routes.rb +4 -0
- data/lib/tasks/voltar_tasks.rake +4 -0
- data/lib/voltar.rb +5 -0
- data/lib/voltar/engine.rb +15 -0
- data/lib/voltar/version.rb +3 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +26 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +41 -0
- data/test/dummy/config/environments/production.rb +76 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/log/development.log +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- data/test/voltar_test.rb +7 -0
- data/vendor/assets/images/voltar/a0.jpg +0 -0
- data/vendor/assets/images/voltar/a1.jpg +0 -0
- data/vendor/assets/images/voltar/a10.jpg +0 -0
- data/vendor/assets/images/voltar/a2.jpg +0 -0
- data/vendor/assets/images/voltar/a3.jpg +0 -0
- data/vendor/assets/images/voltar/a4.jpg +0 -0
- data/vendor/assets/images/voltar/a5.jpg +0 -0
- data/vendor/assets/images/voltar/a6.jpg +0 -0
- data/vendor/assets/images/voltar/a7.jpg +0 -0
- data/vendor/assets/images/voltar/a8.jpg +0 -0
- data/vendor/assets/images/voltar/a9.jpg +0 -0
- data/vendor/assets/images/voltar/b0.jpg +0 -0
- data/vendor/assets/images/voltar/b1.jpg +0 -0
- data/vendor/assets/images/voltar/b2.jpg +0 -0
- data/vendor/assets/images/voltar/b3.jpg +0 -0
- data/vendor/assets/images/voltar/b4.jpg +0 -0
- data/vendor/assets/images/voltar/b5.jpg +0 -0
- data/vendor/assets/images/voltar/c0.jpg +0 -0
- data/vendor/assets/images/voltar/c1.jpg +0 -0
- data/vendor/assets/images/voltar/c2.jpg +0 -0
- data/vendor/assets/images/voltar/c3.jpg +0 -0
- data/vendor/assets/images/voltar/c4.jpg +0 -0
- data/vendor/assets/images/voltar/c5.jpg +0 -0
- data/vendor/assets/images/voltar/chosen-sprite.png +0 -0
- data/vendor/assets/images/voltar/chosen-sprite@2x.png +0 -0
- data/vendor/assets/images/voltar/logo.png +0 -0
- data/vendor/assets/images/voltar/p0.jpg +0 -0
- data/vendor/assets/javascripts/voltar/angular-animate.js +1689 -0
- data/vendor/assets/javascripts/voltar/angular-contenteditable.js +98 -0
- data/vendor/assets/javascripts/voltar/angular-cookies.js +206 -0
- data/vendor/assets/javascripts/voltar/angular-sanitize.js +647 -0
- data/vendor/assets/javascripts/voltar/angular-ui-router.js +3658 -0
- data/vendor/assets/javascripts/voltar/angular.js +22024 -0
- data/vendor/assets/javascripts/voltar/chosen.jquery.min.js +2 -0
- data/vendor/assets/javascripts/voltar/easypiechart/jquery.easy-pie-chart.js +209 -0
- data/vendor/assets/javascripts/voltar/flot/jquery.flot.min.js +29 -0
- data/vendor/assets/javascripts/voltar/flot/jquery.flot.orderBars.js +187 -0
- data/vendor/assets/javascripts/voltar/flot/jquery.flot.pie.min.js +56 -0
- data/vendor/assets/javascripts/voltar/flot/jquery.flot.resize.js +60 -0
- data/vendor/assets/javascripts/voltar/flot/jquery.flot.spline.js +212 -0
- data/vendor/assets/javascripts/voltar/flot/jquery.flot.tooltip.min.js +12 -0
- data/vendor/assets/javascripts/voltar/jquery.min.js +5 -0
- data/vendor/assets/javascripts/voltar/moment.js +2856 -0
- data/vendor/assets/javascripts/voltar/ngStorage.js +103 -0
- data/vendor/assets/javascripts/voltar/ocLazyLoad.js +906 -0
- data/vendor/assets/javascripts/voltar/smart-table.min.js +1 -0
- data/vendor/assets/javascripts/voltar/sparkline/jquery.sparkline.min.js +2 -0
- data/vendor/assets/javascripts/voltar/toaster.js +185 -0
- data/vendor/assets/javascripts/voltar/ui-bootstrap-tpls.js +4116 -0
- data/vendor/assets/javascripts/voltar/ui-jq.js +86 -0
- data/vendor/assets/javascripts/voltar/ui-load.js +93 -0
- data/vendor/assets/javascripts/voltar/ui-validate.js +119 -0
- data/vendor/assets/stylesheets/voltar/animate.css +1098 -0
- data/vendor/assets/stylesheets/voltar/bootstrap.css +6202 -0
- data/vendor/assets/stylesheets/voltar/chosen.css +399 -0
- data/vendor/assets/stylesheets/voltar/font-awesome.min.css +4 -0
- data/vendor/assets/stylesheets/voltar/font.css +18 -0
- data/vendor/assets/stylesheets/voltar/simple-line-icons.css +526 -0
- data/vendor/assets/stylesheets/voltar/toaster.css +213 -0
- metadata +333 -0
@@ -0,0 +1,135 @@
|
|
1
|
+
<script type="text/ng-template" id='locations.html'>
|
2
|
+
|
3
|
+
<div class="bg-light lter b-b wrapper-md">
|
4
|
+
<h1 class="m-n font-thin h3">Locations</h1>
|
5
|
+
<small class="text-muted">Manage your locations here</small>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="wrapper-md" data-ng-controller="LocationsController">
|
9
|
+
|
10
|
+
<div class='row'>
|
11
|
+
<div class='col-sm-6'>
|
12
|
+
<div class="panel panel-default">
|
13
|
+
<div class="panel-heading font-bold">
|
14
|
+
<span>Locations</span>
|
15
|
+
|
16
|
+
<button class='btn btn-primary btn-xs pull-right' type='submit' data-ng-click='editLocation(null)'>
|
17
|
+
<i class='fa fa-plus'></i>
|
18
|
+
Add New Location
|
19
|
+
</button>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="panel-body">
|
23
|
+
|
24
|
+
<div class='table-responsive'>
|
25
|
+
<table class='table table-striped b-t b-light'>
|
26
|
+
<thead>
|
27
|
+
<tr>
|
28
|
+
<th>Name</th>
|
29
|
+
<th>Manager</th>
|
30
|
+
<th>Contact</th>
|
31
|
+
<th>Last Login</th>
|
32
|
+
<th>City</th>
|
33
|
+
<th></th>
|
34
|
+
</tr>
|
35
|
+
</thead>
|
36
|
+
|
37
|
+
<tbody>
|
38
|
+
<tr data-ng-repeat="location in locations">
|
39
|
+
<td>{{location.name}}</td>
|
40
|
+
<td>{{location.managers[0].full_name}}</td>
|
41
|
+
<td>{{location.phone}}</td>
|
42
|
+
<td>{{location.managers[0].last_sign_in_at}}</td>
|
43
|
+
<td>{{location.city}}</td>
|
44
|
+
<td>
|
45
|
+
<button class='btn btn-default btn-sm' data-ng-click='editLocation(location)' >
|
46
|
+
<i class='fa fa-edit'></i>
|
47
|
+
</button>
|
48
|
+
</td>
|
49
|
+
</tr>
|
50
|
+
</tbody>
|
51
|
+
|
52
|
+
</table>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
|
60
|
+
<div class="col-sm-6">
|
61
|
+
|
62
|
+
<div class="panel panel-default" data-ng-show='showLocationForm' >
|
63
|
+
<div class="panel-heading font-bold"><i class="fa fa-user"></i> {{mode}}</div>
|
64
|
+
<div class="panel-body">
|
65
|
+
|
66
|
+
<div class='col-sm-12'>
|
67
|
+
<%= render partial: 'voltar/shared/app/notifications', locals: { success_message: 'Location record was added/updated successfully!'} %>
|
68
|
+
</div>
|
69
|
+
|
70
|
+
<div class="col-sm-12">
|
71
|
+
|
72
|
+
<form name='addLocationForm'>
|
73
|
+
|
74
|
+
<div class='form-group'>
|
75
|
+
<label>Location Name</label>
|
76
|
+
<input type='text' class='form-control' data-ng-model='selectedLocation.name'>
|
77
|
+
</div>
|
78
|
+
|
79
|
+
<div class='form-group'>
|
80
|
+
<label>Phone</label>
|
81
|
+
<input type='text' class='form-control' data-ng-model='selectedLocation.phone'>
|
82
|
+
</div>
|
83
|
+
|
84
|
+
<div class='form-group'>
|
85
|
+
<label>Toll Free</label>
|
86
|
+
<input type='text' class='form-control' data-ng-model='selectedLocation.toll_free'>
|
87
|
+
</div>
|
88
|
+
|
89
|
+
<div class='form-group'>
|
90
|
+
<label>Fax</label>
|
91
|
+
<input type='text' class='form-control' data-ng-model='selectedLocation.fax'>
|
92
|
+
</div>
|
93
|
+
|
94
|
+
<div class='form-group'>
|
95
|
+
<label>Address</label>
|
96
|
+
<input type='text' class='form-control' data-ng-model='selectedLocation.address'>
|
97
|
+
</div>
|
98
|
+
|
99
|
+
<div class='form-group'>
|
100
|
+
<label>City</label>
|
101
|
+
<input type='text' class='form-control' data-ng-model='selectedLocation.city'>
|
102
|
+
</div>
|
103
|
+
|
104
|
+
<div class='form-group'>
|
105
|
+
<label>Postal Code</label>
|
106
|
+
<input type='text' class='form-control' data-ng-model='selectedLocation.postal_code'>
|
107
|
+
</div>
|
108
|
+
|
109
|
+
<country-province-select resource='selectedLocation'></country-province-select>
|
110
|
+
|
111
|
+
<div class="form-group">
|
112
|
+
|
113
|
+
<button type="submit" class="btn btn-dark" data-ng-click='showLocationForm = false'>
|
114
|
+
<span>
|
115
|
+
Cancel
|
116
|
+
</span>
|
117
|
+
</button>
|
118
|
+
|
119
|
+
<button type="submit" class="btn btn-primary" data-ng-click='persistLocation(selectedLocation)'>
|
120
|
+
<span>
|
121
|
+
Save changes <i class="fa fa-spinner fa-spin" data-ng-if='updatingLocation'></i>
|
122
|
+
</span>
|
123
|
+
</button>
|
124
|
+
</div>
|
125
|
+
|
126
|
+
|
127
|
+
</div>
|
128
|
+
|
129
|
+
</div>
|
130
|
+
</div>
|
131
|
+
|
132
|
+
</div>
|
133
|
+
</div>
|
134
|
+
|
135
|
+
</script>
|
@@ -0,0 +1,134 @@
|
|
1
|
+
<script type="text/ng-template" id='managers.html'>
|
2
|
+
|
3
|
+
<div class="bg-light lter b-b wrapper-md">
|
4
|
+
<h1 class="m-n font-thin h3">Team Users</h1>
|
5
|
+
<small class="text-muted">Manage your team here.</small>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="wrapper-md" data-ng-controller="ManagersController">
|
9
|
+
|
10
|
+
<div class='row'>
|
11
|
+
<div class='col-sm-6'>
|
12
|
+
<div class="panel panel-default">
|
13
|
+
<div class="panel-heading font-bold">
|
14
|
+
<span>Team Users</span>
|
15
|
+
<button class='btn btn-primary btn-xs pull-right' type='submit' data-ng-click='editTeamUser(null)'>
|
16
|
+
<i class='fa fa-plus'></i>
|
17
|
+
Add New User
|
18
|
+
</button>
|
19
|
+
</div>
|
20
|
+
<div class="panel-body">
|
21
|
+
|
22
|
+
<div class='table-responsive'>
|
23
|
+
<table class='table table-striped b-t b-light'>
|
24
|
+
<thead>
|
25
|
+
<tr>
|
26
|
+
<th>Full Name</th>
|
27
|
+
<th>Email</th>
|
28
|
+
<th>Last Login</th>
|
29
|
+
<th>City</th>
|
30
|
+
<th></th>
|
31
|
+
</tr>
|
32
|
+
</thead>
|
33
|
+
|
34
|
+
<tbody>
|
35
|
+
<tr data-ng-repeat="user in managers">
|
36
|
+
<td>{{user.first_name}} {{user.last_name}}</td>
|
37
|
+
<td>{{user.email}}</td>
|
38
|
+
<td>{{user.last_sign_in_at}}</td>
|
39
|
+
<td>{{user.city}}</td>
|
40
|
+
<td>
|
41
|
+
<button class='btn btn-default btn-sm' data-ng-click='editTeamUser(user)' >
|
42
|
+
<i class='fa fa-edit'></i>
|
43
|
+
</button>
|
44
|
+
</td>
|
45
|
+
</tr>
|
46
|
+
</tbody>
|
47
|
+
|
48
|
+
</table>
|
49
|
+
</div>
|
50
|
+
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
|
56
|
+
<div class="col-sm-6">
|
57
|
+
|
58
|
+
<div class="panel panel-default" data-ng-show='showTeamUserForm' >
|
59
|
+
<div class="panel-heading font-bold"><i class="fa fa-user"></i> {{mode}}</div>
|
60
|
+
<div class="panel-body">
|
61
|
+
|
62
|
+
<div class='col-sm-12'>
|
63
|
+
<%= render partial: 'voltar/shared/app/notifications', locals: { success_message: 'User was added/updated successfully!'} %>
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div class="col-sm-12">
|
67
|
+
|
68
|
+
<form name='addTeamUserForm'>
|
69
|
+
|
70
|
+
<div class='form-group'>
|
71
|
+
<label>First Name</label>
|
72
|
+
<input type='text' class='form-control' data-ng-model='selectedTeamUser.first_name'>
|
73
|
+
<input type='hidden' class='form-control' data-ng-model='selectedTeamUser.accepts_terms'>
|
74
|
+
</div>
|
75
|
+
|
76
|
+
<div class='form-group'>
|
77
|
+
<label>Last Name</label>
|
78
|
+
<input type='text' class='form-control' data-ng-model='selectedTeamUser.last_name'>
|
79
|
+
</div>
|
80
|
+
|
81
|
+
<div class='form-group'>
|
82
|
+
<label>Email</label>
|
83
|
+
<input type='text' class='form-control' data-ng-model='selectedTeamUser.email'>
|
84
|
+
</div>
|
85
|
+
|
86
|
+
<div class='form-group'>
|
87
|
+
<label>Password</label>
|
88
|
+
<input type='password' class='form-control' data-ng-model='selectedTeamUser.password'>
|
89
|
+
</div>
|
90
|
+
|
91
|
+
<div class='form-group'>
|
92
|
+
<label>Confirm Password</label>
|
93
|
+
<input type='password' class='form-control' data-ng-model='selectedTeamUser.password_confirmation'>
|
94
|
+
</div>
|
95
|
+
|
96
|
+
<div class='form-group'>
|
97
|
+
<label>City</label>
|
98
|
+
<input type='text' class='form-control' data-ng-model='selectedTeamUser.city'>
|
99
|
+
</div>
|
100
|
+
|
101
|
+
<country-province-select resource='selectedTeamUser'></country-province-select>
|
102
|
+
|
103
|
+
<div class='form-group'>
|
104
|
+
<label>Postal Code</label>
|
105
|
+
<input type='text' class='form-control' data-ng-model='selectedTeamUser.postal_code'>
|
106
|
+
</div>
|
107
|
+
|
108
|
+
<div class="form-group">
|
109
|
+
|
110
|
+
<button type="submit" class="btn btn-dark" data-ng-click='showTeamUserForm = false;'>
|
111
|
+
<span>
|
112
|
+
Cancel
|
113
|
+
</span>
|
114
|
+
</button>
|
115
|
+
|
116
|
+
<button type="submit" class="btn btn-primary" data-ng-click='persistTeamUser(selectedTeamUser)'>
|
117
|
+
<span>
|
118
|
+
Save changes <i class="fa fa-spinner fa-spin" data-ng-if='updatingTeamUser'></i>
|
119
|
+
</span>
|
120
|
+
</button>
|
121
|
+
</div>
|
122
|
+
|
123
|
+
|
124
|
+
</div>
|
125
|
+
|
126
|
+
</div>
|
127
|
+
</div>
|
128
|
+
</div>
|
129
|
+
|
130
|
+
|
131
|
+
</div>
|
132
|
+
|
133
|
+
|
134
|
+
</script>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<script type="text/ng-template" id='password.html'>
|
2
|
+
|
3
|
+
<div class="bg-light lter b-b wrapper-md">
|
4
|
+
<h1 class="m-n font-thin h3">Update Password</h1>
|
5
|
+
<small class="text-muted">Manage your password here</small>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="wrapper-md" data-ng-controller="PasswordController">
|
9
|
+
|
10
|
+
<div class='row'>
|
11
|
+
<div class="col-sm-6">
|
12
|
+
|
13
|
+
<div class="panel panel-default">
|
14
|
+
<div class="panel-heading font-bold"><i class="fa fa-user"></i> UPDATE YOUR PASSWORD</div>
|
15
|
+
<div class="panel-body">
|
16
|
+
|
17
|
+
<div class='col-sm-12'>
|
18
|
+
<%= render partial: 'voltar/shared/app/notifications', locals: { success_message: 'Your password was updated successfully!'} %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="col-sm-12">
|
22
|
+
|
23
|
+
<form name='updatePasswordForm'>
|
24
|
+
|
25
|
+
<div class='form-group'>
|
26
|
+
<label>Current Password</label>
|
27
|
+
<input type='password' class='form-control' data-ng-model='dealer.current_password'>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
<div class='form-group'>
|
31
|
+
<label>Password</label>
|
32
|
+
<input type='password' class='form-control' data-ng-model='dealer.password'>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class='form-group'>
|
36
|
+
<label>Confirm Password</label>
|
37
|
+
<input type='password' class='form-control' data-ng-model='dealer.password_confirmation'>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<div class="form-group">
|
41
|
+
<button type="submit" class="btn btn-primary" data-ng-click='updatePassword(dealer)'>
|
42
|
+
<span>
|
43
|
+
Save changes <i class="fa fa-spinner fa-spin" data-ng-if='updatingPassword'></i>
|
44
|
+
</span>
|
45
|
+
</button>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
|
49
|
+
</div>
|
50
|
+
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
</script>
|
@@ -0,0 +1,84 @@
|
|
1
|
+
<script type="text/ng-template" id='profile.html'>
|
2
|
+
|
3
|
+
<div class="bg-light lter b-b wrapper-md">
|
4
|
+
<h1 class="m-n font-thin h3">Profile</h1>
|
5
|
+
<small class="text-muted">Manage your user profile here</small>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="wrapper-md" data-ng-controller="ProfileController">
|
9
|
+
|
10
|
+
<div class='row'>
|
11
|
+
<div class="col-sm-6">
|
12
|
+
|
13
|
+
<div class="panel panel-default">
|
14
|
+
<div class="panel-heading font-bold"><i class="fa fa-user"></i> EDIT YOUR PROFILE:</div>
|
15
|
+
<div class="panel-body">
|
16
|
+
|
17
|
+
<div class='col-sm-12'>
|
18
|
+
<%= render partial: 'voltar/shared/app/notifications', locals: { success_message: 'Your profile was updated successfully!'} %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="col-sm-12">
|
22
|
+
|
23
|
+
<form name='editProfile'>
|
24
|
+
|
25
|
+
<div class='form-group'>
|
26
|
+
<label>Email</label>
|
27
|
+
<input type='text' class='form-control' data-ng-model='dealer.email'>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
<div class='form-group'>
|
31
|
+
<label>First Name</label>
|
32
|
+
<input type='text' class='form-control' data-ng-model='dealer.first_name'>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class='form-group'>
|
36
|
+
<label>Last Name</label>
|
37
|
+
<input type='text' class='form-control' data-ng-model='dealer.last_name'>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<div class='form-group'>
|
41
|
+
<label>Phone Number</label>
|
42
|
+
<input type='text' class='form-control' data-ng-model='dealer.phone'>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<div class='form-group'>
|
46
|
+
<label>Dealership Name</label>
|
47
|
+
<input type='text' class='form-control' data-ng-model='dealer.company'>
|
48
|
+
</div>
|
49
|
+
|
50
|
+
<div class='form-group'>
|
51
|
+
<label>Address</label>
|
52
|
+
<input type='text' class='form-control' data-ng-model='dealer.street_address'>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<div class='form-group'>
|
56
|
+
<label>City</label>
|
57
|
+
<input type='text' class='form-control' data-ng-model='dealer.city'>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<country-province-select resource='dealer'></country-province-select>
|
61
|
+
|
62
|
+
<div class='form-group'>
|
63
|
+
<label>ZIP/Postal Code</label>
|
64
|
+
<input type='text' class='form-control' data-ng-model='dealer.postal_code'>
|
65
|
+
</div>
|
66
|
+
|
67
|
+
<div class="form-group">
|
68
|
+
<button type="submit" class="btn btn-primary" data-ng-click='updateProfile(dealer)'>
|
69
|
+
<span>
|
70
|
+
Save changes <i class="fa fa-spinner fa-spin" data-ng-if='savingProfile'></i>
|
71
|
+
</span>
|
72
|
+
</button>
|
73
|
+
</div>
|
74
|
+
|
75
|
+
|
76
|
+
</div>
|
77
|
+
|
78
|
+
</div>
|
79
|
+
</div>
|
80
|
+
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
|
84
|
+
</script>
|
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<script type="text/ng-template" id='deleteInventory.html'>
|
2
|
+
|
3
|
+
<div class="modal-header">
|
4
|
+
<h3 class="modal-title text-danger"><i class="fa fa-exclamation-triangle"></i> Really delete {{inventory.name}}?</h3>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="modal-body">
|
8
|
+
Are you sure you want to perform this action and delete this inventory?
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div class="modal-footer ng-scope">
|
12
|
+
<button class="btn btn-default" data-ng-click="cancel()">Cancel</button>
|
13
|
+
<button class="btn btn-primary" data-ng-click="yes(inventory)">YES</button>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
</script>
|
@@ -0,0 +1,244 @@
|
|
1
|
+
<script type="text/ng-template" id='editInventory.html'>
|
2
|
+
<div class="bg-light lter b-b wrapper-md ng-scope">
|
3
|
+
<h1 class="m-n font-thin h3">
|
4
|
+
<button class="btn btn-default" onclick='window.history.back();'>
|
5
|
+
<i class="fa fa-chevron-left"></i> Back
|
6
|
+
</button>
|
7
|
+
<span>{{mode}} {{inventory.name}}</span>
|
8
|
+
</h1>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div class="wrapper-md" >
|
12
|
+
|
13
|
+
<div class='row'>
|
14
|
+
<div class="col-sm-6">
|
15
|
+
|
16
|
+
<div class="panel panel-default">
|
17
|
+
<div class="panel-heading font-bold">
|
18
|
+
<div data-ng-if="mode == 'Editing'">
|
19
|
+
<i class="fa fa-info-circle"></i> VIN: {{inventory.vin}}
|
20
|
+
</div>
|
21
|
+
<div data-ng-if="mode != 'Editing'">
|
22
|
+
<i class="fa fa-info-circle"></i> ADD NEW INVENTORY
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<div class="panel-body">
|
26
|
+
|
27
|
+
<div class='col-sm-12'>
|
28
|
+
<%= render partial: 'voltar/shared/app/notifications', locals: { success_message: 'Your inventory was updated successfully!'} %>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<form name='editInventory'>
|
32
|
+
|
33
|
+
<div class='col-sm-12'>
|
34
|
+
|
35
|
+
<div class='form-group' data-ng-if="mode != 'Editing'">
|
36
|
+
<label>
|
37
|
+
VIN:
|
38
|
+
<i>(must be exactly 17 digits)</i>
|
39
|
+
<i data-ng-if='inventory.vin'>(<strong>{{inventory.vin.length}}</strong> characters so far)</i>
|
40
|
+
</label>
|
41
|
+
<input type='text' ng-model='inventory.vin' class='form-control m-b'>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div class='col-sm-6'>
|
47
|
+
|
48
|
+
<div class='form-group'>
|
49
|
+
<label>Bus Type</label>
|
50
|
+
<select class='form-control m-b' data-ng-model='inventory.bus_type_id' tabindex=1 data-ui-jq='chosen' data-ng-change='updateBodyMakes(inventory)'>
|
51
|
+
<option value='{{bus_type.id}}' data-ng-repeat='bus_type in bus_types' >{{bus_type.name}}</option>
|
52
|
+
</select>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<div class='form-group'>
|
56
|
+
<label>Year</label>
|
57
|
+
<select class='form-control m-b' data-ng-model='inventory.year' data-ui-jq='chosen' tabindex=3>
|
58
|
+
<option value='{{year}}' data-ng-repeat='year in years' >{{year}}</option>
|
59
|
+
</select>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div class='form-group'>
|
63
|
+
<label>Chasis Make</label>
|
64
|
+
<input tabindex=5 class='form-control m-b' type='text' data-ng-model='inventory.chassis_make'>
|
65
|
+
</div>
|
66
|
+
|
67
|
+
<div class='form-group'>
|
68
|
+
<label>Engine</label>
|
69
|
+
<input tabindex=7 class='form-control m-b' type='text' data-ng-model='inventory.engine'>
|
70
|
+
</div>
|
71
|
+
|
72
|
+
<div class='form-group'>
|
73
|
+
<label>Interior Color</label>
|
74
|
+
<input tabindex=9 class='form-control m-b' type='text' data-ng-model='inventory.interior_color'>
|
75
|
+
</div>
|
76
|
+
|
77
|
+
<div class='form-group'>
|
78
|
+
<label>Transmission</label>
|
79
|
+
<select tabindex=11 class='form-control m-b' data-ng-model='inventory.transmission' data-ui-jq='chosen'>
|
80
|
+
<option value='Automatic'>Automatic</option>
|
81
|
+
<option value='Manual'>Manual</option>
|
82
|
+
</select>
|
83
|
+
</div>
|
84
|
+
|
85
|
+
<div class='form-group'>
|
86
|
+
<label>Youtube Video Link</label>
|
87
|
+
<input tabindex=14 class='form-control m-b' type='text' data-ng-model='inventory.video_link'>
|
88
|
+
</div>
|
89
|
+
|
90
|
+
</div>
|
91
|
+
|
92
|
+
<div class='col-sm-6'>
|
93
|
+
|
94
|
+
<div class='form-group'>
|
95
|
+
<label>Body Make</label>
|
96
|
+
<select tabindex=2 id='body_make_select' class='form-control m-b' data-placeholder='Select a Bus Type first' data-ng-model='inventory.body_make_id' >
|
97
|
+
<option value='{{body_make.id}}' data-ng-repeat='body_make in body_makes' data-ng-selected='inventory.body_make_id === body_make.id'>{{body_make.name}}</option>
|
98
|
+
</select>
|
99
|
+
</div>
|
100
|
+
|
101
|
+
<div class='form-group'>
|
102
|
+
<label>Status</label>
|
103
|
+
<select tabindex=4 class='form-control m-b' data-ng-model='inventory.status' data-ui-jq='chosen'>
|
104
|
+
<option value="">Any</option>
|
105
|
+
<option value="pending">Pending</option>
|
106
|
+
<option value="attention">Attention</option>
|
107
|
+
<option value="standard">Standard</option>
|
108
|
+
<option value="new">New</option>
|
109
|
+
<option value="sale">Sale</option>
|
110
|
+
</select>
|
111
|
+
</div>
|
112
|
+
|
113
|
+
|
114
|
+
<div class='form-group'>
|
115
|
+
<label>Chasis Model</label>
|
116
|
+
<input tabindex=6 class='form-control m-b' type='text' data-ng-model='inventory.chasis_model'>
|
117
|
+
</div>
|
118
|
+
|
119
|
+
<div class='form-group'>
|
120
|
+
<label>Body Model</label>
|
121
|
+
<input tabindex=8 class='form-control m-b' type='text' data-ng-model='inventory.body_model'>
|
122
|
+
</div>
|
123
|
+
|
124
|
+
<div class='form-group'>
|
125
|
+
<label>Exterior Color</label>
|
126
|
+
<input tabindex=10 class='form-control m-b' type='text' data-ng-model='inventory.exterior_color'>
|
127
|
+
</div>
|
128
|
+
|
129
|
+
<div class='form-group'>
|
130
|
+
<label>Mileage</label>
|
131
|
+
<div>
|
132
|
+
<input tabindex=12 class='form-control' type='text' data-ng-model='inventory.mileage' style='margin-right: 20px;width: 150px; display: inline;' >
|
133
|
+
<select tabindex=13 class='form-control w-xs' data-ng-model='inventory.mileage_metric' style='display:inline;' >
|
134
|
+
<option value='kms'>Kms</option>
|
135
|
+
<option value='miles'>Miles</option>
|
136
|
+
</select>
|
137
|
+
</div>
|
138
|
+
</div>
|
139
|
+
|
140
|
+
<div class='form-group'>
|
141
|
+
<label>Wheelchair Capacity</label>
|
142
|
+
<input tabindex=15 class='form-control m-b' type='text' data-ng-model='inventory.wheelchair_capacity'>
|
143
|
+
</div>
|
144
|
+
|
145
|
+
</div>
|
146
|
+
|
147
|
+
|
148
|
+
<div class='col-sm-12'>
|
149
|
+
<div class='form-group'>
|
150
|
+
<span>Comments/Description:</span>
|
151
|
+
<div class="form-control" style="overflow:scroll;height:200px;max-height:200px" contenteditable="true" data-ng-model='inventory.vehicle_description' >
|
152
|
+
{{inventory.vehicle_description}}
|
153
|
+
</div>
|
154
|
+
</div>
|
155
|
+
|
156
|
+
<div class="well b bg-light lt wrapper-sm m-t" data-ng-show="mode == 'Editing'">Inventory last modified by <strong>{{inventory.last_modified_by}}</strong> on <strong>{{inventory.human_friendly_updated_at}}</strong>
|
157
|
+
</div>
|
158
|
+
</div>
|
159
|
+
|
160
|
+
<div class="line line-dashed b-b line-lg pull-in"></div>
|
161
|
+
|
162
|
+
<div class="form-group">
|
163
|
+
|
164
|
+
<!-- <p class='alert alert-info' data-ng-show='uploader.queue.length > 0'>
|
165
|
+
You have images that you have selected, but not uploaded yet. <a href='' data-ng-click='uploader.uploadAll()'>Click here</a> to upload these selected images first. Once uploaded, the "Save" button below will become active.
|
166
|
+
</p> -->
|
167
|
+
|
168
|
+
<div class="col-sm-4">
|
169
|
+
|
170
|
+
<!-- button for saving update to an inventory-->
|
171
|
+
<button type="submit" class="btn btn-primary" data-ng-click='updateInventory(inventory)' data-ng-show="mode == 'Editing'" data-ng-disabled='uploader.queue.length > 0'>
|
172
|
+
<span>
|
173
|
+
Save changes
|
174
|
+
<i class="fa fa-spinner fa-spin" data-ng-if='savingInventory'></i>
|
175
|
+
</span>
|
176
|
+
</button>
|
177
|
+
|
178
|
+
<!-- button for new inventory-->
|
179
|
+
<button type="submit" class="btn btn-primary" data-ng-click='addNew(inventory)' data-ng-show="mode != 'Editing'" data-ng-disabled='uploader.queue.length > 0'>
|
180
|
+
<span>
|
181
|
+
Save changes
|
182
|
+
<i class="fa fa-spinner fa-spin" data-ng-if='savingInventory'></i>
|
183
|
+
</span>
|
184
|
+
</button>
|
185
|
+
|
186
|
+
</div>
|
187
|
+
|
188
|
+
</div>
|
189
|
+
|
190
|
+
</form>
|
191
|
+
|
192
|
+
</div>
|
193
|
+
</div>
|
194
|
+
|
195
|
+
</div>
|
196
|
+
|
197
|
+
|
198
|
+
<div class='col-sm-6'>
|
199
|
+
<div class="panel panel-default">
|
200
|
+
<div class="panel-heading font-bold"> <i class="fa fa-picture-o"></i> IMAGES</div>
|
201
|
+
<div class="panel-body">
|
202
|
+
|
203
|
+
<div class='col-sm-12 image-row'>
|
204
|
+
<div class='col-sm-4' data-ng-repeat='image in inventory.images'>
|
205
|
+
<img class='thumbnail b b-a wrapper-xs bg-white img-responsive no-radius' data-ng-src='{{image.url_with_host}}' >
|
206
|
+
</div>
|
207
|
+
|
208
|
+
<div class='col-sm-4' data-ng-repeat="item in uploader.queue">
|
209
|
+
<div data-ng-thumb="{ file: item._file, height: '125', width: '160' }" class='thumbnail b b-a wrapper-xs bg-white img-responsive'>
|
210
|
+
</div>
|
211
|
+
</div>
|
212
|
+
|
213
|
+
<div class='col-sm-4' >
|
214
|
+
<div class="b-a b-2x b-dashed wrapper-lg bg-white text-center m-b">
|
215
|
+
<span class='btn btn-default btn-file'>
|
216
|
+
<i class="fa fa-plus text"></i>
|
217
|
+
<span class="text">Add Images</span>
|
218
|
+
<input type='file' id='addNewImage' nv-file-select uploader="uploader" multiple>
|
219
|
+
</span>
|
220
|
+
|
221
|
+
<button class='btn btn-default' data-ng-show='uploader.getNotUploadedItems().length' data-ng-click='uploader.uploadAll()'>
|
222
|
+
<i class="fa fa-cloud-upload text"></i>
|
223
|
+
<span class="text">Upload</span>
|
224
|
+
</button>
|
225
|
+
</div>
|
226
|
+
</div>
|
227
|
+
</div>
|
228
|
+
|
229
|
+
<div class='col-sm-12' data-ng-show='uploader.progress'>
|
230
|
+
<div class="progress-striped m-b-sm progress" value="dynamic" type="info" data-ng-class="{ active: uploader.progress == 100 }" >
|
231
|
+
<div class="progress-bar progress-bar-info info" role="progressbar" aria-valuemin="0" aria-valuemax="100" ng-style="{width: uploader.progress + '%'}" aria-valuetext="{{uploader.progress}}%" >
|
232
|
+
</div>
|
233
|
+
</div>
|
234
|
+
</div>
|
235
|
+
|
236
|
+
</div>
|
237
|
+
|
238
|
+
</div>
|
239
|
+
</div>
|
240
|
+
|
241
|
+
</div>
|
242
|
+
|
243
|
+
</div>
|
244
|
+
</script>
|