Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit 49fcc93

Browse files
committed
Merge pull request #25 from appirio-tech/DEM-1204
DEM-1204 Development Controller
2 parents 8a0676c + 56f9473 commit 49fcc93

File tree

5 files changed

+119
-147
lines changed

5 files changed

+119
-147
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ language: node_js
22
node_js:
33
- 0.12.7
44
install:
5+
- rm -rf node_modules
6+
- rm -rf bower_components
57
- npm install -g gulp
68
- npm install -g bower
79
- npm install
Lines changed: 61 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,89 @@
11
'use strict'
22

3-
SubmitWorkDevelopmentController = ($scope, SubmitWorkAPIService) ->
4-
vm = this
5-
vm.loading = true
6-
vm.workId = $scope.workId
7-
8-
vm.work =
9-
name : null
10-
requestType: null
11-
summary : null
12-
features : []
13-
featuresDetails : null
14-
visualDesign: {}
3+
SubmitWorkDevelopmentController = ($scope, $rootScope, SubmitWorkService, API_URL) ->
4+
vm = this
5+
vm.loading = true
6+
vm.workId = $scope.workId
7+
vm.showUploadModal = false
8+
vm.showSpecsModal = false
9+
vm.developmentUploaderUploading = false
10+
vm.developmentUploaderHasErrors = false
1511

1612
vm.securityLevels =
1713
none: 'none'
1814
minimal: 'minimal'
1915
complete: 'complete'
2016

21-
vm.appPurposes =
22-
enterprise: 'enterprise'
23-
appStore: 'appStore'
24-
25-
vm.thirdPartyIntegrations = [
26-
name: 'Google'
27-
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elite'
28-
id: '1234'
29-
,
30-
name: 'Yahoo'
31-
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elite'
32-
id: '1235'
33-
,
34-
name: 'Paypal'
35-
description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elite'
36-
id: '1236'
37-
]
38-
39-
vm.save = (onSuccess) ->
40-
if vm.workId
41-
params =
42-
id: vm.workId
43-
44-
resource = SubmitWorkAPIService.put params, vm.work
45-
resource.$promise.then (response) ->
46-
onSuccess? response
47-
resource.$promise.catch (response) ->
48-
# TODO: add error handling
49-
50-
vm.submitDevelopment = ->
51-
workIntegrations = vm.work.development.thirdPartyIntegrations
52-
developmentValid = workValid vm.work.development
53-
if workIntegrations.length && developmentValid
54-
# TODO: replace with proper status
55-
vm.work.status = 'developmentAdded'
56-
vm.save (response) ->
57-
# TODO: navigate to "development" view
17+
vm.showUpload = ->
18+
vm.showUploadModal = true
19+
20+
vm.showSpecs = ->
21+
vm.showSpecsModal = true
22+
23+
vm.save = ->
24+
developmentValid = workValid vm.work
25+
uploaderValid = !vm.developmentUploaderUploading && !vm.developmentUploaderHasErrors
26+
updates = vm.work
27+
28+
if developmentValid && uploaderValid
29+
SubmitWorkService.save(updates)
5830

5931
workValid = (work) ->
6032
isValid = true
6133
for property, value of work
62-
isObject = typeof value == 'object' && !Array.isArray value
6334
if value == null
6435
isValid = false
65-
else if isObject
66-
isValid = workValid value
6736
isValid
6837

69-
mockify = (work) ->
70-
work.development =
71-
appPurpose: null
72-
offlineAccess:
73-
required: null
74-
comments: null
75-
hasPersonalInformation: null
76-
securityLevel: null
77-
thirdPartyIntegrations : []
38+
configureUploader = ->
39+
assetType = 'specs'
40+
queryUrl = API_URL + '/v3/work-files/assets?filter=workId%3D' + vm.workId + '%26assetType%3D' + assetType
41+
vm.developmentUploaderConfig =
42+
name: 'uploader' + vm.workId
43+
allowMultiple: true
44+
queryUrl: queryUrl
45+
urlPresigner: API_URL + '/v3/work-files/uploadurl'
46+
fileEndpoint: API_URL + '/v3/work-files/:fileId'
47+
saveParams:
48+
workId: vm.workId
49+
assetType: assetType
7850

