Base solution for your next web application

Activities of "dmux"

I am trying to get started with the MAUI project so I can build out the mobile interface for my project. I have created a ProxyAppService which inherits from my AppService interface, but the DependencyResolver fails to resolve it in the razor.cs, throwing "No component for supporting the service DMux.WebPortal.Common.IPeopleAppService was found"

I tried putting builder.Services.AddSingleton<IPeopleAppService, ProxyPersonAppService>(); in the MauiProgram.cs but it made no difference.

My interface:

The Interface:

public interface IPeopleAppService : IApplicationService
    {
        Task < PagedResultDto < GetPersonForViewDto > > GetAll(GetAllPeopleInput input);

        Task < GetPersonForViewDto > GetPersonForView(int id);

        Task < GetPersonForEditOutput > GetPersonForEdit(EntityDto input);

        Task CreateOrEdit(CreateOrEditPersonDto input);

        Task Delete(EntityDto input);

        Task < FileDto > GetPeopleToExcel(GetAllPeopleForExcelInput input);

        Task < PagedResultDto < PersonUserLookupTableDto > > GetAllUserForLookupTable(GetAllForLookupTableInput input);
    }


The ProxyAppService:

public class ProxyPersonAppService : ProxyAppServiceBase, IPeopleAppService
    {
        public async Task CreateOrEdit(CreateOrEditPersonDto input)
        {
            await ApiClient.PostAsync(GetEndpoint(nameof(CreateOrEdit)), input);
        }

        public async Task Delete(EntityDto input)
        {
            await ApiClient.DeleteAsync(GetEndpoint(nameof(Delete)), input);
        }

        public async Task < PagedResultDto < GetPersonForViewDto > > GetAll(GetAllPeopleInput input)
        {
            return await ApiClient.GetAsync < PagedResultDto < GetPersonForViewDto > > (GetEndpoint(nameof(GetAll)), input);
        }

        public async Task < PagedResultDto<PersonUserLookupTableDto > >  GetAllUserForLookupTable(GetAllForLookupTableInput input)
        {
            return await ApiClient.GetAsync < PagedResultDto < PersonUserLookupTableDto > > (GetEndpoint(nameof(GetAllUserForLookupTable)), input);
        }

        public async Task < FileDto > GetPeopleToExcel(GetAllPeopleForExcelInput input)
        {
            return await ApiClient.GetAsync < FileDto > (GetEndpoint(nameof(GetPeopleToExcel)), input);
        }

        public async Task < GetPersonForEditOutput > GetPersonForEdit(EntityDto input)
        {
            return await ApiClient.GetAsync < GetPersonForEditOutput > (GetEndpoint(nameof(GetPersonForEdit)), input);
        }

        public async Task < GetPersonForViewDto > GetPersonForView(int id)
        {
            return await ApiClient.GetAsync < GetPersonForViewDto > (GetEndpoint(nameof(GetPersonForViewDto)), id);
        }
    }

I have tried starting from a brand new version 12 template. The only things I have added are the People data table (using PowerTools), and the configs required to get the project up and running. I'm happy to pack the whole project up and post it if required.

My app has tens of thousands of old AbpUserNotifications and AbpTenantNotifications. I only need to keep them if they are less than a week old. I can't access repositories for those data tables, so what is the best way to delete old records in my background worker?

I recently upgraded my Core MVC project from 8.1 to 8.6, and it looks like everything is ok running in debug mode locally in Visual Studio, but when I push it up to Azure App Service (using my existing build pipeline) none of my localizations (in Core\Localization&lt;project>&lt;project>.xml) are working - menu items, column headings, everything has reverted to "[Property name]" format. Interestingly, this even includes new items added in the ASPNETZERO base project since 8.1 (See "Dynamic Parameters" and "Webhook Subscriptions"):

When I go to the Languages section on the Azure published 8.6 site I can see 900 entries, which appear to be the built-in ones:

On my existing live site (another Azure app), which is still v8.1, I see 1849 entries and all my localizations are working:

I see 1961 entries on my local debug version (V8.6 upgrade added quite a few), and they are all working:

Incidentally I have disabled all other languages so that English (UK) is the only enabled option. Is that relevant? It was like that before the upgrade as well.

