@journeyapps-labs/reactor-mod-data-browser 2.0.2 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/@types/core/SchemaModelDefinition.d.ts +15 -1
- package/dist/@types/core/SchemaModelObject.d.ts +5 -0
- package/dist/@types/core/query/Page.d.ts +2 -0
- package/dist/@types/core/query/SimpleQuery.d.ts +4 -8
- package/dist/@types/core/query/filters.d.ts +17 -0
- package/dist/@types/core/query/widgets/BelongsToDisplayWidget.d.ts +14 -0
- package/dist/@types/core/query/widgets/CellDisplayWidget.d.ts +9 -0
- package/dist/@types/core/query/widgets/ColumnDisplayWidget.d.ts +5 -0
- package/dist/@types/core/query/widgets/SmartColumnWidget.d.ts +9 -0
- package/dist/@types/core/query/widgets/SmartFilterWidget.d.ts +9 -0
- package/dist/@types/forms/inputs/LocationInput.d.ts +13 -0
- package/dist/DataBrowserModule.js +1 -1
- package/dist/DataBrowserModule.js.map +1 -1
- package/dist/core/SchemaModelDefinition.js +56 -2
- package/dist/core/SchemaModelDefinition.js.map +1 -1
- package/dist/core/SchemaModelObject.js +72 -11
- package/dist/core/SchemaModelObject.js.map +1 -1
- package/dist/core/query/Page.js +5 -1
- package/dist/core/query/Page.js.map +1 -1
- package/dist/core/query/SimpleQuery.js +49 -83
- package/dist/core/query/SimpleQuery.js.map +1 -1
- package/dist/core/query/filters.js +17 -0
- package/dist/core/query/filters.js.map +1 -0
- package/dist/core/query/widgets/BelongsToDisplayWidget.js +70 -0
- package/dist/core/query/widgets/BelongsToDisplayWidget.js.map +1 -0
- package/dist/core/query/widgets/CellDisplayWidget.js +92 -0
- package/dist/core/query/widgets/CellDisplayWidget.js.map +1 -0
- package/dist/core/query/widgets/ColumnDisplayWidget.js +22 -0
- package/dist/core/query/widgets/ColumnDisplayWidget.js.map +1 -0
- package/dist/core/query/widgets/SmartColumnWidget.js +19 -0
- package/dist/core/query/widgets/SmartColumnWidget.js.map +1 -0
- package/dist/core/query/widgets/SmartFilterWidget.js +56 -0
- package/dist/core/query/widgets/SmartFilterWidget.js.map +1 -0
- package/dist/forms/SchemaModelForm.js +26 -11
- package/dist/forms/SchemaModelForm.js.map +1 -1
- package/dist/forms/inputs/LocationInput.js +74 -0
- package/dist/forms/inputs/LocationInput.js.map +1 -0
- package/dist/panels/model/ModelPanelFactory.js +1 -1
- package/dist/panels/model/ModelPanelFactory.js.map +1 -1
- package/dist/panels/model/ModelPanelWidget.js +21 -3
- package/dist/panels/model/ModelPanelWidget.js.map +1 -1
- package/dist/panels/query/QueryPanelWidget.js +6 -3
- package/dist/panels/query/QueryPanelWidget.js.map +1 -1
- package/dist/panels/query/TableControlsWidget.js +3 -3
- package/dist/panels/query/TableControlsWidget.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist-module/bundle.js +44 -7
- package/dist-module/bundle.js.map +1 -1
- package/package.json +7 -5
- package/src/DataBrowserModule.ts +1 -1
- package/src/core/SchemaModelDefinition.ts +70 -3
- package/src/core/SchemaModelObject.ts +52 -2
- package/src/core/query/Page.ts +9 -1
- package/src/core/query/SimpleQuery.tsx +62 -111
- package/src/core/query/filters.ts +30 -0
- package/src/core/query/widgets/BelongsToDisplayWidget.tsx +107 -0
- package/src/core/query/widgets/CellDisplayWidget.tsx +122 -0
- package/src/core/query/widgets/ColumnDisplayWidget.tsx +27 -0
- package/src/core/query/widgets/SmartColumnWidget.tsx +30 -0
- package/src/core/query/widgets/SmartFilterWidget.tsx +80 -0
- package/src/forms/SchemaModelForm.tsx +28 -9
- package/src/forms/inputs/LocationInput.tsx +104 -0
- package/src/panels/model/ModelPanelFactory.tsx +1 -1
- package/src/panels/model/ModelPanelWidget.tsx +37 -3
- package/src/panels/query/QueryPanelWidget.tsx +6 -3
- package/src/panels/query/TableControlsWidget.tsx +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @journeyapps-labs/reactor-mod-data-browser
|
|
2
2
|
|
|
3
|
+
## 2.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 12e5f6a: - Add support for filters
|
|
8
|
+
- Fix relationship belongs_to loading
|
|
9
|
+
- Display column headings with width based on heurestics
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 687468b: - Improve relationship loading
|
|
14
|
+
- Dont block kernel init with connection store
|
|
15
|
+
|
|
16
|
+
## 2.1.0
|
|
17
|
+
|
|
18
|
+
### Minor Changes
|
|
19
|
+
|
|
20
|
+
- 8cc96ec: - displays media directly inside Sector
|
|
21
|
+
- add media input fields to form editing
|
|
22
|
+
- status bar for schema model editing
|
|
23
|
+
- make query reload button show load status
|
|
24
|
+
- Add support for Locations
|
|
25
|
+
- Pull in Reactor changes: Version Packages reactor#36
|
|
26
|
+
- bf70874: Add support for loading relationships with smart paralell limits
|
|
27
|
+
|
|
3
28
|
## 2.0.2
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
|
@@ -3,13 +3,27 @@ import { ObjectType } from '@journeyapps/parser-schema';
|
|
|
3
3
|
import { Collection } from '@journeyapps/db';
|
|
4
4
|
import { SchemaModelObject } from './SchemaModelObject';
|
|
5
5
|
import { LifecycleModel } from '@journeyapps-labs/lib-reactor-data-layer';
|
|
6
|
+
import { BaseObserver } from '@journeyapps-labs/common-utils';
|
|
7
|
+
import { QueueObject } from 'async';
|
|
8
|
+
export interface SchemaModelDefinitionListener {
|
|
9
|
+
resolved: (event: {
|
|
10
|
+
object: SchemaModelObject;
|
|
11
|
+
}) => any;
|
|
12
|
+
failed: (event: {
|
|
13
|
+
object_id: string;
|
|
14
|
+
}) => any;
|
|
15
|
+
}
|
|
6
16
|
export interface SchemaModelDefinitionOptions {
|
|
7
17
|
connection: AbstractConnection;
|
|
8
18
|
definition: ObjectType;
|
|
9
19
|
}
|
|
10
|
-
export declare class SchemaModelDefinition implements LifecycleModel<ObjectType> {
|
|
20
|
+
export declare class SchemaModelDefinition extends BaseObserver<SchemaModelDefinitionListener> implements LifecycleModel<ObjectType> {
|
|
11
21
|
protected options: SchemaModelDefinitionOptions;
|
|
22
|
+
cache: Map<string, SchemaModelObject>;
|
|
23
|
+
queue: QueueObject<string>;
|
|
24
|
+
enqueued: Set<string>;
|
|
12
25
|
constructor(options: SchemaModelDefinitionOptions);
|
|
26
|
+
resolve(id: string): Promise<SchemaModelObject | null>;
|
|
13
27
|
get key(): string;
|
|
14
28
|
dispose(): void;
|
|
15
29
|
patch(data: ObjectType): void;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { DatabaseObject } from '@journeyapps/db';
|
|
2
2
|
import { SchemaModelDefinition } from './SchemaModelDefinition';
|
|
3
|
+
import { AbstractMedia, MediaEngine } from '@journeyapps-labs/reactor-mod';
|
|
3
4
|
export interface SchemaModelObjectOptions {
|
|
4
5
|
definition: SchemaModelDefinition;
|
|
5
6
|
model?: DatabaseObject;
|
|
6
7
|
}
|
|
7
8
|
export declare class SchemaModelObject {
|
|
8
9
|
options: SchemaModelObjectOptions;
|
|
10
|
+
accessor mediaEngine: MediaEngine;
|
|
11
|
+
private _mediaCache;
|
|
9
12
|
constructor(options: SchemaModelObjectOptions);
|
|
10
13
|
get definition(): SchemaModelDefinition;
|
|
11
14
|
get model(): DatabaseObject;
|
|
15
|
+
displayValue(): Promise<string>;
|
|
16
|
+
getMedia(field: string): Promise<AbstractMedia<import("@journeyapps-labs/reactor-mod").AbstractMediaOptions>>;
|
|
12
17
|
}
|
|
@@ -2,6 +2,7 @@ import { SchemaModelObject } from '../SchemaModelObject';
|
|
|
2
2
|
import { TableRow } from '@journeyapps-labs/reactor-mod';
|
|
3
3
|
import { Collection, DatabaseObject } from '@journeyapps/db';
|
|
4
4
|
import { SchemaModelDefinition } from '../SchemaModelDefinition';
|
|
5
|
+
import { AbstractFilter } from './filters';
|
|
5
6
|
export interface PageRow extends TableRow {
|
|
6
7
|
model: SchemaModelObject;
|
|
7
8
|
definition: SchemaModelDefinition;
|
|
@@ -12,6 +13,7 @@ export interface PageOptions {
|
|
|
12
13
|
limit: number;
|
|
13
14
|
definition: SchemaModelDefinition;
|
|
14
15
|
index: number;
|
|
16
|
+
filters: AbstractFilter[];
|
|
15
17
|
}
|
|
16
18
|
export declare class Page {
|
|
17
19
|
protected options: PageOptions;
|
|
@@ -2,10 +2,10 @@ import { AbstractQuery, AbstractQueryEncoded } from './AbstractQuery';
|
|
|
2
2
|
import { TableColumn } from '@journeyapps-labs/reactor-mod';
|
|
3
3
|
import { ConnectionStore } from '../../stores/ConnectionStore';
|
|
4
4
|
import * as db from '@journeyapps/db';
|
|
5
|
-
import { Promise } from '@journeyapps/db';
|
|
6
|
-
import { Page
|
|
5
|
+
import { Promise, Variable } from '@journeyapps/db';
|
|
6
|
+
import { Page } from './Page';
|
|
7
7
|
import { SchemaModelDefinition } from '../SchemaModelDefinition';
|
|
8
|
-
import
|
|
8
|
+
import { SimpleFilter } from './filters';
|
|
9
9
|
export interface SimpleQueryOptions {
|
|
10
10
|
definition?: SchemaModelDefinition;
|
|
11
11
|
limit?: number;
|
|
@@ -19,6 +19,7 @@ export declare class SimpleQuery extends AbstractQuery<SimpleQueryEncoded> {
|
|
|
19
19
|
accessor connStore: ConnectionStore;
|
|
20
20
|
accessor _totalPages: number;
|
|
21
21
|
accessor _pages: Page[];
|
|
22
|
+
simple_filters: Map<Variable, SimpleFilter>;
|
|
22
23
|
constructor(options?: SimpleQueryOptions);
|
|
23
24
|
getCollection(): globalThis.Promise<db.database.Collection<db.database.DatabaseObject>>;
|
|
24
25
|
load(): globalThis.Promise<void>;
|
|
@@ -29,8 +30,3 @@ export declare class SimpleQuery extends AbstractQuery<SimpleQueryEncoded> {
|
|
|
29
30
|
getColumns(): TableColumn[];
|
|
30
31
|
getSimpleName(): string;
|
|
31
32
|
}
|
|
32
|
-
export interface CellDisplayWidgetProps {
|
|
33
|
-
row: PageRow;
|
|
34
|
-
cell: any;
|
|
35
|
-
}
|
|
36
|
-
export declare const CellDisplayWidget: React.FC<CellDisplayWidgetProps>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Query, Variable } from '@journeyapps/db';
|
|
2
|
+
export declare abstract class AbstractFilter {
|
|
3
|
+
abstract augment(query: Query): any;
|
|
4
|
+
}
|
|
5
|
+
export declare enum Condition {
|
|
6
|
+
EQUALS = "="
|
|
7
|
+
}
|
|
8
|
+
export interface Statement {
|
|
9
|
+
condition: Condition;
|
|
10
|
+
arg: any;
|
|
11
|
+
}
|
|
12
|
+
export declare class SimpleFilter extends AbstractFilter {
|
|
13
|
+
variable: Variable;
|
|
14
|
+
statements: Statement[];
|
|
15
|
+
constructor(variable: Variable, statements: Statement[]);
|
|
16
|
+
augment(query: Query): Query<import("@journeyapps/db").DatabaseObject>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { SchemaModelObject } from '../../SchemaModelObject';
|
|
3
|
+
import { AbstractConnection } from '../../AbstractConnection';
|
|
4
|
+
import { Relationship } from '@journeyapps/parser-schema';
|
|
5
|
+
export interface BelongsToDisplayWidgetProps {
|
|
6
|
+
relationship: Relationship;
|
|
7
|
+
id: string;
|
|
8
|
+
connection: AbstractConnection;
|
|
9
|
+
open: (object: SchemaModelObject) => any;
|
|
10
|
+
}
|
|
11
|
+
export declare const BelongsToDisplayWidget: React.FC<BelongsToDisplayWidgetProps>;
|
|
12
|
+
export declare const BelongsToStringWidget: React.FC<{
|
|
13
|
+
model: SchemaModelObject;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Variable } from '@journeyapps/db';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { PageRow } from '../Page';
|
|
4
|
+
export interface CellDisplayWidgetProps {
|
|
5
|
+
row: PageRow;
|
|
6
|
+
cell: any;
|
|
7
|
+
variable: Variable;
|
|
8
|
+
}
|
|
9
|
+
export declare const CellDisplayWidget: React.FC<CellDisplayWidgetProps>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Variable } from '@journeyapps/db';
|
|
3
|
+
import { SimpleFilter } from '../filters';
|
|
4
|
+
export interface SmartColumnWidgetProps {
|
|
5
|
+
variable: Variable;
|
|
6
|
+
filter?: SimpleFilter;
|
|
7
|
+
filterChanged: (filter: SimpleFilter | null) => any;
|
|
8
|
+
}
|
|
9
|
+
export declare const SmartColumnWidget: React.FC<SmartColumnWidgetProps>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Variable } from '@journeyapps/db';
|
|
3
|
+
import { SimpleFilter } from '../filters';
|
|
4
|
+
export interface SmartFilterWidgetProps {
|
|
5
|
+
variable: Variable;
|
|
6
|
+
filter?: SimpleFilter;
|
|
7
|
+
filterChanged: (filter: SimpleFilter | null) => any;
|
|
8
|
+
}
|
|
9
|
+
export declare const SmartFilterWidget: React.FC<SmartFilterWidgetProps>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FormInput, FormInputGenerics, FormInputOptions, FormInputRenderOptions, NumberInput } from '@journeyapps-labs/reactor-mod';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Location } from '@journeyapps/db';
|
|
4
|
+
export declare class LocationInput extends FormInput<FormInputGenerics & {
|
|
5
|
+
VALUE: Location;
|
|
6
|
+
}> {
|
|
7
|
+
latitude: NumberInput;
|
|
8
|
+
longitude: NumberInput;
|
|
9
|
+
constructor(options: FormInputOptions<Location>);
|
|
10
|
+
setValue(value: Location): void;
|
|
11
|
+
update(): void;
|
|
12
|
+
renderControl(options: FormInputRenderOptions): React.JSX.Element;
|
|
13
|
+
}
|
|
@@ -39,7 +39,7 @@ export class DataBrowserModule extends AbstractReactorModule {
|
|
|
39
39
|
workspaceStore.registerFactory(new ModelPanelFactory());
|
|
40
40
|
}
|
|
41
41
|
async init(ioc) {
|
|
42
|
-
|
|
42
|
+
ioc.get(ConnectionStore).init();
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
//# sourceMappingURL=DataBrowserModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataBrowserModule.js","sourceRoot":"","sources":["../src/DataBrowserModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,qCAAqC,EAAE,MAAM,kDAAkD,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAErF,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IAC1D;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAc;QACrB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE/C,IAAI,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE5C,eAAe,CAAC,yBAAyB,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;QAEzE,MAAM,CAAC,cAAc,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,cAAc,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,cAAc,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAEnD,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAElD,MAAM,CAAC,kBAAkB,CAAC,IAAI,0BAA0B,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,kBAAkB,CAAC,IAAI,iCAAiC,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,kBAAkB,CAAC,IAAI,qCAAqC,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,kBAAkB,CAAC,IAAI,iCAAiC,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,kBAAkB,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAEvD,cAAc,CAAC,eAAe,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;QACxD,cAAc,CAAC,eAAe,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAc;QACvB,
|
|
1
|
+
{"version":3,"file":"DataBrowserModule.js","sourceRoot":"","sources":["../src/DataBrowserModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,qCAAqC,EAAE,MAAM,kDAAkD,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAErF,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IAC1D;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAc;QACrB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE/C,IAAI,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE5C,eAAe,CAAC,yBAAyB,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;QAEzE,MAAM,CAAC,cAAc,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,cAAc,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,cAAc,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAEnD,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAElD,MAAM,CAAC,kBAAkB,CAAC,IAAI,0BAA0B,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,kBAAkB,CAAC,IAAI,iCAAiC,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,kBAAkB,CAAC,IAAI,qCAAqC,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,kBAAkB,CAAC,IAAI,iCAAiC,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,kBAAkB,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;QAEvD,cAAc,CAAC,eAAe,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;QACxD,cAAc,CAAC,eAAe,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAc;QACvB,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -1,12 +1,66 @@
|
|
|
1
1
|
import { SchemaModelObject } from './SchemaModelObject';
|
|
2
|
-
|
|
2
|
+
import { BaseObserver } from '@journeyapps-labs/common-utils';
|
|
3
|
+
import { queue } from 'async';
|
|
4
|
+
export class SchemaModelDefinition extends BaseObserver {
|
|
3
5
|
constructor(options) {
|
|
6
|
+
super();
|
|
4
7
|
this.options = options;
|
|
8
|
+
this.cache = new Map();
|
|
9
|
+
this.enqueued = new Set();
|
|
10
|
+
this.queue = queue(async (id) => {
|
|
11
|
+
let collection = await this.getCollection();
|
|
12
|
+
try {
|
|
13
|
+
let model = await collection.first(id);
|
|
14
|
+
if (model) {
|
|
15
|
+
let object = new SchemaModelObject({
|
|
16
|
+
model,
|
|
17
|
+
definition: this
|
|
18
|
+
});
|
|
19
|
+
this.cache.set(id, object);
|
|
20
|
+
this.enqueued.delete(id);
|
|
21
|
+
this.iterateListeners((cb) => { var _a; return (_a = cb.resolved) === null || _a === void 0 ? void 0 : _a.call(cb, { object }); });
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
this.iterateListeners((cb) => { var _a; return (_a = cb.failed) === null || _a === void 0 ? void 0 : _a.call(cb, { object_id: id }); });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (ex) {
|
|
28
|
+
this.iterateListeners((cb) => { var _a; return (_a = cb.failed) === null || _a === void 0 ? void 0 : _a.call(cb, { object_id: id }); });
|
|
29
|
+
throw ex;
|
|
30
|
+
}
|
|
31
|
+
}, 6);
|
|
32
|
+
}
|
|
33
|
+
async resolve(id) {
|
|
34
|
+
if (this.cache.has(id)) {
|
|
35
|
+
return this.cache.get(id);
|
|
36
|
+
}
|
|
37
|
+
if (!this.enqueued.has(id)) {
|
|
38
|
+
this.enqueued.add(id);
|
|
39
|
+
this.queue.push(id);
|
|
40
|
+
}
|
|
41
|
+
return await new Promise((resolve) => {
|
|
42
|
+
let l1 = this.registerListener({
|
|
43
|
+
resolved: ({ object }) => {
|
|
44
|
+
if (object.model.id === id) {
|
|
45
|
+
l1();
|
|
46
|
+
resolve(object);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
failed: ({ object_id }) => {
|
|
50
|
+
if (object_id === id) {
|
|
51
|
+
l1();
|
|
52
|
+
resolve(null);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
5
57
|
}
|
|
6
58
|
get key() {
|
|
7
59
|
return this.definition.name;
|
|
8
60
|
}
|
|
9
|
-
dispose() {
|
|
61
|
+
dispose() {
|
|
62
|
+
this.queue.kill();
|
|
63
|
+
}
|
|
10
64
|
patch(data) {
|
|
11
65
|
this.options.definition = data;
|
|
12
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaModelDefinition.js","sourceRoot":"","sources":["../../src/core/SchemaModelDefinition.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaModelDefinition.js","sourceRoot":"","sources":["../../src/core/SchemaModelDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { inject, MediaEngine } from '@journeyapps-labs/reactor-mod';
|
|
3
|
+
let SchemaModelObject = (() => {
|
|
4
|
+
var _a, _SchemaModelObject_mediaEngine_accessor_storage;
|
|
5
|
+
let _mediaEngine_decorators;
|
|
6
|
+
let _mediaEngine_initializers = [];
|
|
7
|
+
let _mediaEngine_extraInitializers = [];
|
|
8
|
+
return _a = class SchemaModelObject {
|
|
9
|
+
get mediaEngine() { return __classPrivateFieldGet(this, _SchemaModelObject_mediaEngine_accessor_storage, "f"); }
|
|
10
|
+
set mediaEngine(value) { __classPrivateFieldSet(this, _SchemaModelObject_mediaEngine_accessor_storage, value, "f"); }
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.options = options;
|
|
13
|
+
_SchemaModelObject_mediaEngine_accessor_storage.set(this, __runInitializers(this, _mediaEngine_initializers, void 0));
|
|
14
|
+
this._mediaCache = __runInitializers(this, _mediaEngine_extraInitializers);
|
|
15
|
+
this._mediaCache = new Map();
|
|
16
|
+
}
|
|
17
|
+
get definition() {
|
|
18
|
+
return this.options.definition;
|
|
19
|
+
}
|
|
20
|
+
get model() {
|
|
21
|
+
return this.options.model;
|
|
22
|
+
}
|
|
23
|
+
async displayValue() {
|
|
24
|
+
if (!this.model) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
let val = this.model.toString();
|
|
28
|
+
if (val) {
|
|
29
|
+
return val;
|
|
30
|
+
}
|
|
31
|
+
/*
|
|
32
|
+
there are scenarios where the FormatStringScope has not yet completed setting up its state +
|
|
33
|
+
parsing the format string directive. We therefore poll for a bit until we get the value. Ideally
|
|
34
|
+
we need a better way to determine when the scope is ready, but could not find one yet.
|
|
35
|
+
*/
|
|
36
|
+
for (let i = 0; i < 10; i++) {
|
|
37
|
+
await new Promise((resolve) => setTimeout(resolve, 40));
|
|
38
|
+
let val = this.model.toString();
|
|
39
|
+
if (val) {
|
|
40
|
+
return val;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
async getMedia(field) {
|
|
46
|
+
if (this._mediaCache.has(field)) {
|
|
47
|
+
return this._mediaCache.get(field);
|
|
48
|
+
}
|
|
49
|
+
let media = this.model[field];
|
|
50
|
+
if (!(media === null || media === void 0 ? void 0 : media.uploaded())) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
let url = new URL(media.url());
|
|
54
|
+
let mediaObject = this.mediaEngine.getMediaTypeForPath(url.pathname).generateMedia({
|
|
55
|
+
content: await media.toArrayBuffer(),
|
|
56
|
+
name: media.id,
|
|
57
|
+
uid: media.id
|
|
58
|
+
});
|
|
59
|
+
this._mediaCache.set(field, mediaObject);
|
|
60
|
+
return mediaObject;
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
_SchemaModelObject_mediaEngine_accessor_storage = new WeakMap(),
|
|
64
|
+
(() => {
|
|
65
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
66
|
+
_mediaEngine_decorators = [inject(MediaEngine)];
|
|
67
|
+
__esDecorate(_a, null, _mediaEngine_decorators, { kind: "accessor", name: "mediaEngine", static: false, private: false, access: { has: obj => "mediaEngine" in obj, get: obj => obj.mediaEngine, set: (obj, value) => { obj.mediaEngine = value; } }, metadata: _metadata }, _mediaEngine_initializers, _mediaEngine_extraInitializers);
|
|
68
|
+
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
69
|
+
})(),
|
|
70
|
+
_a;
|
|
71
|
+
})();
|
|
72
|
+
export { SchemaModelObject };
|
|
12
73
|
//# sourceMappingURL=SchemaModelObject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaModelObject.js","sourceRoot":"","sources":["../../src/core/SchemaModelObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SchemaModelObject.js","sourceRoot":"","sources":["../../src/core/SchemaModelObject.ts"],"names":[],"mappings":";AAEA,OAAO,EAAiB,MAAM,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;IAOtE,iBAAiB;;;;;sBAAjB,iBAAiB;YAE5B,IAAS,WAAW,iGAAc;YAAlC,IAAS,WAAW,sGAAc;YAIlC,YAAmB,OAAiC;gBAAjC,YAAO,GAAP,OAAO,CAA0B;gBAJ3C,sHAAyB;gBAE1B,gBAAW,2DAA6B;gBAG9C,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,UAAU;gBACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACjC,CAAC;YAED,IAAI,KAAK;gBACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,KAAK,CAAC,YAAY;gBAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAChB,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChC,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD;;;;mBAIG;gBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAChC,IAAI,GAAG,EAAE,CAAC;wBACR,OAAO,GAAG,CAAC;oBACb,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,KAAK,CAAC,QAAQ,CAAC,KAAa;gBAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC;gBAC7C,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE,CAAA,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC;oBACjF,OAAO,EAAE,MAAM,KAAK,CAAC,aAAa,EAAE;oBACpC,IAAI,EAAE,KAAK,CAAC,EAAE;oBACd,GAAG,EAAE,KAAK,CAAC,EAAE;iBACd,CAAC,CAAC;gBAEH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACzC,OAAO,WAAW,CAAC;YACrB,CAAC;;;;;uCAzDA,MAAM,CAAC,WAAW,CAAC;YACpB,oLAAS,WAAW,6BAAX,WAAW,iGAAc;;;;;SAFvB,iBAAiB"}
|
package/dist/core/query/Page.js
CHANGED
|
@@ -29,7 +29,11 @@ let Page = (() => {
|
|
|
29
29
|
async load() {
|
|
30
30
|
this.loading = true;
|
|
31
31
|
let collection = await this.options.collection();
|
|
32
|
-
let
|
|
32
|
+
let query = collection.all();
|
|
33
|
+
this.options.filters.forEach((f) => {
|
|
34
|
+
query = f.augment(query);
|
|
35
|
+
});
|
|
36
|
+
let models = await query.limit(this.options.limit).skip(this.options.offset).toArray();
|
|
33
37
|
this.models = models.map((m) => {
|
|
34
38
|
return new SchemaModelObject({
|
|
35
39
|
definition: this.options.definition,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/core/query/Page.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/core/query/Page.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;IAkBrB,IAAI;;;;;;;;sBAAJ,IAAI;YAEf,IAAS,MAAM,+EAAsB;YAArC,IAAS,MAAM,oFAAsB;YAGrC,IAAS,OAAO,gFAAU;YAA1B,IAAS,OAAO,qFAAU;YAE1B,YAAsB,OAAoB;gBAApB,YAAO,GAAP,OAAO,CAAa;gBALjC,+FAA4B;gBAG5B,uJAAiB;;gBAEJ,YAAO,GAAP,OAAO,CAAa;gBACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;aAClB;YAED,IAAI,KAAK;gBACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,KAAK,CAAC,IAAI;gBACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACjD,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;gBAE7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACjC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;gBAEH,IAAI,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;gBACvF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7B,OAAO,IAAI,iBAAiB,CAAC;wBAC3B,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;wBACnC,KAAK,EAAE,CAAC;qBACT,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,CAAC;YAED,MAAM;gBACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC3B,OAAO;wBACL,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;wBACf,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;wBACnC,KAAK,EAAE,CAAC;qBACT,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;;;;;;kCA3CA,UAAU;mCAGV,UAAU;YAFX,qKAAS,MAAM,6BAAN,MAAM,uFAAsB;YAGrC,wKAAS,OAAO,6BAAP,OAAO,yFAAU;;;;;SALf,IAAI"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers } from "tslib";
|
|
2
2
|
import { AbstractQuery } from './AbstractQuery';
|
|
3
|
-
import {
|
|
3
|
+
import { ActionSource, inject } from '@journeyapps-labs/reactor-mod';
|
|
4
4
|
import { ConnectionStore } from '../../stores/ConnectionStore';
|
|
5
|
-
import { Attachment, Day, Location } from '@journeyapps/db';
|
|
6
5
|
import { Page } from './Page';
|
|
7
6
|
import * as _ from 'lodash';
|
|
8
7
|
import * as React from 'react';
|
|
9
|
-
import { observable } from 'mobx';
|
|
8
|
+
import { action, observable } from 'mobx';
|
|
9
|
+
import { CellDisplayWidget } from './widgets/CellDisplayWidget';
|
|
10
|
+
import { BelongsToDisplayWidget } from './widgets/BelongsToDisplayWidget';
|
|
11
|
+
import { EditSchemaModelAction } from '../../actions/schema-model/EditSchemaModelAction';
|
|
12
|
+
import { SmartColumnWidget } from './widgets/SmartColumnWidget';
|
|
10
13
|
let SimpleQuery = (() => {
|
|
11
14
|
var _a, _SimpleQuery_connStore_accessor_storage, _SimpleQuery__totalPages_accessor_storage, _SimpleQuery__pages_accessor_storage;
|
|
12
15
|
let _classSuper = AbstractQuery;
|
|
16
|
+
let _instanceExtraInitializers = [];
|
|
13
17
|
let _connStore_decorators;
|
|
14
18
|
let _connStore_initializers = [];
|
|
15
19
|
let _connStore_extraInitializers = [];
|
|
@@ -19,6 +23,7 @@ let SimpleQuery = (() => {
|
|
|
19
23
|
let __pages_decorators;
|
|
20
24
|
let __pages_initializers = [];
|
|
21
25
|
let __pages_extraInitializers = [];
|
|
26
|
+
let _load_decorators;
|
|
22
27
|
return _a = class SimpleQuery extends _classSuper {
|
|
23
28
|
get connStore() { return __classPrivateFieldGet(this, _SimpleQuery_connStore_accessor_storage, "f"); }
|
|
24
29
|
set connStore(value) { __classPrivateFieldSet(this, _SimpleQuery_connStore_accessor_storage, value, "f"); }
|
|
@@ -29,22 +34,27 @@ let SimpleQuery = (() => {
|
|
|
29
34
|
constructor(options = {}) {
|
|
30
35
|
var _b;
|
|
31
36
|
super('simple', (_b = options.definition) === null || _b === void 0 ? void 0 : _b.connection);
|
|
32
|
-
this.options = options;
|
|
37
|
+
this.options = (__runInitializers(this, _instanceExtraInitializers), options);
|
|
33
38
|
_SimpleQuery_connStore_accessor_storage.set(this, __runInitializers(this, _connStore_initializers, void 0));
|
|
34
39
|
_SimpleQuery__totalPages_accessor_storage.set(this, (__runInitializers(this, _connStore_extraInitializers), __runInitializers(this, __totalPages_initializers, void 0)));
|
|
35
40
|
_SimpleQuery__pages_accessor_storage.set(this, (__runInitializers(this, __totalPages_extraInitializers), __runInitializers(this, __pages_initializers, void 0)));
|
|
36
|
-
__runInitializers(this, __pages_extraInitializers);
|
|
37
|
-
this.options = options;
|
|
41
|
+
this.simple_filters = __runInitializers(this, __pages_extraInitializers);
|
|
38
42
|
this._totalPages = 0;
|
|
39
43
|
this._pages = [];
|
|
44
|
+
this.simple_filters = new Map();
|
|
40
45
|
}
|
|
41
46
|
async getCollection() {
|
|
42
47
|
let connection = await this.connection.getConnection();
|
|
43
48
|
return connection[this.options.definition.definition.name];
|
|
44
49
|
}
|
|
45
50
|
async load() {
|
|
51
|
+
this._pages = [];
|
|
46
52
|
let collection = await this.getCollection();
|
|
47
|
-
let
|
|
53
|
+
let query = collection.all();
|
|
54
|
+
this.simple_filters.forEach((f) => {
|
|
55
|
+
query = f.augment(query);
|
|
56
|
+
});
|
|
57
|
+
let results = await collection.adapter.doApiQuery(query);
|
|
48
58
|
this._totalPages = Math.ceil(results.total / this.options.limit);
|
|
49
59
|
}
|
|
50
60
|
getPage(number) {
|
|
@@ -54,7 +64,8 @@ let SimpleQuery = (() => {
|
|
|
54
64
|
limit: this.options.limit,
|
|
55
65
|
collection: () => this.getCollection(),
|
|
56
66
|
definition: this.options.definition,
|
|
57
|
-
index: number
|
|
67
|
+
index: number,
|
|
68
|
+
filters: Array.from(this.simple_filters.values())
|
|
58
69
|
});
|
|
59
70
|
page.load();
|
|
60
71
|
this._pages[number] = page;
|
|
@@ -80,14 +91,40 @@ let SimpleQuery = (() => {
|
|
|
80
91
|
noWrap: true,
|
|
81
92
|
shrink: true
|
|
82
93
|
},
|
|
94
|
+
..._.map(this.options.definition.definition.belongsToIdVars, (a) => {
|
|
95
|
+
return {
|
|
96
|
+
key: a.name,
|
|
97
|
+
display: a.name,
|
|
98
|
+
noWrap: true,
|
|
99
|
+
shrink: true,
|
|
100
|
+
accessor: (cell, row) => {
|
|
101
|
+
return (React.createElement(BelongsToDisplayWidget, { open: (object) => {
|
|
102
|
+
EditSchemaModelAction.get().fireAction({
|
|
103
|
+
source: ActionSource.BUTTON,
|
|
104
|
+
targetEntity: object
|
|
105
|
+
});
|
|
106
|
+
}, relationship: row.model.definition.definition.belongsTo[a.relationship], connection: this.connection, id: row.model.model[a.name] }));
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}),
|
|
83
110
|
..._.map(this.options.definition.definition.attributes, (a) => {
|
|
111
|
+
// @ts-ignore FIXME, remove when `display` supports JSX.Element as a type
|
|
84
112
|
return {
|
|
85
113
|
key: a.name,
|
|
86
|
-
display: a.
|
|
114
|
+
display: (React.createElement(SmartColumnWidget, { variable: a, filter: this.simple_filters.get(a), filterChanged: (filter) => {
|
|
115
|
+
if (!filter) {
|
|
116
|
+
this.simple_filters.delete(a);
|
|
117
|
+
this.load();
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.simple_filters.set(a, filter);
|
|
121
|
+
this.load();
|
|
122
|
+
}
|
|
123
|
+
} })),
|
|
87
124
|
noWrap: true,
|
|
88
125
|
shrink: true,
|
|
89
126
|
accessor: (cell, row) => {
|
|
90
|
-
return React.createElement(CellDisplayWidget, { cell: cell, row: row });
|
|
127
|
+
return React.createElement(CellDisplayWidget, { variable: a, cell: cell, row: row });
|
|
91
128
|
}
|
|
92
129
|
};
|
|
93
130
|
})
|
|
@@ -106,85 +143,14 @@ let SimpleQuery = (() => {
|
|
|
106
143
|
_connStore_decorators = [inject(ConnectionStore)];
|
|
107
144
|
__totalPages_decorators = [observable];
|
|
108
145
|
__pages_decorators = [observable];
|
|
146
|
+
_load_decorators = [action];
|
|
109
147
|
__esDecorate(_a, null, _connStore_decorators, { kind: "accessor", name: "connStore", static: false, private: false, access: { has: obj => "connStore" in obj, get: obj => obj.connStore, set: (obj, value) => { obj.connStore = value; } }, metadata: _metadata }, _connStore_initializers, _connStore_extraInitializers);
|
|
110
148
|
__esDecorate(_a, null, __totalPages_decorators, { kind: "accessor", name: "_totalPages", static: false, private: false, access: { has: obj => "_totalPages" in obj, get: obj => obj._totalPages, set: (obj, value) => { obj._totalPages = value; } }, metadata: _metadata }, __totalPages_initializers, __totalPages_extraInitializers);
|
|
111
149
|
__esDecorate(_a, null, __pages_decorators, { kind: "accessor", name: "_pages", static: false, private: false, access: { has: obj => "_pages" in obj, get: obj => obj._pages, set: (obj, value) => { obj._pages = value; } }, metadata: _metadata }, __pages_initializers, __pages_extraInitializers);
|
|
150
|
+
__esDecorate(_a, null, _load_decorators, { kind: "method", name: "load", static: false, private: false, access: { has: obj => "load" in obj, get: obj => obj.load }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
112
151
|
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
113
152
|
})(),
|
|
114
153
|
_a;
|
|
115
154
|
})();
|
|
116
155
|
export { SimpleQuery };
|
|
117
|
-
var S;
|
|
118
|
-
(function (S) {
|
|
119
|
-
S.Empty = styled.div `
|
|
120
|
-
opacity: 0.2;
|
|
121
|
-
`;
|
|
122
|
-
S.Preview = styled.img `
|
|
123
|
-
max-height: 40px;
|
|
124
|
-
max-width: 40px;
|
|
125
|
-
cursor: pointer;
|
|
126
|
-
`;
|
|
127
|
-
S.pill = styled.div `
|
|
128
|
-
padding: 2px 4px;
|
|
129
|
-
background: ${(p) => p.theme.table.pills};
|
|
130
|
-
border-radius: 3px;
|
|
131
|
-
font-size: 12px;
|
|
132
|
-
`;
|
|
133
|
-
S.Pills = styled.div `
|
|
134
|
-
display: flex;
|
|
135
|
-
column-gap: 2px;
|
|
136
|
-
row-gap: 2px;
|
|
137
|
-
`;
|
|
138
|
-
})(S || (S = {}));
|
|
139
|
-
const MAX_NUMBER_OF_ARR_ITEMS_TO_DISPLAY = 3;
|
|
140
|
-
export const CellDisplayWidget = (props) => {
|
|
141
|
-
const { row, cell } = props;
|
|
142
|
-
if (cell == null) {
|
|
143
|
-
return React.createElement(S.Empty, null, "null");
|
|
144
|
-
}
|
|
145
|
-
if (_.isString(cell)) {
|
|
146
|
-
if (cell.trim() === '') {
|
|
147
|
-
return React.createElement(S.Empty, null, "empty");
|
|
148
|
-
}
|
|
149
|
-
return cell;
|
|
150
|
-
}
|
|
151
|
-
if (_.isNumber(cell)) {
|
|
152
|
-
return cell;
|
|
153
|
-
}
|
|
154
|
-
if (_.isArray(cell)) {
|
|
155
|
-
if (cell.length === 0) {
|
|
156
|
-
return React.createElement(S.Empty, null, "empty array");
|
|
157
|
-
}
|
|
158
|
-
let items = _.slice(cell, 0, MAX_NUMBER_OF_ARR_ITEMS_TO_DISPLAY);
|
|
159
|
-
return (React.createElement(S.Pills, null,
|
|
160
|
-
items.map((c) => {
|
|
161
|
-
return React.createElement(S.pill, { key: c }, c);
|
|
162
|
-
}),
|
|
163
|
-
items.length !== cell.length ? '...' : null));
|
|
164
|
-
}
|
|
165
|
-
if (cell instanceof Date) {
|
|
166
|
-
return React.createElement(SmartDateDisplayWidget, { date: cell });
|
|
167
|
-
}
|
|
168
|
-
if (cell instanceof Day) {
|
|
169
|
-
return React.createElement(SmartDateDisplayWidget, { date: cell.toDate() });
|
|
170
|
-
}
|
|
171
|
-
if (_.isBoolean(cell)) {
|
|
172
|
-
return React.createElement(CheckboxWidget, { checked: cell, onChange: () => { } });
|
|
173
|
-
}
|
|
174
|
-
if (cell instanceof Location) {
|
|
175
|
-
return (React.createElement(React.Fragment, null,
|
|
176
|
-
React.createElement(MetadataWidget, { label: 'Lat', value: `${cell.latitude}` }),
|
|
177
|
-
React.createElement(MetadataWidget, { label: 'Long', value: `${cell.longitude}` })));
|
|
178
|
-
}
|
|
179
|
-
if (cell instanceof Attachment) {
|
|
180
|
-
if (cell.uploaded()) {
|
|
181
|
-
return (React.createElement(S.Preview, { onClick: () => {
|
|
182
|
-
window.open(cell.url(), '_blank');
|
|
183
|
-
}, src: cell.urls['thumbnail'] }));
|
|
184
|
-
}
|
|
185
|
-
return React.createElement(S.Empty, null, "Not uploaded");
|
|
186
|
-
}
|
|
187
|
-
console.log('unknown type', cell);
|
|
188
|
-
return null;
|
|
189
|
-
};
|
|
190
156
|
//# sourceMappingURL=SimpleQuery.js.map
|