79-
activate = ->
80-
if vm.workId
81-
params =
82-
id: vm.workId
51+
onChange = ->
52+
if SubmitWorkService.work.o.hasPending
53+
return false
54+
55+
vm.loading = false
8356

84-
resource = SubmitWorkAPIService.get params
57+
# TODO: Remove mock data once development is in payload
58+
SubmitWorkService.work.offlineAccessRequired = null
59+
SubmitWorkService.work.hasPersonalInformation = null
60+
SubmitWorkService.work.securityLevel = null
61+
SubmitWorkService.work.thirdPartyIntegrations = null
8562

86-
resource.$promise.then (response) ->
87-
vm.work = response
88-
#TODO: remove once all properties are in payload
89-
mockify vm.work
63+
vm.work = {}
64+
vm.work.offlineAccessRequired = SubmitWorkService.work.offlineAccessRequired
65+
vm.work.hasPersonalInformation = SubmitWorkService.work.hasPersonalInformation
66+
vm.work.securityLevel = SubmitWorkService.work.securityLevel
67+
vm.work.thirdPartyIntegrations = SubmitWorkService.work.thirdPartyIntegrations
68+
69+
70+
71+
activate = ->
72+
destroyWorkListener = $rootScope.$on "SubmitWorkService.work:changed", ->
73+
onChange()
9074

91-
resource.$promise.catch (response) ->
92-
# TODO: add error handling
75+
$scope.$on '$destroy', ->
76+
destroyWorkListener()
9377

94-
resource.$promise.finally ->
95-
vm.loading = false
96-
else
97-
vm.loading = false
78+
SubmitWorkService.fetch(vm.workId)
79+
configureUploader()
80+
# TODO: remove once work is fetched
81+
onChange()
9882

9983
vm
10084

10185
activate()
10286

103-
SubmitWorkDevelopmentController.$inject = ['$scope', 'SubmitWorkAPIService']
87+
SubmitWorkDevelopmentController.$inject = ['$scope', '$rootScope', 'SubmitWorkService', 'API_URL']
10488

10589
angular.module('appirio-tech-ng-submit-work').controller 'SubmitWorkDevelopmentController', SubmitWorkDevelopmentController

src/scripts/services/submit-work.service.coffee

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ srv = ($rootScope, Optimist, SubmitWorkAPIService) ->
3838
apiCall: apiCall
3939
updateCallback: emitUpdates
4040

41-
4241
submitWorkService
4342

4443
srv.$inject = ['$rootScope', 'Optimist', 'SubmitWorkAPIService']

src/views/submit-work-development.directive.jade

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,19 @@ header
99

1010
p Help us understand the technical requirements of your app.
1111

12-
modal.upload-documents(show="true" background-click-close=true)
12+
modal.upload-documents(show="vm.showUploadModal" background-click-close=true)
1313
.upload
1414
.icon.upload
1515

1616
h2 Upload your <strong>Development specs</strong>
1717

1818
p Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
1919

20-
ap-uploader()
20+
ap-uploader(
21+
config="vm.developmentUploaderConfig"
22+
uploading="vm.developmentUploaderUploading"
23+
has-errors="vm.developmentUploaderHasErrors"
24+
)
2125

2226
button.wider.continue.action kick off project
2327

@@ -27,28 +31,28 @@ ul.path-choices
2731

2832
h3 Define development specs
2933

30-
button.action.wide select
34+
button.action.wide(type="button" scroll-element="offlineAccess") select
3135

3236
li
3337
.icon
3438

3539
h3 Upload development specs
3640

37-
button.action.wide select
41+
button.action.wide(ng-click="vm.showUpload()") select
3842

39-
button.wider.continue(type="button" scroll-element="") continue
43+
button.wider.continue(type="button" scroll-element="offlineAccess") continue
4044

41-
form(ng-submit="vm.submitDevelopment()")
45+
form(ng-submit="vm.save()")
4246

