Skip to content

Commit 70d2593

Browse files
authored
Merge pull request #558 from masudul-tikweb/master
Table changes
2 parents afdf1f8 + 9b89c21 commit 70d2593

File tree

17 files changed

+436
-204
lines changed

17 files changed

+436
-204
lines changed

eform-client/cypress/e2e/plugins/backend-configuration-pn/BackendConfigurationProperties.page.ts

Lines changed: 63 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class BackendConfigurationPropertiesPage extends PageWithNavbarPage {
1616
this.backendConfigurationPnPropertiesButton().then(($ele) => {
1717
if (!$ele.is(':visible')) {
1818
this.backendConfigurationPnButton().click();
19+
1920
}
2021
});
2122
this.backendConfigurationPnPropertiesButton().click();
@@ -227,6 +228,10 @@ class BackendConfigurationPropertiesPage extends PageWithNavbarPage {
227228
cy.get('app-properties-table .mat-mdc-row').then(rows => {
228229
const rowNum = rows.length;
229230
cy.log(rowNum.toString());
231+
if (rowNum === 0) {
232+
cy.log('No properties to delete.');
233+
return;
234+
}
230235

231236
for (let i = rowNum; i > 0; i--) {
232237
cy.intercept('POST', '**/api/backend-configuration-pn/properties/index').as('getProperties');
@@ -269,28 +274,79 @@ export class PropertyRowObject {
269274
editPropertyBtn: () => Cypress.Chainable<JQuery<HTMLElement>>;
270275
deleteBtn: () => Cypress.Chainable<JQuery<HTMLElement>>;
271276

277+
272278
getRow(rowNum: number) {
273-
const row = () => cy.get('.mat-mdc-row').eq(rowNum - 1);
279+
const row = () => cy.get('.mat-mdc-row').should('exist').eq(rowNum - 1);
274280
this.row = row();
275-
this.viewAreasBtn = () => row().find('[id^=showPropertyAreasBtn]').should('be.visible').should('be.enabled');
276-
this.editPropertyBtn = () => row().find('[id^=editPropertyBtn]').should('be.visible').should('be.enabled');
277-
this.deleteBtn = () => row().find('[id^=deletePropertyBtn]').should('be.visible').should('be.enabled');
281+
282+
row()
283+
.should('exist')
284+
.then($r => {
285+
if ($r.length === 0) {
286+
cy.log(`No row found at index ${rowNum} — skipping action menu click.`);
287+
return;
288+
}
289+
290+
const $actionCell = $r.find('[id^="action-items"]').filter(':visible').first();
291+
292+
if ($actionCell.length > 0) {
293+
cy.wrap($actionCell)
294+
.find('#actionMenu', { timeout: 500 })
295+
.filter(':visible')
296+
.first()
297+
.should('be.visible')
298+
.click({ force: true });
299+
} else {
300+
cy.log(`Row ${rowNum} has no [id^="action-items"], skipping click.`);
301+
return;
302+
}
303+
});
304+
305+
this.viewAreasBtn = () => cy.get('[id^=showPropertyAreasBtn]').should('be.visible').should('be.enabled');
306+
this.editPropertyBtn = () => cy.get('[id^=editPropertyBtn]').should('be.visible').should('be.enabled');
307+
this.deleteBtn = () => cy.get('[id^=deletePropertyBtn]').should('be.visible').should('be.enabled');
278308
return this;
279309
}
280310

311+
281312
// find first row with text
282313
getRowByPropertyName(propertyName: string) {
283314
const row = () => cy.get('.mat-mdc-row')
284315
.contains(propertyName) // div
285316
.parent() // met-mdc-cell
286317
.parent(); // mat-mdc-row
287318
this.row = row();
288-
this.viewAreasBtn = () => row().find('[id^=showPropertyAreasBtn]').should('be.visible').should('be.enabled');
289-
this.editPropertyBtn = () => row().find('[id^=editPropertyBtn]').should('be.visible').should('be.enabled');
290-
this.deleteBtn = () => row().find('[id^=deletePropertyBtn]').should('be.visible').should('be.enabled');
319+
320+
321+
row()
322+
.should('exist')
323+
.then($r => {
324+
if ($r.length === 0) {
325+
cy.log(`No row found for property name: ${propertyName}`);
326+
return;
327+
}
328+
329+
const $actionCell = $r.find('[id^="action-items"]');
330+
331+
if ($actionCell.length > 0) {
332+
cy.wrap($actionCell)
333+
.find('#actionMenu', { timeout: 500 })
334+
.filter(':visible')
335+
.should('be.visible')
336+
.click({ force: true });
337+
} else {
338+
cy.log(`No action-items found in row for: ${propertyName}, skipping menu click.`);
339+
return;
340+
}
341+
});
342+
343+
this.viewAreasBtn = () => cy.get('[id^=showPropertyAreasBtn]').should('be.visible').should('be.enabled');
344+
this.editPropertyBtn = () => cy.get('[id^=editPropertyBtn]').should('be.visible').should('be.enabled');
345+
this.deleteBtn = () => cy.get('[id^=deletePropertyBtn]').should('be.visible').should('be.enabled');
291346
return this;
292347
}
293348

349+
294350
goToAreas() {
295351
this.viewAreasBtn().click();
296352
backendConfigurationPropertiesPage.configurePropertyAreasBtn().should('be.visible');

eform-client/cypress/e2e/plugins/backend-configuration-pn/BackendConfigurationPropertyWorkers.page.ts

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,11 +193,34 @@ export class WorkerRowObject {
193193
deleteBtn: Cypress.Chainable<JQuery<HTMLElement>>;
194194

195195
getRow(rowNum: number) {
196-
const row = () => cy.get('.mat-mdc-row').eq(rowNum - 1);
196+
const row = () => cy.get('.mat-mdc-row').should('exist').eq(rowNum - 1);
197197
this.row = row();
198-
this.editAssignmentsBtn = row().find('[id^=editAssignmentsBtn]').should('be.visible').should('be.enabled');
199-
this.editDeviceUserBtn = row().find('[id^=editDeviceUserBtn]').should('be.visible').should('be.enabled');
200-
this.deleteBtn = row().find('[id^=deleteDeviceUserBtn]').should('be.visible').should('be.enabled');
198+
row()
199+
.should('exist')
200+
.then($r => {
201+
if ($r.length === 0) {
202+
cy.log(`No row found at index ${rowNum} — skipping action menu click.`);
203+
return;
204+
}
205+
206+
const $actionCell = $r.find('[id^="action-items"]').first();
207+
208+
if ($actionCell.length > 0) {
209+
cy.wrap($actionCell)
210+
.find('#actionMenu', { timeout: 500 })
211+
.filter(':visible')
212+
.first()
213+
.should('be.visible')
214+
.click({ force: true });
215+
} else {
216+
cy.log(`Row ${rowNum} has no [id^="action-items"], skipping click.`);
217+
return;
218+
}
219+
});
220+
221+
this.editAssignmentsBtn = cy.get('[id^=editAssignmentsBtn]').should('be.visible').should('be.enabled');
222+
this.editDeviceUserBtn = cy.get('[id^=editDeviceUserBtn]').should('be.visible').should('be.enabled');
223+
this.deleteBtn = cy.get('[id^=deleteDeviceUserBtn]').should('be.visible').should('be.enabled');
201224
return this;
202225
}
203226

eform-client/cypress/e2e/plugins/backend-configuration-pn/b/area-rules.t1.spec.cy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ describe('Area rules type 1', () => {
3535
backendConfigurationPropertyWorkersPage.create(workerForCreate);
3636
backendConfigurationPropertiesPage.goToProperties();
3737
const propertyInTable = backendConfigurationPropertiesPage.getRowObjectByName(property.name);
38+
cy.wait(1000);
3839
propertyInTable.goToAreas();
3940
propertyInTable.bindAreasByName([nameArea]);
4041
cy.wait(500);

eform-client/cypress/e2e/plugins/backend-configuration-pn/d/task-wizard.copy.cy.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,20 @@ describe('Area rules type 1', () => {
138138
.invoke('text').should('eq', `${workerForCreate.name} ${workerForCreate.surname}`);
139139

140140
// Copy task
141-
cy.get('.cdk-row .cdk-column-actions .copyBtn').first().click();
141+
// cy.get('.cdk-row .cdk-column-actions .copyBtn').first().click();
142+
cy.get('.task-actions')
143+
.first()
144+
.find('#actionMenu')
145+
.should('be.visible')
146+
.click({ force: true });
147+
148+
// Now click the Copy Task button inside the opened menu
149+
cy.get('.cdk-overlay-container')
150+
.find('[id^=copyTaskBtn]')
151+
.should('be.visible')
152+
.first()
153+
.click({ force: true });
154+
142155
cy.intercept('POST', '**/api/backend-configuration-pn/task-wizard').as('createTask');
143156
cy.get('#createTaskBtn').click();
144157
cy.wait('@createTask', { timeout: 60000 });
@@ -178,7 +191,19 @@ describe('Area rules type 1', () => {
178191

179192
// Copy and set new eform
180193
cy.intercept('GET', '**/api/backend-configuration-pn/properties/get-folder-dtos?**').as('getFolders');
181-
cy.get('.cdk-row .cdk-column-actions .copyBtn').first().click();
194+
// cy.get('.cdk-row .cdk-column-actions .copyBtn').first().click();
195+
cy.get('.task-actions')
196+
.first()
197+
.find('#actionMenu')
198+
.should('be.visible')
199+
.click({ force: true });
200+
201+
// Now click the Copy Task button inside the opened menu
202+
cy.get('.cdk-overlay-container')
203+
.find('[id^=copyTaskBtn]')
204+
.should('be.visible')
205+
.first()
206+
.click({ force: true });
182207
cy.intercept('POST', '**/api/backend-configuration-pn/task-wizard').as('createTask');
183208
selectValueInNgSelector('#createTemplateSelector', editedTask.eformName, true);
184209
cy.get('#createTaskBtn').click();

eform-client/cypress/e2e/plugins/backend-configuration-pn/g/task-wizard.edit-assignment.spec.cy.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,19 @@ describe('Area rules type 1', () => {
154154
cy.get('#backend-configuration-pn-task-wizard').click();
155155
cy.intercept('GET', '**/api/backend-configuration-pn/properties/get-folder-dtos?**').as('getFolders');
156156
cy.intercept('POST', '**/api/templates/index').as('getTemplates');
157-
cy.get('.editBtn').click();
157+
// cy.get('.editBtn').click();
158+
cy.get('[id^=action-items]')
159+
.first()
160+
.find('#actionMenu')
161+
.should('be.visible')
162+
.click({ force: true });
163+
164+
// Now click the Copy Task button inside the opened menu
165+
cy.get('.cdk-overlay-container')
166+
.find('[id^=editTaskBtn]')
167+
.should('be.visible')
168+
.first()
169+
.click({ force: true });
158170
cy.wait('@getFolders', { timeout: 60000 });
159171
cy.wait('@getTemplates', { timeout: 60000 });
160172
//cy.get('.editBtn > .mat-mdc-button-touch-target').click();
@@ -174,7 +186,19 @@ describe('Area rules type 1', () => {
174186
cy.get('#backend-configuration-pn-task-wizard').click();
175187
cy.intercept('GET', '**/api/backend-configuration-pn/properties/get-folder-dtos?**').as('getFolders');
176188
cy.intercept('POST', '**/api/templates/index').as('getTemplates');
177-
cy.get('.editBtn').click();
189+
// cy.get('.editBtn').click();
190+
cy.get('[id^=action-items]')
191+
.first()
192+
.find('#actionMenu')
193+
.should('be.visible')
194+
.click({ force: true });
195+
196+
// Now click the Copy Task button inside the opened menu
197+
cy.get('.cdk-overlay-container')
198+
.find('[id^=editTaskBtn]')
199+
.should('be.visible')
200+
.first()
201+
.click({ force: true });
178202
cy.wait('@getFolders', { timeout: 60000 });
179203
cy.wait('@getTemplates', { timeout: 60000 });
180204
//cy.get('.editBtn > .mat-mdc-button-touch-target').click();

eform-client/cypress/e2e/plugins/backend-configuration-pn/g/task-wizard.edit-frequency.spec.cy.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,19 @@ describe('Area rules type 1', () => {
158158
cy.wait('@createFolder', { timeout: 60000 });
159159
cy.wait(1000);
160160
cy.get('#backend-configuration-pn-task-wizard').scrollIntoView().click();
161-
cy.get('.cdk-row .cdk-column-actions .editBtn').first().click();
161+
// cy.get('.cdk-row .cdk-column-actions .editBtn').first().click();
162+
cy.get('[id^=action-items]')
163+
.first()
164+
.find('#actionMenu')
165+
.should('be.visible')
166+
.click({ force: true });
167+
168+
// Now click the Copy Task button inside the opened menu
169+
cy.get('.cdk-overlay-container')
170+
.find('[id^=editTaskBtn]')
171+
.should('be.visible')
172+
.first()
173+
.click({ force: true });
162174
// // change task
163175
cy.get('#updateTaskStatusToggle').click();
164176
cy.get('#updateTaskBtn').click();
@@ -181,7 +193,19 @@ describe('Area rules type 1', () => {
181193
.invoke('text')
182194
.should('eq', `${workerForCreate.name} ${workerForCreate.surname}`);
183195

184-
cy.get('.cdk-row .cdk-column-actions .editBtn').first().click();
196+
// cy.get('.cdk-row .cdk-column-actions .editBtn').first().click();
197+
cy.get('[id^=action-items]')
198+
.first()
199+
.find('#actionMenu')
200+
.should('be.visible')
201+
.click({ force: true });
202+
203+
// Now click the Copy Task button inside the opened menu
204+
cy.get('.cdk-overlay-container')
205+
.find('[id^=editTaskBtn]')
206+
.should('be.visible')
207+
.first()
208+
.click({ force: true });
185209
cy.intercept('GET', '**/api/backend-configuration-pn/properties/get-folder-dtos?**').as('getFolders');
186210
// cy.get('#updateProperty').click();
187211
// //selectValueInNgSelectorNoSelector(`${property2.cvrNumber} - ${property2.chrNumber} - ${property2.name}`);

eform-client/cypress/e2e/plugins/backend-configuration-pn/g/task-wizard.edit.spec.cy.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,19 @@ describe('Area rules type 1', () => {
156156
cy.get('#folderSaveBtn').click();
157157
cy.wait(1000);
158158
cy.get('#backend-configuration-pn-task-wizard').scrollIntoView().click();
159-
cy.get('.cdk-row .cdk-column-actions .editBtn').first().click();
159+
// cy.get('.cdk-row .cdk-column-actions .editBtn').first().click();
160+
cy.get('.task-actions')
161+
.first()
162+
.find('#actionMenu')
163+
.should('be.visible')
164+
.click({ force: true });
165+
166+
// Now click the Edit Task button inside the opened menu
167+
cy.get('.cdk-overlay-container')
168+
.find('[id^=editTaskBtn]')
169+
.should('be.visible')
170+
.first()
171+
.click({ force: true });
160172
// // change task
161173
cy.get('#updateTaskStatusToggle').click();
162174
cy.get('#updateTaskBtn').click();
@@ -179,7 +191,19 @@ describe('Area rules type 1', () => {
179191
.invoke('text')
180192
.should('eq', `${workerForCreate.name} ${workerForCreate.surname}`);
181193

182-
cy.get('.cdk-row .cdk-column-actions .editBtn').first().click();
194+
// cy.get('.cdk-row .cdk-column-actions .editBtn').first().click();
195+
cy.get('.task-actions')
196+
.first()
197+
.find('#actionMenu')
198+
.should('be.visible')
199+
.click({ force: true });
200+
201+
// Now click the Edit Task button inside the opened menu
202+
cy.get('.cdk-overlay-container')
203+
.find('[id^=editTaskBtn]')
204+
.should('be.visible')
205+
.first()
206+
.click({ force: true });
183207
cy.intercept('GET', '**/api/backend-configuration-pn/properties/get-folder-dtos?**').as('getFolders');
184208
// cy.get('#updateProperty').click();
185209
// //selectValueInNgSelectorNoSelector(`${property2.cvrNumber} - ${property2.chrNumber} - ${property2.name}`);

eform-client/src/app/plugins/modules/backend-configuration-pn/backend-configuration-pn.module.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ import {
6060
taskWizardReducer,
6161
taskWorkerAssignmentReducer,
6262
} from './state';
63+
import {MatMenu, MatMenuItem, MatMenuTrigger} from "@angular/material/menu";
6364

6465

6566
@NgModule({
@@ -103,6 +104,9 @@ import {
103104
taskWizardState: taskWizardReducer,
104105
taskWorkerAssignmentState: taskWorkerAssignmentReducer,
105106
},),
107+
MatMenu,
108+
MatMenuTrigger,
109+
MatMenuItem,
106110
],
107111
declarations: [
108112
BackendConfigurationPnLayoutComponent,

0 commit comments

Comments
 (0)