Merge branch 'test/SUPPORT-8916_ip_valid' into test/ERVU-290_with_ip_valid

This commit is contained in:
Artyom Hackimullin 2025-02-24 14:29:37 +03:00
commit 89b4dd9f98
4 changed files with 433 additions and 40 deletions

View file

@ -0,0 +1,29 @@
<div [id]="getObjectId()"
class="form-group">
<label [ngbTooltip]="tooltip | emptyIfNull"
[hidden]="!label" class="control-label">
<span>{{label}}<span *ngIf="isRequired()" class="alarm"> *</span></span>
</label>
<div class="component-float">
<input [type]="typeAsString"
class="form-control"
[name]="name"
[masked-input]="mask"
[regexMask]="regexMask"
[un-mask-value]="unMaskValue"
[casing]="casingValue"
[placeholder]="placeholder | emptyIfNull"
[maxlength]="allowMoreSymbols ? null : maxLength"
[maxLengthAllowingMoreSymbols]="allowMoreSymbols ? maxLength : null"
[minlength]="minLength"
[(ngModel)]="internalValue"
#model="ngModel"
[disabled]="!isEnabled()"
[ngStyle]="style"
[required]="isRequired()"
[pattern]="pattern"
[title]="getValueForTooltip()"
(focus)="onFocus()"
(blur)="onBlur()">
</div>
</div>

View file