43-
.interactive
47+
#offlineAccess.interactive
4448
h2 Do you require users to have <strong>offline access to data</strong>?
4549

4650
p This will affect backps and scalability.
4751

4852
ul.or-choices
4953
li
5054
button.big.widest(
51-
ng-model="vm.work.development.offlineAccess.required"
55+
ng-model="vm.work.offlineAccessRequired"
5256
label="yes"
5357
value="true"
5458
selectable=true
@@ -62,7 +66,7 @@ form(ng-submit="vm.submitDevelopment()")
6266

6367
li
6468
button.big.widest(
65-
ng-model="vm.work.development.offlineAccess.required"
69+
ng-model="vm.work.offlineAccessRequired"
6670
label="no"
6771
value="false"
6872
selectable=true
@@ -71,17 +75,17 @@ form(ng-submit="vm.submitDevelopment()")
7175

7276
p Lorem ipsum dolor sit amet, consectetur adipiscing elit.
7377

74-
button.wider.continue(type="button" scroll-element="") continue
78+
button.wider.continue(type="button" scroll-element="personalInfo") continue
7579

76-
.interactive
80+
#personalInfo.interactive
7781
h2 Personal information
7882

7983
p Is there any level of personal information? (stored or transmitted)
8084

8185
ul.or-choices
8286
li
8387
button.big.widest(
84-
ng-model="vm.work.development.hasPersonalInformation"
88+
ng-model="vm.work.hasPersonalInformation"
8589
label="yes"
8690
value="true"
8791
selectable=true
@@ -95,7 +99,7 @@ form(ng-submit="vm.submitDevelopment()")
9599

96100
li
97101
button.big.widest(
98-
ng-model="vm.work.development.hasPersonalInformation"
102+
ng-model="vm.work.hasPersonalInformation"
99103
label="no"
100104
value="false"
101105
selectable=true
@@ -104,9 +108,9 @@ form(ng-submit="vm.submitDevelopment()")
104108

105109
p Lorem ipsum dolor sit amet, consectetur adipiscing elit.
106110

107-
button.wider.continue(type="button" scroll-element="") continue
111+
button.wider.continue(type="button" scroll-element="securityLevel") continue
108112

109-
.interactive
113+
#securityLevel.interactive
110114
h2 What level of <strong>security do you need</strong>?
111115

112116
ul.path-choices
@@ -115,32 +119,32 @@ form(ng-submit="vm.submitDevelopment()")
115119

116120
h3 No security
117121

118-
button(selectable=true type="button" ng-model="vm.work.development.securityLevel" value="vm.securityLevels.none")
122+
button(selectable=true type="button" ng-model="vm.work.securityLevel" value="vm.securityLevels.none")
119123

120124
li
121125
.img
122126

123127
h3 Minimal security
124128

125-
button(selectable=true type="button" ng-model="vm.work.development.securityLevel" value="vm.securityLevels.minimal")
129+
button(selectable=true type="button" ng-model="vm.work.securityLevel" value="vm.securityLevels.minimal")
126130

127131
li
128132
.img
129133

130134
h3 Complete security
131135

132-
button(selectable=true type="button" ng-model="vm.work.development.securityLevel" value="vm.securityLevels.complete")
136+
button(selectable=true type="button" ng-model="vm.work.securityLevel" value="vm.securityLevels.complete")
133137

134-
button.wider.continue(type="button" scroll-element="") continue
138+
button.wider.continue(type="button" scroll-element="thirdPartyIntegrations") continue
135139

136-
.interactive
140+
#thirdPartyIntegrations.interactive
137141
h2 How many 3rd party integrations</strong>?
138142

139143
p Enter the number of 3rd party integrations so we can estimate effort involved.
140144

141-
input(type="number")
145+
input(type="number" min=1 max=6 ng-model="vm.work.thirdPartyIntegrations")
142146

143-
button.wider.continue(type="button" scroll-element="") save
147+
button.wider.continue(type="button") save
144148

145149
button.wider.continue.action(type="submit") kick off project
146150

0 commit comments

Comments
 (0)