Can someone tell me what might be going on?


Update:

When I enabled US English in the host, the localization suddenly worked in my tenant, even though the tenant still has UK English as the default.

This is now the setting:

... and now all my localizations work.

I'm still interested to learn what is happening. I don't want US English enabled because if a user selects it some of my date validations will not work correctly.

Hi,

I can see #6250 which addresses arrow functions in the MVC project causing IE11 compatibility issues. It looks like some more arrow functions have crept in since that time.

I am using ASP Core MVC Project v8.0.

I see the "EntityHistory" arrow functions (which the PR was fixing) all through the RAD-generated code. I found they were in the PartialTemplates.txt file so I have updated the template files and will test, but the RAD Tool probably should be updated for this

I am also getting a syntax error from IE for an arrow function in customizable-dashboard-libs.min.js (36,39):

        timer = setTimeout(() => {
            callBack();
        }, delay);
        

and chat.signalr.js (42,30):

      connection.start()
            .then(() => {
                reconnectTime = 5000;
                tries = 1;
            })
            

Please advise how to refactor these to not use arrow functions.

Hi Guys,

Once again, I really love the RAD tool!

But some time between Feb 9 and Feb 22, something changed, and that broke stuff without me realising straight away, and that stung me. (Look, maybe I reinstalled my VS about then, and got a new version of the RAD tool...?)

It looks like it now has a "ViewType" property on the NavigationProperty. This is a cool feature, being able to have a dropdown... But the tool auto-populates the property with value "null", so when I regenerated some entities I didn't realise it just left out the selectors altogether from the modal. That means using the auto-generated modal now throws an error because the foreign keys are not set. It would be better if it auto-populated it with "LookupTable" for backwards compatibility.

Now that I have figured this out I'm going back through all the entity json files and populating the property.

I hope this is helpful.

Thanks again for the great tool.

When a modal window opens, if it is too long for the screen I can scroll vertically. All good.

But if the modal has a selector which launches another child modal (Like the RAD Tool controls for selecting child objects), I can't scroll after opening and closing the child modal.

This kind of selector makes the issue happen:

After opening the child modal and closing it, the vertical scroll is attached to the screen behind the modal, not the modal itself.

What can I do to reset the scroll? In Javascript I can detect the child modal closing if I need to, so I can trigger something. I just don't know what I would need to do. I imagine I would be setting a vertical-scroll styling property on the modal container element or something...?

Any help would be appreciated.

I see the warning in my debug console about the upcoming change to Chrome. The message reads:

A cookie associated with a resource at http://uat.trevor-roberts.com.au/ was set with SameSite=None but without Secure. A future release of Chrome will only deliver cookies marked SameSite=None if they are also marked Secure. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5633521622188032

The latest advice is this will come into effect in a couple of weeks: https://www.chromium.org/updates/same-site

Please advise if we need to do anything to ensure features like "Login as user", etc. continue to work.

I want to use this time-picker: http://vitalets.github.io/clockface/#

It works, except the layout of its elements gets mucked up due to something in css. I can't figure out what is causing the problem.

I'm expecting this:

I'm seeing this:

If I remove the clockface.css from my bundles I see this:

I am using it in a modal.

I have experimented with adding the css to different bundles in case it is conflicting with something. Unfortunately css is not my strong suit. I do notice that wwwroot\metronic\assets\global\css has a couple of .clockface entries, but I don't know what to do with that.

Any help will be appreciated.

I am using Visual Studio 16.3.10, because I udpated 16.4 Preview 4 to Preview 6 and it seemed to cause serious problems. So I uninstalled it and went back to the released version. Then I installed the RAD Tool (2.1).

My project is ASPNETCore MVC v8.0

I have just discovered that the RAD tool is now producing sections of javascript that gulp rejects. As far as I can tell the offending code is in the datatable listAction in the generated index.js, where it is defining the inputFilter parameters for the query. It looks like it is putting placeholders in and not substituting values.

