Skip to content

Commit

Permalink
[#117] Change Language Dynamically
Browse files Browse the repository at this point in the history
  • Loading branch information
javieriserte committed Aug 12, 2024
1 parent b7d2989 commit 65fe04f
Show file tree
Hide file tree
Showing 8 changed files with 179 additions and 13 deletions.
12 changes: 8 additions & 4 deletions app/assets/javascripts/home/notificationsController.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,18 @@ function NotificationsController($scope, $log, $i18next, notificationsService, u
};

$scope.changeLanguage = function(lang){
var nextLang = "";
var nextLangFront = "en";
var nextLangBack= "en";
if ($scope.getLanguage() === "en") {
nextLang = "es-AR";
nextLangFront = "es-AR";
nextLangBack = "es";
}
if ($scope.getLanguage() === "es-AR") {
nextLang = "en";
nextLangFront = "en";
nextLangBack = "en";
}
$i18next.options.lng = nextLang;
$i18next.options.lng = nextLangFront;
userService.setLanguage(nextLangBack);
};

}
Expand Down
2 changes: 1 addition & 1 deletion app/assets/javascripts/home/views/notifications.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

<div class="centered-text" title="Cambio de Idioma">
<span
href="#/home"
ng-click="changeLanguage()">
<i class="bold" ng-if="getLanguage() === 'en'" title="English">EN</i>
<i class="bold" ng-if="getLanguage() === 'fr'" title="Frances">EN</i>
<i class="bold" ng-if="getLanguage() === 'es-AR'" title="Español">ES</i>
</span>
</div>
Expand Down
4 changes: 4 additions & 0 deletions app/assets/javascripts/users/userService.js
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,10 @@ function UserService(playRoutes, $cookies, $window, $log) {
this.showNotifications = function() {
return hasAnyPermission("DNA_PROFILE_CRUD, MATCHES_MANAGER, PROTOPROFILE_BULK_UPLOAD, PROTOPROFILE_BULK_ACCEPTANCE, USER_CRUD, PEDIGREE_CRUD");
};

this.setLanguage = function(lang) {
var x = playRoutes.controllers.Application.changeLanguage(lang).get();
};
}

return UserService;
Expand Down
3 changes: 2 additions & 1 deletion app/bulkupload/BulkUploadService.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import search.PaginationSearch
import services.CacheService
import types.AlphanumericId
import user.{UserService, UserView}
import play.api.i18n.Messages
import play.api.i18n.{Lang, Messages}

