@import ru.yandex.tours.geo.partners.PartnerRegion @import ru.yandex.tours.geo.base.Region @import ru.yandex.tours.geo.matching.Hypothesis @import ru.yandex.tours.geo.matching.HypothesesHolder @(partnerRegion: PartnerRegion, yandexRegion: Option[Region], mappedRegion: Option[Region], mapping: Map[String, Int], hypotheses: HypothesesHolder)(implicit req: RequestHeader) @yandexNameWithId(geoId: Int) = { @views.Utils.regionName(geoId) (@geoId) } @partnerNameWithId(partnerId: Option[String]) = { @for(id <- partnerId) { @views.Utils.partnerTrees.get(partnerRegion.partner).flatMap(_.region(id)).map(_.getName).getOrElse("") (@id) } } @dlElem(name: Html)(value: Html) = {
@name
@value
} @yandexRegionBlock(yaRegion: Region, panelType: String = "default", confidence: Option[Double] = None) = {
@yaRegion.name.ruName
@if(panelType=="primary") {active mapping} @if(panelType=="info") {similar region} @if(panelType=="default") {no connection found} @for(conf <- confidence) { (@("%.2f".format(conf)))}
@if(mappedRegion.contains(yaRegion)) { } else { }
@dlElem{ID}{@yaRegion.id} @for(partnerId <- mapping.find(_._2 == yaRegion.id).map(pair => pair._1)){ @dlElem{Mapped to}{@partnerNameWithId(Some(partnerId))} } @dlElem{Name}{@yaRegion.name.allValues.mkString(", ")} @dlElem{Type}{@Messages(yaRegion.`type`.toString)} @dlElem{Synonyms}{@yaRegion.synonyms.mkString(", ") } @dlElem{Coordinates}{@yaRegion.latitude @yaRegion.longitude} @dlElem{Parent}{@yandexNameWithId(yaRegion.parentId)} @defining(views.Utils.tree.country(yaRegion).map(r => yandexNameWithId(r.id)).getOrElse("")) { country => @dlElem{Country}{@country} }
} @partnerRegionPanel(region: PartnerRegion, panelType: String = "default", confidence: Option[Double] = None) = {
@region.getName
@for(conf <- confidence) {(@("%.2f".format(conf)))}
@dlElem{Partner}{@region.partner.toString} @dlElem{ID}{@region.id} @dlElem{Name}{@region.name.allValues.mkString(", ")} @dlElem{Category}{@region.category.toString} @for(origType <- region.origType) { @dlElem{Type}{@origType} } @if(region.isDeparture){dlElem{IsDeparture}{@region.isDeparture.toString}} @dlElem{Synonyms}{@region.synonyms.mkString(", ") } @dlElem{Coordinates}{@region.latitude @region.longitude} @dlElem{Hotels count}{@region.hotelsCount} @dlElem{Parent}{@partnerNameWithId(region.parentId)} @dlElem{Country}{@partnerNameWithId(region.countryId)}
} @main(partnerRegion.getName) {
@{partnerRegion.partner.toString} регион -> регион яндекса
@partners.partner_region_selector("view_with_partner_region", partnerRegion.partner.toString)
@partners.partner_region_tree(partnerRegion, mapping, hypotheses)(partnerRegion => routes.PartnerRegionsController.get(partnerRegion.partner.toString, partnerRegion.id))
@defining(hypotheses.byPartnerRegion(partnerRegion)) { hyps =>
Партнерский регион
@defining(yandexRegion.flatMap(hypotheses.findHypothesis(partnerRegion, _).map(_.confidence))) { confidence => @partnerRegionPanel(partnerRegion, "primary", confidence) } @for(yaRegion <- yandexRegion) { @defining(hypotheses.byYandexRegion(yaRegion, partnerRegion.partner).filter(_.partnerRegion != partnerRegion)) { partnerAlternatives => @if(partnerAlternatives.nonEmpty){
Гипотезы для выбранного яндекс региона
@for(hyp <- partnerAlternatives) { @partnerRegionPanel(hyp.partnerRegion, "info", Some(hyp.confidence)) } }}}
Возможные регионы в геобазе
@for(mRegion <- mappedRegion) { @yandexRegionBlock(mRegion, "primary", hyps.find(_.yandexRegion == mRegion).map(_.confidence)) } @if(yandexRegion.nonEmpty) { @if(!mappedRegion.contains(yandexRegion.get)) { @if(!hyps.exists(_.yandexRegion == yandexRegion.get)) { @yandexRegionBlock(yandexRegion.get, "default") }}} @for(hyp <- hyps) { @if(!mappedRegion.contains(hyp.yandexRegion)) { @yandexRegionBlock(hyp.yandexRegion, if(mappedRegion.contains(hyp.yandexRegion)) {"primary"} else {"info"}, Some(hyp.confidence)) }}
}
Регионы яндекса
@util.region_selector("view_with_yandex_region")
@common.region_tree(yandexRegion, all = true)(region => routes.PartnerRegionsController.view(partnerRegion.partner.toString, partnerRegion.id, region.id))
}