Skip to content

Commit

Permalink
Up to 3.12.3
Browse files Browse the repository at this point in the history
  • Loading branch information
DmitryAstafyev committed Apr 19, 2024
1 parent f3a7a23 commit 11e26e3
Show file tree
Hide file tree
Showing 14 changed files with 85 additions and 40 deletions.
2 changes: 1 addition & 1 deletion application/client/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "chipmunk",
"version": "3.12.2",
"version": "3.12.3",
"description": "Logs analyzer tool",
"author": "Dmitry Astafyev",
"scripts": {
Expand Down
13 changes: 11 additions & 2 deletions application/client/src/app/service/bridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { FileType } from '@platform/types/observe/types/file';
import { ShellProfile } from '@platform/types/shells';
import { StatisticInfo } from '@platform/types/observe/parser/dlt';
import { Entry } from '@platform/types/storage/entry';
import { error } from '@platform/log/utils';

import * as Requests from '@platform/ipc/request/index';

Expand Down Expand Up @@ -685,7 +686,7 @@ export class Service extends Implementation {
new Requests.Storage.EntriesSet.Request({
key: dest.key,
file: dest.file,
entries,
entries: JSON.stringify(entries),
mode,
}),
)
Expand All @@ -706,7 +707,15 @@ export class Service extends Implementation {
}),
)
.then((response) => {
resolve(response.entries);
try {
const entries: Entry[] = JSON.parse(response.entries);
if (!(entries instanceof Array)) {
throw new Error(`Expecting entries will be {Entry[]}`);
}
resolve(entries);
} catch (e) {
reject(new Error(this.log().error(error(e))));
}
})
.catch(reject);
});
Expand Down
6 changes: 5 additions & 1 deletion application/client/src/app/service/history/collections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,11 @@ export class Collections implements EntryConvertable, Equal<Collections>, Empty

public subscribe(subscriber: Subscriber, session: Session): void {
this.asCollectionsArray().forEach((c) => {
subscriber.register(c.updated.subscribe(() => this.updated.emit()));
subscriber.register(
c.updated.subscribe(() => {
this.updated.emit();
}),
);
c.subscribe(subscriber, session);
});
}
Expand Down
20 changes: 11 additions & 9 deletions application/client/src/app/service/history/storage.collections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,17 @@ export class StorageCollections {
}

public async save(): Promise<void> {
await bridge
.entries({ key: StorageCollections.UUID })
.overwrite(Array.from(this.collections.values()).map((c) => c.entry().to()))
.then(() => {
this.saved.emit();
})
.catch((err: Error) => {
this.log().warn(`Fail to write history collections: ${err.message}`);
});
setTimeout(() => {
bridge
.entries({ key: StorageCollections.UUID })
.overwrite(Array.from(this.collections.values()).map((c) => c.entry().to()))
.then(() => {
this.saved.emit();
})
.catch((err: Error) => {
this.log().warn(`Fail to write history collections: ${err.message}`);
});
});
}

public async clean(): Promise<void> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ export class UpdateEvent extends EntityUpdateEvent<UpdateEventInner, ChartReques
highlights: boolean;
value: boolean;
inner: boolean;
storable: boolean;
} {
return {
highlights: this.event.line || this.event.point || this.event.color || this.event.type,
Expand All @@ -96,6 +97,13 @@ export class UpdateEvent extends EntityUpdateEvent<UpdateEventInner, ChartReques
this.event.stat ||
this.event.state ||
this.event.type,
storable:
this.event.line ||
this.event.point ||
this.event.color ||
this.event.filter ||
this.event.state ||
this.event.type,
};
}
public inner(): UpdateEventInner {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,13 @@ export class UpdateEvent extends EntityUpdateEvent<UpdateEventInner, FilterReque
highlights: boolean;
value: boolean;
inner: boolean;
storable: boolean;
} {
return {
highlights: this.event.colors,
value: this.event.state || this.event.filter,
inner: this.event.colors || this.event.filter || this.event.stat || this.event.state,
storable: this.event.colors || this.event.filter || this.event.state,
};
}
public inner(): UpdateEventInner {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ export abstract class Store<T> extends Subscriber {
if (event.consequence().value) {
this.subjects.get().value.emit({ entities, sequence });
}
this.subjects.get().any.emit({ entities, sequence });
if (event.consequence().storable) {
this.subjects.get().any.emit({ entities, sequence });
}
}
}),
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ export abstract class EntityUpdateEvent<T, E> {
value: boolean;
// require redrawing of holders (like filter element)
inner: boolean;
// require saving in remote store. For example number of matches doesn't require
// saving operation
storable: boolean;
};
abstract inner(): T;
abstract entity(): E;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,9 @@ export class ProviderFilters extends Provider<FilterRequest> {
}).length !== 0
? () => {
entities.forEach((entity: Entity<FilterRequest>) => {
entity.extract().set().state(true);
entity.extract().set(true).state(true);
});
this.session.search.store().filters().refresh();
}
: undefined;
actions.deactivate =
Expand All @@ -239,8 +240,9 @@ export class ProviderFilters extends Provider<FilterRequest> {
}).length !== 0
? () => {
entities.forEach((entity: Entity<FilterRequest>) => {
entity.extract().set().state(false);
entity.extract().set(true).state(false);
});
this.session.search.store().filters().refresh();
}
: undefined;
actions.edit =
Expand Down
2 changes: 1 addition & 1 deletion application/holder/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "chipmunk",
"version": "3.12.2",
"version": "3.12.3",
"chipmunk": {
"versions": {}
},
Expand Down
39 changes: 25 additions & 14 deletions application/holder/src/service/storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import { electron } from '@service/electron';
import { FileController } from '@env/fs/accessor';
import { CancelablePromise } from 'platform/env/promise';
import { Entries } from './storage/entries';
import { error } from 'platform/log/utils';
import { Entry } from 'platform/types/storage/entry';

