Skip to content

Commit e5affdb

Browse files
authored
Fix report select dropdowns and other inputs (#59)
1 parent 83ee874 commit e5affdb

File tree

12 files changed

+198
-110
lines changed

12 files changed

+198
-110
lines changed

backend/src/serverless/microservices/python/serverless/serverless.yml

Lines changed: 109 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,20 @@ provider:
1717
Resource:
1818
- '*'
1919
region: ${env:AWS_REGION}
20-
ecr:
21-
# In this section you can define images that will be built locally and uploaded to ECR
22-
images:
23-
pythonMicroservices:
24-
path: ../
2520

2621
custom:
2722
currentStage: ${opt:stage, self:provider.stage} # 'staging' is default unless overriden by --stage flag
23+
scripts:
24+
hooks:
25+
# The psycopg2-3.8 folder contains the psycopg2 package compiled for the lambda environment.
26+
# If it is installed using pip it only works when a linux machine has done the install.
27+
# We change the name to psycopg2 so lambda will use the folder as the psycopg2 package.
28+
# We need to rename because if it lives named as psycopg2 it overwrites the psycopg2 installation
29+
# that one might have in local, and thus functions cannot be invoked locally since the package
30+
# might not be compatible with our system.
31+
'package:initialize': cp -r psycopg2-3.8 psycopg2
32+
'deploy:finalize': rm -rf psycopg2
33+
2834
localstack:
2935
host: ${env:LOCALSTACK_HOSTNAME}
3036
stages:
@@ -48,18 +54,8 @@ constructs:
4854
batchSize: 1 # Lambda will receive 1 message at a time
4955
worker:
5056
timeout: 900
51-
image: ${env:AWS_ACCOUNT_ID}.dkr.ecr.${env:AWS_REGION}.amazonaws.com/python-microservices-lambda:${env:CROWD_VERSION}
57+
handler: handler_scheduled.worker
5258
environment:
53-
DD_ENV: ${env:NODE_ENV}
54-
DD_LAMBDA_HANDLER: serverless.handler_scheduled.worker
55-
DD_LOGS_ENABLED: true
56-
DD_CAPTURE_LAMBDA_PAYLOAD: true
57-
DD_SITE: datadoghq.eu
58-
DD_API_KEY_SECRET_ARN: ${env:DATADOG_API_KEY_SECRET_ARN}
59-
DD_TRACE_ENABLED: true
60-
DD_TAGS: 'context:pythonMicroservices'
61-
DD_SERVICE: 'pythonMicroservices'
62-
DD_LOGS_INJECTION: true
6359
NODE_ENV: ${env:NODE_ENV}
6460
LOCALSTACK_HOSTNAME: ${env:LOCALSTACK_HOSTNAME}
6561
LOCALSTACK_PORT: ${env:LOCALSTACK_PORT}
@@ -72,7 +68,7 @@ constructs:
7268

7369
functions:
7470
coordinator:
75-
image: ${env:AWS_ACCOUNT_ID}.dkr.ecr.${env:AWS_REGION}.amazonaws.com/python-microservices-lambda:${env:CROWD_VERSION}
71+
handler: handler_scheduled.coordinator
7672
events:
7773
- schedule:
7874
rate: rate(2 hours)
@@ -83,19 +79,6 @@ functions:
8379
input:
8480
service: check_merge
8581
environment:
86-
DD_ENV: ${env:NODE_ENV}
87-
DD_LAMBDA_HANDLER: serverless.handler_scheduled.coordinator
88-
DD_LOGS_ENABLED: true
89-
DD_CAPTURE_LAMBDA_PAYLOAD: true
90-
DD_SITE: datadoghq.eu
91-
DD_API_KEY_SECRET_ARN: ${env:DATADOG_API_KEY_SECRET_ARN}
92-
DD_TRACE_ENABLED: true
93-
DD_TAGS: 'context:pythonMicroservices'
94-
DD_SERVICE: 'pythonMicroservices'
95-
DD_LOGS_INJECTION: true
96-
DD_FLUSH_TO_LOG: true
97-
DD_LOG_LEVEL: 'debug'
98-
DD_ENHANCED_METRICS: true
9982
NODE_ENV: ${env:NODE_ENV}
10083
EDITION: ${env:EDITION}
10184
SEGMENT_WRITE_KEY: ${env:SEGMENT_WRITE_KEY}
@@ -111,18 +94,8 @@ functions:
11194
PYTHON_MICROSERVICES_SQS_URL: ${env:PYTHON_MICROSERVICES_SQS_URL}
11295

11396
testSqs:
114-
image: ${env:AWS_ACCOUNT_ID}.dkr.ecr.${env:AWS_REGION}.amazonaws.com/python-microservices-lambda:${env:CROWD_VERSION}
97+
handler: handler_scheduled.worker
11598
environment:
116-
DD_ENV: ${env:NODE_ENV}
117-
DD_LAMBDA_HANDLER: serverless.handler_scheduled.worker
118-
DD_LOGS_ENABLED: true
119-
DD_CAPTURE_LAMBDA_PAYLOAD: true
120-
DD_SITE: datadoghq.eu
121-
DD_API_KEY_SECRET_ARN: ${env:DATADOG_API_KEY_SECRET_ARN}
122-
DD_TRACE_ENABLED: true
123-
DD_TAGS: 'context:pythonMicroservices'
124-
DD_SERVICE: 'pythonMicroservices'
125-
DD_LOGS_INJECTION: true
12699
NODE_ENV: ${env:NODE_ENV}
127100
EDITION: ${env:EDITION}
128101
SEGMENT_WRITE_KEY: ${env:SEGMENT_WRITE_KEY}
@@ -133,11 +106,106 @@ functions:
133106
DB_OPERATIONS_SQS_URL: ${env:DB_OPERATIONS_SQS_URL}
134107
PYTHON_MICROSERVICES_SQS_URL: ${env:PYTHON_MICROSERVICES_SQS_URL}
135108

109+
gitHubOnboardingCoordinator:
110+
handler: handler_github.onboarding_coordinator
111+
environment:
112+
NODE_ENV: ${env:NODE_ENV}
113+
EDITION: ${env:EDITION}
114+
SEGMENT_WRITE_KEY: ${env:SEGMENT_WRITE_KEY}
115+
LOCALSTACK_HOSTNAME: ${env:LOCALSTACK_HOSTNAME}
116+
LOCALSTACK_PORT: ${env:LOCALSTACK_PORT}
117+
DATABASE_USERNAME: ${env:DATABASE_USERNAME}
118+
DATABASE_PASSWORD: ${env:DATABASE_PASSWORD}
119+
DATABASE_DATABASE: ${env:DATABASE_DATABASE}
120+
DATABASE_HOST_READ: ${env:DATABASE_HOST_WRITE}
121+
DB_OPERATIONS_SQS_URL: ${env:DB_OPERATIONS_SQS_URL}
122+
AWS_ACCESS_KEY_ID_CROWD: ${env:AWS_ACCESS_KEY_ID, false}
123+
AWS_SECRET_ACCESS_KEY_CROWD: ${env:AWS_SECRET_ACCESS_KEY, false}
124+
ONBOARDING_STATE_MACHINE_ARN: ${self:resources.Outputs.OnboardingStateMachine.Value}
125+
126+
gitHubOnboardingWorker:
127+
handler: handler_github.onboarding_worker
128+
environment:
129+
NODE_ENV: ${env:NODE_ENV}
130+
EDITION: ${env:EDITION}
131+
SEGMENT_WRITE_KEY: ${env:SEGMENT_WRITE_KEY}
132+
LOCALSTACK_HOSTNAME: ${env:LOCALSTACK_HOSTNAME}
133+
LOCALSTACK_PORT: ${env:LOCALSTACK_PORT}
134+
DATABASE_USERNAME: ${env:DATABASE_USERNAME}
135+
DATABASE_PASSWORD: ${env:DATABASE_PASSWORD}
136+
DATABASE_DATABASE: ${env:DATABASE_DATABASE}
137+
DATABASE_HOST_READ: ${env:DATABASE_HOST_WRITE}
138+
DB_OPERATIONS_SQS_URL: ${env:DB_OPERATIONS_SQS_URL}
139+
AWS_ACCESS_KEY_ID_CROWD: ${env:AWS_ACCESS_KEY_ID, false}
140+
AWS_SECRET_ACCESS_KEY_CROWD: ${env:AWS_SECRET_ACCESS_KEY, false}
141+
142+
gitHubOnboardingStatus:
143+
handler: handler_github.onboarding_status
144+
environment:
145+
NODE_ENV: ${env:NODE_ENV}
146+
EDITION: ${env:EDITION}
147+
SEGMENT_WRITE_KEY: ${env:SEGMENT_WRITE_KEY}
148+
LOCALSTACK_HOSTNAME: ${env:LOCALSTACK_HOSTNAME}
149+
LOCALSTACK_PORT: ${env:LOCALSTACK_PORT}
150+
AWS_ACCOUNT_ID: ${env:AWS_ACCOUNT_ID}
151+
CROWD_AWS_REGION: ${env:AWS_REGION}
152+
DATABASE_USERNAME: ${env:DATABASE_USERNAME}
153+
DATABASE_PASSWORD: ${env:DATABASE_PASSWORD}
154+
DATABASE_DATABASE: ${env:DATABASE_DATABASE}
155+
DATABASE_HOST_READ: ${env:DATABASE_HOST_WRITE}
156+
DB_OPERATIONS_SQS_URL: ${env:DB_OPERATIONS_SQS_URL}
157+
AWS_ACCESS_KEY_ID_CROWD: ${env:AWS_ACCESS_KEY_ID, false}
158+
AWS_SECRET_ACCESS_KEY_CROWD: ${env:AWS_SECRET_ACCESS_KEY, false}
159+
160+
stepFunctions:
161+
stateMachines:
162+
# Onboarding state machine
163+
onboardingStateMachine:
164+
name: OnboardingStateMachine${self:custom.currentStage}
165+
definition:
166+
Comment: 'State machine that coordinates GitHub onboarding'
167+
StartAt: WaitState
168+
States:
169+
WaitState:
170+
Type: Wait
171+
SecondsPath: '$.wait'
172+
Next: MapState
173+
MapState:
174+
Type: Map
175+
Iterator:
176+
StartAt: WorkerState
177+
States:
178+
WorkerState:
179+
Type: Task
180+
Resource:
181+
Fn::GetAtt: [gitHubOnboardingWorker, Arn]
182+
End: true
183+
ItemsPath: '$.events'
184+
Next: StatusState
185+
StatusState:
186+
Type: Task
187+
Resource:
188+
Fn::GetAtt: [gitHubOnboardingStatus, Arn]
189+
End: true
190+
191+
resources:
192+
Outputs:
193+
OnboardingStateMachine:
194+
Description: The ARN of the onboarding state machine
195+
Value:
196+
Ref: OnboardingStateMachine${self:custom.currentStage}
197+
136198
package:
199+
include:
200+
- '../crowd-backend/**'
201+
- '../crowd-github/**'
202+
- '../crowd-members-score/**'
203+
- '../crowd-check-merge-members/**'
137204
patterns:
138205
- '!venv*/**'
139206

140207
plugins:
141208
- serverless-lift
142209
- serverless-step-functions
210+
- serverless-plugin-scripts
143211
- serverless-localstack

frontend/package-lock.json

Lines changed: 19 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"vue-grid-layout": "3.0.0-beta1",
4444
"vue-json-pretty": "^2.2.2",
4545
"vue-router": "^4.0.12",
46-
"vuedraggable": "^2.24.3",
46+
"vuedraggable": "^4.1.0",
4747
"vuex": "^4.0.2",
4848
"xlsx": "^0.17.2",
4949
"yup": "^0.32.11"

frontend/src/i18n/en.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,12 @@ const en = {
436436
score: '[Members] Engagement Level',
437437
location: '[Members] Location',
438438
organisation: '[Members] Organisation',
439-
joinedAt: '[Members] Joined Date'
439+
joinedAt: '[Members] Joined Date',
440+
averageTimeToFirstInteraction:
441+
'[Members] Avg. Time To First Interaction'
442+
},
443+
MemberTags: {
444+
count: '[Members] # of Tags'
440445
},
441446
Conversations: {
442447
count: '[Conversations] Count',
@@ -447,7 +452,8 @@ const en = {
447452
published: '[Conversations] Published'
448453
},
449454
Tags: {
450-
name: '[Tags] Name'
455+
name: '[Tags] Name',
456+
count: '[Tags] Count'
451457
}
452458
}
453459
},