@ -0,0 +1,31 @@
import {TextFieldGridEditor} from "@webbpm/base-package";
import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef} from "@angular/core";
@Component({
moduleId: module.id,
selector: 'text-field-ervu-grid-editor',
templateUrl: './../../../../../../src/resources/template/account_applications/component/editablegrid/editors/ErvuAccountTextFieldGridEditor.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ErvuAccountTextFieldGridEditor extends TextFieldGridEditor{
constructor(el: ElementRef, cd: ChangeDetectorRef) {
super(el, cd);
}
onBlur() {
super.onBlur();
if (this.getValue() && !this.isValueValid()) {
this.clearValue();
this.cd.markForCheck();
}
}
protected isValueValid() {
if (this.pattern) {
const regex = new RegExp(this.pattern);
return regex.test(this.getValue());
}
return true;
}
}

View file

@ -27,6 +27,7 @@ import {NewPasswordComponent} from "./component/new-password.component";
import {AppProgressIndicationComponent} from "./component/app-progress-indication.component";
import {AppProgressIndicationService} from "./service/app-progress-indication.service";
import {VBoxLoadValues} from "../../account_applications/component/container/VBoxLoadValues";
import {ErvuAccountTextFieldGridEditor} from "../../account_applications/component/editablegrid/editors/ErvuAccountTextFieldGridEditor";
registerLocaleData(localeRu);
export const DIRECTIVES = [
@ -42,7 +43,8 @@ export const DIRECTIVES = [
forwardRef(() => ResetPasswordComponent),
forwardRef(() => NewPasswordComponent),
forwardRef(() => AppProgressIndicationComponent),
forwardRef(() => VBoxLoadValues)
forwardRef(() => VBoxLoadValues),
forwardRef(() => ErvuAccountTextFieldGridEditor)
];
@NgModule({

View file

@ -1456,6 +1456,13 @@
</scripts>
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0"/>
</children>
<children id="5c4e0a1b-2185-4bea-9e8d-f52f9eaa3016">
<prototypeId>133ca212-09a6-413a-ac66-e2f6ce188f1f</prototypeId>
<componentRootId>5c4e0a1b-2185-4bea-9e8d-f52f9eaa3016</componentRootId>
<name>IP адрес</name>
<container>false</container>
<removed>true</removed>
</children>
<children id="ec5d9cdb-1eb5-4793-8cf0-f14a2f518626">
<prototypeId>133ca212-09a6-413a-ac66-e2f6ce188f1f</prototypeId>
<componentRootId>ec5d9cdb-1eb5-4793-8cf0-f14a2f518626</componentRootId>
@ -1619,21 +1626,13 @@
<componentRootId>ec1fa9b6-04e1-4b58-96c7-538963204d95</componentRootId>
<name>Организация</name>
<container>false</container>
<removed>true</removed>
</children>
<children id="f8f30f98-1b48-48f7-9cab-4bda644effdf">
<prototypeId>b310f98a-69c6-4e7b-8cdb-f1ab9f9c0d94</prototypeId>
<componentRootId>f8f30f98-1b48-48f7-9cab-4bda644effdf</componentRootId>
<name>Combo box_Организация</name>
<container>false</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="23992f0e-94ed-4fb4-b4d1-dc6ad7f13227">
<scripts id="859913ec-9a30-439c-afc2-3c83cddcfe03">
<properties>
<entry>
<key>cssClasses</key>
<value>
<item id="7c89a562-ccbd-49f2-976e-915fff09010e" removed="false">
<item id="a9ed2b2d-4668-4417-967b-8ebfafc21110" removed="false">
<value>
<simple>"width-full"</simple>
</value>
@ -1654,10 +1653,10 @@
</entry>
</properties>
</scripts>
<scripts id="efb0fec7-9951-4b36-bbda-fa17aa002d74">
<scripts id="d9ac3145-9d66-42bd-9f24-1c3d0d2e31d0">
<properties>
<entry>
<key>comboBoxService</key>
<key>autocompleteService</key>
<value>
<complex>
<entry>
@ -1666,12 +1665,6 @@
<simple>{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}</simple>
</value>
</entry>
<entry>
<key>columnSorts</key>
<value>
<item id="100c4cad-a1df-4a34-8e26-ac81c506167f" removed="true"/>
</value>
</entry>
<entry>
<key>displayColumn</key>
<value>
@ -1685,26 +1678,36 @@
<entry>
<key>graph</key>
<value>
<simple>{"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"recruitment","schemaName":"public","x":326.0,"y":171.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"recruitment","schemaName":"public","x":326.0,"y":171.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment":{"tableName":"recruitment","schemaName":"public","x":326.0,"y":171.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0}</simple>
<simple>{"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"recruitment","schemaName":"public","x":334.0,"y":161.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"recruitment","schemaName":"public","x":334.0,"y":161.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment":{"tableName":"recruitment","schemaName":"public","x":334.0,"y":161.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0}</simple>
</value>
</entry>
</complex>
<expanded>false</expanded>
</value>
</entry>
<entry>
<key>parentControlReference</key>
<value>
<simple>null</simple>
</value>
</entry>
</complex>
<implRef type="JAVA">
<className>RecruitmentComboBoxService</className>
<packageName>ru.micord.ervu.account_applications.component.service</packageName>
</implRef>
</value>
</entry>
</properties>
</scripts>
<scripts id="4d028ea6-e4a3-4acf-bd60-de7aa1a78f71"/>
<scripts id="9f543b36-92e3-4a63-b8db-a4d7e852113e"/>
<scripts id="47f307b6-79a7-4c9a-96d6-6ee423565f02"/>
<scripts id="ec1e9370-303a-4a7e-948f-27ef7687cd03">
<scripts id="0b478949-71f8-4a8c-bcfc-8407265d231c">
<properties>
<entry>
<key>variable</key>
<value>
<simple>"org_unit_id"</simple>
</value>
</entry>
</properties>
</scripts>
<scripts id="2d8e021b-77e9-4d5c-a3e7-36fa9f8f1c42"/>
<scripts id="5c1508fe-b7fe-44cb-bec9-11eb7b09570f"/>
<scripts id="b26e8065-5cb8-40d4-b160-61e2ccc0cb14">
<properties>
<entry>
<key>columnForSave</key>
@ -1750,7 +1753,7 @@
</item>
<item id="2ee3d3e8-3f6e-4dbb-9c57-7815ec96dadc" removed="false">
<value>
<simple>"webp"</simple>
<simple>"jpg"</simple>
</value>
</item>
<item id="d8b830a7-2e42-4639-baa9-85c73895ace5" removed="false">
@ -1762,22 +1765,17 @@
<item id="1fee2eab-40ba-4c16-b471-75f522eeea9d" removed="true"/>
<item id="8c398d16-eac4-4f31-9755-55748bc29b65" removed="false">
<value>
<simple>"gif"</simple>
<simple>"odt"</simple>
</value>
</item>
<item id="8b635611-b65a-49c5-b1f2-dc3b9975811c" removed="false">
<value>
<simple>"raw"</simple>
<simple>"doc"</simple>
</value>
</item>
<item id="cb7c8457-2f6e-41a3-9a4d-e8560ddee7c3" removed="false">
<value>
<simple>"tiff"</simple>
</value>
</item>
<item id="1d963d03-1f14-4a9a-b60b-70b5d4c22b56" removed="false">
<value>
<simple>"psd"</simple>
<simple>"docx"</simple>
</value>
</item>
<item id="e5c31c54-9371-4c39-8c26-2ada992000d6" removed="true"/>
@ -1873,6 +1871,13 @@
<container>true</container>
<removed>true</removed>
</children>
<children id="dd4cd434-7c4a-46d6-85dc-ef991a460d8f">
<prototypeId>d7d54cfb-26b5-4dba-b56f-b6247183c24d</prototypeId>
<componentRootId>dd4cd434-7c4a-46d6-85dc-ef991a460d8f</componentRootId>
<name>Hbox</name>
<container>true</container>
<removed>true</removed>
</children>
<children id="a44f98ec-c47e-40b3-983f-73b5a72bb31d">
<prototypeId>76e91ef4-d2ef-4662-96ad-84c0dae0ecff</prototypeId>
<componentRootId>a44f98ec-c47e-40b3-983f-73b5a72bb31d</componentRootId>
@ -3062,6 +3067,20 @@
</scripts>
</children>
</children>
<children id="0832827a-68f2-460d-a1db-c6cc88621a61">
<prototypeId>76e91ef4-d2ef-4662-96ad-84c0dae0ecff</prototypeId>
<componentRootId>0832827a-68f2-460d-a1db-c6cc88621a61</componentRootId>
<name>Editable grid</name>
<container>true</container>
<removed>true</removed>
</children>
<children id="da9bc548-1312-440c-96de-7f9324adac15">
<prototypeId>d7d54cfb-26b5-4dba-b56f-b6247183c24d</prototypeId>
<componentRootId>da9bc548-1312-440c-96de-7f9324adac15</componentRootId>
<name>Hbox</name>
<container>true</container>
<removed>true</removed>
</children>
<children id="c2b0afec-0f98-4a93-889f-9a50e8fc1912">
<prototypeId>16071adb-3bdf-4c33-b29b-886876016415</prototypeId>
<componentRootId>c2b0afec-0f98-4a93-889f-9a50e8fc1912</componentRootId>
@ -3332,6 +3351,7 @@
<componentRootId>eff7bfda-85b7-4f80-817b-59d5cf192d93</componentRootId>
<name>Vbox_current_user</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
<scripts id="72befe90-1915-483f-b88c-d1ec5d4bdc8e"/>
@ -3449,14 +3469,325 @@
<componentRootId>41fc9dcd-6e83-4886-9049-acbcbec7b99d</componentRootId>
<name>Action Controller1</name>
<container>false</container>
<removed>true</removed>
<childrenReordered>false</childrenReordered>
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e">
<properties>
<entry>
<key>eventRefs</key>
<value>
<item id="0094caef-4dac-4097-b37c-6e266ec8ad71" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"594569b5-8dfd-4576-91cb-57c900c46c60","packageName":"component.field","className":"TextField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>propertyName</key>
<value>
<simple>"valueChangeEvent"</simple>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
<entry>
<key>ifCondition</key>
<value>
<complex>
<entry>
<key>conditions</key>
<value>
<item id="e1d4b5dc-efbe-42ac-b158-79ddc0818052" removed="false">
<value>
<complex>
<entry>
<key>_isGroupSelected</key>
<value>
<simple>false</simple>
</value>
</entry>
<entry>
<key>one</key>
<value>
<complex>
<entry>
<key>conditionFirstPart</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"594569b5-8dfd-4576-91cb-57c900c46c60","packageName":"component.field","className":"TextField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getValue"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>operation</key>
<value>
<simple>"IS_NOT_EMPTY"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
<entry>
<key>logicalOperation</key>
<value>
<simple>null</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>thenActions</key>
<value>
<item id="df0e48af-6b37-4b8b-b072-b8c30af23f83" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"7b65eda9-a92d-49fe-8355-547f7941ba7f","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"onClick"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<simple>null</simple>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="69e4bba9-688b-4273-a078-c6440233e07c">
<prototypeId>98594cec-0a9b-4cef-af09-e1b71cb2ad9e</prototypeId>
<componentRootId>69e4bba9-688b-4273-a078-c6440233e07c</componentRootId>
<name>Action Controller2</name>
<container>false</container>
<removed>true</removed>
<childrenReordered>false</childrenReordered>
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e">
<properties>
<entry>
<key>eventRefs</key>
<value>
<item id="2e637366-d2f8-47fd-b7dd-f7b99efd9cc0" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"7b65eda9-a92d-49fe-8355-547f7941ba7f","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>propertyName</key>
<value>
<simple>"clickEvent"</simple>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
<entry>
<key>ifCondition</key>
<value>
<complex>
<entry>
<key>conditions</key>
<value>
<item id="ac2af951-9e51-444b-824f-dc83dfb12f93" removed="false">
<value>
<complex>
<entry>
<key>_isGroupSelected</key>
<value>
<simple>false</simple>
</value>
</entry>
<entry>
<key>one</key>
<value>
<complex>
<entry>
<key>conditionFirstPart</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"7b65eda9-a92d-49fe-8355-547f7941ba7f","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getResult"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>operation</key>
<value>
<simple>"IS_NOT_EMPTY"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
<entry>
<key>logicalOperation</key>
<value>
<simple>null</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>thenActions</key>
<value>
<item id="0aea3f15-a642-4ede-a438-acb904c6194b" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"ec1fa9b6-04e1-4b58-96c7-538963204d95","packageName":"component.field","className":"Autocomplete","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setValueByBusinessId"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>argument</key>
<value>
<simple>null</simple>
</value>
</entry>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"7b65eda9-a92d-49fe-8355-547f7941ba7f","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getResult"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="063371a2-13b4-48bc-b2fa-26bfda38bbbb" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"ec1fa9b6-04e1-4b58-96c7-538963204d95","packageName":"component.field","className":"Autocomplete","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setEnabled"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>staticValue</key>
<value>
<implRef type="TS">
<className>boolean</className>
<packageName></packageName>
</implRef>
<simple>false</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
</properties>
</scripts>
</children>
</children>
<children id="b1b6018e-a845-4303-a180-560e7d7bf68e">