import * as path from 'path';
import * as Requests from 'platform/ipc/request';
Expand Down Expand Up @@ -109,7 +111,9 @@ export class Service extends Implementation {
resolve(
new Requests.Storage.EntriesGet.Response({
key,
entries: Array.from(entries.values()),
entries: JSON.stringify(
Array.from(entries.values()),
),
}),
);
})
Expand All @@ -123,7 +127,9 @@ export class Service extends Implementation {
resolve(
new Requests.Storage.EntriesGet.Response({
key: filename,
entries: Array.from(entries.values()),
entries: JSON.stringify(
Array.from(entries.values()),
),
}),
);
})
Expand All @@ -149,24 +155,29 @@ export class Service extends Implementation {
request: Requests.Storage.EntriesSet.Request,
): CancelablePromise<Requests.Storage.EntriesSet.Response> => {
return new CancelablePromise((resolve, reject) => {
const entries: Entry[] | Error = (() => {
try {
const entries: Entry[] = JSON.parse(request.entries);
if (!(entries instanceof Array)) {
throw new Error(`Expecting entries will be {Entry[]}`);
}
return entries;
} catch (e) {
return new Error(this.log().error(error(e)));
}
})();
((): Promise<void> => {
if (entries instanceof Error) {
return Promise.reject(entries);
}
if (request.key !== undefined) {
switch (request.mode) {
case 'overwrite':
return this.entries.overwrite(
request.key,
request.entries,
);
return this.entries.overwrite(request.key, entries);
case 'append':
return this.entries.append(
request.key,
request.entries,
);
return this.entries.append(request.key, entries);
case 'update':
return this.entries.update(
request.key,
request.entries,
);
return this.entries.update(request.key, entries);
}
} else if (request.file !== undefined) {
const file = new FileController(request.file).init();
Expand Down
8 changes: 3 additions & 5 deletions application/platform/ipc/request/storage/entries.get.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Define, Interface, SignatureRequirement } from '../declarations';
import { Entry } from '../../../types/storage/entry';

import * as validator from '../../../env/obj';

Expand All @@ -24,13 +23,12 @@ export interface Request extends Interface {}
@Define({ name: 'EntriesGetResponse' })
export class Response extends SignatureRequirement {
public key: string;
public entries: Entry[];
constructor(input: { key: string; entries: Entry[] }) {
public entries: string;
constructor(input: { key: string; entries: string }) {
super();
validator.isObject(input);
this.entries = validator.getAsArray(input, 'entries');
this.entries = validator.getAsNotEmptyString(input, 'entries');
this.key = validator.getAsNotEmptyString(input, 'key');
this.entries = validator.getAsArray(input, 'entries');
}
}

Expand Down
7 changes: 3 additions & 4 deletions application/platform/ipc/request/storage/entries.set.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Define, Interface, SignatureRequirement } from '../declarations';
import { Entry } from '../../../types/storage/entry';

import * as validator from '../../../env/obj';

Expand All @@ -9,15 +8,15 @@ export type Mode = 'overwrite' | 'update' | 'append';
export class Request extends SignatureRequirement {
public key?: string;
public file?: string;
public entries: Entry[];
public entries: string;
public mode: Mode;
constructor(input: { key?: string; file?: string; entries: Entry[]; mode: Mode }) {
constructor(input: { key?: string; file?: string; entries: string; mode: Mode }) {
super();
validator.isObject(input);
this.key = validator.getAsNotEmptyStringOrAsUndefined(input, 'key');
this.file = validator.getAsNotEmptyStringOrAsUndefined(input, 'file');
this.mode = validator.getAsNotEmptyString(input, 'mode') as Mode;
this.entries = validator.getAsArray(input, 'entries');
this.entries = validator.getAsNotEmptyString(input, 'entries');
if (this.key === undefined && this.file === undefined) {
throw new Error(`For EntriesSetRequest should be defined "file" or "key"`);
}
Expand Down
5 changes: 5 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 3.12.3 (19.04.2024)

## Changes
- Optimization of the events life cycle of filters/charts/disabled

# 3.12.2 (19.04.2024)

## Changes
Expand Down

0 comments on commit 11e26e3

Please sign in to comment.