Original code (produced previously by RAD tool):

        var dataTable = _$productsTable.DataTable({
            paging: true,
            serverSide: true,
            processing: true,
            listAction: {
                ajaxFunction: _productsService.getAll,
                inputFilter: function () {
                    return {
					filter: $('#ProductsTableFilter').val(),
					codeFilter: $('#CodeFilterId').val(),
					nameFilter: $('#NameFilterId').val(),
					chemCheckFilter: $('#ChemCheckFilterId').val(),
					minMultiPartyMeetingsFilter: $('#MinMultiPartyMeetingsFilterId').val(),
					maxMultiPartyMeetingsFilter: $('#MaxMultiPartyMeetingsFilterId').val(),
					midpointReviewFilter: $('#MidpointReviewFilterId').val(),
					finalReviewFilter: $('#FinalReviewFilterId').val(),
					progressReportsFilter: $('#ProgressReportsFilterId').val(),
					programTypeNameFilter: $('#ProgramTypeNameFilterId').val()
                };
              }
           },

Code being produced now:

var dataTable = _$productsTable.DataTable({
            paging: true,
            serverSide: true,
            processing: true,
            listAction: {
                ajaxFunction: _productsService.getAll,
                inputFilter: function () {
                    return {
					filter: $('#ProductsTableFilter').val(),
					{{Dp_Property_Name_Here}}Filter: $('#CodeFilterId').val(),
					{{Dp_Property_Name_Here}}Filter: $('#NameFilterId').val(),
					{{Dp_Property_Name_Here}}Filter: $('#ChemCheckFilterId').val(),
					minMultiPartyMeetingsFilter: $('#MinMultiPartyMeetingsFilterId').val(),
					maxMultiPartyMeetingsFilter: $('#MaxMultiPartyMeetingsFilterId').val(),
					{{Dp_Property_Name_Here}}Filter: $('#MidpointReviewFilterId').val(),
					{{Dp_Property_Name_Here}}Filter: $('#FinalReviewFilterId').val(),
					{{Dp_Property_Name_Here}}Filter: $('#ProgressReportsFilterId').val(),
					minConsultationsFilter: $('#MinConsultationsFilterId').val(),
					maxConsultationsFilter: $('#MaxConsultationsFilterId').val(),
					minHoursFilter: $('#MinHoursFilterId').val(),
					maxHoursFilter: $('#MaxHoursFilterId').val(),
					{{Dp_Property_Name_Here}}Filter: $('#MoodleAccessFilterId').val(),
					programTypeNameFilter: $('#ProgramTypeNameFilterId').val()
                    };
                }
            },

It seems the int data types have their filter names, but the string and bool data types have this {{Dp_Property_Name_Here}} placeholder instead.

It seems this is what causes npm run build to throw an error:

npm : [22:27:44] 'build' errored after 3.41 s At line:1 char:1 npm run build

  • CategoryInfo : NotSpecified: ([22:27:44...ed after 3.41 s:String) [], RemoteException
  • FullyQualifiedErrorId : NativeCommandError [22:27:44] SyntaxError in plugin "gulp-uglify-es" Message: Unexpected token: punc ({) Details: filename: Index.js line: 48 col: 5 pos: 1747 domainEmitter: [object Object] domain: [object Object] domainThrown: false

I can confirm that when I replace the {{Dp_Property_Name_Here}} with the appropriate filter name, I can then run npm run build.

So this is now a manual step I need to take any time I run the RAD tool. Any help to resolve it will be appreciated.

Any ideas how I can overcome this?

I am exploring the new Customizable Dashboards and I'm excited about implementing this feature.

I noticed that if my user does not have the AppPermissions.Pages_Administration_AuditLogs permission, the dashboard does not get populated and they have no widgets available. (I note the generalStats widget adds the AppPermissions.Pages_Administration_AuditLogs to its permissions but I can't see why that would cause a problem).

I managed to work around this in the short term by adding the AppPermissions.Pages_Tenant_Dashboard permission to the AuditLogAppService, but I couldn't see exactly where this dependency was introduced. Of course, my workaround is not ideal, so maybe someone can identify the root cause.

Also a question: I am looking at setting up a library of widgets as partial html files, which are inserted at runtime. But is this something you guys are planning to develop soon? If so I'll hold off and just keep using the pattern you have set up so that upgrades are simpler.

Showing 1 to 10 of 14 entries