Skip to content

Commit dbc254e

Browse files
committed
wip
1 parent 327af1e commit dbc254e

File tree

7 files changed

+126
-97
lines changed

7 files changed

+126
-97
lines changed

cypress.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ const { defineConfig } = require("cypress");
22

33
module.exports = defineConfig({
44
projectId: 'm2n47r',
5+
viewportWidth: 1000,
6+
viewportHeight: 600,
57
e2e: {
68
experimentalStudio: true,
79
setupNodeEvents(on, config) {

cypress/e2e/300_activities.cy.js

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ describe('activities page', () => {
1313
cy.get('div#default a[href*="activity/edit/default"]').click()
1414
})
1515

16-
it('creates a new activity', () => {
16+
it('creates a new activity, then deletes it', () => {
1717
cy.visit('http://localhost:8080')
1818
cy.get('.v-carousel').should('exist')
1919
cy.get('button.v-app-bar-nav-icon').should('exist')
@@ -24,30 +24,27 @@ describe('activities page', () => {
2424
cy.get('a.v-btn[href*="activity/new"]').click()
2525
cy.get('input#name').should('exist')
2626
cy.get('input#desc').should('exist')
27-
cy.get('input#name').type("test-activity-name")
28-
cy.get('input#desc').type("Test activity description")
27+
cy.get('input#name').type("test-e2e-activity-name")
28+
cy.get('input#desc').type("Test e2e activity description")
2929
cy.get('button#toolbox').should('exist')
3030
cy.get('button#toolbox').click()
3131
cy.get('button#add_category').should('exist')
3232
cy.get('button#add_category_all').should('exist')
3333
cy.get('button#add_category_all').click()
3434
cy.get('button#activity_save').should('exist')
3535
cy.get('button#activity_save').click()
36-
})
37-
38-
it('deletes an existing activity', () => {
3936
cy.visit('http://localhost:8080')
4037
cy.get('.v-carousel').should('exist')
4138
cy.get('button.v-app-bar-nav-icon').should('exist')
4239
cy.get('button.v-app-bar-nav-icon').click()
4340
cy.get('a[href*="activity/manage"]').click()
4441
cy.get('#app').click()
45-
cy.get('div#test-activity-name').find('i.mdi-delete').should("exist")
46-
cy.get('div#test-activity-name').find('i.mdi-delete').click()
42+
cy.get('div#test-e2e-activity-name').find('i.mdi-delete').should("exist")
43+
cy.get('div#test-e2e-activity-name').find('i.mdi-delete').click()
4744
cy.get('button#confirmDeleteDlg_ok').should("exist")
48-
cy.get('button#confirmDeleteDlg_ok').click({ force: true, multiple: true })
45+
cy.get('button#confirmDeleteDlg_ok').click(); //{ force: true, multiple: true })
4946
})
50-
47+
5148
it('creates activity, open default view', () => {
5249
cy.visit('http://localhost:8080')
5350
cy.get('.v-carousel').should('exist')
@@ -80,7 +77,7 @@ describe('activities page', () => {
8077
cy.get('a.v-list-item[href*="activity/manage"]').click()
8178
cy.get('#app').click()
8279
cy.get('div#test-default-activity-name').find('i.mdi-delete').click()
83-
cy.get('button#confirmDeleteDlg_ok').click({ force: true, multiple: true })
80+
cy.get('button#confirmDeleteDlg_ok').click(); //{ force: true, multiple: true })
8481
})
8582

8683
it('creates activity, define specific buttons, verify', () => {
@@ -103,8 +100,8 @@ describe('activities page', () => {
103100
cy.get('#button_index_2').find('button.remove').click()
104101
cy.get('#button_index_1').find('button.remove').click()
105102
cy.get('button#toolbox').click()
106-
cy.get('.blockly-toolbox-editor').find('#blockly-9').click()
107-
cy.get('.blocklyDraggable').click({ force: true, multiple: true })
103+
//cy.get('.blockly-toolbox-editor').find('#blockly-9').click()
104+
//cy.get('.blocklyDraggable').click(); //{ force: true, multiple: true })
108105
cy.get('button#activity_save').click()
109106
cy.visit('http://localhost:8080')
110107
cy.get('.v-carousel').should('exist')
@@ -124,7 +121,7 @@ describe('activities page', () => {
124121
cy.get('a.v-list-item[href*="activity/manage"]').click()
125122
cy.get('#app').click()
126123
cy.get('div#test-basic-activity-name').find('i.mdi-delete').click()
127-
cy.get('button#confirmDeleteDlg_ok').click({ force: true, multiple: true })
124+
cy.get('button#confirmDeleteDlg_ok').click(); //{ force: true, multiple: true })
128125
})
129126

130127
it('creates activity, define specific fonts, verify', () => {
@@ -141,8 +138,8 @@ describe('activities page', () => {
141138
cy.get('#card_font_ui').find('input[value*="opensans"]').click()
142139
cy.get('#card_font_editor').find('input[value*="robotomono"]').click()
143140
cy.get('button#toolbox').click()
144-
cy.get('.blockly-toolbox-editor').find('#blockly-3').click()
145-
cy.get('.blocklyDraggable').click({ force: true, multiple: true })
141+
cy.get('.blockly-toolbox-editor').find('.blocklyToolboxCategory').first().children().first().click()
142+
cy.get('.blocklyDraggable').first().click(); //{ force: true, multiple: true })
146143
cy.get('button#activity_save').click()
147144
cy.visit('http://localhost:8080')
148145
cy.get('.v-carousel').should('exist')
@@ -158,7 +155,7 @@ describe('activities page', () => {
158155
cy.get('a.v-list-item[href*="activity/manage"]').click()
159156
cy.get('#app').click()
160157
cy.get('div#test-font-activity-name').find('i.mdi-delete').click()
161-
cy.get('button#confirmDeleteDlg_ok').click({ force: true, multiple: true })
158+
cy.get('button#confirmDeleteDlg_ok').click(); //{ force: true, multiple: true })
162159
})
163160

164161
it('creates activity, define specific toolbox, verify', () => {
@@ -177,9 +174,9 @@ describe('activities page', () => {
177174
cy.get('button#add_category').click()
178175
cy.get('input#category_name').type("Test category")
179176
cy.get('button#save_category').click()
180-
cy.get('.v-list-item-title').contains('Test category').click({ force: true })
181-
cy.get('.blockly-toolbox-editor').find('#blockly-1').click({ force: true })
182-
cy.get('.blocklyDraggable').click({ force: true, multiple: true })
177+
cy.get('.v-list-item-title').contains('Test category').click(); //{ force: true })
178+
//cy.get('.blockly-toolbox-editor').find('#blockly-1').click(); //{ force: true })
179+
//cy.get('.blocklyDraggable').click(); //{ force: true, multiple: true })
183180
cy.get('button#activity_save').click()
184181
cy.visit('http://localhost:8080')
185182
cy.get('.v-carousel').should('exist')
@@ -197,6 +194,6 @@ describe('activities page', () => {
197194
cy.get('a.v-list-item[href*="activity/manage"]').click()
198195
cy.get('#app').click()
199196
cy.get('div#test-spec-activity-name').find('i.mdi-delete').click()
200-
cy.get('button#confirmDeleteDlg_ok').click({ force: true, multiple: true })
201-
})
197+
cy.get('button#confirmDeleteDlg_ok').click(); //{ force: true, multiple: true })
198+
})
202199
})

cypress/e2e/400_program.cy.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ describe('load homepage', () => {
137137
cy.get('a.v-list-item[href*="/program"]').click()
138138
cy.get('#app').click()
139139
cy.get('.blocklyToolboxContents').children().first().children().first().click({ force: true })
140-
cy.get('.blocklyDraggable').click({ force: true, multiple: true })
140+
cy.get('.blocklyDraggable').first().click(); //{ force: true, multiple: true })
141141
cy.get('button#toggleSaveAs').click()
142142
cy.get('#card_program_save_as').find('#program_save_as_name').type('test_sonars')
143143
cy.get('#card_program_save_as').find('.ok').click()

package.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,29 @@
4141
},
4242
"devDependencies": {
4343
"@cypress/code-coverage": "^3.11.0",
44-
"vite-plugin-istanbul": "^5.0.0",
45-
"@vitejs/plugin-vue": "^4.3.3",
4644
"@types/jsdom": "^20.0.1",
4745
"@types/node": "^18.11.12",
4846
"@types/webfontloader": "^1.6.35",
49-
"stylus": "0.59.0",
47+
"@vitejs/plugin-vue": "^4.3.3",
48+
"@vue/eslint-config-typescript": "^11.0.0",
49+
"@vue/test-utils": "^2.2.6",
50+
"@vue/tsconfig": "^0.1.3",
5051
"cypress": "^12.17.4",
5152
"eslint": "^8.22.0",
5253
"eslint-config-airbnb-base": "^15.0.0",
5354
"eslint-plugin-import": "^2.25.4",
5455
"eslint-plugin-vue": "^9.3.0",
55-
"vite": "^4.4.9",
56-
"vite-plugin-static-copy": "^0.13.1",
57-
"vite-plugin-vuetify": "^1.0.2",
58-
"vue-cli-plugin-vuetify": "~2.5.4",
59-
"@vue/eslint-config-typescript": "^11.0.0",
60-
"@vue/test-utils": "^2.2.6",
61-
"@vue/tsconfig": "^0.1.3",
6256
"jsdom": "^20.0.3",
6357
"npm-run-all": "^4.1.5",
6458
"prettier": "^2.7.1",
59+
"stylus": "0.59.0",
6560
"typescript": "~4.7.4",
61+
"vite": "^4.4.9",
62+
"vite-plugin-istanbul": "^5.0.0",
63+
"vite-plugin-static-copy": "^0.13.1",
64+
"vite-plugin-vuetify": "^1.0.2",
6665
"vitest": "^0.25.6",
66+
"vue-cli-plugin-vuetify": "~2.5.4",
6767
"vue-tsc": "^1.0.12"
6868
}
6969
}

src/common/coderbot.js

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,18 @@ class CoderBot {
154154
async loadSettings() {
155155
const result = await this.$axios.get(`${this.CB}/settings`);
156156
// handle success
157+
const data = this.settingsBackend2FrontEnd(result.data);
158+
159+
this.$store.commit('setSettings', data);
160+
}
161+
162+
settingsBackend2FrontEnd(result) {
157163
const data = {};
158-
const remoteConfig = result.data;
164+
const remoteConfig = result;
159165
const remoteSettings = remoteConfig.settings;
160-
data.power = [remoteConfig.move_power_angle_1, remoteConfig.move_power_angle_2, remoteConfig
161-
.move_power_angle_3
162-
];
166+
data.move_power_angle_1 = remoteSettings.move_power_angle_1;
167+
data.move_power_angle_2 = remoteSettings.move_power_angle_2;
168+
data.move_power_angle_3 = remoteSettings.move_power_angle_3;
163169
data.ctrl_hud_image = remoteSettings.ctrl_hud_image;
164170
data.cv_image_factor = remoteSettings.cv_image_factor;
165171
data.camera_color_object_size_max = remoteSettings.camera_color_object_size_max;
@@ -202,20 +208,26 @@ class CoderBot {
202208
data.movementUseEncoder = remoteSettings.movement_use_encoder;
203209
data.locale = remoteSettings.locale;
204210

205-
const remoteNetwork = remoteConfig.network
211+
const remoteNetwork = remoteConfig.network;
206212
data.wifiMode = remoteNetwork.wifi_mode;
207213
data.wifiSSID = remoteNetwork.wifi_ssid;
208214
data.wifiPsw = remoteNetwork.wifi_psk;
209215

210-
const remoteCloud = remoteConfig.cloud
216+
const remoteCloud = remoteConfig.cloud;
211217
data.syncModes = remoteCloud.sync_modes;
212218
data.syncPeriod = remoteCloud.sync_period;
213-
214-
this.$store.commit('setSettings', data);
219+
return data;
215220
}
216221

217222
async saveSettings(settings) {
218223
/* eslint-enable */
224+
const { legacySettings, config } = this.settingsFrontend2Backend(settings);
225+
this.$store.commit('setSettings', legacySettings);
226+
let response = await this.$axios.put(`${this.CB}/settings`, config);
227+
return this.settingsBackend2FrontEnd(response.data);
228+
}
229+
230+
settingsFrontend2Backend(settings) {
219231
const legacySettings = {
220232
ctrl_hud_image: settings.ctrl_hud_image,
221233
cv_image_factor: settings.cv_image_factor,
@@ -228,9 +240,9 @@ class CoderBot {
228240
camera_path_object_size_max: settings.camera_path_object_size_max,
229241
camera_path_object_size_min: settings.camera_path_object_size_min,
230242
cnn_default_model: settings.cnn_default_model,
231-
move_power_angle_1: settings.power[0],
232-
move_power_angle_2: settings.power[1],
233-
move_power_angle_3: settings.power[2],
243+
move_power_angle_1: settings.move_power_angle_1,
244+
move_power_angle_2: settings.move_power_angle_2,
245+
move_power_angle_3: settings.move_power_angle_3,
234246
button_func: settings.btnFun,
235247
move_motor_trim: settings.trimFactor,
236248
motor_min_power: settings.motorMinPower,
@@ -253,6 +265,9 @@ class CoderBot {
253265
ctrl_fw_speed: settings.ctrlFwdSpeed,
254266
ctrl_tr_elapse: settings.ctrlTurnElapse,
255267
ctrl_tr_speed: settings.ctrlTurnSpeed,
268+
move_power_angle_1: settings.move_power_angle_1,
269+
move_power_angle_2: settings.move_power_angle_2,
270+
move_power_angle_3: settings.move_power_angle_3,
256271
audio_volume_level: settings.audioLevel,
257272
admin_password: settings.adminPassword,
258273
hardware_version: settings.hardwareVersion,
@@ -276,9 +291,7 @@ class CoderBot {
276291
network: networkSettings,
277292
cloud: cloudSettings
278293
};
279-
this.$store.commit('setSettings', legacySettings);
280-
console.log(legacySettings);
281-
return this.$axios.put(`${this.CB}/settings`, config);
294+
return { legacySettings, config };
282295
}
283296

284297
reset() {

src/components/ActivityList.vue

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -39,40 +39,8 @@
3939
</v-list-item-subtitle>
4040
</div>
4141
<template v-slot:append>
42-
<v-btn color="grey" variant="text" v-if="activity.kind!='stock'" ripple @click="confirmDeleteDlg = true">
42+
<v-btn color="grey" variant="text" v-if="activity.kind!='stock'" ripple @click="this.activity = activity; confirmDeleteDlg = true">
4343
<v-icon icon="mdi-delete"></v-icon>
44-
<v-row justify="center">
45-
<v-dialog
46-
v-model="confirmDeleteDlg"
47-
persistent
48-
max-width="290"
49-
>
50-
<v-card>
51-
<v-card-title class="text-h5">
52-
{{ $t("message.activity_list_delete_confirm_title") }}
53-
</v-card-title>
54-
<v-card-text>{{ $t("message.activity_list_delete_confirm_text") }}</v-card-text>
55-
<v-card-actions>
56-
<v-spacer></v-spacer>
57-
<v-btn
58-
color="green darken-1"
59-
text
60-
@click="confirmDeleteDlg = false"
61-
>
62-
{{ $t("message.cancel") }}
63-
</v-btn>
64-
<v-btn
65-
color="green darken-1"
66-
text
67-
@click="confirmDeleteDlg = false; deleteActivity(activity.name)"
68-
id="confirmDeleteDlg_ok"
69-
>
70-
{{ $t("message.ok") }}
71-
</v-btn>
72-
</v-card-actions>
73-
</v-card>
74-
</v-dialog>
75-
</v-row>
7644
</v-btn>
7745
<v-btn variant="text" ripple :href="'#/activity/edit/'+activity.name">
7846
<v-icon icon="mdi-pencil"></v-icon>
@@ -93,6 +61,38 @@
9361
</v-card>
9462
</v-col>
9563
</v-row>
64+
<v-row justify="center">
65+
<v-dialog
66+
v-model="confirmDeleteDlg"
67+
persistent
68+
max-width="290"
69+
>
70+
<v-card>
71+
<v-card-title class="text-h5">
72+
{{ $t("message.activity_list_delete_confirm_title") }}
73+
</v-card-title>
74+
<v-card-text>{{ $t("message.activity_list_delete_confirm_text") }}</v-card-text>
75+
<v-card-actions>
76+
<v-spacer></v-spacer>
77+
<v-btn
78+
color="green darken-1"
79+
text
80+
@click="confirmDeleteDlg = false"
81+
>
82+
{{ $t("message.cancel") }}
83+
</v-btn>
84+
<v-btn
85+
color="green darken-1"
86+
text
87+
@click="confirmDeleteDlg = false; deleteActivity(activity.name)"
88+
id="confirmDeleteDlg_ok"
89+
>
90+
{{ $t("message.ok") }}
91+
</v-btn>
92+
</v-card-actions>
93+
</v-card>
94+
</v-dialog>
95+
</v-row>
9696
</v-container>
9797
</v-main>
9898
</v-app>
@@ -138,6 +138,7 @@ export default defineComponent({
138138
drawer: null,
139139
source: null,
140140
confirmDeleteDlg: null,
141+
activity: null,
141142
};
142143
},
143144
});

0 commit comments

Comments
 (0)