import scala.concurrent.duration._
import scala.concurrent.{Await, Future}
Expand Down Expand Up @@ -575,6 +575,7 @@ class BulkUploadServiceImpl @Inject() (
Future.successful(Left(msg))
}, count =>{
if(count>0){
val l = implicitly[Lang]
Future.successful(Left(Messages("error.E0304")))
}else{
protoRepo.deleteBatch(id)
Expand Down
21 changes: 15 additions & 6 deletions app/controllers/Application.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import play.api.Routes
import play.api.Application
import play.api.Play.current
import play.api.cache.Cache
import play.api.i18n.Lang
import play.api.i18n.{Lang, Messages}
import play.api.libs.functional.syntax.functionalCanBuildApplicative
import play.api.libs.functional.syntax.toFunctionalBuilderOps
import play.api.libs.json.Json
Expand All @@ -34,7 +34,12 @@ import profiledata.ProfileDataService
import scala.concurrent.Await
import scala.concurrent.duration.{Duration, SECONDS}
@Singleton
class Application @Inject() (app: play.api.Application, @Named("genisManifest") manifest: Map[String, String], mode: Mode,profileData:ProfileDataService) extends Controller {
class Application @Inject() (
app: play.api.Application,
@Named("genisManifest") manifest: Map[String, String],
mode: Mode,
profileData:ProfileDataService
) extends Controller {

def manifestAsFixedTable(manifest: Map[String, String]): Html = {
val lineLength = 71
Expand All @@ -54,18 +59,18 @@ class Application @Inject() (app: play.api.Application, @Named("genisManifest")
}

/** Serves the index page, see views/index.scala.html */
def index = Action {
def index: Action[AnyContent] = Action {
val cssFileName = mode match {
case Mode.Prod => "main"
case Mode.Sandbox => "mainTest"
case Mode.SandboxAzul => "mainAzul"
case Mode.SandboxAmarillo => "mainAmarillo"
case Mode.SandboxVerde => "mainVerde"
}
Ok(views.html.index(manifestAsFixedTable(manifest),cssFileName))
Ok(views.html.index(manifestAsFixedTable(manifest), cssFileName))
}

def pedigree = Action {
def pedigree: Action[AnyContent] = Action {
Ok(views.html.pedigree())
}

Expand Down Expand Up @@ -176,8 +181,12 @@ class Application @Inject() (app: play.api.Application, @Named("genisManifest")
}

def changeLanguage(lang: String): Action[AnyContent] = Action {
implicit request =>
implicit request => {
val pLang = request.cookies.get("PLAY_LANG").map(_.value)
val l = implicitly[Lang]
val s0 = Messages("error.E0304")
Redirect("/")
.withLang(Lang(lang))
}
}
}
4 changes: 3 additions & 1 deletion app/types/Permission.scala
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,9 @@ object Permission {
StaticAuthorisationOperation("""/users.*""".r, """GET""".r, "UserRead"),
StaticAuthorisationOperation("""/users""".r, """PUT""".r, "UserUpdate"),
StaticAuthorisationOperation("""/users/.*""".r, """PUT""".r, "UserUpdateStatus"),
StaticAuthorisationOperation("""/notifications.*""".r, """.*""".r, "NotificationsAll"))
StaticAuthorisationOperation("""/notifications.*""".r, """.*""".r, "NotificationsAll"),
StaticAuthorisationOperation("""/changeLanguage""".r, """GET""".r, "UserUpdate")
)
}
case object CATEGORY_CRUD extends Permission {
override val operations: Set[StaticAuthorisationOperation] = Set(
Expand Down
146 changes: 146 additions & 0 deletions conf/messages.en
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
#Perfiles
error.E0100= E0100: Se esperaba impactar sobre 1 solo registro y se impactaron {0}.
error.E0101= E0101: Perfil no encontrado.
error.E0102= E0102: Error al insertar el motivo de rechazo.
error.E0103= E0103: Algunos perfiles no se pudieron actualizar.
error.E0104= E0104: No se puede pasar del estado {0} al estado {1}.
error.E0105= E0105: Perfil inexistente: {0}.
error.E0106= E0106: No se puede actualizar un perfil en estado {0}.
error.E0107= E0107: Código debe ser único para cada perfil.
error.E0108= E0108: El genetista responsable debe ser siempre el mismo para {0}.
error.E0109= E0109: No existe el perfil.
error.E0110= E0110: El perfil seleccionado no tiene análisis cargados.
error.E0111= E0111: El perfil está asociado a otro perfil. No pueden agregarse más análisis.
error.E0112= E0112: No se pueden agregar análisis a un perfil con coincidencias confirmadas o pendientes.
error.E0113= E0113: No existe un perfil con el código: {0}.
error.E0114= E0114: Error en imagen.
error.E0115= E0115: El perfil {0} no es coincidente con la evidencia.
error.E0116= E0116: No se puede realizar la asociación, ya existe un perfil asociado.
error.E0117= E0117: No se pudo cambiar información del perfil.
error.E0118= E0118: El perfil {0} está participando de un escenario pendiente.
error.E0119= E0119: No se pudo agregar el perfil.
error.E0120= E0120: La cantidad de individuos en la población de interés ({0}) tiene que ser mayor a la cantidad de perfiles evaluados ({1}).
error.E0121= E0121: Error realizando traza de tipo {0} para el perfil {1}.
error.E0122= E0122: Error al importar el perfil {0}.
error.E0123= E0123: Valor de Alelo/s inválidos.
error.E0124= E0124: Alelos {0} duplicados.
error.E0125= E0125: El perfil {0} está asociado a un caso.
error.E0126= E0126: El perfil {0} está asociado a un pedigri activo o en construcción.
error.E0127= E0127: El perfil {0} no puede ser eliminado.
error.E0128= E0128: El perfil {0} está asociado a un escenario de pedigri pendiente.
error.E0129= E0129: El perfil {0} tiene matches de MPI/DVI pendientes.
error.E0130= E0130: El perfil {0} se encuentra en un pedigri con matches pendientes.
error.E0131= E0131: Error realizando traza de tipo {0} para el pedigree {1}.


#Pedigree
error.E0200= E0200: No existe usuario de GeneMapper: {0}.
error.E0201= E0201: El pedigrí no tiene asociada una base de frecuencias.
error.E0202= E0202: No se pueden agregar análisis a un perfil que está participando de un pedigrí activo o validado.
error.E0203= E0203: No se encontraron perfiles para importar.
error.E0204= E0204: El usuario no tiene permisos para confirmar la coincidencia.
error.E0205= E0205: No se puede desasociar el perfíl.
error.E0206= E0206: Hubo un error al guardar la agrupación.
error.E0207= E0207: Los perfiles {0} están asociados a pedigris activos o en construcción.
error.E0208= E0208: El perfil {0} está asociado a pedigris activos o en construcción.
error.E0209= E0209: Los perfiles {0} tienen coincidencias pendientes.
error.E0210= E0210: El perfil {0} tiene coincidencias pendientes.
error.E0211= E0211: El caso contiene pedigris activos.
error.E0212= E0212: El pédigri {0} no tiene personas desaparecidas/desconocidas. Configurando el pédigri en modo construcción para poder modificarlo.

#Carga Masiva
error.E0301= E0301: Error importando el lote.
error.E0302= E0302: El formato de las líneas no coincide con la cabecera.
error.E0303= E0303: No se puede importar el perfil.
error.E0304= E0304: Cannnot detele this!!!!.
error.E0305= E0305: Faltan parámetros en la cabecera del archivo.
error.E0306= E0306: El perfil ''{0}'' está pendiente de aprobación en el lote #{1}.
error.E0307= E0307: La posicion de alguna de las variaciones no pertenece al rango.
error.E0308= E0308: Los rangos deben estar entre 1 y 16569.
error.E0309= E0309: El limite superior debe ser mayor al inferior del rango.
error.E0310= E0310: El perfil no puede tener mas de 4 rangos.
error.E0311= E0311: La variacion no pertenece a D-loop (1-576, 16024-16569).
error.E0312= E0312: El rango no pertenece a D-loop(1-576, 16024-16569).
error.E0313= E0313: La base no corresponde a la posicion : {0}.
error.E0314= E0314: Posicion {0} no existente.
error.E0315= E0315: El perfil ya tiene un análisis mitocondrial.
error.E0316= E0316: El Kit ''{0}'' No existe en la base de datos.
#
error.E0400= E0400: No se pueden cambiar los valores {0} por {1}.
error.E0500= E0500: Error al actualizar la configuración el motivo.

#Configuraciones
error.E0600= E0600: No existe la categoría {0}.
error.E0610= E0610: No están configuradas las opciones estadísticas por defecto.
error.E0611= E0611: Rango invalido o inexistente en las Frecuencias Mínimas [{0}].
error.E0612= E0612: Frecuencias mal formadas {0}.
error.E0630= E0630: Error inesperado en la base de datos.
error.E0640= E0640: Alias {0} duplicado.
error.E0641= E0641: No existe el usuario.
error.E0642= E0642: El usuario no tiene permisos para descartar la coincidencia.
error.E0643= E0643: El usuario {0} no tiene permisos para modificar el pedigrí.
error.E0644= E0644: El usuario {0} no tiene permisos para dar la baja.
error.E0645= E0645: El usuario no tiene permisos sobre el escenario.
error.E0646= E0646: No se puede pasar el usuario del estado {0} al estado {1}.
error.E0650= E0650: El responsable ''{0}'' no es un usuario genetista del sistema.
error.E0654= E0654: Existen usuarios asociados al rol.
error.E0660= E0660: Actualización de categoría incorrecta: se actualizaron {0} registros.
error.E0661= E0661: La categoría debe ser siempre la misma para {0}.
error.E0662= E0662: El asignado {0} no coincide.
error.E0663= E0663: La categoría del perfil {0} no coincide con {1}.
error.E0664= E0664: Id o nombre de categoría duplicado.
error.E0665= E0665: No se puede borrar la categoría porque esta relacionada con otras categorías.
error.E0666= E0666: No existe la categoría.
error.E0667= E0667: La categoría de {0} no puede asociarse.
error.E0670= E0670: Id o nombre de grupo duplicado.
error.E0671= E0671: No se puede borrar el grupo porque tiene categorías asociadas.
error.E0680= E0680: El marcador ''{0}'' no esta definido en el sistema.
error.E0681= E0681: El marcador ''{0}'' no pertenece al kit ''{1}''.
error.E0682= E0682: Marcadores {0} no contenidos en kit.
error.E0683= E0683: El análisis debe contener al menos {0} marcadores.
error.E0684= E0684: El análisis no puede contener marcadores con más de {0} alelos.
error.E0685= E0685: El análisis no puede contener más de {0} marcadores con trisomías.
error.E0686= E0686: Marcador {0} invalido. {1}.
error.E0687= E0687: No se puede eliminar el marcador {0} ya que está ligado a otro marcador.
error.E0688= E0688: Id de marcador: {0} duplicado.
error.E0689= E0689: Uno o mas Marcadores [{0}] no fue encontrado en el sistema.
error.E0690= E0690: El kit debe ser siempre el mismo para {0}.
error.E0691= E0691: El kit ''{0}'' no esta definido en el sistema.
error.E0692= E0692: No existe el kit {0}.
error.E0693= E0693: No se puede eliminar el marcador {0} ya que está incluido en algún kit.
error.E0694= E0694: Id de kit: {0} duplicado.
error.E0695= E0695: No se puede eliminar el kit {0} ya que se está utilizando en un perfil.
error.E0696= E0696: No se puede eliminar el kit {0} ya que se está utilizando en un lote de carga masiva.
error.E0697= E0697: El parámetro representativo no puede ser mayor a la cantidad de marcadores.
error.E0698= E0698: El analisis no contiene al menos 1 de los marcadores requeridos.

#Interconexión
error.E0701= E0701: Error al actualizar la configuración de instancia inferior.
error.E0702= E0702: Error de conexión.
error.E0707= E0707: No se pudo conectar.
error.E0708= E0708: No se pudo guardar la url debido a que no tiene conectividad.
error.E0710= E0710: No se pudo notificar el estado a la instancia inferior.
error.E0720= E0720: La instancia superior ya guardó la conexión.
error.E0721= E0721: No está mapeada la categoría de la instancia superior.
error.E0722= E0722: No está configurada instancia superior.
error.E0723= E0723: Error de conexión con la instancia superior.
error.E0724= E0724: La instancia superior rechazo el perfil.
error.E0725= E0725: El perfil no pertenece a una categoría que se pueda replicar hacia la instancia superior.
error.E0726= E0726: No se puede confirmar ni descartar un match que no pertenece a la instancia actual.
error.E0727= E0727: El perfil no puede ser modificado porque es de otro laboratorio.
error.E0728= E0728: El perfil no puede ser modificado porque fue replicado a instancia superior.
error.E0729= E0729: El perfil no es editable.
error.E0730= E0730: Tiempo agotado.
#
error.E0802= E0802: La sesión es inválida o ha expirado.
error.E0803= E0803: Token inválido.
error.E0900= E0900: No existe el perfil {0}.
error.E0901= E0901: Nombre ya utilizado.
error.E0902= E0902: La coincidencia está siendo utilizada en un escenario pendiente.
error.E0930= E0930: La transición de {0} a {1} no es válida.
error.E0940= E0940: No existe código global. *
error.E0950= E0950: Ocurrió un error borrando las coincidencias.
error.E0951= E0951: No se pudo obtener imagen del perfil {0} debido a que el token es inválido o ha expirado.
error.E0960= E0960: Inconsistencia entre el tamaño de la cabecera [{0}] y el resto de las filas [{1}].
error.E1000= E1000: Actualización no permitida.
error.E2000= E2000: No se encontraron perfiles con los filtros seleccionados.
File renamed without changes.

0 comments on commit 65fe04f

Please sign in to comment.