Commit 4f31e1c0 authored by Matthieu Fesselier's avatar Matthieu Fesselier

Merge "feature/query-ldflex" to "dev"

parents 63fbe047 1aa2e777
Pipeline #5507 passed with stage
in 1 minute and 45 seconds
......@@ -121,3 +121,11 @@ Each hook is a function. The mixin compositor *append* hooks. If a deeper mixin
}
```
In order to declare methods, you just add a method to your mixin. The mixin compositor keep the last method declared.
# Core Architecture
Here is a simplified schema of the organization and the responsibilities of the classes of the core:
![core-architecture](./images/core-architecture.png)
## List post-processing
A `sib-display` component is capable of showing a list of resources and applying different filters on this list to filter, sort, group... resources. Here is a schema of the order of these transformations:
![list-post-processing](./images/list-post-processing.png)
\ No newline at end of file
This diff is collapsed.
......@@ -11,7 +11,7 @@
<body>
<sib-display
data-src="data/sib-display.jsonld"
data-src="data/list/users.jsonld"
fields="@id, username, name(first_name, last_name), email"
child-style="border: 3px dashed purple"
></sib-display>
......
......@@ -11,7 +11,7 @@
<body>
<sib-display
data-src="http://127.0.0.1:8000/conversations/"
data-src="http://127.0.0.1:8000/conversations/1/"
fields="title"
widget-title="sib-display-div"
editable-title
......
......@@ -12,7 +12,7 @@
<body>
<sib-display
data-src="data/sib-display.jsonld"
data-src="data/list/users.jsonld"
fields="username, first_name, last_name, email"
search-fields="email"
counter-template="${counter} users here"
......
{
"@id": "event-1.jsonld",
"name": "Test",
"deadline": "2019-09-09T19:55:44Z",
"permissions": [],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
{
"@id": "event-2.jsonld",
"name": "Test demain",
"deadline": "2019-09-10T19:55:56Z",
"permissions": [],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
{
"@type": "ldp:Container",
"ldp:contains": [{
"@id": "http://localhost:8000/events/1/",
"@id": "event-1.jsonld",
"name": "Test",
"deadline": "2019-05-09T19:55:44Z",
"deadline": "2019-09-09T19:55:44Z",
"permissions": []
}, {
"@id": "http://localhost:8000/events/2/",
"@id": "event-2.jsonld",
"name": "Test demain",
"deadline": "2019-05-10T19:55:56Z",
"deadline": "2019-09-10T19:55:56Z",
"permissions": []
}],
"@id": "",
......
{
"@id": "",
"@id": "empty-container.jsonld",
"@type": "ldp:Container",
"ldp:contains": [],
"permissions": [
......
{
"@id": "event-1.jsonld",
"name": "Coliving",
"date": "2019-07-09",
"seats": 12,
"contact": {
"@id": "user-1.jsonld"
},
"permissions": [],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
{
"@id": "event-2.jsonld",
"name": "Workshop",
"date": "2019-05-10",
"seats": 2,
"contact": {
"@id": "user-2.jsonld"
},
"permissions": [],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
{
"@id": "event-3.jsonld",
"name": "Réunion d'information",
"date": "2019-07-10",
"seats": 230,
"contact": {
"@id": "user-3.jsonld"
},
"permissions": [],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
{
"@id": "event-4.jsonld",
"name": "Assemblée générale",
"date": "2019-05-10",
"seats": 55,
"contact": {
"@id": "user-4.jsonld"
},
"permissions": [],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
......@@ -2,25 +2,25 @@
"@type": "ldp:Container",
"ldp:contains": [
{
"@id": "http://localhost:8000/events/1/",
"@id": "event-1.jsonld",
"name": "Coliving",
"date": "2019-05-09",
"date": "2019-07-09",
"permissions": []
},
{
"@id": "http://localhost:8000/events/2/",
"@id": "event-2.jsonld",
"name": "Workshop",
"date": "2019-05-10",
"permissions": []
},
{
"@id": "http://localhost:8000/events/3/",
"@id": "event-3.jsonld",
"name": "Réunion d'information",
"date": "2019-05-10",
"date": "2019-07-10",
"permissions": []
},
{
"@id": "http://localhost:8000/events/4/",
"@id": "event-4.jsonld",
"name": "Assemblée générale",
"date": "2019-05-10",
"permissions": []
......
{
"@id": "profile-1.jsonld",
"jabberID": "admin@test-paris.happy-dev.fr",
"user": {
"@id": "user-1.jsonld"
},
"available": null,
"bio": "",
"city": "Paris",
"phone": "06-03-23-98-23",
"website": "www.startinblox.com",
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "profile-2.jsonld",
"jabberID": "paris@test-paris.happy-dev.fr",
"user": {
"@id": "user-2.jsonld"
},
"available": null,
"bio": "",
"city": "Paris",
"phone": "",
"website": "",
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "profile-3.jsonld",
"jabberID": "not-member-paris@test-paris.happy-dev.fr",
"user": {
"@id": "user-3.jsonld"
},
"available": null,
"bio": "",
"city": "Rennes",
"phone": "",
"website": "",
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "profile-4.jsonld",
"jabberID": "pierre@test-paris.happy-dev.fr",
"user": {
"@id": "user-4.jsonld"
},
"available": null,
"bio": "",
"city": "",
"phone": "",
"website": "",
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "skill-1.jsonld",
"name": "HTML",
"@type": "hd:skill",
"permissions": [
{ "mode": { "@type": "view" }},
{ "mode": { "@type": "change" }},
{ "mode": { "@type": "control" }},
{ "mode": { "@type": "delete" }}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "skill-2.jsonld",
"name": "CSS",
"@type": "hd:skill",
"permissions": [
{ "mode": { "@type": "view" }},
{ "mode": { "@type": "change" }},
{ "mode": { "@type": "control" }},
{ "mode": { "@type": "delete" }}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "skill-3.jsonld",
"name": "Javascript",
"@type": "hd:skill",
"permissions": [
{ "mode": { "@type": "view" }},
{ "mode": { "@type": "change" }},
{ "mode": { "@type": "control" }},
{ "mode": { "@type": "delete" }}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "skill-4.jsonld",
"name": "DevOps",
"@type": "hd:skill",
"permissions": [
{ "mode": { "@type": "view" }},
{ "mode": { "@type": "change" }},
{ "mode": { "@type": "control" }},
{ "mode": { "@type": "delete" }}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
......@@ -3,7 +3,7 @@
"@type": "ldp:Container",
"ldp:contains": [
{
"@id": "https://api.test-paris.happy-dev.fr/skills/1/",
"@id": "skill-1.jsonld",
"name": "HTML",
"@type": "hd:skill",
"permissions": [
......@@ -14,7 +14,7 @@
]
},
{
"@id": "https://api.test-paris.happy-dev.fr/skills/2/",
"@id": "skill-2.jsonld",
"name": "CSS",
"@type": "hd:skill",
"permissions": [
......@@ -25,7 +25,7 @@
]
},
{
"@id": "https://api.test-paris.happy-dev.fr/skills/3/",
"@id": "skill-3.jsonld",
"name": "Javascript",
"@type": "hd:skill",
"permissions": [
......@@ -36,7 +36,7 @@
]
},
{
"@id": "https://api.test-paris.happy-dev.fr/skills/4/",
"@id": "skill-4.jsonld",
"name": "DevOps",
"@type": "hd:skill",
"permissions": [
......@@ -45,17 +45,6 @@
{ "mode": { "@type": "control" }},
{ "mode": { "@type": "delete" }}
]
},
{
"@id": "https://api.test-paris.happy-dev.fr/skills/5/",
"name": "Design",
"@type": "hd:skill",
"permissions": [
{ "mode": { "@type": "view" }},
{ "mode": { "@type": "change" }},
{ "mode": { "@type": "control" }},
{ "mode": { "@type": "delete" }}
]
}
],
"permissions": [
......
{
"@id": "",
"@type": "ldp:Container",
"ldp:contains": [
{
"@id": "skill-2.jsonld"
},
{
"@id": "skill-3.jsonld"
}
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "user-1.jsonld",
"first_name": "Test",
"groups": {
"@id": "https://api.test-paris.happy-dev.fr/users/1/groups/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"last_name": "User",
"username": "admin",
"email": "test-paris@happy-dev.fr",
"account": {
"@id": "https://api.test-paris.happy-dev.fr/accounts/1/"
},
"chatProfile": {
"@id": "https://api.test-paris.happy-dev.fr/chat-profile/1/"
},
"name": "Test User",
"inbox": {
"@id": "https://api.test-paris.happy-dev.fr/users/1/inbox/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "add"
}
}
]
},
"skills": {
"@id": "user-1-skills.jsonld",
"@type": "ldp:Container",
"ldp:contains": [
{
"@id": "skill-2.jsonld"
},
{
"@id": "skill-3.jsonld"
}
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"jobOffers": {
"@id": "https://api.test-paris.happy-dev.fr/users/1/jobOffers/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"profile": {
"@id": "profile-1.jsonld"
},
"@type": "foaf:user",
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "",
"@type": "ldp:Container",
"ldp:contains": [
{
"@id": "skill-1.jsonld"
}
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "user-2.jsonld",
"first_name": "Paris",
"groups": {
"@id": "https://api.test-paris.happy-dev.fr/users/2/groups/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"last_name": "Hilton",
"username": "paris",
"email": "paris@hilton.hi",
"account": {
"@id": "https://api.test-paris.happy-dev.fr/accounts/2/"
},
"chatProfile": {
"@id": "https://api.test-paris.happy-dev.fr/chat-profile/2/"
},
"name": "Paris Hilton",
"inbox": {
"@id": "https://api.test-paris.happy-dev.fr/users/2/inbox/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "add"
}
}
]
},
"skills": {
"@id": "user-2-skills.jsonld",
"@type": "ldp:Container",
"ldp:contains": [
{
"@id": "skill-1.jsonld"
}
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"jobOffers": {
"@id": "https://api.test-paris.happy-dev.fr/users/2/jobOffers/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"profile": {
"@id": "profile-2.jsonld"
},
"@type": "foaf:user",
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "user-3.jsonld",
"first_name": "Not A",
"groups": {
"@id": "https://api.test-paris.happy-dev.fr/users/3/groups/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"last_name": "Paris Member",
"username": "not-member-paris",
"email": "not-a@paris.members",
"account": {
"@id": "https://api.test-paris.happy-dev.fr/accounts/3/"
},
"chatProfile": {
"@id": "https://api.test-paris.happy-dev.fr/chat-profile/3/"
},
"name": "Not A Paris Member",
"inbox": {
"@id": "https://api.test-paris.happy-dev.fr/users/3/inbox/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "add"
}
}
]
},
"skills": {
"@id": "user-3-skills.jsonld",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"jobOffers": {
"@id": "https://api.test-paris.happy-dev.fr/users/3/jobOffers/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"profile": {
"@id": "profile-3.jsonld"
},
"@type": "foaf:user",
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "",
"@type": "ldp:Container",
"ldp:contains": [
{
"@id": "skill-1.jsonld"
},
{
"@id": "skill-2.jsonld"
},
{
"@id": "skill-4.jsonld"
}
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
],
"@context": "https://cdn.happy-dev.fr/owl/hdcontext.jsonld"
}
\ No newline at end of file
{
"@id": "user-4.jsonld",
"first_name": "Pierre",
"groups": {
"@id": "https://api.test-paris.happy-dev.fr/users/4/groups/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode": {
"@type": "view"
}
}
]
},
"last_name": "DLC",
"username": "pierre",
"email": "pierredelacroix@happy-dev.fr",
"account": {
"@id": "https://api.test-paris.happy-dev.fr/accounts/4/"
},
"chatProfile": {
"@id": "https://api.test-paris.happy-dev.fr/chat-profile/4/"
},
"name": "Pierre DLC",
"inbox": {
"@id": "https://api.test-paris.happy-dev.fr/users/4/inbox/",
"@type": "ldp:Container",
"ldp:contains": [
],
"permissions": [
{
"mode":