Merge branch 'person_renderbox_thirdparty_onthefly' into post-prototypage

This commit is contained in:
2021-09-02 12:25:33 +02:00
15 changed files with 343 additions and 105 deletions

View File

@@ -6,7 +6,7 @@
addEntity: false,
addLink: false,
addAltNames: true,
addAge : false,
addAge : true,
hLevel : 3,
}"
:person="participation.person">

View File

@@ -16,7 +16,7 @@
addLink: false,
addId: false,
addEntity: true,
addInfo: true,
addInfo: false,
hLevel: 3,
isMultiline: true
}"

View File

@@ -17,7 +17,7 @@
<third-party-render-box
v-if="resource.resource.type === 'thirdparty'"
:thirdparty="resource.resource"
:options="{ addLink : false, addId : false, addEntity: true, addInfo: true, hLevel: 3 }"
:options="{ addLink : false, addId : false, addEntity: true, addInfo: false, hLevel: 3 }"
>
<template v-slot:record-actions>
<ul class="record_actions">

View File

@@ -27,15 +27,18 @@
</div>
<p v-if="this.options.addInfo == true" class="moreinfo">
<p v-if="options.addInfo == true" class="moreinfo">
<i :class="'fa fa-fw ' + getGenderIcon" title="{{ getGender }}"></i>
<time v-if="person.birthdate" datetime="{{ person.birthdate }}" title="{{ birthdate }}">
{{ $t(getGender) + ' ' + $d(birthdate, 'text') }}
<time v-if="person.birthdate && !person.deathdate" datetime="{{ person.birthdate }}" title="{{ birthdate }}">
{{ $t(getGenderTranslation) + ' ' + $d(birthdate, 'text') }}
</time>
<time v-else-if="person.deathdate" datetime="{{ person.deathdate }}" title="{{ person.deathdate }}">
<time v-else-if="person.birthdate && person.deathdate" datetime="{{ person.deathdate }}" title="{{ person.deathdate }}">
{{ birthdate }} - {{ deathdate }}
</time>
<!-- <span class="age">{{ person.age }}</span> -->
<time v-else-if="person.deathdate" datetime="{{ person.deathdate }}" title="{{ person.deathdate }}">
{{ $t('renderbox.deathdate') + ' ' + deathdate }}
</time>
<span v-if="options.addAge && person.birthdate" class="age">{{ getAge }} {{ $t('renderbox.years_old')}}</span>
</p>
</div>
</div>
@@ -118,7 +121,7 @@ export default {
},
props: ['person', 'options', 'render'],
computed: {
getGender: function() {
getGenderTranslation: function() {
return this.person.gender == 'woman' ? 'renderbox.birthday.woman' : 'renderbox.birthday.man';
},
isMultiline: function() {
@@ -132,13 +135,24 @@ export default {
return this.person.gender == 'woman' ? 'fa-venus' : this.person.gender == 'man' ? 'fa-mars' : 'fa-neuter';
},
birthdate: function(){
var date = new Date(this.person.birthdate.datetime);
return dateToISO(date);
if(this.person.birthdate !== null){
const date = new Date(this.person.birthdate.datetime);
return dateToISO(date)
} else {
return "";
}
},
deathdate: function(){
if (typeof this.person.deathdate !== 'undefined') {
var date = new Date(this.person.deathdate.datetime);
return dateToISO(date);
// TODO FIX edition conflict: if null or undefined ?
// if (typeof this.person.deathdate !== 'undefined') {
// var date = new Date(this.person.deathdate.datetime);
// return dateToISO(date);
//}
if(this.person.deathdate !== null){
const date = new Date(this.person.deathdate.datetime);
return date.toLocaleDateString("fr-FR");
} else {
return "";
}
},
altNameLabel: function(){
@@ -151,8 +165,25 @@ export default {
return this.person.altNames[i].key
}
},
getUrl() {
return `/fr/person/${this.person.id}/general`;
getUrl: function() {
return `/fr/person/${this.person.id}/general`;
},
getAge: function(){
if(this.person.birthdate && !this.person.deathdate){
const birthday = new Date(this.person.birthdate.datetime)
const now = new Date()
return (now.getFullYear() - birthday.getFullYear())
} else if(this.person.birthdate && this.person.deathdate){
const birthday = new Date(this.person.birthdate.datetime)
const deathdate = new Date(this.person.deathdate.datetime)
return (deathdate.getFullYear() - birthday.getFullYear())
} else if(!this.person.birthdate && this.person.deathdate.datetime) {
// todo: change this
return "Age unknown"
} else {
// todo: change this
return "Age unknown"
}
}
}
}
@@ -188,6 +219,12 @@ div.flex-table {
}
}
}
.age{
margin-left: 0.5em;
&:before { content: '('; }
&:after { content: ')'; }
}
</style>

View File

@@ -7,6 +7,7 @@
addInfo: true,
addEntity: false,
addAltNames: true,
addAge: true,
addId: true,
addLink: false,
hLevel: 3,

View File

@@ -69,6 +69,7 @@ class PersonNormalizer implements
'firstName' => $person->getFirstName(),
'lastName' => $person->getLastName(),
'birthdate' => $this->normalizer->normalize($person->getBirthdate()),
'deathdate' => $this->normalizer->normalize($person->getDeathdate()),
'center' => $this->normalizer->normalize($person->getCenter()),
'phonenumber' => $person->getPhonenumber(),
'mobilenumber' => $person->getMobilenumber(),
@@ -125,6 +126,7 @@ class PersonNormalizer implements
foreach ([
'birthdate' => \DateTime::class,
'deathdate' => \DateTime::class,
'center' => Center::class
] as $item => $class) {
if (\array_key_exists($item, $data)) {

View File

@@ -45,7 +45,7 @@ components:
type:
type: string
enum:
- 'person'
- "person"
firstName:
type: string
lastName:
@@ -55,7 +55,9 @@ components:
description: a canonical representation for the person name
readOnly: true
birthdate:
$ref: '#/components/schemas/Date'
$ref: "#/components/schemas/Date"
deathdate:
$ref: "#/components/schemas/Date"
phonenumber:
type: string
mobilenumber:
@@ -78,7 +80,7 @@ components:
type:
type: string
enum:
- 'person'
- "person"
required:
- id
- type
@@ -96,7 +98,7 @@ components:
type:
type: string
enum:
- 'thirdparty'
- "thirdparty"
required:
- id
- type
@@ -119,15 +121,15 @@ components:
type:
type: string
enum:
- 'accompanying_period_resource'
- "accompanying_period_resource"
readOnly: true
id:
type: integer
readOnly: true
resource:
anyOf:
- $ref: '#/components/schemas/PersonById'
- $ref: '#/components/schemas/ThirdPartyById'
- $ref: "#/components/schemas/PersonById"
- $ref: "#/components/schemas/ThirdPartyById"
ResourceById:
type: object
properties:
@@ -136,7 +138,7 @@ components:
type:
type: string
enum:
- 'accompanying_period_resource'
- "accompanying_period_resource"
required:
- id
- type
@@ -146,7 +148,7 @@ components:
type:
type: string
enum:
- 'accompanying_period_comment'
- "accompanying_period_comment"
readOnly: true
id:
type: integer
@@ -161,7 +163,7 @@ components:
type:
type: string
enum:
- 'accompanying_period_comment'
- "accompanying_period_comment"
required:
- id
- type
@@ -173,7 +175,7 @@ components:
type:
type: string
enum:
- 'social_issue'
- "social_issue"
parent_id:
type: integer
readOnly: true
@@ -195,12 +197,12 @@ components:
Household:
type: object
properties:
id:
type: integer
type:
type: string
enum:
- 'household'
id:
type: integer
type:
type: string
enum:
- "household"
HouseholdPosition:
type: object
properties:
@@ -209,7 +211,7 @@ components:
type:
type: string
enum:
- 'household_position'
- "household_position"
AccompanyingCourseWork:
type: object
properties:
@@ -218,7 +220,7 @@ components:
type:
type: string
enum:
- 'accompanying_period_work'
- "accompanying_period_work"
note:
type: string
startDate:
@@ -243,15 +245,15 @@ components:
type:
type: string
enum:
- 'accompanying_period_work_goal'
- "accompanying_period_work_goal"
note:
type: string
goal:
$ref: '#/components/schemas/SocialWorkGoalById'
$ref: "#/components/schemas/SocialWorkGoalById"
results:
type: array
items:
$ref: '#/components/schemas/SocialWorkGoalById'
$ref: "#/components/schemas/SocialWorkGoalById"
SocialWorkResultById:
type: object
@@ -261,7 +263,7 @@ components:
type:
type: string
enum:
- 'social_work_result'
- "social_work_result"
SocialWorkGoalById:
type: object
properties:
@@ -270,7 +272,7 @@ components:
type:
type: string
enum:
- 'social_work_goal'
- "social_work_goal"
paths:
/1.0/person/person/{id}.json:
@@ -308,7 +310,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/Person'
$ref: "#/components/schemas/Person"
responses:
200:
description: "OK"
@@ -355,18 +357,17 @@ paths:
422:
description: "Unprocessable entity (validation errors)"
/1.0/person/address/suggest/by-person/{id}.json:
get:
tags:
- address
summary: get a list of suggested address for a person
description: >
The address are computed from various source. Currently:
The address are computed from various source. Currently:
- the address of course to which the person is participating
- the address of course to which the person is participating
The current person's address is always ignored.
The current person's address is always ignored.
parameters:
- name: id
in: path
@@ -390,11 +391,11 @@ paths:
- address
summary: get a list of suggested address for a household
description: >
The address are computed from various source. Currently:
The address are computed from various source. Currently:
- the address of course to which the members is participating
- the address of course to which the members is participating
The current household address is always ignored.
The current household address is always ignored.
parameters:
- name: id
in: path
@@ -452,7 +453,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/AccompanyingPeriod'
$ref: "#/components/schemas/AccompanyingPeriod"
examples:
Set the requestor as anonymous:
value:
@@ -488,7 +489,7 @@ paths:
id: 0
personLocation: null
addressLocation:
id: 7960
id: 7960
responses:
401:
description: "Unauthorized"
@@ -520,8 +521,8 @@ paths:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/PersonById'
- $ref: '#/components/schemas/ThirdPartyById'
- $ref: "#/components/schemas/PersonById"
- $ref: "#/components/schemas/ThirdPartyById"
examples:
add person with id 50:
summary: "a person with id 50"
@@ -585,7 +586,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/PersonById'
$ref: "#/components/schemas/PersonById"
responses:
401:
description: "Unauthorized"
@@ -614,7 +615,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/PersonById'
$ref: "#/components/schemas/PersonById"
responses:
401:
description: "Unauthorized"
@@ -645,7 +646,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/Resource'
$ref: "#/components/schemas/Resource"
examples:
add person with id 50:
summary: "a person with id 50"
@@ -690,7 +691,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/ResourceById'
$ref: "#/components/schemas/ResourceById"
responses:
401:
description: "Unauthorized"
@@ -721,7 +722,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/Comment'
$ref: "#/components/schemas/Comment"
examples:
a single comment:
summary: "a simple comment"
@@ -759,7 +760,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/CommentById'
$ref: "#/components/schemas/CommentById"
responses:
401:
description: "Unauthorized"
@@ -790,7 +791,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/Scope'
$ref: "#/components/schemas/Scope"
examples:
add a scope:
value:
@@ -824,7 +825,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/ScopeById'
$ref: "#/components/schemas/ScopeById"
responses:
401:
description: "Unauthorized"
@@ -855,7 +856,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/SocialIssue'
$ref: "#/components/schemas/SocialIssue"
examples:
add a social issue:
value:
@@ -889,7 +890,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/SocialIssue'
$ref: "#/components/schemas/SocialIssue"
responses:
401:
description: "Unauthorized"
@@ -926,11 +927,11 @@ paths:
type:
type: string
enum:
- 'accompanying_period_work'
- "accompanying_period_work"
startDate:
$ref: '#/components/schemas/Date'
$ref: "#/components/schemas/Date"
endDate:
$ref: '#/components/schemas/Date'
$ref: "#/components/schemas/Date"
examples:
create a work:
value:
@@ -992,7 +993,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/AccompanyingCourseWork'
$ref: "#/components/schemas/AccompanyingCourseWork"
responses:
401:
description: "Unauthorized"
@@ -1029,8 +1030,6 @@ paths:
400:
description: "transition cannot be applyed"
/1.0/person/accompanying-period/origin.json:
get:
tags:
@@ -1064,8 +1063,6 @@ paths:
404:
description: "Not found"
/1.0/person/household.json:
get:
tags:
@@ -1095,7 +1092,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/Household'
$ref: "#/components/schemas/Household"
404:
description: "not found"
401:
@@ -1107,9 +1104,9 @@ paths:
- household
summary: Return households associated with the given person through accompanying periods
description: |
Return households associated with the given person throught accompanying periods participation.
Return households associated with the given person throught accompanying periods participation.
The current household of the given person is excluded.
The current household of the given person is excluded.
parameters:
- name: person_id
in: path
@@ -1125,7 +1122,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/Household'
$ref: "#/components/schemas/Household"
404:
description: "not found"
401:
@@ -1149,23 +1146,22 @@ paths:
type: object
properties:
person:
$ref: '#/components/schemas/PersonById'
$ref: "#/components/schemas/PersonById"
start_date:
$ref: '#/components/schemas/Date'
$ref: "#/components/schemas/Date"
position:
$ref: '#/components/schemas/HouseholdPosition'
$ref: "#/components/schemas/HouseholdPosition"
holder:
type: boolean
comment:
type: string
destination:
$ref: '#/components/schemas/Household'
$ref: "#/components/schemas/Household"
examples:
Moving person to a new household:
value:
concerned:
-
person:
- person:
id: 0
type: person
position:
@@ -1180,8 +1176,7 @@ paths:
Moving person to a new household and set an address to this household:
value:
concerned:
-
person:
- person:
id: 0
type: person
position:
@@ -1198,8 +1193,7 @@ paths:
Moving person to an existing household:
value:
concerned:
-
person:
- person:
id: 0
type: person
position:
@@ -1215,8 +1209,7 @@ paths:
Removing a person from any household:
value:
concerned:
-
person:
- person:
id: 0
type: person
start_date:
@@ -1270,8 +1263,6 @@ paths:
400:
description: "transition cannot be applyed"
/1.0/person/social/social-action.json:
get:
tags:
@@ -1349,7 +1340,6 @@ paths:
404:
description: not found
/1.0/person/social-work/social-issue.json:
get:
tags:
@@ -1379,7 +1369,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/SocialIssue'
$ref: "#/components/schemas/SocialIssue"
404:
description: "not found"
401: