Canal VR - L'entree VR affiche VrScreen au lieu de « non configuree » : sous-onglet Configuration (AppConfigurationLinkScreen reutilise) et sous-onglet Casques (pincode d'appairage, etat, batterie, version, dernier vu). - Le dialogue de plan SuperAdmin porte aussi les canaux et les add-ons (assistant, contenu immersif). Activer un canal cree son ApplicationInstance s'il n'existe pas ; le desactiver ne supprime rien. Medias immersifs - Types Image360, Video360, Model3D : icones, libelles, extensions, apercu dans la Mediatheque et facettes. - Au depot, la pastille de type bascule Image <-> Image 360 et Video <-> Video 360 : rien dans un .jpg ne dit qu'il est equirectangulaire. Un .glb est reconnu seul. - ImageCompressor ne touche plus aux 360 ni aux GLB, sur les deux chemins d'upload : ramenee a 2560 px, une equirectangulaire devient illisible dans un casque. Scene3D - Nouveau type de section (famille des lieux) et son ecran de configuration : modele, mode objet/decor, points d'interet. - Fond immersif d'une configuration, visible si l'instance a l'add-on : le type est deduit de la ressource choisie, avec une image de repli. Client API edite a la main en miroir du backend : SectionScene3DApi, Scene3DDTO, ImmersiveBackgroundDTO, Position3D, AppType sur les devices, ResourceType etendu. Libelles FR/EN/NL. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
305 lines
9.5 KiB
Dart
305 lines
9.5 KiB
Dart
//
|
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
|
//
|
|
// @dart=2.18
|
|
|
|
// ignore_for_file: unused_element, unused_import
|
|
// ignore_for_file: always_put_required_named_parameters_first
|
|
// ignore_for_file: constant_identifier_names
|
|
// ignore_for_file: lines_longer_than_80_chars
|
|
|
|
part of openapi.api;
|
|
|
|
class GeoPointDTO {
|
|
/// Returns a new [GeoPointDTO] instance.
|
|
GeoPointDTO({
|
|
this.id,
|
|
this.title = const [],
|
|
this.description = const [],
|
|
this.contents = const [],
|
|
this.categorieId,
|
|
this.imageResourceId,
|
|
this.imageUrl,
|
|
this.schedules = const [],
|
|
this.prices = const [],
|
|
this.phone = const [],
|
|
this.email = const [],
|
|
this.site = const [],
|
|
this.geometry,
|
|
this.polyColor,
|
|
this.sectionMapId,
|
|
this.sectionEventId,
|
|
this.sectionScene3DId,
|
|
this.localTransform,
|
|
});
|
|
|
|
int? id;
|
|
|
|
List<TranslationDTO>? title;
|
|
|
|
List<TranslationDTO>? description;
|
|
|
|
List<ContentDTO>? contents;
|
|
|
|
int? categorieId;
|
|
|
|
String? imageResourceId;
|
|
|
|
String? imageUrl;
|
|
|
|
List<TranslationDTO>? schedules;
|
|
|
|
List<TranslationDTO>? prices;
|
|
|
|
List<TranslationDTO>? phone;
|
|
|
|
List<TranslationDTO>? email;
|
|
|
|
List<TranslationDTO>? site;
|
|
|
|
GeometryDTO? geometry;
|
|
|
|
String? polyColor;
|
|
|
|
String? sectionMapId;
|
|
|
|
String? sectionEventId;
|
|
|
|
/// Section maquette 3D a laquelle ce point appartient, le cas echeant.
|
|
String? sectionScene3DId;
|
|
|
|
/// Position du point sur la maquette. Nulle sur un point de carte : les deux
|
|
/// positions coexistent, geometry pour le terrain et celle-ci pour le modele.
|
|
Position3D? localTransform;
|
|
|
|
@override
|
|
bool operator ==(Object other) =>
|
|
identical(this, other) ||
|
|
other is GeoPointDTO &&
|
|
other.id == id &&
|
|
_deepEquality.equals(other.title, title) &&
|
|
_deepEquality.equals(other.description, description) &&
|
|
_deepEquality.equals(other.contents, contents) &&
|
|
other.categorieId == categorieId &&
|
|
other.imageResourceId == imageResourceId &&
|
|
other.imageUrl == imageUrl &&
|
|
_deepEquality.equals(other.schedules, schedules) &&
|
|
_deepEquality.equals(other.prices, prices) &&
|
|
_deepEquality.equals(other.phone, phone) &&
|
|
_deepEquality.equals(other.email, email) &&
|
|
_deepEquality.equals(other.site, site) &&
|
|
other.geometry == geometry &&
|
|
other.polyColor == polyColor &&
|
|
other.sectionMapId == sectionMapId &&
|
|
other.sectionEventId == sectionEventId &&
|
|
other.sectionScene3DId == sectionScene3DId &&
|
|
other.localTransform == localTransform;
|
|
|
|
@override
|
|
int get hashCode =>
|
|
// ignore: unnecessary_parenthesis
|
|
(id == null ? 0 : id!.hashCode) +
|
|
(title == null ? 0 : title!.hashCode) +
|
|
(description == null ? 0 : description!.hashCode) +
|
|
(contents == null ? 0 : contents!.hashCode) +
|
|
(categorieId == null ? 0 : categorieId!.hashCode) +
|
|
(imageResourceId == null ? 0 : imageResourceId!.hashCode) +
|
|
(imageUrl == null ? 0 : imageUrl!.hashCode) +
|
|
(schedules == null ? 0 : schedules!.hashCode) +
|
|
(prices == null ? 0 : prices!.hashCode) +
|
|
(phone == null ? 0 : phone!.hashCode) +
|
|
(email == null ? 0 : email!.hashCode) +
|
|
(site == null ? 0 : site!.hashCode) +
|
|
(geometry == null ? 0 : geometry!.hashCode) +
|
|
(polyColor == null ? 0 : polyColor!.hashCode) +
|
|
(sectionMapId == null ? 0 : sectionMapId!.hashCode) +
|
|
(sectionEventId == null ? 0 : sectionEventId!.hashCode) +
|
|
(sectionScene3DId == null ? 0 : sectionScene3DId!.hashCode) +
|
|
(localTransform == null ? 0 : localTransform!.hashCode);
|
|
|
|
@override
|
|
String toString() =>
|
|
'GeoPointDTO[id=$id, title=$title, description=$description, contents=$contents, categorieId=$categorieId, imageResourceId=$imageResourceId, imageUrl=$imageUrl, schedules=$schedules, prices=$prices, phone=$phone, email=$email, site=$site, geometry=$geometry, polyColor=$polyColor, sectionMapId=$sectionMapId, sectionEventId=$sectionEventId, sectionScene3DId=$sectionScene3DId, localTransform=$localTransform]';
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final json = <String, dynamic>{};
|
|
if (this.id != null) {
|
|
json[r'id'] = this.id;
|
|
} else {
|
|
json[r'id'] = null;
|
|
}
|
|
if (this.title != null) {
|
|
json[r'title'] = this.title;
|
|
} else {
|
|
json[r'title'] = null;
|
|
}
|
|
if (this.description != null) {
|
|
json[r'description'] = this.description;
|
|
} else {
|
|
json[r'description'] = null;
|
|
}
|
|
if (this.contents != null) {
|
|
json[r'contents'] = this.contents;
|
|
} else {
|
|
json[r'contents'] = null;
|
|
}
|
|
if (this.categorieId != null) {
|
|
json[r'categorieId'] = this.categorieId;
|
|
} else {
|
|
json[r'categorieId'] = null;
|
|
}
|
|
if (this.imageResourceId != null) {
|
|
json[r'imageResourceId'] = this.imageResourceId;
|
|
} else {
|
|
json[r'imageResourceId'] = null;
|
|
}
|
|
if (this.imageUrl != null) {
|
|
json[r'imageUrl'] = this.imageUrl;
|
|
} else {
|
|
json[r'imageUrl'] = null;
|
|
}
|
|
if (this.schedules != null) {
|
|
json[r'schedules'] = this.schedules;
|
|
} else {
|
|
json[r'schedules'] = null;
|
|
}
|
|
if (this.prices != null) {
|
|
json[r'prices'] = this.prices;
|
|
} else {
|
|
json[r'prices'] = null;
|
|
}
|
|
if (this.phone != null) {
|
|
json[r'phone'] = this.phone;
|
|
} else {
|
|
json[r'phone'] = null;
|
|
}
|
|
if (this.email != null) {
|
|
json[r'email'] = this.email;
|
|
} else {
|
|
json[r'email'] = null;
|
|
}
|
|
if (this.site != null) {
|
|
json[r'site'] = this.site;
|
|
} else {
|
|
json[r'site'] = null;
|
|
}
|
|
if (this.geometry != null) {
|
|
json[r'geometry'] = this.geometry;
|
|
} else {
|
|
json[r'geometry'] = null;
|
|
}
|
|
if (this.polyColor != null) {
|
|
json[r'polyColor'] = this.polyColor;
|
|
} else {
|
|
json[r'polyColor'] = null;
|
|
}
|
|
if (this.sectionMapId != null) {
|
|
json[r'sectionMapId'] = this.sectionMapId;
|
|
} else {
|
|
json[r'sectionMapId'] = null;
|
|
}
|
|
if (this.sectionEventId != null) {
|
|
json[r'sectionEventId'] = this.sectionEventId;
|
|
} else {
|
|
json[r'sectionEventId'] = null;
|
|
}
|
|
return json;
|
|
}
|
|
|
|
/// Returns a new [GeoPointDTO] instance and imports its values from
|
|
/// [value] if it's a [Map], null otherwise.
|
|
// ignore: prefer_constructors_over_static_methods
|
|
static GeoPointDTO? fromJson(dynamic value) {
|
|
if (value is Map) {
|
|
final json = value.cast<String, dynamic>();
|
|
|
|
// Ensure that the map contains the required keys.
|
|
// Note 1: the values aren't checked for validity beyond being non-null.
|
|
// Note 2: this code is stripped in release mode!
|
|
assert(() {
|
|
requiredKeys.forEach((key) {
|
|
assert(json.containsKey(key),
|
|
'Required key "GeoPointDTO[$key]" is missing from JSON.');
|
|
assert(json[key] != null,
|
|
'Required key "GeoPointDTO[$key]" has a null value in JSON.');
|
|
});
|
|
return true;
|
|
}());
|
|
|
|
return GeoPointDTO(
|
|
id: mapValueOfType<int>(json, r'id'),
|
|
title: TranslationDTO.listFromJson(json[r'title']),
|
|
description: TranslationDTO.listFromJson(json[r'description']),
|
|
contents: ContentDTO.listFromJson(json[r'contents']),
|
|
categorieId: mapValueOfType<int>(json, r'categorieId'),
|
|
imageResourceId: mapValueOfType<String>(json, r'imageResourceId'),
|
|
imageUrl: mapValueOfType<String>(json, r'imageUrl'),
|
|
schedules: TranslationDTO.listFromJson(json[r'schedules']),
|
|
prices: TranslationDTO.listFromJson(json[r'prices']),
|
|
phone: TranslationDTO.listFromJson(json[r'phone']),
|
|
email: TranslationDTO.listFromJson(json[r'email']),
|
|
site: TranslationDTO.listFromJson(json[r'site']),
|
|
geometry: GeometryDTO.fromJson(json[r'geometry']),
|
|
polyColor: mapValueOfType<String>(json, r'polyColor'),
|
|
sectionMapId: mapValueOfType<String>(json, r'sectionMapId'),
|
|
sectionEventId: mapValueOfType<String>(json, r'sectionEventId'),
|
|
sectionScene3DId: mapValueOfType<String>(json, r'sectionScene3DId'),
|
|
localTransform: Position3D.fromJson(json[r'localTransform']),
|
|
);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
static List<GeoPointDTO> listFromJson(
|
|
dynamic json, {
|
|
bool growable = false,
|
|
}) {
|
|
final result = <GeoPointDTO>[];
|
|
if (json is List && json.isNotEmpty) {
|
|
for (final row in json) {
|
|
final value = GeoPointDTO.fromJson(row);
|
|
if (value != null) {
|
|
result.add(value);
|
|
}
|
|
}
|
|
}
|
|
return result.toList(growable: growable);
|
|
}
|
|
|
|
static Map<String, GeoPointDTO> mapFromJson(dynamic json) {
|
|
final map = <String, GeoPointDTO>{};
|
|
if (json is Map && json.isNotEmpty) {
|
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
|
|
for (final entry in json.entries) {
|
|
final value = GeoPointDTO.fromJson(entry.value);
|
|
if (value != null) {
|
|
map[entry.key] = value;
|
|
}
|
|
}
|
|
}
|
|
return map;
|
|
}
|
|
|
|
// maps a json object with a list of GeoPointDTO-objects as value to a dart map
|
|
static Map<String, List<GeoPointDTO>> mapListFromJson(
|
|
dynamic json, {
|
|
bool growable = false,
|
|
}) {
|
|
final map = <String, List<GeoPointDTO>>{};
|
|
if (json is Map && json.isNotEmpty) {
|
|
// ignore: parameter_assignments
|
|
json = json.cast<String, dynamic>();
|
|
for (final entry in json.entries) {
|
|
map[entry.key] = GeoPointDTO.listFromJson(
|
|
entry.value,
|
|
growable: growable,
|
|
);
|
|
}
|
|
}
|
|
return map;
|
|
}
|
|
|
|
/// The list of required keys that must be present in a JSON.
|
|
static const requiredKeys = <String>{};
|
|
}
|