Contacts management with a collection¶
Prerequisites¶
git checkout origin/osp-communications-configuration.
git checkout origin/osp-collection-configuration.
git checkout origin/osp-web-configuration.
git checkout origin/osp-scripts-configuration.
Description¶
In this tutorial you will learn to :
Configure a basic contacts management
This will allow you to manage contacts dynamically to send notifications to multiple people or groups.
For a more advanced collection configuration, you can see osp-collections. For example, the group can be managed dynamically.
Steps¶
1. Create the collection¶
The contacts collection will contain the information to send a notification to a group of person. Two static groups, DEV and TECH, are defined to separate contacts. Each contact has a name, enterprise, number and email.
For more detail about contacts, see contacts.coms.
root/contacts/collection/schema.ospp
{
"filters": [
{
"id": "all",
"name": "All"
},
{
"id": "group_dev",
"name": "Dev"
},
{
"id": "group_tech",
"name": "Tech"
}
],
"schema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"ENTERPRISE",
"PERSONAL"
]
},
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
},
"enterprise": {
"type": "string"
},
"number": {
"type": "string"
},
"email": {
"type": "string"
},
"groups": {
"type": "array",
"items": {
"type": "string",
"enum": [
"DEV",
"TECH"
]
}
}
},
"required": [
"groups"
]
}
}
root/contacts/collection/schema.collections
{
"moduleId": "modules.collections.collections-1",
"collectionName": "contacts",
"indexes": [
{
"name": "type",
"index": {
"type": 1
}
},
{
"name": "name",
"index": {
"name": 1
}
},
{
"name": "firstname",
"index": {
"firstname": 1
}
},
{
"name": "lastname",
"index": {
"lastname": 1
}
},
{
"name": "number",
"index": {
"number": 1
}
},
{
"name": "email",
"index": {
"email": 1
}
},
{
"name": "groups",
"index": {
"groups": 1
}
}
],
"filters": [
{
"id": "all",
"query": {}
},
{
"id": "group_dev",
"query": {
"groups": "DEV"
}
},
{
"id": "group_tech",
"query": {
"groups": "TECH"
}
}
]
}
root/contacts/collection/schema.web
{
"moduleId": "modules.web.web-1",
"name": "Contacts",
"displayedProperty": "lastname",
"views": [
{
"id": "1",
"name": "Contacts",
"isDefault": true,
"reorderable": true,
"sort": [
{
"field": "enterprise",
"direction": "desc"
},
{
"field": "lastname",
"direction": "desc"
}
],
"columns": [
{
"name": "Type",
"field": "type",
"position": 0
},
{
"name": "Enterprise",
"field": "enterprise",
"position": 1
},
{
"name": "Lastname",
"field": "lastname",
"position": 2
},
{
"name": "Firstname",
"field": "firstname",
"position": 3
},
{
"name": "Number",
"field": "number",
"position": 4
},
{
"name": "Email",
"field": "email",
"position": 5
},
{
"name": "Groups",
"field": "groups",
"position": 6,
"render": "TAGS"
}
]
}
]
}
Note
Filters group_dev and group_tech can be used on request to send a notification only to a sub-set of the contacts.
1. Create the view to edit the collection¶
root/contacts/view/dashboard.view
{
"configuration": [
{
"type": "CollectionTable",
"id": "D2H2STZ3",
"title": "",
"collectionTableWidgetSettings": {
"defaultSchemas": ["root.contacts.collection"],
"defaultFilter": "all",
"pageSize": 50,
"pageSizes": [
50,
100,
200
],
"resizeMode": "widget",
"disableToolbarTableRefresh": false,
"disableSchemaUpdate": false,
"disableViewUpdate": false,
"disableFilterUpdate": false,
"disableToolbar": false,
"disableToolbarMenu": false,
"disableSidePanel": false,
"disableToolbarExport": false,
"disableToolbarColumnShowHide": false,
"disableToolbarFilterShowHide": false,
"disableToolbarSummaryShowHide": false,
"disableToolbarSearch": false,
"disableToolbarColumnChooser": false,
"disableToolbarClearFilter": false
}
}
],
"layout": {
"lg": [
{
"w": 12,
"h": 7,
"x": 0,
"y": 0,
"i": "D2H2STZ3"
}
]
},
"breakpoints": {
"lg": 1200,
"md": 996,
"sm": 768,
"xs": 480,
"xxs": 0
},
"cols": {
"lg": 12,
"md": 10,
"sm": 6,
"xs": 4,
"xxs": 2
},
"rowHeight": 150
}
root/contacts/view/dashboard.web
{
"moduleId": "modules.web.web-1",
"title": "Contacts",
"description": "",
"tags": ["Contacts"]
}
root/contacts/view/form.web
{
"moduleId": [
"modules.web.web-1"
],
"name": "Contacts",
"description": "Add or edit contacts",
"schema": "root.contacts.collection",
"ui": {
"type": "Group",
"label": "Contact",
"elements": [
{
"type": "Control",
"scope": "#/properties/type",
"label": "The type of the contact"
},
{
"type": "Control",
"scope": "#/properties/enterprise",
"label": "The name of the enterprise"
},
{
"type": "Control",
"scope": "#/properties/firstname",
"label": "The firstname of the person"
},
{
"type": "Control",
"scope": "#/properties/lastname",
"label": "The lastname of the person"
},
{
"type": "Control",
"scope": "#/properties/number",
"label": "The phone number of the contact"
},
{
"type": "Control",
"scope": "#/properties/email",
"label": "The email of the contact"
},
{
"type": "Control",
"scope": "#/properties/groups",
"label": "The group of the contact"
}
]
},
"submit": {
"destination": "Request",
"type": "Deferred"
}
}