Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
a50a041
Bump QuestPDF from 2025.7.3 to 2025.7.4
dependabot[bot] Nov 4, 2025
685b98d
closes #
renemadsen Nov 4, 2025
afdf1f8
closes #
renemadsen Nov 4, 2025
436c94e
Fixing the task tracker table.
renemadsen Nov 4, 2025
70d2593
Merge pull request #558 from masudul-tikweb/master
renemadsen Nov 5, 2025
8a772e5
Removing some warnings and code cleanup.
renemadsen Nov 5, 2025
2b62829
Merge branch 'stable' of github.com:microting/eform-backendconfigurat…
renemadsen Nov 5, 2025
9d3516d
Merge branch 'stable'
renemadsen Nov 5, 2025
50be1bc
Fixing properties actions menu.
renemadsen Nov 5, 2025
da42a1a
Adding more calls to actionMenu.
renemadsen Nov 5, 2025
fe1b7a8
Fixing more tests.
renemadsen Nov 5, 2025
7cc543c
Fixing more tests.
renemadsen Nov 5, 2025
84a6fbf
Increasing wait time.
renemadsen Nov 5, 2025
65d9412
Adding more wait time.
renemadsen Nov 5, 2025
d507622
Fixing double tapping issue.
renemadsen Nov 5, 2025
f081422
Adding more clickActionsMenu();
renemadsen Nov 5, 2025
c1d4478
Fixing more tests.
renemadsen Nov 5, 2025
e4caeac
More fixes.
renemadsen Nov 5, 2025
a637f29
More fixes.
renemadsen Nov 6, 2025
ea26b95
Initial plan
Copilot Nov 6, 2025
56d6dd1
Merge pull request #559 from microting/dependabot/nuget/eFormAPI/Plug…
renemadsen Nov 6, 2025
3921a98
Refactor Actions columns to use mat-menu dropdown pattern
Copilot Nov 6, 2025
22324e9
Remove unnecessary 'this' reference in template
Copilot Nov 6, 2025
893181f
Merge pull request #562 from microting/copilot/refactor-actions-table…
renemadsen Nov 6, 2025
38c850c
Merge branch 'stable'
renemadsen Nov 6, 2025
902e876
Fixing missing imports.
renemadsen Nov 6, 2025
3910617
Fixing more tests.
renemadsen Nov 6, 2025
903d064
Initial plan
Copilot Nov 6, 2025
142030a
Refactor BackendConfigurationFiles page object to use indexed ID sele…
Copilot Nov 6, 2025
7cce22a
Merge pull request #564 from microting/copilot/fix-page-objects-dom-f…
renemadsen Nov 6, 2025
463a882
Initial plan
Copilot Nov 6, 2025
cba8e9d
Fix updateEntityList to open action menu before accessing button
Copilot Nov 6, 2025
bedd081
Initial plan
Copilot Nov 6, 2025
1a38920
Fix Cypress test to use Material menu for delete actions
Copilot Nov 6, 2025
94f2306
Disabling alternating colors.
renemadsen Nov 6, 2025
656b7a9
Merge pull request #568 from microting/copilot/fix-cypress-tests-issue
renemadsen Nov 6, 2025
a285a32
Adding missing imports.
renemadsen Nov 6, 2025
173c22f
Merge branch 'stable'
renemadsen Nov 6, 2025
7865047
Merge pull request #566 from microting/copilot/fix-wdio-test-issue
renemadsen Nov 6, 2025
49c07c3
Fixing task tracker.
renemadsen Nov 6, 2025
10e7178
Adding missing translation.
renemadsen Nov 6, 2025
7c8b869
Initial plan
Copilot Nov 7, 2025
347b6c2
Refactor report-table Actions column to use menu dropdown pattern
Copilot Nov 7, 2025
4c2d692
Fix: Remove invalid color attribute from mat-menu-item
Copilot Nov 7, 2025
4271700
Apply same refactoring to components/reports/report-table
Copilot Nov 7, 2025
175bd6b
Changing the icons for menu entries.
renemadsen Nov 7, 2025
6a3c4e4
Merge pull request #570 from microting/copilot/refactor-actions-table…
renemadsen Nov 7, 2025
5139122
Merge branch 'stable'
renemadsen Nov 7, 2025
bb0c59e
closes #
renemadsen Nov 9, 2025
28d504a
closes #
renemadsen Nov 9, 2025
bef732b
closes #
renemadsen Nov 9, 2025
ca1c642
closes #
renemadsen Nov 9, 2025
8b05de8
closes #
renemadsen Nov 9, 2025
e61292a
closes #
renemadsen Nov 9, 2025
f9a01eb
closes #
renemadsen Nov 9, 2025
b2d7b15
Initial plan
Copilot Nov 14, 2025
df0ec73
Update WDIO test to use action menu for plugin activation
Copilot Nov 14, 2025
2917cda
Fix loop indices to start from 1 instead of 0
Copilot Nov 14, 2025
56ff223
Fix index mapping: subtract 1 for HTML element selectors
Copilot Nov 14, 2025
6e980bb
Merge pull request #580 from microting/copilot/update-wdio-tests-acti…
renemadsen Nov 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<PackageReference Include="NSubstitute" Version="5.3.0" />
<PackageReference Include="NUnit" Version="4.4.0" />
<PackageReference Include="NUnit3TestAdapter" Version="5.2.0" />
<PackageReference Include="NUnit.Analyzers" Version="4.11.1">
<PackageReference Include="NUnit.Analyzers" Version="4.11.2">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
<PackageReference Include="NSubstitute" Version="5.3.0" />
<PackageReference Include="NUnit" Version="4.4.0" />
<PackageReference Include="NUnit.Analyzers" Version="4.11.1">
<PackageReference Include="NUnit.Analyzers" Version="4.11.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,15 +219,15 @@
<PackageReference Include="Google.Apis.Sheets.v4" Version="1.70.0.3819" />
<PackageReference Include="HtmlToOpenXml.dll" Version="3.2.8" />
<PackageReference Include="Ical.Net" Version="5.1.1" />
<PackageReference Include="Microting.eForm" Version="9.0.69" />
<PackageReference Include="Microting.EformAngularFrontendBase" Version="9.0.57" />
<PackageReference Include="Microting.eFormApi.BasePn" Version="9.0.61" />
<PackageReference Include="Microting.eForm" Version="9.0.70" />
<PackageReference Include="Microting.EformAngularFrontendBase" Version="9.0.58" />
<PackageReference Include="Microting.eFormApi.BasePn" Version="9.0.62" />
<PackageReference Include="McMaster.NETCore.Plugins" Version="2.0.0" />
<PackageReference Include="Microting.EformBackendConfigurationBase" Version="9.0.3" />
<PackageReference Include="Microting.eFormCaseTemplateBase" Version="8.0.119" />
<PackageReference Include="Microting.ItemsPlanningBase" Version="8.0.119" />
<PackageReference Include="Microting.TimePlanningBase" Version="9.0.62" />
<PackageReference Include="QuestPDF" Version="2025.7.3" />
<PackageReference Include="Microting.EformBackendConfigurationBase" Version="9.0.4" />
<PackageReference Include="Microting.eFormCaseTemplateBase" Version="8.0.120" />
<PackageReference Include="Microting.ItemsPlanningBase" Version="8.0.120" />
<PackageReference Include="Microting.TimePlanningBase" Version="9.0.63" />
<PackageReference Include="QuestPDF" Version="2025.7.4" />
<PackageReference Include="HarfBuzzSharp.NativeAssets.Linux" Version="8.3.1.2" />
<PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="3.119.1" />
<PackageReference Include="Sentry" Version="5.16.2" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ public static async Task<OperationDataResult<List<TaskTrackerModel>>> Index(
.Select(x => new
{
x.PropertyId, x.PlanningId, x.Deadline, x.MicrotingSdkCaseId, x.MicrotingSdkeFormId, x.Id, x.AreaId,
x.PlanningCaseSiteId
x.PlanningCaseSiteId,
x.MovedToExpiredFolder
})
.ToListAsync();

Expand Down Expand Up @@ -289,6 +290,7 @@ public static async Task<OperationDataResult<List<TaskTrackerModel>>> Index(
SdkFolderName =
folderTranslations.FirstOrDefault(x => x.FolderId == planning.SdkFolderId) == null ? "" : folderTranslations.First(x => x.FolderId == planning.SdkFolderId).Name,
CreatedInWizard = areaRuleCreatedInWizard,
MovedToExpiredFolder = compliance.MovedToExpiredFolder
};

if (complianceModel.SdkCaseId == 0 && complianceModel.DeadlineTask < dateTimeNow)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ public static async Task PushToGoogleSheet(Core core, TimePlanningPnDbContext db

// ... existing code ...

SetAlternatingColumnColors(service, googleSheetId, sheetId!.Value, newHeaders.Count, logger);
// SetAlternatingColumnColors(service, googleSheetId, sheetId!.Value, newHeaders.Count, logger);

logger.LogInformation("Headers are already up-to-date.");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#nullable enable
using System;
using System.Collections.Generic;
using System.Globalization;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

#nullable enable
namespace BackendConfiguration.Pn.Infrastructure.Models.Files;

using Microting.eFormApi.BasePn.Infrastructure.Models.Common;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public class TaskTrackerModel
/// <summary>
/// Gets or sets the tags of the task tracker model.
/// </summary>
public List<CommonTagModel> Tags { get; set; }
public List<CommonTagModel> Tags { get; set; }
= [];

/// <summary>
Expand Down Expand Up @@ -130,4 +130,6 @@ public class TaskTrackerModel
public string SdkFolderName { get; set; }

public bool CreatedInWizard { get; set; }

public bool MovedToExpiredFolder { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ await sdkDbContext.FolderTranslations.SingleOrDefaultAsync(x =>

private static async Task<Folder> GetTopFolder(int folderId, MicrotingDbContext dbContext)
{
var result = await dbContext.Folders.FirstOrDefaultAsync(y => y.Id == folderId).ConfigureAwait(false);
var result = await dbContext.Folders.FirstAsync(y => y.Id == folderId).ConfigureAwait(false);
if (result.ParentId != null)
{
result = await GetTopFolder((int)result.ParentId, dbContext).ConfigureAwait(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ public async Task<OperationDataResult<List<PropertyFolderModel>>> GetLinkedFolde
.Where(x => x.Id == propertyId)
.Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
.Where(x => x.FolderId.HasValue)
.Select(x => x.FolderId.Value)
.Select(x => x.FolderId!.Value)
.ToListAsync();

folderIds.AddRange(await backendConfigurationPnDbContext.ProperyAreaFolders
Expand Down Expand Up @@ -655,7 +655,7 @@ public async Task<OperationDataResult<List<PropertyFolderModel>>> GetLinkedFolde
.Where(x => propertyIds.Contains(x.Id))
.Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
.Where(x => x.FolderId.HasValue)
.Select(x => x.FolderId.Value)
.Select(x => x.FolderId!.Value)
.ToListAsync();

folderIds.AddRange(await backendConfigurationPnDbContext.ProperyAreaFolders
Expand Down Expand Up @@ -748,6 +748,12 @@ public async Task<OperationDataResult<List<CommonDictionaryModel>>> GetLinkedSit
//.Where(x => propertyIds.Contains(x.PropertyId))
.Where(x => x.WorkflowState != Constants.WorkflowStates.Removed);

// if propertyIds is null or empty return an empty list
if (propertyIds == null || !propertyIds.Any())
{
return new OperationDataResult<List<CommonDictionaryModel>>(true, new List<CommonDictionaryModel>());
}

if (propertyIds.Any())
{
query = query.Where(x => propertyIds.Contains(x.PropertyId));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,38 @@ describe('Area rules type 1', () => {
cy.wait(500);

cy.get('.cdk-row').should('have.length', 1);
cy.get('.cdk-row .cdk-column-actions .deleteBtn.mat-warn').first().click();
// Open the action menu
cy.get('.task-actions')
.first()
.find('#actionMenu')
.should('be.visible')
.click({ force: true });

// Click the Delete Task button inside the opened menu
cy.get('.cdk-overlay-container')
.find('[id^=deleteTaskBtn]')
.should('be.visible')
.first()
.click({ force: true });

cy.get('#taskWizardDeleteCancelBtn').click();
cy.wait(500);
cy.get('.cdk-row').should('have.length', 1);

cy.get('.cdk-row .cdk-column-actions .deleteBtn.mat-warn').first().click();
// Open the action menu again
cy.get('.task-actions')
.first()
.find('#actionMenu')
.should('be.visible')
.click({ force: true });

// Click the Delete Task button inside the opened menu
cy.get('.cdk-overlay-container')
.find('[id^=deleteTaskBtn]')
.should('be.visible')
.first()
.click({ force: true });

cy.get('#taskWizardDeleteDeleteBtn').click();
cy.wait(500);
cy.get('.cdk-row').should('not.exist');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,14 @@ export class BackendConfigurationAreaRulesPage extends Page {
}

public async updateEntityList() {
// Open the action menu first (required for type 3 area rules where the button is in a dropdown)
await browser.pause(1000);
const actionMenu = await $$('#actionMenu')[0];
await actionMenu.waitForDisplayed({ timeout: 40000 });
await actionMenu.waitForClickable({ timeout: 40000 });
await actionMenu.click();
await browser.pause(1000);

const ele = await $(`.updateEntityList`);
await ele.waitForDisplayed({ timeout: 40000 });
await ele.waitForClickable({ timeout: 40000 });
Expand Down Expand Up @@ -333,7 +341,9 @@ export class BackendConfigurationAreaRulesPage extends Page {
} else {
await (await this.entityListSaveBtn()).click();
}
await (await this.updateEntityList()).waitForClickable({ timeout: 40000 })
// Wait for the action menu button to be clickable again (instead of opening the menu)
const actionMenu = await $$('#actionMenu')[0];
await actionMenu.waitForClickable({ timeout: 40000 });
}

public async editEntityItem(index: number, newName: string, clickCancel = false) {
Expand Down Expand Up @@ -466,6 +476,7 @@ export class AreaRuleRowObject {
}

public async delete(clickCancel = false, waitCreateBtn = true) {
// await this.clickActionsMenu();
if (this.deleteRuleBtn) {
await this.openDeleteModal();
await this.closeDeleteModal(clickCancel, waitCreateBtn);
Expand Down Expand Up @@ -505,10 +516,17 @@ export class AreaRuleRowObject {
clickCancel = false,
waitCreateBtn = true
) {
// await this.clickActionsMenu();
await this.openEditModal(areaRule);
await this.closeEditModal(clickCancel, waitCreateBtn);
}

private async clickActionsMenu() {
await browser.pause(1000);
await $$('#actionMenu')[0].click();
await browser.pause(1000);
}

public async openEditModal(areaRule: AreaRuleCreateUpdate) {
await this.editRuleBtn.click();
await browser.pause(500);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,10 +283,17 @@ export class FileRowObject {
}

public async delete(clickCancel = false) {
await this.clickActionsMenu();
await this.openDeleteModal();
await this.closeDeleteModal(clickCancel);
}

private async clickActionsMenu() {
await browser.pause(1000);
await $$('#actionMenu')[0].click();
await browser.pause(1000);
}

public async openDeleteModal() {
await this.deleteFileBtn.click();
await (
Expand All @@ -310,6 +317,7 @@ export class FileRowObject {
}

public async editFile(fileEdit: BackendFileEdit, clickCancel = false) {
await this.clickActionsMenu();
await this.openEditModal(fileEdit);
await this.closeEditModal(clickCancel);
if (fileEdit.tags && fileEdit.tags.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,8 +268,6 @@ export class FileRowObject {
constructor() {
}

public row: WebdriverIO.Element;
public checkbox: WebdriverIO.Element;
public id: number;
public createDate: string;
public fileName: string;
Expand All @@ -282,45 +280,32 @@ export class FileRowObject {

public async getRow(rowNum: number): Promise<FileRowObject> {
rowNum = rowNum - 1;
this.row = (await $$('tbody > tr'))[rowNum];
if (this.row) {
this.checkbox = await this.row.$('.mat-column-select .column-select');
this.id = +await (await this.row.$('.mat-column-id span')).getText();
this.createDate = await (await this.row.$('.mat-column-createDate span')).getText();
this.fileName = await (await this.row.$('.mat-column-fileName span')).getText();
const properties = await this.row.$$('.mat-column-property mat-chip');
this.properties = [];
for (let i = 0; i < properties.length; i++) {
const text = await properties[i].getText();
this.properties.push(text.toString());
}
// if (properties.length > 0) {
// properties[properties.length - 1] = properties[properties.length - 1].replace('edit', ''); // delete button
// this.properties = properties
// .filter(x => x) // delete empty strings
// .map(x => x.replaceAll('\n', '')); // delete enters
// }
const tags = await this.row.$$('.mat-column-tags mat-chip');
this.tags = [];
for (let i = 0; i < tags.length; i++) {
const text = await tags[i].getText();
this.tags.push(text.toString());
}
// if (tags.length > 0) {
// // tags[tags.length - 1] = tags[tags.length - 1].replace('edit', ''); // delete button
// this.tags = tags
// //.filter(x => x.te) // delete empty strings
// .map(x => (await x.getText()).replaceAll('\n', '')); // delete enters
// }
this.editTagsBtn = await this.row.$('.mat-column-tags button');
this.viewPDFBtn = await this.row.$$('.mat-column-actions button')[0];
this.editFileNameBtn = await this.row.$$('.mat-column-actions button')[1];
this.deleteFileBtn = await this.row.$$('.mat-column-actions button')[2];
this.id = +await (await $('#fileId-'+rowNum)).getText();
this.createDate = await (await $('#fileCreateDate-'+rowNum)).getText();
this.fileName = await (await $('#fileName-'+rowNum)).getText();
// Get properties from mat-chip elements - need to use row context since it's dynamic
const row = (await $$('tbody > tr'))[rowNum];
const properties = await row.$$('.mat-column-property mat-chip');
this.properties = [];
for (let i = 0; i < properties.length; i++) {
const text = await properties[i].getText();
this.properties.push(text.toString());
}
const tags = await row.$$('.mat-column-tags mat-chip');
this.tags = [];
for (let i = 0; i < tags.length; i++) {
const text = await tags[i].getText();
this.tags.push(text.toString());
}
this.editTagsBtn = await $('#editTagsBtn-'+rowNum);
this.viewPDFBtn = await $('#viewPdfBtn-'+rowNum);
this.editFileNameBtn = await $('#editFilenameBtn-'+rowNum);
this.deleteFileBtn = await $('#deleteFileBtn-'+rowNum);
return this;
}

public async delete(clickCancel = false) {
await this.clickActionsMenu();
await this.openDeleteModal();
await this.closeDeleteModal(clickCancel);
}
Expand Down Expand Up @@ -348,13 +333,20 @@ export class FileRowObject {
}

public async editFile(fileEdit: BackendFileEdit, clickCancel = false) {
await this.clickActionsMenu();
await this.openEditModal(fileEdit);
await this.closeEditModal(clickCancel);
if (fileEdit.tags && fileEdit.tags.length > 0) {
await this.editTags(fileEdit.tags);
}
}

private async clickActionsMenu() {
await browser.pause(1000);
await $$('#actionMenu')[0].click();
await browser.pause(1000);
}

public async openEditModal(fileEdit: BackendFileEdit) {
await this.editFileNameBtn.click();
await (
Expand Down
Loading
Loading