Skip to content

Commit

Permalink
feat(edition-workspace): allow layer edition from new edition workspa…
Browse files Browse the repository at this point in the history
…ce (#742)

* add edition context

* feat(workspace): add feature function on edition workspace possibility

* style(workspace): fix height display

* feat(edition-workspace): add feature function

* feat(edition-workspace): WIP

* WIP

* WIP

* Change workspace

* WIP

* newQuery param and exemple

* lint

* docs new param and paramWFS combineLayer

* test read the docs

* test read the docs

* readThe docs test

* rewsdthedocs test

* RTD test

* RTD tests

* RTD tests

* RTD tests

* RTD test

* RTD tests

* RTD test

* Fix(RTD)

* DOCS

* docs

* docs

* docs

* docs

* docs

* docs calisse!!!

* doc

* docs

* docs

* docs

* doc

* calissss

* doc

* docs

* docs

* doc

* docs de grrr

* doc

* doc

* Delete wms-wfs-params - Copie.csv

* remove debugger

* WIP

* WIP

* fix(portal): fix edition add feature

* lint + version 1

* feat(edition): add without draw

* feat(edition-workspace): allow to change rows in map extent condition

* fix(add-feature): fix sourceFields to be send

* fix(addFeature): fix rowsInMapExtentCondition

* feat(edition): phase 2 (filter store for add, add feature with no geometry)

* adjust feature properties on add

* fix rows in map extent condition

* feat(edition): disable switch workspace when adding

* lint

* feat(workspace): allow paginator options config from GeoWorkspaceOptions

* docs(edition): add new docs for edition config

* refactor/docs(edition): clean code / fix docs

* feat(edition): allow relation domain value refresh on edit feature

* Fix with next

* lint

* remove merge unecessary code

* remove merge unecessary code

Co-authored-by: Michael Lane <michael.lane@msp.gouv.qc.ca>
Co-authored-by: Josée Martel <josee.martel@mffp.gouv.qc.ca>
  • Loading branch information
3 people committed Mar 29, 2022
1 parent 964d08d commit 5a09191
Show file tree
Hide file tree
Showing 13 changed files with 225 additions and 55 deletions.
13 changes: 13 additions & 0 deletions docs/_tables/fr/properties/edition.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Propriétés,Type,Description,Valeurs possibles,Valeur défaut
**name*** ,String,Nom de l'attribut ,,
enabled ,Boolean ,Activer ou non la table d'édition sur la couche. ,true/false ,false
baseUrl ,String ,Url de base du service à appeler.
addUrl ,String ,Url d'appel pour l'ajout d'une entité.
deleteUrl ,String ,Url d'appel pour la suppression d'une entité (par le champ primaire).
modifyUrl ,String ,Url d'appel pour la modification d'une entité(par le champ primaire).
geomType ,String ,Géométrie de la couche (Point/Ligne/Polygone).
addWithDraw ,Boolean ,Activer ou non le dession lors de l'ajout de l'entité. ,true/false ,false
messages ,Object[] ,Personnaliser les messages affichés à l'utilisateur.
addHeaders ,Object ,Personnaliser les headers de l'appel fait à l'ajout
modifyProtocole ,String ,Personnaliser le protocole d'appel fait la modification ,,patch
modifyHeaders ,Object ,Personnaliser les headers de l'appel fait à la modification
8 changes: 8 additions & 0 deletions docs/_tables/fr/properties/relations.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Propriétés,Type,Description,Valeurs possibles,Valeur défaut
**name*** ,String,Nom de l'attribut ,,
name ,String,nom de la relation.
alias ,String,Alias de la relation.
title ,String ,Titre du workspace à faire le lien avec.
icon ,String ,Icône du bouton permettant de faire la liaison (https://materialdesignicons.com/).
table ,Boolean ,Indique si le champ doit être visible ou non dans la table d'édition. ,true/false ,true
parent ,String ,Indique la table parent.
5 changes: 5 additions & 0 deletions docs/_tables/fr/properties/sourceFields.csv
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ Propriétés,Type,Description,Valeurs possibles,Valeur défaut
alias ,String,Alias de l'attribut.,,Le nom de l'attribut est utilisé si nul.
values ,[],Liste de valeurs permises ,,"| Si vide, pour les WFS, 
| sera récupéré automatiquement. "
visible ,Boolean ,Indique si le champ doit être visible ou non dans la table d'édition. ,true/false ,true
type ,String ,Indique le type de saisie pour l'outil d'édition. ,number/string/autocomplete/list/date
multiple ,Boolean ,Indique si la liste en saisie doit être multiple ou non ,true/false ,false
excludeFromOgcFilters ,Boolean ,Indique si l'attribut est utilisé dans l'outil de filtre OGC. ,true/false ,true
allowedOperatorsType ,String,Indique les opérateurs permis pour cet attribut ,"| BasicNumericOperator
| Basic
Expand All @@ -11,3 +14,5 @@ allowedOperatorsType ,String,Indique les opérateurs permis pour cet attri
| All
| Time
| Référez vous à `ogc-filter.ts <https://github.com/infra-geo-ouverte/igo2-lib/blob/master/packages/geo/src/lib/filter/shared/ogc-filter.ts#L291>`__ pour les opérateurs correspondants.",BasicAndSpatial
validation ,Object ,Indique les validations lors de la sauvegarde d'une entité ,"| Référez vous à `entity.interface.ts <https://github.com/infra-geo-ouverte/igo2-lib/blob/master/packages/common/src/lib/entity/shared/entity.interfaces.ts>`__ ."
relation ,String ,Indique les relations à lier pour la saisie des champs de type list ,"| Référez vous à `datasource.interface.ts <https://github.com/infra-geo-ouverte/igo2-lib/blob/master/packages/geo/src/lib/datasource/shared/datasources/datasource.interface.ts>`__ ."
Empty file.
64 changes: 32 additions & 32 deletions docs/_tables/fr/properties/sources/wms.csv
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
Propriétés,Type,Description,Valeurs possibles,Valeur défaut
**type*** ,String ,,wms,wms
**url*** ,,"| L'URL du service WMS utilisé
| SANS les paramètres d'appels
| WMS. L'application se charge
| de compléter les paramètres
| envoyés au serveur (KVP). ",,
optionsFromCapabilities ,Boolean,Paramètre pour récupérer des informations du service. ,true | false,false
**params*** ,Objet{},"| Paramètres WMS qui seront fait
| aux serveurs WMS pour les divers
| type d'appels WMS
| (GetMap, GetLegendGraphics, ...). ",Référez-vous aux paramètres WMS ici-bas. ,
optionsFromApi ,Boolean,"| Paramètre pour récupérer des informations supplémentaires
| par un service d'options de couches.. ",true | false,false
refreshIntervalSec ,Number,"| Nombre de secondes entre chaque rafraichissement automatique
| de la source de données. Ainsi, aucun déplacement de la carte
| n'est nécessaire pour rafraichir la donnée. ",en secondes ,Null si non définit
contentDependentLegend ,Boolean ,"| Pour Mapserver et Geoserver, il est possible de retourner
| la légende WMS du contenu de la carte et non pas toute la
| légende de la couche. Exemple: Si ce paramètre est définit
| à true et que vous zoomer sur un secteur dans lequel il y
| seulement 1 classe de symbologie, la légende retournée sera
| composée d'une seule couleur. Si vous zoomez a l'échelle
| provinciale et que vous voyez tous les classes de données,
| la légende retournée sera composée de toutes les classes de
| la couche.
| IMPORTANT: Ne tient pas compte des filtres OGC appliqués. ",true | false,false
queryable ,Boolean,Définit si la couche d'information est interrogeable par clic ou non ,true | false,true
**url*** ,,"| L'URL du service WMS utilisé
| SANS les paramètres d'appels
| WMS. L'application se charge
| de compléter les paramètres
| envoyés au serveur (KVP). ",,
optionsFromCapabilities ,Boolean,Paramètre pour récupérer des informations du service. ,true | false,false
**params*** ,Objet{},"| Paramètres WMS qui seront fait
| aux serveurs WMS pour les divers
| type d'appels WMS
| (GetMap, GetLegendGraphics, ...). ",Référez-vous aux paramètres WMS ici-bas. ,
optionsFromApi ,Boolean,"| Paramètre pour récupérer des informations supplémentaires
| par un service d'options de couches.. ",true | false,false
refreshIntervalSec ,Number,"| Nombre de secondes entre chaque rafraichissement automatique
| de la source de données. Ainsi, aucun déplacement de la carte
| n'est nécessaire pour rafraichir la donnée. ",en secondes ,Null si non définit
contentDependentLegend ,Boolean ,"| Pour Mapserver et Geoserver, il est possible de retourner
| la légende WMS du contenu de la carte et non pas toute la
| légende de la couche. Exemple: Si ce paramètre est définit
| à true et que vous zoomer sur un secteur dans lequel il y
| seulement 1 classe de symbologie, la légende retournée sera
| composée d'une seule couleur. Si vous zoomez a l'échelle
| provinciale et que vous voyez tous les classes de données,
| la légende retournée sera composée de toutes les classes de
| la couche.
| IMPORTANT: Ne tient pas compte des filtres OGC appliqués. ",true | false,false
queryable ,Boolean,Définit si la couche d'information est interrogeable par clic ou non ,true | false,true
queryLayerFeatures ,Boolean ,Définit si les entitées vectorielles de la couche seront interrogées ,true | false, true
queryUrl ,String , "| Paramètres possibles dans l'url:
| {ymin}, {xmax}, {ymax}, {xmin}, {x}, {y}, {resolution}, {srid}", "| Exemple:
| ""queryUrl"": ""https://mapserver.com/test?x={x}&y={y}"" ", Null si non défini
queryFormat ,String ,Format d'interrogation de la couche. ,"| - gml2
queryFormat ,String ,Format d'interrogation de la couche. ,"| - gml2
| (application/vnd.ogc.gml)
| - gml3
| (application/vnd.ogc.gml/3.1.1)
Expand All @@ -46,11 +46,11 @@ queryFormat ,String ,Format d'interrogation de la couche. ,"| - gml2
| - htmlgml2
| (text/html + application/vnd.ogc.gml)
| géométrie fournie par un second appel au format gml2",gml2
queryTitle ,String ,"| Lorsque la couche interrogée est en
| gml2, gml3, json, geojson, esrijson,
| cette propriété correspond au nom du
| champ retourné  qui sera utilisé dans
| le résultat de clic sur la carte comme
queryTitle ,String ,"| Lorsque la couche interrogée est en
| gml2, gml3, json, geojson, esrijson,
| cette propriété correspond au nom du
| champ retourné qui sera utilisé dans
| le résultat de clic sur la carte comme
| titre.
| Si cette propriété est absente, le titre
| de la couche est utilisé comme titre
Expand Down
9 changes: 8 additions & 1 deletion docs/_tables/fr/properties/workspaceOptions.csv
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Propriétés,Type,Description,Valeurs possibles,Valeur défaut
enabled ,Boolean ,Définir si la couche aura ou non une table d'attributs. ,true | false ,"| Pour les sources vectorielles, true par défault.
enabled ,Boolean ,Définir si la couche aura ou non une table d'attributs. ,true | false ,"| Pour les sources vectorielles, true par défault.
| Pour les wms avec des propriétés
| WFS associées, false par défault"
minResolution ,Number ,"| Indique la résolution minimale (grande échelle, très zoomé)
Expand All @@ -12,3 +12,10 @@ queryOptions , Object{} , "mapQueryOnOpenTab: Boolean.
| Indique si les info seront présentés sur clic dans la map lorsque la table attribut est ouverte
| tabQuery: Boolean.
| Indique si les info seront présentés sur clic dans la table d'attribut", True, True ,
pageSize ,Number,"| Indique le nombre d'entités maximum à faire apparaître dans
| une seule page de la table d'attribut.",1 à [...] ou absent
| (par défaut = 50) ,
pageSizeOptions ,Number[],"| Indique les possibilités de changement du nombre
| d'entités pouvant être affichés sur une seule page (pageSize)."
| ,0 à Infinity ou absent
| (par défaut = 1, 5, 10, 20, 50, 100, 500),
47 changes: 45 additions & 2 deletions docs/properties.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1373,8 +1373,8 @@ Configuration des attributs champs source de donnée (sourceFields)
======================================================================

| Une liste de nom d'attribut, de leur alias, valeurs permises et autres configurations.
| ** Nécessaire pour utilisation des filtres attributaires avancés. Ce sont ces configurations qui définiront ce qui sera présenté à
| l'utilisateur lors de l'utilisation des filtres avancés.
| ** Nécessaire pour utilisation des filtres attributaires avancés et de l'outil d'édition. Ce sont ces configurations qui définiront ce qui sera
| présenté à l'utilisateur lors de l'utilisation des filtres avancés et de la table d'édition.
Exemples

Expand All @@ -1400,6 +1400,49 @@ Propriétés de l'objet sourceFields

Important : Les propriétés en caractère gras suivies d'un * sont obligatoires.

.. _igosEditionObject:

Configuration de l'édition d'une couche
======================================================================

| Une liste de configuration permettant l'utilisation de la table d'édition sur la couche.
| ** Les sourceFields permettront de définir les champs à visualiser ainsi que les formats de saisies
| et les validations attributaires.
Exemples

.. code:: json
{
"enabled": true,
"baseUrl": "odrsi_vehicule_ssi",
"addUrl": "",
"deleteUrl": "id_vehicule=eq.",
"modifyUrl": "id_vehicule=eq.",
"geomType": "Point",
"addWithDraw": false,
"messages": [{ "odrsi_vehicule_ssi_unique_no_vehicule": "Le numéro de véhicule doit être unique pour la caserne." }]
}
Propriétés de l'objet edition

.. tabularcolumns:: |p{1cm}|p{2cm}|p{7cm}|p{2cm}|p{2cm}|

.. csv-table::
:file: _tables/fr/properties/edition.csv
:header-rows: 1
:widths: 10 10 30 15 10

Propriétés de l'objet relations

.. tabularcolumns:: |p{1cm}|p{2cm}|p{7cm}|p{2cm}|p{2cm}|

.. csv-table::
:file: _tables/fr/properties/relations.csv
:header-rows: 1
:widths: 10 10 30 15 10


************************************
Sources de recherche (search-source)
Expand Down
50 changes: 35 additions & 15 deletions src/app/pages/portal/portal.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,12 @@
<igo-workspace-selector
igoWorkspaceSelector
(toolToActivate)="toolToActivateFromWorkspace($event)"
(changeWorkspace)="workspaceState.setActiveWorkspaceByTitle($event)"
(disableSwitch)="workspaceSwitchDisabled = $event"
(relationLayers)="refreshRelationsWorkspace($event)"
(rowsInMapExtentCheckCondition)="workspaceState.rowsInMapExtentCheckCondition$.next($event)"
[store]="workspaceStore"
[disabled]="workspaceSwitchDisabled"
[map]="map">
</igo-workspace-selector>

Expand All @@ -139,23 +144,37 @@
[ngClass]="{disabled: (workspace.inResolutionRange$ | async)!==true}"
[svgIcon]="workspace.layer.visible ? 'eye' : 'eye-off'">
</mat-icon>
</button>
<igo-actionbar
class="actionbar-workspace"
*ngIf="workspace.actionStore"
[store]="workspace.actionStore"
[withIcon]="true"
[withTitle]="actionbarWithTitle"
[horizontal]="true"
[withToggleButton]="actionbarMode === 'overlay'"
[iconColor]="'primary'"
[color]="'primary'"
[mode]="actionbarMode"
[overlayClass]="workspaceMenuClass">
</igo-actionbar>
</button>
<button
*ngIf="isEditionWorkspace(workspace)"
class="add-feature"
mat-icon-button
color="primary"
collapsibleButton
tooltip-position="below"
matTooltipShowDelay="500"
[matTooltip]="('workspace.addFeature') | translate"
(click)="addFeature(workspace)">
<mat-icon
svgIcon="plus">
</mat-icon>
</button>
<igo-actionbar
class="actionbar-workspace"
*ngIf="workspace.actionStore"
[store]="workspace.actionStore"
[withIcon]="true"
[withTitle]="actionbarWithTitle"
[horizontal]="true"
[withToggleButton]="actionbarMode === 'overlay'"
[iconColor]="'primary'"
[color]="'primary'"
[mode]="actionbarMode"
[overlayClass]="workspaceMenuClass">
</igo-actionbar>
<div class="spacer"></div>
<igo-entity-table-paginator
*ngIf="workspaceVisibility()"
*ngIf="workspaceVisibility()"
[store]="workspace.entityStore"
[entitySortChange$]="workspaceEntitySortChange$"
[paginatorOptions]="paginatorOptions"
Expand All @@ -166,6 +185,7 @@

<ng-container *ngIf="selectedWorkspace$ | async as workspace">
<igo-entity-table
[class]="isEditionWorkspace(workspace) ? 'edition-table' : ''"
[paginator]="workspacePaginator"
*ngIf="workspace.entityStore && workspace.meta && workspace.meta.tableTemplate && workspaceVisibility()"
[store]="workspace.entityStore"
Expand Down
10 changes: 10 additions & 0 deletions src/app/pages/portal/portal.component.scss
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,12 @@ igo-entity-table-paginator {
}
}

igo-entity-table ::ng-deep td.mat-column-edition {
display: flex;
height: 100%;
align-items: center;
}

app-expansion-panel {
position: absolute;
bottom: 0;
Expand Down Expand Up @@ -368,6 +374,10 @@ app-toast-panel-for-expansion .toast-panel-for-expansion-close-button-container
margin-top: 5px;
}

.add-feature {
margin-top: 5px;
}

.actionbar-workspace {
padding-left: 0px;
}
Expand Down

0 comments on commit 5a09191

Please sign in to comment.