frontend/src/modules/widget/components/cube/_query_builder/DateRangeSelect.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
>Date Range</label
55
>
66
<el-select
7-
:value="
7+
:model-value="
88
timeDimensions[0] &&
99
dateRangeItems.find(
1010
(o) => o.value === timeDimensions[0].dateRange

frontend/src/modules/widget/components/cube/_query_builder/DimensionSelect.vue

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,10 @@
99
>Dimensions (optional)</label
1010
>
1111
<el-select
12+
v-model="value"
1213
clearable
1314
filterable
14-
:value="
15-
translatedOptions(dimensions).map((i) => i.label)
16-
"
1715
:disabled="measures.length === 0"
18-
@change="(d) => setDimensions([d])"
1916
>
2017
<el-option
2118
v-for="item in translatedOptions(
@@ -106,6 +103,16 @@ export default {
106103
measure.name
107104
].includes(t.name)
108105
})
106+
},
107+
value: {
108+
get() {
109+
return this.translatedOptions(this.dimensions).map(
110+
(i) => i.label
111+
)
112+
},
113+
set(value) {
114+
return this.setDimensions([value])
115+
}
109116
}
110117
}
111118
}

frontend/src/modules/widget/components/cube/_query_builder/GranularitySelect.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
item-value="name"
99
clearable
1010
filterable
11-
:value="
11+
:model-value="
1212
timeDimensions[0] && timeDimensions[0].granularity
1313
"
1414
@change="(g) => handleChange(g)"

frontend/src/modules/widget/components/cube/_query_builder/Limit.vue

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
v-model="value"
66
placeholder="10000"
77
:disabled="disabled"
8-
@change="(v) => $emit('update', v)"
98
></el-input>
109
</div>
1110
</template>
@@ -24,9 +23,14 @@ export default {
2423
}
2524
},
2625
emits: ['update'],
27-
data() {
28-
return {
29-
value: this.limit
26+
computed: {
27+
value: {
28+
get() {
29+
return this.limit
30+
},
31+
set(value) {
32+
this.$emit('update', value)
33+
}
3034
}
3135
}
3236
}

frontend/src/modules/widget/components/cube/_query_builder/MeasureSelect.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<el-select
55
clearable
66
filterable
7-
:value="
7+
:model-value="
88
translatedOptions(measures).map((i) => i.label)
99
"
1010
@change="(m) => setMeasures([m])"

0 commit comments

Comments
 (0)