@pilotdev/pilot-web-sdk 23.0.0-alpha.2 → 24.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintrc.json +31 -0
- package/README.md +24 -5
- package/ng-package.json +7 -0
- package/package.json +6 -25
- package/src/lib/contexts/context.ts +38 -0
- package/src/lib/contexts/document-annotations-list-context.ts +21 -0
- package/src/lib/contexts/index.ts +3 -0
- package/src/lib/contexts/render-context.ts +28 -0
- package/src/lib/data/access.ts +40 -0
- package/src/lib/data/annotations.ts +20 -0
- package/src/lib/data/attribute.ts +33 -0
- package/src/lib/data/data-object.ts +78 -0
- package/src/lib/data/file.ts +25 -0
- package/src/lib/data/files-snapshot.ts +9 -0
- package/src/lib/data/index.ts +12 -0
- package/src/lib/data/modifier.ts +31 -0
- package/src/lib/data/object-builder.ts +111 -0
- package/src/lib/data/organisation-unit.ts +20 -0
- package/src/lib/data/person.ts +17 -0
- package/src/lib/data/relation.ts +10 -0
- package/src/lib/data/subscriptionType.ts +5 -0
- package/src/lib/idata.plugin.ts +2 -0
- package/src/lib/injectable/index.ts +4 -0
- package/src/lib/injectable/modifier-provider.ts +11 -0
- package/src/lib/injectable/objects-repository.ts +74 -0
- package/src/lib/injectable/render-context-provider.ts +11 -0
- package/src/lib/injectable/repository-events.ts +33 -0
- package/src/lib/menu/checkable-menu.builder.ts +15 -0
- package/{lib/menu/index.d.ts → src/lib/menu/index.ts} +5 -4
- package/src/lib/menu/menu-item.builder.ts +45 -0
- package/src/lib/menu/menu.builder.ts +79 -0
- package/src/lib/menu/menu.ts +24 -0
- package/{lib/toolbar/index.d.ts → src/lib/toolbar/index.ts} +7 -6
- package/src/lib/toolbar/toolbar-item-submenu.handler.ts +12 -0
- package/src/lib/toolbar/toolbar-item.builder.ts +45 -0
- package/src/lib/toolbar/toolbar-menu-item.builder.ts +16 -0
- package/src/lib/toolbar/toolbar-toggle-item.builder.ts +15 -0
- package/src/lib/toolbar/toolbar.builder.ts +104 -0
- package/src/lib/toolbar/toolbar.ts +31 -0
- package/src/lib/tools/attribute-permission.info.ts +51 -0
- package/src/lib/tools/guid.ts +63 -0
- package/src/lib/tools/index.ts +3 -0
- package/src/lib/tools/utils.ts +8 -0
- package/src/public-api.ts +10 -0
- package/tsconfig.lib.json +15 -0
- package/tsconfig.lib.prod.json +10 -0
- package/esm2020/lib/context.mjs +0 -11
- package/esm2020/lib/idata.plugin.mjs +0 -2
- package/esm2020/lib/injectable/index.mjs +0 -2
- package/esm2020/lib/injectable/objects.repository.mjs +0 -2
- package/esm2020/lib/menu/checkable-menu.builder.mjs +0 -14
- package/esm2020/lib/menu/index.mjs +0 -5
- package/esm2020/lib/menu/menu-item.builder.mjs +0 -39
- package/esm2020/lib/menu/menu.builder.mjs +0 -68
- package/esm2020/lib/menu/menu.mjs +0 -22
- package/esm2020/lib/toolbar/index.mjs +0 -7
- package/esm2020/lib/toolbar/toolbar-item-submenu.handler.mjs +0 -3
- package/esm2020/lib/toolbar/toolbar-item.builder.mjs +0 -41
- package/esm2020/lib/toolbar/toolbar-menu-item.builder.mjs +0 -15
- package/esm2020/lib/toolbar/toolbar-toggle-item.builder.mjs +0 -14
- package/esm2020/lib/toolbar/toolbar.builder.mjs +0 -88
- package/esm2020/lib/toolbar/toolbar.mjs +0 -27
- package/esm2020/pilotdev-pilot-web-sdk.mjs +0 -5
- package/esm2020/public-api.mjs +0 -9
- package/fesm2015/pilotdev-pilot-web-sdk.mjs +0 -349
- package/fesm2015/pilotdev-pilot-web-sdk.mjs.map +0 -1
- package/fesm2020/pilotdev-pilot-web-sdk.mjs +0 -349
- package/fesm2020/pilotdev-pilot-web-sdk.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/context.d.ts +0 -18
- package/lib/idata.plugin.d.ts +0 -2
- package/lib/injectable/index.d.ts +0 -1
- package/lib/injectable/objects.repository.d.ts +0 -5
- package/lib/menu/checkable-menu.builder.d.ts +0 -11
- package/lib/menu/menu-item.builder.d.ts +0 -27
- package/lib/menu/menu.builder.d.ts +0 -49
- package/lib/menu/menu.d.ts +0 -18
- package/lib/toolbar/toolbar-item-submenu.handler.d.ts +0 -2
- package/lib/toolbar/toolbar-item.builder.d.ts +0 -28
- package/lib/toolbar/toolbar-menu-item.builder.d.ts +0 -13
- package/lib/toolbar/toolbar-toggle-item.builder.d.ts +0 -11
- package/lib/toolbar/toolbar.builder.d.ts +0 -65
- package/lib/toolbar/toolbar.d.ts +0 -19
- package/public-api.d.ts +0 -5
@@ -0,0 +1,74 @@
|
|
1
|
+
import { Observable } from "rxjs";
|
2
|
+
import { AccessLevel } from "../data/access";
|
3
|
+
import { IDataObject, IPerson, IType, IOrganizationUnit } from "../data";
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Represents the repository that provides access to objects, types, organisation units and people
|
7
|
+
*/
|
8
|
+
export interface IObjectsRepository {
|
9
|
+
/**
|
10
|
+
* Get objects with specified ids
|
11
|
+
*
|
12
|
+
* @param ids Ids of objects to subsribe
|
13
|
+
* @returns
|
14
|
+
*/
|
15
|
+
getObjects(ids: string[]): Observable<IDataObject[]>;
|
16
|
+
/**
|
17
|
+
* Get object's access for the person
|
18
|
+
*
|
19
|
+
* @param objectId Object id
|
20
|
+
* @param personId Person Id
|
21
|
+
* @returns Cold Observable
|
22
|
+
*/
|
23
|
+
getCurrentAccess(objectId: string, personId: number): Observable<AccessLevel>
|
24
|
+
/**
|
25
|
+
* Gets the person with specified id
|
26
|
+
*
|
27
|
+
* @param id Person id
|
28
|
+
* @returns Person
|
29
|
+
*/
|
30
|
+
getPerson(id: number): IPerson;
|
31
|
+
/**
|
32
|
+
* Gets the current person
|
33
|
+
*
|
34
|
+
* @returns Person
|
35
|
+
*/
|
36
|
+
getCurrentPerson(): IPerson
|
37
|
+
/**
|
38
|
+
* Gets all the people registred in database
|
39
|
+
*
|
40
|
+
* @returns Person[]
|
41
|
+
*/
|
42
|
+
getPeople(): IPerson[]
|
43
|
+
/**
|
44
|
+
* Gets type by identifier
|
45
|
+
*
|
46
|
+
* @returns Type
|
47
|
+
*/
|
48
|
+
getType(id: number): IType
|
49
|
+
/**
|
50
|
+
* Gets type by name
|
51
|
+
*
|
52
|
+
* @returns Type
|
53
|
+
*/
|
54
|
+
getTypeByName(name: string): IType
|
55
|
+
/**
|
56
|
+
* Gets all the types registered in database
|
57
|
+
*
|
58
|
+
* @returns Type[]
|
59
|
+
*/
|
60
|
+
getTypes(): IType[];
|
61
|
+
/**
|
62
|
+
* Gets organisation unit by identifier
|
63
|
+
*
|
64
|
+
* @returns OrganisationUnit
|
65
|
+
*/
|
66
|
+
getOrganisationUnit(id: number): IOrganizationUnit;
|
67
|
+
/**
|
68
|
+
* Get all the organisation units registered in database
|
69
|
+
*
|
70
|
+
* @returns OrganisationUnit
|
71
|
+
*/
|
72
|
+
getOrganisationUnits(): IOrganizationUnit[];
|
73
|
+
}
|
74
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { Observable } from "rxjs";
|
2
|
+
import { IDataObject, IPerson, IType, IOrganizationUnit } from "../data";
|
3
|
+
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Notifies on change events
|
7
|
+
*/
|
8
|
+
export interface IRepositoryEvents {
|
9
|
+
/**
|
10
|
+
* Subsribes to changes in objects with specified identifiers
|
11
|
+
*
|
12
|
+
* @returns Hot observable
|
13
|
+
*/
|
14
|
+
subscribeObjects(ids: string[]): Observable<IDataObject>;
|
15
|
+
/**
|
16
|
+
* Subsribes to changes in people
|
17
|
+
*
|
18
|
+
* @returns Hot observable
|
19
|
+
*/
|
20
|
+
subscribePeople(): Observable<IPerson>
|
21
|
+
/**
|
22
|
+
* Subsribes to changes in types
|
23
|
+
*
|
24
|
+
* @returns Hot observable
|
25
|
+
*/
|
26
|
+
subscribeTypes(): Observable<IType>
|
27
|
+
/**
|
28
|
+
* Subsribes to changes in organisation units
|
29
|
+
*
|
30
|
+
* @returns Hot observable
|
31
|
+
*/
|
32
|
+
subscribeOrganisationUnits(): Observable<IOrganizationUnit>
|
33
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { IMenuItemBuilder } from "./menu-item.builder";
|
2
|
+
|
3
|
+
/**
|
4
|
+
*
|
5
|
+
*/
|
6
|
+
export abstract class ICheckableMenuItemBuilder extends IMenuItemBuilder {
|
7
|
+
|
8
|
+
/**
|
9
|
+
*
|
10
|
+
* @param value
|
11
|
+
*/
|
12
|
+
withIsChecked(value: boolean): ICheckableMenuItemBuilder {
|
13
|
+
throw new Error("Method 'withIsChecked(value: boolean)' must be implemented.");
|
14
|
+
}
|
15
|
+
}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
2
|
-
export * from './
|
3
|
-
export * from './menu
|
4
|
-
export * from './menu.builder';
|
1
|
+
|
2
|
+
export * from './menu';
|
3
|
+
export * from './checkable-menu.builder';
|
4
|
+
export * from './menu-item.builder';
|
5
|
+
export * from './menu.builder';
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import { IMenuBuilder } from "./menu.builder";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Represents a menu item and enables to set parametres to it
|
5
|
+
*/
|
6
|
+
export abstract class IMenuItemBuilder {
|
7
|
+
|
8
|
+
constructor() {
|
9
|
+
if (this.constructor == IMenuItemBuilder) {
|
10
|
+
throw new Error("Abstract classes can't be instantiated.");
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Item's name to be displayed
|
16
|
+
* @param header value
|
17
|
+
*/
|
18
|
+
withHeader(header: string): IMenuItemBuilder {
|
19
|
+
throw new Error("Method 'withHeader(header: string)' must be implemented.");
|
20
|
+
}
|
21
|
+
|
22
|
+
/**
|
23
|
+
* Item's icon
|
24
|
+
* @param name Icon name
|
25
|
+
* @param iconSvg Url of icon or base64 string
|
26
|
+
*/
|
27
|
+
withIcon(name: string, iconSvg: string): IMenuItemBuilder {
|
28
|
+
throw new Error("Method 'withIcon(name: string, iconSvg: string)' must be implemented.");
|
29
|
+
}
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Enabled the item
|
33
|
+
* @param value value
|
34
|
+
*/
|
35
|
+
withIsEnabled(value: boolean): IMenuItemBuilder {
|
36
|
+
throw new Error("Method 'withIsEnabled(value: boolean)' must be implemented.");
|
37
|
+
}
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Item's submenu
|
41
|
+
*/
|
42
|
+
withSubmenu(): IMenuBuilder {
|
43
|
+
throw new Error("Method 'withSubmenu()' must be implemented.");
|
44
|
+
}
|
45
|
+
}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
import { ICheckableMenuItemBuilder } from "./checkable-menu.builder";
|
2
|
+
import { IMenuItemBuilder } from "./menu-item.builder";
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Represents a menu and enables to add new items to it
|
6
|
+
*/
|
7
|
+
export abstract class IMenuBuilder {
|
8
|
+
|
9
|
+
constructor() {
|
10
|
+
if (this.constructor == IMenuBuilder) {
|
11
|
+
throw new Error("Abstract classes can't be instantiated.");
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Gets the list of existing items of associated menu or subitems of an item
|
17
|
+
* @returns Existing menu item names
|
18
|
+
*/
|
19
|
+
get itemNames(): string[] {
|
20
|
+
throw new Error("Getter 'itemNames()' must be implemented.");
|
21
|
+
}
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Gets count of menu items
|
25
|
+
*/
|
26
|
+
get count(): number {
|
27
|
+
throw new Error("Getter 'count()' must be implemented.");
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Adds a new separator to the associated menu
|
32
|
+
* @param index The index to put the new item at
|
33
|
+
*/
|
34
|
+
addSeparator(index: number): void {
|
35
|
+
throw new Error("Method 'addSeparator(index: number)' must be implemented.");
|
36
|
+
}
|
37
|
+
|
38
|
+
/**
|
39
|
+
* Adds a new item to the associated menu
|
40
|
+
* @param name Item's internal name
|
41
|
+
* @param index The index to put the new item at
|
42
|
+
*/
|
43
|
+
addItem(name: string, index: number): IMenuItemBuilder {
|
44
|
+
throw new Error("Method 'addItem(name: string, index: number)' must be implemented.");
|
45
|
+
}
|
46
|
+
|
47
|
+
/**
|
48
|
+
* Adds a new checkable item to the associated menu
|
49
|
+
* @param name Item's internal name
|
50
|
+
* @param index The index to put the new item at
|
51
|
+
*/
|
52
|
+
addCheckableItem(name: string, index: number): ICheckableMenuItemBuilder {
|
53
|
+
throw new Error("Method 'addCheckableItem(name: string, index: number)' must be implemented.");
|
54
|
+
}
|
55
|
+
|
56
|
+
/**
|
57
|
+
* Replaces the item to the associated menu
|
58
|
+
* @param name Item's internal name
|
59
|
+
*/
|
60
|
+
replaceItem(name: string): IMenuItemBuilder {
|
61
|
+
throw new Error("Method 'replaceItem(name: string)' must be implemented.");
|
62
|
+
}
|
63
|
+
|
64
|
+
/**
|
65
|
+
* Removes the item with the specified name
|
66
|
+
* @param name Item's internal name
|
67
|
+
*/
|
68
|
+
removeItem(name: string): void {
|
69
|
+
throw new Error("Method 'removeItem(name: string)' must be implemented.");
|
70
|
+
}
|
71
|
+
|
72
|
+
/**
|
73
|
+
* Gets the item
|
74
|
+
* @param name Item's internal name
|
75
|
+
*/
|
76
|
+
getItem(name: string): IMenuBuilder {
|
77
|
+
throw new Error("Method 'getItem(name: string)' must be implemented.");
|
78
|
+
}
|
79
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { IMenuBuilder } from "./menu.builder";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Interface that allows to add new items to the menu and context menus
|
5
|
+
*/
|
6
|
+
export abstract class IMenu<TMenuContext> {
|
7
|
+
/**
|
8
|
+
* The method is called just before the menu is shown
|
9
|
+
* @param builder The menu builder object of associated menu
|
10
|
+
* @param context Context
|
11
|
+
*/
|
12
|
+
build(builder: IMenuBuilder, context: TMenuContext): void {
|
13
|
+
throw new Error("Method 'build(builder: IMenuBuilder, context: TMenuContext)' must be implemented.");
|
14
|
+
}
|
15
|
+
|
16
|
+
/**
|
17
|
+
*
|
18
|
+
* @param name
|
19
|
+
* @param context
|
20
|
+
*/
|
21
|
+
onMenuItemClick(name: string, context: TMenuContext): void {
|
22
|
+
throw new Error("Method 'onMenuItemClick(name: string, context: TMenuContext)' must be implemented.");
|
23
|
+
}
|
24
|
+
}
|
@@ -1,6 +1,7 @@
|
|
1
|
-
|
2
|
-
export * from './toolbar
|
3
|
-
export * from './toolbar-item
|
4
|
-
export * from './toolbar-
|
5
|
-
export * from './toolbar-
|
6
|
-
export * from './toolbar.builder';
|
1
|
+
|
2
|
+
export * from './toolbar';
|
3
|
+
export * from './toolbar-item.builder';
|
4
|
+
export * from './toolbar-item-submenu.handler';
|
5
|
+
export * from './toolbar-menu-item.builder';
|
6
|
+
export * from './toolbar-toggle-item.builder';
|
7
|
+
export * from './toolbar.builder';
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { IToolbarBuilder } from "./toolbar.builder";
|
2
|
+
|
3
|
+
export abstract class IToolbarItemSubmenuHandler {
|
4
|
+
/**
|
5
|
+
* Build a submenu
|
6
|
+
* @param builder - toolbar builder
|
7
|
+
* @returns
|
8
|
+
*/
|
9
|
+
onSubmenuRequested(builder: IToolbarBuilder): void {
|
10
|
+
throw new Error("Method 'onSubmenuRequested(builder: IToolbarBuilder)' must be implemented.");
|
11
|
+
}
|
12
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
/**
|
2
|
+
* Represents a toolbar button and enables to set parametres to it
|
3
|
+
*/
|
4
|
+
export abstract class IToolbarButtonItemBuilder {
|
5
|
+
|
6
|
+
constructor() {
|
7
|
+
if (this.constructor == IToolbarButtonItemBuilder) {
|
8
|
+
throw new Error("Abstract classes can't be instantiated.");
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Item's name to be displayed
|
14
|
+
* @param header - value
|
15
|
+
* @returns instance of IToolbarButtonItemBuilder
|
16
|
+
*/
|
17
|
+
withHeader(header: string): IToolbarButtonItemBuilder {
|
18
|
+
throw new Error("Method 'withHeader(header: string)' must be implemented.");
|
19
|
+
}
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Item's icon in SVG format
|
23
|
+
* @param name - icon name
|
24
|
+
* @param svg - url icon or base64 string
|
25
|
+
*/
|
26
|
+
withIcon(name: string, svg: string): IToolbarButtonItemBuilder {
|
27
|
+
throw new Error("Method 'withIcon(name: string, svg: string)' must be implemented.");
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Enabled the item
|
32
|
+
* @param value - value
|
33
|
+
*/
|
34
|
+
withIsEnabled(value: boolean): IToolbarButtonItemBuilder {
|
35
|
+
throw new Error("Method 'withIsEnabled(value: boolean)' must be implemented.");
|
36
|
+
}
|
37
|
+
|
38
|
+
/**
|
39
|
+
* Item's hint
|
40
|
+
* @param hint - value
|
41
|
+
*/
|
42
|
+
withHint(hint: string): IToolbarButtonItemBuilder {
|
43
|
+
throw new Error("Method 'withHint(hint: string)' must be implemented.");
|
44
|
+
}
|
45
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { IToolbarButtonItemBuilder } from "./toolbar-item.builder";
|
2
|
+
import { IToolbarItemSubmenuHandler } from "./toolbar-item-submenu.handler";
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Represents a toolbar menu button and enables to set parametres to it
|
6
|
+
*/
|
7
|
+
export abstract class IToolbarMenuButtonItemBuilder extends IToolbarButtonItemBuilder {
|
8
|
+
/**
|
9
|
+
* Build a dropdown menu
|
10
|
+
* @param itemSubmenuHandler - toolbar submenu handler
|
11
|
+
* @returns The toolbar button menu builder
|
12
|
+
*/
|
13
|
+
withMenu(itemSubmenuHandler: IToolbarItemSubmenuHandler): IToolbarMenuButtonItemBuilder {
|
14
|
+
throw new Error("Method 'withMenu(itemSubmenuHandler: IToolbarItemSubmenuHandler)' must be implemented.");
|
15
|
+
}
|
16
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { IToolbarButtonItemBuilder } from "./toolbar-item.builder";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Represents a toolbar toggle button and enables to set parametres to it
|
5
|
+
*/
|
6
|
+
export abstract class IToolbarToggleButtonItemBuilder extends IToolbarButtonItemBuilder {
|
7
|
+
|
8
|
+
/**
|
9
|
+
*
|
10
|
+
* @param value
|
11
|
+
*/
|
12
|
+
withIsChecked(value: boolean): IToolbarToggleButtonItemBuilder {
|
13
|
+
throw new Error("Method 'withIsChecked(value: boolean)' must be implemented.");
|
14
|
+
}
|
15
|
+
}
|
@@ -0,0 +1,104 @@
|
|
1
|
+
import { IToolbarButtonItemBuilder } from "./toolbar-item.builder";
|
2
|
+
import { IToolbarItemSubmenuHandler } from "./toolbar-item-submenu.handler";
|
3
|
+
import { IToolbarMenuButtonItemBuilder } from "./toolbar-menu-item.builder";
|
4
|
+
import { IToolbarToggleButtonItemBuilder } from "./toolbar-toggle-item.builder";
|
5
|
+
|
6
|
+
export abstract class IToolbarBuilder {
|
7
|
+
|
8
|
+
constructor() {
|
9
|
+
if (this.constructor == IToolbarBuilder) {
|
10
|
+
throw new Error("Abstract classes can't be instantiated.");
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Adds a new separator to the associated toolbar
|
16
|
+
* @param index - The index to put the new item at
|
17
|
+
*/
|
18
|
+
addSeparator(index: number): void {
|
19
|
+
throw new Error("Method 'addSeparator(index: number)' must be implemented.");
|
20
|
+
}
|
21
|
+
|
22
|
+
/**
|
23
|
+
* Adds a new button to the associated toolbar
|
24
|
+
* @param name - Internal item's name
|
25
|
+
* @param index - The index to put the new item at
|
26
|
+
*/
|
27
|
+
addButtonItem(name: string, index: number): IToolbarButtonItemBuilder {
|
28
|
+
throw new Error("Method 'addButtonItem(name: string, index: number)' must be implemented.");
|
29
|
+
}
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Adds a new menu button to the associated toolbar
|
33
|
+
* @param name - Internal item's name
|
34
|
+
* @param index - The index to put the new item at
|
35
|
+
*/
|
36
|
+
addMenuButtonItem(name: string, index: number): IToolbarMenuButtonItemBuilder {
|
37
|
+
throw new Error("Method 'addMenuButtonItem(name: string, index: number)' must be implemented.");
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Adds a new toggle button to the associated toolbar
|
42
|
+
* @param name - Internal item's name
|
43
|
+
* @param index - The index to put the new item at
|
44
|
+
*/
|
45
|
+
addToggleButtonItem(name: string, index: number): IToolbarToggleButtonItemBuilder {
|
46
|
+
throw new Error("Method 'addToggleButtonItem(name: string, index: number)' must be implemented.");
|
47
|
+
}
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Replaces the item from the associated toolbar on button
|
51
|
+
* @param name - The name of toolbar button to replace
|
52
|
+
*/
|
53
|
+
replaceButtonItem(name: string): IToolbarButtonItemBuilder {
|
54
|
+
throw new Error("Method 'replaceButtonItem(name: string)' must be implemented.");
|
55
|
+
}
|
56
|
+
|
57
|
+
/**
|
58
|
+
* Replace the item from the associated toolbar on menu button
|
59
|
+
* @param name - The name of toolbar menu button to replace
|
60
|
+
*/
|
61
|
+
replaceMenuButtonItem(name: string): IToolbarMenuButtonItemBuilder {
|
62
|
+
throw new Error("Method 'replaceMenuButtonItem(name: string)' must be implemented.");
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
* Enables to set parametres to menu button item submenu
|
67
|
+
* @param name - Item's internal name
|
68
|
+
* @param itemSubmenuHandler - The toolbar button menu builder
|
69
|
+
*/
|
70
|
+
handleMenuButtonItemSubmenu(name: string, itemSubmenuHandler: IToolbarItemSubmenuHandler): void {
|
71
|
+
throw new Error("Method 'handleMenuButtonItemSubmenu(name: string, itemSubmenuHandler: IToolbarItemSubmenuHandler)' must be implemented.");
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Replaces the item from the associated toolbar on toggle button
|
76
|
+
* @param name - The name of toolbar toggle button to replace
|
77
|
+
*/
|
78
|
+
replaceToggleButtonItem(name: string): IToolbarToggleButtonItemBuilder {
|
79
|
+
throw new Error("Method 'replaceToggleButtonItem(name: string)' must be implemented.");
|
80
|
+
}
|
81
|
+
|
82
|
+
/**
|
83
|
+
* Gets the list of existing item names of associated toolbar
|
84
|
+
* @returns - Existing toolbar item names
|
85
|
+
*/
|
86
|
+
get itemNames(): string[] {
|
87
|
+
throw new Error("Getter 'itemNames()' must be implemented.");
|
88
|
+
}
|
89
|
+
|
90
|
+
/**
|
91
|
+
* Gets count of toolbar items
|
92
|
+
*/
|
93
|
+
get count(): number {
|
94
|
+
throw new Error("Getter 'count()' must be implemented.");
|
95
|
+
}
|
96
|
+
|
97
|
+
/**
|
98
|
+
* Removes specified item
|
99
|
+
* @param itemName - Item's internal name
|
100
|
+
*/
|
101
|
+
removeItem(itemName: string): void {
|
102
|
+
throw new Error("Method 'removeItem(name: string)' must be implemented.");
|
103
|
+
}
|
104
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { IToolbarBuilder } from "./toolbar.builder";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Interface that allows to add new items to the toolbar
|
5
|
+
*/
|
6
|
+
export abstract class IToolbar<TToolbarContext> {
|
7
|
+
|
8
|
+
constructor() {
|
9
|
+
if (this.constructor == IToolbar<TToolbarContext>) {
|
10
|
+
throw new Error("Abstract classes can't be instantiated.");
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
/**
|
15
|
+
* The method is called just before the toolbar is created
|
16
|
+
* @param builder - the toolbar builder object of associated toolbar
|
17
|
+
* @param context - context
|
18
|
+
*/
|
19
|
+
build(builder: IToolbarBuilder, context: TToolbarContext): void {
|
20
|
+
throw new Error("Method 'build(builder: IToolbarBuilder, context: TToolbarContext)' must be implemented.");
|
21
|
+
}
|
22
|
+
|
23
|
+
/**
|
24
|
+
*
|
25
|
+
* @param name
|
26
|
+
* @param context
|
27
|
+
*/
|
28
|
+
onToolbarItemClick(name: string, context: TToolbarContext): void {
|
29
|
+
throw new Error("Method 'onToolbarItemClick(name: string, context: TToolbarContext)' must be implemented.");
|
30
|
+
}
|
31
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import { objectToMap } from "./utils";
|
2
|
+
|
3
|
+
export class AttributePermissionInfo {
|
4
|
+
private ATTRIBUTE_NAME_MARKER = '&';
|
5
|
+
|
6
|
+
orgUnits: number[];
|
7
|
+
orgUnitAttributes: string[];
|
8
|
+
|
9
|
+
constructor(editableForPositionsSource: string[]) {
|
10
|
+
this.orgUnits = new Array<number>();
|
11
|
+
this.orgUnitAttributes = new Array<string>();
|
12
|
+
|
13
|
+
if (!editableForPositionsSource)
|
14
|
+
return;
|
15
|
+
|
16
|
+
editableForPositionsSource.forEach(str => {
|
17
|
+
if (str.length > 0 && str[0] === this.ATTRIBUTE_NAME_MARKER) {
|
18
|
+
this.orgUnitAttributes.push(str.substring(1));
|
19
|
+
}
|
20
|
+
else {
|
21
|
+
const num = Number(str);
|
22
|
+
if (!isNaN(num))
|
23
|
+
this.orgUnits.push(num);
|
24
|
+
}
|
25
|
+
});
|
26
|
+
}
|
27
|
+
|
28
|
+
extractAllOrgUnits(obj: any): number[] {
|
29
|
+
const attrMap = objectToMap<any>(obj.attributes);
|
30
|
+
return this.extractAllOrgUnitsByAttributes(attrMap);
|
31
|
+
}
|
32
|
+
|
33
|
+
extractAllOrgUnitsByAttributes(attributes: Map<string, any>) : number[] {
|
34
|
+
let result = new Array<number>();
|
35
|
+
if (!this.orgUnitAttributes || !attributes )
|
36
|
+
return result;
|
37
|
+
|
38
|
+
this.orgUnitAttributes.forEach(permissionAttributeName => {
|
39
|
+
if (attributes.has(permissionAttributeName)){
|
40
|
+
const value = attributes.get(permissionAttributeName);
|
41
|
+
if (value && Array.isArray(value)){
|
42
|
+
value.forEach(intValue => {
|
43
|
+
result.push(intValue);
|
44
|
+
});
|
45
|
+
}
|
46
|
+
}
|
47
|
+
});
|
48
|
+
|
49
|
+
return result;
|
50
|
+
}
|
51
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
const byteToHex = Array();
|
2
|
+
for (let i = 0; i < 256; ++i) {
|
3
|
+
byteToHex.push((i + 0x100).toString(16).slice(1));
|
4
|
+
}
|
5
|
+
|
6
|
+
export class Guid {
|
7
|
+
private static readonly regex = "(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})";
|
8
|
+
|
9
|
+
static readonly EMPTY = "00000000-0000-0000-0000-000000000000";
|
10
|
+
|
11
|
+
static newGuid(): string {
|
12
|
+
|
13
|
+
if (window.isSecureContext) {
|
14
|
+
// If crypto.getRandomValues is available try to use it.
|
15
|
+
return window.crypto.randomUUID();
|
16
|
+
}
|
17
|
+
|
18
|
+
// Fall back to Math.random if a higher quality random number generator is not available.
|
19
|
+
const uuid = new Array(16);
|
20
|
+
var d = new Date().getTime();
|
21
|
+
for (var i = 0; i < 16; i++) {
|
22
|
+
var r = ((d + Math.random() * 256) % 256) | 0;
|
23
|
+
d = Math.trunc(d / 256);
|
24
|
+
uuid[i] = r;
|
25
|
+
}
|
26
|
+
|
27
|
+
// Makes uuid compliant to RFC-4122
|
28
|
+
uuid[6] = (uuid[6] & 0x0F) | 0x40; // uuid version
|
29
|
+
uuid[8] = (uuid[8] & 0x3F) | 0x80; // uuid variant
|
30
|
+
|
31
|
+
return this.stringify(uuid);
|
32
|
+
}
|
33
|
+
|
34
|
+
static isGuid(str: string) {
|
35
|
+
const regex = new RegExp(this.regex);
|
36
|
+
return regex.test(str) && str.length === 36;
|
37
|
+
}
|
38
|
+
|
39
|
+
private static stringify(arr: Array<number>) {
|
40
|
+
return (
|
41
|
+
byteToHex[arr[0]] +
|
42
|
+
byteToHex[arr[1]] +
|
43
|
+
byteToHex[arr[2]] +
|
44
|
+
byteToHex[arr[3]] +
|
45
|
+
'-' +
|
46
|
+
byteToHex[arr[4]] +
|
47
|
+
byteToHex[arr[5]] +
|
48
|
+
'-' +
|
49
|
+
byteToHex[arr[6]] +
|
50
|
+
byteToHex[arr[7]] +
|
51
|
+
'-' +
|
52
|
+
byteToHex[arr[8]] +
|
53
|
+
byteToHex[arr[9]] +
|
54
|
+
'-' +
|
55
|
+
byteToHex[arr[10]] +
|
56
|
+
byteToHex[arr[11]] +
|
57
|
+
byteToHex[arr[12]] +
|
58
|
+
byteToHex[arr[13]] +
|
59
|
+
byteToHex[arr[14]] +
|
60
|
+
byteToHex[arr[15]]
|
61
|
+
).toLowerCase();
|
62
|
+
}
|
63
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/*
|
2
|
+
* Public API Surface of pilot-web-sdk
|
3
|
+
*/
|
4
|
+
export * from './lib/idata.plugin';
|
5
|
+
export * from './lib/injectable/index';
|
6
|
+
export * from './lib/toolbar/index';
|
7
|
+
export * from './lib/menu/index';
|
8
|
+
export * from './lib/contexts/index';
|
9
|
+
export * from './lib/tools/index';
|
10
|
+
export * from './lib/data/index';
|