diff --git a/package.json b/package.json index 27ce6dd707f07813be06cbb59d406d96124c9fae..b9bcf5d9a97ebf550cca4a8d7e0a25b7ec0d5887 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "webapp", - "version": "2.6.12", + "version": "2.6.13", "license": "GNU Affero General Public License v3.0", "scripts": { "ng": "ng", diff --git a/src/app/dataset-detail/components/dataset-table/dataset-table.component.html b/src/app/dataset-detail/components/dataset-table/dataset-table.component.html index 54a66f3f429a84c5c138488d33d1c82004761bf1..f316dfa2c05672e75614ef1652d4873868c81719 100644 --- a/src/app/dataset-detail/components/dataset-table/dataset-table.component.html +++ b/src/app/dataset-detail/components/dataset-table/dataset-table.component.html @@ -6,10 +6,10 @@ (keydown.enter)="sortBy(key)" [tabindex]="isDisplayed ? 0 : -1" [attr.role]="'columnheader'"> <span class="sort-icons"> <span class="icon"> - <i class="fas fa-sort-up" [ngClass]="{'icon-red': sortValue === key && sortOrder === 'desc'}"></i> + <i class="fas fa-sort-up" [ngClass]="{'icon-red': sortValue.includes(key) && sortOrder === 'desc'}"></i> </span> <span class="icon"> - <i class="fas fa-sort-down" [ngClass]="{'icon-red': sortValue === key && sortOrder === 'asc'}"></i> + <i class="fas fa-sort-down" [ngClass]="{'icon-red': sortValue.includes(key) && sortOrder === 'asc'}"></i> </span> </span> <span class="column-title" [ngClass]="{'active': sortValue === key}">{{ key }}</span> diff --git a/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts b/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts index 9fb3bd1c2b81656db665885270d9cd5bf8713cf9..c0580dfefb55ec7db9840d0ccf00dd415241fd2b 100644 --- a/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts +++ b/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts @@ -96,8 +96,9 @@ export class DatasetTableComponent implements OnInit, OnDestroy { } sortBy(key: string) { + const keyType = this._datasetDetailService.getKeyType(key); // Set the new sort value in the service - this._datasetDetailService.sortBy(key); + this._datasetDetailService.sortBy(keyType); // Retrieve date sorted with the new value this._datasetDetailService.retrieveDatasetData().subscribe(() => { this.tableWidthModified.emit(true); @@ -124,8 +125,9 @@ export class DatasetTableComponent implements OnInit, OnDestroy { return this._datasetDetailService.datasetData; } - get sortValue() { - return this._datasetDetailService.sortValue; + get sortValue(): String { + var sortValue: String = this._datasetDetailService.sortValue; + return sortValue ? sortValue:'' ; } get sortOrder() { diff --git a/src/app/dataset-detail/services/dataset-detail.service.ts b/src/app/dataset-detail/services/dataset-detail.service.ts index 06d828f5f9f052da3101b10227b254a3467ae5f4..684d5d713c14adf3b763d3a71988aa5ebb0a92a9 100644 --- a/src/app/dataset-detail/services/dataset-detail.service.ts +++ b/src/app/dataset-detail/services/dataset-detail.service.ts @@ -272,11 +272,22 @@ export class DatasetDetailService { } } + getKeyType(key: string) { + return key+'_'+ eval(`this._dataset.fields.types.${key}`); + } + orderProperties(data: any, orderedProperties: string[]) { const newDataPropertiesOrder = {}; orderedProperties.forEach((field) => { - newDataPropertiesOrder[field] = data.properties[field] ? data.properties[field] : ''; + // Adds type to field. First time, the field with type is used, and attributed to field without type + // force _json detection since the fieldtype is not listed. (used for complex data) + var fieldtype = field + '_' + eval(`this._dataset.fields.types.${field}`); + newDataPropertiesOrder[field] = data.properties[fieldtype] ? data.properties[fieldtype] : + data.properties[field] ? data.properties[field] : data.properties[`${field}_json`] ? + data.properties[`${field}_json`] : ''; }); + + data.properties = newDataPropertiesOrder; } diff --git a/src/app/elasticsearch/services/elasticsearch.service.ts b/src/app/elasticsearch/services/elasticsearch.service.ts index 3445f0ac8d3d1250cff23b0b1ecbe6f695466efb..62e429c3b47074225407b9d59f87b87d07a31aeb 100644 --- a/src/app/elasticsearch/services/elasticsearch.service.ts +++ b/src/app/elasticsearch/services/elasticsearch.service.ts @@ -135,7 +135,10 @@ export class ElasticsearchService { if (options.sortOptions.value !== null) { const sort = {}; const key = `data-fr.properties.${options.sortOptions.value}.sort`; - sort[key] = options.sortOptions.order; + sort[key] = { + order: options.sortOptions.order, + unmapped_type: 'string' + }; body['sort'] = [sort]; } diff --git a/src/app/shared/models/data.model.ts b/src/app/shared/models/data.model.ts index f2342e4f8960a0773c56b27292689d13be5bf481..a6a2b9fb32f30ebac980413e5348e6187676efbe 100644 --- a/src/app/shared/models/data.model.ts +++ b/src/app/shared/models/data.model.ts @@ -20,7 +20,7 @@ export class Data implements IData { this.geometry = data.geometry; this.type = data.type; this.properties = data.properties; - this.id = data.properties.gid; + this.id = data.properties.gid ? data.properties.gid:data.properties.gid_int; } } }