Skip to content

Commit 6cfb2ec

Browse files
authored
Merge pull request #167 from Jenesius/issue_156
Issue 156
2 parents fc55f34 + db29173 commit 6cfb2ec

13 files changed

+1146
-49
lines changed

docs/guide/utils.md

Lines changed: 598 additions & 9 deletions
Large diffs are not rendered by default.

docs/ru/guide/utils.md

Lines changed: 515 additions & 17 deletions
Large diffs are not rendered by default.

src/classes/AvailabilityEvent.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export default class AvailabilityEvent extends FormEvent{
4646
* текущая доступность для целевого объекта.
4747
* */
4848
static GetAvailability(state: FormAvailability, name: string, defaultAvailability: boolean = true) {
49-
const nearestName = findNearestNameFromArray(name, Object.keys(state));
49+
const nearestName = findNearestNameFromArray( Object.keys(state), name);
5050
return nearestName ? state[nearestName] : defaultAvailability;
5151
}
5252

src/classes/Form.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -256,10 +256,8 @@ export default class Form extends EventEmitter implements FormDependence {
256256
const extendName = concatName(options.executedFrom, options.target)
257257
const extendValues = extendName ? {[extendName]: values} : values;
258258

259-
console.log('EXTEND VALUES', extendValues)
260259
bypassObject(extendValues)
261260
.forEach(point => {
262-
console.log(extendValues, point, '++')
263261
if (this.checkFieldChange(point.name))
264262
this.acceptChanges(point.name)
265263
})
@@ -717,7 +715,7 @@ export default class Form extends EventEmitter implements FormDependence {
717715

718716
notOptimizeNames
719717
.forEach(key => {
720-
const nearestAvailability = findNearestPrefixFromArray(key, notOptimizeNames);
718+
const nearestAvailability = findNearestPrefixFromArray(notOptimizeNames, key);
721719
if (!nearestAvailability && this.#availabilities[key] === this.isAvailable) return delete this.#availabilities[key];
722720

723721
if (nearestAvailability) {
@@ -747,7 +745,7 @@ export default class Form extends EventEmitter implements FormDependence {
747745
* */
748746
checkFieldDisable(fieldName: string): boolean {
749747
if (this.parent) return this.parent.checkFieldDisable(concatName(this.name, fieldName));
750-
const nearestName = findNearestNameFromArray(fieldName, Object.keys(this.#availabilities));
748+
const nearestName = findNearestNameFromArray(Object.keys(this.#availabilities), fieldName);
751749
if (!nearestName) return this.disabled;
752750

753751
return !this.#availabilities[nearestName];

src/utils/compare-changes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export function compareDifference(oldValue: unknown, newValue: unknown): Compare
5353
* результирующий объект(который предполагается): { coordinate: { x: 1, y: 2 } }
5454
* и в данном случае мы получаем, что у нас два изменения:
5555
* [
56-
* { name: 'coordinate', newValue: { x: 1, y: 2 }, oldValue: { x: 1, y: 2 } },
56+
* { name: 'coordinate', newValue: { x: 1, y: 2 }, oldValue: { x: 1 } },
5757
* { name: 'coordinate.y', newValue: 2, oldValue: undefined }
5858
* ]
5959
* */

src/utils/copy-object.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import isEmptyObject from "./is-empty-object";
44
export default function copyObject<T>(object: T): T {
55
const outputObject:any = {};
66

7+
// Проверка на пустой объект добавлена на то, чтобы ссылка на объект не переносилась, а полноценно копировалась
78
if (!isIterablePoint(object) && !isEmptyObject(object)) return object;
89
Object.entries(object).forEach(([key, value]) => {
910

src/utils/find-nearest-name-from-array.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import checkCompositeName from "./check-composite-name";
22

3-
export default function findNearestNameFromArray<T extends string>(name: string, array: T[]): T | undefined {
3+
export default function findNearestNameFromArray<T extends string>(array: T[], name: string): T | undefined {
44
let answer: T | undefined;
55

66
array.forEach(n => {

src/utils/find-nearest-prefix-from-array.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import isPrefixName from "./is-prefix-name";
22

3-
export default function findNearestPrefixFromArray<T extends string>(name: string, arrayPrefixes: T[]): T | undefined {
3+
export default function findNearestPrefixFromArray<T extends string>(arrayPrefixes: T[], name: string): T | undefined {
44
let answer: T | undefined;
55

66
arrayPrefixes.forEach(prefix => {

src/utils/is-prefix-name.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* @example address.city.name address -> true
44
* @example user.type.index user.type -> true
55
* @example position.city.type city -> false
6+
* @example name name -> false
67
* */
78
export default function isPrefixName(fieldName: string, prefix: string) {
89
return (new RegExp(`^${prefix}\\.`)).test(fieldName);

src/utils/merge-objects.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ import isEmptyObject from "./is-empty-object";
66
* {a: {b: 1}}, {a: {c: 1}} => {a: {b: 1 , c: 1}}
77
* */
88
export default function mergeObjects(originalValues: Values, ...newValues: Values[]){
9-
function set(o: any, k: string, v: any) {
10-
o[k] = v;
11-
}
9+
function set(o: any, k: string, v: any) { o[k] = v; } // object/key/value
1210

1311
newValues.forEach(objectValue => {
1412
for( const key in objectValue ) {
@@ -17,18 +15,14 @@ export default function mergeObjects(originalValues: Values, ...newValues: Value
1715

1816
if (!isIterablePoint(value) && !isEmptyObject(value)) set(originalValues, key, value);
1917
else {
20-
if (!originalValues.hasOwnProperty(key)) originalValues[key] = {};
21-
2218
// If current value is primitive we need to change it to object.
2319
if (!isIterablePoint(originalValues[key])) originalValues[key] = {};
2420

25-
2621
mergeObjects(originalValues[key], value);
2722
}
2823
}
2924
})
3025

31-
3226
return originalValues;
3327
}
3428

0 commit comments

Comments
 (0)