@alper - on FileProviders I updated my project file manually to let it compile - I was just letting you guys know - I'm on visual studio code on the mac
on gulp - how do you suggest I fix this problem ? Isn't this a problem with your installer ?
UPDATE:
after 3.1.0 release abp switch-to-stable generates the same gulp install error but since mine is installed via yarn gulpfile.js is processed correctly as long as my version of gulp-cli is updated to CLI version 2.3.0. Just to let you guys know (don't know where to report these problems - so just doing so here if it helps anyone). Also FileProviders still needs to be manually updated to 3.1.6 or else aspnet-core doesn't build.
after abp switch-to-preview (abp cli updated to 3.1.0-rc.4 ) on a 3.0.5 project, I get this error regarding an npm gulp installation:
[13:09:58 INF] Checking installed npm global packages... [13:10:00 INF] Installing gulp... npm ERR! code EEXIST npm ERR! syscall symlink npm ERR! path ../lib/node_modules/gulp/bin/gulp.js npm ERR! dest /usr/local/bin/gulp npm ERR! errno -17 npm ERR! EEXIST: file already exists, symlink '../lib/node_modules/gulp/bin/gulp.js' -> '/usr/local/bin/gulp' npm ERR! File exists: /usr/local/bin/gulp npm ERR! Remove the existing file and try again, or run npm npm ERR! with --force to overwrite files recklessly.
my version of gulp and gulp cli (installed via yarn) are :
gulp -v [13:20:03] CLI version 3.9.1 [13:20:03] Local version 4.0.2
A little later during the switch, I get :
[12:34:12 INF] Running Gulp on /Users/me/dev/aqua/abp-pro/v300/Kuvu.Track/aspnet-core/src/Kuvu.Track.HttpApi.Host/ [12:34:13] Using gulpfile ~/dev/aqua/abp-pro/v300/Kuvu.Track/aspnet-core/src/Kuvu.Track.HttpApi.Host/gulpfile.js /Users/me/.config/yarn/global/node_modules/gulp/bin/gulp.js:129 gulpInst.start.apply(gulpInst, toRun); ^
TypeError: Cannot read property 'apply' of undefined at /Users/me/.config/yarn/global/node_modules/gulp/bin/gulp.js:129:20 at processTicksAndRejections (internal/process/task_queues.js:79:11)
UPDATE: In addition to the above. the back-end does not start until I upgrade my Microsoft.Extensions.FileProviders.Embedded from 3.1.5 to 3.1.6 in Domain.Shared
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.6" />
Anything to worry about?
Thanks - will the angular version be available soon ? (Devextreme angular => 20.1.7)
Especially a datagrid sample with both client and server side rendering
Ok - just to be clear
Thank yoiu
Ok - I will check out 3.0.3 - thank you.
Did I assume correctly that the api should be called %%np-entity-name-camelcase%% Lookup instead of %%np-entity-name-camelcase%%-lookup? What is your naming convention?
My template fix works but I want to make sure before I used it across my other tables...
Also - how to get rid of that garballed template above (would you know how that happened?)
Any news on this case?
Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.
in service.ts :
url: `/api/ENTITY_NAME/with-navigation-properties/${id}`
should be
url: `/api/app/ENTITY_NAME/with-navigation-properties/${id}`
Template needed a change (again) :
I'm on a roll - third bug today - since I'm finding your bugs (as a paying customer no less) can I get credit in my question counter (at least) ?
Don't mean to be nasty .... just frustrating ... please test and pay more care to the angular side of things...
regards, Patrice
Anybody there?
Ok - looks like this is another Template Error (arghhhh) - there were two consequences
1- build error and migration interrruption 2- bad api name
[Route("%%np-entity-name-camelcase%%Lookup")] instead of
[Route("%%np-entity-name-camelcase%%-lookup")]
not sure what the intent was - here's my edit:
ALSO - what is this in my template folder and how can I fix it :
Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.
in abp suite 2.9.0 - create a new entity with non-required properties (string type usually in my case) migrate and update form doesn't validate when non-required field is skipped
see below. In my Vendor Entity the Phone property is tagged as non-required:
server requires validation :
Even though the create DTO seems correct :
using System;
using System.ComponentModel.DataAnnotations;
namespace Skipj.Track.Vendors
{
public class VendorCreateDto
{
[Required]
[StringLength(VendorConsts.NameMaxLength, MinimumLength = VendorConsts.NameMinLength)]
public string Name { get; set; }
[StringLength(VendorConsts.PhoneMaxLength, MinimumLength = VendorConsts.PhoneMinLength)]
public string Phone { get; set; }
[EmailAddress]
[StringLength(VendorConsts.EmailMaxLength, MinimumLength = VendorConsts.EmailMinLength)]
public string Email { get; set; }
[StringLength(VendorConsts.WebsiteMaxLength, MinimumLength = VendorConsts.WebsiteMinLength)]
public string Website { get; set; }
[StringLength(VendorConsts.TaxIdMaxLength, MinimumLength = VendorConsts.TaxIdMinLength)]
public string TaxId { get; set; }
[StringLength(VendorConsts.VendorIdMaxLength, MinimumLength = VendorConsts.VendorIdMinLength)]
public string VendorId { get; set; }
[StringLength(VendorConsts.AltNameMaxLength, MinimumLength = VendorConsts.AltNameMinLength)]
public string AltName { get; set; }
[StringLength(VendorConsts.DbaNameMaxLength, MinimumLength = VendorConsts.DbaNameMinLength)]
public string DbaName { get; set; }
[StringLength(VendorConsts.NotesMaxLength, MinimumLength = VendorConsts.NotesMinLength)]
public string Notes { get; set; }
[Required]
public bool IsPrime { get; set; }
[Required]
public bool IsMdBased { get; set; }
public bool IsWomanOwned { get; set; }
[StringLength(VendorConsts.RatingMaxLength, MinimumLength = VendorConsts.RatingMinLength)]
public string Rating { get; set; }
[StringLength(VendorConsts.DisplayNameMaxLength, MinimumLength = VendorConsts.DisplayNameMinLength)]
public string DisplayName { get; set; }
public bool HasMdEmployees { get; set; }
[StringLength(VendorConsts.DunsNumberMaxLength, MinimumLength = VendorConsts.DunsNumberMinLength)]
public string DunsNumber { get; set; }
}
}
the angular input form doesn't mark anything as required either :
<ng-template #abpBody>
<form [formGroup]="form" (ngSubmit)="save()" validateOnSubmit>
<div class="mt-2 fade-in-top">
<div class="form-group">
<label for="vendor-name">
{{ '::Name' | abpLocalization }}
</label>
<input type="text"
id="vendor-name"
class="form-control"
formControlName="name" autofocus maxlength="64" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-phone">
{{ '::Phone' | abpLocalization }}
</label>
<input type="text"
id="vendor-phone"
class="form-control"
formControlName="phone" maxlength="50" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-email">
{{ '::Email' | abpLocalization }}
</label>
<input type="text"
id="vendor-email"
class="form-control"
formControlName="email" maxlength="32" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-website">
{{ '::Website' | abpLocalization }}
</label>
<input type="text"
id="vendor-website"
class="form-control"
formControlName="website" maxlength="64" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-taxId">
{{ '::TaxId' | abpLocalization }}
</label>
<input type="text"
id="vendor-taxId"
class="form-control"
formControlName="taxId" maxlength="10" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-vendorId">
{{ '::VendorId' | abpLocalization }}
</label>
<input type="text"
id="vendor-vendorId"
class="form-control"
formControlName="vendorId" maxlength="255" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-altName">
{{ '::AltName' | abpLocalization }}
</label>
<input type="text"
id="vendor-altName"
class="form-control"
formControlName="altName" maxlength="64" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-dbaName">
{{ '::DbaName' | abpLocalization }}
</label>
<input type="text"
id="vendor-dbaName"
class="form-control"
formControlName="dbaName" maxlength="64" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-notes">
{{ '::Notes' | abpLocalization }}
</label>
<input type="text"
id="vendor-notes"
class="form-control"
formControlName="notes" maxlength="255" minlength="1"/>
</div>
<div class="form-group form-check custom-checkbox custom-control">
<input type="checkbox"
id="vendor-isPrime"
class="form-check-input custom-control-input"
formControlName="isPrime" />
<label class="custom-control-label"
for="vendor-isPrime">
{{ '::IsPrime' | abpLocalization }}
</label>
</div>
<div class="form-group form-check custom-checkbox custom-control">
<input type="checkbox"
id="vendor-isMdBased"
class="form-check-input custom-control-input"
formControlName="isMdBased" />
<label class="custom-control-label"
for="vendor-isMdBased">
{{ '::IsMdBased' | abpLocalization }}
</label>
</div>
<div class="form-group form-check custom-checkbox custom-control">
<input type="checkbox"
id="vendor-isWomanOwned"
class="form-check-input custom-control-input"
formControlName="isWomanOwned" />
<label class="custom-control-label"
for="vendor-isWomanOwned">
{{ '::IsWomanOwned' | abpLocalization }}
</label>
</div>
<div class="form-group">
<label for="vendor-rating">
{{ '::Rating' | abpLocalization }}
</label>
<input type="text"
id="vendor-rating"
class="form-control"
formControlName="rating" maxlength="32" minlength="1"/>
</div>
<div class="form-group">
<label for="vendor-displayName">
{{ '::DisplayName' | abpLocalization }}
</label>
<input type="text"
id="vendor-displayName"
class="form-control"
formControlName="displayName" maxlength="64" minlength="1"/>
</div>
<div class="form-group form-check custom-checkbox custom-control">
<input type="checkbox"
id="vendor-hasMdEmployees"
class="form-check-input custom-control-input"
formControlName="hasMdEmployees" />
<label class="custom-control-label"
for="vendor-hasMdEmployees">
{{ '::HasMdEmployees' | abpLocalization }}
</label>
</div>
<div class="form-group">
<label for="vendor-dunsNumber">
{{ '::DunsNumber' | abpLocalization }}
</label>
<input type="text"
id="vendor-dunsNumber"
class="form-control"
formControlName="dunsNumber" maxlength="10" minlength="1"/>
</div>
</div>
</form>
</ng-template>
**SECOND question while I'm at it : why aren't required fields tagged as such on the angular form (like red dot or asterisk on the MV forms) **